@phcdevworks/spectre-components 1.15.0 → 1.17.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 (138) hide show
  1. package/README.md +129 -29
  2. package/dist/alert.cjs.map +1 -1
  3. package/dist/alert.d.cts +2 -2
  4. package/dist/alert.d.ts +2 -2
  5. package/dist/alert.js.map +1 -1
  6. package/dist/avatar.cjs.map +1 -1
  7. package/dist/avatar.d.cts +2 -2
  8. package/dist/avatar.d.ts +2 -2
  9. package/dist/avatar.js.map +1 -1
  10. package/dist/badge.cjs.map +1 -1
  11. package/dist/badge.d.cts +2 -2
  12. package/dist/badge.d.ts +2 -2
  13. package/dist/badge.js.map +1 -1
  14. package/dist/button.cjs +18 -1
  15. package/dist/button.cjs.map +1 -1
  16. package/dist/button.d.cts +14 -2
  17. package/dist/button.d.ts +14 -2
  18. package/dist/button.js +18 -1
  19. package/dist/button.js.map +1 -1
  20. package/dist/card.cjs +21 -2
  21. package/dist/card.cjs.map +1 -1
  22. package/dist/card.d.cts +12 -3
  23. package/dist/card.d.ts +12 -3
  24. package/dist/card.js +21 -2
  25. package/dist/card.js.map +1 -1
  26. package/dist/container.cjs +1 -1
  27. package/dist/container.cjs.map +1 -1
  28. package/dist/container.d.cts +2 -2
  29. package/dist/container.d.ts +2 -2
  30. package/dist/container.js +1 -1
  31. package/dist/container.js.map +1 -1
  32. package/dist/dropdown.cjs.map +1 -1
  33. package/dist/dropdown.d.cts +2 -2
  34. package/dist/dropdown.d.ts +2 -2
  35. package/dist/dropdown.js.map +1 -1
  36. package/dist/footer-chip.cjs +411 -0
  37. package/dist/footer-chip.cjs.map +1 -0
  38. package/dist/footer-chip.d.cts +32 -0
  39. package/dist/footer-chip.d.ts +32 -0
  40. package/dist/footer-chip.js +408 -0
  41. package/dist/footer-chip.js.map +1 -0
  42. package/dist/footer-link.cjs +424 -0
  43. package/dist/footer-link.cjs.map +1 -0
  44. package/dist/footer-link.d.cts +43 -0
  45. package/dist/footer-link.d.ts +43 -0
  46. package/dist/footer-link.js +421 -0
  47. package/dist/footer-link.js.map +1 -0
  48. package/dist/footer.cjs +1 -1
  49. package/dist/footer.cjs.map +1 -1
  50. package/dist/footer.js +1 -1
  51. package/dist/footer.js.map +1 -1
  52. package/dist/{form-BGQjgJrL.d.cts → form-CVRAWo0Q.d.cts} +44 -1
  53. package/dist/{form-BGQjgJrL.d.ts → form-CVRAWo0Q.d.ts} +44 -1
  54. package/dist/grid.cjs +184 -1
  55. package/dist/grid.cjs.map +1 -1
  56. package/dist/grid.d.cts +63 -3
  57. package/dist/grid.d.ts +63 -3
  58. package/dist/grid.js +184 -2
  59. package/dist/grid.js.map +1 -1
  60. package/dist/icon-box.cjs.map +1 -1
  61. package/dist/icon-box.d.cts +2 -2
  62. package/dist/icon-box.d.ts +2 -2
  63. package/dist/icon-box.js.map +1 -1
  64. package/dist/index.cjs +457 -11
  65. package/dist/index.cjs.map +1 -1
  66. package/dist/index.d.cts +4 -1
  67. package/dist/index.d.ts +4 -1
  68. package/dist/index.js +451 -13
  69. package/dist/index.js.map +1 -1
  70. package/dist/input.cjs.map +1 -1
  71. package/dist/input.d.cts +2 -2
  72. package/dist/input.d.ts +2 -2
  73. package/dist/input.js.map +1 -1
  74. package/dist/nav-item.cjs.map +1 -1
  75. package/dist/nav-item.d.cts +1 -1
  76. package/dist/nav-item.d.ts +1 -1
  77. package/dist/nav-item.js.map +1 -1
  78. package/dist/nav.cjs +12 -2
  79. package/dist/nav.cjs.map +1 -1
  80. package/dist/nav.d.cts +7 -0
  81. package/dist/nav.d.ts +7 -0
  82. package/dist/nav.js +12 -2
  83. package/dist/nav.js.map +1 -1
  84. package/dist/rating.cjs.map +1 -1
  85. package/dist/rating.d.cts +2 -2
  86. package/dist/rating.d.ts +2 -2
  87. package/dist/rating.js.map +1 -1
  88. package/dist/section.cjs +1 -1
  89. package/dist/section.cjs.map +1 -1
  90. package/dist/section.js +1 -1
  91. package/dist/section.js.map +1 -1
  92. package/dist/select.cjs.map +1 -1
  93. package/dist/select.d.cts +1 -1
  94. package/dist/select.d.ts +1 -1
  95. package/dist/select.js.map +1 -1
  96. package/dist/sidebar-link.cjs +436 -0
  97. package/dist/sidebar-link.cjs.map +1 -0
  98. package/dist/sidebar-link.d.cts +50 -0
  99. package/dist/sidebar-link.d.ts +50 -0
  100. package/dist/sidebar-link.js +433 -0
  101. package/dist/sidebar-link.js.map +1 -0
  102. package/dist/spinner.cjs.map +1 -1
  103. package/dist/spinner.d.cts +2 -2
  104. package/dist/spinner.d.ts +2 -2
  105. package/dist/spinner.js.map +1 -1
  106. package/dist/stack.cjs +13 -4
  107. package/dist/stack.cjs.map +1 -1
  108. package/dist/stack.d.cts +9 -3
  109. package/dist/stack.d.ts +9 -3
  110. package/dist/stack.js +13 -5
  111. package/dist/stack.js.map +1 -1
  112. package/dist/tag.cjs.map +1 -1
  113. package/dist/tag.d.cts +2 -2
  114. package/dist/tag.d.ts +2 -2
  115. package/dist/tag.js.map +1 -1
  116. package/dist/testimonial.cjs.map +1 -1
  117. package/dist/testimonial.d.cts +2 -2
  118. package/dist/testimonial.d.ts +2 -2
  119. package/dist/testimonial.js.map +1 -1
  120. package/dist/text.cjs +1 -3
  121. package/dist/text.cjs.map +1 -1
  122. package/dist/text.d.cts +2 -2
  123. package/dist/text.d.ts +2 -2
  124. package/dist/text.js +1 -3
  125. package/dist/text.js.map +1 -1
  126. package/dist/textarea.cjs.map +1 -1
  127. package/dist/textarea.d.cts +1 -1
  128. package/dist/textarea.d.ts +1 -1
  129. package/dist/textarea.js.map +1 -1
  130. package/dist/toast.cjs.map +1 -1
  131. package/dist/toast.d.cts +2 -2
  132. package/dist/toast.d.ts +2 -2
  133. package/dist/toast.js.map +1 -1
  134. package/dist/tooltip.cjs.map +1 -1
  135. package/dist/tooltip.d.cts +2 -2
  136. package/dist/tooltip.d.ts +2 -2
  137. package/dist/tooltip.js.map +1 -1
  138. package/package.json +25 -10
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { getButtonClasses, getInputLabelClasses, getInputClasses, getTextareaClasses, getSelectClasses, getCheckboxClasses, getRadioClasses, getLabelClasses, getFieldsetLegendClasses, getFieldsetClasses, getBadgeClasses, getCardClasses, getIconBoxClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getTestimonialClasses, getAlertClasses, getAvatarClasses, getSpinnerClasses, getTagClasses, getPricingCardClasses, getContainerClasses, getGridClasses, getSectionClasses, getStackClasses, getDropdownClasses, getDropdownMenuClasses, getFooterClasses, getModalOverlayClasses, getModalClasses, getNavClasses, getNavLinkClasses, getSidebarClasses, getSidebarToggleClasses, getSidebarBackdropClasses, getToastClasses, getToastIconClasses, getTooltipClasses, getTextClasses } from '@phcdevworks/spectre-ui';
1
+ import { getButtonClasses, getInputLabelClasses, getInputClasses, getTextareaClasses, getSelectClasses, getCheckboxClasses, getRadioClasses, getLabelClasses, getFieldsetLegendClasses, getFieldsetClasses, getBadgeClasses, getCardClasses, getIconBoxClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getTestimonialClasses, getAlertClasses, getAvatarClasses, getSpinnerClasses, getTagClasses, getPricingCardClasses, getContainerClasses, getGridClasses, getSectionClasses, getStackClasses, getDropdownClasses, getDropdownMenuClasses, getFooterClasses, getFooterChipClasses, getFooterLinkClasses, getModalOverlayClasses, getModalClasses, getNavClasses, getNavLinkClasses, getSidebarClasses, getSidebarToggleClasses, getSidebarBackdropClasses, getSidebarLinkClasses, getToastClasses, getToastIconClasses, getTooltipClasses, getTextClasses } from '@phcdevworks/spectre-ui';
2
2
  import { LitElement, html, nothing } from 'lit';
3
3
  import { ifDefined } from 'lit/directives/if-defined.js';
4
4
  import { live } from 'lit/directives/live.js';
@@ -157,6 +157,16 @@ var spectreGridGaps = ["sm", "md", "lg"];
157
157
  function isGridGap(value) {
158
158
  return spectreGridGaps.includes(value);
159
159
  }
160
+ var spectreGridAligns = [
161
+ "start",
162
+ "center",
163
+ "end",
164
+ "baseline",
165
+ "stretch"
166
+ ];
167
+ function isGridAlign(value) {
168
+ return spectreGridAligns.includes(value);
169
+ }
160
170
  var spectreGridSpans = [
161
171
  1,
162
172
  2,
@@ -184,20 +194,126 @@ function isGridSpanOptions(value) {
184
194
  const candidate = value;
185
195
  return (candidate.base === void 0 || isGridSpan(candidate.base)) && (candidate.md === void 0 || isGridSpan(candidate.md)) && (candidate.lg === void 0 || isGridSpan(candidate.lg));
186
196
  }
187
- var spectreStackDirections = ["vertical", "horizontal"];
188
- function isStackDirection(value) {
189
- return spectreStackDirections.includes(
197
+ var spectreGridOffsets = [
198
+ 0,
199
+ 1,
200
+ 2,
201
+ 3,
202
+ 4,
203
+ 5,
204
+ 6,
205
+ 7,
206
+ 8,
207
+ 9,
208
+ 10,
209
+ 11
210
+ ];
211
+ function isGridOffset(value) {
212
+ return spectreGridOffsets.includes(value);
213
+ }
214
+ function isGridOffsetOptions(value) {
215
+ if (typeof value !== "object" || value === null) {
216
+ return false;
217
+ }
218
+ const candidate = value;
219
+ return (candidate.base === void 0 || isGridOffset(candidate.base)) && (candidate.md === void 0 || isGridOffset(candidate.md)) && (candidate.lg === void 0 || isGridOffset(candidate.lg));
220
+ }
221
+ var spectreGridOrders = [
222
+ "first",
223
+ "last",
224
+ "none",
225
+ 1,
226
+ 2,
227
+ 3,
228
+ 4,
229
+ 5,
230
+ 6,
231
+ 7,
232
+ 8,
233
+ 9,
234
+ 10,
235
+ 11,
236
+ 12
237
+ ];
238
+ function isGridOrder(value) {
239
+ return spectreGridOrders.includes(
240
+ value
241
+ );
242
+ }
243
+ function isGridOrderOptions(value) {
244
+ if (typeof value !== "object" || value === null) {
245
+ return false;
246
+ }
247
+ const candidate = value;
248
+ return (candidate.base === void 0 || isGridOrder(candidate.base)) && (candidate.md === void 0 || isGridOrder(candidate.md)) && (candidate.lg === void 0 || isGridOrder(candidate.lg));
249
+ }
250
+ var spectreGridLeadingWeights = [1.5, 1.6, 2, 2.5, 3];
251
+ function isGridLeadingWeight(value) {
252
+ return spectreGridLeadingWeights.includes(
253
+ value
254
+ );
255
+ }
256
+ function isGridLeadingWeightOptions(value) {
257
+ if (typeof value !== "object" || value === null) {
258
+ return false;
259
+ }
260
+ const candidate = value;
261
+ return (candidate.base === void 0 || isGridLeadingWeight(candidate.base)) && (candidate.md === void 0 || isGridLeadingWeight(candidate.md)) && (candidate.lg === void 0 || isGridLeadingWeight(candidate.lg));
262
+ }
263
+ function isGridLeadingTracksOptions(value) {
264
+ if (typeof value !== "object" || value === null) {
265
+ return false;
266
+ }
267
+ const candidate = value;
268
+ return isGridLeadingWeight(candidate.weight) || isGridLeadingWeightOptions(candidate.weight);
269
+ }
270
+ var spectreGridFixedTrackCounts = [1, 2, 3, 4];
271
+ function isGridFixedTrackCount(value) {
272
+ return spectreGridFixedTrackCounts.includes(
190
273
  value
191
274
  );
192
275
  }
276
+ function isGridFixedTracksOptions(value) {
277
+ if (typeof value !== "object" || value === null) {
278
+ return false;
279
+ }
280
+ const candidate = value;
281
+ return isGridFixedTrackCount(candidate.count);
282
+ }
283
+ var spectreGridTemplates = [
284
+ "edge-fluid-edge",
285
+ "label-fluid-fluid"
286
+ ];
287
+ function isGridTemplate(value) {
288
+ return spectreGridTemplates.includes(value);
289
+ }
290
+ function isGridExplicitTemplateOptions(value) {
291
+ if (typeof value !== "object" || value === null) {
292
+ return false;
293
+ }
294
+ const candidate = value;
295
+ return isGridTemplate(candidate.template) && (candidate.weight === void 0 || isGridLeadingWeight(candidate.weight));
296
+ }
297
+ var spectreStackDirections = ["vertical", "horizontal"];
298
+ function isStackDirection(value) {
299
+ return spectreStackDirections.includes(value);
300
+ }
193
301
  var spectreStackBases = ["sidebar"];
194
302
  function isStackBasis(value) {
195
303
  return spectreStackBases.includes(value);
196
304
  }
305
+ var spectreNavAligns = ["start", "center", "end"];
306
+ function isNavAlign(value) {
307
+ return spectreNavAligns.includes(value);
308
+ }
197
309
  var spectreStackAligns = ["center", "stretch"];
198
310
  function isStackAlign(value) {
199
311
  return spectreStackAligns.includes(value);
200
312
  }
313
+ var spectreStackGaps = ["sm", "md", "lg"];
314
+ function isStackGap(value) {
315
+ return spectreStackGaps.includes(value);
316
+ }
201
317
  var spectreDropdownPlacements = [
202
318
  "bottom-start",
203
319
  "bottom-end",
@@ -218,6 +334,12 @@ var spectreToastVariants = [
218
334
  function isToastVariant(value) {
219
335
  return spectreToastVariants.includes(value);
220
336
  }
337
+ var spectreSidebarLinkLevels = ["parent", "child"];
338
+ function isSidebarLinkLevel(value) {
339
+ return spectreSidebarLinkLevels.includes(
340
+ value
341
+ );
342
+ }
221
343
  var spectreTooltipPlacements = [
222
344
  "top",
223
345
  "bottom",
@@ -278,9 +400,7 @@ var spectreTextTransforms = [
278
400
  "capitalize"
279
401
  ];
280
402
  function isTextTransform(value) {
281
- return spectreTextTransforms.includes(
282
- value
283
- );
403
+ return spectreTextTransforms.includes(value);
284
404
  }
285
405
  function normalizeInt(value, fallback, min = 0) {
286
406
  if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
@@ -288,7 +408,7 @@ function normalizeInt(value, fallback, min = 0) {
288
408
  }
289
409
  return value;
290
410
  }
291
- var spectreUtilityClassPattern = /^sp-[a-z0-9]+(?:-[a-z0-9]+)*$/;
411
+ var spectreUtilityClassPattern = /^sp-[a-z0-9]+(?:-[a-z0-9]+)*(?:__[a-z0-9]+(?:-[a-z0-9]+)*)?(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/;
292
412
  function sanitizeUtilityClasses(value) {
293
413
  if (!value) {
294
414
  return "";
@@ -638,9 +758,11 @@ var SpectreProjectableElement = class extends SpectreBaseElement {
638
758
  var SpectreButtonElement = class extends SpectreProjectableElement {
639
759
  constructor() {
640
760
  super(...arguments);
761
+ this.compact = false;
641
762
  this.disabled = false;
642
763
  this.fullWidth = false;
643
764
  this.iconOnly = false;
765
+ this.innerClass = void 0;
644
766
  this.loading = false;
645
767
  this.loadingLabel = "Loading";
646
768
  this.pill = false;
@@ -681,6 +803,9 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
681
803
  return el.hasAttribute("data-sp-button-native") || el.hasAttribute("data-sp-button-loading-label") || el.hasAttribute("data-sp-button-label-fallback");
682
804
  }
683
805
  willUpdate(changedProperties) {
806
+ if (changedProperties.has("compact") && this.compact == null) {
807
+ this.compact = false;
808
+ }
684
809
  if (changedProperties.has("disabled") && this.disabled == null) {
685
810
  this.disabled = false;
686
811
  }
@@ -715,7 +840,8 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
715
840
  }
716
841
  }
717
842
  get buttonClasses() {
718
- return getButtonClasses({
843
+ const recipeClasses = getButtonClasses({
844
+ compact: this.compact ?? false,
719
845
  disabled: this.isDisabled,
720
846
  fullWidth: this.fullWidth ?? false,
721
847
  iconOnly: this.iconOnly ?? false,
@@ -724,6 +850,8 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
724
850
  size: this.size,
725
851
  variant: this.variant
726
852
  });
853
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
854
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
727
855
  }
728
856
  get visibleLabelFallback() {
729
857
  const trimmedLabel = this.label?.trim();
@@ -792,11 +920,13 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
792
920
  }
793
921
  };
794
922
  SpectreButtonElement.properties = {
923
+ compact: { type: Boolean, reflect: true },
795
924
  disabled: { type: Boolean, reflect: true },
796
925
  form: { type: String },
797
926
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
798
927
  href: { type: String, reflect: true },
799
928
  iconOnly: { attribute: "icon-only", type: Boolean, reflect: true },
929
+ innerClass: { attribute: "inner-class", type: String },
800
930
  label: { type: String, reflect: true },
801
931
  loading: { type: Boolean, reflect: true },
802
932
  loadingLabel: { attribute: "loading-label", type: String, reflect: true },
@@ -1926,11 +2056,20 @@ function defineSpectreBadge(tagName = "sp-badge") {
1926
2056
  customElements.define(tagName, SpectreBadgeElement);
1927
2057
  return SpectreBadgeElement;
1928
2058
  }
2059
+ var paddedConverter = {
2060
+ fromAttribute(value) {
2061
+ return value !== "false";
2062
+ },
2063
+ toAttribute(value) {
2064
+ return value ? null : "false";
2065
+ }
2066
+ };
1929
2067
  var SpectreCardElement = class extends SpectreProjectableElement {
1930
2068
  constructor() {
1931
2069
  super(...arguments);
1932
2070
  this.disabled = false;
1933
2071
  this.fullHeight = false;
2072
+ this.innerClass = void 0;
1934
2073
  this.interactive = false;
1935
2074
  this.loading = false;
1936
2075
  this.padded = true;
@@ -1979,7 +2118,7 @@ var SpectreCardElement = class extends SpectreProjectableElement {
1979
2118
  }
1980
2119
  }
1981
2120
  get cardClasses() {
1982
- return getCardClasses({
2121
+ const recipeClasses = getCardClasses({
1983
2122
  disabled: this.isDisabled,
1984
2123
  fullHeight: this.fullHeight ?? false,
1985
2124
  interactive: this.interactive ?? false,
@@ -1987,6 +2126,8 @@ var SpectreCardElement = class extends SpectreProjectableElement {
1987
2126
  padded: this.padded ?? true,
1988
2127
  variant: this.variant
1989
2128
  });
2129
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
2130
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
1990
2131
  }
1991
2132
  render() {
1992
2133
  return html`<div
@@ -2007,9 +2148,10 @@ var SpectreCardElement = class extends SpectreProjectableElement {
2007
2148
  SpectreCardElement.properties = {
2008
2149
  disabled: { type: Boolean, reflect: true },
2009
2150
  fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
2151
+ innerClass: { attribute: "inner-class", type: String },
2010
2152
  interactive: { type: Boolean, reflect: true },
2011
2153
  loading: { type: Boolean, reflect: true },
2012
- padded: { type: Boolean, reflect: true },
2154
+ padded: { converter: paddedConverter, reflect: true },
2013
2155
  variant: { type: String, reflect: true }
2014
2156
  };
2015
2157
  function defineSpectreCard(tagName = "sp-card") {
@@ -2848,9 +2990,15 @@ function defineSpectreContainer(tagName = "sp-container") {
2848
2990
  var SpectreGridElement = class extends SpectreProjectableElement {
2849
2991
  constructor() {
2850
2992
  super(...arguments);
2993
+ this.align = void 0;
2851
2994
  this.columns = 1;
2995
+ this.columnGap = void 0;
2996
+ this.explicitTemplate = void 0;
2997
+ this.fixedTracks = void 0;
2852
2998
  this.gap = "md";
2853
2999
  this.innerClass = void 0;
3000
+ this.leadingTracks = void 0;
3001
+ this.rowGap = void 0;
2854
3002
  }
2855
3003
  get id() {
2856
3004
  return super.id;
@@ -2880,6 +3028,9 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2880
3028
  return el.hasAttribute("data-sp-grid-native");
2881
3029
  }
2882
3030
  willUpdate(changedProperties) {
3031
+ if (changedProperties.has("align") && this.align != null && !isGridAlign(this.align)) {
3032
+ this.align = void 0;
3033
+ }
2883
3034
  if (changedProperties.has("columns")) {
2884
3035
  const normalized = normalizeInt(this.columns, void 0, 1);
2885
3036
  this.columns = normalized != null && isGridColumns(normalized) ? normalized : 1;
@@ -2887,16 +3038,69 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2887
3038
  if (changedProperties.has("gap") && (this.gap == null || !isGridGap(this.gap))) {
2888
3039
  this.gap = "md";
2889
3040
  }
3041
+ if (changedProperties.has("columnGap") && this.columnGap != null && !isGridGap(this.columnGap)) {
3042
+ this.columnGap = void 0;
3043
+ }
3044
+ if (changedProperties.has("rowGap") && this.rowGap != null && !isGridGap(this.rowGap)) {
3045
+ this.rowGap = void 0;
3046
+ }
2890
3047
  if (changedProperties.has("span") && this.span !== void 0 && !isGridSpan(this.span) && !isGridSpanOptions(this.span)) {
2891
3048
  this.span = void 0;
2892
3049
  }
3050
+ if (changedProperties.has("offset") && this.offset !== void 0 && !isGridOffset(this.offset) && !isGridOffsetOptions(this.offset)) {
3051
+ this.offset = void 0;
3052
+ }
3053
+ if (changedProperties.has("rowSpan") && this.rowSpan !== void 0 && !isGridSpan(this.rowSpan) && !isGridSpanOptions(this.rowSpan)) {
3054
+ this.rowSpan = void 0;
3055
+ }
3056
+ if (changedProperties.has("rowOffset") && this.rowOffset !== void 0 && !isGridOffset(this.rowOffset) && !isGridOffsetOptions(this.rowOffset)) {
3057
+ this.rowOffset = void 0;
3058
+ }
3059
+ if (changedProperties.has("order") && this.order !== void 0 && !isGridOrder(this.order) && !isGridOrderOptions(this.order)) {
3060
+ this.order = void 0;
3061
+ }
3062
+ if (changedProperties.has("leadingTracks") && this.leadingTracks !== void 0 && !isGridLeadingTracksOptions(this.leadingTracks)) {
3063
+ this.leadingTracks = void 0;
3064
+ }
3065
+ if (changedProperties.has("fixedTracks") && this.fixedTracks !== void 0 && !isGridFixedTracksOptions(this.fixedTracks)) {
3066
+ this.fixedTracks = void 0;
3067
+ }
3068
+ if (changedProperties.has("explicitTemplate") && this.explicitTemplate !== void 0 && !isGridExplicitTemplateOptions(this.explicitTemplate)) {
3069
+ this.explicitTemplate = void 0;
3070
+ }
2893
3071
  }
2894
3072
  get gridClasses() {
2895
3073
  const recipeClasses = getGridClasses({
2896
3074
  columns: this.columns,
2897
3075
  gap: this.gap,
3076
+ ...this.align !== void 0 && { align: this.align },
3077
+ ...this.columnGap !== void 0 && {
3078
+ columnGap: this.columnGap
3079
+ },
3080
+ ...this.rowGap !== void 0 && { rowGap: this.rowGap },
2898
3081
  ...this.span !== void 0 && {
2899
3082
  span: this.span
3083
+ },
3084
+ ...this.offset !== void 0 && {
3085
+ offset: this.offset
3086
+ },
3087
+ ...this.rowSpan !== void 0 && {
3088
+ rowSpan: this.rowSpan
3089
+ },
3090
+ ...this.rowOffset !== void 0 && {
3091
+ rowOffset: this.rowOffset
3092
+ },
3093
+ ...this.order !== void 0 && {
3094
+ order: this.order
3095
+ },
3096
+ ...this.leadingTracks !== void 0 && {
3097
+ leadingTracks: this.leadingTracks
3098
+ },
3099
+ ...this.fixedTracks !== void 0 && {
3100
+ fixedTracks: this.fixedTracks
3101
+ },
3102
+ ...this.explicitTemplate !== void 0 && {
3103
+ explicitTemplate: this.explicitTemplate
2900
3104
  }
2901
3105
  });
2902
3106
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
@@ -2917,9 +3121,19 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2917
3121
  }
2918
3122
  };
2919
3123
  SpectreGridElement.properties = {
3124
+ align: { type: String, reflect: true },
2920
3125
  columns: { type: Number, reflect: true },
3126
+ columnGap: { attribute: "column-gap", type: String, reflect: true },
3127
+ explicitTemplate: { attribute: "explicit-template", type: Object },
3128
+ fixedTracks: { attribute: "fixed-tracks", type: Object },
2921
3129
  gap: { type: String, reflect: true },
2922
3130
  innerClass: { attribute: "inner-class", type: String },
3131
+ leadingTracks: { attribute: "leading-tracks", type: Object },
3132
+ offset: { type: Object },
3133
+ order: { type: Object },
3134
+ rowGap: { attribute: "row-gap", type: String, reflect: true },
3135
+ rowOffset: { attribute: "row-offset", type: Object },
3136
+ rowSpan: { attribute: "row-span", type: Object },
2923
3137
  span: { type: Object }
2924
3138
  };
2925
3139
  function defineSpectreGrid(tagName = "sp-grid") {
@@ -2998,6 +3212,7 @@ var SpectreStackElement = class extends SpectreProjectableElement {
2998
3212
  this.align = "center";
2999
3213
  this.basis = void 0;
3000
3214
  this.direction = "vertical";
3215
+ this.gap = "md";
3001
3216
  this.innerClass = void 0;
3002
3217
  }
3003
3218
  get id() {
@@ -3037,11 +3252,15 @@ var SpectreStackElement = class extends SpectreProjectableElement {
3037
3252
  if (changedProperties.has("align") && (this.align == null || !isStackAlign(this.align))) {
3038
3253
  this.align = "center";
3039
3254
  }
3255
+ if (changedProperties.has("gap") && (this.gap == null || !isStackGap(this.gap))) {
3256
+ this.gap = "md";
3257
+ }
3040
3258
  }
3041
3259
  get stackClasses() {
3042
3260
  const recipeClasses = getStackClasses({
3043
3261
  align: this.align,
3044
3262
  direction: this.direction,
3263
+ gap: this.gap,
3045
3264
  ...this.basis != null ? { basis: this.basis } : {}
3046
3265
  });
3047
3266
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
@@ -3065,6 +3284,7 @@ SpectreStackElement.properties = {
3065
3284
  align: { type: String, reflect: true },
3066
3285
  basis: { type: String, reflect: true },
3067
3286
  direction: { type: String, reflect: true },
3287
+ gap: { type: String, reflect: true },
3068
3288
  innerClass: { attribute: "inner-class", type: String }
3069
3289
  };
3070
3290
  function defineSpectreStack(tagName = "sp-stack") {
@@ -3346,6 +3566,137 @@ function defineSpectreFooter(tagName = "sp-footer") {
3346
3566
  customElements.define(tagName, SpectreFooterElement);
3347
3567
  return SpectreFooterElement;
3348
3568
  }
3569
+ var SpectreFooterChipElement = class extends SpectreProjectableElement {
3570
+ constructor() {
3571
+ super(...arguments);
3572
+ this.disabled = false;
3573
+ }
3574
+ get id() {
3575
+ return super.id;
3576
+ }
3577
+ set id(value) {
3578
+ super.id = value;
3579
+ }
3580
+ get title() {
3581
+ return super.title;
3582
+ }
3583
+ set title(value) {
3584
+ super.title = value;
3585
+ }
3586
+ getContentContainer() {
3587
+ return this.querySelector("[data-sp-footer-chip-native]");
3588
+ }
3589
+ isInternalNode(node) {
3590
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3591
+ return false;
3592
+ }
3593
+ const el = node;
3594
+ return el.hasAttribute("data-sp-footer-chip-native");
3595
+ }
3596
+ willUpdate(changedProperties) {
3597
+ if (changedProperties.has("disabled") && this.disabled == null) {
3598
+ this.disabled = false;
3599
+ }
3600
+ }
3601
+ get footerChipClasses() {
3602
+ return getFooterChipClasses({ disabled: this.disabled ?? false });
3603
+ }
3604
+ render() {
3605
+ return html`<span
3606
+ aria-disabled="${ifDefined(this.disabled ? "true" : void 0)}"
3607
+ aria-label="${ifDefined(this.forwardedAriaLabel)}"
3608
+ class="${this.footerChipClasses}"
3609
+ data-sp-footer-chip-native
3610
+ id="${ifDefined(this.id || void 0)}"
3611
+ title="${ifDefined(this.title || void 0)}"
3612
+ >
3613
+ ${this.hasProjectedContent ? this.projectedContent : nothing}
3614
+ </span>`;
3615
+ }
3616
+ };
3617
+ SpectreFooterChipElement.properties = {
3618
+ disabled: { type: Boolean, reflect: true }
3619
+ };
3620
+ function defineSpectreFooterChip(tagName = "sp-footer-chip") {
3621
+ const existingElement = customElements.get(tagName);
3622
+ if (existingElement) {
3623
+ return existingElement;
3624
+ }
3625
+ customElements.define(tagName, SpectreFooterChipElement);
3626
+ return SpectreFooterChipElement;
3627
+ }
3628
+ var SpectreFooterLinkElement = class extends SpectreProjectableElement {
3629
+ constructor() {
3630
+ super(...arguments);
3631
+ this.active = false;
3632
+ this.disabled = false;
3633
+ this.href = void 0;
3634
+ }
3635
+ get id() {
3636
+ return super.id;
3637
+ }
3638
+ set id(value) {
3639
+ super.id = value;
3640
+ }
3641
+ get title() {
3642
+ return super.title;
3643
+ }
3644
+ set title(value) {
3645
+ super.title = value;
3646
+ }
3647
+ getContentContainer() {
3648
+ return this.querySelector("[data-sp-footer-link-native]");
3649
+ }
3650
+ isInternalNode(node) {
3651
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3652
+ return false;
3653
+ }
3654
+ const el = node;
3655
+ return el.hasAttribute("data-sp-footer-link-native");
3656
+ }
3657
+ willUpdate(changedProperties) {
3658
+ if (changedProperties.has("active") && this.active == null) {
3659
+ this.active = false;
3660
+ }
3661
+ if (changedProperties.has("disabled") && this.disabled == null) {
3662
+ this.disabled = false;
3663
+ }
3664
+ }
3665
+ get footerLinkClasses() {
3666
+ return getFooterLinkClasses({
3667
+ active: this.active ?? false,
3668
+ disabled: this.disabled ?? false
3669
+ });
3670
+ }
3671
+ render() {
3672
+ return html`<a
3673
+ aria-current="${ifDefined(this.active ? "page" : void 0)}"
3674
+ aria-disabled="${ifDefined(this.disabled ? "true" : void 0)}"
3675
+ aria-label="${ifDefined(this.forwardedAriaLabel)}"
3676
+ class="${this.footerLinkClasses}"
3677
+ data-sp-footer-link-native
3678
+ href="${ifDefined(this.disabled ? void 0 : this.href)}"
3679
+ id="${ifDefined(this.id || void 0)}"
3680
+ tabindex="${ifDefined(this.disabled ? -1 : void 0)}"
3681
+ title="${ifDefined(this.title || void 0)}"
3682
+ >
3683
+ ${this.hasProjectedContent ? this.projectedContent : nothing}
3684
+ </a>`;
3685
+ }
3686
+ };
3687
+ SpectreFooterLinkElement.properties = {
3688
+ active: { type: Boolean, reflect: true },
3689
+ disabled: { type: Boolean, reflect: true },
3690
+ href: { type: String }
3691
+ };
3692
+ function defineSpectreFooterLink(tagName = "sp-footer-link") {
3693
+ const existingElement = customElements.get(tagName);
3694
+ if (existingElement) {
3695
+ return existingElement;
3696
+ }
3697
+ customElements.define(tagName, SpectreFooterLinkElement);
3698
+ return SpectreFooterLinkElement;
3699
+ }
3349
3700
  var FOCUSABLE_SELECTOR = [
3350
3701
  "a[href]",
3351
3702
  "button:not([disabled])",
@@ -3516,6 +3867,7 @@ function defineSpectreModal(tagName = "sp-modal") {
3516
3867
  var SpectreNavElement = class extends SpectreProjectableElement {
3517
3868
  constructor() {
3518
3869
  super(...arguments);
3870
+ this.align = void 0;
3519
3871
  this.bordered = false;
3520
3872
  this.fullWidth = false;
3521
3873
  this.innerClass = void 0;
@@ -3558,12 +3910,16 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3558
3910
  if (changedProperties.has("sticky") && this.sticky == null) {
3559
3911
  this.sticky = false;
3560
3912
  }
3913
+ if (changedProperties.has("align") && this.align != null && !isNavAlign(this.align)) {
3914
+ this.align = void 0;
3915
+ }
3561
3916
  }
3562
3917
  get navClasses() {
3563
3918
  const recipeClasses = getNavClasses({
3564
3919
  bordered: this.bordered ?? false,
3565
3920
  fullWidth: this.fullWidth ?? false,
3566
- sticky: this.sticky ?? false
3921
+ sticky: this.sticky ?? false,
3922
+ ...this.align !== void 0 && { align: this.align }
3567
3923
  });
3568
3924
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
3569
3925
  return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
@@ -3581,6 +3937,7 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3581
3937
  }
3582
3938
  };
3583
3939
  SpectreNavElement.properties = {
3940
+ align: { type: String, reflect: true },
3584
3941
  bordered: { type: Boolean, reflect: true },
3585
3942
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
3586
3943
  innerClass: { attribute: "inner-class", type: String },
@@ -3936,6 +4293,84 @@ function defineSpectreSidebar(tagName = "sp-sidebar") {
3936
4293
  customElements.define(tagName, SpectreSidebarElement);
3937
4294
  return SpectreSidebarElement;
3938
4295
  }
4296
+ var SpectreSidebarLinkElement = class extends SpectreProjectableElement {
4297
+ constructor() {
4298
+ super(...arguments);
4299
+ this.active = false;
4300
+ this.disabled = false;
4301
+ this.href = void 0;
4302
+ this.level = "parent";
4303
+ }
4304
+ get id() {
4305
+ return super.id;
4306
+ }
4307
+ set id(value) {
4308
+ super.id = value;
4309
+ }
4310
+ get title() {
4311
+ return super.title;
4312
+ }
4313
+ set title(value) {
4314
+ super.title = value;
4315
+ }
4316
+ getContentContainer() {
4317
+ return this.querySelector("[data-sp-sidebar-link-native]");
4318
+ }
4319
+ isInternalNode(node) {
4320
+ if (node.nodeType !== Node.ELEMENT_NODE) {
4321
+ return false;
4322
+ }
4323
+ const el = node;
4324
+ return el.hasAttribute("data-sp-sidebar-link-native");
4325
+ }
4326
+ willUpdate(changedProperties) {
4327
+ if (changedProperties.has("active") && this.active == null) {
4328
+ this.active = false;
4329
+ }
4330
+ if (changedProperties.has("disabled") && this.disabled == null) {
4331
+ this.disabled = false;
4332
+ }
4333
+ if (changedProperties.has("level") && (this.level == null || !isSidebarLinkLevel(this.level))) {
4334
+ this.level = "parent";
4335
+ }
4336
+ }
4337
+ get sidebarLinkClasses() {
4338
+ return getSidebarLinkClasses({
4339
+ active: this.active ?? false,
4340
+ disabled: this.disabled ?? false,
4341
+ level: this.level
4342
+ });
4343
+ }
4344
+ render() {
4345
+ return html`<a
4346
+ aria-current="${ifDefined(this.active ? "page" : void 0)}"
4347
+ aria-disabled="${ifDefined(this.disabled ? "true" : void 0)}"
4348
+ aria-label="${ifDefined(this.forwardedAriaLabel)}"
4349
+ class="${this.sidebarLinkClasses}"
4350
+ data-sp-sidebar-link-native
4351
+ href="${ifDefined(this.disabled ? void 0 : this.href)}"
4352
+ id="${ifDefined(this.id || void 0)}"
4353
+ tabindex="${ifDefined(this.disabled ? -1 : void 0)}"
4354
+ title="${ifDefined(this.title || void 0)}"
4355
+ >
4356
+ ${this.hasProjectedContent ? this.projectedContent : nothing}
4357
+ </a>`;
4358
+ }
4359
+ };
4360
+ SpectreSidebarLinkElement.properties = {
4361
+ active: { type: Boolean, reflect: true },
4362
+ disabled: { type: Boolean, reflect: true },
4363
+ href: { type: String },
4364
+ level: { type: String, reflect: true }
4365
+ };
4366
+ function defineSpectreSidebarLink(tagName = "sp-sidebar-link") {
4367
+ const existingElement = customElements.get(tagName);
4368
+ if (existingElement) {
4369
+ return existingElement;
4370
+ }
4371
+ customElements.define(tagName, SpectreSidebarLinkElement);
4372
+ return SpectreSidebarLinkElement;
4373
+ }
3939
4374
  var SpectreSidebarToggleElement = class extends SpectreProjectableElement {
3940
4375
  constructor() {
3941
4376
  super(...arguments);
@@ -4483,16 +4918,19 @@ function defineSpectreComponents() {
4483
4918
  defineSpectreStack();
4484
4919
  defineSpectreDropdown();
4485
4920
  defineSpectreFooter();
4921
+ defineSpectreFooterChip();
4922
+ defineSpectreFooterLink();
4486
4923
  defineSpectreModal();
4487
4924
  defineSpectreNav();
4488
4925
  defineSpectreNavItem();
4489
4926
  defineSpectreSidebar();
4927
+ defineSpectreSidebarLink();
4490
4928
  defineSpectreSidebarToggle();
4491
4929
  defineSpectreToast();
4492
4930
  defineSpectreTooltip();
4493
4931
  defineSpectreText();
4494
4932
  }
4495
4933
 
4496
- export { SpectreAlertElement, SpectreAvatarElement, SpectreBadgeElement, SpectreButtonElement, SpectreCardElement, SpectreCheckboxElement, SpectreContainerElement, SpectreDropdownElement, SpectreFieldsetElement, SpectreFooterElement, SpectreGridElement, SpectreIconBoxElement, SpectreInputElement, SpectreLabelElement, SpectreModalElement, SpectreNavElement, SpectreNavItemElement, SpectrePricingCardElement, SpectreRadioElement, SpectreRatingElement, SpectreSectionElement, SpectreSelectElement, SpectreSidebarElement, SpectreSidebarToggleElement, SpectreSpinnerElement, SpectreStackElement, SpectreTagElement, SpectreTestimonialElement, SpectreTextElement, SpectreTextareaElement, SpectreToastElement, SpectreTooltipElement, defineSpectreAlert, defineSpectreAvatar, defineSpectreBadge, defineSpectreButton, defineSpectreCard, defineSpectreCheckbox, defineSpectreComponents, defineSpectreContainer, defineSpectreDropdown, defineSpectreFieldset, defineSpectreFooter, defineSpectreGrid, defineSpectreIconBox, defineSpectreInput, defineSpectreLabel, defineSpectreModal, defineSpectreNav, defineSpectreNavItem, defineSpectrePricingCard, defineSpectreRadio, defineSpectreRating, defineSpectreSection, defineSpectreSelect, defineSpectreSidebar, defineSpectreSidebarToggle, defineSpectreSpinner, defineSpectreStack, defineSpectreTag, defineSpectreTestimonial, defineSpectreText, defineSpectreTextarea, defineSpectreToast, defineSpectreTooltip, spectreInputSizes as spectreAlertSizes, spectreAlertVariants, spectreAvatarShapes, spectreAvatarSizes, spectreInputSizes as spectreBadgeSizes, spectreBadgeVariants, spectreInputSizes as spectreButtonSizes, spectreButtonTypes, spectreButtonVariants, spectreCardVariants, spectreContainerMaxWidths, spectreDropdownPlacements, spectreGridColumns, spectreGridGaps, spectreInputSizes as spectreIconBoxSizes, spectreIconBoxVariants, spectreInputSizes, spectreInputTypes, spectreInputSizes as spectreRatingSizes, spectreInputSizes as spectreSpinnerSizes, spectreSpinnerVariants, spectreStackAligns, spectreStackBases, spectreStackDirections, spectreInputSizes as spectreTagSizes, spectreTagVariants, spectreTestimonialVariants, spectreTextFamilies, spectreTextLevels, spectreTextSizes, spectreTextVariants, spectreToastVariants, spectreTooltipPlacements };
4934
+ export { SpectreAlertElement, SpectreAvatarElement, SpectreBadgeElement, SpectreButtonElement, SpectreCardElement, SpectreCheckboxElement, SpectreContainerElement, SpectreDropdownElement, SpectreFieldsetElement, SpectreFooterChipElement, SpectreFooterElement, SpectreFooterLinkElement, SpectreGridElement, SpectreIconBoxElement, SpectreInputElement, SpectreLabelElement, SpectreModalElement, SpectreNavElement, SpectreNavItemElement, SpectrePricingCardElement, SpectreRadioElement, SpectreRatingElement, SpectreSectionElement, SpectreSelectElement, SpectreSidebarElement, SpectreSidebarLinkElement, SpectreSidebarToggleElement, SpectreSpinnerElement, SpectreStackElement, SpectreTagElement, SpectreTestimonialElement, SpectreTextElement, SpectreTextareaElement, SpectreToastElement, SpectreTooltipElement, defineSpectreAlert, defineSpectreAvatar, defineSpectreBadge, defineSpectreButton, defineSpectreCard, defineSpectreCheckbox, defineSpectreComponents, defineSpectreContainer, defineSpectreDropdown, defineSpectreFieldset, defineSpectreFooter, defineSpectreFooterChip, defineSpectreFooterLink, defineSpectreGrid, defineSpectreIconBox, defineSpectreInput, defineSpectreLabel, defineSpectreModal, defineSpectreNav, defineSpectreNavItem, defineSpectrePricingCard, defineSpectreRadio, defineSpectreRating, defineSpectreSection, defineSpectreSelect, defineSpectreSidebar, defineSpectreSidebarLink, defineSpectreSidebarToggle, defineSpectreSpinner, defineSpectreStack, defineSpectreTag, defineSpectreTestimonial, defineSpectreText, defineSpectreTextarea, defineSpectreToast, defineSpectreTooltip, spectreInputSizes as spectreAlertSizes, spectreAlertVariants, spectreAvatarShapes, spectreAvatarSizes, spectreInputSizes as spectreBadgeSizes, spectreBadgeVariants, spectreInputSizes as spectreButtonSizes, spectreButtonTypes, spectreButtonVariants, spectreCardVariants, spectreContainerMaxWidths, spectreDropdownPlacements, spectreGridAligns, spectreGridColumns, spectreGridGaps, spectreInputSizes as spectreIconBoxSizes, spectreIconBoxVariants, spectreInputSizes, spectreInputTypes, spectreInputSizes as spectreRatingSizes, spectreInputSizes as spectreSpinnerSizes, spectreSpinnerVariants, spectreStackAligns, spectreStackBases, spectreStackDirections, spectreStackGaps, spectreInputSizes as spectreTagSizes, spectreTagVariants, spectreTestimonialVariants, spectreTextFamilies, spectreTextLevels, spectreTextSizes, spectreTextVariants, spectreToastVariants, spectreTooltipPlacements };
4497
4935
  //# sourceMappingURL=index.js.map
4498
4936
  //# sourceMappingURL=index.js.map