@mhmo91/schmancy 0.8.6 → 0.9.3

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 (1426) hide show
  1. package/README.md +54 -1
  2. package/ai/INDEX.md +321 -0
  3. package/ai/animation.md +64 -0
  4. package/ai/area.md +170 -237
  5. package/ai/audio.md +50 -222
  6. package/ai/autocomplete.md +44 -162
  7. package/ai/avatar.md +47 -178
  8. package/ai/badge.md +41 -108
  9. package/ai/boat.md +35 -41
  10. package/ai/busy.md +25 -184
  11. package/ai/button.md +52 -150
  12. package/ai/card.md +42 -215
  13. package/ai/charts.md +93 -0
  14. package/ai/checkbox.md +32 -135
  15. package/ai/chips.md +73 -383
  16. package/ai/code-highlight.md +33 -226
  17. package/ai/connectivity.md +36 -0
  18. package/ai/content-drawer.md +65 -232
  19. package/ai/date-range-inline.md +40 -258
  20. package/ai/date-range.md +43 -198
  21. package/ai/delay.md +31 -139
  22. package/ai/details.md +48 -453
  23. package/ai/dialog.md +55 -164
  24. package/ai/directives.md +258 -405
  25. package/ai/discovery.md +67 -0
  26. package/ai/divider.md +15 -137
  27. package/ai/dropdown.md +44 -235
  28. package/ai/expand.md +63 -0
  29. package/ai/extra.md +59 -0
  30. package/ai/float.md +14 -0
  31. package/ai/form.md +41 -137
  32. package/ai/icons.md +31 -235
  33. package/ai/iframe.md +44 -0
  34. package/ai/input.md +50 -210
  35. package/ai/json.md +33 -0
  36. package/ai/layout.md +45 -169
  37. package/ai/lightbox.md +25 -370
  38. package/ai/list.md +51 -130
  39. package/ai/mailbox.md +80 -508
  40. package/ai/map.md +47 -226
  41. package/ai/menu.md +25 -134
  42. package/ai/mixins.md +201 -0
  43. package/ai/nav-drawer.md +30 -184
  44. package/ai/navigation-bar.md +27 -184
  45. package/ai/navigation-rail.md +62 -630
  46. package/ai/notification.md +49 -183
  47. package/ai/option.md +30 -160
  48. package/ai/page.md +42 -0
  49. package/ai/progress.md +26 -65
  50. package/ai/qr-scanner.md +51 -0
  51. package/ai/radio-group.md +45 -189
  52. package/ai/range.md +47 -0
  53. package/ai/rxjs-utils.md +60 -0
  54. package/ai/select.md +49 -209
  55. package/ai/sheet.md +74 -506
  56. package/ai/slider.md +30 -214
  57. package/ai/steps.md +30 -392
  58. package/ai/store.md +173 -251
  59. package/ai/surface.md +58 -245
  60. package/ai/table.md +56 -330
  61. package/ai/tabs.md +31 -176
  62. package/ai/teleport.md +35 -177
  63. package/ai/textarea.md +48 -232
  64. package/ai/theme-button.md +16 -163
  65. package/ai/theme.md +40 -1089
  66. package/ai/tooltip.md +35 -146
  67. package/ai/tree.md +45 -271
  68. package/ai/typewriter.md +28 -317
  69. package/ai/typography.md +43 -296
  70. package/ai/utils.md +95 -0
  71. package/ai/window.md +67 -0
  72. package/custom-elements.json +10955 -0
  73. package/dist/ai/INDEX.md +321 -0
  74. package/dist/ai/animation.md +64 -0
  75. package/dist/ai/area.md +170 -237
  76. package/dist/ai/audio.md +50 -222
  77. package/dist/ai/autocomplete.md +44 -162
  78. package/dist/ai/avatar.md +47 -178
  79. package/dist/ai/badge.md +41 -108
  80. package/dist/ai/boat.md +35 -41
  81. package/dist/ai/busy.md +25 -184
  82. package/dist/ai/button.md +52 -150
  83. package/dist/ai/card.md +42 -215
  84. package/dist/ai/charts.md +93 -0
  85. package/dist/ai/checkbox.md +32 -135
  86. package/dist/ai/chips.md +73 -383
  87. package/dist/ai/code-highlight.md +33 -226
  88. package/dist/ai/connectivity.md +36 -0
  89. package/dist/ai/content-drawer.md +65 -232
  90. package/dist/ai/date-range-inline.md +40 -258
  91. package/dist/ai/date-range.md +43 -198
  92. package/dist/ai/delay.md +31 -139
  93. package/dist/ai/details.md +48 -453
  94. package/dist/ai/dialog.md +55 -164
  95. package/dist/ai/directives.md +258 -405
  96. package/dist/ai/discovery.md +67 -0
  97. package/dist/ai/divider.md +15 -137
  98. package/dist/ai/dropdown.md +44 -235
  99. package/dist/ai/expand.md +63 -0
  100. package/dist/ai/extra.md +59 -0
  101. package/dist/ai/float.md +14 -0
  102. package/dist/ai/form.md +41 -137
  103. package/dist/ai/icons.md +31 -235
  104. package/dist/ai/iframe.md +44 -0
  105. package/dist/ai/input.md +50 -210
  106. package/dist/ai/json.md +33 -0
  107. package/dist/ai/layout.md +45 -169
  108. package/dist/ai/lightbox.md +25 -370
  109. package/dist/ai/list.md +51 -130
  110. package/dist/ai/mailbox.md +80 -508
  111. package/dist/ai/map.md +47 -226
  112. package/dist/ai/menu.md +25 -134
  113. package/dist/ai/mixins.md +201 -0
  114. package/dist/ai/nav-drawer.md +30 -184
  115. package/dist/ai/navigation-bar.md +27 -184
  116. package/dist/ai/navigation-rail.md +62 -630
  117. package/dist/ai/notification.md +49 -183
  118. package/dist/ai/option.md +30 -160
  119. package/dist/ai/page.md +42 -0
  120. package/dist/ai/progress.md +26 -65
  121. package/dist/ai/qr-scanner.md +51 -0
  122. package/dist/ai/radio-group.md +45 -189
  123. package/dist/ai/range.md +47 -0
  124. package/dist/ai/rxjs-utils.md +60 -0
  125. package/dist/ai/select.md +49 -209
  126. package/dist/ai/sheet.md +74 -506
  127. package/dist/ai/slider.md +30 -214
  128. package/dist/ai/steps.md +30 -392
  129. package/dist/ai/store.md +173 -251
  130. package/dist/ai/surface.md +58 -245
  131. package/dist/ai/table.md +56 -330
  132. package/dist/ai/tabs.md +31 -176
  133. package/dist/ai/teleport.md +35 -177
  134. package/dist/ai/textarea.md +48 -232
  135. package/dist/ai/theme-button.md +16 -163
  136. package/dist/ai/theme.md +40 -1089
  137. package/dist/ai/tooltip.md +35 -146
  138. package/dist/ai/tree.md +45 -271
  139. package/dist/ai/typewriter.md +28 -317
  140. package/dist/ai/typography.md +43 -296
  141. package/dist/ai/utils.md +95 -0
  142. package/dist/ai/window.md +67 -0
  143. package/dist/animation-BK-8BwY8.js +173 -0
  144. package/dist/animation-BK-8BwY8.js.map +1 -0
  145. package/dist/animation-CO_Csq84.cjs +16 -0
  146. package/dist/animation-CO_Csq84.cjs.map +1 -0
  147. package/dist/area-CC8fUnra.js +590 -0
  148. package/dist/area-CC8fUnra.js.map +1 -0
  149. package/dist/area-wnWUAHEn.cjs +12 -0
  150. package/dist/area-wnWUAHEn.cjs.map +1 -0
  151. package/dist/area.cjs +1 -2
  152. package/dist/area.js +2 -29
  153. package/dist/audio-DtYYgzYD.cjs +1 -0
  154. package/dist/audio-DtYYgzYD.cjs.map +1 -0
  155. package/dist/audio-kz8UgPTO.js +335 -0
  156. package/dist/audio-kz8UgPTO.js.map +1 -0
  157. package/dist/audio.cjs +1 -2
  158. package/dist/audio.js +3 -9
  159. package/dist/autocomplete-B2Z3WK_7.cjs +111 -0
  160. package/dist/autocomplete-B2Z3WK_7.cjs.map +1 -0
  161. package/dist/autocomplete-CJ7YgtKN.js +378 -0
  162. package/dist/autocomplete-CJ7YgtKN.js.map +1 -0
  163. package/dist/autocomplete.cjs +1 -2
  164. package/dist/autocomplete.js +1 -2
  165. package/dist/badge.cjs +1 -2
  166. package/dist/badge.js +2 -6
  167. package/dist/boat-B57_4TzJ.cjs +80 -0
  168. package/dist/boat-B57_4TzJ.cjs.map +1 -0
  169. package/dist/boat-C9eU6NO-.js +347 -0
  170. package/dist/boat-C9eU6NO-.js.map +1 -0
  171. package/dist/boat.cjs +1 -2
  172. package/dist/boat.js +2 -5
  173. package/dist/busy--6oimtop.cjs +134 -0
  174. package/dist/busy--6oimtop.cjs.map +1 -0
  175. package/dist/busy-CGZXy0h-.js +167 -0
  176. package/dist/busy-CGZXy0h-.js.map +1 -0
  177. package/dist/busy.cjs +1 -2
  178. package/dist/busy.js +1 -2
  179. package/dist/button.cjs +113 -2
  180. package/dist/button.cjs.map +1 -1
  181. package/dist/button.js +398 -5
  182. package/dist/button.js.map +1 -1
  183. package/dist/card-BGJ0Hb1O.cjs +177 -0
  184. package/dist/card-BGJ0Hb1O.cjs.map +1 -0
  185. package/dist/card-C-ee-l5O.js +284 -0
  186. package/dist/card-C-ee-l5O.js.map +1 -0
  187. package/dist/card.cjs +1 -2
  188. package/dist/card.js +1 -2
  189. package/dist/charts.cjs +112 -2
  190. package/dist/charts.cjs.map +1 -1
  191. package/dist/charts.js +368 -8
  192. package/dist/charts.js.map +1 -1
  193. package/dist/checkbox-DuYaKoDZ.cjs +39 -0
  194. package/dist/checkbox-DuYaKoDZ.cjs.map +1 -0
  195. package/dist/checkbox-FRcorDrD.js +610 -0
  196. package/dist/checkbox-FRcorDrD.js.map +1 -0
  197. package/dist/checkbox.cjs +1 -2
  198. package/dist/checkbox.js +2 -5
  199. package/dist/chips-BpA0A-qr.cjs +253 -0
  200. package/dist/chips-BpA0A-qr.cjs.map +1 -0
  201. package/dist/chips-CyzNbKJD.js +645 -0
  202. package/dist/chips-CyzNbKJD.js.map +1 -0
  203. package/dist/chips.cjs +1 -2
  204. package/dist/chips.js +3 -10
  205. package/dist/chunk-BCfY8kxB.cjs +1 -0
  206. package/dist/chunk-C_1VqBVD.js +11 -0
  207. package/dist/code-highlight-C7O9ltXm.js +290 -0
  208. package/dist/code-highlight-C7O9ltXm.js.map +1 -0
  209. package/dist/code-highlight-DsBdSQBG.cjs +190 -0
  210. package/dist/code-highlight-DsBdSQBG.cjs.map +1 -0
  211. package/dist/code-highlight.cjs +1 -2
  212. package/dist/code-highlight.js +2 -7
  213. package/dist/components-CkMvOiTR.js +730 -0
  214. package/dist/components-CkMvOiTR.js.map +1 -0
  215. package/dist/components-dDI3xeIf.cjs +73 -0
  216. package/dist/components-dDI3xeIf.cjs.map +1 -0
  217. package/dist/components.cjs +1 -2
  218. package/dist/components.js +2 -5
  219. package/dist/connectivity.cjs +59 -0
  220. package/dist/connectivity.cjs.map +1 -0
  221. package/dist/connectivity.js +86 -0
  222. package/dist/connectivity.js.map +1 -0
  223. package/dist/content-drawer.cjs +1 -2
  224. package/dist/content-drawer.js +2 -13
  225. package/dist/cursor-glow-Ah7VXSj7.js +46 -0
  226. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -0
  227. package/dist/cursor-glow-DtSy_PJd.cjs +1 -0
  228. package/dist/cursor-glow-DtSy_PJd.cjs.map +1 -0
  229. package/dist/date-range-70zhLUKE.cjs +131 -0
  230. package/dist/date-range-70zhLUKE.cjs.map +1 -0
  231. package/dist/date-range-BrN_Bs6_.js +946 -0
  232. package/dist/date-range-BrN_Bs6_.js.map +1 -0
  233. package/dist/date-range-inline-CPzD-tIv.cjs +43 -0
  234. package/dist/date-range-inline-CPzD-tIv.cjs.map +1 -0
  235. package/dist/date-range-inline-Cp294DxR.js +267 -0
  236. package/dist/date-range-inline-Cp294DxR.js.map +1 -0
  237. package/dist/date-range-inline.cjs +1 -2
  238. package/dist/date-range-inline.js +2 -5
  239. package/dist/date-range.cjs +1 -2
  240. package/dist/date-range.js +2 -6
  241. package/dist/delay-COcAkBqB.cjs +9 -0
  242. package/dist/delay-COcAkBqB.cjs.map +1 -0
  243. package/dist/delay-IV0Swce2.js +346 -0
  244. package/dist/delay-IV0Swce2.js.map +1 -0
  245. package/dist/delay.cjs +1 -2
  246. package/dist/delay.js +2 -6
  247. package/dist/details-CuKmr3Qw.js +293 -0
  248. package/dist/details-CuKmr3Qw.js.map +1 -0
  249. package/dist/details-DgWkPqmt.cjs +168 -0
  250. package/dist/details-DgWkPqmt.cjs.map +1 -0
  251. package/dist/details.cjs +1 -2
  252. package/dist/details.js +2 -5
  253. package/dist/dialog-service-NZEvyEK-.js +193 -0
  254. package/dist/dialog-service-NZEvyEK-.js.map +1 -0
  255. package/dist/dialog-service-VnW4gkmE.cjs +1 -0
  256. package/dist/dialog-service-VnW4gkmE.cjs.map +1 -0
  257. package/dist/dialog.cjs +82 -2
  258. package/dist/dialog.cjs.map +1 -1
  259. package/dist/dialog.js +396 -9
  260. package/dist/dialog.js.map +1 -1
  261. package/dist/directives.cjs +108 -2
  262. package/dist/directives.cjs.map +1 -1
  263. package/dist/directives.js +1362 -14
  264. package/dist/directives.js.map +1 -1
  265. package/dist/discovery.cjs +1 -2
  266. package/dist/discovery.cjs.map +1 -1
  267. package/dist/discovery.js +61 -6
  268. package/dist/discovery.js.map +1 -1
  269. package/dist/divider-BWoUbfgZ.js +87 -0
  270. package/dist/divider-BWoUbfgZ.js.map +1 -0
  271. package/dist/divider-BghtrMbn.cjs +57 -0
  272. package/dist/divider-BghtrMbn.cjs.map +1 -0
  273. package/dist/divider.cjs +1 -2
  274. package/dist/divider.js +1 -2
  275. package/dist/dropdown.cjs +57 -2
  276. package/dist/dropdown.cjs.map +1 -1
  277. package/dist/dropdown.js +160 -5
  278. package/dist/dropdown.js.map +1 -1
  279. package/dist/expand-CJU9m4ga.js +336 -0
  280. package/dist/expand-CJU9m4ga.js.map +1 -0
  281. package/dist/expand-XyDE5SsO.cjs +141 -0
  282. package/dist/expand-XyDE5SsO.cjs.map +1 -0
  283. package/dist/expand.cjs +1 -0
  284. package/dist/expand.js +2 -0
  285. package/dist/extra-BxXFmW1w.js +3435 -0
  286. package/dist/extra-BxXFmW1w.js.map +1 -0
  287. package/dist/extra-CsrRKKqE.cjs +31 -0
  288. package/dist/extra-CsrRKKqE.cjs.map +1 -0
  289. package/dist/extra.cjs +1 -2
  290. package/dist/extra.js +2 -6
  291. package/dist/float-BD86t_NU.js +5 -0
  292. package/dist/float-BD86t_NU.js.map +1 -0
  293. package/dist/float-DBv1FINW.cjs +1 -0
  294. package/dist/float-DBv1FINW.cjs.map +1 -0
  295. package/dist/float.cjs +1 -0
  296. package/dist/float.js +2 -0
  297. package/dist/flow-Bbwn6dRN.cjs +1 -0
  298. package/dist/flow-Bbwn6dRN.cjs.map +1 -0
  299. package/dist/flow-CUj0fDT_.js +386 -0
  300. package/dist/flow-CUj0fDT_.js.map +1 -0
  301. package/dist/form-Cp5-I_ZV.js +270 -0
  302. package/dist/form-Cp5-I_ZV.js.map +1 -0
  303. package/dist/form-D0bIeDWT.cjs +1 -0
  304. package/dist/form-D0bIeDWT.cjs.map +1 -0
  305. package/dist/form.cjs +1 -2
  306. package/dist/form.js +1 -2
  307. package/dist/hashContent-DYM21p6t.js +6 -0
  308. package/dist/hashContent-DYM21p6t.js.map +1 -0
  309. package/dist/hashContent-DaeGmY-p.cjs +1 -0
  310. package/dist/hashContent-DaeGmY-p.cjs.map +1 -0
  311. package/dist/icons-BpU0_l92.js +161 -0
  312. package/dist/icons-BpU0_l92.js.map +1 -0
  313. package/dist/icons-D8w_20mO.cjs +52 -0
  314. package/dist/icons-D8w_20mO.cjs.map +1 -0
  315. package/dist/icons.cjs +1 -2
  316. package/dist/icons.js +1 -2
  317. package/dist/iframe-BjwxA2Pg.cjs +24 -0
  318. package/dist/iframe-BjwxA2Pg.cjs.map +1 -0
  319. package/dist/iframe-tY1GY5g1.js +44 -0
  320. package/dist/iframe-tY1GY5g1.js.map +1 -0
  321. package/dist/iframe.cjs +1 -0
  322. package/dist/iframe.js +2 -0
  323. package/dist/index.cjs +1 -2
  324. package/dist/index.js +69 -285
  325. package/dist/input-BnfTpRN9.js +364 -0
  326. package/dist/input-BnfTpRN9.js.map +1 -0
  327. package/dist/input-BwxwognS.cjs +51 -0
  328. package/dist/input-BwxwognS.cjs.map +1 -0
  329. package/dist/input-chip-CkM2aYmO.js +301 -0
  330. package/dist/input-chip-CkM2aYmO.js.map +1 -0
  331. package/dist/input-chip-MjOwX5EY.cjs +146 -0
  332. package/dist/input-chip-MjOwX5EY.cjs.map +1 -0
  333. package/dist/input.cjs +1 -2
  334. package/dist/input.js +2 -6
  335. package/dist/intersection-BPLpqYEd.js +12 -0
  336. package/dist/intersection-BPLpqYEd.js.map +1 -0
  337. package/dist/intersection-CZpaIHeT.cjs +1 -0
  338. package/dist/intersection-CZpaIHeT.cjs.map +1 -0
  339. package/dist/json.cjs +11 -2
  340. package/dist/json.cjs.map +1 -1
  341. package/dist/json.js +40 -4
  342. package/dist/json.js.map +1 -1
  343. package/dist/layout-4C-6_cre.cjs +1 -0
  344. package/dist/layout-4C-6_cre.cjs.map +1 -0
  345. package/dist/layout-BV0EeyUS.cjs +17 -0
  346. package/dist/layout-BV0EeyUS.cjs.map +1 -0
  347. package/dist/layout-CJSlZlFL.js +267 -0
  348. package/dist/layout-CJSlZlFL.js.map +1 -0
  349. package/dist/layout-yxSlLybo.js +94 -0
  350. package/dist/layout-yxSlLybo.js.map +1 -0
  351. package/dist/layout.cjs +1 -2
  352. package/dist/layout.js +3 -9
  353. package/dist/lightbox-CpNMZHZW.cjs +202 -0
  354. package/dist/lightbox-CpNMZHZW.cjs.map +1 -0
  355. package/dist/lightbox-groqGmJH.js +678 -0
  356. package/dist/lightbox-groqGmJH.js.map +1 -0
  357. package/dist/lightbox.cjs +1 -2
  358. package/dist/lightbox.js +2 -8
  359. package/dist/list-CyHd0Zc2.cjs +40 -0
  360. package/dist/list-CyHd0Zc2.cjs.map +1 -0
  361. package/dist/list-DzkqT_r-.js +105 -0
  362. package/dist/list-DzkqT_r-.js.map +1 -0
  363. package/dist/list.cjs +1 -2
  364. package/dist/list.js +2 -7
  365. package/dist/litElement.mixin-BG6_-nYX.cjs +1 -0
  366. package/dist/litElement.mixin-BG6_-nYX.cjs.map +1 -0
  367. package/dist/litElement.mixin-Dm-4L8zL.js +12 -0
  368. package/dist/litElement.mixin-Dm-4L8zL.js.map +1 -0
  369. package/dist/magnetic-BZGFxAWG.js +47 -0
  370. package/dist/magnetic-BZGFxAWG.js.map +1 -0
  371. package/dist/magnetic-Dux4QwO4.cjs +1 -0
  372. package/dist/magnetic-Dux4QwO4.cjs.map +1 -0
  373. package/dist/mailbox-BcqnXYVP.js +1584 -0
  374. package/dist/mailbox-BcqnXYVP.js.map +1 -0
  375. package/dist/mailbox-C5eYTd7p.cjs +1142 -0
  376. package/dist/mailbox-C5eYTd7p.cjs.map +1 -0
  377. package/dist/mailbox.cjs +1 -2
  378. package/dist/mailbox.js +2 -9
  379. package/dist/map-BncheFt5.cjs +80 -0
  380. package/dist/map-BncheFt5.cjs.map +1 -0
  381. package/dist/map-C0o1PgLE.js +205 -0
  382. package/dist/map-C0o1PgLE.js.map +1 -0
  383. package/dist/map.cjs +1 -2
  384. package/dist/map.js +2 -5
  385. package/dist/menu-uwqlQbLd.js +51 -0
  386. package/dist/menu-uwqlQbLd.js.map +1 -0
  387. package/dist/menu-yXzwJZFf.cjs +23 -0
  388. package/dist/menu-yXzwJZFf.cjs.map +1 -0
  389. package/dist/menu.cjs +1 -2
  390. package/dist/menu.js +1 -2
  391. package/dist/mixins.cjs +1 -2
  392. package/dist/mixins.cjs.map +1 -1
  393. package/dist/mixins.js +59 -12
  394. package/dist/mixins.js.map +1 -1
  395. package/dist/nav-drawer.cjs +1 -2
  396. package/dist/nav-drawer.js +2 -12
  397. package/dist/navigation-bar.cjs +1 -2
  398. package/dist/navigation-bar.js +2 -6
  399. package/dist/navigation-rail.cjs +71 -2
  400. package/dist/navigation-rail.cjs.map +1 -1
  401. package/dist/navigation-rail.js +363 -5
  402. package/dist/navigation-rail.js.map +1 -1
  403. package/dist/notification-BjwTfLAl.cjs +23 -0
  404. package/dist/notification-BjwTfLAl.cjs.map +1 -0
  405. package/dist/notification-DzYT4deA.js +304 -0
  406. package/dist/notification-DzYT4deA.js.map +1 -0
  407. package/dist/notification.cjs +1 -2
  408. package/dist/notification.js +2 -9
  409. package/dist/option-BJsD3u2D.cjs +43 -0
  410. package/dist/option-BJsD3u2D.cjs.map +1 -0
  411. package/dist/option-JFHxgiYl.js +97 -0
  412. package/dist/option-JFHxgiYl.js.map +1 -0
  413. package/dist/option.cjs +1 -2
  414. package/dist/option.js +1 -2
  415. package/dist/overlay-stack-DQey9Qph.cjs +1 -0
  416. package/dist/overlay-stack-DQey9Qph.cjs.map +1 -0
  417. package/dist/overlay-stack-DT1SdaGW.js +39 -0
  418. package/dist/overlay-stack-DT1SdaGW.js.map +1 -0
  419. package/dist/page.cjs +20 -2
  420. package/dist/page.cjs.map +1 -1
  421. package/dist/page.js +71 -4
  422. package/dist/page.js.map +1 -1
  423. package/dist/progress-BUh5WBqx.js +128 -0
  424. package/dist/progress-BUh5WBqx.js.map +1 -0
  425. package/dist/progress-BoRmyGAa.cjs +51 -0
  426. package/dist/progress-BoRmyGAa.cjs.map +1 -0
  427. package/dist/progress.cjs +1 -2
  428. package/dist/progress.js +1 -2
  429. package/dist/provide-8MrDz_qX.js +107 -0
  430. package/dist/provide-8MrDz_qX.js.map +1 -0
  431. package/dist/provide-CDkxgjHb.cjs +1 -0
  432. package/dist/provide-CDkxgjHb.cjs.map +1 -0
  433. package/dist/qr-scanner.cjs +35 -2
  434. package/dist/qr-scanner.cjs.map +1 -1
  435. package/dist/qr-scanner.js +119 -4
  436. package/dist/qr-scanner.js.map +1 -1
  437. package/dist/radio-group-DbOWUPhi.js +105 -0
  438. package/dist/radio-group-DbOWUPhi.js.map +1 -0
  439. package/dist/radio-group-rhrvhB5X.cjs +40 -0
  440. package/dist/radio-group-rhrvhB5X.cjs.map +1 -0
  441. package/dist/radio-group.cjs +1 -2
  442. package/dist/radio-group.js +2 -6
  443. package/dist/range.cjs +62 -0
  444. package/dist/range.cjs.map +1 -0
  445. package/dist/range.js +85 -0
  446. package/dist/range.js.map +1 -0
  447. package/dist/reduced-motion-D-L12p7G.js +7 -0
  448. package/dist/reduced-motion-D-L12p7G.js.map +1 -0
  449. package/dist/reduced-motion-Ds05GPyz.cjs +1 -0
  450. package/dist/reduced-motion-Ds05GPyz.cjs.map +1 -0
  451. package/dist/rxjs-utils-BSjmI9-Q.js +32 -0
  452. package/dist/rxjs-utils-BSjmI9-Q.js.map +1 -0
  453. package/dist/rxjs-utils-DCsfzeap.cjs +1 -0
  454. package/dist/rxjs-utils-DCsfzeap.cjs.map +1 -0
  455. package/dist/rxjs-utils.cjs +1 -2
  456. package/dist/rxjs-utils.js +2 -14
  457. package/dist/scroll-BE9W9PF2.cjs +26 -0
  458. package/dist/scroll-BE9W9PF2.cjs.map +1 -0
  459. package/dist/scroll-qGks1R0k.js +112 -0
  460. package/dist/scroll-qGks1R0k.js.map +1 -0
  461. package/dist/search-C4dFHYbX.js +91 -0
  462. package/dist/search-C4dFHYbX.js.map +1 -0
  463. package/dist/search-Ds8tt7Et.cjs +1 -0
  464. package/dist/search-Ds8tt7Et.cjs.map +1 -0
  465. package/dist/select-D9sgBRjU.js +305 -0
  466. package/dist/select-D9sgBRjU.js.map +1 -0
  467. package/dist/select-DXU2kzg4.cjs +56 -0
  468. package/dist/select-DXU2kzg4.cjs.map +1 -0
  469. package/dist/select.cjs +1 -2
  470. package/dist/select.js +2 -5
  471. package/dist/sheet-CIxCCJ3H.js +168 -0
  472. package/dist/sheet-CIxCCJ3H.js.map +1 -0
  473. package/dist/sheet-CeX6BbNp.cjs +35 -0
  474. package/dist/sheet-CeX6BbNp.cjs.map +1 -0
  475. package/dist/sheet.cjs +1 -2
  476. package/dist/sheet.js +3 -7
  477. package/dist/sheet.service-CAB7weBc.js +86 -0
  478. package/dist/sheet.service-CAB7weBc.js.map +1 -0
  479. package/dist/sheet.service-DPAp7E3x.cjs +1 -0
  480. package/dist/sheet.service-DPAp7E3x.cjs.map +1 -0
  481. package/dist/slider.cjs +82 -2
  482. package/dist/slider.cjs.map +1 -1
  483. package/dist/slider.js +143 -5
  484. package/dist/slider.js.map +1 -1
  485. package/dist/sound.service-Bu3EQLv2.cjs +1 -0
  486. package/dist/sound.service-Bu3EQLv2.cjs.map +1 -0
  487. package/dist/sound.service-m3BrSfuH.js +2353 -0
  488. package/dist/sound.service-m3BrSfuH.js.map +1 -0
  489. package/dist/src-CbO5kJ2O.js +1244 -0
  490. package/dist/src-CbO5kJ2O.js.map +1 -0
  491. package/dist/src-SraDxEeg.cjs +269 -0
  492. package/dist/src-SraDxEeg.cjs.map +1 -0
  493. package/dist/steps.cjs +70 -2
  494. package/dist/steps.cjs.map +1 -1
  495. package/dist/steps.js +178 -7
  496. package/dist/steps.js.map +1 -1
  497. package/dist/store-CorvD3bT.cjs +1 -0
  498. package/dist/store-CorvD3bT.cjs.map +1 -0
  499. package/dist/store-DYqDLAvT.js +1654 -0
  500. package/dist/store-DYqDLAvT.js.map +1 -0
  501. package/dist/store.cjs +1 -2
  502. package/dist/store.js +2 -47
  503. package/dist/surface-DuH0pm2v.cjs +7 -0
  504. package/dist/surface-DuH0pm2v.cjs.map +1 -0
  505. package/dist/surface-eN_Jy2MJ.js +21 -0
  506. package/dist/surface-eN_Jy2MJ.js.map +1 -0
  507. package/dist/surface.cjs +1 -2
  508. package/dist/surface.js +2 -6
  509. package/dist/surface.mixin-CIXgN6iw.cjs +297 -0
  510. package/dist/surface.mixin-CIXgN6iw.cjs.map +1 -0
  511. package/dist/surface.mixin-D9jv1sKG.js +320 -0
  512. package/dist/surface.mixin-D9jv1sKG.js.map +1 -0
  513. package/dist/table-C9rRQJEB.cjs +63 -0
  514. package/dist/table-C9rRQJEB.cjs.map +1 -0
  515. package/dist/table-Dg_tUGB_.js +631 -0
  516. package/dist/table-Dg_tUGB_.js.map +1 -0
  517. package/dist/table.cjs +1 -2
  518. package/dist/table.js +2 -6
  519. package/dist/tabs-BbFC9omR.js +125 -0
  520. package/dist/tabs-BbFC9omR.js.map +1 -0
  521. package/dist/tabs-soTL-x4G.cjs +31 -0
  522. package/dist/tabs-soTL-x4G.cjs.map +1 -0
  523. package/dist/tabs.cjs +1 -2
  524. package/dist/tabs.js +1 -2
  525. package/dist/tailwind.mixin-BIVhjNvD.js +225 -0
  526. package/dist/tailwind.mixin-BIVhjNvD.js.map +1 -0
  527. package/dist/tailwind.mixin-DSuEu-y3.cjs +2 -0
  528. package/dist/tailwind.mixin-DSuEu-y3.cjs.map +1 -0
  529. package/dist/teleport.cjs +1 -2
  530. package/dist/teleport.js +2 -8
  531. package/dist/textarea-DaRUJ0ri.cjs +35 -0
  532. package/dist/textarea-DaRUJ0ri.cjs.map +1 -0
  533. package/dist/textarea-hChvHbNM.js +195 -0
  534. package/dist/textarea-hChvHbNM.js.map +1 -0
  535. package/dist/textarea.cjs +1 -2
  536. package/dist/textarea.js +1 -2
  537. package/dist/theme-B0M8Hlyo.js +4121 -0
  538. package/dist/theme-B0M8Hlyo.js.map +1 -0
  539. package/dist/theme-ZYH2MqX9.cjs +181 -0
  540. package/dist/theme-ZYH2MqX9.cjs.map +1 -0
  541. package/dist/theme-button-BtlX_Zgd.js +19 -0
  542. package/dist/theme-button-BtlX_Zgd.js.map +1 -0
  543. package/dist/theme-button-Dvqg-rE_.cjs +8 -0
  544. package/dist/theme-button-Dvqg-rE_.cjs.map +1 -0
  545. package/dist/theme-button.cjs +1 -2
  546. package/dist/theme-button.js +1 -2
  547. package/dist/theme.cjs +1 -2
  548. package/dist/theme.events-Cv7N4Toe.js +2 -0
  549. package/dist/theme.events-Cv7N4Toe.js.map +1 -0
  550. package/dist/theme.events-DM4H5F2d.cjs +1 -0
  551. package/dist/theme.events-DM4H5F2d.cjs.map +1 -0
  552. package/dist/theme.interface-CXloMUCw.js +276 -0
  553. package/dist/theme.interface-CXloMUCw.js.map +1 -0
  554. package/dist/theme.interface-Da23QAYb.cjs +1 -0
  555. package/dist/theme.interface-Da23QAYb.cjs.map +1 -0
  556. package/dist/theme.js +6 -21
  557. package/dist/theme.service-C_tjlqgy.cjs +1 -0
  558. package/dist/theme.service-C_tjlqgy.cjs.map +1 -0
  559. package/dist/theme.service-D9lEas89.js +108 -0
  560. package/dist/theme.service-D9lEas89.js.map +1 -0
  561. package/dist/tooltip.cjs +6 -2
  562. package/dist/tooltip.cjs.map +1 -1
  563. package/dist/tooltip.js +200 -5
  564. package/dist/tooltip.js.map +1 -1
  565. package/dist/tree.cjs +26 -2
  566. package/dist/tree.cjs.map +1 -1
  567. package/dist/tree.js +64 -4
  568. package/dist/tree.js.map +1 -1
  569. package/dist/tslib.es6-D7BIeDVB.cjs +1 -0
  570. package/dist/tslib.es6-D7BIeDVB.cjs.map +1 -0
  571. package/dist/tslib.es6-ErZEp3OO.js +7 -0
  572. package/dist/tslib.es6-ErZEp3OO.js.map +1 -0
  573. package/dist/types.cjs +1 -2
  574. package/dist/types.cjs.map +1 -1
  575. package/dist/types.js +4 -5
  576. package/dist/types.js.map +1 -1
  577. package/dist/typewriter-CCel8Nta.js +700 -0
  578. package/dist/typewriter-CCel8Nta.js.map +1 -0
  579. package/dist/typewriter-Cf9f2bdx.cjs +123 -0
  580. package/dist/typewriter-Cf9f2bdx.cjs.map +1 -0
  581. package/dist/typewriter.cjs +1 -2
  582. package/dist/typewriter.js +2 -5
  583. package/dist/typography.cjs +282 -2
  584. package/dist/typography.cjs.map +1 -1
  585. package/dist/typography.js +353 -4
  586. package/dist/typography.js.map +1 -1
  587. package/dist/utils-BcaKtQuA.cjs +1 -0
  588. package/dist/utils-BcaKtQuA.cjs.map +1 -0
  589. package/dist/utils-CoU7M2YS.js +259 -0
  590. package/dist/utils-CoU7M2YS.js.map +1 -0
  591. package/dist/utils.cjs +1 -2
  592. package/dist/utils.js +6 -9
  593. package/dist/window-B9_14c12.cjs +59 -0
  594. package/dist/window-B9_14c12.cjs.map +1 -0
  595. package/dist/window-CbgdwOZD.js +548 -0
  596. package/dist/window-CbgdwOZD.js.map +1 -0
  597. package/dist/window.cjs +1 -0
  598. package/dist/window.js +2 -0
  599. package/mixins/baseElement.ts +118 -1
  600. package/mixins/discovery.service.ts +162 -1
  601. package/mixins/formField.mixin.ts +13 -8
  602. package/mixins/index.ts +2 -0
  603. package/mixins/surface.mixin.ts +93 -0
  604. package/mixins/tailwind.css +331 -14
  605. package/package.json +32 -28
  606. package/src/CLAUDE.md +428 -0
  607. package/src/area/.excalidraw +357 -0
  608. package/src/area/area.component.ts +449 -0
  609. package/src/area/area.service.test.ts +1007 -0
  610. package/src/area/area.service.ts +748 -0
  611. package/src/area/ecrypt.ts +7 -0
  612. package/src/area/index.ts +7 -0
  613. package/src/area/lazy.ts +83 -0
  614. package/src/area/readme.md +338 -0
  615. package/src/area/route.component.ts +79 -0
  616. package/src/area/router-guide.md +360 -0
  617. package/src/area/router.types.ts +101 -0
  618. package/src/area/utils.ts +354 -0
  619. package/src/audio/emotional-sounds.ts +940 -0
  620. package/src/audio/index.ts +53 -0
  621. package/src/audio/sound.service.ts +1079 -0
  622. package/src/autocomplete/README.md +485 -0
  623. package/src/autocomplete/autocomplete.scss +24 -0
  624. package/src/autocomplete/autocomplete.ts +733 -0
  625. package/src/autocomplete/index.ts +1 -0
  626. package/src/avatar.ts +164 -0
  627. package/src/badge/badge.ts +286 -0
  628. package/src/badge/index.ts +1 -0
  629. package/src/boat/boat.ts +664 -0
  630. package/src/boat/index.ts +1 -0
  631. package/src/busy/busy.ts +39 -0
  632. package/src/busy/index.ts +2 -0
  633. package/src/busy/spinner.ts +165 -0
  634. package/src/button/button.ts +382 -0
  635. package/src/button/icon-button.ts +287 -0
  636. package/src/button/index.ts +2 -0
  637. package/src/card/actions.ts +28 -0
  638. package/src/card/card.ts +319 -0
  639. package/src/card/content.ts +24 -0
  640. package/src/card/index.ts +4 -0
  641. package/src/card/media.ts +77 -0
  642. package/src/charts/area-chart.ts +495 -0
  643. package/src/charts/index.ts +4 -0
  644. package/src/charts/pills.ts +350 -0
  645. package/src/charts/types.ts +66 -0
  646. package/src/charts/utils.ts +65 -0
  647. package/src/checkbox/checkbox.ts +122 -0
  648. package/src/checkbox/index.ts +1 -0
  649. package/src/chips/assist-chip.ts +261 -0
  650. package/src/chips/chips.ts +259 -0
  651. package/src/chips/filter-chip.ts +255 -0
  652. package/src/chips/index.ts +5 -0
  653. package/src/chips/input-chip.ts +408 -0
  654. package/src/chips/suggestion-chip.ts +266 -0
  655. package/src/code-highlight/code-highlight.ts +344 -0
  656. package/src/code-highlight/code-preview.ts +123 -0
  657. package/src/code-highlight/index.ts +3 -0
  658. package/src/components/form-elements/index.ts +1 -0
  659. package/src/components/form-elements/payment-card-form.ts +331 -0
  660. package/src/components/index.ts +1 -0
  661. package/src/connectivity/connectivity-status.ts +153 -0
  662. package/src/connectivity/index.ts +1 -0
  663. package/src/content-drawer/context.ts +13 -0
  664. package/src/content-drawer/drawer.service.ts +148 -0
  665. package/src/content-drawer/drawer.ts +183 -0
  666. package/src/content-drawer/index.ts +5 -0
  667. package/src/content-drawer/main.ts +83 -0
  668. package/src/content-drawer/readme.md +709 -0
  669. package/src/content-drawer/sheet.ts +180 -0
  670. package/src/date-range/date-range-dialog.ts +230 -0
  671. package/src/date-range/date-range-helpers.ts +135 -0
  672. package/src/date-range/date-range-presets.ts +220 -0
  673. package/src/date-range/date-range.ts +530 -0
  674. package/src/date-range/date-utils.ts +58 -0
  675. package/src/date-range/index.ts +2 -0
  676. package/src/date-range-inline/date-range-inline.ts +522 -0
  677. package/src/date-range-inline/index.ts +2 -0
  678. package/src/delay/delay.ts +136 -0
  679. package/src/delay/index.ts +1 -0
  680. package/src/details/details.ts +429 -0
  681. package/src/details/index.ts +1 -0
  682. package/src/dialog/dialog-base.mixin.ts +565 -0
  683. package/src/dialog/dialog-events.ts +17 -0
  684. package/src/dialog/dialog-service.ts +482 -0
  685. package/src/dialog/dialog.component.ts +394 -0
  686. package/src/dialog/index.ts +3 -0
  687. package/src/directives/animate-text.ts +551 -0
  688. package/src/directives/color.ts +41 -0
  689. package/src/directives/confirm-click.ts +350 -0
  690. package/src/directives/cursor-glow.ts +142 -0
  691. package/src/directives/cycle-text.ts +496 -0
  692. package/src/directives/depth-of-field.ts +83 -0
  693. package/src/directives/drag.ts +370 -0
  694. package/src/directives/gravity.ts +117 -0
  695. package/src/directives/index.ts +19 -0
  696. package/src/directives/intersect.ts +204 -0
  697. package/src/directives/layout.ts +261 -0
  698. package/src/directives/liquid.ts +150 -0
  699. package/src/directives/living-border.ts +166 -0
  700. package/src/directives/long-press.ts +150 -0
  701. package/src/directives/magnetic.ts +133 -0
  702. package/src/directives/nebula.ts +773 -0
  703. package/src/directives/reduced-motion.ts +30 -0
  704. package/src/directives/reveal.ts +158 -0
  705. package/src/directives/ripple.ts +102 -0
  706. package/src/directives/typewriter.ts +349 -0
  707. package/src/discovery/discovery.service.ts +210 -0
  708. package/src/discovery/index.ts +1 -0
  709. package/src/divider/divider.ts +100 -0
  710. package/src/divider/index.ts +1 -0
  711. package/src/dropdown/dropdown-component.ts +264 -0
  712. package/src/dropdown/dropdown-content.ts +108 -0
  713. package/src/dropdown/index.ts +2 -0
  714. package/src/expand/expand-root.component.ts +278 -0
  715. package/src/expand/expand.component.ts +287 -0
  716. package/src/expand/index.ts +2 -0
  717. package/src/extra/countries/countries.data.ts +196 -0
  718. package/src/extra/countries/countries.ts +107 -0
  719. package/src/extra/countries/index.ts +2 -0
  720. package/src/extra/index.ts +2 -0
  721. package/src/extra/timezone/index.ts +2 -0
  722. package/src/extra/timezone/timezone.ts +116 -0
  723. package/src/extra/timezone/timezones.data.ts +2546 -0
  724. package/src/float/float.ts +18 -0
  725. package/src/float/index.ts +1 -0
  726. package/src/form/form-v2.ts +268 -0
  727. package/src/form/form.ts +194 -0
  728. package/src/form/index.ts +2 -0
  729. package/src/icons/icon.ts +293 -0
  730. package/src/icons/index.ts +1 -0
  731. package/src/icons/readme.md +37 -0
  732. package/src/iframe/iframe.ts +98 -0
  733. package/src/iframe/index.ts +1 -0
  734. package/src/index.ts +69 -0
  735. package/src/input/index.ts +8 -0
  736. package/src/input/input.scss +211 -0
  737. package/src/input/input.ts +951 -0
  738. package/src/json/index.ts +1 -0
  739. package/src/json/json.ts +55 -0
  740. package/src/layout/flex/flex.scss +4 -0
  741. package/src/layout/flex/flex.ts +74 -0
  742. package/src/layout/flex/index.ts +1 -0
  743. package/src/layout/grid/.readme +79 -0
  744. package/src/layout/grid/grid.scss +5 -0
  745. package/src/layout/grid/grid.ts +121 -0
  746. package/src/layout/grid/index.ts +1 -0
  747. package/src/layout/index.ts +5 -0
  748. package/src/layout/layout.ts +122 -0
  749. package/src/layout/scroll/index.ts +1 -0
  750. package/src/layout/scroll/scroll.ts +351 -0
  751. package/src/layout/v2/flex.ts +243 -0
  752. package/src/layout/v2/grid.ts +93 -0
  753. package/src/layout/v2/index.ts +1 -0
  754. package/src/lightbox/flip-directive.ts +270 -0
  755. package/src/lightbox/index.ts +4 -0
  756. package/src/lightbox/lightbox-service.ts +378 -0
  757. package/src/lightbox/lightbox.directive.ts +256 -0
  758. package/src/lightbox/lightbox.ts +417 -0
  759. package/src/list/context.ts +3 -0
  760. package/src/list/index.ts +3 -0
  761. package/src/list/list-item.ts +94 -0
  762. package/src/list/list.ts +87 -0
  763. package/src/list/readme.md +62 -0
  764. package/src/mailbox/README.md +131 -0
  765. package/src/mailbox/email-editor.ts +1071 -0
  766. package/src/mailbox/email-layout-selector.ts +58 -0
  767. package/src/mailbox/email-recipients.ts +594 -0
  768. package/src/mailbox/email-template-picker.ts +296 -0
  769. package/src/mailbox/email-viewer.ts +715 -0
  770. package/src/mailbox/index.ts +31 -0
  771. package/src/mailbox/mailbox.ts +363 -0
  772. package/src/mailbox/types.ts +181 -0
  773. package/src/map/index.ts +1 -0
  774. package/src/map/map.ts +483 -0
  775. package/src/menu/index.ts +2 -0
  776. package/src/menu/menu-item.ts +26 -0
  777. package/src/menu/menu.ts +83 -0
  778. package/src/nav-drawer/$navbar.ts +51 -0
  779. package/src/nav-drawer/appbar.ts +26 -0
  780. package/src/nav-drawer/content.ts +32 -0
  781. package/src/nav-drawer/context.ts +6 -0
  782. package/src/nav-drawer/drawer.ts +128 -0
  783. package/src/nav-drawer/index.ts +6 -0
  784. package/src/nav-drawer/navbar.ts +191 -0
  785. package/src/navigation-bar/index.ts +2 -0
  786. package/src/navigation-bar/navigation-bar-item.ts +417 -0
  787. package/src/navigation-bar/navigation-bar.ts +482 -0
  788. package/src/navigation-rail/index.ts +2 -0
  789. package/src/navigation-rail/navigation-rail-item.ts +443 -0
  790. package/src/navigation-rail/navigation-rail.ts +492 -0
  791. package/src/notification/index.ts +6 -0
  792. package/src/notification/notification-service.ts +324 -0
  793. package/src/notification/notification.scss +117 -0
  794. package/src/notification/notification.ts +263 -0
  795. package/src/notification/notify.ts +207 -0
  796. package/src/notification/outlet.ts +16 -0
  797. package/src/option/index.ts +1 -0
  798. package/src/option/option.ts +180 -0
  799. package/src/page/index.ts +1 -0
  800. package/src/page/page.ts +135 -0
  801. package/src/progress/index.ts +1 -0
  802. package/src/progress/progress.ts +143 -0
  803. package/src/qr-scanner/index.ts +1 -0
  804. package/src/qr-scanner/qr-scanner.ts +240 -0
  805. package/src/radio-group/index.ts +2 -0
  806. package/src/radio-group/radio-button.ts +81 -0
  807. package/src/radio-group/radio-group.scss +4 -0
  808. package/src/radio-group/radio-group.ts +110 -0
  809. package/src/radio-group/readme.md +315 -0
  810. package/src/range/index.ts +1 -0
  811. package/src/range/range.ts +102 -0
  812. package/src/rxjs-utils/index.ts +6 -0
  813. package/src/rxjs-utils/mutation-observer.ts +22 -0
  814. package/src/rxjs-utils/waitForElement.ts +33 -0
  815. package/src/rxjs-utils/waitForElementAll.ts +34 -0
  816. package/src/rxjs-utils/waitForElements.ts +40 -0
  817. package/src/rxjs-utils/waitForElementsAll.ts +42 -0
  818. package/src/rxjs-utils/waitUntil.ts +16 -0
  819. package/src/select/README.md +405 -0
  820. package/src/select/index.ts +2 -0
  821. package/src/select/select.ts +766 -0
  822. package/src/sheet/hook.ts +40 -0
  823. package/src/sheet/index.ts +2 -0
  824. package/src/sheet/sheet.service.ts +235 -0
  825. package/src/sheet/sheet.ts +236 -0
  826. package/src/slider/index.ts +2 -0
  827. package/src/slider/slide.ts +107 -0
  828. package/src/slider/slider.ts +164 -0
  829. package/src/steps/index.ts +3 -0
  830. package/src/steps/schmancy-step.ts +213 -0
  831. package/src/steps/schmancy-steps-container.ts +109 -0
  832. package/src/steps/steps.context.ts +23 -0
  833. package/src/store/context-array.ts +358 -0
  834. package/src/store/context-collection.ts +218 -0
  835. package/src/store/context-create.ts +284 -0
  836. package/src/store/context-object.ts +298 -0
  837. package/src/store/filter-directive.ts +614 -0
  838. package/src/store/immer-integration.ts +99 -0
  839. package/src/store/index.ts +10 -0
  840. package/src/store/selector-hook.ts +259 -0
  841. package/src/store/selectors.ts +289 -0
  842. package/src/store/storage-manager.ts +269 -0
  843. package/src/store/store.class.ts +239 -0
  844. package/src/store/types.ts +327 -0
  845. package/src/surface/context.ts +3 -0
  846. package/src/surface/index.ts +1 -0
  847. package/src/surface/surface.styles.ts +334 -0
  848. package/src/surface/surface.ts +59 -0
  849. package/src/table/index.ts +2 -0
  850. package/src/table/row.ts +60 -0
  851. package/src/table/table.ts +266 -0
  852. package/src/tabs/Readme.md +397 -0
  853. package/src/tabs/context.ts +5 -0
  854. package/src/tabs/index.ts +4 -0
  855. package/src/tabs/tab.ts +39 -0
  856. package/src/tabs/tabs-compatibility.ts +20 -0
  857. package/src/tabs/tabs-group.ts +184 -0
  858. package/src/teleport/.excalidraw +2511 -0
  859. package/src/teleport/index.ts +2 -0
  860. package/src/teleport/readme.md +91 -0
  861. package/src/teleport/teleport.component.ts +132 -0
  862. package/src/teleport/teleport.service.ts +139 -0
  863. package/src/teleport/watcher.ts +20 -0
  864. package/src/textarea/index.ts +1 -0
  865. package/src/textarea/textarea.scss +54 -0
  866. package/src/textarea/textarea.ts +432 -0
  867. package/src/theme/context.ts +28 -0
  868. package/src/theme/index.ts +17 -0
  869. package/src/theme/theme-audio-player.ts +470 -0
  870. package/src/theme/theme-controller-boat.ts +49 -0
  871. package/src/theme/theme-controller-example.md +152 -0
  872. package/src/theme/theme-controller.ts +205 -0
  873. package/src/theme/theme.component.ts +305 -0
  874. package/src/theme/theme.events.ts +59 -0
  875. package/src/theme/theme.format.ts +417 -0
  876. package/src/theme/theme.interface.ts +399 -0
  877. package/src/theme/theme.service.ts +520 -0
  878. package/src/theme/theme.style.css +619 -0
  879. package/src/theme-button/index.ts +1 -0
  880. package/src/theme-button/theme-button.ts +35 -0
  881. package/src/tooltip/index.ts +2 -0
  882. package/src/tooltip/tooltip.directive.ts +277 -0
  883. package/src/tooltip/tooltip.ts +216 -0
  884. package/src/tree/README.md +59 -0
  885. package/src/tree/index.ts +1 -0
  886. package/src/tree/tree.ts +132 -0
  887. package/src/types/events.ts +5 -0
  888. package/src/types/index.ts +3 -0
  889. package/src/types/mood-audio.types.ts +220 -0
  890. package/src/types/surface.ts +52 -0
  891. package/src/typewriter/IMPROVEMENTS.md +174 -0
  892. package/src/typewriter/QUICK_REFERENCE.md +166 -0
  893. package/src/typewriter/index.ts +1 -0
  894. package/src/typewriter/test-typewriter.html +97 -0
  895. package/src/typewriter/typewriter.ts +376 -0
  896. package/src/typography/index.ts +1 -0
  897. package/src/typography/typography.ts +448 -0
  898. package/src/utils/animation.ts +418 -0
  899. package/src/utils/hashContent.ts +12 -0
  900. package/src/utils/index.ts +6 -0
  901. package/src/utils/intersection.ts +22 -0
  902. package/src/utils/number.ts +529 -0
  903. package/src/utils/overlay-stack.ts +101 -0
  904. package/src/utils/search.ts +322 -0
  905. package/src/vite-env.d.ts +2 -0
  906. package/src/window/index.ts +10 -0
  907. package/src/window/window-manager.ts +204 -0
  908. package/src/window/window-position.ts +136 -0
  909. package/src/window/window-registry.ts +34 -0
  910. package/src/window/window.ts +724 -0
  911. package/types/mixins/baseElement.d.ts +12 -0
  912. package/types/mixins/discovery.service.d.ts +72 -0
  913. package/types/mixins/index.d.ts +2 -0
  914. package/types/mixins/surface.mixin.d.ts +39 -0
  915. package/types/src/area/area.service.d.ts +2 -0
  916. package/types/src/badge/badge.d.ts +1 -1
  917. package/types/src/boat/boat.d.ts +40 -33
  918. package/types/src/button/icon-button.d.ts +10 -0
  919. package/types/src/chips/filter-chip.d.ts +0 -12
  920. package/types/src/connectivity/connectivity-status.d.ts +25 -0
  921. package/types/src/connectivity/index.d.ts +1 -0
  922. package/types/src/content-drawer/drawer.service.d.ts +3 -0
  923. package/types/src/date-range/date-range.d.ts +2 -0
  924. package/types/src/details/details.d.ts +26 -2
  925. package/types/src/dialog/dialog-base.mixin.d.ts +7 -3
  926. package/types/src/dialog/dialog-service.d.ts +27 -1
  927. package/types/src/dialog/dialog.component.d.ts +35 -1
  928. package/types/src/directives/animate-text.d.ts +67 -0
  929. package/types/src/directives/color.d.ts +2 -3
  930. package/types/src/directives/confirm-click.d.ts +38 -0
  931. package/types/src/directives/cursor-glow.d.ts +38 -0
  932. package/types/src/directives/cycle-text.d.ts +44 -0
  933. package/types/src/directives/depth-of-field.d.ts +38 -0
  934. package/types/src/directives/drag.d.ts +8 -8
  935. package/types/src/directives/gravity.d.ts +40 -0
  936. package/types/src/directives/index.d.ts +16 -2
  937. package/types/src/directives/intersect.d.ts +60 -0
  938. package/types/src/directives/layout.d.ts +62 -0
  939. package/types/src/directives/liquid.d.ts +38 -0
  940. package/types/src/directives/living-border.d.ts +39 -0
  941. package/types/src/directives/long-press.d.ts +38 -0
  942. package/types/src/directives/magnetic.d.ts +35 -0
  943. package/types/src/directives/nebula.d.ts +80 -0
  944. package/types/src/directives/reduced-motion.d.ts +2 -0
  945. package/types/src/directives/reveal.d.ts +54 -0
  946. package/types/src/directives/ripple.d.ts +15 -5
  947. package/types/src/directives/typewriter.d.ts +50 -0
  948. package/types/src/discovery/discovery.service.d.ts +72 -0
  949. package/types/src/expand/expand-root.component.d.ts +30 -0
  950. package/types/src/expand/expand.component.d.ts +38 -0
  951. package/types/src/expand/index.d.ts +2 -0
  952. package/types/src/float/float.d.ts +14 -0
  953. package/types/src/float/index.d.ts +1 -0
  954. package/types/src/icons/icon.d.ts +14 -0
  955. package/types/src/iframe/iframe.d.ts +37 -0
  956. package/types/src/iframe/index.d.ts +1 -0
  957. package/types/src/index.d.ts +6 -1
  958. package/types/src/input/index.d.ts +1 -1
  959. package/types/src/layout/scroll/scroll.d.ts +11 -0
  960. package/types/src/lightbox/lightbox.d.ts +1 -0
  961. package/types/src/mailbox/email-recipients.d.ts +2 -2
  962. package/types/src/mailbox/types.d.ts +1 -1
  963. package/types/src/navigation-bar/navigation-bar.d.ts +17 -0
  964. package/types/src/notification/notification.d.ts +1 -0
  965. package/types/src/page/page.d.ts +6 -0
  966. package/types/src/range/index.d.ts +1 -0
  967. package/types/src/range/range.d.ts +25 -0
  968. package/types/src/sheet/sheet.d.ts +0 -1
  969. package/types/src/steps/schmancy-steps-container.d.ts +8 -6
  970. package/types/src/surface/surface.d.ts +4 -27
  971. package/types/src/surface/surface.styles.d.ts +31 -0
  972. package/types/src/tabs/tab.d.ts +1 -0
  973. package/types/src/textarea/textarea.d.ts +3 -2
  974. package/types/src/theme/context.d.ts +2 -282
  975. package/types/src/theme/theme.component.d.ts +9 -1
  976. package/types/src/theme/theme.format.d.ts +1 -1
  977. package/types/src/theme/theme.interface.d.ts +8 -1
  978. package/types/src/theme/theme.service.d.ts +20 -282
  979. package/types/src/types/surface.d.ts +27 -1
  980. package/types/src/typography/typography.d.ts +17 -3
  981. package/types/src/utils/animation.d.ts +254 -0
  982. package/types/src/utils/index.d.ts +2 -0
  983. package/types/src/utils/number.d.ts +18 -2
  984. package/types/src/utils/overlay-stack.d.ts +54 -0
  985. package/types/src/window/index.d.ts +3 -0
  986. package/types/src/window/window-manager.d.ts +49 -0
  987. package/types/src/window/window-position.d.ts +64 -0
  988. package/types/src/window/window-registry.d.ts +28 -0
  989. package/types/src/window/window.d.ts +67 -0
  990. package/ai/animated-text.md +0 -116
  991. package/ai/component-relationships.md +0 -93
  992. package/ai/context.md +0 -572
  993. package/ai/countries.md +0 -271
  994. package/ai/index.md +0 -112
  995. package/ai/navigation-bar-item.md +0 -259
  996. package/ai/payment-card-form.md +0 -242
  997. package/ai/spinner.md +0 -165
  998. package/ai/template.md +0 -144
  999. package/ai/timezone.md +0 -276
  1000. package/dist/_commonjsHelpers-Dw9sPFZy.js +0 -7
  1001. package/dist/_commonjsHelpers-Dw9sPFZy.js.map +0 -1
  1002. package/dist/_commonjsHelpers-k2hpEU-q.cjs +0 -2
  1003. package/dist/_commonjsHelpers-k2hpEU-q.cjs.map +0 -1
  1004. package/dist/ai/animated-text.md +0 -116
  1005. package/dist/ai/component-relationships.md +0 -93
  1006. package/dist/ai/context.md +0 -572
  1007. package/dist/ai/countries.md +0 -271
  1008. package/dist/ai/index.md +0 -112
  1009. package/dist/ai/navigation-bar-item.md +0 -259
  1010. package/dist/ai/payment-card-form.md +0 -242
  1011. package/dist/ai/spinner.md +0 -165
  1012. package/dist/ai/template.md +0 -144
  1013. package/dist/ai/timezone.md +0 -276
  1014. package/dist/animated-text-B3DQRJBy.cjs +0 -37
  1015. package/dist/animated-text-B3DQRJBy.cjs.map +0 -1
  1016. package/dist/animated-text-BAj4-6hE.js +0 -76
  1017. package/dist/animated-text-BAj4-6hE.js.map +0 -1
  1018. package/dist/animated-text.cjs +0 -2
  1019. package/dist/animated-text.cjs.map +0 -1
  1020. package/dist/animated-text.js +0 -2
  1021. package/dist/animated-text.js.map +0 -1
  1022. package/dist/area.cjs.map +0 -1
  1023. package/dist/area.component-CP4DZ0d8.js +0 -330
  1024. package/dist/area.component-CP4DZ0d8.js.map +0 -1
  1025. package/dist/area.component-ChxSLt16.cjs +0 -12
  1026. package/dist/area.component-ChxSLt16.cjs.map +0 -1
  1027. package/dist/area.js.map +0 -1
  1028. package/dist/audio.cjs.map +0 -1
  1029. package/dist/audio.js.map +0 -1
  1030. package/dist/autocomplete-CAaVSg4g.cjs +0 -112
  1031. package/dist/autocomplete-CAaVSg4g.cjs.map +0 -1
  1032. package/dist/autocomplete-CGbACUYd.js +0 -333
  1033. package/dist/autocomplete-CGbACUYd.js.map +0 -1
  1034. package/dist/autocomplete.cjs.map +0 -1
  1035. package/dist/autocomplete.js.map +0 -1
  1036. package/dist/avatar-nWOZXEsW.cjs +0 -273
  1037. package/dist/avatar-nWOZXEsW.cjs.map +0 -1
  1038. package/dist/avatar-rLCF6MSI.js +0 -895
  1039. package/dist/avatar-rLCF6MSI.js.map +0 -1
  1040. package/dist/badge.cjs.map +0 -1
  1041. package/dist/badge.js.map +0 -1
  1042. package/dist/boat-Ckt9v__d.js +0 -301
  1043. package/dist/boat-Ckt9v__d.js.map +0 -1
  1044. package/dist/boat-yNAZ2LLB.cjs +0 -97
  1045. package/dist/boat-yNAZ2LLB.cjs.map +0 -1
  1046. package/dist/boat.cjs.map +0 -1
  1047. package/dist/boat.js.map +0 -1
  1048. package/dist/busy.cjs.map +0 -1
  1049. package/dist/busy.js.map +0 -1
  1050. package/dist/card.cjs.map +0 -1
  1051. package/dist/card.js.map +0 -1
  1052. package/dist/checkbox-BnAlpsJN.cjs +0 -40
  1053. package/dist/checkbox-BnAlpsJN.cjs.map +0 -1
  1054. package/dist/checkbox-D22yfGe3.js +0 -526
  1055. package/dist/checkbox-D22yfGe3.js.map +0 -1
  1056. package/dist/checkbox.cjs.map +0 -1
  1057. package/dist/checkbox.js.map +0 -1
  1058. package/dist/chips.cjs.map +0 -1
  1059. package/dist/chips.js.map +0 -1
  1060. package/dist/code-highlight.cjs.map +0 -1
  1061. package/dist/code-highlight.js.map +0 -1
  1062. package/dist/code-preview-DPlQayFd.js +0 -967
  1063. package/dist/code-preview-DPlQayFd.js.map +0 -1
  1064. package/dist/code-preview-jPnX60FF.cjs +0 -193
  1065. package/dist/code-preview-jPnX60FF.cjs.map +0 -1
  1066. package/dist/components.cjs.map +0 -1
  1067. package/dist/components.js.map +0 -1
  1068. package/dist/consume-5D1qfVWM.js +0 -38
  1069. package/dist/consume-5D1qfVWM.js.map +0 -1
  1070. package/dist/consume-edta5ng5.cjs +0 -2
  1071. package/dist/consume-edta5ng5.cjs.map +0 -1
  1072. package/dist/content-drawer.cjs.map +0 -1
  1073. package/dist/content-drawer.js.map +0 -1
  1074. package/dist/context-create-B_S-sD5B.js +0 -1107
  1075. package/dist/context-create-B_S-sD5B.js.map +0 -1
  1076. package/dist/context-create-DTybDbZp.cjs +0 -2
  1077. package/dist/context-create-DTybDbZp.cjs.map +0 -1
  1078. package/dist/date-range-GFm5NG33.js +0 -639
  1079. package/dist/date-range-GFm5NG33.js.map +0 -1
  1080. package/dist/date-range-inline-CgX2o0FP.cjs +0 -44
  1081. package/dist/date-range-inline-CgX2o0FP.cjs.map +0 -1
  1082. package/dist/date-range-inline-DTQLESAZ.js +0 -197
  1083. package/dist/date-range-inline-DTQLESAZ.js.map +0 -1
  1084. package/dist/date-range-inline.cjs.map +0 -1
  1085. package/dist/date-range-inline.js.map +0 -1
  1086. package/dist/date-range-ug3B9CFT.cjs +0 -119
  1087. package/dist/date-range-ug3B9CFT.cjs.map +0 -1
  1088. package/dist/date-range.cjs.map +0 -1
  1089. package/dist/date-range.js.map +0 -1
  1090. package/dist/delay-CWtBL0VD.cjs +0 -10
  1091. package/dist/delay-CWtBL0VD.cjs.map +0 -1
  1092. package/dist/delay-DEe1CmHc.js +0 -288
  1093. package/dist/delay-DEe1CmHc.js.map +0 -1
  1094. package/dist/delay.cjs.map +0 -1
  1095. package/dist/delay.js.map +0 -1
  1096. package/dist/details-D-LXW23W.js +0 -100
  1097. package/dist/details-D-LXW23W.js.map +0 -1
  1098. package/dist/details-DVke77dU.cjs +0 -55
  1099. package/dist/details-DVke77dU.cjs.map +0 -1
  1100. package/dist/details.cjs.map +0 -1
  1101. package/dist/details.js.map +0 -1
  1102. package/dist/dialog-service-C86xTS8q.cjs +0 -2
  1103. package/dist/dialog-service-C86xTS8q.cjs.map +0 -1
  1104. package/dist/dialog-service-D9E3jLAR.js +0 -118
  1105. package/dist/dialog-service-D9E3jLAR.js.map +0 -1
  1106. package/dist/dialog.component-BM0D-hK9.cjs +0 -48
  1107. package/dist/dialog.component-BM0D-hK9.cjs.map +0 -1
  1108. package/dist/dialog.component-a7FlKhGD.js +0 -145
  1109. package/dist/dialog.component-a7FlKhGD.js.map +0 -1
  1110. package/dist/discovery.service-BbYjU5x8.js +0 -21
  1111. package/dist/discovery.service-BbYjU5x8.js.map +0 -1
  1112. package/dist/discovery.service-BpGCuXPd.cjs +0 -2
  1113. package/dist/discovery.service-BpGCuXPd.cjs.map +0 -1
  1114. package/dist/divider-CzTpxOqt.js +0 -84
  1115. package/dist/divider-CzTpxOqt.js.map +0 -1
  1116. package/dist/divider-D8KStUhN.cjs +0 -58
  1117. package/dist/divider-D8KStUhN.cjs.map +0 -1
  1118. package/dist/divider.cjs.map +0 -1
  1119. package/dist/divider.js.map +0 -1
  1120. package/dist/dropdown-content-CngZN3vv.cjs +0 -58
  1121. package/dist/dropdown-content-CngZN3vv.cjs.map +0 -1
  1122. package/dist/dropdown-content-DCn-g0-f.js +0 -147
  1123. package/dist/dropdown-content-DCn-g0-f.js.map +0 -1
  1124. package/dist/email-recipients-BhntMZMf.cjs +0 -1173
  1125. package/dist/email-recipients-BhntMZMf.cjs.map +0 -1
  1126. package/dist/email-recipients-BzjAKNJ0.js +0 -1733
  1127. package/dist/email-recipients-BzjAKNJ0.js.map +0 -1
  1128. package/dist/emotional-sounds-BRnFhww6.js +0 -234
  1129. package/dist/emotional-sounds-BRnFhww6.js.map +0 -1
  1130. package/dist/emotional-sounds-DVGhmoZf.cjs +0 -2
  1131. package/dist/emotional-sounds-DVGhmoZf.cjs.map +0 -1
  1132. package/dist/extra.cjs.map +0 -1
  1133. package/dist/extra.js.map +0 -1
  1134. package/dist/flex-5dR48zie.js +0 -183
  1135. package/dist/flex-5dR48zie.js.map +0 -1
  1136. package/dist/flex-oHl2EfYB.cjs +0 -18
  1137. package/dist/flex-oHl2EfYB.cjs.map +0 -1
  1138. package/dist/flow-D0e7hGXO.cjs +0 -2
  1139. package/dist/flow-D0e7hGXO.cjs.map +0 -1
  1140. package/dist/flow-DXYqC9OA.js +0 -340
  1141. package/dist/flow-DXYqC9OA.js.map +0 -1
  1142. package/dist/form-BlPiAPt7.cjs +0 -2
  1143. package/dist/form-BlPiAPt7.cjs.map +0 -1
  1144. package/dist/form-BxVM6JTn.js +0 -141
  1145. package/dist/form-BxVM6JTn.js.map +0 -1
  1146. package/dist/form.cjs.map +0 -1
  1147. package/dist/form.js.map +0 -1
  1148. package/dist/formField.mixin-BCGA7Ea3.js +0 -48
  1149. package/dist/formField.mixin-BCGA7Ea3.js.map +0 -1
  1150. package/dist/formField.mixin-BfJMifU9.cjs +0 -2
  1151. package/dist/formField.mixin-BfJMifU9.cjs.map +0 -1
  1152. package/dist/height-CfECBO2j.js +0 -44
  1153. package/dist/height-CfECBO2j.js.map +0 -1
  1154. package/dist/height-Z70qJYJK.cjs +0 -2
  1155. package/dist/height-Z70qJYJK.cjs.map +0 -1
  1156. package/dist/icon-DHEXr3c-.cjs +0 -49
  1157. package/dist/icon-DHEXr3c-.cjs.map +0 -1
  1158. package/dist/icon-DYpLoegR.js +0 -84
  1159. package/dist/icon-DYpLoegR.js.map +0 -1
  1160. package/dist/icon-button-CmZBLHWC.js +0 -164
  1161. package/dist/icon-button-CmZBLHWC.js.map +0 -1
  1162. package/dist/icon-button-IbSX8C98.cjs +0 -70
  1163. package/dist/icon-button-IbSX8C98.cjs.map +0 -1
  1164. package/dist/icons.cjs.map +0 -1
  1165. package/dist/icons.js.map +0 -1
  1166. package/dist/index-CCi1otmh.cjs +0 -2
  1167. package/dist/index-CCi1otmh.cjs.map +0 -1
  1168. package/dist/index-CW6PhEkx.js +0 -17
  1169. package/dist/index-CW6PhEkx.js.map +0 -1
  1170. package/dist/index.cjs.map +0 -1
  1171. package/dist/index.js.map +0 -1
  1172. package/dist/input-BByjYlgl.cjs +0 -51
  1173. package/dist/input-BByjYlgl.cjs.map +0 -1
  1174. package/dist/input-D0cQ9DOY.js +0 -237
  1175. package/dist/input-D0cQ9DOY.js.map +0 -1
  1176. package/dist/input-chip-B5ErXgCB.js +0 -206
  1177. package/dist/input-chip-B5ErXgCB.js.map +0 -1
  1178. package/dist/input-chip-DkWaTciP.cjs +0 -147
  1179. package/dist/input-chip-DkWaTciP.cjs.map +0 -1
  1180. package/dist/input.cjs.map +0 -1
  1181. package/dist/input.js.map +0 -1
  1182. package/dist/intersection-CJxzz8c-.js +0 -15
  1183. package/dist/intersection-CJxzz8c-.js.map +0 -1
  1184. package/dist/intersection-CVvaDv96.cjs +0 -2
  1185. package/dist/intersection-CVvaDv96.cjs.map +0 -1
  1186. package/dist/json-BZVe74np.cjs +0 -12
  1187. package/dist/json-BZVe74np.cjs.map +0 -1
  1188. package/dist/json-PKewOWuJ.js +0 -51
  1189. package/dist/json-PKewOWuJ.js.map +0 -1
  1190. package/dist/layout.cjs.map +0 -1
  1191. package/dist/layout.js.map +0 -1
  1192. package/dist/lightbox-service-D-0JtxB1.cjs +0 -202
  1193. package/dist/lightbox-service-D-0JtxB1.cjs.map +0 -1
  1194. package/dist/lightbox-service-DZMnb1eU.js +0 -458
  1195. package/dist/lightbox-service-DZMnb1eU.js.map +0 -1
  1196. package/dist/lightbox.cjs.map +0 -1
  1197. package/dist/lightbox.js.map +0 -1
  1198. package/dist/list-B_2m7l3g.cjs +0 -17
  1199. package/dist/list-B_2m7l3g.cjs.map +0 -1
  1200. package/dist/list-CW56LV-v.js +0 -69
  1201. package/dist/list-CW56LV-v.js.map +0 -1
  1202. package/dist/list.cjs.map +0 -1
  1203. package/dist/list.js.map +0 -1
  1204. package/dist/litElement.mixin-CrpeGpZ7.cjs +0 -2
  1205. package/dist/litElement.mixin-CrpeGpZ7.cjs.map +0 -1
  1206. package/dist/litElement.mixin-DHZXtvYq.js +0 -15
  1207. package/dist/litElement.mixin-DHZXtvYq.js.map +0 -1
  1208. package/dist/mailbox.cjs.map +0 -1
  1209. package/dist/mailbox.js.map +0 -1
  1210. package/dist/map-2Hl60a0A.js +0 -175
  1211. package/dist/map-2Hl60a0A.js.map +0 -1
  1212. package/dist/map-DyPS9G7M.cjs +0 -81
  1213. package/dist/map-DyPS9G7M.cjs.map +0 -1
  1214. package/dist/map.cjs.map +0 -1
  1215. package/dist/map.js.map +0 -1
  1216. package/dist/media-CS8HpKnK.cjs +0 -152
  1217. package/dist/media-CS8HpKnK.cjs.map +0 -1
  1218. package/dist/media-DtWbcRxL.js +0 -244
  1219. package/dist/media-DtWbcRxL.js.map +0 -1
  1220. package/dist/menu-Caju5-zd.js +0 -60
  1221. package/dist/menu-Caju5-zd.js.map +0 -1
  1222. package/dist/menu-rX5RPAI2.cjs +0 -24
  1223. package/dist/menu-rX5RPAI2.cjs.map +0 -1
  1224. package/dist/menu.cjs.map +0 -1
  1225. package/dist/menu.js.map +0 -1
  1226. package/dist/nav-drawer.cjs.map +0 -1
  1227. package/dist/nav-drawer.js.map +0 -1
  1228. package/dist/navigation-bar.cjs.map +0 -1
  1229. package/dist/navigation-bar.js.map +0 -1
  1230. package/dist/navigation-rail-Ctketq5a.js +0 -256
  1231. package/dist/navigation-rail-Ctketq5a.js.map +0 -1
  1232. package/dist/navigation-rail-DC9_oSIM.cjs +0 -79
  1233. package/dist/navigation-rail-DC9_oSIM.cjs.map +0 -1
  1234. package/dist/notification-service-CUlfXqmj.js +0 -155
  1235. package/dist/notification-service-CUlfXqmj.js.map +0 -1
  1236. package/dist/notification-service-DknbpqTt.cjs +0 -19
  1237. package/dist/notification-service-DknbpqTt.cjs.map +0 -1
  1238. package/dist/notification.cjs.map +0 -1
  1239. package/dist/notification.js.map +0 -1
  1240. package/dist/notify-DJSOWTxv.js +0 -35
  1241. package/dist/notify-DJSOWTxv.js.map +0 -1
  1242. package/dist/notify-DickIEHW.cjs +0 -2
  1243. package/dist/notify-DickIEHW.cjs.map +0 -1
  1244. package/dist/number-B7aCRYnH.cjs +0 -2
  1245. package/dist/number-B7aCRYnH.cjs.map +0 -1
  1246. package/dist/number-BhTiptLA.js +0 -99
  1247. package/dist/number-BhTiptLA.js.map +0 -1
  1248. package/dist/option-Bng41-rY.js +0 -77
  1249. package/dist/option-Bng41-rY.js.map +0 -1
  1250. package/dist/option-DYT5Rkgy.cjs +0 -44
  1251. package/dist/option-DYT5Rkgy.cjs.map +0 -1
  1252. package/dist/option.cjs.map +0 -1
  1253. package/dist/option.js.map +0 -1
  1254. package/dist/page-BLn9gtSd.cjs +0 -20
  1255. package/dist/page-BLn9gtSd.cjs.map +0 -1
  1256. package/dist/page-D-ROcQDd.js +0 -48
  1257. package/dist/page-D-ROcQDd.js.map +0 -1
  1258. package/dist/payment-card-form-5UtfWzoW.cjs +0 -74
  1259. package/dist/payment-card-form-5UtfWzoW.cjs.map +0 -1
  1260. package/dist/payment-card-form-BJa4RgF2.js +0 -515
  1261. package/dist/payment-card-form-BJa4RgF2.js.map +0 -1
  1262. package/dist/pills-BS5rZ6C3.js +0 -346
  1263. package/dist/pills-BS5rZ6C3.js.map +0 -1
  1264. package/dist/pills-Blf7IAeq.cjs +0 -113
  1265. package/dist/pills-Blf7IAeq.cjs.map +0 -1
  1266. package/dist/progress-DlhYniW_.cjs +0 -35
  1267. package/dist/progress-DlhYniW_.cjs.map +0 -1
  1268. package/dist/progress-yTIX6EqC.js +0 -56
  1269. package/dist/progress-yTIX6EqC.js.map +0 -1
  1270. package/dist/progress.cjs.map +0 -1
  1271. package/dist/progress.js.map +0 -1
  1272. package/dist/provide-BxZ2kn_p.cjs +0 -2
  1273. package/dist/provide-BxZ2kn_p.cjs.map +0 -1
  1274. package/dist/provide-tcktw8xB.js +0 -100
  1275. package/dist/provide-tcktw8xB.js.map +0 -1
  1276. package/dist/qr-scanner-DOs7uNS_.cjs +0 -29
  1277. package/dist/qr-scanner-DOs7uNS_.cjs.map +0 -1
  1278. package/dist/qr-scanner-DjZ8mgHV.js +0 -743
  1279. package/dist/qr-scanner-DjZ8mgHV.js.map +0 -1
  1280. package/dist/radio-button-N_PrrxKB.cjs +0 -41
  1281. package/dist/radio-button-N_PrrxKB.cjs.map +0 -1
  1282. package/dist/radio-button-me3SRHGu.js +0 -115
  1283. package/dist/radio-button-me3SRHGu.js.map +0 -1
  1284. package/dist/radio-group.cjs.map +0 -1
  1285. package/dist/radio-group.js.map +0 -1
  1286. package/dist/ripple-BgJXbNSP.js +0 -124
  1287. package/dist/ripple-BgJXbNSP.js.map +0 -1
  1288. package/dist/ripple-x6sTX02K.cjs +0 -16
  1289. package/dist/ripple-x6sTX02K.cjs.map +0 -1
  1290. package/dist/rxjs-utils.cjs.map +0 -1
  1291. package/dist/rxjs-utils.js.map +0 -1
  1292. package/dist/schmancy-steps-container-J6P-NNNj.js +0 -156
  1293. package/dist/schmancy-steps-container-J6P-NNNj.js.map +0 -1
  1294. package/dist/schmancy-steps-container-T57BKMzi.cjs +0 -70
  1295. package/dist/schmancy-steps-container-T57BKMzi.cjs.map +0 -1
  1296. package/dist/scroll-C_gfUgjn.js +0 -87
  1297. package/dist/scroll-C_gfUgjn.js.map +0 -1
  1298. package/dist/scroll-CecsowP7.cjs +0 -27
  1299. package/dist/scroll-CecsowP7.cjs.map +0 -1
  1300. package/dist/search-B1s7thB0.cjs +0 -2
  1301. package/dist/search-B1s7thB0.cjs.map +0 -1
  1302. package/dist/search-DxxnLa5u.js +0 -95
  1303. package/dist/search-DxxnLa5u.js.map +0 -1
  1304. package/dist/select-BBA0gBHf.js +0 -280
  1305. package/dist/select-BBA0gBHf.js.map +0 -1
  1306. package/dist/select-D9oCjv7N.cjs +0 -57
  1307. package/dist/select-D9oCjv7N.cjs.map +0 -1
  1308. package/dist/select.cjs.map +0 -1
  1309. package/dist/select.js.map +0 -1
  1310. package/dist/selector-hook-9w2auh2O.cjs +0 -2
  1311. package/dist/selector-hook-9w2auh2O.cjs.map +0 -1
  1312. package/dist/selector-hook-CHV4kDMd.js +0 -319
  1313. package/dist/selector-hook-CHV4kDMd.js.map +0 -1
  1314. package/dist/sheet-0oUfBmXX.cjs +0 -15
  1315. package/dist/sheet-0oUfBmXX.cjs.map +0 -1
  1316. package/dist/sheet-CNcDT3VP.js +0 -97
  1317. package/dist/sheet-CNcDT3VP.js.map +0 -1
  1318. package/dist/sheet.cjs.map +0 -1
  1319. package/dist/sheet.js.map +0 -1
  1320. package/dist/sheet.service-2MobB-9z.js +0 -68
  1321. package/dist/sheet.service-2MobB-9z.js.map +0 -1
  1322. package/dist/sheet.service-su_7yDQ-.cjs +0 -2
  1323. package/dist/sheet.service-su_7yDQ-.cjs.map +0 -1
  1324. package/dist/slider-CV-Ehp_5.cjs +0 -83
  1325. package/dist/slider-CV-Ehp_5.cjs.map +0 -1
  1326. package/dist/slider-CkE-iFUy.js +0 -161
  1327. package/dist/slider-CkE-iFUy.js.map +0 -1
  1328. package/dist/sound.service-Nza4c6wv.js +0 -102
  1329. package/dist/sound.service-Nza4c6wv.js.map +0 -1
  1330. package/dist/sound.service-eRirZw59.cjs +0 -2
  1331. package/dist/sound.service-eRirZw59.cjs.map +0 -1
  1332. package/dist/spinner-Bfn8KC-9.cjs +0 -135
  1333. package/dist/spinner-Bfn8KC-9.cjs.map +0 -1
  1334. package/dist/spinner-DiMbWXp9.js +0 -168
  1335. package/dist/spinner-DiMbWXp9.js.map +0 -1
  1336. package/dist/store.cjs.map +0 -1
  1337. package/dist/store.js.map +0 -1
  1338. package/dist/suggestion-chip-CEDqUNoS.js +0 -481
  1339. package/dist/suggestion-chip-CEDqUNoS.js.map +0 -1
  1340. package/dist/suggestion-chip-HhsLtZXR.cjs +0 -271
  1341. package/dist/suggestion-chip-HhsLtZXR.cjs.map +0 -1
  1342. package/dist/surface-CW3H23Va.cjs +0 -199
  1343. package/dist/surface-CW3H23Va.cjs.map +0 -1
  1344. package/dist/surface-eBfnSwQS.js +0 -220
  1345. package/dist/surface-eBfnSwQS.js.map +0 -1
  1346. package/dist/surface.cjs.map +0 -1
  1347. package/dist/surface.js.map +0 -1
  1348. package/dist/table-D0tiSL_u.cjs +0 -64
  1349. package/dist/table-D0tiSL_u.cjs.map +0 -1
  1350. package/dist/table-Dmo4TvTx.js +0 -561
  1351. package/dist/table-Dmo4TvTx.js.map +0 -1
  1352. package/dist/table.cjs.map +0 -1
  1353. package/dist/table.js.map +0 -1
  1354. package/dist/tabs-compatibility-Bit6y6en.js +0 -104
  1355. package/dist/tabs-compatibility-Bit6y6en.js.map +0 -1
  1356. package/dist/tabs-compatibility-Vq_2-ekz.cjs +0 -35
  1357. package/dist/tabs-compatibility-Vq_2-ekz.cjs.map +0 -1
  1358. package/dist/tabs.cjs.map +0 -1
  1359. package/dist/tabs.js.map +0 -1
  1360. package/dist/tailwind.mixin-Bp_PR6yc.js +0 -67
  1361. package/dist/tailwind.mixin-Bp_PR6yc.js.map +0 -1
  1362. package/dist/tailwind.mixin-Cp4PyXok.cjs +0 -2
  1363. package/dist/tailwind.mixin-Cp4PyXok.cjs.map +0 -1
  1364. package/dist/teleport.cjs.map +0 -1
  1365. package/dist/teleport.js.map +0 -1
  1366. package/dist/textarea-B1d1QCqT.js +0 -134
  1367. package/dist/textarea-B1d1QCqT.js.map +0 -1
  1368. package/dist/textarea-DG8CHhZA.cjs +0 -44
  1369. package/dist/textarea-DG8CHhZA.cjs.map +0 -1
  1370. package/dist/textarea.cjs.map +0 -1
  1371. package/dist/textarea.js.map +0 -1
  1372. package/dist/theme-button-CPL6Eaqd.cjs +0 -9
  1373. package/dist/theme-button-CPL6Eaqd.cjs.map +0 -1
  1374. package/dist/theme-button-CrLuMQNe.js +0 -27
  1375. package/dist/theme-button-CrLuMQNe.js.map +0 -1
  1376. package/dist/theme-button.cjs.map +0 -1
  1377. package/dist/theme-button.js.map +0 -1
  1378. package/dist/theme-controller-boat-CXbNJSI3.cjs +0 -178
  1379. package/dist/theme-controller-boat-CXbNJSI3.cjs.map +0 -1
  1380. package/dist/theme-controller-boat-CzSmjyKq.js +0 -1159
  1381. package/dist/theme-controller-boat-CzSmjyKq.js.map +0 -1
  1382. package/dist/theme.cjs.map +0 -1
  1383. package/dist/theme.events-CPSLaOlR.js +0 -6
  1384. package/dist/theme.events-CPSLaOlR.js.map +0 -1
  1385. package/dist/theme.events-Car6U_SQ.cjs +0 -2
  1386. package/dist/theme.events-Car6U_SQ.cjs.map +0 -1
  1387. package/dist/theme.interface-BLfE5J_1.js +0 -5
  1388. package/dist/theme.interface-BLfE5J_1.js.map +0 -1
  1389. package/dist/theme.interface-BMeNadVb.cjs +0 -2
  1390. package/dist/theme.interface-BMeNadVb.cjs.map +0 -1
  1391. package/dist/theme.js.map +0 -1
  1392. package/dist/timezone-4vwX0BgA.js +0 -112
  1393. package/dist/timezone-4vwX0BgA.js.map +0 -1
  1394. package/dist/timezone-BxvQcqe1.cjs +0 -32
  1395. package/dist/timezone-BxvQcqe1.cjs.map +0 -1
  1396. package/dist/tooltip-CjdvBf4X.js +0 -119
  1397. package/dist/tooltip-CjdvBf4X.js.map +0 -1
  1398. package/dist/tooltip-ZtnGjoJd.cjs +0 -7
  1399. package/dist/tooltip-ZtnGjoJd.cjs.map +0 -1
  1400. package/dist/tree-CBEjV7jP.js +0 -65
  1401. package/dist/tree-CBEjV7jP.js.map +0 -1
  1402. package/dist/tree-DP5U00NA.cjs +0 -27
  1403. package/dist/tree-DP5U00NA.cjs.map +0 -1
  1404. package/dist/tslib.es6-DgOcxv4s.cjs +0 -2
  1405. package/dist/tslib.es6-DgOcxv4s.cjs.map +0 -1
  1406. package/dist/tslib.es6-ujVQHAQ4.js +0 -10
  1407. package/dist/tslib.es6-ujVQHAQ4.js.map +0 -1
  1408. package/dist/typewriter-C6kFjLcX.cjs +0 -124
  1409. package/dist/typewriter-C6kFjLcX.cjs.map +0 -1
  1410. package/dist/typewriter-Eo5qXoGC.js +0 -555
  1411. package/dist/typewriter-Eo5qXoGC.js.map +0 -1
  1412. package/dist/typewriter.cjs.map +0 -1
  1413. package/dist/typewriter.js.map +0 -1
  1414. package/dist/typography-C_1gdM2I.js +0 -264
  1415. package/dist/typography-C_1gdM2I.js.map +0 -1
  1416. package/dist/typography-DGyjlLCE.cjs +0 -243
  1417. package/dist/typography-DGyjlLCE.cjs.map +0 -1
  1418. package/dist/utils-C38P63L6.cjs +0 -2
  1419. package/dist/utils-C38P63L6.cjs.map +0 -1
  1420. package/dist/utils-CYOVFxSx.js +0 -150
  1421. package/dist/utils-CYOVFxSx.js.map +0 -1
  1422. package/dist/utils.cjs.map +0 -1
  1423. package/dist/utils.js.map +0 -1
  1424. package/types/src/animated-text/animated-text.d.ts +0 -30
  1425. package/types/src/animated-text/index.d.ts +0 -1
  1426. package/types/src/directives/height.d.ts +0 -20
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-rail.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"navigation-rail.js","names":[],"sources":["../src/navigation-rail/navigation-rail-item.ts","../src/navigation-rail/navigation-rail.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { BehaviorSubject, fromEvent, merge, takeUntil } from 'rxjs'\nimport { delay, distinctUntilChanged, tap } from 'rxjs/operators'\n\nexport type NavigationRailItemClickEvent = CustomEvent<{\n\ticon: string\n\tlabel: string\n\tvalue: string\n\tactive: boolean\n}>\n\n/**\n * Material Design 3 Navigation Rail Item Component\n * @see https://m3.material.io/components/navigation-rail/overview\n *\n * `<schmancy-navigation-rail-item>` component\n *\n * Individual navigation item for use within a navigation rail.\n * Represents a single destination or action with an icon and optional label.\n *\n * @element schmancy-navigation-rail-item\n * @slot icon - Slot for the navigation item icon (e.g., schmancy-icon)\n * @slot - Default slot for custom content\n * @slot badge - Custom badge content\n *\n * @fires navigate - When the item is clicked\n *\n * @csspart container - The main item container\n * @csspart indicator - The active indicator\n * @csspart icon - The icon container\n * @csspart label - The label text\n * @csspart badge - The badge element\n *\n * @example\n * <schmancy-navigation-rail-item\n * icon=\"home\"\n * label=\"Home\"\n * value=\"/home\"\n * badge=\"3\"\n * active>\n * </schmancy-navigation-rail-item>\n *\n * @example\n * <!-- Using 'selected' alias -->\n * <schmancy-navigation-rail-item\n * icon=\"settings\"\n * label=\"Settings\"\n * value=\"/settings\"\n * selected>\n * </schmancy-navigation-rail-item>\n *\n * @example\n * <!-- With custom icon -->\n * <schmancy-navigation-rail-item label=\"Dashboard\">\n * <schmancy-icon slot=\"icon\">dashboard</schmancy-icon>\n * </schmancy-navigation-rail-item>\n */\n@customElement('schmancy-navigation-rail-item')\nexport class SchmancyNavigationRailItem extends $LitElement() {\n\t// Observable state\n\tprivate hovering$ = new BehaviorSubject<boolean>(false)\n\tprivate pressing$ = new BehaviorSubject<boolean>(false)\n\tprivate active$ = new BehaviorSubject<boolean>(false)\n\n\t// Properties\n\t/**\n\t * Icon name (Material Symbols icon)\n\t */\n\t@property({ type: String })\n\ticon = ''\n\n\t/**\n\t * Label text for the navigation item\n\t */\n\t@property({ type: String })\n\tlabel = ''\n\n\t/**\n\t * Value associated with this item (useful for routing)\n\t */\n\t@property({ type: String })\n\tvalue = ''\n\n\t/**\n\t * Whether this item is currently active/selected\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tget active() {\n\t\treturn this.active$.value\n\t}\n\tset active(value: boolean) {\n\t\tthis.active$.next(value)\n\t}\n\n\t/**\n\t * Whether this item is currently selected (alias for active)\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tget selected() {\n\t\treturn this.active\n\t}\n\tset selected(value: boolean) {\n\t\tthis.active = value\n\t}\n\n\t/**\n\t * Badge text or number to display\n\t */\n\t@property({ type: String })\n\tbadge = ''\n\n\t/**\n\t * Badge variant\n\t */\n\t@property({ type: String })\n\tbadgeVariant: 'error' | 'primary' | 'secondary' = 'error'\n\n\t/**\n\t * Whether to show the label (controlled by parent rail)\n\t * @default false\n\t */\n\t@property({ type: Boolean, attribute: 'show-label' })\n\tshowLabel = false\n\n\t/**\n\t * Whether this item is disabled\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled = false\n\n\t/**\n\t * Whether this is a nested item (sub-navigation)\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tnested = false\n\n\t/**\n\t * Whether this item represents a group separator\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tgroup = false\n\n\t// State\n\t@state()\n\tprivate showRipple = false\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set up hover tracking\n\t\tmerge(\n\t\t\tfromEvent(this, 'mouseenter').pipe(tap(() => this.hovering$.next(true))),\n\t\t\tfromEvent(this, 'mouseleave').pipe(tap(() => this.hovering$.next(false))),\n\t\t)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe()\n\n\t\t// Set up press tracking\n\t\tmerge(\n\t\t\tfromEvent(this, 'mousedown').pipe(tap(() => this.pressing$.next(true))),\n\t\t\tfromEvent(this, 'mouseup').pipe(tap(() => this.pressing$.next(false))),\n\t\t\tfromEvent(this, 'mouseleave').pipe(tap(() => this.pressing$.next(false))),\n\t\t)\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe()\n\n\t\t// Ripple effect with M3 timing\n\t\tthis.pressing$\n\t\t\t.pipe(\n\t\t\t\ttap(pressing => {\n\t\t\t\t\tif (pressing && !this.disabled) {\n\t\t\t\t\t\tthis.showRipple = true\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\t// M3 standard ripple duration\n\t\t\t\tdelay(600),\n\t\t\t\ttap(() => (this.showRipple = false)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Subscribe to active state changes for reactive updates\n\t\tthis.active$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(isActive => {\n\t\t\t\t\tthis.requestUpdate()\n\t\t\t\t\t// Update ARIA attributes reactively\n\t\t\t\t\tthis.setAttribute('aria-selected', String(isActive))\n\t\t\t\t\tthis.setAttribute('tabindex', isActive ? '0' : '-1')\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Set ARIA attributes\n\t\tthis.setAttribute('role', 'listitem')\n\t\tif (!this.hasAttribute('tabindex')) {\n\t\t\tthis.setAttribute('tabindex', this.active ? '0' : '-1')\n\t\t}\n\t}\n\n\tupdated(changedProperties: PropertyValues) {\n\t\tsuper.updated(changedProperties)\n\n\t\t// Active state is now handled by the BehaviorSubject subscription\n\t\t// So we don't need to duplicate it here\n\n\t\tif (changedProperties.has('disabled')) {\n\t\t\tthis.setAttribute('aria-disabled', String(this.disabled))\n\t\t}\n\n\t\tif (changedProperties.has('label')) {\n\t\t\tthis.setAttribute('aria-label', this.label)\n\t\t}\n\t}\n\n\t/**\n\t * Handle click events\n\t */\n\tprivate handleClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\treturn\n\t\t}\n\n\t\t// Emit navigate event with the value\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('navigate', {\n\t\t\t\tdetail: this.value || this.label,\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\n\t\t// Visual feedback is handled by the ripple effect in connectedCallback\n\t\t// The parent rail will confirm and update via activeIndex\n\t}\n\n\t/**\n\t * Handle keyboard events\n\t */\n\tprivate handleKeyDown(event: KeyboardEvent) {\n\t\tif (this.disabled) return\n\n\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\tevent.preventDefault()\n\t\t\tthis.click()\n\t\t}\n\t}\n\n\tprotected render() {\n\t\tconst hasCustomIcon = !!this.querySelector('[slot=\"icon\"]')\n\t\tconst hasCustomBadge = this.querySelector('[slot=\"badge\"]')\n\n\t\t// M3 Navigation Rail Item classes with theme integration\n\t\tconst containerClasses = this.classMap({\n\t\t\t// Layout & Spacing (M3 56px height, 12px vertical padding)\n\t\t\t'flex flex-col items-center justify-center': true,\n\t\t\t'min-h-14 w-full': true, // min-h-14 = 56px\n\t\t\t'py-3': true, // py-3 = 12px top/bottom\n\t\t\t'gap-1': true, // gap-1 = 4px\n\n\t\t\t// M3 Shape & Interaction\n\t\t\t'rounded-lg': true, // M3 large corner radius\n\t\t\t'cursor-pointer': true,\n\t\t\trelative: true,\n\t\t\t'select-none': true,\n\t\t\t'box-border': true,\n\n\t\t\t// Colors & States\n\t\t\t'text-surface-onVariant': !this.active,\n\t\t\t'text-secondary-onContainer': this.active,\n\t\t\t'hover:bg-surface-containerHighest': true,\n\n\t\t\t// Transitions (M3 emphasized motion)\n\t\t\t'transition-all duration-150 ease-out': true,\n\n\t\t\t// Disabled state\n\t\t\t'pointer-events-none opacity-38': this.disabled,\n\n\t\t\t// Active ripple effect\n\t\t\t'[&>.ripple]:scale-100': this.showRipple,\n\n\t\t\t// Nested item adjustments\n\t\t\t'min-h-12 pl-8': this.nested, // 48px height, 32px left padding for nested\n\n\t\t\t// Group separator\n\t\t\t'mb-2 after:absolute after:bottom-[-4px] after:left-3 after:right-3 after:h-px after:bg-outline-variant after:opacity-12':\n\t\t\t\tthis.group,\n\t\t})\n\n\t\t// Icon container with active indicator\n\t\tconst iconContainerClasses = this.classMap({\n\t\t\t'flex items-center justify-center': true,\n\t\t\t'w-auto min-w-14 h-8': true, // 56px min-width, 32px height\n\t\t\t'shrink-0 relative z-10': true,\n\t\t})\n\n\t\t// Active indicator behind icon\n\t\tconst indicatorClasses = this.classMap({\n\t\t\t'absolute top-1/2 left-1/2 opacity-30': true,\n\t\t\t'w-14 h-8': true, // 56px x 32px\n\t\t\t'rounded-lg': true, // M3 large corner radius\n\t\t\t'bg-secondary-container': true,\n\t\t\t'transition-transform duration-150 ease-out': true,\n\t\t\t// Transform based on active state\n\t\t\t'scale-0 -translate-x-1/2 -translate-y-1/2': !this.active,\n\t\t\t'scale-100 -translate-x-1/2 -translate-y-1/2': this.active,\n\t\t})\n\n\t\t// Icon styling\n\t\tconst iconClasses = this.classMap({\n\t\t\t'relative z-100': true,\n\t\t\t'text-2xl leading-none': !this.nested, // 24px icon for normal\n\t\t\t'text-xl leading-none': this.nested, // 20px icon for nested\n\t\t\t// Material Symbols font variations handled via CSS custom properties\n\t\t})\n\n\t\t// Label styling\n\t\tconst labelClasses = this.classMap({\n\t\t\t'text-xs font-medium leading-4': true, // 12px, medium weight, 16px line height\n\t\t\t'text-center': true,\n\t\t\t'overflow-hidden text-ellipsis whitespace-nowrap': true,\n\t\t\t'z-10 max-w-14 px-1': true, // max 56px width, 4px horizontal padding\n\t\t\thidden: !this.showLabel && !this.label, // Hide if not shown or no label\n\t\t})\n\n\t\t// Badge styling with dynamic colors\n\t\tconst badgeClasses = this.classMap({\n\t\t\t'absolute top-2 right-3': true, // 8px from top, 12px from right\n\t\t\t'min-w-4 h-4': true, // 16px min-width and height\n\t\t\t'rounded-sm': true, // M3 small corner radius\n\t\t\t'text-xs font-semibold': true, // 11px, 600 weight\n\t\t\t'flex items-center justify-center': true,\n\t\t\t'px-1 box-border z-20': true, // 4px padding\n\t\t\t'animate-pulse': true, // Pulse animation\n\t\t\t// Dynamic background based on variant\n\t\t\t'bg-error-default text-error-on': this.badgeVariant === 'error',\n\t\t\t'bg-primary-default text-primary-on': this.badgeVariant === 'primary',\n\t\t\t'bg-secondary-default text-secondary-on': this.badgeVariant === 'secondary',\n\t\t})\n\n\t\t// Ripple effect classes\n\t\tconst rippleClasses = this.classMap({\n\t\t\t'absolute inset-0 rounded-lg overflow-hidden z-0': true,\n\t\t\t'before:content-[\"\"] before:absolute before:top-1/2 before:left-1/2': true,\n\t\t\t'before:w-0 before:h-0 before:rounded-full': true,\n\t\t\t'before:bg-current before:opacity-0': true,\n\t\t\t'before:-translate-x-1/2 before:-translate-y-1/2': true,\n\t\t\t'before:transition-all before:duration-300': true,\n\t\t\t// Active state\n\t\t\t'before:w-[200%] before:h-[200%] before:opacity-12': this.showRipple,\n\t\t})\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${containerClasses}\n\t\t\t\tpart=\"container\"\n\t\t\t\t@click=${this.handleClick}\n\t\t\t\t@keydown=${this.handleKeyDown}\n\t\t\t\tstyle=\"outline: ${this.matches(':focus-visible')\n\t\t\t\t\t? '2px solid var(--schmancy-sys-color-primary-default)'\n\t\t\t\t\t: 'none'}; outline-offset: 2px;\"\n\t\t\t>\n\t\t\t\t<span class=${rippleClasses} aria-hidden=\"true\"></span>\n\n\t\t\t\t<div class=${iconContainerClasses} part=\"icon\">\n\t\t\t\t\t<span class=${indicatorClasses} part=\"indicator\" aria-hidden=\"true\"></span>\n\t\t\t\t\t${when(\n\t\t\t\t\t\thasCustomIcon,\n\t\t\t\t\t\t() => html`<slot class=\"relative\" name=\"icon\"></slot>`,\n\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\twhen(\n\t\t\t\t\t\t\t\tthis.icon,\n\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclass=${iconClasses}\n\t\t\t\t\t\t\t\t\t\tpart=\"icon-text\"\n\t\t\t\t\t\t\t\t\t\tstyle=\"font-family: 'Material Symbols Outlined'; font-variation-settings: 'FILL' ${this.active\n\t\t\t\t\t\t\t\t\t\t\t? '1'\n\t\t\t\t\t\t\t\t\t\t\t: '0'}, 'wght' 400, 'GRAD' 0, 'opsz' ${this.nested ? '20' : '24'};\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.icon}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t${when(this.label, () => html`<span class=${labelClasses} part=\"label\">${this.label}</span>`)}\n\t\t\t\t${when(\n\t\t\t\t\tthis.badge,\n\t\t\t\t\t() => html`\n\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\thasCustomBadge,\n\t\t\t\t\t\t\t() => html`<slot name=\"badge\"></slot>`,\n\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t<span class=${badgeClasses} part=\"badge\" aria-label=\"${this.badge} notifications\"> ${this.badge} </span>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t`,\n\t\t\t\t)}\n\n\t\t\t\t<!-- Tooltip shown via title attribute -->\n\t\t\t\t${when(\n\t\t\t\t\tthis.hasAttribute('title'),\n\t\t\t\t\t() => html`\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"\n\t\t\t\t\t\t\tabsolute left-[calc(100%+8px)] top-1/2 -translate-y-1/2\n\t\t\t\t\t\t\tbg-surface-inverse text-surface-inverseOn\n\t\t\t\t\t\t\tpx-2 py-1 rounded-sm text-xs whitespace-nowrap\n\t\t\t\t\t\t\tz-1000 pointer-events-none opacity-0\n\t\t\t\t\t\t\thover:opacity-100 hover:translate-x-0\n\t\t\t\t\t\t\ttransition-all duration-150 ease-out\n\t\t\t\t\t\t\t-translate-x-1\n\t\t\t\t\t\t\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${this.getAttribute('title')}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-navigation-rail-item': SchmancyNavigationRailItem\n\t}\n}\n","import { $LitElement } from '@mixins/index'\r\nimport { html, PropertyValues } from 'lit'\r\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\r\nimport { BehaviorSubject, fromEvent, takeUntil } from 'rxjs'\r\nimport { distinctUntilChanged, tap } from 'rxjs/operators'\r\nimport { SchmancyNavigationRailItem } from './navigation-rail-item'\r\n\r\nexport type NavigateEvent = CustomEvent<string>\r\n\r\nexport type NavigationRailMenuClickEvent = CustomEvent<void>\r\n\r\nexport type NavigationRailFabClickEvent = CustomEvent<void>\r\n\r\n\r\nexport type LabelVisibility = 'all' | 'selected' | 'none'\r\n\r\n/**\r\n * Material Design 3 Navigation Rail Component\r\n * @see https://m3.material.io/components/navigation-rail/overview\r\n *\r\n * `<schmancy-navigation-rail>` component\r\n *\r\n * A Material Design 3 vertical navigation component positioned on the left side of an application.\r\n * Navigation rails provide access to between 3-7 primary destinations with a compact footprint.\r\n * Automatically hides in fullscreen mode when triggered via schmancyTheme.next({ fullscreen: true }).\r\n *\r\n * @element schmancy-navigation-rail\r\n * @slot fab - Slot for a floating action button at the top\r\n * @slot menu - Slot for a menu icon or button below the FAB\r\n * @slot header - Custom header content slot\r\n * @slot footer - Custom footer content slot\r\n * @slot - Default slot for navigation rail items\r\n *\r\n * @fires navigate - When a navigation item is selected\r\n * @fires menu-click - When the menu button is clicked\r\n * @fires fab-click - When the FAB is clicked\r\n *\r\n * @csspart rail - The main rail container\r\n * @csspart header - The header section\r\n * @csspart nav - The navigation items container\r\n * @csspart footer - The footer section\r\n *\r\n * @example\r\n * <schmancy-navigation-rail activeIndex=\"0\">\r\n * <schmancy-button slot=\"fab\" variant=\"filled\" aria-label=\"Compose\">\r\n * <schmancy-icon>add</schmancy-icon>\r\n * </schmancy-button>\r\n * <schmancy-button slot=\"menu\" variant=\"text\" aria-label=\"Menu\">\r\n * <schmancy-icon>menu</schmancy-icon>\r\n * </schmancy-button>\r\n * <schmancy-navigation-rail-item icon=\"home\" label=\"Home\"></schmancy-navigation-rail-item>\r\n * <schmancy-navigation-rail-item icon=\"search\" label=\"Search\"></schmancy-navigation-rail-item>\r\n * <schmancy-navigation-rail-item icon=\"favorite\" label=\"Favorites\" badge=\"3\"></schmancy-navigation-rail-item>\r\n * <schmancy-navigation-rail-item icon=\"settings\" label=\"Settings\"></schmancy-navigation-rail-item>\r\n * </schmancy-navigation-rail>\r\n */\r\n@customElement('schmancy-navigation-rail')\r\nexport class SchmancyNavigationRail extends $LitElement() {\r\n\t// Observable state\r\n\tprivate activeIndex$ = new BehaviorSubject<number>(-1)\r\n\r\n\t// Properties\r\n\t/**\r\n\t * The currently active item index\r\n\t * @default -1\r\n\t */\r\n\t@property({ type: Number })\r\n\tget activeIndex() {\r\n\t\treturn this.activeIndex$.value\r\n\t}\r\n\tset activeIndex(value: number) {\r\n\t\tthis.activeIndex$.next(value)\r\n\t}\r\n\r\n\t/**\r\n\t * The currently active item value (for programmatic selection)\r\n\t */\r\n\t@property({ type: String })\r\n\tget activeValue() {\r\n\t\treturn this._activeValue\r\n\t}\r\n\tset activeValue(value: string) {\r\n\t\tthis._activeValue = value\r\n\t\tthis.updateActiveByValue(value)\r\n\t}\r\n\tprivate _activeValue = ''\r\n\r\n\t/**\r\n\t * When to show labels for navigation items\r\n\t * 'all' - Always show labels for all items\r\n\t * 'selected' - Only show label for selected item\r\n\t * 'none' - Never show labels\r\n\t * @default 'all'\r\n\t */\r\n\t@property({ type: String, attribute: 'label-visibility', reflect: true })\r\n\tlabelVisibility: LabelVisibility = 'all'\r\n\r\n\t/**\r\n\t * Alignment of navigation items\r\n\t * @default 'top'\r\n\t */\r\n\t@property({ type: String, reflect: true })\r\n\talignment: 'top' | 'center' | 'bottom' = 'top'\r\n\r\n\t/**\r\n\t * Show tooltips when labels are hidden\r\n\t * @default true\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tshowTooltips = true\r\n\r\n\t/**\r\n\t * Enable keyboard navigation\r\n\t * @default true\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tkeyboardNavigation = true\r\n\r\n\t/**\r\n\t * Whether the navigation rail is expanded\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, reflect: true })\r\n\texpanded = false\r\n\r\n\r\n\t// State\r\n\t@state()\r\n\tprivate focusedIndex = -1\r\n\r\n\t@state()\r\n\tprivate hasHeaderContent = false\r\n\r\n\t@state()\r\n\tprivate isFullscreen = false\r\n\r\n\t// Queries\r\n\r\n\t@queryAssignedElements({ flatten: true })\r\n\tprivate allElements!: Element[]\r\n\r\n\tprivate get navigationItems(): SchmancyNavigationRailItem[] {\r\n\t\treturn this.allElements.filter(el => el.tagName === 'SCHMANCY-NAVIGATION-RAIL-ITEM') as SchmancyNavigationRailItem[]\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t\t// Set up keyboard navigation if enabled\r\n\t\tif (this.keyboardNavigation) {\r\n\t\t\tthis.addEventListener('keydown', this.handleKeyDown)\r\n\t\t}\r\n\r\n\t\t// Subscribe to active index changes with distinct values only\r\n\t\tthis.activeIndex$\r\n\t\t\t.pipe(\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\ttap(index => this.updateActiveStates(index)),\r\n\t\t\t\ttakeUntil(this.disconnecting),\r\n\t\t\t)\r\n\t\t\t.subscribe()\r\n\r\n\t\t// Listen to fullscreen events\r\n\t\tfromEvent(window, 'fullscreen').pipe(\r\n\t\t\ttap((event: Event) => {\r\n\t\t\t\tconst customEvent = event as CustomEvent\r\n\t\t\t\tthis.isFullscreen = customEvent.detail\r\n\t\t\t}),\r\n\t\t\ttakeUntil(this.disconnecting)\r\n\t\t).subscribe()\r\n\r\n\t\t// Listen for navigate events from child items\r\n\t\tthis.setupNavigateListener()\r\n\r\n\t\t// Set up label visibility\r\n\t\tthis.updateLabelVisibility()\r\n\r\n\t\t// Update ARIA attributes\r\n\t\tthis.setAttribute('role', 'navigation')\r\n\t\tthis.setAttribute('aria-label', 'Main navigation')\r\n\t}\r\n\r\n\tupdated(changedProperties: PropertyValues) {\r\n\t\tsuper.updated(changedProperties)\r\n\r\n\t\tif (changedProperties.has('labelVisibility')) {\r\n\t\t\tthis.updateLabelVisibility()\r\n\t\t}\r\n\r\n\t\tif (changedProperties.has('activeValue')) {\r\n\t\t\tthis.updateActiveByValue(this.activeValue)\r\n\t\t}\r\n\r\n\t\tif (changedProperties.has('expanded')) {\r\n\t\t\tthis.updateLabelVisibility()\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateActiveStates(index: number) {\r\n\t\tthis.navigationItems.forEach((item, i) => {\r\n\t\t\tconst isActive = i === index\r\n\t\t\titem.active = isActive\r\n\t\t\titem.setAttribute('aria-selected', String(isActive))\r\n\t\t\titem.setAttribute('tabindex', isActive ? '0' : '-1')\r\n\r\n\t\t\t// Update activeValue when index changes\r\n\t\t\tif (isActive) {\r\n\t\t\t\tthis._activeValue = item.value || item.label || ''\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate updateActiveByValue(value: string) {\r\n\t\tconst index = this.navigationItems.findIndex(item => item.getAttribute('value') === value || item.label === value)\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.activeIndex = index\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateLabelVisibility() {\r\n\t\tthis.navigationItems.forEach((item, i) => {\r\n\t\t\tlet shouldShowLabel = false\r\n\r\n\t\t\t// M3 Spec: In expanded state, always show all labels\r\n\t\t\tif (this.expanded) {\r\n\t\t\t\tshouldShowLabel = true\r\n\t\t\t} else {\r\n\t\t\t\t// In collapsed state, respect labelVisibility setting\r\n\t\t\t\tshouldShowLabel =\r\n\t\t\t\t\tthis.labelVisibility === 'all' || (this.labelVisibility === 'selected' && i === this.activeIndex)\r\n\t\t\t}\r\n\r\n\t\t\titem.showLabel = shouldShowLabel\r\n\r\n\t\t\t// Add tooltips when labels are hidden (only in collapsed state)\r\n\t\t\tif (this.showTooltips && !shouldShowLabel && !this.expanded && item.label) {\r\n\t\t\t\titem.setAttribute('title', item.label)\r\n\t\t\t} else {\r\n\t\t\t\titem.removeAttribute('title')\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\t// Note: Hover-based label showing removed for M3 compliance\r\n\t// Labels are now controlled via labelVisibility property and expanded state\r\n\r\n\t/**\r\n\t * Programmatically expand the navigation rail\r\n\t */\r\n\texpand() {\r\n\t\tthis.expanded = true\r\n\t}\r\n\r\n\t/**\r\n\t * Programmatically collapse the navigation rail\r\n\t */\r\n\tcollapse() {\r\n\t\tthis.expanded = false\r\n\t}\r\n\r\n\t/**\r\n\t * Add a boat item to the navigation rail\r\n\t * @param config Configuration for the boat item\r\n\t * @returns The created or existing navigation rail item element\r\n\t */\r\n\tpublic addBoatItem(config: { id: string; title: string; icon?: string }) {\r\n\t\t// Check if item already exists\r\n\t\tconst existingItem = this.querySelector(`[value=\"${config.id}\"]`) as HTMLElement\r\n\t\tif (existingItem) {\r\n\t\t\t// Item already exists, just return it\r\n\t\t\treturn existingItem\r\n\t\t}\r\n\r\n\t\t// Create new item\r\n\t\tconst item = document.createElement('schmancy-navigation-rail-item')\r\n\t\titem.setAttribute('value', config.id)\r\n\t\titem.innerHTML = `\r\n\t\t\t<schmancy-icon slot=\"icon\">${config.icon || 'widgets'}</schmancy-icon>\r\n\t\t\t${config.title}\r\n\t\t`\r\n\t\t// Add to the rail before any footer content\r\n\t\tconst footer = this.querySelector('[slot=\"footer\"]')\r\n\t\tif (footer) {\r\n\t\t\tthis.insertBefore(item, footer)\r\n\t\t} else {\r\n\t\t\tthis.appendChild(item)\r\n\t\t}\r\n\t\treturn item\r\n\t}\r\n\r\n\t/**\r\n\t * Toggle the navigation rail between expanded and collapsed states\r\n\t */\r\n\ttoggle() {\r\n\t\tthis.expanded = !this.expanded\r\n\t}\r\n\r\n\r\n\tprivate handleKeyDown(event: KeyboardEvent) {\r\n\t\tconst items = this.navigationItems\r\n\t\tif (items.length === 0) return\r\n\r\n\t\tlet newIndex = this.focusedIndex >= 0 ? this.focusedIndex : this.activeIndex\r\n\r\n\t\tswitch (event.key) {\r\n\t\t\tcase 'ArrowDown':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = (newIndex + 1) % items.length\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ArrowUp':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = newIndex <= 0 ? items.length - 1 : newIndex - 1\r\n\t\t\t\tbreak\r\n\t\t\tcase 'Home':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = 0\r\n\t\t\t\tbreak\r\n\t\t\tcase 'End':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = items.length - 1\r\n\t\t\t\tbreak\r\n\t\t\tcase 'Enter':\r\n\t\t\tcase ' ':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tif (newIndex >= 0) {\r\n\t\t\t\t\titems[newIndex].click()\r\n\t\t\t\t}\r\n\t\t\t\treturn\r\n\t\t\tdefault:\r\n\t\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.focusedIndex = newIndex\r\n\t\titems[newIndex].focus()\r\n\t}\r\n\r\n\tprivate handleFabClick(event: Event) {\r\n\t\tevent.stopPropagation()\r\n\t\tthis.dispatchEvent(\r\n\t\t\tnew CustomEvent('fab-click', {\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tcomposed: true,\r\n\t\t\t}),\r\n\t\t)\r\n\t}\r\n\r\n\tprivate handleMenuClick(event: Event) {\r\n\t\tevent.stopPropagation()\r\n\t\tthis.dispatchEvent(\r\n\t\t\tnew CustomEvent('menu-click', {\r\n\t\t\t\tbubbles: true,\r\n\t\t\t\tcomposed: true,\r\n\t\t\t}),\r\n\t\t)\r\n\t}\r\n\r\n\tprotected render() {\r\n\t\t// Host-level classes for the navigation rail\r\n\t\tconst hostClasses = this.classMap({\r\n\t\t\t// Layout & Structure - Fixed width to prevent layout shift\r\n\t\t\t'flex flex-col': true,\r\n\t\t\t'h-full': true,\r\n\t\t\t'box-border relative overflow-visible': true,\r\n\t\t\t'z-10 hover:z-[100]': true, // Base z-index, elevated on hover for overlay\r\n\r\n\t\t\t// Width - collapses to 0 when fullscreen\r\n\t\t\t'w-20': !this.isFullscreen, // w-20 = 80px fixed width (M3 spec: 80dp)\r\n\t\t\t'w-0': this.isFullscreen, // Collapse width to 0 in fullscreen\r\n\r\n\t\t\t// Visibility and transition\r\n\t\t\t'transition-all duration-300 ease-emphasized': true,\r\n\t\t\t'opacity-100': !this.isFullscreen,\r\n\t\t\t'opacity-0 pointer-events-none': this.isFullscreen,\r\n\t\t\t'overflow-hidden': this.isFullscreen, // Hide overflow when collapsed\r\n\t\t})\r\n\r\n\t\t// Rail container - programmatically controlled width\r\n\t\tconst railClasses = this.classMap({\r\n\t\t\t// Layout & Structure\r\n\t\t\t'flex flex-col h-full': true,\r\n\t\t\t'box-border relative': true,\r\n\t\t\t'py-2': true,\r\n\r\n\r\n\t\t\t// M3 Colors & Theme\r\n\t\t\t'bg-container-lowest text-surface-on': true,\r\n\r\n\t\t\t// M3 Motion - smooth transitions for width and shadow\r\n\t\t\t'transition-all duration-300 ease-emphasized': true,\r\n\r\n\t\t\t// Collapsed state (default) - M3 standard 80px width\r\n\t\t\t'w-20': !this.expanded, // w-20 = 80px (M3 spec: 80dp)\r\n\t\t\t'px-3': !this.expanded, // px-3 = 12px (M3 spec: 12px to center 56px items)\r\n\r\n\t\t\t// Expanded state - M3 expanded width with shadow\r\n\t\t\t'w-60': this.expanded, // w-60 = 240px expanded width\r\n\t\t\t'px-4': this.expanded, // Larger padding when expanded\r\n\t\t\t'shadow-lg': this.expanded, // M3 elevation 3 shadow when expanded\r\n\t\t})\r\n\r\n\t\t// Header section classes - hidden when no content\r\n\t\tconst headerClasses = this.classMap({\r\n\t\t\t'flex flex-col items-center gap-1': true,\r\n\t\t\t'hidden': !this.hasHeaderContent,\r\n\t\t})\r\n\r\n\t\t// Navigation container classes with alignment\r\n\t\tconst navClasses = this.classMap({\r\n\t\t\t'flex-1 flex flex-col gap-3': true, // gap-3 = 12px (M3 spec: 12px item spacing)\r\n\t\t\t'min-h-0': true, // Allow flex shrinking and proper scroll container height calculation\r\n\t\t\t// Alignment variants\r\n\t\t\t'justify-start': this.alignment === 'top',\r\n\t\t\t'justify-center': this.alignment === 'center',\r\n\t\t\t'justify-end': this.alignment === 'bottom',\r\n\t\t})\r\n\r\n\t\t// Footer section classes\r\n\t\tconst footerClasses = this.classMap({\r\n\t\t\t'flex flex-col items-center gap-1 mt-auto pt-2': true,\r\n\t\t})\r\n\r\n\t\treturn html`\r\n\t\t\t<div\r\n\t\t\t\tclass=${hostClasses}\r\n\t\t\t>\r\n\t\t\t\t<div class=${railClasses} part=\"rail\">\r\n\t\t\t\t\t<div class=${headerClasses} part=\"header\">\r\n\t\t\t\t\t\t<slot name=\"fab\" @click=${this.handleFabClick} @slotchange=${this.handleHeaderSlotChange}></slot>\r\n\t\t\t\t\t\t<slot name=\"menu\" @click=${this.handleMenuClick} @slotchange=${this.handleHeaderSlotChange}></slot>\r\n\t\t\t\t\t\t<slot name=\"header\" @slotchange=${this.handleHeaderSlotChange}></slot>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<nav class=${navClasses} part=\"nav\" role=\"list\">\r\n\t\t\t\t\t\t<schmancy-scroll hide direction=\"vertical\">\r\n\t\t\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}></slot>\r\n\t\t\t\t\t\t</schmancy-scroll>\r\n\t\t\t\t\t</nav>\r\n\r\n\t\t\t\t\t<div class=${footerClasses} part=\"footer\">\r\n\t\t\t\t\t\t<slot name=\"footer\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t`\r\n\t}\r\n\r\n\tprivate setupNavigateListener() {\r\n\t\t// Listen for navigate events from child items\r\n\t\tthis.addEventListener('navigate', (e: Event) => {\r\n\t\t\tif (e instanceof CustomEvent) {\r\n\t\t\t\tconst value = e.detail\r\n\t\t\t\t// Find the item that dispatched the event and update active state\r\n\t\t\t\tconst itemIndex = this.navigationItems.findIndex(item => item.value === value || item.label === value)\r\n\t\t\t\tif (itemIndex >= 0) {\r\n\t\t\t\t\tthis.activeIndex = itemIndex\r\n\t\t\t\t\tthis._activeValue = value\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate handleHeaderSlotChange() {\r\n\t\t// Check if any header slot has content\r\n\t\tconst headerDiv = this.shadowRoot?.querySelector('[part=\"header\"]')\r\n\t\tif (headerDiv) {\r\n\t\t\tconst allSlots = headerDiv.querySelectorAll('slot')\r\n\t\t\tthis.hasHeaderContent = Array.from(allSlots).some(s =>\r\n\t\t\t\ts.assignedNodes({ flatten: true }).length > 0\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleSlotChange() {\r\n\t\t// Update items when slot content changes\r\n\t\tthis.updateLabelVisibility()\r\n\t\tthis.updateActiveStates(this.activeIndex)\r\n\r\n\t\t// Set ARIA attributes on items\r\n\t\tthis.navigationItems.forEach((item, index) => {\r\n\t\t\titem.setAttribute('role', 'listitem')\r\n\t\t\tif (!item.hasAttribute('tabindex')) {\r\n\t\t\t\titem.setAttribute('tabindex', index === this.activeIndex ? '0' : '-1')\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'schmancy-navigation-rail': SchmancyNavigationRail\r\n\t}\r\n}\r\n"],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-DSuEu-y3.cjs`),t=require(`./litElement.mixin-BG6_-nYX.cjs`);require(`./mixins.cjs`);const n=require(`./audio-DtYYgzYD.cjs`);require(`./progress-BoRmyGAa.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/decorators.js`),o=require(`lit`);var s=class extends t.t(`:host{display:block}.notification{background:var(--schmancy-sys-color-surface-container);border-radius:var(--schmancy-sys-shape-corner-extraLarge,16px);color:var(--schmancy-sys-color-surface-on);--notification-glow-color:var(--schmancy-sys-color-primary-default);max-width:320px;box-shadow:0 4px 24px -6px color-mix(in srgb, var(--notification-glow-color) 18%, transparent);border-left:2px solid color-mix(in srgb, var(--notification-glow-color) 50%, transparent);align-items:flex-start;gap:10px;padding:12px 32px 12px 12px;transition:box-shadow .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.notification.info{--notification-glow-color:var(--schmancy-sys-color-primary-default)}.notification.success{--notification-glow-color:var(--schmancy-sys-color-success-default)}.notification.warning{--notification-glow-color:var(--schmancy-sys-color-warning-default)}.notification.error{--notification-glow-color:var(--schmancy-sys-color-error-default)}.notification.hovered{box-shadow:0 8px 32px -4px color-mix(in srgb, var(--notification-glow-color) 28%, transparent);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.notification{transition:box-shadow .2s}.notification.hovered{transform:none}}.emoji{flex-shrink:0;margin-top:1px;font-size:20px;line-height:1}.content{flex:1;min-width:0}.title{letter-spacing:.01em;margin-bottom:2px;font-size:13px;font-weight:500;line-height:1.4}.info .title{color:var(--schmancy-sys-color-primary-default)}.success .title{color:var(--schmancy-sys-color-success-default)}.warning .title{color:var(--schmancy-sys-color-tertiary-default)}.error .title{color:var(--schmancy-sys-color-error-default)}.message{opacity:.75;letter-spacing:.01em;font-size:13px;line-height:1.4}.close{color:var(--schmancy-sys-color-surface-onVariant);cursor:pointer;opacity:.4;border-radius:var(--schmancy-sys-shape-corner-full,50%);background:0 0;border:none;padding:4px 6px;font-size:16px;font-weight:300;line-height:1;transition:opacity .2s;position:absolute;top:8px;right:6px}.close:hover{opacity:.8}.close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default), 0 0 8px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 25%, transparent);outline:none}.progress{position:absolute;bottom:0;left:0;right:0}`){constructor(...e){super(...e),this.title=``,this.message=``,this.type=`info`,this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this.startPosition={x:0,y:0},this._visible=!0,this._progress=100,this._hovered=!1,this._closing=!1,this.paused$=new r.BehaviorSubject(!1),this.startTime=0,this.pausedAt=0,this.elapsedBeforePause=0}connectedCallback(){super.connectedCallback(),this.style.position=`fixed`,this.style.top=`16px`,this.style.right=`16px`,this.style.zIndex=`10001`,this.style.opacity=`0`,this.updateComplete.then(()=>{this.animateIn()}),this.duration>0&&(this.setupAutoClose(),this.setupProgressUpdates()),this.playSound&&this._playSound()}async animateIn(){let e=this.getBoundingClientRect(),t=e.left+e.width/2,n=e.top+e.height/2,r=function(e,t,n=`up`,r=.3){let i=(e.x+t.x)/2,a=(e.y+t.y)/2,o=Math.sqrt((t.x-e.x)**2+(t.y-e.y)**2),s=Math.min(o*r,150);return{x:i,y:n===`up`?a-s:a+s}}(this.startPosition,{x:t,y:n},`up`,.3);await this.animate([{transform:`translate(${this.startPosition.x-t}px, ${this.startPosition.y-n}px) scale(0.1)`,opacity:0},{transform:`translate(${r.x-t}px, ${r.y-n}px) scale(0.6)`,opacity:.9,offset:.5},{transform:`translate(0, 0) scale(1)`,opacity:1}],{duration:400,easing:`cubic-bezier(0.34, 1.2, 0.64, 1)`,fill:`forwards`}).finished}setupAutoClose(){this.duration<=0||(this.startTime=Date.now(),this.elapsedBeforePause=0,this.paused$.pipe((0,i.switchMap)(e=>{if(e)return this.pausedAt=Date.now(),this.elapsedBeforePause+=this.pausedAt-this.startTime,r.NEVER;{this.startTime=Date.now();let e=this.duration-this.elapsedBeforePause;return e<=0?(this.close(),r.NEVER):(0,r.timer)(e)}}),(0,i.takeUntil)(this.disconnecting)).subscribe(()=>this.close()))}setupProgressUpdates(){this.duration<=0||(0,r.interval)(16).pipe((0,i.switchMap)(()=>this.paused$.pipe((0,i.map)(e=>{if(e)return this._progress;let t=this.elapsedBeforePause+(Date.now()-this.startTime);return Math.max(0,this.duration-t)/this.duration*100}))),(0,i.distinctUntilChanged)(),(0,i.tap)(e=>{this._progress=e}),(0,i.takeUntil)(this.disconnecting)).subscribe()}_playSound(){this.dispatchEvent(new CustomEvent(`playsound`,{detail:{type:this.type},bubbles:!0,composed:!0}))}_handleMouseEnter(){this._hovered=!0,this.paused$.next(!0)}_handleMouseLeave(){this._hovered=!1,this.paused$.next(!1)}async close(){this._closing||(this._closing=!0,this._visible=!1,await this.animate([{transform:`translate(0, 0) scale(1)`,opacity:1},{transform:`translate(0, -20px) scale(0.8)`,opacity:0}],{duration:200,easing:`cubic-bezier(0.4, 0, 1, 1)`,fill:`forwards`}).finished,this.dispatchEvent(new CustomEvent(`close`,{detail:{id:this.id},bubbles:!0,composed:!0})))}_getEmoji(){switch(this.type){case`success`:return`✅`;case`warning`:return`⚠️`;case`error`:return`❌`;default:return`💡`}}render(){return!this._visible&&this._closing?o.html``:o.html`
2
+ <div
3
+ class="notification ${this.type} ${this._closing?`closing`:``} ${this._hovered?`hovered`:``}"
4
+ role="alert"
5
+ @mouseenter=${this._handleMouseEnter}
6
+ @mouseleave=${this._handleMouseLeave}
7
+ >
8
+ <span class="emoji">${this._getEmoji()}</span>
9
+ <div class="content">
10
+ ${this.title?o.html`<div class="title">${this.title}</div>`:``}
11
+ <div class="message">${this.message}</div>
12
+ </div>
13
+ ${this.closable?o.html`
14
+ <button class="close" aria-label="Close notification" @click=${this.close}>x</button>
15
+ `:``}
16
+ ${this.showProgress||this.duration>0?o.html`<schmancy-progress
17
+ class="progress"
18
+ size="xs"
19
+ .value=${this._progress}
20
+ ?indeterminate=${this.showProgress&&this.duration===0}
21
+ ></schmancy-progress>`:``}
22
+ </div>
23
+ `}};e.i([(0,a.property)({type:String})],s.prototype,`title`,void 0),e.i([(0,a.property)({type:String})],s.prototype,`message`,void 0),e.i([(0,a.property)({type:String})],s.prototype,`type`,void 0),e.i([(0,a.property)({type:Boolean})],s.prototype,`closable`,void 0),e.i([(0,a.property)({type:Number})],s.prototype,`duration`,void 0),e.i([(0,a.property)({type:String})],s.prototype,`id`,void 0),e.i([(0,a.property)({type:Boolean})],s.prototype,`playSound`,void 0),e.i([(0,a.property)({type:Boolean})],s.prototype,`showProgress`,void 0),e.i([(0,a.property)({type:Object})],s.prototype,`startPosition`,void 0),e.i([(0,a.state)()],s.prototype,`_visible`,void 0),e.i([(0,a.state)()],s.prototype,`_progress`,void 0),e.i([(0,a.state)()],s.prototype,`_hovered`,void 0),e.i([(0,a.state)()],s.prototype,`_closing`,void 0);var c=s=e.i([(0,a.customElement)(`sch-notification`)],s),l={info:`curious`,success:`content`,warning:`anxious`,error:`disappointed`},u={x:window.innerWidth-100,y:50};typeof window<`u`&&window.addEventListener(`mousedown`,e=>{u={x:e.clientX,y:e.clientY}},{capture:!0,passive:!0});var d=null,f=class e{static{this.DEFAULT_OPTIONS={duration:1e3,closable:!0,playSound:!0}}static{this.TYPE_DURATIONS={success:1500,info:2e3,warning:2500,error:2500}}constructor(){this.notificationStack=[],this.audioVolume=.1,n.t.setVolume(this.audioVolume)}static getInstance(){return e.instance||=new e,e.instance}notify(t){let r={...e.DEFAULT_OPTIONS,...t,duration:t.duration??e.DEFAULT_OPTIONS.duration},i=r.id||`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`;this.notificationStack.push(i),d&&=(d.remove(),null);let a=document.createElement(`sch-notification`);return a.id=i,a.title=r.title||``,a.message=r.message,a.type=r.type||`info`,a.duration=r.duration??1e3,a.closable=!1!==r.closable,a.playSound=!1,a.showProgress=r.showProgress||!1,a.startPosition={...u},!1!==r.playSound&&n.t.play(l[a.type]),a.addEventListener(`close`,()=>{let e=this.notificationStack.indexOf(i);e>-1&&this.notificationStack.splice(e,1),a.remove(),d===a&&(d=null)}),document.body.appendChild(a),d=a,i}dismiss(e){let t;if(e){let n=this.notificationStack.indexOf(e);n>-1&&(this.notificationStack.splice(n,1),t=e)}else t=this.notificationStack.pop();t&&d&&d.id===t&&d.close()}update(e,t){d&&d.id===e&&(t.title!==void 0&&(d.title=t.title),t.message!==void 0&&(d.message=t.message),t.type!==void 0&&(d.type=t.type))}info(t,n={}){return this.notify({message:t??``,type:`info`,duration:t?n.duration??e.TYPE_DURATIONS.info:1,...n})}success(t,n={}){return this.notify({message:t??``,type:`success`,duration:t?n.duration??e.TYPE_DURATIONS.success:1,...n})}warning(t,n={}){return this.notify({message:t??``,type:`warning`,duration:t?n.duration??e.TYPE_DURATIONS.warning:1,...n})}error(t,n={}){return this.notify({message:t??``,type:`error`,duration:t?n.duration??e.TYPE_DURATIONS.error:1,...n})}customDuration(e,t,n={}){return this.notify({message:e,duration:t,...n})}persistent(e,t={}){return this.notify({message:e,duration:0,...t})}},p={show:e=>f.getInstance().notify(e),info:(e,t={})=>f.getInstance().info(e,t),success:(e,t={})=>f.getInstance().success(e,t),warning:(e,t={})=>f.getInstance().warning(e,t),error:(e,t={})=>f.getInstance().error(e,t),customDuration:(e,t,n={})=>f.getInstance().customDuration(e,t,n),persistent:(e,t={})=>f.getInstance().persistent(e,t),dismiss:e=>f.getInstance().dismiss(e),update:(e,t)=>f.getInstance().update(e,t)};function m(e){return t=>{let n;return e.loadingMessage&&(n=p.show({message:e.loadingMessage,type:e.loadingType||`info`,duration:0,showProgress:!0})),t.pipe((0,r.tap)(t=>{if(n&&typeof t==`object`&&t){let r;if(`progress`in t&&typeof t.progress==`number`)r=t.progress;else if(`loaded`in t&&`total`in t){let e=t.loaded,n=t.total;typeof e==`number`&&typeof n==`number`&&n>0&&(r=e/n*100)}r!==void 0&&p.update?.(n,{message:`${e.loadingMessage} (${Math.round(r)}%)`})}typeof t==`object`&&t&&(`progress`in t||`loaded`in t&&`total`in t)||(n&&!1!==e.autoDismissLoading&&(p.dismiss(n),n=void 0),e.successMessage&&p.show({message:e.successMessage,type:e.successType||`success`,duration:e.successDuration??2e3}))}),(0,r.catchError)(t=>{if(n&&!1!==e.autoDismissLoading&&(p.dismiss(n),n=void 0),e.errorMessage){let n=typeof e.errorMessage==`function`?e.errorMessage(t):e.errorMessage;p.show({message:n,type:e.errorType||`error`,duration:e.errorDuration??3e3})}throw t}),(0,r.finalize)(()=>{n&&!1!==e.autoDismissLoading&&p.dismiss(n)}))}}function h(e,t,n){return m({loadingMessage:e,successMessage:t||void 0,errorMessage:n||void 0,autoDismissLoading:!0})}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return m}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-BjwTfLAl.cjs","names":[],"sources":["../src/notification/notification.scss?inline","../src/notification/notification.ts","../src/notification/notification-service.ts","../src/notification/notify.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n}\n\n.notification {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: flex-start;\n\tgap: 10px;\n\tpadding: 12px;\n\tpadding-right: 32px;\n\tbackground: var(--schmancy-sys-color-surface-container);\n\tborder-radius: var(--schmancy-sys-shape-corner-extraLarge, 16px);\n\tcolor: var(--schmancy-sys-color-surface-on);\n\tmax-width: 320px;\n\toverflow: hidden;\n\n\t/* Type-colored luminous glow */\n\t--notification-glow-color: var(--schmancy-sys-color-primary-default);\n\tbox-shadow: 0 4px 24px -6px color-mix(in srgb, var(--notification-glow-color) 18%, transparent);\n\tborder-left: 2px solid color-mix(in srgb, var(--notification-glow-color) 50%, transparent);\n\n\ttransition:\n\t\tbox-shadow 300ms ease,\n\t\ttransform 300ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\n\t&.info { --notification-glow-color: var(--schmancy-sys-color-primary-default); }\n\t&.success { --notification-glow-color: var(--schmancy-sys-color-success-default); }\n\t&.warning { --notification-glow-color: var(--schmancy-sys-color-warning-default); }\n\t&.error { --notification-glow-color: var(--schmancy-sys-color-error-default); }\n\n\t&.hovered {\n\t\tbox-shadow: 0 8px 32px -4px color-mix(in srgb, var(--notification-glow-color) 28%, transparent);\n\t\ttransform: translateY(-2px);\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: box-shadow 200ms ease;\n\t\t&.hovered { transform: none; }\n\t}\n}\n\n.emoji {\n\tfont-size: 20px;\n\tline-height: 1;\n\tflex-shrink: 0;\n\tmargin-top: 1px;\n}\n\n.content {\n\tflex: 1;\n\tmin-width: 0;\n}\n\n.title {\n\tfont-weight: 500;\n\tfont-size: 13px;\n\tline-height: 1.4;\n\tmargin-bottom: 2px;\n\tletter-spacing: 0.01em;\n\n\t.info & {\n\t\tcolor: var(--schmancy-sys-color-primary-default);\n\t}\n\t.success & {\n\t\tcolor: var(--schmancy-sys-color-success-default);\n\t}\n\t.warning & {\n\t\tcolor: var(--schmancy-sys-color-tertiary-default);\n\t}\n\t.error & {\n\t\tcolor: var(--schmancy-sys-color-error-default);\n\t}\n}\n\n.message {\n\tfont-size: 13px;\n\tline-height: 1.4;\n\topacity: 0.75;\n\tletter-spacing: 0.01em;\n}\n\n.close {\n\tposition: absolute;\n\ttop: 8px;\n\tright: 6px;\n\tbackground: none;\n\tborder: none;\n\tfont-size: 16px;\n\tfont-weight: 300;\n\tcolor: var(--schmancy-sys-color-surface-onVariant);\n\tcursor: pointer;\n\tpadding: 4px 6px;\n\tline-height: 1;\n\topacity: 0.4;\n\tborder-radius: var(--schmancy-sys-shape-corner-full, 50%);\n\ttransition: opacity 200ms ease;\n\n\t&:hover {\n\t\topacity: 0.8;\n\t}\n\n\t&:focus-visible {\n\t\toutline: none;\n\t\topacity: 1;\n\t\tbox-shadow:\n\t\t\t0 0 0 2px var(--schmancy-sys-color-primary-default),\n\t\t\t0 0 8px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 25%, transparent);\n\t}\n}\n\n.progress {\n\tposition: absolute;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { BehaviorSubject, timer, interval, NEVER } from 'rxjs'\nimport { switchMap, takeUntil, map, tap, distinctUntilChanged } from 'rxjs/operators'\nimport '../progress/progress'\nimport style from './notification.scss?inline'\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error'\n\n/**\n * Calculate a point on an arc between two points\n */\nfunction calculateArcPoint(\n\tstart: { x: number; y: number },\n\tend: { x: number; y: number },\n\tarcDirection: 'up' | 'down' = 'up',\n\tintensity: number = 0.3,\n): { x: number; y: number } {\n\tconst midX = (start.x + end.x) / 2\n\tconst midY = (start.y + end.y) / 2\n\tconst distance = Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2))\n\tconst arcHeight = Math.min(distance * intensity, 150)\n\treturn {\n\t\tx: midX,\n\t\ty: arcDirection === 'up' ? midY - arcHeight : midY + arcHeight,\n\t}\n}\n\n/**\n * @fires close - When notification is closed\n */\n@customElement('sch-notification')\nexport default class SchmancyNotification extends $LitElement(style) {\n\t@property({ type: String }) title = ''\n\t@property({ type: String }) message = ''\n\t@property({ type: String }) type: NotificationType = 'info'\n\t@property({ type: Boolean }) closable = true\n\t@property({ type: Number }) duration = 5000 // 0 means no auto-close\n\t@property({ type: String }) id = `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\t@property({ type: Boolean }) playSound = true\n\t@property({ type: Boolean }) showProgress = false // Show indeterminate progress bar\n\t@property({ type: Object }) startPosition: { x: number; y: number } = { x: 0, y: 0 }\n\n\t@state() private _visible = true\n\t@state() private _progress = 100\n\t@state() private _hovered = false\n\t@state() private _closing = false\n\n\tprivate paused$ = new BehaviorSubject<boolean>(false)\n\tprivate startTime = 0\n\tprivate pausedAt = 0\n\tprivate elapsedBeforePause = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set fixed positioning for blackbird animation\n\t\tthis.style.position = 'fixed'\n\t\tthis.style.top = '16px'\n\t\tthis.style.right = '16px'\n\t\tthis.style.zIndex = '10001'\n\t\tthis.style.opacity = '0'\n\n\t\t// Animate in after first render\n\t\tthis.updateComplete.then(() => {\n\t\t\tthis.animateIn()\n\t\t})\n\n\t\tif (this.duration > 0) {\n\t\t\tthis.setupAutoClose()\n\t\t\tthis.setupProgressUpdates()\n\t\t}\n\n\t\tif (this.playSound) {\n\t\t\tthis._playSound()\n\t\t}\n\t}\n\n\tprivate async animateIn() {\n\t\t// Get the notification element's final position\n\t\tconst rect = this.getBoundingClientRect()\n\t\tconst targetX = rect.left + rect.width / 2\n\t\tconst targetY = rect.top + rect.height / 2\n\n\t\t// Calculate arc point for upward arc\n\t\tconst arcPoint = calculateArcPoint(this.startPosition, { x: targetX, y: targetY }, 'up', 0.3)\n\n\t\t// Animate from click position to final position with arc\n\t\tawait this.animate(\n\t\t\t[\n\t\t\t\t{\n\t\t\t\t\ttransform: `translate(${this.startPosition.x - targetX}px, ${this.startPosition.y - targetY}px) scale(0.1)`,\n\t\t\t\t\topacity: 0,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttransform: `translate(${arcPoint.x - targetX}px, ${arcPoint.y - targetY}px) scale(0.6)`,\n\t\t\t\t\topacity: 0.9,\n\t\t\t\t\toffset: 0.5,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttransform: 'translate(0, 0) scale(1)',\n\t\t\t\t\topacity: 1,\n\t\t\t\t},\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 400,\n\t\t\t\teasing: 'cubic-bezier(0.34, 1.2, 0.64, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t).finished\n\t}\n\n\tprivate setupAutoClose() {\n\t\tif (this.duration <= 0) return\n\n\t\tthis.startTime = Date.now()\n\t\tthis.elapsedBeforePause = 0\n\n\t\tthis.paused$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(paused => {\n\t\t\t\t\tif (paused) {\n\t\t\t\t\t\tthis.pausedAt = Date.now()\n\t\t\t\t\t\tthis.elapsedBeforePause += this.pausedAt - this.startTime\n\t\t\t\t\t\treturn NEVER\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.startTime = Date.now()\n\t\t\t\t\t\tconst remaining = this.duration - this.elapsedBeforePause\n\t\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\treturn NEVER\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn timer(remaining)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.close())\n\t}\n\n\tprivate setupProgressUpdates() {\n\t\tif (this.duration <= 0) return\n\n\t\tinterval(16)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tthis.paused$.pipe(\n\t\t\t\t\t\tmap(paused => {\n\t\t\t\t\t\t\tif (paused) return this._progress\n\t\t\t\t\t\t\tconst elapsed = this.elapsedBeforePause + (Date.now() - this.startTime)\n\t\t\t\t\t\t\tconst remaining = Math.max(0, this.duration - elapsed)\n\t\t\t\t\t\t\treturn (remaining / this.duration) * 100\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(progress => {\n\t\t\t\t\tthis._progress = progress\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate _playSound() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('playsound', {\n\t\t\t\tdetail: { type: this.type },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate _handleMouseEnter() {\n\t\tthis._hovered = true\n\t\tthis.paused$.next(true)\n\t}\n\n\tprivate _handleMouseLeave() {\n\t\tthis._hovered = false\n\t\tthis.paused$.next(false)\n\t}\n\n\tpublic async close() {\n\t\tif (this._closing) return\n\t\tthis._closing = true\n\t\tthis._visible = false\n\n\t\t// Animate out before dispatching close event\n\t\tawait this.animate(\n\t\t\t[\n\t\t\t\t{ transform: 'translate(0, 0) scale(1)', opacity: 1 },\n\t\t\t\t{ transform: 'translate(0, -20px) scale(0.8)', opacity: 0 },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 200,\n\t\t\t\teasing: 'cubic-bezier(0.4, 0, 1, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t).finished\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('close', {\n\t\t\t\tdetail: { id: this.id },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate _getEmoji(): string {\n\t\tswitch (this.type) {\n\t\t\tcase 'success':\n\t\t\t\treturn '\\u2705'\n\t\t\tcase 'warning':\n\t\t\t\treturn '\\u26A0\\uFE0F'\n\t\t\tcase 'error':\n\t\t\t\treturn '\\u274C'\n\t\t\tdefault:\n\t\t\t\treturn '\\u{1F4A1}'\n\t\t}\n\t}\n\n\trender() {\n\t\tif (!this._visible && this._closing) return html``\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"notification ${this.type} ${this._closing ? 'closing' : ''} ${this._hovered ? 'hovered' : ''}\"\n\t\t\t\trole=\"alert\"\n\t\t\t\t@mouseenter=${this._handleMouseEnter}\n\t\t\t\t@mouseleave=${this._handleMouseLeave}\n\t\t\t>\n\t\t\t\t<span class=\"emoji\">${this._getEmoji()}</span>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t${this.title ? html`<div class=\"title\">${this.title}</div>` : ''}\n\t\t\t\t\t<div class=\"message\">${this.message}</div>\n\t\t\t\t</div>\n\t\t\t\t${this.closable\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<button class=\"close\" aria-label=\"Close notification\" @click=${this.close}>x</button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\t\t\t\t${this.showProgress || this.duration > 0\n\t\t\t\t\t? html`<schmancy-progress\n\t\t\t\t\t\tclass=\"progress\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t.value=${this._progress}\n\t\t\t\t\t\t?indeterminate=${this.showProgress && this.duration === 0}\n\t\t\t\t\t></schmancy-progress>`\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification': SchmancyNotification\n\t}\n}\n","import { $sounds, type Feeling } from '../audio'\nimport SchmancyNotification, { NotificationType } from './notification'\n\nexport interface NotificationOptions {\n\tid?: string\n\ttitle?: string\n\tmessage: string\n\ttype?: NotificationType\n\tduration?: number\n\tclosable?: boolean\n\tplaySound?: boolean\n\tshowProgress?: boolean\n}\n\nconst typeToFeeling: Record<NotificationType, Feeling> = {\n\tinfo: 'curious',\n\tsuccess: 'content',\n\twarning: 'anxious',\n\terror: 'disappointed',\n}\n\n// Track last mouse position\nlet lastClickPosition = { x: window.innerWidth - 100, y: 50 }\n\n// Global mousedown listener to track click position\nif (typeof window !== 'undefined') {\n\twindow.addEventListener(\n\t\t'mousedown',\n\t\t(e: MouseEvent) => {\n\t\t\tlastClickPosition = { x: e.clientX, y: e.clientY }\n\t\t},\n\t\t{ capture: true, passive: true },\n\t)\n}\n\n// Track current notification element\nlet currentNotification: SchmancyNotification | null = null\n\n/**\n * Notification service for centralized notification management.\n * Provides a simple API for showing notifications.\n */\nexport class NotificationService {\n\tprivate static instance: NotificationService\n\tprivate notificationStack: string[] = []\n\tprivate audioVolume = 0.1\n\n\t// Default notification options\n\tprivate static DEFAULT_OPTIONS: Partial<NotificationOptions> = {\n\t\tduration: 1000, // 1 seconds - long enough to be readable\n\t\tclosable: true,\n\t\tplaySound: true,\n\t}\n\n\t// Type-specific default durations (in milliseconds)\n\tprivate static TYPE_DURATIONS: Record<NotificationType, number> = {\n\t\tsuccess: 1500, // 1.5 seconds - quick confirmation\n\t\tinfo: 2000, // 2 seconds - informational\n\t\twarning: 2500, // 2.5 seconds - needs attention\n\t\terror: 2500, // 2.5 seconds - important\n\t}\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {\n\t\t$sounds.setVolume(this.audioVolume)\n\t}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): NotificationService {\n\t\tif (!NotificationService.instance) {\n\t\t\tNotificationService.instance = new NotificationService()\n\t\t}\n\t\treturn NotificationService.instance\n\t}\n\n\t/**\n\t * Show a notification\n\t * @returns The ID of the created notification\n\t */\n\tpublic notify(options: NotificationOptions): string {\n\t\t// Apply default options\n\t\tconst completeOptions = {\n\t\t\t...NotificationService.DEFAULT_OPTIONS,\n\t\t\t...options,\n\t\t\t// Override with duraton from options if provided, otherwise use default\n\t\t\tduration: options.duration ?? NotificationService.DEFAULT_OPTIONS.duration,\n\t\t}\n\n\t\tconst id = completeOptions.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\t// Add to stack for tracking\n\t\tthis.notificationStack.push(id)\n\n\t\t// Remove existing notification if any (only 1 at a time)\n\t\tif (currentNotification) {\n\t\t\tcurrentNotification.remove()\n\t\t\tcurrentNotification = null\n\t\t}\n\n\t\t// Create the notification element directly\n\t\tconst notification = document.createElement('sch-notification') as SchmancyNotification\n\t\tnotification.id = id\n\t\tnotification.title = completeOptions.title || ''\n\t\tnotification.message = completeOptions.message\n\t\tnotification.type = completeOptions.type || 'info'\n\t\tnotification.duration = completeOptions.duration ?? 1000\n\t\tnotification.closable = completeOptions.closable !== false\n\t\tnotification.playSound = false // We handle sound here\n\t\tnotification.showProgress = completeOptions.showProgress || false\n\t\tnotification.startPosition = { ...lastClickPosition }\n\n\t\t// Play sound if enabled\n\t\tif (completeOptions.playSound !== false) {\n\t\t\t$sounds.play(typeToFeeling[notification.type])\n\t\t}\n\n\t\t// Listen for close event\n\t\tnotification.addEventListener('close', () => {\n\t\t\tconst index = this.notificationStack.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.notificationStack.splice(index, 1)\n\t\t\t}\n\t\t\tnotification.remove()\n\t\t\tif (currentNotification === notification) {\n\t\t\t\tcurrentNotification = null\n\t\t\t}\n\t\t})\n\n\t\t// Append to body\n\t\tdocument.body.appendChild(notification)\n\t\tcurrentNotification = notification\n\n\t\treturn id\n\t}\n\n\t/**\n\t * Dismiss a notification\n\t * @param id Optional notification ID. If not provided, dismisses the most recent notification\n\t */\n\tpublic dismiss(id?: string): void {\n\t\tlet targetId: string | undefined\n\n\t\tif (id) {\n\t\t\t// Remove specific notification from stack\n\t\t\tconst index = this.notificationStack.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.notificationStack.splice(index, 1)\n\t\t\t\ttargetId = id\n\t\t\t}\n\t\t} else {\n\t\t\t// Remove most recent notification (last in stack)\n\t\t\ttargetId = this.notificationStack.pop()\n\t\t}\n\n\t\tif (targetId && currentNotification && currentNotification.id === targetId) {\n\t\t\tcurrentNotification.close()\n\t\t}\n\t}\n\n\t/**\n\t * Update a notification's content\n\t */\n\tpublic update(id: string, options: Partial<NotificationOptions>): void {\n\t\tif (currentNotification && currentNotification.id === id) {\n\t\t\tif (options.title !== undefined) currentNotification.title = options.title\n\t\t\tif (options.message !== undefined) currentNotification.message = options.message\n\t\t\tif (options.type !== undefined) currentNotification.type = options.type\n\t\t}\n\t}\n\n\t/**\n\t * Show an info notification\n\t */\n\tpublic info(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'info',\n\t\t\tduration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.info) : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a success notification\n\t */\n\tpublic success(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'success',\n\t\t\tduration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.success) : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a warning notification\n\t */\n\tpublic warning(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'warning',\n\t\t\tduration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.warning) : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show an error notification\n\t */\n\tpublic error(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'error',\n\t\t\tduration: message ? (options.duration ?? NotificationService.TYPE_DURATIONS.error) : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a notification with a custom duration\n\t */\n\tpublic customDuration(\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a persistent notification (won't auto-dismiss)\n\t */\n\tpublic persistent(message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration: 0, // Zero duration means no auto-close\n\t\t\t...options,\n\t\t})\n\t}\n}\n\n/**\n * Global notification utility - provides a quick way to show notifications\n */\nexport const $notify = {\n\t/**\n\t * Show a notification\n\t */\n\tshow: (options: NotificationOptions): string => {\n\t\treturn NotificationService.getInstance().notify(options)\n\t},\n\n\t/**\n\t * Show an info notification\n\t */\n\tinfo: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().info(message, options)\n\t},\n\n\t/**\n\t * Show a success notification\n\t */\n\tsuccess: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().success(message, options)\n\t},\n\n\t/**\n\t * Show a warning notification\n\t */\n\twarning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().warning(message, options)\n\t},\n\n\t/**\n\t * Show an error notification\n\t */\n\terror: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().error(message, options)\n\t},\n\n\t/**\n\t * Show a notification with a custom duration\n\t * @param message The notification message\n\t * @param duration Duration in milliseconds before auto-dismissing (0 for no auto-dismiss)\n\t * @param options Additional notification options\n\t */\n\tcustomDuration: (\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string => {\n\t\treturn NotificationService.getInstance().customDuration(message, duration, options)\n\t},\n\n\t/**\n\t * Show a persistent notification that won't auto-dismiss\n\t */\n\tpersistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string => {\n\t\treturn NotificationService.getInstance().persistent(message, options)\n\t},\n\n\t/**\n\t * Dismiss a notification\n\t * @param id Optional notification ID. If not provided, dismisses the most recent notification (queue-like behavior)\n\t */\n\tdismiss: (id?: string): void => {\n\t\treturn NotificationService.getInstance().dismiss(id)\n\t},\n\n\t/**\n\t * Update a notification's content\n\t */\n\tupdate: (id: string, options: Partial<NotificationOptions>): void => {\n\t\treturn NotificationService.getInstance().update(id, options)\n\t},\n}\n\nexport default NotificationService\n","import { Observable, tap, finalize, catchError } from 'rxjs'\r\nimport { $notify, NotificationOptions } from './notification-service'\r\n\r\nexport interface NotifyOptions {\r\n\t/**\r\n\t * Message to show while the operation is in progress\r\n\t */\r\n\tloadingMessage?: string\r\n\t/**\r\n\t * Message to show when the operation completes successfully\r\n\t */\r\n\tsuccessMessage?: string\r\n\t/**\r\n\t * Message to show when the operation fails (can be a function to format error)\r\n\t */\r\n\terrorMessage?: string | ((error: any) => string)\r\n\t/**\r\n\t * Type of notification for loading state\r\n\t */\r\n\tloadingType?: NotificationOptions['type']\r\n\t/**\r\n\t * Type of notification for success state\r\n\t */\r\n\tsuccessType?: NotificationOptions['type']\r\n\t/**\r\n\t * Type of notification for error state\r\n\t */\r\n\terrorType?: NotificationOptions['type']\r\n\t/**\r\n\t * Whether to auto-dismiss the loading notification on complete/error\r\n\t */\r\n\tautoDismissLoading?: boolean\r\n\t/**\r\n\t * Duration for success notification (ms). Use 0 for persistent\r\n\t */\r\n\tsuccessDuration?: number\r\n\t/**\r\n\t * Duration for error notification (ms). Use 0 for persistent\r\n\t */\r\n\terrorDuration?: number\r\n}\r\n\r\n/**\r\n * Wraps an Observable with notification lifecycle management.\r\n * Shows a loading notification with progress indicator, then auto-dismisses and shows success/error notification.\r\n * \r\n * @example\r\n * ```typescript\r\n * // Basic usage with progress indicator\r\n * someApiCall().pipe(\r\n * notify({\r\n * loadingMessage: 'Loading data...',\r\n * successMessage: 'Data loaded successfully!',\r\n * errorMessage: 'Failed to load data'\r\n * })\r\n * ).subscribe()\r\n * \r\n * // With custom durations\r\n * saveData().pipe(\r\n * notify({\r\n * loadingMessage: 'Saving...',\r\n * successMessage: 'Saved!',\r\n * successDuration: 5000, // Success stays for 5 seconds\r\n * errorMessage: (err) => `Save failed: ${err.message}`,\r\n * errorDuration: 0 // Error is persistent until dismissed\r\n * })\r\n * ).subscribe()\r\n * \r\n * // Full configuration example\r\n * uploadFile().pipe(\r\n * notify({\r\n * loadingMessage: 'Uploading file...',\r\n * loadingType: 'info',\r\n * successMessage: 'Upload complete!',\r\n * successType: 'success',\r\n * successDuration: 3000,\r\n * errorMessage: (err) => `Upload failed: ${err.message}`,\r\n * errorType: 'error',\r\n * errorDuration: 10000,\r\n * autoDismissLoading: true\r\n * })\r\n * ).subscribe()\r\n * ```\r\n */\r\nexport function notify<T>(options: NotifyOptions) {\r\n\treturn (source: Observable<T>): Observable<T> => {\r\n\t\tlet loadingNotificationId: string | undefined\r\n\r\n\t\t// Show loading notification if message provided\r\n\t\tif (options.loadingMessage) {\r\n\t\t\tloadingNotificationId = $notify.show({\r\n\t\t\t\tmessage: options.loadingMessage,\r\n\t\t\t\ttype: options.loadingType || 'info',\r\n\t\t\t\tduration: 0, // Persistent until dismissed\r\n\t\t\t\tshowProgress: true, // Show indeterminate progress by default\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn source.pipe(\r\n\t\t\ttap((value) => {\r\n\t\t\t\t// Check if the emitted value contains progress information\r\n\t\t\t\t// Common patterns: { progress: number }, { loaded: number, total: number }, etc.\r\n\t\t\t\tif (loadingNotificationId && typeof value === 'object' && value !== null) {\r\n\t\t\t\t\tlet progress: number | undefined\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Check for different progress patterns\r\n\t\t\t\t\tif ('progress' in value && typeof (value as any).progress === 'number') {\r\n\t\t\t\t\t\tprogress = (value as any).progress\r\n\t\t\t\t\t} else if ('loaded' in value && 'total' in value) {\r\n\t\t\t\t\t\tconst loaded = (value as any).loaded\r\n\t\t\t\t\t\tconst total = (value as any).total\r\n\t\t\t\t\t\tif (typeof loaded === 'number' && typeof total === 'number' && total > 0) {\r\n\t\t\t\t\t\t\tprogress = (loaded / total) * 100\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t// Update notification with progress if available\r\n\t\t\t\t\tif (progress !== undefined) {\r\n\t\t\t\t\t\t// We need to update the progress of the notification\r\n\t\t\t\t\t\t// For now, we'll update the message to show progress percentage\r\n\t\t\t\t\t\t$notify.update?.(loadingNotificationId, {\r\n\t\t\t\t\t\t\tmessage: `${options.loadingMessage} (${Math.round(progress)}%)`,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// Check if this is the final success emission (not a progress update)\r\n\t\t\t\t// Typically file uploads emit progress events then a final result\r\n\t\t\t\tconst isProgressUpdate = typeof value === 'object' && value !== null && \r\n\t\t\t\t\t('progress' in value || ('loaded' in value && 'total' in value))\r\n\t\t\t\t\r\n\t\t\t\tif (!isProgressUpdate) {\r\n\t\t\t\t\t// On successful final emission, dismiss loading and show success\r\n\t\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\r\n\t\t\t\t\t\t$notify.dismiss(loadingNotificationId)\r\n\t\t\t\t\t\tloadingNotificationId = undefined\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (options.successMessage) {\r\n\t\t\t\t\t\t$notify.show({\r\n\t\t\t\t\t\t\tmessage: options.successMessage,\r\n\t\t\t\t\t\t\ttype: options.successType || 'success',\r\n\t\t\t\t\t\t\tduration: options.successDuration ?? 2000,\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tcatchError((error) => {\r\n\t\t\t\t// On error, dismiss loading and show error\r\n\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\r\n\t\t\t\t\t$notify.dismiss(loadingNotificationId)\r\n\t\t\t\t\tloadingNotificationId = undefined\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (options.errorMessage) {\r\n\t\t\t\t\tconst message = typeof options.errorMessage === 'function' \r\n\t\t\t\t\t\t? options.errorMessage(error)\r\n\t\t\t\t\t\t: options.errorMessage\r\n\t\t\t\t\t\r\n\t\t\t\t\t$notify.show({\r\n\t\t\t\t\t\tmessage,\r\n\t\t\t\t\t\ttype: options.errorType || 'error',\r\n\t\t\t\t\t\tduration: options.errorDuration ?? 3000,\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Re-throw the error to maintain the error flow\r\n\t\t\t\tthrow error\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\t// Clean up any remaining loading notification\r\n\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\r\n\t\t\t\t\t$notify.dismiss(loadingNotificationId)\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t)\r\n\t}\r\n}\r\n\r\n/**\r\n * Simplified version for API calls that just need loading and auto-dismiss.\r\n * Perfect for fire-and-forget operations where you want to show progress.\r\n * \r\n * @example\r\n * ```typescript\r\n * downloadData().pipe(\r\n * notifyProgress('Downloading...')\r\n * ).subscribe()\r\n * \r\n * // With custom messages\r\n * saveDocument().pipe(\r\n * notifyProgress('Saving document...', 'Document saved!', 'Save failed')\r\n * ).subscribe()\r\n * ```\r\n */\r\nexport function notifyProgress<T>(\r\n\tloadingMessage: string,\r\n\tsuccessMessage?: string,\r\n\terrorMessage?: string\r\n) {\r\n\treturn notify<T>({\r\n\t\tloadingMessage,\r\n\t\tsuccessMessage: successMessage || undefined,\r\n\t\terrorMessage: errorMessage || undefined,\r\n\t\tautoDismissLoading: true,\r\n\t})\r\n}"],"mappings":"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"}
@@ -0,0 +1,304 @@
1
+ import { i as e } from "./tailwind.mixin-BIVhjNvD.js";
2
+ import { t } from "./litElement.mixin-Dm-4L8zL.js";
3
+ import "./mixins.js";
4
+ import { t as n } from "./audio-kz8UgPTO.js";
5
+ import "./progress-BUh5WBqx.js";
6
+ import { BehaviorSubject as r, NEVER as i, catchError as a, finalize as o, interval as s, tap as c, timer as l } from "rxjs";
7
+ import { distinctUntilChanged as u, map as d, switchMap as f, takeUntil as p, tap as m } from "rxjs/operators";
8
+ import { customElement as h, property as g, state as _ } from "lit/decorators.js";
9
+ import { html as v } from "lit";
10
+ var y = class extends t(":host{display:block}.notification{background:var(--schmancy-sys-color-surface-container);border-radius:var(--schmancy-sys-shape-corner-extraLarge,16px);color:var(--schmancy-sys-color-surface-on);--notification-glow-color:var(--schmancy-sys-color-primary-default);max-width:320px;box-shadow:0 4px 24px -6px color-mix(in srgb, var(--notification-glow-color) 18%, transparent);border-left:2px solid color-mix(in srgb, var(--notification-glow-color) 50%, transparent);align-items:flex-start;gap:10px;padding:12px 32px 12px 12px;transition:box-shadow .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.notification.info{--notification-glow-color:var(--schmancy-sys-color-primary-default)}.notification.success{--notification-glow-color:var(--schmancy-sys-color-success-default)}.notification.warning{--notification-glow-color:var(--schmancy-sys-color-warning-default)}.notification.error{--notification-glow-color:var(--schmancy-sys-color-error-default)}.notification.hovered{box-shadow:0 8px 32px -4px color-mix(in srgb, var(--notification-glow-color) 28%, transparent);transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){.notification{transition:box-shadow .2s}.notification.hovered{transform:none}}.emoji{flex-shrink:0;margin-top:1px;font-size:20px;line-height:1}.content{flex:1;min-width:0}.title{letter-spacing:.01em;margin-bottom:2px;font-size:13px;font-weight:500;line-height:1.4}.info .title{color:var(--schmancy-sys-color-primary-default)}.success .title{color:var(--schmancy-sys-color-success-default)}.warning .title{color:var(--schmancy-sys-color-tertiary-default)}.error .title{color:var(--schmancy-sys-color-error-default)}.message{opacity:.75;letter-spacing:.01em;font-size:13px;line-height:1.4}.close{color:var(--schmancy-sys-color-surface-onVariant);cursor:pointer;opacity:.4;border-radius:var(--schmancy-sys-shape-corner-full,50%);background:0 0;border:none;padding:4px 6px;font-size:16px;font-weight:300;line-height:1;transition:opacity .2s;position:absolute;top:8px;right:6px}.close:hover{opacity:.8}.close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--schmancy-sys-color-primary-default), 0 0 8px -2px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 25%, transparent);outline:none}.progress{position:absolute;bottom:0;left:0;right:0}") {
11
+ constructor(...e) {
12
+ super(...e), this.title = "", this.message = "", this.type = "info", this.closable = !0, this.duration = 5e3, this.id = `notification-${Date.now()}-${Math.floor(1e4 * Math.random())}`, this.playSound = !0, this.showProgress = !1, this.startPosition = {
13
+ x: 0,
14
+ y: 0
15
+ }, this._visible = !0, this._progress = 100, this._hovered = !1, this._closing = !1, this.paused$ = new r(!1), this.startTime = 0, this.pausedAt = 0, this.elapsedBeforePause = 0;
16
+ }
17
+ connectedCallback() {
18
+ super.connectedCallback(), this.style.position = "fixed", this.style.top = "16px", this.style.right = "16px", this.style.zIndex = "10001", this.style.opacity = "0", this.updateComplete.then(() => {
19
+ this.animateIn();
20
+ }), this.duration > 0 && (this.setupAutoClose(), this.setupProgressUpdates()), this.playSound && this._playSound();
21
+ }
22
+ async animateIn() {
23
+ let e = this.getBoundingClientRect(), t = e.left + e.width / 2, n = e.top + e.height / 2, r = function(e, t, n = "up", r = .3) {
24
+ let i = (e.x + t.x) / 2, a = (e.y + t.y) / 2, o = Math.sqrt((t.x - e.x) ** 2 + (t.y - e.y) ** 2), s = Math.min(o * r, 150);
25
+ return {
26
+ x: i,
27
+ y: n === "up" ? a - s : a + s
28
+ };
29
+ }(this.startPosition, {
30
+ x: t,
31
+ y: n
32
+ }, "up", .3);
33
+ await this.animate([
34
+ {
35
+ transform: `translate(${this.startPosition.x - t}px, ${this.startPosition.y - n}px) scale(0.1)`,
36
+ opacity: 0
37
+ },
38
+ {
39
+ transform: `translate(${r.x - t}px, ${r.y - n}px) scale(0.6)`,
40
+ opacity: .9,
41
+ offset: .5
42
+ },
43
+ {
44
+ transform: "translate(0, 0) scale(1)",
45
+ opacity: 1
46
+ }
47
+ ], {
48
+ duration: 400,
49
+ easing: "cubic-bezier(0.34, 1.2, 0.64, 1)",
50
+ fill: "forwards"
51
+ }).finished;
52
+ }
53
+ setupAutoClose() {
54
+ this.duration <= 0 || (this.startTime = Date.now(), this.elapsedBeforePause = 0, this.paused$.pipe(f((e) => {
55
+ if (e) return this.pausedAt = Date.now(), this.elapsedBeforePause += this.pausedAt - this.startTime, i;
56
+ {
57
+ this.startTime = Date.now();
58
+ let e = this.duration - this.elapsedBeforePause;
59
+ return e <= 0 ? (this.close(), i) : l(e);
60
+ }
61
+ }), p(this.disconnecting)).subscribe(() => this.close()));
62
+ }
63
+ setupProgressUpdates() {
64
+ this.duration <= 0 || s(16).pipe(f(() => this.paused$.pipe(d((e) => {
65
+ if (e) return this._progress;
66
+ let t = this.elapsedBeforePause + (Date.now() - this.startTime);
67
+ return Math.max(0, this.duration - t) / this.duration * 100;
68
+ }))), u(), m((e) => {
69
+ this._progress = e;
70
+ }), p(this.disconnecting)).subscribe();
71
+ }
72
+ _playSound() {
73
+ this.dispatchEvent(new CustomEvent("playsound", {
74
+ detail: { type: this.type },
75
+ bubbles: !0,
76
+ composed: !0
77
+ }));
78
+ }
79
+ _handleMouseEnter() {
80
+ this._hovered = !0, this.paused$.next(!0);
81
+ }
82
+ _handleMouseLeave() {
83
+ this._hovered = !1, this.paused$.next(!1);
84
+ }
85
+ async close() {
86
+ this._closing || (this._closing = !0, this._visible = !1, await this.animate([{
87
+ transform: "translate(0, 0) scale(1)",
88
+ opacity: 1
89
+ }, {
90
+ transform: "translate(0, -20px) scale(0.8)",
91
+ opacity: 0
92
+ }], {
93
+ duration: 200,
94
+ easing: "cubic-bezier(0.4, 0, 1, 1)",
95
+ fill: "forwards"
96
+ }).finished, this.dispatchEvent(new CustomEvent("close", {
97
+ detail: { id: this.id },
98
+ bubbles: !0,
99
+ composed: !0
100
+ })));
101
+ }
102
+ _getEmoji() {
103
+ switch (this.type) {
104
+ case "success": return "✅";
105
+ case "warning": return "⚠️";
106
+ case "error": return "❌";
107
+ default: return "💡";
108
+ }
109
+ }
110
+ render() {
111
+ return !this._visible && this._closing ? v`` : v`
112
+ <div
113
+ class="notification ${this.type} ${this._closing ? "closing" : ""} ${this._hovered ? "hovered" : ""}"
114
+ role="alert"
115
+ @mouseenter=${this._handleMouseEnter}
116
+ @mouseleave=${this._handleMouseLeave}
117
+ >
118
+ <span class="emoji">${this._getEmoji()}</span>
119
+ <div class="content">
120
+ ${this.title ? v`<div class="title">${this.title}</div>` : ""}
121
+ <div class="message">${this.message}</div>
122
+ </div>
123
+ ${this.closable ? v`
124
+ <button class="close" aria-label="Close notification" @click=${this.close}>x</button>
125
+ ` : ""}
126
+ ${this.showProgress || this.duration > 0 ? v`<schmancy-progress
127
+ class="progress"
128
+ size="xs"
129
+ .value=${this._progress}
130
+ ?indeterminate=${this.showProgress && this.duration === 0}
131
+ ></schmancy-progress>` : ""}
132
+ </div>
133
+ `;
134
+ }
135
+ };
136
+ e([g({ type: String })], y.prototype, "title", void 0), e([g({ type: String })], y.prototype, "message", void 0), e([g({ type: String })], y.prototype, "type", void 0), e([g({ type: Boolean })], y.prototype, "closable", void 0), e([g({ type: Number })], y.prototype, "duration", void 0), e([g({ type: String })], y.prototype, "id", void 0), e([g({ type: Boolean })], y.prototype, "playSound", void 0), e([g({ type: Boolean })], y.prototype, "showProgress", void 0), e([g({ type: Object })], y.prototype, "startPosition", void 0), e([_()], y.prototype, "_visible", void 0), e([_()], y.prototype, "_progress", void 0), e([_()], y.prototype, "_hovered", void 0), e([_()], y.prototype, "_closing", void 0);
137
+ var b = y = e([h("sch-notification")], y), x = {
138
+ info: "curious",
139
+ success: "content",
140
+ warning: "anxious",
141
+ error: "disappointed"
142
+ }, S = {
143
+ x: window.innerWidth - 100,
144
+ y: 50
145
+ };
146
+ typeof window < "u" && window.addEventListener("mousedown", (e) => {
147
+ S = {
148
+ x: e.clientX,
149
+ y: e.clientY
150
+ };
151
+ }, {
152
+ capture: !0,
153
+ passive: !0
154
+ });
155
+ var C = null, w = class e {
156
+ static {
157
+ this.DEFAULT_OPTIONS = {
158
+ duration: 1e3,
159
+ closable: !0,
160
+ playSound: !0
161
+ };
162
+ }
163
+ static {
164
+ this.TYPE_DURATIONS = {
165
+ success: 1500,
166
+ info: 2e3,
167
+ warning: 2500,
168
+ error: 2500
169
+ };
170
+ }
171
+ constructor() {
172
+ this.notificationStack = [], this.audioVolume = .1, n.setVolume(this.audioVolume);
173
+ }
174
+ static getInstance() {
175
+ return e.instance ||= new e(), e.instance;
176
+ }
177
+ notify(t) {
178
+ let r = {
179
+ ...e.DEFAULT_OPTIONS,
180
+ ...t,
181
+ duration: t.duration ?? e.DEFAULT_OPTIONS.duration
182
+ }, i = r.id || `notification-${Date.now()}-${Math.floor(1e4 * Math.random())}`;
183
+ this.notificationStack.push(i), C &&= (C.remove(), null);
184
+ let a = document.createElement("sch-notification");
185
+ return a.id = i, a.title = r.title || "", a.message = r.message, a.type = r.type || "info", a.duration = r.duration ?? 1e3, a.closable = !1 !== r.closable, a.playSound = !1, a.showProgress = r.showProgress || !1, a.startPosition = { ...S }, !1 !== r.playSound && n.play(x[a.type]), a.addEventListener("close", () => {
186
+ let e = this.notificationStack.indexOf(i);
187
+ e > -1 && this.notificationStack.splice(e, 1), a.remove(), C === a && (C = null);
188
+ }), document.body.appendChild(a), C = a, i;
189
+ }
190
+ dismiss(e) {
191
+ let t;
192
+ if (e) {
193
+ let n = this.notificationStack.indexOf(e);
194
+ n > -1 && (this.notificationStack.splice(n, 1), t = e);
195
+ } else t = this.notificationStack.pop();
196
+ t && C && C.id === t && C.close();
197
+ }
198
+ update(e, t) {
199
+ C && C.id === e && (t.title !== void 0 && (C.title = t.title), t.message !== void 0 && (C.message = t.message), t.type !== void 0 && (C.type = t.type));
200
+ }
201
+ info(t, n = {}) {
202
+ return this.notify({
203
+ message: t ?? "",
204
+ type: "info",
205
+ duration: t ? n.duration ?? e.TYPE_DURATIONS.info : 1,
206
+ ...n
207
+ });
208
+ }
209
+ success(t, n = {}) {
210
+ return this.notify({
211
+ message: t ?? "",
212
+ type: "success",
213
+ duration: t ? n.duration ?? e.TYPE_DURATIONS.success : 1,
214
+ ...n
215
+ });
216
+ }
217
+ warning(t, n = {}) {
218
+ return this.notify({
219
+ message: t ?? "",
220
+ type: "warning",
221
+ duration: t ? n.duration ?? e.TYPE_DURATIONS.warning : 1,
222
+ ...n
223
+ });
224
+ }
225
+ error(t, n = {}) {
226
+ return this.notify({
227
+ message: t ?? "",
228
+ type: "error",
229
+ duration: t ? n.duration ?? e.TYPE_DURATIONS.error : 1,
230
+ ...n
231
+ });
232
+ }
233
+ customDuration(e, t, n = {}) {
234
+ return this.notify({
235
+ message: e,
236
+ duration: t,
237
+ ...n
238
+ });
239
+ }
240
+ persistent(e, t = {}) {
241
+ return this.notify({
242
+ message: e,
243
+ duration: 0,
244
+ ...t
245
+ });
246
+ }
247
+ }, T = {
248
+ show: (e) => w.getInstance().notify(e),
249
+ info: (e, t = {}) => w.getInstance().info(e, t),
250
+ success: (e, t = {}) => w.getInstance().success(e, t),
251
+ warning: (e, t = {}) => w.getInstance().warning(e, t),
252
+ error: (e, t = {}) => w.getInstance().error(e, t),
253
+ customDuration: (e, t, n = {}) => w.getInstance().customDuration(e, t, n),
254
+ persistent: (e, t = {}) => w.getInstance().persistent(e, t),
255
+ dismiss: (e) => w.getInstance().dismiss(e),
256
+ update: (e, t) => w.getInstance().update(e, t)
257
+ };
258
+ function E(e) {
259
+ return (t) => {
260
+ let n;
261
+ return e.loadingMessage && (n = T.show({
262
+ message: e.loadingMessage,
263
+ type: e.loadingType || "info",
264
+ duration: 0,
265
+ showProgress: !0
266
+ })), t.pipe(c((t) => {
267
+ if (n && typeof t == "object" && t) {
268
+ let r;
269
+ if ("progress" in t && typeof t.progress == "number") r = t.progress;
270
+ else if ("loaded" in t && "total" in t) {
271
+ let e = t.loaded, n = t.total;
272
+ typeof e == "number" && typeof n == "number" && n > 0 && (r = e / n * 100);
273
+ }
274
+ r !== void 0 && T.update?.(n, { message: `${e.loadingMessage} (${Math.round(r)}%)` });
275
+ }
276
+ typeof t == "object" && t && ("progress" in t || "loaded" in t && "total" in t) || (n && !1 !== e.autoDismissLoading && (T.dismiss(n), n = void 0), e.successMessage && T.show({
277
+ message: e.successMessage,
278
+ type: e.successType || "success",
279
+ duration: e.successDuration ?? 2e3
280
+ }));
281
+ }), a((t) => {
282
+ if (n && !1 !== e.autoDismissLoading && (T.dismiss(n), n = void 0), e.errorMessage) {
283
+ let n = typeof e.errorMessage == "function" ? e.errorMessage(t) : e.errorMessage;
284
+ T.show({
285
+ message: n,
286
+ type: e.errorType || "error",
287
+ duration: e.errorDuration ?? 3e3
288
+ });
289
+ }
290
+ throw t;
291
+ }), o(() => {
292
+ n && !1 !== e.autoDismissLoading && T.dismiss(n);
293
+ }));
294
+ };
295
+ }
296
+ function D(e, t, n) {
297
+ return E({
298
+ loadingMessage: e,
299
+ successMessage: t || void 0,
300
+ errorMessage: n || void 0,
301
+ autoDismissLoading: !0
302
+ });
303
+ }
304
+ export { b as i, D as n, T as r, E as t };