@phcdevworks/spectre-components 1.3.0 → 1.5.0

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 (96) hide show
  1. package/README.md +504 -202
  2. package/dist/alert.cjs +455 -0
  3. package/dist/alert.cjs.map +1 -0
  4. package/dist/alert.d.cts +68 -0
  5. package/dist/alert.d.ts +68 -0
  6. package/dist/alert.js +450 -0
  7. package/dist/alert.js.map +1 -0
  8. package/dist/avatar.cjs +454 -0
  9. package/dist/avatar.cjs.map +1 -0
  10. package/dist/avatar.d.cts +74 -0
  11. package/dist/avatar.d.ts +74 -0
  12. package/dist/avatar.js +449 -0
  13. package/dist/avatar.js.map +1 -0
  14. package/dist/badge.cjs +454 -0
  15. package/dist/badge.cjs.map +1 -0
  16. package/dist/badge.d.cts +62 -0
  17. package/dist/badge.d.ts +62 -0
  18. package/dist/badge.js +449 -0
  19. package/dist/badge.js.map +1 -0
  20. package/dist/button.cjs.map +1 -1
  21. package/dist/button.d.cts +2 -2
  22. package/dist/button.d.ts +2 -2
  23. package/dist/button.js.map +1 -1
  24. package/dist/card.cjs +448 -0
  25. package/dist/card.cjs.map +1 -0
  26. package/dist/card.d.cts +68 -0
  27. package/dist/card.d.ts +68 -0
  28. package/dist/card.js +444 -0
  29. package/dist/card.js.map +1 -0
  30. package/dist/fieldset.cjs +14 -0
  31. package/dist/fieldset.cjs.map +1 -1
  32. package/dist/fieldset.d.cts +6 -0
  33. package/dist/fieldset.d.ts +6 -0
  34. package/dist/fieldset.js +14 -0
  35. package/dist/fieldset.js.map +1 -1
  36. package/dist/form-BumNzIay.d.cts +28 -0
  37. package/dist/form-BumNzIay.d.ts +28 -0
  38. package/dist/icon-box.cjs +466 -0
  39. package/dist/icon-box.cjs.map +1 -0
  40. package/dist/icon-box.d.cts +74 -0
  41. package/dist/icon-box.d.ts +74 -0
  42. package/dist/icon-box.js +461 -0
  43. package/dist/icon-box.js.map +1 -0
  44. package/dist/index.cjs +1123 -0
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +11 -1
  47. package/dist/index.d.ts +11 -1
  48. package/dist/index.js +1090 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/input.cjs.map +1 -1
  51. package/dist/input.d.cts +2 -2
  52. package/dist/input.d.ts +2 -2
  53. package/dist/input.js.map +1 -1
  54. package/dist/pricing-card.cjs +432 -0
  55. package/dist/pricing-card.cjs.map +1 -0
  56. package/dist/pricing-card.d.cts +60 -0
  57. package/dist/pricing-card.d.ts +60 -0
  58. package/dist/pricing-card.js +429 -0
  59. package/dist/pricing-card.js.map +1 -0
  60. package/dist/rating.cjs +377 -0
  61. package/dist/rating.cjs.map +1 -0
  62. package/dist/rating.d.cts +68 -0
  63. package/dist/rating.d.ts +68 -0
  64. package/dist/rating.js +373 -0
  65. package/dist/rating.js.map +1 -0
  66. package/dist/select.cjs +14 -0
  67. package/dist/select.cjs.map +1 -1
  68. package/dist/select.d.cts +7 -1
  69. package/dist/select.d.ts +7 -1
  70. package/dist/select.js +14 -0
  71. package/dist/select.js.map +1 -1
  72. package/dist/spinner.cjs +356 -0
  73. package/dist/spinner.cjs.map +1 -0
  74. package/dist/spinner.d.cts +52 -0
  75. package/dist/spinner.d.ts +52 -0
  76. package/dist/spinner.js +351 -0
  77. package/dist/spinner.js.map +1 -0
  78. package/dist/tag.cjs +473 -0
  79. package/dist/tag.cjs.map +1 -0
  80. package/dist/tag.d.cts +80 -0
  81. package/dist/tag.d.ts +80 -0
  82. package/dist/tag.js +468 -0
  83. package/dist/tag.js.map +1 -0
  84. package/dist/testimonial.cjs +444 -0
  85. package/dist/testimonial.cjs.map +1 -0
  86. package/dist/testimonial.d.cts +62 -0
  87. package/dist/testimonial.d.ts +62 -0
  88. package/dist/testimonial.js +440 -0
  89. package/dist/testimonial.js.map +1 -0
  90. package/dist/textarea.cjs.map +1 -1
  91. package/dist/textarea.d.cts +1 -1
  92. package/dist/textarea.d.ts +1 -1
  93. package/dist/textarea.js.map +1 -1
  94. package/package.json +68 -13
  95. package/dist/form-yR_u97J-.d.cts +0 -10
  96. package/dist/form-yR_u97J-.d.ts +0 -10
package/dist/index.cjs CHANGED
@@ -43,6 +43,107 @@ var spectreInputTypes = [
43
43
  function isInputType(value) {
44
44
  return spectreInputTypes.includes(value);
45
45
  }
46
+ var spectreBadgeVariants = [
47
+ "primary",
48
+ "secondary",
49
+ "success",
50
+ "warning",
51
+ "danger",
52
+ "neutral",
53
+ "info",
54
+ "ghost",
55
+ "outline",
56
+ "accent",
57
+ "cta"
58
+ ];
59
+ function isBadgeVariant(value) {
60
+ return spectreBadgeVariants.includes(value);
61
+ }
62
+ var spectreAlertVariants = [
63
+ "info",
64
+ "success",
65
+ "warning",
66
+ "danger",
67
+ "neutral"
68
+ ];
69
+ function isAlertVariant(value) {
70
+ return spectreAlertVariants.includes(value);
71
+ }
72
+ var spectreCardVariants = [
73
+ "elevated",
74
+ "flat",
75
+ "outline",
76
+ "ghost"
77
+ ];
78
+ function isCardVariant(value) {
79
+ return spectreCardVariants.includes(value);
80
+ }
81
+ var spectreIconBoxVariants = [
82
+ "primary",
83
+ "secondary",
84
+ "success",
85
+ "warning",
86
+ "danger",
87
+ "info",
88
+ "neutral",
89
+ "ghost",
90
+ "accent",
91
+ "cta",
92
+ "outline"
93
+ ];
94
+ function isIconBoxVariant(value) {
95
+ return spectreIconBoxVariants.includes(value);
96
+ }
97
+ var spectreTestimonialVariants = [
98
+ "elevated",
99
+ "flat",
100
+ "outline",
101
+ "ghost"
102
+ ];
103
+ function isTestimonialVariant(value) {
104
+ return spectreTestimonialVariants.includes(
105
+ value
106
+ );
107
+ }
108
+ var spectreSpinnerVariants = [
109
+ "primary",
110
+ "secondary",
111
+ "success",
112
+ "warning",
113
+ "danger",
114
+ "info",
115
+ "neutral",
116
+ "accent",
117
+ "cta"
118
+ ];
119
+ function isSpinnerVariant(value) {
120
+ return spectreSpinnerVariants.includes(value);
121
+ }
122
+ var spectreTagVariants = [
123
+ "default",
124
+ "primary",
125
+ "secondary",
126
+ "success",
127
+ "warning",
128
+ "danger",
129
+ "info",
130
+ "neutral",
131
+ "accent",
132
+ "cta",
133
+ "outline",
134
+ "ghost"
135
+ ];
136
+ function isTagVariant(value) {
137
+ return spectreTagVariants.includes(value);
138
+ }
139
+ var spectreAvatarSizes = ["xs", "sm", "md", "lg", "xl"];
140
+ function isAvatarSize(value) {
141
+ return spectreAvatarSizes.includes(value);
142
+ }
143
+ var spectreAvatarShapes = ["circle", "square"];
144
+ function isAvatarShape(value) {
145
+ return spectreAvatarShapes.includes(value);
146
+ }
46
147
  function normalizeInt(value, fallback, min = 0) {
47
148
  if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
48
149
  return fallback;
@@ -924,12 +1025,24 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
924
1025
  set title(value) {
925
1026
  super.title = value;
926
1027
  }
1028
+ get autocapitalize() {
1029
+ return super.autocapitalize;
1030
+ }
1031
+ set autocapitalize(value) {
1032
+ super.autocapitalize = value;
1033
+ }
927
1034
  get autofocus() {
928
1035
  return super.autofocus;
929
1036
  }
930
1037
  set autofocus(value) {
931
1038
  super.autofocus = value;
932
1039
  }
1040
+ get spellcheck() {
1041
+ return super.spellcheck;
1042
+ }
1043
+ set spellcheck(value) {
1044
+ super.spellcheck = value;
1045
+ }
933
1046
  getContentContainer() {
934
1047
  return this.querySelector("[data-sp-select-native]");
935
1048
  }
@@ -1025,6 +1138,7 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
1025
1138
  aria-invalid="${ifDefined_js.ifDefined(this.invalid ? "true" : void 0)}"
1026
1139
  aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1027
1140
  aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1141
+ autocapitalize="${ifDefined_js.ifDefined(this.autocapitalize || void 0)}"
1028
1142
  autocomplete="${ifDefined_js.ifDefined(this.autocomplete || void 0)}"
1029
1143
  ?autofocus="${this.autofocus}"
1030
1144
  class="${this.selectClasses}"
@@ -1034,6 +1148,7 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
1034
1148
  id="${ifDefined_js.ifDefined(this.id || void 0)}"
1035
1149
  name="${ifDefined_js.ifDefined(this.name || void 0)}"
1036
1150
  ?required="${this.required}"
1151
+ spellcheck="${ifDefined_js.ifDefined(this.getAttribute("spellcheck") ?? void 0)}"
1037
1152
  title="${ifDefined_js.ifDefined(this.title || void 0)}"
1038
1153
  .value="${live_js.live(this.value)}"
1039
1154
  @change="${this.handleChange}"
@@ -1447,12 +1562,24 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
1447
1562
  set title(value) {
1448
1563
  super.title = value;
1449
1564
  }
1565
+ get autocapitalize() {
1566
+ return super.autocapitalize;
1567
+ }
1568
+ set autocapitalize(value) {
1569
+ super.autocapitalize = value;
1570
+ }
1450
1571
  get autofocus() {
1451
1572
  return super.autofocus;
1452
1573
  }
1453
1574
  set autofocus(value) {
1454
1575
  super.autofocus = value;
1455
1576
  }
1577
+ get spellcheck() {
1578
+ return super.spellcheck;
1579
+ }
1580
+ set spellcheck(value) {
1581
+ super.spellcheck = value;
1582
+ }
1456
1583
  get visibleLegend() {
1457
1584
  const trimmedLegend = this.legend?.trim();
1458
1585
  return trimmedLegend ? trimmedLegend : void 0;
@@ -1497,12 +1624,14 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
1497
1624
  aria-invalid="${ifDefined_js.ifDefined(this.invalid ? "true" : void 0)}"
1498
1625
  aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1499
1626
  aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1627
+ autocapitalize="${ifDefined_js.ifDefined(this.autocapitalize || void 0)}"
1500
1628
  ?autofocus="${this.autofocus}"
1501
1629
  data-sp-fieldset-native
1502
1630
  ?disabled="${this.isDisabled}"
1503
1631
  form="${ifDefined_js.ifDefined(this.form || void 0)}"
1504
1632
  id="${ifDefined_js.ifDefined(this.id || void 0)}"
1505
1633
  name="${ifDefined_js.ifDefined(this.name || void 0)}"
1634
+ spellcheck="${ifDefined_js.ifDefined(this.getAttribute("spellcheck") ?? void 0)}"
1506
1635
  title="${ifDefined_js.ifDefined(this.title || void 0)}"
1507
1636
  >
1508
1637
  ${this.visibleLegend ? lit.html`<legend
@@ -1530,6 +1659,955 @@ function defineSpectreFieldset(tagName = "sp-fieldset") {
1530
1659
  customElements.define(tagName, SpectreFieldsetElement);
1531
1660
  return SpectreFieldsetElement;
1532
1661
  }
1662
+ var SpectreBadgeElement = class extends SpectreProjectableElement {
1663
+ constructor() {
1664
+ super(...arguments);
1665
+ this.disabled = false;
1666
+ this.fullWidth = false;
1667
+ this.loading = false;
1668
+ this.size = "md";
1669
+ this.variant = "primary";
1670
+ }
1671
+ get id() {
1672
+ return super.id;
1673
+ }
1674
+ set id(value) {
1675
+ super.id = value;
1676
+ }
1677
+ get title() {
1678
+ return super.title;
1679
+ }
1680
+ set title(value) {
1681
+ super.title = value;
1682
+ }
1683
+ getContentContainer() {
1684
+ return this.querySelector("[data-sp-badge-native]");
1685
+ }
1686
+ isInternalNode(node) {
1687
+ if (node.nodeType !== Node.ELEMENT_NODE) {
1688
+ return false;
1689
+ }
1690
+ const el = node;
1691
+ return el.hasAttribute("data-sp-badge-native");
1692
+ }
1693
+ willUpdate(changedProperties) {
1694
+ if (changedProperties.has("disabled") && this.disabled == null) {
1695
+ this.disabled = false;
1696
+ }
1697
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
1698
+ this.fullWidth = false;
1699
+ }
1700
+ if (changedProperties.has("loading") && this.loading == null) {
1701
+ this.loading = false;
1702
+ }
1703
+ if (changedProperties.has("variant") && (this.variant == null || !isBadgeVariant(this.variant))) {
1704
+ this.variant = "primary";
1705
+ }
1706
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
1707
+ this.size = "md";
1708
+ }
1709
+ }
1710
+ get badgeClasses() {
1711
+ return spectreUi.getBadgeClasses({
1712
+ disabled: this.isDisabled,
1713
+ fullWidth: this.fullWidth ?? false,
1714
+ loading: this.loading ?? false,
1715
+ size: this.size,
1716
+ variant: this.variant
1717
+ });
1718
+ }
1719
+ get isDisabled() {
1720
+ return (this.disabled ?? false) || (this.loading ?? false);
1721
+ }
1722
+ render() {
1723
+ return lit.html`<span
1724
+ aria-busy="${this.loading ? "true" : "false"}"
1725
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1726
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1727
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1728
+ class="${this.badgeClasses}"
1729
+ data-sp-badge-native
1730
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1731
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1732
+ >
1733
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
1734
+ </span>`;
1735
+ }
1736
+ };
1737
+ SpectreBadgeElement.properties = {
1738
+ disabled: { type: Boolean, reflect: true },
1739
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
1740
+ loading: { type: Boolean, reflect: true },
1741
+ size: { type: String, reflect: true },
1742
+ variant: { type: String, reflect: true }
1743
+ };
1744
+ function defineSpectreBadge(tagName = "sp-badge") {
1745
+ const existingElement = customElements.get(tagName);
1746
+ if (existingElement) {
1747
+ return existingElement;
1748
+ }
1749
+ customElements.define(tagName, SpectreBadgeElement);
1750
+ return SpectreBadgeElement;
1751
+ }
1752
+ var SpectreCardElement = class extends SpectreProjectableElement {
1753
+ constructor() {
1754
+ super(...arguments);
1755
+ this.disabled = false;
1756
+ this.fullHeight = false;
1757
+ this.interactive = false;
1758
+ this.loading = false;
1759
+ this.padded = true;
1760
+ this.variant = "elevated";
1761
+ }
1762
+ get id() {
1763
+ return super.id;
1764
+ }
1765
+ set id(value) {
1766
+ super.id = value;
1767
+ }
1768
+ get title() {
1769
+ return super.title;
1770
+ }
1771
+ set title(value) {
1772
+ super.title = value;
1773
+ }
1774
+ getContentContainer() {
1775
+ return this.querySelector("[data-sp-card-native]");
1776
+ }
1777
+ isInternalNode(node) {
1778
+ if (node.nodeType !== Node.ELEMENT_NODE) {
1779
+ return false;
1780
+ }
1781
+ const el = node;
1782
+ return el.hasAttribute("data-sp-card-native");
1783
+ }
1784
+ willUpdate(changedProperties) {
1785
+ if (changedProperties.has("disabled") && this.disabled == null) {
1786
+ this.disabled = false;
1787
+ }
1788
+ if (changedProperties.has("fullHeight") && this.fullHeight == null) {
1789
+ this.fullHeight = false;
1790
+ }
1791
+ if (changedProperties.has("interactive") && this.interactive == null) {
1792
+ this.interactive = false;
1793
+ }
1794
+ if (changedProperties.has("loading") && this.loading == null) {
1795
+ this.loading = false;
1796
+ }
1797
+ if (changedProperties.has("padded") && this.padded == null) {
1798
+ this.padded = true;
1799
+ }
1800
+ if (changedProperties.has("variant") && (this.variant == null || !isCardVariant(this.variant))) {
1801
+ this.variant = "elevated";
1802
+ }
1803
+ }
1804
+ get cardClasses() {
1805
+ return spectreUi.getCardClasses({
1806
+ disabled: this.isDisabled,
1807
+ fullHeight: this.fullHeight ?? false,
1808
+ interactive: this.interactive ?? false,
1809
+ loading: this.loading ?? false,
1810
+ padded: this.padded ?? true,
1811
+ variant: this.variant
1812
+ });
1813
+ }
1814
+ get isDisabled() {
1815
+ return (this.disabled ?? false) || (this.loading ?? false);
1816
+ }
1817
+ render() {
1818
+ return lit.html`<div
1819
+ aria-busy="${this.loading ? "true" : "false"}"
1820
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1821
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1822
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1823
+ class="${this.cardClasses}"
1824
+ data-sp-card-native
1825
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1826
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1827
+ >
1828
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
1829
+ </div>`;
1830
+ }
1831
+ };
1832
+ SpectreCardElement.properties = {
1833
+ disabled: { type: Boolean, reflect: true },
1834
+ fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
1835
+ interactive: { type: Boolean, reflect: true },
1836
+ loading: { type: Boolean, reflect: true },
1837
+ padded: { type: Boolean, reflect: true },
1838
+ variant: { type: String, reflect: true }
1839
+ };
1840
+ function defineSpectreCard(tagName = "sp-card") {
1841
+ const existingElement = customElements.get(tagName);
1842
+ if (existingElement) {
1843
+ return existingElement;
1844
+ }
1845
+ customElements.define(tagName, SpectreCardElement);
1846
+ return SpectreCardElement;
1847
+ }
1848
+ var SpectreIconBoxElement = class extends SpectreProjectableElement {
1849
+ constructor() {
1850
+ super(...arguments);
1851
+ this.disabled = false;
1852
+ this.fullWidth = false;
1853
+ this.interactive = false;
1854
+ this.loading = false;
1855
+ this.pill = false;
1856
+ this.size = "md";
1857
+ this.variant = "primary";
1858
+ }
1859
+ get id() {
1860
+ return super.id;
1861
+ }
1862
+ set id(value) {
1863
+ super.id = value;
1864
+ }
1865
+ get title() {
1866
+ return super.title;
1867
+ }
1868
+ set title(value) {
1869
+ super.title = value;
1870
+ }
1871
+ getContentContainer() {
1872
+ return this.querySelector("[data-sp-icon-box-native]");
1873
+ }
1874
+ isInternalNode(node) {
1875
+ if (node.nodeType !== Node.ELEMENT_NODE) {
1876
+ return false;
1877
+ }
1878
+ const el = node;
1879
+ return el.hasAttribute("data-sp-icon-box-native");
1880
+ }
1881
+ willUpdate(changedProperties) {
1882
+ if (changedProperties.has("disabled") && this.disabled == null) {
1883
+ this.disabled = false;
1884
+ }
1885
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
1886
+ this.fullWidth = false;
1887
+ }
1888
+ if (changedProperties.has("interactive") && this.interactive == null) {
1889
+ this.interactive = false;
1890
+ }
1891
+ if (changedProperties.has("loading") && this.loading == null) {
1892
+ this.loading = false;
1893
+ }
1894
+ if (changedProperties.has("pill") && this.pill == null) {
1895
+ this.pill = false;
1896
+ }
1897
+ if (changedProperties.has("variant") && (this.variant == null || !isIconBoxVariant(this.variant))) {
1898
+ this.variant = "primary";
1899
+ }
1900
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
1901
+ this.size = "md";
1902
+ }
1903
+ }
1904
+ get iconBoxClasses() {
1905
+ return spectreUi.getIconBoxClasses({
1906
+ disabled: this.isDisabled,
1907
+ fullWidth: this.fullWidth ?? false,
1908
+ interactive: this.interactive ?? false,
1909
+ loading: this.loading ?? false,
1910
+ pill: this.pill ?? false,
1911
+ size: this.size,
1912
+ variant: this.variant
1913
+ });
1914
+ }
1915
+ get isDisabled() {
1916
+ return (this.disabled ?? false) || (this.loading ?? false);
1917
+ }
1918
+ render() {
1919
+ return lit.html`<div
1920
+ aria-busy="${this.loading ? "true" : "false"}"
1921
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1922
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1923
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1924
+ class="${this.iconBoxClasses}"
1925
+ data-sp-icon-box-native
1926
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1927
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1928
+ >
1929
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
1930
+ </div>`;
1931
+ }
1932
+ };
1933
+ SpectreIconBoxElement.properties = {
1934
+ disabled: { type: Boolean, reflect: true },
1935
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
1936
+ interactive: { type: Boolean, reflect: true },
1937
+ loading: { type: Boolean, reflect: true },
1938
+ pill: { type: Boolean, reflect: true },
1939
+ size: { type: String, reflect: true },
1940
+ variant: { type: String, reflect: true }
1941
+ };
1942
+ function defineSpectreIconBox(tagName = "sp-icon-box") {
1943
+ const existingElement = customElements.get(tagName);
1944
+ if (existingElement) {
1945
+ return existingElement;
1946
+ }
1947
+ customElements.define(tagName, SpectreIconBoxElement);
1948
+ return SpectreIconBoxElement;
1949
+ }
1950
+ var SpectreRatingElement = class extends SpectreBaseElement {
1951
+ constructor() {
1952
+ super(...arguments);
1953
+ this.disabled = false;
1954
+ this.loading = false;
1955
+ this.max = 5;
1956
+ this.size = "md";
1957
+ this.value = 0;
1958
+ }
1959
+ get id() {
1960
+ return super.id;
1961
+ }
1962
+ set id(value) {
1963
+ super.id = value;
1964
+ }
1965
+ get title() {
1966
+ return super.title;
1967
+ }
1968
+ set title(value) {
1969
+ super.title = value;
1970
+ }
1971
+ willUpdate(changedProperties) {
1972
+ if (changedProperties.has("disabled") && this.disabled == null) {
1973
+ this.disabled = false;
1974
+ }
1975
+ if (changedProperties.has("loading") && this.loading == null) {
1976
+ this.loading = false;
1977
+ }
1978
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
1979
+ this.size = "md";
1980
+ }
1981
+ if (changedProperties.has("max")) {
1982
+ this.max = normalizeInt(this.max, 5, 1) ?? 5;
1983
+ }
1984
+ if (changedProperties.has("value")) {
1985
+ const safeMax = this.max ?? 5;
1986
+ const normalized = normalizeInt(this.value, 0, 0);
1987
+ this.value = normalized == null ? 0 : Math.min(normalized, safeMax);
1988
+ }
1989
+ }
1990
+ get ratingClasses() {
1991
+ return spectreUi.getRatingClasses({
1992
+ disabled: this.isDisabled,
1993
+ loading: this.loading ?? false,
1994
+ size: this.size
1995
+ });
1996
+ }
1997
+ get isDisabled() {
1998
+ return (this.disabled ?? false) || (this.loading ?? false);
1999
+ }
2000
+ get effectiveMax() {
2001
+ return this.max ?? 5;
2002
+ }
2003
+ get effectiveValue() {
2004
+ return this.value ?? 0;
2005
+ }
2006
+ get computedAriaLabel() {
2007
+ const base = this.forwardedAriaLabel;
2008
+ if (base) return base;
2009
+ return `Rating: ${this.effectiveValue} out of ${this.effectiveMax}`;
2010
+ }
2011
+ renderStars() {
2012
+ const stars = [];
2013
+ for (let i = 1; i <= this.effectiveMax; i++) {
2014
+ stars.push(lit.html`<span class="${spectreUi.getRatingStarClasses(i <= this.effectiveValue)}"></span>`);
2015
+ }
2016
+ return stars;
2017
+ }
2018
+ render() {
2019
+ const trimmedLabel = this.label?.trim();
2020
+ return lit.html`<div
2021
+ aria-busy="${this.loading ? "true" : "false"}"
2022
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2023
+ aria-label="${this.computedAriaLabel}"
2024
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2025
+ class="${this.ratingClasses}"
2026
+ data-sp-rating-native
2027
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2028
+ role="img"
2029
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2030
+ >
2031
+ <div class="${spectreUi.getRatingStarsClasses()}">${this.renderStars()}</div>
2032
+ ${trimmedLabel ? lit.html`<span class="${spectreUi.getRatingTextClasses({ disabled: this.isDisabled })}">${trimmedLabel}</span>` : lit.nothing}
2033
+ </div>`;
2034
+ }
2035
+ };
2036
+ SpectreRatingElement.properties = {
2037
+ disabled: { type: Boolean, reflect: true },
2038
+ label: { type: String, reflect: true },
2039
+ loading: { type: Boolean, reflect: true },
2040
+ max: { type: Number, reflect: true },
2041
+ size: { type: String, reflect: true },
2042
+ value: { type: Number, reflect: true }
2043
+ };
2044
+ function defineSpectreRating(tagName = "sp-rating") {
2045
+ const existingElement = customElements.get(tagName);
2046
+ if (existingElement) {
2047
+ return existingElement;
2048
+ }
2049
+ customElements.define(tagName, SpectreRatingElement);
2050
+ return SpectreRatingElement;
2051
+ }
2052
+ var SpectreTestimonialElement = class extends SpectreProjectableElement {
2053
+ constructor() {
2054
+ super(...arguments);
2055
+ this.disabled = false;
2056
+ this.fullHeight = false;
2057
+ this.interactive = false;
2058
+ this.loading = false;
2059
+ this.variant = "elevated";
2060
+ }
2061
+ get id() {
2062
+ return super.id;
2063
+ }
2064
+ set id(value) {
2065
+ super.id = value;
2066
+ }
2067
+ get title() {
2068
+ return super.title;
2069
+ }
2070
+ set title(value) {
2071
+ super.title = value;
2072
+ }
2073
+ getContentContainer() {
2074
+ return this.querySelector("[data-sp-testimonial-native]");
2075
+ }
2076
+ isInternalNode(node) {
2077
+ if (node.nodeType !== Node.ELEMENT_NODE) {
2078
+ return false;
2079
+ }
2080
+ const el = node;
2081
+ return el.hasAttribute("data-sp-testimonial-native");
2082
+ }
2083
+ willUpdate(changedProperties) {
2084
+ if (changedProperties.has("disabled") && this.disabled == null) {
2085
+ this.disabled = false;
2086
+ }
2087
+ if (changedProperties.has("fullHeight") && this.fullHeight == null) {
2088
+ this.fullHeight = false;
2089
+ }
2090
+ if (changedProperties.has("interactive") && this.interactive == null) {
2091
+ this.interactive = false;
2092
+ }
2093
+ if (changedProperties.has("loading") && this.loading == null) {
2094
+ this.loading = false;
2095
+ }
2096
+ if (changedProperties.has("variant") && (this.variant == null || !isTestimonialVariant(this.variant))) {
2097
+ this.variant = "elevated";
2098
+ }
2099
+ }
2100
+ get testimonialClasses() {
2101
+ return spectreUi.getTestimonialClasses({
2102
+ disabled: this.isDisabled,
2103
+ fullHeight: this.fullHeight ?? false,
2104
+ interactive: this.interactive ?? false,
2105
+ loading: this.loading ?? false,
2106
+ variant: this.variant
2107
+ });
2108
+ }
2109
+ get isDisabled() {
2110
+ return (this.disabled ?? false) || (this.loading ?? false);
2111
+ }
2112
+ render() {
2113
+ return lit.html`<div
2114
+ aria-busy="${this.loading ? "true" : "false"}"
2115
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2116
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
2117
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2118
+ class="${this.testimonialClasses}"
2119
+ data-sp-testimonial-native
2120
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2121
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2122
+ >
2123
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
2124
+ </div>`;
2125
+ }
2126
+ };
2127
+ SpectreTestimonialElement.properties = {
2128
+ disabled: { type: Boolean, reflect: true },
2129
+ fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
2130
+ interactive: { type: Boolean, reflect: true },
2131
+ loading: { type: Boolean, reflect: true },
2132
+ variant: { type: String, reflect: true }
2133
+ };
2134
+ function defineSpectreTestimonial(tagName = "sp-testimonial") {
2135
+ const existingElement = customElements.get(tagName);
2136
+ if (existingElement) {
2137
+ return existingElement;
2138
+ }
2139
+ customElements.define(tagName, SpectreTestimonialElement);
2140
+ return SpectreTestimonialElement;
2141
+ }
2142
+ var SpectreAlertElement = class extends SpectreProjectableElement {
2143
+ constructor() {
2144
+ super(...arguments);
2145
+ this.dismissed = false;
2146
+ this.disabled = false;
2147
+ this.fullWidth = false;
2148
+ this.loading = false;
2149
+ this.size = "md";
2150
+ this.variant = "info";
2151
+ }
2152
+ get id() {
2153
+ return super.id;
2154
+ }
2155
+ set id(value) {
2156
+ super.id = value;
2157
+ }
2158
+ get title() {
2159
+ return super.title;
2160
+ }
2161
+ set title(value) {
2162
+ super.title = value;
2163
+ }
2164
+ getContentContainer() {
2165
+ return this.querySelector("[data-sp-alert-native]");
2166
+ }
2167
+ isInternalNode(node) {
2168
+ if (node.nodeType !== Node.ELEMENT_NODE) {
2169
+ return false;
2170
+ }
2171
+ const el = node;
2172
+ return el.hasAttribute("data-sp-alert-native");
2173
+ }
2174
+ willUpdate(changedProperties) {
2175
+ if (changedProperties.has("dismissed") && this.dismissed == null) {
2176
+ this.dismissed = false;
2177
+ }
2178
+ if (changedProperties.has("disabled") && this.disabled == null) {
2179
+ this.disabled = false;
2180
+ }
2181
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
2182
+ this.fullWidth = false;
2183
+ }
2184
+ if (changedProperties.has("loading") && this.loading == null) {
2185
+ this.loading = false;
2186
+ }
2187
+ if (changedProperties.has("variant") && (this.variant == null || !isAlertVariant(this.variant))) {
2188
+ this.variant = "info";
2189
+ }
2190
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
2191
+ this.size = "md";
2192
+ }
2193
+ }
2194
+ get alertClasses() {
2195
+ return spectreUi.getAlertClasses({
2196
+ disabled: this.isDisabled,
2197
+ dismissed: this.dismissed ?? false,
2198
+ fullWidth: this.fullWidth ?? false,
2199
+ loading: this.loading ?? false,
2200
+ size: this.size,
2201
+ variant: this.variant
2202
+ });
2203
+ }
2204
+ get isDisabled() {
2205
+ return (this.disabled ?? false) || (this.loading ?? false);
2206
+ }
2207
+ render() {
2208
+ return lit.html`<div
2209
+ aria-busy="${this.loading ? "true" : "false"}"
2210
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2211
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
2212
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2213
+ class="${this.alertClasses}"
2214
+ data-sp-alert-native
2215
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2216
+ role="alert"
2217
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2218
+ >
2219
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
2220
+ </div>`;
2221
+ }
2222
+ };
2223
+ SpectreAlertElement.properties = {
2224
+ dismissed: { type: Boolean, reflect: true },
2225
+ disabled: { type: Boolean, reflect: true },
2226
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
2227
+ loading: { type: Boolean, reflect: true },
2228
+ size: { type: String, reflect: true },
2229
+ variant: { type: String, reflect: true }
2230
+ };
2231
+ function defineSpectreAlert(tagName = "sp-alert") {
2232
+ const existingElement = customElements.get(tagName);
2233
+ if (existingElement) {
2234
+ return existingElement;
2235
+ }
2236
+ customElements.define(tagName, SpectreAlertElement);
2237
+ return SpectreAlertElement;
2238
+ }
2239
+ var SpectreAvatarElement = class extends SpectreProjectableElement {
2240
+ constructor() {
2241
+ super(...arguments);
2242
+ this.disabled = false;
2243
+ this.fullWidth = false;
2244
+ this.interactive = false;
2245
+ this.loading = false;
2246
+ this.placeholder = false;
2247
+ this.shape = "circle";
2248
+ this.size = "md";
2249
+ }
2250
+ get id() {
2251
+ return super.id;
2252
+ }
2253
+ set id(value) {
2254
+ super.id = value;
2255
+ }
2256
+ get title() {
2257
+ return super.title;
2258
+ }
2259
+ set title(value) {
2260
+ super.title = value;
2261
+ }
2262
+ getContentContainer() {
2263
+ return this.querySelector("[data-sp-avatar-native]");
2264
+ }
2265
+ isInternalNode(node) {
2266
+ if (node.nodeType !== Node.ELEMENT_NODE) {
2267
+ return false;
2268
+ }
2269
+ const el = node;
2270
+ return el.hasAttribute("data-sp-avatar-native");
2271
+ }
2272
+ willUpdate(changedProperties) {
2273
+ if (changedProperties.has("disabled") && this.disabled == null) {
2274
+ this.disabled = false;
2275
+ }
2276
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
2277
+ this.fullWidth = false;
2278
+ }
2279
+ if (changedProperties.has("interactive") && this.interactive == null) {
2280
+ this.interactive = false;
2281
+ }
2282
+ if (changedProperties.has("loading") && this.loading == null) {
2283
+ this.loading = false;
2284
+ }
2285
+ if (changedProperties.has("placeholder") && this.placeholder == null) {
2286
+ this.placeholder = false;
2287
+ }
2288
+ if (changedProperties.has("shape") && (this.shape == null || !isAvatarShape(this.shape))) {
2289
+ this.shape = "circle";
2290
+ }
2291
+ if (changedProperties.has("size") && (this.size == null || !isAvatarSize(this.size))) {
2292
+ this.size = "md";
2293
+ }
2294
+ }
2295
+ get avatarClasses() {
2296
+ return spectreUi.getAvatarClasses({
2297
+ disabled: this.isDisabled,
2298
+ fullWidth: this.fullWidth ?? false,
2299
+ interactive: this.interactive ?? false,
2300
+ loading: this.loading ?? false,
2301
+ placeholder: this.placeholder ?? false,
2302
+ shape: this.shape,
2303
+ size: this.size
2304
+ });
2305
+ }
2306
+ get isDisabled() {
2307
+ return (this.disabled ?? false) || (this.loading ?? false);
2308
+ }
2309
+ render() {
2310
+ return lit.html`<div
2311
+ aria-busy="${this.loading ? "true" : "false"}"
2312
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2313
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
2314
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2315
+ class="${this.avatarClasses}"
2316
+ data-sp-avatar-native
2317
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2318
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2319
+ >
2320
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
2321
+ </div>`;
2322
+ }
2323
+ };
2324
+ SpectreAvatarElement.properties = {
2325
+ disabled: { type: Boolean, reflect: true },
2326
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
2327
+ interactive: { type: Boolean, reflect: true },
2328
+ loading: { type: Boolean, reflect: true },
2329
+ placeholder: { type: Boolean, reflect: true },
2330
+ shape: { type: String, reflect: true },
2331
+ size: { type: String, reflect: true }
2332
+ };
2333
+ function defineSpectreAvatar(tagName = "sp-avatar") {
2334
+ const existingElement = customElements.get(tagName);
2335
+ if (existingElement) {
2336
+ return existingElement;
2337
+ }
2338
+ customElements.define(tagName, SpectreAvatarElement);
2339
+ return SpectreAvatarElement;
2340
+ }
2341
+ var SpectreSpinnerElement = class extends SpectreBaseElement {
2342
+ constructor() {
2343
+ super(...arguments);
2344
+ this.disabled = false;
2345
+ this.loading = true;
2346
+ this.size = "md";
2347
+ }
2348
+ get id() {
2349
+ return super.id;
2350
+ }
2351
+ set id(value) {
2352
+ super.id = value;
2353
+ }
2354
+ get title() {
2355
+ return super.title;
2356
+ }
2357
+ set title(value) {
2358
+ super.title = value;
2359
+ }
2360
+ willUpdate(changedProperties) {
2361
+ if (changedProperties.has("disabled") && this.disabled == null) {
2362
+ this.disabled = false;
2363
+ }
2364
+ if (changedProperties.has("loading") && this.loading == null) {
2365
+ this.loading = true;
2366
+ }
2367
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
2368
+ this.size = "md";
2369
+ }
2370
+ if (changedProperties.has("variant") && this.variant != null && !isSpinnerVariant(this.variant)) {
2371
+ this.variant = void 0;
2372
+ }
2373
+ }
2374
+ get spinnerClasses() {
2375
+ return spectreUi.getSpinnerClasses({
2376
+ disabled: this.disabled ?? false,
2377
+ loading: this.loading ?? true,
2378
+ size: this.size,
2379
+ ...this.variant != null ? { variant: this.variant } : {}
2380
+ });
2381
+ }
2382
+ get computedAriaLabel() {
2383
+ return this.forwardedAriaLabel ?? "Loading";
2384
+ }
2385
+ render() {
2386
+ return lit.html`<div
2387
+ aria-busy="${this.loading ? "true" : "false"}"
2388
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2389
+ aria-label="${this.computedAriaLabel}"
2390
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2391
+ class="${this.spinnerClasses}"
2392
+ data-sp-spinner-native
2393
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2394
+ role="status"
2395
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2396
+ ></div>`;
2397
+ }
2398
+ };
2399
+ SpectreSpinnerElement.properties = {
2400
+ disabled: { type: Boolean, reflect: true },
2401
+ loading: { type: Boolean, reflect: true },
2402
+ size: { type: String, reflect: true },
2403
+ variant: { type: String, reflect: true }
2404
+ };
2405
+ function defineSpectreSpinner(tagName = "sp-spinner") {
2406
+ const existingElement = customElements.get(tagName);
2407
+ if (existingElement) {
2408
+ return existingElement;
2409
+ }
2410
+ customElements.define(tagName, SpectreSpinnerElement);
2411
+ return SpectreSpinnerElement;
2412
+ }
2413
+ var SpectreTagElement = class extends SpectreProjectableElement {
2414
+ constructor() {
2415
+ super(...arguments);
2416
+ this.dismissible = false;
2417
+ this.disabled = false;
2418
+ this.fullWidth = false;
2419
+ this.interactive = false;
2420
+ this.loading = false;
2421
+ this.selected = false;
2422
+ this.size = "md";
2423
+ this.variant = "default";
2424
+ }
2425
+ get id() {
2426
+ return super.id;
2427
+ }
2428
+ set id(value) {
2429
+ super.id = value;
2430
+ }
2431
+ get title() {
2432
+ return super.title;
2433
+ }
2434
+ set title(value) {
2435
+ super.title = value;
2436
+ }
2437
+ getContentContainer() {
2438
+ return this.querySelector("[data-sp-tag-native]");
2439
+ }
2440
+ isInternalNode(node) {
2441
+ if (node.nodeType !== Node.ELEMENT_NODE) {
2442
+ return false;
2443
+ }
2444
+ const el = node;
2445
+ return el.hasAttribute("data-sp-tag-native");
2446
+ }
2447
+ willUpdate(changedProperties) {
2448
+ if (changedProperties.has("dismissible") && this.dismissible == null) {
2449
+ this.dismissible = false;
2450
+ }
2451
+ if (changedProperties.has("disabled") && this.disabled == null) {
2452
+ this.disabled = false;
2453
+ }
2454
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
2455
+ this.fullWidth = false;
2456
+ }
2457
+ if (changedProperties.has("interactive") && this.interactive == null) {
2458
+ this.interactive = false;
2459
+ }
2460
+ if (changedProperties.has("loading") && this.loading == null) {
2461
+ this.loading = false;
2462
+ }
2463
+ if (changedProperties.has("selected") && this.selected == null) {
2464
+ this.selected = false;
2465
+ }
2466
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
2467
+ this.size = "md";
2468
+ }
2469
+ if (changedProperties.has("variant") && (this.variant == null || !isTagVariant(this.variant))) {
2470
+ this.variant = "default";
2471
+ }
2472
+ }
2473
+ get tagClasses() {
2474
+ return spectreUi.getTagClasses({
2475
+ disabled: this.isDisabled,
2476
+ dismissible: this.dismissible ?? false,
2477
+ fullWidth: this.fullWidth ?? false,
2478
+ interactive: this.interactive ?? false,
2479
+ loading: this.loading ?? false,
2480
+ selected: this.selected ?? false,
2481
+ size: this.size,
2482
+ variant: this.variant
2483
+ });
2484
+ }
2485
+ get isDisabled() {
2486
+ return (this.disabled ?? false) || (this.loading ?? false);
2487
+ }
2488
+ render() {
2489
+ return lit.html`<span
2490
+ aria-busy="${this.loading ? "true" : "false"}"
2491
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2492
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
2493
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2494
+ class="${this.tagClasses}"
2495
+ data-sp-tag-native
2496
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2497
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2498
+ >
2499
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
2500
+ </span>`;
2501
+ }
2502
+ };
2503
+ SpectreTagElement.properties = {
2504
+ dismissible: { type: Boolean, reflect: true },
2505
+ disabled: { type: Boolean, reflect: true },
2506
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
2507
+ interactive: { type: Boolean, reflect: true },
2508
+ loading: { type: Boolean, reflect: true },
2509
+ selected: { type: Boolean, reflect: true },
2510
+ size: { type: String, reflect: true },
2511
+ variant: { type: String, reflect: true }
2512
+ };
2513
+ function defineSpectreTag(tagName = "sp-tag") {
2514
+ const existingElement = customElements.get(tagName);
2515
+ if (existingElement) {
2516
+ return existingElement;
2517
+ }
2518
+ customElements.define(tagName, SpectreTagElement);
2519
+ return SpectreTagElement;
2520
+ }
2521
+ var SpectrePricingCardElement = class extends SpectreProjectableElement {
2522
+ constructor() {
2523
+ super(...arguments);
2524
+ this.disabled = false;
2525
+ this.featured = false;
2526
+ this.fullHeight = false;
2527
+ this.interactive = false;
2528
+ this.loading = false;
2529
+ }
2530
+ get id() {
2531
+ return super.id;
2532
+ }
2533
+ set id(value) {
2534
+ super.id = value;
2535
+ }
2536
+ get title() {
2537
+ return super.title;
2538
+ }
2539
+ set title(value) {
2540
+ super.title = value;
2541
+ }
2542
+ getContentContainer() {
2543
+ return this.querySelector("[data-sp-pricing-card-native]");
2544
+ }
2545
+ isInternalNode(node) {
2546
+ if (node.nodeType !== Node.ELEMENT_NODE) {
2547
+ return false;
2548
+ }
2549
+ const el = node;
2550
+ return el.hasAttribute("data-sp-pricing-card-native");
2551
+ }
2552
+ willUpdate(changedProperties) {
2553
+ if (changedProperties.has("disabled") && this.disabled == null) {
2554
+ this.disabled = false;
2555
+ }
2556
+ if (changedProperties.has("featured") && this.featured == null) {
2557
+ this.featured = false;
2558
+ }
2559
+ if (changedProperties.has("fullHeight") && this.fullHeight == null) {
2560
+ this.fullHeight = false;
2561
+ }
2562
+ if (changedProperties.has("interactive") && this.interactive == null) {
2563
+ this.interactive = false;
2564
+ }
2565
+ if (changedProperties.has("loading") && this.loading == null) {
2566
+ this.loading = false;
2567
+ }
2568
+ }
2569
+ get pricingCardClasses() {
2570
+ return spectreUi.getPricingCardClasses({
2571
+ disabled: this.isDisabled,
2572
+ featured: this.featured ?? false,
2573
+ fullHeight: this.fullHeight ?? false,
2574
+ interactive: this.interactive ?? false,
2575
+ loading: this.loading ?? false
2576
+ });
2577
+ }
2578
+ get isDisabled() {
2579
+ return (this.disabled ?? false) || (this.loading ?? false);
2580
+ }
2581
+ render() {
2582
+ return lit.html`<div
2583
+ aria-busy="${this.loading ? "true" : "false"}"
2584
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2585
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
2586
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2587
+ class="${this.pricingCardClasses}"
2588
+ data-sp-pricing-card-native
2589
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2590
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2591
+ >
2592
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
2593
+ </div>`;
2594
+ }
2595
+ };
2596
+ SpectrePricingCardElement.properties = {
2597
+ disabled: { type: Boolean, reflect: true },
2598
+ featured: { type: Boolean, reflect: true },
2599
+ fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
2600
+ interactive: { type: Boolean, reflect: true },
2601
+ loading: { type: Boolean, reflect: true }
2602
+ };
2603
+ function defineSpectrePricingCard(tagName = "sp-pricing-card") {
2604
+ const existingElement = customElements.get(tagName);
2605
+ if (existingElement) {
2606
+ return existingElement;
2607
+ }
2608
+ customElements.define(tagName, SpectrePricingCardElement);
2609
+ return SpectrePricingCardElement;
2610
+ }
1533
2611
 
1534
2612
  // src/index.ts
1535
2613
  function defineSpectreComponents() {
@@ -1541,29 +2619,74 @@ function defineSpectreComponents() {
1541
2619
  defineSpectreRadio();
1542
2620
  defineSpectreLabel();
1543
2621
  defineSpectreFieldset();
2622
+ defineSpectreBadge();
2623
+ defineSpectreCard();
2624
+ defineSpectreIconBox();
2625
+ defineSpectreRating();
2626
+ defineSpectreTestimonial();
2627
+ defineSpectreAlert();
2628
+ defineSpectreAvatar();
2629
+ defineSpectreSpinner();
2630
+ defineSpectreTag();
2631
+ defineSpectrePricingCard();
1544
2632
  }
1545
2633
 
2634
+ exports.SpectreAlertElement = SpectreAlertElement;
2635
+ exports.SpectreAvatarElement = SpectreAvatarElement;
2636
+ exports.SpectreBadgeElement = SpectreBadgeElement;
1546
2637
  exports.SpectreButtonElement = SpectreButtonElement;
2638
+ exports.SpectreCardElement = SpectreCardElement;
1547
2639
  exports.SpectreCheckboxElement = SpectreCheckboxElement;
1548
2640
  exports.SpectreFieldsetElement = SpectreFieldsetElement;
2641
+ exports.SpectreIconBoxElement = SpectreIconBoxElement;
1549
2642
  exports.SpectreInputElement = SpectreInputElement;
1550
2643
  exports.SpectreLabelElement = SpectreLabelElement;
2644
+ exports.SpectrePricingCardElement = SpectrePricingCardElement;
1551
2645
  exports.SpectreRadioElement = SpectreRadioElement;
2646
+ exports.SpectreRatingElement = SpectreRatingElement;
1552
2647
  exports.SpectreSelectElement = SpectreSelectElement;
2648
+ exports.SpectreSpinnerElement = SpectreSpinnerElement;
2649
+ exports.SpectreTagElement = SpectreTagElement;
2650
+ exports.SpectreTestimonialElement = SpectreTestimonialElement;
1553
2651
  exports.SpectreTextareaElement = SpectreTextareaElement;
2652
+ exports.defineSpectreAlert = defineSpectreAlert;
2653
+ exports.defineSpectreAvatar = defineSpectreAvatar;
2654
+ exports.defineSpectreBadge = defineSpectreBadge;
1554
2655
  exports.defineSpectreButton = defineSpectreButton;
2656
+ exports.defineSpectreCard = defineSpectreCard;
1555
2657
  exports.defineSpectreCheckbox = defineSpectreCheckbox;
1556
2658
  exports.defineSpectreComponents = defineSpectreComponents;
1557
2659
  exports.defineSpectreFieldset = defineSpectreFieldset;
2660
+ exports.defineSpectreIconBox = defineSpectreIconBox;
1558
2661
  exports.defineSpectreInput = defineSpectreInput;
1559
2662
  exports.defineSpectreLabel = defineSpectreLabel;
2663
+ exports.defineSpectrePricingCard = defineSpectrePricingCard;
1560
2664
  exports.defineSpectreRadio = defineSpectreRadio;
2665
+ exports.defineSpectreRating = defineSpectreRating;
1561
2666
  exports.defineSpectreSelect = defineSpectreSelect;
2667
+ exports.defineSpectreSpinner = defineSpectreSpinner;
2668
+ exports.defineSpectreTag = defineSpectreTag;
2669
+ exports.defineSpectreTestimonial = defineSpectreTestimonial;
1562
2670
  exports.defineSpectreTextarea = defineSpectreTextarea;
2671
+ exports.spectreAlertSizes = spectreInputSizes;
2672
+ exports.spectreAlertVariants = spectreAlertVariants;
2673
+ exports.spectreAvatarShapes = spectreAvatarShapes;
2674
+ exports.spectreAvatarSizes = spectreAvatarSizes;
2675
+ exports.spectreBadgeSizes = spectreInputSizes;
2676
+ exports.spectreBadgeVariants = spectreBadgeVariants;
1563
2677
  exports.spectreButtonSizes = spectreInputSizes;
1564
2678
  exports.spectreButtonTypes = spectreButtonTypes;
1565
2679
  exports.spectreButtonVariants = spectreButtonVariants;
2680
+ exports.spectreCardVariants = spectreCardVariants;
2681
+ exports.spectreIconBoxSizes = spectreInputSizes;
2682
+ exports.spectreIconBoxVariants = spectreIconBoxVariants;
1566
2683
  exports.spectreInputSizes = spectreInputSizes;
1567
2684
  exports.spectreInputTypes = spectreInputTypes;
2685
+ exports.spectreRatingSizes = spectreInputSizes;
2686
+ exports.spectreSpinnerSizes = spectreInputSizes;
2687
+ exports.spectreSpinnerVariants = spectreSpinnerVariants;
2688
+ exports.spectreTagSizes = spectreInputSizes;
2689
+ exports.spectreTagVariants = spectreTagVariants;
2690
+ exports.spectreTestimonialVariants = spectreTestimonialVariants;
1568
2691
  //# sourceMappingURL=index.cjs.map
1569
2692
  //# sourceMappingURL=index.cjs.map