@sondor-technology/sondor-components 1.0.1-develop.13 → 1.0.1-develop.15

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 (266) hide show
  1. package/dist/components/alert/alert.constants.d.ts +3 -0
  2. package/dist/components/alert/alert.constants.d.ts.map +1 -0
  3. package/dist/components/alert/alert.constants.js +2 -0
  4. package/dist/components/alert/alert.constants.js.map +1 -0
  5. package/dist/components/alert/alert.d.ts +4 -3
  6. package/dist/components/alert/alert.d.ts.map +1 -1
  7. package/dist/components/alert/alert.js +21 -11
  8. package/dist/components/alert/alert.js.map +1 -0
  9. package/dist/components/badge/badge.constants.d.ts +3 -0
  10. package/dist/components/badge/badge.constants.d.ts.map +1 -0
  11. package/dist/components/badge/badge.constants.js +2 -0
  12. package/dist/components/badge/badge.constants.js.map +1 -0
  13. package/dist/components/badge/badge.d.ts +1 -1
  14. package/dist/components/badge/badge.d.ts.map +1 -1
  15. package/dist/components/badge/badge.js +3 -2
  16. package/dist/components/badge/badge.js.map +1 -0
  17. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  18. package/dist/components/breadcrumb/breadcrumb.js +2 -1
  19. package/dist/components/breadcrumb/breadcrumb.js.map +1 -0
  20. package/dist/components/button/button.constants.d.ts +7 -0
  21. package/dist/components/button/button.constants.d.ts.map +1 -0
  22. package/dist/components/button/button.constants.js +4 -0
  23. package/dist/components/button/button.constants.js.map +1 -0
  24. package/dist/components/button/button.d.ts +8 -4
  25. package/dist/components/button/button.d.ts.map +1 -1
  26. package/dist/components/button/button.js +181 -137
  27. package/dist/components/button/button.js.map +1 -0
  28. package/dist/components/button-group/button-group.d.ts +1 -0
  29. package/dist/components/button-group/button-group.d.ts.map +1 -1
  30. package/dist/components/button-group/button-group.js +17 -21
  31. package/dist/components/button-group/button-group.js.map +1 -0
  32. package/dist/components/calendar/calendar.d.ts +36 -0
  33. package/dist/components/calendar/calendar.d.ts.map +1 -0
  34. package/dist/components/calendar/calendar.js +439 -0
  35. package/dist/components/calendar/calendar.js.map +1 -0
  36. package/dist/components/checkbox/checkbox.constants.d.ts +3 -0
  37. package/dist/components/checkbox/checkbox.constants.d.ts.map +1 -0
  38. package/dist/components/checkbox/checkbox.constants.js +2 -0
  39. package/dist/components/checkbox/checkbox.constants.js.map +1 -0
  40. package/dist/components/checkbox/checkbox.d.ts +5 -1
  41. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  42. package/dist/components/checkbox/checkbox.js +21 -5
  43. package/dist/components/checkbox/checkbox.js.map +1 -0
  44. package/dist/components/code-block/code-block.d.ts +7 -7
  45. package/dist/components/code-block/code-block.d.ts.map +1 -1
  46. package/dist/components/code-block/code-block.js +130 -66
  47. package/dist/components/code-block/code-block.js.map +1 -0
  48. package/dist/components/content-card/content-card.d.ts.map +1 -1
  49. package/dist/components/content-card/content-card.js +10 -15
  50. package/dist/components/content-card/content-card.js.map +1 -0
  51. package/dist/components/cron-builder/cron-builder.d.ts +34 -0
  52. package/dist/components/cron-builder/cron-builder.d.ts.map +1 -0
  53. package/dist/components/cron-builder/cron-builder.js +456 -0
  54. package/dist/components/cron-builder/cron-builder.js.map +1 -0
  55. package/dist/components/divider/divider.constants.d.ts +5 -0
  56. package/dist/components/divider/divider.constants.d.ts.map +1 -0
  57. package/dist/components/divider/divider.constants.js +3 -0
  58. package/dist/components/divider/divider.constants.js.map +1 -0
  59. package/dist/components/divider/divider.d.ts +4 -2
  60. package/dist/components/divider/divider.d.ts.map +1 -1
  61. package/dist/components/divider/divider.js +18 -9
  62. package/dist/components/divider/divider.js.map +1 -0
  63. package/dist/components/drawer/drawer.d.ts +7 -4
  64. package/dist/components/drawer/drawer.d.ts.map +1 -1
  65. package/dist/components/drawer/drawer.js +73 -30
  66. package/dist/components/drawer/drawer.js.map +1 -0
  67. package/dist/components/field/field.d.ts +2 -2
  68. package/dist/components/field/field.d.ts.map +1 -1
  69. package/dist/components/field/field.js +8 -9
  70. package/dist/components/field/field.js.map +1 -0
  71. package/dist/components/footer/footer.d.ts +8 -1
  72. package/dist/components/footer/footer.d.ts.map +1 -1
  73. package/dist/components/footer/footer.js +42 -12
  74. package/dist/components/footer/footer.js.map +1 -0
  75. package/dist/components/form/form-step.js +1 -0
  76. package/dist/components/form/form-step.js.map +1 -0
  77. package/dist/components/form/form.d.ts +3 -0
  78. package/dist/components/form/form.d.ts.map +1 -1
  79. package/dist/components/form/form.js +109 -69
  80. package/dist/components/form/form.js.map +1 -0
  81. package/dist/components/grid/grid-row.d.ts +3 -3
  82. package/dist/components/grid/grid-row.d.ts.map +1 -1
  83. package/dist/components/grid/grid-row.js +36 -22
  84. package/dist/components/grid/grid-row.js.map +1 -0
  85. package/dist/components/grid/grid.d.ts +2 -2
  86. package/dist/components/grid/grid.d.ts.map +1 -1
  87. package/dist/components/grid/grid.js +5 -2
  88. package/dist/components/grid/grid.js.map +1 -0
  89. package/dist/components/icon/icon-paths.d.ts +161 -86
  90. package/dist/components/icon/icon-paths.d.ts.map +1 -1
  91. package/dist/components/icon/icon-paths.js +176 -106
  92. package/dist/components/icon/icon-paths.js.map +1 -0
  93. package/dist/components/icon/icon.d.ts +1 -1
  94. package/dist/components/icon/icon.d.ts.map +1 -1
  95. package/dist/components/icon/icon.js +6 -5
  96. package/dist/components/icon/icon.js.map +1 -0
  97. package/dist/components/input/input.d.ts +10 -0
  98. package/dist/components/input/input.d.ts.map +1 -1
  99. package/dist/components/input/input.js +59 -43
  100. package/dist/components/input/input.js.map +1 -0
  101. package/dist/components/link/link.d.ts +6 -6
  102. package/dist/components/link/link.d.ts.map +1 -1
  103. package/dist/components/link/link.js +42 -19
  104. package/dist/components/link/link.js.map +1 -0
  105. package/dist/components/metadata/metadata.d.ts +3 -3
  106. package/dist/components/metadata/metadata.d.ts.map +1 -1
  107. package/dist/components/metadata/metadata.js +23 -20
  108. package/dist/components/metadata/metadata.js.map +1 -0
  109. package/dist/components/modal/modal.d.ts +4 -16
  110. package/dist/components/modal/modal.d.ts.map +1 -1
  111. package/dist/components/modal/modal.js +99 -62
  112. package/dist/components/modal/modal.js.map +1 -0
  113. package/dist/components/page-layout/page-layout.d.ts +4 -3
  114. package/dist/components/page-layout/page-layout.d.ts.map +1 -1
  115. package/dist/components/page-layout/page-layout.js +95 -68
  116. package/dist/components/page-layout/page-layout.js.map +1 -0
  117. package/dist/components/pin-input/pin-input.d.ts +33 -0
  118. package/dist/components/pin-input/pin-input.d.ts.map +1 -0
  119. package/dist/components/pin-input/pin-input.js +253 -0
  120. package/dist/components/pin-input/pin-input.js.map +1 -0
  121. package/dist/components/popover/popover.d.ts +26 -0
  122. package/dist/components/popover/popover.d.ts.map +1 -0
  123. package/dist/components/popover/popover.js +196 -0
  124. package/dist/components/popover/popover.js.map +1 -0
  125. package/dist/components/radio/radio.d.ts +8 -0
  126. package/dist/components/radio/radio.d.ts.map +1 -1
  127. package/dist/components/radio/radio.js +8 -12
  128. package/dist/components/radio/radio.js.map +1 -0
  129. package/dist/components/radio-group/radio-group.d.ts +6 -1
  130. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  131. package/dist/components/radio-group/radio-group.js +44 -18
  132. package/dist/components/radio-group/radio-group.js.map +1 -0
  133. package/dist/components/router/router.d.ts +5 -7
  134. package/dist/components/router/router.d.ts.map +1 -1
  135. package/dist/components/router/router.js +54 -38
  136. package/dist/components/router/router.js.map +1 -0
  137. package/dist/components/select/select.d.ts +5 -4
  138. package/dist/components/select/select.d.ts.map +1 -1
  139. package/dist/components/select/select.js +40 -9
  140. package/dist/components/select/select.js.map +1 -0
  141. package/dist/components/skeleton/skeleton.d.ts +3 -2
  142. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  143. package/dist/components/skeleton/skeleton.js +10 -13
  144. package/dist/components/skeleton/skeleton.js.map +1 -0
  145. package/dist/components/switch/switch.d.ts +12 -0
  146. package/dist/components/switch/switch.d.ts.map +1 -1
  147. package/dist/components/switch/switch.js +28 -22
  148. package/dist/components/switch/switch.js.map +1 -0
  149. package/dist/components/table/data-table.d.ts +3 -25
  150. package/dist/components/table/data-table.d.ts.map +1 -1
  151. package/dist/components/table/data-table.js +211 -146
  152. package/dist/components/table/data-table.js.map +1 -0
  153. package/dist/components/table/table.d.ts +3 -3
  154. package/dist/components/table/table.d.ts.map +1 -1
  155. package/dist/components/table/table.js +39 -20
  156. package/dist/components/table/table.js.map +1 -0
  157. package/dist/components/tabs/tab-panel.d.ts +3 -1
  158. package/dist/components/tabs/tab-panel.d.ts.map +1 -1
  159. package/dist/components/tabs/tab-panel.js +21 -11
  160. package/dist/components/tabs/tab-panel.js.map +1 -0
  161. package/dist/components/tabs/tab.d.ts +5 -1
  162. package/dist/components/tabs/tab.d.ts.map +1 -1
  163. package/dist/components/tabs/tab.js +46 -28
  164. package/dist/components/tabs/tab.js.map +1 -0
  165. package/dist/components/tabs/tabs.d.ts +4 -0
  166. package/dist/components/tabs/tabs.d.ts.map +1 -1
  167. package/dist/components/tabs/tabs.js +76 -13
  168. package/dist/components/tabs/tabs.js.map +1 -0
  169. package/dist/components/textarea/textarea.d.ts +13 -0
  170. package/dist/components/textarea/textarea.d.ts.map +1 -1
  171. package/dist/components/textarea/textarea.js +59 -13
  172. package/dist/components/textarea/textarea.js.map +1 -0
  173. package/dist/components/theme-toggle/theme-toggle.constants.d.ts +3 -0
  174. package/dist/components/theme-toggle/theme-toggle.constants.d.ts.map +1 -0
  175. package/dist/components/theme-toggle/theme-toggle.constants.js +2 -0
  176. package/dist/components/theme-toggle/theme-toggle.constants.js.map +1 -0
  177. package/dist/components/theme-toggle/theme-toggle.d.ts +3 -2
  178. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  179. package/dist/components/theme-toggle/theme-toggle.js +46 -19
  180. package/dist/components/theme-toggle/theme-toggle.js.map +1 -0
  181. package/dist/components/time-picker/time-picker.d.ts +38 -0
  182. package/dist/components/time-picker/time-picker.d.ts.map +1 -0
  183. package/dist/components/time-picker/time-picker.js +280 -0
  184. package/dist/components/time-picker/time-picker.js.map +1 -0
  185. package/dist/components/toggle-group/toggle-button.d.ts +23 -0
  186. package/dist/components/toggle-group/toggle-button.d.ts.map +1 -0
  187. package/dist/components/toggle-group/toggle-button.js +115 -0
  188. package/dist/components/toggle-group/toggle-button.js.map +1 -0
  189. package/dist/components/toggle-group/toggle-group.d.ts +32 -0
  190. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -0
  191. package/dist/components/toggle-group/toggle-group.js +150 -0
  192. package/dist/components/toggle-group/toggle-group.js.map +1 -0
  193. package/dist/components/tooltip/tooltip.d.ts +33 -0
  194. package/dist/components/tooltip/tooltip.d.ts.map +1 -0
  195. package/dist/components/tooltip/tooltip.js +293 -0
  196. package/dist/components/tooltip/tooltip.js.map +1 -0
  197. package/dist/components/vertical-nav/vertical-nav-group.d.ts +5 -2
  198. package/dist/components/vertical-nav/vertical-nav-group.d.ts.map +1 -1
  199. package/dist/components/vertical-nav/vertical-nav-group.js +50 -14
  200. package/dist/components/vertical-nav/vertical-nav-group.js.map +1 -0
  201. package/dist/components/vertical-nav/vertical-nav-item.d.ts +3 -2
  202. package/dist/components/vertical-nav/vertical-nav-item.d.ts.map +1 -1
  203. package/dist/components/vertical-nav/vertical-nav-item.js +30 -8
  204. package/dist/components/vertical-nav/vertical-nav-item.js.map +1 -0
  205. package/dist/styles/index.css +49 -17
  206. package/dist/styles/reset.js +1 -0
  207. package/dist/styles/reset.js.map +1 -0
  208. package/package.json +30 -1
  209. package/src/components/alert/alert.constants.ts +2 -0
  210. package/src/components/alert/alert.ts +24 -15
  211. package/src/components/badge/badge.constants.ts +2 -0
  212. package/src/components/badge/badge.ts +3 -4
  213. package/src/components/breadcrumb/breadcrumb.ts +2 -2
  214. package/src/components/button/button.constants.ts +8 -0
  215. package/src/components/button/button.ts +184 -144
  216. package/src/components/button-group/button-group.ts +18 -22
  217. package/src/components/calendar/calendar.ts +444 -0
  218. package/src/components/checkbox/checkbox.constants.ts +2 -0
  219. package/src/components/checkbox/checkbox.ts +33 -18
  220. package/src/components/code-block/code-block.ts +151 -84
  221. package/src/components/content-card/content-card.ts +10 -16
  222. package/src/components/cron-builder/cron-builder.ts +452 -0
  223. package/src/components/divider/divider.constants.ts +5 -0
  224. package/src/components/divider/divider.ts +22 -11
  225. package/src/components/drawer/drawer.ts +79 -34
  226. package/src/components/field/field.ts +9 -11
  227. package/src/components/footer/footer.ts +43 -12
  228. package/src/components/form/form.ts +121 -84
  229. package/src/components/grid/grid-row.ts +45 -32
  230. package/src/components/grid/grid.ts +7 -4
  231. package/src/components/icon/icon-paths.ts +175 -106
  232. package/src/components/icon/icon.ts +6 -6
  233. package/src/components/input/input.ts +59 -45
  234. package/src/components/link/link.ts +45 -21
  235. package/src/components/metadata/metadata.ts +26 -24
  236. package/src/components/modal/modal.ts +108 -74
  237. package/src/components/page-layout/page-layout.ts +97 -72
  238. package/src/components/pin-input/pin-input.ts +249 -0
  239. package/src/components/popover/popover.ts +192 -0
  240. package/src/components/radio/radio.ts +8 -13
  241. package/src/components/radio-group/radio-group.ts +45 -21
  242. package/src/components/router/router.ts +73 -50
  243. package/src/components/select/select.ts +41 -80
  244. package/src/components/skeleton/skeleton.ts +14 -14
  245. package/src/components/switch/switch.ts +31 -25
  246. package/src/components/table/data-table.ts +248 -177
  247. package/src/components/table/table.ts +52 -29
  248. package/src/components/tabs/tab-panel.ts +25 -13
  249. package/src/components/tabs/tab.ts +58 -33
  250. package/src/components/tabs/tabs.ts +77 -15
  251. package/src/components/textarea/textarea.ts +63 -15
  252. package/src/components/theme-toggle/theme-toggle.constants.ts +2 -0
  253. package/src/components/theme-toggle/theme-toggle.ts +47 -22
  254. package/src/components/time-picker/time-picker.ts +272 -0
  255. package/src/components/toggle-group/toggle-button.ts +104 -0
  256. package/src/components/toggle-group/toggle-group.ts +148 -0
  257. package/src/components/tooltip/tooltip.ts +286 -0
  258. package/src/components/vertical-nav/vertical-nav-group.ts +57 -18
  259. package/src/components/vertical-nav/vertical-nav-item.ts +35 -12
  260. package/src/styles/globals.css +27 -4
  261. package/src/styles/theme.css +40 -32
  262. package/tsconfig.json +2 -1
  263. package/dist/components/card/card.d.ts +0 -11
  264. package/dist/components/card/card.d.ts.map +0 -1
  265. package/dist/components/card/card.js +0 -54
  266. package/src/components/card/card.ts +0 -53
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { LitElement, html, css } from "lit";
8
8
  import { customElement, property, query } from "lit/decorators.js";
9
- import { ifDefined } from "lit/directives/if-defined.js"; // Helper for optional attributes
9
+ import { ifDefined } from "lit/directives/if-defined.js";
10
10
  import { resetStyles } from "../../styles/reset.js";
11
11
  let StInput = class StInput extends LitElement {
12
12
  constructor() {
@@ -17,43 +17,46 @@ let StInput = class StInput extends LitElement {
17
17
  this.placeholder = "";
18
18
  this.type = "text";
19
19
  this.helpText = "";
20
- // Validation Properties
20
+ this.error = "";
21
21
  this.required = false;
22
22
  this.disabled = false;
23
23
  this.invalid = false;
24
24
  this.readonly = false;
25
25
  this._internals = this.attachInternals();
26
- // 1. Trigger error state if the user clicks away and the field is invalid
27
26
  this.addEventListener("focusout", () => {
28
- this.invalid = !this._inputEl.validity.valid;
27
+ this.invalid = !!this.error || !this._inputEl.validity.valid;
29
28
  });
30
- // 2. Trigger error state if the st-form tries to submit and fails
31
29
  this.addEventListener("invalid", () => {
32
30
  this.invalid = true;
33
31
  });
34
32
  }
35
33
  updated(changedProperties) {
36
34
  super.updated(changedProperties);
37
- // Sync the value to the form engine
38
35
  if (changedProperties.has("value")) {
39
36
  this._internals.setFormValue(this.value);
40
37
  }
41
- // Sync validity whenever properties change (like value or required status)
42
- this._syncValidity();
38
+ if (changedProperties.has("value") || changedProperties.has("error") || changedProperties.has("required")) {
39
+ this._syncValidity();
40
+ }
43
41
  }
44
42
  _syncValidity() {
45
43
  if (!this._inputEl)
46
44
  return;
47
- // setValidity arguments: (ValidityState object, Custom Error Message, Anchor Element for Tooltip)
45
+ if (this.error) {
46
+ this._internals.setValidity({ customError: true }, this.error, this._inputEl);
47
+ this.invalid = true;
48
+ return;
49
+ }
48
50
  this._internals.setValidity(this._inputEl.validity, this._inputEl.validationMessage, this._inputEl);
51
+ if (this.invalid && this._inputEl.validity.valid) {
52
+ this.invalid = false;
53
+ }
49
54
  }
50
55
  formResetCallback() {
51
56
  this.value = "";
52
57
  this._internals.setFormValue("");
53
- // Need to wait for the render cycle to finish before checking validity on reset
54
58
  this.updateComplete.then(() => this._syncValidity());
55
59
  }
56
- // Expose standard native methods so external scripts can call them on the component
57
60
  checkValidity() {
58
61
  return this._internals.checkValidity();
59
62
  }
@@ -63,7 +66,7 @@ let StInput = class StInput extends LitElement {
63
66
  _handleInput(e) {
64
67
  const target = e.target;
65
68
  this.value = target.value;
66
- if (this.invalid && target.validity.valid) {
69
+ if (this.invalid && target.validity.valid && !this.error) {
67
70
  this.invalid = false;
68
71
  }
69
72
  this.dispatchEvent(new Event("input", { bubbles: true, composed: true }));
@@ -72,6 +75,10 @@ let StInput = class StInput extends LitElement {
72
75
  this.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
73
76
  }
74
77
  render() {
78
+ const descriptionId = this.error ? "error-text" : (this.helpText ? "help-text" : undefined);
79
+ const isSensitive = this.type === "password" || this.type === "email";
80
+ const safeSpellcheck = isSensitive ? "false" : undefined;
81
+ const safeAutocapitalize = isSensitive ? "none" : undefined;
75
82
  return html `
76
83
  <div class="form-control">
77
84
  ${this.label ? html `<label for="input">${this.label}</label>` : ""}
@@ -91,6 +98,11 @@ let StInput = class StInput extends LitElement {
91
98
  minlength=${ifDefined(this.minlength)}
92
99
  maxlength=${ifDefined(this.maxlength)}
93
100
  pattern=${ifDefined(this.pattern)}
101
+ autocomplete=${ifDefined(this.autocomplete)}
102
+ spellcheck=${ifDefined(safeSpellcheck)}
103
+ autocapitalize=${ifDefined(safeAutocapitalize)}
104
+ aria-invalid=${this.invalid ? "true" : "false"}
105
+ aria-describedby=${ifDefined(descriptionId)}
94
106
  @input=${this._handleInput}
95
107
  @change=${this._handleChange}
96
108
  />
@@ -98,12 +110,17 @@ let StInput = class StInput extends LitElement {
98
110
  <slot name="suffix"></slot>
99
111
  </div>
100
112
 
101
- ${this.helpText ? html `<div class="help-text">${this.helpText}</div>` : ""}
113
+ ${this.error
114
+ ? html `<div id="error-text" class="error-text">${this.error}</div>`
115
+ : this.helpText
116
+ ? html `<div id="help-text" class="help-text">${this.helpText}</div>`
117
+ : ""}
102
118
  </div>
103
119
  `;
104
120
  }
105
121
  };
106
122
  StInput.formAssociated = true;
123
+ StInput.shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };
107
124
  StInput.styles = [
108
125
  resetStyles,
109
126
  css `
@@ -122,41 +139,34 @@ StInput.styles = [
122
139
  font-weight: var(--st-font-weight-medium);
123
140
  color: var(--st-color-text);
124
141
  margin-bottom: 0.5em;
142
+ cursor: pointer;
125
143
  }
126
144
 
127
- /* 1. The Wrapper acts as the visual input field */
128
145
  .input-wrapper {
129
146
  display: flex;
130
147
  align-items: center;
131
148
  gap: var(--st-spacing-sm);
132
149
  width: 100%;
133
-
134
150
  background-color: var(--st-color-bg);
135
151
  border: 1px solid var(--st-color-border);
136
152
  border-radius: 4px;
137
-
138
- /* Horizontal padding on the wrapper, vertical on the input */
139
153
  padding: 0 var(--st-spacing-md);
140
154
  transition:
141
155
  border-color 0.2s ease,
142
156
  box-shadow 0.2s ease;
143
157
  }
144
158
 
145
- /* 2. Apply focus ring to the wrapper when the internal input is focused */
146
159
  .input-wrapper:focus-within {
147
160
  border-color: var(--st-color-primary);
148
161
  box-shadow: 0 0 0 1px var(--st-color-primary);
149
162
  }
150
163
 
151
- /* 3. The actual input becomes transparent and fills the wrapper */
152
164
  input {
153
165
  flex: 1;
154
166
  width: 100%;
155
167
  border: none;
156
168
  background: transparent;
157
169
  outline: none;
158
-
159
- /* Vertical padding stretches the wrapper */
160
170
  padding: var(--st-spacing-sm) 0;
161
171
  font-size: var(--st-font-size-base);
162
172
  color: var(--st-color-text);
@@ -166,58 +176,57 @@ StInput.styles = [
166
176
  color: var(--st-color-text-muted);
167
177
  }
168
178
 
169
- /* Slotted Icons */
170
179
  ::slotted(svg) {
171
180
  width: 1.25em;
172
181
  height: 1.25em;
173
- /* Default icons to the muted text color */
174
182
  color: var(--st-color-text-muted);
175
183
  fill: currentColor;
176
184
  flex-shrink: 0;
177
185
  }
178
186
 
179
- /* Interactive Slotted Elements (like clear buttons) */
180
187
  ::slotted(st-button) {
181
- /* Pull the button back slightly so it aligns nicely with the input padding */
182
188
  margin-right: calc(var(--st-spacing-sm) * -1);
183
189
  }
184
190
 
185
- /* Invalid State */
191
+ .help-text {
192
+ font-size: var(--st-font-size-xs);
193
+ color: var(--st-color-text-muted);
194
+ margin: 0;
195
+ }
196
+
197
+ /* 🚀 NEW: Explicit error text styling */
198
+ .error-text {
199
+ font-size: var(--st-font-size-xs);
200
+ color: var(--st-color-error, #dc2626);
201
+ margin: 0;
202
+ font-weight: 500;
203
+ }
204
+
186
205
  :host([invalid]) .input-wrapper {
187
- border-color: var(--st-color-error);
206
+ border-color: var(--st-color-error, #dc2626);
188
207
  }
208
+
189
209
  :host([invalid]) .input-wrapper:focus-within {
190
- box-shadow: 0 0 0 1px var(--st-color-error);
210
+ box-shadow: 0 0 0 1px var(--st-color-error, #dc2626);
191
211
  }
212
+
192
213
  :host([invalid]) .help-text {
193
- color: var(--st-color-error);
214
+ color: var(--st-color-error, #dc2626);
194
215
  }
195
216
 
196
- /* Disabled & Readonly States */
197
217
  :host([disabled]) .input-wrapper {
198
218
  opacity: 0.5;
199
219
  cursor: not-allowed;
200
220
  background-color: var(--st-color-surface);
201
221
  }
222
+
202
223
  :host([disabled]) input {
203
224
  cursor: not-allowed;
204
225
  }
226
+
205
227
  :host([readonly]) .input-wrapper {
206
228
  background-color: var(--st-color-surface);
207
229
  }
208
-
209
- .help-text {
210
- font-size: var(--st-font-size-xs);
211
- color: var(--st-color-text-muted);
212
- margin: 0;
213
- }
214
-
215
- :host([invalid]) .input-wrapper {
216
- border-color: var(--st-color-error);
217
- }
218
- :host([invalid]) .help-text {
219
- color: var(--st-color-error);
220
- }
221
230
  `,
222
231
  ];
223
232
  __decorate([
@@ -241,6 +250,12 @@ __decorate([
241
250
  __decorate([
242
251
  property({ attribute: "help-text" })
243
252
  ], StInput.prototype, "helpText", void 0);
253
+ __decorate([
254
+ property({ type: String })
255
+ ], StInput.prototype, "error", void 0);
256
+ __decorate([
257
+ property({ type: String })
258
+ ], StInput.prototype, "autocomplete", void 0);
244
259
  __decorate([
245
260
  property({ type: Boolean, reflect: true })
246
261
  ], StInput.prototype, "required", void 0);
@@ -266,3 +281,4 @@ StInput = __decorate([
266
281
  customElement("st-input")
267
282
  ], StInput);
268
283
  export { StInput };
284
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../../src/components/input/input.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement } from "lit";
2
2
  export declare class StLink extends LitElement {
3
3
  href: string;
4
- target: '_blank' | '_self';
5
- size: 'sm' | 'md' | 'lg';
6
- variant: 'inline' | 'standalone';
7
- color: 'default' | 'primary' | 'muted';
4
+ target: "_blank" | "_self";
5
+ size: "sm" | "md" | "lg";
6
+ variant: "inline" | "standalone";
7
+ color: "default" | "primary" | "muted";
8
8
  static styles: import("lit").CSSResult[];
9
9
  render(): import("lit-html").TemplateResult<1>;
10
10
  }
11
11
  declare global {
12
12
  interface HTMLElementTagNameMap {
13
- 'st-link': StLink;
13
+ "st-link": StLink;
14
14
  }
15
15
  }
16
16
  //# sourceMappingURL=link.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/components/link/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C,qBACa,MAAO,SAAQ,UAAU;IACR,IAAI,SAAO;IACX,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAW;IACtB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,QAAQ,GAAG,YAAY,CAAY;IAC5C,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAa;IAE9F,MAAM,CAAC,MAAM,4BAsEX;IAEF,MAAM,yCAML;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../src/components/link/link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAY,MAAM,KAAK,CAAC;AAK1C,qBACa,MAAO,SAAQ,UAAU;IACV,IAAI,SAAO;IACX,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAW;IACtB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAChC,OAAO,EAAE,QAAQ,GAAG,YAAY,CAAY;IAC5C,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAa;IAE5F,MAAM,CAAC,MAAM,4BAqFX;IAEF,MAAM,yCAcL;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB;CACF"}
@@ -4,21 +4,28 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { LitElement, html, css } from 'lit';
8
- import { customElement, property } from 'lit/decorators.js';
9
- import { resetStyles } from '../../styles/reset.js';
7
+ import { LitElement, html, css } from "lit";
8
+ import { customElement, property } from "lit/decorators.js";
9
+ import { ifDefined } from "lit/directives/if-defined.js";
10
+ import { resetStyles } from "../../styles/reset.js";
10
11
  let StLink = class StLink extends LitElement {
11
12
  constructor() {
12
13
  super(...arguments);
13
- this.href = '#';
14
- this.target = '_self';
15
- this.size = 'md';
16
- this.variant = 'inline';
17
- this.color = 'primary';
14
+ this.href = "#";
15
+ this.target = "_self";
16
+ this.size = "md";
17
+ this.variant = "inline";
18
+ this.color = "primary";
18
19
  }
19
20
  render() {
21
+ // SECURITY: Prevent XSS via javascript: URI injection
22
+ const sanitizedHref = this.href?.trim().toLowerCase().startsWith("javascript:")
23
+ ? "#blocked"
24
+ : this.href;
25
+ // SECURITY: Prevent Reverse Tabnabbing for external links
26
+ const secureRel = this.target === "_blank" ? "noopener noreferrer" : undefined;
20
27
  return html `
21
- <a href="${this.href}" target="${this.target}">
28
+ <a href="${sanitizedHref}" target="${this.target}" rel="${ifDefined(secureRel)}">
22
29
  <slot></slot>
23
30
  </a>
24
31
  `;
@@ -29,7 +36,8 @@ StLink.styles = [
29
36
  css `
30
37
  :host {
31
38
  display: inline-flex;
32
- align-items: center;
39
+ align-items: baseline; /* Ensures it sits perfectly inside a line of text */
40
+ vertical-align: baseline;
33
41
  }
34
42
 
35
43
  a {
@@ -38,7 +46,17 @@ StLink.styles = [
38
46
  gap: 0.25em;
39
47
  text-decoration: none;
40
48
  font-weight: 500;
41
- transition: color 0.2s ease, opacity 0.2s ease;
49
+ transition:
50
+ color 0.2s ease,
51
+ opacity 0.2s ease,
52
+ text-decoration-thickness 0.2s ease;
53
+ }
54
+
55
+ /* Accessibility: Clear focus indicators for keyboard navigation */
56
+ a:focus-visible {
57
+ outline: 2px solid var(--st-color-primary);
58
+ outline-offset: 2px;
59
+ border-radius: 2px;
42
60
  }
43
61
 
44
62
  /* ==========================================================
@@ -68,24 +86,28 @@ StLink.styles = [
68
86
  /* ==========================================================
69
87
  Sizes
70
88
  ========================================================== */
71
- :host([size="sm"]) a { font-size: 0.875rem; }
72
- :host([size="md"]) a { font-size: 1rem; }
73
- :host([size="lg"]) a { font-size: 1.125rem; }
89
+ :host([size="sm"]) a {
90
+ font-size: 0.875rem;
91
+ }
92
+ :host([size="md"]) a {
93
+ font-size: 1rem;
94
+ }
95
+ :host([size="lg"]) a {
96
+ font-size: 1.125rem;
97
+ }
74
98
 
75
99
  /* ==========================================================
76
100
  Variants
77
101
  ========================================================== */
78
- /* inline links live inside paragraphs and underline on hover */
79
102
  :host([variant="inline"]) a {
80
103
  text-decoration: underline;
81
104
  text-underline-offset: 4px;
82
- font-weight: inherit; /* Inherits from surrounding paragraph text */
105
+ font-weight: inherit;
83
106
  }
84
107
  :host([variant="inline"]) a:hover {
85
108
  text-decoration-thickness: 2px;
86
109
  }
87
110
 
88
- /* standalone links (e.g., footers, sidebars) have no underline by default */
89
111
  :host([variant="standalone"]) a {
90
112
  text-decoration: none;
91
113
  }
@@ -93,7 +115,7 @@ StLink.styles = [
93
115
  text-decoration: underline;
94
116
  text-underline-offset: 4px;
95
117
  }
96
- `
118
+ `,
97
119
  ];
98
120
  __decorate([
99
121
  property({ type: String })
@@ -111,6 +133,7 @@ __decorate([
111
133
  property({ type: String, reflect: true })
112
134
  ], StLink.prototype, "color", void 0);
113
135
  StLink = __decorate([
114
- customElement('st-link')
136
+ customElement("st-link")
115
137
  ], StLink);
116
138
  export { StLink };
139
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/components/link/link.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAG3C,IAAM,MAAM,GAAZ,MAAM,MAAO,SAAQ,UAAU;IAA/B;;QACqB,SAAI,GAAG,GAAG,CAAC;QACX,WAAM,GAAuB,OAAO,CAAC;QACtB,SAAI,GAAuB,IAAI,CAAC;QAChC,YAAO,GAA4B,QAAQ,CAAC;QAC5C,UAAK,GAAoC,SAAS,CAAC;IAwG9F,CAAC;IAfC,MAAM;QACJ,sDAAsD;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YAC7E,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAEd,0DAA0D;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/E,OAAO,IAAI,CAAA;iBACE,aAAa,aAAa,IAAI,CAAC,MAAM,UAAU,SAAS,CAAC,SAAS,CAAC;;;KAG/E,CAAC;IACJ,CAAC;CACF,CAAA;AAtGQ,aAAM,GAAG;IACd,WAAW;IACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkFF;CACF,AArFY,CAqFX;AA3FwB;IAAzB,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;oCAAY;AACX;IAAzB,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;sCAAsC;AACtB;IAAxC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;oCAAiC;AAChC;IAAxC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;uCAA6C;AAC5C;IAAxC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;qCAAoD;AALjF,MAAM;IADlB,aAAa,CAAC,SAAS,CAAC;GACZ,MAAM,CA6GlB"}
@@ -1,10 +1,10 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, PropertyValues } from "lit";
2
2
  export declare class StMetadata extends LitElement {
3
3
  pageTitle: string;
4
4
  description: string;
5
5
  image: string;
6
6
  protected createRenderRoot(): this;
7
- updated(): void;
7
+ updated(changedProperties: PropertyValues<this>): void;
8
8
  private _updateMetadata;
9
9
  private _setMeta;
10
10
  private _setCanonical;
@@ -12,7 +12,7 @@ export declare class StMetadata extends LitElement {
12
12
  }
13
13
  declare global {
14
14
  interface HTMLElementTagNameMap {
15
- 'st-metadata': StMetadata;
15
+ "st-metadata": StMetadata;
16
16
  }
17
17
  }
18
18
  //# sourceMappingURL=metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/components/metadata/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAW,MAAM,KAAK,CAAC;AAG1C,qBACa,UAAW,SAAQ,UAAU;IACZ,SAAS,SAAM;IACf,WAAW,SAAM;IACjB,KAAK,SAAM;IAEvC,SAAS,CAAC,gBAAgB,SAAmB;IAE7C,OAAO,SAEN;IAED,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,aAAa;IAUrB,MAAM,WAEL;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/components/metadata/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAW,cAAc,EAAC,MAAM,KAAK,CAAC;AAGxD,qBACa,UAAW,SAAQ,UAAU;IACd,SAAS,SAAM;IACf,WAAW,SAAM;IACjB,KAAK,SAAM;IAErC,SAAS,CAAC,gBAAgB,SAEzB;IAGQ,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,QAGvD;IAED,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,aAAa;IAUrB,MAAM,WAEL;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,UAAU,CAAC;KAC3B;CACF"}
@@ -4,53 +4,55 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { LitElement, nothing } from 'lit';
8
- import { customElement, property } from 'lit/decorators.js';
7
+ import { LitElement, nothing } from "lit";
8
+ import { customElement, property } from "lit/decorators.js";
9
9
  let StMetadata = class StMetadata extends LitElement {
10
10
  constructor() {
11
11
  super(...arguments);
12
- this.pageTitle = '';
13
- this.description = '';
14
- this.image = '';
12
+ this.pageTitle = "";
13
+ this.description = "";
14
+ this.image = "";
15
15
  }
16
- createRenderRoot() { return this; }
17
- updated() {
16
+ createRenderRoot() {
17
+ return this;
18
+ }
19
+ // 🚀 Added strict PropertyValues typing and super call
20
+ updated(changedProperties) {
21
+ super.updated(changedProperties);
18
22
  this._updateMetadata();
19
23
  }
20
24
  _updateMetadata() {
21
- // Read site name from environment variable (e.g., VITE_SITE_NAME)
22
- const siteName = import.meta.env?.VITE_SITE_NAME || '';
25
+ const siteName = import.meta.env?.VITE_SITE_NAME || "";
23
26
  if (this.pageTitle) {
24
- // If site name is configured, append it; otherwise use the title standalone
25
27
  document.title = siteName ? `${this.pageTitle} - ${siteName}` : this.pageTitle;
26
- this._setMeta('property', 'og:title', this.pageTitle);
28
+ this._setMeta("property", "og:title", this.pageTitle);
27
29
  }
28
30
  if (this.description) {
29
- this._setMeta('name', 'description', this.description);
30
- this._setMeta('property', 'og:description', this.description);
31
+ this._setMeta("name", "description", this.description);
32
+ this._setMeta("property", "og:description", this.description);
31
33
  }
32
34
  if (this.image) {
33
- this._setMeta('property', 'og:image', this.image);
35
+ this._setMeta("property", "og:image", this.image);
34
36
  }
35
37
  this._setCanonical(window.location.href);
36
38
  }
37
39
  _setMeta(attrName, attrValue, content) {
38
40
  let meta = document.head.querySelector(`meta[${attrName}="${attrValue}"]`);
39
41
  if (!meta) {
40
- meta = document.createElement('meta');
42
+ meta = document.createElement("meta");
41
43
  meta.setAttribute(attrName, attrValue);
42
44
  document.head.appendChild(meta);
43
45
  }
44
- meta.setAttribute('content', content);
46
+ meta.setAttribute("content", content);
45
47
  }
46
48
  _setCanonical(url) {
47
49
  let link = document.head.querySelector('link[rel="canonical"]');
48
50
  if (!link) {
49
- link = document.createElement('link');
50
- link.setAttribute('rel', 'canonical');
51
+ link = document.createElement("link");
52
+ link.setAttribute("rel", "canonical");
51
53
  document.head.appendChild(link);
52
54
  }
53
- link.setAttribute('href', url);
55
+ link.setAttribute("href", url);
54
56
  }
55
57
  render() {
56
58
  return nothing;
@@ -66,6 +68,7 @@ __decorate([
66
68
  property({ type: String })
67
69
  ], StMetadata.prototype, "image", void 0);
68
70
  StMetadata = __decorate([
69
- customElement('st-metadata')
71
+ customElement("st-metadata")
70
72
  ], StMetadata);
71
73
  export { StMetadata };
74
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/components/metadata/metadata.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,13 @@
1
- import { LitElement, PropertyValues } from 'lit';
1
+ import { LitElement, PropertyValues } from "lit";
2
2
  export declare class StModal extends LitElement {
3
- /**
4
- * Controls whether the modal is open.
5
- */
6
3
  open: boolean;
7
- /**
8
- * Title text displayed in the modal header.
9
- */
10
4
  heading: string;
11
- /**
12
- * Size of the modal (sm, md, lg, xl, xxl).
13
- */
14
- size: 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
15
- /**
16
- * If true, the modal cannot be closed by clicking the backdrop or pressing Esc.
17
- */
5
+ size: "sm" | "md" | "lg" | "xl" | "xxl";
18
6
  static: boolean;
19
7
  private dialogEl;
20
8
  private isClosing;
21
9
  static styles: import("lit").CSSResult[];
22
- updated(changedProperties: PropertyValues): void;
10
+ updated(changedProperties: PropertyValues<this>): void;
23
11
  private closeWithAnimation;
24
12
  private handleClose;
25
13
  private handleCancel;
@@ -29,7 +17,7 @@ export declare class StModal extends LitElement {
29
17
  }
30
18
  declare global {
31
19
  interface HTMLElementTagNameMap {
32
- 'st-modal': StModal;
20
+ "st-modal": StModal;
33
21
  }
34
22
  }
35
23
  //# sourceMappingURL=modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,cAAc,EAAW,MAAM,KAAK,CAAC;AAIrE,qBACa,OAAQ,SAAQ,UAAU;IACrC;;OAEG;IACyC,IAAI,UAAS;IAEzD;;OAEG;IACyB,OAAO,SAAM;IAEzC;;OAEG;IACyB,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAQ;IAE3E;;OAEG;IAC0B,MAAM,UAAS;IAE3B,OAAO,CAAC,QAAQ,CAAqB;IAEtD,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,MAAM,4BAkHX;IAEF,OAAO,CAAC,iBAAiB,EAAE,cAAc,QAYxC;IAED,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,mBAAmB;IAe3B,MAAM,yCA4BL;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAa,cAAc,EAAU,MAAM,KAAK,CAAC;AAInE,qBACa,OAAQ,SAAQ,UAAU;IACK,IAAI,UAAS;IAC7B,OAAO,SAAM;IACb,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAQ;IAC9C,MAAM,UAAS;IAEzB,OAAO,CAAC,QAAQ,CAAqB;IAEtD,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,MAAM,4BAiJX;IAGO,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,QAcvD;IAED,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,mBAAmB;IAe3B,MAAM,yCA2CL;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}