kemet-ui 5.0.0 → 5.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 (147) hide show
  1. package/README.md +1 -1
  2. package/custom-elements.json +3355 -3272
  3. package/dist/{constants-W9QKPlZP.d.ts → constants-CHvA2ed5.d.ts} +13 -0
  4. package/dist/elements/accordion/index.d.ts +1 -0
  5. package/dist/elements/accordion/index.js +5 -1
  6. package/dist/elements/accordion/index.js.map +1 -1
  7. package/dist/elements/accordion-panel/index.d.ts +1 -0
  8. package/dist/elements/accordion-panel/index.js +5 -1
  9. package/dist/elements/accordion-panel/index.js.map +1 -1
  10. package/dist/elements/alert/index.d.ts +2 -1
  11. package/dist/elements/alert/index.js +5 -1
  12. package/dist/elements/alert/index.js.map +1 -1
  13. package/dist/elements/avatar/index.d.ts +2 -1
  14. package/dist/elements/avatar/index.js +5 -1
  15. package/dist/elements/avatar/index.js.map +1 -1
  16. package/dist/elements/avatars/index.d.ts +1 -0
  17. package/dist/elements/avatars/index.js +5 -1
  18. package/dist/elements/avatars/index.js.map +1 -1
  19. package/dist/elements/badge/index.d.ts +2 -1
  20. package/dist/elements/badge/index.js +5 -1
  21. package/dist/elements/badge/index.js.map +1 -1
  22. package/dist/elements/button/index.d.ts +2 -1
  23. package/dist/elements/button/index.js +5 -1
  24. package/dist/elements/button/index.js.map +1 -1
  25. package/dist/elements/card/index.d.ts +2 -1
  26. package/dist/elements/card/index.js +5 -1
  27. package/dist/elements/card/index.js.map +1 -1
  28. package/dist/elements/checkbox/index.d.ts +2 -1
  29. package/dist/elements/checkbox/index.js +7 -1
  30. package/dist/elements/checkbox/index.js.map +1 -1
  31. package/dist/elements/combo/index.d.ts +1 -1
  32. package/dist/elements/combo/index.js +5 -1
  33. package/dist/elements/combo/index.js.map +1 -1
  34. package/dist/elements/count/index.d.ts +1 -1
  35. package/dist/elements/count/index.js +28 -1
  36. package/dist/elements/count/index.js.map +1 -1
  37. package/dist/elements/dialog/index.d.ts +2 -1
  38. package/dist/elements/dialog/index.js +5 -1
  39. package/dist/elements/dialog/index.js.map +1 -1
  40. package/dist/elements/dialog-close/index.d.ts +1 -0
  41. package/dist/elements/dialog-close/index.js +5 -1
  42. package/dist/elements/dialog-close/index.js.map +1 -1
  43. package/dist/elements/drawer/effects.js +1 -1
  44. package/dist/elements/drawer/effects.js.map +1 -1
  45. package/dist/elements/drawer/index.d.ts +1 -0
  46. package/dist/elements/drawer/index.js +6 -2
  47. package/dist/elements/drawer/index.js.map +1 -1
  48. package/dist/elements/fab/index.d.ts +2 -1
  49. package/dist/elements/fab/index.js +5 -1
  50. package/dist/elements/fab/index.js.map +1 -1
  51. package/dist/elements/field/index.d.ts +1 -1
  52. package/dist/elements/field/index.js +5 -1
  53. package/dist/elements/field/index.js.map +1 -1
  54. package/dist/elements/flipcard/index.d.ts +2 -1
  55. package/dist/elements/flipcard/index.js +5 -1
  56. package/dist/elements/flipcard/index.js.map +1 -1
  57. package/dist/elements/flipcard-trigger/index.d.ts +1 -0
  58. package/dist/elements/flipcard-trigger/index.js +5 -1
  59. package/dist/elements/flipcard-trigger/index.js.map +1 -1
  60. package/dist/elements/icon/index.d.ts +2 -1
  61. package/dist/elements/icon/index.js +8 -2
  62. package/dist/elements/icon/index.js.map +1 -1
  63. package/dist/elements/input/index.d.ts +1 -1
  64. package/dist/elements/input/index.js +9 -3
  65. package/dist/elements/input/index.js.map +1 -1
  66. package/dist/elements/input/styles.css.js +2 -2
  67. package/dist/elements/input/styles.css.js.map +1 -1
  68. package/dist/elements/input-combo/index.d.ts +2 -1
  69. package/dist/elements/input-combo/index.js +7 -1
  70. package/dist/elements/input-combo/index.js.map +1 -1
  71. package/dist/elements/input-file/index.d.ts +1 -1
  72. package/dist/elements/input-file/index.js +39 -249
  73. package/dist/elements/input-file/index.js.map +1 -1
  74. package/dist/elements/input-file/styles.css.js +8 -8
  75. package/dist/elements/input-file/styles.css.js.map +1 -1
  76. package/dist/elements/input-files/index.d.ts +1 -1
  77. package/dist/elements/input-files/index.js +29 -237
  78. package/dist/elements/input-files/index.js.map +1 -1
  79. package/dist/elements/input-files/styles.css.js +2 -2
  80. package/dist/elements/input-files/styles.css.js.map +1 -1
  81. package/dist/elements/input-otp/index.d.ts +1 -0
  82. package/dist/elements/input-otp/index.js +5 -1
  83. package/dist/elements/input-otp/index.js.map +1 -1
  84. package/dist/elements/loader/index.d.ts +1 -0
  85. package/dist/elements/loader/index.js +5 -1
  86. package/dist/elements/loader/index.js.map +1 -1
  87. package/dist/elements/password/index.d.ts +2 -2
  88. package/dist/elements/password/index.js +24 -234
  89. package/dist/elements/password/index.js.map +1 -1
  90. package/dist/elements/radio/index.d.ts +1 -0
  91. package/dist/elements/radio/index.js +7 -1
  92. package/dist/elements/radio/index.js.map +1 -1
  93. package/dist/elements/radios/index.d.ts +2 -1
  94. package/dist/elements/radios/index.js +5 -1
  95. package/dist/elements/radios/index.js.map +1 -1
  96. package/dist/elements/rotator/index.d.ts +1 -0
  97. package/dist/elements/rotator/index.js +7 -2
  98. package/dist/elements/rotator/index.js.map +1 -1
  99. package/dist/elements/select/index.d.ts +2 -1
  100. package/dist/elements/select/index.js +28 -25
  101. package/dist/elements/select/index.js.map +1 -1
  102. package/dist/elements/select-option/index.d.ts +1 -0
  103. package/dist/elements/select-option/index.js +7 -1
  104. package/dist/elements/select-option/index.js.map +1 -1
  105. package/dist/elements/sortable/index.d.ts +1 -0
  106. package/dist/elements/sortable/index.js +7 -1
  107. package/dist/elements/sortable/index.js.map +1 -1
  108. package/dist/elements/sortable-item/index.d.ts +1 -0
  109. package/dist/elements/sortable-item/index.js +5 -1
  110. package/dist/elements/sortable-item/index.js.map +1 -1
  111. package/dist/elements/tab/index.d.ts +1 -1
  112. package/dist/elements/tab/index.js +18 -228
  113. package/dist/elements/tab/index.js.map +1 -1
  114. package/dist/elements/tab-panel/index.d.ts +1 -0
  115. package/dist/elements/tab-panel/index.js +5 -1
  116. package/dist/elements/tab-panel/index.js.map +1 -1
  117. package/dist/elements/tabs/index.d.ts +3 -2
  118. package/dist/elements/tabs/index.js +44 -246
  119. package/dist/elements/tabs/index.js.map +1 -1
  120. package/dist/elements/textarea/index.d.ts +1 -1
  121. package/dist/elements/textarea/index.js +9 -3
  122. package/dist/elements/textarea/index.js.map +1 -1
  123. package/dist/elements/textarea/styles.css.js +2 -2
  124. package/dist/elements/textarea/styles.css.js.map +1 -1
  125. package/dist/elements/timer/index.d.ts +1 -0
  126. package/dist/elements/timer/index.js +11 -7
  127. package/dist/elements/timer/index.js.map +1 -1
  128. package/dist/elements/timer-display/index.d.ts +1 -1
  129. package/dist/elements/timer-display/index.js +19 -16
  130. package/dist/elements/timer-display/index.js.map +1 -1
  131. package/dist/elements/toggle/index.d.ts +1 -0
  132. package/dist/elements/toggle/index.js +5 -1
  133. package/dist/elements/toggle/index.js.map +1 -1
  134. package/dist/elements/tracker/index.d.ts +1 -2
  135. package/dist/elements/tracker/index.js +10 -19
  136. package/dist/elements/tracker/index.js.map +1 -1
  137. package/dist/elements/tracker-step/index.d.ts +1 -2
  138. package/dist/elements/tracker-step/index.js +46 -240
  139. package/dist/elements/tracker-step/index.js.map +1 -1
  140. package/dist/elements/typewriter/index.d.ts +1 -0
  141. package/dist/elements/typewriter/index.js +7 -1
  142. package/dist/elements/typewriter/index.js.map +1 -1
  143. package/dist/{index-h1DTXXCf.d.ts → index-n43o0UmE.d.ts} +13 -7
  144. package/dist/wrappers/react.d.ts +2 -2
  145. package/dist/wrappers/react.js +489 -491
  146. package/dist/wrappers/react.js.map +1 -1
  147. package/package.json +2 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/tracker/index.ts","../../../src/elements/tracker/styles.css.ts","../../../src/utilities/events.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport type KemetTrackerStep from '../tracker-step';\nimport styles from './styles.css.ts';\nimport { emitEvent } from '../../utilities/events';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @prop {number} total - The total number of steps\n * @prop {string} breakpoint - The point at which the tracker goes from mobile to standard * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @fires kemet-tracker-mounted - Fired when the tracker is mounted to the DOM\n * @detail {HTMLElement} element - The tracker element\n *\n */\n\n@customElement('kemet-tracker')\nexport default class KemetTracker extends LitElement {\n static styles = [styles];\n\n @property({ type: Number })\n total!: number;\n\n @property({ type: String })\n breakpoint!: string;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n @state()\n steps!: NodeListOf<KemetTrackerStep>;\n\n constructor() {\n super();\n this.breakpoint = '767px';\n }\n\n firstUpdated() {\n // elements\n this.steps = this.querySelectorAll('kemet-tracker-step');\n\n // methods exe\n this.isMobile();\n\n // events\n window.addEventListener('resize', () => {\n this.isMobile();\n });\n\n emitEvent(this, 'kemet-tracker-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`<slot @slotchange=${() => this.handleSlotChange()}></slot>`;\n }\n\n handleSlotChange() {\n this.total = this.steps.length;\n\n this.steps.forEach((step, index) => {\n step.step = index + 1;\n if (step.step === this.total) {\n step.last = true;\n }\n });\n }\n\n isMobile() {\n const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);\n\n this.steps.forEach((step) => {\n step.mobile = mediaQuery.matches;\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker': KemetTracker\n }\n}\n","import { css } from 'lit';\n\nexport default css`:host {\n display: flex;\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n}\n`;\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,MAAM,kBAA6B;AAC5C,SAAS,eAAe,UAAU,aAAa;;;ACD/C,SAAS,WAAW;AAEpB,IAAO,qBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACFR,IAAM,YAAY,CAAC,SAAS,MAAM,QAAQ,UAAU,MAAM,WAAW,SAAS;AACnF,UAAQ;AAAA,IACN,IAAI,YAAY,MAAM,EAAE,SAAS,UAAU,OAAO,CAAC;AAAA,EACrD;AACF;;;AFkBA,IAAqB,eAArB,cAA0C,WAAW;AAAA,EAkBnD,cAAc;AACZ,UAAM;AANR,eAAc;AAOZ,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,eAAe;AAEb,SAAK,QAAQ,KAAK,iBAAiB,oBAAoB;AAGvD,SAAK,SAAS;AAGd,WAAO,iBAAiB,UAAU,MAAM;AACtC,WAAK,SAAS;AAAA,IAChB,CAAC;AAED,cAAU,MAAM,yBAAyB;AAAA,MACvC,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,SAAS;AACP,WAAO,yBAAyB,MAAM,KAAK,iBAAiB,CAAC;AAAA,EAC/D;AAAA,EAEA,mBAAmB;AACjB,SAAK,QAAQ,KAAK,MAAM;AAExB,SAAK,MAAM,QAAQ,CAAC,MAAM,UAAU;AAClC,WAAK,OAAO,QAAQ;AACpB,UAAI,KAAK,SAAS,KAAK,OAAO;AAC5B,aAAK,OAAO;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,WAAW;AACT,UAAM,aAAa,OAAO,WAAW,eAAe,KAAK,UAAU,GAAG;AAEtE,SAAK,MAAM,QAAQ,CAAC,SAAS;AAC3B,WAAK,SAAS,WAAW;AAAA,IAC3B,CAAC;AAAA,EACH;AACF;AAnEqB,aACZ,SAAS,CAAC,kBAAM;AAGvB;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHP,aAInB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GANP,aAOnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GATtB,aAUnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAZtB,aAanB;AAGA;AAAA,EADC,MAAM;AAAA,GAfY,aAgBnB;AAhBmB,eAArB;AAAA,EADC,cAAc,eAAe;AAAA,GACT;","names":[]}
1
+ {"version":3,"sources":["../../../src/elements/tracker/index.ts","../../../src/utilities/decorators.ts","../../../src/elements/tracker/styles.css.ts","../../../src/utilities/events.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from '../../utilities/decorators';\nimport type KemetTrackerStep from '../tracker-step';\nimport styles from './styles.css.ts';\nimport { emitEvent } from '../../utilities/events';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-tracker\n * @summary A tracker for a multi step process\n * @ssrsafe yes\n *\n * @prop {number} total - The total number of steps\n * @prop {string} breakpoint - The point at which the tracker goes from mobile to standard * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @fires kemet-tracker-mounted - Fired when the tracker is mounted to the DOM\n * @detail {HTMLElement} element - The tracker element\n *\n */\n\n@customElement('kemet-tracker')\nexport default class KemetTracker extends LitElement {\n static styles = [styles];\n\n @property({ type: Number })\n total?: number;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n @state()\n steps!: NodeListOf<KemetTrackerStep>;\n\n firstUpdated() {\n this.initializeSteps();\n emitEvent(this, 'kemet-tracker-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`<slot @slotchange=${() => this.initializeSteps()}></slot>`;\n }\n\n initializeSteps() {\n this.steps = this.querySelectorAll('kemet-tracker-step');\n this.total = this.steps.length;\n\n this.steps.forEach((step, index) => {\n step.step = index + 1;\n if (step.step === this.total) {\n step.last = true;\n }\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker': KemetTracker\n }\n}\n","export { property, state, query, queryAll } from 'lit/decorators.js';\nimport { customElement as litCustomElement } from 'lit/decorators.js';\n\n/**\n * A drop-in replacement for lit's `customElement` decorator that is safe under\n * hot-module-replacement / live-reload environments where the module may be\n * re-evaluated.\n */\nexport const customElement = (tagName: string) => (classOrDescriptor: any) =>\n typeof customElements !== 'undefined' && !customElements.get(tagName)\n ? litCustomElement(tagName)(classOrDescriptor)\n : classOrDescriptor;\n","import { css } from 'lit';\n\nexport default css`:host {\n display: flex;\n justify-content: center;\n align-items: flex-start;\n width: 100%;\n}\n`;\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,MAAM,kBAAkB;;;ACAjC,SAAS,UAAU,OAAO,OAAO,gBAAgB;AACjD,SAAS,iBAAiB,wBAAwB;AAO3C,IAAM,gBAAgB,CAAC,YAAoB,CAAC,sBACjD,OAAO,mBAAmB,eAAe,CAAC,eAAe,IAAI,OAAO,IAChE,iBAAiB,OAAO,EAAE,iBAAiB,IAC3C;;;ACXN,SAAS,WAAW;AAEpB,IAAO,qBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACFR,IAAM,YAAY,CAAC,SAAS,MAAM,QAAQ,UAAU,MAAM,WAAW,SAAS;AACnF,UAAQ;AAAA,IACN,IAAI,YAAY,MAAM,EAAE,SAAS,UAAU,OAAO,CAAC;AAAA,EACrD;AACF;;;AHsBA,IAAqB,eAArB,cAA0C,WAAW;AAAA,EAArD;AAAA;AAUE,eAAc;AAAA;AAAA,EAKd,eAAe;AACb,SAAK,gBAAgB;AACrB,cAAU,MAAM,yBAAyB;AAAA,MACvC,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,SAAS;AACP,WAAO,yBAAyB,MAAM,KAAK,gBAAgB,CAAC;AAAA,EAC9D;AAAA,EAEA,kBAAkB;AAChB,SAAK,QAAQ,KAAK,iBAAiB,oBAAoB;AACvD,SAAK,QAAQ,KAAK,MAAM;AAExB,SAAK,MAAM,QAAQ,CAAC,MAAM,UAAU;AAClC,WAAK,OAAO,QAAQ;AACpB,UAAI,KAAK,SAAS,KAAK,OAAO;AAC5B,aAAK,OAAO;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH;AACF;AA1CqB,aACZ,SAAS,CAAC,kBAAM;AAGvB;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAHP,aAInB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GANtB,aAOnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GATtB,aAUnB;AAGA;AAAA,EADC,MAAM;AAAA,GAZY,aAanB;AAbmB,eAArB;AAAA,EADC,cAAc,eAAe;AAAA,GACT;","names":[]}
@@ -1,4 +1,3 @@
1
1
  import 'lit-html';
2
2
  import 'lit';
3
- export { a as default } from '../../index-h1DTXXCf.js';
4
- import '../icon/index.js';
3
+ export { a as default } from '../../index-n43o0UmE.js';
@@ -10,8 +10,12 @@ var __decorateClass = (decorators, target, key, kind) => {
10
10
  };
11
11
 
12
12
  // src/elements/tracker-step/index.ts
13
- import { html as html2, LitElement as LitElement2 } from "lit";
14
- import { customElement as customElement2, property as property2, state as state2 } from "lit/decorators.js";
13
+ import { html, LitElement } from "lit";
14
+
15
+ // src/utilities/decorators.ts
16
+ import { property, state, query, queryAll } from "lit/decorators.js";
17
+ import { customElement as litCustomElement } from "lit/decorators.js";
18
+ var customElement = (tagName) => (classOrDescriptor) => typeof customElements !== "undefined" && !customElements.get(tagName) ? litCustomElement(tagName)(classOrDescriptor) : classOrDescriptor;
15
19
 
16
20
  // src/utilities/events.ts
17
21
  var emitEvent = (element, name, detail, bubbles = true, composed = true) => {
@@ -20,223 +24,9 @@ var emitEvent = (element, name, detail, bubbles = true, composed = true) => {
20
24
  );
21
25
  };
22
26
 
23
- // src/elements/icon/index.ts
24
- import { html, LitElement } from "lit";
25
- import { customElement, property, state } from "lit/decorators.js";
26
- import { isTemplateResult } from "lit/directive-helpers.js";
27
-
28
- // src/elements/icon/styles.css.ts
27
+ // src/elements/tracker-step/styles.css.ts
29
28
  import { css } from "lit";
30
29
  var styles_css_default = css`:host {
31
- display: inline-flex;
32
- align-items: center;
33
- justify-content: center;
34
- color: inherit;
35
- }
36
- `;
37
-
38
- // src/elements/icon/index.ts
39
- var CACHEABLE_ERROR = /* @__PURE__ */ Symbol();
40
- var RETRYABLE_ERROR = /* @__PURE__ */ Symbol();
41
- var parser;
42
- var iconCache = /* @__PURE__ */ new Map();
43
- var MAX_CONCURRENT_REQUESTS = 10;
44
- var requestQueue = [];
45
- var activeRequests = 0;
46
- function queueRequest(callback) {
47
- if (activeRequests < MAX_CONCURRENT_REQUESTS) {
48
- activeRequests++;
49
- callback();
50
- } else {
51
- requestQueue.push(callback);
52
- }
53
- }
54
- function requestComplete() {
55
- activeRequests--;
56
- if (requestQueue.length > 0) {
57
- const nextRequest = requestQueue.shift();
58
- if (nextRequest) {
59
- activeRequests++;
60
- nextRequest();
61
- }
62
- }
63
- }
64
- var KemetIcon = class extends LitElement {
65
- constructor() {
66
- super(...arguments);
67
- this.name = "house";
68
- this.library = "bootstrap";
69
- this.family = "regular";
70
- this.size = 16;
71
- this.dom = "initializing";
72
- this.svg = null;
73
- this.url = "https://unpkg.com/bootstrap-icons@latest/icons";
74
- /** @internal */
75
- this.isVisible = false;
76
- }
77
- connectedCallback() {
78
- super.connectedCallback();
79
- this.updateUrl();
80
- if (!this.svg) {
81
- this.isVisible = true;
82
- this.setIcon();
83
- }
84
- }
85
- updated() {
86
- this.updateUrl();
87
- this.updateSize();
88
- }
89
- firstUpdated() {
90
- emitEvent(this, "kemet-icon-mounted", {
91
- bubbles: true,
92
- composed: true,
93
- detail: {
94
- element: this
95
- }
96
- });
97
- this.dom = "mounted";
98
- }
99
- render() {
100
- if (this.svg) {
101
- return this.svg;
102
- }
103
- if (!this.isVisible) {
104
- this.isVisible = true;
105
- this.setIcon();
106
- }
107
- return html`<svg part="svg" width="${this.size}" height="${this.size}" viewBox="0 0 16 16"></svg>`;
108
- }
109
- /** Public method to force icon loading */
110
- loadIcon() {
111
- this.isVisible = true;
112
- this.setIcon();
113
- }
114
- async setIcon() {
115
- if (!this.isVisible) return;
116
- let iconResolver = iconCache.get(`${this.family}/${this.name}`);
117
- if (!iconResolver) {
118
- iconResolver = this.resolveIcon();
119
- iconCache.set(`${this.family}/${this.name}`, iconResolver);
120
- }
121
- const svg = await iconResolver;
122
- if (svg === RETRYABLE_ERROR) {
123
- iconCache.delete(`${this.family}/${this.name}`);
124
- }
125
- if (isTemplateResult(svg)) {
126
- this.svg = svg;
127
- } else if (svg instanceof SVGSVGElement) {
128
- this.svg = svg.cloneNode(true);
129
- }
130
- }
131
- updateUrl() {
132
- switch (this.library) {
133
- case "fontawesome" /* FONTAWESOME */:
134
- this.version = this.version || "7.3.1";
135
- this.url = `https://unpkg.com/@fortawesome/fontawesome-free@${this.version}/svgs`;
136
- break;
137
- case "bootstrap" /* BOOTSTRAP */:
138
- this.version = this.version || "1.11.3";
139
- this.url = `https://unpkg.com/bootstrap-icons@${this.version}/icons`;
140
- break;
141
- }
142
- }
143
- async resolveIcon() {
144
- return new Promise((resolve) => {
145
- queueRequest(async () => {
146
- let fileData;
147
- let fetchURL = `${this.url}/${this.family}/${this.name}.svg`;
148
- switch (this.library) {
149
- case "fontawesome" /* FONTAWESOME */:
150
- fetchURL = `${this.url}/${this.family}/${this.name}.svg`;
151
- break;
152
- case "bootstrap" /* BOOTSTRAP */:
153
- fetchURL = `${this.url}/${this.name}.svg`;
154
- break;
155
- }
156
- try {
157
- fileData = await fetch(fetchURL);
158
- if (!fileData.ok) {
159
- requestComplete();
160
- resolve(fileData.status === 410 ? CACHEABLE_ERROR : RETRYABLE_ERROR);
161
- return;
162
- }
163
- } catch {
164
- requestComplete();
165
- resolve(RETRYABLE_ERROR);
166
- return;
167
- }
168
- try {
169
- const div = document.createElement("div");
170
- div.innerHTML = await fileData.text();
171
- const svg = div.firstElementChild;
172
- if (svg?.tagName?.toLowerCase() !== "svg") {
173
- requestComplete();
174
- resolve(CACHEABLE_ERROR);
175
- return;
176
- }
177
- if (!parser) parser = new DOMParser();
178
- const doc = parser.parseFromString(svg.outerHTML, "text/html");
179
- const svgEl = doc.body.querySelector("svg");
180
- if (!svgEl) {
181
- requestComplete();
182
- resolve(CACHEABLE_ERROR);
183
- return;
184
- }
185
- svgEl.part.add("svg");
186
- svgEl.setAttribute("width", `${this.size}px`);
187
- svgEl.setAttribute("height", `${this.size}px`);
188
- requestComplete();
189
- resolve(document.adoptNode(svgEl));
190
- } catch {
191
- requestComplete();
192
- resolve(CACHEABLE_ERROR);
193
- }
194
- });
195
- });
196
- }
197
- updateSize() {
198
- if (this.svg) {
199
- const svg = this.svg;
200
- svg.setAttribute("width", `${this.size}px`);
201
- svg.setAttribute("height", `${this.size}px`);
202
- }
203
- }
204
- };
205
- KemetIcon.styles = [styles_css_default];
206
- __decorateClass([
207
- property({ type: String })
208
- ], KemetIcon.prototype, "name", 2);
209
- __decorateClass([
210
- property({ type: String })
211
- ], KemetIcon.prototype, "library", 2);
212
- __decorateClass([
213
- property({ type: String })
214
- ], KemetIcon.prototype, "family", 2);
215
- __decorateClass([
216
- property({ type: Number })
217
- ], KemetIcon.prototype, "size", 2);
218
- __decorateClass([
219
- property({ type: String })
220
- ], KemetIcon.prototype, "version", 2);
221
- __decorateClass([
222
- property({ type: String, reflect: true })
223
- ], KemetIcon.prototype, "polarity", 2);
224
- __decorateClass([
225
- property({ type: String, reflect: true })
226
- ], KemetIcon.prototype, "dom", 2);
227
- __decorateClass([
228
- state()
229
- ], KemetIcon.prototype, "svg", 2);
230
- __decorateClass([
231
- state()
232
- ], KemetIcon.prototype, "url", 2);
233
- KemetIcon = __decorateClass([
234
- customElement("kemet-icon")
235
- ], KemetIcon);
236
-
237
- // src/elements/tracker-step/styles.css.ts
238
- import { css as css2 } from "lit";
239
- var styles_css_default2 = css2`:host {
240
30
  --kemet-tracker-step-dot-size: 50px;
241
31
  --kemet-tracker-step-dot-size-mobile: 25px;
242
32
  --kemet-tracker-step-dot-gap: 4px;
@@ -357,15 +147,21 @@ var styles_css_default2 = css2`:host {
357
147
  `;
358
148
 
359
149
  // src/elements/tracker-step/index.ts
360
- var KemetTrackerStep = class extends LitElement2 {
150
+ var KemetTrackerStep = class extends LitElement {
361
151
  constructor() {
362
152
  super(...arguments);
153
+ this.breakpoint = "767px";
363
154
  this.completedSize = 16;
155
+ this.total = 0;
364
156
  this.dom = "initializing";
365
157
  }
366
158
  firstUpdated() {
367
- this.tracker = this.closest("kemet-tracker");
368
- emitEvent(this, "kemet-button-mounted", {
159
+ this.last = this.step === this.total;
160
+ this.isMobile();
161
+ window.addEventListener("resize", () => {
162
+ this.isMobile();
163
+ });
164
+ emitEvent(this, "kemet-tracker-step-mounted", {
369
165
  bubbles: true,
370
166
  composed: true,
371
167
  detail: {
@@ -375,7 +171,7 @@ var KemetTrackerStep = class extends LitElement2 {
375
171
  this.dom = "mounted";
376
172
  }
377
173
  render() {
378
- return html2`
174
+ return html`
379
175
  ${this.makeLine()}
380
176
  ${this.makeCompletedLine()}
381
177
  <div class="dot" part="dot">${this.makeDotContent()}</div>
@@ -384,75 +180,85 @@ var KemetTrackerStep = class extends LitElement2 {
384
180
  }
385
181
  makeLine() {
386
182
  if (!this.last) {
387
- return html2`<div class="line" part="line"></div>`;
183
+ return html`<div class="line" part="line"></div>`;
388
184
  }
389
185
  return null;
390
186
  }
391
187
  makeCompletedLine() {
392
188
  if (this.completed && !this.last) {
393
- return html2`<div class="line completed" part="completed-line" @animationend=${() => this.handleCompletedLineEnd()}></div>`;
189
+ return html`<div class="line completed" part="completed-line" @animationend=${() => this.handleCompletedLineEnd()}></div>`;
394
190
  }
395
191
  return null;
396
192
  }
397
193
  makeDotContent() {
398
194
  if (this.completed && !this.mobile && !this.hideDotContent) {
399
- return html2`
195
+ return html`
400
196
  <kemet-icon name="check2" size=${this.completedSize}></kemet-icon>
401
197
  `;
402
198
  }
403
199
  if (!this.mobile && !this.hideDotContent) {
404
- return html2`
405
- <span>${this.step}/${this.tracker?.total}</span>
200
+ return html`
201
+ <span>${this.step}/${this.total}</span>
406
202
  `;
407
203
  }
408
204
  return null;
409
205
  }
410
206
  makeSlotContent() {
411
207
  if (!this.mobile) {
412
- return html2`<slot></slot>`;
208
+ return html`<slot></slot>`;
413
209
  }
414
210
  return null;
415
211
  }
416
212
  handleCompletedLineEnd() {
417
- const currentDot = this.tracker?.querySelector("[current]")?.shadowRoot?.querySelector(".dot");
213
+ const currentDot = this.current ? this.shadowRoot?.querySelector(".dot") : null;
418
214
  if (currentDot) {
419
215
  currentDot.classList.add("animate");
420
216
  }
421
217
  }
218
+ isMobile() {
219
+ const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);
220
+ this.mobile = mediaQuery.matches;
221
+ }
422
222
  };
423
- KemetTrackerStep.styles = [styles_css_default2];
223
+ KemetTrackerStep.styles = [styles_css_default];
424
224
  __decorateClass([
425
- property2({ type: Number })
225
+ property({ type: Number })
426
226
  ], KemetTrackerStep.prototype, "step", 2);
427
227
  __decorateClass([
428
- property2({ type: Boolean, reflect: true })
228
+ property({ type: Boolean, reflect: true })
429
229
  ], KemetTrackerStep.prototype, "completed", 2);
430
230
  __decorateClass([
431
- property2({ type: Boolean, reflect: true })
231
+ property({ type: Boolean, reflect: true })
432
232
  ], KemetTrackerStep.prototype, "current", 2);
433
233
  __decorateClass([
434
- property2({ type: Boolean, reflect: true })
234
+ property({ type: Boolean, reflect: true })
435
235
  ], KemetTrackerStep.prototype, "last", 2);
436
236
  __decorateClass([
437
- property2({ type: Boolean, reflect: true })
237
+ property({ type: String })
238
+ ], KemetTrackerStep.prototype, "breakpoint", 2);
239
+ __decorateClass([
240
+ property({ type: Boolean, reflect: true })
438
241
  ], KemetTrackerStep.prototype, "mobile", 2);
439
242
  __decorateClass([
440
- property2({ type: Boolean, reflect: true, attribute: "hide-dot-content" })
243
+ property({ type: Boolean, reflect: true, attribute: "hide-dot-content" })
441
244
  ], KemetTrackerStep.prototype, "hideDotContent", 2);
442
245
  __decorateClass([
443
- property2({ type: Number })
246
+ property({ type: Number })
444
247
  ], KemetTrackerStep.prototype, "completedSize", 2);
445
248
  __decorateClass([
446
- property2({ type: String, reflect: true })
249
+ property({ type: Number })
250
+ ], KemetTrackerStep.prototype, "total", 2);
251
+ __decorateClass([
252
+ property({ type: String, reflect: true })
447
253
  ], KemetTrackerStep.prototype, "polarity", 2);
448
254
  __decorateClass([
449
- property2({ type: String, reflect: true })
255
+ property({ type: String, reflect: true })
450
256
  ], KemetTrackerStep.prototype, "dom", 2);
451
257
  __decorateClass([
452
- state2()
258
+ state()
453
259
  ], KemetTrackerStep.prototype, "tracker", 2);
454
260
  KemetTrackerStep = __decorateClass([
455
- customElement2("kemet-tracker-step")
261
+ customElement("kemet-tracker-step")
456
262
  ], KemetTrackerStep);
457
263
  export {
458
264
  KemetTrackerStep as default
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/tracker-step/index.ts","../../../src/utilities/events.ts","../../../src/elements/icon/index.ts","../../../src/elements/icon/styles.css.ts","../../../src/elements/tracker-step/styles.css.ts"],"sourcesContent":["import { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { emitEvent } from '../../utilities/events';\nimport HTMLKemetTrackerElement from '../tracker';\nimport '../icon';\nimport styles from './styles.css.ts';\n/**\n *\n * @since 1.2.0\n * @status stable\n *\n * @tagname kemet-tracker-step\n * @summary A step in the Tracker\n *\n * @prop {number} step - The current step number\n * @prop {boolean} completed - Determines whether a step renders as complete\n * @prop {boolean} current - Determines whether a step renders as the current step\n * @prop {boolean} last - Is automatically added to the last step\n * @prop {boolean} mobile - Determines if a step should render as mobile\n * @prop {boolean} hideDotContent - Hides the label inside of a dot\n * @prop {number} completedSize - The icon size for the completed check mark\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @cssproperty --kemet-tracker-step-dot-font-size - The font size.\n * @cssproperty --kemet-tracker-step-dot-color - The text color.\n * @cssproperty --kemet-tracker-step-dot-border - Border around a dot.\n * @cssproperty --kemet-tracker-step-dot-size - Width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-size-mobile - Mobile width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-gap - Space between a dot and connector line.\n * @cssproperty --kemet-tracker-step-dot-transition - Transition of a dot.\n * @cssproperty --kemet-tracker-step-dot-fill-color - Fill color of a dot.\n * @cssproperty --kemet-tracker-step-dot-background-color - Color of the background a dot is on.\n * @cssproperty --kemet-tracker-step-current-color - Current dot text color.\n * @cssproperty --kemet-tracker-step-current-fill-color - Current dot fill color.\n * @cssproperty --kemet-tracker-step-completed-color - Text color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-fill-color - Background color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-line-color - Completed connector line color.\n * @cssproperty --kemet-tracker-step-completed-line-weight - Completed line weight.\n * @cssproperty --kemet-tracker-step-standard-line-weight - Standard line weight.\n *\n * @csspart dot - The container for the dot.\n * @csspart line - A connector line from dot to dot.\n * @csspart completed-line - A completed connector line.\n *\n * @fires kemet-tracker-step-mounted - Fired when the tracker step is mounted to the DOM\n * @detail {HTMLElement} element - The tracker step element\n *\n */\n\n@customElement('kemet-tracker-step')\nexport default class KemetTrackerStep extends LitElement {\n static styles = [styles];\n\n @property({ type: Number })\n step!: number;\n\n @property({ type: Boolean, reflect: true })\n completed!: boolean;\n\n @property({ type: Boolean, reflect: true })\n current!: boolean;\n\n @property({ type: Boolean, reflect: true })\n last!: boolean;\n\n @property({ type: Boolean, reflect: true })\n mobile!: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-dot-content' })\n hideDotContent!: boolean;\n\n @property({ type: Number })\n completedSize: number = 16;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n\n\n @state()\n tracker!: HTMLKemetTrackerElement;\n\n firstUpdated() {\n this.tracker = this.closest('kemet-tracker') as HTMLKemetTrackerElement;\n emitEvent(this, 'kemet-button-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`\n ${this.makeLine()}\n ${this.makeCompletedLine()}\n <div class=\"dot\" part=\"dot\">${this.makeDotContent()}</div>\n ${this.makeSlotContent()}\n `;\n }\n\n makeLine() {\n if (!this.last) {\n return html`<div class=\"line\" part=\"line\"></div>`;\n }\n\n return null;\n }\n\n makeCompletedLine() {\n if (this.completed && !this.last) {\n return html`<div class=\"line completed\" part=\"completed-line\" @animationend=${() => this.handleCompletedLineEnd()}></div>`;\n }\n\n return null;\n }\n\n makeDotContent() {\n if (this.completed && !this.mobile && !this.hideDotContent) {\n return html`\n <kemet-icon name=\"check2\" size=${this.completedSize}></kemet-icon>\n `;\n }\n\n if (!this.mobile && !this.hideDotContent) {\n return html`\n <span>${this.step}/${this.tracker?.total}</span>\n `;\n }\n\n return null;\n }\n\n makeSlotContent() {\n if (!this.mobile) {\n return html`<slot></slot>`;\n }\n\n return null;\n }\n\n handleCompletedLineEnd() {\n const currentDot = this.tracker?.querySelector('[current]')?.shadowRoot?.querySelector('.dot');\n\n if (currentDot) {\n currentDot.classList.add('animate');\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker-step': KemetTrackerStep\n }\n}\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n","import { html, HTMLTemplateResult, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { isTemplateResult } from 'lit/directive-helpers.js';\nimport { emitEvent } from '../../utilities/events';\nimport styles from './styles.css.ts';\n\nconst CACHEABLE_ERROR = Symbol();\nconst RETRYABLE_ERROR = Symbol();\ntype SVGResult = HTMLTemplateResult | SVGSVGElement | typeof RETRYABLE_ERROR | typeof CACHEABLE_ERROR;\n\nlet parser: DOMParser;\nconst iconCache = new Map<string, Promise<SVGResult>>();\n\n// Request queue with concurrency limit\nconst MAX_CONCURRENT_REQUESTS = 10;\nconst requestQueue: Array<() => void> = [];\nlet activeRequests = 0;\n\nfunction queueRequest(callback: () => void) {\n if (activeRequests < MAX_CONCURRENT_REQUESTS) {\n activeRequests++;\n callback();\n } else {\n requestQueue.push(callback);\n }\n}\n\nfunction requestComplete() {\n activeRequests--;\n if (requestQueue.length > 0) {\n const nextRequest = requestQueue.shift();\n if (nextRequest) {\n activeRequests++;\n nextRequest();\n }\n }\n}\n\nexport enum EnumLibrary {\n FONTAWESOME = 'fontawesome',\n BOOTSTRAP = 'bootstrap',\n}\n\n/**\n * @since 5.0.0\n * @status stable\n *\n * @tagname kemet-icon\n * @summary An element that represents an icon from a predefined set of open sourced icons.\n *\n * @prop {string} name - The name of the icon to reference.\n * @prop {string} library - The library of icons to use. Values include: (bootstrap | fontawesome)\n * @prop {string} family - The family of icons to use. The family is relative to the library being used. Font awesome values include: (regular | solid | brand)\n * @prop {string} version - The version of the icon library to use. Use latest to grab the most recent version.\n * @prop {number} size - The width and height of the icon in pixels.\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @fires kemet-icon-mounted - Fired when the icon is mounted to the DOM\n * @detail {HTMLElement} element - The icon element\n *\n */\n\n@customElement('kemet-icon')\nexport default class KemetIcon extends LitElement {\n static styles = [styles];\n\n @property({ type: String })\n name: string = 'house';\n\n @property({ type: String })\n library: string = 'bootstrap';\n\n @property({ type: String })\n family: string = 'regular';\n\n @property({ type: Number })\n size: number = 16;\n\n @property({ type: String })\n version?: string;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n /** @internal */\n @state()\n private svg: SVGElement | HTMLTemplateResult | null = null;\n\n /** @internal */\n @state()\n private url: string = 'https://unpkg.com/bootstrap-icons@latest/icons';\n\n /** @internal */\n private isVisible: boolean = false;\n\n connectedCallback() {\n super.connectedCallback();\n // Load icon when connected to DOM\n this.updateUrl();\n if (!this.svg) {\n this.isVisible = true;\n this.setIcon();\n }\n }\n\n updated() {\n this.updateUrl();\n this.updateSize();\n }\n\n firstUpdated() {\n emitEvent(this, 'kemet-icon-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n // Return the svg if it's loaded, otherwise show placeholder\n if (this.svg) {\n return this.svg;\n }\n\n // If not loaded, trigger loading\n if (!this.isVisible) {\n this.isVisible = true;\n this.setIcon();\n }\n\n return html`<svg part=\"svg\" width=\"${this.size}\" height=\"${this.size}\" viewBox=\"0 0 16 16\"></svg>`;\n }\n\n /** Public method to force icon loading */\n public loadIcon() {\n this.isVisible = true;\n this.setIcon();\n }\n\n async setIcon() {\n if (!this.isVisible) return;\n\n let iconResolver = iconCache.get(`${this.family}/${this.name}`);\n\n if (!iconResolver) {\n iconResolver = this.resolveIcon();\n iconCache.set(`${this.family}/${this.name}`, iconResolver);\n }\n\n const svg = await iconResolver;\n\n if (svg === RETRYABLE_ERROR) {\n iconCache.delete(`${this.family}/${this.name}`);\n }\n\n if (isTemplateResult(svg)) {\n this.svg = svg;\n } else if (svg instanceof SVGSVGElement) {\n // Clone the SVG so each icon instance gets its own copy\n this.svg = svg.cloneNode(true) as SVGSVGElement;\n }\n }\n\n private updateUrl() {\n switch (this.library) {\n case EnumLibrary.FONTAWESOME:\n this.version = this.version || '7.3.1';\n this.url = `https://unpkg.com/@fortawesome/fontawesome-free@${this.version}/svgs`;\n break;\n case EnumLibrary.BOOTSTRAP:\n this.version = this.version || '1.11.3';\n this.url = `https://unpkg.com/bootstrap-icons@${this.version}/icons`;\n break;\n }\n }\n\n private async resolveIcon(): Promise<SVGResult> {\n return new Promise((resolve) => {\n queueRequest(async () => {\n let fileData: Response;\n let fetchURL: string = `${this.url}/${this.family}/${this.name}.svg`;\n\n switch (this.library) {\n case EnumLibrary.FONTAWESOME:\n fetchURL = `${this.url}/${this.family}/${this.name}.svg`;\n break;\n case EnumLibrary.BOOTSTRAP:\n fetchURL = `${this.url}/${this.name}.svg`;\n break;\n }\n\n try {\n fileData = await fetch(fetchURL);\n if (!fileData.ok) {\n requestComplete();\n resolve(fileData.status === 410 ? CACHEABLE_ERROR : RETRYABLE_ERROR);\n return;\n }\n } catch {\n requestComplete();\n resolve(RETRYABLE_ERROR);\n return;\n }\n\n try {\n const div = document.createElement('div');\n div.innerHTML = await fileData.text();\n\n const svg = div.firstElementChild;\n if (svg?.tagName?.toLowerCase() !== 'svg') {\n requestComplete();\n resolve(CACHEABLE_ERROR);\n return;\n }\n\n if (!parser) parser = new DOMParser();\n const doc = parser.parseFromString(svg.outerHTML, 'text/html');\n\n const svgEl = doc.body.querySelector('svg');\n if (!svgEl) {\n requestComplete();\n resolve(CACHEABLE_ERROR);\n return;\n }\n\n svgEl.part.add('svg');\n svgEl.setAttribute('width', `${this.size}px`);\n svgEl.setAttribute('height', `${this.size}px`);\n\n requestComplete();\n resolve(document.adoptNode(svgEl));\n } catch {\n requestComplete();\n resolve(CACHEABLE_ERROR);\n }\n });\n });\n }\n\n private updateSize() {\n if (this.svg) {\n const svg = this.svg as SVGElement;\n svg.setAttribute('width', `${this.size}px`);\n svg.setAttribute('height', `${this.size}px`);\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-icon': KemetIcon\n }\n}\n","import { css } from 'lit';\n\nexport default css`:host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n}\n`;\n","import { css } from 'lit';\n\nexport default css`:host {\n --kemet-tracker-step-dot-size: 50px;\n --kemet-tracker-step-dot-size-mobile: 25px;\n --kemet-tracker-step-dot-gap: 4px;\n --kemet-tracker-step-dot-transition: all 300ms ease-in-out;\n --kemet-tracker-step-dot-font-size: 90%;\n --kemet-tracker-step-dot-color: var(--kemet-color-font-active);\n --kemet-tracker-step-dot-background-color: var(--kemet-color-background-base);\n --kemet-tracker-step-dot-border: 1px solid var(--kemet-color-font-active);\n --kemet-tracker-step-dot-fill-color: transparent;\n --kemet-tracker-step-standard-line-weight: 1px;\n --kemet-tracker-step-completed-line-weight: 3px;\n --kemet-tracker-step-completed-color: var(--kemet-color-background-base);\n --kemet-tracker-step-completed-fill-color: var(--kemet-color-background-success);\n --kemet-tracker-step-current-color: var(--kemet-color-font-inverse-base);\n --kemet-tracker-step-current-fill-color: var(--kemet-color-font-active);\n --kemet-tracker-step-line-color: var(--kemet-color-font-active);\n --kemet-tracker-step-completed-line-color: var(--kemet-color-font-active);\n\n position: relative;\n width: 100%;\n text-align: center;\n }\n\n .dot {\n font-size: var(--kemet-tracker-step-dot-font-size);\n color: var(--kemet-tracker-step-dot-color);\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto;\n position: relative;\n z-index: 1;\n width: var(--kemet-tracker-step-dot-size);\n height: var(--kemet-tracker-step-dot-size);\n border-radius: 100%;\n transition: var(--kemet-tracker-step-dot-transition);\n background-color: var(--kemet-tracker-step-dot-background-color);\n }\n\n .dot::after {\n content: \"\";\n width: unset;\n height: unset;\n position: absolute;\n top: var(--kemet-tracker-step-dot-gap);\n left: var(--kemet-tracker-step-dot-gap);\n right: var(--kemet-tracker-step-dot-gap);\n bottom: var(--kemet-tracker-step-dot-gap);\n z-index: -1;\n border-radius: 100%;\n transition: var(--kemet-tracker-step-dot-transition);\n border: var(--kemet-tracker-step-dot-border);\n background-color: var(--kemet-tracker-step-dot-fill-color);\n }\n\n :host([completed]) .dot {\n color: var(--kemet-tracker-step-completed-color);\n }\n\n :host([completed]) .dot::after {\n border: 0;\n background-color: var(--kemet-tracker-step-completed-fill-color);\n }\n\n :host([current]) .dot.animate {\n color: var(--kemet-tracker-step-current-color);\n }\n\n :host([current]) .dot.animate::after {\n border: 0;\n background-color: var(--kemet-tracker-step-current-fill-color);\n }\n\n :host([mobile]) .dot {\n width: var(--kemet-tracker-step-dot-size-mobile);\n height: var(--kemet-tracker-step-dot-size-mobile);\n }\n\n .line {\n display: block;\n position: absolute;\n left: 50%;\n right: 0;\n bottom: 0;\n width: 100%;\n\n /* standard */\n top: calc((var(--kemet-tracker-step-dot-size) - var(--kemet-tracker-step-standard-line-weight)) / 2);\n height: var(--kemet-tracker-step-standard-line-weight);\n background-color: var(--kemet-tracker-step-line-color);\n }\n\n .line.completed {\n width: 100%;\n transform: scaleX(0);\n transform-origin: left center;\n top: calc((var(--kemet-tracker-step-dot-size) - var(--kemet-tracker-step-completed-line-weight)) / 2);\n height: var(--kemet-tracker-step-completed-line-weight);\n background-color: var(--kemet-tracker-step-completed-line-color);\n animation-name: grow;\n animation-delay: 1s;\n animation-duration: 600ms;\n animation-fill-mode: forwards;\n }\n\n :host([mobile]) .line {\n top: calc((var(--kemet-tracker-step-dot-size-mobile) - var(--kemet-tracker-step-standard-line-weight)) / 2);\n }\n\n :host([mobile]) .line.completed {\n top: calc((var(--kemet-tracker-step-dot-size-mobile) - var(--kemet-tracker-step-completed-line-weight)) / 2);\n }\n\n @keyframes grow {\n from { transform: scaleX(0); }\n to { transform: scaleX(1); }\n }\n`;\n"],"mappings":"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","names":["html","LitElement","customElement","property","state","css","styles_css_default","LitElement","html","styles_css_default","property","state","customElement"]}
1
+ {"version":3,"sources":["../../../src/elements/tracker-step/index.ts","../../../src/utilities/decorators.ts","../../../src/utilities/events.ts","../../../src/elements/tracker-step/styles.css.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property, state } from '../../utilities/decorators';\nimport { emitEvent } from '../../utilities/events';\nimport HTMLKemetTrackerElement from '../tracker';\nimport styles from './styles.css.ts';\n\n/**\n *\n * @since 1.2.0\n * @status stable\n\n * @tagname kemet-tracker-step\n * @summary A step in the Tracker\n * @ssrsafe yes\n *\n * @prop {number} step - The current step number\n * @prop {boolean} completed - Determines whether a step renders as complete\n * @prop {boolean} current - Determines whether a step renders as the current step\n * @prop {boolean} last - Is automatically added to the last step\n * @prop {string} breakpoint - The breakpoint to use for mobile rendering\n * @prop {boolean} mobile - Determines if a step should render as mobile\n * @prop {boolean} hideDotContent - Hides the label inside of a dot\n * @prop {number} completedSize - The icon size for the completed check mark\n * @prop {number} total - The total number of steps\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @cssproperty --kemet-tracker-step-dot-font-size - The font size.\n * @cssproperty --kemet-tracker-step-dot-color - The text color.\n * @cssproperty --kemet-tracker-step-dot-border - Border around a dot.\n * @cssproperty --kemet-tracker-step-dot-size - Width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-size-mobile - Mobile width and height of a dot.\n * @cssproperty --kemet-tracker-step-dot-gap - Space between a dot and connector line.\n * @cssproperty --kemet-tracker-step-dot-transition - Transition of a dot.\n * @cssproperty --kemet-tracker-step-dot-fill-color - Fill color of a dot.\n * @cssproperty --kemet-tracker-step-dot-background-color - Color of the background a dot is on.\n * @cssproperty --kemet-tracker-step-current-color - Current dot text color.\n * @cssproperty --kemet-tracker-step-current-fill-color - Current dot fill color.\n * @cssproperty --kemet-tracker-step-completed-color - Text color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-fill-color - Background color of a completed dot.\n * @cssproperty --kemet-tracker-step-completed-line-color - Completed connector line color.\n * @cssproperty --kemet-tracker-step-completed-line-weight - Completed line weight.\n * @cssproperty --kemet-tracker-step-standard-line-weight - Standard line weight.\n *\n * @csspart dot - The container for the dot.\n * @csspart line - A connector line from dot to dot.\n * @csspart completed-line - A completed connector line.\n *\n * @fires kemet-tracker-step-mounted - Fired when the tracker step is mounted to the DOM\n * @detail {HTMLElement} element - The tracker step element\n *\n */\n\n@customElement('kemet-tracker-step')\nexport default class KemetTrackerStep extends LitElement {\n static styles = [styles];\n\n @property({ type: Number})\n step!: number;\n\n @property({ type: Boolean, reflect: true })\n completed!: boolean;\n\n @property({ type: Boolean, reflect: true })\n current!: boolean;\n\n @property({ type: Boolean, reflect: true })\n last!: boolean;\n\n @property({ type: String })\n breakpoint: string = '767px';\n\n @property({ type: Boolean, reflect: true })\n mobile!: boolean;\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-dot-content' })\n hideDotContent!: boolean;\n\n @property({ type: Number })\n completedSize: number = 16;\n\n @property({ type: Number })\n total: number = 0;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n\n\n @state()\n tracker!: HTMLKemetTrackerElement;\n\n firstUpdated() {\n this.last = this.step === this.total;\n\n this.isMobile();\n\n window.addEventListener('resize', () => {\n this.isMobile();\n });\n\n emitEvent(this, 'kemet-tracker-step-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n render() {\n return html`\n ${this.makeLine()}\n ${this.makeCompletedLine()}\n <div class=\"dot\" part=\"dot\">${this.makeDotContent()}</div>\n ${this.makeSlotContent()}\n `;\n }\n\n makeLine() {\n if (!this.last) {\n return html`<div class=\"line\" part=\"line\"></div>`;\n }\n\n return null;\n }\n\n makeCompletedLine() {\n if (this.completed && !this.last) {\n return html`<div class=\"line completed\" part=\"completed-line\" @animationend=${() => this.handleCompletedLineEnd()}></div>`;\n }\n\n return null;\n }\n\n makeDotContent() {\n if (this.completed && !this.mobile && !this.hideDotContent) {\n return html`\n <kemet-icon name=\"check2\" size=${this.completedSize}></kemet-icon>\n `;\n }\n\n if (!this.mobile && !this.hideDotContent) {\n return html`\n <span>${this.step}/${this.total}</span>\n `;\n }\n\n return null;\n }\n\n makeSlotContent() {\n if (!this.mobile) {\n return html`<slot></slot>`;\n }\n\n return null;\n }\n\n handleCompletedLineEnd() {\n const currentDot = this.current ? this.shadowRoot?.querySelector('.dot') : null;\n\n if (currentDot) {\n currentDot.classList.add('animate');\n }\n }\n\n isMobile() {\n const mediaQuery = window.matchMedia(`(max-width: ${this.breakpoint})`);\n this.mobile = mediaQuery.matches;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-tracker-step': KemetTrackerStep\n }\n}\n","export { property, state, query, queryAll } from 'lit/decorators.js';\nimport { customElement as litCustomElement } from 'lit/decorators.js';\n\n/**\n * A drop-in replacement for lit's `customElement` decorator that is safe under\n * hot-module-replacement / live-reload environments where the module may be\n * re-evaluated.\n */\nexport const customElement = (tagName: string) => (classOrDescriptor: any) =>\n typeof customElements !== 'undefined' && !customElements.get(tagName)\n ? litCustomElement(tagName)(classOrDescriptor)\n : classOrDescriptor;\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n","import { css } from 'lit';\n\nexport default css`:host {\n --kemet-tracker-step-dot-size: 50px;\n --kemet-tracker-step-dot-size-mobile: 25px;\n --kemet-tracker-step-dot-gap: 4px;\n --kemet-tracker-step-dot-transition: all 300ms ease-in-out;\n --kemet-tracker-step-dot-font-size: 90%;\n --kemet-tracker-step-dot-color: var(--kemet-color-font-active);\n --kemet-tracker-step-dot-background-color: var(--kemet-color-background-base);\n --kemet-tracker-step-dot-border: 1px solid var(--kemet-color-font-active);\n --kemet-tracker-step-dot-fill-color: transparent;\n --kemet-tracker-step-standard-line-weight: 1px;\n --kemet-tracker-step-completed-line-weight: 3px;\n --kemet-tracker-step-completed-color: var(--kemet-color-background-base);\n --kemet-tracker-step-completed-fill-color: var(--kemet-color-background-success);\n --kemet-tracker-step-current-color: var(--kemet-color-font-inverse-base);\n --kemet-tracker-step-current-fill-color: var(--kemet-color-font-active);\n --kemet-tracker-step-line-color: var(--kemet-color-font-active);\n --kemet-tracker-step-completed-line-color: var(--kemet-color-font-active);\n\n position: relative;\n width: 100%;\n text-align: center;\n }\n\n .dot {\n font-size: var(--kemet-tracker-step-dot-font-size);\n color: var(--kemet-tracker-step-dot-color);\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto;\n position: relative;\n z-index: 1;\n width: var(--kemet-tracker-step-dot-size);\n height: var(--kemet-tracker-step-dot-size);\n border-radius: 100%;\n transition: var(--kemet-tracker-step-dot-transition);\n background-color: var(--kemet-tracker-step-dot-background-color);\n }\n\n .dot::after {\n content: \"\";\n width: unset;\n height: unset;\n position: absolute;\n top: var(--kemet-tracker-step-dot-gap);\n left: var(--kemet-tracker-step-dot-gap);\n right: var(--kemet-tracker-step-dot-gap);\n bottom: var(--kemet-tracker-step-dot-gap);\n z-index: -1;\n border-radius: 100%;\n transition: var(--kemet-tracker-step-dot-transition);\n border: var(--kemet-tracker-step-dot-border);\n background-color: var(--kemet-tracker-step-dot-fill-color);\n }\n\n :host([completed]) .dot {\n color: var(--kemet-tracker-step-completed-color);\n }\n\n :host([completed]) .dot::after {\n border: 0;\n background-color: var(--kemet-tracker-step-completed-fill-color);\n }\n\n :host([current]) .dot.animate {\n color: var(--kemet-tracker-step-current-color);\n }\n\n :host([current]) .dot.animate::after {\n border: 0;\n background-color: var(--kemet-tracker-step-current-fill-color);\n }\n\n :host([mobile]) .dot {\n width: var(--kemet-tracker-step-dot-size-mobile);\n height: var(--kemet-tracker-step-dot-size-mobile);\n }\n\n .line {\n display: block;\n position: absolute;\n left: 50%;\n right: 0;\n bottom: 0;\n width: 100%;\n\n /* standard */\n top: calc((var(--kemet-tracker-step-dot-size) - var(--kemet-tracker-step-standard-line-weight)) / 2);\n height: var(--kemet-tracker-step-standard-line-weight);\n background-color: var(--kemet-tracker-step-line-color);\n }\n\n .line.completed {\n width: 100%;\n transform: scaleX(0);\n transform-origin: left center;\n top: calc((var(--kemet-tracker-step-dot-size) - var(--kemet-tracker-step-completed-line-weight)) / 2);\n height: var(--kemet-tracker-step-completed-line-weight);\n background-color: var(--kemet-tracker-step-completed-line-color);\n animation-name: grow;\n animation-delay: 1s;\n animation-duration: 600ms;\n animation-fill-mode: forwards;\n }\n\n :host([mobile]) .line {\n top: calc((var(--kemet-tracker-step-dot-size-mobile) - var(--kemet-tracker-step-standard-line-weight)) / 2);\n }\n\n :host([mobile]) .line.completed {\n top: calc((var(--kemet-tracker-step-dot-size-mobile) - var(--kemet-tracker-step-completed-line-weight)) / 2);\n }\n\n @keyframes grow {\n from { transform: scaleX(0); }\n to { transform: scaleX(1); }\n }\n`;\n"],"mappings":"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","names":[]}
@@ -7,6 +7,7 @@ import { LitElement, PropertyValues } from 'lit';
7
7
  *
8
8
  * @tagname kemet-typewriter
9
9
  * @summary An element that types out content.
10
+ * @ssrsafe no - Depends on client-side effect library
10
11
  *
11
12
  * @prop {string} content - The content to be typed.
12
13
  * @prop {number} delay - The delay between each character.
@@ -11,7 +11,13 @@ var __decorateClass = (decorators, target, key, kind) => {
11
11
 
12
12
  // src/elements/typewriter/index.ts
13
13
  import { html, LitElement } from "lit";
14
- import { customElement, property } from "lit/decorators.js";
14
+
15
+ // src/utilities/decorators.ts
16
+ import { property, state, query, queryAll } from "lit/decorators.js";
17
+ import { customElement as litCustomElement } from "lit/decorators.js";
18
+ var customElement = (tagName) => (classOrDescriptor) => typeof customElements !== "undefined" && !customElements.get(tagName) ? litCustomElement(tagName)(classOrDescriptor) : classOrDescriptor;
19
+
20
+ // src/elements/typewriter/index.ts
15
21
  import Typewriter from "typewriter-effect/dist/core";
16
22
 
17
23
  // src/utilities/events.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/typewriter/index.ts","../../../src/utilities/events.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport Typewriter from 'typewriter-effect/dist/core';\nimport { emitEvent } from '../../utilities/events';\n\n/**\n * @since 4.1.0\n * @status stable\n *\n * @tagname kemet-typewriter\n * @summary An element that types out content.\n *\n * @prop {string} content - The content to be typed.\n * @prop {number} delay - The delay between each character.\n * @prop {string} cursor - The cursor to be displayed.\n * @prop {boolean} loop - Whether to loop the content.\n * @prop {number} restartDelay - The delay before restarting the typewriter.\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @event kemet-typewriter-completed - Fires when typewriter is completed\n *\n * @fires kemet-typewriter-mounted - Fired when the typewriter is mounted to the DOM\n * @detail {HTMLElement} element - The typewriter element\n *\n */\n\n@customElement('kemet-typewriter')\nexport default class KemetTypewriter extends LitElement {\n @property({ type: String })\n content: string = '';\n\n @property({ type: Number })\n delay: number = 10;\n\n @property({ type: String })\n cursor: string = '';\n\n @property({ type: Boolean })\n loop: boolean = false;\n\n @property({ type: Number, attribute: 'restart-delay' })\n restartDelay: number = 1000;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n private typewriter!: Typewriter;\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n createRenderRoot() {\n return this;\n }\n\n firstUpdated() {\n const target = this.querySelector('kemet-typewriter-target') as HTMLElement;\n\n this.typewriter = new Typewriter(target, {\n cursor: this.cursor,\n loop: this.loop,\n delay: this.delay,\n });\n\n this.restartTypewriter();\n\n emitEvent(this, 'kemet-typewriter-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n updated(changedProperties: PropertyValues<this>) {\n if (\n changedProperties.has('content') ||\n changedProperties.has('delay') ||\n changedProperties.has('cursor') ||\n changedProperties.has('loop')\n ) {\n const target = this.querySelector('kemet-typewriter-target') as HTMLElement;\n\n if (this.typewriter) {\n this.typewriter.stop();\n }\n\n this.typewriter = new Typewriter(target, {\n cursor: this.cursor,\n loop: this.loop,\n delay: this.delay,\n });\n\n this.restartTypewriter();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n\n if (this.typewriter) {\n this.typewriter.stop();\n }\n }\n\n render() {\n return html`\n <kemet-typewriter-target></kemet-typewriter-target>\n `;\n }\n\n restartTypewriter() {\n if (!this.typewriter) return;\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n\n this.timeoutId = setTimeout(() => {\n this.typewriter\n .deleteAll(1)\n .typeString(this.content)\n .callFunction(() => {\n emitEvent(this, 'kemet-typewriter-completed', { element: this });\n })\n .start();\n }, this.restartDelay);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-typewriter': KemetTypewriter;\n }\n}\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n"],"mappings":";;;;;;;;;;;;AAAA,SAAS,MAAM,kBAAkC;AACjD,SAAS,eAAe,gBAAgB;AACxC,OAAO,gBAAgB;;;ACFhB,IAAM,YAAY,CAAC,SAAS,MAAM,QAAQ,UAAU,MAAM,WAAW,SAAS;AACnF,UAAQ;AAAA,IACN,IAAI,YAAY,MAAM,EAAE,SAAS,UAAU,OAAO,CAAC;AAAA,EACrD;AACF;;;ADwBA,IAAqB,kBAArB,cAA6C,WAAW;AAAA,EAAxD;AAAA;AAEE,mBAAkB;AAGlB,iBAAgB;AAGhB,kBAAiB;AAGjB,gBAAgB;AAGhB,wBAAuB;AAMvB,eAAc;AAGd,SAAQ,YAAkD;AAAA;AAAA,EAE1D,mBAAmB;AACjB,WAAO;AAAA,EACT;AAAA,EAEA,eAAe;AACb,UAAM,SAAS,KAAK,cAAc,yBAAyB;AAE3D,SAAK,aAAa,IAAI,WAAW,QAAQ;AAAA,MACvC,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IACd,CAAC;AAED,SAAK,kBAAkB;AAEvB,cAAU,MAAM,4BAA4B;AAAA,MAC1C,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AACD,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,QAAQ,mBAAyC;AAC/C,QACE,kBAAkB,IAAI,SAAS,KAC/B,kBAAkB,IAAI,OAAO,KAC7B,kBAAkB,IAAI,QAAQ,KAC9B,kBAAkB,IAAI,MAAM,GAC5B;AACA,YAAM,SAAS,KAAK,cAAc,yBAAyB;AAE3D,UAAI,KAAK,YAAY;AACnB,aAAK,WAAW,KAAK;AAAA,MACvB;AAEA,WAAK,aAAa,IAAI,WAAW,QAAQ;AAAA,QACvC,QAAQ,KAAK;AAAA,QACb,MAAM,KAAK;AAAA,QACX,OAAO,KAAK;AAAA,MACd,CAAC;AAED,WAAK,kBAAkB;AAAA,IACzB;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,UAAM,qBAAqB;AAE3B,QAAI,KAAK,WAAW;AAClB,mBAAa,KAAK,SAAS;AAC3B,WAAK,YAAY;AAAA,IACnB;AAEA,QAAI,KAAK,YAAY;AACnB,WAAK,WAAW,KAAK;AAAA,IACvB;AAAA,EACF;AAAA,EAEA,SAAS;AACP,WAAO;AAAA;AAAA;AAAA,EAGT;AAAA,EAEA,oBAAoB;AAClB,QAAI,CAAC,KAAK,WAAY;AAEtB,QAAI,KAAK,WAAW;AAClB,mBAAa,KAAK,SAAS;AAAA,IAC7B;AAEA,SAAK,YAAY,WAAW,MAAM;AAChC,WAAK,WACF,UAAU,CAAC,EACX,WAAW,KAAK,OAAO,EACvB,aAAa,MAAM;AAClB,kBAAU,MAAM,8BAA8B,EAAE,SAAS,KAAK,CAAC;AAAA,MACjE,CAAC,EACA,MAAM;AAAA,IACX,GAAG,KAAK,YAAY;AAAA,EACtB;AACF;AA3GE;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GADP,gBAEnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAJP,gBAKnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,OAAO,CAAC;AAAA,GAPP,gBAQnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,GAVR,gBAWnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB,CAAC;AAAA,GAbnC,gBAcnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAhBtB,gBAiBnB;AAGA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,KAAK,CAAC;AAAA,GAnBtB,gBAoBnB;AApBmB,kBAArB;AAAA,EADC,cAAc,kBAAkB;AAAA,GACZ;","names":[]}
1
+ {"version":3,"sources":["../../../src/elements/typewriter/index.ts","../../../src/utilities/decorators.ts","../../../src/utilities/events.ts"],"sourcesContent":["import { html, LitElement, PropertyValues } from 'lit';\nimport { customElement, property } from '../../utilities/decorators';\nimport Typewriter from 'typewriter-effect/dist/core';\nimport { emitEvent } from '../../utilities/events';\n\n/**\n * @since 4.1.0\n * @status stable\n *\n * @tagname kemet-typewriter\n * @summary An element that types out content.\n * @ssrsafe no - Depends on client-side effect library\n *\n * @prop {string} content - The content to be typed.\n * @prop {number} delay - The delay between each character.\n * @prop {string} cursor - The cursor to be displayed.\n * @prop {boolean} loop - Whether to loop the content.\n * @prop {number} restartDelay - The delay before restarting the typewriter.\n * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background\n * @prop {string} dom - The status of dom initalization.\n *\n * @event kemet-typewriter-completed - Fires when typewriter is completed\n *\n * @fires kemet-typewriter-mounted - Fired when the typewriter is mounted to the DOM\n * @detail {HTMLElement} element - The typewriter element\n *\n */\n\n@customElement('kemet-typewriter')\nexport default class KemetTypewriter extends LitElement {\n @property({ type: String })\n content: string = '';\n\n @property({ type: Number })\n delay: number = 10;\n\n @property({ type: String })\n cursor: string = '';\n\n @property({ type: Boolean })\n loop: boolean = false;\n\n @property({ type: Number, attribute: 'restart-delay' })\n restartDelay: number = 1000;\n\n @property({ type: String, reflect: true })\n polarity?: 'light' | 'dark';\n\n @property({ type: String, reflect: true })\n dom: string = 'initializing';\n\n private typewriter!: Typewriter;\n private timeoutId: ReturnType<typeof setTimeout> | null = null;\n\n createRenderRoot() {\n return this;\n }\n\n firstUpdated() {\n const target = this.querySelector('kemet-typewriter-target') as HTMLElement;\n\n this.typewriter = new Typewriter(target, {\n cursor: this.cursor,\n loop: this.loop,\n delay: this.delay,\n });\n\n this.restartTypewriter();\n\n emitEvent(this, 'kemet-typewriter-mounted', {\n bubbles: true,\n composed: true,\n detail: {\n element: this,\n },\n });\n this.dom = 'mounted';\n }\n\n updated(changedProperties: PropertyValues<this>) {\n if (\n changedProperties.has('content') ||\n changedProperties.has('delay') ||\n changedProperties.has('cursor') ||\n changedProperties.has('loop')\n ) {\n const target = this.querySelector('kemet-typewriter-target') as HTMLElement;\n\n if (this.typewriter) {\n this.typewriter.stop();\n }\n\n this.typewriter = new Typewriter(target, {\n cursor: this.cursor,\n loop: this.loop,\n delay: this.delay,\n });\n\n this.restartTypewriter();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n\n if (this.typewriter) {\n this.typewriter.stop();\n }\n }\n\n render() {\n return html`\n <kemet-typewriter-target></kemet-typewriter-target>\n `;\n }\n\n restartTypewriter() {\n if (!this.typewriter) return;\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n\n this.timeoutId = setTimeout(() => {\n this.typewriter\n .deleteAll(1)\n .typeString(this.content)\n .callFunction(() => {\n emitEvent(this, 'kemet-typewriter-completed', { element: this });\n })\n .start();\n }, this.restartDelay);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kemet-typewriter': KemetTypewriter;\n }\n}\n","export { property, state, query, queryAll } from 'lit/decorators.js';\nimport { customElement as litCustomElement } from 'lit/decorators.js';\n\n/**\n * A drop-in replacement for lit's `customElement` decorator that is safe under\n * hot-module-replacement / live-reload environments where the module may be\n * re-evaluated.\n */\nexport const customElement = (tagName: string) => (classOrDescriptor: any) =>\n typeof customElements !== 'undefined' && !customElements.get(tagName)\n ? litCustomElement(tagName)(classOrDescriptor)\n : classOrDescriptor;\n","export const emitEvent = (element, name, detail, bubbles = true, composed = true) => {\n element.dispatchEvent(\n new CustomEvent(name, { bubbles, composed, detail }),\n );\n};\n"],"mappings":"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","names":[]}
@@ -1,23 +1,25 @@
1
1
  import * as lit_html from 'lit-html';
2
2
  import * as lit from 'lit';
3
3
  import { LitElement } from 'lit';
4
- import './elements/icon/index.js';
5
4
 
6
5
  /**
7
6
  *
8
7
  * @since 1.2.0
9
8
  * @status stable
10
- *
9
+
11
10
  * @tagname kemet-tracker-step
12
11
  * @summary A step in the Tracker
12
+ * @ssrsafe yes
13
13
  *
14
14
  * @prop {number} step - The current step number
15
15
  * @prop {boolean} completed - Determines whether a step renders as complete
16
16
  * @prop {boolean} current - Determines whether a step renders as the current step
17
17
  * @prop {boolean} last - Is automatically added to the last step
18
+ * @prop {string} breakpoint - The breakpoint to use for mobile rendering
18
19
  * @prop {boolean} mobile - Determines if a step should render as mobile
19
20
  * @prop {boolean} hideDotContent - Hides the label inside of a dot
20
21
  * @prop {number} completedSize - The icon size for the completed check mark
22
+ * @prop {number} total - The total number of steps
21
23
  * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background
22
24
  * @prop {string} dom - The status of dom initalization.
23
25
  *
@@ -52,9 +54,11 @@ declare class KemetTrackerStep extends LitElement {
52
54
  completed: boolean;
53
55
  current: boolean;
54
56
  last: boolean;
57
+ breakpoint: string;
55
58
  mobile: boolean;
56
59
  hideDotContent: boolean;
57
60
  completedSize: number;
61
+ total: number;
58
62
  polarity?: 'light' | 'dark';
59
63
  dom: string;
60
64
  tracker: KemetTracker;
@@ -65,6 +69,7 @@ declare class KemetTrackerStep extends LitElement {
65
69
  makeDotContent(): lit_html.TemplateResult<1> | null;
66
70
  makeSlotContent(): lit_html.TemplateResult<1> | null;
67
71
  handleCompletedLineEnd(): void;
72
+ isMobile(): void;
68
73
  }
69
74
  declare global {
70
75
  interface HTMLElementTagNameMap {
@@ -77,6 +82,10 @@ declare global {
77
82
  * @since 1.2.0
78
83
  * @status stable
79
84
  *
85
+ * @tagname kemet-tracker
86
+ * @summary A tracker for a multi step process
87
+ * @ssrsafe yes
88
+ *
80
89
  * @prop {number} total - The total number of steps
81
90
  * @prop {string} breakpoint - The point at which the tracker goes from mobile to standard * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background
82
91
  * @prop {'light' | 'dark'} polarity - Determines if the component has a dark or light background
@@ -88,16 +97,13 @@ declare global {
88
97
  */
89
98
  declare class KemetTracker extends LitElement {
90
99
  static styles: lit.CSSResult[];
91
- total: number;
92
- breakpoint: string;
100
+ total?: number;
93
101
  polarity?: 'light' | 'dark';
94
102
  dom: string;
95
103
  steps: NodeListOf<KemetTrackerStep>;
96
- constructor();
97
104
  firstUpdated(): void;
98
105
  render(): lit_html.TemplateResult<1>;
99
- handleSlotChange(): void;
100
- isMobile(): void;
106
+ initializeSteps(): void;
101
107
  }
102
108
  declare global {
103
109
  interface HTMLElementTagNameMap {