@mhmo91/schmancy 0.2.108 → 0.2.110

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 (222) hide show
  1. package/dist/{animated-text-gc7T0HLa.js → animated-text-DVOOMC1D.js} +3 -3
  2. package/dist/{animated-text-gc7T0HLa.js.map → animated-text-DVOOMC1D.js.map} +1 -1
  3. package/dist/{animated-text-B-gRGTS2.cjs → animated-text-DlKO_Vrs.cjs} +2 -2
  4. package/dist/{animated-text-B-gRGTS2.cjs.map → animated-text-DlKO_Vrs.cjs.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/{area.component--h6lcDbh.cjs → area.component-CsuNu7IV.cjs} +2 -2
  9. package/dist/{area.component--h6lcDbh.cjs.map → area.component-CsuNu7IV.cjs.map} +1 -1
  10. package/dist/{area.component-D9jjR4-z.js → area.component-DjuS-Jbn.js} +3 -3
  11. package/dist/{area.component-D9jjR4-z.js.map → area.component-DjuS-Jbn.js.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-DNypXTYG.js → autocomplete-DfMYQcMT.js} +3 -3
  14. package/dist/{autocomplete-DNypXTYG.js.map → autocomplete-DfMYQcMT.js.map} +1 -1
  15. package/dist/{autocomplete-Ct3zhedL.cjs → autocomplete-M8WGHj-g.cjs} +2 -2
  16. package/dist/{autocomplete-Ct3zhedL.cjs.map → autocomplete-M8WGHj-g.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/busy.cjs +1 -1
  20. package/dist/busy.js +1 -1
  21. package/dist/button.cjs +1 -1
  22. package/dist/button.js +1 -1
  23. package/dist/card.cjs +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/{checkbox-VYAzANWi.cjs → checkbox-4_xm2-8p.cjs} +2 -2
  26. package/dist/{checkbox-VYAzANWi.cjs.map → checkbox-4_xm2-8p.cjs.map} +1 -1
  27. package/dist/{checkbox-DxHSWouk.js → checkbox-DjOoDL3Z.js} +2 -2
  28. package/dist/{checkbox-DxHSWouk.js.map → checkbox-DjOoDL3Z.js.map} +1 -1
  29. package/dist/checkbox.cjs +1 -1
  30. package/dist/checkbox.js +1 -1
  31. package/dist/{chips-BL6vlm9-.js → chips-BiH92xO_.js} +3 -3
  32. package/dist/{chips-BL6vlm9-.js.map → chips-BiH92xO_.js.map} +1 -1
  33. package/dist/{chips-SxuwP65D.cjs → chips-CQiuGfz9.cjs} +2 -2
  34. package/dist/{chips-SxuwP65D.cjs.map → chips-CQiuGfz9.cjs.map} +1 -1
  35. package/dist/chips.cjs +1 -1
  36. package/dist/chips.js +1 -1
  37. package/dist/components.cjs +1 -1
  38. package/dist/components.js +1 -1
  39. package/dist/content-drawer.cjs +1 -1
  40. package/dist/content-drawer.js +1 -1
  41. package/dist/{date-range-BKcjHwBs.cjs → date-range-B48asllR.cjs} +2 -2
  42. package/dist/{date-range-BKcjHwBs.cjs.map → date-range-B48asllR.cjs.map} +1 -1
  43. package/dist/{date-range-CUnECMbS.js → date-range-L44lnjhw.js} +3 -3
  44. package/dist/{date-range-CUnECMbS.js.map → date-range-L44lnjhw.js.map} +1 -1
  45. package/dist/date-range.cjs +1 -1
  46. package/dist/date-range.js +1 -1
  47. package/dist/{delay-6t2zn7t4.js → delay-CEuQodz9.js} +2 -2
  48. package/dist/{delay-6t2zn7t4.js.map → delay-CEuQodz9.js.map} +1 -1
  49. package/dist/{delay-_tsTZ2IL.cjs → delay-ClXoku51.cjs} +2 -2
  50. package/dist/{delay-_tsTZ2IL.cjs.map → delay-ClXoku51.cjs.map} +1 -1
  51. package/dist/delay.cjs +1 -1
  52. package/dist/delay.js +1 -1
  53. package/dist/{divider-DZ_aPVkO.cjs → divider-BI9weq1x.cjs} +2 -2
  54. package/dist/{divider-DZ_aPVkO.cjs.map → divider-BI9weq1x.cjs.map} +1 -1
  55. package/dist/{divider-CdjlZINp.js → divider-Ov02T5Fs.js} +3 -3
  56. package/dist/{divider-CdjlZINp.js.map → divider-Ov02T5Fs.js.map} +1 -1
  57. package/dist/divider.cjs +1 -1
  58. package/dist/divider.js +1 -1
  59. package/dist/{flex-CxlUwIat.js → flex-05flA0jO.js} +2 -2
  60. package/dist/{flex-CxlUwIat.js.map → flex-05flA0jO.js.map} +1 -1
  61. package/dist/{flex-BONU-PFy.cjs → flex-DGkaKhhw.cjs} +2 -2
  62. package/dist/{flex-BONU-PFy.cjs.map → flex-DGkaKhhw.cjs.map} +1 -1
  63. package/dist/{form-CD_4LDVO.cjs → form-Cxd2Gv-H.cjs} +2 -2
  64. package/dist/{form-CD_4LDVO.cjs.map → form-Cxd2Gv-H.cjs.map} +1 -1
  65. package/dist/{form-CRprmM0w.js → form-Cz7y2wCT.js} +2 -2
  66. package/dist/{form-CRprmM0w.js.map → form-Cz7y2wCT.js.map} +1 -1
  67. package/dist/form.cjs +1 -1
  68. package/dist/form.js +1 -1
  69. package/dist/{icon-rVYBp2x-.js → icon-C3FJZ48a.js} +3 -3
  70. package/dist/{icon-rVYBp2x-.js.map → icon-C3FJZ48a.js.map} +1 -1
  71. package/dist/{icon-CHArNkiO.cjs → icon-C8_DfC7_.cjs} +2 -2
  72. package/dist/{icon-CHArNkiO.cjs.map → icon-C8_DfC7_.cjs.map} +1 -1
  73. package/dist/{icon-button-Bj7wtydv.cjs → icon-button-ChK-DjdA.cjs} +2 -2
  74. package/dist/{icon-button-Bj7wtydv.cjs.map → icon-button-ChK-DjdA.cjs.map} +1 -1
  75. package/dist/{icon-button-DtoWe88O.js → icon-button-DTiU4XLv.js} +3 -3
  76. package/dist/{icon-button-DtoWe88O.js.map → icon-button-DTiU4XLv.js.map} +1 -1
  77. package/dist/icons.cjs +1 -1
  78. package/dist/icons.js +1 -1
  79. package/dist/index.cjs +1 -1
  80. package/dist/index.js +33 -33
  81. package/dist/{input-jRmXX3rp.cjs → input-IHvsWbQB.cjs} +2 -2
  82. package/dist/{input-jRmXX3rp.cjs.map → input-IHvsWbQB.cjs.map} +1 -1
  83. package/dist/{input-Ctt6mtZc.js → input-M-qJTNjt.js} +2 -2
  84. package/dist/{input-Ctt6mtZc.js.map → input-M-qJTNjt.js.map} +1 -1
  85. package/dist/input.cjs +1 -1
  86. package/dist/input.js +1 -1
  87. package/dist/layout.cjs +1 -1
  88. package/dist/layout.js +1 -1
  89. package/dist/{list-6C-kQqCi.js → list-BWqWQl65.js} +2 -2
  90. package/dist/{list-6C-kQqCi.js.map → list-BWqWQl65.js.map} +1 -1
  91. package/dist/{list-BZ55pU5L.cjs → list-CiPO2APk.cjs} +2 -2
  92. package/dist/{list-BZ55pU5L.cjs.map → list-CiPO2APk.cjs.map} +1 -1
  93. package/dist/list.cjs +1 -1
  94. package/dist/list.js +1 -1
  95. package/dist/{litElement.mixin-B43tuAsM.js → litElement.mixin-CmIssdvT.js} +2 -2
  96. package/dist/{litElement.mixin-B43tuAsM.js.map → litElement.mixin-CmIssdvT.js.map} +1 -1
  97. package/dist/{litElement.mixin-9sOZ1KTq.cjs → litElement.mixin-DhNtGNmS.cjs} +2 -2
  98. package/dist/{litElement.mixin-9sOZ1KTq.cjs.map → litElement.mixin-DhNtGNmS.cjs.map} +1 -1
  99. package/dist/{menu-D0izP8_9.js → menu-CBGSAgDq.js} +3 -3
  100. package/dist/{menu-D0izP8_9.js.map → menu-CBGSAgDq.js.map} +1 -1
  101. package/dist/{menu-Bd6Yleqx.cjs → menu-DyYcxMo9.cjs} +2 -2
  102. package/dist/{menu-Bd6Yleqx.cjs.map → menu-DyYcxMo9.cjs.map} +1 -1
  103. package/dist/menu.cjs +1 -1
  104. package/dist/menu.js +1 -1
  105. package/dist/nav-drawer.cjs +1 -1
  106. package/dist/nav-drawer.js +1 -1
  107. package/dist/notification.cjs +1 -1
  108. package/dist/notification.js +1 -1
  109. package/dist/{option-CxIpiUcJ.js → option-BMehxrZp.js} +2 -2
  110. package/dist/{option-CxIpiUcJ.js.map → option-BMehxrZp.js.map} +1 -1
  111. package/dist/{option-CLhNC_i9.cjs → option-DbUli08g.cjs} +2 -2
  112. package/dist/{option-CLhNC_i9.cjs.map → option-DbUli08g.cjs.map} +1 -1
  113. package/dist/option.cjs +1 -1
  114. package/dist/option.js +1 -1
  115. package/dist/outlet-CcJZw_-p.cjs +24 -0
  116. package/dist/outlet-CcJZw_-p.cjs.map +1 -0
  117. package/dist/outlet-Dn_2_r0T.js +78 -0
  118. package/dist/outlet-Dn_2_r0T.js.map +1 -0
  119. package/dist/{payment-card-form-BwmcjAMM.js → payment-card-form-IuFrmEnf.js} +3 -3
  120. package/dist/{payment-card-form-BwmcjAMM.js.map → payment-card-form-IuFrmEnf.js.map} +1 -1
  121. package/dist/{payment-card-form-CQB_MKO_.cjs → payment-card-form-bxddazUs.cjs} +2 -2
  122. package/dist/{payment-card-form-CQB_MKO_.cjs.map → payment-card-form-bxddazUs.cjs.map} +1 -1
  123. package/dist/{radio-group-BwJ-r3hy.cjs → radio-group-BccKUiKW.cjs} +2 -2
  124. package/dist/{radio-group-BwJ-r3hy.cjs.map → radio-group-BccKUiKW.cjs.map} +1 -1
  125. package/dist/{radio-group-BvtrNylW.js → radio-group-CzjbJO0T.js} +2 -2
  126. package/dist/{radio-group-BvtrNylW.js.map → radio-group-CzjbJO0T.js.map} +1 -1
  127. package/dist/radio-group.cjs +1 -1
  128. package/dist/radio-group.js +1 -1
  129. package/dist/{select-DOTwG1aT.cjs → select-BS2sXDR9.cjs} +2 -2
  130. package/dist/{select-DOTwG1aT.cjs.map → select-BS2sXDR9.cjs.map} +1 -1
  131. package/dist/{select-D6nFemFx.js → select-BhPMWNbW.js} +3 -3
  132. package/dist/{select-D6nFemFx.js.map → select-BhPMWNbW.js.map} +1 -1
  133. package/dist/select.cjs +1 -1
  134. package/dist/select.js +1 -1
  135. package/dist/{sheet-Y-ULBa4y.js → sheet-CwwT5thu.js} +3 -3
  136. package/dist/{sheet-Y-ULBa4y.js.map → sheet-CwwT5thu.js.map} +1 -1
  137. package/dist/{sheet-C_gzbR0e.cjs → sheet-DOwu96wF.cjs} +2 -2
  138. package/dist/{sheet-C_gzbR0e.cjs.map → sheet-DOwu96wF.cjs.map} +1 -1
  139. package/dist/sheet.cjs +1 -1
  140. package/dist/sheet.js +1 -1
  141. package/dist/{slider-uzR2YTuo.cjs → slider-BAESvAar.cjs} +2 -2
  142. package/dist/{slider-uzR2YTuo.cjs.map → slider-BAESvAar.cjs.map} +1 -1
  143. package/dist/{slider-CFLiNdqN.js → slider-D7m05_ay.js} +3 -3
  144. package/dist/{slider-CFLiNdqN.js.map → slider-D7m05_ay.js.map} +1 -1
  145. package/dist/slider.cjs +1 -1
  146. package/dist/slider.js +1 -1
  147. package/dist/{spinner-DisHMwJU.cjs → spinner-7jk2tm5-.cjs} +2 -2
  148. package/dist/{spinner-DisHMwJU.cjs.map → spinner-7jk2tm5-.cjs.map} +1 -1
  149. package/dist/{spinner-Ca50o0jU.js → spinner-CoNNKh0e.js} +3 -3
  150. package/dist/{spinner-Ca50o0jU.js.map → spinner-CoNNKh0e.js.map} +1 -1
  151. package/dist/{surface-jiFO8Fq-.cjs → surface-DaLDGARV.cjs} +2 -2
  152. package/dist/{surface-jiFO8Fq-.cjs.map → surface-DaLDGARV.cjs.map} +1 -1
  153. package/dist/{surface-D_qD1cZj.js → surface-oLJxHIii.js} +2 -2
  154. package/dist/{surface-D_qD1cZj.js.map → surface-oLJxHIii.js.map} +1 -1
  155. package/dist/surface.cjs +1 -1
  156. package/dist/surface.js +1 -1
  157. package/dist/{table-B2-vIMmg.cjs → table-BcHZEysB.cjs} +2 -2
  158. package/dist/{table-B2-vIMmg.cjs.map → table-BcHZEysB.cjs.map} +1 -1
  159. package/dist/{table-QyTaL_m4.js → table-CniLq7FP.js} +2 -2
  160. package/dist/{table-QyTaL_m4.js.map → table-CniLq7FP.js.map} +1 -1
  161. package/dist/table.cjs +1 -1
  162. package/dist/table.js +1 -1
  163. package/dist/{tabs-group-DIkk0A7J.cjs → tabs-group-B78YHrsf.cjs} +2 -2
  164. package/dist/{tabs-group-DIkk0A7J.cjs.map → tabs-group-B78YHrsf.cjs.map} +1 -1
  165. package/dist/{tabs-group-CWM0kWDK.js → tabs-group-BtEJCfxW.js} +2 -2
  166. package/dist/{tabs-group-CWM0kWDK.js.map → tabs-group-BtEJCfxW.js.map} +1 -1
  167. package/dist/tabs.cjs +1 -1
  168. package/dist/tabs.js +1 -1
  169. package/dist/tailwind.mixin-BqYiHta7.js +43 -0
  170. package/dist/{tailwind.mixin-ECkyl80C.js.map → tailwind.mixin-BqYiHta7.js.map} +1 -1
  171. package/dist/tailwind.mixin-HfEdtDL9.cjs +2 -0
  172. package/dist/{tailwind.mixin-DFM3jd9q.cjs.map → tailwind.mixin-HfEdtDL9.cjs.map} +1 -1
  173. package/dist/teleport.cjs +1 -1
  174. package/dist/{teleport.component-Brodt-vU.js → teleport.component-CexA5J_f.js} +35 -35
  175. package/dist/{teleport.component-Brodt-vU.js.map → teleport.component-CexA5J_f.js.map} +1 -1
  176. package/dist/{teleport.component-DeCJJ0wk.cjs → teleport.component-Dr3mMZpf.cjs} +2 -2
  177. package/dist/{teleport.component-DeCJJ0wk.cjs.map → teleport.component-Dr3mMZpf.cjs.map} +1 -1
  178. package/dist/teleport.js +1 -1
  179. package/dist/{textarea-hbpsxkKy.cjs → textarea-B9raf8_D.cjs} +2 -2
  180. package/dist/{textarea-hbpsxkKy.cjs.map → textarea-B9raf8_D.cjs.map} +1 -1
  181. package/dist/{textarea-BMSNswLn.js → textarea-BxFi32D9.js} +2 -2
  182. package/dist/{textarea-BMSNswLn.js.map → textarea-BxFi32D9.js.map} +1 -1
  183. package/dist/textarea.cjs +1 -1
  184. package/dist/textarea.js +1 -1
  185. package/dist/{theme-button-BoAxkMWO.js → theme-button-BKEGXvgI.js} +2 -2
  186. package/dist/{theme-button-BoAxkMWO.js.map → theme-button-BKEGXvgI.js.map} +1 -1
  187. package/dist/{theme-button-CsWs0AS9.cjs → theme-button-DoJnYU3H.cjs} +2 -2
  188. package/dist/{theme-button-CsWs0AS9.cjs.map → theme-button-DoJnYU3H.cjs.map} +1 -1
  189. package/dist/theme-button.cjs +1 -1
  190. package/dist/theme-button.js +1 -1
  191. package/dist/theme.cjs +1 -1
  192. package/dist/{theme.component-BIjHKguL.js → theme.component-BNn_72QE.js} +2 -2
  193. package/dist/{theme.component-BIjHKguL.js.map → theme.component-BNn_72QE.js.map} +1 -1
  194. package/dist/{theme.component-BYbrrqK3.cjs → theme.component-CXo8UXgG.cjs} +2 -2
  195. package/dist/{theme.component-BYbrrqK3.cjs.map → theme.component-CXo8UXgG.cjs.map} +1 -1
  196. package/dist/theme.js +1 -1
  197. package/dist/{tree-OqMXhWak.cjs → tree-Fx-Zhp0w.cjs} +2 -2
  198. package/dist/{tree-OqMXhWak.cjs.map → tree-Fx-Zhp0w.cjs.map} +1 -1
  199. package/dist/{tree-YkLiYcr_.js → tree-GRbYc_5D.js} +2 -2
  200. package/dist/{tree-YkLiYcr_.js.map → tree-GRbYc_5D.js.map} +1 -1
  201. package/dist/tree.cjs +1 -1
  202. package/dist/tree.js +1 -1
  203. package/dist/{typewriter-I6nigRrM.cjs → typewriter-DSOyGh9X.cjs} +2 -2
  204. package/dist/{typewriter-I6nigRrM.cjs.map → typewriter-DSOyGh9X.cjs.map} +1 -1
  205. package/dist/{typewriter-Dn4nHKtu.js → typewriter-DdSoLHgM.js} +4 -4
  206. package/dist/{typewriter-Dn4nHKtu.js.map → typewriter-DdSoLHgM.js.map} +1 -1
  207. package/dist/typewriter.cjs +1 -1
  208. package/dist/typewriter.js +1 -1
  209. package/dist/{typography-BXJ-xs12.js → typography-DtXgIuFu.js} +2 -2
  210. package/dist/{typography-BXJ-xs12.js.map → typography-DtXgIuFu.js.map} +1 -1
  211. package/dist/{typography-CMNtjzZE.cjs → typography-ZVK1c0Z3.cjs} +2 -2
  212. package/dist/{typography-CMNtjzZE.cjs.map → typography-ZVK1c0Z3.cjs.map} +1 -1
  213. package/dist/typography.cjs +1 -1
  214. package/dist/typography.js +1 -1
  215. package/package.json +1 -1
  216. package/types/src/notification/notification.d.ts +3 -1
  217. package/dist/outlet-IKjizKaN.cjs +0 -30
  218. package/dist/outlet-IKjizKaN.cjs.map +0 -1
  219. package/dist/outlet-Us3Wi-TE.js +0 -81
  220. package/dist/outlet-Us3Wi-TE.js.map +0 -1
  221. package/dist/tailwind.mixin-DFM3jd9q.cjs +0 -2
  222. package/dist/tailwind.mixin-ECkyl80C.js +0 -43
@@ -1 +1 @@
1
- {"version":3,"file":"input-jRmXX3rp.cjs","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement() {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","validity","options","Event","click","blur","render","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"input-IHvsWbQB.cjs","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement() {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","validity","options","Event","click","blur","render","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"slBAoCA,IAAqBA,EAArB,cAA2CC,EAAAA,gBAiI1C,CAAA,CAAA,aAEC,CAAA,GADMC,MAzHPC,EAAAA,KAAgBC,GAAK,GAMeD,KAAAE,MAAA,GAMpCF,KAAOG,KAAiC,OAMxCH,KAAOI,KAAO,QAAQC,KAAKC,IAG3BN,CAAAA,GAAAA,KAAOO,YAAc,GAIrBP,KAAOQ,MAAQ,GAQfR,KAAOS,SAAW,GAIlBT,KAAOU,SAAAA,GAIPV,KAAOW,SAAW,GAG0BX,KAAOY,UAAY,GAI/DZ,KAAOa,WAAAA,GAOPb,KAAOc,MAAqC,OAuB5Cd,KAAOe,UAAAA,GAIPf,KAAOgB,aAAyB,KAMhChB,KAAOiB,SAAW,EAalBjB,KAAOkB,MAAQ,GAMflB,KAAQmB,SAAWC,cAed,oBAAqBpB,KACpB,GACEA,CAAAA,KAAAqB,UAAYrB,KAAKsB,gBAAgB,CAAA,MAGtCtB,CAAAA,KAAKqB,UAAY,MAAA,CAEnB,CAOkB,WAAWE,EACxBvB,CAAAA,KAAKC,KACJD,KAAAC,GAAK,kBAAkBJ,EAAc2B,cAE3CzB,MAAM0B,WAAWF,CAAY,CAAA,CAI9B,IAAIG,MAAAA,OACI,QAAA1B,EAAAA,KAAKqB,YAALrB,YAAAA,EAAgB0B,OAAQ,IAAA,CAGb,QAAQH,EAC1BxB,WAAAA,MAAM4B,QAAQJ,CACVA,EAAAA,EAAaK,IAAI,OAAA,KAEf5B,EAAAA,KAAAqB,YAAArB,MAAAA,EAAW6B,aAAa7B,KAAKQ,QAG/Be,EAAaK,IAAI,OAAA,IAEhB5B,KAAKkB,OACHlB,EAAAA,KAAAqB,YAAArB,MAAAA,EAAW8B,YAAY,CAAEC,YAAa,EAAA,EAAQ,gBAAiB/B,KAAKgC,eAEpEhC,EAAAA,KAAAqB,YAAArB,MAAAA,EAAW8B,YAAY,IAE9B,CASM,eACN,OAAA,QAAO9B,EAAAA,KAAKmB,SAASX,QAAdR,YAAAA,EAAqBiC,kBAAmB,EAAA,CAEzC,gBACN,OAAA,QAAOjC,EAAAA,KAAKmB,SAASX,QAAdR,YAAAA,EAAqBkC,mBAAAA,EAAoB,CAE1C,kBAAkBC,EACnBnC,QAAAA,EAAAA,KAAAmB,SAASX,QAATR,MAAAA,EAAgBoC,kBAAkBD,EAAO,CAM/C,cAEKnC,CAAAA,KAAKe,WACRf,KAAKqC,MAIgBC,EAAAA,EAAAA,UAAAtC,KAAKgC,aAAc,OACvCO,EAAAA,KACAC,EAAAA,IAAIC,GAAOA,EAAGC,OAA4BlC,KAAAA,EAC1CmC,yBACAC,EAAAA,UAAU5C,KAAK6C,aAAAA,CAAAA,EAEfC,UAAmBtC,GAAAA,CACnBR,KAAKQ,MAAQA,EAERR,KAAA+C,cACJ,IAAIC,YAA0B,QAAS,CACtCC,OAAQ,CAAEzC,MAAAA,CAAAA,EACV0C,QAAS,GACTC,SAAU,EAAA,CAAA,CAAA,EAIPnD,KAAA+C,cACJ,IAAIC,YAA0B,SAAU,CACvCC,OAAQ,CAAEzC,MACV0C,CAAAA,EAAAA,QAAAA,GACAC,SAAAA,EAEF,CAAA,CAAA,CAAA,CAAA,EAIeb,EAAAA,UAAAtC,KAAKgC,aAAc,QAClCO,EAAAA,KACAC,EAAAA,IAAIC,GAAOA,EAAGC,OAA4BlC,KAAAA,EAC1CmC,yBACAC,EAAAA,UAAU5C,KAAK6C,aAAAA,CAAAA,EAEfC,UAAmBtC,GACnBR,CAAAA,KAAKQ,MAAQA,EACRR,KAAA+C,cACJ,IAAIC,YAA0B,SAAU,CACvCC,OAAQ,CAAEzC,MACV0C,CAAAA,EAAAA,QAAAA,GACAC,SAAAA,EAEF,CAAA,CAAA,CAAA,CAAA,EAIuBb,EAAAA,UAAAtC,KAAKgC,aAAc,OAC1CO,EAAAA,KACAa,EAAAA,OAAOX,GAAMA,EAAGY,MAAQ,OAARA,EAChBT,EAAAA,UAAU5C,KAAK6C,aAEfC,CAAAA,EAAAA,UAAgBL,GACV,CAAA,KAAA,CAAAjC,MAAEA,CAAAA,EAAUiC,EAAGC,OACrB1C,KAAKQ,MAAQA,EACRR,KAAA+C,cACJ,IAAIC,YAA0B,QAAS,CACtCC,OAAQ,CAAEzC,MAAAA,CAAAA,EACV0C,QAAS,GACTC,SAAU,EAAA,CAAA,CAAA,CAEZ,CAIwBb,EAAAA,EAAAA,UAAAtC,KAAKgC,aAAc,gBAAA,EAC3CO,KACAa,EAAAA,OAAOX,GAAMA,EAAGa,gBAAkB,iBAAlBA,EAChBV,EAAAA,UAAU5C,KAAK6C,aAAAA,CAAAA,EAEfC,UAAgBL,GAAAA,CACV,KAAAjC,CAAAA,MAAEA,CAAUiC,EAAAA,EAAGC,OACrB1C,KAAKQ,MAAQA,EACRR,KAAA+C,cACJ,IAAIC,YAA0B,SAAU,CACvCC,OAAQ,CAAEzC,MACV0C,CAAAA,EAAAA,QAAAA,GACAC,SAAAA,EAEF,CAAA,CAAA,CAAA,CAAA,CACA,CAOI,QACC,OAAA,OAAAnD,EAAAA,KAAKmB,SAASX,QAAdR,YAAAA,EAAqBuD,QAAO,CAI7B,aACC,OAAA,OAAAvD,EAAAA,KAAKmB,SAASX,QAAdR,YAAAA,EAAqBwD,QAAA,CAOb,MAAMC,EAAAA,QAChBzD,EAAAA,KAAAmB,SAASX,QAATR,MAAAA,EAAgBqC,MAAMoB,GAC3BzD,KAAK+C,cAAc,IAAIW,MAAM,OAAA,CAAA,CAAQ,CAOtB,eACV1D,EAAAA,KAAAmB,SAASX,QAATR,MAAAA,EAAgB2D,QACrB3D,KAAK+C,cAAc,IAAIW,MAAM,OAAQ,CAAA,CAAA,CAItB,MAAAE,QACV5D,EAAAA,KAAAmB,SAASX,QAATR,MAAAA,EAAgB4D,OACrB5D,KAAK+C,cAAc,IAAIW,MAAM,MAAO,CAAA,CAAA,CAMlB,QAAAG,CAClB,MAAMC,EAAe,CACpB,mFAAA,GACA,6CAAA,GACA,kDAAA,GACA,yBAA0B,GAC1B,kDAAmD,GAEnD,mEAAqE9D,CAAAA,KAAKkB,MAE1E,8CAA+ClB,KAAKkB,MAEpD,yEAA0ElB,KAAKW,SAC/E,iBAAkBX,KAAKY,UAEvB,cAAeZ,KAAKc,QAAU,SAC9B,aAAcd,KAAKc,QAAU,OAAVA,EAGdiD,EAAe,CACpB,aAAc/D,KAAKU,SACnB,iBAAA,EASM,EAAA,OAAAsD,EAAAA;AAAAA,KACJC,EAAAA,KACDjE,KAAKE,MACL,IAAM8D,EAAAA;AAAAA;AAAAA,YAEEhE,KAAKC,EAAAA;AAAAA,kBACCD,KAAKC,EAAAA;AAAAA,cACTiE,EAAAA,SAASH,CAAAA,CAAAA;AAAAA,QACfI,QAAM,CACPA,MAAOnE,KAAKkB,MAAQkD,EAAAA,cAAcC,IAAIF,MAAMjD,MAAMoD,QAAUF,EAAAA,cAAcC,IAAIF,MAAMI,QAAQD,OAAAA,CAAAA,CAAAA;AAAAA;AAAAA,qDAG9CtE,KAAKE,KAAAA;AAAAA;AAAAA;;;MAMpDiE,QAAM,CACPK,QAASJ,EAAAA,cAAcC,IAAIF,MAAMM,QAAQC,QACzCP,MAAOC,EAAAA,cAAcC,IAAIF,MAAMM,QAAQE,EAAAA,CAAAA,CAAAA;AAAAA,MAEtCC,EAAAA,IAAI5E,KAAKmB,QAAAA,CAAAA;AAAAA,SACNnB,KAAKC,EAAAA;AAAAA,WACHD,KAAKI,IAAAA;AAAAA,YACJ8D,EAAAA,SAASJ,CAAAA,CAAAA;AAAAA,aACR9D,KAAKQ,KAAAA;AAAAA,YACNR,KAAKG,IAAAA;AAAAA,oBACGH,KAAKgB,YAAAA;AAAAA,kBACPhB,KAAKa,UAAAA;AAAAA,kBACLb,KAAKO,WAAAA;AAAAA,gBACPsE,EAAAA,UAAU7E,KAAK8E,SAAAA,CAAAA;AAAAA,cACjBD,EAAAA,UAAU7E,KAAK+E,OAAAA,CAAAA;AAAAA,WAClBF,EAAAA,UAAU7E,KAAKgF,IAAAA,CAAAA;AAAAA,gBACVH,EAAAA,UAAU7E,KAAKiF,SAAAA,CAAAA;AAAAA,gBACfJ,EAAAA,UAAU7E,KAAKkF,SAAAA,CAAAA;AAAAA,UACrBL,EAAAA,UAAU7E,KAAKmF,GAAAA,CAAAA;AAAAA,UACfN,EAAAA,UAAU7E,KAAKoF,GAAAA,CAAAA;AAAAA,gBACTpF,KAAKS,QAAAA;AAAAA,gBACLT,KAAKU,QAAAA;AAAAA,gBACLV,KAAKW,QAAAA;AAAAA,mBACFX,KAAKkB,MAAQ,OAAS,OAAA;AAAA,oBACrBlB,KAAKS,SAAW,OAAS,OAAA;AAAA,sBACvBT,KAAKE,MAAQ,SAASF,KAAKC,EAAAA,GAAOoF,EAAOA,OAAAA;AAAAA,uBACxCrF,KAAKsF,KAAO,QAAQtF,KAAKC,EAAAA,GAAOoF,EAAOA,OAAAA;AAAAA,iBAC7CR,EAAAA,UAAW7E,KAAKE,MAAsC,OAA9BF,KAAKO,aAAe,OAAA,CAAA;AAAA;AAAA;AAAA,KAGxD0D,EAAAA,KACDjE,KAAKsF,KACL,IAAMtB,EAAAA;AAAAA;AAAAA,iBAEOhE,KAAKC,EAAAA;AAAAA;AAAAA,QAEdkE,QAAM,CACPA,MAAOnE,KAAKkB,MAAQkD,EAAAA,cAAcC,IAAIF,MAAMjD,MAAMoD,QAAUF,EAAAA,cAAcC,IAAIF,MAAMI,QAAQD,OAAAA,CAAAA,CAAAA;AAAAA;AAAAA,wDAG3CtE,KAAKsF,IAAAA;AAAAA;AAAAA;GAGzD,CAAA,EA5ZiBzF,EAMb2B,WAAa,EANA3B,EAyHb0F,kBAzHa1F,EA0HH2F,kBAAoB,CAAA,GACjCC,EAAWA,WAAAD,kBACdE,eAAAA,IAnHeC,EAAA,CADfC,WAAS,CAAEC,QAAAA,EARQhG,CAAAA,CAAAA,EAAAA,EASJiG,UAAA,KAAA,CAAA,EAMYH,EAAA,CAA3BC,WAAS,CAAEzF,KAAM4F,MAAAA,CAAAA,CAAAA,EAfElG,EAeQiG,UAAA,QAAA,CAMrBH,EAAAA,EAAA,CADNC,WAAS,CAAEC,UApBQhG,CAAAA,CAAAA,EAAAA,EAqBbiG,UAAA,OAAA,GAMAH,EAAA,CADNC,EAASA,SAAAA,CAAAA,EA1BU/F,EA2BbiG,UAAA,OAAA,CAGAH,EAAAA,EAAA,CADNC,EAASA,SA7BU/F,CAAAA,EAAAA,EA8BbiG,UAAA,cAAA,CAAA,EAIAH,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM4F,OAAQF,UAjCNhG,CAAAA,CAAAA,EAAAA,EAkCbiG,UAAA,QAAA,CAIAH,EAAAA,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM4F,OAAQF,QAAAA,MArCNhG,EAsCbiG,UAAA,UAAA,CAAA,EAIAH,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM6F,QAASH,QAAS,EAAA,CAAA,CAAA,EAzChBhG,EA0CbiG,UAAA,WAAA,CAIAH,EAAAA,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM6F,QAASH,QAAS,EAAA,CAAA,CAAA,EA7ChBhG,EA8CbiG,UAAA,WAAA,CAAA,EAIAH,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM6F,QAASH,UAjDPhG,CAAAA,CAAAA,EAAAA,EAkDbiG,UAAA,WAAA,GAG4CH,EAAA,CAAlDC,EAAAA,SAAS,CAAEzF,KAAM6F,QAASH,QAAAA,MArDPhG,EAqD+BiG,UAAA,YAAA,CAAA,EAI5CH,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM6F,QAASH,QAAAA,EAxDPhG,CAAAA,CAAAA,EAAAA,EAyDbiG,UAAA,aAAA,CAOAH,EAAAA,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM4F,OAAQF,QAAAA,EA/DNhG,CAAAA,CAAAA,EAAAA,EAgEbiG,UAAA,QAAA,CAAA,EAIAH,EAAA,CADNC,EAASA,SAAAA,CAAAA,EAnEU/F,EAoEbiG,UAAA,YAAA,CAGAH,EAAAA,EAAA,CADNC,WAAS,CAAEzF,KAAM8F,MAtEEpG,CAAAA,CAAAA,EAAAA,EAuEbiG,UAAA,YAAA,CAAA,EAGAH,EAAA,CADNC,WAAS,CAAEzF,KAAM8F,UAzEEpG,EA0EbiG,UAAA,YAAA,CAAA,EAGAH,EAAA,CADNC,EAASA,SA5EU/F,CAAAA,EAAAA,EA6EbiG,UAAA,MAAA,CAAA,EAGAH,EAAA,CADNC,EAASA,SAAAA,CAAAA,EA/EU/F,EAgFbiG,UAAA,MAAA,CAGAH,EAAAA,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM8F,OAAQJ,QAAAA,MAlFNhG,EAmFbiG,UAAA,OAAA,CAAA,EAIAH,EAAA,CADNC,WAAS,CAAEzF,KAAM6F,OAAAA,CAAAA,CAAAA,EAtFEnG,EAuFbiG,UAAA,YAAA,CAIAH,EAAAA,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM4F,OAAQF,QAAAA,EA1FNhG,CAAAA,CAAAA,EAAAA,EA2FbiG,UAAA,eAAA,GAMAH,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM8F,OAAQJ,QAAS,EAAA,CAAA,CAAA,EAhGfhG,EAiGbiG,UAAA,WAAA,CAMAH,EAAAA,EAAA,CADNC,EAASA,SAtGU/F,CAAAA,EAAAA,EAuGbiG,UAAA,OAAA,CAAA,EAOAH,EAAA,CADNC,EAAAA,SAAS,CAAEzF,KAAM6F,QAASH,UA7GPhG,CAAAA,CAAAA,EAAAA,EA8GbiG,UAAA,QAAA,CAKiBH,EAAAA,EAAA,CAAvBO,EAAAA,MAAM,OAnHarG,CAAAA,EAAAA,EAmHIiG,UAAA,eAAA,GAnHJjG,EAArB8F,EAAA,CADCQ,EAAAA,cAAc,gBACMtG,CAAAA,EAAAA,CAAAA"}
@@ -6,7 +6,7 @@ import { createRef as R, ref as C } from "lit/directives/ref.js";
6
6
  import { when as v } from "lit/directives/when.js";
7
7
  import { fromEvent as h, map as g, distinctUntilChanged as $, takeUntil as c, filter as E } from "rxjs";
8
8
  import "lit/directives/style-map.js";
9
- import { T as V } from "./tailwind.mixin-ECkyl80C.js";
9
+ import { T as V } from "./tailwind.mixin-BqYiHta7.js";
10
10
  import { c as m } from "./ripple-BumgqsDT.js";
11
11
  import { S as p } from "./theme.interface-C5Kj6WjD.js";
12
12
  var q = Object.defineProperty, B = Object.getOwnPropertyDescriptor, i = (t, r, n, a) => {
@@ -132,4 +132,4 @@ let e = class extends V() {
132
132
  }
133
133
  };
134
134
  e._idCounter = 0, e.formAssociated = !0, e.shadowRootOptions = { ...x.shadowRootOptions, delegatesFocus: !0 }, i([s({ reflect: !0 })], e.prototype, "id", 2), i([s({ type: String })], e.prototype, "label", 2), i([s({ reflect: !0 })], e.prototype, "type", 2), i([s()], e.prototype, "name", 2), i([s()], e.prototype, "placeholder", 2), i([s({ type: String, reflect: !0 })], e.prototype, "value", 2), i([s({ type: String, reflect: !0 })], e.prototype, "pattern", 2), i([s({ type: Boolean, reflect: !0 })], e.prototype, "required", 2), i([s({ type: Boolean, reflect: !0 })], e.prototype, "disabled", 2), i([s({ type: Boolean, reflect: !0 })], e.prototype, "readonly", 2), i([s({ type: Boolean, reflect: !0 })], e.prototype, "clickable", 2), i([s({ type: Boolean, reflect: !0 })], e.prototype, "spellcheck", 2), i([s({ type: String, reflect: !0 })], e.prototype, "align", 2), i([s()], e.prototype, "inputmode", 2), i([s({ type: Number })], e.prototype, "minlength", 2), i([s({ type: Number })], e.prototype, "maxlength", 2), i([s()], e.prototype, "min", 2), i([s()], e.prototype, "max", 2), i([s({ type: Number, reflect: !0 })], e.prototype, "step", 2), i([s({ type: Boolean })], e.prototype, "autofocus", 2), i([s({ type: String, reflect: !0 })], e.prototype, "autocomplete", 2), i([s({ type: Number, reflect: !0 })], e.prototype, "tabIndex", 2), i([s()], e.prototype, "hint", 2), i([s({ type: Boolean, reflect: !0 })], e.prototype, "error", 2), i([w("input")], e.prototype, "inputElement", 2), e = i([k("schmancy-input")], e);
135
- //# sourceMappingURL=input-Ctt6mtZc.js.map
135
+ //# sourceMappingURL=input-M-qJTNjt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-Ctt6mtZc.js","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement() {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","firstUpdated","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","getValidity","validity","options","Event","click","blur","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"input-M-qJTNjt.js","sources":["../src/input/input.ts"],"sourcesContent":["import { html, LitElement, nothing, PropertyValueMap } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { when } from 'lit/directives/when.js'\nimport { distinctUntilChanged, filter, fromEvent, map, takeUntil } from 'rxjs'\n\nimport { TailwindElement } from '@mixins/index'\n\n// color directive + theme interface\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n// If you want to be form-associated, define the type on `ElementInternals`.\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-input': SchmancyInput\n\t}\n}\n\ntype EventDetails = {\n\tvalue: string\n}\n\n/**\n * Custom events the component may emit:\n * - 'input': on every keystroke\n * - 'change': on native blur/change\n * - 'enter': specifically when user presses Enter\n */\nexport type SchmancyInputInputEvent = CustomEvent<EventDetails>\nexport type SchmancyInputChangeEvent = CustomEvent<EventDetails>\nexport type SchmancyInputEnterEvent = CustomEvent<EventDetails>\n\n@customElement('schmancy-input')\nexport default class SchmancyInput extends TailwindElement() {\n\t// ----------------------------\n\t// A) Public properties\n\t// ----------------------------\n\n\t/** If user does NOT set `id`, we'll autogenerate one. */\n\tstatic _idCounter = 0\n\n\t@property({ reflect: true })\n\tpublic override id = ''\n\n\t/**\n\t * The label for the control. If populated, we render a `<label for=\"...\">`.\n\t * If empty, we add an `aria-label` to the <input> for better screenreader support.\n\t */\n\t@property({ type: String }) label = ''\n\n\t/**\n\t * The type of input. (e.g. 'text', 'password', 'email', etc.)\n\t */\n\t@property({ reflect: true })\n\tpublic type: HTMLInputElement['type'] = 'text'\n\n\t/**\n\t * Name attribute (for form submissions). By default, a unique fallback.\n\t */\n\t@property()\n\tpublic name = `name_${Date.now()}`\n\n\t@property()\n\tpublic placeholder = ''\n\n\t/** Current value of the input. */\n\t@property({ type: String, reflect: true })\n\tpublic value = ''\n\n\t/** Pattern validation attribute. */\n\t@property({ type: String, reflect: true })\n\tpublic pattern?: string\n\n\t/** Whether the control is required for form validation. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic required = false\n\n\t/** Whether the control is disabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic disabled = false\n\n\t/** Whether the input is read-only. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic readonly = false\n\n\t/** If true, we visually show a pointer cursor even if readOnly. */\n\t@property({ type: Boolean, reflect: true }) public clickable = false\n\n\t/** Whether browser spellcheck is enabled. */\n\t@property({ type: Boolean, reflect: true })\n\tpublic spellcheck = false\n\n\t/**\n\t * Text alignment within the input.\n\t * - 'left' | 'center' | 'right'\n\t */\n\t@property({ type: String, reflect: true })\n\tpublic align: 'left' | 'center' | 'right' = 'left'\n\n\t/** inputmode attribute (affects on-screen keyboards in mobile). */\n\t@property()\n\tpublic inputmode?: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'\n\n\t@property({ type: Number })\n\tpublic minlength?: number\n\n\t@property({ type: Number })\n\tpublic maxlength?: number\n\n\t@property()\n\tpublic min?: string\n\n\t@property()\n\tpublic max?: string\n\n\t@property({ type: Number, reflect: true })\n\tpublic step?: number\n\n\t/** If true, auto-focus this input on first render. */\n\t@property({ type: Boolean })\n\tpublic autofocus = false\n\n\t/** Autocomplete/autofill hints. */\n\t@property({ type: String, reflect: true })\n\tpublic autocomplete: AutoFill = 'on'\n\n\t/**\n\t * tabIndex for focusing by tab key. Typically 0 or -1.\n\t */\n\t@property({ type: Number, reflect: true })\n\tpublic tabIndex = 0\n\n\t/**\n\t * A small hint text or error message to display under the input.\n\t */\n\t@property()\n\tpublic hint?: string\n\n\t/**\n\t * If true, we style the input as an error state, and possibly display\n\t * the hint as an error message.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tpublic error = false\n\n\t// ----------------------------\n\t// B) Queries & Refs\n\t// ----------------------------\n\t@query('input') private inputElement!: HTMLInputElement\n\tprivate inputRef = createRef<HTMLInputElement>()\n\n\t// ----------------------------\n\t// C) Form-associated logic\n\t// ----------------------------\n\tstatic formAssociated = true\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tdelegatesFocus: true, // so focus() goes to <input>\n\t}\n\n\tprivate internals?: ElementInternals\n\n\tconstructor() {\n\t\tsuper()\n\t\tif ('attachInternals' in this) {\n\t\t\ttry {\n\t\t\t\tthis.internals = this.attachInternals()\n\t\t\t} catch {\n\t\t\t\t// no-op for older browsers / polyfills\n\t\t\t\tthis.internals = undefined\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * If user did not provide an ID, auto-generate one so <label for=\"...\">\n\t * and various aria-* attributes can reference it.\n\t */\n\tprotected override willUpdate(changedProps: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-input-${SchmancyInput._idCounter++}`\n\t\t}\n\t\tsuper.willUpdate(changedProps)\n\t}\n\n\t/** The form this element is associated with, if any. */\n\tget form() {\n\t\treturn this.internals?.form ?? null\n\t}\n\n\tprotected override updated(changedProps: Map<string, unknown>) {\n\t\tsuper.updated(changedProps)\n\t\tif (changedProps.has('value')) {\n\t\t\t// Reflect the current value to the form internals, so it’s submitted.\n\t\t\tthis.internals?.setFormValue(this.value)\n\t\t}\n\n\t\tif (changedProps.has('error')) {\n\t\t\t// If we have an error state, we can set custom error validity, or none if resolved.\n\t\t\tif (this.error) {\n\t\t\t\tthis.internals?.setValidity({ customError: true }, 'Invalid input', this.inputElement)\n\t\t\t} else {\n\t\t\t\tthis.internals?.setValidity({})\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Native form methods:\n\t * - checkValidity()\n\t * - reportValidity()\n\t * - setCustomValidity()\n\t */\n\tpublic checkValidity() {\n\t\treturn this.inputRef.value?.checkValidity() ?? true\n\t}\n\tpublic reportValidity() {\n\t\treturn this.inputRef.value?.reportValidity() ?? true\n\t}\n\tpublic setCustomValidity(message: string) {\n\t\tthis.inputRef.value?.setCustomValidity(message)\n\t}\n\n\t// ----------------------------\n\t// D) Lifecycle Hooks\n\t// ----------------------------\n\tfirstUpdated() {\n\t\t// Autofocus if desired\n\t\tif (this.autofocus) {\n\t\t\tthis.focus()\n\t\t}\n\n\t\t// 1) Subscribe to 'input' events (every keystroke)\n\t\tfromEvent<InputEvent>(this.inputElement, 'input')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\t// Fire custom 'input' event with details\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('input', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t// dispatch change event\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 2) Subscribe to 'change' events (native behavior, usually on blur)\n\t\tfromEvent<Event>(this.inputElement, 'change')\n\t\t\t.pipe(\n\t\t\t\tmap(ev => (ev.target as HTMLInputElement).value),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(value => {\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 3) Emit a custom 'enter' event when user presses Enter\n\t\tfromEvent<KeyboardEvent>(this.inputElement, 'keyup')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.key === 'Enter'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('enter', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\t// 4) Detect autofill animation (Chrome, etc.)\n\t\tfromEvent<AnimationEvent>(this.inputElement, 'animationstart')\n\t\t\t.pipe(\n\t\t\t\tfilter(ev => ev.animationName === 'onAutoFillStart'),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(ev => {\n\t\t\t\tconst { value } = ev.target as HTMLInputElement\n\t\t\t\tthis.value = value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent<EventDetails>('change', {\n\t\t\t\t\t\tdetail: { value },\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\n\t// ----------------------------\n\t// E) Utility Methods\n\t// ----------------------------\n\t/** Selects all text within the input. */\n\tpublic select() {\n\t\treturn this.inputRef.value?.select()\n\t}\n\n\t/** Returns the native validity state of the inner <input>. */\n\tpublic getValidity(): ValidityState | undefined {\n\t\treturn this.inputRef.value?.validity\n\t}\n\n\t/**\n\t * Override to forward focus to the internal <input>.\n\t * Also dispatch a 'focus' event for external listeners.\n\t */\n\tpublic override focus(options?: FocusOptions) {\n\t\tthis.inputRef.value?.focus(options)\n\t\tthis.dispatchEvent(new Event('focus'))\n\t}\n\n\t/**\n\t * Override to forward clicks to the internal <input>.\n\t * Also dispatch a 'click' event for external listeners.\n\t */\n\tpublic override click() {\n\t\tthis.inputRef.value?.click()\n\t\tthis.dispatchEvent(new Event('click'))\n\t}\n\n\t/** Forward blur to the internal <input>. */\n\tpublic override blur() {\n\t\tthis.inputRef.value?.blur()\n\t\tthis.dispatchEvent(new Event('blur'))\n\t}\n\n\t// ----------------------------\n\t// F) Rendering\n\t// ----------------------------\n\tprotected override render() {\n\t\tconst inputClasses = {\n\t\t\t'w-full flex-1 h-[50px] rounded-[8px] border-0 px-[8px] sm:px-[12px] md:px-[16px]': true,\n\t\t\t'outline-secondary-default focus:outline-1 ': true,\n\t\t\t'disabled:opacity-40 disabled:cursor-not-allowed': true,\n\t\t\t'placeholder:text-muted': true,\n\t\t\t'ring-0 ring-inset focus:ring-1 focus:ring-inset': true,\n\t\t\t// If not in error state, use standard ring color:\n\t\t\t'ring-secondary-default ring-outline focus:ring-secondary-default': !this.error,\n\t\t\t// Error ring override:\n\t\t\t'ring-error-default focus:ring-error-default': this.error,\n\t\t\t// If read-only but \"clickable\" is true, show pointer. Otherwise normal text cursor.\n\t\t\t'caret-transparent focus:outline-hidden cursor-pointer text-select-none': this.readonly,\n\t\t\t'cursor-pointer': this.clickable,\n\t\t\t// Alignment classes:\n\t\t\t'text-center': this.align === 'center',\n\t\t\t'text-right': this.align === 'right',\n\t\t}\n\n\t\tconst labelClasses = {\n\t\t\t'opacity-40': this.disabled,\n\t\t\t'block mb-[4px]': true,\n\t\t}\n\n\t\t/**\n\t\t * - If `this.label` is present, we render a proper `<label for=\"${this.id}\">`.\n\t\t * - If not, we add an aria-label to the <input> for better accessibility.\n\t\t * - If there's a `hint`, we reference it via aria-describedby.\n\t\t * - If there's an error, we set aria-invalid and could set aria-errormessage.\n\t\t */\n\t\treturn html`\n\t\t\t${when(\n\t\t\t\tthis.label,\n\t\t\t\t() => html`\n\t\t\t\t\t<label\n\t\t\t\t\t\tfor=${this.id}\n\t\t\t\t\t\tid=\"label-${this.id}\"\n\t\t\t\t\t\tclass=${classMap(labelClasses)}\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography type=\"label\" token=\"lg\">${this.label}</schmancy-typography>\n\t\t\t\t\t</label>\n\t\t\t\t`,\n\t\t\t)}\n\n\t\t\t<input\n\t\t\t\t${color({\n\t\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.highest,\n\t\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t\t})}\n\t\t\t\t${ref(this.inputRef)}\n\t\t\t\tid=${this.id}\n\t\t\t\tname=${this.name}\n\t\t\t\tclass=${classMap(inputClasses)}\n\t\t\t\t.value=${this.value}\n\t\t\t\t.type=${this.type}\n\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t.spellcheck=${this.spellcheck}\n\t\t\t\tplaceholder=${this.placeholder}\n\t\t\t\tinputmode=${ifDefined(this.inputmode)}\n\t\t\t\tpattern=${ifDefined(this.pattern)}\n\t\t\t\tstep=${ifDefined(this.step)}\n\t\t\t\tminlength=${ifDefined(this.minlength)}\n\t\t\t\tmaxlength=${ifDefined(this.maxlength)}\n\t\t\t\tmin=${ifDefined(this.min)}\n\t\t\t\tmax=${ifDefined(this.max)}\n\t\t\t\t?required=${this.required}\n\t\t\t\t?disabled=${this.disabled}\n\t\t\t\t?readonly=${this.readonly}\n\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\taria-labelledby=${this.label ? `label-${this.id}` : nothing}\n\t\t\t\taria-describedby=${this.hint ? `hint-${this.id}` : nothing}\n\t\t\t\taria-label=${ifDefined(!this.label ? this.placeholder || 'Input' : undefined)}\n\t\t\t/>\n\n\t\t\t${when(\n\t\t\t\tthis.hint,\n\t\t\t\t() => html`\n\t\t\t\t\t<div\n\t\t\t\t\t\tid=\"hint-${this.id}\"\n\t\t\t\t\t\tclass=\"pt-[2px]\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: this.error ? SchmancyTheme.sys.color.error.default : SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t<schmancy-typography align=\"left\" type=\"label\"> ${this.hint} </schmancy-typography>\n\t\t\t\t\t</div>\n\t\t\t\t`,\n\t\t\t)}\n\t\t`\n\t}\n}\n"],"names":["SchmancyInput","TailwindElement","super","this","id","label","type","name","Date","now","placeholder","value","required","disabled","readonly","clickable","spellcheck","align","autofocus","autocomplete","tabIndex","error","inputRef","createRef","internals","attachInternals","changedProps","_idCounter","willUpdate","form","updated","has","setFormValue","setValidity","customError","inputElement","checkValidity","reportValidity","message","setCustomValidity","firstUpdated","focus","fromEvent","pipe","map","ev","target","distinctUntilChanged","takeUntil","disconnecting","subscribe","dispatchEvent","CustomEvent","detail","bubbles","composed","filter","key","animationName","select","getValidity","validity","options","Event","click","blur","inputClasses","labelClasses","html","when","classMap","color","SchmancyTheme","sys","default","primary","bgColor","surface","highest","on","ref","ifDefined","inputmode","pattern","step","minlength","maxlength","min","max","nothing","hint","formAssociated","shadowRootOptions","LitElement","delegatesFocus","__decorateClass","property","reflect","prototype","String","Boolean","Number","query","customElement"],"mappings":";;;;;;;;;;;;;;;AAoCA,IAAqBA,IAArB,cAA2CC,EAiI1C,EAAA;AAAA,EAAA,cAEC;AAAA,QADMC,MAzHPC,GAAAA,KAAgBC,KAAK,IAMeD,KAAAE,QAAA,IAMpCF,KAAOG,OAAiC,QAMxCH,KAAOI,OAAO,QAAQC,KAAKC,IAG3BN,CAAAA,IAAAA,KAAOO,cAAc,IAIrBP,KAAOQ,QAAQ,IAQfR,KAAOS,WAAW,IAIlBT,KAAOU,WAAAA,IAIPV,KAAOW,WAAW,IAG0BX,KAAOY,YAAAA,IAInDZ,KAAOa,iBAOPb,KAAOc,QAAqC,QAuB5Cd,KAAOe,YAAAA,IAIPf,KAAOgB,eAAyB,MAMhChB,KAAOiB,WAAW,GAalBjB,KAAOkB,QAAQ,IAMflB,KAAQmB,WAAWC,EAed,GAAA,qBAAqBpB,KACpB,KAAA;AACEA,WAAAqB,YAAYrB,KAAKsB,gBAAAA;AAAAA,IAAgB,QAC/B;AAEPtB,WAAKqB,YAAAA;AAAAA,IAAY;AAAA,EAEnB;AAAA,EAOkB,WAAWE,GACxBvB;AAAAA,SAAKC,OACJD,KAAAC,KAAK,oBAAkBJ,EAAc2B,eAE3CzB,MAAM0B,WAAWF,CAAY;AAAA,EAAA;AAAA,EAI9B,IAAIG,OAAAA;;AACI,aAAA1B,IAAAA,KAAKqB,cAALrB,gBAAAA,EAAgB0B,SAAQ;AAAA,EAAA;AAAA,EAGb,QAAQH,GAC1BxB;;AAAAA,UAAM4B,QAAQJ,CAAAA,GACVA,EAAaK,IAAI,OAAA,OAEf5B,IAAAA,KAAAqB,cAAArB,QAAAA,EAAW6B,aAAa7B,KAAKQ,SAG/Be,EAAaK,IAAI,OAAA,MAEhB5B,KAAKkB,SACHlB,IAAAA,KAAAqB,cAAArB,QAAAA,EAAW8B,YAAY,EAAEC,aAAa,GAAA,GAAQ,iBAAiB/B,KAAKgC,iBAEpEhC,IAAAA,KAAAqB,cAAArB,QAAAA,EAAW8B,YAAY;EAE9B;AAAA,EASM,gBACN;;AAAA,aAAO9B,IAAAA,KAAKmB,SAASX,UAAdR,gBAAAA,EAAqBiC,oBAAAA;AAAAA,EAAmB;AAAA,EAEzC,iBAAAC;;AACN,aAAOlC,IAAAA,KAAKmB,SAASX,UAAdR,gBAAAA,EAAqBkC,qBAAoB;AAAA,EAAA;AAAA,EAE1C,kBAAkBC,GAAAA;;AACnBnC,KAAAA,IAAAA,KAAAmB,SAASX,UAATR,QAAAA,EAAgBoC,kBAAkBD;AAAAA,EAAO;AAAA,EAM/C,eAAAE;AAEKrC,SAAKe,aACRf,KAAKsC,MAAAA,GAIgBC,EAAAvC,KAAKgC,cAAc,OACvCQ,EAAAA,KACAC,EAAIC,OAAOA,EAAGC,OAA4BnC,KAC1CoC,GAAAA,EAAAA,GACAC,EAAU7C,KAAK8C,aAEfC,CAAAA,EAAAA,UAAmBvC,OACnBR;AAAAA,WAAKQ,QAAQA,GAERR,KAAAgD,cACJ,IAAIC,YAA0B,SAAS,EACtCC,QAAQ,EAAE1C,OACV2C,EAAAA,GAAAA,SAAAA,IACAC,UAAAA,GAIGpD,CAAAA,CAAAA,GAAAA,KAAAgD,cACJ,IAAIC,YAA0B,UAAU,EACvCC,QAAQ,EAAE1C,OACV2C,EAAAA,GAAAA,SAAAA,IACAC,UAAAA,GAEF,CAAA,CAAA;AAAA,IAAA,CAAA,GAIeb,EAAAvC,KAAKgC,cAAc,QAAA,EAClCQ,KACAC,EAAIC,OAAOA,EAAGC,OAA4BnC,KAAAA,GAC1CoC,EACAC,GAAAA,EAAU7C,KAAK8C,aAAAA,CAAAA,EAEfC,UAAmBvC,OAAAA;AACnBR,WAAKQ,QAAQA,GACRR,KAAAgD,cACJ,IAAIC,YAA0B,UAAU,EACvCC,QAAQ,EAAE1C,OACV2C,EAAAA,GAAAA,SAAAA,IACAC,UAAAA,GAEF,CAAA,CAAA;AAAA,IAAA,CAAA,GAIuBb,EAAAvC,KAAKgC,cAAc,OAAA,EAC1CQ,KACAa,EAAOX,OAAMA,EAAGY,QAAQ,OAARA,GAChBT,EAAU7C,KAAK8C,aAEfC,CAAAA,EAAAA,UAAgBL,OACV;AAAA,YAAA,EAAAlC,OAAEA,EAAAA,IAAUkC,EAAGC;AACrB3C,WAAKQ,QAAQA,GACRR,KAAAgD,cACJ,IAAIC,YAA0B,SAAS,EACtCC,QAAQ,EAAE1C,OAAAA,EAAAA,GACV2C,SAAS,IACTC,UAAU,GAAA,CAAA,CAAA;AAAA,IAEZ,CAIwBb,GAAAA,EAAAvC,KAAKgC,cAAc,gBAC3CQ,EAAAA,KACAa,EAAOX,OAAMA,EAAGa,kBAAkB,iBAClCV,GAAAA,EAAU7C,KAAK8C,aAEfC,CAAAA,EAAAA,UAAgBL,OACV;AAAA,YAAA,EAAAlC,OAAEA,EAAAA,IAAUkC,EAAGC;AACrB3C,WAAKQ,QAAQA,GACRR,KAAAgD,cACJ,IAAIC,YAA0B,UAAU,EACvCC,QAAQ,EAAE1C,OAAAA,EAAAA,GACV2C,SAAS,IACTC,UAAU,GAAA,CAAA,CAAA;AAAA,IAEZ,CACA;AAAA,EAAA;AAAA,EAOI,SAAAI;;AACC,YAAAxD,IAAAA,KAAKmB,SAASX,UAAdR,gBAAAA,EAAqBwD;AAAAA,EAAO;AAAA,EAI7B,cAAAC;;AACC,YAAAzD,IAAAA,KAAKmB,SAASX,UAAdR,gBAAAA,EAAqB0D;AAAAA,EAAA;AAAA,EAOb,MAAMC,GAChB3D;;AAAAA,KAAAA,IAAAA,KAAAmB,SAASX,UAATR,QAAAA,EAAgBsC,MAAMqB,IAC3B3D,KAAKgD,cAAc,IAAIY,MAAM,OAAQ,CAAA;AAAA,EAAA;AAAA,EAOtB,QAAAC;;AACV7D,KAAAA,IAAAA,KAAAmB,SAASX,UAATR,QAAAA,EAAgB6D,SACrB7D,KAAKgD,cAAc,IAAIY,MAAM,OAAA,CAAA;AAAA,EAAQ;AAAA,EAItB,OACV5D;;AAAAA,KAAAA,IAAAA,KAAAmB,SAASX,UAATR,QAAAA,EAAgB8D,QACrB9D,KAAKgD,cAAc,IAAIY,MAAM,MAAA,CAAA;AAAA,EAAO;AAAA,EAMlB,SAClB;AAAA,UAAMG,IAAe,EACpB,oFAAoF,IACpF,8CAA8C,IAC9C,mDAAmD,IACnD,0BAA0B,IAC1B,mDAAmD,IAEnD,oEAAqE/D,CAAAA,KAAKkB,OAE1E,+CAA+ClB,KAAKkB,OAEpD,0EAA0ElB,KAAKW,UAC/E,kBAAkBX,KAAKY,WAEvB,eAAeZ,KAAKc,UAAU,UAC9B,cAAcd,KAAKc,UAAU,QAAVA,GAGdkD,IAAe,EACpB,cAAchE,KAAKU,UACnB,kBAAA,GASM;AAAA,WAAAuD;AAAAA,KACJC,EACDlE,KAAKE,OACL,MAAM+D;AAAAA;AAAAA,YAEEjE,KAAKC,EAAAA;AAAAA,kBACCD,KAAKC,EAAAA;AAAAA,cACTkE,EAASH,CAAAA,CAAAA;AAAAA,QACfI,EAAM,EACPA,OAAOpE,KAAKkB,QAAQmD,EAAcC,IAAIF,MAAMlD,MAAMqD,UAAUF,EAAcC,IAAIF,MAAMI,QAAQD,QAAAA,CAAAA,CAAAA;AAAAA;AAAAA,qDAG9CvE,KAAKE,KAAAA;AAAAA;AAAAA;;;MAMpDkE,EAAM,EACPK,SAASJ,EAAcC,IAAIF,MAAMM,QAAQC,SACzCP,OAAOC,EAAcC,IAAIF,MAAMM,QAAQE,GAAAA,CAAAA,CAAAA;AAAAA,MAEtCC,EAAI7E,KAAKmB,QAAAA,CAAAA;AAAAA,SACNnB,KAAKC,EAAAA;AAAAA,WACHD,KAAKI,IAAAA;AAAAA,YACJ+D,EAASJ,CAAAA,CAAAA;AAAAA,aACR/D,KAAKQ,KAAAA;AAAAA,YACNR,KAAKG,IAAAA;AAAAA,oBACGH,KAAKgB,YAAAA;AAAAA,kBACPhB,KAAKa,UAAAA;AAAAA,kBACLb,KAAKO,WAAAA;AAAAA,gBACPuE,EAAU9E,KAAK+E,SAAAA,CAAAA;AAAAA,cACjBD,EAAU9E,KAAKgF,OAAAA,CAAAA;AAAAA,WAClBF,EAAU9E,KAAKiF,IAAAA,CAAAA;AAAAA,gBACVH,EAAU9E,KAAKkF,SAAAA,CAAAA;AAAAA,gBACfJ,EAAU9E,KAAKmF,SAAAA,CAAAA;AAAAA,UACrBL,EAAU9E,KAAKoF,GAAAA,CAAAA;AAAAA,UACfN,EAAU9E,KAAKqF,GAAAA,CAAAA;AAAAA,gBACTrF,KAAKS,QAAAA;AAAAA,gBACLT,KAAKU,QAAAA;AAAAA,gBACLV,KAAKW,QAAAA;AAAAA,mBACFX,KAAKkB,QAAQ,SAAS,OAAA;AAAA,oBACrBlB,KAAKS,WAAW,SAAS,OAAA;AAAA,sBACvBT,KAAKE,QAAQ,SAASF,KAAKC,EAAOqF,KAAAA,CAAAA;AAAAA,uBACjCtF,KAAKuF,OAAO,QAAQvF,KAAKC,EAAOqF,KAAAA,CAAAA;AAAAA,iBACtCR,EAAW9E,KAAKE,QAAAA,SAAQF,KAAKO,eAAe,OAAA,CAAA;AAAA;AAAA;AAAA,KAGxD2D,EACDlE,KAAKuF,MACL,MAAMtB;AAAAA;AAAAA,iBAEOjE,KAAKC,EAAAA;AAAAA;AAAAA,QAEdmE,EAAM,EACPA,OAAOpE,KAAKkB,QAAQmD,EAAcC,IAAIF,MAAMlD,MAAMqD,UAAUF,EAAcC,IAAIF,MAAMI,QAAQD,QAAAA,CAAAA,CAAAA;AAAAA;AAAAA,wDAG3CvE,KAAKuF,IAAAA;AAAAA;AAAAA;;EAGzD;AAAA;AA5ZiB1F,EAMb2B,aAAa,GANA3B,EAyHb2F,iBAAiB,IAzHJ3F,EA0HH4F,oBAAoB,EACjCC,GAAAA,EAAWD,mBACdE,gBAAAA,MAnHeC,EAAA,CADfC,EAAS,EAAEC,SAAS,GAAA,CAAA,CAAA,GARDjG,EASJkG,WAAA,MAAA,CAAA,GAMYH,EAAA,CAA3BC,EAAS,EAAE1F,MAAM6F,OAAAA,CAAAA,CAAAA,GAfEnG,EAeQkG,WAAA,SAAA,CAMrBH,GAAAA,EAAA,CADNC,EAAS,EAAEC,SAAAA,GApBQjG,CAAAA,CAAAA,GAAAA,EAqBbkG,WAAA,QAAA,CAMAH,GAAAA,EAAA,CADNC,EAAAA,CAAAA,GA1BmBhG,EA2BbkG,WAAA,QAAA,CAGAH,GAAAA,EAAA,CADNC,EAAAA,CAAAA,GA7BmBhG,EA8BbkG,WAAA,eAAA,CAAA,GAIAH,EAAA,CADNC,EAAS,EAAE1F,MAAM6F,QAAQF,YAjCNjG,CAAAA,CAAAA,GAAAA,EAkCbkG,WAAA,SAAA,CAIAH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM6F,QAAQF,SAAAA,GArCNjG,CAAAA,CAAAA,GAAAA,EAsCbkG,WAAA,WAAA,IAIAH,EAAA,CADNC,EAAS,EAAE1F,MAAM8F,SAASH,SAAS,GAAA,CAAA,CAAA,GAzChBjG,EA0CbkG,WAAA,YAAA,CAAA,GAIAH,EAAA,CADNC,EAAS,EAAE1F,MAAM8F,SAASH,SAAAA,GA7CPjG,CAAAA,CAAAA,GAAAA,EA8CbkG,WAAA,YAAA,CAIAH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM8F,SAASH,SAAAA,GAjDPjG,CAAAA,CAAAA,GAAAA,EAkDbkG,WAAA,YAAA,CAAA,GAG4CH,EAAA,CAAlDC,EAAS,EAAE1F,MAAM8F,SAASH,YArDPjG,CAAAA,CAAAA,GAAAA,EAqD+BkG,WAAA,aAAA,CAI5CH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM8F,SAASH,SAAS,GAAA,CAAA,CAAA,GAxDhBjG,EAyDbkG,WAAA,cAAA,CAAA,GAOAH,EAAA,CADNC,EAAS,EAAE1F,MAAM6F,QAAQF,SAAS,GAAA,CAAA,CAAA,GA/DfjG,EAgEbkG,WAAA,SAAA,CAIAH,GAAAA,EAAA,CADNC,EAAAA,CAAAA,GAnEmBhG,EAoEbkG,WAAA,aAAA,CAAA,GAGAH,EAAA,CADNC,EAAS,EAAE1F,MAAM+F,OAAAA,CAAAA,CAAAA,GAtEErG,EAuEbkG,WAAA,aAAA,CAGAH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM+F,OAzEErG,CAAAA,CAAAA,GAAAA,EA0EbkG,WAAA,aAAA,CAGAH,GAAAA,EAAA,CADNC,EAAAA,CAAAA,GA5EmBhG,EA6EbkG,WAAA,OAAA,CAGAH,GAAAA,EAAA,CADNC,EAAAA,CAAAA,GA/EmBhG,EAgFbkG,WAAA,OAAA,CAGAH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM+F,QAAQJ,SAAAA,QAlFNjG,EAmFbkG,WAAA,QAAA,CAAA,GAIAH,EAAA,CADNC,EAAS,EAAE1F,MAAM8F,QAAAA,CAAAA,CAAAA,GAtFEpG,EAuFbkG,WAAA,aAAA,CAAA,GAIAH,EAAA,CADNC,EAAS,EAAE1F,MAAM6F,QAAQF,SAAAA,GA1FNjG,CAAAA,CAAAA,GAAAA,EA2FbkG,WAAA,gBAAA,CAMAH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM+F,QAAQJ,SAAAA,QAhGNjG,EAiGbkG,WAAA,YAAA,CAAA,GAMAH,EAAA,CADNC,EAtGmBhG,CAAAA,GAAAA,EAuGbkG,WAAA,QAAA,CAOAH,GAAAA,EAAA,CADNC,EAAS,EAAE1F,MAAM8F,SAASH,SAAS,GAAA,CAAA,CAAA,GA7GhBjG,EA8GbkG,WAAA,SAAA,CAAA,GAKiBH,EAAA,CAAvBO,EAAM,OAnHatG,CAAAA,GAAAA,EAmHIkG,WAAA,gBAAA,CAnHJlG,GAAAA,IAArB+F,EAAA,CADCQ,EAAc,gBACMvG,CAAAA,GAAAA,CAAAA;"}
package/dist/input.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";require("./input-jRmXX3rp.cjs");
1
+ "use strict";require("./input-IHvsWbQB.cjs");
2
2
  //# sourceMappingURL=input.cjs.map
package/dist/input.js CHANGED
@@ -1,2 +1,2 @@
1
- import "./input-Ctt6mtZc.js";
1
+ import "./input-M-qJTNjt.js";
2
2
  //# sourceMappingURL=input.js.map
package/dist/layout.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./flex-BONU-PFy.cjs");Object.defineProperty(exports,"SchmancyFlex",{enumerable:!0,get:()=>e.SchmancyFlex}),Object.defineProperty(exports,"SchmancyFlexV2",{enumerable:!0,get:()=>e.SchmancyFlexV2}),Object.defineProperty(exports,"SchmancyGrid",{enumerable:!0,get:()=>e.SchmancyGrid}),Object.defineProperty(exports,"SchmancyScroll",{enumerable:!0,get:()=>e.SchmancyScroll});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./flex-DGkaKhhw.cjs");Object.defineProperty(exports,"SchmancyFlex",{enumerable:!0,get:()=>e.SchmancyFlex}),Object.defineProperty(exports,"SchmancyFlexV2",{enumerable:!0,get:()=>e.SchmancyFlexV2}),Object.defineProperty(exports,"SchmancyGrid",{enumerable:!0,get:()=>e.SchmancyGrid}),Object.defineProperty(exports,"SchmancyScroll",{enumerable:!0,get:()=>e.SchmancyScroll});
2
2
  //# sourceMappingURL=layout.cjs.map
package/dist/layout.js CHANGED
@@ -1,4 +1,4 @@
1
- import { S, c as m, a as h, b as l } from "./flex-CxlUwIat.js";
1
+ import { S, c as m, a as h, b as l } from "./flex-05flA0jO.js";
2
2
  export {
3
3
  S as SchmancyFlex,
4
4
  m as SchmancyFlexV2,
@@ -2,7 +2,7 @@ import { c as g } from "./consume-fRVATvdE.js";
2
2
  import "rxjs";
3
3
  import "lit/directives/class-map.js";
4
4
  import "lit/directives/style-map.js";
5
- import { T as y } from "./tailwind.mixin-ECkyl80C.js";
5
+ import { T as y } from "./tailwind.mixin-BqYiHta7.js";
6
6
  import { n as h, e as v } from "./provide-BLSgVvMJ.js";
7
7
  import { html as u, css as b } from "lit";
8
8
  import { property as p, queryAssignedElements as f, customElement as m } from "lit/decorators.js";
@@ -66,4 +66,4 @@ export {
66
66
  $ as S,
67
67
  i as a
68
68
  };
69
- //# sourceMappingURL=list-6C-kQqCi.js.map
69
+ //# sourceMappingURL=list-BWqWQl65.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-6C-kQqCi.js","sources":["../src/list/context.ts","../src/surface/context.ts","../src/list/list-item.ts","../src/list/list.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancyListTypeContext = createContext<TSurfaceColor>(undefined)\n","import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceTypeContext } from '@schmancy/surface/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n/**\n * @element schmancy-list-item\n * @slot leading - leading content\n * @slot trailing - trailing content\n * @slot - default content\n */\n@customElement('schmancy-list-item')\nexport class SchmancyListItem extends TailwindElement() {\n\t@consume({ context: SchmancySurfaceTypeContext, subscribe: true })\n\t@property()\n\tvariant: TSurfaceColor\n\n\t@property({ type: Boolean })\n\trounded: boolean\n\n\t@property({ type: Boolean }) readonly: boolean\n\n\t@property({ type: Boolean }) selected: boolean = false\n\n\t@queryAssignedElements({\n\t\tslot: 'leading',\n\t\tflatten: true,\n\t})\n\tprivate leading!: HTMLElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'trailing',\n\t\tflatten: true,\n\t})\n\tprivate trailing!: HTMLElement[]\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['h-[24px]', 'w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.leading?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.trailing?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'z-0 duration-500 transition-opacity': true,\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ': !this.readonly,\n\t\t}\n\t\treturn html` <li .tabIndex=${this.readonly ? -1 : 0} class=${this.classMap(classes)}>\n\t\t\t${when(!this.readonly, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t<slot></slot>\n\t\t</li>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list-item': SchmancyListItem\n\t}\n}\n","import { provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceFill } from '@schmancy/surface'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyListTypeContext } from './context'\n\n/**\n * `<schmancy-list>` component.\n *\n * A list component that wraps its content within a customizable surface.\n * It allows you to set the surface type and fill style, and can optionally\n * enable scrolling behavior by delegating the scroller attribute to the surface.\n *\n * @element schmancy-list\n * @slot - The default slot for list items.\n *\n * @example\n * <schmancy-list surface=\"container\" scroller>\n * <schmancy-list-item>List Item 1</schmancy-list-item>\n * </schmancy-list>\n */\n@customElement('schmancy-list')\nexport class List extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding-top: 8px;\n\t\tpadding-bottom: 8px;\n\t}\n`) {\n\t/**\n\t * Defines the type or color of the surface used by the component.\n\t * This value is provided to descendant components via context.\n\t *\n\t * @attr surface\n\t * @type {TSurfaceColor}\n\t * @default 'surface'\n\t */\n\t@provide({ context: SchmancyListTypeContext })\n\t@property()\n\tsurface: TSurfaceColor\n\n\t/**\n\t * Determines the fill style of the underlying surface.\n\t *\n\t * @attr fill\n\t * @type {SchmancySurfaceFill}\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: SchmancySurfaceFill = 'auto'\n\n\t/**\n\t * Defines the elevation level of the surface.\n\t *\n\t * @attr elevation\n\t * @type {number}\n\t * @default 0\n\t */\n\t@property({ type: Number })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\t/**\n\t * Renders the component's template.\n\t * The list content is wrapped inside a `<schmancy-surface>` element.\n\t * The scroller property is delegated to the surface so that it controls\n\t * the scrollable behavior.\n\t *\n\t * @returns The HTML template for the component.\n\t */\n\trender() {\n\t\treturn html`\n\t\t\t<schmancy-surface .elevation=${this.elevation} .fill=${this.fill} type=${this.surface}>\n\t\t\t\t<ul>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list': List\n\t}\n}\n"],"names":["SchmancyListTypeContext","createContext","SchmancySurfaceTypeContext","SchmancyListItem","TailwindElement","super","arguments","this","selected","imgClasses","firstUpdated","leading","forEach","img","classList","add","trailing","render","classes","rounded","stateLayerClasses","readonly","html","classMap","when","__decorateClass","consume","context","subscribe","property","prototype","type","Boolean","queryAssignedElements","slot","flatten","customElement","List","css","fill","elevation","surface","provide","String","reflect","Number"],"mappings":"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"}
1
+ {"version":3,"file":"list-BWqWQl65.js","sources":["../src/list/context.ts","../src/surface/context.ts","../src/list/list-item.ts","../src/list/list.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancyListTypeContext = createContext<TSurfaceColor>(undefined)\n","import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceTypeContext } from '@schmancy/surface/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n/**\n * @element schmancy-list-item\n * @slot leading - leading content\n * @slot trailing - trailing content\n * @slot - default content\n */\n@customElement('schmancy-list-item')\nexport class SchmancyListItem extends TailwindElement() {\n\t@consume({ context: SchmancySurfaceTypeContext, subscribe: true })\n\t@property()\n\tvariant: TSurfaceColor\n\n\t@property({ type: Boolean })\n\trounded: boolean\n\n\t@property({ type: Boolean }) readonly: boolean\n\n\t@property({ type: Boolean }) selected: boolean = false\n\n\t@queryAssignedElements({\n\t\tslot: 'leading',\n\t\tflatten: true,\n\t})\n\tprivate leading!: HTMLElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'trailing',\n\t\tflatten: true,\n\t})\n\tprivate trailing!: HTMLElement[]\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['h-[24px]', 'w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.leading?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.trailing?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'z-0 duration-500 transition-opacity': true,\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ': !this.readonly,\n\t\t}\n\t\treturn html` <li .tabIndex=${this.readonly ? -1 : 0} class=${this.classMap(classes)}>\n\t\t\t${when(!this.readonly, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t<slot></slot>\n\t\t</li>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list-item': SchmancyListItem\n\t}\n}\n","import { provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceFill } from '@schmancy/surface'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyListTypeContext } from './context'\n\n/**\n * `<schmancy-list>` component.\n *\n * A list component that wraps its content within a customizable surface.\n * It allows you to set the surface type and fill style, and can optionally\n * enable scrolling behavior by delegating the scroller attribute to the surface.\n *\n * @element schmancy-list\n * @slot - The default slot for list items.\n *\n * @example\n * <schmancy-list surface=\"container\" scroller>\n * <schmancy-list-item>List Item 1</schmancy-list-item>\n * </schmancy-list>\n */\n@customElement('schmancy-list')\nexport class List extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding-top: 8px;\n\t\tpadding-bottom: 8px;\n\t}\n`) {\n\t/**\n\t * Defines the type or color of the surface used by the component.\n\t * This value is provided to descendant components via context.\n\t *\n\t * @attr surface\n\t * @type {TSurfaceColor}\n\t * @default 'surface'\n\t */\n\t@provide({ context: SchmancyListTypeContext })\n\t@property()\n\tsurface: TSurfaceColor\n\n\t/**\n\t * Determines the fill style of the underlying surface.\n\t *\n\t * @attr fill\n\t * @type {SchmancySurfaceFill}\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: SchmancySurfaceFill = 'auto'\n\n\t/**\n\t * Defines the elevation level of the surface.\n\t *\n\t * @attr elevation\n\t * @type {number}\n\t * @default 0\n\t */\n\t@property({ type: Number })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\t/**\n\t * Renders the component's template.\n\t * The list content is wrapped inside a `<schmancy-surface>` element.\n\t * The scroller property is delegated to the surface so that it controls\n\t * the scrollable behavior.\n\t *\n\t * @returns The HTML template for the component.\n\t */\n\trender() {\n\t\treturn html`\n\t\t\t<schmancy-surface .elevation=${this.elevation} .fill=${this.fill} type=${this.surface}>\n\t\t\t\t<ul>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list': List\n\t}\n}\n"],"names":["SchmancyListTypeContext","createContext","SchmancySurfaceTypeContext","SchmancyListItem","TailwindElement","super","arguments","this","selected","imgClasses","firstUpdated","leading","forEach","img","classList","add","trailing","render","classes","rounded","stateLayerClasses","readonly","html","classMap","when","__decorateClass","consume","context","subscribe","property","prototype","type","Boolean","queryAssignedElements","slot","flatten","customElement","List","css","fill","elevation","surface","provide","String","reflect","Number"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";const h=require("./consume-Bb7_UzYd.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const y=require("./tailwind.mixin-DFM3jd9q.cjs"),d=require("./provide-DSU87U5x.cjs"),p=require("lit"),r=require("lit/decorators.js"),m=require("lit/directives/when.js"),u=d.n(void 0),f=d.n("surface");var g=Object.defineProperty,v=Object.getOwnPropertyDescriptor,a=(i,t,s,n)=>{for(var o,e=n>1?void 0:n?v(t,s):t,l=i.length-1;l>=0;l--)(o=i[l])&&(e=(n?o(t,s,e):o(e))||e);return n&&e&&g(t,s,e),e};exports.SchmancyListItem=class extends y.TailwindElement(){constructor(){super(...arguments),this.selected=!1}get imgClasses(){return["h-[24px]","w-[24px]","object-contain"]}firstUpdated(){var i,t;(i=this.leading)==null||i.forEach(s=>{s.classList.add(...this.imgClasses)}),(t=this.trailing)==null||t.forEach(s=>{s.classList.add(...this.imgClasses)})}render(){const i={"rounded-none":this.rounded===!1,"rounded-full":this.rounded,"relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden":!0,"bg-secondary-container text-secondery-onContainer":this.selected},t={"z-0 duration-500 transition-opacity":!0,"rounded-none":this.rounded===!1,"rounded-full":this.rounded,"hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ":!this.readonly};return p.html` <li .tabIndex=${this.readonly?-1:0} class=${this.classMap(i)}>
1
+ "use strict";const h=require("./consume-Bb7_UzYd.cjs");require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const y=require("./tailwind.mixin-HfEdtDL9.cjs"),d=require("./provide-DSU87U5x.cjs"),p=require("lit"),r=require("lit/decorators.js"),m=require("lit/directives/when.js"),u=d.n(void 0),f=d.n("surface");var g=Object.defineProperty,v=Object.getOwnPropertyDescriptor,a=(i,t,s,n)=>{for(var o,e=n>1?void 0:n?v(t,s):t,l=i.length-1;l>=0;l--)(o=i[l])&&(e=(n?o(t,s,e):o(e))||e);return n&&e&&g(t,s,e),e};exports.SchmancyListItem=class extends y.TailwindElement(){constructor(){super(...arguments),this.selected=!1}get imgClasses(){return["h-[24px]","w-[24px]","object-contain"]}firstUpdated(){var i,t;(i=this.leading)==null||i.forEach(s=>{s.classList.add(...this.imgClasses)}),(t=this.trailing)==null||t.forEach(s=>{s.classList.add(...this.imgClasses)})}render(){const i={"rounded-none":this.rounded===!1,"rounded-full":this.rounded,"relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden":!0,"bg-secondary-container text-secondery-onContainer":this.selected},t={"z-0 duration-500 transition-opacity":!0,"rounded-none":this.rounded===!1,"rounded-full":this.rounded,"hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ":!this.readonly};return p.html` <li .tabIndex=${this.readonly?-1:0} class=${this.classMap(i)}>
2
2
  ${m.when(!this.readonly,()=>p.html` <div class="${this.classMap(t)}"></div>`)}
3
3
  <slot></slot>
4
4
  </li>`}},a([h.c({context:f,subscribe:!0}),r.property()],exports.SchmancyListItem.prototype,"variant",2),a([r.property({type:Boolean})],exports.SchmancyListItem.prototype,"rounded",2),a([r.property({type:Boolean})],exports.SchmancyListItem.prototype,"readonly",2),a([r.property({type:Boolean})],exports.SchmancyListItem.prototype,"selected",2),a([r.queryAssignedElements({slot:"leading",flatten:!0})],exports.SchmancyListItem.prototype,"leading",2),a([r.queryAssignedElements({slot:"trailing",flatten:!0})],exports.SchmancyListItem.prototype,"trailing",2),exports.SchmancyListItem=a([r.customElement("schmancy-list-item")],exports.SchmancyListItem);var b=Object.defineProperty,L=Object.getOwnPropertyDescriptor,c=(i,t,s,n)=>{for(var o,e=n>1?void 0:n?L(t,s):t,l=i.length-1;l>=0;l--)(o=i[l])&&(e=(n?o(t,s,e):o(e))||e);return n&&e&&b(t,s,e),e};exports.List=class extends y.TailwindElement(p.css`
@@ -14,4 +14,4 @@
14
14
  </ul>
15
15
  </schmancy-surface>
16
16
  `}},c([d.e({context:u}),r.property()],exports.List.prototype,"surface",2),c([r.property({type:String,reflect:!0})],exports.List.prototype,"fill",2),c([r.property({type:Number})],exports.List.prototype,"elevation",2),exports.List=c([r.customElement("schmancy-list")],exports.List),exports.SchmancyListTypeContext=u;
17
- //# sourceMappingURL=list-BZ55pU5L.cjs.map
17
+ //# sourceMappingURL=list-CiPO2APk.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-BZ55pU5L.cjs","sources":["../src/list/context.ts","../src/surface/context.ts","../src/list/list-item.ts","../src/list/list.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancyListTypeContext = createContext<TSurfaceColor>(undefined)\n","import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceTypeContext } from '@schmancy/surface/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n/**\n * @element schmancy-list-item\n * @slot leading - leading content\n * @slot trailing - trailing content\n * @slot - default content\n */\n@customElement('schmancy-list-item')\nexport class SchmancyListItem extends TailwindElement() {\n\t@consume({ context: SchmancySurfaceTypeContext, subscribe: true })\n\t@property()\n\tvariant: TSurfaceColor\n\n\t@property({ type: Boolean })\n\trounded: boolean\n\n\t@property({ type: Boolean }) readonly: boolean\n\n\t@property({ type: Boolean }) selected: boolean = false\n\n\t@queryAssignedElements({\n\t\tslot: 'leading',\n\t\tflatten: true,\n\t})\n\tprivate leading!: HTMLElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'trailing',\n\t\tflatten: true,\n\t})\n\tprivate trailing!: HTMLElement[]\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['h-[24px]', 'w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.leading?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.trailing?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'z-0 duration-500 transition-opacity': true,\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ': !this.readonly,\n\t\t}\n\t\treturn html` <li .tabIndex=${this.readonly ? -1 : 0} class=${this.classMap(classes)}>\n\t\t\t${when(!this.readonly, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t<slot></slot>\n\t\t</li>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list-item': SchmancyListItem\n\t}\n}\n","import { provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceFill } from '@schmancy/surface'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyListTypeContext } from './context'\n\n/**\n * `<schmancy-list>` component.\n *\n * A list component that wraps its content within a customizable surface.\n * It allows you to set the surface type and fill style, and can optionally\n * enable scrolling behavior by delegating the scroller attribute to the surface.\n *\n * @element schmancy-list\n * @slot - The default slot for list items.\n *\n * @example\n * <schmancy-list surface=\"container\" scroller>\n * <schmancy-list-item>List Item 1</schmancy-list-item>\n * </schmancy-list>\n */\n@customElement('schmancy-list')\nexport class List extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding-top: 8px;\n\t\tpadding-bottom: 8px;\n\t}\n`) {\n\t/**\n\t * Defines the type or color of the surface used by the component.\n\t * This value is provided to descendant components via context.\n\t *\n\t * @attr surface\n\t * @type {TSurfaceColor}\n\t * @default 'surface'\n\t */\n\t@provide({ context: SchmancyListTypeContext })\n\t@property()\n\tsurface: TSurfaceColor\n\n\t/**\n\t * Determines the fill style of the underlying surface.\n\t *\n\t * @attr fill\n\t * @type {SchmancySurfaceFill}\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: SchmancySurfaceFill = 'auto'\n\n\t/**\n\t * Defines the elevation level of the surface.\n\t *\n\t * @attr elevation\n\t * @type {number}\n\t * @default 0\n\t */\n\t@property({ type: Number })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\t/**\n\t * Renders the component's template.\n\t * The list content is wrapped inside a `<schmancy-surface>` element.\n\t * The scroller property is delegated to the surface so that it controls\n\t * the scrollable behavior.\n\t *\n\t * @returns The HTML template for the component.\n\t */\n\trender() {\n\t\treturn html`\n\t\t\t<schmancy-surface .elevation=${this.elevation} .fill=${this.fill} type=${this.surface}>\n\t\t\t\t<ul>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list': List\n\t}\n}\n"],"names":["SchmancyListTypeContext","createContext","SchmancySurfaceTypeContext","SchmancyListItem","TailwindElement","super","arguments","this","selected","leading","forEach","img","classList","add","imgClasses","trailing","classes","rounded","stateLayerClasses","readonly","html","classMap","when","__decorateClass","consume","context","subscribe","property","prototype","type","Boolean","queryAssignedElements","slot","flatten","customElement","List","css","fill","elevation","surface","provide","String","reflect","Number"],"mappings":"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"}
1
+ {"version":3,"file":"list-CiPO2APk.cjs","sources":["../src/list/context.ts","../src/surface/context.ts","../src/list/list-item.ts","../src/list/list.ts"],"sourcesContent":["import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancyListTypeContext = createContext<TSurfaceColor>(undefined)\n","import { createContext } from '@lit/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n","import { consume } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceTypeContext } from '@schmancy/surface/context'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { html } from 'lit'\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js'\nimport { when } from 'lit/directives/when.js'\n\n/**\n * @element schmancy-list-item\n * @slot leading - leading content\n * @slot trailing - trailing content\n * @slot - default content\n */\n@customElement('schmancy-list-item')\nexport class SchmancyListItem extends TailwindElement() {\n\t@consume({ context: SchmancySurfaceTypeContext, subscribe: true })\n\t@property()\n\tvariant: TSurfaceColor\n\n\t@property({ type: Boolean })\n\trounded: boolean\n\n\t@property({ type: Boolean }) readonly: boolean\n\n\t@property({ type: Boolean }) selected: boolean = false\n\n\t@queryAssignedElements({\n\t\tslot: 'leading',\n\t\tflatten: true,\n\t})\n\tprivate leading!: HTMLElement[]\n\n\t@queryAssignedElements({\n\t\tslot: 'trailing',\n\t\tflatten: true,\n\t})\n\tprivate trailing!: HTMLElement[]\n\n\tprotected get imgClasses(): string[] {\n\t\treturn ['h-[24px]', 'w-[24px]', 'object-contain']\n\t}\n\n\tfirstUpdated() {\n\t\tthis.leading?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t\tthis.trailing?.forEach(img => {\n\t\t\timg.classList.add(...this.imgClasses)\n\t\t})\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'relative inset-0 w-full flex items-center min-h-[56px] py-[8px] px-[16px] duration-500 transition-colors focus-visible:outline-solid focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:z-1 outline-secondary-default outline-hidden':\n\t\t\t\ttrue,\n\t\t\t'bg-secondary-container text-secondery-onContainer': this.selected,\n\t\t}\n\n\t\tconst stateLayerClasses = {\n\t\t\t'z-0 duration-500 transition-opacity': true,\n\t\t\t'rounded-none': this.rounded === false,\n\t\t\t'rounded-full': this.rounded,\n\t\t\t'hover:bg-surface-on opacity-[0.08] cursor-pointer absolute inset-0 ': !this.readonly,\n\t\t}\n\t\treturn html` <li .tabIndex=${this.readonly ? -1 : 0} class=${this.classMap(classes)}>\n\t\t\t${when(!this.readonly, () => html` <div class=\"${this.classMap(stateLayerClasses)}\"></div>`)}\n\t\t\t<slot></slot>\n\t\t</li>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list-item': SchmancyListItem\n\t}\n}\n","import { provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/index'\nimport { SchmancySurfaceFill } from '@schmancy/surface'\nimport { TSurfaceColor } from '@schmancy/types/surface'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { SchmancyListTypeContext } from './context'\n\n/**\n * `<schmancy-list>` component.\n *\n * A list component that wraps its content within a customizable surface.\n * It allows you to set the surface type and fill style, and can optionally\n * enable scrolling behavior by delegating the scroller attribute to the surface.\n *\n * @element schmancy-list\n * @slot - The default slot for list items.\n *\n * @example\n * <schmancy-list surface=\"container\" scroller>\n * <schmancy-list-item>List Item 1</schmancy-list-item>\n * </schmancy-list>\n */\n@customElement('schmancy-list')\nexport class List extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding-top: 8px;\n\t\tpadding-bottom: 8px;\n\t}\n`) {\n\t/**\n\t * Defines the type or color of the surface used by the component.\n\t * This value is provided to descendant components via context.\n\t *\n\t * @attr surface\n\t * @type {TSurfaceColor}\n\t * @default 'surface'\n\t */\n\t@provide({ context: SchmancyListTypeContext })\n\t@property()\n\tsurface: TSurfaceColor\n\n\t/**\n\t * Determines the fill style of the underlying surface.\n\t *\n\t * @attr fill\n\t * @type {SchmancySurfaceFill}\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: SchmancySurfaceFill = 'auto'\n\n\t/**\n\t * Defines the elevation level of the surface.\n\t *\n\t * @attr elevation\n\t * @type {number}\n\t * @default 0\n\t */\n\t@property({ type: Number })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\t/**\n\t * Renders the component's template.\n\t * The list content is wrapped inside a `<schmancy-surface>` element.\n\t * The scroller property is delegated to the surface so that it controls\n\t * the scrollable behavior.\n\t *\n\t * @returns The HTML template for the component.\n\t */\n\trender() {\n\t\treturn html`\n\t\t\t<schmancy-surface .elevation=${this.elevation} .fill=${this.fill} type=${this.surface}>\n\t\t\t\t<ul>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</ul>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-list': List\n\t}\n}\n"],"names":["SchmancyListTypeContext","createContext","SchmancySurfaceTypeContext","SchmancyListItem","TailwindElement","super","arguments","this","selected","leading","forEach","img","classList","add","imgClasses","trailing","classes","rounded","stateLayerClasses","readonly","html","classMap","when","__decorateClass","consume","context","subscribe","property","prototype","type","Boolean","queryAssignedElements","slot","flatten","customElement","List","css","fill","elevation","surface","provide","String","reflect","Number"],"mappings":"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"}
package/dist/list.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./list-BZ55pU5L.cjs");Object.defineProperty(exports,"List",{enumerable:!0,get:()=>e.List}),Object.defineProperty(exports,"SchmancyListItem",{enumerable:!0,get:()=>e.SchmancyListItem}),exports.SchmancyListTypeContext=e.SchmancyListTypeContext;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./list-CiPO2APk.cjs");Object.defineProperty(exports,"List",{enumerable:!0,get:()=>e.List}),Object.defineProperty(exports,"SchmancyListItem",{enumerable:!0,get:()=>e.SchmancyListItem}),exports.SchmancyListTypeContext=e.SchmancyListTypeContext;
2
2
  //# sourceMappingURL=list.cjs.map
package/dist/list.js CHANGED
@@ -1,4 +1,4 @@
1
- import { L as s, a as c, S as e } from "./list-6C-kQqCi.js";
1
+ import { L as s, a as c, S as e } from "./list-BWqWQl65.js";
2
2
  export {
3
3
  s as List,
4
4
  c as SchmancyListItem,
@@ -1,4 +1,4 @@
1
- import { B as t, T as r } from "./tailwind.mixin-ECkyl80C.js";
1
+ import { B as t, T as r } from "./tailwind.mixin-BqYiHta7.js";
2
2
  const n = (s) => {
3
3
  class e extends t(r(s)) {
4
4
  constructor() {
@@ -12,4 +12,4 @@ const n = (s) => {
12
12
  export {
13
13
  n as $
14
14
  };
15
- //# sourceMappingURL=litElement.mixin-B43tuAsM.js.map
15
+ //# sourceMappingURL=litElement.mixin-CmIssdvT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"litElement.mixin-B43tuAsM.js","sources":["../mixins/litElement.mixin.ts"],"sourcesContent":["import { CSSResult, LitElement } from 'lit'\nimport { TailwindElement } from './tailwind.mixin'\nimport { BaseElement, IBaseMixin } from './baseElement'\nimport { Constructor } from './constructor'\n\nexport const $LitElement = <T extends CSSResult>(componentStyle?: T) => {\n\tclass TailwindMixinClass extends BaseElement(TailwindElement(componentStyle)) {\n\t\tdisconnectedCallback = () => {\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\treturn TailwindMixinClass as CustomElementConstructor &\n\t\tConstructor<LitElement> &\n\t\tConstructor<IBaseMixin> /* see \"typing the subclass\" below */\n}\n"],"names":["$LitElement","componentStyle","TailwindMixinClass","BaseElement","TailwindElement","super","arguments","this","disconnectedCallback"],"mappings":";AAKa,MAAAA,IAAoCC,CAAAA;EAChD,MAAMC,UAA2BC,EAAYC,EAAgBH,CAA7D,CAAA,EAAA;AAAA,IAAA;AAAAI,YAAAC,GAAAA,SAAAA,GACCC,KAAAC,uBAAuB,MACtBH;AAAAA,cAAMG;MAAqB;AAAA,IAC5B;AAAA,EAAA;AAEM,SAAAN;AAAA;"}
1
+ {"version":3,"file":"litElement.mixin-CmIssdvT.js","sources":["../mixins/litElement.mixin.ts"],"sourcesContent":["import { CSSResult, LitElement } from 'lit'\nimport { TailwindElement } from './tailwind.mixin'\nimport { BaseElement, IBaseMixin } from './baseElement'\nimport { Constructor } from './constructor'\n\nexport const $LitElement = <T extends CSSResult>(componentStyle?: T) => {\n\tclass TailwindMixinClass extends BaseElement(TailwindElement(componentStyle)) {\n\t\tdisconnectedCallback = () => {\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\treturn TailwindMixinClass as CustomElementConstructor &\n\t\tConstructor<LitElement> &\n\t\tConstructor<IBaseMixin> /* see \"typing the subclass\" below */\n}\n"],"names":["$LitElement","componentStyle","TailwindMixinClass","BaseElement","TailwindElement","super","arguments","this","disconnectedCallback"],"mappings":";AAKa,MAAAA,IAAoCC,CAAAA;EAChD,MAAMC,UAA2BC,EAAYC,EAAgBH,CAA7D,CAAA,EAAA;AAAA,IAAA;AAAAI,YAAAC,GAAAA,SAAAA,GACCC,KAAAC,uBAAuB,MACtBH;AAAAA,cAAMG;MAAqB;AAAA,IAC5B;AAAA,EAAA;AAEM,SAAAN;AAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("./tailwind.mixin-DFM3jd9q.cjs");exports.$LitElement=t=>{class s extends e.BaseElement(e.TailwindElement(t)){constructor(){super(...arguments),this.disconnectedCallback=()=>{super.disconnectedCallback()}}}return s};
2
- //# sourceMappingURL=litElement.mixin-9sOZ1KTq.cjs.map
1
+ "use strict";const e=require("./tailwind.mixin-HfEdtDL9.cjs");exports.$LitElement=t=>{class s extends e.BaseElement(e.TailwindElement(t)){constructor(){super(...arguments),this.disconnectedCallback=()=>{super.disconnectedCallback()}}}return s};
2
+ //# sourceMappingURL=litElement.mixin-DhNtGNmS.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"litElement.mixin-9sOZ1KTq.cjs","sources":["../mixins/litElement.mixin.ts"],"sourcesContent":["import { CSSResult, LitElement } from 'lit'\nimport { TailwindElement } from './tailwind.mixin'\nimport { BaseElement, IBaseMixin } from './baseElement'\nimport { Constructor } from './constructor'\n\nexport const $LitElement = <T extends CSSResult>(componentStyle?: T) => {\n\tclass TailwindMixinClass extends BaseElement(TailwindElement(componentStyle)) {\n\t\tdisconnectedCallback = () => {\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\treturn TailwindMixinClass as CustomElementConstructor &\n\t\tConstructor<LitElement> &\n\t\tConstructor<IBaseMixin> /* see \"typing the subclass\" below */\n}\n"],"names":["componentStyle","TailwindMixinClass","BaseElement","TailwindElement","constructor","super","arguments","this","disconnectedCallback"],"mappings":"kFAKiDA,GAAAA,CAChD,MAAMC,UAA2BC,EAAAA,YAAYC,kBAAgBH,IAA7D,aAAAI,CAAAC,MAAAC,GAAAA,SAAAA,EACCC,KAAAC,qBAAuB,IACtBH,CAAAA,MAAMG,qBAAqB,CAAA,CAC5B,CAEM,CAAA,OAAAP,CAAA"}
1
+ {"version":3,"file":"litElement.mixin-DhNtGNmS.cjs","sources":["../mixins/litElement.mixin.ts"],"sourcesContent":["import { CSSResult, LitElement } from 'lit'\nimport { TailwindElement } from './tailwind.mixin'\nimport { BaseElement, IBaseMixin } from './baseElement'\nimport { Constructor } from './constructor'\n\nexport const $LitElement = <T extends CSSResult>(componentStyle?: T) => {\n\tclass TailwindMixinClass extends BaseElement(TailwindElement(componentStyle)) {\n\t\tdisconnectedCallback = () => {\n\t\t\tsuper.disconnectedCallback()\n\t\t}\n\t}\n\treturn TailwindMixinClass as CustomElementConstructor &\n\t\tConstructor<LitElement> &\n\t\tConstructor<IBaseMixin> /* see \"typing the subclass\" below */\n}\n"],"names":["componentStyle","TailwindMixinClass","BaseElement","TailwindElement","constructor","super","arguments","this","disconnectedCallback"],"mappings":"kFAKiDA,GAAAA,CAChD,MAAMC,UAA2BC,EAAAA,YAAYC,kBAAgBH,IAA7D,aAAAI,CAAAC,MAAAC,GAAAA,SAAAA,EACCC,KAAAC,qBAAuB,IACtBH,CAAAA,MAAMG,qBAAqB,CAAA,CAC5B,CAEM,CAAA,OAAAP,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import { fromEvent as l, takeUntil as r, tap as c, filter as f } from "rxjs";
2
2
  import "lit/directives/class-map.js";
3
3
  import "lit/directives/style-map.js";
4
- import { $ as g } from "./litElement.mixin-B43tuAsM.js";
5
- import { T as E } from "./tailwind.mixin-ECkyl80C.js";
4
+ import { $ as g } from "./litElement.mixin-CmIssdvT.js";
5
+ import { T as E } from "./tailwind.mixin-BqYiHta7.js";
6
6
  import { css as d, html as b } from "lit";
7
7
  import { customElement as y, queryAssignedElements as w, query as v } from "lit/decorators.js";
8
8
  import { offset as x, flip as k, shift as M, size as P, computePosition as p, autoUpdate as O } from "@floating-ui/dom";
@@ -96,4 +96,4 @@ let m = class extends E(d`
96
96
  }
97
97
  };
98
98
  u([w({ flatten: !0, slot: "button" })], m.prototype, "buttonElement", 2), u([v("#menu")], m.prototype, "menuElement", 2), m = u([y("schmancy-menu")], m);
99
- //# sourceMappingURL=menu-D0izP8_9.js.map
99
+ //# sourceMappingURL=menu-CBGSAgDq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-D0izP8_9.js","sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-menu-item-click', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom'\nimport { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query, queryAssignedElements } from 'lit/decorators.js'\nimport { filter, fromEvent, takeUntil, tap } from 'rxjs'\n\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends TailwindElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\n\t#menu {\n\t\tdisplay: none;\n\t}\n\n\t#menu[data-show='true'] {\n\t\tdisplay: block;\n\t}\n`) {\n\t@queryAssignedElements({ flatten: true, slot: 'button' })\n\tbuttonElement!: Array<HTMLElement>\n\n\t@query('#menu') menuElement!: HTMLElement\n\n\tprivate cleanup?: any\n\n\tprivate getMiddleware() {\n\t\treturn [\n\t\t\toffset(5),\n\t\t\tflip(),\n\t\t\tshift({ padding: 5 }),\n\t\t\tsize({\n\t\t\t\tapply({ availableHeight, elements }) {\n\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t}\n\n\tasync updatePosition() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) {\n\t\t\treturn\n\t\t}\n\n\t\tawait computePosition(this.buttonElement[0], this.menuElement, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: this.getMiddleware(),\n\t\t}).then(({ x, y }) => {\n\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate showMenu() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) return\n\n\t\tthis.menuElement.dataset.show = 'true'\n\n\t\tthis.cleanup = autoUpdate(this.buttonElement[0], this.menuElement, () => {\n\t\t\tcomputePosition(this.buttonElement[0], this.menuElement, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: this.getMiddleware(),\n\t\t\t}).then(({ x, y, strategy }) => {\n\t\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\tposition: strategy,\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 100,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\n\t\tanimation.onfinish = () => {}\n\t}\n\n\tprivate async hideMenu() {\n\t\t// Make hideMenu async\n\t\tif (this.cleanup) {\n\t\t\tawait this.cleanup() // Await the cleanup!\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t\tthis.menuElement.dataset.show = 'false'\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 75,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\t\tanimation.onfinish = () => {} // No need for a promise now\n\t}\n\n\tfirstUpdated(): void {\n\t\tfromEvent(this.buttonElement, 'click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showMenu()\n\t\t\t})\n\n\t\tfromEvent(this, 'schmancy-menu-item-click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideMenu()\n\t\t\t})\n\n\t\tfromEvent(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tfilter((e: Event) => !this.contains(e.target as Node)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\ttap(() => {\n\t\t\t\t\tif (this.menuElement.dataset.show === 'true') {\n\t\t\t\t\t\tthis.hideMenu()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"button\">\n\t\t\t\t<schmancy-icon-button> more_vert </schmancy-icon-button>\n\t\t\t</slot>\n\t\t\t<ul\n\t\t\t\tid=\"menu\"\n\t\t\t\tclass=\"absolute z-50 border-outlineVariant rounded-md min-w-[160px] max-w-[320px] w-max bg-surface-default max-h-[90vh] shadow-1 overflow-y-auto\"\n\t\t\t\trole=\"menu\"\n\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\taria-labelledby=\"options-menu-4-button\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</ul>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"names":["SchmancyMenuItem","$LitElement","css","super","connectedCallback","fromEvent","this","pipe","takeUntil","disconnecting","subscribe","e","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","render","html","customElement","SchmancyMenu","TailwindElement","getMiddleware","offset","flip","shift","padding","size","availableHeight","elements","floating","style","maxHeight","updatePosition","buttonElement","menuElement","computePosition","placement","middleware","then","x","y","Object","assign","left","top","dataset","show","cleanup","autoUpdate","strategy","position","animate","opacity","transform","duration","easing","onfinish","firstUpdated","tap","showMenu","hideMenu","document","filter","contains","target","__decorateClass","queryAssignedElements","flatten","slot","prototype","query"],"mappings":";;;;;;;;;AAMA,IAAqBA,IAArB,cAA8CC,EAAYC;AAAAA;AAAAA;AAAAA;AAAAA,CAKzD,EAAA;AAAA,EAAA,oBACCC;AAAAA,UAAMC,kBACIC,GAAAA,EAAAC,MAAM,OAAA,EACdC,KAAKC,EAAUF,KAAKG,aAAAA,CAAAA,EACpBC,UAAeC,OAAAA;AACfA,QAAEC,gBAAAA,GACGN,KAAAO,cACJ,IAAIC,YAAY,4BAA4B,EAC3CC,SAAS,IACTC,UAAU,GAAA,CAAA,CAAA;AAAA,IAEZ,CACA;AAAA,EAAA;AAAA,EAEO,SAAAC;AACF,WAAAC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAAA;AApBYlB;AAAAA;;;GAArB,CADCmB,EAAc,wBACMnB;;;;;ACCrB,IAAqBoB,IAArB,cAA0CC,EAAgBnB;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAqBjD,gBAAAoB;AACA,WAAA,CACNC,EAAO,CAAA,GACPC,EACAC,GAAAA,EAAM,EAAEC,SAAS,EACjBC,CAAAA,GAAAA,EAAK,EACJ,QAAMC,iBAAEA,GAAiBC,UAAAA,EAAAA,GAAAA;AACxBA,MAAAA,EAASC,SAASC,MAAMC,YAAY,GAAGJ,CAAAA;AAAAA,IAAe,EAGzD,CAAA,CAAA;AAAA,EAAA;AAAA,EAGD,MAAMK,iBAAAA;AACA3B,SAAK4B,cAAc,CAAA,KAAO5B,KAAK6B,eAAAA,MAI9BC,EAAgB9B,KAAK4B,cAAc,CAAA,GAAI5B,KAAK6B,aAAa,EAC9DE,WAAW,gBACXC,YAAYhC,KAAKgB,cAAAA,EAAAA,CAAAA,EACfiB,KAAK,CAAA,EAAGC,GAAGC,GAAAA,GAAAA,EAAAA,MAAAA;AACNC,aAAAC,OAAOrC,KAAK6B,YAAYJ,OAAO,EACrCa,MAAM,GAAGJ,CACTK,MAAAA,KAAK,GAAGJ,CACR,KAAA,CAAA;AAAA,IAAA,CAAA;AAAA,EACD;AAAA,EAGM,WACP;AAAA,IAAA,CAAKnC,KAAK4B,cAAc,CAAO5B,KAAAA,CAAAA,KAAK6B,gBAE/B7B,KAAA6B,YAAYW,QAAQC,OAAO,QAE3BzC,KAAA0C,UAAUC,EAAW3C,KAAK4B,cAAc,CAAA,GAAI5B,KAAK6B,aAAa,MAClEC;AAAAA,MAAAA,EAAgB9B,KAAK4B,cAAc,IAAI5B,KAAK6B,aAAa,EACxDE,WAAW,gBACXC,YAAYhC,KAAKgB,cAAAA,EAAAA,CAAAA,EACfiB,KAAK,CAAA,EAAGC,GAAGC,GAAAA,GAAAA,GAAGS,UACTR,EAAAA,MAAAA;AAAAA,eAAAC,OAAOrC,KAAK6B,YAAYJ,OAAO,EACrCa,MAAM,GAAGJ,CAAAA,MACTK,KAAK,GAAGJ,CACRU,MAAAA,UAAUD,EACV,CAAA;AAAA,MAAA,CAAA;AAAA,IACD,CAGgB5C,GAAAA,KAAK6B,YAAYiB,QAClC,CACC,EAAEC,SAAS,GAAGC,WAAW,cACzB,GAAA,EAAED,SAAS,GAAGC,WAAW,WAAA,CAAA,GAE1B,EACCC,UAAU,KACVC,QAAQ,wCAAA,CAAA,EAIAC,WAAW,MAAA;AAAA,IAAA;AAAA,EAAO;AAAA,EAG7B,MAAA,WAEKnD;AAAAA,SAAK0C,YACF1C,MAAAA,KAAK0C,QACX1C,GAAAA,KAAK0C,UAAU,SAEX1C,KAAA6B,YAAYW,QAAQC,OAAO,SAEdzC,KAAK6B,YAAYiB,QAClC,CACC,EAAEC,SAAS,GAAGC,WAAW,WACzB,GAAA,EAAED,SAAS,GAAGC,WAAW,cAAA,CAAA,GAE1B,EACCC,UAAU,IACVC,QAAQ,wCAGAC,CAAAA,EAAAA,WAAW,MAAO;AAAA,IAAA;AAAA,EAAA;AAAA,EAG7B,eAAAC;AACWrD,IAAAA,EAAAC,KAAK4B,eAAe,OAC5B3B,EAAAA,KACAoD,EAAIhD,OAAKA,EAAEC,gBAAAA,CAAAA,GACXJ,EAAUF,KAAKG,aAEfC,CAAAA,EAAAA,UAAU,MACVJ;AAAAA,WAAKsD,SAAS;AAAA,IAAA,CAAA,GAGNvD,EAAAC,MAAM,0BAAA,EACdC,KACAoD,EAAIhD,OAAKA,EAAEC,gBACXJ,CAAAA,GAAAA,EAAUF,KAAKG,aAAAA,CAAAA,EAEfC,UAAU,MAAA;AACVJ,WAAKuD,SAAAA;AAAAA,IAAS,IAGNxD,EAAAyD,UAAU,OAClBvD,EAAAA,KACAwD,EAAQpD,OAAAA,CAAcL,KAAK0D,SAASrD,EAAEsD,MAAAA,CAAAA,GACtCzD,EAAUF,KAAKG,aACfkD,GAAAA,EAAI,MACmC;AAAA,MAAlCrD,KAAK6B,YAAYW,QAAQC,SAAS,UACrCzC,KAAKuD,SAAAA;AAAAA,IAAS,CAIhBnD,CAAAA,EAAAA,UAAAA;AAAAA,EAAU;AAAA,EAGb,SACQ;AAAA,WAAAQ;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAAA;AAzHRgD;AAAAA,EAAA,CADCC,EAAsB,EAAEC,SAAAA,IAAeC,MAAM,SAAA,CAAA,CAAA,GAd1BjD,EAepBkD,WAAA,iBAAA,CAAA,GAEgBJ,EAAA,CAAfK,EAAM,OAjBanD,CAAAA,GAAAA,EAiBJkD,WAAA,eAAA,IAjBIlD,IAArB8C,EAAA,CADC/C,EAAc,eACMC,CAAAA,GAAAA,CAAAA;"}
1
+ {"version":3,"file":"menu-CBGSAgDq.js","sources":["../src/menu/menu-item.ts","../src/menu/menu.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n@customElement('schmancy-menu-item')\nexport default class SchmancyMenuItem extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t}\n`) {\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tfromEvent(this, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\te.stopPropagation()\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('schmancy-menu-item-click', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\t}\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<schmancy-list-item>\n\t\t\t\t<slot></slot>\n\t\t\t</schmancy-list-item>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu-item': SchmancyMenuItem\n\t}\n}\n","import { autoUpdate, computePosition, flip, offset, shift, size } from '@floating-ui/dom'\nimport { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, query, queryAssignedElements } from 'lit/decorators.js'\nimport { filter, fromEvent, takeUntil, tap } from 'rxjs'\n\n@customElement('schmancy-menu')\nexport default class SchmancyMenu extends TailwindElement(css`\n\t:host {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n\n\t#menu {\n\t\tdisplay: none;\n\t}\n\n\t#menu[data-show='true'] {\n\t\tdisplay: block;\n\t}\n`) {\n\t@queryAssignedElements({ flatten: true, slot: 'button' })\n\tbuttonElement!: Array<HTMLElement>\n\n\t@query('#menu') menuElement!: HTMLElement\n\n\tprivate cleanup?: any\n\n\tprivate getMiddleware() {\n\t\treturn [\n\t\t\toffset(5),\n\t\t\tflip(),\n\t\t\tshift({ padding: 5 }),\n\t\t\tsize({\n\t\t\t\tapply({ availableHeight, elements }) {\n\t\t\t\t\telements.floating.style.maxHeight = `${availableHeight}px`\n\t\t\t\t},\n\t\t\t}),\n\t\t]\n\t}\n\n\tasync updatePosition() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) {\n\t\t\treturn\n\t\t}\n\n\t\tawait computePosition(this.buttonElement[0], this.menuElement, {\n\t\t\tplacement: 'bottom-start',\n\t\t\tmiddleware: this.getMiddleware(),\n\t\t}).then(({ x, y }) => {\n\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\tleft: `${x}px`,\n\t\t\t\ttop: `${y}px`,\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate showMenu() {\n\t\tif (!this.buttonElement[0] || !this.menuElement) return\n\n\t\tthis.menuElement.dataset.show = 'true'\n\n\t\tthis.cleanup = autoUpdate(this.buttonElement[0], this.menuElement, () => {\n\t\t\tcomputePosition(this.buttonElement[0], this.menuElement, {\n\t\t\t\tplacement: 'bottom-start',\n\t\t\t\tmiddleware: this.getMiddleware(),\n\t\t\t}).then(({ x, y, strategy }) => {\n\t\t\t\tObject.assign(this.menuElement.style, {\n\t\t\t\t\tleft: `${x}px`,\n\t\t\t\t\ttop: `${y}px`,\n\t\t\t\t\tposition: strategy,\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 100,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\n\t\tanimation.onfinish = () => {}\n\t}\n\n\tprivate async hideMenu() {\n\t\t// Make hideMenu async\n\t\tif (this.cleanup) {\n\t\t\tawait this.cleanup() // Await the cleanup!\n\t\t\tthis.cleanup = undefined\n\t\t}\n\t\tthis.menuElement.dataset.show = 'false'\n\n\t\tconst animation = this.menuElement.animate(\n\t\t\t[\n\t\t\t\t{ opacity: 1, transform: 'scale(1)' },\n\t\t\t\t{ opacity: 0, transform: 'scale(0.95)' },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 75,\n\t\t\t\teasing: 'cubic-bezier(0.55, 0.085, 0.68, 0.53)',\n\t\t\t},\n\t\t)\n\t\tanimation.onfinish = () => {} // No need for a promise now\n\t}\n\n\tfirstUpdated(): void {\n\t\tfromEvent(this.buttonElement, 'click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.showMenu()\n\t\t\t})\n\n\t\tfromEvent(this, 'schmancy-menu-item-click')\n\t\t\t.pipe(\n\t\t\t\ttap(e => e.stopPropagation()),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.hideMenu()\n\t\t\t})\n\n\t\tfromEvent(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tfilter((e: Event) => !this.contains(e.target as Node)),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t\ttap(() => {\n\t\t\t\t\tif (this.menuElement.dataset.show === 'true') {\n\t\t\t\t\t\tthis.hideMenu()\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<slot name=\"button\">\n\t\t\t\t<schmancy-icon-button> more_vert </schmancy-icon-button>\n\t\t\t</slot>\n\t\t\t<ul\n\t\t\t\tid=\"menu\"\n\t\t\t\tclass=\"absolute z-50 border-outlineVariant rounded-md min-w-[160px] max-w-[320px] w-max bg-surface-default max-h-[90vh] shadow-1 overflow-y-auto\"\n\t\t\t\trole=\"menu\"\n\t\t\t\taria-orientation=\"vertical\"\n\t\t\t\taria-labelledby=\"options-menu-4-button\"\n\t\t\t>\n\t\t\t\t<slot></slot>\n\t\t\t</ul>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-menu': SchmancyMenu\n\t}\n}\n"],"names":["SchmancyMenuItem","$LitElement","css","super","connectedCallback","fromEvent","this","pipe","takeUntil","disconnecting","subscribe","e","stopPropagation","dispatchEvent","CustomEvent","bubbles","composed","render","html","customElement","SchmancyMenu","TailwindElement","getMiddleware","offset","flip","shift","padding","size","availableHeight","elements","floating","style","maxHeight","updatePosition","buttonElement","menuElement","computePosition","placement","middleware","then","x","y","Object","assign","left","top","dataset","show","cleanup","autoUpdate","strategy","position","animate","opacity","transform","duration","easing","onfinish","firstUpdated","tap","showMenu","hideMenu","document","filter","contains","target","__decorateClass","queryAssignedElements","flatten","slot","prototype","query"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- "use strict";const i=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./litElement.mixin-9sOZ1KTq.cjs"),b=require("./tailwind.mixin-DFM3jd9q.cjs"),u=require("lit"),c=require("lit/decorators.js"),l=require("@floating-ui/dom");var y=Object.getOwnPropertyDescriptor;let p=class extends d.$LitElement(u.css`
1
+ "use strict";const i=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./litElement.mixin-DhNtGNmS.cjs"),b=require("./tailwind.mixin-HfEdtDL9.cjs"),u=require("lit"),c=require("lit/decorators.js"),l=require("@floating-ui/dom");var y=Object.getOwnPropertyDescriptor;let p=class extends d.$LitElement(u.css`
2
2
  :host {
3
3
  display: block;
4
4
  }
@@ -33,4 +33,4 @@
33
33
  <slot></slot>
34
34
  </ul>
35
35
  `}};h([c.queryAssignedElements({flatten:!0,slot:"button"})],m.prototype,"buttonElement",2),h([c.query("#menu")],m.prototype,"menuElement",2),m=h([c.customElement("schmancy-menu")],m);
36
- //# sourceMappingURL=menu-Bd6Yleqx.cjs.map
36
+ //# sourceMappingURL=menu-DyYcxMo9.cjs.map