@mhmo91/schmancy 0.5.18 → 0.5.20

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 (334) hide show
  1. package/ai/navigation-bar-item.md +259 -0
  2. package/ai/navigation-bar.md +163 -0
  3. package/dist/ai/navigation-bar-item.md +259 -0
  4. package/dist/ai/navigation-bar.md +163 -0
  5. package/dist/{animated-text-B3ShIBX3.cjs → animated-text-D1D0dI8T.cjs} +2 -2
  6. package/dist/{animated-text-B3ShIBX3.cjs.map → animated-text-D1D0dI8T.cjs.map} +1 -1
  7. package/dist/{animated-text-Bu95OxOB.js → animated-text-DS9AsLAy.js} +3 -3
  8. package/dist/{animated-text-Bu95OxOB.js.map → animated-text-DS9AsLAy.js.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-Uj8eYomX.js → area.component-5hv6c-dZ.js} +3 -3
  13. package/dist/{area.component-Uj8eYomX.js.map → area.component-5hv6c-dZ.js.map} +1 -1
  14. package/dist/{area.component-De95XHvt.cjs → area.component-DZFtLBMV.cjs} +2 -2
  15. package/dist/{area.component-De95XHvt.cjs.map → area.component-DZFtLBMV.cjs.map} +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{autocomplete-CfICiUej.js → autocomplete-Bm_tnRns.js} +4 -4
  18. package/dist/{autocomplete-CfICiUej.js.map → autocomplete-Bm_tnRns.js.map} +1 -1
  19. package/dist/{autocomplete-S3tqpsfx.cjs → autocomplete-DpGmI06M.cjs} +2 -2
  20. package/dist/{autocomplete-S3tqpsfx.cjs.map → autocomplete-DpGmI06M.cjs.map} +1 -1
  21. package/dist/autocomplete.cjs +1 -1
  22. package/dist/autocomplete.js +1 -1
  23. package/dist/avatar-B0Q9R0jH.cjs +303 -0
  24. package/dist/avatar-B0Q9R0jH.cjs.map +1 -0
  25. package/dist/avatar-DVkOL5_x.js +895 -0
  26. package/dist/avatar-DVkOL5_x.js.map +1 -0
  27. package/dist/badge.cjs +1 -1
  28. package/dist/badge.js +1 -1
  29. package/dist/{boat-X1OG5F2J.js → boat-DDBc--4N.js} +2 -2
  30. package/dist/{boat-X1OG5F2J.js.map → boat-DDBc--4N.js.map} +1 -1
  31. package/dist/{boat-COig4aPk.cjs → boat-DpuxxF9v.cjs} +2 -2
  32. package/dist/{boat-COig4aPk.cjs.map → boat-DpuxxF9v.cjs.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-ByAbf0mX.js} +2 -2
  42. package/dist/{checkbox-CQ_N8nVx.js.map → checkbox-ByAbf0mX.js.map} +1 -1
  43. package/dist/{checkbox-BKyJeBzr.cjs → checkbox-DA355aVd.cjs} +2 -2
  44. package/dist/{checkbox-BKyJeBzr.cjs.map → checkbox-DA355aVd.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-BEDuv4oc.js} +133 -123
  52. package/dist/{code-preview-DRt2qNK4.js.map → code-preview-BEDuv4oc.js.map} +1 -1
  53. package/dist/{code-preview-DdWQ9Huu.cjs → code-preview-DXvds6Ik.cjs} +67 -57
  54. package/dist/{code-preview-DdWQ9Huu.cjs.map → code-preview-DXvds6Ik.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-CO96uRfu.cjs} +2 -2
  60. package/dist/{date-range-_0PfGLTG.cjs.map → date-range-CO96uRfu.cjs.map} +1 -1
  61. package/dist/{date-range-W2AtcWsE.js → date-range-CWwzapvu.js} +3 -3
  62. package/dist/{date-range-W2AtcWsE.js.map → date-range-CWwzapvu.js.map} +1 -1
  63. package/dist/{date-range-inline-tDA37KYD.cjs → date-range-inline-Br8Pkm6Z.cjs} +2 -2
  64. package/dist/{date-range-inline-tDA37KYD.cjs.map → date-range-inline-Br8Pkm6Z.cjs.map} +1 -1
  65. package/dist/{date-range-inline-Cqu7nIGM.js → date-range-inline-DcRJrT7z.js} +3 -3
  66. package/dist/{date-range-inline-Cqu7nIGM.js.map → date-range-inline-DcRJrT7z.js.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-4p58-oPM.js} +2 -2
  72. package/dist/{delay-CXAQP1GR.js.map → delay-4p58-oPM.js.map} +1 -1
  73. package/dist/{delay-B_M7fPe5.cjs → delay-BU66nJyr.cjs} +2 -2
  74. package/dist/{delay-B_M7fPe5.cjs.map → delay-BU66nJyr.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-COgnQWz1.js} +2 -2
  78. package/dist/{details-CphTZvhk.js.map → details-COgnQWz1.js.map} +1 -1
  79. package/dist/{details-Chfs-oHV.cjs → details-CoqpAwjh.cjs} +2 -2
  80. package/dist/{details-Chfs-oHV.cjs.map → details-CoqpAwjh.cjs.map} +1 -1
  81. package/dist/details.cjs +1 -1
  82. package/dist/details.js +1 -1
  83. package/dist/{dialog-content-Cm8VekL4.cjs → dialog-content-CJUcyFT1.cjs} +2 -2
  84. package/dist/{dialog-content-Cm8VekL4.cjs.map → dialog-content-CJUcyFT1.cjs.map} +1 -1
  85. package/dist/{dialog-content-h_Oz2PDz.js → dialog-content-naA5eL6T.js} +3 -3
  86. package/dist/{dialog-content-h_Oz2PDz.js.map → dialog-content-naA5eL6T.js.map} +1 -1
  87. package/dist/dialog.cjs +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/{divider-DZZPRjp6.js → divider-DsNchzPn.js} +3 -3
  90. package/dist/{divider-DZZPRjp6.js.map → divider-DsNchzPn.js.map} +1 -1
  91. package/dist/{divider-CrP3muaP.cjs → divider-a2f7N3mc.cjs} +2 -2
  92. package/dist/{divider-CrP3muaP.cjs.map → divider-a2f7N3mc.cjs.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-CARJm72a.js} +3 -3
  96. package/dist/{dropdown-content-CB1GBHlI.js.map → dropdown-content-CARJm72a.js.map} +1 -1
  97. package/dist/{dropdown-content-A6ZdJyZz.cjs → dropdown-content-YiOmwoxH.cjs} +2 -2
  98. package/dist/{dropdown-content-A6ZdJyZz.cjs.map → dropdown-content-YiOmwoxH.cjs.map} +1 -1
  99. package/dist/dropdown.cjs +1 -1
  100. package/dist/dropdown.js +1 -1
  101. package/dist/{email-recipients-Wk64dWuZ.js → email-recipients-CM41HA4G.js} +5 -5
  102. package/dist/{email-recipients-Wk64dWuZ.js.map → email-recipients-CM41HA4G.js.map} +1 -1
  103. package/dist/{email-recipients-DbovFfyf.cjs → email-recipients-Dha5jYMG.cjs} +2 -2
  104. package/dist/{email-recipients-DbovFfyf.cjs.map → email-recipients-Dha5jYMG.cjs.map} +1 -1
  105. package/dist/extra.cjs +1 -1
  106. package/dist/extra.js +1 -1
  107. package/dist/{flex-BjEfo9Y7.js → flex-D-oS3wlY.js} +2 -2
  108. package/dist/{flex-BjEfo9Y7.js.map → flex-D-oS3wlY.js.map} +1 -1
  109. package/dist/{flex-B20VU8L_.cjs → flex-zqTHF06u.cjs} +2 -2
  110. package/dist/{flex-B20VU8L_.cjs.map → flex-zqTHF06u.cjs.map} +1 -1
  111. package/dist/{form-C02xoiR8.cjs → form-BSlt0E8v.cjs} +2 -2
  112. package/dist/{form-C02xoiR8.cjs.map → form-BSlt0E8v.cjs.map} +1 -1
  113. package/dist/{form-C1PF3LFP.js → form-DPAzy8Dn.js} +2 -2
  114. package/dist/{form-C1PF3LFP.js.map → form-DPAzy8Dn.js.map} +1 -1
  115. package/dist/form.cjs +1 -1
  116. package/dist/form.js +1 -1
  117. package/dist/{formField.mixin-Butk4H3G.js → formField.mixin-CVkUNhSX.js} +2 -2
  118. package/dist/{formField.mixin-Butk4H3G.js.map → formField.mixin-CVkUNhSX.js.map} +1 -1
  119. package/dist/{formField.mixin-pLRVCeUD.cjs → formField.mixin-R7Ddvq3q.cjs} +2 -2
  120. package/dist/{formField.mixin-pLRVCeUD.cjs.map → formField.mixin-R7Ddvq3q.cjs.map} +1 -1
  121. package/dist/{icon-CcNT1vvG.cjs → icon-Cm5BKSV4.cjs} +2 -2
  122. package/dist/{icon-CcNT1vvG.cjs.map → icon-Cm5BKSV4.cjs.map} +1 -1
  123. package/dist/{icon-BZUpikxQ.js → icon-ave1X5b9.js} +2 -2
  124. package/dist/{icon-BZUpikxQ.js.map → icon-ave1X5b9.js.map} +1 -1
  125. package/dist/{icon-button-C5YpXRdC.cjs → icon-button-BdB5el84.cjs} +2 -2
  126. package/dist/{icon-button-C5YpXRdC.cjs.map → icon-button-BdB5el84.cjs.map} +1 -1
  127. package/dist/{icon-button-7b5uVTan.js → icon-button-DiNXfJ8u.js} +3 -3
  128. package/dist/{icon-button-7b5uVTan.js.map → icon-button-DiNXfJ8u.js.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-DhdHemYN.cjs → input-B6zwyDBC.cjs} +2 -2
  134. package/dist/{input-DhdHemYN.cjs.map → input-B6zwyDBC.cjs.map} +1 -1
  135. package/dist/{input-DC8Sf6IC.js → input-DPiDmsjt.js} +3 -3
  136. package/dist/{input-DC8Sf6IC.js.map → input-DPiDmsjt.js.map} +1 -1
  137. package/dist/{input-chip-CIk926sc.js → input-chip-C06GAnnC.js} +2 -2
  138. package/dist/{input-chip-CIk926sc.js.map → input-chip-C06GAnnC.js.map} +1 -1
  139. package/dist/{input-chip-BVeKi5rc.cjs → input-chip-CkWSf6nV.cjs} +2 -2
  140. package/dist/{input-chip-BVeKi5rc.cjs.map → input-chip-CkWSf6nV.cjs.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-t7vG7o_O.cjs → list-BCDPk6mM.cjs} +2 -2
  146. package/dist/{list-t7vG7o_O.cjs.map → list-BCDPk6mM.cjs.map} +1 -1
  147. package/dist/{list-CGNZvRGe.js → list-vICZQxqV.js} +2 -2
  148. package/dist/{list-CGNZvRGe.js.map → list-vICZQxqV.js.map} +1 -1
  149. package/dist/list.cjs +1 -1
  150. package/dist/list.js +1 -1
  151. package/dist/{litElement.mixin-BJ_Q1yRD.cjs → litElement.mixin-DLJYzvsb.cjs} +2 -2
  152. package/dist/{litElement.mixin-BJ_Q1yRD.cjs.map → litElement.mixin-DLJYzvsb.cjs.map} +1 -1
  153. package/dist/{litElement.mixin-C_TdCsfa.js → litElement.mixin-jTGHsEfH.js} +2 -2
  154. package/dist/{litElement.mixin-C_TdCsfa.js.map → litElement.mixin-jTGHsEfH.js.map} +1 -1
  155. package/dist/mailbox.cjs +1 -1
  156. package/dist/mailbox.js +1 -1
  157. package/dist/{map-Bm3uVhWx.cjs → map-D6QG9Yzr.cjs} +2 -2
  158. package/dist/{map-Bm3uVhWx.cjs.map → map-D6QG9Yzr.cjs.map} +1 -1
  159. package/dist/{map-BiTqxS1F.js → map-DZt51SfS.js} +2 -2
  160. package/dist/{map-BiTqxS1F.js.map → map-DZt51SfS.js.map} +1 -1
  161. package/dist/map.cjs +1 -1
  162. package/dist/map.js +1 -1
  163. package/dist/{media-BKviPW_h.js → media-BUx20F5U.js} +2 -2
  164. package/dist/{media-BKviPW_h.js.map → media-BUx20F5U.js.map} +1 -1
  165. package/dist/{media-D1kp7fjX.cjs → media-CdPEYBLJ.cjs} +2 -2
  166. package/dist/{media-D1kp7fjX.cjs.map → media-CdPEYBLJ.cjs.map} +1 -1
  167. package/dist/{menu-Cjz7s37L.cjs → menu-2UwBHzr9.cjs} +2 -2
  168. package/dist/{menu-Cjz7s37L.cjs.map → menu-2UwBHzr9.cjs.map} +1 -1
  169. package/dist/{menu-BZzL9ILt.js → menu-CvWQC1In.js} +3 -3
  170. package/dist/{menu-BZzL9ILt.js.map → menu-CvWQC1In.js.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-D3uE3_58.js → navigation-rail-item-CIg6-B2G.js} +2 -2
  180. package/dist/{navigation-rail-item-D3uE3_58.js.map → navigation-rail-item-CIg6-B2G.js.map} +1 -1
  181. package/dist/{navigation-rail-item-B4IK1tid.cjs → navigation-rail-item-DA7eqAg3.cjs} +2 -2
  182. package/dist/{navigation-rail-item-B4IK1tid.cjs.map → navigation-rail-item-DA7eqAg3.cjs.map} +1 -1
  183. package/dist/navigation-rail.cjs +1 -1
  184. package/dist/navigation-rail.js +1 -1
  185. package/dist/{notification-service-ECIE9gmi.cjs → notification-service-BqvWCDoP.cjs} +2 -2
  186. package/dist/{notification-service-ECIE9gmi.cjs.map → notification-service-BqvWCDoP.cjs.map} +1 -1
  187. package/dist/{notification-service-CLOPRsR_.js → notification-service-eOCFErH1.js} +4 -4
  188. package/dist/{notification-service-CLOPRsR_.js.map → notification-service-eOCFErH1.js.map} +1 -1
  189. package/dist/notification.cjs +1 -1
  190. package/dist/notification.js +2 -2
  191. package/dist/{notify-nO72O0p5.cjs → notify-BaedZ1y9.cjs} +2 -2
  192. package/dist/{notify-nO72O0p5.cjs.map → notify-BaedZ1y9.cjs.map} +1 -1
  193. package/dist/{notify-Ujep-Wva.js → notify-COSA8XRV.js} +2 -2
  194. package/dist/{notify-Ujep-Wva.js.map → notify-COSA8XRV.js.map} +1 -1
  195. package/dist/{option-r8dBm4ca.cjs → option-CeXe-DCz.cjs} +2 -2
  196. package/dist/{option-r8dBm4ca.cjs.map → option-CeXe-DCz.cjs.map} +1 -1
  197. package/dist/{option-CRjbCpf-.js → option-CplQ_59U.js} +2 -2
  198. package/dist/{option-CRjbCpf-.js.map → option-CplQ_59U.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-hVPgM3HO.js} +3 -3
  202. package/dist/{payment-card-form-BkWQ6H8v.js.map → payment-card-form-hVPgM3HO.js.map} +1 -1
  203. package/dist/{payment-card-form-C3rs3GJg.cjs → payment-card-form-wns1GAaC.cjs} +2 -2
  204. package/dist/{payment-card-form-C3rs3GJg.cjs.map → payment-card-form-wns1GAaC.cjs.map} +1 -1
  205. package/dist/{progress-C6sY_Q2O.cjs → progress-CM5lHuCR.cjs} +2 -2
  206. package/dist/{progress-C6sY_Q2O.cjs.map → progress-CM5lHuCR.cjs.map} +1 -1
  207. package/dist/{progress-T5BaCgVz.js → progress-X8hxleUC.js} +2 -2
  208. package/dist/{progress-T5BaCgVz.js.map → progress-X8hxleUC.js.map} +1 -1
  209. package/dist/progress.cjs +1 -1
  210. package/dist/progress.js +1 -1
  211. package/dist/{radio-button-BXZsXmyT.js → radio-button--uXczpjB.js} +3 -3
  212. package/dist/{radio-button-BXZsXmyT.js.map → radio-button--uXczpjB.js.map} +1 -1
  213. package/dist/{radio-button-C85DWct1.cjs → radio-button-D76Qubig.cjs} +2 -2
  214. package/dist/{radio-button-C85DWct1.cjs.map → radio-button-D76Qubig.cjs.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-Csh_Ocoa.js} +2 -2
  218. package/dist/{schmancy-steps-container-C18l7ZUJ.js.map → schmancy-steps-container-Csh_Ocoa.js.map} +1 -1
  219. package/dist/{schmancy-steps-container-YzlY4UDL.cjs → schmancy-steps-container-Dc_hXgrm.cjs} +2 -2
  220. package/dist/{schmancy-steps-container-YzlY4UDL.cjs.map → schmancy-steps-container-Dc_hXgrm.cjs.map} +1 -1
  221. package/dist/{select-BgxZupg_.js → select-BrdNXtJK.js} +27 -21
  222. package/dist/select-BrdNXtJK.js.map +1 -0
  223. package/dist/select-DvjgcI2e.cjs +57 -0
  224. package/dist/select-DvjgcI2e.cjs.map +1 -0
  225. package/dist/select.cjs +1 -1
  226. package/dist/select.js +1 -1
  227. package/dist/{sheet-Dn2OyNPH.js → sheet-D6hxqRpX.js} +3 -3
  228. package/dist/{sheet-Dn2OyNPH.js.map → sheet-D6hxqRpX.js.map} +1 -1
  229. package/dist/{sheet-y9Uo1NQy.cjs → sheet-DrGvhM5D.cjs} +2 -2
  230. package/dist/{sheet-y9Uo1NQy.cjs.map → sheet-DrGvhM5D.cjs.map} +1 -1
  231. package/dist/sheet.cjs +1 -1
  232. package/dist/sheet.js +1 -1
  233. package/dist/{slider-CTsC1POO.cjs → slider-DNqgaGvI.cjs} +2 -2
  234. package/dist/{slider-CTsC1POO.cjs.map → slider-DNqgaGvI.cjs.map} +1 -1
  235. package/dist/{slider-HrSdi1w5.js → slider-ev-R3lWD.js} +3 -3
  236. package/dist/{slider-HrSdi1w5.js.map → slider-ev-R3lWD.js.map} +1 -1
  237. package/dist/slider.cjs +1 -1
  238. package/dist/slider.js +1 -1
  239. package/dist/{spinner-CwsNWGqj.js → spinner-0Be5YjKa.js} +2 -2
  240. package/dist/{spinner-CwsNWGqj.js.map → spinner-0Be5YjKa.js.map} +1 -1
  241. package/dist/{spinner-DguvYTr2.cjs → spinner-BBhBlm_F.cjs} +2 -2
  242. package/dist/{spinner-DguvYTr2.cjs.map → spinner-BBhBlm_F.cjs.map} +1 -1
  243. package/dist/steps.cjs +1 -1
  244. package/dist/steps.js +1 -1
  245. package/dist/{suggestion-chip-CocgJQgD.cjs → suggestion-chip-GLpIJvu3.cjs} +2 -2
  246. package/dist/{suggestion-chip-CocgJQgD.cjs.map → suggestion-chip-GLpIJvu3.cjs.map} +1 -1
  247. package/dist/{suggestion-chip-BcfuYhVu.js → suggestion-chip-WW3dScRF.js} +3 -3
  248. package/dist/{suggestion-chip-BcfuYhVu.js.map → suggestion-chip-WW3dScRF.js.map} +1 -1
  249. package/dist/{surface-14-wbhaX.cjs → surface-BaMQfpnN.cjs} +2 -2
  250. package/dist/{surface-14-wbhaX.cjs.map → surface-BaMQfpnN.cjs.map} +1 -1
  251. package/dist/{surface-BU2twRfK.js → surface-DmtBge0h.js} +2 -2
  252. package/dist/{surface-BU2twRfK.js.map → surface-DmtBge0h.js.map} +1 -1
  253. package/dist/surface.cjs +1 -1
  254. package/dist/surface.js +1 -1
  255. package/dist/{table-CUWzQ4jl.cjs → table-Bc86ZVfE.cjs} +2 -2
  256. package/dist/{table-CUWzQ4jl.cjs.map → table-Bc86ZVfE.cjs.map} +1 -1
  257. package/dist/{table-d_te1RgD.js → table-D00xx57f.js} +2 -2
  258. package/dist/{table-d_te1RgD.js.map → table-D00xx57f.js.map} +1 -1
  259. package/dist/table.cjs +1 -1
  260. package/dist/table.js +1 -1
  261. package/dist/{tabs-compatibility-Boc5CUVW.js → tabs-compatibility-BQqS_oQN.js} +2 -2
  262. package/dist/{tabs-compatibility-Boc5CUVW.js.map → tabs-compatibility-BQqS_oQN.js.map} +1 -1
  263. package/dist/{tabs-compatibility-DyZLNr4f.cjs → tabs-compatibility-Bo4Z38SO.cjs} +2 -2
  264. package/dist/{tabs-compatibility-DyZLNr4f.cjs.map → tabs-compatibility-Bo4Z38SO.cjs.map} +1 -1
  265. package/dist/tabs.cjs +1 -1
  266. package/dist/tabs.js +1 -1
  267. package/dist/tailwind.mixin-B_-9TcsC.cjs +2 -0
  268. package/dist/{tailwind.mixin-D2o72t31.cjs.map → tailwind.mixin-B_-9TcsC.cjs.map} +1 -1
  269. package/dist/tailwind.mixin-Dq8FD_xN.js +43 -0
  270. package/dist/{tailwind.mixin-nZk3QUQy.js.map → tailwind.mixin-Dq8FD_xN.js.map} +1 -1
  271. package/dist/teleport.cjs +1 -1
  272. package/dist/teleport.js +1 -1
  273. package/dist/{textarea-B0sYfSz6.js → textarea-DpSgcB0q.js} +2 -2
  274. package/dist/{textarea-B0sYfSz6.js.map → textarea-DpSgcB0q.js.map} +1 -1
  275. package/dist/{textarea-mrIBP74N.cjs → textarea-DvfusaL0.cjs} +2 -2
  276. package/dist/{textarea-mrIBP74N.cjs.map → textarea-DvfusaL0.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-1dnUcGe5.js} +2 -2
  280. package/dist/{theme-button-CNJVyopz.js.map → theme-button-1dnUcGe5.js.map} +1 -1
  281. package/dist/{theme-button-DGb5LDjM.cjs → theme-button-Dj3aS2jG.cjs} +2 -2
  282. package/dist/{theme-button-DGb5LDjM.cjs.map → theme-button-Dj3aS2jG.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-BIrl0bms.cjs → theme.component-B2834R93.cjs} +2 -2
  287. package/dist/{theme.component-BIrl0bms.cjs.map → theme.component-B2834R93.cjs.map} +1 -1
  288. package/dist/{theme.component-X5en4kgs.js → theme.component-DwzieORm.js} +2 -2
  289. package/dist/{theme.component-X5en4kgs.js.map → theme.component-DwzieORm.js.map} +1 -1
  290. package/dist/theme.js +1 -1
  291. package/dist/{timezone-Bt3qA38o.cjs → timezone-CWEqsRA_.cjs} +2 -2
  292. package/dist/{timezone-Bt3qA38o.cjs.map → timezone-CWEqsRA_.cjs.map} +1 -1
  293. package/dist/{timezone-CjMKVlle.js → timezone-YbhVzZRq.js} +3 -3
  294. package/dist/{timezone-CjMKVlle.js.map → timezone-YbhVzZRq.js.map} +1 -1
  295. package/dist/{tooltip-B8YU69FO.cjs → tooltip-BZ2fruXd.cjs} +2 -2
  296. package/dist/{tooltip-B8YU69FO.cjs.map → tooltip-BZ2fruXd.cjs.map} +1 -1
  297. package/dist/{tooltip-BorRixOk.js → tooltip-DgLua_UV.js} +2 -2
  298. package/dist/{tooltip-BorRixOk.js.map → tooltip-DgLua_UV.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-Dg-mKO7n.js} +2 -2
  302. package/dist/{tree-DQi0dyBy.js.map → tree-Dg-mKO7n.js.map} +1 -1
  303. package/dist/{tree-jWKUZns-.cjs → tree-c9Fcsgxi.cjs} +2 -2
  304. package/dist/{tree-jWKUZns-.cjs.map → tree-c9Fcsgxi.cjs.map} +1 -1
  305. package/dist/tree.cjs +1 -1
  306. package/dist/tree.js +1 -1
  307. package/dist/{typewriter-GHGwLOWk.js → typewriter-Bgp3f7FN.js} +4 -4
  308. package/dist/{typewriter-GHGwLOWk.js.map → typewriter-Bgp3f7FN.js.map} +1 -1
  309. package/dist/{typewriter-BCVmjF7y.cjs → typewriter-FHkXxEdA.cjs} +2 -2
  310. package/dist/{typewriter-BCVmjF7y.cjs.map → typewriter-FHkXxEdA.cjs.map} +1 -1
  311. package/dist/typewriter.cjs +1 -1
  312. package/dist/typewriter.js +1 -1
  313. package/dist/{typography-DsKadWmR.js → typography-B2kH45Vn.js} +2 -2
  314. package/dist/{typography-DsKadWmR.js.map → typography-B2kH45Vn.js.map} +1 -1
  315. package/dist/{typography-BIHYyI6-.cjs → typography-CE_QuH1P.cjs} +2 -2
  316. package/dist/{typography-BIHYyI6-.cjs.map → typography-CE_QuH1P.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/types/src/select/select.d.ts +2 -0
  326. package/dist/avatar-3C1rkJ1T.cjs +0 -157
  327. package/dist/avatar-3C1rkJ1T.cjs.map +0 -1
  328. package/dist/avatar-CxDF7O9q.js +0 -609
  329. package/dist/avatar-CxDF7O9q.js.map +0 -1
  330. package/dist/select-BgxZupg_.js.map +0 -1
  331. package/dist/select-Dve8bW-v.cjs +0 -57
  332. package/dist/select-Dve8bW-v.cjs.map +0 -1
  333. package/dist/tailwind.mixin-D2o72t31.cjs +0 -2
  334. package/dist/tailwind.mixin-nZk3QUQy.js +0 -43
@@ -0,0 +1,259 @@
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.
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 for instant navigation events
72
+ - **Ripple effects**: Immediate visual feedback on interaction
73
+ - **Keyboard support**: Enter and Space keys properly handled
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
+ // In Lit component - use property binding
144
+ @state() isActive = true;
145
+
146
+ render() {
147
+ return html`
148
+ <schmancy-navigation-bar-item ?active=${this.isActive}>
149
+ </schmancy-navigation-bar-item>
150
+ `;
151
+ }
152
+ ```
153
+
154
+ ## Integration Example
155
+
156
+ ### Complete Navigation Setup
157
+ ```typescript
158
+ @customElement('app-navigation')
159
+ class AppNavigation extends LitElement {
160
+ @state() activeIndex = 0;
161
+
162
+ private navigationItems = [
163
+ { icon: 'home', label: 'Home', route: 'home' },
164
+ { icon: 'search', label: 'Search', route: 'search' },
165
+ { icon: 'favorite', label: 'Favorites', route: 'favorites', badge: '3' },
166
+ { icon: 'person', label: 'Profile', route: 'profile' }
167
+ ];
168
+
169
+ private handleItemClick = (e: CustomEvent, index: number) => {
170
+ this.activeIndex = index;
171
+ const route = this.navigationItems[index].route;
172
+
173
+ // Navigate to route
174
+ area.push({
175
+ component: route,
176
+ area: 'main'
177
+ });
178
+ }
179
+
180
+ render() {
181
+ return html`
182
+ ${this.navigationItems.map((item, index) => html`
183
+ <schmancy-navigation-bar-item
184
+ icon=${item.icon}
185
+ label=${item.label}
186
+ ?active=${this.activeIndex === index}
187
+ badge=${item.badge || ''}
188
+ @bar-item-click=${(e: CustomEvent) => this.handleItemClick(e, index)}
189
+ ></schmancy-navigation-bar-item>
190
+ `)}
191
+ `;
192
+ }
193
+ }
194
+ ```
195
+
196
+ ## Accessibility
197
+
198
+ ### Keyboard Support
199
+ - `Enter` / `Space` - Activate the item instantly
200
+ - Full focus management with visual indicators
201
+ - `aria-pressed` attribute reflects active state
202
+ - `aria-label` for badge notifications
203
+
204
+ ### Screen Reader Support
205
+ - Proper ARIA attributes
206
+ - Semantic HTML structure
207
+ - Badge announcements ("3 notifications")
208
+
209
+ ## Performance Optimization
210
+
211
+ ### RxJS Observables
212
+ - Efficient event handling with proper cleanup
213
+ - Instant navigation events for responsive interaction
214
+ - Immediate ripple feedback for better UX
215
+ - Memory-safe with `takeUntil(this.disconnecting)`
216
+
217
+ ### Rendering Optimization
218
+ - Conditional rendering based on props
219
+ - Efficient class mapping with TailwindElement
220
+ - Shadow DOM for style encapsulation
221
+
222
+ ## Best Practices
223
+
224
+ 1. **Icons**: Always use Material Symbols Outlined for consistency
225
+ 2. **Labels**: Keep labels concise (1-2 words maximum)
226
+ 3. **Badges**: Use for important notifications only
227
+ 4. **Active State**: Let parent navigation bar manage active states
228
+ 5. **Disabled State**: Use sparingly, consider hiding instead
229
+ 6. **Custom Icons**: Use the icon slot for custom SVGs or emojis
230
+
231
+ ## Common Patterns
232
+
233
+ ### Dynamic Badges
234
+ ```javascript
235
+ // In Lit component - use declarative binding
236
+ @state() notificationCount = 0;
237
+
238
+ render() {
239
+ return html`
240
+ <schmancy-navigation-bar-item
241
+ badge=${this.notificationCount > 0 ? String(this.notificationCount) : ''}
242
+ ></schmancy-navigation-bar-item>
243
+ `;
244
+ }
245
+ ```
246
+
247
+ ### Conditional Rendering
248
+ ```javascript
249
+ // Show/hide items based on user role
250
+ const items = user.isAdmin
251
+ ? ['dashboard', 'users', 'settings']
252
+ : ['dashboard', 'settings'];
253
+ ```
254
+
255
+ ### Icon Switching
256
+ ```javascript
257
+ // Change icon based on state
258
+ const icon = isPlaying ? 'pause' : 'play_arrow';
259
+ ```
@@ -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,259 @@
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.
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 for instant navigation events
72
+ - **Ripple effects**: Immediate visual feedback on interaction
73
+ - **Keyboard support**: Enter and Space keys properly handled
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
+ // In Lit component - use property binding
144
+ @state() isActive = true;
145
+
146
+ render() {
147
+ return html`
148
+ <schmancy-navigation-bar-item ?active=${this.isActive}>
149
+ </schmancy-navigation-bar-item>
150
+ `;
151
+ }
152
+ ```
153
+
154
+ ## Integration Example
155
+
156
+ ### Complete Navigation Setup
157
+ ```typescript
158
+ @customElement('app-navigation')
159
+ class AppNavigation extends LitElement {
160
+ @state() activeIndex = 0;
161
+
162
+ private navigationItems = [
163
+ { icon: 'home', label: 'Home', route: 'home' },
164
+ { icon: 'search', label: 'Search', route: 'search' },
165
+ { icon: 'favorite', label: 'Favorites', route: 'favorites', badge: '3' },
166
+ { icon: 'person', label: 'Profile', route: 'profile' }
167
+ ];
168
+
169
+ private handleItemClick = (e: CustomEvent, index: number) => {
170
+ this.activeIndex = index;
171
+ const route = this.navigationItems[index].route;
172
+
173
+ // Navigate to route
174
+ area.push({
175
+ component: route,
176
+ area: 'main'
177
+ });
178
+ }
179
+
180
+ render() {
181
+ return html`
182
+ ${this.navigationItems.map((item, index) => html`
183
+ <schmancy-navigation-bar-item
184
+ icon=${item.icon}
185
+ label=${item.label}
186
+ ?active=${this.activeIndex === index}
187
+ badge=${item.badge || ''}
188
+ @bar-item-click=${(e: CustomEvent) => this.handleItemClick(e, index)}
189
+ ></schmancy-navigation-bar-item>
190
+ `)}
191
+ `;
192
+ }
193
+ }
194
+ ```
195
+
196
+ ## Accessibility
197
+
198
+ ### Keyboard Support
199
+ - `Enter` / `Space` - Activate the item instantly
200
+ - Full focus management with visual indicators
201
+ - `aria-pressed` attribute reflects active state
202
+ - `aria-label` for badge notifications
203
+
204
+ ### Screen Reader Support
205
+ - Proper ARIA attributes
206
+ - Semantic HTML structure
207
+ - Badge announcements ("3 notifications")
208
+
209
+ ## Performance Optimization
210
+
211
+ ### RxJS Observables
212
+ - Efficient event handling with proper cleanup
213
+ - Instant navigation events for responsive interaction
214
+ - Immediate ripple feedback for better UX
215
+ - Memory-safe with `takeUntil(this.disconnecting)`
216
+
217
+ ### Rendering Optimization
218
+ - Conditional rendering based on props
219
+ - Efficient class mapping with TailwindElement
220
+ - Shadow DOM for style encapsulation
221
+
222
+ ## Best Practices
223
+
224
+ 1. **Icons**: Always use Material Symbols Outlined for consistency
225
+ 2. **Labels**: Keep labels concise (1-2 words maximum)
226
+ 3. **Badges**: Use for important notifications only
227
+ 4. **Active State**: Let parent navigation bar manage active states
228
+ 5. **Disabled State**: Use sparingly, consider hiding instead
229
+ 6. **Custom Icons**: Use the icon slot for custom SVGs or emojis
230
+
231
+ ## Common Patterns
232
+
233
+ ### Dynamic Badges
234
+ ```javascript
235
+ // In Lit component - use declarative binding
236
+ @state() notificationCount = 0;
237
+
238
+ render() {
239
+ return html`
240
+ <schmancy-navigation-bar-item
241
+ badge=${this.notificationCount > 0 ? String(this.notificationCount) : ''}
242
+ ></schmancy-navigation-bar-item>
243
+ `;
244
+ }
245
+ ```
246
+
247
+ ### Conditional Rendering
248
+ ```javascript
249
+ // Show/hide items based on user role
250
+ const items = user.isAdmin
251
+ ? ['dashboard', 'users', 'settings']
252
+ : ['dashboard', 'settings'];
253
+ ```
254
+
255
+ ### Icon Switching
256
+ ```javascript
257
+ // Change icon based on state
258
+ const icon = isPlaying ? 'pause' : 'play_arrow';
259
+ ```