@mhmo91/schmancy 0.8.6 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1426) hide show
  1. package/README.md +54 -1
  2. package/ai/INDEX.md +321 -0
  3. package/ai/animation.md +64 -0
  4. package/ai/area.md +170 -237
  5. package/ai/audio.md +50 -222
  6. package/ai/autocomplete.md +44 -162
  7. package/ai/avatar.md +47 -178
  8. package/ai/badge.md +41 -108
  9. package/ai/boat.md +35 -41
  10. package/ai/busy.md +25 -184
  11. package/ai/button.md +52 -150
  12. package/ai/card.md +42 -215
  13. package/ai/charts.md +93 -0
  14. package/ai/checkbox.md +32 -135
  15. package/ai/chips.md +73 -383
  16. package/ai/code-highlight.md +33 -226
  17. package/ai/connectivity.md +36 -0
  18. package/ai/content-drawer.md +65 -232
  19. package/ai/date-range-inline.md +40 -258
  20. package/ai/date-range.md +43 -198
  21. package/ai/delay.md +31 -139
  22. package/ai/details.md +48 -453
  23. package/ai/dialog.md +55 -164
  24. package/ai/directives.md +258 -405
  25. package/ai/discovery.md +67 -0
  26. package/ai/divider.md +15 -137
  27. package/ai/dropdown.md +44 -235
  28. package/ai/expand.md +63 -0
  29. package/ai/extra.md +59 -0
  30. package/ai/float.md +14 -0
  31. package/ai/form.md +41 -137
  32. package/ai/icons.md +31 -235
  33. package/ai/iframe.md +44 -0
  34. package/ai/input.md +50 -210
  35. package/ai/json.md +33 -0
  36. package/ai/layout.md +45 -169
  37. package/ai/lightbox.md +25 -370
  38. package/ai/list.md +51 -130
  39. package/ai/mailbox.md +80 -508
  40. package/ai/map.md +47 -226
  41. package/ai/menu.md +25 -134
  42. package/ai/mixins.md +201 -0
  43. package/ai/nav-drawer.md +30 -184
  44. package/ai/navigation-bar.md +27 -184
  45. package/ai/navigation-rail.md +62 -630
  46. package/ai/notification.md +49 -183
  47. package/ai/option.md +30 -160
  48. package/ai/page.md +42 -0
  49. package/ai/progress.md +26 -65
  50. package/ai/qr-scanner.md +51 -0
  51. package/ai/radio-group.md +45 -189
  52. package/ai/range.md +47 -0
  53. package/ai/rxjs-utils.md +60 -0
  54. package/ai/select.md +49 -209
  55. package/ai/sheet.md +74 -506
  56. package/ai/slider.md +30 -214
  57. package/ai/steps.md +30 -392
  58. package/ai/store.md +173 -251
  59. package/ai/surface.md +58 -245
  60. package/ai/table.md +56 -330
  61. package/ai/tabs.md +31 -176
  62. package/ai/teleport.md +35 -177
  63. package/ai/textarea.md +48 -232
  64. package/ai/theme-button.md +16 -163
  65. package/ai/theme.md +40 -1089
  66. package/ai/tooltip.md +35 -146
  67. package/ai/tree.md +45 -271
  68. package/ai/typewriter.md +28 -317
  69. package/ai/typography.md +43 -296
  70. package/ai/utils.md +95 -0
  71. package/ai/window.md +67 -0
  72. package/custom-elements.json +10955 -0
  73. package/dist/ai/INDEX.md +321 -0
  74. package/dist/ai/animation.md +64 -0
  75. package/dist/ai/area.md +170 -237
  76. package/dist/ai/audio.md +50 -222
  77. package/dist/ai/autocomplete.md +44 -162
  78. package/dist/ai/avatar.md +47 -178
  79. package/dist/ai/badge.md +41 -108
  80. package/dist/ai/boat.md +35 -41
  81. package/dist/ai/busy.md +25 -184
  82. package/dist/ai/button.md +52 -150
  83. package/dist/ai/card.md +42 -215
  84. package/dist/ai/charts.md +93 -0
  85. package/dist/ai/checkbox.md +32 -135
  86. package/dist/ai/chips.md +73 -383
  87. package/dist/ai/code-highlight.md +33 -226
  88. package/dist/ai/connectivity.md +36 -0
  89. package/dist/ai/content-drawer.md +65 -232
  90. package/dist/ai/date-range-inline.md +40 -258
  91. package/dist/ai/date-range.md +43 -198
  92. package/dist/ai/delay.md +31 -139
  93. package/dist/ai/details.md +48 -453
  94. package/dist/ai/dialog.md +55 -164
  95. package/dist/ai/directives.md +258 -405
  96. package/dist/ai/discovery.md +67 -0
  97. package/dist/ai/divider.md +15 -137
  98. package/dist/ai/dropdown.md +44 -235
  99. package/dist/ai/expand.md +63 -0
  100. package/dist/ai/extra.md +59 -0
  101. package/dist/ai/float.md +14 -0
  102. package/dist/ai/form.md +41 -137
  103. package/dist/ai/icons.md +31 -235
  104. package/dist/ai/iframe.md +44 -0
  105. package/dist/ai/input.md +50 -210
  106. package/dist/ai/json.md +33 -0
  107. package/dist/ai/layout.md +45 -169
  108. package/dist/ai/lightbox.md +25 -370
  109. package/dist/ai/list.md +51 -130
  110. package/dist/ai/mailbox.md +80 -508
  111. package/dist/ai/map.md +47 -226
  112. package/dist/ai/menu.md +25 -134
  113. package/dist/ai/mixins.md +201 -0
  114. package/dist/ai/nav-drawer.md +30 -184
  115. package/dist/ai/navigation-bar.md +27 -184
  116. package/dist/ai/navigation-rail.md +62 -630
  117. package/dist/ai/notification.md +49 -183
  118. package/dist/ai/option.md +30 -160
  119. package/dist/ai/page.md +42 -0
  120. package/dist/ai/progress.md +26 -65
  121. package/dist/ai/qr-scanner.md +51 -0
  122. package/dist/ai/radio-group.md +45 -189
  123. package/dist/ai/range.md +47 -0
  124. package/dist/ai/rxjs-utils.md +60 -0
  125. package/dist/ai/select.md +49 -209
  126. package/dist/ai/sheet.md +74 -506
  127. package/dist/ai/slider.md +30 -214
  128. package/dist/ai/steps.md +30 -392
  129. package/dist/ai/store.md +173 -251
  130. package/dist/ai/surface.md +58 -245
  131. package/dist/ai/table.md +56 -330
  132. package/dist/ai/tabs.md +31 -176
  133. package/dist/ai/teleport.md +35 -177
  134. package/dist/ai/textarea.md +48 -232
  135. package/dist/ai/theme-button.md +16 -163
  136. package/dist/ai/theme.md +40 -1089
  137. package/dist/ai/tooltip.md +35 -146
  138. package/dist/ai/tree.md +45 -271
  139. package/dist/ai/typewriter.md +28 -317
  140. package/dist/ai/typography.md +43 -296
  141. package/dist/ai/utils.md +95 -0
  142. package/dist/ai/window.md +67 -0
  143. package/dist/animation-BK-8BwY8.js +173 -0
  144. package/dist/animation-BK-8BwY8.js.map +1 -0
  145. package/dist/animation-CO_Csq84.cjs +16 -0
  146. package/dist/animation-CO_Csq84.cjs.map +1 -0
  147. package/dist/area-CC8fUnra.js +590 -0
  148. package/dist/area-CC8fUnra.js.map +1 -0
  149. package/dist/area-wnWUAHEn.cjs +12 -0
  150. package/dist/area-wnWUAHEn.cjs.map +1 -0
  151. package/dist/area.cjs +1 -2
  152. package/dist/area.js +2 -29
  153. package/dist/audio-DtYYgzYD.cjs +1 -0
  154. package/dist/audio-DtYYgzYD.cjs.map +1 -0
  155. package/dist/audio-kz8UgPTO.js +335 -0
  156. package/dist/audio-kz8UgPTO.js.map +1 -0
  157. package/dist/audio.cjs +1 -2
  158. package/dist/audio.js +3 -9
  159. package/dist/autocomplete-B2Z3WK_7.cjs +111 -0
  160. package/dist/autocomplete-B2Z3WK_7.cjs.map +1 -0
  161. package/dist/autocomplete-CJ7YgtKN.js +378 -0
  162. package/dist/autocomplete-CJ7YgtKN.js.map +1 -0
  163. package/dist/autocomplete.cjs +1 -2
  164. package/dist/autocomplete.js +1 -2
  165. package/dist/badge.cjs +1 -2
  166. package/dist/badge.js +2 -6
  167. package/dist/boat-B57_4TzJ.cjs +80 -0
  168. package/dist/boat-B57_4TzJ.cjs.map +1 -0
  169. package/dist/boat-C9eU6NO-.js +347 -0
  170. package/dist/boat-C9eU6NO-.js.map +1 -0
  171. package/dist/boat.cjs +1 -2
  172. package/dist/boat.js +2 -5
  173. package/dist/busy--6oimtop.cjs +134 -0
  174. package/dist/busy--6oimtop.cjs.map +1 -0
  175. package/dist/busy-CGZXy0h-.js +167 -0
  176. package/dist/busy-CGZXy0h-.js.map +1 -0
  177. package/dist/busy.cjs +1 -2
  178. package/dist/busy.js +1 -2
  179. package/dist/button.cjs +113 -2
  180. package/dist/button.cjs.map +1 -1
  181. package/dist/button.js +398 -5
  182. package/dist/button.js.map +1 -1
  183. package/dist/card-BGJ0Hb1O.cjs +177 -0
  184. package/dist/card-BGJ0Hb1O.cjs.map +1 -0
  185. package/dist/card-C-ee-l5O.js +284 -0
  186. package/dist/card-C-ee-l5O.js.map +1 -0
  187. package/dist/card.cjs +1 -2
  188. package/dist/card.js +1 -2
  189. package/dist/charts.cjs +112 -2
  190. package/dist/charts.cjs.map +1 -1
  191. package/dist/charts.js +368 -8
  192. package/dist/charts.js.map +1 -1
  193. package/dist/checkbox-DuYaKoDZ.cjs +39 -0
  194. package/dist/checkbox-DuYaKoDZ.cjs.map +1 -0
  195. package/dist/checkbox-FRcorDrD.js +610 -0
  196. package/dist/checkbox-FRcorDrD.js.map +1 -0
  197. package/dist/checkbox.cjs +1 -2
  198. package/dist/checkbox.js +2 -5
  199. package/dist/chips-BpA0A-qr.cjs +253 -0
  200. package/dist/chips-BpA0A-qr.cjs.map +1 -0
  201. package/dist/chips-CyzNbKJD.js +645 -0
  202. package/dist/chips-CyzNbKJD.js.map +1 -0
  203. package/dist/chips.cjs +1 -2
  204. package/dist/chips.js +3 -10
  205. package/dist/chunk-BCfY8kxB.cjs +1 -0
  206. package/dist/chunk-C_1VqBVD.js +11 -0
  207. package/dist/code-highlight-C7O9ltXm.js +290 -0
  208. package/dist/code-highlight-C7O9ltXm.js.map +1 -0
  209. package/dist/code-highlight-DsBdSQBG.cjs +190 -0
  210. package/dist/code-highlight-DsBdSQBG.cjs.map +1 -0
  211. package/dist/code-highlight.cjs +1 -2
  212. package/dist/code-highlight.js +2 -7
  213. package/dist/components-CkMvOiTR.js +730 -0
  214. package/dist/components-CkMvOiTR.js.map +1 -0
  215. package/dist/components-dDI3xeIf.cjs +73 -0
  216. package/dist/components-dDI3xeIf.cjs.map +1 -0
  217. package/dist/components.cjs +1 -2
  218. package/dist/components.js +2 -5
  219. package/dist/connectivity.cjs +59 -0
  220. package/dist/connectivity.cjs.map +1 -0
  221. package/dist/connectivity.js +86 -0
  222. package/dist/connectivity.js.map +1 -0
  223. package/dist/content-drawer.cjs +1 -2
  224. package/dist/content-drawer.js +2 -13
  225. package/dist/cursor-glow-Ah7VXSj7.js +46 -0
  226. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -0
  227. package/dist/cursor-glow-DtSy_PJd.cjs +1 -0
  228. package/dist/cursor-glow-DtSy_PJd.cjs.map +1 -0
  229. package/dist/date-range-70zhLUKE.cjs +131 -0
  230. package/dist/date-range-70zhLUKE.cjs.map +1 -0
  231. package/dist/date-range-BrN_Bs6_.js +946 -0
  232. package/dist/date-range-BrN_Bs6_.js.map +1 -0
  233. package/dist/date-range-inline-CPzD-tIv.cjs +43 -0
  234. package/dist/date-range-inline-CPzD-tIv.cjs.map +1 -0
  235. package/dist/date-range-inline-Cp294DxR.js +267 -0
  236. package/dist/date-range-inline-Cp294DxR.js.map +1 -0
  237. package/dist/date-range-inline.cjs +1 -2
  238. package/dist/date-range-inline.js +2 -5
  239. package/dist/date-range.cjs +1 -2
  240. package/dist/date-range.js +2 -6
  241. package/dist/delay-COcAkBqB.cjs +9 -0
  242. package/dist/delay-COcAkBqB.cjs.map +1 -0
  243. package/dist/delay-IV0Swce2.js +346 -0
  244. package/dist/delay-IV0Swce2.js.map +1 -0
  245. package/dist/delay.cjs +1 -2
  246. package/dist/delay.js +2 -6
  247. package/dist/details-CuKmr3Qw.js +293 -0
  248. package/dist/details-CuKmr3Qw.js.map +1 -0
  249. package/dist/details-DgWkPqmt.cjs +168 -0
  250. package/dist/details-DgWkPqmt.cjs.map +1 -0
  251. package/dist/details.cjs +1 -2
  252. package/dist/details.js +2 -5
  253. package/dist/dialog-service-NZEvyEK-.js +193 -0
  254. package/dist/dialog-service-NZEvyEK-.js.map +1 -0
  255. package/dist/dialog-service-VnW4gkmE.cjs +1 -0
  256. package/dist/dialog-service-VnW4gkmE.cjs.map +1 -0
  257. package/dist/dialog.cjs +82 -2
  258. package/dist/dialog.cjs.map +1 -1
  259. package/dist/dialog.js +396 -9
  260. package/dist/dialog.js.map +1 -1
  261. package/dist/directives.cjs +108 -2
  262. package/dist/directives.cjs.map +1 -1
  263. package/dist/directives.js +1362 -14
  264. package/dist/directives.js.map +1 -1
  265. package/dist/discovery.cjs +1 -2
  266. package/dist/discovery.cjs.map +1 -1
  267. package/dist/discovery.js +61 -6
  268. package/dist/discovery.js.map +1 -1
  269. package/dist/divider-BWoUbfgZ.js +87 -0
  270. package/dist/divider-BWoUbfgZ.js.map +1 -0
  271. package/dist/divider-BghtrMbn.cjs +57 -0
  272. package/dist/divider-BghtrMbn.cjs.map +1 -0
  273. package/dist/divider.cjs +1 -2
  274. package/dist/divider.js +1 -2
  275. package/dist/dropdown.cjs +57 -2
  276. package/dist/dropdown.cjs.map +1 -1
  277. package/dist/dropdown.js +160 -5
  278. package/dist/dropdown.js.map +1 -1
  279. package/dist/expand-CJU9m4ga.js +336 -0
  280. package/dist/expand-CJU9m4ga.js.map +1 -0
  281. package/dist/expand-XyDE5SsO.cjs +141 -0
  282. package/dist/expand-XyDE5SsO.cjs.map +1 -0
  283. package/dist/expand.cjs +1 -0
  284. package/dist/expand.js +2 -0
  285. package/dist/extra-BxXFmW1w.js +3435 -0
  286. package/dist/extra-BxXFmW1w.js.map +1 -0
  287. package/dist/extra-CsrRKKqE.cjs +31 -0
  288. package/dist/extra-CsrRKKqE.cjs.map +1 -0
  289. package/dist/extra.cjs +1 -2
  290. package/dist/extra.js +2 -6
  291. package/dist/float-BD86t_NU.js +5 -0
  292. package/dist/float-BD86t_NU.js.map +1 -0
  293. package/dist/float-DBv1FINW.cjs +1 -0
  294. package/dist/float-DBv1FINW.cjs.map +1 -0
  295. package/dist/float.cjs +1 -0
  296. package/dist/float.js +2 -0
  297. package/dist/flow-Bbwn6dRN.cjs +1 -0
  298. package/dist/flow-Bbwn6dRN.cjs.map +1 -0
  299. package/dist/flow-CUj0fDT_.js +386 -0
  300. package/dist/flow-CUj0fDT_.js.map +1 -0
  301. package/dist/form-Cp5-I_ZV.js +270 -0
  302. package/dist/form-Cp5-I_ZV.js.map +1 -0
  303. package/dist/form-D0bIeDWT.cjs +1 -0
  304. package/dist/form-D0bIeDWT.cjs.map +1 -0
  305. package/dist/form.cjs +1 -2
  306. package/dist/form.js +1 -2
  307. package/dist/hashContent-DYM21p6t.js +6 -0
  308. package/dist/hashContent-DYM21p6t.js.map +1 -0
  309. package/dist/hashContent-DaeGmY-p.cjs +1 -0
  310. package/dist/hashContent-DaeGmY-p.cjs.map +1 -0
  311. package/dist/icons-BpU0_l92.js +161 -0
  312. package/dist/icons-BpU0_l92.js.map +1 -0
  313. package/dist/icons-D8w_20mO.cjs +52 -0
  314. package/dist/icons-D8w_20mO.cjs.map +1 -0
  315. package/dist/icons.cjs +1 -2
  316. package/dist/icons.js +1 -2
  317. package/dist/iframe-BjwxA2Pg.cjs +24 -0
  318. package/dist/iframe-BjwxA2Pg.cjs.map +1 -0
  319. package/dist/iframe-tY1GY5g1.js +44 -0
  320. package/dist/iframe-tY1GY5g1.js.map +1 -0
  321. package/dist/iframe.cjs +1 -0
  322. package/dist/iframe.js +2 -0
  323. package/dist/index.cjs +1 -2
  324. package/dist/index.js +69 -285
  325. package/dist/input-BnfTpRN9.js +364 -0
  326. package/dist/input-BnfTpRN9.js.map +1 -0
  327. package/dist/input-BwxwognS.cjs +51 -0
  328. package/dist/input-BwxwognS.cjs.map +1 -0
  329. package/dist/input-chip-CkM2aYmO.js +301 -0
  330. package/dist/input-chip-CkM2aYmO.js.map +1 -0
  331. package/dist/input-chip-MjOwX5EY.cjs +146 -0
  332. package/dist/input-chip-MjOwX5EY.cjs.map +1 -0
  333. package/dist/input.cjs +1 -2
  334. package/dist/input.js +2 -6
  335. package/dist/intersection-BPLpqYEd.js +12 -0
  336. package/dist/intersection-BPLpqYEd.js.map +1 -0
  337. package/dist/intersection-CZpaIHeT.cjs +1 -0
  338. package/dist/intersection-CZpaIHeT.cjs.map +1 -0
  339. package/dist/json.cjs +11 -2
  340. package/dist/json.cjs.map +1 -1
  341. package/dist/json.js +40 -4
  342. package/dist/json.js.map +1 -1
  343. package/dist/layout-4C-6_cre.cjs +1 -0
  344. package/dist/layout-4C-6_cre.cjs.map +1 -0
  345. package/dist/layout-BV0EeyUS.cjs +17 -0
  346. package/dist/layout-BV0EeyUS.cjs.map +1 -0
  347. package/dist/layout-CJSlZlFL.js +267 -0
  348. package/dist/layout-CJSlZlFL.js.map +1 -0
  349. package/dist/layout-yxSlLybo.js +94 -0
  350. package/dist/layout-yxSlLybo.js.map +1 -0
  351. package/dist/layout.cjs +1 -2
  352. package/dist/layout.js +3 -9
  353. package/dist/lightbox-CpNMZHZW.cjs +202 -0
  354. package/dist/lightbox-CpNMZHZW.cjs.map +1 -0
  355. package/dist/lightbox-groqGmJH.js +678 -0
  356. package/dist/lightbox-groqGmJH.js.map +1 -0
  357. package/dist/lightbox.cjs +1 -2
  358. package/dist/lightbox.js +2 -8
  359. package/dist/list-CyHd0Zc2.cjs +40 -0
  360. package/dist/list-CyHd0Zc2.cjs.map +1 -0
  361. package/dist/list-DzkqT_r-.js +105 -0
  362. package/dist/list-DzkqT_r-.js.map +1 -0
  363. package/dist/list.cjs +1 -2
  364. package/dist/list.js +2 -7
  365. package/dist/litElement.mixin-BG6_-nYX.cjs +1 -0
  366. package/dist/litElement.mixin-BG6_-nYX.cjs.map +1 -0
  367. package/dist/litElement.mixin-Dm-4L8zL.js +12 -0
  368. package/dist/litElement.mixin-Dm-4L8zL.js.map +1 -0
  369. package/dist/magnetic-BZGFxAWG.js +47 -0
  370. package/dist/magnetic-BZGFxAWG.js.map +1 -0
  371. package/dist/magnetic-Dux4QwO4.cjs +1 -0
  372. package/dist/magnetic-Dux4QwO4.cjs.map +1 -0
  373. package/dist/mailbox-BcqnXYVP.js +1584 -0
  374. package/dist/mailbox-BcqnXYVP.js.map +1 -0
  375. package/dist/mailbox-C5eYTd7p.cjs +1142 -0
  376. package/dist/mailbox-C5eYTd7p.cjs.map +1 -0
  377. package/dist/mailbox.cjs +1 -2
  378. package/dist/mailbox.js +2 -9
  379. package/dist/map-BncheFt5.cjs +80 -0
  380. package/dist/map-BncheFt5.cjs.map +1 -0
  381. package/dist/map-C0o1PgLE.js +205 -0
  382. package/dist/map-C0o1PgLE.js.map +1 -0
  383. package/dist/map.cjs +1 -2
  384. package/dist/map.js +2 -5
  385. package/dist/menu-uwqlQbLd.js +51 -0
  386. package/dist/menu-uwqlQbLd.js.map +1 -0
  387. package/dist/menu-yXzwJZFf.cjs +23 -0
  388. package/dist/menu-yXzwJZFf.cjs.map +1 -0
  389. package/dist/menu.cjs +1 -2
  390. package/dist/menu.js +1 -2
  391. package/dist/mixins.cjs +1 -2
  392. package/dist/mixins.cjs.map +1 -1
  393. package/dist/mixins.js +59 -12
  394. package/dist/mixins.js.map +1 -1
  395. package/dist/nav-drawer.cjs +1 -2
  396. package/dist/nav-drawer.js +2 -12
  397. package/dist/navigation-bar.cjs +1 -2
  398. package/dist/navigation-bar.js +2 -6
  399. package/dist/navigation-rail.cjs +71 -2
  400. package/dist/navigation-rail.cjs.map +1 -1
  401. package/dist/navigation-rail.js +363 -5
  402. package/dist/navigation-rail.js.map +1 -1
  403. package/dist/notification-BjwTfLAl.cjs +23 -0
  404. package/dist/notification-BjwTfLAl.cjs.map +1 -0
  405. package/dist/notification-DzYT4deA.js +304 -0
  406. package/dist/notification-DzYT4deA.js.map +1 -0
  407. package/dist/notification.cjs +1 -2
  408. package/dist/notification.js +2 -9
  409. package/dist/option-BJsD3u2D.cjs +43 -0
  410. package/dist/option-BJsD3u2D.cjs.map +1 -0
  411. package/dist/option-JFHxgiYl.js +97 -0
  412. package/dist/option-JFHxgiYl.js.map +1 -0
  413. package/dist/option.cjs +1 -2
  414. package/dist/option.js +1 -2
  415. package/dist/overlay-stack-DQey9Qph.cjs +1 -0
  416. package/dist/overlay-stack-DQey9Qph.cjs.map +1 -0
  417. package/dist/overlay-stack-DT1SdaGW.js +39 -0
  418. package/dist/overlay-stack-DT1SdaGW.js.map +1 -0
  419. package/dist/page.cjs +20 -2
  420. package/dist/page.cjs.map +1 -1
  421. package/dist/page.js +71 -4
  422. package/dist/page.js.map +1 -1
  423. package/dist/progress-BUh5WBqx.js +128 -0
  424. package/dist/progress-BUh5WBqx.js.map +1 -0
  425. package/dist/progress-BoRmyGAa.cjs +51 -0
  426. package/dist/progress-BoRmyGAa.cjs.map +1 -0
  427. package/dist/progress.cjs +1 -2
  428. package/dist/progress.js +1 -2
  429. package/dist/provide-8MrDz_qX.js +107 -0
  430. package/dist/provide-8MrDz_qX.js.map +1 -0
  431. package/dist/provide-CDkxgjHb.cjs +1 -0
  432. package/dist/provide-CDkxgjHb.cjs.map +1 -0
  433. package/dist/qr-scanner.cjs +35 -2
  434. package/dist/qr-scanner.cjs.map +1 -1
  435. package/dist/qr-scanner.js +119 -4
  436. package/dist/qr-scanner.js.map +1 -1
  437. package/dist/radio-group-DbOWUPhi.js +105 -0
  438. package/dist/radio-group-DbOWUPhi.js.map +1 -0
  439. package/dist/radio-group-rhrvhB5X.cjs +40 -0
  440. package/dist/radio-group-rhrvhB5X.cjs.map +1 -0
  441. package/dist/radio-group.cjs +1 -2
  442. package/dist/radio-group.js +2 -6
  443. package/dist/range.cjs +62 -0
  444. package/dist/range.cjs.map +1 -0
  445. package/dist/range.js +85 -0
  446. package/dist/range.js.map +1 -0
  447. package/dist/reduced-motion-D-L12p7G.js +7 -0
  448. package/dist/reduced-motion-D-L12p7G.js.map +1 -0
  449. package/dist/reduced-motion-Ds05GPyz.cjs +1 -0
  450. package/dist/reduced-motion-Ds05GPyz.cjs.map +1 -0
  451. package/dist/rxjs-utils-BSjmI9-Q.js +32 -0
  452. package/dist/rxjs-utils-BSjmI9-Q.js.map +1 -0
  453. package/dist/rxjs-utils-DCsfzeap.cjs +1 -0
  454. package/dist/rxjs-utils-DCsfzeap.cjs.map +1 -0
  455. package/dist/rxjs-utils.cjs +1 -2
  456. package/dist/rxjs-utils.js +2 -14
  457. package/dist/scroll-BE9W9PF2.cjs +26 -0
  458. package/dist/scroll-BE9W9PF2.cjs.map +1 -0
  459. package/dist/scroll-qGks1R0k.js +112 -0
  460. package/dist/scroll-qGks1R0k.js.map +1 -0
  461. package/dist/search-C4dFHYbX.js +91 -0
  462. package/dist/search-C4dFHYbX.js.map +1 -0
  463. package/dist/search-Ds8tt7Et.cjs +1 -0
  464. package/dist/search-Ds8tt7Et.cjs.map +1 -0
  465. package/dist/select-D9sgBRjU.js +305 -0
  466. package/dist/select-D9sgBRjU.js.map +1 -0
  467. package/dist/select-DXU2kzg4.cjs +56 -0
  468. package/dist/select-DXU2kzg4.cjs.map +1 -0
  469. package/dist/select.cjs +1 -2
  470. package/dist/select.js +2 -5
  471. package/dist/sheet-CIxCCJ3H.js +168 -0
  472. package/dist/sheet-CIxCCJ3H.js.map +1 -0
  473. package/dist/sheet-CeX6BbNp.cjs +35 -0
  474. package/dist/sheet-CeX6BbNp.cjs.map +1 -0
  475. package/dist/sheet.cjs +1 -2
  476. package/dist/sheet.js +3 -7
  477. package/dist/sheet.service-CAB7weBc.js +86 -0
  478. package/dist/sheet.service-CAB7weBc.js.map +1 -0
  479. package/dist/sheet.service-DPAp7E3x.cjs +1 -0
  480. package/dist/sheet.service-DPAp7E3x.cjs.map +1 -0
  481. package/dist/slider.cjs +82 -2
  482. package/dist/slider.cjs.map +1 -1
  483. package/dist/slider.js +143 -5
  484. package/dist/slider.js.map +1 -1
  485. package/dist/sound.service-Bu3EQLv2.cjs +1 -0
  486. package/dist/sound.service-Bu3EQLv2.cjs.map +1 -0
  487. package/dist/sound.service-m3BrSfuH.js +2353 -0
  488. package/dist/sound.service-m3BrSfuH.js.map +1 -0
  489. package/dist/src-CbO5kJ2O.js +1244 -0
  490. package/dist/src-CbO5kJ2O.js.map +1 -0
  491. package/dist/src-SraDxEeg.cjs +269 -0
  492. package/dist/src-SraDxEeg.cjs.map +1 -0
  493. package/dist/steps.cjs +70 -2
  494. package/dist/steps.cjs.map +1 -1
  495. package/dist/steps.js +178 -7
  496. package/dist/steps.js.map +1 -1
  497. package/dist/store-CorvD3bT.cjs +1 -0
  498. package/dist/store-CorvD3bT.cjs.map +1 -0
  499. package/dist/store-DYqDLAvT.js +1654 -0
  500. package/dist/store-DYqDLAvT.js.map +1 -0
  501. package/dist/store.cjs +1 -2
  502. package/dist/store.js +2 -47
  503. package/dist/surface-DuH0pm2v.cjs +7 -0
  504. package/dist/surface-DuH0pm2v.cjs.map +1 -0
  505. package/dist/surface-eN_Jy2MJ.js +21 -0
  506. package/dist/surface-eN_Jy2MJ.js.map +1 -0
  507. package/dist/surface.cjs +1 -2
  508. package/dist/surface.js +2 -6
  509. package/dist/surface.mixin-CIXgN6iw.cjs +297 -0
  510. package/dist/surface.mixin-CIXgN6iw.cjs.map +1 -0
  511. package/dist/surface.mixin-D9jv1sKG.js +320 -0
  512. package/dist/surface.mixin-D9jv1sKG.js.map +1 -0
  513. package/dist/table-C9rRQJEB.cjs +63 -0
  514. package/dist/table-C9rRQJEB.cjs.map +1 -0
  515. package/dist/table-Dg_tUGB_.js +631 -0
  516. package/dist/table-Dg_tUGB_.js.map +1 -0
  517. package/dist/table.cjs +1 -2
  518. package/dist/table.js +2 -6
  519. package/dist/tabs-BbFC9omR.js +125 -0
  520. package/dist/tabs-BbFC9omR.js.map +1 -0
  521. package/dist/tabs-soTL-x4G.cjs +31 -0
  522. package/dist/tabs-soTL-x4G.cjs.map +1 -0
  523. package/dist/tabs.cjs +1 -2
  524. package/dist/tabs.js +1 -2
  525. package/dist/tailwind.mixin-BIVhjNvD.js +225 -0
  526. package/dist/tailwind.mixin-BIVhjNvD.js.map +1 -0
  527. package/dist/tailwind.mixin-DSuEu-y3.cjs +2 -0
  528. package/dist/tailwind.mixin-DSuEu-y3.cjs.map +1 -0
  529. package/dist/teleport.cjs +1 -2
  530. package/dist/teleport.js +2 -8
  531. package/dist/textarea-DaRUJ0ri.cjs +35 -0
  532. package/dist/textarea-DaRUJ0ri.cjs.map +1 -0
  533. package/dist/textarea-hChvHbNM.js +195 -0
  534. package/dist/textarea-hChvHbNM.js.map +1 -0
  535. package/dist/textarea.cjs +1 -2
  536. package/dist/textarea.js +1 -2
  537. package/dist/theme-B0M8Hlyo.js +4121 -0
  538. package/dist/theme-B0M8Hlyo.js.map +1 -0
  539. package/dist/theme-ZYH2MqX9.cjs +181 -0
  540. package/dist/theme-ZYH2MqX9.cjs.map +1 -0
  541. package/dist/theme-button-BtlX_Zgd.js +19 -0
  542. package/dist/theme-button-BtlX_Zgd.js.map +1 -0
  543. package/dist/theme-button-Dvqg-rE_.cjs +8 -0
  544. package/dist/theme-button-Dvqg-rE_.cjs.map +1 -0
  545. package/dist/theme-button.cjs +1 -2
  546. package/dist/theme-button.js +1 -2
  547. package/dist/theme.cjs +1 -2
  548. package/dist/theme.events-Cv7N4Toe.js +2 -0
  549. package/dist/theme.events-Cv7N4Toe.js.map +1 -0
  550. package/dist/theme.events-DM4H5F2d.cjs +1 -0
  551. package/dist/theme.events-DM4H5F2d.cjs.map +1 -0
  552. package/dist/theme.interface-CXloMUCw.js +276 -0
  553. package/dist/theme.interface-CXloMUCw.js.map +1 -0
  554. package/dist/theme.interface-Da23QAYb.cjs +1 -0
  555. package/dist/theme.interface-Da23QAYb.cjs.map +1 -0
  556. package/dist/theme.js +6 -21
  557. package/dist/theme.service-C_tjlqgy.cjs +1 -0
  558. package/dist/theme.service-C_tjlqgy.cjs.map +1 -0
  559. package/dist/theme.service-D9lEas89.js +108 -0
  560. package/dist/theme.service-D9lEas89.js.map +1 -0
  561. package/dist/tooltip.cjs +6 -2
  562. package/dist/tooltip.cjs.map +1 -1
  563. package/dist/tooltip.js +200 -5
  564. package/dist/tooltip.js.map +1 -1
  565. package/dist/tree.cjs +26 -2
  566. package/dist/tree.cjs.map +1 -1
  567. package/dist/tree.js +64 -4
  568. package/dist/tree.js.map +1 -1
  569. package/dist/tslib.es6-D7BIeDVB.cjs +1 -0
  570. package/dist/tslib.es6-D7BIeDVB.cjs.map +1 -0
  571. package/dist/tslib.es6-ErZEp3OO.js +7 -0
  572. package/dist/tslib.es6-ErZEp3OO.js.map +1 -0
  573. package/dist/types.cjs +1 -2
  574. package/dist/types.cjs.map +1 -1
  575. package/dist/types.js +4 -5
  576. package/dist/types.js.map +1 -1
  577. package/dist/typewriter-CCel8Nta.js +700 -0
  578. package/dist/typewriter-CCel8Nta.js.map +1 -0
  579. package/dist/typewriter-Cf9f2bdx.cjs +123 -0
  580. package/dist/typewriter-Cf9f2bdx.cjs.map +1 -0
  581. package/dist/typewriter.cjs +1 -2
  582. package/dist/typewriter.js +2 -5
  583. package/dist/typography.cjs +282 -2
  584. package/dist/typography.cjs.map +1 -1
  585. package/dist/typography.js +353 -4
  586. package/dist/typography.js.map +1 -1
  587. package/dist/utils-BcaKtQuA.cjs +1 -0
  588. package/dist/utils-BcaKtQuA.cjs.map +1 -0
  589. package/dist/utils-CoU7M2YS.js +259 -0
  590. package/dist/utils-CoU7M2YS.js.map +1 -0
  591. package/dist/utils.cjs +1 -2
  592. package/dist/utils.js +6 -9
  593. package/dist/window-B9_14c12.cjs +59 -0
  594. package/dist/window-B9_14c12.cjs.map +1 -0
  595. package/dist/window-CbgdwOZD.js +548 -0
  596. package/dist/window-CbgdwOZD.js.map +1 -0
  597. package/dist/window.cjs +1 -0
  598. package/dist/window.js +2 -0
  599. package/mixins/baseElement.ts +118 -1
  600. package/mixins/discovery.service.ts +162 -1
  601. package/mixins/formField.mixin.ts +13 -8
  602. package/mixins/index.ts +2 -0
  603. package/mixins/surface.mixin.ts +93 -0
  604. package/mixins/tailwind.css +331 -14
  605. package/package.json +32 -28
  606. package/src/CLAUDE.md +428 -0
  607. package/src/area/.excalidraw +357 -0
  608. package/src/area/area.component.ts +449 -0
  609. package/src/area/area.service.test.ts +1007 -0
  610. package/src/area/area.service.ts +748 -0
  611. package/src/area/ecrypt.ts +7 -0
  612. package/src/area/index.ts +7 -0
  613. package/src/area/lazy.ts +83 -0
  614. package/src/area/readme.md +338 -0
  615. package/src/area/route.component.ts +79 -0
  616. package/src/area/router-guide.md +360 -0
  617. package/src/area/router.types.ts +101 -0
  618. package/src/area/utils.ts +354 -0
  619. package/src/audio/emotional-sounds.ts +940 -0
  620. package/src/audio/index.ts +53 -0
  621. package/src/audio/sound.service.ts +1079 -0
  622. package/src/autocomplete/README.md +485 -0
  623. package/src/autocomplete/autocomplete.scss +24 -0
  624. package/src/autocomplete/autocomplete.ts +733 -0
  625. package/src/autocomplete/index.ts +1 -0
  626. package/src/avatar.ts +164 -0
  627. package/src/badge/badge.ts +286 -0
  628. package/src/badge/index.ts +1 -0
  629. package/src/boat/boat.ts +664 -0
  630. package/src/boat/index.ts +1 -0
  631. package/src/busy/busy.ts +39 -0
  632. package/src/busy/index.ts +2 -0
  633. package/src/busy/spinner.ts +165 -0
  634. package/src/button/button.ts +382 -0
  635. package/src/button/icon-button.ts +287 -0
  636. package/src/button/index.ts +2 -0
  637. package/src/card/actions.ts +28 -0
  638. package/src/card/card.ts +319 -0
  639. package/src/card/content.ts +24 -0
  640. package/src/card/index.ts +4 -0
  641. package/src/card/media.ts +77 -0
  642. package/src/charts/area-chart.ts +495 -0
  643. package/src/charts/index.ts +4 -0
  644. package/src/charts/pills.ts +350 -0
  645. package/src/charts/types.ts +66 -0
  646. package/src/charts/utils.ts +65 -0
  647. package/src/checkbox/checkbox.ts +122 -0
  648. package/src/checkbox/index.ts +1 -0
  649. package/src/chips/assist-chip.ts +261 -0
  650. package/src/chips/chips.ts +259 -0
  651. package/src/chips/filter-chip.ts +255 -0
  652. package/src/chips/index.ts +5 -0
  653. package/src/chips/input-chip.ts +408 -0
  654. package/src/chips/suggestion-chip.ts +266 -0
  655. package/src/code-highlight/code-highlight.ts +344 -0
  656. package/src/code-highlight/code-preview.ts +123 -0
  657. package/src/code-highlight/index.ts +3 -0
  658. package/src/components/form-elements/index.ts +1 -0
  659. package/src/components/form-elements/payment-card-form.ts +331 -0
  660. package/src/components/index.ts +1 -0
  661. package/src/connectivity/connectivity-status.ts +153 -0
  662. package/src/connectivity/index.ts +1 -0
  663. package/src/content-drawer/context.ts +13 -0
  664. package/src/content-drawer/drawer.service.ts +148 -0
  665. package/src/content-drawer/drawer.ts +183 -0
  666. package/src/content-drawer/index.ts +5 -0
  667. package/src/content-drawer/main.ts +83 -0
  668. package/src/content-drawer/readme.md +709 -0
  669. package/src/content-drawer/sheet.ts +180 -0
  670. package/src/date-range/date-range-dialog.ts +230 -0
  671. package/src/date-range/date-range-helpers.ts +135 -0
  672. package/src/date-range/date-range-presets.ts +220 -0
  673. package/src/date-range/date-range.ts +530 -0
  674. package/src/date-range/date-utils.ts +58 -0
  675. package/src/date-range/index.ts +2 -0
  676. package/src/date-range-inline/date-range-inline.ts +522 -0
  677. package/src/date-range-inline/index.ts +2 -0
  678. package/src/delay/delay.ts +136 -0
  679. package/src/delay/index.ts +1 -0
  680. package/src/details/details.ts +429 -0
  681. package/src/details/index.ts +1 -0
  682. package/src/dialog/dialog-base.mixin.ts +565 -0
  683. package/src/dialog/dialog-events.ts +17 -0
  684. package/src/dialog/dialog-service.ts +482 -0
  685. package/src/dialog/dialog.component.ts +394 -0
  686. package/src/dialog/index.ts +3 -0
  687. package/src/directives/animate-text.ts +551 -0
  688. package/src/directives/color.ts +41 -0
  689. package/src/directives/confirm-click.ts +350 -0
  690. package/src/directives/cursor-glow.ts +142 -0
  691. package/src/directives/cycle-text.ts +496 -0
  692. package/src/directives/depth-of-field.ts +83 -0
  693. package/src/directives/drag.ts +370 -0
  694. package/src/directives/gravity.ts +117 -0
  695. package/src/directives/index.ts +19 -0
  696. package/src/directives/intersect.ts +204 -0
  697. package/src/directives/layout.ts +261 -0
  698. package/src/directives/liquid.ts +150 -0
  699. package/src/directives/living-border.ts +166 -0
  700. package/src/directives/long-press.ts +150 -0
  701. package/src/directives/magnetic.ts +133 -0
  702. package/src/directives/nebula.ts +773 -0
  703. package/src/directives/reduced-motion.ts +30 -0
  704. package/src/directives/reveal.ts +158 -0
  705. package/src/directives/ripple.ts +102 -0
  706. package/src/directives/typewriter.ts +349 -0
  707. package/src/discovery/discovery.service.ts +210 -0
  708. package/src/discovery/index.ts +1 -0
  709. package/src/divider/divider.ts +100 -0
  710. package/src/divider/index.ts +1 -0
  711. package/src/dropdown/dropdown-component.ts +264 -0
  712. package/src/dropdown/dropdown-content.ts +108 -0
  713. package/src/dropdown/index.ts +2 -0
  714. package/src/expand/expand-root.component.ts +278 -0
  715. package/src/expand/expand.component.ts +287 -0
  716. package/src/expand/index.ts +2 -0
  717. package/src/extra/countries/countries.data.ts +196 -0
  718. package/src/extra/countries/countries.ts +107 -0
  719. package/src/extra/countries/index.ts +2 -0
  720. package/src/extra/index.ts +2 -0
  721. package/src/extra/timezone/index.ts +2 -0
  722. package/src/extra/timezone/timezone.ts +116 -0
  723. package/src/extra/timezone/timezones.data.ts +2546 -0
  724. package/src/float/float.ts +18 -0
  725. package/src/float/index.ts +1 -0
  726. package/src/form/form-v2.ts +268 -0
  727. package/src/form/form.ts +194 -0
  728. package/src/form/index.ts +2 -0
  729. package/src/icons/icon.ts +293 -0
  730. package/src/icons/index.ts +1 -0
  731. package/src/icons/readme.md +37 -0
  732. package/src/iframe/iframe.ts +98 -0
  733. package/src/iframe/index.ts +1 -0
  734. package/src/index.ts +69 -0
  735. package/src/input/index.ts +8 -0
  736. package/src/input/input.scss +211 -0
  737. package/src/input/input.ts +951 -0
  738. package/src/json/index.ts +1 -0
  739. package/src/json/json.ts +55 -0
  740. package/src/layout/flex/flex.scss +4 -0
  741. package/src/layout/flex/flex.ts +74 -0
  742. package/src/layout/flex/index.ts +1 -0
  743. package/src/layout/grid/.readme +79 -0
  744. package/src/layout/grid/grid.scss +5 -0
  745. package/src/layout/grid/grid.ts +121 -0
  746. package/src/layout/grid/index.ts +1 -0
  747. package/src/layout/index.ts +5 -0
  748. package/src/layout/layout.ts +122 -0
  749. package/src/layout/scroll/index.ts +1 -0
  750. package/src/layout/scroll/scroll.ts +351 -0
  751. package/src/layout/v2/flex.ts +243 -0
  752. package/src/layout/v2/grid.ts +93 -0
  753. package/src/layout/v2/index.ts +1 -0
  754. package/src/lightbox/flip-directive.ts +270 -0
  755. package/src/lightbox/index.ts +4 -0
  756. package/src/lightbox/lightbox-service.ts +378 -0
  757. package/src/lightbox/lightbox.directive.ts +256 -0
  758. package/src/lightbox/lightbox.ts +417 -0
  759. package/src/list/context.ts +3 -0
  760. package/src/list/index.ts +3 -0
  761. package/src/list/list-item.ts +94 -0
  762. package/src/list/list.ts +87 -0
  763. package/src/list/readme.md +62 -0
  764. package/src/mailbox/README.md +131 -0
  765. package/src/mailbox/email-editor.ts +1071 -0
  766. package/src/mailbox/email-layout-selector.ts +58 -0
  767. package/src/mailbox/email-recipients.ts +594 -0
  768. package/src/mailbox/email-template-picker.ts +296 -0
  769. package/src/mailbox/email-viewer.ts +715 -0
  770. package/src/mailbox/index.ts +31 -0
  771. package/src/mailbox/mailbox.ts +363 -0
  772. package/src/mailbox/types.ts +181 -0
  773. package/src/map/index.ts +1 -0
  774. package/src/map/map.ts +483 -0
  775. package/src/menu/index.ts +2 -0
  776. package/src/menu/menu-item.ts +26 -0
  777. package/src/menu/menu.ts +83 -0
  778. package/src/nav-drawer/$navbar.ts +51 -0
  779. package/src/nav-drawer/appbar.ts +26 -0
  780. package/src/nav-drawer/content.ts +32 -0
  781. package/src/nav-drawer/context.ts +6 -0
  782. package/src/nav-drawer/drawer.ts +128 -0
  783. package/src/nav-drawer/index.ts +6 -0
  784. package/src/nav-drawer/navbar.ts +191 -0
  785. package/src/navigation-bar/index.ts +2 -0
  786. package/src/navigation-bar/navigation-bar-item.ts +417 -0
  787. package/src/navigation-bar/navigation-bar.ts +482 -0
  788. package/src/navigation-rail/index.ts +2 -0
  789. package/src/navigation-rail/navigation-rail-item.ts +443 -0
  790. package/src/navigation-rail/navigation-rail.ts +492 -0
  791. package/src/notification/index.ts +6 -0
  792. package/src/notification/notification-service.ts +324 -0
  793. package/src/notification/notification.scss +117 -0
  794. package/src/notification/notification.ts +263 -0
  795. package/src/notification/notify.ts +207 -0
  796. package/src/notification/outlet.ts +16 -0
  797. package/src/option/index.ts +1 -0
  798. package/src/option/option.ts +180 -0
  799. package/src/page/index.ts +1 -0
  800. package/src/page/page.ts +135 -0
  801. package/src/progress/index.ts +1 -0
  802. package/src/progress/progress.ts +143 -0
  803. package/src/qr-scanner/index.ts +1 -0
  804. package/src/qr-scanner/qr-scanner.ts +240 -0
  805. package/src/radio-group/index.ts +2 -0
  806. package/src/radio-group/radio-button.ts +81 -0
  807. package/src/radio-group/radio-group.scss +4 -0
  808. package/src/radio-group/radio-group.ts +110 -0
  809. package/src/radio-group/readme.md +315 -0
  810. package/src/range/index.ts +1 -0
  811. package/src/range/range.ts +102 -0
  812. package/src/rxjs-utils/index.ts +6 -0
  813. package/src/rxjs-utils/mutation-observer.ts +22 -0
  814. package/src/rxjs-utils/waitForElement.ts +33 -0
  815. package/src/rxjs-utils/waitForElementAll.ts +34 -0
  816. package/src/rxjs-utils/waitForElements.ts +40 -0
  817. package/src/rxjs-utils/waitForElementsAll.ts +42 -0
  818. package/src/rxjs-utils/waitUntil.ts +16 -0
  819. package/src/select/README.md +405 -0
  820. package/src/select/index.ts +2 -0
  821. package/src/select/select.ts +766 -0
  822. package/src/sheet/hook.ts +40 -0
  823. package/src/sheet/index.ts +2 -0
  824. package/src/sheet/sheet.service.ts +235 -0
  825. package/src/sheet/sheet.ts +236 -0
  826. package/src/slider/index.ts +2 -0
  827. package/src/slider/slide.ts +107 -0
  828. package/src/slider/slider.ts +164 -0
  829. package/src/steps/index.ts +3 -0
  830. package/src/steps/schmancy-step.ts +213 -0
  831. package/src/steps/schmancy-steps-container.ts +109 -0
  832. package/src/steps/steps.context.ts +23 -0
  833. package/src/store/context-array.ts +358 -0
  834. package/src/store/context-collection.ts +218 -0
  835. package/src/store/context-create.ts +284 -0
  836. package/src/store/context-object.ts +298 -0
  837. package/src/store/filter-directive.ts +614 -0
  838. package/src/store/immer-integration.ts +99 -0
  839. package/src/store/index.ts +10 -0
  840. package/src/store/selector-hook.ts +259 -0
  841. package/src/store/selectors.ts +289 -0
  842. package/src/store/storage-manager.ts +269 -0
  843. package/src/store/store.class.ts +239 -0
  844. package/src/store/types.ts +327 -0
  845. package/src/surface/context.ts +3 -0
  846. package/src/surface/index.ts +1 -0
  847. package/src/surface/surface.styles.ts +334 -0
  848. package/src/surface/surface.ts +59 -0
  849. package/src/table/index.ts +2 -0
  850. package/src/table/row.ts +60 -0
  851. package/src/table/table.ts +266 -0
  852. package/src/tabs/Readme.md +397 -0
  853. package/src/tabs/context.ts +5 -0
  854. package/src/tabs/index.ts +4 -0
  855. package/src/tabs/tab.ts +39 -0
  856. package/src/tabs/tabs-compatibility.ts +20 -0
  857. package/src/tabs/tabs-group.ts +184 -0
  858. package/src/teleport/.excalidraw +2511 -0
  859. package/src/teleport/index.ts +2 -0
  860. package/src/teleport/readme.md +91 -0
  861. package/src/teleport/teleport.component.ts +132 -0
  862. package/src/teleport/teleport.service.ts +139 -0
  863. package/src/teleport/watcher.ts +20 -0
  864. package/src/textarea/index.ts +1 -0
  865. package/src/textarea/textarea.scss +54 -0
  866. package/src/textarea/textarea.ts +432 -0
  867. package/src/theme/context.ts +28 -0
  868. package/src/theme/index.ts +17 -0
  869. package/src/theme/theme-audio-player.ts +470 -0
  870. package/src/theme/theme-controller-boat.ts +49 -0
  871. package/src/theme/theme-controller-example.md +152 -0
  872. package/src/theme/theme-controller.ts +205 -0
  873. package/src/theme/theme.component.ts +305 -0
  874. package/src/theme/theme.events.ts +59 -0
  875. package/src/theme/theme.format.ts +417 -0
  876. package/src/theme/theme.interface.ts +399 -0
  877. package/src/theme/theme.service.ts +520 -0
  878. package/src/theme/theme.style.css +619 -0
  879. package/src/theme-button/index.ts +1 -0
  880. package/src/theme-button/theme-button.ts +35 -0
  881. package/src/tooltip/index.ts +2 -0
  882. package/src/tooltip/tooltip.directive.ts +277 -0
  883. package/src/tooltip/tooltip.ts +216 -0
  884. package/src/tree/README.md +59 -0
  885. package/src/tree/index.ts +1 -0
  886. package/src/tree/tree.ts +132 -0
  887. package/src/types/events.ts +5 -0
  888. package/src/types/index.ts +3 -0
  889. package/src/types/mood-audio.types.ts +220 -0
  890. package/src/types/surface.ts +52 -0
  891. package/src/typewriter/IMPROVEMENTS.md +174 -0
  892. package/src/typewriter/QUICK_REFERENCE.md +166 -0
  893. package/src/typewriter/index.ts +1 -0
  894. package/src/typewriter/test-typewriter.html +97 -0
  895. package/src/typewriter/typewriter.ts +376 -0
  896. package/src/typography/index.ts +1 -0
  897. package/src/typography/typography.ts +448 -0
  898. package/src/utils/animation.ts +418 -0
  899. package/src/utils/hashContent.ts +12 -0
  900. package/src/utils/index.ts +6 -0
  901. package/src/utils/intersection.ts +22 -0
  902. package/src/utils/number.ts +529 -0
  903. package/src/utils/overlay-stack.ts +101 -0
  904. package/src/utils/search.ts +322 -0
  905. package/src/vite-env.d.ts +2 -0
  906. package/src/window/index.ts +10 -0
  907. package/src/window/window-manager.ts +204 -0
  908. package/src/window/window-position.ts +136 -0
  909. package/src/window/window-registry.ts +34 -0
  910. package/src/window/window.ts +724 -0
  911. package/types/mixins/baseElement.d.ts +12 -0
  912. package/types/mixins/discovery.service.d.ts +72 -0
  913. package/types/mixins/index.d.ts +2 -0
  914. package/types/mixins/surface.mixin.d.ts +39 -0
  915. package/types/src/area/area.service.d.ts +2 -0
  916. package/types/src/badge/badge.d.ts +1 -1
  917. package/types/src/boat/boat.d.ts +40 -33
  918. package/types/src/button/icon-button.d.ts +10 -0
  919. package/types/src/chips/filter-chip.d.ts +0 -12
  920. package/types/src/connectivity/connectivity-status.d.ts +25 -0
  921. package/types/src/connectivity/index.d.ts +1 -0
  922. package/types/src/content-drawer/drawer.service.d.ts +3 -0
  923. package/types/src/date-range/date-range.d.ts +2 -0
  924. package/types/src/details/details.d.ts +26 -2
  925. package/types/src/dialog/dialog-base.mixin.d.ts +7 -3
  926. package/types/src/dialog/dialog-service.d.ts +27 -1
  927. package/types/src/dialog/dialog.component.d.ts +35 -1
  928. package/types/src/directives/animate-text.d.ts +67 -0
  929. package/types/src/directives/color.d.ts +2 -3
  930. package/types/src/directives/confirm-click.d.ts +38 -0
  931. package/types/src/directives/cursor-glow.d.ts +38 -0
  932. package/types/src/directives/cycle-text.d.ts +44 -0
  933. package/types/src/directives/depth-of-field.d.ts +38 -0
  934. package/types/src/directives/drag.d.ts +8 -8
  935. package/types/src/directives/gravity.d.ts +40 -0
  936. package/types/src/directives/index.d.ts +16 -2
  937. package/types/src/directives/intersect.d.ts +60 -0
  938. package/types/src/directives/layout.d.ts +62 -0
  939. package/types/src/directives/liquid.d.ts +38 -0
  940. package/types/src/directives/living-border.d.ts +39 -0
  941. package/types/src/directives/long-press.d.ts +38 -0
  942. package/types/src/directives/magnetic.d.ts +35 -0
  943. package/types/src/directives/nebula.d.ts +80 -0
  944. package/types/src/directives/reduced-motion.d.ts +2 -0
  945. package/types/src/directives/reveal.d.ts +54 -0
  946. package/types/src/directives/ripple.d.ts +15 -5
  947. package/types/src/directives/typewriter.d.ts +50 -0
  948. package/types/src/discovery/discovery.service.d.ts +72 -0
  949. package/types/src/expand/expand-root.component.d.ts +30 -0
  950. package/types/src/expand/expand.component.d.ts +38 -0
  951. package/types/src/expand/index.d.ts +2 -0
  952. package/types/src/float/float.d.ts +14 -0
  953. package/types/src/float/index.d.ts +1 -0
  954. package/types/src/icons/icon.d.ts +14 -0
  955. package/types/src/iframe/iframe.d.ts +37 -0
  956. package/types/src/iframe/index.d.ts +1 -0
  957. package/types/src/index.d.ts +6 -1
  958. package/types/src/input/index.d.ts +1 -1
  959. package/types/src/layout/scroll/scroll.d.ts +11 -0
  960. package/types/src/lightbox/lightbox.d.ts +1 -0
  961. package/types/src/mailbox/email-recipients.d.ts +2 -2
  962. package/types/src/mailbox/types.d.ts +1 -1
  963. package/types/src/navigation-bar/navigation-bar.d.ts +17 -0
  964. package/types/src/notification/notification.d.ts +1 -0
  965. package/types/src/page/page.d.ts +6 -0
  966. package/types/src/range/index.d.ts +1 -0
  967. package/types/src/range/range.d.ts +25 -0
  968. package/types/src/sheet/sheet.d.ts +0 -1
  969. package/types/src/steps/schmancy-steps-container.d.ts +8 -6
  970. package/types/src/surface/surface.d.ts +4 -27
  971. package/types/src/surface/surface.styles.d.ts +31 -0
  972. package/types/src/tabs/tab.d.ts +1 -0
  973. package/types/src/textarea/textarea.d.ts +3 -2
  974. package/types/src/theme/context.d.ts +2 -282
  975. package/types/src/theme/theme.component.d.ts +9 -1
  976. package/types/src/theme/theme.format.d.ts +1 -1
  977. package/types/src/theme/theme.interface.d.ts +8 -1
  978. package/types/src/theme/theme.service.d.ts +20 -282
  979. package/types/src/types/surface.d.ts +27 -1
  980. package/types/src/typography/typography.d.ts +17 -3
  981. package/types/src/utils/animation.d.ts +254 -0
  982. package/types/src/utils/index.d.ts +2 -0
  983. package/types/src/utils/number.d.ts +18 -2
  984. package/types/src/utils/overlay-stack.d.ts +54 -0
  985. package/types/src/window/index.d.ts +3 -0
  986. package/types/src/window/window-manager.d.ts +49 -0
  987. package/types/src/window/window-position.d.ts +64 -0
  988. package/types/src/window/window-registry.d.ts +28 -0
  989. package/types/src/window/window.d.ts +67 -0
  990. package/ai/animated-text.md +0 -116
  991. package/ai/component-relationships.md +0 -93
  992. package/ai/context.md +0 -572
  993. package/ai/countries.md +0 -271
  994. package/ai/index.md +0 -112
  995. package/ai/navigation-bar-item.md +0 -259
  996. package/ai/payment-card-form.md +0 -242
  997. package/ai/spinner.md +0 -165
  998. package/ai/template.md +0 -144
  999. package/ai/timezone.md +0 -276
  1000. package/dist/_commonjsHelpers-Dw9sPFZy.js +0 -7
  1001. package/dist/_commonjsHelpers-Dw9sPFZy.js.map +0 -1
  1002. package/dist/_commonjsHelpers-k2hpEU-q.cjs +0 -2
  1003. package/dist/_commonjsHelpers-k2hpEU-q.cjs.map +0 -1
  1004. package/dist/ai/animated-text.md +0 -116
  1005. package/dist/ai/component-relationships.md +0 -93
  1006. package/dist/ai/context.md +0 -572
  1007. package/dist/ai/countries.md +0 -271
  1008. package/dist/ai/index.md +0 -112
  1009. package/dist/ai/navigation-bar-item.md +0 -259
  1010. package/dist/ai/payment-card-form.md +0 -242
  1011. package/dist/ai/spinner.md +0 -165
  1012. package/dist/ai/template.md +0 -144
  1013. package/dist/ai/timezone.md +0 -276
  1014. package/dist/animated-text-B3DQRJBy.cjs +0 -37
  1015. package/dist/animated-text-B3DQRJBy.cjs.map +0 -1
  1016. package/dist/animated-text-BAj4-6hE.js +0 -76
  1017. package/dist/animated-text-BAj4-6hE.js.map +0 -1
  1018. package/dist/animated-text.cjs +0 -2
  1019. package/dist/animated-text.cjs.map +0 -1
  1020. package/dist/animated-text.js +0 -2
  1021. package/dist/animated-text.js.map +0 -1
  1022. package/dist/area.cjs.map +0 -1
  1023. package/dist/area.component-CP4DZ0d8.js +0 -330
  1024. package/dist/area.component-CP4DZ0d8.js.map +0 -1
  1025. package/dist/area.component-ChxSLt16.cjs +0 -12
  1026. package/dist/area.component-ChxSLt16.cjs.map +0 -1
  1027. package/dist/area.js.map +0 -1
  1028. package/dist/audio.cjs.map +0 -1
  1029. package/dist/audio.js.map +0 -1
  1030. package/dist/autocomplete-CAaVSg4g.cjs +0 -112
  1031. package/dist/autocomplete-CAaVSg4g.cjs.map +0 -1
  1032. package/dist/autocomplete-CGbACUYd.js +0 -333
  1033. package/dist/autocomplete-CGbACUYd.js.map +0 -1
  1034. package/dist/autocomplete.cjs.map +0 -1
  1035. package/dist/autocomplete.js.map +0 -1
  1036. package/dist/avatar-nWOZXEsW.cjs +0 -273
  1037. package/dist/avatar-nWOZXEsW.cjs.map +0 -1
  1038. package/dist/avatar-rLCF6MSI.js +0 -895
  1039. package/dist/avatar-rLCF6MSI.js.map +0 -1
  1040. package/dist/badge.cjs.map +0 -1
  1041. package/dist/badge.js.map +0 -1
  1042. package/dist/boat-Ckt9v__d.js +0 -301
  1043. package/dist/boat-Ckt9v__d.js.map +0 -1
  1044. package/dist/boat-yNAZ2LLB.cjs +0 -97
  1045. package/dist/boat-yNAZ2LLB.cjs.map +0 -1
  1046. package/dist/boat.cjs.map +0 -1
  1047. package/dist/boat.js.map +0 -1
  1048. package/dist/busy.cjs.map +0 -1
  1049. package/dist/busy.js.map +0 -1
  1050. package/dist/card.cjs.map +0 -1
  1051. package/dist/card.js.map +0 -1
  1052. package/dist/checkbox-BnAlpsJN.cjs +0 -40
  1053. package/dist/checkbox-BnAlpsJN.cjs.map +0 -1
  1054. package/dist/checkbox-D22yfGe3.js +0 -526
  1055. package/dist/checkbox-D22yfGe3.js.map +0 -1
  1056. package/dist/checkbox.cjs.map +0 -1
  1057. package/dist/checkbox.js.map +0 -1
  1058. package/dist/chips.cjs.map +0 -1
  1059. package/dist/chips.js.map +0 -1
  1060. package/dist/code-highlight.cjs.map +0 -1
  1061. package/dist/code-highlight.js.map +0 -1
  1062. package/dist/code-preview-DPlQayFd.js +0 -967
  1063. package/dist/code-preview-DPlQayFd.js.map +0 -1
  1064. package/dist/code-preview-jPnX60FF.cjs +0 -193
  1065. package/dist/code-preview-jPnX60FF.cjs.map +0 -1
  1066. package/dist/components.cjs.map +0 -1
  1067. package/dist/components.js.map +0 -1
  1068. package/dist/consume-5D1qfVWM.js +0 -38
  1069. package/dist/consume-5D1qfVWM.js.map +0 -1
  1070. package/dist/consume-edta5ng5.cjs +0 -2
  1071. package/dist/consume-edta5ng5.cjs.map +0 -1
  1072. package/dist/content-drawer.cjs.map +0 -1
  1073. package/dist/content-drawer.js.map +0 -1
  1074. package/dist/context-create-B_S-sD5B.js +0 -1107
  1075. package/dist/context-create-B_S-sD5B.js.map +0 -1
  1076. package/dist/context-create-DTybDbZp.cjs +0 -2
  1077. package/dist/context-create-DTybDbZp.cjs.map +0 -1
  1078. package/dist/date-range-GFm5NG33.js +0 -639
  1079. package/dist/date-range-GFm5NG33.js.map +0 -1
  1080. package/dist/date-range-inline-CgX2o0FP.cjs +0 -44
  1081. package/dist/date-range-inline-CgX2o0FP.cjs.map +0 -1
  1082. package/dist/date-range-inline-DTQLESAZ.js +0 -197
  1083. package/dist/date-range-inline-DTQLESAZ.js.map +0 -1
  1084. package/dist/date-range-inline.cjs.map +0 -1
  1085. package/dist/date-range-inline.js.map +0 -1
  1086. package/dist/date-range-ug3B9CFT.cjs +0 -119
  1087. package/dist/date-range-ug3B9CFT.cjs.map +0 -1
  1088. package/dist/date-range.cjs.map +0 -1
  1089. package/dist/date-range.js.map +0 -1
  1090. package/dist/delay-CWtBL0VD.cjs +0 -10
  1091. package/dist/delay-CWtBL0VD.cjs.map +0 -1
  1092. package/dist/delay-DEe1CmHc.js +0 -288
  1093. package/dist/delay-DEe1CmHc.js.map +0 -1
  1094. package/dist/delay.cjs.map +0 -1
  1095. package/dist/delay.js.map +0 -1
  1096. package/dist/details-D-LXW23W.js +0 -100
  1097. package/dist/details-D-LXW23W.js.map +0 -1
  1098. package/dist/details-DVke77dU.cjs +0 -55
  1099. package/dist/details-DVke77dU.cjs.map +0 -1
  1100. package/dist/details.cjs.map +0 -1
  1101. package/dist/details.js.map +0 -1
  1102. package/dist/dialog-service-C86xTS8q.cjs +0 -2
  1103. package/dist/dialog-service-C86xTS8q.cjs.map +0 -1
  1104. package/dist/dialog-service-D9E3jLAR.js +0 -118
  1105. package/dist/dialog-service-D9E3jLAR.js.map +0 -1
  1106. package/dist/dialog.component-BM0D-hK9.cjs +0 -48
  1107. package/dist/dialog.component-BM0D-hK9.cjs.map +0 -1
  1108. package/dist/dialog.component-a7FlKhGD.js +0 -145
  1109. package/dist/dialog.component-a7FlKhGD.js.map +0 -1
  1110. package/dist/discovery.service-BbYjU5x8.js +0 -21
  1111. package/dist/discovery.service-BbYjU5x8.js.map +0 -1
  1112. package/dist/discovery.service-BpGCuXPd.cjs +0 -2
  1113. package/dist/discovery.service-BpGCuXPd.cjs.map +0 -1
  1114. package/dist/divider-CzTpxOqt.js +0 -84
  1115. package/dist/divider-CzTpxOqt.js.map +0 -1
  1116. package/dist/divider-D8KStUhN.cjs +0 -58
  1117. package/dist/divider-D8KStUhN.cjs.map +0 -1
  1118. package/dist/divider.cjs.map +0 -1
  1119. package/dist/divider.js.map +0 -1
  1120. package/dist/dropdown-content-CngZN3vv.cjs +0 -58
  1121. package/dist/dropdown-content-CngZN3vv.cjs.map +0 -1
  1122. package/dist/dropdown-content-DCn-g0-f.js +0 -147
  1123. package/dist/dropdown-content-DCn-g0-f.js.map +0 -1
  1124. package/dist/email-recipients-BhntMZMf.cjs +0 -1173
  1125. package/dist/email-recipients-BhntMZMf.cjs.map +0 -1
  1126. package/dist/email-recipients-BzjAKNJ0.js +0 -1733
  1127. package/dist/email-recipients-BzjAKNJ0.js.map +0 -1
  1128. package/dist/emotional-sounds-BRnFhww6.js +0 -234
  1129. package/dist/emotional-sounds-BRnFhww6.js.map +0 -1
  1130. package/dist/emotional-sounds-DVGhmoZf.cjs +0 -2
  1131. package/dist/emotional-sounds-DVGhmoZf.cjs.map +0 -1
  1132. package/dist/extra.cjs.map +0 -1
  1133. package/dist/extra.js.map +0 -1
  1134. package/dist/flex-5dR48zie.js +0 -183
  1135. package/dist/flex-5dR48zie.js.map +0 -1
  1136. package/dist/flex-oHl2EfYB.cjs +0 -18
  1137. package/dist/flex-oHl2EfYB.cjs.map +0 -1
  1138. package/dist/flow-D0e7hGXO.cjs +0 -2
  1139. package/dist/flow-D0e7hGXO.cjs.map +0 -1
  1140. package/dist/flow-DXYqC9OA.js +0 -340
  1141. package/dist/flow-DXYqC9OA.js.map +0 -1
  1142. package/dist/form-BlPiAPt7.cjs +0 -2
  1143. package/dist/form-BlPiAPt7.cjs.map +0 -1
  1144. package/dist/form-BxVM6JTn.js +0 -141
  1145. package/dist/form-BxVM6JTn.js.map +0 -1
  1146. package/dist/form.cjs.map +0 -1
  1147. package/dist/form.js.map +0 -1
  1148. package/dist/formField.mixin-BCGA7Ea3.js +0 -48
  1149. package/dist/formField.mixin-BCGA7Ea3.js.map +0 -1
  1150. package/dist/formField.mixin-BfJMifU9.cjs +0 -2
  1151. package/dist/formField.mixin-BfJMifU9.cjs.map +0 -1
  1152. package/dist/height-CfECBO2j.js +0 -44
  1153. package/dist/height-CfECBO2j.js.map +0 -1
  1154. package/dist/height-Z70qJYJK.cjs +0 -2
  1155. package/dist/height-Z70qJYJK.cjs.map +0 -1
  1156. package/dist/icon-DHEXr3c-.cjs +0 -49
  1157. package/dist/icon-DHEXr3c-.cjs.map +0 -1
  1158. package/dist/icon-DYpLoegR.js +0 -84
  1159. package/dist/icon-DYpLoegR.js.map +0 -1
  1160. package/dist/icon-button-CmZBLHWC.js +0 -164
  1161. package/dist/icon-button-CmZBLHWC.js.map +0 -1
  1162. package/dist/icon-button-IbSX8C98.cjs +0 -70
  1163. package/dist/icon-button-IbSX8C98.cjs.map +0 -1
  1164. package/dist/icons.cjs.map +0 -1
  1165. package/dist/icons.js.map +0 -1
  1166. package/dist/index-CCi1otmh.cjs +0 -2
  1167. package/dist/index-CCi1otmh.cjs.map +0 -1
  1168. package/dist/index-CW6PhEkx.js +0 -17
  1169. package/dist/index-CW6PhEkx.js.map +0 -1
  1170. package/dist/index.cjs.map +0 -1
  1171. package/dist/index.js.map +0 -1
  1172. package/dist/input-BByjYlgl.cjs +0 -51
  1173. package/dist/input-BByjYlgl.cjs.map +0 -1
  1174. package/dist/input-D0cQ9DOY.js +0 -237
  1175. package/dist/input-D0cQ9DOY.js.map +0 -1
  1176. package/dist/input-chip-B5ErXgCB.js +0 -206
  1177. package/dist/input-chip-B5ErXgCB.js.map +0 -1
  1178. package/dist/input-chip-DkWaTciP.cjs +0 -147
  1179. package/dist/input-chip-DkWaTciP.cjs.map +0 -1
  1180. package/dist/input.cjs.map +0 -1
  1181. package/dist/input.js.map +0 -1
  1182. package/dist/intersection-CJxzz8c-.js +0 -15
  1183. package/dist/intersection-CJxzz8c-.js.map +0 -1
  1184. package/dist/intersection-CVvaDv96.cjs +0 -2
  1185. package/dist/intersection-CVvaDv96.cjs.map +0 -1
  1186. package/dist/json-BZVe74np.cjs +0 -12
  1187. package/dist/json-BZVe74np.cjs.map +0 -1
  1188. package/dist/json-PKewOWuJ.js +0 -51
  1189. package/dist/json-PKewOWuJ.js.map +0 -1
  1190. package/dist/layout.cjs.map +0 -1
  1191. package/dist/layout.js.map +0 -1
  1192. package/dist/lightbox-service-D-0JtxB1.cjs +0 -202
  1193. package/dist/lightbox-service-D-0JtxB1.cjs.map +0 -1
  1194. package/dist/lightbox-service-DZMnb1eU.js +0 -458
  1195. package/dist/lightbox-service-DZMnb1eU.js.map +0 -1
  1196. package/dist/lightbox.cjs.map +0 -1
  1197. package/dist/lightbox.js.map +0 -1
  1198. package/dist/list-B_2m7l3g.cjs +0 -17
  1199. package/dist/list-B_2m7l3g.cjs.map +0 -1
  1200. package/dist/list-CW56LV-v.js +0 -69
  1201. package/dist/list-CW56LV-v.js.map +0 -1
  1202. package/dist/list.cjs.map +0 -1
  1203. package/dist/list.js.map +0 -1
  1204. package/dist/litElement.mixin-CrpeGpZ7.cjs +0 -2
  1205. package/dist/litElement.mixin-CrpeGpZ7.cjs.map +0 -1
  1206. package/dist/litElement.mixin-DHZXtvYq.js +0 -15
  1207. package/dist/litElement.mixin-DHZXtvYq.js.map +0 -1
  1208. package/dist/mailbox.cjs.map +0 -1
  1209. package/dist/mailbox.js.map +0 -1
  1210. package/dist/map-2Hl60a0A.js +0 -175
  1211. package/dist/map-2Hl60a0A.js.map +0 -1
  1212. package/dist/map-DyPS9G7M.cjs +0 -81
  1213. package/dist/map-DyPS9G7M.cjs.map +0 -1
  1214. package/dist/map.cjs.map +0 -1
  1215. package/dist/map.js.map +0 -1
  1216. package/dist/media-CS8HpKnK.cjs +0 -152
  1217. package/dist/media-CS8HpKnK.cjs.map +0 -1
  1218. package/dist/media-DtWbcRxL.js +0 -244
  1219. package/dist/media-DtWbcRxL.js.map +0 -1
  1220. package/dist/menu-Caju5-zd.js +0 -60
  1221. package/dist/menu-Caju5-zd.js.map +0 -1
  1222. package/dist/menu-rX5RPAI2.cjs +0 -24
  1223. package/dist/menu-rX5RPAI2.cjs.map +0 -1
  1224. package/dist/menu.cjs.map +0 -1
  1225. package/dist/menu.js.map +0 -1
  1226. package/dist/nav-drawer.cjs.map +0 -1
  1227. package/dist/nav-drawer.js.map +0 -1
  1228. package/dist/navigation-bar.cjs.map +0 -1
  1229. package/dist/navigation-bar.js.map +0 -1
  1230. package/dist/navigation-rail-Ctketq5a.js +0 -256
  1231. package/dist/navigation-rail-Ctketq5a.js.map +0 -1
  1232. package/dist/navigation-rail-DC9_oSIM.cjs +0 -79
  1233. package/dist/navigation-rail-DC9_oSIM.cjs.map +0 -1
  1234. package/dist/notification-service-CUlfXqmj.js +0 -155
  1235. package/dist/notification-service-CUlfXqmj.js.map +0 -1
  1236. package/dist/notification-service-DknbpqTt.cjs +0 -19
  1237. package/dist/notification-service-DknbpqTt.cjs.map +0 -1
  1238. package/dist/notification.cjs.map +0 -1
  1239. package/dist/notification.js.map +0 -1
  1240. package/dist/notify-DJSOWTxv.js +0 -35
  1241. package/dist/notify-DJSOWTxv.js.map +0 -1
  1242. package/dist/notify-DickIEHW.cjs +0 -2
  1243. package/dist/notify-DickIEHW.cjs.map +0 -1
  1244. package/dist/number-B7aCRYnH.cjs +0 -2
  1245. package/dist/number-B7aCRYnH.cjs.map +0 -1
  1246. package/dist/number-BhTiptLA.js +0 -99
  1247. package/dist/number-BhTiptLA.js.map +0 -1
  1248. package/dist/option-Bng41-rY.js +0 -77
  1249. package/dist/option-Bng41-rY.js.map +0 -1
  1250. package/dist/option-DYT5Rkgy.cjs +0 -44
  1251. package/dist/option-DYT5Rkgy.cjs.map +0 -1
  1252. package/dist/option.cjs.map +0 -1
  1253. package/dist/option.js.map +0 -1
  1254. package/dist/page-BLn9gtSd.cjs +0 -20
  1255. package/dist/page-BLn9gtSd.cjs.map +0 -1
  1256. package/dist/page-D-ROcQDd.js +0 -48
  1257. package/dist/page-D-ROcQDd.js.map +0 -1
  1258. package/dist/payment-card-form-5UtfWzoW.cjs +0 -74
  1259. package/dist/payment-card-form-5UtfWzoW.cjs.map +0 -1
  1260. package/dist/payment-card-form-BJa4RgF2.js +0 -515
  1261. package/dist/payment-card-form-BJa4RgF2.js.map +0 -1
  1262. package/dist/pills-BS5rZ6C3.js +0 -346
  1263. package/dist/pills-BS5rZ6C3.js.map +0 -1
  1264. package/dist/pills-Blf7IAeq.cjs +0 -113
  1265. package/dist/pills-Blf7IAeq.cjs.map +0 -1
  1266. package/dist/progress-DlhYniW_.cjs +0 -35
  1267. package/dist/progress-DlhYniW_.cjs.map +0 -1
  1268. package/dist/progress-yTIX6EqC.js +0 -56
  1269. package/dist/progress-yTIX6EqC.js.map +0 -1
  1270. package/dist/progress.cjs.map +0 -1
  1271. package/dist/progress.js.map +0 -1
  1272. package/dist/provide-BxZ2kn_p.cjs +0 -2
  1273. package/dist/provide-BxZ2kn_p.cjs.map +0 -1
  1274. package/dist/provide-tcktw8xB.js +0 -100
  1275. package/dist/provide-tcktw8xB.js.map +0 -1
  1276. package/dist/qr-scanner-DOs7uNS_.cjs +0 -29
  1277. package/dist/qr-scanner-DOs7uNS_.cjs.map +0 -1
  1278. package/dist/qr-scanner-DjZ8mgHV.js +0 -743
  1279. package/dist/qr-scanner-DjZ8mgHV.js.map +0 -1
  1280. package/dist/radio-button-N_PrrxKB.cjs +0 -41
  1281. package/dist/radio-button-N_PrrxKB.cjs.map +0 -1
  1282. package/dist/radio-button-me3SRHGu.js +0 -115
  1283. package/dist/radio-button-me3SRHGu.js.map +0 -1
  1284. package/dist/radio-group.cjs.map +0 -1
  1285. package/dist/radio-group.js.map +0 -1
  1286. package/dist/ripple-BgJXbNSP.js +0 -124
  1287. package/dist/ripple-BgJXbNSP.js.map +0 -1
  1288. package/dist/ripple-x6sTX02K.cjs +0 -16
  1289. package/dist/ripple-x6sTX02K.cjs.map +0 -1
  1290. package/dist/rxjs-utils.cjs.map +0 -1
  1291. package/dist/rxjs-utils.js.map +0 -1
  1292. package/dist/schmancy-steps-container-J6P-NNNj.js +0 -156
  1293. package/dist/schmancy-steps-container-J6P-NNNj.js.map +0 -1
  1294. package/dist/schmancy-steps-container-T57BKMzi.cjs +0 -70
  1295. package/dist/schmancy-steps-container-T57BKMzi.cjs.map +0 -1
  1296. package/dist/scroll-C_gfUgjn.js +0 -87
  1297. package/dist/scroll-C_gfUgjn.js.map +0 -1
  1298. package/dist/scroll-CecsowP7.cjs +0 -27
  1299. package/dist/scroll-CecsowP7.cjs.map +0 -1
  1300. package/dist/search-B1s7thB0.cjs +0 -2
  1301. package/dist/search-B1s7thB0.cjs.map +0 -1
  1302. package/dist/search-DxxnLa5u.js +0 -95
  1303. package/dist/search-DxxnLa5u.js.map +0 -1
  1304. package/dist/select-BBA0gBHf.js +0 -280
  1305. package/dist/select-BBA0gBHf.js.map +0 -1
  1306. package/dist/select-D9oCjv7N.cjs +0 -57
  1307. package/dist/select-D9oCjv7N.cjs.map +0 -1
  1308. package/dist/select.cjs.map +0 -1
  1309. package/dist/select.js.map +0 -1
  1310. package/dist/selector-hook-9w2auh2O.cjs +0 -2
  1311. package/dist/selector-hook-9w2auh2O.cjs.map +0 -1
  1312. package/dist/selector-hook-CHV4kDMd.js +0 -319
  1313. package/dist/selector-hook-CHV4kDMd.js.map +0 -1
  1314. package/dist/sheet-0oUfBmXX.cjs +0 -15
  1315. package/dist/sheet-0oUfBmXX.cjs.map +0 -1
  1316. package/dist/sheet-CNcDT3VP.js +0 -97
  1317. package/dist/sheet-CNcDT3VP.js.map +0 -1
  1318. package/dist/sheet.cjs.map +0 -1
  1319. package/dist/sheet.js.map +0 -1
  1320. package/dist/sheet.service-2MobB-9z.js +0 -68
  1321. package/dist/sheet.service-2MobB-9z.js.map +0 -1
  1322. package/dist/sheet.service-su_7yDQ-.cjs +0 -2
  1323. package/dist/sheet.service-su_7yDQ-.cjs.map +0 -1
  1324. package/dist/slider-CV-Ehp_5.cjs +0 -83
  1325. package/dist/slider-CV-Ehp_5.cjs.map +0 -1
  1326. package/dist/slider-CkE-iFUy.js +0 -161
  1327. package/dist/slider-CkE-iFUy.js.map +0 -1
  1328. package/dist/sound.service-Nza4c6wv.js +0 -102
  1329. package/dist/sound.service-Nza4c6wv.js.map +0 -1
  1330. package/dist/sound.service-eRirZw59.cjs +0 -2
  1331. package/dist/sound.service-eRirZw59.cjs.map +0 -1
  1332. package/dist/spinner-Bfn8KC-9.cjs +0 -135
  1333. package/dist/spinner-Bfn8KC-9.cjs.map +0 -1
  1334. package/dist/spinner-DiMbWXp9.js +0 -168
  1335. package/dist/spinner-DiMbWXp9.js.map +0 -1
  1336. package/dist/store.cjs.map +0 -1
  1337. package/dist/store.js.map +0 -1
  1338. package/dist/suggestion-chip-CEDqUNoS.js +0 -481
  1339. package/dist/suggestion-chip-CEDqUNoS.js.map +0 -1
  1340. package/dist/suggestion-chip-HhsLtZXR.cjs +0 -271
  1341. package/dist/suggestion-chip-HhsLtZXR.cjs.map +0 -1
  1342. package/dist/surface-CW3H23Va.cjs +0 -199
  1343. package/dist/surface-CW3H23Va.cjs.map +0 -1
  1344. package/dist/surface-eBfnSwQS.js +0 -220
  1345. package/dist/surface-eBfnSwQS.js.map +0 -1
  1346. package/dist/surface.cjs.map +0 -1
  1347. package/dist/surface.js.map +0 -1
  1348. package/dist/table-D0tiSL_u.cjs +0 -64
  1349. package/dist/table-D0tiSL_u.cjs.map +0 -1
  1350. package/dist/table-Dmo4TvTx.js +0 -561
  1351. package/dist/table-Dmo4TvTx.js.map +0 -1
  1352. package/dist/table.cjs.map +0 -1
  1353. package/dist/table.js.map +0 -1
  1354. package/dist/tabs-compatibility-Bit6y6en.js +0 -104
  1355. package/dist/tabs-compatibility-Bit6y6en.js.map +0 -1
  1356. package/dist/tabs-compatibility-Vq_2-ekz.cjs +0 -35
  1357. package/dist/tabs-compatibility-Vq_2-ekz.cjs.map +0 -1
  1358. package/dist/tabs.cjs.map +0 -1
  1359. package/dist/tabs.js.map +0 -1
  1360. package/dist/tailwind.mixin-Bp_PR6yc.js +0 -67
  1361. package/dist/tailwind.mixin-Bp_PR6yc.js.map +0 -1
  1362. package/dist/tailwind.mixin-Cp4PyXok.cjs +0 -2
  1363. package/dist/tailwind.mixin-Cp4PyXok.cjs.map +0 -1
  1364. package/dist/teleport.cjs.map +0 -1
  1365. package/dist/teleport.js.map +0 -1
  1366. package/dist/textarea-B1d1QCqT.js +0 -134
  1367. package/dist/textarea-B1d1QCqT.js.map +0 -1
  1368. package/dist/textarea-DG8CHhZA.cjs +0 -44
  1369. package/dist/textarea-DG8CHhZA.cjs.map +0 -1
  1370. package/dist/textarea.cjs.map +0 -1
  1371. package/dist/textarea.js.map +0 -1
  1372. package/dist/theme-button-CPL6Eaqd.cjs +0 -9
  1373. package/dist/theme-button-CPL6Eaqd.cjs.map +0 -1
  1374. package/dist/theme-button-CrLuMQNe.js +0 -27
  1375. package/dist/theme-button-CrLuMQNe.js.map +0 -1
  1376. package/dist/theme-button.cjs.map +0 -1
  1377. package/dist/theme-button.js.map +0 -1
  1378. package/dist/theme-controller-boat-CXbNJSI3.cjs +0 -178
  1379. package/dist/theme-controller-boat-CXbNJSI3.cjs.map +0 -1
  1380. package/dist/theme-controller-boat-CzSmjyKq.js +0 -1159
  1381. package/dist/theme-controller-boat-CzSmjyKq.js.map +0 -1
  1382. package/dist/theme.cjs.map +0 -1
  1383. package/dist/theme.events-CPSLaOlR.js +0 -6
  1384. package/dist/theme.events-CPSLaOlR.js.map +0 -1
  1385. package/dist/theme.events-Car6U_SQ.cjs +0 -2
  1386. package/dist/theme.events-Car6U_SQ.cjs.map +0 -1
  1387. package/dist/theme.interface-BLfE5J_1.js +0 -5
  1388. package/dist/theme.interface-BLfE5J_1.js.map +0 -1
  1389. package/dist/theme.interface-BMeNadVb.cjs +0 -2
  1390. package/dist/theme.interface-BMeNadVb.cjs.map +0 -1
  1391. package/dist/theme.js.map +0 -1
  1392. package/dist/timezone-4vwX0BgA.js +0 -112
  1393. package/dist/timezone-4vwX0BgA.js.map +0 -1
  1394. package/dist/timezone-BxvQcqe1.cjs +0 -32
  1395. package/dist/timezone-BxvQcqe1.cjs.map +0 -1
  1396. package/dist/tooltip-CjdvBf4X.js +0 -119
  1397. package/dist/tooltip-CjdvBf4X.js.map +0 -1
  1398. package/dist/tooltip-ZtnGjoJd.cjs +0 -7
  1399. package/dist/tooltip-ZtnGjoJd.cjs.map +0 -1
  1400. package/dist/tree-CBEjV7jP.js +0 -65
  1401. package/dist/tree-CBEjV7jP.js.map +0 -1
  1402. package/dist/tree-DP5U00NA.cjs +0 -27
  1403. package/dist/tree-DP5U00NA.cjs.map +0 -1
  1404. package/dist/tslib.es6-DgOcxv4s.cjs +0 -2
  1405. package/dist/tslib.es6-DgOcxv4s.cjs.map +0 -1
  1406. package/dist/tslib.es6-ujVQHAQ4.js +0 -10
  1407. package/dist/tslib.es6-ujVQHAQ4.js.map +0 -1
  1408. package/dist/typewriter-C6kFjLcX.cjs +0 -124
  1409. package/dist/typewriter-C6kFjLcX.cjs.map +0 -1
  1410. package/dist/typewriter-Eo5qXoGC.js +0 -555
  1411. package/dist/typewriter-Eo5qXoGC.js.map +0 -1
  1412. package/dist/typewriter.cjs.map +0 -1
  1413. package/dist/typewriter.js.map +0 -1
  1414. package/dist/typography-C_1gdM2I.js +0 -264
  1415. package/dist/typography-C_1gdM2I.js.map +0 -1
  1416. package/dist/typography-DGyjlLCE.cjs +0 -243
  1417. package/dist/typography-DGyjlLCE.cjs.map +0 -1
  1418. package/dist/utils-C38P63L6.cjs +0 -2
  1419. package/dist/utils-C38P63L6.cjs.map +0 -1
  1420. package/dist/utils-CYOVFxSx.js +0 -150
  1421. package/dist/utils-CYOVFxSx.js.map +0 -1
  1422. package/dist/utils.cjs.map +0 -1
  1423. package/dist/utils.js.map +0 -1
  1424. package/types/src/animated-text/animated-text.d.ts +0 -30
  1425. package/types/src/animated-text/index.d.ts +0 -1
  1426. package/types/src/directives/height.d.ts +0 -20
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat-Ckt9v__d.js","sources":["../src/boat/boat.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { fromEvent, interval, merge, race } from 'rxjs'\nimport { filter, finalize, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\ninterface Position {\n\tx: number\n\ty: number\n}\n\ninterface SavedPosition {\n\tx: number\n\ty: number\n\tanchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t\tposition: relative;\n\t\tz-index: 1000;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\tif (this.isAnimating || value === this.currentState) return\n\t\tthis.animateToState(value)\n\t}\n\n\t@property({ type: String }) id: string = 'default'\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.isLowered = value\n\t\tthis.requestUpdate()\n\t}\n\n\t// New properties for simplified API\n\t@property({ type: String }) icon?: string\n\t@property({ type: String }) label?: string\n\t@property() badge?: string | number\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\tprivate headerRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered:\n\t\t\t\t'0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t},\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\t@state() private isDragging: boolean = false\n\t@state() private position: Position = { x: 16, y: 16 }\n\t@state() private anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right'\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Validate viewport after resize to ensure boat stays visible\n\t\t\t\t\tconst container = this.containerRef.value\n\t\t\t\t\tif (container) {\n\t\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\t\t// Only validate if dimensions are ready\n\t\t\t\t\t\tif (rect.width > 0 && rect.height > 0) {\n\t\t\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t\t\tconst actualLeft = this.anchor.includes('right') ? vw - this.position.x - rect.width : this.position.x\n\n\t\t\t\t\t\t\tconst actualTop = this.anchor.includes('bottom') ? vh - this.position.y - rect.height : this.position.y\n\n\t\t\t\t\t\t\tlet needsUpdate = false\n\t\t\t\t\t\t\tlet newLeft = actualLeft\n\t\t\t\t\t\t\tlet newTop = actualTop\n\n\t\t\t\t\t\t\tif (actualLeft < 0) {\n\t\t\t\t\t\t\t\tnewLeft = 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (actualLeft + rect.width > vw) {\n\t\t\t\t\t\t\t\tnewLeft = vw - rect.width - 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (actualTop < 0) {\n\t\t\t\t\t\t\t\tnewTop = 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (actualTop + rect.height > vh) {\n\t\t\t\t\t\t\t\tnewTop = vh - rect.height - 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (needsUpdate) {\n\t\t\t\t\t\t\t\tthis.position.x = this.anchor.includes('right') ? vw - newLeft - rect.width : newLeft\n\n\t\t\t\t\t\t\t\tthis.position.y = this.anchor.includes('bottom') ? vh - newTop - rect.height : newTop\n\n\t\t\t\t\t\t\t\tthis.position.x = Math.max(0, this.position.x)\n\t\t\t\t\t\t\t\tthis.position.y = Math.max(0, this.position.y)\n\n\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\t\t\tconsole.log(`✨ Boat \"${this.id}\" repositioned after resize:`, this.position)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t// Keyboard shortcut - Escape key\n\t\t\tfromEvent<KeyboardEvent>(window, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape' && this.currentState !== 'hidden'),\n\t\t\t\t\ttap(e => e.preventDefault()),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.toggleState() // Minimize on Esc if expanded\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.close() // Hide on Esc if minimized\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\n\tprivate async animateToState(targetState: BoatState) {\n\t\tif (this.isAnimating || targetState === this.currentState) return\n\n\t\tconst previousState = this.currentState\n\t\tthis.isAnimating = true\n\n\t\ttry {\n\t\t\tawait this.performTransition(previousState, targetState)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\n\t\t\t// Dispatch event\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('toggle', {\n\t\t\t\t\tdetail: targetState,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} catch (err) {\n\t\t\tconsole.warn('Animation error:', err)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\t\t} finally {\n\t\t\tthis.isAnimating = false\n\t\t}\n\t}\n\n\t// Simplified animation transition\n\tprivate async performTransition(fromState: BoatState, toState: BoatState): Promise<void> {\n\t\tthis.currentAnimation?.cancel()\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Update content visibility before expand and wait for render\n\t\tif (toState === 'expanded') {\n\t\t\tthis.isContentVisible = true\n\t\t\tawait this.updateComplete\n\t\t}\n\n\t\t// Create animations\n\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t// Wait for main animation to complete\n\t\tif (animations.container) {\n\t\t\tthis.currentAnimation = animations.container\n\t\t\tawait animations.container.finished\n\n\t\t\t// Wait for content fade-out animation before removing from DOM\n\t\t\tif (animations.content) {\n\t\t\t\tawait animations.content.finished\n\t\t\t}\n\n\t\t\t// Hide content after minimize\n\t\t\tif (toState !== 'expanded') {\n\t\t\t\tthis.isContentVisible = false\n\t\t\t} else {\n\t\t\t\t// CRITICAL: After expanding, validate viewport bounds\n\t\t\t\t// The expanded boat is much larger and might go outside viewport\n\t\t\t\tconst container = this.containerRef.value\n\t\t\t\tif (container) {\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\tif (rect.width > 0 && rect.height > 0) {\n\t\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t\tconst actualLeft = this.anchor.includes('right') ? vw - this.position.x - rect.width : this.position.x\n\n\t\t\t\t\t\tconst actualTop = this.anchor.includes('bottom') ? vh - this.position.y - rect.height : this.position.y\n\n\t\t\t\t\t\tlet needsUpdate = false\n\t\t\t\t\t\tlet newLeft = actualLeft\n\t\t\t\t\t\tlet newTop = actualTop\n\n\t\t\t\t\t\tif (actualLeft < 0) {\n\t\t\t\t\t\t\tnewLeft = 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (actualLeft + rect.width > vw) {\n\t\t\t\t\t\t\tnewLeft = vw - rect.width - 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (actualTop < 0) {\n\t\t\t\t\t\t\tnewTop = 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (actualTop + rect.height > vh) {\n\t\t\t\t\t\t\tnewTop = vh - rect.height - 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (needsUpdate) {\n\t\t\t\t\t\t\tthis.position.x = this.anchor.includes('right') ? vw - newLeft - rect.width : newLeft\n\n\t\t\t\t\t\t\tthis.position.y = this.anchor.includes('bottom') ? vh - newTop - rect.height : newTop\n\n\t\t\t\t\t\t\tthis.position.x = Math.max(0, this.position.x)\n\t\t\t\t\t\t\tthis.position.y = Math.max(0, this.position.y)\n\n\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\t\tconsole.log(`✨ Boat \"${this.id}\" snapped after expand:`, this.position)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Expand animation without transform\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing - MUST await this before removing from DOM\n\t\t\tanimations.content = content.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 150,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: config.durations.content,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\tmaxWidth: 'fit',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '0',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tthis.applyInitialStyles()\n\t\tthis.updateContainerPosition()\n\n\t\t// Wait for container to have actual dimensions before validation\n\t\t// Uses pattern from animated-text.ts - poll until dimensions are ready\n\t\tconst container = this.containerRef.value\n\t\tif (container) {\n\t\t\tinterval(10)\n\t\t\t\t.pipe(\n\t\t\t\t\tstartWith(true),\n\t\t\t\t\tfilter(() => {\n\t\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\t\treturn rect.width > 0 && rect.height > 0\n\t\t\t\t\t}),\n\t\t\t\t\ttake(1),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\t// Validate and snap to viewport if needed\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t// Calculate actual position based on anchor\n\t\t\t\t\tconst actualLeft = this.anchor.includes('right') ? vw - this.position.x - rect.width : this.position.x\n\n\t\t\t\t\tconst actualTop = this.anchor.includes('bottom') ? vh - this.position.y - rect.height : this.position.y\n\n\t\t\t\t\t// Check if boat is outside viewport bounds\n\t\t\t\t\tlet needsUpdate = false\n\t\t\t\t\tlet newLeft = actualLeft\n\t\t\t\t\tlet newTop = actualTop\n\n\t\t\t\t\t// Snap to viewport edges if outside (16px padding)\n\t\t\t\t\tif (actualLeft < 0) {\n\t\t\t\t\t\tnewLeft = 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\t\t\t\t\tif (actualLeft + rect.width > vw) {\n\t\t\t\t\t\tnewLeft = vw - rect.width - 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\t\t\t\t\tif (actualTop < 0) {\n\t\t\t\t\t\tnewTop = 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\t\t\t\t\tif (actualTop + rect.height > vh) {\n\t\t\t\t\t\tnewTop = vh - rect.height - 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update position if boat was outside viewport\n\t\t\t\t\tif (needsUpdate) {\n\t\t\t\t\t\t// Convert back to anchor-relative coordinates\n\t\t\t\t\t\tthis.position.x = this.anchor.includes('right') ? vw - newLeft - rect.width : newLeft\n\n\t\t\t\t\t\tthis.position.y = this.anchor.includes('bottom') ? vh - newTop - rect.height : newTop\n\n\t\t\t\t\t\t// Ensure position is never negative\n\t\t\t\t\t\tthis.position.x = Math.max(0, this.position.x)\n\t\t\t\t\t\tthis.position.y = Math.max(0, this.position.y)\n\n\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\tconsole.log(`✨ Boat \"${this.id}\" snapped to viewport edge:`, this.position, this.anchor)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\tthis.setupDragPipeline()\n\n\t\t// Check for deprecated header slot usage\n\t\tconst hasHeaderSlot = this.querySelector('[slot=\"header\"]')\n\t\tif (hasHeaderSlot && !this.icon && !this.label) {\n\t\t\tconsole.warn(\n\t\t\t\t'[schmancy-boat] Using slot=\"header\" is deprecated. ' +\n\t\t\t\t\t'Please use the icon, label, and badge properties instead. ' +\n\t\t\t\t\t'Example: <schmancy-boat icon=\"info\" label=\"Title\" badge=\"5\">',\n\t\t\t)\n\t\t}\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t;(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.animateToState(newState)\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.animateToState('hidden')\n\t}\n\n\tprivate closeAndAddToNav() {\n\t\trace(\n\t\t\tthis.discover<any>('schmancy-navigation-rail'),\n\t\t\tthis.discover<any>('schmancy-navigation-bar'),\n\t\t\tthis.discover<any>('schmancy-nav-drawer'),\n\t\t\tthis.discover<any>('app-navigation-rail'),\n\t\t\tthis.discover<any>('app-navigation-bar'),\n\t\t\tthis.discover<any>('app-nav-drawer'),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(navComponent => {\n\t\t\t\t\tif (navComponent && typeof navComponent.addBoatItem === 'function') {\n\t\t\t\t\t\t// Use properties first, fall back to slot parsing\n\t\t\t\t\t\tconst icon =\n\t\t\t\t\t\t\tthis.icon ||\n\t\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\t\tconst headerSlot = this.querySelector('[slot=\"header\"]')\n\t\t\t\t\t\t\t\tconst iconElement = headerSlot?.querySelector('schmancy-icon')\n\t\t\t\t\t\t\t\treturn iconElement?.textContent?.trim() || 'widgets'\n\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\tconst label =\n\t\t\t\t\t\t\tthis.label ||\n\t\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\t\tconst headerSlot = this.querySelector('[slot=\"header\"]')\n\t\t\t\t\t\t\t\tlet title = headerSlot?.textContent?.trim() || 'Boat'\n\t\t\t\t\t\t\t\tif (icon && title.includes(icon)) {\n\t\t\t\t\t\t\t\t\ttitle = title.replace(icon, '').trim()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn title || this.id\n\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t// Add the boat to navigation\n\t\t\t\t\t\tconst navItem = navComponent.addBoatItem({\n\t\t\t\t\t\t\tid: `boat-${this.id}`,\n\t\t\t\t\t\t\ttitle: label,\n\t\t\t\t\t\t\ticon: icon,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tif (navItem) {\n\t\t\t\t\t\t\t// Simple fade out then hide\n\t\t\t\t\t\t\tconst container = this.containerRef.value\n\t\t\t\t\t\t\tif (container) {\n\t\t\t\t\t\t\t\tcontainer\n\t\t\t\t\t\t\t\t\t.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 150, easing: 'ease-out', fill: 'forwards' })\n\t\t\t\t\t\t\t\t\t.finished.then(() => {\n\t\t\t\t\t\t\t\t\t\tthis.currentState = 'hidden'\n\t\t\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.currentState = 'hidden'\n\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Set up click listener to reopen - using RxJS pattern\n\t\t\t\t\t\t\tfromEvent(navItem, 'click')\n\t\t\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\t\t\ttap(() => (this.state = 'expanded')),\n\t\t\t\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.subscribe()\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No nav component found, just hide\n\t\t\t\t\t\tthis.close()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate calculateDragPosition(\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toffsetX: number,\n\t\toffsetY: number,\n\t\tinitialRect: DOMRect,\n\t): Position {\n\t\tconst targetLeft = clientX - offsetX\n\t\tconst targetTop = clientY - offsetY\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\t\tconst clampedLeft = Math.max(0, Math.min(targetLeft, vw - initialRect.width))\n\t\tconst clampedTop = Math.max(0, Math.min(targetTop, vh - initialRect.height))\n\n\t\tconst newX = this.anchor.includes('right') ? vw - (clampedLeft + initialRect.width) : clampedLeft\n\n\t\tconst newY = this.anchor.includes('bottom') ? vh - (clampedTop + initialRect.height) : clampedTop\n\n\t\treturn { x: Math.max(0, newX), y: Math.max(0, newY) }\n\t}\n\n\tprivate savePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst toSave: SavedPosition = {\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y,\n\t\t\tanchor: this.anchor,\n\t\t}\n\t\tconst key = `schmancy-boat-${this.id}`\n\t\tlocalStorage.setItem(key, JSON.stringify(toSave))\n\t\tconsole.log('💾 Saved position:', key, toSave)\n\t}\n\n\tprivate setupDragPipeline() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst header = this.headerRef.value\n\t\tconst container = this.containerRef.value\n\t\tif (!header || !container) return\n\n\t\tlet hasDragged = false\n\t\tconst DRAG_THRESHOLD = 5\n\n\t\t// Merge mouse and touch start events\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(header, 'mousedown').pipe(\n\t\t\t\tfilter(e => e.button === 0),\n\t\t\t\ttap(e => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.clientX,\n\t\t\t\t\tclientY: e.clientY,\n\t\t\t\t\ttype: 'mouse' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t\tfromEvent<TouchEvent>(header, 'touchstart').pipe(\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.touches[0].clientX,\n\t\t\t\t\tclientY: e.touches[0].clientY,\n\t\t\t\t\ttype: 'touch' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tmap(({ clientX, clientY, type }) => {\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\thasDragged = false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstartX: clientX,\n\t\t\t\t\t\tstartY: clientY,\n\t\t\t\t\t\toffsetX: clientX - rect.left,\n\t\t\t\t\t\toffsetY: clientY - rect.top,\n\t\t\t\t\t\tinitialRect: rect,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(({ startX, startY, offsetX, offsetY, initialRect, type }) => {\n\t\t\t\t\tconst move$ =\n\t\t\t\t\t\ttype === 'mouse'\n\t\t\t\t\t\t\t? fromEvent<MouseEvent>(window, 'mousemove').pipe(map(e => ({ clientX: e.clientX, clientY: e.clientY })))\n\t\t\t\t\t\t\t: fromEvent<TouchEvent>(window, 'touchmove').pipe(\n\t\t\t\t\t\t\t\t\tmap(e => ({ clientX: e.touches[0].clientX, clientY: e.touches[0].clientY })),\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\tconst end$ = type === 'mouse' ? fromEvent(window, 'mouseup') : fromEvent(window, 'touchend')\n\n\t\t\t\t\treturn move$.pipe(\n\t\t\t\t\t\tmap(({ clientX, clientY }) => {\n\t\t\t\t\t\t\tconst deltaX = clientX - startX\n\t\t\t\t\t\t\tconst deltaY = clientY - startY\n\t\t\t\t\t\t\tconst distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY)\n\n\t\t\t\t\t\t\tif (distance > DRAG_THRESHOLD && !hasDragged) {\n\t\t\t\t\t\t\t\thasDragged = true\n\t\t\t\t\t\t\t\tthis.isDragging = true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!hasDragged) return null\n\n\t\t\t\t\t\t\treturn this.calculateDragPosition(clientX, clientY, offsetX, offsetY, initialRect)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfilter(position => position !== null),\n\t\t\t\t\t\ttap(position => {\n\t\t\t\t\t\t\tif (position) {\n\t\t\t\t\t\t\t\tthis.position = position\n\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttakeUntil(end$),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tfinalize(() => {\n\t\t\t\t\tif (hasDragged) {\n\t\t\t\t\t\tthis.updateAnchor()\n\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t}\n\t\t\t\t\tthis.isDragging = false\n\t\t\t\t\thasDragged = false\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t// Update container position based on anchor and position values\n\tprivate updateContainerPosition() {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Reset all position styles\n\t\tcontainer.style.removeProperty('left')\n\t\tcontainer.style.removeProperty('right')\n\t\tcontainer.style.removeProperty('top')\n\t\tcontainer.style.removeProperty('bottom')\n\n\t\t// Apply new position based on anchor\n\t\tif (this.anchor.includes('right')) {\n\t\t\tcontainer.style.right = `${this.position.x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${this.position.x}px`\n\t\t}\n\n\t\tif (this.anchor.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${this.position.y}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${this.position.y}px`\n\t\t}\n\t}\n\n\t// Update anchor based on current position\n\tprivate updateAnchor() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\n\t\tconst isRight = rect.left > vw / 2\n\t\tconst isBottom = rect.top > vh / 2\n\n\t\tconst newAnchor = `${isBottom ? 'bottom' : 'top'}-${isRight ? 'right' : 'left'}` as typeof this.anchor\n\n\t\tif (newAnchor !== this.anchor) {\n\t\t\t// Calculate new position values for the new anchor\n\t\t\tif (isRight) {\n\t\t\t\tthis.position.x = vw - rect.right\n\t\t\t} else {\n\t\t\t\tthis.position.x = rect.left\n\t\t\t}\n\n\t\t\tif (isBottom) {\n\t\t\t\tthis.position.y = vh - rect.bottom\n\t\t\t} else {\n\t\t\t\tthis.position.y = rect.top\n\t\t\t}\n\n\t\t\tthis.anchor = newAnchor\n\t\t}\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t}\n\n\tprotected render(): unknown {\n\t\tconst surfaceElevation = this.currentState === 'minimized' ? (this.isLowered ? '1' : '3') : '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\n\t\t// Set transform origin based on anchor for proper expansion\n\t\tconst transformOrigin = this.anchor.includes('bottom')\n\t\t\t? this.anchor.includes('right')\n\t\t\t\t? 'bottom right'\n\t\t\t\t: 'bottom left'\n\t\t\t: this.anchor.includes('right')\n\t\t\t\t? 'top right'\n\t\t\t\t: 'top left'\n\n\t\tconst containerClasses = {\n\t\t\tfixed: true,\n\t\t\t'overflow-y-auto': true,\n\t\t\tflex: true,\n\t\t\t'flex-col': true,\n\t\t\t'select-none': true,\n\t\t\t'will-change-transform': true,\n\t\t\t'[contain:layout_style]': true,\n\t\t\t'[transform:translate3d(0,0,0)]': true,\n\t\t\t'[backface-visibility:hidden]': true,\n\t\t\t'transition-shadow': true,\n\t\t\t'opacity-95': this.isDragging,\n\t\t\t'shadow-[0_24px_48px_-8px_rgba(0,0,0,0.2),0_12px_24px_-4px_rgba(0,0,0,0.12)]': this.isDragging,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${this.classMap(containerClasses)}\n\t\t\t\tstyle=\"transform-origin: ${transformOrigin}\"\n\t\t\t\t${ref(this.containerRef)}\n\t\t\t>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-100\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerHigh\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"group sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging\n\t\t\t\t\t\t\t\t? 'cursor-grabbing'\n\t\t\t\t\t\t\t\t: 'cursor-move'}\"\n\t\t\t\t\t\t\t${ref(this.headerRef)}\n\t\t\t\t\t\t\ttitle=\"Drag to move, double-click to toggle\"\n\t\t\t\t\t\t\t@dblclick=${(e: Event) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<!-- Drag handle indicator -->\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex items-center text-surface-onVariant opacity-40 transition-opacity duration-200 group-hover:opacity-100\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-icon style=\"font-size: 20px\">drag_indicator</schmancy-icon>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Header content - use properties if provided, else fallback to slot -->\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex-1 min-w-fit items-center flex justify-start ${isMinimized ? 'cursor-pointer' : ''}\"\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@dblclick=${(e: Event) => {\n\t\t\t\t\t\t\t\t\tif (isMinimized) {\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.state = 'expanded'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttitle=\"${isMinimized ? 'Click to expand' : ''}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${this.icon || this.label\n\t\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclass=\"flex gap-2 items-center\">\n\t\t\t\t\t\t\t\t\t\t\t\t${this.icon ? html`<schmancy-icon>${this.icon}</schmancy-icon>` : ''}\n\t\t\t\t\t\t\t\t\t\t\t\t${this.label\n\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<schmancy-typography type=\"title\" token=\"md\">${this.label}</schmancy-typography>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t\t${this.badge !== undefined && this.badge !== null && this.badge !== ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<schmancy-badge>${this.badge}</schmancy-badge>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t: html`<slot name=\"header\"></slot>`}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 shrink-0\">\n\t\t\t\t\t\t\t\t${isMinimized\n\t\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Expand button (when minimized) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'expanded'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Expand\"\n\t\t\t\t\t\t\t\t\t\t\t\t${ref(this.iconRef)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tfullscreen\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Minimize button (when expanded) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"filled tonal\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'minimized'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\t\t\t\t\t\t\t${ref(this.iconRef)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tclose_fullscreen\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`}\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.closeAndAddToNav()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close and add to navigation\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tremove\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t${cache(\n\t\t\t\t\tthis.isContentVisible\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<schmancy-surface type=\"containerHigh\" class=\"flex-1\" ${ref(this.contentRef)}>\n\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t</schmancy-surface>\n\t\t\t\t\t\t `\n\t\t\t\t\t\t: html``,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}\n"],"names":["SchmancyBoat","$LitElement","css","constructor","super","arguments","this","id","containerRef","createRef","contentRef","iconRef","headerRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","isDragging","position","x","y","anchor","state","value","animateToState","lowered","requestUpdate","connectedCallback","window","fromEvent","pipe","takeUntil","disconnecting","subscribe","updateExpandedWidth","container","rect","getBoundingClientRect","width","height","vw","innerWidth","vh","innerHeight","actualLeft","includes","actualTop","needsUpdate","newLeft","newTop","Math","max","updateContainerPosition","savePosition","filter","e","key","tap","preventDefault","toggleState","close","targetState","previousState","performTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","err","fromState","toState","currentAnimation","cancel","updateComplete","animations","createAnimations","finished","icon","config","fromStyles","getStyleForState","toStyles","animate","duration","fill","opacity","transform","isExpanding","baseStyles","maxWidth","maxHeight","borderRadius","hidden","pointerEvents","boxShadow","backdropFilter","minimized","getResponsiveWidth","style","applyInitialStyles","interval","startWith","take","setupDragPipeline","querySelector","label","initialStyle","Object","assign","webkitBackdropFilter","newState","race","discover","navComponent","addBoatItem","textContent","trim","title","replace","navItem","then","clientX","clientY","offsetX","offsetY","initialRect","targetLeft","targetTop","clampedLeft","min","clampedTop","newX","newY","toSave","localStorage","setItem","JSON","stringify","header","hasDragged","merge","button","stopPropagation","map","type","touches","startX","startY","left","top","switchMap","move$","end$","deltaX","deltaY","sqrt","calculateDragPosition","finalize","updateAnchor","removeProperty","right","bottom","isRight","isBottom","newAnchor","disconnectedCallback","render","surfaceElevation","isMinimized","transformOrigin","containerClasses","fixed","flex","html","classMap","ref","badge","closeAndAddToNav","cache","__decorateClass","property","String","reflect","prototype","Boolean","customElement"],"mappings":"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"}
@@ -1,97 +0,0 @@
1
- "use strict";const m=require("rxjs"),r=require("rxjs/operators");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const l=require("lit/decorators.js");require("./tailwind.mixin-Cp4PyXok.cjs");const v=require("./litElement.mixin-CrpeGpZ7.cjs"),g=require("lit"),f=require("lit/directives/ref.js"),S=require("lit/directives/cache.js");var R=Object.defineProperty,C=Object.getOwnPropertyDescriptor,u=(t,i,o,n)=>{for(var e,a=n>1?void 0:n?C(i,o):i,s=t.length-1;s>=0;s--)(e=t[s])&&(a=(n?e(i,o,a):e(a))||a);return n&&a&&R(i,o,a),a};exports.SchmancyBoat=class extends v.$LitElement(g.css`
2
- :host {
3
- display: contents;
4
- position: relative;
5
- z-index: 1000;
6
- }
7
- `){constructor(){super(...arguments),this.id="default",this.containerRef=f.createRef(),this.contentRef=f.createRef(),this.iconRef=f.createRef(),this.headerRef=f.createRef(),this.ANIMATION_CONFIG={durations:{expand:350,minimize:250,hide:200,content:300},easing:{emphasized:"cubic-bezier(0.2, 0.0, 0, 1.0)",decelerate:"cubic-bezier(0.05, 0.7, 0.1, 1.0)",accelerate:"cubic-bezier(0.3, 0.0, 0.8, 0.15)",standard:"cubic-bezier(0.4, 0.0, 0.2, 1)"},shadows:{fab:"0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)",fabLowered:"0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)",expanded:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"}},this.currentState="minimized",this.isContentVisible=!1,this.isAnimating=!1,this.isLowered=!1,this.isDragging=!1,this.position={x:16,y:16},this.anchor="bottom-right"}get state(){return this.currentState}set state(t){this.isAnimating||t===this.currentState||this.animateToState(t)}get lowered(){return this.isLowered}set lowered(t){this.isLowered=t,this.requestUpdate()}connectedCallback(){super.connectedCallback(),typeof window<"u"&&(m.fromEvent(window,"resize").pipe(r.takeUntil(this.disconnecting)).subscribe(()=>{this.currentState==="expanded"&&this.updateExpandedWidth();const t=this.containerRef.value;if(t){const i=t.getBoundingClientRect();if(i.width>0&&i.height>0){const o=window.innerWidth,n=window.innerHeight,e=this.anchor.includes("right")?o-this.position.x-i.width:this.position.x,a=this.anchor.includes("bottom")?n-this.position.y-i.height:this.position.y;let s=!1,h=e,c=a;e<0&&(h=16,s=!0),e+i.width>o&&(h=o-i.width-16,s=!0),a<0&&(c=16,s=!0),a+i.height>n&&(c=n-i.height-16,s=!0),s&&(this.position.x=this.anchor.includes("right")?o-h-i.width:h,this.position.y=this.anchor.includes("bottom")?n-c-i.height:c,this.position.x=Math.max(0,this.position.x),this.position.y=Math.max(0,this.position.y),this.updateContainerPosition(),this.savePosition())}}}),m.fromEvent(window,"keydown").pipe(r.filter(t=>t.key==="Escape"&&this.currentState!=="hidden"),r.tap(t=>t.preventDefault()),r.takeUntil(this.disconnecting)).subscribe(()=>{this.currentState==="expanded"?this.toggleState():this.close()}))}async animateToState(t){if(this.isAnimating||t===this.currentState)return;const i=this.currentState;this.isAnimating=!0;try{await this.performTransition(i,t),this.currentState=t,this.isContentVisible=t==="expanded",this.dispatchEvent(new CustomEvent("toggle",{detail:t,bubbles:!0,composed:!0}))}catch{this.currentState=t,this.isContentVisible=t==="expanded"}finally{this.isAnimating=!1}}async performTransition(t,i){if(this.currentAnimation?.cancel(),!this.containerRef.value)return;i==="expanded"&&(this.isContentVisible=!0,await this.updateComplete);const o=this.createAnimations(t,i);if(o.container)if(this.currentAnimation=o.container,await o.container.finished,o.content&&await o.content.finished,i!=="expanded")this.isContentVisible=!1;else{const n=this.containerRef.value;if(n){const e=n.getBoundingClientRect();if(e.width>0&&e.height>0){const a=window.innerWidth,s=window.innerHeight,h=this.anchor.includes("right")?a-this.position.x-e.width:this.position.x,c=this.anchor.includes("bottom")?s-this.position.y-e.height:this.position.y;let p=!1,y=h,d=c;h<0&&(y=16,p=!0),h+e.width>a&&(y=a-e.width-16,p=!0),c<0&&(d=16,p=!0),c+e.height>s&&(d=s-e.height-16,p=!0),p&&(this.position.x=this.anchor.includes("right")?a-y-e.width:y,this.position.y=this.anchor.includes("bottom")?s-d-e.height:d,this.position.x=Math.max(0,this.position.x),this.position.y=Math.max(0,this.position.y),this.updateContainerPosition(),this.savePosition())}}}}createAnimations(t,i){const o=this.containerRef.value,n=this.contentRef.value,e=this.iconRef.value,a={};if(!o)return a;const s=this.ANIMATION_CONFIG,h=this.getStyleForState(t),c=this.getStyleForState(i);if(a.container=i==="expanded"?o.animate([h,c],{duration:s.durations.expand,easing:s.easing.decelerate,fill:"forwards"}):o.animate([h,c],{duration:i==="hidden"?s.durations.hide:s.durations.minimize,easing:s.easing.accelerate,fill:"forwards"}),n&&t==="expanded"&&i==="minimized"?a.content=n.animate([{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(-8px)"}],{duration:150,easing:s.easing.standard,fill:"forwards"}):n&&i==="expanded"&&n.animate([{opacity:0,transform:"translateY(8px)"},{opacity:1,transform:"translateY(0)"}],{duration:s.durations.content,easing:s.easing.standard,fill:"forwards"}),e){const p=i==="expanded";(p||t==="expanded"&&i==="minimized")&&e.animate([{transform:p?"rotate(0deg)":"rotate(180deg)"},{transform:p?"rotate(180deg)":"rotate(0deg)"}],{duration:250,easing:s.easing.emphasized,fill:"forwards"})}return a}getStyleForState(t){const{shadows:i}=this.ANIMATION_CONFIG,o={maxWidth:"fit",maxHeight:"auto",borderRadius:"16px"};return{hidden:{...o,opacity:"0",pointerEvents:"none",boxShadow:"none",backdropFilter:"none"},minimized:{...o,opacity:"1",pointerEvents:"auto",boxShadow:this.isLowered?i.fabLowered:i.fab,backdropFilter:"none"},expanded:{opacity:"1",pointerEvents:"auto",width:this.getResponsiveWidth(),maxWidth:"100%",maxHeight:"80vh",boxShadow:i.expanded,borderRadius:"8px 8px 0 0",backdropFilter:"blur(12px)"}}[t]}getResponsiveWidth(){if(typeof window>"u")return"40vw";const t=window.innerWidth;return t<768?"calc(100vw - 32px)":t<1024?"70vw":t<1280?"60vw":"40vw"}updateExpandedWidth(){const t=this.containerRef.value;t&&this.currentState==="expanded"&&(t.style.width=this.getResponsiveWidth())}firstUpdated(){this.applyInitialStyles(),this.updateContainerPosition();const t=this.containerRef.value;t&&m.interval(10).pipe(r.startWith(!0),r.filter(()=>{const i=t.getBoundingClientRect();return i.width>0&&i.height>0}),r.take(1),r.takeUntil(this.disconnecting)).subscribe(()=>{const i=t.getBoundingClientRect(),o=window.innerWidth,n=window.innerHeight,e=this.anchor.includes("right")?o-this.position.x-i.width:this.position.x,a=this.anchor.includes("bottom")?n-this.position.y-i.height:this.position.y;let s=!1,h=e,c=a;e<0&&(h=16,s=!0),e+i.width>o&&(h=o-i.width-16,s=!0),a<0&&(c=16,s=!0),a+i.height>n&&(c=n-i.height-16,s=!0),s&&(this.position.x=this.anchor.includes("right")?o-h-i.width:h,this.position.y=this.anchor.includes("bottom")?n-c-i.height:c,this.position.x=Math.max(0,this.position.x),this.position.y=Math.max(0,this.position.y),this.updateContainerPosition(),this.savePosition())}),this.setupDragPipeline(),this.querySelector('[slot="header"]')&&!this.icon&&this.label}applyInitialStyles(){const t=this.containerRef.value,i=this.contentRef.value,o=this.iconRef.value;if(t){const n=this.getStyleForState(this.currentState);Object.assign(t.style,n),"webkitBackdropFilter"in t.style&&(t.style.webkitBackdropFilter=n.backdropFilter)}i&&(i.style.opacity=this.isContentVisible?"1":"0"),o&&this.currentState==="expanded"&&(o.style.transform="rotate(180deg)")}toggleState(){const t=this.currentState==="minimized"?"expanded":"minimized";this.animateToState(t)}close(){this.animateToState("hidden")}closeAndAddToNav(){m.race(this.discover("schmancy-navigation-rail"),this.discover("schmancy-navigation-bar"),this.discover("schmancy-nav-drawer"),this.discover("app-navigation-rail"),this.discover("app-navigation-bar"),this.discover("app-nav-drawer")).pipe(r.take(1),r.tap(t=>{if(t&&typeof t.addBoatItem=="function"){const i=this.icon||this.querySelector('[slot="header"]')?.querySelector("schmancy-icon")?.textContent?.trim()||"widgets",o=this.label||(()=>{let a=this.querySelector('[slot="header"]')?.textContent?.trim()||"Boat";return a.includes(i)&&(a=a.replace(i,"").trim()),a||this.id})(),n=t.addBoatItem({id:`boat-${this.id}`,title:o,icon:i});if(n){const e=this.containerRef.value;e?e.animate([{opacity:1},{opacity:0}],{duration:150,easing:"ease-out",fill:"forwards"}).finished.then(()=>{this.currentState="hidden",this.isContentVisible=!1}):(this.currentState="hidden",this.isContentVisible=!1),m.fromEvent(n,"click").pipe(r.tap(()=>this.state="expanded"),r.takeUntil(this.disconnecting)).subscribe()}}else this.close()})).subscribe()}calculateDragPosition(t,i,o,n,e){const a=t-o,s=i-n,h=window.innerWidth,c=window.innerHeight,p=Math.max(0,Math.min(a,h-e.width)),y=Math.max(0,Math.min(s,c-e.height)),d=this.anchor.includes("right")?h-(p+e.width):p,x=this.anchor.includes("bottom")?c-(y+e.height):y;return{x:Math.max(0,d),y:Math.max(0,x)}}savePosition(){if(typeof window>"u")return;const t={x:this.position.x,y:this.position.y,anchor:this.anchor},i=`schmancy-boat-${this.id}`;localStorage.setItem(i,JSON.stringify(t))}setupDragPipeline(){if(typeof window>"u")return;const t=this.headerRef.value,i=this.containerRef.value;if(!t||!i)return;let o=!1;m.merge(m.fromEvent(t,"mousedown").pipe(r.filter(n=>n.button===0),r.tap(n=>{n.preventDefault(),n.stopPropagation()}),r.map(n=>({clientX:n.clientX,clientY:n.clientY,type:"mouse"}))),m.fromEvent(t,"touchstart").pipe(r.map(n=>({clientX:n.touches[0].clientX,clientY:n.touches[0].clientY,type:"touch"})))).pipe(r.map(({clientX:n,clientY:e,type:a})=>{const s=i.getBoundingClientRect();return o=!1,{startX:n,startY:e,offsetX:n-s.left,offsetY:e-s.top,initialRect:s,type:a}})).pipe(r.switchMap(({startX:n,startY:e,offsetX:a,offsetY:s,initialRect:h,type:c})=>{const p=c==="mouse"?m.fromEvent(window,"mousemove").pipe(r.map(d=>({clientX:d.clientX,clientY:d.clientY}))):m.fromEvent(window,"touchmove").pipe(r.map(d=>({clientX:d.touches[0].clientX,clientY:d.touches[0].clientY}))),y=c==="mouse"?m.fromEvent(window,"mouseup"):m.fromEvent(window,"touchend");return p.pipe(r.map(({clientX:d,clientY:x})=>{const b=d-n,w=x-e;return Math.sqrt(b*b+w*w)>5&&!o&&(o=!0,this.isDragging=!0),o?this.calculateDragPosition(d,x,a,s,h):null}),r.filter(d=>d!==null),r.tap(d=>{d&&(this.position=d,this.updateContainerPosition())}),r.takeUntil(y))}),r.finalize(()=>{o?(this.updateAnchor(),this.savePosition()):this.toggleState(),this.isDragging=!1,o=!1}),r.takeUntil(this.disconnecting)).subscribe()}updateContainerPosition(){const t=this.containerRef.value;t&&(t.style.removeProperty("left"),t.style.removeProperty("right"),t.style.removeProperty("top"),t.style.removeProperty("bottom"),this.anchor.includes("right")?t.style.right=`${this.position.x}px`:t.style.left=`${this.position.x}px`,this.anchor.includes("bottom")?t.style.bottom=`${this.position.y}px`:t.style.top=`${this.position.y}px`)}updateAnchor(){if(typeof window>"u")return;const t=this.containerRef.value;if(!t)return;const i=t.getBoundingClientRect(),o=window.innerWidth,n=window.innerHeight,e=i.left>o/2,a=i.top>n/2,s=`${a?"bottom":"top"}-${e?"right":"left"}`;s!==this.anchor&&(this.position.x=e?o-i.right:i.left,this.position.y=a?n-i.bottom:i.top,this.anchor=s)}disconnectedCallback(){super.disconnectedCallback(),this.currentAnimation?.cancel()}render(){const t=this.currentState==="minimized"?this.isLowered?"1":"3":"4",i=this.currentState==="minimized",o=this.anchor.includes("bottom")?this.anchor.includes("right")?"bottom right":"bottom left":this.anchor.includes("right")?"top right":"top left",n={fixed:!0,"overflow-y-auto":!0,flex:!0,"flex-col":!0,"select-none":!0,"will-change-transform":!0,"[contain:layout_style]":!0,"[transform:translate3d(0,0,0)]":!0,"[backface-visibility:hidden]":!0,"transition-shadow":!0,"opacity-95":this.isDragging,"shadow-[0_24px_48px_-8px_rgba(0,0,0,0.2),0_12px_24px_-4px_rgba(0,0,0,0.12)]":this.isDragging};return g.html`
8
- <div
9
- class=${this.classMap(n)}
10
- style="transform-origin: ${o}"
11
- ${f.ref(this.containerRef)}
12
- >
13
- <!-- Header section -->
14
- <section class="sticky top-0 z-100">
15
- <schmancy-surface
16
- elevation="${t}"
17
- rounded="${i?"none":"top"}"
18
- type="containerHigh"
19
- >
20
- <div
21
- class="group sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging?"cursor-grabbing":"cursor-move"}"
22
- ${f.ref(this.headerRef)}
23
- title="Drag to move, double-click to toggle"
24
- @dblclick=${e=>{e.preventDefault(),e.stopPropagation(),this.toggleState()}}
25
- >
26
- <!-- Drag handle indicator -->
27
- <div
28
- class="flex items-center text-surface-onVariant opacity-40 transition-opacity duration-200 group-hover:opacity-100"
29
- >
30
- <schmancy-icon style="font-size: 20px">drag_indicator</schmancy-icon>
31
- </div>
32
-
33
- <!-- Header content - use properties if provided, else fallback to slot -->
34
- <div
35
- class="flex-1 min-w-fit items-center flex justify-start ${i?"cursor-pointer":""}"
36
-
37
- @dblclick=${e=>{i&&(e.preventDefault(),e.stopPropagation(),this.state="expanded")}}
38
- title="${i?"Click to expand":""}"
39
- >
40
- ${this.icon||this.label?g.html`
41
- <div
42
- class="flex gap-2 items-center">
43
- ${this.icon?g.html`<schmancy-icon>${this.icon}</schmancy-icon>`:""}
44
- ${this.label?g.html`<schmancy-typography type="title" token="md">${this.label}</schmancy-typography>`:""}
45
- ${this.badge!==void 0&&this.badge!==null&&this.badge!==""?g.html`<schmancy-badge>${this.badge}</schmancy-badge>`:""}
46
- </div>
47
- `:g.html`<slot name="header"></slot>`}
48
- </div>
49
-
50
- <!-- Control buttons -->
51
- <div class="flex items-center gap-1 shrink-0">
52
- ${i?g.html`
53
- <!-- Expand button (when minimized) -->
54
- <schmancy-icon-button
55
- size="sm"
56
- variant="text"
57
- @click=${e=>{e.stopPropagation(),this.state="expanded"}}
58
- title="Expand"
59
- ${f.ref(this.iconRef)}
60
- >
61
- fullscreen
62
- </schmancy-icon-button>
63
- `:g.html`
64
- <!-- Minimize button (when expanded) -->
65
- <schmancy-icon-button
66
- size="sm"
67
- variant="filled tonal"
68
- @click=${e=>{e.stopPropagation(),this.state="minimized"}}
69
- title="Minimize"
70
- ${f.ref(this.iconRef)}
71
- >
72
- close_fullscreen
73
- </schmancy-icon-button>
74
- `}
75
-
76
- <!-- Close button -->
77
- <schmancy-icon-button
78
- size="sm"
79
- @click=${e=>{e.stopPropagation(),this.closeAndAddToNav()}}
80
- title="Close and add to navigation"
81
- >
82
- remove
83
- </schmancy-icon-button>
84
- </div>
85
- </div>
86
- </schmancy-surface>
87
- </section>
88
-
89
- <!-- Content section -->
90
- ${S.cache(this.isContentVisible?g.html`
91
- <schmancy-surface type="containerHigh" class="flex-1" ${f.ref(this.contentRef)}>
92
- <slot></slot>
93
- </schmancy-surface>
94
- `:g.html``)}
95
- </div>
96
- `}},u([l.property({type:String,reflect:!0})],exports.SchmancyBoat.prototype,"state",1),u([l.property({type:String})],exports.SchmancyBoat.prototype,"id",2),u([l.property({type:Boolean,reflect:!0})],exports.SchmancyBoat.prototype,"lowered",1),u([l.property({type:String})],exports.SchmancyBoat.prototype,"icon",2),u([l.property({type:String})],exports.SchmancyBoat.prototype,"label",2),u([l.property()],exports.SchmancyBoat.prototype,"badge",2),u([l.state()],exports.SchmancyBoat.prototype,"currentState",2),u([l.state()],exports.SchmancyBoat.prototype,"isContentVisible",2),u([l.state()],exports.SchmancyBoat.prototype,"isAnimating",2),u([l.state()],exports.SchmancyBoat.prototype,"isLowered",2),u([l.state()],exports.SchmancyBoat.prototype,"isDragging",2),u([l.state()],exports.SchmancyBoat.prototype,"position",2),u([l.state()],exports.SchmancyBoat.prototype,"anchor",2),exports.SchmancyBoat=u([l.customElement("schmancy-boat")],exports.SchmancyBoat);
97
- //# sourceMappingURL=boat-yNAZ2LLB.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat-yNAZ2LLB.cjs","sources":["../src/boat/boat.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { createRef, ref, Ref } from 'lit/directives/ref.js'\nimport { cache } from 'lit/directives/cache.js'\nimport { fromEvent, interval, merge, race } from 'rxjs'\nimport { filter, finalize, map, startWith, switchMap, take, takeUntil, tap } from 'rxjs/operators'\n\ntype BoatState = 'hidden' | 'minimized' | 'expanded'\n\ninterface Position {\n\tx: number\n\ty: number\n}\n\ninterface SavedPosition {\n\tx: number\n\ty: number\n\tanchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n}\n\n@customElement('schmancy-boat')\nexport default class SchmancyBoat extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t\tposition: relative;\n\t\tz-index: 1000;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tget state(): BoatState {\n\t\treturn this.currentState\n\t}\n\tset state(value: BoatState) {\n\t\tif (this.isAnimating || value === this.currentState) return\n\t\tthis.animateToState(value)\n\t}\n\n\t@property({ type: String }) id: string = 'default'\n\n\t@property({ type: Boolean, reflect: true })\n\tget lowered(): boolean {\n\t\treturn this.isLowered\n\t}\n\tset lowered(value: boolean) {\n\t\tthis.isLowered = value\n\t\tthis.requestUpdate()\n\t}\n\n\t// New properties for simplified API\n\t@property({ type: String }) icon?: string\n\t@property({ type: String }) label?: string\n\t@property() badge?: string | number\n\n\t// Element references\n\tprivate containerRef: Ref<HTMLDivElement> = createRef()\n\tprivate contentRef: Ref<HTMLElement> = createRef()\n\tprivate iconRef: Ref<HTMLElement> = createRef()\n\tprivate headerRef: Ref<HTMLElement> = createRef()\n\n\t// Current animation reference\n\tprivate currentAnimation?: Animation\n\n\t// Animation configuration\n\tprivate readonly ANIMATION_CONFIG = {\n\t\tdurations: {\n\t\t\texpand: 350,\n\t\t\tminimize: 250,\n\t\t\thide: 200,\n\t\t\tcontent: 300,\n\t\t},\n\t\teasing: {\n\t\t\temphasized: 'cubic-bezier(0.2, 0.0, 0, 1.0)',\n\t\t\tdecelerate: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)',\n\t\t\taccelerate: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)',\n\t\t\tstandard: 'cubic-bezier(0.4, 0.0, 0.2, 1)',\n\t\t},\n\t\tshadows: {\n\t\t\tfab: '0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)',\n\t\t\tfabLowered:\n\t\t\t\t'0px 1px 3px 0px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 2px 1px -1px rgba(0, 0, 0, 0.12)',\n\t\t\texpanded: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n\t\t},\n\t}\n\n\t// Reactive state for template\n\t@state() private currentState: BoatState = 'minimized'\n\t@state() private isContentVisible: boolean = false\n\t@state() private isAnimating: boolean = false\n\t@state() private isLowered: boolean = false\n\t@state() private isDragging: boolean = false\n\t@state() private position: Position = { x: 16, y: 16 }\n\t@state() private anchor: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' = 'bottom-right'\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (typeof window !== 'undefined') {\n\t\t\tfromEvent(window, 'resize')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.updateExpandedWidth()\n\t\t\t\t\t}\n\n\t\t\t\t\t// Validate viewport after resize to ensure boat stays visible\n\t\t\t\t\tconst container = this.containerRef.value\n\t\t\t\t\tif (container) {\n\t\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\t\t// Only validate if dimensions are ready\n\t\t\t\t\t\tif (rect.width > 0 && rect.height > 0) {\n\t\t\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t\t\tconst actualLeft = this.anchor.includes('right') ? vw - this.position.x - rect.width : this.position.x\n\n\t\t\t\t\t\t\tconst actualTop = this.anchor.includes('bottom') ? vh - this.position.y - rect.height : this.position.y\n\n\t\t\t\t\t\t\tlet needsUpdate = false\n\t\t\t\t\t\t\tlet newLeft = actualLeft\n\t\t\t\t\t\t\tlet newTop = actualTop\n\n\t\t\t\t\t\t\tif (actualLeft < 0) {\n\t\t\t\t\t\t\t\tnewLeft = 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (actualLeft + rect.width > vw) {\n\t\t\t\t\t\t\t\tnewLeft = vw - rect.width - 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (actualTop < 0) {\n\t\t\t\t\t\t\t\tnewTop = 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (actualTop + rect.height > vh) {\n\t\t\t\t\t\t\t\tnewTop = vh - rect.height - 16\n\t\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (needsUpdate) {\n\t\t\t\t\t\t\t\tthis.position.x = this.anchor.includes('right') ? vw - newLeft - rect.width : newLeft\n\n\t\t\t\t\t\t\t\tthis.position.y = this.anchor.includes('bottom') ? vh - newTop - rect.height : newTop\n\n\t\t\t\t\t\t\t\tthis.position.x = Math.max(0, this.position.x)\n\t\t\t\t\t\t\t\tthis.position.y = Math.max(0, this.position.y)\n\n\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\t\t\tconsole.log(`✨ Boat \"${this.id}\" repositioned after resize:`, this.position)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t// Keyboard shortcut - Escape key\n\t\t\tfromEvent<KeyboardEvent>(window, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter(e => e.key === 'Escape' && this.currentState !== 'hidden'),\n\t\t\t\t\ttap(e => e.preventDefault()),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tif (this.currentState === 'expanded') {\n\t\t\t\t\t\tthis.toggleState() // Minimize on Esc if expanded\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.close() // Hide on Esc if minimized\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\t}\n\n\n\tprivate async animateToState(targetState: BoatState) {\n\t\tif (this.isAnimating || targetState === this.currentState) return\n\n\t\tconst previousState = this.currentState\n\t\tthis.isAnimating = true\n\n\t\ttry {\n\t\t\tawait this.performTransition(previousState, targetState)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\n\t\t\t// Dispatch event\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('toggle', {\n\t\t\t\t\tdetail: targetState,\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t} catch (err) {\n\t\t\tconsole.warn('Animation error:', err)\n\t\t\tthis.currentState = targetState\n\t\t\tthis.isContentVisible = targetState === 'expanded'\n\t\t} finally {\n\t\t\tthis.isAnimating = false\n\t\t}\n\t}\n\n\t// Simplified animation transition\n\tprivate async performTransition(fromState: BoatState, toState: BoatState): Promise<void> {\n\t\tthis.currentAnimation?.cancel()\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Update content visibility before expand and wait for render\n\t\tif (toState === 'expanded') {\n\t\t\tthis.isContentVisible = true\n\t\t\tawait this.updateComplete\n\t\t}\n\n\t\t// Create animations\n\t\tconst animations = this.createAnimations(fromState, toState)\n\n\t\t// Wait for main animation to complete\n\t\tif (animations.container) {\n\t\t\tthis.currentAnimation = animations.container\n\t\t\tawait animations.container.finished\n\n\t\t\t// Wait for content fade-out animation before removing from DOM\n\t\t\tif (animations.content) {\n\t\t\t\tawait animations.content.finished\n\t\t\t}\n\n\t\t\t// Hide content after minimize\n\t\t\tif (toState !== 'expanded') {\n\t\t\t\tthis.isContentVisible = false\n\t\t\t} else {\n\t\t\t\t// CRITICAL: After expanding, validate viewport bounds\n\t\t\t\t// The expanded boat is much larger and might go outside viewport\n\t\t\t\tconst container = this.containerRef.value\n\t\t\t\tif (container) {\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\tif (rect.width > 0 && rect.height > 0) {\n\t\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t\tconst actualLeft = this.anchor.includes('right') ? vw - this.position.x - rect.width : this.position.x\n\n\t\t\t\t\t\tconst actualTop = this.anchor.includes('bottom') ? vh - this.position.y - rect.height : this.position.y\n\n\t\t\t\t\t\tlet needsUpdate = false\n\t\t\t\t\t\tlet newLeft = actualLeft\n\t\t\t\t\t\tlet newTop = actualTop\n\n\t\t\t\t\t\tif (actualLeft < 0) {\n\t\t\t\t\t\t\tnewLeft = 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (actualLeft + rect.width > vw) {\n\t\t\t\t\t\t\tnewLeft = vw - rect.width - 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (actualTop < 0) {\n\t\t\t\t\t\t\tnewTop = 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (actualTop + rect.height > vh) {\n\t\t\t\t\t\t\tnewTop = vh - rect.height - 16\n\t\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (needsUpdate) {\n\t\t\t\t\t\t\tthis.position.x = this.anchor.includes('right') ? vw - newLeft - rect.width : newLeft\n\n\t\t\t\t\t\t\tthis.position.y = this.anchor.includes('bottom') ? vh - newTop - rect.height : newTop\n\n\t\t\t\t\t\t\tthis.position.x = Math.max(0, this.position.x)\n\t\t\t\t\t\t\tthis.position.y = Math.max(0, this.position.y)\n\n\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\t\tconsole.log(`✨ Boat \"${this.id}\" snapped after expand:`, this.position)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Create animations for state transition\n\tprivate createAnimations(fromState: BoatState, toState: BoatState) {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\t\tconst animations: { container?: Animation; content?: Animation; icon?: Animation } = {}\n\n\t\tif (!container) return animations\n\n\t\tconst config = this.ANIMATION_CONFIG\n\t\tconst fromStyles = this.getStyleForState(fromState)\n\t\tconst toStyles = this.getStyleForState(toState)\n\n\t\t// Container animation\n\t\tif (toState === 'expanded') {\n\t\t\t// Expand animation without transform\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: config.durations.expand,\n\t\t\t\teasing: config.easing.decelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t} else {\n\t\t\tanimations.container = container.animate([fromStyles, toStyles], {\n\t\t\t\tduration: toState === 'hidden' ? config.durations.hide : config.durations.minimize,\n\t\t\t\teasing: config.easing.accelerate,\n\t\t\t\tfill: 'forwards',\n\t\t\t})\n\t\t}\n\n\t\t// Content animation (only for expand/minimize transitions)\n\t\tif (content && fromState === 'expanded' && toState === 'minimized') {\n\t\t\t// Fade out content before minimizing - MUST await this before removing from DOM\n\t\t\tanimations.content = content.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(-8px)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: 150,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t} else if (content && toState === 'expanded') {\n\t\t\t// Fade in content when expanding\n\t\t\tcontent.animate(\n\t\t\t\t[\n\t\t\t\t\t{ opacity: 0, transform: 'translateY(8px)' },\n\t\t\t\t\t{ opacity: 1, transform: 'translateY(0)' },\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: config.durations.content,\n\t\t\t\t\teasing: config.easing.standard,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t)\n\t\t}\n\n\t\t// Icon rotation animation\n\t\tif (icon) {\n\t\t\tconst isExpanding = toState === 'expanded'\n\t\t\tconst isCollapsing = fromState === 'expanded' && toState === 'minimized'\n\n\t\t\tif (isExpanding || isCollapsing) {\n\t\t\t\ticon.animate(\n\t\t\t\t\t[\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(0deg)' : 'rotate(180deg)' },\n\t\t\t\t\t\t{ transform: isExpanding ? 'rotate(180deg)' : 'rotate(0deg)' },\n\t\t\t\t\t],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 250,\n\t\t\t\t\t\teasing: config.easing.emphasized,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn animations\n\t}\n\n\t// Get styles for a specific state\n\tprivate getStyleForState(state: BoatState): Keyframe {\n\t\tconst { shadows } = this.ANIMATION_CONFIG\n\t\tconst baseStyles = {\n\t\t\tmaxWidth: 'fit',\n\t\t\tmaxHeight: 'auto',\n\t\t\tborderRadius: '16px',\n\t\t}\n\n\t\tconst stateStyles: Record<BoatState, Keyframe> = {\n\t\t\thidden: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '0',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tboxShadow: 'none',\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\tminimized: {\n\t\t\t\t...baseStyles,\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\tboxShadow: this.isLowered ? shadows.fabLowered : shadows.fab,\n\t\t\t\tbackdropFilter: 'none',\n\t\t\t},\n\t\t\texpanded: {\n\t\t\t\topacity: '1',\n\t\t\t\tpointerEvents: 'auto',\n\t\t\t\twidth: this.getResponsiveWidth(),\n\t\t\t\tmaxWidth: '100%',\n\t\t\t\tmaxHeight: '80vh',\n\t\t\t\tboxShadow: shadows.expanded,\n\t\t\t\tborderRadius: '8px 8px 0 0',\n\t\t\t\tbackdropFilter: 'blur(12px)',\n\t\t\t},\n\t\t}\n\n\t\treturn stateStyles[state] as Keyframe\n\t}\n\n\t// Calculate responsive width based on viewport\n\tprivate getResponsiveWidth(): string {\n\t\tif (typeof window === 'undefined') return '40vw'\n\n\t\tconst vw = window.innerWidth\n\t\tif (vw < 768) return 'calc(100vw - 32px)'\n\t\tif (vw < 1024) return '70vw'\n\t\tif (vw < 1280) return '60vw'\n\t\treturn '40vw'\n\t}\n\n\t// Update expanded width on window resize\n\tprivate updateExpandedWidth() {\n\t\tconst container = this.containerRef.value\n\t\tif (container && this.currentState === 'expanded') {\n\t\t\tcontainer.style.width = this.getResponsiveWidth()\n\t\t}\n\t}\n\n\tfirstUpdated() {\n\t\tthis.applyInitialStyles()\n\t\tthis.updateContainerPosition()\n\n\t\t// Wait for container to have actual dimensions before validation\n\t\t// Uses pattern from animated-text.ts - poll until dimensions are ready\n\t\tconst container = this.containerRef.value\n\t\tif (container) {\n\t\t\tinterval(10)\n\t\t\t\t.pipe(\n\t\t\t\t\tstartWith(true),\n\t\t\t\t\tfilter(() => {\n\t\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\t\treturn rect.width > 0 && rect.height > 0\n\t\t\t\t\t}),\n\t\t\t\t\ttake(1),\n\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\t// Validate and snap to viewport if needed\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\tconst vw = window.innerWidth\n\t\t\t\t\tconst vh = window.innerHeight\n\n\t\t\t\t\t// Calculate actual position based on anchor\n\t\t\t\t\tconst actualLeft = this.anchor.includes('right') ? vw - this.position.x - rect.width : this.position.x\n\n\t\t\t\t\tconst actualTop = this.anchor.includes('bottom') ? vh - this.position.y - rect.height : this.position.y\n\n\t\t\t\t\t// Check if boat is outside viewport bounds\n\t\t\t\t\tlet needsUpdate = false\n\t\t\t\t\tlet newLeft = actualLeft\n\t\t\t\t\tlet newTop = actualTop\n\n\t\t\t\t\t// Snap to viewport edges if outside (16px padding)\n\t\t\t\t\tif (actualLeft < 0) {\n\t\t\t\t\t\tnewLeft = 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\t\t\t\t\tif (actualLeft + rect.width > vw) {\n\t\t\t\t\t\tnewLeft = vw - rect.width - 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\t\t\t\t\tif (actualTop < 0) {\n\t\t\t\t\t\tnewTop = 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\t\t\t\t\tif (actualTop + rect.height > vh) {\n\t\t\t\t\t\tnewTop = vh - rect.height - 16\n\t\t\t\t\t\tneedsUpdate = true\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update position if boat was outside viewport\n\t\t\t\t\tif (needsUpdate) {\n\t\t\t\t\t\t// Convert back to anchor-relative coordinates\n\t\t\t\t\t\tthis.position.x = this.anchor.includes('right') ? vw - newLeft - rect.width : newLeft\n\n\t\t\t\t\t\tthis.position.y = this.anchor.includes('bottom') ? vh - newTop - rect.height : newTop\n\n\t\t\t\t\t\t// Ensure position is never negative\n\t\t\t\t\t\tthis.position.x = Math.max(0, this.position.x)\n\t\t\t\t\t\tthis.position.y = Math.max(0, this.position.y)\n\n\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t\tconsole.log(`✨ Boat \"${this.id}\" snapped to viewport edge:`, this.position, this.anchor)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\tthis.setupDragPipeline()\n\n\t\t// Check for deprecated header slot usage\n\t\tconst hasHeaderSlot = this.querySelector('[slot=\"header\"]')\n\t\tif (hasHeaderSlot && !this.icon && !this.label) {\n\t\t\tconsole.warn(\n\t\t\t\t'[schmancy-boat] Using slot=\"header\" is deprecated. ' +\n\t\t\t\t\t'Please use the icon, label, and badge properties instead. ' +\n\t\t\t\t\t'Example: <schmancy-boat icon=\"info\" label=\"Title\" badge=\"5\">',\n\t\t\t)\n\t\t}\n\t}\n\n\t// Apply initial styles to elements\n\tprivate applyInitialStyles() {\n\t\tconst container = this.containerRef.value\n\t\tconst content = this.contentRef.value\n\t\tconst icon = this.iconRef.value\n\n\t\tif (container) {\n\t\t\tconst initialStyle = this.getStyleForState(this.currentState)\n\t\t\tObject.assign(container.style, initialStyle)\n\n\t\t\t// Safari compatibility for backdrop filter\n\t\t\tif ('webkitBackdropFilter' in container.style) {\n\t\t\t\t;(container.style as any).webkitBackdropFilter = initialStyle.backdropFilter\n\t\t\t}\n\t\t}\n\n\t\t// Set initial content opacity\n\t\tif (content) {\n\t\t\tcontent.style.opacity = this.isContentVisible ? '1' : '0'\n\t\t}\n\n\t\t// Set initial icon rotation\n\t\tif (icon && this.currentState === 'expanded') {\n\t\t\ticon.style.transform = 'rotate(180deg)'\n\t\t}\n\t}\n\n\t// Public method to toggle between minimized and expanded\n\ttoggleState() {\n\t\tconst newState = this.currentState === 'minimized' ? 'expanded' : 'minimized'\n\t\tthis.animateToState(newState)\n\t}\n\n\t// Public method to close (hide) the boat\n\tclose() {\n\t\tthis.animateToState('hidden')\n\t}\n\n\tprivate closeAndAddToNav() {\n\t\trace(\n\t\t\tthis.discover<any>('schmancy-navigation-rail'),\n\t\t\tthis.discover<any>('schmancy-navigation-bar'),\n\t\t\tthis.discover<any>('schmancy-nav-drawer'),\n\t\t\tthis.discover<any>('app-navigation-rail'),\n\t\t\tthis.discover<any>('app-navigation-bar'),\n\t\t\tthis.discover<any>('app-nav-drawer'),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\ttake(1),\n\t\t\t\ttap(navComponent => {\n\t\t\t\t\tif (navComponent && typeof navComponent.addBoatItem === 'function') {\n\t\t\t\t\t\t// Use properties first, fall back to slot parsing\n\t\t\t\t\t\tconst icon =\n\t\t\t\t\t\t\tthis.icon ||\n\t\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\t\tconst headerSlot = this.querySelector('[slot=\"header\"]')\n\t\t\t\t\t\t\t\tconst iconElement = headerSlot?.querySelector('schmancy-icon')\n\t\t\t\t\t\t\t\treturn iconElement?.textContent?.trim() || 'widgets'\n\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\tconst label =\n\t\t\t\t\t\t\tthis.label ||\n\t\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\t\tconst headerSlot = this.querySelector('[slot=\"header\"]')\n\t\t\t\t\t\t\t\tlet title = headerSlot?.textContent?.trim() || 'Boat'\n\t\t\t\t\t\t\t\tif (icon && title.includes(icon)) {\n\t\t\t\t\t\t\t\t\ttitle = title.replace(icon, '').trim()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn title || this.id\n\t\t\t\t\t\t\t})()\n\n\t\t\t\t\t\t// Add the boat to navigation\n\t\t\t\t\t\tconst navItem = navComponent.addBoatItem({\n\t\t\t\t\t\t\tid: `boat-${this.id}`,\n\t\t\t\t\t\t\ttitle: label,\n\t\t\t\t\t\t\ticon: icon,\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\tif (navItem) {\n\t\t\t\t\t\t\t// Simple fade out then hide\n\t\t\t\t\t\t\tconst container = this.containerRef.value\n\t\t\t\t\t\t\tif (container) {\n\t\t\t\t\t\t\t\tcontainer\n\t\t\t\t\t\t\t\t\t.animate([{ opacity: 1 }, { opacity: 0 }], { duration: 150, easing: 'ease-out', fill: 'forwards' })\n\t\t\t\t\t\t\t\t\t.finished.then(() => {\n\t\t\t\t\t\t\t\t\t\tthis.currentState = 'hidden'\n\t\t\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.currentState = 'hidden'\n\t\t\t\t\t\t\t\tthis.isContentVisible = false\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Set up click listener to reopen - using RxJS pattern\n\t\t\t\t\t\t\tfromEvent(navItem, 'click')\n\t\t\t\t\t\t\t\t.pipe(\n\t\t\t\t\t\t\t\t\ttap(() => (this.state = 'expanded')),\n\t\t\t\t\t\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.subscribe()\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// No nav component found, just hide\n\t\t\t\t\t\tthis.close()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate calculateDragPosition(\n\t\tclientX: number,\n\t\tclientY: number,\n\t\toffsetX: number,\n\t\toffsetY: number,\n\t\tinitialRect: DOMRect,\n\t): Position {\n\t\tconst targetLeft = clientX - offsetX\n\t\tconst targetTop = clientY - offsetY\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\t\tconst clampedLeft = Math.max(0, Math.min(targetLeft, vw - initialRect.width))\n\t\tconst clampedTop = Math.max(0, Math.min(targetTop, vh - initialRect.height))\n\n\t\tconst newX = this.anchor.includes('right') ? vw - (clampedLeft + initialRect.width) : clampedLeft\n\n\t\tconst newY = this.anchor.includes('bottom') ? vh - (clampedTop + initialRect.height) : clampedTop\n\n\t\treturn { x: Math.max(0, newX), y: Math.max(0, newY) }\n\t}\n\n\tprivate savePosition() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst toSave: SavedPosition = {\n\t\t\tx: this.position.x,\n\t\t\ty: this.position.y,\n\t\t\tanchor: this.anchor,\n\t\t}\n\t\tconst key = `schmancy-boat-${this.id}`\n\t\tlocalStorage.setItem(key, JSON.stringify(toSave))\n\t\tconsole.log('💾 Saved position:', key, toSave)\n\t}\n\n\tprivate setupDragPipeline() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst header = this.headerRef.value\n\t\tconst container = this.containerRef.value\n\t\tif (!header || !container) return\n\n\t\tlet hasDragged = false\n\t\tconst DRAG_THRESHOLD = 5\n\n\t\t// Merge mouse and touch start events\n\t\tmerge(\n\t\t\tfromEvent<MouseEvent>(header, 'mousedown').pipe(\n\t\t\t\tfilter(e => e.button === 0),\n\t\t\t\ttap(e => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t}),\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.clientX,\n\t\t\t\t\tclientY: e.clientY,\n\t\t\t\t\ttype: 'mouse' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t\tfromEvent<TouchEvent>(header, 'touchstart').pipe(\n\t\t\t\tmap(e => ({\n\t\t\t\t\tclientX: e.touches[0].clientX,\n\t\t\t\t\tclientY: e.touches[0].clientY,\n\t\t\t\t\ttype: 'touch' as const,\n\t\t\t\t})),\n\t\t\t),\n\t\t)\n\t\t\t.pipe(\n\t\t\t\tmap(({ clientX, clientY, type }) => {\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\thasDragged = false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstartX: clientX,\n\t\t\t\t\t\tstartY: clientY,\n\t\t\t\t\t\toffsetX: clientX - rect.left,\n\t\t\t\t\t\toffsetY: clientY - rect.top,\n\t\t\t\t\t\tinitialRect: rect,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(({ startX, startY, offsetX, offsetY, initialRect, type }) => {\n\t\t\t\t\tconst move$ =\n\t\t\t\t\t\ttype === 'mouse'\n\t\t\t\t\t\t\t? fromEvent<MouseEvent>(window, 'mousemove').pipe(map(e => ({ clientX: e.clientX, clientY: e.clientY })))\n\t\t\t\t\t\t\t: fromEvent<TouchEvent>(window, 'touchmove').pipe(\n\t\t\t\t\t\t\t\t\tmap(e => ({ clientX: e.touches[0].clientX, clientY: e.touches[0].clientY })),\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\tconst end$ = type === 'mouse' ? fromEvent(window, 'mouseup') : fromEvent(window, 'touchend')\n\n\t\t\t\t\treturn move$.pipe(\n\t\t\t\t\t\tmap(({ clientX, clientY }) => {\n\t\t\t\t\t\t\tconst deltaX = clientX - startX\n\t\t\t\t\t\t\tconst deltaY = clientY - startY\n\t\t\t\t\t\t\tconst distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY)\n\n\t\t\t\t\t\t\tif (distance > DRAG_THRESHOLD && !hasDragged) {\n\t\t\t\t\t\t\t\thasDragged = true\n\t\t\t\t\t\t\t\tthis.isDragging = true\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!hasDragged) return null\n\n\t\t\t\t\t\t\treturn this.calculateDragPosition(clientX, clientY, offsetX, offsetY, initialRect)\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tfilter(position => position !== null),\n\t\t\t\t\t\ttap(position => {\n\t\t\t\t\t\t\tif (position) {\n\t\t\t\t\t\t\t\tthis.position = position\n\t\t\t\t\t\t\t\tthis.updateContainerPosition()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttakeUntil(end$),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tfinalize(() => {\n\t\t\t\t\tif (hasDragged) {\n\t\t\t\t\t\tthis.updateAnchor()\n\t\t\t\t\t\tthis.savePosition()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t}\n\t\t\t\t\tthis.isDragging = false\n\t\t\t\t\thasDragged = false\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t// Update container position based on anchor and position values\n\tprivate updateContainerPosition() {\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\t// Reset all position styles\n\t\tcontainer.style.removeProperty('left')\n\t\tcontainer.style.removeProperty('right')\n\t\tcontainer.style.removeProperty('top')\n\t\tcontainer.style.removeProperty('bottom')\n\n\t\t// Apply new position based on anchor\n\t\tif (this.anchor.includes('right')) {\n\t\t\tcontainer.style.right = `${this.position.x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${this.position.x}px`\n\t\t}\n\n\t\tif (this.anchor.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${this.position.y}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${this.position.y}px`\n\t\t}\n\t}\n\n\t// Update anchor based on current position\n\tprivate updateAnchor() {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst container = this.containerRef.value\n\t\tif (!container) return\n\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\n\t\tconst isRight = rect.left > vw / 2\n\t\tconst isBottom = rect.top > vh / 2\n\n\t\tconst newAnchor = `${isBottom ? 'bottom' : 'top'}-${isRight ? 'right' : 'left'}` as typeof this.anchor\n\n\t\tif (newAnchor !== this.anchor) {\n\t\t\t// Calculate new position values for the new anchor\n\t\t\tif (isRight) {\n\t\t\t\tthis.position.x = vw - rect.right\n\t\t\t} else {\n\t\t\t\tthis.position.x = rect.left\n\t\t\t}\n\n\t\t\tif (isBottom) {\n\t\t\t\tthis.position.y = vh - rect.bottom\n\t\t\t} else {\n\t\t\t\tthis.position.y = rect.top\n\t\t\t}\n\n\t\t\tthis.anchor = newAnchor\n\t\t}\n\t}\n\n\t// Cleanup on component disconnect\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.currentAnimation?.cancel()\n\t}\n\n\tprotected render(): unknown {\n\t\tconst surfaceElevation = this.currentState === 'minimized' ? (this.isLowered ? '1' : '3') : '4'\n\t\tconst isMinimized = this.currentState === 'minimized'\n\n\t\t// Set transform origin based on anchor for proper expansion\n\t\tconst transformOrigin = this.anchor.includes('bottom')\n\t\t\t? this.anchor.includes('right')\n\t\t\t\t? 'bottom right'\n\t\t\t\t: 'bottom left'\n\t\t\t: this.anchor.includes('right')\n\t\t\t\t? 'top right'\n\t\t\t\t: 'top left'\n\n\t\tconst containerClasses = {\n\t\t\tfixed: true,\n\t\t\t'overflow-y-auto': true,\n\t\t\tflex: true,\n\t\t\t'flex-col': true,\n\t\t\t'select-none': true,\n\t\t\t'will-change-transform': true,\n\t\t\t'[contain:layout_style]': true,\n\t\t\t'[transform:translate3d(0,0,0)]': true,\n\t\t\t'[backface-visibility:hidden]': true,\n\t\t\t'transition-shadow': true,\n\t\t\t'opacity-95': this.isDragging,\n\t\t\t'shadow-[0_24px_48px_-8px_rgba(0,0,0,0.2),0_12px_24px_-4px_rgba(0,0,0,0.12)]': this.isDragging,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${this.classMap(containerClasses)}\n\t\t\t\tstyle=\"transform-origin: ${transformOrigin}\"\n\t\t\t\t${ref(this.containerRef)}\n\t\t\t>\n\t\t\t\t<!-- Header section -->\n\t\t\t\t<section class=\"sticky top-0 z-100\">\n\t\t\t\t\t<schmancy-surface\n\t\t\t\t\t\televation=\"${surfaceElevation}\"\n\t\t\t\t\t\trounded=\"${isMinimized ? 'none' : 'top'}\"\n\t\t\t\t\t\ttype=\"containerHigh\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"group sticky top-0 px-3 py-2 flex items-center justify-between gap-3 ${this.isDragging\n\t\t\t\t\t\t\t\t? 'cursor-grabbing'\n\t\t\t\t\t\t\t\t: 'cursor-move'}\"\n\t\t\t\t\t\t\t${ref(this.headerRef)}\n\t\t\t\t\t\t\ttitle=\"Drag to move, double-click to toggle\"\n\t\t\t\t\t\t\t@dblclick=${(e: Event) => {\n\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\tthis.toggleState()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<!-- Drag handle indicator -->\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex items-center text-surface-onVariant opacity-40 transition-opacity duration-200 group-hover:opacity-100\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<schmancy-icon style=\"font-size: 20px\">drag_indicator</schmancy-icon>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Header content - use properties if provided, else fallback to slot -->\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex-1 min-w-fit items-center flex justify-start ${isMinimized ? 'cursor-pointer' : ''}\"\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t@dblclick=${(e: Event) => {\n\t\t\t\t\t\t\t\t\tif (isMinimized) {\n\t\t\t\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.state = 'expanded'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttitle=\"${isMinimized ? 'Click to expand' : ''}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${this.icon || this.label\n\t\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclass=\"flex gap-2 items-center\">\n\t\t\t\t\t\t\t\t\t\t\t\t${this.icon ? html`<schmancy-icon>${this.icon}</schmancy-icon>` : ''}\n\t\t\t\t\t\t\t\t\t\t\t\t${this.label\n\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<schmancy-typography type=\"title\" token=\"md\">${this.label}</schmancy-typography>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t\t${this.badge !== undefined && this.badge !== null && this.badge !== ''\n\t\t\t\t\t\t\t\t\t\t\t\t\t? html`<schmancy-badge>${this.badge}</schmancy-badge>`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t: html`<slot name=\"header\"></slot>`}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t<!-- Control buttons -->\n\t\t\t\t\t\t\t<div class=\"flex items-center gap-1 shrink-0\">\n\t\t\t\t\t\t\t\t${isMinimized\n\t\t\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Expand button (when minimized) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'expanded'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Expand\"\n\t\t\t\t\t\t\t\t\t\t\t\t${ref(this.iconRef)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tfullscreen\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t\t\t: html`\n\t\t\t\t\t\t\t\t\t\t\t<!-- Minimize button (when expanded) -->\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"filled tonal\"\n\t\t\t\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.state = 'minimized'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Minimize\"\n\t\t\t\t\t\t\t\t\t\t\t\t${ref(this.iconRef)}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tclose_fullscreen\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t\t\t\t`}\n\n\t\t\t\t\t\t\t\t<!-- Close button -->\n\t\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t@click=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\tthis.closeAndAddToNav()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\ttitle=\"Close and add to navigation\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tremove\n\t\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Content section -->\n\t\t\t\t${cache(\n\t\t\t\t\tthis.isContentVisible\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<schmancy-surface type=\"containerHigh\" class=\"flex-1\" ${ref(this.contentRef)}>\n\t\t\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t\t\t</schmancy-surface>\n\t\t\t\t\t\t `\n\t\t\t\t\t\t: html``,\n\t\t\t\t)}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-boat': SchmancyBoat\n\t}\n}\n"],"names":["SchmancyBoat","$LitElement","css","constructor","super","arguments","this","id","containerRef","createRef","contentRef","iconRef","headerRef","ANIMATION_CONFIG","durations","expand","minimize","hide","content","easing","emphasized","decelerate","accelerate","standard","shadows","fab","fabLowered","expanded","currentState","isContentVisible","isAnimating","isLowered","isDragging","position","x","y","anchor","state","value","animateToState","lowered","requestUpdate","connectedCallback","window","fromEvent","pipe","takeUntil","disconnecting","subscribe","updateExpandedWidth","container","rect","getBoundingClientRect","width","height","vw","innerWidth","vh","innerHeight","actualLeft","includes","actualTop","needsUpdate","newLeft","newTop","Math","max","updateContainerPosition","savePosition","filter","e","key","tap","preventDefault","toggleState","close","targetState","previousState","performTransition","dispatchEvent","CustomEvent","detail","bubbles","composed","err","fromState","toState","currentAnimation","cancel","updateComplete","animations","createAnimations","finished","icon","config","fromStyles","getStyleForState","toStyles","animate","duration","fill","opacity","transform","isExpanding","baseStyles","maxWidth","maxHeight","borderRadius","hidden","pointerEvents","boxShadow","backdropFilter","minimized","getResponsiveWidth","style","firstUpdated","applyInitialStyles","interval","startWith","take","setupDragPipeline","querySelector","label","initialStyle","Object","assign","webkitBackdropFilter","newState","closeAndAddToNav","race","discover","navComponent","addBoatItem","textContent","trim","title","replace","navItem","then","clientX","clientY","offsetX","offsetY","initialRect","targetLeft","targetTop","clampedLeft","min","clampedTop","newX","newY","toSave","localStorage","setItem","JSON","stringify","header","hasDragged","merge","button","stopPropagation","map","type","touches","startX","startY","left","top","switchMap","move$","end$","deltaX","deltaY","sqrt","calculateDragPosition","finalize","updateAnchor","removeProperty","right","bottom","isRight","isBottom","newAnchor","disconnectedCallback","surfaceElevation","isMinimized","transformOrigin","containerClasses","fixed","flex","html","classMap","ref","badge","cache","__decorateClass","property","String","reflect","prototype","Boolean","customElement"],"mappings":"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"}
package/dist/boat.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/boat.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"boat.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/busy.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"busy.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/busy.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"busy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/card.cjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/card.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,40 +0,0 @@
1
- "use strict";const d=require("./tslib.es6-DgOcxv4s.cjs"),n=require("lit/decorators.js"),c=require("lit"),F=require("lit/directives/class-map.js");require("rxjs"),require("rxjs/operators"),require("lit/directives/style-map.js");const G=require("./tailwind.mixin-Cp4PyXok.cjs"),H=require("lit/directives/when.js"),D=Symbol("attachableController");let N;c.isServer||(N=new MutationObserver(o=>{for(const e of o)e.target[D]?.hostConnected()}));class U{get htmlFor(){return this.host.getAttribute("for")}set htmlFor(e){e===null?this.host.removeAttribute("for"):this.host.setAttribute("for",e)}get control(){return this.host.hasAttribute("for")?this.htmlFor&&this.host.isConnected?this.host.getRootNode().querySelector(`#${this.htmlFor}`):null:this.currentControl||this.host.parentElement}set control(e){e?this.attach(e):this.detach()}constructor(e,t){this.host=e,this.onControlChange=t,this.currentControl=null,e.addController(this),e[D]=this,N?.observe(e,{attributeFilter:["for"]})}attach(e){e!==this.currentControl&&(this.setCurrentControl(e),this.host.removeAttribute("for"))}detach(){this.setCurrentControl(null),this.host.setAttribute("for","")}hostConnected(){this.setCurrentControl(this.control)}hostDisconnected(){this.setCurrentControl(null)}setCurrentControl(e){this.onControlChange(this.currentControl,e),this.currentControl=e}}const Y=["focusin","focusout","pointerdown"];class z extends c.LitElement{constructor(){super(...arguments),this.visible=!1,this.inward=!1,this.attachableController=new U(this,this.onControlChange.bind(this))}get htmlFor(){return this.attachableController.htmlFor}set htmlFor(e){this.attachableController.htmlFor=e}get control(){return this.attachableController.control}set control(e){this.attachableController.control=e}attach(e){this.attachableController.attach(e)}detach(){this.attachableController.detach()}connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}handleEvent(e){if(!e[O]){switch(e.type){default:return;case"focusin":this.visible=this.control?.matches(":focus-visible")??!1;break;case"focusout":case"pointerdown":this.visible=!1}e[O]=!0}}onControlChange(e,t){if(!c.isServer)for(const r of Y)e?.removeEventListener(r,this),t?.addEventListener(r,this)}update(e){e.has("visible")&&this.dispatchEvent(new Event("visibility-changed")),super.update(e)}}d.t([n.property({type:Boolean,reflect:!0})],z.prototype,"visible",void 0),d.t([n.property({type:Boolean,reflect:!0})],z.prototype,"inward",void 0);const O=Symbol("handledByFocusRing"),K=c.css`:host{animation-delay:0s,calc(var(--md-focus-ring-duration, 600ms)*.25);animation-duration:calc(var(--md-focus-ring-duration, 600ms)*.25),calc(var(--md-focus-ring-duration, 600ms)*.75);animation-timing-function:cubic-bezier(0.2, 0, 0, 1);box-sizing:border-box;color:var(--md-focus-ring-color, var(--md-sys-color-secondary, #625b71));display:none;pointer-events:none;position:absolute}:host([visible]){display:flex}:host(:not([inward])){animation-name:outward-grow,outward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) + var(--md-focus-ring-outward-offset, 2px));inset:calc(-1*var(--md-focus-ring-outward-offset, 2px));outline:var(--md-focus-ring-width, 3px) solid currentColor}:host([inward]){animation-name:inward-grow,inward-shrink;border-end-end-radius:calc(var(--md-focus-ring-shape-end-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-end-start-radius:calc(var(--md-focus-ring-shape-end-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-end-radius:calc(var(--md-focus-ring-shape-start-end, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border-start-start-radius:calc(var(--md-focus-ring-shape-start-start, var(--md-focus-ring-shape, var(--md-sys-shape-corner-full, 9999px))) - var(--md-focus-ring-inward-offset, 0px));border:var(--md-focus-ring-width, 3px) solid currentColor;inset:var(--md-focus-ring-inward-offset, 0px)}@keyframes outward-grow{from{outline-width:0}to{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes outward-shrink{from{outline-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-grow{from{border-width:0}to{border-width:var(--md-focus-ring-active-width, 8px)}}@keyframes inward-shrink{from{border-width:var(--md-focus-ring-active-width, 8px)}}@media(prefers-reduced-motion){:host{animation:none}}
2
- `;let C=class extends z{};C.styles=[K],C=d.t([n.customElement("md-focus-ring")],C);const W="cubic-bezier(0.2, 0, 0, 1)";var h;(function(o){o[o.INACTIVE=0]="INACTIVE",o[o.TOUCH_DELAY=1]="TOUCH_DELAY",o[o.HOLDING=2]="HOLDING",o[o.WAITING_FOR_CLICK=3]="WAITING_FOR_CLICK"})(h||(h={}));const j=["click","contextmenu","pointercancel","pointerdown","pointerenter","pointerleave","pointerup"],Z=c.isServer?null:window.matchMedia("(forced-colors: active)");class f extends c.LitElement{constructor(){super(...arguments),this.disabled=!1,this.hovered=!1,this.pressed=!1,this.rippleSize="",this.rippleScale="",this.initialSize=0,this.state=h.INACTIVE,this.attachableController=new U(this,this.onControlChange.bind(this))}get htmlFor(){return this.attachableController.htmlFor}set htmlFor(e){this.attachableController.htmlFor=e}get control(){return this.attachableController.control}set control(e){this.attachableController.control=e}attach(e){this.attachableController.attach(e)}detach(){this.attachableController.detach()}connectedCallback(){super.connectedCallback(),this.setAttribute("aria-hidden","true")}render(){const e={hovered:this.hovered,pressed:this.pressed};return c.html`<div class="surface ${F.classMap(e)}"></div>`}update(e){e.has("disabled")&&this.disabled&&(this.hovered=!1,this.pressed=!1),super.update(e)}handlePointerenter(e){this.shouldReactToEvent(e)&&(this.hovered=!0)}handlePointerleave(e){this.shouldReactToEvent(e)&&(this.hovered=!1,this.state!==h.INACTIVE&&this.endPressAnimation())}handlePointerup(e){if(this.shouldReactToEvent(e)){if(this.state!==h.HOLDING)return this.state===h.TOUCH_DELAY?(this.state=h.WAITING_FOR_CLICK,void this.startPressAnimation(this.rippleStartEvent)):void 0;this.state=h.WAITING_FOR_CLICK}}async handlePointerdown(e){if(this.shouldReactToEvent(e)){if(this.rippleStartEvent=e,!this.isTouch(e))return this.state=h.WAITING_FOR_CLICK,void this.startPressAnimation(e);this.state=h.TOUCH_DELAY,await new Promise(t=>{setTimeout(t,150)}),this.state===h.TOUCH_DELAY&&(this.state=h.HOLDING,this.startPressAnimation(e))}}handleClick(){this.disabled||(this.state!==h.WAITING_FOR_CLICK?this.state===h.INACTIVE&&(this.startPressAnimation(),this.endPressAnimation()):this.endPressAnimation())}handlePointercancel(e){this.shouldReactToEvent(e)&&this.endPressAnimation()}handleContextmenu(){this.disabled||this.endPressAnimation()}determineRippleSize(){const{height:e,width:t}=this.getBoundingClientRect(),r=Math.max(e,t),i=Math.max(.35*r,75),a=this.currentCSSZoom??1,s=Math.floor(.2*r/a),l=Math.sqrt(t**2+e**2)+10;this.initialSize=s;const m=(l+i)/s;this.rippleScale=""+m/a,this.rippleSize=`${s}px`}getNormalizedPointerEventCoords(e){const{scrollX:t,scrollY:r}=window,{left:i,top:a}=this.getBoundingClientRect(),s=t+i,l=r+a,{pageX:m,pageY:y}=e,M=this.currentCSSZoom??1;return{x:(m-s)/M,y:(y-l)/M}}getTranslationCoordinates(e){const{height:t,width:r}=this.getBoundingClientRect(),i=this.currentCSSZoom??1,a={x:(r/i-this.initialSize)/2,y:(t/i-this.initialSize)/2};let s;return s=e instanceof PointerEvent?this.getNormalizedPointerEventCoords(e):{x:r/i/2,y:t/i/2},s={x:s.x-this.initialSize/2,y:s.y-this.initialSize/2},{startPoint:s,endPoint:a}}startPressAnimation(e){if(!this.mdRoot)return;this.pressed=!0,this.growAnimation?.cancel(),this.determineRippleSize();const{startPoint:t,endPoint:r}=this.getTranslationCoordinates(e),i=`${t.x}px, ${t.y}px`,a=`${r.x}px, ${r.y}px`;this.growAnimation=this.mdRoot.animate({top:[0,0],left:[0,0],height:[this.rippleSize,this.rippleSize],width:[this.rippleSize,this.rippleSize],transform:[`translate(${i}) scale(1)`,`translate(${a}) scale(${this.rippleScale})`]},{pseudoElement:"::after",duration:450,easing:W,fill:"forwards"})}async endPressAnimation(){this.rippleStartEvent=void 0,this.state=h.INACTIVE;const e=this.growAnimation;let t=1/0;typeof e?.currentTime=="number"?t=e.currentTime:e?.currentTime&&(t=e.currentTime.to("ms").value),t>=225?this.pressed=!1:(await new Promise(r=>{setTimeout(r,225-t)}),this.growAnimation===e&&(this.pressed=!1))}shouldReactToEvent(e){if(this.disabled||!e.isPrimary||this.rippleStartEvent&&this.rippleStartEvent.pointerId!==e.pointerId)return!1;if(e.type==="pointerenter"||e.type==="pointerleave")return!this.isTouch(e);const t=e.buttons===1;return this.isTouch(e)||t}isTouch({pointerType:e}){return e==="touch"}async handleEvent(e){if(!Z?.matches)switch(e.type){case"click":this.handleClick();break;case"contextmenu":this.handleContextmenu();break;case"pointercancel":this.handlePointercancel(e);break;case"pointerdown":await this.handlePointerdown(e);break;case"pointerenter":this.handlePointerenter(e);break;case"pointerleave":this.handlePointerleave(e);break;case"pointerup":this.handlePointerup(e)}}onControlChange(e,t){if(!c.isServer)for(const r of j)e?.removeEventListener(r,this),t?.addEventListener(r,this)}}d.t([n.property({type:Boolean,reflect:!0})],f.prototype,"disabled",void 0),d.t([n.state()],f.prototype,"hovered",void 0),d.t([n.state()],f.prototype,"pressed",void 0),d.t([n.query(".surface")],f.prototype,"mdRoot",void 0);const X=c.css`:host{display:flex;margin:auto;pointer-events:none}:host([disabled]){display:none}@media(forced-colors: active){:host{display:none}}:host,.surface{border-radius:inherit;position:absolute;inset:0;overflow:hidden}.surface{-webkit-tap-highlight-color:rgba(0,0,0,0)}.surface::before,.surface::after{content:"";opacity:0;position:absolute}.surface::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));inset:0;transition:opacity 15ms linear,background-color 15ms linear}.surface::after{background:radial-gradient(closest-side, var(--md-ripple-pressed-color, var(--md-sys-color-on-surface, #1d1b20)) max(100% - 70px, 65%), transparent 100%);transform-origin:center center;transition:opacity 375ms linear}.hovered::before{background-color:var(--md-ripple-hover-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-ripple-hover-opacity, 0.08)}.pressed::after{opacity:var(--md-ripple-pressed-opacity, 0.12);transition-duration:105ms}
3
- `;let w=class extends f{};w.styles=[X],w=d.t([n.customElement("md-ripple")],w);const B=["role","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaCurrent","ariaDisabled","ariaExpanded","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabel","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText"],J=B.map(_);function S(o){return J.includes(o)}function _(o){return o.replace("aria","aria-").replace(/Elements?/g,"").toLowerCase()}const g=Symbol("privateIgnoreAttributeChangesFor");function E(o){return`data-${o}`}function A(o){return o.replace(/-\w/,e=>e[1].toUpperCase())}function Q(o){return o.currentTarget===o.target&&o.composedPath()[0]===o.target&&!o.target.disabled&&!(function(e){const t=I;return t&&(e.preventDefault(),e.stopImmediatePropagation()),(async function(){I=!0,await null,I=!1})(),t})(o)}let I=!1;const p=Symbol("internals"),P=Symbol("privateInternals"),R=Symbol("createValidator"),V=Symbol("getValidityAnchor"),T=Symbol("privateValidator"),b=Symbol("privateSyncValidity"),k=Symbol("privateCustomValidationMessage"),x=Symbol("getFormValue"),L=Symbol("getFormState");class ee{constructor(e){this.getCurrentState=e,this.currentValidity={validity:{},validationMessage:""}}getValidity(){const e=this.getCurrentState();if(!(!this.prevState||!this.equals(this.prevState,e)))return this.currentValidity;const{validity:t,validationMessage:r}=this.computeValidity(e);return this.prevState=this.copy(e),this.currentValidity={validationMessage:r,validity:{badInput:t.badInput,customError:t.customError,patternMismatch:t.patternMismatch,rangeOverflow:t.rangeOverflow,rangeUnderflow:t.rangeUnderflow,stepMismatch:t.stepMismatch,tooLong:t.tooLong,tooShort:t.tooShort,typeMismatch:t.typeMismatch,valueMissing:t.valueMissing}},this.currentValidity}}class te extends ee{computeValidity(e){return this.checkboxControl||(this.checkboxControl=document.createElement("input"),this.checkboxControl.type="checkbox"),this.checkboxControl.checked=e.checked,this.checkboxControl.required=e.required,{validity:this.checkboxControl.validity,validationMessage:this.checkboxControl.validationMessage}}equals(e,t){return e.checked===t.checked&&e.required===t.required}copy({checked:e,required:t}){return{checked:e,required:t}}}const re=(function(o){var e;if(c.isServer)return o;class t extends o{constructor(){super(...arguments),this[e]=new Set}attributeChangedCallback(i,a,s){if(!S(i))return void super.attributeChangedCallback(i,a,s);if(this[g].has(i))return;this[g].add(i),this.removeAttribute(i),this[g].delete(i);const l=A(i);s===null?delete this.dataset[l]:this.dataset[l]=s,this.requestUpdate(A(i),a)}getAttribute(i){return S(i)?super.getAttribute(E(i)):super.getAttribute(i)}removeAttribute(i){super.removeAttribute(i),S(i)&&(super.removeAttribute(E(i)),this.requestUpdate())}}return e=g,(function(r){for(const i of B){const a=_(i),s=E(a),l=A(a);r.createProperty(i,{attribute:a,noAccessor:!0}),r.createProperty(Symbol(s),{attribute:s,noAccessor:!0}),Object.defineProperty(r.prototype,i,{configurable:!0,enumerable:!0,get(){return this.dataset[l]??null},set(m){const y=this.dataset[l]??null;m!==y&&(m===null?delete this.dataset[l]:this.dataset[l]=m,this.requestUpdate(i,y))}})}})(t),t})((function(o){var e;class t extends o{constructor(){super(...arguments),this[e]=""}get validity(){return this[b](),this[p].validity}get validationMessage(){return this[b](),this[p].validationMessage}get willValidate(){return this[b](),this[p].willValidate}checkValidity(){return this[b](),this[p].checkValidity()}reportValidity(){return this[b](),this[p].reportValidity()}setCustomValidity(i){this[k]=i,this[b]()}requestUpdate(i,a,s){super.requestUpdate(i,a,s),this[b]()}firstUpdated(i){super.firstUpdated(i),this[b]()}[(e=k,b)](){if(c.isServer)return;this[T]||(this[T]=this[R]());const{validity:i,validationMessage:a}=this[T].getValidity(),s=!!this[k],l=this[k]||a;this[p].setValidity({...i,customError:s},l,this[V]()??void 0)}[R](){throw new Error("Implement [createValidator]")}[V](){throw new Error("Implement [getValidityAnchor]")}}return t})((function(o){class e extends o{get form(){return this[p].form}get labels(){return this[p].labels}get name(){return this.getAttribute("name")??""}set name(r){this.setAttribute("name",r)}get disabled(){return this.hasAttribute("disabled")}set disabled(r){this.toggleAttribute("disabled",r)}attributeChangedCallback(r,i,a){if(r==="name"||r==="disabled"){const s=r==="disabled"?i!==null:i;return void this.requestUpdate(r,s)}super.attributeChangedCallback(r,i,a)}requestUpdate(r,i,a){super.requestUpdate(r,i,a),this[p].setFormValue(this[x](),this[L]())}[x](){throw new Error("Implement [getFormValue]")}[L](){return this[x]()}formDisabledCallback(r){this.disabled=r}}return e.formAssociated=!0,d.t([n.property({noAccessor:!0})],e.prototype,"name",null),d.t([n.property({type:Boolean,noAccessor:!0})],e.prototype,"disabled",null),e})(($=c.LitElement,class extends ${get[p](){return this[P]||(this[P]=this.attachInternals()),this[P]}}))));var $;class u extends re{constructor(){super(),this.checked=!1,this.indeterminate=!1,this.required=!1,this.value="on",this.prevChecked=!1,this.prevDisabled=!1,this.prevIndeterminate=!1,c.isServer||this.addEventListener("click",e=>{Q(e)&&this.input&&(this.focus(),(function(t){const r=new MouseEvent("click",{bubbles:!0});t.dispatchEvent(r)})(this.input))})}update(e){(e.has("checked")||e.has("disabled")||e.has("indeterminate"))&&(this.prevChecked=e.get("checked")??this.checked,this.prevDisabled=e.get("disabled")??this.disabled,this.prevIndeterminate=e.get("indeterminate")??this.indeterminate),super.update(e)}render(){const e=!this.prevChecked&&!this.prevIndeterminate,t=this.prevChecked&&!this.prevIndeterminate,r=this.prevIndeterminate,i=this.checked&&!this.indeterminate,a=this.indeterminate,s=F.classMap({disabled:this.disabled,selected:i||a,unselected:!i&&!a,checked:i,indeterminate:a,"prev-unselected":e,"prev-checked":t,"prev-indeterminate":r,"prev-disabled":this.prevDisabled}),{ariaLabel:l,ariaInvalid:m}=this;return c.html`
4
- <div class="container ${s}">
5
- <input
6
- type="checkbox"
7
- id="input"
8
- aria-checked=${a?"mixed":c.nothing}
9
- aria-label=${l||c.nothing}
10
- aria-invalid=${m||c.nothing}
11
- ?disabled=${this.disabled}
12
- ?required=${this.required}
13
- .indeterminate=${this.indeterminate}
14
- .checked=${this.checked}
15
- @input=${this.handleInput}
16
- @change=${this.handleChange} />
17
-
18
- <div class="outline"></div>
19
- <div class="background"></div>
20
- <md-focus-ring part="focus-ring" for="input"></md-focus-ring>
21
- <md-ripple for="input" ?disabled=${this.disabled}></md-ripple>
22
- <svg class="icon" viewBox="0 0 18 18" aria-hidden="true">
23
- <rect class="mark short" />
24
- <rect class="mark long" />
25
- </svg>
26
- </div>
27
- `}handleInput(e){const t=e.target;this.checked=t.checked,this.indeterminate=t.indeterminate}handleChange(e){(function(t,r){!r.bubbles||t.shadowRoot&&!r.composed||r.stopPropagation();const i=Reflect.construct(r.constructor,[r.type,r]);t.dispatchEvent(i)||r.preventDefault()})(this,e)}[x](){return!this.checked||this.indeterminate?null:this.value}[L](){return String(this.checked)}formResetCallback(){this.checked=this.hasAttribute("checked")}formStateRestoreCallback(e){this.checked=e==="true"}[R](){return new te(()=>this)}[V](){return this.input}}u.shadowRootOptions={...c.LitElement.shadowRootOptions,delegatesFocus:!0},d.t([n.property({type:Boolean})],u.prototype,"checked",void 0),d.t([n.property({type:Boolean})],u.prototype,"indeterminate",void 0),d.t([n.property({type:Boolean})],u.prototype,"required",void 0),d.t([n.property()],u.prototype,"value",void 0),d.t([n.state()],u.prototype,"prevChecked",void 0),d.t([n.state()],u.prototype,"prevDisabled",void 0),d.t([n.state()],u.prototype,"prevIndeterminate",void 0),d.t([n.query("input")],u.prototype,"input",void 0);const ie=c.css`:host{border-start-start-radius:var(--md-checkbox-container-shape-start-start, var(--md-checkbox-container-shape, 2px));border-start-end-radius:var(--md-checkbox-container-shape-start-end, var(--md-checkbox-container-shape, 2px));border-end-end-radius:var(--md-checkbox-container-shape-end-end, var(--md-checkbox-container-shape, 2px));border-end-start-radius:var(--md-checkbox-container-shape-end-start, var(--md-checkbox-container-shape, 2px));display:inline-flex;height:var(--md-checkbox-container-size, 18px);position:relative;vertical-align:top;width:var(--md-checkbox-container-size, 18px);-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer}:host([disabled]){cursor:default}:host([touch-target=wrapper]){margin:max(0px,(48px - var(--md-checkbox-container-size, 18px))/2)}md-focus-ring{height:44px;inset:unset;width:44px}input{appearance:none;height:48px;margin:0;opacity:0;outline:none;position:absolute;width:48px;z-index:1;cursor:inherit}:host([touch-target=none]) input{height:100%;width:100%}.container{border-radius:inherit;display:flex;height:100%;place-content:center;place-items:center;position:relative;width:100%}.outline,.background,.icon{inset:0;position:absolute}.outline,.background{border-radius:inherit}.outline{border-color:var(--md-checkbox-outline-color, var(--md-sys-color-on-surface-variant, #49454f));border-style:solid;border-width:var(--md-checkbox-outline-width, 2px);box-sizing:border-box}.background{background-color:var(--md-checkbox-selected-container-color, var(--md-sys-color-primary, #6750a4))}.background,.icon{opacity:0;transition-duration:150ms,50ms;transition-property:transform,opacity;transition-timing-function:cubic-bezier(0.3, 0, 0.8, 0.15),linear;transform:scale(0.6)}:where(.selected) :is(.background,.icon){opacity:1;transition-duration:350ms,50ms;transition-timing-function:cubic-bezier(0.05, 0.7, 0.1, 1),linear;transform:scale(1)}md-ripple{border-radius:var(--md-checkbox-state-layer-shape, var(--md-sys-shape-corner-full, 9999px));height:var(--md-checkbox-state-layer-size, 40px);inset:unset;width:var(--md-checkbox-state-layer-size, 40px);--md-ripple-hover-color: var(--md-checkbox-hover-state-layer-color, var(--md-sys-color-on-surface, #1d1b20));--md-ripple-hover-opacity: var(--md-checkbox-hover-state-layer-opacity, 0.08);--md-ripple-pressed-color: var(--md-checkbox-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--md-ripple-pressed-opacity: var(--md-checkbox-pressed-state-layer-opacity, 0.12)}.selected md-ripple{--md-ripple-hover-color: var(--md-checkbox-selected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--md-ripple-hover-opacity: var(--md-checkbox-selected-hover-state-layer-opacity, 0.08);--md-ripple-pressed-color: var(--md-checkbox-selected-pressed-state-layer-color, var(--md-sys-color-on-surface, #1d1b20));--md-ripple-pressed-opacity: var(--md-checkbox-selected-pressed-state-layer-opacity, 0.12)}.icon{fill:var(--md-checkbox-selected-icon-color, var(--md-sys-color-on-primary, #fff));height:var(--md-checkbox-icon-size, 18px);width:var(--md-checkbox-icon-size, 18px)}.mark.short{height:2px;transition-property:transform,height;width:2px}.mark.long{height:2px;transition-property:transform,width;width:10px}.mark{animation-duration:150ms;animation-timing-function:cubic-bezier(0.3, 0, 0.8, 0.15);transition-duration:150ms;transition-timing-function:cubic-bezier(0.3, 0, 0.8, 0.15)}.selected .mark{animation-duration:350ms;animation-timing-function:cubic-bezier(0.05, 0.7, 0.1, 1);transition-duration:350ms;transition-timing-function:cubic-bezier(0.05, 0.7, 0.1, 1)}.checked .mark,.prev-checked.unselected .mark{transform:scaleY(-1) translate(7px, -14px) rotate(45deg)}.checked .mark.short,.prev-checked.unselected .mark.short{height:5.6568542495px}.checked .mark.long,.prev-checked.unselected .mark.long{width:11.313708499px}.indeterminate .mark,.prev-indeterminate.unselected .mark{transform:scaleY(-1) translate(4px, -10px) rotate(0deg)}.prev-unselected .mark{transition-property:none}.prev-unselected.checked .mark.long{animation-name:prev-unselected-to-checked}@keyframes prev-unselected-to-checked{from{width:0}}:where(:hover) .outline{border-color:var(--md-checkbox-hover-outline-color, var(--md-sys-color-on-surface, #1d1b20));border-width:var(--md-checkbox-hover-outline-width, 2px)}:where(:hover) .background{background:var(--md-checkbox-selected-hover-container-color, var(--md-sys-color-primary, #6750a4))}:where(:hover) .icon{fill:var(--md-checkbox-selected-hover-icon-color, var(--md-sys-color-on-primary, #fff))}:where(:focus-within) .outline{border-color:var(--md-checkbox-focus-outline-color, var(--md-sys-color-on-surface, #1d1b20));border-width:var(--md-checkbox-focus-outline-width, 2px)}:where(:focus-within) .background{background:var(--md-checkbox-selected-focus-container-color, var(--md-sys-color-primary, #6750a4))}:where(:focus-within) .icon{fill:var(--md-checkbox-selected-focus-icon-color, var(--md-sys-color-on-primary, #fff))}:where(:active) .outline{border-color:var(--md-checkbox-pressed-outline-color, var(--md-sys-color-on-surface, #1d1b20));border-width:var(--md-checkbox-pressed-outline-width, 2px)}:where(:active) .background{background:var(--md-checkbox-selected-pressed-container-color, var(--md-sys-color-primary, #6750a4))}:where(:active) .icon{fill:var(--md-checkbox-selected-pressed-icon-color, var(--md-sys-color-on-primary, #fff))}:where(.disabled,.prev-disabled) :is(.background,.icon,.mark){animation-duration:0s;transition-duration:0s}:where(.disabled) .outline{border-color:var(--md-checkbox-disabled-outline-color, var(--md-sys-color-on-surface, #1d1b20));border-width:var(--md-checkbox-disabled-outline-width, 2px);opacity:var(--md-checkbox-disabled-container-opacity, 0.38)}:where(.selected.disabled) .outline{visibility:hidden}:where(.selected.disabled) .background{background:var(--md-checkbox-selected-disabled-container-color, var(--md-sys-color-on-surface, #1d1b20));opacity:var(--md-checkbox-selected-disabled-container-opacity, 0.38)}:where(.disabled) .icon{fill:var(--md-checkbox-selected-disabled-icon-color, var(--md-sys-color-surface, #fef7ff))}@media(forced-colors: active){.background{background-color:CanvasText}.selected.disabled .background{background-color:GrayText;opacity:1}.outline{border-color:CanvasText}.disabled .outline{border-color:GrayText;opacity:1}.icon{fill:Canvas}}
28
- `;let q=class extends u{};q.styles=[ie],q=d.t([n.customElement("md-checkbox")],q);var oe=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,v=(o,e,t,r)=>{for(var i,a=r>1?void 0:r?ae(e,t):e,s=o.length-1;s>=0;s--)(i=o[s])&&(a=(r?i(e,t,a):i(a))||a);return r&&a&&oe(e,t,a),a};exports.SchmancyCheckboxElement=class extends G.TailwindElement(){constructor(){super(...arguments),this.value=!1,this.disabled=!1,this.required=!1,this.name="checkbox-"+Math.random().toString(36),this.id="checkbox-"+Math.random().toString(36),this.size="md"}get form(){return this.internals?.form}get checked(){return this.value}set checked(o){this.value=o}connectedCallback(){super.connectedCallback()}render(){return c.html`
29
- <label class="grid grid-flow-col items-center space-x-2 w-fit">
30
- <md-checkbox
31
- .required=${this.required}
32
- .disabled=${this.disabled}
33
- ?checked=${this.value===!0}
34
- @change=${o=>{this.value=o.target.checked,this.dispatchEvent(new CustomEvent("change",{detail:{value:this.value}}))}}
35
- >
36
- </md-checkbox>
37
- ${H.when(this.label,()=>c.html`<span>${this.label}</span>`,()=>c.html`<slot></slot>`)}
38
- </label>
39
- `}},exports.SchmancyCheckboxElement.shadowRootOptions={...c.LitElement.shadowRootOptions,delegatesFocus:!0},exports.SchmancyCheckboxElement.formAssociated=!0,v([n.property({type:Boolean,reflect:!0})],exports.SchmancyCheckboxElement.prototype,"value",2),v([n.property({type:Boolean})],exports.SchmancyCheckboxElement.prototype,"checked",1),v([n.property({type:Boolean})],exports.SchmancyCheckboxElement.prototype,"disabled",2),v([n.property({type:Boolean})],exports.SchmancyCheckboxElement.prototype,"required",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"name",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"id",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"label",2),v([n.property({type:String})],exports.SchmancyCheckboxElement.prototype,"size",2),exports.SchmancyCheckboxElement=v([n.customElement("schmancy-checkbox")],exports.SchmancyCheckboxElement);
40
- //# sourceMappingURL=checkbox-BnAlpsJN.cjs.map