@mhmo91/schmancy 0.8.6 → 0.9.2

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 (1396) hide show
  1. package/README.md +110 -1
  2. package/ai/animation.md +64 -0
  3. package/ai/area.md +35 -256
  4. package/ai/autocomplete.md +44 -162
  5. package/ai/avatar.md +47 -178
  6. package/ai/badge.md +41 -108
  7. package/ai/busy.md +25 -184
  8. package/ai/button.md +52 -150
  9. package/ai/card.md +42 -215
  10. package/ai/checkbox.md +32 -135
  11. package/ai/chips.md +73 -383
  12. package/ai/code-highlight.md +33 -226
  13. package/ai/content-drawer.md +65 -232
  14. package/ai/date-range.md +43 -198
  15. package/ai/details.md +48 -453
  16. package/ai/dialog.md +55 -164
  17. package/ai/directives.md +258 -405
  18. package/ai/divider.md +15 -137
  19. package/ai/dropdown.md +44 -235
  20. package/ai/form.md +41 -137
  21. package/ai/icons.md +31 -235
  22. package/ai/input.md +50 -210
  23. package/ai/lightbox.md +25 -370
  24. package/ai/list.md +51 -130
  25. package/ai/menu.md +25 -134
  26. package/ai/mixins.md +70 -0
  27. package/ai/nav-drawer.md +30 -184
  28. package/ai/navigation-bar.md +27 -184
  29. package/ai/navigation-rail.md +62 -630
  30. package/ai/notification.md +49 -183
  31. package/ai/progress.md +26 -65
  32. package/ai/radio-group.md +45 -189
  33. package/ai/select.md +49 -209
  34. package/ai/sheet.md +74 -506
  35. package/ai/steps.md +30 -392
  36. package/ai/store.md +60 -247
  37. package/ai/surface.md +58 -245
  38. package/ai/table.md +56 -330
  39. package/ai/tabs.md +31 -176
  40. package/ai/textarea.md +48 -232
  41. package/ai/theme.md +40 -1089
  42. package/ai/tooltip.md +35 -146
  43. package/ai/tree.md +45 -271
  44. package/ai/typography.md +43 -296
  45. package/custom-elements.json +10955 -0
  46. package/dist/ai/animation.md +64 -0
  47. package/dist/ai/area.md +35 -256
  48. package/dist/ai/autocomplete.md +44 -162
  49. package/dist/ai/avatar.md +47 -178
  50. package/dist/ai/badge.md +41 -108
  51. package/dist/ai/busy.md +25 -184
  52. package/dist/ai/button.md +52 -150
  53. package/dist/ai/card.md +42 -215
  54. package/dist/ai/checkbox.md +32 -135
  55. package/dist/ai/chips.md +73 -383
  56. package/dist/ai/code-highlight.md +33 -226
  57. package/dist/ai/content-drawer.md +65 -232
  58. package/dist/ai/date-range.md +43 -198
  59. package/dist/ai/details.md +48 -453
  60. package/dist/ai/dialog.md +55 -164
  61. package/dist/ai/directives.md +258 -405
  62. package/dist/ai/divider.md +15 -137
  63. package/dist/ai/dropdown.md +44 -235
  64. package/dist/ai/form.md +41 -137
  65. package/dist/ai/icons.md +31 -235
  66. package/dist/ai/input.md +50 -210
  67. package/dist/ai/lightbox.md +25 -370
  68. package/dist/ai/list.md +51 -130
  69. package/dist/ai/menu.md +25 -134
  70. package/dist/ai/mixins.md +70 -0
  71. package/dist/ai/nav-drawer.md +30 -184
  72. package/dist/ai/navigation-bar.md +27 -184
  73. package/dist/ai/navigation-rail.md +62 -630
  74. package/dist/ai/notification.md +49 -183
  75. package/dist/ai/progress.md +26 -65
  76. package/dist/ai/radio-group.md +45 -189
  77. package/dist/ai/select.md +49 -209
  78. package/dist/ai/sheet.md +74 -506
  79. package/dist/ai/steps.md +30 -392
  80. package/dist/ai/store.md +60 -247
  81. package/dist/ai/surface.md +58 -245
  82. package/dist/ai/table.md +56 -330
  83. package/dist/ai/tabs.md +31 -176
  84. package/dist/ai/textarea.md +48 -232
  85. package/dist/ai/theme.md +40 -1089
  86. package/dist/ai/tooltip.md +35 -146
  87. package/dist/ai/tree.md +45 -271
  88. package/dist/ai/typography.md +43 -296
  89. package/dist/animation-BK-8BwY8.js +173 -0
  90. package/dist/animation-BK-8BwY8.js.map +1 -0
  91. package/dist/animation-CO_Csq84.cjs +16 -0
  92. package/dist/animation-CO_Csq84.cjs.map +1 -0
  93. package/dist/area-1h9xEpTc.cjs +12 -0
  94. package/dist/area-1h9xEpTc.cjs.map +1 -0
  95. package/dist/area-DbBcfm5p.js +590 -0
  96. package/dist/area-DbBcfm5p.js.map +1 -0
  97. package/dist/area.cjs +1 -2
  98. package/dist/area.js +2 -29
  99. package/dist/audio-DtYYgzYD.cjs +1 -0
  100. package/dist/audio-DtYYgzYD.cjs.map +1 -0
  101. package/dist/audio-kz8UgPTO.js +335 -0
  102. package/dist/audio-kz8UgPTO.js.map +1 -0
  103. package/dist/audio.cjs +1 -2
  104. package/dist/audio.js +3 -9
  105. package/dist/autocomplete-DDVsegep.js +378 -0
  106. package/dist/autocomplete-DDVsegep.js.map +1 -0
  107. package/dist/autocomplete-OE70CcYP.cjs +111 -0
  108. package/dist/autocomplete-OE70CcYP.cjs.map +1 -0
  109. package/dist/autocomplete.cjs +1 -2
  110. package/dist/autocomplete.js +1 -2
  111. package/dist/badge.cjs +1 -2
  112. package/dist/badge.js +2 -6
  113. package/dist/boat-Cf1oJ0ka.cjs +80 -0
  114. package/dist/boat-Cf1oJ0ka.cjs.map +1 -0
  115. package/dist/boat-T8Ov4-yA.js +347 -0
  116. package/dist/boat-T8Ov4-yA.js.map +1 -0
  117. package/dist/boat.cjs +1 -2
  118. package/dist/boat.js +2 -5
  119. package/dist/busy-BD6D5P-l.js +167 -0
  120. package/dist/busy-BD6D5P-l.js.map +1 -0
  121. package/dist/busy-DF9wztWL.cjs +134 -0
  122. package/dist/busy-DF9wztWL.cjs.map +1 -0
  123. package/dist/busy.cjs +1 -2
  124. package/dist/busy.js +1 -2
  125. package/dist/button.cjs +113 -2
  126. package/dist/button.cjs.map +1 -1
  127. package/dist/button.js +398 -5
  128. package/dist/button.js.map +1 -1
  129. package/dist/card-Csvu8UJ9.cjs +177 -0
  130. package/dist/card-Csvu8UJ9.cjs.map +1 -0
  131. package/dist/card-DM_miKMd.js +284 -0
  132. package/dist/card-DM_miKMd.js.map +1 -0
  133. package/dist/card.cjs +1 -2
  134. package/dist/card.js +1 -2
  135. package/dist/charts.cjs +112 -2
  136. package/dist/charts.cjs.map +1 -1
  137. package/dist/charts.js +368 -8
  138. package/dist/charts.js.map +1 -1
  139. package/dist/checkbox-BgGtMaMR.js +610 -0
  140. package/dist/checkbox-BgGtMaMR.js.map +1 -0
  141. package/dist/checkbox-sJujc_ga.cjs +39 -0
  142. package/dist/checkbox-sJujc_ga.cjs.map +1 -0
  143. package/dist/checkbox.cjs +1 -2
  144. package/dist/checkbox.js +2 -5
  145. package/dist/chips-BZaH4wez.js +645 -0
  146. package/dist/chips-BZaH4wez.js.map +1 -0
  147. package/dist/chips-D_e6wijp.cjs +253 -0
  148. package/dist/chips-D_e6wijp.cjs.map +1 -0
  149. package/dist/chips.cjs +1 -2
  150. package/dist/chips.js +3 -10
  151. package/dist/chunk-BCfY8kxB.cjs +1 -0
  152. package/dist/chunk-C_1VqBVD.js +11 -0
  153. package/dist/code-highlight-DlhERv_O.cjs +190 -0
  154. package/dist/code-highlight-DlhERv_O.cjs.map +1 -0
  155. package/dist/code-highlight-Q3cc6ukq.js +290 -0
  156. package/dist/code-highlight-Q3cc6ukq.js.map +1 -0
  157. package/dist/code-highlight.cjs +1 -2
  158. package/dist/code-highlight.js +2 -7
  159. package/dist/components-CRhkB3V2.js +730 -0
  160. package/dist/components-CRhkB3V2.js.map +1 -0
  161. package/dist/components-DnlEYYDs.cjs +73 -0
  162. package/dist/components-DnlEYYDs.cjs.map +1 -0
  163. package/dist/components.cjs +1 -2
  164. package/dist/components.js +2 -5
  165. package/dist/connectivity.cjs +59 -0
  166. package/dist/connectivity.cjs.map +1 -0
  167. package/dist/connectivity.js +86 -0
  168. package/dist/connectivity.js.map +1 -0
  169. package/dist/content-drawer.cjs +1 -2
  170. package/dist/content-drawer.js +2 -13
  171. package/dist/cursor-glow-Ah7VXSj7.js +46 -0
  172. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -0
  173. package/dist/cursor-glow-DtSy_PJd.cjs +1 -0
  174. package/dist/cursor-glow-DtSy_PJd.cjs.map +1 -0
  175. package/dist/date-range-C0IYnvHF.js +946 -0
  176. package/dist/date-range-C0IYnvHF.js.map +1 -0
  177. package/dist/date-range-cymbTDnl.cjs +131 -0
  178. package/dist/date-range-cymbTDnl.cjs.map +1 -0
  179. package/dist/date-range-inline-0ENN4Plz.js +267 -0
  180. package/dist/date-range-inline-0ENN4Plz.js.map +1 -0
  181. package/dist/date-range-inline-Cfwt-ReH.cjs +43 -0
  182. package/dist/date-range-inline-Cfwt-ReH.cjs.map +1 -0
  183. package/dist/date-range-inline.cjs +1 -2
  184. package/dist/date-range-inline.js +2 -5
  185. package/dist/date-range.cjs +1 -2
  186. package/dist/date-range.js +2 -6
  187. package/dist/delay-D1dVP93u.js +346 -0
  188. package/dist/delay-D1dVP93u.js.map +1 -0
  189. package/dist/delay-D6mQLUp-.cjs +9 -0
  190. package/dist/delay-D6mQLUp-.cjs.map +1 -0
  191. package/dist/delay.cjs +1 -2
  192. package/dist/delay.js +2 -6
  193. package/dist/details-CPT_Mi4e.cjs +168 -0
  194. package/dist/details-CPT_Mi4e.cjs.map +1 -0
  195. package/dist/details-Cv4OOrVW.js +293 -0
  196. package/dist/details-Cv4OOrVW.js.map +1 -0
  197. package/dist/details.cjs +1 -2
  198. package/dist/details.js +2 -5
  199. package/dist/dialog-service-NZEvyEK-.js +193 -0
  200. package/dist/dialog-service-NZEvyEK-.js.map +1 -0
  201. package/dist/dialog-service-VnW4gkmE.cjs +1 -0
  202. package/dist/dialog-service-VnW4gkmE.cjs.map +1 -0
  203. package/dist/dialog.cjs +82 -2
  204. package/dist/dialog.cjs.map +1 -1
  205. package/dist/dialog.js +396 -9
  206. package/dist/dialog.js.map +1 -1
  207. package/dist/directives.cjs +108 -2
  208. package/dist/directives.cjs.map +1 -1
  209. package/dist/directives.js +1362 -14
  210. package/dist/directives.js.map +1 -1
  211. package/dist/discovery.cjs +1 -2
  212. package/dist/discovery.cjs.map +1 -1
  213. package/dist/discovery.js +61 -6
  214. package/dist/discovery.js.map +1 -1
  215. package/dist/divider-DDC-kND3.js +87 -0
  216. package/dist/divider-DDC-kND3.js.map +1 -0
  217. package/dist/divider-nZ_2to2N.cjs +57 -0
  218. package/dist/divider-nZ_2to2N.cjs.map +1 -0
  219. package/dist/divider.cjs +1 -2
  220. package/dist/divider.js +1 -2
  221. package/dist/dropdown.cjs +57 -2
  222. package/dist/dropdown.cjs.map +1 -1
  223. package/dist/dropdown.js +160 -5
  224. package/dist/dropdown.js.map +1 -1
  225. package/dist/expand-Bp3N8CcL.js +336 -0
  226. package/dist/expand-Bp3N8CcL.js.map +1 -0
  227. package/dist/expand-Crdts9q_.cjs +141 -0
  228. package/dist/expand-Crdts9q_.cjs.map +1 -0
  229. package/dist/expand.cjs +1 -0
  230. package/dist/expand.js +2 -0
  231. package/dist/extra-B0IZCg0t.cjs +31 -0
  232. package/dist/extra-B0IZCg0t.cjs.map +1 -0
  233. package/dist/extra-DupwhQhC.js +3435 -0
  234. package/dist/extra-DupwhQhC.js.map +1 -0
  235. package/dist/extra.cjs +1 -2
  236. package/dist/extra.js +2 -6
  237. package/dist/float-CQoJ_oSB.cjs +1 -0
  238. package/dist/float-CQoJ_oSB.cjs.map +1 -0
  239. package/dist/float-Dqdc1_S5.js +5 -0
  240. package/dist/float-Dqdc1_S5.js.map +1 -0
  241. package/dist/float.cjs +1 -0
  242. package/dist/float.js +2 -0
  243. package/dist/flow-Bbwn6dRN.cjs +1 -0
  244. package/dist/flow-Bbwn6dRN.cjs.map +1 -0
  245. package/dist/flow-CUj0fDT_.js +386 -0
  246. package/dist/flow-CUj0fDT_.js.map +1 -0
  247. package/dist/form-CW5XNuTg.js +270 -0
  248. package/dist/form-CW5XNuTg.js.map +1 -0
  249. package/dist/form-CvoLqMY7.cjs +1 -0
  250. package/dist/form-CvoLqMY7.cjs.map +1 -0
  251. package/dist/form.cjs +1 -2
  252. package/dist/form.js +1 -2
  253. package/dist/hashContent-DYM21p6t.js +6 -0
  254. package/dist/hashContent-DYM21p6t.js.map +1 -0
  255. package/dist/hashContent-DaeGmY-p.cjs +1 -0
  256. package/dist/hashContent-DaeGmY-p.cjs.map +1 -0
  257. package/dist/icons-BLQHEbIk.cjs +52 -0
  258. package/dist/icons-BLQHEbIk.cjs.map +1 -0
  259. package/dist/icons-Cpfdb7sA.js +161 -0
  260. package/dist/icons-Cpfdb7sA.js.map +1 -0
  261. package/dist/icons.cjs +1 -2
  262. package/dist/icons.js +1 -2
  263. package/dist/iframe-DG6HVYdy.js +44 -0
  264. package/dist/iframe-DG6HVYdy.js.map +1 -0
  265. package/dist/iframe-sJGXBbxT.cjs +24 -0
  266. package/dist/iframe-sJGXBbxT.cjs.map +1 -0
  267. package/dist/iframe.cjs +1 -0
  268. package/dist/iframe.js +2 -0
  269. package/dist/index.cjs +1 -2
  270. package/dist/index.js +69 -285
  271. package/dist/input-BevxycIt.js +364 -0
  272. package/dist/input-BevxycIt.js.map +1 -0
  273. package/dist/input-DGTdmp1Q.cjs +51 -0
  274. package/dist/input-DGTdmp1Q.cjs.map +1 -0
  275. package/dist/input-chip-BWS-SFU4.js +301 -0
  276. package/dist/input-chip-BWS-SFU4.js.map +1 -0
  277. package/dist/input-chip-CKVtjInb.cjs +146 -0
  278. package/dist/input-chip-CKVtjInb.cjs.map +1 -0
  279. package/dist/input.cjs +1 -2
  280. package/dist/input.js +2 -6
  281. package/dist/intersection-BPLpqYEd.js +12 -0
  282. package/dist/intersection-BPLpqYEd.js.map +1 -0
  283. package/dist/intersection-CZpaIHeT.cjs +1 -0
  284. package/dist/intersection-CZpaIHeT.cjs.map +1 -0
  285. package/dist/json.cjs +11 -2
  286. package/dist/json.cjs.map +1 -1
  287. package/dist/json.js +40 -4
  288. package/dist/json.js.map +1 -1
  289. package/dist/layout-4C-6_cre.cjs +1 -0
  290. package/dist/layout-4C-6_cre.cjs.map +1 -0
  291. package/dist/layout-CQdd8UCr.cjs +17 -0
  292. package/dist/layout-CQdd8UCr.cjs.map +1 -0
  293. package/dist/layout-DxLjlDfr.js +267 -0
  294. package/dist/layout-DxLjlDfr.js.map +1 -0
  295. package/dist/layout-yxSlLybo.js +94 -0
  296. package/dist/layout-yxSlLybo.js.map +1 -0
  297. package/dist/layout.cjs +1 -2
  298. package/dist/layout.js +3 -9
  299. package/dist/lightbox-Bjc55lHH.js +678 -0
  300. package/dist/lightbox-Bjc55lHH.js.map +1 -0
  301. package/dist/lightbox-C_863_XU.cjs +202 -0
  302. package/dist/lightbox-C_863_XU.cjs.map +1 -0
  303. package/dist/lightbox.cjs +1 -2
  304. package/dist/lightbox.js +2 -8
  305. package/dist/list-BAqhlzZd.js +105 -0
  306. package/dist/list-BAqhlzZd.js.map +1 -0
  307. package/dist/list-CaXzdN9_.cjs +40 -0
  308. package/dist/list-CaXzdN9_.cjs.map +1 -0
  309. package/dist/list.cjs +1 -2
  310. package/dist/list.js +2 -7
  311. package/dist/litElement.mixin-DN6X9_wD.cjs +1 -0
  312. package/dist/litElement.mixin-DN6X9_wD.cjs.map +1 -0
  313. package/dist/litElement.mixin-Dktub0ri.js +12 -0
  314. package/dist/litElement.mixin-Dktub0ri.js.map +1 -0
  315. package/dist/magnetic-BZGFxAWG.js +47 -0
  316. package/dist/magnetic-BZGFxAWG.js.map +1 -0
  317. package/dist/magnetic-Dux4QwO4.cjs +1 -0
  318. package/dist/magnetic-Dux4QwO4.cjs.map +1 -0
  319. package/dist/mailbox-BvsLXpvy.cjs +1142 -0
  320. package/dist/mailbox-BvsLXpvy.cjs.map +1 -0
  321. package/dist/mailbox-DuMUH4f3.js +1584 -0
  322. package/dist/mailbox-DuMUH4f3.js.map +1 -0
  323. package/dist/mailbox.cjs +1 -2
  324. package/dist/mailbox.js +2 -9
  325. package/dist/map-C2Msv9TQ.cjs +80 -0
  326. package/dist/map-C2Msv9TQ.cjs.map +1 -0
  327. package/dist/map-DkIy1ph7.js +205 -0
  328. package/dist/map-DkIy1ph7.js.map +1 -0
  329. package/dist/map.cjs +1 -2
  330. package/dist/map.js +2 -5
  331. package/dist/menu-DEeDKW5U.js +51 -0
  332. package/dist/menu-DEeDKW5U.js.map +1 -0
  333. package/dist/menu-Mm71lv9k.cjs +23 -0
  334. package/dist/menu-Mm71lv9k.cjs.map +1 -0
  335. package/dist/menu.cjs +1 -2
  336. package/dist/menu.js +1 -2
  337. package/dist/mixins.cjs +1 -2
  338. package/dist/mixins.cjs.map +1 -1
  339. package/dist/mixins.js +59 -12
  340. package/dist/mixins.js.map +1 -1
  341. package/dist/nav-drawer.cjs +1 -2
  342. package/dist/nav-drawer.js +2 -12
  343. package/dist/navigation-bar.cjs +1 -2
  344. package/dist/navigation-bar.js +2 -6
  345. package/dist/navigation-rail.cjs +71 -2
  346. package/dist/navigation-rail.cjs.map +1 -1
  347. package/dist/navigation-rail.js +363 -5
  348. package/dist/navigation-rail.js.map +1 -1
  349. package/dist/notification-K-ug8cKk.js +304 -0
  350. package/dist/notification-K-ug8cKk.js.map +1 -0
  351. package/dist/notification-cTgXEDZ0.cjs +23 -0
  352. package/dist/notification-cTgXEDZ0.cjs.map +1 -0
  353. package/dist/notification.cjs +1 -2
  354. package/dist/notification.js +2 -9
  355. package/dist/option-5rEOmtAm.cjs +43 -0
  356. package/dist/option-5rEOmtAm.cjs.map +1 -0
  357. package/dist/option-TFSKvSjT.js +97 -0
  358. package/dist/option-TFSKvSjT.js.map +1 -0
  359. package/dist/option.cjs +1 -2
  360. package/dist/option.js +1 -2
  361. package/dist/overlay-stack-DQey9Qph.cjs +1 -0
  362. package/dist/overlay-stack-DQey9Qph.cjs.map +1 -0
  363. package/dist/overlay-stack-DT1SdaGW.js +39 -0
  364. package/dist/overlay-stack-DT1SdaGW.js.map +1 -0
  365. package/dist/page.cjs +20 -2
  366. package/dist/page.cjs.map +1 -1
  367. package/dist/page.js +71 -4
  368. package/dist/page.js.map +1 -1
  369. package/dist/progress-Cta3nM-f.js +128 -0
  370. package/dist/progress-Cta3nM-f.js.map +1 -0
  371. package/dist/progress-iu0AMbSg.cjs +51 -0
  372. package/dist/progress-iu0AMbSg.cjs.map +1 -0
  373. package/dist/progress.cjs +1 -2
  374. package/dist/progress.js +1 -2
  375. package/dist/provide-BEyyKlDM.cjs +1 -0
  376. package/dist/provide-BEyyKlDM.cjs.map +1 -0
  377. package/dist/provide-D69zybs5.js +107 -0
  378. package/dist/provide-D69zybs5.js.map +1 -0
  379. package/dist/qr-scanner.cjs +35 -2
  380. package/dist/qr-scanner.cjs.map +1 -1
  381. package/dist/qr-scanner.js +119 -4
  382. package/dist/qr-scanner.js.map +1 -1
  383. package/dist/radio-group-BjSWmYJC.js +105 -0
  384. package/dist/radio-group-BjSWmYJC.js.map +1 -0
  385. package/dist/radio-group-DKPN0T50.cjs +40 -0
  386. package/dist/radio-group-DKPN0T50.cjs.map +1 -0
  387. package/dist/radio-group.cjs +1 -2
  388. package/dist/radio-group.js +2 -6
  389. package/dist/range.cjs +62 -0
  390. package/dist/range.cjs.map +1 -0
  391. package/dist/range.js +85 -0
  392. package/dist/range.js.map +1 -0
  393. package/dist/reduced-motion-D-L12p7G.js +7 -0
  394. package/dist/reduced-motion-D-L12p7G.js.map +1 -0
  395. package/dist/reduced-motion-Ds05GPyz.cjs +1 -0
  396. package/dist/reduced-motion-Ds05GPyz.cjs.map +1 -0
  397. package/dist/rxjs-utils-BSjmI9-Q.js +32 -0
  398. package/dist/rxjs-utils-BSjmI9-Q.js.map +1 -0
  399. package/dist/rxjs-utils-DCsfzeap.cjs +1 -0
  400. package/dist/rxjs-utils-DCsfzeap.cjs.map +1 -0
  401. package/dist/rxjs-utils.cjs +1 -2
  402. package/dist/rxjs-utils.js +2 -14
  403. package/dist/scroll-mayaGGpE.cjs +26 -0
  404. package/dist/scroll-mayaGGpE.cjs.map +1 -0
  405. package/dist/scroll-tG1vaRFO.js +112 -0
  406. package/dist/scroll-tG1vaRFO.js.map +1 -0
  407. package/dist/search-C4dFHYbX.js +91 -0
  408. package/dist/search-C4dFHYbX.js.map +1 -0
  409. package/dist/search-Ds8tt7Et.cjs +1 -0
  410. package/dist/search-Ds8tt7Et.cjs.map +1 -0
  411. package/dist/select-C4YK5Arj.cjs +56 -0
  412. package/dist/select-C4YK5Arj.cjs.map +1 -0
  413. package/dist/select-CepryGGP.js +305 -0
  414. package/dist/select-CepryGGP.js.map +1 -0
  415. package/dist/select.cjs +1 -2
  416. package/dist/select.js +2 -5
  417. package/dist/sheet-Cy4C2-kG.cjs +35 -0
  418. package/dist/sheet-Cy4C2-kG.cjs.map +1 -0
  419. package/dist/sheet-D2uT95S1.js +168 -0
  420. package/dist/sheet-D2uT95S1.js.map +1 -0
  421. package/dist/sheet.cjs +1 -2
  422. package/dist/sheet.js +3 -7
  423. package/dist/sheet.service-Dv5Hwj3k.cjs +1 -0
  424. package/dist/sheet.service-Dv5Hwj3k.cjs.map +1 -0
  425. package/dist/sheet.service-Os8KJGSE.js +86 -0
  426. package/dist/sheet.service-Os8KJGSE.js.map +1 -0
  427. package/dist/slider.cjs +82 -2
  428. package/dist/slider.cjs.map +1 -1
  429. package/dist/slider.js +143 -5
  430. package/dist/slider.js.map +1 -1
  431. package/dist/sound.service-Bu3EQLv2.cjs +1 -0
  432. package/dist/sound.service-Bu3EQLv2.cjs.map +1 -0
  433. package/dist/sound.service-m3BrSfuH.js +2353 -0
  434. package/dist/sound.service-m3BrSfuH.js.map +1 -0
  435. package/dist/src-BLcmKlCH.js +1244 -0
  436. package/dist/src-BLcmKlCH.js.map +1 -0
  437. package/dist/src-tfU0akqI.cjs +269 -0
  438. package/dist/src-tfU0akqI.cjs.map +1 -0
  439. package/dist/steps.cjs +70 -2
  440. package/dist/steps.cjs.map +1 -1
  441. package/dist/steps.js +178 -7
  442. package/dist/steps.js.map +1 -1
  443. package/dist/store-CorvD3bT.cjs +1 -0
  444. package/dist/store-CorvD3bT.cjs.map +1 -0
  445. package/dist/store-DYqDLAvT.js +1654 -0
  446. package/dist/store-DYqDLAvT.js.map +1 -0
  447. package/dist/store.cjs +1 -2
  448. package/dist/store.js +2 -47
  449. package/dist/surface-CiiIYeJN.cjs +7 -0
  450. package/dist/surface-CiiIYeJN.cjs.map +1 -0
  451. package/dist/surface-fXvRpS6s.js +21 -0
  452. package/dist/surface-fXvRpS6s.js.map +1 -0
  453. package/dist/surface.cjs +1 -2
  454. package/dist/surface.js +2 -6
  455. package/dist/surface.mixin-C4hbgyaP.cjs +297 -0
  456. package/dist/surface.mixin-C4hbgyaP.cjs.map +1 -0
  457. package/dist/surface.mixin-DBuxL5aL.js +320 -0
  458. package/dist/surface.mixin-DBuxL5aL.js.map +1 -0
  459. package/dist/table-BRVKlNjl.cjs +63 -0
  460. package/dist/table-BRVKlNjl.cjs.map +1 -0
  461. package/dist/table-BeXnwSsq.js +631 -0
  462. package/dist/table-BeXnwSsq.js.map +1 -0
  463. package/dist/table.cjs +1 -2
  464. package/dist/table.js +2 -6
  465. package/dist/tabs-CBU9Ctqm.cjs +31 -0
  466. package/dist/tabs-CBU9Ctqm.cjs.map +1 -0
  467. package/dist/tabs-y708NWQ2.js +125 -0
  468. package/dist/tabs-y708NWQ2.js.map +1 -0
  469. package/dist/tabs.cjs +1 -2
  470. package/dist/tabs.js +1 -2
  471. package/dist/tailwind.mixin-C4cx3IOr.js +225 -0
  472. package/dist/tailwind.mixin-C4cx3IOr.js.map +1 -0
  473. package/dist/tailwind.mixin-DGiyLbEi.cjs +2 -0
  474. package/dist/tailwind.mixin-DGiyLbEi.cjs.map +1 -0
  475. package/dist/teleport.cjs +1 -2
  476. package/dist/teleport.js +2 -8
  477. package/dist/textarea-BhAoJg8c.cjs +35 -0
  478. package/dist/textarea-BhAoJg8c.cjs.map +1 -0
  479. package/dist/textarea-Bl8-gQEJ.js +195 -0
  480. package/dist/textarea-Bl8-gQEJ.js.map +1 -0
  481. package/dist/textarea.cjs +1 -2
  482. package/dist/textarea.js +1 -2
  483. package/dist/theme-C-vdR-Ic.cjs +181 -0
  484. package/dist/theme-C-vdR-Ic.cjs.map +1 -0
  485. package/dist/theme-DZUpYJn-.js +4121 -0
  486. package/dist/theme-DZUpYJn-.js.map +1 -0
  487. package/dist/theme-button-CwrvpOMK.js +19 -0
  488. package/dist/theme-button-CwrvpOMK.js.map +1 -0
  489. package/dist/theme-button-Cx1iKh7G.cjs +8 -0
  490. package/dist/theme-button-Cx1iKh7G.cjs.map +1 -0
  491. package/dist/theme-button.cjs +1 -2
  492. package/dist/theme-button.js +1 -2
  493. package/dist/theme.cjs +1 -2
  494. package/dist/theme.events-Cv7N4Toe.js +2 -0
  495. package/dist/theme.events-Cv7N4Toe.js.map +1 -0
  496. package/dist/theme.events-DM4H5F2d.cjs +1 -0
  497. package/dist/theme.events-DM4H5F2d.cjs.map +1 -0
  498. package/dist/theme.interface-CXloMUCw.js +276 -0
  499. package/dist/theme.interface-CXloMUCw.js.map +1 -0
  500. package/dist/theme.interface-Da23QAYb.cjs +1 -0
  501. package/dist/theme.interface-Da23QAYb.cjs.map +1 -0
  502. package/dist/theme.js +6 -21
  503. package/dist/theme.service-C_tjlqgy.cjs +1 -0
  504. package/dist/theme.service-C_tjlqgy.cjs.map +1 -0
  505. package/dist/theme.service-D9lEas89.js +108 -0
  506. package/dist/theme.service-D9lEas89.js.map +1 -0
  507. package/dist/tooltip.cjs +6 -2
  508. package/dist/tooltip.cjs.map +1 -1
  509. package/dist/tooltip.js +200 -5
  510. package/dist/tooltip.js.map +1 -1
  511. package/dist/tree.cjs +26 -2
  512. package/dist/tree.cjs.map +1 -1
  513. package/dist/tree.js +64 -4
  514. package/dist/tree.js.map +1 -1
  515. package/dist/tslib.es6-D7BIeDVB.cjs +1 -0
  516. package/dist/tslib.es6-D7BIeDVB.cjs.map +1 -0
  517. package/dist/tslib.es6-ErZEp3OO.js +7 -0
  518. package/dist/tslib.es6-ErZEp3OO.js.map +1 -0
  519. package/dist/types.cjs +1 -2
  520. package/dist/types.cjs.map +1 -1
  521. package/dist/types.js +4 -5
  522. package/dist/types.js.map +1 -1
  523. package/dist/typewriter-CXQIzqPV.cjs +123 -0
  524. package/dist/typewriter-CXQIzqPV.cjs.map +1 -0
  525. package/dist/typewriter-mxVw5dFn.js +700 -0
  526. package/dist/typewriter-mxVw5dFn.js.map +1 -0
  527. package/dist/typewriter.cjs +1 -2
  528. package/dist/typewriter.js +2 -5
  529. package/dist/typography.cjs +282 -2
  530. package/dist/typography.cjs.map +1 -1
  531. package/dist/typography.js +353 -4
  532. package/dist/typography.js.map +1 -1
  533. package/dist/utils-BcaKtQuA.cjs +1 -0
  534. package/dist/utils-BcaKtQuA.cjs.map +1 -0
  535. package/dist/utils-CoU7M2YS.js +259 -0
  536. package/dist/utils-CoU7M2YS.js.map +1 -0
  537. package/dist/utils.cjs +1 -2
  538. package/dist/utils.js +6 -9
  539. package/dist/window-DFMlB1Tq.cjs +59 -0
  540. package/dist/window-DFMlB1Tq.cjs.map +1 -0
  541. package/dist/window-EWYJJC_H.js +548 -0
  542. package/dist/window-EWYJJC_H.js.map +1 -0
  543. package/dist/window.cjs +1 -0
  544. package/dist/window.js +2 -0
  545. package/mixins/baseElement.ts +118 -1
  546. package/mixins/discovery.service.ts +162 -1
  547. package/mixins/formField.mixin.ts +13 -8
  548. package/mixins/index.ts +2 -0
  549. package/mixins/surface.mixin.ts +93 -0
  550. package/mixins/tailwind.css +331 -14
  551. package/package.json +32 -28
  552. package/src/CLAUDE.md +428 -0
  553. package/src/area/.excalidraw +357 -0
  554. package/src/area/area.component.ts +449 -0
  555. package/src/area/area.service.test.ts +1007 -0
  556. package/src/area/area.service.ts +748 -0
  557. package/src/area/ecrypt.ts +7 -0
  558. package/src/area/index.ts +7 -0
  559. package/src/area/lazy.ts +83 -0
  560. package/src/area/readme.md +338 -0
  561. package/src/area/route.component.ts +79 -0
  562. package/src/area/router-guide.md +360 -0
  563. package/src/area/router.types.ts +101 -0
  564. package/src/area/utils.ts +354 -0
  565. package/src/audio/emotional-sounds.ts +940 -0
  566. package/src/audio/index.ts +53 -0
  567. package/src/audio/sound.service.ts +1079 -0
  568. package/src/autocomplete/README.md +485 -0
  569. package/src/autocomplete/autocomplete.scss +24 -0
  570. package/src/autocomplete/autocomplete.ts +733 -0
  571. package/src/autocomplete/index.ts +1 -0
  572. package/src/avatar.ts +164 -0
  573. package/src/badge/badge.ts +286 -0
  574. package/src/badge/index.ts +1 -0
  575. package/src/boat/boat.ts +664 -0
  576. package/src/boat/index.ts +1 -0
  577. package/src/busy/busy.ts +39 -0
  578. package/src/busy/index.ts +2 -0
  579. package/src/busy/spinner.ts +165 -0
  580. package/src/button/button.ts +382 -0
  581. package/src/button/icon-button.ts +287 -0
  582. package/src/button/index.ts +2 -0
  583. package/src/card/actions.ts +28 -0
  584. package/src/card/card.ts +319 -0
  585. package/src/card/content.ts +24 -0
  586. package/src/card/index.ts +4 -0
  587. package/src/card/media.ts +77 -0
  588. package/src/charts/area-chart.ts +495 -0
  589. package/src/charts/index.ts +4 -0
  590. package/src/charts/pills.ts +350 -0
  591. package/src/charts/types.ts +66 -0
  592. package/src/charts/utils.ts +65 -0
  593. package/src/checkbox/checkbox.ts +122 -0
  594. package/src/checkbox/index.ts +1 -0
  595. package/src/chips/assist-chip.ts +261 -0
  596. package/src/chips/chips.ts +259 -0
  597. package/src/chips/filter-chip.ts +255 -0
  598. package/src/chips/index.ts +5 -0
  599. package/src/chips/input-chip.ts +408 -0
  600. package/src/chips/suggestion-chip.ts +266 -0
  601. package/src/code-highlight/code-highlight.ts +344 -0
  602. package/src/code-highlight/code-preview.ts +123 -0
  603. package/src/code-highlight/index.ts +3 -0
  604. package/src/components/form-elements/index.ts +1 -0
  605. package/src/components/form-elements/payment-card-form.ts +331 -0
  606. package/src/components/index.ts +1 -0
  607. package/src/connectivity/connectivity-status.ts +153 -0
  608. package/src/connectivity/index.ts +1 -0
  609. package/src/content-drawer/context.ts +13 -0
  610. package/src/content-drawer/drawer.service.ts +148 -0
  611. package/src/content-drawer/drawer.ts +183 -0
  612. package/src/content-drawer/index.ts +5 -0
  613. package/src/content-drawer/main.ts +83 -0
  614. package/src/content-drawer/readme.md +709 -0
  615. package/src/content-drawer/sheet.ts +180 -0
  616. package/src/date-range/date-range-dialog.ts +230 -0
  617. package/src/date-range/date-range-helpers.ts +135 -0
  618. package/src/date-range/date-range-presets.ts +220 -0
  619. package/src/date-range/date-range.ts +530 -0
  620. package/src/date-range/date-utils.ts +58 -0
  621. package/src/date-range/index.ts +2 -0
  622. package/src/date-range-inline/date-range-inline.ts +522 -0
  623. package/src/date-range-inline/index.ts +2 -0
  624. package/src/delay/delay.ts +136 -0
  625. package/src/delay/index.ts +1 -0
  626. package/src/details/details.ts +429 -0
  627. package/src/details/index.ts +1 -0
  628. package/src/dialog/dialog-base.mixin.ts +565 -0
  629. package/src/dialog/dialog-events.ts +17 -0
  630. package/src/dialog/dialog-service.ts +482 -0
  631. package/src/dialog/dialog.component.ts +394 -0
  632. package/src/dialog/index.ts +3 -0
  633. package/src/directives/animate-text.ts +551 -0
  634. package/src/directives/color.ts +41 -0
  635. package/src/directives/confirm-click.ts +350 -0
  636. package/src/directives/cursor-glow.ts +142 -0
  637. package/src/directives/cycle-text.ts +496 -0
  638. package/src/directives/depth-of-field.ts +83 -0
  639. package/src/directives/drag.ts +370 -0
  640. package/src/directives/gravity.ts +117 -0
  641. package/src/directives/index.ts +19 -0
  642. package/src/directives/intersect.ts +204 -0
  643. package/src/directives/layout.ts +261 -0
  644. package/src/directives/liquid.ts +150 -0
  645. package/src/directives/living-border.ts +166 -0
  646. package/src/directives/long-press.ts +150 -0
  647. package/src/directives/magnetic.ts +133 -0
  648. package/src/directives/nebula.ts +773 -0
  649. package/src/directives/reduced-motion.ts +30 -0
  650. package/src/directives/reveal.ts +158 -0
  651. package/src/directives/ripple.ts +102 -0
  652. package/src/directives/typewriter.ts +349 -0
  653. package/src/discovery/discovery.service.ts +210 -0
  654. package/src/discovery/index.ts +1 -0
  655. package/src/divider/divider.ts +100 -0
  656. package/src/divider/index.ts +1 -0
  657. package/src/dropdown/dropdown-component.ts +264 -0
  658. package/src/dropdown/dropdown-content.ts +108 -0
  659. package/src/dropdown/index.ts +2 -0
  660. package/src/expand/expand-root.component.ts +278 -0
  661. package/src/expand/expand.component.ts +287 -0
  662. package/src/expand/index.ts +2 -0
  663. package/src/extra/countries/countries.data.ts +196 -0
  664. package/src/extra/countries/countries.ts +107 -0
  665. package/src/extra/countries/index.ts +2 -0
  666. package/src/extra/index.ts +2 -0
  667. package/src/extra/timezone/index.ts +2 -0
  668. package/src/extra/timezone/timezone.ts +116 -0
  669. package/src/extra/timezone/timezones.data.ts +2546 -0
  670. package/src/float/float.ts +18 -0
  671. package/src/float/index.ts +1 -0
  672. package/src/form/form-v2.ts +268 -0
  673. package/src/form/form.ts +194 -0
  674. package/src/form/index.ts +2 -0
  675. package/src/icons/icon.ts +293 -0
  676. package/src/icons/index.ts +1 -0
  677. package/src/icons/readme.md +37 -0
  678. package/src/iframe/iframe.ts +98 -0
  679. package/src/iframe/index.ts +1 -0
  680. package/src/index.ts +69 -0
  681. package/src/input/index.ts +8 -0
  682. package/src/input/input.scss +211 -0
  683. package/src/input/input.ts +951 -0
  684. package/src/json/index.ts +1 -0
  685. package/src/json/json.ts +55 -0
  686. package/src/layout/flex/flex.scss +4 -0
  687. package/src/layout/flex/flex.ts +74 -0
  688. package/src/layout/flex/index.ts +1 -0
  689. package/src/layout/grid/.readme +79 -0
  690. package/src/layout/grid/grid.scss +5 -0
  691. package/src/layout/grid/grid.ts +121 -0
  692. package/src/layout/grid/index.ts +1 -0
  693. package/src/layout/index.ts +5 -0
  694. package/src/layout/layout.ts +122 -0
  695. package/src/layout/scroll/index.ts +1 -0
  696. package/src/layout/scroll/scroll.ts +351 -0
  697. package/src/layout/v2/flex.ts +243 -0
  698. package/src/layout/v2/grid.ts +93 -0
  699. package/src/layout/v2/index.ts +1 -0
  700. package/src/lightbox/flip-directive.ts +270 -0
  701. package/src/lightbox/index.ts +4 -0
  702. package/src/lightbox/lightbox-service.ts +378 -0
  703. package/src/lightbox/lightbox.directive.ts +256 -0
  704. package/src/lightbox/lightbox.ts +417 -0
  705. package/src/list/context.ts +3 -0
  706. package/src/list/index.ts +3 -0
  707. package/src/list/list-item.ts +94 -0
  708. package/src/list/list.ts +87 -0
  709. package/src/list/readme.md +62 -0
  710. package/src/mailbox/README.md +131 -0
  711. package/src/mailbox/email-editor.ts +1071 -0
  712. package/src/mailbox/email-layout-selector.ts +58 -0
  713. package/src/mailbox/email-recipients.ts +594 -0
  714. package/src/mailbox/email-template-picker.ts +296 -0
  715. package/src/mailbox/email-viewer.ts +715 -0
  716. package/src/mailbox/index.ts +31 -0
  717. package/src/mailbox/mailbox.ts +363 -0
  718. package/src/mailbox/types.ts +181 -0
  719. package/src/map/index.ts +1 -0
  720. package/src/map/map.ts +483 -0
  721. package/src/menu/index.ts +2 -0
  722. package/src/menu/menu-item.ts +26 -0
  723. package/src/menu/menu.ts +83 -0
  724. package/src/nav-drawer/$navbar.ts +51 -0
  725. package/src/nav-drawer/appbar.ts +26 -0
  726. package/src/nav-drawer/content.ts +32 -0
  727. package/src/nav-drawer/context.ts +6 -0
  728. package/src/nav-drawer/drawer.ts +128 -0
  729. package/src/nav-drawer/index.ts +6 -0
  730. package/src/nav-drawer/navbar.ts +191 -0
  731. package/src/navigation-bar/index.ts +2 -0
  732. package/src/navigation-bar/navigation-bar-item.ts +417 -0
  733. package/src/navigation-bar/navigation-bar.ts +482 -0
  734. package/src/navigation-rail/index.ts +2 -0
  735. package/src/navigation-rail/navigation-rail-item.ts +443 -0
  736. package/src/navigation-rail/navigation-rail.ts +492 -0
  737. package/src/notification/index.ts +6 -0
  738. package/src/notification/notification-service.ts +324 -0
  739. package/src/notification/notification.scss +117 -0
  740. package/src/notification/notification.ts +263 -0
  741. package/src/notification/notify.ts +207 -0
  742. package/src/notification/outlet.ts +16 -0
  743. package/src/option/index.ts +1 -0
  744. package/src/option/option.ts +180 -0
  745. package/src/page/index.ts +1 -0
  746. package/src/page/page.ts +135 -0
  747. package/src/progress/index.ts +1 -0
  748. package/src/progress/progress.ts +143 -0
  749. package/src/qr-scanner/index.ts +1 -0
  750. package/src/qr-scanner/qr-scanner.ts +240 -0
  751. package/src/radio-group/index.ts +2 -0
  752. package/src/radio-group/radio-button.ts +81 -0
  753. package/src/radio-group/radio-group.scss +4 -0
  754. package/src/radio-group/radio-group.ts +110 -0
  755. package/src/radio-group/readme.md +315 -0
  756. package/src/range/index.ts +1 -0
  757. package/src/range/range.ts +102 -0
  758. package/src/rxjs-utils/index.ts +6 -0
  759. package/src/rxjs-utils/mutation-observer.ts +22 -0
  760. package/src/rxjs-utils/waitForElement.ts +33 -0
  761. package/src/rxjs-utils/waitForElementAll.ts +34 -0
  762. package/src/rxjs-utils/waitForElements.ts +40 -0
  763. package/src/rxjs-utils/waitForElementsAll.ts +42 -0
  764. package/src/rxjs-utils/waitUntil.ts +16 -0
  765. package/src/select/README.md +405 -0
  766. package/src/select/index.ts +2 -0
  767. package/src/select/select.ts +766 -0
  768. package/src/sheet/hook.ts +40 -0
  769. package/src/sheet/index.ts +2 -0
  770. package/src/sheet/sheet.service.ts +235 -0
  771. package/src/sheet/sheet.ts +236 -0
  772. package/src/slider/index.ts +2 -0
  773. package/src/slider/slide.ts +107 -0
  774. package/src/slider/slider.ts +164 -0
  775. package/src/steps/index.ts +3 -0
  776. package/src/steps/schmancy-step.ts +213 -0
  777. package/src/steps/schmancy-steps-container.ts +109 -0
  778. package/src/steps/steps.context.ts +23 -0
  779. package/src/store/context-array.ts +358 -0
  780. package/src/store/context-collection.ts +218 -0
  781. package/src/store/context-create.ts +284 -0
  782. package/src/store/context-object.ts +298 -0
  783. package/src/store/filter-directive.ts +614 -0
  784. package/src/store/immer-integration.ts +99 -0
  785. package/src/store/index.ts +10 -0
  786. package/src/store/selector-hook.ts +259 -0
  787. package/src/store/selectors.ts +289 -0
  788. package/src/store/storage-manager.ts +269 -0
  789. package/src/store/store.class.ts +239 -0
  790. package/src/store/types.ts +327 -0
  791. package/src/surface/context.ts +3 -0
  792. package/src/surface/index.ts +1 -0
  793. package/src/surface/surface.styles.ts +334 -0
  794. package/src/surface/surface.ts +59 -0
  795. package/src/table/index.ts +2 -0
  796. package/src/table/row.ts +60 -0
  797. package/src/table/table.ts +266 -0
  798. package/src/tabs/Readme.md +397 -0
  799. package/src/tabs/context.ts +5 -0
  800. package/src/tabs/index.ts +4 -0
  801. package/src/tabs/tab.ts +39 -0
  802. package/src/tabs/tabs-compatibility.ts +20 -0
  803. package/src/tabs/tabs-group.ts +184 -0
  804. package/src/teleport/.excalidraw +2511 -0
  805. package/src/teleport/index.ts +2 -0
  806. package/src/teleport/readme.md +91 -0
  807. package/src/teleport/teleport.component.ts +132 -0
  808. package/src/teleport/teleport.service.ts +139 -0
  809. package/src/teleport/watcher.ts +20 -0
  810. package/src/textarea/index.ts +1 -0
  811. package/src/textarea/textarea.scss +54 -0
  812. package/src/textarea/textarea.ts +432 -0
  813. package/src/theme/context.ts +28 -0
  814. package/src/theme/index.ts +17 -0
  815. package/src/theme/theme-audio-player.ts +470 -0
  816. package/src/theme/theme-controller-boat.ts +49 -0
  817. package/src/theme/theme-controller-example.md +152 -0
  818. package/src/theme/theme-controller.ts +205 -0
  819. package/src/theme/theme.component.ts +305 -0
  820. package/src/theme/theme.events.ts +59 -0
  821. package/src/theme/theme.format.ts +417 -0
  822. package/src/theme/theme.interface.ts +399 -0
  823. package/src/theme/theme.service.ts +520 -0
  824. package/src/theme/theme.style.css +619 -0
  825. package/src/theme-button/index.ts +1 -0
  826. package/src/theme-button/theme-button.ts +35 -0
  827. package/src/tooltip/index.ts +2 -0
  828. package/src/tooltip/tooltip.directive.ts +277 -0
  829. package/src/tooltip/tooltip.ts +216 -0
  830. package/src/tree/README.md +59 -0
  831. package/src/tree/index.ts +1 -0
  832. package/src/tree/tree.ts +132 -0
  833. package/src/types/events.ts +5 -0
  834. package/src/types/index.ts +3 -0
  835. package/src/types/mood-audio.types.ts +220 -0
  836. package/src/types/surface.ts +52 -0
  837. package/src/typewriter/IMPROVEMENTS.md +174 -0
  838. package/src/typewriter/QUICK_REFERENCE.md +166 -0
  839. package/src/typewriter/index.ts +1 -0
  840. package/src/typewriter/test-typewriter.html +97 -0
  841. package/src/typewriter/typewriter.ts +376 -0
  842. package/src/typography/index.ts +1 -0
  843. package/src/typography/typography.ts +448 -0
  844. package/src/utils/animation.ts +418 -0
  845. package/src/utils/hashContent.ts +12 -0
  846. package/src/utils/index.ts +6 -0
  847. package/src/utils/intersection.ts +22 -0
  848. package/src/utils/number.ts +529 -0
  849. package/src/utils/overlay-stack.ts +101 -0
  850. package/src/utils/search.ts +322 -0
  851. package/src/vite-env.d.ts +2 -0
  852. package/src/window/index.ts +10 -0
  853. package/src/window/window-manager.ts +204 -0
  854. package/src/window/window-position.ts +136 -0
  855. package/src/window/window-registry.ts +34 -0
  856. package/src/window/window.ts +724 -0
  857. package/types/mixins/baseElement.d.ts +12 -0
  858. package/types/mixins/discovery.service.d.ts +72 -0
  859. package/types/mixins/index.d.ts +2 -0
  860. package/types/mixins/surface.mixin.d.ts +39 -0
  861. package/types/src/area/area.service.d.ts +2 -0
  862. package/types/src/badge/badge.d.ts +1 -1
  863. package/types/src/boat/boat.d.ts +40 -33
  864. package/types/src/button/icon-button.d.ts +10 -0
  865. package/types/src/chips/filter-chip.d.ts +0 -12
  866. package/types/src/connectivity/connectivity-status.d.ts +25 -0
  867. package/types/src/connectivity/index.d.ts +1 -0
  868. package/types/src/content-drawer/drawer.service.d.ts +3 -0
  869. package/types/src/date-range/date-range.d.ts +2 -0
  870. package/types/src/details/details.d.ts +26 -2
  871. package/types/src/dialog/dialog-base.mixin.d.ts +7 -3
  872. package/types/src/dialog/dialog-service.d.ts +27 -1
  873. package/types/src/dialog/dialog.component.d.ts +35 -1
  874. package/types/src/directives/animate-text.d.ts +67 -0
  875. package/types/src/directives/color.d.ts +2 -3
  876. package/types/src/directives/confirm-click.d.ts +38 -0
  877. package/types/src/directives/cursor-glow.d.ts +38 -0
  878. package/types/src/directives/cycle-text.d.ts +44 -0
  879. package/types/src/directives/depth-of-field.d.ts +38 -0
  880. package/types/src/directives/drag.d.ts +8 -8
  881. package/types/src/directives/gravity.d.ts +40 -0
  882. package/types/src/directives/index.d.ts +16 -2
  883. package/types/src/directives/intersect.d.ts +60 -0
  884. package/types/src/directives/layout.d.ts +62 -0
  885. package/types/src/directives/liquid.d.ts +38 -0
  886. package/types/src/directives/living-border.d.ts +39 -0
  887. package/types/src/directives/long-press.d.ts +38 -0
  888. package/types/src/directives/magnetic.d.ts +35 -0
  889. package/types/src/directives/nebula.d.ts +80 -0
  890. package/types/src/directives/reduced-motion.d.ts +2 -0
  891. package/types/src/directives/reveal.d.ts +54 -0
  892. package/types/src/directives/ripple.d.ts +15 -5
  893. package/types/src/directives/typewriter.d.ts +50 -0
  894. package/types/src/discovery/discovery.service.d.ts +72 -0
  895. package/types/src/expand/expand-root.component.d.ts +30 -0
  896. package/types/src/expand/expand.component.d.ts +38 -0
  897. package/types/src/expand/index.d.ts +2 -0
  898. package/types/src/float/float.d.ts +14 -0
  899. package/types/src/float/index.d.ts +1 -0
  900. package/types/src/icons/icon.d.ts +14 -0
  901. package/types/src/iframe/iframe.d.ts +37 -0
  902. package/types/src/iframe/index.d.ts +1 -0
  903. package/types/src/index.d.ts +6 -1
  904. package/types/src/input/index.d.ts +1 -1
  905. package/types/src/layout/scroll/scroll.d.ts +11 -0
  906. package/types/src/lightbox/lightbox.d.ts +1 -0
  907. package/types/src/mailbox/email-recipients.d.ts +2 -2
  908. package/types/src/mailbox/types.d.ts +1 -1
  909. package/types/src/navigation-bar/navigation-bar.d.ts +17 -0
  910. package/types/src/notification/notification.d.ts +1 -0
  911. package/types/src/page/page.d.ts +6 -0
  912. package/types/src/range/index.d.ts +1 -0
  913. package/types/src/range/range.d.ts +25 -0
  914. package/types/src/sheet/sheet.d.ts +0 -1
  915. package/types/src/steps/schmancy-steps-container.d.ts +8 -6
  916. package/types/src/surface/surface.d.ts +4 -27
  917. package/types/src/surface/surface.styles.d.ts +31 -0
  918. package/types/src/tabs/tab.d.ts +1 -0
  919. package/types/src/textarea/textarea.d.ts +3 -2
  920. package/types/src/theme/context.d.ts +2 -282
  921. package/types/src/theme/theme.component.d.ts +9 -1
  922. package/types/src/theme/theme.format.d.ts +1 -1
  923. package/types/src/theme/theme.interface.d.ts +8 -1
  924. package/types/src/theme/theme.service.d.ts +20 -282
  925. package/types/src/types/surface.d.ts +27 -1
  926. package/types/src/typography/typography.d.ts +17 -3
  927. package/types/src/utils/animation.d.ts +254 -0
  928. package/types/src/utils/index.d.ts +2 -0
  929. package/types/src/utils/number.d.ts +18 -2
  930. package/types/src/utils/overlay-stack.d.ts +54 -0
  931. package/types/src/window/index.d.ts +3 -0
  932. package/types/src/window/window-manager.d.ts +49 -0
  933. package/types/src/window/window-position.d.ts +64 -0
  934. package/types/src/window/window-registry.d.ts +28 -0
  935. package/types/src/window/window.d.ts +67 -0
  936. package/ai/animated-text.md +0 -116
  937. package/ai/audio.md +0 -241
  938. package/ai/boat.md +0 -53
  939. package/ai/component-relationships.md +0 -93
  940. package/ai/context.md +0 -572
  941. package/ai/countries.md +0 -271
  942. package/ai/date-range-inline.md +0 -262
  943. package/ai/delay.md +0 -158
  944. package/ai/index.md +0 -112
  945. package/ai/layout.md +0 -187
  946. package/ai/mailbox.md +0 -530
  947. package/ai/map.md +0 -234
  948. package/ai/navigation-bar-item.md +0 -259
  949. package/ai/option.md +0 -173
  950. package/ai/payment-card-form.md +0 -242
  951. package/ai/slider.md +0 -227
  952. package/ai/spinner.md +0 -165
  953. package/ai/teleport.md +0 -197
  954. package/ai/template.md +0 -144
  955. package/ai/theme-button.md +0 -173
  956. package/ai/timezone.md +0 -276
  957. package/ai/typewriter.md +0 -335
  958. package/dist/_commonjsHelpers-Dw9sPFZy.js +0 -7
  959. package/dist/_commonjsHelpers-Dw9sPFZy.js.map +0 -1
  960. package/dist/_commonjsHelpers-k2hpEU-q.cjs +0 -2
  961. package/dist/_commonjsHelpers-k2hpEU-q.cjs.map +0 -1
  962. package/dist/ai/animated-text.md +0 -116
  963. package/dist/ai/audio.md +0 -241
  964. package/dist/ai/boat.md +0 -53
  965. package/dist/ai/component-relationships.md +0 -93
  966. package/dist/ai/context.md +0 -572
  967. package/dist/ai/countries.md +0 -271
  968. package/dist/ai/date-range-inline.md +0 -262
  969. package/dist/ai/delay.md +0 -158
  970. package/dist/ai/index.md +0 -112
  971. package/dist/ai/layout.md +0 -187
  972. package/dist/ai/mailbox.md +0 -530
  973. package/dist/ai/map.md +0 -234
  974. package/dist/ai/navigation-bar-item.md +0 -259
  975. package/dist/ai/option.md +0 -173
  976. package/dist/ai/payment-card-form.md +0 -242
  977. package/dist/ai/slider.md +0 -227
  978. package/dist/ai/spinner.md +0 -165
  979. package/dist/ai/teleport.md +0 -197
  980. package/dist/ai/template.md +0 -144
  981. package/dist/ai/theme-button.md +0 -173
  982. package/dist/ai/timezone.md +0 -276
  983. package/dist/ai/typewriter.md +0 -335
  984. package/dist/animated-text-B3DQRJBy.cjs +0 -37
  985. package/dist/animated-text-B3DQRJBy.cjs.map +0 -1
  986. package/dist/animated-text-BAj4-6hE.js +0 -76
  987. package/dist/animated-text-BAj4-6hE.js.map +0 -1
  988. package/dist/animated-text.cjs +0 -2
  989. package/dist/animated-text.cjs.map +0 -1
  990. package/dist/animated-text.js +0 -2
  991. package/dist/animated-text.js.map +0 -1
  992. package/dist/area.cjs.map +0 -1
  993. package/dist/area.component-CP4DZ0d8.js +0 -330
  994. package/dist/area.component-CP4DZ0d8.js.map +0 -1
  995. package/dist/area.component-ChxSLt16.cjs +0 -12
  996. package/dist/area.component-ChxSLt16.cjs.map +0 -1
  997. package/dist/area.js.map +0 -1
  998. package/dist/audio.cjs.map +0 -1
  999. package/dist/audio.js.map +0 -1
  1000. package/dist/autocomplete-CAaVSg4g.cjs +0 -112
  1001. package/dist/autocomplete-CAaVSg4g.cjs.map +0 -1
  1002. package/dist/autocomplete-CGbACUYd.js +0 -333
  1003. package/dist/autocomplete-CGbACUYd.js.map +0 -1
  1004. package/dist/autocomplete.cjs.map +0 -1
  1005. package/dist/autocomplete.js.map +0 -1
  1006. package/dist/avatar-nWOZXEsW.cjs +0 -273
  1007. package/dist/avatar-nWOZXEsW.cjs.map +0 -1
  1008. package/dist/avatar-rLCF6MSI.js +0 -895
  1009. package/dist/avatar-rLCF6MSI.js.map +0 -1
  1010. package/dist/badge.cjs.map +0 -1
  1011. package/dist/badge.js.map +0 -1
  1012. package/dist/boat-Ckt9v__d.js +0 -301
  1013. package/dist/boat-Ckt9v__d.js.map +0 -1
  1014. package/dist/boat-yNAZ2LLB.cjs +0 -97
  1015. package/dist/boat-yNAZ2LLB.cjs.map +0 -1
  1016. package/dist/boat.cjs.map +0 -1
  1017. package/dist/boat.js.map +0 -1
  1018. package/dist/busy.cjs.map +0 -1
  1019. package/dist/busy.js.map +0 -1
  1020. package/dist/card.cjs.map +0 -1
  1021. package/dist/card.js.map +0 -1
  1022. package/dist/checkbox-BnAlpsJN.cjs +0 -40
  1023. package/dist/checkbox-BnAlpsJN.cjs.map +0 -1
  1024. package/dist/checkbox-D22yfGe3.js +0 -526
  1025. package/dist/checkbox-D22yfGe3.js.map +0 -1
  1026. package/dist/checkbox.cjs.map +0 -1
  1027. package/dist/checkbox.js.map +0 -1
  1028. package/dist/chips.cjs.map +0 -1
  1029. package/dist/chips.js.map +0 -1
  1030. package/dist/code-highlight.cjs.map +0 -1
  1031. package/dist/code-highlight.js.map +0 -1
  1032. package/dist/code-preview-DPlQayFd.js +0 -967
  1033. package/dist/code-preview-DPlQayFd.js.map +0 -1
  1034. package/dist/code-preview-jPnX60FF.cjs +0 -193
  1035. package/dist/code-preview-jPnX60FF.cjs.map +0 -1
  1036. package/dist/components.cjs.map +0 -1
  1037. package/dist/components.js.map +0 -1
  1038. package/dist/consume-5D1qfVWM.js +0 -38
  1039. package/dist/consume-5D1qfVWM.js.map +0 -1
  1040. package/dist/consume-edta5ng5.cjs +0 -2
  1041. package/dist/consume-edta5ng5.cjs.map +0 -1
  1042. package/dist/content-drawer.cjs.map +0 -1
  1043. package/dist/content-drawer.js.map +0 -1
  1044. package/dist/context-create-B_S-sD5B.js +0 -1107
  1045. package/dist/context-create-B_S-sD5B.js.map +0 -1
  1046. package/dist/context-create-DTybDbZp.cjs +0 -2
  1047. package/dist/context-create-DTybDbZp.cjs.map +0 -1
  1048. package/dist/date-range-GFm5NG33.js +0 -639
  1049. package/dist/date-range-GFm5NG33.js.map +0 -1
  1050. package/dist/date-range-inline-CgX2o0FP.cjs +0 -44
  1051. package/dist/date-range-inline-CgX2o0FP.cjs.map +0 -1
  1052. package/dist/date-range-inline-DTQLESAZ.js +0 -197
  1053. package/dist/date-range-inline-DTQLESAZ.js.map +0 -1
  1054. package/dist/date-range-inline.cjs.map +0 -1
  1055. package/dist/date-range-inline.js.map +0 -1
  1056. package/dist/date-range-ug3B9CFT.cjs +0 -119
  1057. package/dist/date-range-ug3B9CFT.cjs.map +0 -1
  1058. package/dist/date-range.cjs.map +0 -1
  1059. package/dist/date-range.js.map +0 -1
  1060. package/dist/delay-CWtBL0VD.cjs +0 -10
  1061. package/dist/delay-CWtBL0VD.cjs.map +0 -1
  1062. package/dist/delay-DEe1CmHc.js +0 -288
  1063. package/dist/delay-DEe1CmHc.js.map +0 -1
  1064. package/dist/delay.cjs.map +0 -1
  1065. package/dist/delay.js.map +0 -1
  1066. package/dist/details-D-LXW23W.js +0 -100
  1067. package/dist/details-D-LXW23W.js.map +0 -1
  1068. package/dist/details-DVke77dU.cjs +0 -55
  1069. package/dist/details-DVke77dU.cjs.map +0 -1
  1070. package/dist/details.cjs.map +0 -1
  1071. package/dist/details.js.map +0 -1
  1072. package/dist/dialog-service-C86xTS8q.cjs +0 -2
  1073. package/dist/dialog-service-C86xTS8q.cjs.map +0 -1
  1074. package/dist/dialog-service-D9E3jLAR.js +0 -118
  1075. package/dist/dialog-service-D9E3jLAR.js.map +0 -1
  1076. package/dist/dialog.component-BM0D-hK9.cjs +0 -48
  1077. package/dist/dialog.component-BM0D-hK9.cjs.map +0 -1
  1078. package/dist/dialog.component-a7FlKhGD.js +0 -145
  1079. package/dist/dialog.component-a7FlKhGD.js.map +0 -1
  1080. package/dist/discovery.service-BbYjU5x8.js +0 -21
  1081. package/dist/discovery.service-BbYjU5x8.js.map +0 -1
  1082. package/dist/discovery.service-BpGCuXPd.cjs +0 -2
  1083. package/dist/discovery.service-BpGCuXPd.cjs.map +0 -1
  1084. package/dist/divider-CzTpxOqt.js +0 -84
  1085. package/dist/divider-CzTpxOqt.js.map +0 -1
  1086. package/dist/divider-D8KStUhN.cjs +0 -58
  1087. package/dist/divider-D8KStUhN.cjs.map +0 -1
  1088. package/dist/divider.cjs.map +0 -1
  1089. package/dist/divider.js.map +0 -1
  1090. package/dist/dropdown-content-CngZN3vv.cjs +0 -58
  1091. package/dist/dropdown-content-CngZN3vv.cjs.map +0 -1
  1092. package/dist/dropdown-content-DCn-g0-f.js +0 -147
  1093. package/dist/dropdown-content-DCn-g0-f.js.map +0 -1
  1094. package/dist/email-recipients-BhntMZMf.cjs +0 -1173
  1095. package/dist/email-recipients-BhntMZMf.cjs.map +0 -1
  1096. package/dist/email-recipients-BzjAKNJ0.js +0 -1733
  1097. package/dist/email-recipients-BzjAKNJ0.js.map +0 -1
  1098. package/dist/emotional-sounds-BRnFhww6.js +0 -234
  1099. package/dist/emotional-sounds-BRnFhww6.js.map +0 -1
  1100. package/dist/emotional-sounds-DVGhmoZf.cjs +0 -2
  1101. package/dist/emotional-sounds-DVGhmoZf.cjs.map +0 -1
  1102. package/dist/extra.cjs.map +0 -1
  1103. package/dist/extra.js.map +0 -1
  1104. package/dist/flex-5dR48zie.js +0 -183
  1105. package/dist/flex-5dR48zie.js.map +0 -1
  1106. package/dist/flex-oHl2EfYB.cjs +0 -18
  1107. package/dist/flex-oHl2EfYB.cjs.map +0 -1
  1108. package/dist/flow-D0e7hGXO.cjs +0 -2
  1109. package/dist/flow-D0e7hGXO.cjs.map +0 -1
  1110. package/dist/flow-DXYqC9OA.js +0 -340
  1111. package/dist/flow-DXYqC9OA.js.map +0 -1
  1112. package/dist/form-BlPiAPt7.cjs +0 -2
  1113. package/dist/form-BlPiAPt7.cjs.map +0 -1
  1114. package/dist/form-BxVM6JTn.js +0 -141
  1115. package/dist/form-BxVM6JTn.js.map +0 -1
  1116. package/dist/form.cjs.map +0 -1
  1117. package/dist/form.js.map +0 -1
  1118. package/dist/formField.mixin-BCGA7Ea3.js +0 -48
  1119. package/dist/formField.mixin-BCGA7Ea3.js.map +0 -1
  1120. package/dist/formField.mixin-BfJMifU9.cjs +0 -2
  1121. package/dist/formField.mixin-BfJMifU9.cjs.map +0 -1
  1122. package/dist/height-CfECBO2j.js +0 -44
  1123. package/dist/height-CfECBO2j.js.map +0 -1
  1124. package/dist/height-Z70qJYJK.cjs +0 -2
  1125. package/dist/height-Z70qJYJK.cjs.map +0 -1
  1126. package/dist/icon-DHEXr3c-.cjs +0 -49
  1127. package/dist/icon-DHEXr3c-.cjs.map +0 -1
  1128. package/dist/icon-DYpLoegR.js +0 -84
  1129. package/dist/icon-DYpLoegR.js.map +0 -1
  1130. package/dist/icon-button-CmZBLHWC.js +0 -164
  1131. package/dist/icon-button-CmZBLHWC.js.map +0 -1
  1132. package/dist/icon-button-IbSX8C98.cjs +0 -70
  1133. package/dist/icon-button-IbSX8C98.cjs.map +0 -1
  1134. package/dist/icons.cjs.map +0 -1
  1135. package/dist/icons.js.map +0 -1
  1136. package/dist/index-CCi1otmh.cjs +0 -2
  1137. package/dist/index-CCi1otmh.cjs.map +0 -1
  1138. package/dist/index-CW6PhEkx.js +0 -17
  1139. package/dist/index-CW6PhEkx.js.map +0 -1
  1140. package/dist/index.cjs.map +0 -1
  1141. package/dist/index.js.map +0 -1
  1142. package/dist/input-BByjYlgl.cjs +0 -51
  1143. package/dist/input-BByjYlgl.cjs.map +0 -1
  1144. package/dist/input-D0cQ9DOY.js +0 -237
  1145. package/dist/input-D0cQ9DOY.js.map +0 -1
  1146. package/dist/input-chip-B5ErXgCB.js +0 -206
  1147. package/dist/input-chip-B5ErXgCB.js.map +0 -1
  1148. package/dist/input-chip-DkWaTciP.cjs +0 -147
  1149. package/dist/input-chip-DkWaTciP.cjs.map +0 -1
  1150. package/dist/input.cjs.map +0 -1
  1151. package/dist/input.js.map +0 -1
  1152. package/dist/intersection-CJxzz8c-.js +0 -15
  1153. package/dist/intersection-CJxzz8c-.js.map +0 -1
  1154. package/dist/intersection-CVvaDv96.cjs +0 -2
  1155. package/dist/intersection-CVvaDv96.cjs.map +0 -1
  1156. package/dist/json-BZVe74np.cjs +0 -12
  1157. package/dist/json-BZVe74np.cjs.map +0 -1
  1158. package/dist/json-PKewOWuJ.js +0 -51
  1159. package/dist/json-PKewOWuJ.js.map +0 -1
  1160. package/dist/layout.cjs.map +0 -1
  1161. package/dist/layout.js.map +0 -1
  1162. package/dist/lightbox-service-D-0JtxB1.cjs +0 -202
  1163. package/dist/lightbox-service-D-0JtxB1.cjs.map +0 -1
  1164. package/dist/lightbox-service-DZMnb1eU.js +0 -458
  1165. package/dist/lightbox-service-DZMnb1eU.js.map +0 -1
  1166. package/dist/lightbox.cjs.map +0 -1
  1167. package/dist/lightbox.js.map +0 -1
  1168. package/dist/list-B_2m7l3g.cjs +0 -17
  1169. package/dist/list-B_2m7l3g.cjs.map +0 -1
  1170. package/dist/list-CW56LV-v.js +0 -69
  1171. package/dist/list-CW56LV-v.js.map +0 -1
  1172. package/dist/list.cjs.map +0 -1
  1173. package/dist/list.js.map +0 -1
  1174. package/dist/litElement.mixin-CrpeGpZ7.cjs +0 -2
  1175. package/dist/litElement.mixin-CrpeGpZ7.cjs.map +0 -1
  1176. package/dist/litElement.mixin-DHZXtvYq.js +0 -15
  1177. package/dist/litElement.mixin-DHZXtvYq.js.map +0 -1
  1178. package/dist/mailbox.cjs.map +0 -1
  1179. package/dist/mailbox.js.map +0 -1
  1180. package/dist/map-2Hl60a0A.js +0 -175
  1181. package/dist/map-2Hl60a0A.js.map +0 -1
  1182. package/dist/map-DyPS9G7M.cjs +0 -81
  1183. package/dist/map-DyPS9G7M.cjs.map +0 -1
  1184. package/dist/map.cjs.map +0 -1
  1185. package/dist/map.js.map +0 -1
  1186. package/dist/media-CS8HpKnK.cjs +0 -152
  1187. package/dist/media-CS8HpKnK.cjs.map +0 -1
  1188. package/dist/media-DtWbcRxL.js +0 -244
  1189. package/dist/media-DtWbcRxL.js.map +0 -1
  1190. package/dist/menu-Caju5-zd.js +0 -60
  1191. package/dist/menu-Caju5-zd.js.map +0 -1
  1192. package/dist/menu-rX5RPAI2.cjs +0 -24
  1193. package/dist/menu-rX5RPAI2.cjs.map +0 -1
  1194. package/dist/menu.cjs.map +0 -1
  1195. package/dist/menu.js.map +0 -1
  1196. package/dist/nav-drawer.cjs.map +0 -1
  1197. package/dist/nav-drawer.js.map +0 -1
  1198. package/dist/navigation-bar.cjs.map +0 -1
  1199. package/dist/navigation-bar.js.map +0 -1
  1200. package/dist/navigation-rail-Ctketq5a.js +0 -256
  1201. package/dist/navigation-rail-Ctketq5a.js.map +0 -1
  1202. package/dist/navigation-rail-DC9_oSIM.cjs +0 -79
  1203. package/dist/navigation-rail-DC9_oSIM.cjs.map +0 -1
  1204. package/dist/notification-service-CUlfXqmj.js +0 -155
  1205. package/dist/notification-service-CUlfXqmj.js.map +0 -1
  1206. package/dist/notification-service-DknbpqTt.cjs +0 -19
  1207. package/dist/notification-service-DknbpqTt.cjs.map +0 -1
  1208. package/dist/notification.cjs.map +0 -1
  1209. package/dist/notification.js.map +0 -1
  1210. package/dist/notify-DJSOWTxv.js +0 -35
  1211. package/dist/notify-DJSOWTxv.js.map +0 -1
  1212. package/dist/notify-DickIEHW.cjs +0 -2
  1213. package/dist/notify-DickIEHW.cjs.map +0 -1
  1214. package/dist/number-B7aCRYnH.cjs +0 -2
  1215. package/dist/number-B7aCRYnH.cjs.map +0 -1
  1216. package/dist/number-BhTiptLA.js +0 -99
  1217. package/dist/number-BhTiptLA.js.map +0 -1
  1218. package/dist/option-Bng41-rY.js +0 -77
  1219. package/dist/option-Bng41-rY.js.map +0 -1
  1220. package/dist/option-DYT5Rkgy.cjs +0 -44
  1221. package/dist/option-DYT5Rkgy.cjs.map +0 -1
  1222. package/dist/option.cjs.map +0 -1
  1223. package/dist/option.js.map +0 -1
  1224. package/dist/page-BLn9gtSd.cjs +0 -20
  1225. package/dist/page-BLn9gtSd.cjs.map +0 -1
  1226. package/dist/page-D-ROcQDd.js +0 -48
  1227. package/dist/page-D-ROcQDd.js.map +0 -1
  1228. package/dist/payment-card-form-5UtfWzoW.cjs +0 -74
  1229. package/dist/payment-card-form-5UtfWzoW.cjs.map +0 -1
  1230. package/dist/payment-card-form-BJa4RgF2.js +0 -515
  1231. package/dist/payment-card-form-BJa4RgF2.js.map +0 -1
  1232. package/dist/pills-BS5rZ6C3.js +0 -346
  1233. package/dist/pills-BS5rZ6C3.js.map +0 -1
  1234. package/dist/pills-Blf7IAeq.cjs +0 -113
  1235. package/dist/pills-Blf7IAeq.cjs.map +0 -1
  1236. package/dist/progress-DlhYniW_.cjs +0 -35
  1237. package/dist/progress-DlhYniW_.cjs.map +0 -1
  1238. package/dist/progress-yTIX6EqC.js +0 -56
  1239. package/dist/progress-yTIX6EqC.js.map +0 -1
  1240. package/dist/progress.cjs.map +0 -1
  1241. package/dist/progress.js.map +0 -1
  1242. package/dist/provide-BxZ2kn_p.cjs +0 -2
  1243. package/dist/provide-BxZ2kn_p.cjs.map +0 -1
  1244. package/dist/provide-tcktw8xB.js +0 -100
  1245. package/dist/provide-tcktw8xB.js.map +0 -1
  1246. package/dist/qr-scanner-DOs7uNS_.cjs +0 -29
  1247. package/dist/qr-scanner-DOs7uNS_.cjs.map +0 -1
  1248. package/dist/qr-scanner-DjZ8mgHV.js +0 -743
  1249. package/dist/qr-scanner-DjZ8mgHV.js.map +0 -1
  1250. package/dist/radio-button-N_PrrxKB.cjs +0 -41
  1251. package/dist/radio-button-N_PrrxKB.cjs.map +0 -1
  1252. package/dist/radio-button-me3SRHGu.js +0 -115
  1253. package/dist/radio-button-me3SRHGu.js.map +0 -1
  1254. package/dist/radio-group.cjs.map +0 -1
  1255. package/dist/radio-group.js.map +0 -1
  1256. package/dist/ripple-BgJXbNSP.js +0 -124
  1257. package/dist/ripple-BgJXbNSP.js.map +0 -1
  1258. package/dist/ripple-x6sTX02K.cjs +0 -16
  1259. package/dist/ripple-x6sTX02K.cjs.map +0 -1
  1260. package/dist/rxjs-utils.cjs.map +0 -1
  1261. package/dist/rxjs-utils.js.map +0 -1
  1262. package/dist/schmancy-steps-container-J6P-NNNj.js +0 -156
  1263. package/dist/schmancy-steps-container-J6P-NNNj.js.map +0 -1
  1264. package/dist/schmancy-steps-container-T57BKMzi.cjs +0 -70
  1265. package/dist/schmancy-steps-container-T57BKMzi.cjs.map +0 -1
  1266. package/dist/scroll-C_gfUgjn.js +0 -87
  1267. package/dist/scroll-C_gfUgjn.js.map +0 -1
  1268. package/dist/scroll-CecsowP7.cjs +0 -27
  1269. package/dist/scroll-CecsowP7.cjs.map +0 -1
  1270. package/dist/search-B1s7thB0.cjs +0 -2
  1271. package/dist/search-B1s7thB0.cjs.map +0 -1
  1272. package/dist/search-DxxnLa5u.js +0 -95
  1273. package/dist/search-DxxnLa5u.js.map +0 -1
  1274. package/dist/select-BBA0gBHf.js +0 -280
  1275. package/dist/select-BBA0gBHf.js.map +0 -1
  1276. package/dist/select-D9oCjv7N.cjs +0 -57
  1277. package/dist/select-D9oCjv7N.cjs.map +0 -1
  1278. package/dist/select.cjs.map +0 -1
  1279. package/dist/select.js.map +0 -1
  1280. package/dist/selector-hook-9w2auh2O.cjs +0 -2
  1281. package/dist/selector-hook-9w2auh2O.cjs.map +0 -1
  1282. package/dist/selector-hook-CHV4kDMd.js +0 -319
  1283. package/dist/selector-hook-CHV4kDMd.js.map +0 -1
  1284. package/dist/sheet-0oUfBmXX.cjs +0 -15
  1285. package/dist/sheet-0oUfBmXX.cjs.map +0 -1
  1286. package/dist/sheet-CNcDT3VP.js +0 -97
  1287. package/dist/sheet-CNcDT3VP.js.map +0 -1
  1288. package/dist/sheet.cjs.map +0 -1
  1289. package/dist/sheet.js.map +0 -1
  1290. package/dist/sheet.service-2MobB-9z.js +0 -68
  1291. package/dist/sheet.service-2MobB-9z.js.map +0 -1
  1292. package/dist/sheet.service-su_7yDQ-.cjs +0 -2
  1293. package/dist/sheet.service-su_7yDQ-.cjs.map +0 -1
  1294. package/dist/slider-CV-Ehp_5.cjs +0 -83
  1295. package/dist/slider-CV-Ehp_5.cjs.map +0 -1
  1296. package/dist/slider-CkE-iFUy.js +0 -161
  1297. package/dist/slider-CkE-iFUy.js.map +0 -1
  1298. package/dist/sound.service-Nza4c6wv.js +0 -102
  1299. package/dist/sound.service-Nza4c6wv.js.map +0 -1
  1300. package/dist/sound.service-eRirZw59.cjs +0 -2
  1301. package/dist/sound.service-eRirZw59.cjs.map +0 -1
  1302. package/dist/spinner-Bfn8KC-9.cjs +0 -135
  1303. package/dist/spinner-Bfn8KC-9.cjs.map +0 -1
  1304. package/dist/spinner-DiMbWXp9.js +0 -168
  1305. package/dist/spinner-DiMbWXp9.js.map +0 -1
  1306. package/dist/store.cjs.map +0 -1
  1307. package/dist/store.js.map +0 -1
  1308. package/dist/suggestion-chip-CEDqUNoS.js +0 -481
  1309. package/dist/suggestion-chip-CEDqUNoS.js.map +0 -1
  1310. package/dist/suggestion-chip-HhsLtZXR.cjs +0 -271
  1311. package/dist/suggestion-chip-HhsLtZXR.cjs.map +0 -1
  1312. package/dist/surface-CW3H23Va.cjs +0 -199
  1313. package/dist/surface-CW3H23Va.cjs.map +0 -1
  1314. package/dist/surface-eBfnSwQS.js +0 -220
  1315. package/dist/surface-eBfnSwQS.js.map +0 -1
  1316. package/dist/surface.cjs.map +0 -1
  1317. package/dist/surface.js.map +0 -1
  1318. package/dist/table-D0tiSL_u.cjs +0 -64
  1319. package/dist/table-D0tiSL_u.cjs.map +0 -1
  1320. package/dist/table-Dmo4TvTx.js +0 -561
  1321. package/dist/table-Dmo4TvTx.js.map +0 -1
  1322. package/dist/table.cjs.map +0 -1
  1323. package/dist/table.js.map +0 -1
  1324. package/dist/tabs-compatibility-Bit6y6en.js +0 -104
  1325. package/dist/tabs-compatibility-Bit6y6en.js.map +0 -1
  1326. package/dist/tabs-compatibility-Vq_2-ekz.cjs +0 -35
  1327. package/dist/tabs-compatibility-Vq_2-ekz.cjs.map +0 -1
  1328. package/dist/tabs.cjs.map +0 -1
  1329. package/dist/tabs.js.map +0 -1
  1330. package/dist/tailwind.mixin-Bp_PR6yc.js +0 -67
  1331. package/dist/tailwind.mixin-Bp_PR6yc.js.map +0 -1
  1332. package/dist/tailwind.mixin-Cp4PyXok.cjs +0 -2
  1333. package/dist/tailwind.mixin-Cp4PyXok.cjs.map +0 -1
  1334. package/dist/teleport.cjs.map +0 -1
  1335. package/dist/teleport.js.map +0 -1
  1336. package/dist/textarea-B1d1QCqT.js +0 -134
  1337. package/dist/textarea-B1d1QCqT.js.map +0 -1
  1338. package/dist/textarea-DG8CHhZA.cjs +0 -44
  1339. package/dist/textarea-DG8CHhZA.cjs.map +0 -1
  1340. package/dist/textarea.cjs.map +0 -1
  1341. package/dist/textarea.js.map +0 -1
  1342. package/dist/theme-button-CPL6Eaqd.cjs +0 -9
  1343. package/dist/theme-button-CPL6Eaqd.cjs.map +0 -1
  1344. package/dist/theme-button-CrLuMQNe.js +0 -27
  1345. package/dist/theme-button-CrLuMQNe.js.map +0 -1
  1346. package/dist/theme-button.cjs.map +0 -1
  1347. package/dist/theme-button.js.map +0 -1
  1348. package/dist/theme-controller-boat-CXbNJSI3.cjs +0 -178
  1349. package/dist/theme-controller-boat-CXbNJSI3.cjs.map +0 -1
  1350. package/dist/theme-controller-boat-CzSmjyKq.js +0 -1159
  1351. package/dist/theme-controller-boat-CzSmjyKq.js.map +0 -1
  1352. package/dist/theme.cjs.map +0 -1
  1353. package/dist/theme.events-CPSLaOlR.js +0 -6
  1354. package/dist/theme.events-CPSLaOlR.js.map +0 -1
  1355. package/dist/theme.events-Car6U_SQ.cjs +0 -2
  1356. package/dist/theme.events-Car6U_SQ.cjs.map +0 -1
  1357. package/dist/theme.interface-BLfE5J_1.js +0 -5
  1358. package/dist/theme.interface-BLfE5J_1.js.map +0 -1
  1359. package/dist/theme.interface-BMeNadVb.cjs +0 -2
  1360. package/dist/theme.interface-BMeNadVb.cjs.map +0 -1
  1361. package/dist/theme.js.map +0 -1
  1362. package/dist/timezone-4vwX0BgA.js +0 -112
  1363. package/dist/timezone-4vwX0BgA.js.map +0 -1
  1364. package/dist/timezone-BxvQcqe1.cjs +0 -32
  1365. package/dist/timezone-BxvQcqe1.cjs.map +0 -1
  1366. package/dist/tooltip-CjdvBf4X.js +0 -119
  1367. package/dist/tooltip-CjdvBf4X.js.map +0 -1
  1368. package/dist/tooltip-ZtnGjoJd.cjs +0 -7
  1369. package/dist/tooltip-ZtnGjoJd.cjs.map +0 -1
  1370. package/dist/tree-CBEjV7jP.js +0 -65
  1371. package/dist/tree-CBEjV7jP.js.map +0 -1
  1372. package/dist/tree-DP5U00NA.cjs +0 -27
  1373. package/dist/tree-DP5U00NA.cjs.map +0 -1
  1374. package/dist/tslib.es6-DgOcxv4s.cjs +0 -2
  1375. package/dist/tslib.es6-DgOcxv4s.cjs.map +0 -1
  1376. package/dist/tslib.es6-ujVQHAQ4.js +0 -10
  1377. package/dist/tslib.es6-ujVQHAQ4.js.map +0 -1
  1378. package/dist/typewriter-C6kFjLcX.cjs +0 -124
  1379. package/dist/typewriter-C6kFjLcX.cjs.map +0 -1
  1380. package/dist/typewriter-Eo5qXoGC.js +0 -555
  1381. package/dist/typewriter-Eo5qXoGC.js.map +0 -1
  1382. package/dist/typewriter.cjs.map +0 -1
  1383. package/dist/typewriter.js.map +0 -1
  1384. package/dist/typography-C_1gdM2I.js +0 -264
  1385. package/dist/typography-C_1gdM2I.js.map +0 -1
  1386. package/dist/typography-DGyjlLCE.cjs +0 -243
  1387. package/dist/typography-DGyjlLCE.cjs.map +0 -1
  1388. package/dist/utils-C38P63L6.cjs +0 -2
  1389. package/dist/utils-C38P63L6.cjs.map +0 -1
  1390. package/dist/utils-CYOVFxSx.js +0 -150
  1391. package/dist/utils-CYOVFxSx.js.map +0 -1
  1392. package/dist/utils.cjs.map +0 -1
  1393. package/dist/utils.js.map +0 -1
  1394. package/types/src/animated-text/animated-text.d.ts +0 -30
  1395. package/types/src/animated-text/index.d.ts +0 -1
  1396. package/types/src/directives/height.d.ts +0 -20
@@ -1 +0,0 @@
1
- {"version":3,"file":"schmancy-steps-container-J6P-NNNj.js","sources":["../src/steps/steps.context.ts","../src/steps/schmancy-step.ts","../src/steps/schmancy-steps-container.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { BehaviorSubject } from 'rxjs'\n\nexport class StepsController {\n\tprivate _currentStep = new BehaviorSubject(1)\n\n\tget currentStep$() {\n\t\treturn this._currentStep.asObservable()\n\t}\n\n\tget currentStep() {\n\t\treturn this._currentStep.value\n\t}\n\n\tsetStep(step: number) {\n\t\tthis._currentStep.next(step)\n\t}\n}\n\n/**\n * The actual context object. We provide/consume this in the container and steps.\n */\nexport const stepsContext = createContext<StepsController>(Symbol('SchmancyStepsContext'))\n","import { consume } from '@lit/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { Subscription } from 'rxjs'\nimport { stepsContext, StepsController } from './steps.context'\nimport { $LitElement } from '@mixins/litElement.mixin'\n\n@customElement('schmancy-step')\nexport class SchmancyStep extends $LitElement(css`\n\t:host {\n\t\tdisplay: grid;\n\t\t/* Base display is just grid, flex properties will be applied dynamically */\n\t\ttransition: all 0.2s ease-in-out;\n\t}\n`) {\n\t/**\n\t * The step's position (1-based). This is used to compare against\n\t * the container's current step to decide if it's \"complete\",\n\t * \"current\", or \"upcoming\".\n\t */\n\t@property({ type: Number }) position = 1\n\n\t@property({ type: String }) title = ''\n\t@property({ type: String }) description = ''\n\n\t// NEW: Allow a step to be explicitly marked as complete.\n\t@property({ type: Boolean, reflect: true }) completed = false\n\n\t/**\n\t * NEW: Lock API to disable users from going back.\n\t * When set to true, clicking on a previous (completed) step is ignored.\n\t */\n\t@property({ type: Boolean }) lockBack = false\n\n\t/**\n\t * Consume the shared StepsController from context.\n\t */\n\t@consume({ context: stepsContext })\n\tprivate steps!: StepsController\n\n\t/**\n\t * Local reactive copy of the container's current step number.\n\t */\n\t@state()\n\tprivate currentStep = 1\n\n\t/**\n\t * Keep a reference to our subscription so we can unsubscribe cleanly.\n\t */\n\tprivate subscription?: Subscription\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t}\n\n\tfirstUpdated() {\n\t\t// Subscribe to updates from the container's StepsController.\n\t\t// Context is guaranteed to be available after first render\n\t\tthis.subscription = this.steps.currentStep$.subscribe(step => {\n\t\t\tthis.currentStep = step\n\t\t\t// When the current step changes, update the flex properties\n\t\t\tthis.updateFlexProperties()\n\t\t})\n\t\t// Initial update of flex properties\n\t\tthis.updateFlexProperties()\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.subscription?.unsubscribe()\n\t\tsuper.disconnectedCallback()\n\t}\n\n\t/**\n\t * Update the host element's flex properties based on active state\n\t */\n\tprivate updateFlexProperties() {\n\t\tconst isActive = this.position === this.currentStep\n\n\t\tif (isActive) {\n\t\t\t// Apply flex-grow when active\n\t\t\tthis.style.flex = '1 1 auto'\n\t\t} else {\n\t\t\t// Make it shrink when not active\n\t\t\tthis.style.flex = '0 0 auto'\n\t\t}\n\t}\n\n\t/**\n\t * Compute visual status for styling purposes. Note that if a step is explicitly\n\t * marked as completed, it always appears as complete even if it's active.\n\t */\n\tget status(): 'complete' | 'current' | 'upcoming' {\n\t\tif (this.completed || this.position < this.currentStep) return 'complete'\n\t\tif (this.position === this.currentStep) return 'current'\n\t\treturn 'upcoming'\n\t}\n\n\t/**\n\t * Click handler to allow navigation between completed (or active) steps.\n\t * With lockBack enabled, clicking on a previous step is ignored.\n\t */\n\tprivate _onStepClick(_e: Event) {\n\t\t// If lockBack is enabled and the user attempts to go back, do nothing.\n\t\tif (this.lockBack && this.position < this.currentStep) {\n\t\t\treturn\n\t\t}\n\t\tif (this.status !== 'upcoming') {\n\t\t\tthis.steps.setStep(this.position)\n\t\t}\n\t}\n\n\trender() {\n\t\t// Determine if the step is currently active.\n\t\tconst isActive = this.position === this.currentStep\n\n\t\t// Use computed status for visual styling.\n\t\tconst isComplete = this.status === 'complete'\n\t\tconst isUpcoming = this.status === 'upcoming'\n\n\t\t// Enhanced styling classes with better visual hierarchy\n\t\tconst connectorClasses = {\n\t\t\t'bg-tertiary-default': isComplete,\n\t\t\t'bg-outlineVariant': !isComplete,\n\t\t}\n\n\t\tconst iconContainerClasses = {\n\t\t\t'relative border-solid z-10 flex size-8 items-center justify-center rounded-full transition-all duration-200': true,\n\t\t\t'bg-tertiary-default text-tertiary-on shadow-md group-hover:shadow-lg': isComplete,\n\t\t\t'border-2 border-primary-default bg-primary-container text-primary-onContainer shadow-sm': !isComplete && isActive,\n\t\t\t'border-2 border-outline bg-surface-default text-surface-onVariant group-hover:border-primary-default group-hover:bg-primary-container': isUpcoming,\n\t\t}\n\n\t\tconst textClasses = {\n\t\t\t'text-primary-default font-medium': isActive,\n\t\t\t'text-tertiary-default': isComplete,\n\t\t\t'text-surface-onVariant': isUpcoming,\n\t\t}\n\n\t\t// If the step is clickable (active or complete), add a pointer cursor.\n\t\tconst clickableClass = isActive || isComplete ? 'cursor-pointer' : ''\n\n\t\treturn html`\n\t\t\t<li class=\"relative\">\n\t\t\t\t<!-- Connector line - responsive positioning -->\n\t\t\t\t<div\n\t\t\t\t\tclass=\"absolute top-8 left-3 sm:left-4 -ml-px w-0.5 transition-colors duration-200 ${this.classMap(connectorClasses)}\"\n\t\t\t\t\tstyle=\"height: calc(100% + var(--steps-gap, 0px))\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\n\n\t\t\t\t<!-- Step Button/Label - adjusted padding for mobile -->\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=${this._onStepClick}\n\t\t\t\t\tclass=\"relative flex items-center group transition-all duration-200 hover:scale-[1.02] ${clickableClass} ${isActive ? 'bg-primary-container/20 -mx-1 sm:-mx-2 px-1 sm:px-2 py-2 sm:py-3 rounded-lg' : 'py-1 sm:py-2'}\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"flex items-center h-10 sm:h-12\">\n\t\t\t\t\t\t<span class=${this.classMap(iconContainerClasses)}>\n\t\t\t\t\t\t\t${isComplete\n\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t<svg class=\"size-5 transition-transform duration-200 group-hover:scale-110\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z\"\n\t\t\t\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclass=\"size-3 rounded-full transition-all duration-200 ${isActive\n\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary-onContainer'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'bg-transparent group-hover:bg-primary-default group-hover:scale-125'}\"\n\t\t\t\t\t\t\t\t\t\t></span>\n\t\t\t\t\t\t\t\t\t`}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span class=\"flex flex-col items-start justify-center min-w-0 ml-3 sm:ml-6\">\n\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\">\n\t\t\t\t\t\t\t<span class=\"transition-colors duration-200 ${this.classMap(textClasses)}\">${this.title}</span>\n\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\tthis.description,\n\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"body\" token=\"sm\" class=\"mt-0.5 sm:mt-1\">\n\t\t\t\t\t\t\t\t\t<span class=\"text-surface-onVariant transition-colors duration-200 ${isActive ? 'text-primary-onContainer' : ''}\">${this.description}</span>\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- Render step content if the step is active - responsive spacing -->\n\t\t\t\t${when(\n\t\t\t\t\tisActive,\n\t\t\t\t\t() => html`\n\t\t\t\t\t\t<div class=\"ml-6 sm:ml-10 mt-3 sm:mt-4 pb-6 sm:pb-8 transition-all duration-300 ease-out\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</li>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-step': SchmancyStep\n\t}\n}\n","import { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { StepsController, stepsContext } from './steps.context'\n\n/**\n * Custom event emitted when the current step changes\n */\nexport type SchmancyStepsChangeEvent = CustomEvent<{ value: number }>\n\n@customElement('schmancy-steps-container')\nexport class SchmancyStepsContainer extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprivate controller = new StepsController()\n\n\t@provide({ context: stepsContext })\n\tstepsController = this.controller\n\n\t@property({ type: Number, reflect: true })\n\tset currentStep(value: number) {\n\t\tconst oldValue = this._currentStep\n\t\tthis._currentStep = value\n\t\tthis.controller.setStep(value)\n\t\tthis.requestUpdate('currentStep', oldValue)\n\t\t\n\t\t// Dispatch change event when step changes\n\t\tif (oldValue !== value) {\n\t\t\tthis.dispatchEvent(new CustomEvent('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true\n\t\t\t}))\n\t\t}\n\t}\n\n\tget currentStep(): number {\n\t\treturn this._currentStep\n\t}\n\n\tprivate _currentStep = 1\n\n\t/**\n\t * Gap between steps. Maps to Tailwind gap classes.\n\t * Options: 0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24\n\t * @default 4\n\t */\n\t@property({ type: Number, reflect: true })\n\tgap: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 = 4\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.controller.setStep(this.currentStep)\n\t}\n\n\trender() {\n\t\t// Map gap value to Tailwind gap class\n\t\tconst gapClass = `gap-${this.gap}`\n\t\t\n\t\t// Map gap value to actual rem value for CSS custom property\n\t\t// Tailwind gap scale: 1 = 0.25rem, 2 = 0.5rem, etc.\n\t\tconst gapRem = {\n\t\t\t0: '0',\n\t\t\t1: '0.25rem',\n\t\t\t2: '0.5rem',\n\t\t\t3: '0.75rem',\n\t\t\t4: '1rem',\n\t\t\t5: '1.25rem',\n\t\t\t6: '1.5rem',\n\t\t\t8: '2rem',\n\t\t\t10: '2.5rem',\n\t\t\t12: '3rem',\n\t\t\t16: '4rem',\n\t\t\t20: '5rem',\n\t\t\t24: '6rem'\n\t\t}[this.gap] || '1rem'\n\t\t\n\t\treturn html`\n\t\t\t<nav class=\"flex h-full w-full\" aria-label=\"Progress\">\n\t\t\t\t<ol class=\"flex flex-col flex-1 ${gapClass}\" role=\"list\" style=\"--steps-gap: ${gapRem}\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-steps-container': SchmancyStepsContainer\n\t}\n\t\n\tinterface HTMLElementEventMap {\n\t\t'schmancy-steps:change': SchmancyStepsChangeEvent\n\t}\n}\n"],"names":["StepsController","constructor","this","_currentStep","BehaviorSubject","currentStep$","asObservable","currentStep","value","step","next","stepsContext","createContext","Symbol","SchmancyStep","$LitElement","css","super","arguments","position","title","description","completed","lockBack","connectedCallback","subscription","steps","subscribe","updateFlexProperties","disconnectedCallback","unsubscribe","isActive","style","flex","status","_e","setStep","render","isComplete","isUpcoming","connectorClasses","iconContainerClasses","textClasses","clickableClass","html","classMap","_onStepClick","when","__decorateClass","property","type","Number","prototype","String","Boolean","reflect","consume","context","state","customElement","SchmancyStepsContainer","controller","stepsController","gap","oldValue","requestUpdate","dispatchEvent","CustomEvent","detail","bubbles","composed","gapClass","gapRem","provide"],"mappings":";;;;;;;AAGO,MAAMA,EAAAA;AAAAA,EAAN,cAAAC;AACNC,SAAQC,eAAe,IAAIC,EAAgB,CAAA;AAAA,EAAC;AAAA,EAE5C,IAAA,eAAIC;AACH,WAAOH,KAAKC,aAAaG,aAAAA;AAAAA,EAC1B;AAAA,EAEA,IAAA,cAAIC;AACH,WAAOL,KAAKC,aAAaK;AAAAA,EAC1B;AAAA,EAEA,QAAQC,GAAAA;AACPP,SAAKC,aAAaO,KAAKD,CAAAA;AAAAA,EACxB;AAAA;AAMM,MAAME,IAAeC,EAA+BC,uBAAO,sBAAA,CAAA;;;;;ACb3D,IAAMC,IAAN,cAA2BC,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAAvC,EAAA;AAAA,EAAA,cAAAf;AAAAgB,UAAAA,GAAAC,SAAAA,GAYsBhB,KAAAiB,WAAW,GAEXjB,KAAAkB,QAAQ,IACRlB,KAAAmB,cAAc,IAGEnB,KAAAoB,YAAAA,IAMfpB,KAAAqB,WAAAA,IAY7BrB,KAAQK,cAAc;AAAA,EAAA;AAAA,EAOtB;AACCU,UAAMO,kBAAAA;AAAAA,EACP;AAAA,EAEA;AAGCtB,SAAKuB,eAAevB,KAAKwB,MAAMrB,aAAasB,UAAUlB,OAAAA;AACrDP,WAAKK,cAAcE,GAEnBP,KAAK0B,qBAAAA;AAAAA,IAAAA,CAAAA,GAGN1B,KAAK0B;EACN;AAAA,EAEA,uBAAAC;AACC3B,SAAKuB,cAAcK,YAAAA,GACnBb,MAAMY,qBAAAA;AAAAA,EACP;AAAA,EAKQ,uBAAAD;AACP,UAAMG,IAAW7B,KAAKiB,aAAajB,KAAKK;AAIvCL,SAAK8B,MAAMC,OAFRF,IAEe,aAGA;AAAA,EAEpB;AAAA,EAMA,IAAA,SAAIG;AACH,WAAIhC,KAAKoB,aAAapB,KAAKiB,WAAWjB,KAAKK,cAAoB,aAC3DL,KAAKiB,aAAajB,KAAKK,cAAoB,YACxC;AAAA,EACR;AAAA,EAMQ,aAAa4B,GAAAA;AAEhBjC,SAAKqB,YAAYrB,KAAKiB,WAAWjB,KAAKK,eAGtCL,KAAKgC,WAAW,cACnBhC,KAAKwB,MAAMU,QAAQlC,KAAKiB,QAAAA;AAAAA,EAE1B;AAAA,EAEA,SAAAkB;AAEC,UAAMN,IAAW7B,KAAKiB,aAAajB,KAAKK,aAGlC+B,IAAapC,KAAKgC,WAAW,YAC7BK,IAAarC,KAAKgC,WAAW,YAG7BM,IAAmB,EACxB,uBAAuBF,GACvB,qBAAA,CAAsBA,KAGjBG,IAAuB,EAC5B,+GAAA,IACA,wEAAwEH,GACxE,2FAAA,CAA4FA,KAAcP,GAC1G,yIAAyIQ,EAAAA,GAGpIG,IAAc,EACnB,oCAAoCX,GACpC,yBAAyBO,GACzB,0BAA0BC,EAAAA,GAIrBI,IAAiBZ,KAAYO,IAAa,mBAAmB;AAEnE,WAAOM;AAAAA;AAAAA;AAAAA;AAAAA,0FAIiF1C,KAAK2C,SAASL,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,cAQ1FtC,KAAK4C,YAAAA;AAAAA,8FAC2EH,CAAAA,IAAkBZ,IAAW,gFAAgF,cAAA;AAAA;AAAA;AAAA,oBAGvL7B,KAAK2C,SAASJ,CAAAA,CAAAA;AAAAA,SACzBH,IACCM;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,aASAA;AAAAA;AAAAA,oEAE0Db,IACtD,2BACA,qEAAA;AAAA;AAAA;;;;;;qDAQuC7B,KAAK2C,SAASH,OAAiBxC,KAAKkB,KAAAA;AAAAA;AAAAA,QAEjF2B,EACD7C,KAAKmB,aACL,MAAMuB;AAAAA;AAAAA,8EAEiEb,IAAW,6BAA6B,OAAO7B,KAAKmB,WAAAA;AAAAA;AAAAA;;;;;MAQ5H0B,EACDhB,GACA,MAAMa;AAAAA;AAAAA;AAAAA;AAAAA;;;EAQV;AAAA;AAxL4BI,EAAA,CAA3BC,EAAS,EAAEC,MAAMC,OAAAA,CAAAA,CAAAA,GAZNrC,EAYgBsC,WAAA,YAAA,CAAA,GAEAJ,EAAA,CAA3BC,EAAS,EAAEC,MAAMG,OAAAA,CAAAA,CAAAA,GAdNvC,EAcgBsC,WAAA,SAAA,CAAA,GACAJ,EAAA,CAA3BC,EAAS,EAAEC,MAAMG,OAAAA,CAAAA,CAAAA,GAfNvC,EAegBsC,WAAA,eAAA,CAAA,GAGgBJ,EAAA,CAA3CC,EAAS,EAAEC,MAAMI,SAASC,SAAAA,GAAS,CAAA,CAAA,GAlBxBzC,EAkBgCsC,WAAA,aAAA,CAAA,GAMfJ,EAAA,CAA5BC,EAAS,EAAEC,MAAMI,QAAAA,CAAAA,CAAAA,GAxBNxC,EAwBiBsC,WAAA,YAAA,CAAA,GAMrBJ,EAAA,CADPQ,EAAQ,EAAEC,SAAS9C,EAAAA,CAAAA,CAAAA,GA7BRG,EA8BJsC,WAAA,SAAA,CAAA,GAMAJ,EAAA,CADPU,EAAAA,CAAAA,GAnCW5C,EAoCJsC,WAAA,eAAA,CAAA,GApCItC,IAANkC,EAAA,CADNW,EAAc,eAAA,CAAA,GACF7C,CAAAA;;;;;ACGN,IAAM8C,IAAN,cAAqC7C,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA;EAAjD,cAAAf;AAAAgB,aAAAC,SAAAA,GAKNhB,KAAQ2D,aAAa,IAAI7D,KAGzBE,KAAA4D,kBAAkB5D,KAAK2D,YAuBvB3D,KAAQC,eAAe,GAQvBD,KAAA6D,MAA8D;AAAA,EAAA;AAAA,EA5B9D,gBAAgBvD,GAAAA;AACf,UAAMwD,IAAW9D,KAAKC;AACtBD,SAAKC,eAAeK,GACpBN,KAAK2D,WAAWzB,QAAQ5B,CAAAA,GACxBN,KAAK+D,cAAc,eAAeD,CAAAA,GAG9BA,MAAaxD,KAChBN,KAAKgE,cAAc,IAAIC,YAAY,UAAU,EAC5CC,QAAQ,EAAE5D,YACV6D,SAAAA,IACAC,UAAAA,GAAU,CAAA,CAAA;AAAA,EAGb;AAAA,EAEA,IAAA;AACC,WAAOpE,KAAKC;AAAAA,EACb;AAAA,EAYA,oBAAAqB;AACCP,UAAMO,kBAAAA,GACNtB,KAAK2D,WAAWzB,QAAQlC,KAAKK,WAAAA;AAAAA,EAC9B;AAAA,EAEA,SAAA8B;AAEC,UAAMkC,IAAW,OAAOrE,KAAK6D,OAIvBS,IAAS,EACd,GAAG,KACH,GAAG,WACH,GAAG,UACH,GAAG,WACH,GAAG,QACH,GAAG,WACH,GAAG,UACH,GAAG,QACH,IAAI,UACJ,IAAI,QACJ,IAAI,QACJ,IAAI,QACJ,IAAI,SACHtE,KAAK6D,GAAAA,KAAQ;AAEf,WAAOnB;AAAAA;AAAAA,sCAE6B2B,CAAAA,qCAA6CC,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAKlF;AAAA;AAnEAxB,EAAA,CADCyB,EAAQ,EAAEhB,SAAS9C,EAAAA,CAAAA,CAAAA,GAPRiD,EAQZR,WAAA,mBAAA,IAGIJ,EAAA,CADHC,EAAS,EAAEC,MAAMC,QAAQI,SAAAA,GAAS,CAAA,CAAA,GAVvBK,EAWRR,WAAA,eAAA,CAAA,GA4BJJ,EAAA,CADCC,EAAS,EAAEC,MAAMC,QAAQI,SAAAA,QAtCdK,EAuCZR,WAAA,OAAA,CAAA,GAvCYQ,IAANZ,EAAA,CADNW,EAAc,8BACFC,CAAAA;"}
@@ -1,70 +0,0 @@
1
- "use strict";const S=require("./consume-edta5ng5.cjs"),c=require("lit"),i=require("lit/decorators.js"),h=require("lit/directives/when.js"),d=require("./litElement.mixin-CrpeGpZ7.cjs"),y=require("./provide-BxZ2kn_p.cjs"),g=require("rxjs");class m{constructor(){this._currentStep=new g.BehaviorSubject(1)}get currentStep$(){return this._currentStep.asObservable()}get currentStep(){return this._currentStep.value}setStep(e){this._currentStep.next(e)}}const u=y.n(Symbol("SchmancyStepsContext"));var b=Object.defineProperty,f=Object.getOwnPropertyDescriptor,p=(t,e,n,s)=>{for(var o,r=s>1?void 0:s?f(e,n):e,a=t.length-1;a>=0;a--)(o=t[a])&&(r=(s?o(e,n,r):o(r))||r);return s&&r&&b(e,n,r),r};exports.SchmancyStep=class extends d.$LitElement(c.css`
2
- :host {
3
- display: grid;
4
- /* Base display is just grid, flex properties will be applied dynamically */
5
- transition: all 0.2s ease-in-out;
6
- }
7
- `){constructor(){super(...arguments),this.position=1,this.title="",this.description="",this.completed=!1,this.lockBack=!1,this.currentStep=1}connectedCallback(){super.connectedCallback()}firstUpdated(){this.subscription=this.steps.currentStep$.subscribe(t=>{this.currentStep=t,this.updateFlexProperties()}),this.updateFlexProperties()}disconnectedCallback(){this.subscription?.unsubscribe(),super.disconnectedCallback()}updateFlexProperties(){const t=this.position===this.currentStep;this.style.flex=t?"1 1 auto":"0 0 auto"}get status(){return this.completed||this.position<this.currentStep?"complete":this.position===this.currentStep?"current":"upcoming"}_onStepClick(t){this.lockBack&&this.position<this.currentStep||this.status!=="upcoming"&&this.steps.setStep(this.position)}render(){const t=this.position===this.currentStep,e=this.status==="complete",n=this.status==="upcoming",s={"bg-tertiary-default":e,"bg-outlineVariant":!e},o={"relative border-solid z-10 flex size-8 items-center justify-center rounded-full transition-all duration-200":!0,"bg-tertiary-default text-tertiary-on shadow-md group-hover:shadow-lg":e,"border-2 border-primary-default bg-primary-container text-primary-onContainer shadow-sm":!e&&t,"border-2 border-outline bg-surface-default text-surface-onVariant group-hover:border-primary-default group-hover:bg-primary-container":n},r={"text-primary-default font-medium":t,"text-tertiary-default":e,"text-surface-onVariant":n},a=t||e?"cursor-pointer":"";return c.html`
8
- <li class="relative">
9
- <!-- Connector line - responsive positioning -->
10
- <div
11
- class="absolute top-8 left-3 sm:left-4 -ml-px w-0.5 transition-colors duration-200 ${this.classMap(s)}"
12
- style="height: calc(100% + var(--steps-gap, 0px))"
13
- aria-hidden="true"
14
- ></div>
15
-
16
- <!-- Step Button/Label - adjusted padding for mobile -->
17
- <button
18
- type="button"
19
- @click=${this._onStepClick}
20
- class="relative flex items-center group transition-all duration-200 hover:scale-[1.02] ${a} ${t?"bg-primary-container/20 -mx-1 sm:-mx-2 px-1 sm:px-2 py-2 sm:py-3 rounded-lg":"py-1 sm:py-2"}"
21
- >
22
- <span class="flex items-center h-10 sm:h-12">
23
- <span class=${this.classMap(o)}>
24
- ${e?c.html`
25
- <svg class="size-5 transition-transform duration-200 group-hover:scale-110" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
26
- <path
27
- fill-rule="evenodd"
28
- d="M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z"
29
- clip-rule="evenodd"
30
- />
31
- </svg>
32
- `:c.html`
33
- <span
34
- class="size-3 rounded-full transition-all duration-200 ${t?"bg-primary-onContainer":"bg-transparent group-hover:bg-primary-default group-hover:scale-125"}"
35
- ></span>
36
- `}
37
- </span>
38
- </span>
39
-
40
- <span class="flex flex-col items-start justify-center min-w-0 ml-3 sm:ml-6">
41
- <schmancy-typography type="title" token="md">
42
- <span class="transition-colors duration-200 ${this.classMap(r)}">${this.title}</span>
43
- </schmancy-typography>
44
- ${h.when(this.description,()=>c.html`
45
- <schmancy-typography type="body" token="sm" class="mt-0.5 sm:mt-1">
46
- <span class="text-surface-onVariant transition-colors duration-200 ${t?"text-primary-onContainer":""}">${this.description}</span>
47
- </schmancy-typography>
48
- `)}
49
- </span>
50
- </button>
51
-
52
- <!-- Render step content if the step is active - responsive spacing -->
53
- ${h.when(t,()=>c.html`
54
- <div class="ml-6 sm:ml-10 mt-3 sm:mt-4 pb-6 sm:pb-8 transition-all duration-300 ease-out">
55
- <slot></slot>
56
- </div>
57
- `)}
58
- </li>
59
- `}},p([i.property({type:Number})],exports.SchmancyStep.prototype,"position",2),p([i.property({type:String})],exports.SchmancyStep.prototype,"title",2),p([i.property({type:String})],exports.SchmancyStep.prototype,"description",2),p([i.property({type:Boolean,reflect:!0})],exports.SchmancyStep.prototype,"completed",2),p([i.property({type:Boolean})],exports.SchmancyStep.prototype,"lockBack",2),p([S.c({context:u})],exports.SchmancyStep.prototype,"steps",2),p([i.state()],exports.SchmancyStep.prototype,"currentStep",2),exports.SchmancyStep=p([i.customElement("schmancy-step")],exports.SchmancyStep);var v=Object.defineProperty,x=Object.getOwnPropertyDescriptor,l=(t,e,n,s)=>{for(var o,r=s>1?void 0:s?x(e,n):e,a=t.length-1;a>=0;a--)(o=t[a])&&(r=(s?o(e,n,r):o(r))||r);return s&&r&&v(e,n,r),r};exports.SchmancyStepsContainer=class extends d.$LitElement(c.css`
60
- :host {
61
- display: block;
62
- }
63
- `){constructor(){super(...arguments),this.controller=new m,this.stepsController=this.controller,this._currentStep=1,this.gap=4}set currentStep(t){const e=this._currentStep;this._currentStep=t,this.controller.setStep(t),this.requestUpdate("currentStep",e),e!==t&&this.dispatchEvent(new CustomEvent("change",{detail:{value:t},bubbles:!0,composed:!0}))}get currentStep(){return this._currentStep}connectedCallback(){super.connectedCallback(),this.controller.setStep(this.currentStep)}render(){const t=`gap-${this.gap}`,e={0:"0",1:"0.25rem",2:"0.5rem",3:"0.75rem",4:"1rem",5:"1.25rem",6:"1.5rem",8:"2rem",10:"2.5rem",12:"3rem",16:"4rem",20:"5rem",24:"6rem"}[this.gap]||"1rem";return c.html`
64
- <nav class="flex h-full w-full" aria-label="Progress">
65
- <ol class="flex flex-col flex-1 ${t}" role="list" style="--steps-gap: ${e}">
66
- <slot></slot>
67
- </ol>
68
- </nav>
69
- `}},l([y.e({context:u})],exports.SchmancyStepsContainer.prototype,"stepsController",2),l([i.property({type:Number,reflect:!0})],exports.SchmancyStepsContainer.prototype,"currentStep",1),l([i.property({type:Number,reflect:!0})],exports.SchmancyStepsContainer.prototype,"gap",2),exports.SchmancyStepsContainer=l([i.customElement("schmancy-steps-container")],exports.SchmancyStepsContainer),exports.StepsController=m,exports.stepsContext=u;
70
- //# sourceMappingURL=schmancy-steps-container-T57BKMzi.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schmancy-steps-container-T57BKMzi.cjs","sources":["../src/steps/steps.context.ts","../src/steps/schmancy-step.ts","../src/steps/schmancy-steps-container.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { BehaviorSubject } from 'rxjs'\n\nexport class StepsController {\n\tprivate _currentStep = new BehaviorSubject(1)\n\n\tget currentStep$() {\n\t\treturn this._currentStep.asObservable()\n\t}\n\n\tget currentStep() {\n\t\treturn this._currentStep.value\n\t}\n\n\tsetStep(step: number) {\n\t\tthis._currentStep.next(step)\n\t}\n}\n\n/**\n * The actual context object. We provide/consume this in the container and steps.\n */\nexport const stepsContext = createContext<StepsController>(Symbol('SchmancyStepsContext'))\n","import { consume } from '@lit/context'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\nimport { Subscription } from 'rxjs'\nimport { stepsContext, StepsController } from './steps.context'\nimport { $LitElement } from '@mixins/litElement.mixin'\n\n@customElement('schmancy-step')\nexport class SchmancyStep extends $LitElement(css`\n\t:host {\n\t\tdisplay: grid;\n\t\t/* Base display is just grid, flex properties will be applied dynamically */\n\t\ttransition: all 0.2s ease-in-out;\n\t}\n`) {\n\t/**\n\t * The step's position (1-based). This is used to compare against\n\t * the container's current step to decide if it's \"complete\",\n\t * \"current\", or \"upcoming\".\n\t */\n\t@property({ type: Number }) position = 1\n\n\t@property({ type: String }) title = ''\n\t@property({ type: String }) description = ''\n\n\t// NEW: Allow a step to be explicitly marked as complete.\n\t@property({ type: Boolean, reflect: true }) completed = false\n\n\t/**\n\t * NEW: Lock API to disable users from going back.\n\t * When set to true, clicking on a previous (completed) step is ignored.\n\t */\n\t@property({ type: Boolean }) lockBack = false\n\n\t/**\n\t * Consume the shared StepsController from context.\n\t */\n\t@consume({ context: stepsContext })\n\tprivate steps!: StepsController\n\n\t/**\n\t * Local reactive copy of the container's current step number.\n\t */\n\t@state()\n\tprivate currentStep = 1\n\n\t/**\n\t * Keep a reference to our subscription so we can unsubscribe cleanly.\n\t */\n\tprivate subscription?: Subscription\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t}\n\n\tfirstUpdated() {\n\t\t// Subscribe to updates from the container's StepsController.\n\t\t// Context is guaranteed to be available after first render\n\t\tthis.subscription = this.steps.currentStep$.subscribe(step => {\n\t\t\tthis.currentStep = step\n\t\t\t// When the current step changes, update the flex properties\n\t\t\tthis.updateFlexProperties()\n\t\t})\n\t\t// Initial update of flex properties\n\t\tthis.updateFlexProperties()\n\t}\n\n\tdisconnectedCallback(): void {\n\t\tthis.subscription?.unsubscribe()\n\t\tsuper.disconnectedCallback()\n\t}\n\n\t/**\n\t * Update the host element's flex properties based on active state\n\t */\n\tprivate updateFlexProperties() {\n\t\tconst isActive = this.position === this.currentStep\n\n\t\tif (isActive) {\n\t\t\t// Apply flex-grow when active\n\t\t\tthis.style.flex = '1 1 auto'\n\t\t} else {\n\t\t\t// Make it shrink when not active\n\t\t\tthis.style.flex = '0 0 auto'\n\t\t}\n\t}\n\n\t/**\n\t * Compute visual status for styling purposes. Note that if a step is explicitly\n\t * marked as completed, it always appears as complete even if it's active.\n\t */\n\tget status(): 'complete' | 'current' | 'upcoming' {\n\t\tif (this.completed || this.position < this.currentStep) return 'complete'\n\t\tif (this.position === this.currentStep) return 'current'\n\t\treturn 'upcoming'\n\t}\n\n\t/**\n\t * Click handler to allow navigation between completed (or active) steps.\n\t * With lockBack enabled, clicking on a previous step is ignored.\n\t */\n\tprivate _onStepClick(_e: Event) {\n\t\t// If lockBack is enabled and the user attempts to go back, do nothing.\n\t\tif (this.lockBack && this.position < this.currentStep) {\n\t\t\treturn\n\t\t}\n\t\tif (this.status !== 'upcoming') {\n\t\t\tthis.steps.setStep(this.position)\n\t\t}\n\t}\n\n\trender() {\n\t\t// Determine if the step is currently active.\n\t\tconst isActive = this.position === this.currentStep\n\n\t\t// Use computed status for visual styling.\n\t\tconst isComplete = this.status === 'complete'\n\t\tconst isUpcoming = this.status === 'upcoming'\n\n\t\t// Enhanced styling classes with better visual hierarchy\n\t\tconst connectorClasses = {\n\t\t\t'bg-tertiary-default': isComplete,\n\t\t\t'bg-outlineVariant': !isComplete,\n\t\t}\n\n\t\tconst iconContainerClasses = {\n\t\t\t'relative border-solid z-10 flex size-8 items-center justify-center rounded-full transition-all duration-200': true,\n\t\t\t'bg-tertiary-default text-tertiary-on shadow-md group-hover:shadow-lg': isComplete,\n\t\t\t'border-2 border-primary-default bg-primary-container text-primary-onContainer shadow-sm': !isComplete && isActive,\n\t\t\t'border-2 border-outline bg-surface-default text-surface-onVariant group-hover:border-primary-default group-hover:bg-primary-container': isUpcoming,\n\t\t}\n\n\t\tconst textClasses = {\n\t\t\t'text-primary-default font-medium': isActive,\n\t\t\t'text-tertiary-default': isComplete,\n\t\t\t'text-surface-onVariant': isUpcoming,\n\t\t}\n\n\t\t// If the step is clickable (active or complete), add a pointer cursor.\n\t\tconst clickableClass = isActive || isComplete ? 'cursor-pointer' : ''\n\n\t\treturn html`\n\t\t\t<li class=\"relative\">\n\t\t\t\t<!-- Connector line - responsive positioning -->\n\t\t\t\t<div\n\t\t\t\t\tclass=\"absolute top-8 left-3 sm:left-4 -ml-px w-0.5 transition-colors duration-200 ${this.classMap(connectorClasses)}\"\n\t\t\t\t\tstyle=\"height: calc(100% + var(--steps-gap, 0px))\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t></div>\n\n\t\t\t\t<!-- Step Button/Label - adjusted padding for mobile -->\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t@click=${this._onStepClick}\n\t\t\t\t\tclass=\"relative flex items-center group transition-all duration-200 hover:scale-[1.02] ${clickableClass} ${isActive ? 'bg-primary-container/20 -mx-1 sm:-mx-2 px-1 sm:px-2 py-2 sm:py-3 rounded-lg' : 'py-1 sm:py-2'}\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"flex items-center h-10 sm:h-12\">\n\t\t\t\t\t\t<span class=${this.classMap(iconContainerClasses)}>\n\t\t\t\t\t\t\t${isComplete\n\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t<svg class=\"size-5 transition-transform duration-200 group-hover:scale-110\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t\td=\"M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z\"\n\t\t\t\t\t\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclass=\"size-3 rounded-full transition-all duration-200 ${isActive\n\t\t\t\t\t\t\t\t\t\t\t\t? 'bg-primary-onContainer'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'bg-transparent group-hover:bg-primary-default group-hover:scale-125'}\"\n\t\t\t\t\t\t\t\t\t\t></span>\n\t\t\t\t\t\t\t\t\t`}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span class=\"flex flex-col items-start justify-center min-w-0 ml-3 sm:ml-6\">\n\t\t\t\t\t\t<schmancy-typography type=\"title\" token=\"md\">\n\t\t\t\t\t\t\t<span class=\"transition-colors duration-200 ${this.classMap(textClasses)}\">${this.title}</span>\n\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\tthis.description,\n\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t<schmancy-typography type=\"body\" token=\"sm\" class=\"mt-0.5 sm:mt-1\">\n\t\t\t\t\t\t\t\t\t<span class=\"text-surface-onVariant transition-colors duration-200 ${isActive ? 'text-primary-onContainer' : ''}\">${this.description}</span>\n\t\t\t\t\t\t\t\t</schmancy-typography>\n\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t</button>\n\n\t\t\t\t<!-- Render step content if the step is active - responsive spacing -->\n\t\t\t\t${when(\n\t\t\t\t\tisActive,\n\t\t\t\t\t() => html`\n\t\t\t\t\t\t<div class=\"ml-6 sm:ml-10 mt-3 sm:mt-4 pb-6 sm:pb-8 transition-all duration-300 ease-out\">\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t</li>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-step': SchmancyStep\n\t}\n}\n","import { provide } from '@lit/context'\nimport { $LitElement } from '@mixins/litElement.mixin'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { StepsController, stepsContext } from './steps.context'\n\n/**\n * Custom event emitted when the current step changes\n */\nexport type SchmancyStepsChangeEvent = CustomEvent<{ value: number }>\n\n@customElement('schmancy-steps-container')\nexport class SchmancyStepsContainer extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tprivate controller = new StepsController()\n\n\t@provide({ context: stepsContext })\n\tstepsController = this.controller\n\n\t@property({ type: Number, reflect: true })\n\tset currentStep(value: number) {\n\t\tconst oldValue = this._currentStep\n\t\tthis._currentStep = value\n\t\tthis.controller.setStep(value)\n\t\tthis.requestUpdate('currentStep', oldValue)\n\t\t\n\t\t// Dispatch change event when step changes\n\t\tif (oldValue !== value) {\n\t\t\tthis.dispatchEvent(new CustomEvent('change', {\n\t\t\t\tdetail: { value },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true\n\t\t\t}))\n\t\t}\n\t}\n\n\tget currentStep(): number {\n\t\treturn this._currentStep\n\t}\n\n\tprivate _currentStep = 1\n\n\t/**\n\t * Gap between steps. Maps to Tailwind gap classes.\n\t * Options: 0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24\n\t * @default 4\n\t */\n\t@property({ type: Number, reflect: true })\n\tgap: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 = 4\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.controller.setStep(this.currentStep)\n\t}\n\n\trender() {\n\t\t// Map gap value to Tailwind gap class\n\t\tconst gapClass = `gap-${this.gap}`\n\t\t\n\t\t// Map gap value to actual rem value for CSS custom property\n\t\t// Tailwind gap scale: 1 = 0.25rem, 2 = 0.5rem, etc.\n\t\tconst gapRem = {\n\t\t\t0: '0',\n\t\t\t1: '0.25rem',\n\t\t\t2: '0.5rem',\n\t\t\t3: '0.75rem',\n\t\t\t4: '1rem',\n\t\t\t5: '1.25rem',\n\t\t\t6: '1.5rem',\n\t\t\t8: '2rem',\n\t\t\t10: '2.5rem',\n\t\t\t12: '3rem',\n\t\t\t16: '4rem',\n\t\t\t20: '5rem',\n\t\t\t24: '6rem'\n\t\t}[this.gap] || '1rem'\n\t\t\n\t\treturn html`\n\t\t\t<nav class=\"flex h-full w-full\" aria-label=\"Progress\">\n\t\t\t\t<ol class=\"flex flex-col flex-1 ${gapClass}\" role=\"list\" style=\"--steps-gap: ${gapRem}\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ol>\n\t\t\t</nav>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-steps-container': SchmancyStepsContainer\n\t}\n\t\n\tinterface HTMLElementEventMap {\n\t\t'schmancy-steps:change': SchmancyStepsChangeEvent\n\t}\n}\n"],"names":["StepsController","constructor","this","_currentStep","BehaviorSubject","currentStep$","asObservable","currentStep","value","step","next","stepsContext","createContext","Symbol","SchmancyStep","$LitElement","css","super","arguments","position","title","description","completed","lockBack","connectedCallback","subscription","steps","subscribe","updateFlexProperties","disconnectedCallback","unsubscribe","isActive","style","flex","status","_e","setStep","render","isComplete","isUpcoming","connectorClasses","iconContainerClasses","textClasses","clickableClass","html","classMap","_onStepClick","when","__decorateClass","property","type","Number","prototype","String","Boolean","reflect","consume","context","state","customElement","SchmancyStepsContainer","controller","stepsController","gap","oldValue","requestUpdate","dispatchEvent","CustomEvent","detail","bubbles","composed","gapClass","gapRem","provide"],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- import { fromEvent as a, debounceTime as d, takeUntil as p, filter as f } from "rxjs";
2
- import "rxjs/operators";
3
- import "lit/directives/class-map.js";
4
- import "lit/directives/style-map.js";
5
- import { property as h, customElement as u } from "lit/decorators.js";
6
- import { T as y } from "./tailwind.mixin-Bp_PR6yc.js";
7
- import { css as m, html as b } from "lit";
8
- var g = Object.defineProperty, v = Object.getOwnPropertyDescriptor, n = (e, t, r, s) => {
9
- for (var i, o = s > 1 ? void 0 : s ? v(t, r) : t, c = e.length - 1; c >= 0; c--) (i = e[c]) && (o = (s ? i(t, r, o) : i(o)) || o);
10
- return s && o && g(t, r, o), o;
11
- };
12
- let l = class extends y(m`
13
- :host {
14
- /* Flexible sizing for different layout contexts */
15
- width: 100%;
16
- min-height: 0; /* Allow flex shrinking */
17
- flex: 1; /* Grow in flex containers */
18
- box-sizing: border-box; /* Ensures proper sizing */
19
- display: block;
20
- position: relative;
21
- scroll-behavior: smooth;
22
- overscroll-behavior-x: contain;
23
- overscroll-behavior-y: auto;
24
- }
25
- /* Fallback for non-flex contexts */
26
- :host(.explicit-height) {
27
- height: 100%;
28
- flex: none;
29
- }
30
- :host([hide]) {
31
- -ms-overflow-style: none; /* IE and Edge */
32
- scrollbar-width: none; /* Firefox */
33
- }
34
- :host([hide])::-webkit-scrollbar {
35
- display: none; /* Chrome, Safari, and Opera */
36
- }
37
- `) {
38
- constructor() {
39
- super(...arguments), this.hide = !1, this.direction = "both", this.debounce = 10;
40
- }
41
- get scroller() {
42
- return this;
43
- }
44
- scrollTo(e, t) {
45
- this.scroller && (typeof e == "number" ? this.scroller.scrollTo({ top: e, behavior: t ? "smooth" : "auto" }) : e ? this.scroller.scrollTo(e) : this.scroller.scrollTo({ top: 0, left: 0, behavior: "auto" }));
46
- }
47
- scrollToLeft(e, t = "auto") {
48
- this.scroller && this.scroller.scrollTo({ left: e, behavior: t });
49
- }
50
- connectedCallback() {
51
- super.connectedCallback(), this.updateScrollingStyles(), this.updateLayoutContext(), this.setAttribute("part", "scroller");
52
- }
53
- updateScrollingStyles() {
54
- this.direction === "horizontal" ? (this.style.setProperty("overflow-y", "hidden"), this.style.setProperty("overflow-x", "auto")) : this.direction === "vertical" ? (this.style.setProperty("overflow-y", "auto"), this.style.setProperty("overflow-x", "hidden")) : (this.style.setProperty("overflow-y", "auto"), this.style.setProperty("overflow-x", "auto"));
55
- }
56
- updateLayoutContext() {
57
- requestAnimationFrame(() => {
58
- const e = this.parentElement;
59
- if (e) {
60
- const t = getComputedStyle(e);
61
- t.display === "flex" || t.display === "inline-flex" ? this.classList.remove("explicit-height") : this.classList.add("explicit-height");
62
- } else this.classList.add("explicit-height");
63
- });
64
- }
65
- updated(e) {
66
- super.updated(e), e.has("direction") && this.updateScrollingStyles(), this.updateLayoutContext();
67
- }
68
- firstUpdated() {
69
- a(this.scroller, "scroll", { passive: !0 }).pipe(d(this.debounce), p(this.disconnecting)).subscribe((e) => {
70
- const t = this.scroller.scrollTop, r = this.scroller.scrollHeight, s = this.scroller.clientHeight, i = this.scroller.scrollLeft, o = this.scroller.scrollWidth, c = this.scroller.clientWidth;
71
- this.dispatchEvent(new CustomEvent("scroll", { detail: { scrollTop: t, scrollHeight: r, clientHeight: s, e, scrollLeft: i, scrollWidth: o, clientWidth: c }, bubbles: !0, composed: !0 }));
72
- }), a(window, "@schmancy:scrollTo").pipe(f((e) => this.name !== void 0 && e.detail.name === this.name), p(this.disconnecting)).subscribe((e) => {
73
- if (e.detail.action === "scrollTo" && typeof e.detail.top == "number") {
74
- const t = { behavior: "smooth", top: e.detail.top };
75
- typeof e.detail.left == "number" && (t.left = e.detail.left), this.scrollTo(t);
76
- }
77
- });
78
- }
79
- render() {
80
- return b`<slot></slot>`;
81
- }
82
- };
83
- n([h({ type: Boolean, reflect: !0 })], l.prototype, "hide", 2), n([h({ type: String, reflect: !0 })], l.prototype, "name", 2), n([h({ type: String, reflect: !0 })], l.prototype, "direction", 2), n([h({ type: Number })], l.prototype, "debounce", 2), l = n([u("schmancy-scroll")], l);
84
- export {
85
- l as S
86
- };
87
- //# sourceMappingURL=scroll-C_gfUgjn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll-C_gfUgjn.js","sources":["../src/layout/scroll/scroll.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { debounceTime, filter, fromEvent, takeUntil } from 'rxjs'\n\n/**\n * Custom scroll event interface for the SchmancyScroll component.\n * Contains detailed information about the scroll state.\n */\nexport interface SchmancyScrollEvent\n\textends CustomEvent<{\n\t\t/** Current scroll position from the top */\n\t\tscrollTop: number\n\t\t/** Total scrollable height of the content */\n\t\tscrollHeight: number\n\t\t/** Visible height of the container */\n\t\tclientHeight: number\n\t\t/** Original scroll event */\n\t\te: Event\n\t\t/** Current scroll position from the left (for horizontal scrolling) */\n\t\tscrollLeft?: number\n\t\t/** Total scrollable width of the content (for horizontal scrolling) */\n\t\tscrollWidth?: number\n\t\t/** Visible width of the container (for horizontal scrolling) */\n\t\tclientWidth?: number\n\t}> {}\n\n/**\n * Command event interface for controlling SchmancyScroll components\n */\nexport interface SchmancyScrollCommandEvent\n\textends CustomEvent<{\n\t\t/** Target component name */\n\t\tname: string\n\t\t/** Command action to perform */\n\t\taction: 'scrollTo'\n\t\t/** Scroll position for scrollTo action */\n\t\ttop: number\n\t\t/** Horizontal scroll position for scrollTo action (optional) */\n\t\tleft?: number\n\t}> {}\n\n// Augment the HTMLElementEventMap to include our custom events\ndeclare global {\n\tinterface HTMLElementEventMap {\n\t\tscroll: SchmancyScrollEvent\n\t\t'schmancy-scroll-command': SchmancyScrollCommandEvent\n\t}\n}\n\n/**\n * A custom scrollable container with enhanced features.\n *\n * @fires {SchmancyScrollEvent} scroll - Fired when scrolling occurs (with a configurable debounce)\n * @slot - Default slot for content to be scrolled\n * @csspart scroller - The inner scrollable div element\n *\n * @example\n * ```html\n * <schmancy-scroll hide name=\"main-content\">\n * <div>Scrollable content goes here</div>\n * </schmancy-scroll>\n * ```\n *\n * @example\n * ```html\n * <schmancy-scroll direction=\"horizontal\" hide name=\"image-carousel\">\n * <div class=\"flex\">\n * <img src=\"image1.jpg\" alt=\"Image 1\">\n * <img src=\"image2.jpg\" alt=\"Image 2\">\n * </div>\n * </schmancy-scroll>\n * ```\n */\n@customElement('schmancy-scroll')\nexport class SchmancyScroll extends TailwindElement(css`\n\t:host {\n\t\t/* Flexible sizing for different layout contexts */\n\t\twidth: 100%;\n\t\tmin-height: 0; /* Allow flex shrinking */\n\t\tflex: 1; /* Grow in flex containers */\n\t\tbox-sizing: border-box; /* Ensures proper sizing */\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tscroll-behavior: smooth;\n\t\toverscroll-behavior-x: contain;\n\t\toverscroll-behavior-y: auto;\n\t}\n\t/* Fallback for non-flex contexts */\n\t:host(.explicit-height) {\n\t\theight: 100%;\n\t\tflex: none;\n\t}\n\t:host([hide]) {\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t:host([hide])::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, and Opera */\n\t}\n`) {\n\t/**\n\t * Determines whether the scrollbar is hidden.\n\t *\n\t * When `hide` is true, the host element's scrollbars are hidden\n\t * in supported browsers using CSS.\n\t *\n\t * @attr hide\n\t * @example <schmancy-scroll hide></schmancy-scroll>\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic hide = false\n\n\t/**\n\t * Optional name identifier for the component.\n\t * Used for targeting this specific component with global events.\n\t *\n\t * @attr name\n\t * @example <schmancy-scroll name=\"main-content\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic name?: string\n\n\t/**\n\t * Direction of scrolling: vertical, horizontal, or both.\n\t * - vertical: Only allows vertical scrolling\n\t * - horizontal: Only allows horizontal scrolling\n\t * - both: Allows both horizontal and vertical scrolling (default)\n\t *\n\t * @attr direction\n\t * @example <schmancy-scroll direction=\"horizontal\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic direction: 'vertical' | 'horizontal' | 'both' = 'both'\n\n\t/**\n\t * Reference to the scrollable element (the host element itself)\n\t * @public\n\t */\n\tget scroller(): HTMLElement {\n\t\treturn this\n\t}\n\n\t/**\n\t * Debounce time in milliseconds for the scroll event.\n\t * Higher values reduce the frequency of scroll events being dispatched.\n\t *\n\t * @attr debounce\n\t * @example <schmancy-scroll debounce=\"50\"></schmancy-scroll>\n\t */\n\t@property({ type: Number })\n\tpublic debounce = 10\n\n\t/**\n\t * Scrolls the container to the specified position\n\t * @param options - ScrollToOptions or a number representing the top position\n\t * @param top - For backward compatibility, if options is a number, this is treated as \"behavior\"\n\t */\n\tpublic override scrollTo(options?: ScrollToOptions | number, top?: number): void {\n\t\tif (!this.scroller) return\n\n\t\tif (typeof options === 'number') {\n\t\t\t// Legacy support for scrollTo(top, behavior)\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: options,\n\t\t\t\tbehavior: top ? 'smooth' : 'auto',\n\t\t\t})\n\t\t} else if (options) {\n\t\t\tthis.scroller.scrollTo(options)\n\t\t} else {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbehavior: 'auto',\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls the container horizontally to the specified position\n\t * @param left - The horizontal position to scroll to (in pixels)\n\t * @param behavior - The scroll behavior ('auto' or 'smooth')\n\t */\n\tpublic scrollToLeft(left: number, behavior: ScrollBehavior = 'auto'): void {\n\t\tif (this.scroller) {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\tleft,\n\t\t\t\tbehavior,\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Called when the component is connected to the DOM\n\t * Applies scrolling styles directly to the host element\n\t * @protected\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.updateScrollingStyles()\n\t\tthis.updateLayoutContext()\n\t\t// Set the part attribute on the host element\n\t\tthis.setAttribute('part', 'scroller')\n\t}\n\n\t/**\n\t * Updates the overflow styles based on the direction property\n\t * @private\n\t */\n\tprivate updateScrollingStyles(): void {\n\t\t// Apply overflow styles based on direction\n\t\tif (this.direction === 'horizontal') {\n\t\t\tthis.style.setProperty('overflow-y', 'hidden')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t} else if (this.direction === 'vertical') {\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'hidden')\n\t\t} else {\n\t\t\t// both\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t}\n\t}\n\n\t/**\n\t * Updates the layout context based on parent container type\n\t * @private\n\t */\n\tprivate updateLayoutContext(): void {\n\t\t// Use requestAnimationFrame to ensure DOM is fully rendered\n\t\trequestAnimationFrame(() => {\n\t\t\t// Check if parent is a flex container\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tconst parentStyles = getComputedStyle(parent)\n\t\t\t\tconst isFlexParent = parentStyles.display === 'flex' || parentStyles.display === 'inline-flex'\n\n\t\t\t\t// For debugging - remove in production\n\t\t\t\tconsole.debug('schmancy-scroll parent detection:', {\n\t\t\t\t\tparent: parent.tagName,\n\t\t\t\t\tdisplay: parentStyles.display,\n\t\t\t\t\tisFlexParent,\n\t\t\t\t})\n\n\t\t\t\t// Apply appropriate class based on parent layout\n\t\t\t\tif (isFlexParent) {\n\t\t\t\t\tthis.classList.remove('explicit-height')\n\t\t\t\t} else {\n\t\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Default to explicit height if no parent\n\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Called when properties change\n\t * @protected\n\t */\n\tprotected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n\t\tsuper.updated(changedProperties)\n\t\t// Update styles if direction changes\n\t\tif (changedProperties.has('direction')) {\n\t\t\tthis.updateScrollingStyles()\n\t\t}\n\t\t// Always update layout context in case parent layout changed\n\t\tthis.updateLayoutContext()\n\t}\n\n\t/**\n\t * Called after the component's first update\n\t * Sets up the scroll event listener with debouncing\n\t * @protected\n\t */\n\tprotected firstUpdated(): void {\n\t\t// Set up scroll event listening with debounce\n\t\tfromEvent(this.scroller, 'scroll', {\n\t\t\tpassive: true,\n\t\t})\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(this.debounce),\n\t\t\t\ttakeUntil(this.disconnecting), // Unsubscribe when the element is destroyed\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\t// Always include the original required properties for backward compatibility\n\t\t\t\tconst scrollTop = this.scroller.scrollTop\n\t\t\t\tconst scrollHeight = this.scroller.scrollHeight\n\t\t\t\tconst clientHeight = this.scroller.clientHeight\n\n\t\t\t\t// Include horizontal scroll information as optional properties\n\t\t\t\tconst scrollLeft = this.scroller.scrollLeft\n\t\t\t\tconst scrollWidth = this.scroller.scrollWidth\n\t\t\t\tconst clientWidth = this.scroller.clientWidth\n\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('scroll', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t// Original required properties first\n\t\t\t\t\t\t\tscrollTop,\n\t\t\t\t\t\t\tscrollHeight,\n\t\t\t\t\t\t\tclientHeight,\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t// New optional properties last\n\t\t\t\t\t\t\tscrollLeft,\n\t\t\t\t\t\t\tscrollWidth,\n\t\t\t\t\t\t\tclientWidth,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}) as SchmancyScrollEvent,\n\t\t\t\t)\n\t\t\t})\n\n\t\t// Set up global command event listener\n\t\tfromEvent<SchmancyScrollCommandEvent>(window, '@schmancy:scrollTo')\n\t\t\t.pipe(\n\t\t\t\t// Only process events targeting this component by name\n\t\t\t\tfilter(e => this.name !== undefined && e.detail.name === this.name),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\tif (e.detail.action === 'scrollTo' && typeof e.detail.top === 'number') {\n\t\t\t\t\tconst options: ScrollToOptions = {\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\ttop: e.detail.top, // Required for backward compatibility\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add optional left position if provided\n\t\t\t\t\tif (typeof e.detail.left === 'number') {\n\t\t\t\t\t\toptions.left = e.detail.left\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scrollTo(options)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t/**\n\t * Renders the component template\n\t * @returns {TemplateResult} The template to render\n\t * @protected\n\t */\n\tprotected render() {\n\t\t// Only render the slot, all styling is applied to the host\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-scroll': SchmancyScroll\n\t}\n}\n"],"names":["SchmancyScroll","TailwindElement","css","super","arguments","this","hide","direction","debounce","scroller","options","top","scrollTo","behavior","left","connectedCallback","updateScrollingStyles","updateLayoutContext","setAttribute","style","setProperty","requestAnimationFrame","parent","parentElement","parentStyles","getComputedStyle","display","classList","remove","add","changedProperties","updated","has","firstUpdated","fromEvent","passive","pipe","debounceTime","takeUntil","disconnecting","subscribe","e","scrollTop","scrollHeight","clientHeight","scrollLeft","scrollWidth","clientWidth","dispatchEvent","CustomEvent","detail","bubbles","composed","window","filter","name","action","render","html","__decorateClass","property","type","Boolean","reflect","prototype","String","Number","customElement"],"mappings":";;;;;;;;;;;AA2EO,IAAMA,IAAN,cAA6BC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA7C,EAAA;AAAA,EAAA;AAAAC,UAAAA,GAAAC,SAAAA,GAoCNC,KAAOC,OAAAA,IAsBPD,KAAOE,YAAgD,QAkBvDF,KAAOG,WAAW;AAAA,EAAA;AAAA,EAZlB,eAAIC;AACH,WAAOJ;AAAAA,EACR;AAAA,EAiBgB,SAASK,GAAoCC;AACvDN,SAAKI,aAEa,OAAZC,KAAY,WAEtBL,KAAKI,SAASG,SAAS,EACtBD,KAAKD,GACLG,UAAUF,IAAM,WAAW,OAAA,CAAA,IAElBD,IACVL,KAAKI,SAASG,SAASF,CAAAA,IAEvBL,KAAKI,SAASG,SAAS,EACtBD,KAAK,GACLG,MAAM,GACND,UAAU,OAAA,CAAA;AAAA,EAGb;AAAA,EAOO,aAAaC,GAAcD,IAA2B,QAAA;AACxDR,SAAKI,YACRJ,KAAKI,SAASG,SAAS,EACtBE,SACAD,UAAAA,EAAAA,CAAAA;AAAAA,EAGH;AAAA,EAOA,oBAAAE;AACCZ,UAAMY,qBACNV,KAAKW,sBAAAA,GACLX,KAAKY,oBAAAA,GAELZ,KAAKa,aAAa,QAAQ;EAC3B;AAAA,EAMQ;AAEgB,IAAnBb,KAAKE,cAAc,gBACtBF,KAAKc,MAAMC,YAAY,cAAc,QAAA,GACrCf,KAAKc,MAAMC,YAAY,cAAc,MAAA,KAC3Bf,KAAKE,cAAc,cAC7BF,KAAKc,MAAMC,YAAY,cAAc,SACrCf,KAAKc,MAAMC,YAAY,cAAc,cAGrCf,KAAKc,MAAMC,YAAY,cAAc,MAAA,GACrCf,KAAKc,MAAMC,YAAY,cAAc,MAAA;AAAA,EAEvC;AAAA,EAMQ,sBAAAH;AAEPI,0BAAsB,MAAA;AAErB,YAAMC,IAASjB,KAAKkB;AACpB,UAAID,GAAQ;AACX,cAAME,IAAeC,iBAAiBH,CAAAA;AACQ,QAAzBE,EAAaE,YAAY,UAAUF,EAAaE,YAAY,gBAWhFrB,KAAKsB,UAAUC,OAAO,iBAAA,IAEtBvB,KAAKsB,UAAUE,IAAI,iBAAA;AAAA,MAErB,MAECxB,MAAKsB,UAAUE,IAAI,iBAAA;AAAA,IAAA,CAAA;AAAA,EAGtB;AAAA,EAMU,QAAQC;AACjB3B,UAAM4B,QAAQD,CAAAA,GAEVA,EAAkBE,IAAI,WAAA,KACzB3B,KAAKW,yBAGNX,KAAKY,oBAAAA;AAAAA,EACN;AAAA,EAOU,eAAAgB;AAETC,IAAAA,EAAU7B,KAAKI,UAAU,UAAU,EAClC0B,SAAAA,GAAS,CAAA,EAERC,KACAC,EAAahC,KAAKG,QAAAA,GAClB8B,EAAUjC,KAAKkC,aAAAA,CAAAA,EAEfC,UAAUC,CAAAA;AAEV,YAAMC,IAAYrC,KAAKI,SAASiC,WAC1BC,IAAetC,KAAKI,SAASkC,cAC7BC,IAAevC,KAAKI,SAASmC,cAG7BC,IAAaxC,KAAKI,SAASoC,YAC3BC,IAAczC,KAAKI,SAASqC,aAC5BC,IAAc1C,KAAKI,SAASsC;AAElC1C,WAAK2C,cACJ,IAAIC,YAAY,UAAU,EACzBC,QAAQ,EAEPR,cACAC,cAAAA,GACAC,cAAAA,GACAH,GAEAI,YAAAA,GACAC,gBACAC,aAAAA,EAAAA,GAEDI,SAAAA,IACAC,UAAAA,GAAU,CAAA,CAAA;AAAA,IAAA,CAAA,GAMdlB,EAAsCmB,QAAQ,oBAAA,EAC5CjB,KAEAkB,SAAYjD,KAAKkD,mBAAsBd,EAAES,OAAOK,SAASlD,KAAKkD,IAAAA,GAC9DjB,EAAUjC,KAAKkC,gBAEfC,UAAUC,CAAAA,MAAAA;AACV,UAAIA,EAAES,OAAOM,WAAW,cAAsC,OAAjBf,EAAES,OAAOvC,OAAQ,UAAU;AACvE,cAAMD,IAA2B,EAChCG,UAAU,UACVF,KAAK8B,EAAES,OAAOvC;AAIc,QAAA,OAAlB8B,EAAES,OAAOpC,QAAS,aAC5BJ,EAAQI,OAAO2B,EAAES,OAAOpC,OAGzBT,KAAKO,SAASF,CAAAA;AAAAA,MACf;AAAA,IAAA,CAAA;AAAA,EAEH;AAAA,EAOU,SAAA+C;AAET,WAAOC;AAAAA,EACR;AAAA;AA5OOC,EAAA,CADNC,EAAS,EAAEC,MAAMC,SAASC,SAAAA,QAnCf/D,EAoCLgE,WAAA,QAAA,CAAA,GAUAL,EAAA,CADNC,EAAS,EAAEC,MAAMI,QAAQF,SAAAA,GAAS,CAAA,CAAA,GA7CvB/D,EA8CLgE,WAAA,QAAA,CAAA,GAYAL,EAAA,CADNC,EAAS,EAAEC,MAAMI,QAAQF,SAAAA,GAAS,CAAA,CAAA,GAzDvB/D,EA0DLgE,WAAA,aAAA,CAAA,GAkBAL,EAAA,CADNC,EAAS,EAAEC,MAAMK,OAAAA,CAAAA,CAAAA,GA3ENlE,EA4ELgE,WAAA,YAAA,CAAA,GA5EKhE,IAAN2D,EAAA,CADNQ,EAAc,qBACFnE,CAAAA;"}
@@ -1,27 +0,0 @@
1
- "use strict";const l=require("rxjs");require("rxjs/operators"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const n=require("lit/decorators.js"),p=require("./tailwind.mixin-Cp4PyXok.cjs"),a=require("lit");var d=Object.defineProperty,y=Object.getOwnPropertyDescriptor,h=(e,t,i,r)=>{for(var s,o=r>1?void 0:r?y(t,i):t,c=e.length-1;c>=0;c--)(s=e[c])&&(o=(r?s(t,i,o):s(o))||o);return r&&o&&d(t,i,o),o};exports.SchmancyScroll=class extends p.TailwindElement(a.css`
2
- :host {
3
- /* Flexible sizing for different layout contexts */
4
- width: 100%;
5
- min-height: 0; /* Allow flex shrinking */
6
- flex: 1; /* Grow in flex containers */
7
- box-sizing: border-box; /* Ensures proper sizing */
8
- display: block;
9
- position: relative;
10
- scroll-behavior: smooth;
11
- overscroll-behavior-x: contain;
12
- overscroll-behavior-y: auto;
13
- }
14
- /* Fallback for non-flex contexts */
15
- :host(.explicit-height) {
16
- height: 100%;
17
- flex: none;
18
- }
19
- :host([hide]) {
20
- -ms-overflow-style: none; /* IE and Edge */
21
- scrollbar-width: none; /* Firefox */
22
- }
23
- :host([hide])::-webkit-scrollbar {
24
- display: none; /* Chrome, Safari, and Opera */
25
- }
26
- `){constructor(){super(...arguments),this.hide=!1,this.direction="both",this.debounce=10}get scroller(){return this}scrollTo(e,t){this.scroller&&(typeof e=="number"?this.scroller.scrollTo({top:e,behavior:t?"smooth":"auto"}):e?this.scroller.scrollTo(e):this.scroller.scrollTo({top:0,left:0,behavior:"auto"}))}scrollToLeft(e,t="auto"){this.scroller&&this.scroller.scrollTo({left:e,behavior:t})}connectedCallback(){super.connectedCallback(),this.updateScrollingStyles(),this.updateLayoutContext(),this.setAttribute("part","scroller")}updateScrollingStyles(){this.direction==="horizontal"?(this.style.setProperty("overflow-y","hidden"),this.style.setProperty("overflow-x","auto")):this.direction==="vertical"?(this.style.setProperty("overflow-y","auto"),this.style.setProperty("overflow-x","hidden")):(this.style.setProperty("overflow-y","auto"),this.style.setProperty("overflow-x","auto"))}updateLayoutContext(){requestAnimationFrame(()=>{const e=this.parentElement;if(e){const t=getComputedStyle(e);t.display==="flex"||t.display==="inline-flex"?this.classList.remove("explicit-height"):this.classList.add("explicit-height")}else this.classList.add("explicit-height")})}updated(e){super.updated(e),e.has("direction")&&this.updateScrollingStyles(),this.updateLayoutContext()}firstUpdated(){l.fromEvent(this.scroller,"scroll",{passive:!0}).pipe(l.debounceTime(this.debounce),l.takeUntil(this.disconnecting)).subscribe(e=>{const t=this.scroller.scrollTop,i=this.scroller.scrollHeight,r=this.scroller.clientHeight,s=this.scroller.scrollLeft,o=this.scroller.scrollWidth,c=this.scroller.clientWidth;this.dispatchEvent(new CustomEvent("scroll",{detail:{scrollTop:t,scrollHeight:i,clientHeight:r,e,scrollLeft:s,scrollWidth:o,clientWidth:c},bubbles:!0,composed:!0}))}),l.fromEvent(window,"@schmancy:scrollTo").pipe(l.filter(e=>this.name!==void 0&&e.detail.name===this.name),l.takeUntil(this.disconnecting)).subscribe(e=>{if(e.detail.action==="scrollTo"&&typeof e.detail.top=="number"){const t={behavior:"smooth",top:e.detail.top};typeof e.detail.left=="number"&&(t.left=e.detail.left),this.scrollTo(t)}})}render(){return a.html`<slot></slot>`}},h([n.property({type:Boolean,reflect:!0})],exports.SchmancyScroll.prototype,"hide",2),h([n.property({type:String,reflect:!0})],exports.SchmancyScroll.prototype,"name",2),h([n.property({type:String,reflect:!0})],exports.SchmancyScroll.prototype,"direction",2),h([n.property({type:Number})],exports.SchmancyScroll.prototype,"debounce",2),exports.SchmancyScroll=h([n.customElement("schmancy-scroll")],exports.SchmancyScroll);
27
- //# sourceMappingURL=scroll-CecsowP7.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll-CecsowP7.cjs","sources":["../src/layout/scroll/scroll.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { debounceTime, filter, fromEvent, takeUntil } from 'rxjs'\n\n/**\n * Custom scroll event interface for the SchmancyScroll component.\n * Contains detailed information about the scroll state.\n */\nexport interface SchmancyScrollEvent\n\textends CustomEvent<{\n\t\t/** Current scroll position from the top */\n\t\tscrollTop: number\n\t\t/** Total scrollable height of the content */\n\t\tscrollHeight: number\n\t\t/** Visible height of the container */\n\t\tclientHeight: number\n\t\t/** Original scroll event */\n\t\te: Event\n\t\t/** Current scroll position from the left (for horizontal scrolling) */\n\t\tscrollLeft?: number\n\t\t/** Total scrollable width of the content (for horizontal scrolling) */\n\t\tscrollWidth?: number\n\t\t/** Visible width of the container (for horizontal scrolling) */\n\t\tclientWidth?: number\n\t}> {}\n\n/**\n * Command event interface for controlling SchmancyScroll components\n */\nexport interface SchmancyScrollCommandEvent\n\textends CustomEvent<{\n\t\t/** Target component name */\n\t\tname: string\n\t\t/** Command action to perform */\n\t\taction: 'scrollTo'\n\t\t/** Scroll position for scrollTo action */\n\t\ttop: number\n\t\t/** Horizontal scroll position for scrollTo action (optional) */\n\t\tleft?: number\n\t}> {}\n\n// Augment the HTMLElementEventMap to include our custom events\ndeclare global {\n\tinterface HTMLElementEventMap {\n\t\tscroll: SchmancyScrollEvent\n\t\t'schmancy-scroll-command': SchmancyScrollCommandEvent\n\t}\n}\n\n/**\n * A custom scrollable container with enhanced features.\n *\n * @fires {SchmancyScrollEvent} scroll - Fired when scrolling occurs (with a configurable debounce)\n * @slot - Default slot for content to be scrolled\n * @csspart scroller - The inner scrollable div element\n *\n * @example\n * ```html\n * <schmancy-scroll hide name=\"main-content\">\n * <div>Scrollable content goes here</div>\n * </schmancy-scroll>\n * ```\n *\n * @example\n * ```html\n * <schmancy-scroll direction=\"horizontal\" hide name=\"image-carousel\">\n * <div class=\"flex\">\n * <img src=\"image1.jpg\" alt=\"Image 1\">\n * <img src=\"image2.jpg\" alt=\"Image 2\">\n * </div>\n * </schmancy-scroll>\n * ```\n */\n@customElement('schmancy-scroll')\nexport class SchmancyScroll extends TailwindElement(css`\n\t:host {\n\t\t/* Flexible sizing for different layout contexts */\n\t\twidth: 100%;\n\t\tmin-height: 0; /* Allow flex shrinking */\n\t\tflex: 1; /* Grow in flex containers */\n\t\tbox-sizing: border-box; /* Ensures proper sizing */\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tscroll-behavior: smooth;\n\t\toverscroll-behavior-x: contain;\n\t\toverscroll-behavior-y: auto;\n\t}\n\t/* Fallback for non-flex contexts */\n\t:host(.explicit-height) {\n\t\theight: 100%;\n\t\tflex: none;\n\t}\n\t:host([hide]) {\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t:host([hide])::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, and Opera */\n\t}\n`) {\n\t/**\n\t * Determines whether the scrollbar is hidden.\n\t *\n\t * When `hide` is true, the host element's scrollbars are hidden\n\t * in supported browsers using CSS.\n\t *\n\t * @attr hide\n\t * @example <schmancy-scroll hide></schmancy-scroll>\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic hide = false\n\n\t/**\n\t * Optional name identifier for the component.\n\t * Used for targeting this specific component with global events.\n\t *\n\t * @attr name\n\t * @example <schmancy-scroll name=\"main-content\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic name?: string\n\n\t/**\n\t * Direction of scrolling: vertical, horizontal, or both.\n\t * - vertical: Only allows vertical scrolling\n\t * - horizontal: Only allows horizontal scrolling\n\t * - both: Allows both horizontal and vertical scrolling (default)\n\t *\n\t * @attr direction\n\t * @example <schmancy-scroll direction=\"horizontal\"></schmancy-scroll>\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic direction: 'vertical' | 'horizontal' | 'both' = 'both'\n\n\t/**\n\t * Reference to the scrollable element (the host element itself)\n\t * @public\n\t */\n\tget scroller(): HTMLElement {\n\t\treturn this\n\t}\n\n\t/**\n\t * Debounce time in milliseconds for the scroll event.\n\t * Higher values reduce the frequency of scroll events being dispatched.\n\t *\n\t * @attr debounce\n\t * @example <schmancy-scroll debounce=\"50\"></schmancy-scroll>\n\t */\n\t@property({ type: Number })\n\tpublic debounce = 10\n\n\t/**\n\t * Scrolls the container to the specified position\n\t * @param options - ScrollToOptions or a number representing the top position\n\t * @param top - For backward compatibility, if options is a number, this is treated as \"behavior\"\n\t */\n\tpublic override scrollTo(options?: ScrollToOptions | number, top?: number): void {\n\t\tif (!this.scroller) return\n\n\t\tif (typeof options === 'number') {\n\t\t\t// Legacy support for scrollTo(top, behavior)\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: options,\n\t\t\t\tbehavior: top ? 'smooth' : 'auto',\n\t\t\t})\n\t\t} else if (options) {\n\t\t\tthis.scroller.scrollTo(options)\n\t\t} else {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\tbehavior: 'auto',\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls the container horizontally to the specified position\n\t * @param left - The horizontal position to scroll to (in pixels)\n\t * @param behavior - The scroll behavior ('auto' or 'smooth')\n\t */\n\tpublic scrollToLeft(left: number, behavior: ScrollBehavior = 'auto'): void {\n\t\tif (this.scroller) {\n\t\t\tthis.scroller.scrollTo({\n\t\t\t\tleft,\n\t\t\t\tbehavior,\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * Called when the component is connected to the DOM\n\t * Applies scrolling styles directly to the host element\n\t * @protected\n\t */\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.updateScrollingStyles()\n\t\tthis.updateLayoutContext()\n\t\t// Set the part attribute on the host element\n\t\tthis.setAttribute('part', 'scroller')\n\t}\n\n\t/**\n\t * Updates the overflow styles based on the direction property\n\t * @private\n\t */\n\tprivate updateScrollingStyles(): void {\n\t\t// Apply overflow styles based on direction\n\t\tif (this.direction === 'horizontal') {\n\t\t\tthis.style.setProperty('overflow-y', 'hidden')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t} else if (this.direction === 'vertical') {\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'hidden')\n\t\t} else {\n\t\t\t// both\n\t\t\tthis.style.setProperty('overflow-y', 'auto')\n\t\t\tthis.style.setProperty('overflow-x', 'auto')\n\t\t}\n\t}\n\n\t/**\n\t * Updates the layout context based on parent container type\n\t * @private\n\t */\n\tprivate updateLayoutContext(): void {\n\t\t// Use requestAnimationFrame to ensure DOM is fully rendered\n\t\trequestAnimationFrame(() => {\n\t\t\t// Check if parent is a flex container\n\t\t\tconst parent = this.parentElement\n\t\t\tif (parent) {\n\t\t\t\tconst parentStyles = getComputedStyle(parent)\n\t\t\t\tconst isFlexParent = parentStyles.display === 'flex' || parentStyles.display === 'inline-flex'\n\n\t\t\t\t// For debugging - remove in production\n\t\t\t\tconsole.debug('schmancy-scroll parent detection:', {\n\t\t\t\t\tparent: parent.tagName,\n\t\t\t\t\tdisplay: parentStyles.display,\n\t\t\t\t\tisFlexParent,\n\t\t\t\t})\n\n\t\t\t\t// Apply appropriate class based on parent layout\n\t\t\t\tif (isFlexParent) {\n\t\t\t\t\tthis.classList.remove('explicit-height')\n\t\t\t\t} else {\n\t\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Default to explicit height if no parent\n\t\t\t\tthis.classList.add('explicit-height')\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Called when properties change\n\t * @protected\n\t */\n\tprotected updated(changedProperties: Map<string | number | symbol, unknown>): void {\n\t\tsuper.updated(changedProperties)\n\t\t// Update styles if direction changes\n\t\tif (changedProperties.has('direction')) {\n\t\t\tthis.updateScrollingStyles()\n\t\t}\n\t\t// Always update layout context in case parent layout changed\n\t\tthis.updateLayoutContext()\n\t}\n\n\t/**\n\t * Called after the component's first update\n\t * Sets up the scroll event listener with debouncing\n\t * @protected\n\t */\n\tprotected firstUpdated(): void {\n\t\t// Set up scroll event listening with debounce\n\t\tfromEvent(this.scroller, 'scroll', {\n\t\t\tpassive: true,\n\t\t})\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(this.debounce),\n\t\t\t\ttakeUntil(this.disconnecting), // Unsubscribe when the element is destroyed\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\t// Always include the original required properties for backward compatibility\n\t\t\t\tconst scrollTop = this.scroller.scrollTop\n\t\t\t\tconst scrollHeight = this.scroller.scrollHeight\n\t\t\t\tconst clientHeight = this.scroller.clientHeight\n\n\t\t\t\t// Include horizontal scroll information as optional properties\n\t\t\t\tconst scrollLeft = this.scroller.scrollLeft\n\t\t\t\tconst scrollWidth = this.scroller.scrollWidth\n\t\t\t\tconst clientWidth = this.scroller.clientWidth\n\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('scroll', {\n\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t// Original required properties first\n\t\t\t\t\t\t\tscrollTop,\n\t\t\t\t\t\t\tscrollHeight,\n\t\t\t\t\t\t\tclientHeight,\n\t\t\t\t\t\t\te,\n\t\t\t\t\t\t\t// New optional properties last\n\t\t\t\t\t\t\tscrollLeft,\n\t\t\t\t\t\t\tscrollWidth,\n\t\t\t\t\t\t\tclientWidth,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}) as SchmancyScrollEvent,\n\t\t\t\t)\n\t\t\t})\n\n\t\t// Set up global command event listener\n\t\tfromEvent<SchmancyScrollCommandEvent>(window, '@schmancy:scrollTo')\n\t\t\t.pipe(\n\t\t\t\t// Only process events targeting this component by name\n\t\t\t\tfilter(e => this.name !== undefined && e.detail.name === this.name),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(e => {\n\t\t\t\tif (e.detail.action === 'scrollTo' && typeof e.detail.top === 'number') {\n\t\t\t\t\tconst options: ScrollToOptions = {\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\ttop: e.detail.top, // Required for backward compatibility\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add optional left position if provided\n\t\t\t\t\tif (typeof e.detail.left === 'number') {\n\t\t\t\t\t\toptions.left = e.detail.left\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scrollTo(options)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t/**\n\t * Renders the component template\n\t * @returns {TemplateResult} The template to render\n\t * @protected\n\t */\n\tprotected render() {\n\t\t// Only render the slot, all styling is applied to the host\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-scroll': SchmancyScroll\n\t}\n}\n"],"names":["SchmancyScroll","TailwindElement","css","super","arguments","this","hide","direction","debounce","options","top","scroller","scrollTo","behavior","left","connectedCallback","updateScrollingStyles","updateLayoutContext","setAttribute","style","setProperty","requestAnimationFrame","parent","parentElement","parentStyles","getComputedStyle","display","classList","remove","add","changedProperties","updated","has","fromEvent","passive","pipe","debounceTime","takeUntil","disconnecting","subscribe","e","scrollTop","scrollHeight","clientHeight","scrollLeft","scrollWidth","clientWidth","dispatchEvent","CustomEvent","detail","bubbles","composed","window","filter","name","action","render","html","__decorateClass","property","type","Boolean","reflect","prototype","String","Number","customElement"],"mappings":"8aA2EaA,QAAAA,eAAN,cAA6BC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA7C,CAAA,CAAA,cAAAC,MAAAA,GAAAC,SAAAA,EAoCNC,KAAOC,KAAAA,GAsBPD,KAAOE,UAAgD,OAkBvDF,KAAOG,SAAW,EAAA,CAZlB,IAAA,WACC,OAAOH,IACR,CAiBgB,SAASI,EAAoCC,EAAAA,CACvDL,KAAKM,WAEa,OAAZF,GAAY,SAEtBJ,KAAKM,SAASC,SAAS,CACtBF,IAAKD,EACLI,SAAUH,EAAM,SAAW,MAAA,CAAA,EAElBD,EACVJ,KAAKM,SAASC,SAASH,CAAAA,EAEvBJ,KAAKM,SAASC,SAAS,CACtBF,IAAK,EACLI,KAAM,EACND,SAAU,SAGb,CAOO,aAAaC,EAAcD,EAA2B,OAAA,CACxDR,KAAKM,UACRN,KAAKM,SAASC,SAAS,CACtBE,KAAAA,EACAD,SAAAA,CAAAA,CAAAA,CAGH,CAOA,mBAAAE,CACCZ,MAAMY,oBACNV,KAAKW,sBAAAA,EACLX,KAAKY,oBAAAA,EAELZ,KAAKa,aAAa,OAAQ,UAAA,CAC3B,CAMQ,uBAAAF,CAEHX,KAAKE,YAAc,cACtBF,KAAKc,MAAMC,YAAY,aAAc,QAAA,EACrCf,KAAKc,MAAMC,YAAY,aAAc,MAAA,GAC3Bf,KAAKE,YAAc,YAC7BF,KAAKc,MAAMC,YAAY,aAAc,MAAA,EACrCf,KAAKc,MAAMC,YAAY,aAAc,YAGrCf,KAAKc,MAAMC,YAAY,aAAc,QACrCf,KAAKc,MAAMC,YAAY,aAAc,MAAA,EAEvC,CAMQ,qBAAAH,CAEPI,sBAAsB,IAAA,CAErB,MAAMC,EAASjB,KAAKkB,cACpB,GAAID,EAAQ,CACX,MAAME,EAAeC,iBAAiBH,CAAAA,EACjBE,EAAaE,UAAY,QAAUF,EAAaE,UAAY,cAWhFrB,KAAKsB,UAAUC,OAAO,iBAAA,EAEtBvB,KAAKsB,UAAUE,IAAI,iBAAA,CAErB,MAECxB,KAAKsB,UAAUE,IAAI,oBAGtB,CAMU,QAAQC,EAAAA,CACjB3B,MAAM4B,QAAQD,CAAAA,EAEVA,EAAkBE,IAAI,WAAA,GACzB3B,KAAKW,sBAAAA,EAGNX,KAAKY,qBACN,CAOU,eAETgB,YAAU5B,KAAKM,SAAU,SAAU,CAClCuB,QAAAA,EAAS,CAAA,EAERC,KACAC,EAAAA,aAAa/B,KAAKG,QAAAA,EAClB6B,EAAAA,UAAUhC,KAAKiC,gBAEfC,UAAUC,GAAAA,CAEV,MAAMC,EAAYpC,KAAKM,SAAS8B,UAC1BC,EAAerC,KAAKM,SAAS+B,aAC7BC,EAAetC,KAAKM,SAASgC,aAG7BC,EAAavC,KAAKM,SAASiC,WAC3BC,EAAcxC,KAAKM,SAASkC,YAC5BC,EAAczC,KAAKM,SAASmC,YAElCzC,KAAK0C,cACJ,IAAIC,YAAY,SAAU,CACzBC,OAAQ,CAEPR,UAAAA,EACAC,aAAAA,EACAC,aAAAA,EACAH,EAEAI,WAAAA,EACAC,YAAAA,EACAC,eAEDI,QAAAA,GACAC,WAAU,CAAA,CAAA,CAAA,CAAA,EAMdlB,YAAsCmB,OAAQ,sBAC5CjB,KAEAkB,EAAAA,UAAYhD,KAAKiD,eAAsBd,EAAES,OAAOK,OAASjD,KAAKiD,IAAAA,EAC9DjB,EAAAA,UAAUhC,KAAKiC,aAAAA,CAAAA,EAEfC,UAAUC,GAAAA,CACV,GAAIA,EAAES,OAAOM,SAAW,YAAsC,OAAjBf,EAAES,OAAOvC,KAAQ,SAAU,CACvE,MAAMD,EAA2B,CAChCI,SAAU,SACVH,IAAK8B,EAAES,OAAOvC,KAIc,OAAlB8B,EAAES,OAAOnC,MAAS,WAC5BL,EAAQK,KAAO0B,EAAES,OAAOnC,MAGzBT,KAAKO,SAASH,CAAAA,CACf,CAAA,CAAA,CAEH,CAOU,QAAA+C,CAET,OAAOC,EAAAA,mBACR,CAAA,EA5OOC,EAAA,CADNC,EAAAA,SAAS,CAAEC,KAAMC,QAASC,QAAAA,EAAS,CAAA,CAAA,EAnCxB9D,uBAoCL+D,UAAA,OAAA,CAAA,EAUAL,EAAA,CADNC,EAAAA,SAAS,CAAEC,KAAMI,OAAQF,QAAAA,EAAS,CAAA,CAAA,EA7CvB9D,uBA8CL+D,UAAA,OAAA,CAAA,EAYAL,EAAA,CADNC,EAAAA,SAAS,CAAEC,KAAMI,OAAQF,QAAAA,EAAS,CAAA,CAAA,EAzDvB9D,uBA0DL+D,UAAA,YAAA,CAAA,EAkBAL,EAAA,CADNC,WAAS,CAAEC,KAAMK,UA3ENjE,uBA4EL+D,UAAA,WAAA,CAAA,EA5EK/D,QAAAA,eAAN0D,EAAA,CADNQ,EAAAA,cAAc,oBACFlE"}
@@ -1,2 +0,0 @@
1
- "use strict";const M=/[\s\-_.,;:!?()[\]{}]+/;function x(a,m){let f=a.toLowerCase().trim();return m&&(f=f.normalize("NFD").replace(/[\u0300-\u036f]/g,"")),f}exports.similarity=function(a,m,f){if(!a||!m)return 0;if(a===m)return 1;const w={normalizeAccents:f?.normalizeAccents??!0,includeWordJaccard:f?.includeWordJaccard??!0,maxLevenshteinDistance:f?.maxLevenshteinDistance??0},o=x(a,w.normalizeAccents),h=x(m,w.normalizeAccents);if(o===h)return 1;if(h.startsWith(o))return .95+.05*(o.length/h.length);const d=h.split(M).filter(e=>e.length>0);for(let e=0;e<d.length;e++)if(d[e].startsWith(o))return .85*(1-e/d.length*.1);if(h.includes(o))return .7*(1-h.indexOf(o)/h.length*.2);if((function(e,r){let l=0,c=0;for(;l<e.length&&c<r.length;)e[l]===r[c]&&l++,c++;return l===e.length})(o,h))return .5;let g=0;const z=.45*(function(e,r){if(e.length<2||r.length<2)return 0;const l=new Map;for(let n=0;n<r.length-1;n++){const i=r.substring(n,n+2);l.set(i,(l.get(i)||0)+1)}let c=0,s=0;for(let n=0;n<e.length-1;n++){const i=e.substring(n,n+2);s++;const u=l.get(i);u&&u>0&&(c++,l.set(i,u-1))}const t=r.length-1;return 2*c/(s+t)})(o,h);z>g&&(g=z);const p=Math.max(o.length,h.length),W=(function(e,r,l=0){if(e.length>r.length&&([e,r]=[r,e]),e.length===0)return r.length;if(l>0&&r.length-e.length>l)return l+1;let c=new Array(e.length+1),s=new Array(e.length+1);for(let t=0;t<=e.length;t++)c[t]=t;for(let t=1;t<=r.length;t++){s[0]=t;let n=t;for(let i=1;i<=e.length;i++){const u=e[i-1]===r[t-1]?0:1;s[i]=Math.min(c[i]+1,s[i-1]+1,c[i-1]+u),s[i]<n&&(n=s[i])}if(l>0&&n>l)return l+1;[c,s]=[s,c]}return c[e.length]})(o,h,w.maxLevenshteinDistance),A=p?.45*(1-W/p):0;if(A>g&&(g=A),(function(e,r){const l=new Map;for(let t=0;t<r.length;t++){const n=r[t];l.set(n,(l.get(n)||0)+1)}const c=new Map;for(let t=0;t<e.length;t++){const n=e[t];c.set(n,(c.get(n)||0)+1)}let s=!0;return c.forEach((t,n)=>{(l.get(n)||0)<t&&(s=!1)}),s})(o,h)&&.3>g&&(g=.3),w.includeWordJaccard&&d.length>1){const e=o.split(M).filter(r=>r.length>0);if(e.length>0){const r=.4*(function(l,c){if(l.length===0||c.length===0)return 0;const s=new Set(l),t=new Set(c);let n=0;s.forEach(u=>{t.has(u)&&n++});const i=s.size+t.size-n;return i>0?n/i:0})(e,d);r>g&&(g=r)}}return g};
2
- //# sourceMappingURL=search-B1s7thB0.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-B1s7thB0.cjs","sources":["../src/utils/search.ts"],"sourcesContent":["/**\n * Options for configuring similarity calculation behavior.\n */\nexport interface SimilarityOptions {\n\t/**\n\t * Whether to remove accents/diacritics during normalization.\n\t * @default true\n\t */\n\tnormalizeAccents?: boolean\n\n\t/**\n\t * Whether to include word-level Jaccard similarity in fuzzy matching.\n\t * Useful for matching phrases with different word orders.\n\t * @default true\n\t */\n\tincludeWordJaccard?: boolean\n\n\t/**\n\t * Maximum Levenshtein distance threshold for early termination.\n\t * Improves performance for very dissimilar strings.\n\t * Set to 0 to disable early termination.\n\t * @default 0 (disabled)\n\t */\n\tmaxLevenshteinDistance?: number\n}\n\n// Scoring weights as named constants for clarity and maintainability\nconst SCORE_WEIGHT_DICE = 0.45\nconst SCORE_WEIGHT_LEVENSHTEIN = 0.45\nconst SCORE_WEIGHT_ANAGRAM = 0.3\nconst SCORE_WEIGHT_JACCARD = 0.4\n\n// Word splitting pattern - defined once for reuse\nconst WORD_SPLIT_PATTERN = /[\\s\\-_.,;:!?()[\\]{}]+/\n\n/**\n * Calculate similarity score between two strings.\n * Returns a value between 0 (no match) and 1 (exact match).\n * Optimized for autocomplete with prioritization of start matches and whole words.\n *\n * Scoring tiers (higher scores = better matches):\n * - 1.00: Exact match\n * - 0.95-1.00: Target starts with query (autocomplete-style)\n * - 0.765-0.85: Query matches start of a word in target\n * - 0.56-0.70: Query is substring of target\n * - 0.50: Query is subsequence of target\n * - 0.00-0.50: Fuzzy matching (typos, similar words, character overlap)\n *\n * @param query The search query string\n * @param target The target string to compare against\n * @param options Optional configuration for similarity calculation\n * @returns A similarity score from 0 to 1\n *\n * @example\n * similarity('john', 'John Doe') // 0.975+ (starts with)\n * similarity('doe', 'John Doe') // 0.765+ (word boundary)\n * similarity('jo', 'John Doe') // 0.95+ (starts with)\n * similarity('jhn', 'John Doe') // 0.3-0.5 (subsequence/fuzzy)\n */\nexport function similarity(query: string, target: string, options?: SimilarityOptions): number {\n\t// Handle edge cases\n\tif (!query || !target) return 0\n\tif (query === target) return 1\n\n\t// Default options\n\tconst opts: Required<SimilarityOptions> = {\n\t\tnormalizeAccents: options?.normalizeAccents ?? true,\n\t\tincludeWordJaccard: options?.includeWordJaccard ?? true,\n\t\tmaxLevenshteinDistance: options?.maxLevenshteinDistance ?? 0,\n\t}\n\n\t// Normalize strings for comparison\n\tconst normalizedQuery = normalizeString(query, opts.normalizeAccents)\n\tconst normalizedTarget = normalizeString(target, opts.normalizeAccents)\n\n\t// 1. Exact match (case-insensitive, accent-insensitive)\n\tif (normalizedQuery === normalizedTarget) return 1\n\n\t// 2. Target starts with query (highest priority for autocomplete)\n\tif (normalizedTarget.startsWith(normalizedQuery)) {\n\t\t// Give higher score to shorter targets (more precise matches)\n\t\tconst lengthRatio = normalizedQuery.length / normalizedTarget.length\n\t\treturn 0.95 + (lengthRatio * 0.05) // Score between 0.95 and 1.0\n\t}\n\n\t// 3. Word boundary match (query matches start of any word in target)\n\tconst words = normalizedTarget.split(WORD_SPLIT_PATTERN).filter(w => w.length > 0)\n\tfor (let i = 0; i < words.length; i++) {\n\t\tif (words[i].startsWith(normalizedQuery)) {\n\t\t\t// Score based on which word matched (earlier words score higher)\n\t\t\tconst wordPositionScore = 1 - (i / words.length) * 0.1\n\t\t\treturn 0.85 * wordPositionScore // Score between 0.765 and 0.85\n\t\t}\n\t}\n\n\t// 4. Direct substring match (query appears anywhere in target)\n\tif (normalizedTarget.includes(normalizedQuery)) {\n\t\t// Score based on position (earlier position scores higher)\n\t\tconst position = normalizedTarget.indexOf(normalizedQuery)\n\t\tconst positionScore = 1 - (position / normalizedTarget.length) * 0.2\n\t\treturn 0.7 * positionScore // Score between 0.56 and 0.7\n\t}\n\n\t// 5. Subsequence check (all query chars appear in order)\n\tif (isSubsequence(normalizedQuery, normalizedTarget)) {\n\t\treturn 0.5\n\t}\n\n\t// 6. Fuzzy matching for typos and similar words\n\t// Calculate all scores and return the maximum (avoid array allocation)\n\tlet maxScore = 0\n\n\t// 6a. Dice coefficient (good for character-level similarity)\n\tconst diceScore = diceCoefficient(normalizedQuery, normalizedTarget) * SCORE_WEIGHT_DICE\n\tif (diceScore > maxScore) maxScore = diceScore\n\n\t// 6b. Levenshtein distance (good for typos)\n\tconst maxLength = Math.max(normalizedQuery.length, normalizedTarget.length)\n\tconst levenshteinDistance = calculateLevenshtein(\n\t\tnormalizedQuery,\n\t\tnormalizedTarget,\n\t\topts.maxLevenshteinDistance\n\t)\n\tconst levenshteinScore = maxLength ? (1 - levenshteinDistance / maxLength) * SCORE_WEIGHT_LEVENSHTEIN : 0\n\tif (levenshteinScore > maxScore) maxScore = levenshteinScore\n\n\t// 6c. Character frequency match (anagram-like)\n\tif (hasAllCharacters(normalizedQuery, normalizedTarget)) {\n\t\tif (SCORE_WEIGHT_ANAGRAM > maxScore) maxScore = SCORE_WEIGHT_ANAGRAM\n\t}\n\n\t// 6d. Word-level Jaccard similarity (good for phrase matching)\n\tif (opts.includeWordJaccard && words.length > 1) {\n\t\tconst queryWords = normalizedQuery.split(WORD_SPLIT_PATTERN).filter(w => w.length > 0)\n\t\tif (queryWords.length > 0) {\n\t\t\tconst jaccardScore = wordJaccardSimilarity(queryWords, words) * SCORE_WEIGHT_JACCARD\n\t\t\tif (jaccardScore > maxScore) maxScore = jaccardScore\n\t\t}\n\t}\n\n\treturn maxScore\n}\n\n/**\n * Normalize a string for comparison.\n * - Converts to lowercase\n * - Trims whitespace\n * - Optionally removes accents/diacritics\n *\n * @param str The string to normalize\n * @param removeAccents Whether to remove accents/diacritics\n * @returns The normalized string\n */\nfunction normalizeString(str: string, removeAccents: boolean): string {\n\tlet normalized = str.toLowerCase().trim()\n\n\tif (removeAccents) {\n\t\t// Remove accents using NFD normalization and removing combining marks\n\t\tnormalized = normalized.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\t}\n\n\treturn normalized\n}\n\n/**\n * Calculate Jaccard similarity between two sets of words.\n * Returns a value between 0 (no overlap) and 1 (identical sets).\n * Optimized to avoid unnecessary array conversions.\n *\n * @param words1 Array of words from first string\n * @param words2 Array of words from second string\n * @returns Jaccard similarity score (0-1)\n */\nfunction wordJaccardSimilarity(words1: string[], words2: string[]): number {\n\tif (words1.length === 0 || words2.length === 0) return 0\n\n\tconst set1 = new Set(words1)\n\tconst set2 = new Set(words2)\n\n\t// Count intersection\n\tlet intersectionSize = 0\n\tset1.forEach(word => {\n\t\tif (set2.has(word)) intersectionSize++\n\t})\n\n\t// Union size = size1 + size2 - intersection\n\tconst unionSize = set1.size + set2.size - intersectionSize\n\n\treturn unionSize > 0 ? intersectionSize / unionSize : 0\n}\n\n/**\n * Check if string 'sub' is a subsequence of string 'str'.\n * All characters in 'sub' must appear in order in 'str'.\n */\nfunction isSubsequence(sub: string, str: string): boolean {\n\tlet i = 0,\n\t\tj = 0\n\twhile (i < sub.length && j < str.length) {\n\t\tif (sub[i] === str[j]) i++\n\t\tj++\n\t}\n\treturn i === sub.length\n}\n\n/**\n * Check if all characters in 'query' are present in 'target'.\n * For example, \"aovc\" matches \"avocados\" (anagram subset matching).\n * Optimized with Map for O(n+m) single-pass performance.\n */\nfunction hasAllCharacters(query: string, target: string): boolean {\n\t// Build character frequency map for target (single pass)\n\tconst targetCount = new Map<string, number>()\n\tfor (let i = 0; i < target.length; i++) {\n\t\tconst char = target[i]\n\t\ttargetCount.set(char, (targetCount.get(char) || 0) + 1)\n\t}\n\n\t// Check query characters against target (single pass)\n\tconst queryCount = new Map<string, number>()\n\tfor (let i = 0; i < query.length; i++) {\n\t\tconst char = query[i]\n\t\tqueryCount.set(char, (queryCount.get(char) || 0) + 1)\n\t}\n\n\t// Verify all query chars exist in target with sufficient count\n\tlet hasAll = true\n\tqueryCount.forEach((count, char) => {\n\t\tif ((targetCount.get(char) || 0) < count) hasAll = false\n\t})\n\n\treturn hasAll\n}\n\n/**\n * Compute Dice's coefficient for two strings based on bigrams.\n * Returns a value between 0 (no similarity) and 1 (perfect match).\n * Optimized with Map for O(n) performance instead of O(n²).\n */\nfunction diceCoefficient(s1: string, s2: string): number {\n\tif (s1.length < 2 || s2.length < 2) return 0\n\n\t// Build bigram frequency map for s2 (O(n))\n\tconst bigrams2Map = new Map<string, number>()\n\tfor (let i = 0; i < s2.length - 1; i++) {\n\t\tconst bigram = s2.substring(i, i + 2)\n\t\tbigrams2Map.set(bigram, (bigrams2Map.get(bigram) || 0) + 1)\n\t}\n\n\t// Count intersections while iterating s1 bigrams (O(n))\n\tlet intersection = 0\n\tlet bigrams1Count = 0\n\tfor (let i = 0; i < s1.length - 1; i++) {\n\t\tconst bigram = s1.substring(i, i + 2)\n\t\tbigrams1Count++\n\t\tconst count = bigrams2Map.get(bigram)\n\t\tif (count && count > 0) {\n\t\t\tintersection++\n\t\t\tbigrams2Map.set(bigram, count - 1)\n\t\t}\n\t}\n\n\tconst bigrams2Count = s2.length - 1\n\treturn (2 * intersection) / (bigrams1Count + bigrams2Count)\n}\n\n/**\n * Calculate Levenshtein distance between two strings.\n * Optimized with O(min(n,m)) space complexity using rolling arrays.\n * Supports early termination when distance exceeds threshold.\n *\n * @param a First string\n * @param b Second string\n * @param maxDistance Maximum distance threshold for early termination (0 = disabled)\n * @returns The Levenshtein distance between the strings\n */\nfunction calculateLevenshtein(a: string, b: string, maxDistance = 0): number {\n\t// Ensure a is the shorter string for space optimization\n\tif (a.length > b.length) [a, b] = [b, a]\n\n\tif (a.length === 0) return b.length\n\n\t// Early termination: if length difference exceeds max distance\n\tif (maxDistance > 0 && b.length - a.length > maxDistance) {\n\t\treturn maxDistance + 1\n\t}\n\n\t// Use two rolling arrays instead of full matrix: O(n) space instead of O(n*m)\n\tlet prevRow = new Array(a.length + 1)\n\tlet currRow = new Array(a.length + 1)\n\n\t// Initialize first row\n\tfor (let j = 0; j <= a.length; j++) {\n\t\tprevRow[j] = j\n\t}\n\n\t// Calculate distances row by row\n\tfor (let i = 1; i <= b.length; i++) {\n\t\tcurrRow[0] = i\n\t\tlet minRowValue = i\n\n\t\tfor (let j = 1; j <= a.length; j++) {\n\t\t\tconst cost = a[j - 1] === b[i - 1] ? 0 : 1\n\t\t\tcurrRow[j] = Math.min(\n\t\t\t\tprevRow[j] + 1, // deletion\n\t\t\t\tcurrRow[j - 1] + 1, // insertion\n\t\t\t\tprevRow[j - 1] + cost // substitution\n\t\t\t)\n\t\t\tif (currRow[j] < minRowValue) minRowValue = currRow[j]\n\t\t}\n\n\t\t// Early termination: if minimum value in row exceeds threshold\n\t\tif (maxDistance > 0 && minRowValue > maxDistance) {\n\t\t\treturn maxDistance + 1\n\t\t}\n\n\t\t// Swap arrays for next iteration (O(1) operation)\n\t\t;[prevRow, currRow] = [currRow, prevRow]\n\t}\n\n\treturn prevRow[a.length]\n}\n"],"names":["WORD_SPLIT_PATTERN","normalizeString","str","removeAccents","normalized","toLowerCase","trim","normalize","replace","query","target","options","opts","normalizeAccents","includeWordJaccard","maxLevenshteinDistance","normalizedQuery","normalizedTarget","startsWith","length","words","split","filter","w","i","includes","indexOf","sub","j","maxScore","diceScore","s1","s2","bigrams2Map","Map","bigram","substring","set","get","intersection","bigrams1Count","count","bigrams2Count","maxLength","Math","max","levenshteinDistance","a","b","maxDistance","prevRow","Array","currRow","minRowValue","cost","min","levenshteinScore","targetCount","char","queryCount","hasAll","forEach","queryWords","jaccardScore","words1","words2","set1","Set","set2","intersectionSize","word","has","unionSize","size"],"mappings":"aA2BA,MAMMA,EAAqB,wBAwH3B,SAASC,EAAgBC,EAAaC,EAAAA,CACrC,IAAIC,EAAaF,EAAIG,YAAAA,EAAcC,KAAAA,EAOnC,OALIH,IAEHC,EAAaA,EAAWG,UAAU,KAAA,EAAOC,QAAQ,mBAAoB,EAAA,GAG/DJ,CACR,oBAvGO,SAAoBK,EAAeC,EAAgBC,EAAAA,CAEzD,GAAA,CAAKF,GAAAA,CAAUC,EAAQ,MAAO,GAC9B,GAAID,IAAUC,EAAQ,MAAO,GAG7B,MAAME,EAAoC,CACzCC,iBAAkBF,GAASE,kBAAAA,GAC3BC,mBAAoBH,GAASG,oBAAAA,GAC7BC,uBAAwBJ,GAASI,wBAA0B,CAAA,EAItDC,EAAkBf,EAAgBQ,EAAOG,EAAKC,kBAC9CI,EAAmBhB,EAAgBS,EAAQE,EAAKC,kBAGtD,GAAIG,IAAoBC,EAAkB,MAAO,GAGjD,GAAIA,EAAiBC,WAAWF,CAAAA,EAG/B,MAAO,KAAsB,KADTA,EAAgBG,OAASF,EAAiBE,QAK/D,MAAMC,EAAQH,EAAiBI,MAAMrB,GAAoBsB,OAAOC,GAAKA,EAAEJ,OAAS,CAAA,EAChF,QAASK,EAAI,EAAGA,EAAIJ,EAAMD,OAAQK,IACjC,GAAIJ,EAAMI,CAAAA,EAAGN,WAAWF,GAGvB,MAAO,MADmB,EAAKQ,EAAIJ,EAAMD,OAAU,IAMrD,GAAIF,EAAiBQ,SAAST,CAAAA,EAI7B,MAAO,KADe,EADLC,EAAiBS,QAAQV,CAAAA,EACJC,EAAiBE,OAAU,IAKlE,IA2FD,SAAuBQ,EAAazB,EAAAA,CACnC,IAAIsB,EAAI,EACPI,EAAI,EACL,KAAOJ,EAAIG,EAAIR,QAAUS,EAAI1B,EAAIiB,QAC5BQ,EAAIH,CAAAA,IAAOtB,EAAI0B,CAAAA,GAAIJ,IACvBI,IAED,OAAOJ,IAAMG,EAAIR,MAClB,GAnGmBH,EAAiBC,CAAAA,EAClC,MAAO,IAKR,IAAIY,EAAW,EAGf,MAAMC,EAtFmB,KAoN1B,SAAyBC,EAAYC,EAAAA,CACpC,GAAID,EAAGZ,OAAS,GAAKa,EAAGb,OAAS,EAAG,MAAO,GAG3C,MAAMc,MAAkBC,IACxB,QAASV,EAAI,EAAGA,EAAIQ,EAAGb,OAAS,EAAGK,IAAK,CACvC,MAAMW,EAASH,EAAGI,UAAUZ,EAAGA,EAAI,CAAA,EACnCS,EAAYI,IAAIF,GAASF,EAAYK,IAAIH,CAAAA,GAAW,GAAK,CAAA,CAC1D,CAGA,IAAII,EAAe,EACfC,EAAgB,EACpB,QAAShB,EAAI,EAAGA,EAAIO,EAAGZ,OAAS,EAAGK,IAAK,CACvC,MAAMW,EAASJ,EAAGK,UAAUZ,EAAGA,EAAI,CAAA,EACnCgB,IACA,MAAMC,EAAQR,EAAYK,IAAIH,CAAAA,EAC1BM,GAASA,EAAQ,IACpBF,IACAN,EAAYI,IAAIF,EAAQM,EAAQ,CAAA,EAElC,CAEA,MAAMC,EAAgBV,EAAGb,OAAS,EAClC,MAAQ,GAAIoB,GAAiBC,EAAgBE,EAC9C,GAvJmC1B,EAAiBC,CAAAA,EAC/Ca,EAAYD,IAAUA,EAAWC,GAGrC,MAAMa,EAAYC,KAAKC,IAAI7B,EAAgBG,OAAQF,EAAiBE,MAAAA,EAC9D2B,GA8JP,SAA8BC,EAAWC,EAAWC,EAAc,EAAA,CAIjE,GAFIF,EAAE5B,OAAS6B,EAAE7B,UAAS4B,EAAGC,CAAAA,EAAK,CAACA,EAAGD,IAElCA,EAAE5B,SAAW,EAAG,OAAO6B,EAAE7B,OAG7B,GAAI8B,EAAc,GAAKD,EAAE7B,OAAS4B,EAAE5B,OAAS8B,EAC5C,OAAOA,EAAc,EAItB,IAAIC,EAAU,IAAIC,MAAMJ,EAAE5B,OAAS,CAAA,EAC/BiC,EAAU,IAAID,MAAMJ,EAAE5B,OAAS,CAAA,EAGnC,QAASS,EAAI,EAAGA,GAAKmB,EAAE5B,OAAQS,IAC9BsB,EAAQtB,CAAAA,EAAKA,EAId,QAASJ,EAAI,EAAGA,GAAKwB,EAAE7B,OAAQK,IAAK,CACnC4B,EAAQ,CAAA,EAAK5B,EACb,IAAI6B,EAAc7B,EAElB,QAASI,EAAI,EAAGA,GAAKmB,EAAE5B,OAAQS,IAAK,CACnC,MAAM0B,EAAOP,EAAEnB,EAAI,CAAA,IAAOoB,EAAExB,EAAI,CAAA,EAAK,EAAI,EACzC4B,EAAQxB,CAAAA,EAAKgB,KAAKW,IACjBL,EAAQtB,GAAK,EACbwB,EAAQxB,EAAI,CAAA,EAAK,EACjBsB,EAAQtB,EAAI,CAAA,EAAK0B,GAEdF,EAAQxB,CAAAA,EAAKyB,IAAaA,EAAcD,EAAQxB,CAAAA,EACrD,CAGA,GAAIqB,EAAc,GAAKI,EAAcJ,EACpC,OAAOA,EAAc,EAAA,CAIpBC,EAASE,CAAAA,EAAW,CAACA,EAASF,CAAAA,CACjC,CAEA,OAAOA,EAAQH,EAAE5B,MAAAA,CAClB,GA1MEH,EACAC,EACAL,EAAKG,sBAAAA,EAEAyC,EAAmBb,EA/FO,KA+FM,EAAIG,EAAsBH,GAAwC,EASxG,GARIa,EAAmB3B,IAAUA,EAAW2B,IAsF7C,SAA0B/C,EAAeC,EAAAA,CAExC,MAAM+C,MAAkBvB,IACxB,QAASV,EAAI,EAAGA,EAAId,EAAOS,OAAQK,IAAK,CACvC,MAAMkC,EAAOhD,EAAOc,CAAAA,EACpBiC,EAAYpB,IAAIqB,GAAOD,EAAYnB,IAAIoB,CAAAA,GAAS,GAAK,CAAA,CACtD,CAGA,MAAMC,MAAiBzB,IACvB,QAASV,EAAI,EAAGA,EAAIf,EAAMU,OAAQK,IAAK,CACtC,MAAMkC,EAAOjD,EAAMe,CAAAA,EACnBmC,EAAWtB,IAAIqB,GAAOC,EAAWrB,IAAIoB,CAAAA,GAAS,GAAK,CAAA,CACpD,CAGA,IAAIE,KAKJ,OAJAD,EAAWE,QAAQ,CAACpB,EAAOiB,IAAAA,EACrBD,EAAYnB,IAAIoB,CAAAA,GAAS,GAAKjB,IAAOmB,EAAAA,GAAS,CAAA,EAG7CA,CACR,GAzGsB5C,EAAiBC,CAAAA,GAlGV,GAmGAY,IAAUA,EAnGV,IAuGxBjB,EAAKE,oBAAsBM,EAAMD,OAAS,EAAG,CAChD,MAAM2C,EAAa9C,EAAgBK,MAAMrB,CAAAA,EAAoBsB,OAAOC,GAAKA,EAAEJ,OAAS,CAAA,EACpF,GAAI2C,EAAW3C,OAAS,EAAG,CAC1B,MAAM4C,EAzGoB,IA+I7B,SAA+BC,EAAkBC,EAAAA,CAChD,GAAID,EAAO7C,SAAW,GAAK8C,EAAO9C,SAAW,EAAG,MAAO,GAEvD,MAAM+C,EAAO,IAAIC,IAAIH,CAAAA,EACfI,EAAO,IAAID,IAAIF,CAAAA,EAGrB,IAAII,EAAmB,EACvBH,EAAKL,QAAQS,IACRF,EAAKG,IAAID,CAAAA,GAAOD,GAAAA,CAAAA,EAIrB,MAAMG,EAAYN,EAAKO,KAAOL,EAAKK,KAAOJ,EAE1C,OAAOG,EAAY,EAAIH,EAAmBG,EAAY,CACvD,GAtD8CV,EAAY1C,CAAAA,EACnD2C,EAAelC,IAAUA,EAAWkC,EACzC,CACD,CAEA,OAAOlC,CACR"}
@@ -1,95 +0,0 @@
1
- const A = /[\s\-_.,;:!?()[\]{}]+/;
2
- function D(a, d, f) {
3
- if (!a || !d) return 0;
4
- if (a === d) return 1;
5
- const w = { normalizeAccents: f?.normalizeAccents ?? !0, includeWordJaccard: f?.includeWordJaccard ?? !0, maxLevenshteinDistance: f?.maxLevenshteinDistance ?? 0 }, o = M(a, w.normalizeAccents), h = M(d, w.normalizeAccents);
6
- if (o === h) return 1;
7
- if (h.startsWith(o))
8
- return 0.95 + 0.05 * (o.length / h.length);
9
- const m = h.split(A).filter((e) => e.length > 0);
10
- for (let e = 0; e < m.length; e++) if (m[e].startsWith(o))
11
- return 0.85 * (1 - e / m.length * 0.1);
12
- if (h.includes(o))
13
- return 0.7 * (1 - h.indexOf(o) / h.length * 0.2);
14
- if ((function(e, r) {
15
- let l = 0, c = 0;
16
- for (; l < e.length && c < r.length; ) e[l] === r[c] && l++, c++;
17
- return l === e.length;
18
- })(o, h)) return 0.5;
19
- let g = 0;
20
- const p = 0.45 * (function(e, r) {
21
- if (e.length < 2 || r.length < 2) return 0;
22
- const l = /* @__PURE__ */ new Map();
23
- for (let n = 0; n < r.length - 1; n++) {
24
- const s = r.substring(n, n + 2);
25
- l.set(s, (l.get(s) || 0) + 1);
26
- }
27
- let c = 0, i = 0;
28
- for (let n = 0; n < e.length - 1; n++) {
29
- const s = e.substring(n, n + 2);
30
- i++;
31
- const u = l.get(s);
32
- u && u > 0 && (c++, l.set(s, u - 1));
33
- }
34
- const t = r.length - 1;
35
- return 2 * c / (i + t);
36
- })(o, h);
37
- p > g && (g = p);
38
- const z = Math.max(o.length, h.length), W = (function(e, r, l = 0) {
39
- if (e.length > r.length && ([e, r] = [r, e]), e.length === 0) return r.length;
40
- if (l > 0 && r.length - e.length > l) return l + 1;
41
- let c = new Array(e.length + 1), i = new Array(e.length + 1);
42
- for (let t = 0; t <= e.length; t++) c[t] = t;
43
- for (let t = 1; t <= r.length; t++) {
44
- i[0] = t;
45
- let n = t;
46
- for (let s = 1; s <= e.length; s++) {
47
- const u = e[s - 1] === r[t - 1] ? 0 : 1;
48
- i[s] = Math.min(c[s] + 1, i[s - 1] + 1, c[s - 1] + u), i[s] < n && (n = i[s]);
49
- }
50
- if (l > 0 && n > l) return l + 1;
51
- [c, i] = [i, c];
52
- }
53
- return c[e.length];
54
- })(o, h, w.maxLevenshteinDistance), x = z ? 0.45 * (1 - W / z) : 0;
55
- if (x > g && (g = x), (function(e, r) {
56
- const l = /* @__PURE__ */ new Map();
57
- for (let t = 0; t < r.length; t++) {
58
- const n = r[t];
59
- l.set(n, (l.get(n) || 0) + 1);
60
- }
61
- const c = /* @__PURE__ */ new Map();
62
- for (let t = 0; t < e.length; t++) {
63
- const n = e[t];
64
- c.set(n, (c.get(n) || 0) + 1);
65
- }
66
- let i = !0;
67
- return c.forEach((t, n) => {
68
- (l.get(n) || 0) < t && (i = !1);
69
- }), i;
70
- })(o, h) && 0.3 > g && (g = 0.3), w.includeWordJaccard && m.length > 1) {
71
- const e = o.split(A).filter((r) => r.length > 0);
72
- if (e.length > 0) {
73
- const r = 0.4 * (function(l, c) {
74
- if (l.length === 0 || c.length === 0) return 0;
75
- const i = new Set(l), t = new Set(c);
76
- let n = 0;
77
- i.forEach((u) => {
78
- t.has(u) && n++;
79
- });
80
- const s = i.size + t.size - n;
81
- return s > 0 ? n / s : 0;
82
- })(e, m);
83
- r > g && (g = r);
84
- }
85
- }
86
- return g;
87
- }
88
- function M(a, d) {
89
- let f = a.toLowerCase().trim();
90
- return d && (f = f.normalize("NFD").replace(/[\u0300-\u036f]/g, "")), f;
91
- }
92
- export {
93
- D as s
94
- };
95
- //# sourceMappingURL=search-DxxnLa5u.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-DxxnLa5u.js","sources":["../src/utils/search.ts"],"sourcesContent":["/**\n * Options for configuring similarity calculation behavior.\n */\nexport interface SimilarityOptions {\n\t/**\n\t * Whether to remove accents/diacritics during normalization.\n\t * @default true\n\t */\n\tnormalizeAccents?: boolean\n\n\t/**\n\t * Whether to include word-level Jaccard similarity in fuzzy matching.\n\t * Useful for matching phrases with different word orders.\n\t * @default true\n\t */\n\tincludeWordJaccard?: boolean\n\n\t/**\n\t * Maximum Levenshtein distance threshold for early termination.\n\t * Improves performance for very dissimilar strings.\n\t * Set to 0 to disable early termination.\n\t * @default 0 (disabled)\n\t */\n\tmaxLevenshteinDistance?: number\n}\n\n// Scoring weights as named constants for clarity and maintainability\nconst SCORE_WEIGHT_DICE = 0.45\nconst SCORE_WEIGHT_LEVENSHTEIN = 0.45\nconst SCORE_WEIGHT_ANAGRAM = 0.3\nconst SCORE_WEIGHT_JACCARD = 0.4\n\n// Word splitting pattern - defined once for reuse\nconst WORD_SPLIT_PATTERN = /[\\s\\-_.,;:!?()[\\]{}]+/\n\n/**\n * Calculate similarity score between two strings.\n * Returns a value between 0 (no match) and 1 (exact match).\n * Optimized for autocomplete with prioritization of start matches and whole words.\n *\n * Scoring tiers (higher scores = better matches):\n * - 1.00: Exact match\n * - 0.95-1.00: Target starts with query (autocomplete-style)\n * - 0.765-0.85: Query matches start of a word in target\n * - 0.56-0.70: Query is substring of target\n * - 0.50: Query is subsequence of target\n * - 0.00-0.50: Fuzzy matching (typos, similar words, character overlap)\n *\n * @param query The search query string\n * @param target The target string to compare against\n * @param options Optional configuration for similarity calculation\n * @returns A similarity score from 0 to 1\n *\n * @example\n * similarity('john', 'John Doe') // 0.975+ (starts with)\n * similarity('doe', 'John Doe') // 0.765+ (word boundary)\n * similarity('jo', 'John Doe') // 0.95+ (starts with)\n * similarity('jhn', 'John Doe') // 0.3-0.5 (subsequence/fuzzy)\n */\nexport function similarity(query: string, target: string, options?: SimilarityOptions): number {\n\t// Handle edge cases\n\tif (!query || !target) return 0\n\tif (query === target) return 1\n\n\t// Default options\n\tconst opts: Required<SimilarityOptions> = {\n\t\tnormalizeAccents: options?.normalizeAccents ?? true,\n\t\tincludeWordJaccard: options?.includeWordJaccard ?? true,\n\t\tmaxLevenshteinDistance: options?.maxLevenshteinDistance ?? 0,\n\t}\n\n\t// Normalize strings for comparison\n\tconst normalizedQuery = normalizeString(query, opts.normalizeAccents)\n\tconst normalizedTarget = normalizeString(target, opts.normalizeAccents)\n\n\t// 1. Exact match (case-insensitive, accent-insensitive)\n\tif (normalizedQuery === normalizedTarget) return 1\n\n\t// 2. Target starts with query (highest priority for autocomplete)\n\tif (normalizedTarget.startsWith(normalizedQuery)) {\n\t\t// Give higher score to shorter targets (more precise matches)\n\t\tconst lengthRatio = normalizedQuery.length / normalizedTarget.length\n\t\treturn 0.95 + (lengthRatio * 0.05) // Score between 0.95 and 1.0\n\t}\n\n\t// 3. Word boundary match (query matches start of any word in target)\n\tconst words = normalizedTarget.split(WORD_SPLIT_PATTERN).filter(w => w.length > 0)\n\tfor (let i = 0; i < words.length; i++) {\n\t\tif (words[i].startsWith(normalizedQuery)) {\n\t\t\t// Score based on which word matched (earlier words score higher)\n\t\t\tconst wordPositionScore = 1 - (i / words.length) * 0.1\n\t\t\treturn 0.85 * wordPositionScore // Score between 0.765 and 0.85\n\t\t}\n\t}\n\n\t// 4. Direct substring match (query appears anywhere in target)\n\tif (normalizedTarget.includes(normalizedQuery)) {\n\t\t// Score based on position (earlier position scores higher)\n\t\tconst position = normalizedTarget.indexOf(normalizedQuery)\n\t\tconst positionScore = 1 - (position / normalizedTarget.length) * 0.2\n\t\treturn 0.7 * positionScore // Score between 0.56 and 0.7\n\t}\n\n\t// 5. Subsequence check (all query chars appear in order)\n\tif (isSubsequence(normalizedQuery, normalizedTarget)) {\n\t\treturn 0.5\n\t}\n\n\t// 6. Fuzzy matching for typos and similar words\n\t// Calculate all scores and return the maximum (avoid array allocation)\n\tlet maxScore = 0\n\n\t// 6a. Dice coefficient (good for character-level similarity)\n\tconst diceScore = diceCoefficient(normalizedQuery, normalizedTarget) * SCORE_WEIGHT_DICE\n\tif (diceScore > maxScore) maxScore = diceScore\n\n\t// 6b. Levenshtein distance (good for typos)\n\tconst maxLength = Math.max(normalizedQuery.length, normalizedTarget.length)\n\tconst levenshteinDistance = calculateLevenshtein(\n\t\tnormalizedQuery,\n\t\tnormalizedTarget,\n\t\topts.maxLevenshteinDistance\n\t)\n\tconst levenshteinScore = maxLength ? (1 - levenshteinDistance / maxLength) * SCORE_WEIGHT_LEVENSHTEIN : 0\n\tif (levenshteinScore > maxScore) maxScore = levenshteinScore\n\n\t// 6c. Character frequency match (anagram-like)\n\tif (hasAllCharacters(normalizedQuery, normalizedTarget)) {\n\t\tif (SCORE_WEIGHT_ANAGRAM > maxScore) maxScore = SCORE_WEIGHT_ANAGRAM\n\t}\n\n\t// 6d. Word-level Jaccard similarity (good for phrase matching)\n\tif (opts.includeWordJaccard && words.length > 1) {\n\t\tconst queryWords = normalizedQuery.split(WORD_SPLIT_PATTERN).filter(w => w.length > 0)\n\t\tif (queryWords.length > 0) {\n\t\t\tconst jaccardScore = wordJaccardSimilarity(queryWords, words) * SCORE_WEIGHT_JACCARD\n\t\t\tif (jaccardScore > maxScore) maxScore = jaccardScore\n\t\t}\n\t}\n\n\treturn maxScore\n}\n\n/**\n * Normalize a string for comparison.\n * - Converts to lowercase\n * - Trims whitespace\n * - Optionally removes accents/diacritics\n *\n * @param str The string to normalize\n * @param removeAccents Whether to remove accents/diacritics\n * @returns The normalized string\n */\nfunction normalizeString(str: string, removeAccents: boolean): string {\n\tlet normalized = str.toLowerCase().trim()\n\n\tif (removeAccents) {\n\t\t// Remove accents using NFD normalization and removing combining marks\n\t\tnormalized = normalized.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\t}\n\n\treturn normalized\n}\n\n/**\n * Calculate Jaccard similarity between two sets of words.\n * Returns a value between 0 (no overlap) and 1 (identical sets).\n * Optimized to avoid unnecessary array conversions.\n *\n * @param words1 Array of words from first string\n * @param words2 Array of words from second string\n * @returns Jaccard similarity score (0-1)\n */\nfunction wordJaccardSimilarity(words1: string[], words2: string[]): number {\n\tif (words1.length === 0 || words2.length === 0) return 0\n\n\tconst set1 = new Set(words1)\n\tconst set2 = new Set(words2)\n\n\t// Count intersection\n\tlet intersectionSize = 0\n\tset1.forEach(word => {\n\t\tif (set2.has(word)) intersectionSize++\n\t})\n\n\t// Union size = size1 + size2 - intersection\n\tconst unionSize = set1.size + set2.size - intersectionSize\n\n\treturn unionSize > 0 ? intersectionSize / unionSize : 0\n}\n\n/**\n * Check if string 'sub' is a subsequence of string 'str'.\n * All characters in 'sub' must appear in order in 'str'.\n */\nfunction isSubsequence(sub: string, str: string): boolean {\n\tlet i = 0,\n\t\tj = 0\n\twhile (i < sub.length && j < str.length) {\n\t\tif (sub[i] === str[j]) i++\n\t\tj++\n\t}\n\treturn i === sub.length\n}\n\n/**\n * Check if all characters in 'query' are present in 'target'.\n * For example, \"aovc\" matches \"avocados\" (anagram subset matching).\n * Optimized with Map for O(n+m) single-pass performance.\n */\nfunction hasAllCharacters(query: string, target: string): boolean {\n\t// Build character frequency map for target (single pass)\n\tconst targetCount = new Map<string, number>()\n\tfor (let i = 0; i < target.length; i++) {\n\t\tconst char = target[i]\n\t\ttargetCount.set(char, (targetCount.get(char) || 0) + 1)\n\t}\n\n\t// Check query characters against target (single pass)\n\tconst queryCount = new Map<string, number>()\n\tfor (let i = 0; i < query.length; i++) {\n\t\tconst char = query[i]\n\t\tqueryCount.set(char, (queryCount.get(char) || 0) + 1)\n\t}\n\n\t// Verify all query chars exist in target with sufficient count\n\tlet hasAll = true\n\tqueryCount.forEach((count, char) => {\n\t\tif ((targetCount.get(char) || 0) < count) hasAll = false\n\t})\n\n\treturn hasAll\n}\n\n/**\n * Compute Dice's coefficient for two strings based on bigrams.\n * Returns a value between 0 (no similarity) and 1 (perfect match).\n * Optimized with Map for O(n) performance instead of O(n²).\n */\nfunction diceCoefficient(s1: string, s2: string): number {\n\tif (s1.length < 2 || s2.length < 2) return 0\n\n\t// Build bigram frequency map for s2 (O(n))\n\tconst bigrams2Map = new Map<string, number>()\n\tfor (let i = 0; i < s2.length - 1; i++) {\n\t\tconst bigram = s2.substring(i, i + 2)\n\t\tbigrams2Map.set(bigram, (bigrams2Map.get(bigram) || 0) + 1)\n\t}\n\n\t// Count intersections while iterating s1 bigrams (O(n))\n\tlet intersection = 0\n\tlet bigrams1Count = 0\n\tfor (let i = 0; i < s1.length - 1; i++) {\n\t\tconst bigram = s1.substring(i, i + 2)\n\t\tbigrams1Count++\n\t\tconst count = bigrams2Map.get(bigram)\n\t\tif (count && count > 0) {\n\t\t\tintersection++\n\t\t\tbigrams2Map.set(bigram, count - 1)\n\t\t}\n\t}\n\n\tconst bigrams2Count = s2.length - 1\n\treturn (2 * intersection) / (bigrams1Count + bigrams2Count)\n}\n\n/**\n * Calculate Levenshtein distance between two strings.\n * Optimized with O(min(n,m)) space complexity using rolling arrays.\n * Supports early termination when distance exceeds threshold.\n *\n * @param a First string\n * @param b Second string\n * @param maxDistance Maximum distance threshold for early termination (0 = disabled)\n * @returns The Levenshtein distance between the strings\n */\nfunction calculateLevenshtein(a: string, b: string, maxDistance = 0): number {\n\t// Ensure a is the shorter string for space optimization\n\tif (a.length > b.length) [a, b] = [b, a]\n\n\tif (a.length === 0) return b.length\n\n\t// Early termination: if length difference exceeds max distance\n\tif (maxDistance > 0 && b.length - a.length > maxDistance) {\n\t\treturn maxDistance + 1\n\t}\n\n\t// Use two rolling arrays instead of full matrix: O(n) space instead of O(n*m)\n\tlet prevRow = new Array(a.length + 1)\n\tlet currRow = new Array(a.length + 1)\n\n\t// Initialize first row\n\tfor (let j = 0; j <= a.length; j++) {\n\t\tprevRow[j] = j\n\t}\n\n\t// Calculate distances row by row\n\tfor (let i = 1; i <= b.length; i++) {\n\t\tcurrRow[0] = i\n\t\tlet minRowValue = i\n\n\t\tfor (let j = 1; j <= a.length; j++) {\n\t\t\tconst cost = a[j - 1] === b[i - 1] ? 0 : 1\n\t\t\tcurrRow[j] = Math.min(\n\t\t\t\tprevRow[j] + 1, // deletion\n\t\t\t\tcurrRow[j - 1] + 1, // insertion\n\t\t\t\tprevRow[j - 1] + cost // substitution\n\t\t\t)\n\t\t\tif (currRow[j] < minRowValue) minRowValue = currRow[j]\n\t\t}\n\n\t\t// Early termination: if minimum value in row exceeds threshold\n\t\tif (maxDistance > 0 && minRowValue > maxDistance) {\n\t\t\treturn maxDistance + 1\n\t\t}\n\n\t\t// Swap arrays for next iteration (O(1) operation)\n\t\t;[prevRow, currRow] = [currRow, prevRow]\n\t}\n\n\treturn prevRow[a.length]\n}\n"],"names":["WORD_SPLIT_PATTERN","similarity","query","target","options","opts","normalizeAccents","includeWordJaccard","maxLevenshteinDistance","normalizedQuery","normalizeString","normalizedTarget","startsWith","length","words","split","filter","w","i","includes","indexOf","sub","str","j","maxScore","diceScore","s1","s2","bigrams2Map","Map","bigram","substring","set","get","intersection","bigrams1Count","count","bigrams2Count","maxLength","Math","max","levenshteinDistance","a","b","maxDistance","prevRow","Array","currRow","minRowValue","cost","min","levenshteinScore","targetCount","char","queryCount","hasAll","forEach","queryWords","jaccardScore","words1","words2","set1","Set","set2","intersectionSize","word","has","unionSize","size","removeAccents","normalized","toLowerCase","trim","normalize","replace"],"mappings":"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"}