@phcdevworks/spectre-components 1.3.0 → 1.4.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 (66) hide show
  1. package/README.md +359 -199
  2. package/dist/badge.cjs +450 -0
  3. package/dist/badge.cjs.map +1 -0
  4. package/dist/badge.d.cts +61 -0
  5. package/dist/badge.d.ts +61 -0
  6. package/dist/badge.js +445 -0
  7. package/dist/badge.js.map +1 -0
  8. package/dist/button.cjs.map +1 -1
  9. package/dist/button.d.cts +2 -2
  10. package/dist/button.d.ts +2 -2
  11. package/dist/button.js.map +1 -1
  12. package/dist/card.cjs +439 -0
  13. package/dist/card.cjs.map +1 -0
  14. package/dist/card.d.cts +67 -0
  15. package/dist/card.d.ts +67 -0
  16. package/dist/card.js +435 -0
  17. package/dist/card.js.map +1 -0
  18. package/dist/fieldset.cjs +14 -0
  19. package/dist/fieldset.cjs.map +1 -1
  20. package/dist/fieldset.d.cts +6 -0
  21. package/dist/fieldset.d.ts +6 -0
  22. package/dist/fieldset.js +14 -0
  23. package/dist/fieldset.js.map +1 -1
  24. package/dist/form-Dg6kuOS7.d.cts +18 -0
  25. package/dist/form-Dg6kuOS7.d.ts +18 -0
  26. package/dist/icon-box.cjs +462 -0
  27. package/dist/icon-box.cjs.map +1 -0
  28. package/dist/icon-box.d.cts +73 -0
  29. package/dist/icon-box.d.ts +73 -0
  30. package/dist/icon-box.js +457 -0
  31. package/dist/icon-box.js.map +1 -0
  32. package/dist/index.cjs +550 -0
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +6 -1
  35. package/dist/index.d.ts +6 -1
  36. package/dist/index.js +535 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/input.cjs.map +1 -1
  39. package/dist/input.d.cts +2 -2
  40. package/dist/input.d.ts +2 -2
  41. package/dist/input.js.map +1 -1
  42. package/dist/rating.cjs +373 -0
  43. package/dist/rating.cjs.map +1 -0
  44. package/dist/rating.d.cts +67 -0
  45. package/dist/rating.d.ts +67 -0
  46. package/dist/rating.js +369 -0
  47. package/dist/rating.js.map +1 -0
  48. package/dist/select.cjs +14 -0
  49. package/dist/select.cjs.map +1 -1
  50. package/dist/select.d.cts +7 -1
  51. package/dist/select.d.ts +7 -1
  52. package/dist/select.js +14 -0
  53. package/dist/select.js.map +1 -1
  54. package/dist/testimonial.cjs +433 -0
  55. package/dist/testimonial.cjs.map +1 -0
  56. package/dist/testimonial.d.cts +61 -0
  57. package/dist/testimonial.d.ts +61 -0
  58. package/dist/testimonial.js +429 -0
  59. package/dist/testimonial.js.map +1 -0
  60. package/dist/textarea.cjs.map +1 -1
  61. package/dist/textarea.d.cts +1 -1
  62. package/dist/textarea.d.ts +1 -1
  63. package/dist/textarea.js.map +1 -1
  64. package/package.json +35 -8
  65. package/dist/form-yR_u97J-.d.cts +0 -10
  66. package/dist/form-yR_u97J-.d.ts +0 -10
package/dist/index.cjs CHANGED
@@ -43,6 +43,46 @@ 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 spectreCardVariants = ["elevated", "flat", "outline", "ghost"];
63
+ function isCardVariant(value) {
64
+ return spectreCardVariants.includes(value);
65
+ }
66
+ var spectreIconBoxVariants = [
67
+ "primary",
68
+ "secondary",
69
+ "success",
70
+ "warning",
71
+ "danger",
72
+ "info",
73
+ "neutral",
74
+ "ghost",
75
+ "accent",
76
+ "cta",
77
+ "outline"
78
+ ];
79
+ function isIconBoxVariant(value) {
80
+ return spectreIconBoxVariants.includes(value);
81
+ }
82
+ var spectreTestimonialVariants = ["elevated", "flat", "outline", "ghost"];
83
+ function isTestimonialVariant(value) {
84
+ return spectreTestimonialVariants.includes(value);
85
+ }
46
86
  function normalizeInt(value, fallback, min = 0) {
47
87
  if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
48
88
  return fallback;
@@ -924,12 +964,24 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
924
964
  set title(value) {
925
965
  super.title = value;
926
966
  }
967
+ get autocapitalize() {
968
+ return super.autocapitalize;
969
+ }
970
+ set autocapitalize(value) {
971
+ super.autocapitalize = value;
972
+ }
927
973
  get autofocus() {
928
974
  return super.autofocus;
929
975
  }
930
976
  set autofocus(value) {
931
977
  super.autofocus = value;
932
978
  }
979
+ get spellcheck() {
980
+ return super.spellcheck;
981
+ }
982
+ set spellcheck(value) {
983
+ super.spellcheck = value;
984
+ }
933
985
  getContentContainer() {
934
986
  return this.querySelector("[data-sp-select-native]");
935
987
  }
@@ -1025,6 +1077,7 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
1025
1077
  aria-invalid="${ifDefined_js.ifDefined(this.invalid ? "true" : void 0)}"
1026
1078
  aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1027
1079
  aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1080
+ autocapitalize="${ifDefined_js.ifDefined(this.autocapitalize || void 0)}"
1028
1081
  autocomplete="${ifDefined_js.ifDefined(this.autocomplete || void 0)}"
1029
1082
  ?autofocus="${this.autofocus}"
1030
1083
  class="${this.selectClasses}"
@@ -1034,6 +1087,7 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
1034
1087
  id="${ifDefined_js.ifDefined(this.id || void 0)}"
1035
1088
  name="${ifDefined_js.ifDefined(this.name || void 0)}"
1036
1089
  ?required="${this.required}"
1090
+ spellcheck="${ifDefined_js.ifDefined(this.getAttribute("spellcheck") ?? void 0)}"
1037
1091
  title="${ifDefined_js.ifDefined(this.title || void 0)}"
1038
1092
  .value="${live_js.live(this.value)}"
1039
1093
  @change="${this.handleChange}"
@@ -1447,12 +1501,24 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
1447
1501
  set title(value) {
1448
1502
  super.title = value;
1449
1503
  }
1504
+ get autocapitalize() {
1505
+ return super.autocapitalize;
1506
+ }
1507
+ set autocapitalize(value) {
1508
+ super.autocapitalize = value;
1509
+ }
1450
1510
  get autofocus() {
1451
1511
  return super.autofocus;
1452
1512
  }
1453
1513
  set autofocus(value) {
1454
1514
  super.autofocus = value;
1455
1515
  }
1516
+ get spellcheck() {
1517
+ return super.spellcheck;
1518
+ }
1519
+ set spellcheck(value) {
1520
+ super.spellcheck = value;
1521
+ }
1456
1522
  get visibleLegend() {
1457
1523
  const trimmedLegend = this.legend?.trim();
1458
1524
  return trimmedLegend ? trimmedLegend : void 0;
@@ -1497,12 +1563,14 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
1497
1563
  aria-invalid="${ifDefined_js.ifDefined(this.invalid ? "true" : void 0)}"
1498
1564
  aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1499
1565
  aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1566
+ autocapitalize="${ifDefined_js.ifDefined(this.autocapitalize || void 0)}"
1500
1567
  ?autofocus="${this.autofocus}"
1501
1568
  data-sp-fieldset-native
1502
1569
  ?disabled="${this.isDisabled}"
1503
1570
  form="${ifDefined_js.ifDefined(this.form || void 0)}"
1504
1571
  id="${ifDefined_js.ifDefined(this.id || void 0)}"
1505
1572
  name="${ifDefined_js.ifDefined(this.name || void 0)}"
1573
+ spellcheck="${ifDefined_js.ifDefined(this.getAttribute("spellcheck") ?? void 0)}"
1506
1574
  title="${ifDefined_js.ifDefined(this.title || void 0)}"
1507
1575
  >
1508
1576
  ${this.visibleLegend ? lit.html`<legend
@@ -1530,6 +1598,466 @@ function defineSpectreFieldset(tagName = "sp-fieldset") {
1530
1598
  customElements.define(tagName, SpectreFieldsetElement);
1531
1599
  return SpectreFieldsetElement;
1532
1600
  }
1601
+ var SpectreBadgeElement = class extends SpectreProjectableElement {
1602
+ constructor() {
1603
+ super(...arguments);
1604
+ this.disabled = false;
1605
+ this.fullWidth = false;
1606
+ this.loading = false;
1607
+ this.size = "md";
1608
+ this.variant = "primary";
1609
+ }
1610
+ get id() {
1611
+ return super.id;
1612
+ }
1613
+ set id(value) {
1614
+ super.id = value;
1615
+ }
1616
+ get title() {
1617
+ return super.title;
1618
+ }
1619
+ set title(value) {
1620
+ super.title = value;
1621
+ }
1622
+ getContentContainer() {
1623
+ return this.querySelector("[data-sp-badge-native]");
1624
+ }
1625
+ isInternalNode(node) {
1626
+ if (node.nodeType !== Node.ELEMENT_NODE) {
1627
+ return false;
1628
+ }
1629
+ const el = node;
1630
+ return el.hasAttribute("data-sp-badge-native");
1631
+ }
1632
+ willUpdate(changedProperties) {
1633
+ if (changedProperties.has("disabled") && this.disabled == null) {
1634
+ this.disabled = false;
1635
+ }
1636
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
1637
+ this.fullWidth = false;
1638
+ }
1639
+ if (changedProperties.has("loading") && this.loading == null) {
1640
+ this.loading = false;
1641
+ }
1642
+ if (changedProperties.has("variant") && (this.variant == null || !isBadgeVariant(this.variant))) {
1643
+ this.variant = "primary";
1644
+ }
1645
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
1646
+ this.size = "md";
1647
+ }
1648
+ }
1649
+ get badgeClasses() {
1650
+ return spectreUi.getBadgeClasses({
1651
+ disabled: this.disabled ?? false,
1652
+ fullWidth: this.fullWidth ?? false,
1653
+ loading: this.loading ?? false,
1654
+ size: this.size,
1655
+ variant: this.variant
1656
+ });
1657
+ }
1658
+ render() {
1659
+ return lit.html`<span
1660
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1661
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1662
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1663
+ class="${this.badgeClasses}"
1664
+ data-sp-badge-native
1665
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1666
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1667
+ >
1668
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
1669
+ </span>`;
1670
+ }
1671
+ };
1672
+ SpectreBadgeElement.properties = {
1673
+ disabled: { type: Boolean, reflect: true },
1674
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
1675
+ loading: { type: Boolean, reflect: true },
1676
+ size: { type: String, reflect: true },
1677
+ variant: { type: String, reflect: true }
1678
+ };
1679
+ function defineSpectreBadge(tagName = "sp-badge") {
1680
+ const existingElement = customElements.get(tagName);
1681
+ if (existingElement) {
1682
+ return existingElement;
1683
+ }
1684
+ customElements.define(tagName, SpectreBadgeElement);
1685
+ return SpectreBadgeElement;
1686
+ }
1687
+ var SpectreCardElement = class extends SpectreProjectableElement {
1688
+ constructor() {
1689
+ super(...arguments);
1690
+ this.disabled = false;
1691
+ this.fullHeight = false;
1692
+ this.interactive = false;
1693
+ this.loading = false;
1694
+ this.padded = true;
1695
+ this.variant = "elevated";
1696
+ }
1697
+ get id() {
1698
+ return super.id;
1699
+ }
1700
+ set id(value) {
1701
+ super.id = value;
1702
+ }
1703
+ get title() {
1704
+ return super.title;
1705
+ }
1706
+ set title(value) {
1707
+ super.title = value;
1708
+ }
1709
+ getContentContainer() {
1710
+ return this.querySelector("[data-sp-card-native]");
1711
+ }
1712
+ isInternalNode(node) {
1713
+ if (node.nodeType !== Node.ELEMENT_NODE) {
1714
+ return false;
1715
+ }
1716
+ const el = node;
1717
+ return el.hasAttribute("data-sp-card-native");
1718
+ }
1719
+ willUpdate(changedProperties) {
1720
+ if (changedProperties.has("disabled") && this.disabled == null) {
1721
+ this.disabled = false;
1722
+ }
1723
+ if (changedProperties.has("fullHeight") && this.fullHeight == null) {
1724
+ this.fullHeight = false;
1725
+ }
1726
+ if (changedProperties.has("interactive") && this.interactive == null) {
1727
+ this.interactive = false;
1728
+ }
1729
+ if (changedProperties.has("loading") && this.loading == null) {
1730
+ this.loading = false;
1731
+ }
1732
+ if (changedProperties.has("padded") && this.padded == null) {
1733
+ this.padded = true;
1734
+ }
1735
+ if (changedProperties.has("variant") && (this.variant == null || !isCardVariant(this.variant))) {
1736
+ this.variant = "elevated";
1737
+ }
1738
+ }
1739
+ get cardClasses() {
1740
+ return spectreUi.getCardClasses({
1741
+ disabled: this.disabled ?? false,
1742
+ fullHeight: this.fullHeight ?? false,
1743
+ interactive: this.interactive ?? false,
1744
+ loading: this.loading ?? false,
1745
+ padded: this.padded ?? true,
1746
+ variant: this.variant
1747
+ });
1748
+ }
1749
+ render() {
1750
+ return lit.html`<div
1751
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1752
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1753
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1754
+ class="${this.cardClasses}"
1755
+ data-sp-card-native
1756
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1757
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1758
+ >
1759
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
1760
+ </div>`;
1761
+ }
1762
+ };
1763
+ SpectreCardElement.properties = {
1764
+ disabled: { type: Boolean, reflect: true },
1765
+ fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
1766
+ interactive: { type: Boolean, reflect: true },
1767
+ loading: { type: Boolean, reflect: true },
1768
+ padded: { type: Boolean, reflect: true },
1769
+ variant: { type: String, reflect: true }
1770
+ };
1771
+ function defineSpectreCard(tagName = "sp-card") {
1772
+ const existingElement = customElements.get(tagName);
1773
+ if (existingElement) {
1774
+ return existingElement;
1775
+ }
1776
+ customElements.define(tagName, SpectreCardElement);
1777
+ return SpectreCardElement;
1778
+ }
1779
+ var SpectreIconBoxElement = class extends SpectreProjectableElement {
1780
+ constructor() {
1781
+ super(...arguments);
1782
+ this.disabled = false;
1783
+ this.fullWidth = false;
1784
+ this.interactive = false;
1785
+ this.loading = false;
1786
+ this.pill = false;
1787
+ this.size = "md";
1788
+ this.variant = "primary";
1789
+ }
1790
+ get id() {
1791
+ return super.id;
1792
+ }
1793
+ set id(value) {
1794
+ super.id = value;
1795
+ }
1796
+ get title() {
1797
+ return super.title;
1798
+ }
1799
+ set title(value) {
1800
+ super.title = value;
1801
+ }
1802
+ getContentContainer() {
1803
+ return this.querySelector("[data-sp-icon-box-native]");
1804
+ }
1805
+ isInternalNode(node) {
1806
+ if (node.nodeType !== Node.ELEMENT_NODE) {
1807
+ return false;
1808
+ }
1809
+ const el = node;
1810
+ return el.hasAttribute("data-sp-icon-box-native");
1811
+ }
1812
+ willUpdate(changedProperties) {
1813
+ if (changedProperties.has("disabled") && this.disabled == null) {
1814
+ this.disabled = false;
1815
+ }
1816
+ if (changedProperties.has("fullWidth") && this.fullWidth == null) {
1817
+ this.fullWidth = false;
1818
+ }
1819
+ if (changedProperties.has("interactive") && this.interactive == null) {
1820
+ this.interactive = false;
1821
+ }
1822
+ if (changedProperties.has("loading") && this.loading == null) {
1823
+ this.loading = false;
1824
+ }
1825
+ if (changedProperties.has("pill") && this.pill == null) {
1826
+ this.pill = false;
1827
+ }
1828
+ if (changedProperties.has("variant") && (this.variant == null || !isIconBoxVariant(this.variant))) {
1829
+ this.variant = "primary";
1830
+ }
1831
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
1832
+ this.size = "md";
1833
+ }
1834
+ }
1835
+ get iconBoxClasses() {
1836
+ return spectreUi.getIconBoxClasses({
1837
+ disabled: this.disabled ?? false,
1838
+ fullWidth: this.fullWidth ?? false,
1839
+ interactive: this.interactive ?? false,
1840
+ loading: this.loading ?? false,
1841
+ pill: this.pill ?? false,
1842
+ size: this.size,
1843
+ variant: this.variant
1844
+ });
1845
+ }
1846
+ render() {
1847
+ return lit.html`<div
1848
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1849
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
1850
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1851
+ class="${this.iconBoxClasses}"
1852
+ data-sp-icon-box-native
1853
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1854
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1855
+ >
1856
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
1857
+ </div>`;
1858
+ }
1859
+ };
1860
+ SpectreIconBoxElement.properties = {
1861
+ disabled: { type: Boolean, reflect: true },
1862
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
1863
+ interactive: { type: Boolean, reflect: true },
1864
+ loading: { type: Boolean, reflect: true },
1865
+ pill: { type: Boolean, reflect: true },
1866
+ size: { type: String, reflect: true },
1867
+ variant: { type: String, reflect: true }
1868
+ };
1869
+ function defineSpectreIconBox(tagName = "sp-icon-box") {
1870
+ const existingElement = customElements.get(tagName);
1871
+ if (existingElement) {
1872
+ return existingElement;
1873
+ }
1874
+ customElements.define(tagName, SpectreIconBoxElement);
1875
+ return SpectreIconBoxElement;
1876
+ }
1877
+ var SpectreRatingElement = class extends SpectreBaseElement {
1878
+ constructor() {
1879
+ super(...arguments);
1880
+ this.disabled = false;
1881
+ this.loading = false;
1882
+ this.max = 5;
1883
+ this.size = "md";
1884
+ this.value = 0;
1885
+ }
1886
+ get id() {
1887
+ return super.id;
1888
+ }
1889
+ set id(value) {
1890
+ super.id = value;
1891
+ }
1892
+ get title() {
1893
+ return super.title;
1894
+ }
1895
+ set title(value) {
1896
+ super.title = value;
1897
+ }
1898
+ willUpdate(changedProperties) {
1899
+ if (changedProperties.has("disabled") && this.disabled == null) {
1900
+ this.disabled = false;
1901
+ }
1902
+ if (changedProperties.has("loading") && this.loading == null) {
1903
+ this.loading = false;
1904
+ }
1905
+ if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
1906
+ this.size = "md";
1907
+ }
1908
+ if (changedProperties.has("max")) {
1909
+ this.max = normalizeInt(this.max, 5, 1) ?? 5;
1910
+ }
1911
+ if (changedProperties.has("value")) {
1912
+ const safeMax = this.max ?? 5;
1913
+ const normalized = normalizeInt(this.value, 0, 0);
1914
+ this.value = normalized == null ? 0 : Math.min(normalized, safeMax);
1915
+ }
1916
+ }
1917
+ get ratingClasses() {
1918
+ return spectreUi.getRatingClasses({
1919
+ disabled: this.disabled ?? false,
1920
+ loading: this.loading ?? false,
1921
+ size: this.size
1922
+ });
1923
+ }
1924
+ get effectiveMax() {
1925
+ return this.max ?? 5;
1926
+ }
1927
+ get effectiveValue() {
1928
+ return this.value ?? 0;
1929
+ }
1930
+ get computedAriaLabel() {
1931
+ const base = this.forwardedAriaLabel;
1932
+ if (base) return base;
1933
+ return `Rating: ${this.effectiveValue} out of ${this.effectiveMax}`;
1934
+ }
1935
+ renderStars() {
1936
+ const stars = [];
1937
+ for (let i = 1; i <= this.effectiveMax; i++) {
1938
+ stars.push(lit.html`<span class="${spectreUi.getRatingStarClasses(i <= this.effectiveValue)}"></span>`);
1939
+ }
1940
+ return stars;
1941
+ }
1942
+ render() {
1943
+ const trimmedLabel = this.label?.trim();
1944
+ return lit.html`<div
1945
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
1946
+ aria-label="${this.computedAriaLabel}"
1947
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
1948
+ class="${this.ratingClasses}"
1949
+ data-sp-rating-native
1950
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
1951
+ role="img"
1952
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
1953
+ >
1954
+ <div class="${spectreUi.getRatingStarsClasses()}">${this.renderStars()}</div>
1955
+ ${trimmedLabel ? lit.html`<span class="${spectreUi.getRatingTextClasses({ disabled: this.disabled ?? false })}">${trimmedLabel}</span>` : lit.nothing}
1956
+ </div>`;
1957
+ }
1958
+ };
1959
+ SpectreRatingElement.properties = {
1960
+ disabled: { type: Boolean, reflect: true },
1961
+ label: { type: String, reflect: true },
1962
+ loading: { type: Boolean, reflect: true },
1963
+ max: { type: Number, reflect: true },
1964
+ size: { type: String, reflect: true },
1965
+ value: { type: Number, reflect: true }
1966
+ };
1967
+ function defineSpectreRating(tagName = "sp-rating") {
1968
+ const existingElement = customElements.get(tagName);
1969
+ if (existingElement) {
1970
+ return existingElement;
1971
+ }
1972
+ customElements.define(tagName, SpectreRatingElement);
1973
+ return SpectreRatingElement;
1974
+ }
1975
+ var SpectreTestimonialElement = class extends SpectreProjectableElement {
1976
+ constructor() {
1977
+ super(...arguments);
1978
+ this.disabled = false;
1979
+ this.fullHeight = false;
1980
+ this.interactive = false;
1981
+ this.loading = false;
1982
+ this.variant = "elevated";
1983
+ }
1984
+ get id() {
1985
+ return super.id;
1986
+ }
1987
+ set id(value) {
1988
+ super.id = value;
1989
+ }
1990
+ get title() {
1991
+ return super.title;
1992
+ }
1993
+ set title(value) {
1994
+ super.title = value;
1995
+ }
1996
+ getContentContainer() {
1997
+ return this.querySelector("[data-sp-testimonial-native]");
1998
+ }
1999
+ isInternalNode(node) {
2000
+ if (node.nodeType !== Node.ELEMENT_NODE) {
2001
+ return false;
2002
+ }
2003
+ const el = node;
2004
+ return el.hasAttribute("data-sp-testimonial-native");
2005
+ }
2006
+ willUpdate(changedProperties) {
2007
+ if (changedProperties.has("disabled") && this.disabled == null) {
2008
+ this.disabled = false;
2009
+ }
2010
+ if (changedProperties.has("fullHeight") && this.fullHeight == null) {
2011
+ this.fullHeight = false;
2012
+ }
2013
+ if (changedProperties.has("interactive") && this.interactive == null) {
2014
+ this.interactive = false;
2015
+ }
2016
+ if (changedProperties.has("loading") && this.loading == null) {
2017
+ this.loading = false;
2018
+ }
2019
+ if (changedProperties.has("variant") && (this.variant == null || !isTestimonialVariant(this.variant))) {
2020
+ this.variant = "elevated";
2021
+ }
2022
+ }
2023
+ get testimonialClasses() {
2024
+ return spectreUi.getTestimonialClasses({
2025
+ disabled: this.disabled ?? false,
2026
+ fullHeight: this.fullHeight ?? false,
2027
+ interactive: this.interactive ?? false,
2028
+ loading: this.loading ?? false,
2029
+ variant: this.variant
2030
+ });
2031
+ }
2032
+ render() {
2033
+ return lit.html`<div
2034
+ aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
2035
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
2036
+ aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
2037
+ class="${this.testimonialClasses}"
2038
+ data-sp-testimonial-native
2039
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
2040
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
2041
+ >
2042
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
2043
+ </div>`;
2044
+ }
2045
+ };
2046
+ SpectreTestimonialElement.properties = {
2047
+ disabled: { type: Boolean, reflect: true },
2048
+ fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
2049
+ interactive: { type: Boolean, reflect: true },
2050
+ loading: { type: Boolean, reflect: true },
2051
+ variant: { type: String, reflect: true }
2052
+ };
2053
+ function defineSpectreTestimonial(tagName = "sp-testimonial") {
2054
+ const existingElement = customElements.get(tagName);
2055
+ if (existingElement) {
2056
+ return existingElement;
2057
+ }
2058
+ customElements.define(tagName, SpectreTestimonialElement);
2059
+ return SpectreTestimonialElement;
2060
+ }
1533
2061
 
1534
2062
  // src/index.ts
1535
2063
  function defineSpectreComponents() {
@@ -1541,29 +2069,51 @@ function defineSpectreComponents() {
1541
2069
  defineSpectreRadio();
1542
2070
  defineSpectreLabel();
1543
2071
  defineSpectreFieldset();
2072
+ defineSpectreBadge();
2073
+ defineSpectreCard();
2074
+ defineSpectreIconBox();
2075
+ defineSpectreRating();
2076
+ defineSpectreTestimonial();
1544
2077
  }
1545
2078
 
2079
+ exports.SpectreBadgeElement = SpectreBadgeElement;
1546
2080
  exports.SpectreButtonElement = SpectreButtonElement;
2081
+ exports.SpectreCardElement = SpectreCardElement;
1547
2082
  exports.SpectreCheckboxElement = SpectreCheckboxElement;
1548
2083
  exports.SpectreFieldsetElement = SpectreFieldsetElement;
2084
+ exports.SpectreIconBoxElement = SpectreIconBoxElement;
1549
2085
  exports.SpectreInputElement = SpectreInputElement;
1550
2086
  exports.SpectreLabelElement = SpectreLabelElement;
1551
2087
  exports.SpectreRadioElement = SpectreRadioElement;
2088
+ exports.SpectreRatingElement = SpectreRatingElement;
1552
2089
  exports.SpectreSelectElement = SpectreSelectElement;
2090
+ exports.SpectreTestimonialElement = SpectreTestimonialElement;
1553
2091
  exports.SpectreTextareaElement = SpectreTextareaElement;
2092
+ exports.defineSpectreBadge = defineSpectreBadge;
1554
2093
  exports.defineSpectreButton = defineSpectreButton;
2094
+ exports.defineSpectreCard = defineSpectreCard;
1555
2095
  exports.defineSpectreCheckbox = defineSpectreCheckbox;
1556
2096
  exports.defineSpectreComponents = defineSpectreComponents;
1557
2097
  exports.defineSpectreFieldset = defineSpectreFieldset;
2098
+ exports.defineSpectreIconBox = defineSpectreIconBox;
1558
2099
  exports.defineSpectreInput = defineSpectreInput;
1559
2100
  exports.defineSpectreLabel = defineSpectreLabel;
1560
2101
  exports.defineSpectreRadio = defineSpectreRadio;
2102
+ exports.defineSpectreRating = defineSpectreRating;
1561
2103
  exports.defineSpectreSelect = defineSpectreSelect;
2104
+ exports.defineSpectreTestimonial = defineSpectreTestimonial;
1562
2105
  exports.defineSpectreTextarea = defineSpectreTextarea;
2106
+ exports.spectreBadgeSizes = spectreInputSizes;
2107
+ exports.spectreBadgeVariants = spectreBadgeVariants;
1563
2108
  exports.spectreButtonSizes = spectreInputSizes;
1564
2109
  exports.spectreButtonTypes = spectreButtonTypes;
1565
2110
  exports.spectreButtonVariants = spectreButtonVariants;
2111
+ exports.spectreCardVariants = spectreCardVariants;
2112
+ exports.spectreIconBoxSizes = spectreInputSizes;
2113
+ exports.spectreIconBoxVariants = spectreIconBoxVariants;
1566
2114
  exports.spectreInputSizes = spectreInputSizes;
1567
2115
  exports.spectreInputTypes = spectreInputTypes;
2116
+ exports.spectreRatingSizes = spectreInputSizes;
2117
+ exports.spectreTestimonialVariants = spectreTestimonialVariants;
1568
2118
  //# sourceMappingURL=index.cjs.map
1569
2119
  //# sourceMappingURL=index.cjs.map