kemet-ui 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/custom-elements.json +305 -305
  2. package/dist/components/kemet-alert/docs/stories.js.map +1 -1
  3. package/dist/components/kemet-avatar/docs/stories.d.ts +1 -0
  4. package/dist/components/kemet-avatar/docs/stories.js +5 -4
  5. package/dist/components/kemet-avatar/docs/stories.js.map +1 -1
  6. package/dist/components/kemet-card/docs/stories.js.map +1 -0
  7. package/dist/components/kemet-carousel/docs/stories.js.map +1 -0
  8. package/dist/components/kemet-carousel/kemet-carousel.d.ts +13 -0
  9. package/dist/components/kemet-carousel/kemet-carousel.js +2 -0
  10. package/dist/components/kemet-carousel/kemet-carousel.js.map +1 -1
  11. package/dist/components/kemet-checkbox/docs/stories.js.map +1 -0
  12. package/dist/components/kemet-combo/docs/stories.js.map +1 -0
  13. package/dist/components/kemet-count/docs/stories.js.map +1 -0
  14. package/dist/components/kemet-draggable/docs/stories.js.map +1 -0
  15. package/dist/components/kemet-draggable/kemet-draggable.d.ts +7 -0
  16. package/dist/components/kemet-draggable/kemet-draggable.js.map +1 -1
  17. package/dist/components/kemet-drawer/docs/stories.js.map +1 -0
  18. package/dist/components/kemet-fab/docs/stories.js.map +1 -0
  19. package/dist/components/kemet-field/docs/stories.js.map +1 -0
  20. package/dist/components/kemet-flipcard/docs/stories.js.map +1 -0
  21. package/dist/components/kemet-icon/docs/stories.js.map +1 -0
  22. package/dist/components/kemet-input/docs/stories.js.map +1 -0
  23. package/dist/components/kemet-modal/docs/stories.js.map +1 -0
  24. package/dist/components/kemet-password/docs/stories.js.map +1 -0
  25. package/dist/components/kemet-popper/docs/stories.js.map +1 -0
  26. package/dist/components/kemet-radio/docs/stories.js.map +1 -0
  27. package/dist/components/kemet-rotator/docs/stories.js.map +1 -0
  28. package/dist/components/kemet-scroll-link/docs/stories.js.map +1 -0
  29. package/dist/components/kemet-scroll-nav/docs/stories.js.map +1 -0
  30. package/dist/components/kemet-scroll-nav/styles.js +1 -0
  31. package/dist/components/kemet-scroll-nav/styles.js.map +1 -1
  32. package/dist/components/kemet-scroll-snap/docs/stories.js.map +1 -0
  33. package/dist/components/kemet-select/docs/stories.js.map +1 -0
  34. package/dist/components/kemet-sortable/docs/stories.js.map +1 -0
  35. package/dist/components/kemet-svgs/docs/stories.js.map +1 -0
  36. package/dist/components/kemet-tabs/docs/stories.js.map +1 -0
  37. package/dist/components/kemet-tabs/kemet-tab-panel.js.map +1 -1
  38. package/dist/components/kemet-tabs/kemet-tabs.d.ts +1 -5
  39. package/dist/components/kemet-tabs/kemet-tabs.js +8 -27
  40. package/dist/components/kemet-tabs/kemet-tabs.js.map +1 -1
  41. package/dist/components/kemet-tabs/styles.js +14 -0
  42. package/dist/components/kemet-tabs/styles.js.map +1 -1
  43. package/dist/components/kemet-tabs/types.d.ts +1 -3
  44. package/dist/components/kemet-tabs/types.js.map +1 -1
  45. package/dist/components/kemet-textarea/docs/stories.js.map +1 -0
  46. package/dist/components/kemet-toggle/docs/stories.js.map +1 -0
  47. package/dist/components/kemet-tooltip/docs/stories.js.map +1 -0
  48. package/dist/components/kemet-tracker/docs/stories.js.map +1 -0
  49. package/dist/components/kemet-upload/docs/stories.js.map +1 -0
  50. package/dist/kemet-components.bundle.js +7 -7
  51. package/dist/kemet-components.bundle.js.map +1 -1
  52. package/dist/kemet-components.cjs +1802 -1804
  53. package/dist/kemet-components.js +1802 -1804
  54. package/dist/styles/components/_config.scss +4 -0
  55. package/dist/styles/components/accordion.scss +9 -0
  56. package/dist/styles/components/drawer.scss +11 -0
  57. package/dist/styles/components/modal.scss +8 -0
  58. package/dist/styles/components/scrollsnap.scss +11 -0
  59. package/dist/styles/core/attributes.scss +38 -0
  60. package/dist/styles/core/layout.scss +169 -0
  61. package/dist/styles/kemet.base.css +1 -0
  62. package/dist/styles/kemet.base.scss +28 -0
  63. package/dist/styles/kemet.components.scss +4 -0
  64. package/dist/styles/kemet.core.css +155 -154
  65. package/dist/styles/kemet.core.css.map +1 -1
  66. package/dist/styles/kemet.core.scss +2 -0
  67. package/dist/styles/shared/_config.scss +358 -0
  68. package/dist/styles/shared/_helpers.scss +458 -0
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/package.json +2 -2
  71. package/dist/.storybook/decorators.d.ts +0 -2
  72. package/dist/.storybook/decorators.js +0 -28
  73. package/dist/.storybook/decorators.js.map +0 -1
  74. package/dist/components/kemet-alert/stories.d.ts +0 -9
  75. package/dist/components/kemet-alert/stories.js +0 -77
  76. package/dist/components/kemet-alert/stories.js.map +0 -1
  77. package/dist/components/kemet-avatar/stories.d.ts +0 -10
  78. package/dist/components/kemet-avatar/stories.js +0 -85
  79. package/dist/components/kemet-avatar/stories.js.map +0 -1
  80. package/dist/src/components/kemet-accordion/kemet-accordion-panel.d.ts +0 -51
  81. package/dist/src/components/kemet-accordion/kemet-accordion-panel.js +0 -136
  82. package/dist/src/components/kemet-accordion/kemet-accordion-panel.js.map +0 -1
  83. package/dist/src/components/kemet-accordion/kemet-accordion.d.ts +0 -37
  84. package/dist/src/components/kemet-accordion/kemet-accordion.js +0 -129
  85. package/dist/src/components/kemet-accordion/kemet-accordion.js.map +0 -1
  86. package/dist/src/components/kemet-accordion/stories.d.ts +0 -10
  87. package/dist/src/components/kemet-accordion/stories.js +0 -44
  88. package/dist/src/components/kemet-accordion/stories.js.map +0 -1
  89. package/dist/src/components/kemet-accordion/styles.d.ts +0 -2
  90. package/dist/src/components/kemet-accordion/styles.js +0 -42
  91. package/dist/src/components/kemet-accordion/styles.js.map +0 -1
  92. package/dist/src/components/kemet-accordion/types.d.ts +0 -9
  93. package/dist/src/components/kemet-accordion/types.js +0 -2
  94. package/dist/src/components/kemet-accordion/types.js.map +0 -1
  95. package/dist/src/components/kemet-alert/docs/stories.d.ts +0 -9
  96. package/dist/src/components/kemet-alert/docs/stories.js +0 -77
  97. package/dist/src/components/kemet-alert/docs/stories.js.map +0 -1
  98. package/dist/src/components/kemet-alert/kemet-alert.d.ts +0 -52
  99. package/dist/src/components/kemet-alert/kemet-alert.js +0 -108
  100. package/dist/src/components/kemet-alert/kemet-alert.js.map +0 -1
  101. package/dist/src/components/kemet-alert/styles.d.ts +0 -1
  102. package/dist/src/components/kemet-alert/styles.js +0 -104
  103. package/dist/src/components/kemet-alert/styles.js.map +0 -1
  104. package/dist/src/components/kemet-alert/types.d.ts +0 -10
  105. package/dist/src/components/kemet-alert/types.js +0 -2
  106. package/dist/src/components/kemet-alert/types.js.map +0 -1
  107. package/dist/src/components/kemet-avatar/docs/stories.d.ts +0 -11
  108. package/dist/src/components/kemet-avatar/docs/stories.js +0 -86
  109. package/dist/src/components/kemet-avatar/docs/stories.js.map +0 -1
  110. package/dist/src/components/kemet-avatar/kemet-avatar.d.ts +0 -43
  111. package/dist/src/components/kemet-avatar/kemet-avatar.js +0 -78
  112. package/dist/src/components/kemet-avatar/kemet-avatar.js.map +0 -1
  113. package/dist/src/components/kemet-avatar/kemet-avatars.d.ts +0 -20
  114. package/dist/src/components/kemet-avatar/kemet-avatars.js +0 -25
  115. package/dist/src/components/kemet-avatar/kemet-avatars.js.map +0 -1
  116. package/dist/src/components/kemet-avatar/styles.d.ts +0 -2
  117. package/dist/src/components/kemet-avatar/styles.js +0 -58
  118. package/dist/src/components/kemet-avatar/styles.js.map +0 -1
  119. package/dist/src/components/kemet-avatar/types.d.ts +0 -8
  120. package/dist/src/components/kemet-avatar/types.js +0 -2
  121. package/dist/src/components/kemet-avatar/types.js.map +0 -1
  122. package/dist/src/components/kemet-badge/docs/stories.d.ts +0 -9
  123. package/dist/src/components/kemet-badge/docs/stories.js +0 -40
  124. package/dist/src/components/kemet-badge/docs/stories.js.map +0 -1
  125. package/dist/src/components/kemet-badge/kemet-badge.d.ts +0 -30
  126. package/dist/src/components/kemet-badge/kemet-badge.js +0 -55
  127. package/dist/src/components/kemet-badge/kemet-badge.js.map +0 -1
  128. package/dist/src/components/kemet-badge/styles.d.ts +0 -1
  129. package/dist/src/components/kemet-badge/styles.js +0 -40
  130. package/dist/src/components/kemet-badge/styles.js.map +0 -1
  131. package/dist/src/components/kemet-badge/types.d.ts +0 -6
  132. package/dist/src/components/kemet-badge/types.js +0 -2
  133. package/dist/src/components/kemet-badge/types.js.map +0 -1
  134. package/dist/src/components/kemet-button/docs/stories.d.ts +0 -9
  135. package/dist/src/components/kemet-button/docs/stories.js +0 -51
  136. package/dist/src/components/kemet-button/docs/stories.js.map +0 -1
  137. package/dist/src/components/kemet-button/kemet-button.d.ts +0 -89
  138. package/dist/src/components/kemet-button/kemet-button.js +0 -153
  139. package/dist/src/components/kemet-button/kemet-button.js.map +0 -1
  140. package/dist/src/components/kemet-button/styles.d.ts +0 -1
  141. package/dist/src/components/kemet-button/styles.js +0 -73
  142. package/dist/src/components/kemet-button/styles.js.map +0 -1
  143. package/dist/src/components/kemet-button/types.d.ts +0 -10
  144. package/dist/src/components/kemet-button/types.js +0 -2
  145. package/dist/src/components/kemet-button/types.js.map +0 -1
  146. package/dist/src/components/kemet-card/docs/stories.js.map +0 -1
  147. package/dist/src/components/kemet-card/kemet-card.d.ts +0 -47
  148. package/dist/src/components/kemet-card/kemet-card.js +0 -65
  149. package/dist/src/components/kemet-card/kemet-card.js.map +0 -1
  150. package/dist/src/components/kemet-card/styles.d.ts +0 -1
  151. package/dist/src/components/kemet-card/styles.js +0 -63
  152. package/dist/src/components/kemet-card/styles.js.map +0 -1
  153. package/dist/src/components/kemet-card/types.d.ts +0 -3
  154. package/dist/src/components/kemet-card/types.js +0 -2
  155. package/dist/src/components/kemet-card/types.js.map +0 -1
  156. package/dist/src/components/kemet-carousel/docs/stories.js.map +0 -1
  157. package/dist/src/components/kemet-carousel/kemet-carousel-current.d.ts +0 -26
  158. package/dist/src/components/kemet-carousel/kemet-carousel-current.js +0 -44
  159. package/dist/src/components/kemet-carousel/kemet-carousel-current.js.map +0 -1
  160. package/dist/src/components/kemet-carousel/kemet-carousel-first.d.ts +0 -25
  161. package/dist/src/components/kemet-carousel/kemet-carousel-first.js +0 -50
  162. package/dist/src/components/kemet-carousel/kemet-carousel-first.js.map +0 -1
  163. package/dist/src/components/kemet-carousel/kemet-carousel-last.d.ts +0 -25
  164. package/dist/src/components/kemet-carousel/kemet-carousel-last.js +0 -50
  165. package/dist/src/components/kemet-carousel/kemet-carousel-last.js.map +0 -1
  166. package/dist/src/components/kemet-carousel/kemet-carousel-link.d.ts +0 -31
  167. package/dist/src/components/kemet-carousel/kemet-carousel-link.js +0 -64
  168. package/dist/src/components/kemet-carousel/kemet-carousel-link.js.map +0 -1
  169. package/dist/src/components/kemet-carousel/kemet-carousel-next.d.ts +0 -25
  170. package/dist/src/components/kemet-carousel/kemet-carousel-next.js +0 -50
  171. package/dist/src/components/kemet-carousel/kemet-carousel-next.js.map +0 -1
  172. package/dist/src/components/kemet-carousel/kemet-carousel-prev.d.ts +0 -25
  173. package/dist/src/components/kemet-carousel/kemet-carousel-prev.js +0 -50
  174. package/dist/src/components/kemet-carousel/kemet-carousel-prev.js.map +0 -1
  175. package/dist/src/components/kemet-carousel/kemet-carousel-slide.d.ts +0 -29
  176. package/dist/src/components/kemet-carousel/kemet-carousel-slide.js +0 -53
  177. package/dist/src/components/kemet-carousel/kemet-carousel-slide.js.map +0 -1
  178. package/dist/src/components/kemet-carousel/kemet-carousel-total.d.ts +0 -26
  179. package/dist/src/components/kemet-carousel/kemet-carousel-total.js +0 -44
  180. package/dist/src/components/kemet-carousel/kemet-carousel-total.js.map +0 -1
  181. package/dist/src/components/kemet-carousel/kemet-carousel.d.ts +0 -114
  182. package/dist/src/components/kemet-carousel/kemet-carousel.js +0 -410
  183. package/dist/src/components/kemet-carousel/kemet-carousel.js.map +0 -1
  184. package/dist/src/components/kemet-carousel/styles.d.ts +0 -1
  185. package/dist/src/components/kemet-carousel/styles.js +0 -66
  186. package/dist/src/components/kemet-carousel/styles.js.map +0 -1
  187. package/dist/src/components/kemet-carousel/types.d.ts +0 -21
  188. package/dist/src/components/kemet-carousel/types.js +0 -2
  189. package/dist/src/components/kemet-carousel/types.js.map +0 -1
  190. package/dist/src/components/kemet-checkbox/docs/stories.js.map +0 -1
  191. package/dist/src/components/kemet-checkbox/kemet-checkbox.d.ts +0 -71
  192. package/dist/src/components/kemet-checkbox/kemet-checkbox.js +0 -192
  193. package/dist/src/components/kemet-checkbox/kemet-checkbox.js.map +0 -1
  194. package/dist/src/components/kemet-checkbox/styles.d.ts +0 -1
  195. package/dist/src/components/kemet-checkbox/styles.js +0 -83
  196. package/dist/src/components/kemet-checkbox/styles.js.map +0 -1
  197. package/dist/src/components/kemet-checkbox/types.d.ts +0 -15
  198. package/dist/src/components/kemet-checkbox/types.js +0 -2
  199. package/dist/src/components/kemet-checkbox/types.js.map +0 -1
  200. package/dist/src/components/kemet-combo/docs/stories.js.map +0 -1
  201. package/dist/src/components/kemet-combo/kemet-combo.d.ts +0 -50
  202. package/dist/src/components/kemet-combo/kemet-combo.js +0 -162
  203. package/dist/src/components/kemet-combo/kemet-combo.js.map +0 -1
  204. package/dist/src/components/kemet-combo/styles.d.ts +0 -1
  205. package/dist/src/components/kemet-combo/styles.js +0 -44
  206. package/dist/src/components/kemet-combo/styles.js.map +0 -1
  207. package/dist/src/components/kemet-combo/types.d.ts +0 -5
  208. package/dist/src/components/kemet-combo/types.js +0 -2
  209. package/dist/src/components/kemet-combo/types.js.map +0 -1
  210. package/dist/src/components/kemet-count/docs/stories.js.map +0 -1
  211. package/dist/src/components/kemet-count/kemet-count.d.ts +0 -39
  212. package/dist/src/components/kemet-count/kemet-count.js +0 -98
  213. package/dist/src/components/kemet-count/kemet-count.js.map +0 -1
  214. package/dist/src/components/kemet-draggable/docs/stories.js.map +0 -1
  215. package/dist/src/components/kemet-draggable/kemet-draggable.d.ts +0 -49
  216. package/dist/src/components/kemet-draggable/kemet-draggable.js +0 -137
  217. package/dist/src/components/kemet-draggable/kemet-draggable.js.map +0 -1
  218. package/dist/src/components/kemet-draggable/types.d.ts +0 -6
  219. package/dist/src/components/kemet-draggable/types.js +0 -2
  220. package/dist/src/components/kemet-draggable/types.js.map +0 -1
  221. package/dist/src/components/kemet-drawer/docs/stories.js.map +0 -1
  222. package/dist/src/components/kemet-drawer/kemet-drawer.d.ts +0 -48
  223. package/dist/src/components/kemet-drawer/kemet-drawer.js +0 -95
  224. package/dist/src/components/kemet-drawer/kemet-drawer.js.map +0 -1
  225. package/dist/src/components/kemet-drawer/styles.d.ts +0 -2
  226. package/dist/src/components/kemet-drawer/styles.js +0 -314
  227. package/dist/src/components/kemet-drawer/styles.js.map +0 -1
  228. package/dist/src/components/kemet-drawer/types.d.ts +0 -8
  229. package/dist/src/components/kemet-drawer/types.js +0 -2
  230. package/dist/src/components/kemet-drawer/types.js.map +0 -1
  231. package/dist/src/components/kemet-fab/docs/stories.js.map +0 -1
  232. package/dist/src/components/kemet-fab/kemet-fab.d.ts +0 -49
  233. package/dist/src/components/kemet-fab/kemet-fab.js +0 -107
  234. package/dist/src/components/kemet-fab/kemet-fab.js.map +0 -1
  235. package/dist/src/components/kemet-fab/styles.d.ts +0 -1
  236. package/dist/src/components/kemet-fab/styles.js +0 -95
  237. package/dist/src/components/kemet-fab/styles.js.map +0 -1
  238. package/dist/src/components/kemet-fab/types.d.ts +0 -8
  239. package/dist/src/components/kemet-fab/types.js +0 -2
  240. package/dist/src/components/kemet-fab/types.js.map +0 -1
  241. package/dist/src/components/kemet-field/docs/stories.js.map +0 -1
  242. package/dist/src/components/kemet-field/kemet-field.d.ts +0 -61
  243. package/dist/src/components/kemet-field/kemet-field.js +0 -144
  244. package/dist/src/components/kemet-field/kemet-field.js.map +0 -1
  245. package/dist/src/components/kemet-field/styles.d.ts +0 -1
  246. package/dist/src/components/kemet-field/styles.js +0 -61
  247. package/dist/src/components/kemet-field/styles.js.map +0 -1
  248. package/dist/src/components/kemet-field/types.d.ts +0 -13
  249. package/dist/src/components/kemet-field/types.js +0 -2
  250. package/dist/src/components/kemet-field/types.js.map +0 -1
  251. package/dist/src/components/kemet-flipcard/docs/stories.js.map +0 -1
  252. package/dist/src/components/kemet-flipcard/kemet-flipcard-trigger.d.ts +0 -21
  253. package/dist/src/components/kemet-flipcard/kemet-flipcard-trigger.js +0 -42
  254. package/dist/src/components/kemet-flipcard/kemet-flipcard-trigger.js.map +0 -1
  255. package/dist/src/components/kemet-flipcard/kemet-flipcard.d.ts +0 -52
  256. package/dist/src/components/kemet-flipcard/kemet-flipcard.js +0 -131
  257. package/dist/src/components/kemet-flipcard/kemet-flipcard.js.map +0 -1
  258. package/dist/src/components/kemet-flipcard/styles.d.ts +0 -1
  259. package/dist/src/components/kemet-flipcard/styles.js +0 -85
  260. package/dist/src/components/kemet-flipcard/styles.js.map +0 -1
  261. package/dist/src/components/kemet-flipcard/types.d.ts +0 -7
  262. package/dist/src/components/kemet-flipcard/types.js +0 -2
  263. package/dist/src/components/kemet-flipcard/types.js.map +0 -1
  264. package/dist/src/components/kemet-icon/docs/stories.js.map +0 -1
  265. package/dist/src/components/kemet-icon/kemet-icon.d.ts +0 -28
  266. package/dist/src/components/kemet-icon/kemet-icon.js +0 -114
  267. package/dist/src/components/kemet-icon/kemet-icon.js.map +0 -1
  268. package/dist/src/components/kemet-icon/styles.d.ts +0 -1
  269. package/dist/src/components/kemet-icon/styles.js +0 -9
  270. package/dist/src/components/kemet-icon/styles.js.map +0 -1
  271. package/dist/src/components/kemet-icon/types.d.ts +0 -5
  272. package/dist/src/components/kemet-icon/types.js +0 -2
  273. package/dist/src/components/kemet-icon/types.js.map +0 -1
  274. package/dist/src/components/kemet-input/docs/stories.js.map +0 -1
  275. package/dist/src/components/kemet-input/kemet-input.d.ts +0 -193
  276. package/dist/src/components/kemet-input/kemet-input.js +0 -417
  277. package/dist/src/components/kemet-input/kemet-input.js.map +0 -1
  278. package/dist/src/components/kemet-input/styles.d.ts +0 -1
  279. package/dist/src/components/kemet-input/styles.js +0 -115
  280. package/dist/src/components/kemet-input/styles.js.map +0 -1
  281. package/dist/src/components/kemet-input/types.d.ts +0 -35
  282. package/dist/src/components/kemet-input/types.js +0 -2
  283. package/dist/src/components/kemet-input/types.js.map +0 -1
  284. package/dist/src/components/kemet-modal/docs/stories.js.map +0 -1
  285. package/dist/src/components/kemet-modal/kemet-modal-close.d.ts +0 -21
  286. package/dist/src/components/kemet-modal/kemet-modal-close.js +0 -40
  287. package/dist/src/components/kemet-modal/kemet-modal-close.js.map +0 -1
  288. package/dist/src/components/kemet-modal/kemet-modal.d.ts +0 -49
  289. package/dist/src/components/kemet-modal/kemet-modal.js +0 -131
  290. package/dist/src/components/kemet-modal/kemet-modal.js.map +0 -1
  291. package/dist/src/components/kemet-modal/styles.d.ts +0 -2
  292. package/dist/src/components/kemet-modal/styles.js +0 -267
  293. package/dist/src/components/kemet-modal/styles.js.map +0 -1
  294. package/dist/src/components/kemet-modal/types.d.ts +0 -8
  295. package/dist/src/components/kemet-modal/types.js +0 -2
  296. package/dist/src/components/kemet-modal/types.js.map +0 -1
  297. package/dist/src/components/kemet-password/docs/stories.js.map +0 -1
  298. package/dist/src/components/kemet-password/kemet-password.d.ts +0 -77
  299. package/dist/src/components/kemet-password/kemet-password.js +0 -184
  300. package/dist/src/components/kemet-password/kemet-password.js.map +0 -1
  301. package/dist/src/components/kemet-password/styles.d.ts +0 -1
  302. package/dist/src/components/kemet-password/styles.js +0 -80
  303. package/dist/src/components/kemet-password/styles.js.map +0 -1
  304. package/dist/src/components/kemet-password/types.d.ts +0 -10
  305. package/dist/src/components/kemet-password/types.js +0 -2
  306. package/dist/src/components/kemet-password/types.js.map +0 -1
  307. package/dist/src/components/kemet-popper/docs/stories.js.map +0 -1
  308. package/dist/src/components/kemet-popper/kemet-popper-close.d.ts +0 -22
  309. package/dist/src/components/kemet-popper/kemet-popper-close.js +0 -49
  310. package/dist/src/components/kemet-popper/kemet-popper-close.js.map +0 -1
  311. package/dist/src/components/kemet-popper/kemet-popper.d.ts +0 -63
  312. package/dist/src/components/kemet-popper/kemet-popper.js +0 -182
  313. package/dist/src/components/kemet-popper/kemet-popper.js.map +0 -1
  314. package/dist/src/components/kemet-popper/styles.d.ts +0 -1
  315. package/dist/src/components/kemet-popper/styles.effects.d.ts +0 -8
  316. package/dist/src/components/kemet-popper/styles.effects.js +0 -306
  317. package/dist/src/components/kemet-popper/styles.effects.js.map +0 -1
  318. package/dist/src/components/kemet-popper/styles.js +0 -28
  319. package/dist/src/components/kemet-popper/styles.js.map +0 -1
  320. package/dist/src/components/kemet-popper/types.d.ts +0 -3
  321. package/dist/src/components/kemet-popper/types.js +0 -2
  322. package/dist/src/components/kemet-popper/types.js.map +0 -1
  323. package/dist/src/components/kemet-radio/docs/stories.js.map +0 -1
  324. package/dist/src/components/kemet-radio/kemet-radio.d.ts +0 -56
  325. package/dist/src/components/kemet-radio/kemet-radio.js +0 -129
  326. package/dist/src/components/kemet-radio/kemet-radio.js.map +0 -1
  327. package/dist/src/components/kemet-radio/kemet-radios.d.ts +0 -49
  328. package/dist/src/components/kemet-radio/kemet-radios.js +0 -143
  329. package/dist/src/components/kemet-radio/kemet-radios.js.map +0 -1
  330. package/dist/src/components/kemet-radio/styles.d.ts +0 -2
  331. package/dist/src/components/kemet-radio/styles.js +0 -102
  332. package/dist/src/components/kemet-radio/styles.js.map +0 -1
  333. package/dist/src/components/kemet-radio/types.d.ts +0 -20
  334. package/dist/src/components/kemet-radio/types.js +0 -2
  335. package/dist/src/components/kemet-radio/types.js.map +0 -1
  336. package/dist/src/components/kemet-rotator/docs/stories.js.map +0 -1
  337. package/dist/src/components/kemet-rotator/kemet-rotator.d.ts +0 -40
  338. package/dist/src/components/kemet-rotator/kemet-rotator.js +0 -122
  339. package/dist/src/components/kemet-rotator/kemet-rotator.js.map +0 -1
  340. package/dist/src/components/kemet-rotator/styles.d.ts +0 -1
  341. package/dist/src/components/kemet-rotator/styles.js +0 -72
  342. package/dist/src/components/kemet-rotator/styles.js.map +0 -1
  343. package/dist/src/components/kemet-rotator/types.d.ts +0 -9
  344. package/dist/src/components/kemet-rotator/types.js +0 -2
  345. package/dist/src/components/kemet-rotator/types.js.map +0 -1
  346. package/dist/src/components/kemet-scroll-link/docs/stories.js.map +0 -1
  347. package/dist/src/components/kemet-scroll-link/kemet-scroll-link.d.ts +0 -31
  348. package/dist/src/components/kemet-scroll-link/kemet-scroll-link.js +0 -82
  349. package/dist/src/components/kemet-scroll-link/kemet-scroll-link.js.map +0 -1
  350. package/dist/src/components/kemet-scroll-link/types.d.ts +0 -6
  351. package/dist/src/components/kemet-scroll-link/types.js +0 -2
  352. package/dist/src/components/kemet-scroll-link/types.js.map +0 -1
  353. package/dist/src/components/kemet-scroll-nav/docs/stories.js.map +0 -1
  354. package/dist/src/components/kemet-scroll-nav/kemet-scroll-nav.d.ts +0 -34
  355. package/dist/src/components/kemet-scroll-nav/kemet-scroll-nav.js +0 -70
  356. package/dist/src/components/kemet-scroll-nav/kemet-scroll-nav.js.map +0 -1
  357. package/dist/src/components/kemet-scroll-nav/styles.d.ts +0 -1
  358. package/dist/src/components/kemet-scroll-nav/styles.js +0 -27
  359. package/dist/src/components/kemet-scroll-nav/styles.js.map +0 -1
  360. package/dist/src/components/kemet-scroll-nav/types.d.ts +0 -6
  361. package/dist/src/components/kemet-scroll-nav/types.js +0 -2
  362. package/dist/src/components/kemet-scroll-nav/types.js.map +0 -1
  363. package/dist/src/components/kemet-scroll-snap/docs/stories.js.map +0 -1
  364. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap-paginator.d.ts +0 -44
  365. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js +0 -120
  366. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap-paginator.js.map +0 -1
  367. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap-slide.d.ts +0 -30
  368. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap-slide.js +0 -53
  369. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap-slide.js.map +0 -1
  370. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap.d.ts +0 -46
  371. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap.js +0 -122
  372. package/dist/src/components/kemet-scroll-snap/kemet-scroll-snap.js.map +0 -1
  373. package/dist/src/components/kemet-scroll-snap/styles.d.ts +0 -2
  374. package/dist/src/components/kemet-scroll-snap/styles.js +0 -74
  375. package/dist/src/components/kemet-scroll-snap/styles.js.map +0 -1
  376. package/dist/src/components/kemet-scroll-snap/types.d.ts +0 -20
  377. package/dist/src/components/kemet-scroll-snap/types.js +0 -2
  378. package/dist/src/components/kemet-scroll-snap/types.js.map +0 -1
  379. package/dist/src/components/kemet-select/docs/stories.js.map +0 -1
  380. package/dist/src/components/kemet-select/kemet-option.d.ts +0 -29
  381. package/dist/src/components/kemet-select/kemet-option.js +0 -45
  382. package/dist/src/components/kemet-select/kemet-option.js.map +0 -1
  383. package/dist/src/components/kemet-select/kemet-select.d.ts +0 -110
  384. package/dist/src/components/kemet-select/kemet-select.js +0 -239
  385. package/dist/src/components/kemet-select/kemet-select.js.map +0 -1
  386. package/dist/src/components/kemet-select/styles.d.ts +0 -1
  387. package/dist/src/components/kemet-select/styles.js +0 -73
  388. package/dist/src/components/kemet-select/styles.js.map +0 -1
  389. package/dist/src/components/kemet-select/types.d.ts +0 -20
  390. package/dist/src/components/kemet-select/types.js +0 -2
  391. package/dist/src/components/kemet-select/types.js.map +0 -1
  392. package/dist/src/components/kemet-sortable/docs/stories.js.map +0 -1
  393. package/dist/src/components/kemet-sortable/kemet-sortable-item.d.ts +0 -21
  394. package/dist/src/components/kemet-sortable/kemet-sortable-item.js +0 -30
  395. package/dist/src/components/kemet-sortable/kemet-sortable-item.js.map +0 -1
  396. package/dist/src/components/kemet-sortable/kemet-sortable.d.ts +0 -25
  397. package/dist/src/components/kemet-sortable/kemet-sortable.js +0 -77
  398. package/dist/src/components/kemet-sortable/kemet-sortable.js.map +0 -1
  399. package/dist/src/components/kemet-sortable/styles.d.ts +0 -2
  400. package/dist/src/components/kemet-sortable/styles.js +0 -22
  401. package/dist/src/components/kemet-sortable/styles.js.map +0 -1
  402. package/dist/src/components/kemet-sortable/types.d.ts +0 -3
  403. package/dist/src/components/kemet-sortable/types.js +0 -2
  404. package/dist/src/components/kemet-sortable/types.js.map +0 -1
  405. package/dist/src/components/kemet-svgs/docs/stories.js.map +0 -1
  406. package/dist/src/components/kemet-svgs/kemet-svg.d.ts +0 -38
  407. package/dist/src/components/kemet-svgs/kemet-svg.js +0 -97
  408. package/dist/src/components/kemet-svgs/kemet-svg.js.map +0 -1
  409. package/dist/src/components/kemet-svgs/kemet-svgs.d.ts +0 -27
  410. package/dist/src/components/kemet-svgs/kemet-svgs.js +0 -51
  411. package/dist/src/components/kemet-svgs/kemet-svgs.js.map +0 -1
  412. package/dist/src/components/kemet-svgs/types.d.ts +0 -10
  413. package/dist/src/components/kemet-svgs/types.js +0 -2
  414. package/dist/src/components/kemet-svgs/types.js.map +0 -1
  415. package/dist/src/components/kemet-tabs/docs/stories.js.map +0 -1
  416. package/dist/src/components/kemet-tabs/kemet-tab-panel.d.ts +0 -27
  417. package/dist/src/components/kemet-tabs/kemet-tab-panel.js +0 -52
  418. package/dist/src/components/kemet-tabs/kemet-tab-panel.js.map +0 -1
  419. package/dist/src/components/kemet-tabs/kemet-tab.d.ts +0 -37
  420. package/dist/src/components/kemet-tabs/kemet-tab.js +0 -79
  421. package/dist/src/components/kemet-tabs/kemet-tab.js.map +0 -1
  422. package/dist/src/components/kemet-tabs/kemet-tabs.d.ts +0 -91
  423. package/dist/src/components/kemet-tabs/kemet-tabs.js +0 -523
  424. package/dist/src/components/kemet-tabs/kemet-tabs.js.map +0 -1
  425. package/dist/src/components/kemet-tabs/styles.d.ts +0 -3
  426. package/dist/src/components/kemet-tabs/styles.js +0 -268
  427. package/dist/src/components/kemet-tabs/styles.js.map +0 -1
  428. package/dist/src/components/kemet-tabs/types.d.ts +0 -27
  429. package/dist/src/components/kemet-tabs/types.js +0 -2
  430. package/dist/src/components/kemet-tabs/types.js.map +0 -1
  431. package/dist/src/components/kemet-textarea/docs/stories.js.map +0 -1
  432. package/dist/src/components/kemet-textarea/kemet-textarea.d.ts +0 -123
  433. package/dist/src/components/kemet-textarea/kemet-textarea.js +0 -293
  434. package/dist/src/components/kemet-textarea/kemet-textarea.js.map +0 -1
  435. package/dist/src/components/kemet-textarea/styles.d.ts +0 -1
  436. package/dist/src/components/kemet-textarea/styles.js +0 -69
  437. package/dist/src/components/kemet-textarea/styles.js.map +0 -1
  438. package/dist/src/components/kemet-textarea/types.d.ts +0 -20
  439. package/dist/src/components/kemet-textarea/types.js +0 -2
  440. package/dist/src/components/kemet-textarea/types.js.map +0 -1
  441. package/dist/src/components/kemet-toggle/docs/stories.js.map +0 -1
  442. package/dist/src/components/kemet-toggle/kemet-toggle.d.ts +0 -60
  443. package/dist/src/components/kemet-toggle/kemet-toggle.js +0 -130
  444. package/dist/src/components/kemet-toggle/kemet-toggle.js.map +0 -1
  445. package/dist/src/components/kemet-toggle/styles.d.ts +0 -1
  446. package/dist/src/components/kemet-toggle/styles.js +0 -84
  447. package/dist/src/components/kemet-toggle/styles.js.map +0 -1
  448. package/dist/src/components/kemet-toggle/types.d.ts +0 -10
  449. package/dist/src/components/kemet-toggle/types.js +0 -2
  450. package/dist/src/components/kemet-toggle/types.js.map +0 -1
  451. package/dist/src/components/kemet-tooltip/docs/stories.js.map +0 -1
  452. package/dist/src/components/kemet-tooltip/kemet-tooltip.d.ts +0 -33
  453. package/dist/src/components/kemet-tooltip/kemet-tooltip.js +0 -68
  454. package/dist/src/components/kemet-tooltip/kemet-tooltip.js.map +0 -1
  455. package/dist/src/components/kemet-tooltip/styles.d.ts +0 -1
  456. package/dist/src/components/kemet-tooltip/styles.js +0 -61
  457. package/dist/src/components/kemet-tooltip/styles.js.map +0 -1
  458. package/dist/src/components/kemet-tooltip/types.d.ts +0 -3
  459. package/dist/src/components/kemet-tooltip/types.js +0 -2
  460. package/dist/src/components/kemet-tooltip/types.js.map +0 -1
  461. package/dist/src/components/kemet-tracker/docs/stories.js.map +0 -1
  462. package/dist/src/components/kemet-tracker/kemet-tracker-step.d.ts +0 -63
  463. package/dist/src/components/kemet-tracker/kemet-tracker-step.js +0 -127
  464. package/dist/src/components/kemet-tracker/kemet-tracker-step.js.map +0 -1
  465. package/dist/src/components/kemet-tracker/kemet-tracker.d.ts +0 -26
  466. package/dist/src/components/kemet-tracker/kemet-tracker.js +0 -70
  467. package/dist/src/components/kemet-tracker/kemet-tracker.js.map +0 -1
  468. package/dist/src/components/kemet-tracker/styles.d.ts +0 -1
  469. package/dist/src/components/kemet-tracker/styles.js +0 -111
  470. package/dist/src/components/kemet-tracker/styles.js.map +0 -1
  471. package/dist/src/components/kemet-tracker/types.d.ts +0 -13
  472. package/dist/src/components/kemet-tracker/types.js +0 -2
  473. package/dist/src/components/kemet-tracker/types.js.map +0 -1
  474. package/dist/src/components/kemet-upload/docs/stories.js.map +0 -1
  475. package/dist/src/components/kemet-upload/kemet-upload-file.d.ts +0 -46
  476. package/dist/src/components/kemet-upload/kemet-upload-file.js +0 -110
  477. package/dist/src/components/kemet-upload/kemet-upload-file.js.map +0 -1
  478. package/dist/src/components/kemet-upload/kemet-upload.d.ts +0 -58
  479. package/dist/src/components/kemet-upload/kemet-upload.js +0 -154
  480. package/dist/src/components/kemet-upload/kemet-upload.js.map +0 -1
  481. package/dist/src/components/kemet-upload/styles.d.ts +0 -3
  482. package/dist/src/components/kemet-upload/styles.js +0 -169
  483. package/dist/src/components/kemet-upload/styles.js.map +0 -1
  484. package/dist/src/components/kemet-upload/types.d.ts +0 -21
  485. package/dist/src/components/kemet-upload/types.js +0 -2
  486. package/dist/src/components/kemet-upload/types.js.map +0 -1
  487. package/dist/src/stories/styles/borders/borders.stories.d.ts +0 -5
  488. package/dist/src/stories/styles/borders/borders.stories.js +0 -46
  489. package/dist/src/stories/styles/borders/borders.stories.js.map +0 -1
  490. package/dist/src/stories/styles/borders/stories.d.ts +0 -5
  491. package/dist/src/stories/styles/borders/stories.js +0 -46
  492. package/dist/src/stories/styles/borders/stories.js.map +0 -1
  493. package/dist/src/stories/styles/borders.stories.d.ts +0 -5
  494. package/dist/src/stories/styles/borders.stories.js +0 -46
  495. package/dist/src/stories/styles/borders.stories.js.map +0 -1
  496. package/dist/src/stories/styles/elevation/elevation.stories.d.ts +0 -1
  497. package/dist/src/stories/styles/elevation/elevation.stories.js +0 -15
  498. package/dist/src/stories/styles/elevation/elevation.stories.js.map +0 -1
  499. package/dist/src/stories/styles/elevation/stories.d.ts +0 -5
  500. package/dist/src/stories/styles/elevation/stories.js +0 -21
  501. package/dist/src/stories/styles/elevation/stories.js.map +0 -1
  502. package/dist/src/stories/styles/flexcolumn/stories.d.ts +0 -6
  503. package/dist/src/stories/styles/flexcolumn/stories.js +0 -44
  504. package/dist/src/stories/styles/flexcolumn/stories.js.map +0 -1
  505. package/dist/src/stories/styles/flexgrid/stories.d.ts +0 -6
  506. package/dist/src/stories/styles/flexgrid/stories.js +0 -44
  507. package/dist/src/stories/styles/flexgrid/stories.js.map +0 -1
  508. package/dist/src/stories/styles/flexlist/stories.d.ts +0 -7
  509. package/dist/src/stories/styles/flexlist/stories.js +0 -45
  510. package/dist/src/stories/styles/flexlist/stories.js.map +0 -1
  511. package/dist/src/stories/styles/flexrow/stories.d.ts +0 -10
  512. package/dist/src/stories/styles/flexrow/stories.js +0 -77
  513. package/dist/src/stories/styles/flexrow/stories.js.map +0 -1
  514. package/dist/src/stories/styles/spacing/stories.d.ts +0 -6
  515. package/dist/src/stories/styles/spacing/stories.js +0 -49
  516. package/dist/src/stories/styles/spacing/stories.js.map +0 -1
  517. package/dist/src/stories/styles/typealignment/stories.d.ts +0 -5
  518. package/dist/src/stories/styles/typealignment/stories.js +0 -14
  519. package/dist/src/stories/styles/typealignment/stories.js.map +0 -1
  520. package/dist/src/stories/styles/typography/stories.d.ts +0 -6
  521. package/dist/src/stories/styles/typography/stories.js +0 -41
  522. package/dist/src/stories/styles/typography/stories.js.map +0 -1
  523. package/dist/src/stories/styles/visibility/stories.d.ts +0 -6
  524. package/dist/src/stories/styles/visibility/stories.js +0 -60
  525. package/dist/src/stories/styles/visibility/stories.js.map +0 -1
  526. package/dist/src/stories/templates/bootstrap/stories.d.ts +0 -6
  527. package/dist/src/stories/templates/bootstrap/stories.js +0 -159
  528. package/dist/src/stories/templates/bootstrap/stories.js.map +0 -1
  529. package/dist/src/stories/templates/foundation/stories.d.ts +0 -8
  530. package/dist/src/stories/templates/foundation/stories.js +0 -911
  531. package/dist/src/stories/templates/foundation/stories.js.map +0 -1
  532. package/dist/src/utilities/controllers/forms.d.ts +0 -11
  533. package/dist/src/utilities/controllers/forms.js +0 -102
  534. package/dist/src/utilities/controllers/forms.js.map +0 -1
  535. package/dist/src/utilities/misc/constants.d.ts +0 -5
  536. package/dist/src/utilities/misc/constants.js +0 -6
  537. package/dist/src/utilities/misc/constants.js.map +0 -1
  538. package/dist/src/utilities/misc/events.d.ts +0 -1
  539. package/dist/src/utilities/misc/events.js +0 -4
  540. package/dist/src/utilities/misc/events.js.map +0 -1
  541. package/dist/utilities/misc/decorators.d.ts +0 -1
  542. package/dist/utilities/misc/decorators.js +0 -5
  543. package/dist/utilities/misc/decorators.js.map +0 -1
  544. /package/dist/{src/components → components}/kemet-card/docs/stories.d.ts +0 -0
  545. /package/dist/{src/components → components}/kemet-card/docs/stories.js +0 -0
  546. /package/dist/{src/components → components}/kemet-carousel/docs/stories.d.ts +0 -0
  547. /package/dist/{src/components → components}/kemet-carousel/docs/stories.js +0 -0
  548. /package/dist/{src/components → components}/kemet-checkbox/docs/stories.d.ts +0 -0
  549. /package/dist/{src/components → components}/kemet-checkbox/docs/stories.js +0 -0
  550. /package/dist/{src/components → components}/kemet-combo/docs/stories.d.ts +0 -0
  551. /package/dist/{src/components → components}/kemet-combo/docs/stories.js +0 -0
  552. /package/dist/{src/components → components}/kemet-count/docs/stories.d.ts +0 -0
  553. /package/dist/{src/components → components}/kemet-count/docs/stories.js +0 -0
  554. /package/dist/{src/components → components}/kemet-draggable/docs/stories.d.ts +0 -0
  555. /package/dist/{src/components → components}/kemet-draggable/docs/stories.js +0 -0
  556. /package/dist/{src/components → components}/kemet-drawer/docs/stories.d.ts +0 -0
  557. /package/dist/{src/components → components}/kemet-drawer/docs/stories.js +0 -0
  558. /package/dist/{src/components → components}/kemet-fab/docs/stories.d.ts +0 -0
  559. /package/dist/{src/components → components}/kemet-fab/docs/stories.js +0 -0
  560. /package/dist/{src/components → components}/kemet-field/docs/stories.d.ts +0 -0
  561. /package/dist/{src/components → components}/kemet-field/docs/stories.js +0 -0
  562. /package/dist/{src/components → components}/kemet-flipcard/docs/stories.d.ts +0 -0
  563. /package/dist/{src/components → components}/kemet-flipcard/docs/stories.js +0 -0
  564. /package/dist/{src/components → components}/kemet-icon/docs/stories.d.ts +0 -0
  565. /package/dist/{src/components → components}/kemet-icon/docs/stories.js +0 -0
  566. /package/dist/{src/components → components}/kemet-input/docs/stories.d.ts +0 -0
  567. /package/dist/{src/components → components}/kemet-input/docs/stories.js +0 -0
  568. /package/dist/{src/components → components}/kemet-modal/docs/stories.d.ts +0 -0
  569. /package/dist/{src/components → components}/kemet-modal/docs/stories.js +0 -0
  570. /package/dist/{src/components → components}/kemet-password/docs/stories.d.ts +0 -0
  571. /package/dist/{src/components → components}/kemet-password/docs/stories.js +0 -0
  572. /package/dist/{src/components → components}/kemet-popper/docs/stories.d.ts +0 -0
  573. /package/dist/{src/components → components}/kemet-popper/docs/stories.js +0 -0
  574. /package/dist/{src/components → components}/kemet-radio/docs/stories.d.ts +0 -0
  575. /package/dist/{src/components → components}/kemet-radio/docs/stories.js +0 -0
  576. /package/dist/{src/components → components}/kemet-rotator/docs/stories.d.ts +0 -0
  577. /package/dist/{src/components → components}/kemet-rotator/docs/stories.js +0 -0
  578. /package/dist/{src/components → components}/kemet-scroll-link/docs/stories.d.ts +0 -0
  579. /package/dist/{src/components → components}/kemet-scroll-link/docs/stories.js +0 -0
  580. /package/dist/{src/components → components}/kemet-scroll-nav/docs/stories.d.ts +0 -0
  581. /package/dist/{src/components → components}/kemet-scroll-nav/docs/stories.js +0 -0
  582. /package/dist/{src/components → components}/kemet-scroll-snap/docs/stories.d.ts +0 -0
  583. /package/dist/{src/components → components}/kemet-scroll-snap/docs/stories.js +0 -0
  584. /package/dist/{src/components → components}/kemet-select/docs/stories.d.ts +0 -0
  585. /package/dist/{src/components → components}/kemet-select/docs/stories.js +0 -0
  586. /package/dist/{src/components → components}/kemet-sortable/docs/stories.d.ts +0 -0
  587. /package/dist/{src/components → components}/kemet-sortable/docs/stories.js +0 -0
  588. /package/dist/{src/components → components}/kemet-svgs/docs/stories.d.ts +0 -0
  589. /package/dist/{src/components → components}/kemet-svgs/docs/stories.js +0 -0
  590. /package/dist/{src/components → components}/kemet-tabs/docs/stories.d.ts +0 -0
  591. /package/dist/{src/components → components}/kemet-tabs/docs/stories.js +0 -0
  592. /package/dist/{src/components → components}/kemet-textarea/docs/stories.d.ts +0 -0
  593. /package/dist/{src/components → components}/kemet-textarea/docs/stories.js +0 -0
  594. /package/dist/{src/components → components}/kemet-toggle/docs/stories.d.ts +0 -0
  595. /package/dist/{src/components → components}/kemet-toggle/docs/stories.js +0 -0
  596. /package/dist/{src/components → components}/kemet-tooltip/docs/stories.d.ts +0 -0
  597. /package/dist/{src/components → components}/kemet-tooltip/docs/stories.js +0 -0
  598. /package/dist/{src/components → components}/kemet-tracker/docs/stories.d.ts +0 -0
  599. /package/dist/{src/components → components}/kemet-tracker/docs/stories.js +0 -0
  600. /package/dist/{src/components → components}/kemet-upload/docs/stories.d.ts +0 -0
  601. /package/dist/{src/components → components}/kemet-upload/docs/stories.js +0 -0
@@ -1269,128 +1269,6 @@ KemetButton = __decorate([
1269
1269
  e$5('kemet-button')
1270
1270
  ], KemetButton);
1271
1271
 
1272
- const stylesBase$9 = i$4 `
1273
- *,
1274
- *::before,
1275
- *::after {
1276
- box-sizing: border-box;
1277
- }
1278
-
1279
- :host {
1280
- --kemet-card-padding: 1rem;
1281
- --kemet-card-border-color: var(--kemet-color-gray4);
1282
-
1283
- color: var(--kemet-card-color, var(--kemet-color-black));
1284
- display: inline-flex;
1285
- flex-direction: column;
1286
- max-width: var(--kemet-card-max-width, 360px);
1287
- border: var(--kemet-card-border, 1px solid var(--kemet-card-border-color));
1288
- border-radius: var(--kemet-card-border-radius, 0);
1289
- background-color: var(--kemet-card-background-color, var(--kemet-color-white));
1290
- }
1291
-
1292
- :host([center]) {
1293
- align-items: center;
1294
- text-align: center;
1295
- }
1296
-
1297
- .body {
1298
- padding: var(--kemet-card-body-padding, var(--kemet-card-padding));
1299
- }
1300
-
1301
- .media {
1302
- position: relative;
1303
- }
1304
-
1305
- ::slotted(*) {
1306
- max-width: 100%;
1307
- }
1308
-
1309
- ::slotted(img) {
1310
- display: flex;
1311
- max-width: 100%;
1312
- }
1313
-
1314
- ::slotted([slot="header"]) {
1315
- padding: var(--kemet-card-header-padding, var(--kemet-card-padding));
1316
- border-bottom: var(--kemet-card-header-border-bottom, 1px solid var(--kemet-card-border-color));
1317
- }
1318
-
1319
- ::slotted([slot="caption"]) {
1320
- color: var(--kemet-card-caption-color, var(--kemet-color-white));
1321
- position: absolute;
1322
- bottom: 0;
1323
- width: 100%;
1324
- padding: var(--kemet-card-caption-padding, calc(var(--kemet-card-padding) / 2) var(--kemet-card-padding));
1325
- background-color: var(--kemet-card-caption-background-color, rgba(0,0,0,0.35));
1326
- }
1327
-
1328
- ::slotted([slot="footer"]) {
1329
- padding: var(--kemet-card-footer-padding, var(--kemet-card-padding));
1330
- border-top: var(--kemet-card-footer-border-top, 1px solid var(--kemet-card-border-color));
1331
- }
1332
- `;
1333
-
1334
- /**
1335
- * @since 1.4.0
1336
- * @status stable
1337
- *
1338
- * @tagname kemet-card
1339
- * @summary A highly configurable panel design to display media and information.
1340
- *
1341
- * @prop {boolean} center - Centers the elements in the card.
1342
- *
1343
- * @slot default - The contents of the alert.
1344
- * @slot header - The cards's header.
1345
- * @slot media - A slot for images, videos, or embeds.
1346
- * @slot caption - Text for the media slot.
1347
- * @slot footer - The card's footer.
1348
- *
1349
- *
1350
- * @csspart media - The media area of the card.
1351
- * @csspart body - The main contents of the card.
1352
- *
1353
- * @cssproperty --kemet-card-padding - The space around elements. Default: 1rem.
1354
- * @cssproperty --kemet-card-border-color - The color of the borders. Default: var(--kemet-color-gray4).
1355
- * @cssproperty --kemet-card-color - The color of the text. Default: var(--kemet-color-black).
1356
- * @cssproperty --kemet-card-max-width - The max width of the card. Default: 360px.
1357
- * @cssproperty --kemet-card-border - The border around the card. Default: 1px solid var(--kemet-card-border-color).
1358
- * @cssproperty --kemet-card-border-radius - The border radius of the card. Default: 0.
1359
- * @cssproperty --kemet-card-background-color - The background color. Default: var(--kemet-color-white).
1360
- * @cssproperty --kemet-card-body-padding - The body spacing. Default: var(--kemet-card-padding).
1361
- * @cssproperty --kemet-card-header-padding - The header spacing. Default: var(--kemet-card-padding).
1362
- * @cssproperty --kemet-card-header-border-bottom - The header border. Default: 1px solid var(--kemet-card-border-color).
1363
- * @cssproperty --kemet-card-caption-color - The caption text color. Default: var(--kemet-color-white).
1364
- * @cssproperty --kemet-card-caption-padding - The caption spacing. Default: calc(var(--kemet-card-padding) / 2) var(--kemet-card-padding).
1365
- * @cssproperty --kemet-card-caption-background-color - The caption background color. Default: rgba(0,0,0,0.5).
1366
- * @cssproperty --kemet-card-footer-padding - The footer spacing. Default: var(--kemet-card-padding).
1367
- * @cssproperty --kemet-card-footer-border-top - The footer border. Default: 1px solid var(--kemet-card-border-color).
1368
- *
1369
- */
1370
- let KemetCard = class KemetCard extends s$1 {
1371
- render() {
1372
- return x `
1373
- <slot name="header"></slot>
1374
- <div class="media" part="media">
1375
- <slot name="media"></slot>
1376
- <slot name="caption"></slot>
1377
- </div>
1378
- <div class="body" part="body">
1379
- <slot></slot>
1380
- </div>
1381
- </div>
1382
- <slot name="footer"></slot>
1383
- `;
1384
- }
1385
- };
1386
- KemetCard.styles = [stylesBase$9];
1387
- __decorate([
1388
- e$4({ type: Boolean, reflect: true })
1389
- ], KemetCard.prototype, "center", void 0);
1390
- KemetCard = __decorate([
1391
- e$5('kemet-card')
1392
- ], KemetCard);
1393
-
1394
1272
  /**
1395
1273
  *
1396
1274
  * @since 1.1.0
@@ -1436,29 +1314,29 @@ KemetCarouselCurrent = __decorate([
1436
1314
  * @since 1.1.0
1437
1315
  * @status stable
1438
1316
  *
1439
- * @tagname kemet-carousel-first
1440
- * @summary A link to the first slide in the carousel.
1317
+ * @tagname kemet-carousel-last
1318
+ * @summary A link to the last slide in the carousel..
1441
1319
  *
1442
1320
  * @prop {boolean} disabled - Deactivates the button.
1443
1321
  *
1444
- * @event kemet-carousel-first
1322
+ * @event kemet-carousel-last
1445
1323
  *
1446
1324
  */
1447
- let KemetCarouselFirst = class KemetCarouselFirst extends s$1 {
1325
+ let KemetCarouselLast = class KemetCarouselLast extends s$1 {
1448
1326
  render() {
1449
1327
  return x `
1450
- <span tabindex="0" @keyup=${() => this.first()} @click=${() => this.first()}>
1328
+ <span tabindex="0" @keyup=${() => this.last()} @click=${() => this.last()}>
1451
1329
  <slot></slot>
1452
1330
  </span>
1453
1331
  `;
1454
1332
  }
1455
- first() {
1333
+ last() {
1456
1334
  if (!this.disabled) {
1457
- emitEvent(this, 'kemet-carousel-first', this);
1335
+ emitEvent(this, 'kemet-carousel-last', this);
1458
1336
  }
1459
1337
  }
1460
1338
  };
1461
- KemetCarouselFirst.styles = [
1339
+ KemetCarouselLast.styles = [
1462
1340
  i$4 `
1463
1341
  :host {
1464
1342
  cursor: pointer;
@@ -1471,39 +1349,39 @@ KemetCarouselFirst.styles = [
1471
1349
  ];
1472
1350
  __decorate([
1473
1351
  e$4({ type: Boolean, reflect: true })
1474
- ], KemetCarouselFirst.prototype, "disabled", void 0);
1475
- KemetCarouselFirst = __decorate([
1476
- e$5('kemet-carousel-first')
1477
- ], KemetCarouselFirst);
1352
+ ], KemetCarouselLast.prototype, "disabled", void 0);
1353
+ KemetCarouselLast = __decorate([
1354
+ e$5('kemet-carousel-last')
1355
+ ], KemetCarouselLast);
1478
1356
 
1479
1357
  /**
1480
1358
  *
1481
1359
  * @since 1.1.0
1482
1360
  * @status stable
1483
1361
  *
1484
- * @tagname kemet-carousel-last
1485
- * @summary A link to the last slide in the carousel..
1362
+ * @tagname kemet-carousel-first
1363
+ * @summary A link to the first slide in the carousel.
1486
1364
  *
1487
1365
  * @prop {boolean} disabled - Deactivates the button.
1488
1366
  *
1489
- * @event kemet-carousel-last
1367
+ * @event kemet-carousel-first
1490
1368
  *
1491
1369
  */
1492
- let KemetCarouselLast = class KemetCarouselLast extends s$1 {
1370
+ let KemetCarouselFirst = class KemetCarouselFirst extends s$1 {
1493
1371
  render() {
1494
1372
  return x `
1495
- <span tabindex="0" @keyup=${() => this.last()} @click=${() => this.last()}>
1373
+ <span tabindex="0" @keyup=${() => this.first()} @click=${() => this.first()}>
1496
1374
  <slot></slot>
1497
1375
  </span>
1498
1376
  `;
1499
1377
  }
1500
- last() {
1378
+ first() {
1501
1379
  if (!this.disabled) {
1502
- emitEvent(this, 'kemet-carousel-last', this);
1380
+ emitEvent(this, 'kemet-carousel-first', this);
1503
1381
  }
1504
1382
  }
1505
1383
  };
1506
- KemetCarouselLast.styles = [
1384
+ KemetCarouselFirst.styles = [
1507
1385
  i$4 `
1508
1386
  :host {
1509
1387
  cursor: pointer;
@@ -1516,10 +1394,10 @@ KemetCarouselLast.styles = [
1516
1394
  ];
1517
1395
  __decorate([
1518
1396
  e$4({ type: Boolean, reflect: true })
1519
- ], KemetCarouselLast.prototype, "disabled", void 0);
1520
- KemetCarouselLast = __decorate([
1521
- e$5('kemet-carousel-last')
1522
- ], KemetCarouselLast);
1397
+ ], KemetCarouselFirst.prototype, "disabled", void 0);
1398
+ KemetCarouselFirst = __decorate([
1399
+ e$5('kemet-carousel-first')
1400
+ ], KemetCarouselFirst);
1523
1401
 
1524
1402
  /**
1525
1403
  *
@@ -1900,7 +1778,9 @@ let KemetCarousel = class KemetCarousel extends s$1 {
1900
1778
  center: true,
1901
1779
  },
1902
1780
  };
1781
+ /** @internal */
1903
1782
  this.slides = [];
1783
+ /** @internal */
1904
1784
  this.links = [];
1905
1785
  // bindings
1906
1786
  this.addEventListener('kemet-carousel-first', this.handleFirst.bind(this));
@@ -2226,32 +2106,7 @@ KemetCarousel = __decorate([
2226
2106
  e$5('kemet-carousel')
2227
2107
  ], KemetCarousel);
2228
2108
 
2229
- /**
2230
- * @license
2231
- * Copyright 2018 Google LLC
2232
- * SPDX-License-Identifier: BSD-3-Clause
2233
- */const l$1=l=>null!=l?l:A;
2234
-
2235
- /**
2236
- * @license
2237
- * Copyright 2017 Google LLC
2238
- * SPDX-License-Identifier: BSD-3-Clause
2239
- */
2240
- const t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e$2=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i;}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}
2241
-
2242
- /**
2243
- * @license
2244
- * Copyright 2020 Google LLC
2245
- * SPDX-License-Identifier: BSD-3-Clause
2246
- */const e$1=o=>void 0===o.strings,f={},s=(o,l=f)=>o._$AH=l;
2247
-
2248
- /**
2249
- * @license
2250
- * Copyright 2020 Google LLC
2251
- * SPDX-License-Identifier: BSD-3-Clause
2252
- */const l=e$2(class extends i{constructor(r){if(super(r),r.type!==t.PROPERTY&&r.type!==t.ATTRIBUTE&&r.type!==t.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!e$1(r))throw Error("`live` bindings can only contain a single expression")}render(r){return r}update(i,[t$1]){if(t$1===T||t$1===A)return t$1;const o=i.element,l=i.name;if(i.type===t.PROPERTY){if(t$1===o[l])return T}else if(i.type===t.BOOLEAN_ATTRIBUTE){if(!!t$1===o.hasAttribute(l))return T}else if(i.type===t.ATTRIBUTE&&o.getAttribute(l)===t$1+"")return T;return s(i),t$1}});
2253
-
2254
- const stylesBase$8 = i$4 `
2109
+ const stylesBase$9 = i$4 `
2255
2110
  *,
2256
2111
  *::before,
2257
2112
  *::after {
@@ -2259,56 +2114,203 @@ const stylesBase$8 = i$4 `
2259
2114
  }
2260
2115
 
2261
2116
  :host {
2262
- display: inline-block;
2263
- }
2117
+ --kemet-card-padding: 1rem;
2118
+ --kemet-card-border-color: var(--kemet-color-gray4);
2264
2119
 
2265
- :host([disabled]) {
2266
- opacity: 0.5;
2120
+ color: var(--kemet-card-color, var(--kemet-color-black));
2121
+ display: inline-flex;
2122
+ flex-direction: column;
2123
+ max-width: var(--kemet-card-max-width, 360px);
2124
+ border: var(--kemet-card-border, 1px solid var(--kemet-card-border-color));
2125
+ border-radius: var(--kemet-card-border-radius, 0);
2126
+ background-color: var(--kemet-card-background-color, var(--kemet-color-white));
2267
2127
  }
2268
2128
 
2269
- label {
2270
- display: inline-flex;
2271
- gap: 0.5rem;
2129
+ :host([center]) {
2272
2130
  align-items: center;
2131
+ text-align: center;
2273
2132
  }
2274
2133
 
2275
- input {
2276
- cursor: pointer;
2277
- margin: 0;
2278
- padding: 0;
2279
- width: var(--kemet-checkbox-size, 18px);
2280
- height: var(--kemet-checkbox-size, 18px);
2281
- position: absolute;
2282
- opacity: 0;
2134
+ .body {
2135
+ padding: var(--kemet-card-body-padding, var(--kemet-card-padding));
2283
2136
  }
2284
2137
 
2285
- button {
2286
- margin: 0;
2287
- border: none;
2288
- background: none;
2138
+ .media {
2139
+ position: relative;
2289
2140
  }
2290
2141
 
2291
- [part='checkbox'] {
2292
- color: var(--kemet-checkbox-color, var(--kemet-color-background));
2293
- display: flex;
2294
- align-items: center;
2295
- justify-content: center;
2296
- width: var(--kemet-checkbox-size, 18px);
2297
- height: var(--kemet-checkbox-size, 18px);
2298
- border: var(--kemet-checkbox-border, 1px solid var(--kemet-color-background));
2142
+ ::slotted(*) {
2143
+ max-width: 100%;
2299
2144
  }
2300
2145
 
2301
- :host([rounded]) [part='checkbox'] {
2302
- border-radius: var(--kemet-checkbox-border-radius, 4px);
2146
+ ::slotted(img) {
2147
+ display: flex;
2148
+ max-width: 100%;
2303
2149
  }
2304
2150
 
2305
- :host([filled][checked]) [part='checkbox'],
2306
- :host([filled][indeterminate]) [part='checkbox'] {
2307
- border: none;
2308
- background-color: var(--kemet-checkbox-filled-background-color, var(--kemet-color-primary));
2151
+ ::slotted([slot="header"]) {
2152
+ padding: var(--kemet-card-header-padding, var(--kemet-card-padding));
2153
+ border-bottom: var(--kemet-card-header-border-bottom, 1px solid var(--kemet-card-border-color));
2309
2154
  }
2310
2155
 
2311
- [part='mark'] {
2156
+ ::slotted([slot="caption"]) {
2157
+ color: var(--kemet-card-caption-color, var(--kemet-color-white));
2158
+ position: absolute;
2159
+ bottom: 0;
2160
+ width: 100%;
2161
+ padding: var(--kemet-card-caption-padding, calc(var(--kemet-card-padding) / 2) var(--kemet-card-padding));
2162
+ background-color: var(--kemet-card-caption-background-color, rgba(0,0,0,0.35));
2163
+ }
2164
+
2165
+ ::slotted([slot="footer"]) {
2166
+ padding: var(--kemet-card-footer-padding, var(--kemet-card-padding));
2167
+ border-top: var(--kemet-card-footer-border-top, 1px solid var(--kemet-card-border-color));
2168
+ }
2169
+ `;
2170
+
2171
+ /**
2172
+ * @since 1.4.0
2173
+ * @status stable
2174
+ *
2175
+ * @tagname kemet-card
2176
+ * @summary A highly configurable panel design to display media and information.
2177
+ *
2178
+ * @prop {boolean} center - Centers the elements in the card.
2179
+ *
2180
+ * @slot default - The contents of the alert.
2181
+ * @slot header - The cards's header.
2182
+ * @slot media - A slot for images, videos, or embeds.
2183
+ * @slot caption - Text for the media slot.
2184
+ * @slot footer - The card's footer.
2185
+ *
2186
+ *
2187
+ * @csspart media - The media area of the card.
2188
+ * @csspart body - The main contents of the card.
2189
+ *
2190
+ * @cssproperty --kemet-card-padding - The space around elements. Default: 1rem.
2191
+ * @cssproperty --kemet-card-border-color - The color of the borders. Default: var(--kemet-color-gray4).
2192
+ * @cssproperty --kemet-card-color - The color of the text. Default: var(--kemet-color-black).
2193
+ * @cssproperty --kemet-card-max-width - The max width of the card. Default: 360px.
2194
+ * @cssproperty --kemet-card-border - The border around the card. Default: 1px solid var(--kemet-card-border-color).
2195
+ * @cssproperty --kemet-card-border-radius - The border radius of the card. Default: 0.
2196
+ * @cssproperty --kemet-card-background-color - The background color. Default: var(--kemet-color-white).
2197
+ * @cssproperty --kemet-card-body-padding - The body spacing. Default: var(--kemet-card-padding).
2198
+ * @cssproperty --kemet-card-header-padding - The header spacing. Default: var(--kemet-card-padding).
2199
+ * @cssproperty --kemet-card-header-border-bottom - The header border. Default: 1px solid var(--kemet-card-border-color).
2200
+ * @cssproperty --kemet-card-caption-color - The caption text color. Default: var(--kemet-color-white).
2201
+ * @cssproperty --kemet-card-caption-padding - The caption spacing. Default: calc(var(--kemet-card-padding) / 2) var(--kemet-card-padding).
2202
+ * @cssproperty --kemet-card-caption-background-color - The caption background color. Default: rgba(0,0,0,0.5).
2203
+ * @cssproperty --kemet-card-footer-padding - The footer spacing. Default: var(--kemet-card-padding).
2204
+ * @cssproperty --kemet-card-footer-border-top - The footer border. Default: 1px solid var(--kemet-card-border-color).
2205
+ *
2206
+ */
2207
+ let KemetCard = class KemetCard extends s$1 {
2208
+ render() {
2209
+ return x `
2210
+ <slot name="header"></slot>
2211
+ <div class="media" part="media">
2212
+ <slot name="media"></slot>
2213
+ <slot name="caption"></slot>
2214
+ </div>
2215
+ <div class="body" part="body">
2216
+ <slot></slot>
2217
+ </div>
2218
+ </div>
2219
+ <slot name="footer"></slot>
2220
+ `;
2221
+ }
2222
+ };
2223
+ KemetCard.styles = [stylesBase$9];
2224
+ __decorate([
2225
+ e$4({ type: Boolean, reflect: true })
2226
+ ], KemetCard.prototype, "center", void 0);
2227
+ KemetCard = __decorate([
2228
+ e$5('kemet-card')
2229
+ ], KemetCard);
2230
+
2231
+ /**
2232
+ * @license
2233
+ * Copyright 2018 Google LLC
2234
+ * SPDX-License-Identifier: BSD-3-Clause
2235
+ */const l$1=l=>null!=l?l:A;
2236
+
2237
+ /**
2238
+ * @license
2239
+ * Copyright 2017 Google LLC
2240
+ * SPDX-License-Identifier: BSD-3-Clause
2241
+ */
2242
+ const t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e$2=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i;}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}
2243
+
2244
+ /**
2245
+ * @license
2246
+ * Copyright 2020 Google LLC
2247
+ * SPDX-License-Identifier: BSD-3-Clause
2248
+ */const e$1=o=>void 0===o.strings,f={},s=(o,l=f)=>o._$AH=l;
2249
+
2250
+ /**
2251
+ * @license
2252
+ * Copyright 2020 Google LLC
2253
+ * SPDX-License-Identifier: BSD-3-Clause
2254
+ */const l=e$2(class extends i{constructor(r){if(super(r),r.type!==t.PROPERTY&&r.type!==t.ATTRIBUTE&&r.type!==t.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!e$1(r))throw Error("`live` bindings can only contain a single expression")}render(r){return r}update(i,[t$1]){if(t$1===T||t$1===A)return t$1;const o=i.element,l=i.name;if(i.type===t.PROPERTY){if(t$1===o[l])return T}else if(i.type===t.BOOLEAN_ATTRIBUTE){if(!!t$1===o.hasAttribute(l))return T}else if(i.type===t.ATTRIBUTE&&o.getAttribute(l)===t$1+"")return T;return s(i),t$1}});
2255
+
2256
+ const stylesBase$8 = i$4 `
2257
+ *,
2258
+ *::before,
2259
+ *::after {
2260
+ box-sizing: border-box;
2261
+ }
2262
+
2263
+ :host {
2264
+ display: inline-block;
2265
+ }
2266
+
2267
+ :host([disabled]) {
2268
+ opacity: 0.5;
2269
+ }
2270
+
2271
+ label {
2272
+ display: inline-flex;
2273
+ gap: 0.5rem;
2274
+ align-items: center;
2275
+ }
2276
+
2277
+ input {
2278
+ cursor: pointer;
2279
+ margin: 0;
2280
+ padding: 0;
2281
+ width: var(--kemet-checkbox-size, 18px);
2282
+ height: var(--kemet-checkbox-size, 18px);
2283
+ position: absolute;
2284
+ opacity: 0;
2285
+ }
2286
+
2287
+ button {
2288
+ margin: 0;
2289
+ border: none;
2290
+ background: none;
2291
+ }
2292
+
2293
+ [part='checkbox'] {
2294
+ color: var(--kemet-checkbox-color, var(--kemet-color-background));
2295
+ display: flex;
2296
+ align-items: center;
2297
+ justify-content: center;
2298
+ width: var(--kemet-checkbox-size, 18px);
2299
+ height: var(--kemet-checkbox-size, 18px);
2300
+ border: var(--kemet-checkbox-border, 1px solid var(--kemet-color-background));
2301
+ }
2302
+
2303
+ :host([rounded]) [part='checkbox'] {
2304
+ border-radius: var(--kemet-checkbox-border-radius, 4px);
2305
+ }
2306
+
2307
+ :host([filled][checked]) [part='checkbox'],
2308
+ :host([filled][indeterminate]) [part='checkbox'] {
2309
+ border: none;
2310
+ background-color: var(--kemet-checkbox-filled-background-color, var(--kemet-color-primary));
2311
+ }
2312
+
2313
+ [part='mark'] {
2312
2314
  display: flex;
2313
2315
  width: calc(var(--kemet-checkbox-size, 18px) - 4px);
2314
2316
  height: calc(var(--kemet-checkbox-size, 18px) - 4px);
@@ -3988,117 +3990,304 @@ KemetFlipcard = __decorate([
3988
3990
  e$5('kemet-flipcard')
3989
3991
  ], KemetFlipcard);
3990
3992
 
3993
+ /**
3994
+ * @since 1.0.0
3995
+ * @status stable
3996
+ *
3997
+ * @tagname kemet-modal-close
3998
+ * @summary A close button for a modal.
3999
+ *
4000
+ * @event kemet-modal-close-pressed - Fires when the close button is pressed
4001
+ *
4002
+ */
4003
+ let KemetModalClose = class KemetModalClose extends s$1 {
4004
+ render() {
4005
+ return x `
4006
+ <slot @keyup=${() => this.close()} @click=${() => this.close()}></slot>
4007
+ `;
4008
+ }
4009
+ close() {
4010
+ emitEvent(this, 'kemet-modal-close-pressed', this);
4011
+ }
4012
+ };
4013
+ KemetModalClose.styles = [
4014
+ i$4 `
4015
+ :host {
4016
+ position: absolute;
4017
+ top: 0.5rem;
4018
+ right: 0.5rem;
4019
+ border-radius: 50%;
4020
+ cursor: pointer;
4021
+ }
4022
+ `,
4023
+ ];
4024
+ KemetModalClose = __decorate([
4025
+ e$5('kemet-modal-close')
4026
+ ], KemetModalClose);
4027
+
3991
4028
  const stylesBase$2 = i$4 `
3992
- :host {
3993
- position: relative;
3994
- display: block;
4029
+ *,
4030
+ *::before,
4031
+ *::after {
4032
+ box-sizing: border-box;
3995
4033
  }
3996
4034
 
3997
- input {
3998
- color: var(--kemet-color-text);
3999
- display: block;
4000
- font-size: 1rem;
4035
+ :host {
4036
+ position: fixed;
4037
+ display: flex;
4038
+ top: 0;
4039
+ left: 0;
4040
+ z-index: 99;
4001
4041
  width: 100%;
4002
- height: var(--kemet-input-height, 50px);
4003
- padding: var(--kemet-input-padding, 0.5rem 1rem);
4004
- border: var(--kemet-input-border, 1px solid var(--kemet-color-background));
4005
- appearance: none;
4006
- box-sizing: border-box;
4007
- background-color: transparent;
4042
+ height: 100vh;
4043
+ visibility: hidden;
4044
+ backface-visibility: hidden;
4008
4045
  }
4009
4046
 
4010
- input[type='color'] {
4011
- min-width: 10rem;
4047
+ :host([opened]) {
4048
+ visibility: visible;
4012
4049
  }
4013
4050
 
4014
- input[type='search']::-webkit-search-decoration,
4015
- input[type='search']::-webkit-search-cancel-button,
4016
- input[type='search']::-webkit-search-results-button,
4017
- input[type='search']::-webkit-search-results-decoration {
4018
- display: none;
4051
+ .content {
4052
+ position: relative;
4053
+ z-index: 3;
4054
+ margin: auto;
4055
+ min-width: var(--kemet-modal-content-min-width, 0);
4056
+ max-width: var(--kemet-modal-content-max-width, none);
4057
+ background-color: var(--kemet-modal-content-background-color, var(--kemet-color-white-to-primary));
4019
4058
  }
4020
4059
 
4021
- :host([status='error']) input {
4022
- border: var(--kemet-input-border-color-error, 1px solid var(--kemet-color-error));
4060
+ :host([mobile]) .content {
4061
+ min-width: var(--kemet-modal-content-mobile-min-width, 100%);
4062
+ min-height: var(--kemet-modal-content-mobile-min-height, 80vh);
4063
+ padding: var(--kemet-modal-content-mobile-padding, 1rem);
4023
4064
  }
4024
4065
 
4025
- :host([status='success']) input {
4026
- border: var(--kemet-input-border-color-success, 1px solid var(--kemet-color-success));
4066
+ .overlay {
4067
+ position: fixed;
4068
+ width: 100%;
4069
+ height: 100%;
4070
+ visibility: hidden;
4071
+ top: 0;
4072
+ left: 0;
4073
+ z-index: 1;
4074
+ opacity: 0;
4075
+ background: var(--kemet-modal-overlay-background-color, rgba(0,0,0,0.2));
4076
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4027
4077
  }
4028
4078
 
4029
- :host([status='warning']) input {
4030
- border: var(--kemet-input-border-color-warning, 1px solid var(--kemet-color-warning));
4079
+ :host([opened]) .overlay {
4080
+ opacity: 1;
4081
+ visibility: visible;
4082
+ }
4083
+ `;
4084
+ const stylesEffects = i$4 `
4085
+ /* fadein-scaleup */
4086
+ :host([effect="fadein-scaleup"]) .content {
4087
+ transform: scale(0.7);
4088
+ opacity: 0;
4089
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4031
4090
  }
4032
4091
 
4033
- :host([disabled]) input {
4034
- opacity: 0.5;
4092
+ :host([effect="fadein-scaleup"][opened]) .content {
4093
+ transform: scale(1);
4094
+ opacity: 1;
4035
4095
  }
4036
4096
 
4037
- :host([icon-left]) input {
4038
- padding-left: var(--kemet-input-icon-left-padding, 3rem);
4097
+ /* slide-right */
4098
+ :host([effect="slide-right"]) .content {
4099
+ transform: translateX(20%);
4100
+ opacity: 0;
4101
+ transition: all var(--kemet-modal-transition-speed, 0.3s) cubic-bezier(0.25, 0.5, 0.5, 0.9);
4039
4102
  }
4040
4103
 
4041
- :host([icon-right]) input {
4042
- padding-right: var(--kemet-input-icon-right-padding, 3rem);
4104
+ :host([effect="slide-right"][opened]) .content {
4105
+ transform: translateX(0);
4106
+ opacity: 1;
4043
4107
  }
4044
4108
 
4045
- :host([rounded]) input {
4046
- border-radius: var(--kemet-input-border-radius-rounded, var(--kemet-border-radius));
4109
+ /* slide-bottom */
4110
+ :host([effect="slide-bottom"]) .content {
4111
+ transform: translateY(20%);
4112
+ opacity: 0;
4113
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4047
4114
  }
4048
4115
 
4049
- :host([filled]) input {
4050
- border: var(--kemet-input-border-filled, none);
4051
- color: var(--kemet-input-color-filled, var(--kemet-color-white));
4052
- background-color: var(--kemet-input-background-color-filled, var(--kemet-color-primary));
4116
+ :host([effect="slide-bottom"][opened]) .content {
4117
+ transform: translateY(0);
4118
+ opacity: 1;
4053
4119
  }
4054
4120
 
4055
- :host([filled]) kemet-icon,
4056
- :host([filled]) input::placeholder {
4057
- color: var(--kemet-input-color-filled, var(--kemet-color-white));
4121
+ /* newspaper */
4122
+ :host([effect="newspaper"]) .content {
4123
+ transform: scale(0) rotate(720deg);
4124
+ opacity: 0;
4125
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4058
4126
  }
4059
4127
 
4060
- :host([status='error'][filled]) input {
4061
- background-color: var(--kemet-input-background-color-error, var(--kemet-color-error));
4128
+ :host([effect="newspaper"][opened]) .content {
4129
+ transform: scale(1) rotate(0deg);
4130
+ opacity: 1;
4062
4131
  }
4063
4132
 
4064
- :host([status='success'][filled]) input {
4065
- background-color: var(--kemet-input-background-color-success, var(--kemet-color-success));
4133
+ /* fall */
4134
+ :host([effect="fall"]) {
4135
+ perspective: 1300px;
4066
4136
  }
4067
4137
 
4068
- :host([status='warning'][filled]) input {
4069
- background-color: var(--kemet-input-background-color-warning, var(--kemet-color-warning));
4138
+ :host([effect="fall"]) .content {
4139
+ transform-style: preserve-3d;
4140
+ transform: translateZ(600px) rotateX(20deg);
4141
+ opacity: 0;
4070
4142
  }
4071
4143
 
4072
- kemet-icon {
4073
- color: var(--kemet-color-text);
4074
- position: absolute;
4075
- top: 50%;
4076
- transform: translateY(-50%);
4144
+ :host([effect="fall"][opened]) .content {
4145
+ transition: all var(--kemet-modal-transition-speed, 0.3s) ease-in;
4146
+ transform: translateZ(0px) rotateX(0deg);
4147
+ opacity: 1;
4077
4148
  }
4078
4149
 
4079
- kemet-icon.left {
4080
- left: 1rem;
4150
+ /* side-fall */
4151
+ :host([effect="side-fall"]) {
4152
+ perspective: 1300px;
4081
4153
  }
4082
4154
 
4083
- kemet-icon.right {
4084
- right: 1rem;
4155
+ :host([effect="side-fall"]) .content {
4156
+ transform-style: preserve-3d;
4157
+ transform: translate(30%) translateZ(600px) rotate(10deg);
4158
+ opacity: 0;
4085
4159
  }
4086
4160
 
4087
- kemet-icon.eye,
4088
- kemet-icon.search {
4089
- cursor: pointer;
4161
+ :host([effect="side-fall"][opened]) .content {
4162
+ transition: all var(--kemet-modal-transition-speed, 0.3s) ease-in;
4163
+ transform: translate(0%) translateZ(0) rotate(0deg);
4164
+ opacity: 1;
4090
4165
  }
4091
4166
 
4092
- :host([status='error']) kemet-icon {
4093
- color: var(--kemet-color-error);
4167
+ /* flip-horizontal */
4168
+ :host([effect="flip-horizontal"]) {
4169
+ perspective: 1300px;
4094
4170
  }
4095
4171
 
4096
- :host([status='warning']) kemet-icon {
4097
- color: var(--kemet-color-error);
4172
+ :host([effect="flip-horizontal"]) .content {
4173
+ transform-style: preserve-3d;
4174
+ transform: rotateY(-70deg);
4175
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4176
+ opacity: 0;
4098
4177
  }
4099
4178
 
4100
- :host([status='success']) kemet-icon {
4101
- color: var(--kemet-color-success);
4179
+ :host([effect="flip-horizontal"][opened]) .content {
4180
+ transform: rotateY(0deg);
4181
+ opacity: 1;
4182
+ }
4183
+
4184
+ /* flip-vertical */
4185
+ :host([effect="flip-vertical"]) {
4186
+ perspective: 1300px;
4187
+ }
4188
+
4189
+ :host([effect="flip-vertical"]) .content {
4190
+ transform-style: preserve-3d;
4191
+ transform: rotateX(-70deg);
4192
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4193
+ opacity: 0;
4194
+ }
4195
+
4196
+ :host([effect="flip-vertical"][opened]) .content {
4197
+ transform: rotateX(0deg);
4198
+ opacity: 1;
4199
+ }
4200
+
4201
+ /* sign-3d */
4202
+ :host([effect="sign-3d"]) {
4203
+ perspective: 1300px;
4204
+ }
4205
+
4206
+ :host([effect="sign-3d"]) .content {
4207
+ transform-style: preserve-3d;
4208
+ transform: rotateX(-60deg);
4209
+ transform-origin: 50% 0;
4210
+ opacity: 0;
4211
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4212
+ }
4213
+
4214
+ :host([effect="sign-3d"][opened]) .content {
4215
+ transform: rotateX(0deg);
4216
+ opacity: 1;
4217
+ }
4218
+
4219
+ /* super-scaled */
4220
+ :host([effect="super-scaled"]) .content {
4221
+ transform: scale(2);
4222
+ opacity: 0;
4223
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4224
+ }
4225
+
4226
+ :host([effect="super-scaled"][opened]) .content {
4227
+ transform: scale(1);
4228
+ opacity: 1;
4229
+ }
4230
+
4231
+ /* slit */
4232
+ :host([effect="slit"]) {
4233
+ perspective: 1300px;
4234
+ }
4235
+
4236
+ :host([effect="slit"]) .content {
4237
+ transform-style: preserve-3d;
4238
+ transform: translateZ(-3000px) rotateY(90deg);
4239
+ opacity: 0;
4240
+ }
4241
+
4242
+ :host([effect="slit"][opened]) .content {
4243
+ animation: slit .7s forwards ease-out;
4244
+ }
4245
+
4246
+ @keyframes slit {
4247
+ 50% {
4248
+ transform: translateZ(-250px) rotateY(89deg);
4249
+ opacity: 1;
4250
+ animation-timing-function: ease-in;}
4251
+ 100% {
4252
+ transform: translateZ(0) rotateY(0deg);
4253
+ opacity: 1;
4254
+ }
4255
+ }
4256
+
4257
+ /* rotate-bottom */
4258
+ :host([effect="rotate-bottom"]) {
4259
+ perspective: 1300px;
4260
+ }
4261
+
4262
+ :host([effect="rotate-bottom"]) .content {
4263
+ transform-style: preserve-3d;
4264
+ transform: translateY(100%) rotateX(90deg);
4265
+ transform-origin: 0 100%;
4266
+ opacity: 0;
4267
+ transition: all var(--kemet-modal-transition-speed, 0.3s) ease-out;
4268
+ }
4269
+
4270
+ :host([effect="rotate-bottom"][opened]) .content {
4271
+ transform: translateY(0%) rotateX(0deg);
4272
+ opacity: 1;
4273
+ }
4274
+
4275
+ /* rotate-left */
4276
+ :host([effect="rotate-left"]) {
4277
+ perspective: 1300px;
4278
+ }
4279
+
4280
+ :host([effect="rotate-left"]) .content {
4281
+ transform-style: preserve-3d;
4282
+ transform: translateZ(100px) translateX(-30%) rotateY(90deg);
4283
+ transform-origin: 0 100%;
4284
+ opacity: 0;
4285
+ transition: all var(--kemet-modal-transition-speed, 0.3s);
4286
+ }
4287
+
4288
+ :host([effect="rotate-left"][opened]) .content {
4289
+ transform: translateZ(0px) translateX(0%) rotateY(0deg);
4290
+ opacity: 1;
4102
4291
  }
4103
4292
  `;
4104
4293
 
@@ -4106,717 +4295,8 @@ const stylesBase$2 = i$4 `
4106
4295
  * @since 1.0.0
4107
4296
  * @status stable
4108
4297
  *
4109
- * @tagname kemet-input
4110
- * @summary An enhanced input element.
4111
- *
4112
- * @prop {string} slug - Used for the id of the input. Should match the slug used in a control if applicable.
4113
- * @prop {string} name - The name of the input
4114
- * @prop {string} placeholder - The placeholder attribute
4115
- * @prop {string} minlength - The minlength attribute
4116
- * @prop {string} maxlength - The maxlength attribute
4117
- * @prop {string} min - The min attribute
4118
- * @prop {string} max - The max attribute
4119
- * @prop {string} step - The step attribute
4120
- * @prop {string} autocomplete - The autocomplete attribute
4121
- * @prop {string} pattern - The pattern attribute
4122
- * @prop {string} inputmode - The input mode attribute
4123
- * @prop {boolean} autofocus - The autofocus attribute
4124
- * @prop {boolean} disabled - The disable attribute
4125
- * @prop {boolean} readonly - The readonly attribute
4126
- * @prop {boolean} required - The required attribute
4127
- * @prop {string} type - The type of input
4128
- * @prop {string} value - The input's value
4129
- * @prop {boolean} invalid - States whether or not the input is invalid
4130
- * @prop {string} status - The status of the input
4131
- * @prop {boolean} validateOnBlur - Activates validation on blur
4132
- * @prop {string} ariaAutoComplete - Aria Autocomplete
4133
- * @prop {string} ariaControls - Aria Controls
4134
- * @prop {string} ariaActiveDescendant - Aria Active Descendant
4135
- * @prop {boolean} rounded - Displays rounded corners
4136
- * @prop {boolean} filled - Displays a filled input box
4137
- * @prop {string} iconRight - Custom Icon to the right of the input
4138
- * @prop {string} iconLeft - Custom Icon to the left of the input
4139
- * @prop {number} iconSize - Size of the icons
4140
- * @prop {object} validity - The HTML5 validity object.
4141
- * @prop {boolean} isPasswordVisible - Manages password visibility
4142
- * @prop {string} inputType - Input Type of keypress handled through handleInput(e)
4143
- * @prop {boolean} focused - Determines if the input is focused
4144
- *
4145
- * @csspart input
4146
- *
4147
- * @cssproperty --kemet-input-height - The height of the input. Default: 50px.
4148
- * @cssproperty -kemet-input-padding - The padding on the input. Default: 0.5rem 1rem.
4149
- * @cssproperty -kemet-input-border - The border of the input. Default: 1px solid var(--kemet-color-primary).
4150
- * @cssproperty -kemet-input-border-color-error - The border of the error state. Default: 1px solid var(--kemet-color-error).
4151
- * @cssproperty -kemet-input-border-color-success - The border of the success state. Default: 1px solid var(--kemet-color-success).
4152
- * @cssproperty -kemet-input-border-color-warning - The border of the warning state. Default: 1px solid var(--kemet-color-warning) |
4153
- * @cssproperty -kemet-input-icon-left-padding - The icon-left padding. Default: 3rem.
4154
- * @cssproperty -kemet-input-icon-right-padding - The icon-right padding. Default: 3rem.
4155
- * @cssproperty -kemet-input-border-radius-rounded - The border radius on rounded. Default: var(--kemet-border-radius).
4156
- * @cssproperty -kemet-input-border-filled - The border on filled. Default: none.
4157
- * @cssproperty -kemet-input-color-filled - The color on filled. Default: var(--kemet-color-white).
4158
- * @cssproperty -kemet-input-background-color-filled - The background-color on filled. Default: var(--kemet-color-primary).
4159
- * @cssproperty -kemet-input-background-color-error - The error state background color. Default: var(--kemet-color-error).
4160
- * @cssproperty -kemet-input-background-color-success - The success state background color. Default: var(--kemet-color-success).
4161
- * @cssproperty -kemet-input-background-color-warning - The warning state background color. Default: var(--kemet-color-warning).
4162
- *
4163
- * @event kemet-input-focused - Fires when the input receives and loses focus
4164
- * @event kemet-input-status Fires when there's a change in status. This event includes an object that reports: 1) the status. 2) HTML5 validity object. 3) the component element.
4165
- * Use the validity object to support custom validation messages.
4166
- * @event kemet-input-input - Fires when the input receives input
4167
- *
4168
- */
4169
- let KemetInput = class KemetInput extends s$1 {
4170
- constructor() {
4171
- super();
4172
- this.name = 'input';
4173
- this.type = 'text';
4174
- this.value = '';
4175
- this.status = 'standard';
4176
- this.validateOnBlur = false;
4177
- this.iconSize = 20;
4178
- this.isPasswordVisible = false;
4179
- this.focused = false;
4180
- /** @internal */
4181
- this.formSubmitController = new FormSubmitController(this);
4182
- }
4183
- ;
4184
- firstUpdated() {
4185
- // elements
4186
- this.input = this.shadowRoot.querySelector('input');
4187
- this.field = this.closest('kemet-field');
4188
- this.form = this.closest('form');
4189
- this.slug = this.field ? this.field.slug : 'input';
4190
- if (this.field) {
4191
- this.field.addEventListener('fmc-password-status', event => this.handleStatus(event));
4192
- }
4193
- }
4194
- render() {
4195
- return x `
4196
- <div>
4197
- ${this.makeIconLeft()}
4198
- <input
4199
- part="input"
4200
- id=${this.slug}
4201
- name=${this.name}
4202
- placeholder=${l$1(this.placeholder)}
4203
- minlength=${l$1(this.minlength)}
4204
- maxlength=${l$1(this.maxlength)}
4205
- min=${l$1(this.min)}
4206
- max=${l$1(this.max)}
4207
- step=${l$1(this.step)}
4208
- autocomplete=${l$1(this.autocomplete)}
4209
- aria-autocomplete=${l$1(this.ariaAutoComplete)}
4210
- aria-controls=${l$1(this.ariaControls)}
4211
- aria-activedescendant=${l$1(this.ariaActiveDescendant)}
4212
- pattern=${l$1(this.pattern)}
4213
- inputmode=${l$1(this.inputmode)}
4214
- aria-invalid=${this.invalid ? 'true' : 'false'}
4215
- ?autofocus=${this.autofocus}
4216
- ?disabled=${this.disabled}
4217
- ?readonly=${this.readonly}
4218
- ?required=${this.required}
4219
- .type="${this.type === 'password' && this.isPasswordVisible ? 'text' : this.type}"
4220
- .value=${l(this.value)}
4221
- @change=${this.handleChange}
4222
- @input=${this.handleInput}
4223
- @invalid=${this.handleInvalid}
4224
- @focus=${this.handleFocus}
4225
- @blur=${this.handleBlur}
4226
- />
4227
- ${this.makeIconRight()} ${this.makeIconClear()} ${this.makeVisibilityToggle()}
4228
- </div>
4229
- `;
4230
- }
4231
- /**
4232
- * Makes the right icon
4233
- * @private
4234
- * @returns {templateResult} A right icon
4235
- */
4236
- makeIconRight() {
4237
- if (this.iconRight) {
4238
- return x `
4239
- <kemet-icon class="right" icon="${this.iconRight}" size="${this.iconSize ? this.iconSize : 20}"></kemet-icon>
4240
- `;
4241
- }
4242
- return null;
4243
- }
4244
- /**
4245
- * Makes the left icon
4246
- * @private
4247
- * @returns {templateResult} A left icon
4248
- */
4249
- makeIconLeft() {
4250
- if (this.iconLeft) {
4251
- return x `
4252
- <kemet-icon class="left" icon="${this.iconLeft}" size="${this.iconSize ? this.iconSize : 16}"></kemet-icon>
4253
- `;
4254
- }
4255
- return null;
4256
- }
4257
- /**
4258
- * Makes a clear icon for search.
4259
- * @private
4260
- * @returns {templateResult} A search icon
4261
- */
4262
- makeIconClear() {
4263
- if (this.type === 'search' && this.value !== '') {
4264
- return x `
4265
- <kemet-icon class="search right" icon="x-lg" size="${this.iconSize}" @click=${() => this.handleClear()}></kemet-icon>
4266
- `;
4267
- }
4268
- return null;
4269
- }
4270
- /**
4271
- * Makes a password visibility toggle button
4272
- * @returns {templateResult} A mask or unmask icon
4273
- */
4274
- makeVisibilityToggle() {
4275
- if (this.type === 'password') {
4276
- return x `<kemet-icon
4277
- class="eye right"
4278
- icon="${this.setPasswordIcon()}"
4279
- @click=${() => this.togglePasswordVisibility()}
4280
- ></kemet-icon>`;
4281
- }
4282
- return null;
4283
- }
4284
- setPasswordIcon() {
4285
- if (this.isPasswordVisible) {
4286
- return 'eye';
4287
- }
4288
- return 'eye-slash';
4289
- }
4290
- /**
4291
- * Handles when the input receives focus
4292
- * @private
4293
- */
4294
- handleFocus() {
4295
- this.focused = true;
4296
- emitEvent(this, 'kemet-input-focused', true);
4297
- }
4298
- /**
4299
- * Handles when the input loses focus
4300
- * @private
4301
- */
4302
- handleBlur() {
4303
- var _a, _b;
4304
- if (this.validateOnBlur && this.form && !this.form.noValidate) {
4305
- (_a = this.input) === null || _a === void 0 ? void 0 : _a.checkValidity();
4306
- this.validity = (_b = this.input) === null || _b === void 0 ? void 0 : _b.validity;
4307
- }
4308
- this.focused = false;
4309
- emitEvent(this, 'kemet-input-focused', false);
4310
- }
4311
- /**
4312
- * Handles when the input changes value
4313
- * @private
4314
- */
4315
- handleChange() {
4316
- this.value = this.input.value;
4317
- if (this.input.checkValidity() && this.checkLimitValidity() && this.status !== 'success') {
4318
- this.invalid = false;
4319
- this.status = 'standard';
4320
- this.validity = this.input.validity;
4321
- emitEvent(this, 'kemet-input-status', {
4322
- status: 'standard',
4323
- validity: this.input.validity,
4324
- element: this,
4325
- });
4326
- }
4327
- }
4328
- /**
4329
- * Handles when the input receives input
4330
- * @private
4331
- */
4332
- handleInput() {
4333
- this.value = this.input.value;
4334
- emitEvent(this, 'kemet-input-input', this.value);
4335
- }
4336
- /**
4337
- * Handles when the input has an error
4338
- * @private
4339
- */
4340
- handleInvalid() {
4341
- var _a, _b;
4342
- this.validity = (_a = this.input) === null || _a === void 0 ? void 0 : _a.validity;
4343
- if (this.validateOnBlur) {
4344
- this.invalid = true;
4345
- this.status = 'error';
4346
- emitEvent(this, 'kemet-input-status', {
4347
- status: 'error',
4348
- validity: (_b = this.input) === null || _b === void 0 ? void 0 : _b.validity,
4349
- element: this,
4350
- });
4351
- }
4352
- }
4353
- handleStatus(event) {
4354
- this.status = event.detail.status;
4355
- }
4356
- /**
4357
- * Toggles password visibility
4358
- * @private
4359
- */
4360
- togglePasswordVisibility() {
4361
- this.isPasswordVisible = !this.isPasswordVisible;
4362
- }
4363
- /**
4364
- * Handles the clear button for search
4365
- * @private
4366
- */
4367
- handleClear() {
4368
- this.value = '';
4369
- emitEvent(this, 'kemet-input-input', this.value);
4370
- }
4371
- /**
4372
- * Checks the validity of the character limit for the count component
4373
- * @private
4374
- * @returns {boolean}
4375
- */
4376
- checkLimitValidity() {
4377
- if (this.field) {
4378
- const count = this.field.querySelector('kemet-count');
4379
- if (count) {
4380
- return this.value.length < count.limit;
4381
- }
4382
- }
4383
- return true;
4384
- }
4385
- /**
4386
- * Checks the validity of the standard input
4387
- * @public
4388
- * @returns {boolean}
4389
- */
4390
- checkValidity() {
4391
- var _a;
4392
- return (_a = this.input) === null || _a === void 0 ? void 0 : _a.checkValidity();
4393
- }
4394
- /**
4395
- * Focuses the standard input
4396
- * @public
4397
- */
4398
- focus() {
4399
- var _a;
4400
- (_a = this.input) === null || _a === void 0 ? void 0 : _a.focus();
4401
- }
4402
- };
4403
- KemetInput.styles = [stylesBase$2];
4404
- __decorate([
4405
- e$4({ type: String })
4406
- ], KemetInput.prototype, "slug", void 0);
4407
- __decorate([
4408
- e$4({ type: String })
4409
- ], KemetInput.prototype, "name", void 0);
4410
- __decorate([
4411
- e$4({ type: String })
4412
- ], KemetInput.prototype, "placeholder", void 0);
4413
- __decorate([
4414
- e$4({ type: Number })
4415
- ], KemetInput.prototype, "minlength", void 0);
4416
- __decorate([
4417
- e$4({ type: Number })
4418
- ], KemetInput.prototype, "maxlength", void 0);
4419
- __decorate([
4420
- e$4({ type: String })
4421
- ], KemetInput.prototype, "min", void 0);
4422
- __decorate([
4423
- e$4({ type: String })
4424
- ], KemetInput.prototype, "max", void 0);
4425
- __decorate([
4426
- e$4({ type: Number })
4427
- ], KemetInput.prototype, "step", void 0);
4428
- __decorate([
4429
- e$4({ type: String })
4430
- ], KemetInput.prototype, "autocomplete", void 0);
4431
- __decorate([
4432
- e$4({ type: String })
4433
- ], KemetInput.prototype, "pattern", void 0);
4434
- __decorate([
4435
- e$4({ type: String })
4436
- ], KemetInput.prototype, "inputmode", void 0);
4437
- __decorate([
4438
- e$4({ type: Boolean })
4439
- ], KemetInput.prototype, "autofocus", void 0);
4440
- __decorate([
4441
- e$4({ type: Boolean, reflect: true })
4442
- ], KemetInput.prototype, "disabled", void 0);
4443
- __decorate([
4444
- e$4({ type: Boolean })
4445
- ], KemetInput.prototype, "readonly", void 0);
4446
- __decorate([
4447
- e$4({ type: Boolean, reflect: true })
4448
- ], KemetInput.prototype, "required", void 0);
4449
- __decorate([
4450
- e$4({ type: String })
4451
- ], KemetInput.prototype, "type", void 0);
4452
- __decorate([
4453
- e$4({ type: String, reflect: true })
4454
- ], KemetInput.prototype, "value", void 0);
4455
- __decorate([
4456
- e$4({ type: Boolean, reflect: true })
4457
- ], KemetInput.prototype, "invalid", void 0);
4458
- __decorate([
4459
- e$4({ type: String, reflect: true })
4460
- ], KemetInput.prototype, "status", void 0);
4461
- __decorate([
4462
- e$4({ type: Boolean, attribute: 'validate-on-blur' })
4463
- ], KemetInput.prototype, "validateOnBlur", void 0);
4464
- __decorate([
4465
- e$4({ type: String, attribute: 'aria-autocomplete' })
4466
- ], KemetInput.prototype, "ariaAutoComplete", void 0);
4467
- __decorate([
4468
- e$4({ type: String, attribute: 'aria-controls' })
4469
- ], KemetInput.prototype, "ariaControls", void 0);
4470
- __decorate([
4471
- e$4({ type: String, attribute: 'aria-activedescendant' })
4472
- ], KemetInput.prototype, "ariaActiveDescendant", void 0);
4473
- __decorate([
4474
- e$4({ type: Boolean, reflect: true })
4475
- ], KemetInput.prototype, "rounded", void 0);
4476
- __decorate([
4477
- e$4({ type: Boolean, reflect: true })
4478
- ], KemetInput.prototype, "filled", void 0);
4479
- __decorate([
4480
- e$4({ type: String, reflect: true, attribute: 'icon-right' })
4481
- ], KemetInput.prototype, "iconRight", void 0);
4482
- __decorate([
4483
- e$4({ type: String, reflect: true, attribute: 'icon-left' })
4484
- ], KemetInput.prototype, "iconLeft", void 0);
4485
- __decorate([
4486
- e$4({ type: Number })
4487
- ], KemetInput.prototype, "iconSize", void 0);
4488
- __decorate([
4489
- e$4({ type: Object })
4490
- ], KemetInput.prototype, "validity", void 0);
4491
- __decorate([
4492
- e$4({ type: Boolean })
4493
- ], KemetInput.prototype, "isPasswordVisible", void 0);
4494
- __decorate([
4495
- e$4({ type: String })
4496
- ], KemetInput.prototype, "inputType", void 0);
4497
- __decorate([
4498
- e$4({ type: Boolean, reflect: true })
4499
- ], KemetInput.prototype, "focused", void 0);
4500
- __decorate([
4501
- t$1()
4502
- ], KemetInput.prototype, "field", void 0);
4503
- __decorate([
4504
- t$1()
4505
- ], KemetInput.prototype, "form", void 0);
4506
- __decorate([
4507
- t$1()
4508
- ], KemetInput.prototype, "input", void 0);
4509
- KemetInput = __decorate([
4510
- e$5('kemet-input')
4511
- ], KemetInput);
4512
-
4513
- /**
4514
- * @since 1.0.0
4515
- * @status stable
4516
- *
4517
- * @tagname kemet-modal-close
4518
- * @summary A close button for a modal.
4519
- *
4520
- * @event kemet-modal-close-pressed - Fires when the close button is pressed
4521
- *
4522
- */
4523
- let KemetModalClose = class KemetModalClose extends s$1 {
4524
- render() {
4525
- return x `
4526
- <slot @keyup=${() => this.close()} @click=${() => this.close()}></slot>
4527
- `;
4528
- }
4529
- close() {
4530
- emitEvent(this, 'kemet-modal-close-pressed', this);
4531
- }
4532
- };
4533
- KemetModalClose.styles = [
4534
- i$4 `
4535
- :host {
4536
- position: absolute;
4537
- top: 0.5rem;
4538
- right: 0.5rem;
4539
- border-radius: 50%;
4540
- cursor: pointer;
4541
- }
4542
- `,
4543
- ];
4544
- KemetModalClose = __decorate([
4545
- e$5('kemet-modal-close')
4546
- ], KemetModalClose);
4547
-
4548
- const stylesBase$1 = i$4 `
4549
- *,
4550
- *::before,
4551
- *::after {
4552
- box-sizing: border-box;
4553
- }
4554
-
4555
- :host {
4556
- position: fixed;
4557
- display: flex;
4558
- top: 0;
4559
- left: 0;
4560
- z-index: 99;
4561
- width: 100%;
4562
- height: 100vh;
4563
- visibility: hidden;
4564
- backface-visibility: hidden;
4565
- }
4566
-
4567
- :host([opened]) {
4568
- visibility: visible;
4569
- }
4570
-
4571
- .content {
4572
- position: relative;
4573
- z-index: 3;
4574
- margin: auto;
4575
- min-width: var(--kemet-modal-content-min-width, 0);
4576
- max-width: var(--kemet-modal-content-max-width, none);
4577
- background-color: var(--kemet-modal-content-background-color, var(--kemet-color-white-to-primary));
4578
- }
4579
-
4580
- :host([mobile]) .content {
4581
- min-width: var(--kemet-modal-content-mobile-min-width, 100%);
4582
- min-height: var(--kemet-modal-content-mobile-min-height, 80vh);
4583
- padding: var(--kemet-modal-content-mobile-padding, 1rem);
4584
- }
4585
-
4586
- .overlay {
4587
- position: fixed;
4588
- width: 100%;
4589
- height: 100%;
4590
- visibility: hidden;
4591
- top: 0;
4592
- left: 0;
4593
- z-index: 1;
4594
- opacity: 0;
4595
- background: var(--kemet-modal-overlay-background-color, rgba(0,0,0,0.2));
4596
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4597
- }
4598
-
4599
- :host([opened]) .overlay {
4600
- opacity: 1;
4601
- visibility: visible;
4602
- }
4603
- `;
4604
- const stylesEffects = i$4 `
4605
- /* fadein-scaleup */
4606
- :host([effect="fadein-scaleup"]) .content {
4607
- transform: scale(0.7);
4608
- opacity: 0;
4609
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4610
- }
4611
-
4612
- :host([effect="fadein-scaleup"][opened]) .content {
4613
- transform: scale(1);
4614
- opacity: 1;
4615
- }
4616
-
4617
- /* slide-right */
4618
- :host([effect="slide-right"]) .content {
4619
- transform: translateX(20%);
4620
- opacity: 0;
4621
- transition: all var(--kemet-modal-transition-speed, 0.3s) cubic-bezier(0.25, 0.5, 0.5, 0.9);
4622
- }
4623
-
4624
- :host([effect="slide-right"][opened]) .content {
4625
- transform: translateX(0);
4626
- opacity: 1;
4627
- }
4628
-
4629
- /* slide-bottom */
4630
- :host([effect="slide-bottom"]) .content {
4631
- transform: translateY(20%);
4632
- opacity: 0;
4633
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4634
- }
4635
-
4636
- :host([effect="slide-bottom"][opened]) .content {
4637
- transform: translateY(0);
4638
- opacity: 1;
4639
- }
4640
-
4641
- /* newspaper */
4642
- :host([effect="newspaper"]) .content {
4643
- transform: scale(0) rotate(720deg);
4644
- opacity: 0;
4645
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4646
- }
4647
-
4648
- :host([effect="newspaper"][opened]) .content {
4649
- transform: scale(1) rotate(0deg);
4650
- opacity: 1;
4651
- }
4652
-
4653
- /* fall */
4654
- :host([effect="fall"]) {
4655
- perspective: 1300px;
4656
- }
4657
-
4658
- :host([effect="fall"]) .content {
4659
- transform-style: preserve-3d;
4660
- transform: translateZ(600px) rotateX(20deg);
4661
- opacity: 0;
4662
- }
4663
-
4664
- :host([effect="fall"][opened]) .content {
4665
- transition: all var(--kemet-modal-transition-speed, 0.3s) ease-in;
4666
- transform: translateZ(0px) rotateX(0deg);
4667
- opacity: 1;
4668
- }
4669
-
4670
- /* side-fall */
4671
- :host([effect="side-fall"]) {
4672
- perspective: 1300px;
4673
- }
4674
-
4675
- :host([effect="side-fall"]) .content {
4676
- transform-style: preserve-3d;
4677
- transform: translate(30%) translateZ(600px) rotate(10deg);
4678
- opacity: 0;
4679
- }
4680
-
4681
- :host([effect="side-fall"][opened]) .content {
4682
- transition: all var(--kemet-modal-transition-speed, 0.3s) ease-in;
4683
- transform: translate(0%) translateZ(0) rotate(0deg);
4684
- opacity: 1;
4685
- }
4686
-
4687
- /* flip-horizontal */
4688
- :host([effect="flip-horizontal"]) {
4689
- perspective: 1300px;
4690
- }
4691
-
4692
- :host([effect="flip-horizontal"]) .content {
4693
- transform-style: preserve-3d;
4694
- transform: rotateY(-70deg);
4695
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4696
- opacity: 0;
4697
- }
4698
-
4699
- :host([effect="flip-horizontal"][opened]) .content {
4700
- transform: rotateY(0deg);
4701
- opacity: 1;
4702
- }
4703
-
4704
- /* flip-vertical */
4705
- :host([effect="flip-vertical"]) {
4706
- perspective: 1300px;
4707
- }
4708
-
4709
- :host([effect="flip-vertical"]) .content {
4710
- transform-style: preserve-3d;
4711
- transform: rotateX(-70deg);
4712
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4713
- opacity: 0;
4714
- }
4715
-
4716
- :host([effect="flip-vertical"][opened]) .content {
4717
- transform: rotateX(0deg);
4718
- opacity: 1;
4719
- }
4720
-
4721
- /* sign-3d */
4722
- :host([effect="sign-3d"]) {
4723
- perspective: 1300px;
4724
- }
4725
-
4726
- :host([effect="sign-3d"]) .content {
4727
- transform-style: preserve-3d;
4728
- transform: rotateX(-60deg);
4729
- transform-origin: 50% 0;
4730
- opacity: 0;
4731
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4732
- }
4733
-
4734
- :host([effect="sign-3d"][opened]) .content {
4735
- transform: rotateX(0deg);
4736
- opacity: 1;
4737
- }
4738
-
4739
- /* super-scaled */
4740
- :host([effect="super-scaled"]) .content {
4741
- transform: scale(2);
4742
- opacity: 0;
4743
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4744
- }
4745
-
4746
- :host([effect="super-scaled"][opened]) .content {
4747
- transform: scale(1);
4748
- opacity: 1;
4749
- }
4750
-
4751
- /* slit */
4752
- :host([effect="slit"]) {
4753
- perspective: 1300px;
4754
- }
4755
-
4756
- :host([effect="slit"]) .content {
4757
- transform-style: preserve-3d;
4758
- transform: translateZ(-3000px) rotateY(90deg);
4759
- opacity: 0;
4760
- }
4761
-
4762
- :host([effect="slit"][opened]) .content {
4763
- animation: slit .7s forwards ease-out;
4764
- }
4765
-
4766
- @keyframes slit {
4767
- 50% {
4768
- transform: translateZ(-250px) rotateY(89deg);
4769
- opacity: 1;
4770
- animation-timing-function: ease-in;}
4771
- 100% {
4772
- transform: translateZ(0) rotateY(0deg);
4773
- opacity: 1;
4774
- }
4775
- }
4776
-
4777
- /* rotate-bottom */
4778
- :host([effect="rotate-bottom"]) {
4779
- perspective: 1300px;
4780
- }
4781
-
4782
- :host([effect="rotate-bottom"]) .content {
4783
- transform-style: preserve-3d;
4784
- transform: translateY(100%) rotateX(90deg);
4785
- transform-origin: 0 100%;
4786
- opacity: 0;
4787
- transition: all var(--kemet-modal-transition-speed, 0.3s) ease-out;
4788
- }
4789
-
4790
- :host([effect="rotate-bottom"][opened]) .content {
4791
- transform: translateY(0%) rotateX(0deg);
4792
- opacity: 1;
4793
- }
4794
-
4795
- /* rotate-left */
4796
- :host([effect="rotate-left"]) {
4797
- perspective: 1300px;
4798
- }
4799
-
4800
- :host([effect="rotate-left"]) .content {
4801
- transform-style: preserve-3d;
4802
- transform: translateZ(100px) translateX(-30%) rotateY(90deg);
4803
- transform-origin: 0 100%;
4804
- opacity: 0;
4805
- transition: all var(--kemet-modal-transition-speed, 0.3s);
4806
- }
4807
-
4808
- :host([effect="rotate-left"][opened]) .content {
4809
- transform: translateZ(0px) translateX(0%) rotateY(0deg);
4810
- opacity: 1;
4811
- }
4812
- `;
4813
-
4814
- /**
4815
- * @since 1.0.0
4816
- * @status stable
4817
- *
4818
- * @tagname kemet-modal
4819
- * @summary A dialog that has many built in effects and flexible styles.
4298
+ * @tagname kemet-modal
4299
+ * @summary A dialog that has many built in effects and flexible styles.
4820
4300
  *
4821
4301
  * @prop {boolean} opened
4822
4302
  * @prop {string} effect
@@ -4910,7 +4390,7 @@ let KemetModal = class KemetModal extends s$1 {
4910
4390
  }
4911
4391
  }
4912
4392
  };
4913
- KemetModal.styles = [stylesBase$1, stylesEffects];
4393
+ KemetModal.styles = [stylesBase$2, stylesEffects];
4914
4394
  __decorate([
4915
4395
  e$4({ type: Boolean, reflect: true })
4916
4396
  ], KemetModal.prototype, "opened", void 0);
@@ -4936,50 +4416,7 @@ KemetModal = __decorate([
4936
4416
  e$5('kemet-modal')
4937
4417
  ], KemetModal);
4938
4418
 
4939
- /**
4940
- * @since 2.0.0
4941
- * @status stable
4942
- *
4943
- * @tagname kemet-popper-close
4944
- * @summary A close button for the popper
4945
- *
4946
- * @event kemet-popper-close-btn
4947
- *
4948
- */
4949
- let KemetPopperClose = class KemetPopperClose extends s$1 {
4950
- render() {
4951
- return x `
4952
- <button @click=${() => this.close()} @keyup=${event => this.handleKeyboard(event)}>
4953
- <slot></slot>
4954
- </button>
4955
- `;
4956
- }
4957
- close() {
4958
- emitEvent(this, 'kemet-popper-close-btn', this);
4959
- }
4960
- handleKeyboard(event) {
4961
- event.preventDefault();
4962
- if (event.keyCode === keyCodes.SPACE || event.keyCode === keyCodes.ENTER) {
4963
- this.close();
4964
- }
4965
- }
4966
- };
4967
- KemetPopperClose.styles = [
4968
- i$4 `
4969
- button {
4970
- font: inherit;
4971
- color: inherit;
4972
- cursor: pointer;
4973
- border: 0;
4974
- background: transparent;
4975
- }
4976
- `,
4977
- ];
4978
- KemetPopperClose = __decorate([
4979
- e$5('kemet-popper-close')
4980
- ], KemetPopperClose);
4981
-
4982
- const stylesBase = i$4 `
4419
+ const stylesBase$1 = i$4 `
4983
4420
  :host {
4984
4421
  color: inherit;
4985
4422
  display: none;
@@ -5201,7 +4638,7 @@ let KemetPassword = class KemetPassword extends s$1 {
5201
4638
  }
5202
4639
  }
5203
4640
  };
5204
- KemetPassword.styles = [stylesBase];
4641
+ KemetPassword.styles = [stylesBase$1];
5205
4642
  __decorate([
5206
4643
  e$4({ type: Array })
5207
4644
  ], KemetPassword.prototype, "rules", void 0);
@@ -5236,6 +4673,49 @@ KemetPassword = __decorate([
5236
4673
  e$5('kemet-password')
5237
4674
  ], KemetPassword);
5238
4675
 
4676
+ /**
4677
+ * @since 2.0.0
4678
+ * @status stable
4679
+ *
4680
+ * @tagname kemet-popper-close
4681
+ * @summary A close button for the popper
4682
+ *
4683
+ * @event kemet-popper-close-btn
4684
+ *
4685
+ */
4686
+ let KemetPopperClose = class KemetPopperClose extends s$1 {
4687
+ render() {
4688
+ return x `
4689
+ <button @click=${() => this.close()} @keyup=${event => this.handleKeyboard(event)}>
4690
+ <slot></slot>
4691
+ </button>
4692
+ `;
4693
+ }
4694
+ close() {
4695
+ emitEvent(this, 'kemet-popper-close-btn', this);
4696
+ }
4697
+ handleKeyboard(event) {
4698
+ event.preventDefault();
4699
+ if (event.keyCode === keyCodes.SPACE || event.keyCode === keyCodes.ENTER) {
4700
+ this.close();
4701
+ }
4702
+ }
4703
+ };
4704
+ KemetPopperClose.styles = [
4705
+ i$4 `
4706
+ button {
4707
+ font: inherit;
4708
+ color: inherit;
4709
+ cursor: pointer;
4710
+ border: 0;
4711
+ background: transparent;
4712
+ }
4713
+ `,
4714
+ ];
4715
+ KemetPopperClose = __decorate([
4716
+ e$5('kemet-popper-close')
4717
+ ], KemetPopperClose);
4718
+
5239
4719
  var top = 'top';
5240
4720
  var bottom = 'bottom';
5241
4721
  var right = 'right';
@@ -7568,422 +7048,152 @@ const stylesPopperSuperScaled = i$4 `
7568
7048
  * @prop {string} strategy - Sets the strategy option in Popper's api
7569
7049
  * @prop {number} skidding - Sets an offset to the Popper from the trigger
7570
7050
  * @prop {number} distance - Sets spacing between the Popper and the trigger
7571
- *
7572
- */
7573
- let KemetPopper = class KemetPopper extends s$1 {
7574
- constructor() {
7575
- super();
7576
- this.placement = 'top';
7577
- this.effect = 'fade';
7578
- this.fireOn = 'hover';
7579
- this.strategy = 'fixed';
7580
- this.skidding = 0;
7581
- this.distance = 0;
7582
- this.addEventListener('kemet-popper-close-btn', () => this.opened = false);
7583
- }
7584
- firstUpdated() {
7585
- if (this.fireOn === 'click') {
7586
- this.focusableElements.forEach((element) => {
7587
- element.addEventListener('keydown', event => this.handleFocusableDown(event));
7588
- });
7589
- }
7590
- }
7591
- updated(prevProps) {
7592
- this.refresh();
7593
- if (!prevProps.get('opened') && this.opened === true) {
7594
- emitEvent(this, 'kemet-popper-opened', this);
7595
- }
7596
- if (prevProps.get('opened') && this.opened === false) {
7597
- emitEvent(this, 'kemet-popper-closed', this);
7598
- }
7599
- }
7600
- render() {
7601
- return x `
7602
- <div
7603
- id="trigger"
7604
- part="trigger"
7605
- tabIndex="0"
7606
- @click=${this.fireOn === 'click' ? event => this.toggle(event) : null}
7607
- @keyup=${this.fireOn === 'click' ? event => this.handleKeyUp(event) : null}
7608
- @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
7609
- @focus=${this.fireOn !== 'click' ? () => this.opened = true : null}
7610
- @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
7611
- @blur=${this.fireOn !== 'click' ? () => this.opened = false : null}
7612
- >
7613
- <slot name="trigger"></slot>
7614
- </div>
7615
- <div
7616
- id="content"
7617
- @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
7618
- @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
7619
- >
7620
- <slot name="content" @slotchange=${() => this.makePopper()}></slot>
7621
- </div>
7622
- `;
7623
- }
7624
- refresh() {
7625
- var _a;
7626
- (_a = this.popperInstance) === null || _a === void 0 ? void 0 : _a.setOptions({
7627
- placement: this.placement,
7628
- strategy: this.strategy,
7629
- modifiers: [
7630
- { name: 'offset', options: { offset: [this.skidding, this.distance] } }
7631
- ],
7632
- });
7633
- }
7634
- makePopper() {
7635
- this.popperInstance = createPopper(this.triggerElement, this.contentElement, {
7636
- placement: this.placement,
7637
- strategy: this.strategy,
7638
- modifiers: [
7639
- { name: 'offset', options: { offset: [this.skidding, this.distance] } }
7640
- ],
7641
- });
7642
- }
7643
- toggle(event) {
7644
- const isSlotTrigger = event.target.getAttribute('slot') === 'trigger';
7645
- const isPartTrigger = event.target.getAttribute('part') === 'trigger';
7646
- if (isSlotTrigger || isPartTrigger) {
7647
- if (this.opened) {
7648
- this.opened = false;
7649
- }
7650
- else {
7651
- this.opened = true;
7652
- }
7653
- }
7654
- }
7655
- handleKeyUp(event) {
7656
- event.preventDefault();
7657
- if (event.keyCode === keyCodes.ESC) {
7658
- this.opened = false;
7659
- }
7660
- if (event.keyCode === keyCodes.ENTER || event.keyCode === keyCodes.SPACE) {
7661
- this.toggle(event);
7662
- }
7663
- }
7664
- handleFocusableDown(event) {
7665
- const firstFocusable = this.focusableElements[0];
7666
- const lastFocusable = this.focusableElements[this.focusableElements.length - 1];
7667
- if (event.key === 'Tab') {
7668
- if (event.shiftKey && document.activeElement === firstFocusable) {
7669
- event.preventDefault();
7670
- lastFocusable.focus();
7671
- }
7672
- else if (!event.shiftKey && document.activeElement === lastFocusable) {
7673
- event.preventDefault();
7674
- firstFocusable.focus();
7675
- }
7676
- }
7677
- }
7678
- };
7679
- KemetPopper.styles = [stylesPopper, stylesPopperFade, stylesPopperScale, stylesPopperSlide, stylesPopperFall, stylesPopperFlipHorizontal, stylesPopperFlipVertical, stylesPopperSign, stylesPopperSuperScaled];
7680
- __decorate([
7681
- e$4({ type: String, reflect: true })
7682
- ], KemetPopper.prototype, "placement", void 0);
7683
- __decorate([
7684
- e$4({ type: Boolean, reflect: true })
7685
- ], KemetPopper.prototype, "opened", void 0);
7686
- __decorate([
7687
- e$4({ type: String, reflect: true })
7688
- ], KemetPopper.prototype, "effect", void 0);
7689
- __decorate([
7690
- e$4({ type: String, attribute: 'fire-on' })
7691
- ], KemetPopper.prototype, "fireOn", void 0);
7692
- __decorate([
7693
- e$4({ type: String })
7694
- ], KemetPopper.prototype, "strategy", void 0);
7695
- __decorate([
7696
- e$4({ type: Number })
7697
- ], KemetPopper.prototype, "skidding", void 0);
7698
- __decorate([
7699
- e$4({ type: Number })
7700
- ], KemetPopper.prototype, "distance", void 0);
7701
- __decorate([
7702
- t$1()
7703
- ], KemetPopper.prototype, "popperInstance", void 0);
7704
- __decorate([
7705
- i$1('#trigger')
7706
- ], KemetPopper.prototype, "triggerElement", void 0);
7707
- __decorate([
7708
- i$1('#content')
7709
- ], KemetPopper.prototype, "contentElement", void 0);
7710
- __decorate([
7711
- e$3('body, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable], kemet-popper-close')
7712
- ], KemetPopper.prototype, "focusableElements", void 0);
7713
- KemetPopper = __decorate([
7714
- e$5('kemet-popper')
7715
- ], KemetPopper);
7716
- var KemetPopper$1 = KemetPopper;
7717
-
7718
- /**
7719
- * @license
7720
- * Copyright 2017 Google LLC
7721
- * SPDX-License-Identifier: BSD-3-Clause
7722
- */class e extends i{constructor(i){if(super(i),this.et=A,i.type!==t.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(r){if(r===A||null==r)return this.ft=void 0,this.et=r;if(r===T)return r;if("string"!=typeof r)throw Error(this.constructor.directiveName+"() called with a non-string value");if(r===this.et)return this.ft;this.et=r;const s=[r];return s.raw=s,this.ft={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName="unsafeHTML",e.resultType=1;const o=e$2(e);
7723
-
7724
- const stylesRotator = i$4 `
7725
- :host {
7726
- display: flex;
7727
- }
7728
-
7729
- .rotator__slide {
7730
- pointer-events: none;
7731
- }
7732
-
7733
- .rotator__slide--active {
7734
- pointer-events: auto;
7735
- }
7736
-
7737
- /* fade effect */
7738
- :host([effect="fade"]) .rotator {
7739
- display: inline-flex;
7740
- flex-wrap: nowrap;
7741
- flex-direction: row;
7742
- }
7743
-
7744
- :host([effect="fade"]) .rotator__slide {
7745
- width: 100%;
7746
- flex: none;
7747
- opacity: 0;
7748
- box-sizing: border-box;
7749
- transition: all var(--kemet-rotator-transition-speed, 500ms) ease;
7750
- }
7751
-
7752
- :host([effect="fade"]) .rotator__slide:not(:first-child) {
7753
- margin-left: -100%; /* this is the bulk of the overlay trick */
7754
- }
7755
-
7756
- :host([effect="fade"]) .rotator__slide--active {
7757
- opacity: 1;
7758
- }
7759
-
7760
- /* flip effect */
7761
- :host([effect="flip"]) .rotator {
7762
- display: flex;
7763
- position: relative;
7764
-
7765
- perspective: 500;
7766
- }
7767
-
7768
- :host([effect="flip"]) .rotator__slide {
7769
- display: block;
7770
- width: auto;
7771
- position: absolute;
7772
- top: -20px;
7773
- left: 0;
7774
-
7775
- opacity: 0;
7776
-
7777
- transform: rotateX(90deg);
7778
- transform-origin: 0% 0%;
7779
- transition: all var(--kemet-rotator-transition-speed, 500ms) ease;
7780
- }
7781
-
7782
- :host([effect="flip"]) .rotator__slide--active {
7783
- top: 0;
7784
- opacity: 1;
7785
-
7786
- transform: rotateX(0deg);
7787
- }
7788
-
7789
- :host([effect="flip"]) .rotator__slide--prev {
7790
- top: 40px;;
7791
- transform: rotateX(-90deg);
7792
- }
7793
- `;
7794
-
7795
- /**
7796
- * @since 1.0.0
7797
- * @status stable
7798
- *
7799
- * @tagname kemet-rotator
7800
- * @summary A component that rotates through an array of text.
7801
- *
7802
- * @prop {number} activeSlide - The index number for the current slide.
7803
- * @prop {string} width - The width of the rotator block.
7804
- * @prop {string} height - The height of the rotator block.
7805
- * @prop {array} messages - Text in the rotator. Supports HTML.
7806
- * @prop {string} effect - The transition effect type.
7807
- * @prop {number} rotationSpeed - How fast, in seconds, each slide lasts. Stop the rotator with 0.
7808
- *
7809
- * @cssproperty --kemet-rotator-transition-speed - How long, in css time units, the transition effect lasts. Default: 500ms.
7810
- *
7811
- */
7812
- let KemetRotator = class KemetRotator extends s$1 {
7813
- constructor() {
7814
- super(...arguments);
7815
- this.activeSlide = 0;
7816
- this.width = 'auto';
7817
- this.height = 'auto';
7818
- this.messages = [];
7051
+ *
7052
+ */
7053
+ let KemetPopper = class KemetPopper extends s$1 {
7054
+ constructor() {
7055
+ super();
7056
+ this.placement = 'top';
7819
7057
  this.effect = 'fade';
7820
- this.rotationSpeed = 3;
7058
+ this.fireOn = 'hover';
7059
+ this.strategy = 'fixed';
7060
+ this.skidding = 0;
7061
+ this.distance = 0;
7062
+ this.addEventListener('kemet-popper-close-btn', () => this.opened = false);
7821
7063
  }
7822
7064
  firstUpdated() {
7823
- // standard properties
7824
- this.prevSlide = null;
7825
- window.addEventListener('resize', this.setDimensions.bind(this));
7065
+ if (this.fireOn === 'click') {
7066
+ this.focusableElements.forEach((element) => {
7067
+ element.addEventListener('keydown', event => this.handleFocusableDown(event));
7068
+ });
7069
+ }
7826
7070
  }
7827
- updated(changed) {
7828
- const widthHasChanged = !!changed.get('width');
7829
- const heightHasChanged = !!changed.get('height');
7830
- this.setDimensions();
7831
- // only trigger slide updates when width and height has not changed
7832
- if (!widthHasChanged && !heightHasChanged) {
7833
- setTimeout(() => {
7834
- if (this.rotationSpeed > 0) {
7835
- this.nextSlide();
7836
- }
7837
- }, this.rotationSpeed * 1000);
7071
+ updated(prevProps) {
7072
+ this.refresh();
7073
+ if (!prevProps.get('opened') && this.opened === true) {
7074
+ emitEvent(this, 'kemet-popper-opened', this);
7075
+ }
7076
+ if (prevProps.get('opened') && this.opened === false) {
7077
+ emitEvent(this, 'kemet-popper-closed', this);
7838
7078
  }
7839
7079
  }
7840
7080
  render() {
7841
- const setWidth = this.effect === 'flip' ? `width:${this.width};` : '';
7842
- const setHeight = this.effect === 'flip' ? `height:${this.height};` : '';
7843
7081
  return x `
7844
- <span class="rotator" style="${setWidth} ${setHeight}">
7845
- ${this.makeMessages()}
7846
- </span>
7082
+ <div
7083
+ id="trigger"
7084
+ part="trigger"
7085
+ tabIndex="0"
7086
+ @click=${this.fireOn === 'click' ? event => this.toggle(event) : null}
7087
+ @keyup=${this.fireOn === 'click' ? event => this.handleKeyUp(event) : null}
7088
+ @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
7089
+ @focus=${this.fireOn !== 'click' ? () => this.opened = true : null}
7090
+ @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
7091
+ @blur=${this.fireOn !== 'click' ? () => this.opened = false : null}
7092
+ >
7093
+ <slot name="trigger"></slot>
7094
+ </div>
7095
+ <div
7096
+ id="content"
7097
+ @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
7098
+ @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
7099
+ >
7100
+ <slot name="content" @slotchange=${() => this.makePopper()}></slot>
7101
+ </div>
7847
7102
  `;
7848
7103
  }
7849
- makeMessages() {
7850
- const messages = this.messages.map((message, index) => {
7851
- const setActiveClass = this.activeSlide === index ? 'rotator__slide--active' : '';
7852
- const setPrevClass = this.prevSlide === index ? 'rotator__slide--prev' : '';
7853
- return x `
7854
- <span class="rotator__slide ${setActiveClass} ${setPrevClass}">
7855
- ${o(message)}
7856
- </span>
7857
- `;
7104
+ refresh() {
7105
+ var _a;
7106
+ (_a = this.popperInstance) === null || _a === void 0 ? void 0 : _a.setOptions({
7107
+ placement: this.placement,
7108
+ strategy: this.strategy,
7109
+ modifiers: [
7110
+ { name: 'offset', options: { offset: [this.skidding, this.distance] } }
7111
+ ],
7858
7112
  });
7859
- return messages;
7860
7113
  }
7861
- setDimensions() {
7862
- if (this.effect === 'flip') {
7863
- this.width = `${this.offsetWidth}px`;
7864
- const slides = this.shadowRoot.querySelectorAll('.rotator__slide');
7865
- let tallest = 0;
7866
- slides.forEach((slide) => {
7867
- if (slide.offsetHeight > tallest) {
7868
- tallest = slide.offsetHeight;
7869
- }
7870
- });
7871
- this.height = `${tallest}px`;
7114
+ makePopper() {
7115
+ this.popperInstance = createPopper(this.triggerElement, this.contentElement, {
7116
+ placement: this.placement,
7117
+ strategy: this.strategy,
7118
+ modifiers: [
7119
+ { name: 'offset', options: { offset: [this.skidding, this.distance] } }
7120
+ ],
7121
+ });
7122
+ }
7123
+ toggle(event) {
7124
+ const isSlotTrigger = event.target.getAttribute('slot') === 'trigger';
7125
+ const isPartTrigger = event.target.getAttribute('part') === 'trigger';
7126
+ if (isSlotTrigger || isPartTrigger) {
7127
+ if (this.opened) {
7128
+ this.opened = false;
7129
+ }
7130
+ else {
7131
+ this.opened = true;
7132
+ }
7872
7133
  }
7873
7134
  }
7874
- nextSlide() {
7875
- if (this.activeSlide < this.messages.length - 1) {
7876
- this.activeSlide += 1;
7877
- this.prevSlide = this.activeSlide - 1;
7135
+ handleKeyUp(event) {
7136
+ event.preventDefault();
7137
+ if (event.keyCode === keyCodes.ESC) {
7138
+ this.opened = false;
7878
7139
  }
7879
- else {
7880
- this.activeSlide = 0;
7881
- this.prevSlide = this.messages.length - 1;
7140
+ if (event.keyCode === keyCodes.ENTER || event.keyCode === keyCodes.SPACE) {
7141
+ this.toggle(event);
7142
+ }
7143
+ }
7144
+ handleFocusableDown(event) {
7145
+ const firstFocusable = this.focusableElements[0];
7146
+ const lastFocusable = this.focusableElements[this.focusableElements.length - 1];
7147
+ if (event.key === 'Tab') {
7148
+ if (event.shiftKey && document.activeElement === firstFocusable) {
7149
+ event.preventDefault();
7150
+ lastFocusable.focus();
7151
+ }
7152
+ else if (!event.shiftKey && document.activeElement === lastFocusable) {
7153
+ event.preventDefault();
7154
+ firstFocusable.focus();
7155
+ }
7882
7156
  }
7883
7157
  }
7884
7158
  };
7885
- KemetRotator.styles = [stylesRotator];
7886
- __decorate([
7887
- e$4({ type: Number })
7888
- ], KemetRotator.prototype, "activeSlide", void 0);
7889
- __decorate([
7890
- e$4({ type: String })
7891
- ], KemetRotator.prototype, "width", void 0);
7159
+ KemetPopper.styles = [stylesPopper, stylesPopperFade, stylesPopperScale, stylesPopperSlide, stylesPopperFall, stylesPopperFlipHorizontal, stylesPopperFlipVertical, stylesPopperSign, stylesPopperSuperScaled];
7892
7160
  __decorate([
7893
- e$4({ type: String })
7894
- ], KemetRotator.prototype, "height", void 0);
7161
+ e$4({ type: String, reflect: true })
7162
+ ], KemetPopper.prototype, "placement", void 0);
7895
7163
  __decorate([
7896
- e$4({ type: Array })
7897
- ], KemetRotator.prototype, "messages", void 0);
7164
+ e$4({ type: Boolean, reflect: true })
7165
+ ], KemetPopper.prototype, "opened", void 0);
7898
7166
  __decorate([
7899
7167
  e$4({ type: String, reflect: true })
7900
- ], KemetRotator.prototype, "effect", void 0);
7168
+ ], KemetPopper.prototype, "effect", void 0);
7901
7169
  __decorate([
7902
- e$4({ type: Number, attribute: 'rotation-speed' })
7903
- ], KemetRotator.prototype, "rotationSpeed", void 0);
7170
+ e$4({ type: String, attribute: 'fire-on' })
7171
+ ], KemetPopper.prototype, "fireOn", void 0);
7904
7172
  __decorate([
7905
- t$1()
7906
- ], KemetRotator.prototype, "prevSlide", void 0);
7907
- KemetRotator = __decorate([
7908
- e$5('kemet-rotator')
7909
- ], KemetRotator);
7910
-
7911
- /**
7912
- * @since 1.0.0
7913
- * @status stable
7914
- *
7915
- * @tagname kemet-scroll-link
7916
- * @summary A component that adds a smooth scrolling link to an target..
7917
- *
7918
- * @prop {object} element - A DOM element that establishes the context of scrolling.
7919
- * @prop {object} target - A DOM element that represents the destination of the scroll link. If no target is specified it will default to the top of the page.
7920
- * @prop {number} xOffset - Allows the horizontal scrolling to stop short of the given value.
7921
- * @prop {number} yOffset - Allows the vertical scrolling to stop short of the given value.
7922
- *
7923
- */
7924
- let KemetScrollLink = class KemetScrollLink extends s$1 {
7925
- constructor() {
7926
- super(...arguments);
7927
- this.element = window;
7928
- this.target = document.querySelector('body');
7929
- this.xOffset = 0;
7930
- this.yOffset = 0;
7931
- }
7932
- firstUpdated() {
7933
- // standard properties
7934
- this.isSmoothSupported = 'scrollBehavior' in document.documentElement.style;
7935
- }
7936
- render() {
7937
- return x `
7938
- <div tabindex="0" @click=${() => this.handleScroll()} @keyup=${event => this.handleKeyup(event)}>
7939
- <slot></slot>
7940
- </div>
7941
- `;
7942
- }
7943
- handleKeyup(event) {
7944
- if (event.keyCode === keyCodes.ENTER || event.keyCode === keyCodes.SPACE) {
7945
- this.handleScroll();
7946
- }
7947
- }
7948
- handleScroll() {
7949
- const scrollTop = this.target.offsetTop + this.yOffset;
7950
- const scrollLeft = this.target.offsetLeft + this.xOffset;
7951
- if (this.isSmoothSupported) {
7952
- this.element.scrollTo({
7953
- top: scrollTop,
7954
- left: scrollLeft,
7955
- behavior: 'smooth',
7956
- });
7957
- }
7958
- else {
7959
- this.element.scrollTo(scrollLeft, scrollTop);
7960
- }
7961
- }
7962
- };
7963
- KemetScrollLink.styles = [i$4 `
7964
- :host {
7965
- cursor: pointer;
7966
- display: inline-block;
7967
- }
7968
- `];
7173
+ e$4({ type: String })
7174
+ ], KemetPopper.prototype, "strategy", void 0);
7969
7175
  __decorate([
7970
- e$4({ type: Object })
7971
- ], KemetScrollLink.prototype, "element", void 0);
7176
+ e$4({ type: Number })
7177
+ ], KemetPopper.prototype, "skidding", void 0);
7972
7178
  __decorate([
7973
- e$4({ type: Object })
7974
- ], KemetScrollLink.prototype, "target", void 0);
7179
+ e$4({ type: Number })
7180
+ ], KemetPopper.prototype, "distance", void 0);
7975
7181
  __decorate([
7976
- e$4({ type: Number, attribute: 'x-offset', reflect: true })
7977
- ], KemetScrollLink.prototype, "xOffset", void 0);
7182
+ t$1()
7183
+ ], KemetPopper.prototype, "popperInstance", void 0);
7978
7184
  __decorate([
7979
- e$4({ type: Number, attribute: 'y-offset', reflect: true })
7980
- ], KemetScrollLink.prototype, "yOffset", void 0);
7185
+ i$1('#trigger')
7186
+ ], KemetPopper.prototype, "triggerElement", void 0);
7981
7187
  __decorate([
7982
- t$1()
7983
- ], KemetScrollLink.prototype, "isSmoothSupported", void 0);
7984
- KemetScrollLink = __decorate([
7985
- e$5('kemet-scroll-link')
7986
- ], KemetScrollLink);
7188
+ i$1('#content')
7189
+ ], KemetPopper.prototype, "contentElement", void 0);
7190
+ __decorate([
7191
+ e$3('body, a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable], kemet-popper-close')
7192
+ ], KemetPopper.prototype, "focusableElements", void 0);
7193
+ KemetPopper = __decorate([
7194
+ e$5('kemet-popper')
7195
+ ], KemetPopper);
7196
+ var KemetPopper$1 = KemetPopper;
7987
7197
 
7988
7198
  const stylesRadio = i$4 `
7989
7199
  *,
@@ -8290,58 +7500,328 @@ let KemetRadios = class KemetRadios extends s$1 {
8290
7500
  this.radios[index].tabIndex = 0;
8291
7501
  }
8292
7502
  }
8293
- handleSlotChange() {
8294
- const radios = Array.from(this.radios);
8295
- const checkedRadio = radios.find((radio) => radio.checked);
8296
- this.radios.forEach((radio) => {
8297
- radio.tabIndex = -1;
8298
- radio.input.tabIndex = -1;
8299
- });
8300
- if (checkedRadio) {
8301
- checkedRadio.tabIndex = 0;
8302
- }
7503
+ handleSlotChange() {
7504
+ const radios = Array.from(this.radios);
7505
+ const checkedRadio = radios.find((radio) => radio.checked);
7506
+ this.radios.forEach((radio) => {
7507
+ radio.tabIndex = -1;
7508
+ radio.input.tabIndex = -1;
7509
+ });
7510
+ if (checkedRadio) {
7511
+ checkedRadio.tabIndex = 0;
7512
+ }
7513
+ }
7514
+ makeMessage() {
7515
+ if (this.status === 'error' || this.status === 'warning') {
7516
+ return x `<span part="message">${this.message}</span>`;
7517
+ }
7518
+ return null;
7519
+ }
7520
+ checkValidity() {
7521
+ if (this.required) {
7522
+ return !!this.value;
7523
+ }
7524
+ return true;
7525
+ }
7526
+ };
7527
+ KemetRadios.styles = [stylesRadios];
7528
+ __decorate([
7529
+ e$4({ type: String })
7530
+ ], KemetRadios.prototype, "legend", void 0);
7531
+ __decorate([
7532
+ e$4({ type: String, reflect: true })
7533
+ ], KemetRadios.prototype, "axis", void 0);
7534
+ __decorate([
7535
+ e$4({ type: String })
7536
+ ], KemetRadios.prototype, "value", void 0);
7537
+ __decorate([
7538
+ e$4({ type: String })
7539
+ ], KemetRadios.prototype, "name", void 0);
7540
+ __decorate([
7541
+ e$4({ type: String, reflect: true })
7542
+ ], KemetRadios.prototype, "status", void 0);
7543
+ __decorate([
7544
+ e$4({ type: String })
7545
+ ], KemetRadios.prototype, "message", void 0);
7546
+ __decorate([
7547
+ e$4({ type: String })
7548
+ ], KemetRadios.prototype, "required", void 0);
7549
+ __decorate([
7550
+ t$1()
7551
+ ], KemetRadios.prototype, "radios", void 0);
7552
+ KemetRadios = __decorate([
7553
+ e$5('kemet-radios')
7554
+ ], KemetRadios);
7555
+
7556
+ /**
7557
+ * @license
7558
+ * Copyright 2017 Google LLC
7559
+ * SPDX-License-Identifier: BSD-3-Clause
7560
+ */class e extends i{constructor(i){if(super(i),this.et=A,i.type!==t.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(r){if(r===A||null==r)return this.ft=void 0,this.et=r;if(r===T)return r;if("string"!=typeof r)throw Error(this.constructor.directiveName+"() called with a non-string value");if(r===this.et)return this.ft;this.et=r;const s=[r];return s.raw=s,this.ft={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName="unsafeHTML",e.resultType=1;const o=e$2(e);
7561
+
7562
+ const stylesRotator = i$4 `
7563
+ :host {
7564
+ display: flex;
7565
+ }
7566
+
7567
+ .rotator__slide {
7568
+ pointer-events: none;
7569
+ }
7570
+
7571
+ .rotator__slide--active {
7572
+ pointer-events: auto;
7573
+ }
7574
+
7575
+ /* fade effect */
7576
+ :host([effect="fade"]) .rotator {
7577
+ display: inline-flex;
7578
+ flex-wrap: nowrap;
7579
+ flex-direction: row;
7580
+ }
7581
+
7582
+ :host([effect="fade"]) .rotator__slide {
7583
+ width: 100%;
7584
+ flex: none;
7585
+ opacity: 0;
7586
+ box-sizing: border-box;
7587
+ transition: all var(--kemet-rotator-transition-speed, 500ms) ease;
7588
+ }
7589
+
7590
+ :host([effect="fade"]) .rotator__slide:not(:first-child) {
7591
+ margin-left: -100%; /* this is the bulk of the overlay trick */
7592
+ }
7593
+
7594
+ :host([effect="fade"]) .rotator__slide--active {
7595
+ opacity: 1;
7596
+ }
7597
+
7598
+ /* flip effect */
7599
+ :host([effect="flip"]) .rotator {
7600
+ display: flex;
7601
+ position: relative;
7602
+
7603
+ perspective: 500;
7604
+ }
7605
+
7606
+ :host([effect="flip"]) .rotator__slide {
7607
+ display: block;
7608
+ width: auto;
7609
+ position: absolute;
7610
+ top: -20px;
7611
+ left: 0;
7612
+
7613
+ opacity: 0;
7614
+
7615
+ transform: rotateX(90deg);
7616
+ transform-origin: 0% 0%;
7617
+ transition: all var(--kemet-rotator-transition-speed, 500ms) ease;
7618
+ }
7619
+
7620
+ :host([effect="flip"]) .rotator__slide--active {
7621
+ top: 0;
7622
+ opacity: 1;
7623
+
7624
+ transform: rotateX(0deg);
7625
+ }
7626
+
7627
+ :host([effect="flip"]) .rotator__slide--prev {
7628
+ top: 40px;;
7629
+ transform: rotateX(-90deg);
7630
+ }
7631
+ `;
7632
+
7633
+ /**
7634
+ * @since 1.0.0
7635
+ * @status stable
7636
+ *
7637
+ * @tagname kemet-rotator
7638
+ * @summary A component that rotates through an array of text.
7639
+ *
7640
+ * @prop {number} activeSlide - The index number for the current slide.
7641
+ * @prop {string} width - The width of the rotator block.
7642
+ * @prop {string} height - The height of the rotator block.
7643
+ * @prop {array} messages - Text in the rotator. Supports HTML.
7644
+ * @prop {string} effect - The transition effect type.
7645
+ * @prop {number} rotationSpeed - How fast, in seconds, each slide lasts. Stop the rotator with 0.
7646
+ *
7647
+ * @cssproperty --kemet-rotator-transition-speed - How long, in css time units, the transition effect lasts. Default: 500ms.
7648
+ *
7649
+ */
7650
+ let KemetRotator = class KemetRotator extends s$1 {
7651
+ constructor() {
7652
+ super(...arguments);
7653
+ this.activeSlide = 0;
7654
+ this.width = 'auto';
7655
+ this.height = 'auto';
7656
+ this.messages = [];
7657
+ this.effect = 'fade';
7658
+ this.rotationSpeed = 3;
7659
+ }
7660
+ firstUpdated() {
7661
+ // standard properties
7662
+ this.prevSlide = null;
7663
+ window.addEventListener('resize', this.setDimensions.bind(this));
7664
+ }
7665
+ updated(changed) {
7666
+ const widthHasChanged = !!changed.get('width');
7667
+ const heightHasChanged = !!changed.get('height');
7668
+ this.setDimensions();
7669
+ // only trigger slide updates when width and height has not changed
7670
+ if (!widthHasChanged && !heightHasChanged) {
7671
+ setTimeout(() => {
7672
+ if (this.rotationSpeed > 0) {
7673
+ this.nextSlide();
7674
+ }
7675
+ }, this.rotationSpeed * 1000);
7676
+ }
7677
+ }
7678
+ render() {
7679
+ const setWidth = this.effect === 'flip' ? `width:${this.width};` : '';
7680
+ const setHeight = this.effect === 'flip' ? `height:${this.height};` : '';
7681
+ return x `
7682
+ <span class="rotator" style="${setWidth} ${setHeight}">
7683
+ ${this.makeMessages()}
7684
+ </span>
7685
+ `;
7686
+ }
7687
+ makeMessages() {
7688
+ const messages = this.messages.map((message, index) => {
7689
+ const setActiveClass = this.activeSlide === index ? 'rotator__slide--active' : '';
7690
+ const setPrevClass = this.prevSlide === index ? 'rotator__slide--prev' : '';
7691
+ return x `
7692
+ <span class="rotator__slide ${setActiveClass} ${setPrevClass}">
7693
+ ${o(message)}
7694
+ </span>
7695
+ `;
7696
+ });
7697
+ return messages;
7698
+ }
7699
+ setDimensions() {
7700
+ if (this.effect === 'flip') {
7701
+ this.width = `${this.offsetWidth}px`;
7702
+ const slides = this.shadowRoot.querySelectorAll('.rotator__slide');
7703
+ let tallest = 0;
7704
+ slides.forEach((slide) => {
7705
+ if (slide.offsetHeight > tallest) {
7706
+ tallest = slide.offsetHeight;
7707
+ }
7708
+ });
7709
+ this.height = `${tallest}px`;
7710
+ }
7711
+ }
7712
+ nextSlide() {
7713
+ if (this.activeSlide < this.messages.length - 1) {
7714
+ this.activeSlide += 1;
7715
+ this.prevSlide = this.activeSlide - 1;
7716
+ }
7717
+ else {
7718
+ this.activeSlide = 0;
7719
+ this.prevSlide = this.messages.length - 1;
7720
+ }
7721
+ }
7722
+ };
7723
+ KemetRotator.styles = [stylesRotator];
7724
+ __decorate([
7725
+ e$4({ type: Number })
7726
+ ], KemetRotator.prototype, "activeSlide", void 0);
7727
+ __decorate([
7728
+ e$4({ type: String })
7729
+ ], KemetRotator.prototype, "width", void 0);
7730
+ __decorate([
7731
+ e$4({ type: String })
7732
+ ], KemetRotator.prototype, "height", void 0);
7733
+ __decorate([
7734
+ e$4({ type: Array })
7735
+ ], KemetRotator.prototype, "messages", void 0);
7736
+ __decorate([
7737
+ e$4({ type: String, reflect: true })
7738
+ ], KemetRotator.prototype, "effect", void 0);
7739
+ __decorate([
7740
+ e$4({ type: Number, attribute: 'rotation-speed' })
7741
+ ], KemetRotator.prototype, "rotationSpeed", void 0);
7742
+ __decorate([
7743
+ t$1()
7744
+ ], KemetRotator.prototype, "prevSlide", void 0);
7745
+ KemetRotator = __decorate([
7746
+ e$5('kemet-rotator')
7747
+ ], KemetRotator);
7748
+
7749
+ /**
7750
+ * @since 1.0.0
7751
+ * @status stable
7752
+ *
7753
+ * @tagname kemet-scroll-link
7754
+ * @summary A component that adds a smooth scrolling link to an target..
7755
+ *
7756
+ * @prop {object} element - A DOM element that establishes the context of scrolling.
7757
+ * @prop {object} target - A DOM element that represents the destination of the scroll link. If no target is specified it will default to the top of the page.
7758
+ * @prop {number} xOffset - Allows the horizontal scrolling to stop short of the given value.
7759
+ * @prop {number} yOffset - Allows the vertical scrolling to stop short of the given value.
7760
+ *
7761
+ */
7762
+ let KemetScrollLink = class KemetScrollLink extends s$1 {
7763
+ constructor() {
7764
+ super(...arguments);
7765
+ this.element = window;
7766
+ this.target = document.querySelector('body');
7767
+ this.xOffset = 0;
7768
+ this.yOffset = 0;
7769
+ }
7770
+ firstUpdated() {
7771
+ // standard properties
7772
+ this.isSmoothSupported = 'scrollBehavior' in document.documentElement.style;
8303
7773
  }
8304
- makeMessage() {
8305
- if (this.status === 'error' || this.status === 'warning') {
8306
- return x `<span part="message">${this.message}</span>`;
7774
+ render() {
7775
+ return x `
7776
+ <div tabindex="0" @click=${() => this.handleScroll()} @keyup=${event => this.handleKeyup(event)}>
7777
+ <slot></slot>
7778
+ </div>
7779
+ `;
7780
+ }
7781
+ handleKeyup(event) {
7782
+ if (event.keyCode === keyCodes.ENTER || event.keyCode === keyCodes.SPACE) {
7783
+ this.handleScroll();
8307
7784
  }
8308
- return null;
8309
7785
  }
8310
- checkValidity() {
8311
- if (this.required) {
8312
- return !!this.value;
7786
+ handleScroll() {
7787
+ const scrollTop = this.target.offsetTop + this.yOffset;
7788
+ const scrollLeft = this.target.offsetLeft + this.xOffset;
7789
+ if (this.isSmoothSupported) {
7790
+ this.element.scrollTo({
7791
+ top: scrollTop,
7792
+ left: scrollLeft,
7793
+ behavior: 'smooth',
7794
+ });
7795
+ }
7796
+ else {
7797
+ this.element.scrollTo(scrollLeft, scrollTop);
8313
7798
  }
8314
- return true;
8315
7799
  }
8316
7800
  };
8317
- KemetRadios.styles = [stylesRadios];
8318
- __decorate([
8319
- e$4({ type: String })
8320
- ], KemetRadios.prototype, "legend", void 0);
8321
- __decorate([
8322
- e$4({ type: String, reflect: true })
8323
- ], KemetRadios.prototype, "axis", void 0);
8324
- __decorate([
8325
- e$4({ type: String })
8326
- ], KemetRadios.prototype, "value", void 0);
7801
+ KemetScrollLink.styles = [i$4 `
7802
+ :host {
7803
+ cursor: pointer;
7804
+ display: inline-block;
7805
+ }
7806
+ `];
8327
7807
  __decorate([
8328
- e$4({ type: String })
8329
- ], KemetRadios.prototype, "name", void 0);
7808
+ e$4({ type: Object })
7809
+ ], KemetScrollLink.prototype, "element", void 0);
8330
7810
  __decorate([
8331
- e$4({ type: String, reflect: true })
8332
- ], KemetRadios.prototype, "status", void 0);
7811
+ e$4({ type: Object })
7812
+ ], KemetScrollLink.prototype, "target", void 0);
8333
7813
  __decorate([
8334
- e$4({ type: String })
8335
- ], KemetRadios.prototype, "message", void 0);
7814
+ e$4({ type: Number, attribute: 'x-offset', reflect: true })
7815
+ ], KemetScrollLink.prototype, "xOffset", void 0);
8336
7816
  __decorate([
8337
- e$4({ type: String })
8338
- ], KemetRadios.prototype, "required", void 0);
7817
+ e$4({ type: Number, attribute: 'y-offset', reflect: true })
7818
+ ], KemetScrollLink.prototype, "yOffset", void 0);
8339
7819
  __decorate([
8340
7820
  t$1()
8341
- ], KemetRadios.prototype, "radios", void 0);
8342
- KemetRadios = __decorate([
8343
- e$5('kemet-radios')
8344
- ], KemetRadios);
7821
+ ], KemetScrollLink.prototype, "isSmoothSupported", void 0);
7822
+ KemetScrollLink = __decorate([
7823
+ e$5('kemet-scroll-link')
7824
+ ], KemetScrollLink);
8345
7825
 
8346
7826
  const stylesScrollNav = i$4 `
8347
7827
  :host {
@@ -8356,6 +7836,7 @@ const stylesScrollNav = i$4 `
8356
7836
  :host([effect="resize"]) {
8357
7837
  position: fixed;
8358
7838
  top: 0;
7839
+ left: 0;
8359
7840
  width: 100%;
8360
7841
  }
8361
7842
 
@@ -9652,6 +9133,20 @@ const stylesKemetTabPanel = i$4 `
9652
9133
  :host(.vertical[selected]) {
9653
9134
  display: block;
9654
9135
  }
9136
+
9137
+ :host(.stacked) {
9138
+ position: absolute;
9139
+ z-index: -1;
9140
+ opacity: 0;
9141
+ visibility: hidden;
9142
+ }
9143
+
9144
+ :host(.stacked[selected]) {
9145
+ position: relative;
9146
+ z-index: 1;
9147
+ opacity: 1;
9148
+ visibility: visible;
9149
+ }
9655
9150
  `;
9656
9151
 
9657
9152
  /**
@@ -9792,8 +9287,6 @@ KemetTab = __decorate([
9792
9287
  * @prop {object} ink - An object that contains information about the ink
9793
9288
  * @prop {boolean} hideInk - Determines whether or not to hide the ink
9794
9289
  * @prop {boolean} overflow - Is true when the space of the tabs is larger than it's container
9795
- * @prop {number} measureHeight - If set to anything greater than 1, will measure the height of the panels and dynamically change the height of the tabs given the size
9796
- * @prop {number} measureHeightOffset - Adds spacing to the calculated height from measureHeight
9797
9290
  *
9798
9291
  * @slot tab - Place the tabs here.
9799
9292
  * @slot panel - Place the panels here.
@@ -9824,8 +9317,6 @@ let KemetTabs = class KemetTabs extends s$1 {
9824
9317
  this.placement = 'top';
9825
9318
  this.tabsAlign = 'center';
9826
9319
  this.hideInk = false;
9827
- this.measureHeight = 1;
9828
- this.measureHeightOffset = 48;
9829
9320
  this.addEventListener('kemet-tab-selected', this.tabSelectedChange.bind(this));
9830
9321
  this.addEventListener('kemet-tab-close', this.handleTabClose.bind(this));
9831
9322
  window.addEventListener('resize', this.handleResize.bind(this));
@@ -9837,7 +9328,6 @@ let KemetTabs = class KemetTabs extends s$1 {
9837
9328
  this.xDown = null;
9838
9329
  this.yDown = null;
9839
9330
  this.links = this.shadowRoot.getElementById('links');
9840
- setTimeout(() => this.measure(), this.measureHeight);
9841
9331
  }
9842
9332
  render() {
9843
9333
  return x `
@@ -9860,6 +9350,7 @@ let KemetTabs = class KemetTabs extends s$1 {
9860
9350
  }
9861
9351
  updated() {
9862
9352
  this.determineFade();
9353
+ this.determineStacked();
9863
9354
  }
9864
9355
  handleLinksSlotChange() {
9865
9356
  const tabs = this.querySelectorAll('kemet-tab');
@@ -10074,22 +9565,6 @@ let KemetTabs = class KemetTabs extends s$1 {
10074
9565
  this.selectTab();
10075
9566
  this.selectPanel();
10076
9567
  this.dispatchTabChange();
10077
- setTimeout(() => this.measure());
10078
- }
10079
- measure() {
10080
- if (this.measureHeight > 1) {
10081
- const currentPanel = this.selected ? this.querySelector(`kemet-tab-panel[selected]`) : this.panels[this.selectedIndex];
10082
- const clone = currentPanel.cloneNode(true);
10083
- clone.style.display = 'block';
10084
- clone.style.visibility = 'hidden';
10085
- clone.style.pointerEvents = 'none';
10086
- document.body.appendChild(clone);
10087
- setTimeout(() => {
10088
- const panelHeight = clone.offsetHeight;
10089
- this.panelsElement.style.maxHeight = `${panelHeight + this.measureHeightOffset}px`;
10090
- document.body.removeChild(clone);
10091
- }, 1);
10092
- }
10093
9568
  }
10094
9569
  determineFade() {
10095
9570
  this.panels.forEach((panel) => {
@@ -10098,6 +9573,13 @@ let KemetTabs = class KemetTabs extends s$1 {
10098
9573
  panel.classList.add('fade');
10099
9574
  });
10100
9575
  }
9576
+ determineStacked() {
9577
+ this.panels.forEach((panel) => {
9578
+ // add fade class if panel effect is fade
9579
+ if (this.panelEffect === 'stacked')
9580
+ panel.classList.add('stacked');
9581
+ });
9582
+ }
10101
9583
  determineOverflow() {
10102
9584
  const tabsContainerWidth = this.offsetWidth;
10103
9585
  const tabElements = this.querySelectorAll('kemet-tab');
@@ -10278,12 +9760,6 @@ __decorate([
10278
9760
  __decorate([
10279
9761
  e$4({ type: Boolean, reflect: true })
10280
9762
  ], KemetTabs.prototype, "overflow", void 0);
10281
- __decorate([
10282
- e$4({ type: Number, attribute: 'measure-height' })
10283
- ], KemetTabs.prototype, "measureHeight", void 0);
10284
- __decorate([
10285
- e$4({ type: Number, attribute: 'measure-height-offset' })
10286
- ], KemetTabs.prototype, "measureHeightOffset", void 0);
10287
9763
  __decorate([
10288
9764
  t$1()
10289
9765
  ], KemetTabs.prototype, "tabs", void 0);
@@ -10815,55 +10291,175 @@ let KemetToggle = class KemetToggle extends s$1 {
10815
10291
  </label>
10816
10292
  `;
10817
10293
  }
10818
- handleChange() {
10819
- this.checked = !this.checked;
10820
- this.value = this.checked ? this.optionChecked : this.optionUnchecked;
10821
- emitEvent(this, 'kemet-toggle-change', true);
10822
- }
10823
- makeUncheckedOption() {
10824
- if (this.show) {
10825
- return x `<span class="option" part="unchecked">${this.optionUnchecked}</span>`;
10826
- }
10827
- return null;
10828
- }
10829
- makeCheckedOption() {
10830
- if (this.show) {
10831
- return x `<span class="option" part="checked">${this.optionChecked}</span>`;
10832
- }
10833
- return null;
10294
+ handleChange() {
10295
+ this.checked = !this.checked;
10296
+ this.value = this.checked ? this.optionChecked : this.optionUnchecked;
10297
+ emitEvent(this, 'kemet-toggle-change', true);
10298
+ }
10299
+ makeUncheckedOption() {
10300
+ if (this.show) {
10301
+ return x `<span class="option" part="unchecked">${this.optionUnchecked}</span>`;
10302
+ }
10303
+ return null;
10304
+ }
10305
+ makeCheckedOption() {
10306
+ if (this.show) {
10307
+ return x `<span class="option" part="checked">${this.optionChecked}</span>`;
10308
+ }
10309
+ return null;
10310
+ }
10311
+ };
10312
+ KemetToggle.styles = [stylesToggle];
10313
+ __decorate([
10314
+ e$4({ type: String })
10315
+ ], KemetToggle.prototype, "name", void 0);
10316
+ __decorate([
10317
+ e$4({ type: Boolean, reflect: true })
10318
+ ], KemetToggle.prototype, "checked", void 0);
10319
+ __decorate([
10320
+ e$4({ type: Boolean })
10321
+ ], KemetToggle.prototype, "disabled", void 0);
10322
+ __decorate([
10323
+ e$4({ type: String })
10324
+ ], KemetToggle.prototype, "label", void 0);
10325
+ __decorate([
10326
+ e$4({ type: Boolean })
10327
+ ], KemetToggle.prototype, "show", void 0);
10328
+ __decorate([
10329
+ e$4({ type: Boolean })
10330
+ ], KemetToggle.prototype, "squared", void 0);
10331
+ __decorate([
10332
+ e$4({ type: String, attribute: 'option-checked' })
10333
+ ], KemetToggle.prototype, "optionChecked", void 0);
10334
+ __decorate([
10335
+ e$4({ type: String, attribute: 'option-unchecked' })
10336
+ ], KemetToggle.prototype, "optionUnchecked", void 0);
10337
+ __decorate([
10338
+ t$1()
10339
+ ], KemetToggle.prototype, "value", void 0);
10340
+ KemetToggle = __decorate([
10341
+ e$5('kemet-toggle')
10342
+ ], KemetToggle);
10343
+
10344
+ const stylesTooltip = i$4 `
10345
+ :host {
10346
+ --kemet-tooltip-deg: -45deg;
10347
+ --kemet-tooltip-size: 22px;
10348
+ --kemet-tooltip-border-size: 1px;
10349
+ --kemet-tooltip-rounded-tip: 4px;
10350
+ --kemet-tooltip-background-color: var(--kemet-color-foreground);
10351
+ --kemet-tooltip-border-color: var(--kemet-color-background);
10352
+ --kemet-tooltip-placement-offset: calc(calc(var(--kemet-tooltip-size) / 2) * -1);
10353
+ }
10354
+
10355
+ #arrow {
10356
+ content: '';
10357
+ width: var(--kemet-tooltip-size);
10358
+ height: var(--kemet-tooltip-size);
10359
+ position: relative;
10360
+ display: inline-block;
10361
+ background: linear-gradient(
10362
+ var(--kemet-tooltip-deg),
10363
+ transparent calc(var(--kemet-tooltip-size) / 1.5),
10364
+ var(--kemet-tooltip-background-color) 0
10365
+ )
10366
+ no-repeat;
10367
+ background-repeat: no-repeat;
10368
+ transform-origin: center center;
10369
+ border-top-left-radius: var(--kemet-tooltip-rounded-tip);
10370
+ border-left: var(--kemet-tooltip-border-size) solid var(--kemet-tooltip-border-color);
10371
+ border-top: var(--kemet-tooltip-border-size) solid var(--kemet-tooltip-border-color);
10372
+ }
10373
+
10374
+ [data-popper-placement^="top"] #arrow {
10375
+ top: var(--kemet-tooltip-placement-offset);
10376
+ transform: rotate(225deg);
10377
+
10378
+ }
10379
+
10380
+ [data-popper-placement^="bottom"] #arrow-container {
10381
+ top: 0px;
10382
+ }
10383
+
10384
+ [data-popper-placement^="bottom"] #arrow {
10385
+ top: var(--kemet-tooltip-placement-offset);
10386
+ transform: rotate(45deg);
10387
+ }
10388
+
10389
+ [data-popper-placement^="right"] #arrow {
10390
+ left: var(--kemet-tooltip-placement-offset);
10391
+ transform: rotate(-45deg);
10392
+ }
10393
+
10394
+ [data-popper-placement^="left"] #arrow-container {
10395
+ right: 0;
10396
+ }
10397
+
10398
+ [data-popper-placement^="left"] #arrow {
10399
+ right: var(--kemet-tooltip-placement-offset);
10400
+ transform: rotate(135deg);
10401
+ }
10402
+ `;
10403
+
10404
+ /**
10405
+ * @since 2.0.0
10406
+ * @status stable
10407
+ *
10408
+ * @tagname kemet-tooltip
10409
+ * @summary A tooltip is a Popper component that displays an dynamic arrow pointing to the trigger.
10410
+ *
10411
+ * @slot trigger - Controls opening and closing the tooltip.
10412
+ * @slot content - The contents of the tooltip.
10413
+ *
10414
+ * @csspart trigger - Contains the trigger for the tooltip.
10415
+ * @csspart content - Contains the content for the tooltip.
10416
+ *
10417
+ * @cssproperty --kemet-tooltip-content-height - The height of the content.
10418
+ * @cssproperty --kemet-tooltip-size - The width and height of arrow's container
10419
+ * @cssproperty --kemet-tooltip-border-size - The border size of the arrow
10420
+ * @cssproperty --kemet-tooltip-rounded-tip - How much rounding the tip of the arrow should be. Zero is pointy
10421
+ * @cssproperty --kemet-tooltip-background-color - The background color of the arrow
10422
+ * @cssproperty --kemet-tooltip-border-color - The border color of the the arrow
10423
+ * @cssproperty --kemet-tooltip-placement-offset - The offset of the arrow from the trigger
10424
+ *
10425
+ */
10426
+ let KemetTooltip = class KemetTooltip extends KemetPopper$1 {
10427
+ render() {
10428
+ return x `
10429
+ <div
10430
+ id="trigger"
10431
+ part="trigger"
10432
+ tabIndex="0"
10433
+ @click=${this.fireOn === 'click' ? event => this.toggle(event) : null}
10434
+ @keyup=${this.fireOn === 'click' ? event => this.handleKeyUp(event) : null}
10435
+ @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
10436
+ @focus=${this.fireOn !== 'click' ? () => this.opened = true : null}
10437
+ @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
10438
+ @blur=${this.fireOn !== 'click' ? () => this.opened = false : null}
10439
+ >
10440
+ <slot name="trigger"></slot>
10441
+ </div>
10442
+ <div
10443
+ id="content"
10444
+ @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
10445
+ @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
10446
+ >
10447
+ <slot name="content" @slotchange=${() => { this.makePopper(); this.measureContent(); }}></slot>
10448
+ <div id="arrow-container" part="arrow-container" data-popper-arrow>
10449
+ <div id="arrow" part="arrow"></div>
10450
+ </div>
10451
+ </div>
10452
+ `;
10453
+ }
10454
+ measureContent() {
10455
+ const height = this.contentElement.offsetHeight;
10456
+ this.contentElement.style.setProperty("--kemet-tooltip-content-height", `${height}px`);
10834
10457
  }
10835
10458
  };
10836
- KemetToggle.styles = [stylesToggle];
10837
- __decorate([
10838
- e$4({ type: String })
10839
- ], KemetToggle.prototype, "name", void 0);
10840
- __decorate([
10841
- e$4({ type: Boolean, reflect: true })
10842
- ], KemetToggle.prototype, "checked", void 0);
10843
- __decorate([
10844
- e$4({ type: Boolean })
10845
- ], KemetToggle.prototype, "disabled", void 0);
10846
- __decorate([
10847
- e$4({ type: String })
10848
- ], KemetToggle.prototype, "label", void 0);
10849
- __decorate([
10850
- e$4({ type: Boolean })
10851
- ], KemetToggle.prototype, "show", void 0);
10852
- __decorate([
10853
- e$4({ type: Boolean })
10854
- ], KemetToggle.prototype, "squared", void 0);
10855
- __decorate([
10856
- e$4({ type: String, attribute: 'option-checked' })
10857
- ], KemetToggle.prototype, "optionChecked", void 0);
10858
- __decorate([
10859
- e$4({ type: String, attribute: 'option-unchecked' })
10860
- ], KemetToggle.prototype, "optionUnchecked", void 0);
10861
- __decorate([
10862
- t$1()
10863
- ], KemetToggle.prototype, "value", void 0);
10864
- KemetToggle = __decorate([
10865
- e$5('kemet-toggle')
10866
- ], KemetToggle);
10459
+ KemetTooltip.styles = [stylesTooltip, stylesPopper, stylesPopperFade, stylesPopperScale, stylesPopperSlide, stylesPopperFall, stylesPopperFlipHorizontal, stylesPopperFlipVertical, stylesPopperSign, stylesPopperSuperScaled];
10460
+ KemetTooltip = __decorate([
10461
+ e$5('kemet-tooltip')
10462
+ ], KemetTooltip);
10867
10463
 
10868
10464
  const stylesStep = i$4 `
10869
10465
  :host {
@@ -11163,397 +10759,799 @@ KemetTracker = __decorate([
11163
10759
  e$5('kemet-tracker')
11164
10760
  ], KemetTracker);
11165
10761
 
11166
- const stylesTooltip = i$4 `
10762
+ const stylesUpload = i$4 `
11167
10763
  :host {
11168
- --kemet-tooltip-deg: -45deg;
11169
- --kemet-tooltip-size: 22px;
11170
- --kemet-tooltip-border-size: 1px;
11171
- --kemet-tooltip-rounded-tip: 4px;
11172
- --kemet-tooltip-background-color: var(--kemet-color-foreground);
11173
- --kemet-tooltip-border-color: var(--kemet-color-background);
11174
- --kemet-tooltip-placement-offset: calc(calc(var(--kemet-tooltip-size) / 2) * -1);
10764
+ color: var(--kemet-upload-color, var(--kemet-color-white));
10765
+ display: grid;
10766
+ grid-template-columns: 1fr 1fr;
10767
+ height: var(--kemet-upload-height, 364px);
10768
+ border: var(--kemet-upload-border, 1rem solid var(--kemet-color-gray1-to-transparent));
10769
+ background-color: var(--kemet-upload-background-color, var(--kemet-color-primary-to-transparent));
11175
10770
  }
11176
10771
 
11177
- #arrow {
11178
- content: '';
11179
- width: var(--kemet-tooltip-size);
11180
- height: var(--kemet-tooltip-size);
11181
- position: relative;
11182
- display: inline-block;
11183
- background: linear-gradient(
11184
- var(--kemet-tooltip-deg),
11185
- transparent calc(var(--kemet-tooltip-size) / 1.5),
11186
- var(--kemet-tooltip-background-color) 0
11187
- )
11188
- no-repeat;
11189
- background-repeat: no-repeat;
11190
- transform-origin: center center;
11191
- border-top-left-radius: var(--kemet-tooltip-rounded-tip);
11192
- border-left: var(--kemet-tooltip-border-size) solid var(--kemet-tooltip-border-color);
11193
- border-top: var(--kemet-tooltip-border-size) solid var(--kemet-tooltip-border-color);
10772
+ :host([mobile]) {
10773
+ display: block;
10774
+ height: auto;
11194
10775
  }
11195
10776
 
11196
- [data-popper-placement^="top"] #arrow {
11197
- top: var(--kemet-tooltip-placement-offset);
11198
- transform: rotate(225deg);
10777
+ input {
10778
+ display: none;
10779
+ }
11199
10780
 
10781
+ .button {
10782
+ cursor: pointer;
10783
+ font-size: 1rem;
10784
+ display: block;
10785
+ color: var(--kemet-color-white);
10786
+ padding: 0.5rem 1rem;
10787
+ border: 1px solid var(--kemet-color-white);
10788
+ background-color: transparent;
11200
10789
  }
11201
10790
 
11202
- [data-popper-placement^="bottom"] #arrow-container {
11203
- top: 0px;
10791
+ .upload {
10792
+ display: flex;
10793
+ align-items: center;
10794
+ justify-content: center;
10795
+ margin: var(--kemet-upload-margin);
10796
+ flex-direction: column;
10797
+ border: 2px dashed var(--kemet-color-white);
11204
10798
  }
11205
10799
 
11206
- [data-popper-placement^="bottom"] #arrow {
11207
- top: var(--kemet-tooltip-placement-offset);
11208
- transform: rotate(45deg);
10800
+ :host([over]) .upload {
10801
+ background-color: green;
11209
10802
  }
11210
10803
 
11211
- [data-popper-placement^="right"] #arrow {
11212
- left: var(--kemet-tooltip-placement-offset);
11213
- transform: rotate(-45deg);
10804
+ :host([mobile]) .upload {
10805
+ height: 280px;
11214
10806
  }
11215
10807
 
11216
- [data-popper-placement^="left"] #arrow-container {
11217
- right: 0;
10808
+ .files {
10809
+ display: flex;
10810
+ gap: 1rem;
10811
+ flex-direction: column;
10812
+ padding: 0 1rem;
10813
+ overflow: auto;
10814
+ background-color: var(--kemet-color-gray1-to-transparent);
11218
10815
  }
11219
10816
 
11220
- [data-popper-placement^="left"] #arrow {
11221
- right: var(--kemet-tooltip-placement-offset);
11222
- transform: rotate(135deg);
10817
+ :host([mobile]) .files {
10818
+ padding: 0;
10819
+ max-height: 280px;
10820
+ }
10821
+
10822
+ .heading {
10823
+ font-size: 1.25rem;
10824
+ margin: 0 0 2rem 0;
10825
+ }
10826
+
10827
+ :host([no-drag-drop]) .heading {
10828
+ display: none;
10829
+ }
10830
+ `;
10831
+ const stylesUploadFile = i$4 `
10832
+ :host {
10833
+ --kemet-upload-file-ripple-color: var(--kemet-color-primary);
10834
+
10835
+ color: var(--kemet-upload-file-color, var(--kemet-color-text));
10836
+ display: grid;
10837
+ gap: 1rem;
10838
+ grid-template-columns: auto 1fr auto;
10839
+ align-items: center;
10840
+ height: 100%;
10841
+ max-height: 50%;
10842
+ padding: var(--kemet-upload-file-padding, 0.5rem 1rem);
10843
+ border: var(--kemet-upload-file-border, 1px solid var(--kemet-color-primary));
10844
+ }
10845
+
10846
+ :host([status='error']) {
10847
+ border: 1px solid var(--kemet-color-error);
10848
+ }
10849
+
10850
+ :host([status='complete']) {
10851
+ border: 1px solid var(--kemet-color-success);
10852
+ }
10853
+
10854
+ h3 {
10855
+ margin: 0;
10856
+ }
10857
+
10858
+ .percentage {
10859
+ font-size: clamp(2rem, 3vw, 2.5rem);
10860
+ align-self: center;
10861
+ justify-self: center;
10862
+ }
10863
+
10864
+ .indicator {
10865
+ transform: scale(0.8);
10866
+ }
10867
+
10868
+ :host([status='complete']) .message,
10869
+ :host([status='complete']) .indicator {
10870
+ color: var(--kemet-color-success);
10871
+ }
10872
+
10873
+ :host([status='error']) .message,
10874
+ :host([status='error']) .indicator {
10875
+ color: var(--kemet-color-error);
10876
+ }
10877
+ `;
10878
+ const stylesLoaders = i$4 `
10879
+ .lds-ripple {
10880
+ display: inline-block;
10881
+ position: relative;
10882
+ width: 80px;
10883
+ height: 80px;
10884
+ }
10885
+
10886
+ .lds-ripple div {
10887
+ position: absolute;
10888
+ border: 4px solid var(--kemet-upload-file-ripple-color);
10889
+ opacity: 1;
10890
+ border-radius: 50%;
10891
+ animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
10892
+ }
10893
+
10894
+ .lds-ripple div:nth-child(2) {
10895
+ animation-delay: -0.5s;
10896
+ }
10897
+
10898
+ @keyframes lds-ripple {
10899
+ 0% {
10900
+ top: 36px;
10901
+ left: 36px;
10902
+ width: 0;
10903
+ height: 0;
10904
+ opacity: 0;
10905
+ }
10906
+ 4.9% {
10907
+ top: 36px;
10908
+ left: 36px;
10909
+ width: 0;
10910
+ height: 0;
10911
+ opacity: 0;
10912
+ }
10913
+ 5% {
10914
+ top: 36px;
10915
+ left: 36px;
10916
+ width: 0;
10917
+ height: 0;
10918
+ opacity: 1;
10919
+ }
10920
+ 100% {
10921
+ top: 0px;
10922
+ left: 0px;
10923
+ width: 72px;
10924
+ height: 72px;
10925
+ opacity: 0;
10926
+ }
11223
10927
  }
11224
10928
  `;
11225
10929
 
10930
+ const formatBytes = (bytes, decimals = 2) => {
10931
+ if (bytes === 0)
10932
+ return '0 Bytes';
10933
+ const k = 1024;
10934
+ const dm = decimals < 0 ? 0 : decimals;
10935
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
10936
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
10937
+ // eslint-disable-next-line no-restricted-properties
10938
+ return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;
10939
+ };
11226
10940
  /**
11227
- * @since 2.0.0
10941
+ * @since 1.3.0
11228
10942
  * @status stable
11229
10943
  *
11230
- * @tagname kemet-tooltip
11231
- * @summary A tooltip is a Popper component that displays an dynamic arrow pointing to the trigger.
10944
+ * @tagname kemet-upload-file
10945
+ * @summary A file in the upload.
11232
10946
  *
11233
- * @slot trigger - Controls opening and closing the tooltip.
11234
- * @slot content - The contents of the tooltip.
10947
+ * @prop {string} name - The name of the file
10948
+ * @prop {number} loaded - The number of bytes loaded
10949
+ * @prop {number} size - The file size in bytes
10950
+ * @prop {string} type - The file type
10951
+ * @prop {string} status - The status of the file. Values are complete | uploading | error.
10952
+ * @prop {number} percent - Percentage of file completion that's calculated by the loaded property.
10953
+ * @prop {string} message - An error message to give to users
11235
10954
  *
11236
- * @csspart trigger - Contains the trigger for the tooltip.
11237
- * @csspart content - Contains the content for the tooltip.
10955
+ * @cssproperty --kemet-upload-file-color - The default text color. Default: var(--kemet-color-text).
10956
+ * @cssproperty --kemet-upload-file-padding - The padding around the file. Default: 0.5rem 1rem.
10957
+ * @cssproperty --kemet-upload-file-border - The border around the file. Default: 1px solid var(--kemet-color-primary).
11238
10958
  *
11239
- * @cssproperty --kemet-tooltip-content-height - The height of the content.
11240
- * @cssproperty --kemet-tooltip-size - The width and height of arrow's container
11241
- * @cssproperty --kemet-tooltip-border-size - The border size of the arrow
11242
- * @cssproperty --kemet-tooltip-rounded-tip - How much rounding the tip of the arrow should be. Zero is pointy
11243
- * @cssproperty --kemet-tooltip-background-color - The background color of the arrow
11244
- * @cssproperty --kemet-tooltip-border-color - The border color of the the arrow
11245
- * @cssproperty --kemet-tooltip-placement-offset - The offset of the arrow from the trigger
10959
+ * @csspart percentage - Area that displays the percentage.
10960
+ * @csspart filename - Area that displays file name.
10961
+ * @csspart loaded - Area that displays how much has uploaded.
10962
+ * @csspart message - Area for the error message.
10963
+ * @csspart indicator - Area for status icon.
11246
10964
  *
11247
10965
  */
11248
- let KemetTooltip = class KemetTooltip extends KemetPopper$1 {
10966
+ let KemetUploadFile = class KemetUploadFile extends s$1 {
10967
+ constructor() {
10968
+ super(...arguments);
10969
+ this.loaded = 0;
10970
+ this.size = 0;
10971
+ this.percent = 0;
10972
+ }
10973
+ updated() {
10974
+ this.percent = this.calculatePercent();
10975
+ }
11249
10976
  render() {
11250
10977
  return x `
11251
- <div
11252
- id="trigger"
11253
- part="trigger"
11254
- tabIndex="0"
11255
- @click=${this.fireOn === 'click' ? event => this.toggle(event) : null}
11256
- @keyup=${this.fireOn === 'click' ? event => this.handleKeyUp(event) : null}
11257
- @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
11258
- @focus=${this.fireOn !== 'click' ? () => this.opened = true : null}
11259
- @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
11260
- @blur=${this.fireOn !== 'click' ? () => this.opened = false : null}
11261
- >
11262
- <slot name="trigger"></slot>
10978
+ <div class="percentage" part="percentage">
10979
+ <span>${this.percent}%</span>
11263
10980
  </div>
11264
- <div
11265
- id="content"
11266
- @mouseover=${this.fireOn !== 'click' ? () => this.opened = true : null}
11267
- @mouseout=${this.fireOn !== 'click' ? () => this.opened = false : null}
11268
- >
11269
- <slot name="content" @slotchange=${() => { this.makePopper(); this.measureContent(); }}></slot>
11270
- <div id="arrow-container" part="arrow-container" data-popper-arrow>
11271
- <div id="arrow" part="arrow"></div>
11272
- </div>
10981
+ <div>
10982
+ <h3 part="filename">${this.name}</h3>
10983
+ <span part="loaded">${formatBytes(this.loaded)} / ${formatBytes(this.size)}</span>
10984
+ ${this.message ? x `<div class="message" part="message">${this.message}</div>` : null}
10985
+ </div>
10986
+ <div class="indicator" part="indicator">
10987
+ ${this.getStatusIcon()}
11273
10988
  </div>
11274
10989
  `;
11275
10990
  }
11276
- measureContent() {
11277
- const height = this.contentElement.offsetHeight;
11278
- this.contentElement.style.setProperty("--kemet-tooltip-content-height", `${height}px`);
10991
+ calculatePercent() {
10992
+ const percent = Math.round((this.loaded * 100.0) / this.size);
10993
+ return percent > 100 ? 100 : percent;
10994
+ }
10995
+ getStatusIcon() {
10996
+ if (this.status === 'uploading') {
10997
+ return x `<div class="lds-ripple"><div></div><div></div></div>`;
10998
+ }
10999
+ if (this.status === 'complete') {
11000
+ return x `<kemet-icon icon="check-circle" size="48"></kemet-icon>`;
11001
+ }
11002
+ if (this.status === 'error') {
11003
+ return x `<kemet-icon icon="exclamation-circle" size="48"></kemet-icon>`;
11004
+ }
11005
+ return null;
11279
11006
  }
11280
11007
  };
11281
- KemetTooltip.styles = [stylesTooltip, stylesPopper, stylesPopperFade, stylesPopperScale, stylesPopperSlide, stylesPopperFall, stylesPopperFlipHorizontal, stylesPopperFlipVertical, stylesPopperSign, stylesPopperSuperScaled];
11282
- KemetTooltip = __decorate([
11283
- e$5('kemet-tooltip')
11284
- ], KemetTooltip);
11008
+ KemetUploadFile.styles = [stylesUploadFile, stylesLoaders];
11009
+ __decorate([
11010
+ e$4({ type: String })
11011
+ ], KemetUploadFile.prototype, "name", void 0);
11012
+ __decorate([
11013
+ e$4({ type: Number })
11014
+ ], KemetUploadFile.prototype, "loaded", void 0);
11015
+ __decorate([
11016
+ e$4({ type: Number })
11017
+ ], KemetUploadFile.prototype, "size", void 0);
11018
+ __decorate([
11019
+ e$4({ type: String })
11020
+ ], KemetUploadFile.prototype, "type", void 0);
11021
+ __decorate([
11022
+ e$4({ type: String, reflect: true })
11023
+ ], KemetUploadFile.prototype, "status", void 0);
11024
+ __decorate([
11025
+ e$4({ type: Number })
11026
+ ], KemetUploadFile.prototype, "percent", void 0);
11027
+ __decorate([
11028
+ e$4({ type: String })
11029
+ ], KemetUploadFile.prototype, "message", void 0);
11030
+ KemetUploadFile = __decorate([
11031
+ e$5('kemet-upload-file')
11032
+ ], KemetUploadFile);
11285
11033
 
11286
- const stylesUpload = i$4 `
11034
+ const stylesBase = i$4 `
11287
11035
  :host {
11288
- color: var(--kemet-upload-color, var(--kemet-color-white));
11289
- display: grid;
11290
- grid-template-columns: 1fr 1fr;
11291
- height: var(--kemet-upload-height, 364px);
11292
- border: var(--kemet-upload-border, 1rem solid var(--kemet-color-gray1-to-transparent));
11293
- background-color: var(--kemet-upload-background-color, var(--kemet-color-primary-to-transparent));
11036
+ position: relative;
11037
+ display: block;
11294
11038
  }
11295
11039
 
11296
- :host([mobile]) {
11040
+ input {
11041
+ color: var(--kemet-color-text);
11297
11042
  display: block;
11298
- height: auto;
11043
+ font-size: 1rem;
11044
+ width: 100%;
11045
+ height: var(--kemet-input-height, 50px);
11046
+ padding: var(--kemet-input-padding, 0.5rem 1rem);
11047
+ border: var(--kemet-input-border, 1px solid var(--kemet-color-background));
11048
+ appearance: none;
11049
+ box-sizing: border-box;
11050
+ background-color: transparent;
11299
11051
  }
11300
11052
 
11301
- input {
11053
+ input[type='color'] {
11054
+ min-width: 10rem;
11055
+ }
11056
+
11057
+ input[type='search']::-webkit-search-decoration,
11058
+ input[type='search']::-webkit-search-cancel-button,
11059
+ input[type='search']::-webkit-search-results-button,
11060
+ input[type='search']::-webkit-search-results-decoration {
11302
11061
  display: none;
11303
11062
  }
11304
11063
 
11305
- .button {
11306
- cursor: pointer;
11307
- font-size: 1rem;
11308
- display: block;
11309
- color: var(--kemet-color-white);
11310
- padding: 0.5rem 1rem;
11311
- border: 1px solid var(--kemet-color-white);
11312
- background-color: transparent;
11064
+ :host([status='error']) input {
11065
+ border: var(--kemet-input-border-color-error, 1px solid var(--kemet-color-error));
11313
11066
  }
11314
11067
 
11315
- .upload {
11316
- display: flex;
11317
- align-items: center;
11318
- justify-content: center;
11319
- margin: var(--kemet-upload-margin);
11320
- flex-direction: column;
11321
- border: 2px dashed var(--kemet-color-white);
11068
+ :host([status='success']) input {
11069
+ border: var(--kemet-input-border-color-success, 1px solid var(--kemet-color-success));
11322
11070
  }
11323
11071
 
11324
- :host([over]) .upload {
11325
- background-color: green;
11072
+ :host([status='warning']) input {
11073
+ border: var(--kemet-input-border-color-warning, 1px solid var(--kemet-color-warning));
11326
11074
  }
11327
11075
 
11328
- :host([mobile]) .upload {
11329
- height: 280px;
11076
+ :host([disabled]) input {
11077
+ opacity: 0.5;
11330
11078
  }
11331
11079
 
11332
- .files {
11333
- display: flex;
11334
- gap: 1rem;
11335
- flex-direction: column;
11336
- padding: 0 1rem;
11337
- overflow: auto;
11338
- background-color: var(--kemet-color-gray1-to-transparent);
11080
+ :host([icon-left]) input {
11081
+ padding-left: var(--kemet-input-icon-left-padding, 3rem);
11339
11082
  }
11340
11083
 
11341
- :host([mobile]) .files {
11342
- padding: 0;
11343
- max-height: 280px;
11084
+ :host([icon-right]) input {
11085
+ padding-right: var(--kemet-input-icon-right-padding, 3rem);
11344
11086
  }
11345
11087
 
11346
- .heading {
11347
- font-size: 1.25rem;
11348
- margin: 0 0 2rem 0;
11088
+ :host([rounded]) input {
11089
+ border-radius: var(--kemet-input-border-radius-rounded, var(--kemet-border-radius));
11349
11090
  }
11350
11091
 
11351
- :host([no-drag-drop]) .heading {
11352
- display: none;
11092
+ :host([filled]) input {
11093
+ border: var(--kemet-input-border-filled, none);
11094
+ color: var(--kemet-input-color-filled, var(--kemet-color-white));
11095
+ background-color: var(--kemet-input-background-color-filled, var(--kemet-color-primary));
11353
11096
  }
11354
- `;
11355
- const stylesUploadFile = i$4 `
11356
- :host {
11357
- --kemet-upload-file-ripple-color: var(--kemet-color-primary);
11358
11097
 
11359
- color: var(--kemet-upload-file-color, var(--kemet-color-text));
11360
- display: grid;
11361
- gap: 1rem;
11362
- grid-template-columns: auto 1fr auto;
11363
- align-items: center;
11364
- height: 100%;
11365
- max-height: 50%;
11366
- padding: var(--kemet-upload-file-padding, 0.5rem 1rem);
11367
- border: var(--kemet-upload-file-border, 1px solid var(--kemet-color-primary));
11098
+ :host([filled]) kemet-icon,
11099
+ :host([filled]) input::placeholder {
11100
+ color: var(--kemet-input-color-filled, var(--kemet-color-white));
11368
11101
  }
11369
11102
 
11370
- :host([status='error']) {
11371
- border: 1px solid var(--kemet-color-error);
11103
+ :host([status='error'][filled]) input {
11104
+ background-color: var(--kemet-input-background-color-error, var(--kemet-color-error));
11372
11105
  }
11373
11106
 
11374
- :host([status='complete']) {
11375
- border: 1px solid var(--kemet-color-success);
11107
+ :host([status='success'][filled]) input {
11108
+ background-color: var(--kemet-input-background-color-success, var(--kemet-color-success));
11376
11109
  }
11377
11110
 
11378
- h3 {
11379
- margin: 0;
11111
+ :host([status='warning'][filled]) input {
11112
+ background-color: var(--kemet-input-background-color-warning, var(--kemet-color-warning));
11380
11113
  }
11381
11114
 
11382
- .percentage {
11383
- font-size: clamp(2rem, 3vw, 2.5rem);
11384
- align-self: center;
11385
- justify-self: center;
11115
+ kemet-icon {
11116
+ color: var(--kemet-color-text);
11117
+ position: absolute;
11118
+ top: 50%;
11119
+ transform: translateY(-50%);
11386
11120
  }
11387
11121
 
11388
- .indicator {
11389
- transform: scale(0.8);
11122
+ kemet-icon.left {
11123
+ left: 1rem;
11390
11124
  }
11391
11125
 
11392
- :host([status='complete']) .message,
11393
- :host([status='complete']) .indicator {
11394
- color: var(--kemet-color-success);
11126
+ kemet-icon.right {
11127
+ right: 1rem;
11395
11128
  }
11396
11129
 
11397
- :host([status='error']) .message,
11398
- :host([status='error']) .indicator {
11399
- color: var(--kemet-color-error);
11400
- }
11401
- `;
11402
- const stylesLoaders = i$4 `
11403
- .lds-ripple {
11404
- display: inline-block;
11405
- position: relative;
11406
- width: 80px;
11407
- height: 80px;
11130
+ kemet-icon.eye,
11131
+ kemet-icon.search {
11132
+ cursor: pointer;
11408
11133
  }
11409
11134
 
11410
- .lds-ripple div {
11411
- position: absolute;
11412
- border: 4px solid var(--kemet-upload-file-ripple-color);
11413
- opacity: 1;
11414
- border-radius: 50%;
11415
- animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;
11135
+ :host([status='error']) kemet-icon {
11136
+ color: var(--kemet-color-error);
11416
11137
  }
11417
11138
 
11418
- .lds-ripple div:nth-child(2) {
11419
- animation-delay: -0.5s;
11139
+ :host([status='warning']) kemet-icon {
11140
+ color: var(--kemet-color-error);
11420
11141
  }
11421
11142
 
11422
- @keyframes lds-ripple {
11423
- 0% {
11424
- top: 36px;
11425
- left: 36px;
11426
- width: 0;
11427
- height: 0;
11428
- opacity: 0;
11429
- }
11430
- 4.9% {
11431
- top: 36px;
11432
- left: 36px;
11433
- width: 0;
11434
- height: 0;
11435
- opacity: 0;
11436
- }
11437
- 5% {
11438
- top: 36px;
11439
- left: 36px;
11440
- width: 0;
11441
- height: 0;
11442
- opacity: 1;
11443
- }
11444
- 100% {
11445
- top: 0px;
11446
- left: 0px;
11447
- width: 72px;
11448
- height: 72px;
11449
- opacity: 0;
11450
- }
11143
+ :host([status='success']) kemet-icon {
11144
+ color: var(--kemet-color-success);
11451
11145
  }
11452
11146
  `;
11453
11147
 
11454
- const formatBytes = (bytes, decimals = 2) => {
11455
- if (bytes === 0)
11456
- return '0 Bytes';
11457
- const k = 1024;
11458
- const dm = decimals < 0 ? 0 : decimals;
11459
- const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
11460
- const i = Math.floor(Math.log(bytes) / Math.log(k));
11461
- // eslint-disable-next-line no-restricted-properties
11462
- return `${parseFloat((bytes / k ** i).toFixed(dm))} ${sizes[i]}`;
11463
- };
11464
11148
  /**
11465
- * @since 1.3.0
11149
+ * @since 1.0.0
11466
11150
  * @status stable
11467
11151
  *
11468
- * @tagname kemet-upload-file
11469
- * @summary A file in the upload.
11152
+ * @tagname kemet-input
11153
+ * @summary An enhanced input element.
11470
11154
  *
11471
- * @prop {string} name - The name of the file
11472
- * @prop {number} loaded - The number of bytes loaded
11473
- * @prop {number} size - The file size in bytes
11474
- * @prop {string} type - The file type
11475
- * @prop {string} status - The status of the file. Values are complete | uploading | error.
11476
- * @prop {number} percent - Percentage of file completion that's calculated by the loaded property.
11477
- * @prop {string} message - An error message to give to users
11155
+ * @prop {string} slug - Used for the id of the input. Should match the slug used in a control if applicable.
11156
+ * @prop {string} name - The name of the input
11157
+ * @prop {string} placeholder - The placeholder attribute
11158
+ * @prop {string} minlength - The minlength attribute
11159
+ * @prop {string} maxlength - The maxlength attribute
11160
+ * @prop {string} min - The min attribute
11161
+ * @prop {string} max - The max attribute
11162
+ * @prop {string} step - The step attribute
11163
+ * @prop {string} autocomplete - The autocomplete attribute
11164
+ * @prop {string} pattern - The pattern attribute
11165
+ * @prop {string} inputmode - The input mode attribute
11166
+ * @prop {boolean} autofocus - The autofocus attribute
11167
+ * @prop {boolean} disabled - The disable attribute
11168
+ * @prop {boolean} readonly - The readonly attribute
11169
+ * @prop {boolean} required - The required attribute
11170
+ * @prop {string} type - The type of input
11171
+ * @prop {string} value - The input's value
11172
+ * @prop {boolean} invalid - States whether or not the input is invalid
11173
+ * @prop {string} status - The status of the input
11174
+ * @prop {boolean} validateOnBlur - Activates validation on blur
11175
+ * @prop {string} ariaAutoComplete - Aria Autocomplete
11176
+ * @prop {string} ariaControls - Aria Controls
11177
+ * @prop {string} ariaActiveDescendant - Aria Active Descendant
11178
+ * @prop {boolean} rounded - Displays rounded corners
11179
+ * @prop {boolean} filled - Displays a filled input box
11180
+ * @prop {string} iconRight - Custom Icon to the right of the input
11181
+ * @prop {string} iconLeft - Custom Icon to the left of the input
11182
+ * @prop {number} iconSize - Size of the icons
11183
+ * @prop {object} validity - The HTML5 validity object.
11184
+ * @prop {boolean} isPasswordVisible - Manages password visibility
11185
+ * @prop {string} inputType - Input Type of keypress handled through handleInput(e)
11186
+ * @prop {boolean} focused - Determines if the input is focused
11478
11187
  *
11479
- * @cssproperty --kemet-upload-file-color - The default text color. Default: var(--kemet-color-text).
11480
- * @cssproperty --kemet-upload-file-padding - The padding around the file. Default: 0.5rem 1rem.
11481
- * @cssproperty --kemet-upload-file-border - The border around the file. Default: 1px solid var(--kemet-color-primary).
11188
+ * @csspart input
11482
11189
  *
11483
- * @csspart percentage - Area that displays the percentage.
11484
- * @csspart filename - Area that displays file name.
11485
- * @csspart loaded - Area that displays how much has uploaded.
11486
- * @csspart message - Area for the error message.
11487
- * @csspart indicator - Area for status icon.
11190
+ * @cssproperty --kemet-input-height - The height of the input. Default: 50px.
11191
+ * @cssproperty -kemet-input-padding - The padding on the input. Default: 0.5rem 1rem.
11192
+ * @cssproperty -kemet-input-border - The border of the input. Default: 1px solid var(--kemet-color-primary).
11193
+ * @cssproperty -kemet-input-border-color-error - The border of the error state. Default: 1px solid var(--kemet-color-error).
11194
+ * @cssproperty -kemet-input-border-color-success - The border of the success state. Default: 1px solid var(--kemet-color-success).
11195
+ * @cssproperty -kemet-input-border-color-warning - The border of the warning state. Default: 1px solid var(--kemet-color-warning) |
11196
+ * @cssproperty -kemet-input-icon-left-padding - The icon-left padding. Default: 3rem.
11197
+ * @cssproperty -kemet-input-icon-right-padding - The icon-right padding. Default: 3rem.
11198
+ * @cssproperty -kemet-input-border-radius-rounded - The border radius on rounded. Default: var(--kemet-border-radius).
11199
+ * @cssproperty -kemet-input-border-filled - The border on filled. Default: none.
11200
+ * @cssproperty -kemet-input-color-filled - The color on filled. Default: var(--kemet-color-white).
11201
+ * @cssproperty -kemet-input-background-color-filled - The background-color on filled. Default: var(--kemet-color-primary).
11202
+ * @cssproperty -kemet-input-background-color-error - The error state background color. Default: var(--kemet-color-error).
11203
+ * @cssproperty -kemet-input-background-color-success - The success state background color. Default: var(--kemet-color-success).
11204
+ * @cssproperty -kemet-input-background-color-warning - The warning state background color. Default: var(--kemet-color-warning).
11205
+ *
11206
+ * @event kemet-input-focused - Fires when the input receives and loses focus
11207
+ * @event kemet-input-status Fires when there's a change in status. This event includes an object that reports: 1) the status. 2) HTML5 validity object. 3) the component element.
11208
+ * Use the validity object to support custom validation messages.
11209
+ * @event kemet-input-input - Fires when the input receives input
11488
11210
  *
11489
11211
  */
11490
- let KemetUploadFile = class KemetUploadFile extends s$1 {
11212
+ let KemetInput = class KemetInput extends s$1 {
11491
11213
  constructor() {
11492
- super(...arguments);
11493
- this.loaded = 0;
11494
- this.size = 0;
11495
- this.percent = 0;
11214
+ super();
11215
+ this.name = 'input';
11216
+ this.type = 'text';
11217
+ this.value = '';
11218
+ this.status = 'standard';
11219
+ this.validateOnBlur = false;
11220
+ this.iconSize = 20;
11221
+ this.isPasswordVisible = false;
11222
+ this.focused = false;
11223
+ /** @internal */
11224
+ this.formSubmitController = new FormSubmitController(this);
11225
+ }
11226
+ ;
11227
+ firstUpdated() {
11228
+ // elements
11229
+ this.input = this.shadowRoot.querySelector('input');
11230
+ this.field = this.closest('kemet-field');
11231
+ this.form = this.closest('form');
11232
+ this.slug = this.field ? this.field.slug : 'input';
11233
+ if (this.field) {
11234
+ this.field.addEventListener('fmc-password-status', event => this.handleStatus(event));
11235
+ }
11236
+ }
11237
+ render() {
11238
+ return x `
11239
+ <div>
11240
+ ${this.makeIconLeft()}
11241
+ <input
11242
+ part="input"
11243
+ id=${this.slug}
11244
+ name=${this.name}
11245
+ placeholder=${l$1(this.placeholder)}
11246
+ minlength=${l$1(this.minlength)}
11247
+ maxlength=${l$1(this.maxlength)}
11248
+ min=${l$1(this.min)}
11249
+ max=${l$1(this.max)}
11250
+ step=${l$1(this.step)}
11251
+ autocomplete=${l$1(this.autocomplete)}
11252
+ aria-autocomplete=${l$1(this.ariaAutoComplete)}
11253
+ aria-controls=${l$1(this.ariaControls)}
11254
+ aria-activedescendant=${l$1(this.ariaActiveDescendant)}
11255
+ pattern=${l$1(this.pattern)}
11256
+ inputmode=${l$1(this.inputmode)}
11257
+ aria-invalid=${this.invalid ? 'true' : 'false'}
11258
+ ?autofocus=${this.autofocus}
11259
+ ?disabled=${this.disabled}
11260
+ ?readonly=${this.readonly}
11261
+ ?required=${this.required}
11262
+ .type="${this.type === 'password' && this.isPasswordVisible ? 'text' : this.type}"
11263
+ .value=${l(this.value)}
11264
+ @change=${this.handleChange}
11265
+ @input=${this.handleInput}
11266
+ @invalid=${this.handleInvalid}
11267
+ @focus=${this.handleFocus}
11268
+ @blur=${this.handleBlur}
11269
+ />
11270
+ ${this.makeIconRight()} ${this.makeIconClear()} ${this.makeVisibilityToggle()}
11271
+ </div>
11272
+ `;
11273
+ }
11274
+ /**
11275
+ * Makes the right icon
11276
+ * @private
11277
+ * @returns {templateResult} A right icon
11278
+ */
11279
+ makeIconRight() {
11280
+ if (this.iconRight) {
11281
+ return x `
11282
+ <kemet-icon class="right" icon="${this.iconRight}" size="${this.iconSize ? this.iconSize : 20}"></kemet-icon>
11283
+ `;
11284
+ }
11285
+ return null;
11286
+ }
11287
+ /**
11288
+ * Makes the left icon
11289
+ * @private
11290
+ * @returns {templateResult} A left icon
11291
+ */
11292
+ makeIconLeft() {
11293
+ if (this.iconLeft) {
11294
+ return x `
11295
+ <kemet-icon class="left" icon="${this.iconLeft}" size="${this.iconSize ? this.iconSize : 16}"></kemet-icon>
11296
+ `;
11297
+ }
11298
+ return null;
11299
+ }
11300
+ /**
11301
+ * Makes a clear icon for search.
11302
+ * @private
11303
+ * @returns {templateResult} A search icon
11304
+ */
11305
+ makeIconClear() {
11306
+ if (this.type === 'search' && this.value !== '') {
11307
+ return x `
11308
+ <kemet-icon class="search right" icon="x-lg" size="${this.iconSize}" @click=${() => this.handleClear()}></kemet-icon>
11309
+ `;
11310
+ }
11311
+ return null;
11312
+ }
11313
+ /**
11314
+ * Makes a password visibility toggle button
11315
+ * @returns {templateResult} A mask or unmask icon
11316
+ */
11317
+ makeVisibilityToggle() {
11318
+ if (this.type === 'password') {
11319
+ return x `<kemet-icon
11320
+ class="eye right"
11321
+ icon="${this.setPasswordIcon()}"
11322
+ @click=${() => this.togglePasswordVisibility()}
11323
+ ></kemet-icon>`;
11324
+ }
11325
+ return null;
11496
11326
  }
11497
- updated() {
11498
- this.percent = this.calculatePercent();
11327
+ setPasswordIcon() {
11328
+ if (this.isPasswordVisible) {
11329
+ return 'eye';
11330
+ }
11331
+ return 'eye-slash';
11499
11332
  }
11500
- render() {
11501
- return x `
11502
- <div class="percentage" part="percentage">
11503
- <span>${this.percent}%</span>
11504
- </div>
11505
- <div>
11506
- <h3 part="filename">${this.name}</h3>
11507
- <span part="loaded">${formatBytes(this.loaded)} / ${formatBytes(this.size)}</span>
11508
- ${this.message ? x `<div class="message" part="message">${this.message}</div>` : null}
11509
- </div>
11510
- <div class="indicator" part="indicator">
11511
- ${this.getStatusIcon()}
11512
- </div>
11513
- `;
11333
+ /**
11334
+ * Handles when the input receives focus
11335
+ * @private
11336
+ */
11337
+ handleFocus() {
11338
+ this.focused = true;
11339
+ emitEvent(this, 'kemet-input-focused', true);
11514
11340
  }
11515
- calculatePercent() {
11516
- const percent = Math.round((this.loaded * 100.0) / this.size);
11517
- return percent > 100 ? 100 : percent;
11341
+ /**
11342
+ * Handles when the input loses focus
11343
+ * @private
11344
+ */
11345
+ handleBlur() {
11346
+ var _a, _b;
11347
+ if (this.validateOnBlur && this.form && !this.form.noValidate) {
11348
+ (_a = this.input) === null || _a === void 0 ? void 0 : _a.checkValidity();
11349
+ this.validity = (_b = this.input) === null || _b === void 0 ? void 0 : _b.validity;
11350
+ }
11351
+ this.focused = false;
11352
+ emitEvent(this, 'kemet-input-focused', false);
11518
11353
  }
11519
- getStatusIcon() {
11520
- if (this.status === 'uploading') {
11521
- return x `<div class="lds-ripple"><div></div><div></div></div>`;
11354
+ /**
11355
+ * Handles when the input changes value
11356
+ * @private
11357
+ */
11358
+ handleChange() {
11359
+ this.value = this.input.value;
11360
+ if (this.input.checkValidity() && this.checkLimitValidity() && this.status !== 'success') {
11361
+ this.invalid = false;
11362
+ this.status = 'standard';
11363
+ this.validity = this.input.validity;
11364
+ emitEvent(this, 'kemet-input-status', {
11365
+ status: 'standard',
11366
+ validity: this.input.validity,
11367
+ element: this,
11368
+ });
11522
11369
  }
11523
- if (this.status === 'complete') {
11524
- return x `<kemet-icon icon="check-circle" size="48"></kemet-icon>`;
11370
+ }
11371
+ /**
11372
+ * Handles when the input receives input
11373
+ * @private
11374
+ */
11375
+ handleInput() {
11376
+ this.value = this.input.value;
11377
+ emitEvent(this, 'kemet-input-input', this.value);
11378
+ }
11379
+ /**
11380
+ * Handles when the input has an error
11381
+ * @private
11382
+ */
11383
+ handleInvalid() {
11384
+ var _a, _b;
11385
+ this.validity = (_a = this.input) === null || _a === void 0 ? void 0 : _a.validity;
11386
+ if (this.validateOnBlur) {
11387
+ this.invalid = true;
11388
+ this.status = 'error';
11389
+ emitEvent(this, 'kemet-input-status', {
11390
+ status: 'error',
11391
+ validity: (_b = this.input) === null || _b === void 0 ? void 0 : _b.validity,
11392
+ element: this,
11393
+ });
11525
11394
  }
11526
- if (this.status === 'error') {
11527
- return x `<kemet-icon icon="exclamation-circle" size="48"></kemet-icon>`;
11395
+ }
11396
+ handleStatus(event) {
11397
+ this.status = event.detail.status;
11398
+ }
11399
+ /**
11400
+ * Toggles password visibility
11401
+ * @private
11402
+ */
11403
+ togglePasswordVisibility() {
11404
+ this.isPasswordVisible = !this.isPasswordVisible;
11405
+ }
11406
+ /**
11407
+ * Handles the clear button for search
11408
+ * @private
11409
+ */
11410
+ handleClear() {
11411
+ this.value = '';
11412
+ emitEvent(this, 'kemet-input-input', this.value);
11413
+ }
11414
+ /**
11415
+ * Checks the validity of the character limit for the count component
11416
+ * @private
11417
+ * @returns {boolean}
11418
+ */
11419
+ checkLimitValidity() {
11420
+ if (this.field) {
11421
+ const count = this.field.querySelector('kemet-count');
11422
+ if (count) {
11423
+ return this.value.length < count.limit;
11424
+ }
11528
11425
  }
11529
- return null;
11426
+ return true;
11427
+ }
11428
+ /**
11429
+ * Checks the validity of the standard input
11430
+ * @public
11431
+ * @returns {boolean}
11432
+ */
11433
+ checkValidity() {
11434
+ var _a;
11435
+ return (_a = this.input) === null || _a === void 0 ? void 0 : _a.checkValidity();
11436
+ }
11437
+ /**
11438
+ * Focuses the standard input
11439
+ * @public
11440
+ */
11441
+ focus() {
11442
+ var _a;
11443
+ (_a = this.input) === null || _a === void 0 ? void 0 : _a.focus();
11530
11444
  }
11531
11445
  };
11532
- KemetUploadFile.styles = [stylesUploadFile, stylesLoaders];
11446
+ KemetInput.styles = [stylesBase];
11533
11447
  __decorate([
11534
11448
  e$4({ type: String })
11535
- ], KemetUploadFile.prototype, "name", void 0);
11449
+ ], KemetInput.prototype, "slug", void 0);
11450
+ __decorate([
11451
+ e$4({ type: String })
11452
+ ], KemetInput.prototype, "name", void 0);
11453
+ __decorate([
11454
+ e$4({ type: String })
11455
+ ], KemetInput.prototype, "placeholder", void 0);
11536
11456
  __decorate([
11537
11457
  e$4({ type: Number })
11538
- ], KemetUploadFile.prototype, "loaded", void 0);
11458
+ ], KemetInput.prototype, "minlength", void 0);
11539
11459
  __decorate([
11540
11460
  e$4({ type: Number })
11541
- ], KemetUploadFile.prototype, "size", void 0);
11461
+ ], KemetInput.prototype, "maxlength", void 0);
11542
11462
  __decorate([
11543
11463
  e$4({ type: String })
11544
- ], KemetUploadFile.prototype, "type", void 0);
11464
+ ], KemetInput.prototype, "min", void 0);
11465
+ __decorate([
11466
+ e$4({ type: String })
11467
+ ], KemetInput.prototype, "max", void 0);
11468
+ __decorate([
11469
+ e$4({ type: Number })
11470
+ ], KemetInput.prototype, "step", void 0);
11471
+ __decorate([
11472
+ e$4({ type: String })
11473
+ ], KemetInput.prototype, "autocomplete", void 0);
11474
+ __decorate([
11475
+ e$4({ type: String })
11476
+ ], KemetInput.prototype, "pattern", void 0);
11477
+ __decorate([
11478
+ e$4({ type: String })
11479
+ ], KemetInput.prototype, "inputmode", void 0);
11480
+ __decorate([
11481
+ e$4({ type: Boolean })
11482
+ ], KemetInput.prototype, "autofocus", void 0);
11483
+ __decorate([
11484
+ e$4({ type: Boolean, reflect: true })
11485
+ ], KemetInput.prototype, "disabled", void 0);
11486
+ __decorate([
11487
+ e$4({ type: Boolean })
11488
+ ], KemetInput.prototype, "readonly", void 0);
11489
+ __decorate([
11490
+ e$4({ type: Boolean, reflect: true })
11491
+ ], KemetInput.prototype, "required", void 0);
11492
+ __decorate([
11493
+ e$4({ type: String })
11494
+ ], KemetInput.prototype, "type", void 0);
11545
11495
  __decorate([
11546
11496
  e$4({ type: String, reflect: true })
11547
- ], KemetUploadFile.prototype, "status", void 0);
11497
+ ], KemetInput.prototype, "value", void 0);
11498
+ __decorate([
11499
+ e$4({ type: Boolean, reflect: true })
11500
+ ], KemetInput.prototype, "invalid", void 0);
11501
+ __decorate([
11502
+ e$4({ type: String, reflect: true })
11503
+ ], KemetInput.prototype, "status", void 0);
11504
+ __decorate([
11505
+ e$4({ type: Boolean, attribute: 'validate-on-blur' })
11506
+ ], KemetInput.prototype, "validateOnBlur", void 0);
11507
+ __decorate([
11508
+ e$4({ type: String, attribute: 'aria-autocomplete' })
11509
+ ], KemetInput.prototype, "ariaAutoComplete", void 0);
11510
+ __decorate([
11511
+ e$4({ type: String, attribute: 'aria-controls' })
11512
+ ], KemetInput.prototype, "ariaControls", void 0);
11513
+ __decorate([
11514
+ e$4({ type: String, attribute: 'aria-activedescendant' })
11515
+ ], KemetInput.prototype, "ariaActiveDescendant", void 0);
11516
+ __decorate([
11517
+ e$4({ type: Boolean, reflect: true })
11518
+ ], KemetInput.prototype, "rounded", void 0);
11519
+ __decorate([
11520
+ e$4({ type: Boolean, reflect: true })
11521
+ ], KemetInput.prototype, "filled", void 0);
11522
+ __decorate([
11523
+ e$4({ type: String, reflect: true, attribute: 'icon-right' })
11524
+ ], KemetInput.prototype, "iconRight", void 0);
11525
+ __decorate([
11526
+ e$4({ type: String, reflect: true, attribute: 'icon-left' })
11527
+ ], KemetInput.prototype, "iconLeft", void 0);
11548
11528
  __decorate([
11549
11529
  e$4({ type: Number })
11550
- ], KemetUploadFile.prototype, "percent", void 0);
11530
+ ], KemetInput.prototype, "iconSize", void 0);
11531
+ __decorate([
11532
+ e$4({ type: Object })
11533
+ ], KemetInput.prototype, "validity", void 0);
11534
+ __decorate([
11535
+ e$4({ type: Boolean })
11536
+ ], KemetInput.prototype, "isPasswordVisible", void 0);
11551
11537
  __decorate([
11552
11538
  e$4({ type: String })
11553
- ], KemetUploadFile.prototype, "message", void 0);
11554
- KemetUploadFile = __decorate([
11555
- e$5('kemet-upload-file')
11556
- ], KemetUploadFile);
11539
+ ], KemetInput.prototype, "inputType", void 0);
11540
+ __decorate([
11541
+ e$4({ type: Boolean, reflect: true })
11542
+ ], KemetInput.prototype, "focused", void 0);
11543
+ __decorate([
11544
+ t$1()
11545
+ ], KemetInput.prototype, "field", void 0);
11546
+ __decorate([
11547
+ t$1()
11548
+ ], KemetInput.prototype, "form", void 0);
11549
+ __decorate([
11550
+ t$1()
11551
+ ], KemetInput.prototype, "input", void 0);
11552
+ KemetInput = __decorate([
11553
+ e$5('kemet-input')
11554
+ ], KemetInput);
11557
11555
 
11558
11556
  const preventDefaults = (event) => {
11559
11557
  event.preventDefault();