@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.cjs CHANGED
@@ -159,6 +159,16 @@ var spectreGridGaps = ["sm", "md", "lg"];
159
159
  function isGridGap(value) {
160
160
  return spectreGridGaps.includes(value);
161
161
  }
162
+ var spectreGridAligns = [
163
+ "start",
164
+ "center",
165
+ "end",
166
+ "baseline",
167
+ "stretch"
168
+ ];
169
+ function isGridAlign(value) {
170
+ return spectreGridAligns.includes(value);
171
+ }
162
172
  var spectreGridSpans = [
163
173
  1,
164
174
  2,
@@ -186,20 +196,126 @@ function isGridSpanOptions(value) {
186
196
  const candidate = value;
187
197
  return (candidate.base === void 0 || isGridSpan(candidate.base)) && (candidate.md === void 0 || isGridSpan(candidate.md)) && (candidate.lg === void 0 || isGridSpan(candidate.lg));
188
198
  }
189
- var spectreStackDirections = ["vertical", "horizontal"];
190
- function isStackDirection(value) {
191
- return spectreStackDirections.includes(
199
+ var spectreGridOffsets = [
200
+ 0,
201
+ 1,
202
+ 2,
203
+ 3,
204
+ 4,
205
+ 5,
206
+ 6,
207
+ 7,
208
+ 8,
209
+ 9,
210
+ 10,
211
+ 11
212
+ ];
213
+ function isGridOffset(value) {
214
+ return spectreGridOffsets.includes(value);
215
+ }
216
+ function isGridOffsetOptions(value) {
217
+ if (typeof value !== "object" || value === null) {
218
+ return false;
219
+ }
220
+ const candidate = value;
221
+ return (candidate.base === void 0 || isGridOffset(candidate.base)) && (candidate.md === void 0 || isGridOffset(candidate.md)) && (candidate.lg === void 0 || isGridOffset(candidate.lg));
222
+ }
223
+ var spectreGridOrders = [
224
+ "first",
225
+ "last",
226
+ "none",
227
+ 1,
228
+ 2,
229
+ 3,
230
+ 4,
231
+ 5,
232
+ 6,
233
+ 7,
234
+ 8,
235
+ 9,
236
+ 10,
237
+ 11,
238
+ 12
239
+ ];
240
+ function isGridOrder(value) {
241
+ return spectreGridOrders.includes(
242
+ value
243
+ );
244
+ }
245
+ function isGridOrderOptions(value) {
246
+ if (typeof value !== "object" || value === null) {
247
+ return false;
248
+ }
249
+ const candidate = value;
250
+ return (candidate.base === void 0 || isGridOrder(candidate.base)) && (candidate.md === void 0 || isGridOrder(candidate.md)) && (candidate.lg === void 0 || isGridOrder(candidate.lg));
251
+ }
252
+ var spectreGridLeadingWeights = [1.5, 1.6, 2, 2.5, 3];
253
+ function isGridLeadingWeight(value) {
254
+ return spectreGridLeadingWeights.includes(
255
+ value
256
+ );
257
+ }
258
+ function isGridLeadingWeightOptions(value) {
259
+ if (typeof value !== "object" || value === null) {
260
+ return false;
261
+ }
262
+ const candidate = value;
263
+ return (candidate.base === void 0 || isGridLeadingWeight(candidate.base)) && (candidate.md === void 0 || isGridLeadingWeight(candidate.md)) && (candidate.lg === void 0 || isGridLeadingWeight(candidate.lg));
264
+ }
265
+ function isGridLeadingTracksOptions(value) {
266
+ if (typeof value !== "object" || value === null) {
267
+ return false;
268
+ }
269
+ const candidate = value;
270
+ return isGridLeadingWeight(candidate.weight) || isGridLeadingWeightOptions(candidate.weight);
271
+ }
272
+ var spectreGridFixedTrackCounts = [1, 2, 3, 4];
273
+ function isGridFixedTrackCount(value) {
274
+ return spectreGridFixedTrackCounts.includes(
192
275
  value
193
276
  );
194
277
  }
278
+ function isGridFixedTracksOptions(value) {
279
+ if (typeof value !== "object" || value === null) {
280
+ return false;
281
+ }
282
+ const candidate = value;
283
+ return isGridFixedTrackCount(candidate.count);
284
+ }
285
+ var spectreGridTemplates = [
286
+ "edge-fluid-edge",
287
+ "label-fluid-fluid"
288
+ ];
289
+ function isGridTemplate(value) {
290
+ return spectreGridTemplates.includes(value);
291
+ }
292
+ function isGridExplicitTemplateOptions(value) {
293
+ if (typeof value !== "object" || value === null) {
294
+ return false;
295
+ }
296
+ const candidate = value;
297
+ return isGridTemplate(candidate.template) && (candidate.weight === void 0 || isGridLeadingWeight(candidate.weight));
298
+ }
299
+ var spectreStackDirections = ["vertical", "horizontal"];
300
+ function isStackDirection(value) {
301
+ return spectreStackDirections.includes(value);
302
+ }
195
303
  var spectreStackBases = ["sidebar"];
196
304
  function isStackBasis(value) {
197
305
  return spectreStackBases.includes(value);
198
306
  }
307
+ var spectreNavAligns = ["start", "center", "end"];
308
+ function isNavAlign(value) {
309
+ return spectreNavAligns.includes(value);
310
+ }
199
311
  var spectreStackAligns = ["center", "stretch"];
200
312
  function isStackAlign(value) {
201
313
  return spectreStackAligns.includes(value);
202
314
  }
315
+ var spectreStackGaps = ["sm", "md", "lg"];
316
+ function isStackGap(value) {
317
+ return spectreStackGaps.includes(value);
318
+ }
203
319
  var spectreDropdownPlacements = [
204
320
  "bottom-start",
205
321
  "bottom-end",
@@ -220,6 +336,12 @@ var spectreToastVariants = [
220
336
  function isToastVariant(value) {
221
337
  return spectreToastVariants.includes(value);
222
338
  }
339
+ var spectreSidebarLinkLevels = ["parent", "child"];
340
+ function isSidebarLinkLevel(value) {
341
+ return spectreSidebarLinkLevels.includes(
342
+ value
343
+ );
344
+ }
223
345
  var spectreTooltipPlacements = [
224
346
  "top",
225
347
  "bottom",
@@ -280,9 +402,7 @@ var spectreTextTransforms = [
280
402
  "capitalize"
281
403
  ];
282
404
  function isTextTransform(value) {
283
- return spectreTextTransforms.includes(
284
- value
285
- );
405
+ return spectreTextTransforms.includes(value);
286
406
  }
287
407
  function normalizeInt(value, fallback, min = 0) {
288
408
  if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
@@ -290,7 +410,7 @@ function normalizeInt(value, fallback, min = 0) {
290
410
  }
291
411
  return value;
292
412
  }
293
- var spectreUtilityClassPattern = /^sp-[a-z0-9]+(?:-[a-z0-9]+)*$/;
413
+ var spectreUtilityClassPattern = /^sp-[a-z0-9]+(?:-[a-z0-9]+)*(?:__[a-z0-9]+(?:-[a-z0-9]+)*)?(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/;
294
414
  function sanitizeUtilityClasses(value) {
295
415
  if (!value) {
296
416
  return "";
@@ -640,9 +760,11 @@ var SpectreProjectableElement = class extends SpectreBaseElement {
640
760
  var SpectreButtonElement = class extends SpectreProjectableElement {
641
761
  constructor() {
642
762
  super(...arguments);
763
+ this.compact = false;
643
764
  this.disabled = false;
644
765
  this.fullWidth = false;
645
766
  this.iconOnly = false;
767
+ this.innerClass = void 0;
646
768
  this.loading = false;
647
769
  this.loadingLabel = "Loading";
648
770
  this.pill = false;
@@ -683,6 +805,9 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
683
805
  return el.hasAttribute("data-sp-button-native") || el.hasAttribute("data-sp-button-loading-label") || el.hasAttribute("data-sp-button-label-fallback");
684
806
  }
685
807
  willUpdate(changedProperties) {
808
+ if (changedProperties.has("compact") && this.compact == null) {
809
+ this.compact = false;
810
+ }
686
811
  if (changedProperties.has("disabled") && this.disabled == null) {
687
812
  this.disabled = false;
688
813
  }
@@ -717,7 +842,8 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
717
842
  }
718
843
  }
719
844
  get buttonClasses() {
720
- return spectreUi.getButtonClasses({
845
+ const recipeClasses = spectreUi.getButtonClasses({
846
+ compact: this.compact ?? false,
721
847
  disabled: this.isDisabled,
722
848
  fullWidth: this.fullWidth ?? false,
723
849
  iconOnly: this.iconOnly ?? false,
@@ -726,6 +852,8 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
726
852
  size: this.size,
727
853
  variant: this.variant
728
854
  });
855
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
856
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
729
857
  }
730
858
  get visibleLabelFallback() {
731
859
  const trimmedLabel = this.label?.trim();
@@ -794,11 +922,13 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
794
922
  }
795
923
  };
796
924
  SpectreButtonElement.properties = {
925
+ compact: { type: Boolean, reflect: true },
797
926
  disabled: { type: Boolean, reflect: true },
798
927
  form: { type: String },
799
928
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
800
929
  href: { type: String, reflect: true },
801
930
  iconOnly: { attribute: "icon-only", type: Boolean, reflect: true },
931
+ innerClass: { attribute: "inner-class", type: String },
802
932
  label: { type: String, reflect: true },
803
933
  loading: { type: Boolean, reflect: true },
804
934
  loadingLabel: { attribute: "loading-label", type: String, reflect: true },
@@ -1928,11 +2058,20 @@ function defineSpectreBadge(tagName = "sp-badge") {
1928
2058
  customElements.define(tagName, SpectreBadgeElement);
1929
2059
  return SpectreBadgeElement;
1930
2060
  }
2061
+ var paddedConverter = {
2062
+ fromAttribute(value) {
2063
+ return value !== "false";
2064
+ },
2065
+ toAttribute(value) {
2066
+ return value ? null : "false";
2067
+ }
2068
+ };
1931
2069
  var SpectreCardElement = class extends SpectreProjectableElement {
1932
2070
  constructor() {
1933
2071
  super(...arguments);
1934
2072
  this.disabled = false;
1935
2073
  this.fullHeight = false;
2074
+ this.innerClass = void 0;
1936
2075
  this.interactive = false;
1937
2076
  this.loading = false;
1938
2077
  this.padded = true;
@@ -1981,7 +2120,7 @@ var SpectreCardElement = class extends SpectreProjectableElement {
1981
2120
  }
1982
2121
  }
1983
2122
  get cardClasses() {
1984
- return spectreUi.getCardClasses({
2123
+ const recipeClasses = spectreUi.getCardClasses({
1985
2124
  disabled: this.isDisabled,
1986
2125
  fullHeight: this.fullHeight ?? false,
1987
2126
  interactive: this.interactive ?? false,
@@ -1989,6 +2128,8 @@ var SpectreCardElement = class extends SpectreProjectableElement {
1989
2128
  padded: this.padded ?? true,
1990
2129
  variant: this.variant
1991
2130
  });
2131
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
2132
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
1992
2133
  }
1993
2134
  render() {
1994
2135
  return lit.html`<div
@@ -2009,9 +2150,10 @@ var SpectreCardElement = class extends SpectreProjectableElement {
2009
2150
  SpectreCardElement.properties = {
2010
2151
  disabled: { type: Boolean, reflect: true },
2011
2152
  fullHeight: { attribute: "full-height", type: Boolean, reflect: true },
2153
+ innerClass: { attribute: "inner-class", type: String },
2012
2154
  interactive: { type: Boolean, reflect: true },
2013
2155
  loading: { type: Boolean, reflect: true },
2014
- padded: { type: Boolean, reflect: true },
2156
+ padded: { converter: paddedConverter, reflect: true },
2015
2157
  variant: { type: String, reflect: true }
2016
2158
  };
2017
2159
  function defineSpectreCard(tagName = "sp-card") {
@@ -2850,9 +2992,15 @@ function defineSpectreContainer(tagName = "sp-container") {
2850
2992
  var SpectreGridElement = class extends SpectreProjectableElement {
2851
2993
  constructor() {
2852
2994
  super(...arguments);
2995
+ this.align = void 0;
2853
2996
  this.columns = 1;
2997
+ this.columnGap = void 0;
2998
+ this.explicitTemplate = void 0;
2999
+ this.fixedTracks = void 0;
2854
3000
  this.gap = "md";
2855
3001
  this.innerClass = void 0;
3002
+ this.leadingTracks = void 0;
3003
+ this.rowGap = void 0;
2856
3004
  }
2857
3005
  get id() {
2858
3006
  return super.id;
@@ -2882,6 +3030,9 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2882
3030
  return el.hasAttribute("data-sp-grid-native");
2883
3031
  }
2884
3032
  willUpdate(changedProperties) {
3033
+ if (changedProperties.has("align") && this.align != null && !isGridAlign(this.align)) {
3034
+ this.align = void 0;
3035
+ }
2885
3036
  if (changedProperties.has("columns")) {
2886
3037
  const normalized = normalizeInt(this.columns, void 0, 1);
2887
3038
  this.columns = normalized != null && isGridColumns(normalized) ? normalized : 1;
@@ -2889,16 +3040,69 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2889
3040
  if (changedProperties.has("gap") && (this.gap == null || !isGridGap(this.gap))) {
2890
3041
  this.gap = "md";
2891
3042
  }
3043
+ if (changedProperties.has("columnGap") && this.columnGap != null && !isGridGap(this.columnGap)) {
3044
+ this.columnGap = void 0;
3045
+ }
3046
+ if (changedProperties.has("rowGap") && this.rowGap != null && !isGridGap(this.rowGap)) {
3047
+ this.rowGap = void 0;
3048
+ }
2892
3049
  if (changedProperties.has("span") && this.span !== void 0 && !isGridSpan(this.span) && !isGridSpanOptions(this.span)) {
2893
3050
  this.span = void 0;
2894
3051
  }
3052
+ if (changedProperties.has("offset") && this.offset !== void 0 && !isGridOffset(this.offset) && !isGridOffsetOptions(this.offset)) {
3053
+ this.offset = void 0;
3054
+ }
3055
+ if (changedProperties.has("rowSpan") && this.rowSpan !== void 0 && !isGridSpan(this.rowSpan) && !isGridSpanOptions(this.rowSpan)) {
3056
+ this.rowSpan = void 0;
3057
+ }
3058
+ if (changedProperties.has("rowOffset") && this.rowOffset !== void 0 && !isGridOffset(this.rowOffset) && !isGridOffsetOptions(this.rowOffset)) {
3059
+ this.rowOffset = void 0;
3060
+ }
3061
+ if (changedProperties.has("order") && this.order !== void 0 && !isGridOrder(this.order) && !isGridOrderOptions(this.order)) {
3062
+ this.order = void 0;
3063
+ }
3064
+ if (changedProperties.has("leadingTracks") && this.leadingTracks !== void 0 && !isGridLeadingTracksOptions(this.leadingTracks)) {
3065
+ this.leadingTracks = void 0;
3066
+ }
3067
+ if (changedProperties.has("fixedTracks") && this.fixedTracks !== void 0 && !isGridFixedTracksOptions(this.fixedTracks)) {
3068
+ this.fixedTracks = void 0;
3069
+ }
3070
+ if (changedProperties.has("explicitTemplate") && this.explicitTemplate !== void 0 && !isGridExplicitTemplateOptions(this.explicitTemplate)) {
3071
+ this.explicitTemplate = void 0;
3072
+ }
2895
3073
  }
2896
3074
  get gridClasses() {
2897
3075
  const recipeClasses = spectreUi.getGridClasses({
2898
3076
  columns: this.columns,
2899
3077
  gap: this.gap,
3078
+ ...this.align !== void 0 && { align: this.align },
3079
+ ...this.columnGap !== void 0 && {
3080
+ columnGap: this.columnGap
3081
+ },
3082
+ ...this.rowGap !== void 0 && { rowGap: this.rowGap },
2900
3083
  ...this.span !== void 0 && {
2901
3084
  span: this.span
3085
+ },
3086
+ ...this.offset !== void 0 && {
3087
+ offset: this.offset
3088
+ },
3089
+ ...this.rowSpan !== void 0 && {
3090
+ rowSpan: this.rowSpan
3091
+ },
3092
+ ...this.rowOffset !== void 0 && {
3093
+ rowOffset: this.rowOffset
3094
+ },
3095
+ ...this.order !== void 0 && {
3096
+ order: this.order
3097
+ },
3098
+ ...this.leadingTracks !== void 0 && {
3099
+ leadingTracks: this.leadingTracks
3100
+ },
3101
+ ...this.fixedTracks !== void 0 && {
3102
+ fixedTracks: this.fixedTracks
3103
+ },
3104
+ ...this.explicitTemplate !== void 0 && {
3105
+ explicitTemplate: this.explicitTemplate
2902
3106
  }
2903
3107
  });
2904
3108
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
@@ -2919,9 +3123,19 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2919
3123
  }
2920
3124
  };
2921
3125
  SpectreGridElement.properties = {
3126
+ align: { type: String, reflect: true },
2922
3127
  columns: { type: Number, reflect: true },
3128
+ columnGap: { attribute: "column-gap", type: String, reflect: true },
3129
+ explicitTemplate: { attribute: "explicit-template", type: Object },
3130
+ fixedTracks: { attribute: "fixed-tracks", type: Object },
2923
3131
  gap: { type: String, reflect: true },
2924
3132
  innerClass: { attribute: "inner-class", type: String },
3133
+ leadingTracks: { attribute: "leading-tracks", type: Object },
3134
+ offset: { type: Object },
3135
+ order: { type: Object },
3136
+ rowGap: { attribute: "row-gap", type: String, reflect: true },
3137
+ rowOffset: { attribute: "row-offset", type: Object },
3138
+ rowSpan: { attribute: "row-span", type: Object },
2925
3139
  span: { type: Object }
2926
3140
  };
2927
3141
  function defineSpectreGrid(tagName = "sp-grid") {
@@ -3000,6 +3214,7 @@ var SpectreStackElement = class extends SpectreProjectableElement {
3000
3214
  this.align = "center";
3001
3215
  this.basis = void 0;
3002
3216
  this.direction = "vertical";
3217
+ this.gap = "md";
3003
3218
  this.innerClass = void 0;
3004
3219
  }
3005
3220
  get id() {
@@ -3039,11 +3254,15 @@ var SpectreStackElement = class extends SpectreProjectableElement {
3039
3254
  if (changedProperties.has("align") && (this.align == null || !isStackAlign(this.align))) {
3040
3255
  this.align = "center";
3041
3256
  }
3257
+ if (changedProperties.has("gap") && (this.gap == null || !isStackGap(this.gap))) {
3258
+ this.gap = "md";
3259
+ }
3042
3260
  }
3043
3261
  get stackClasses() {
3044
3262
  const recipeClasses = spectreUi.getStackClasses({
3045
3263
  align: this.align,
3046
3264
  direction: this.direction,
3265
+ gap: this.gap,
3047
3266
  ...this.basis != null ? { basis: this.basis } : {}
3048
3267
  });
3049
3268
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
@@ -3067,6 +3286,7 @@ SpectreStackElement.properties = {
3067
3286
  align: { type: String, reflect: true },
3068
3287
  basis: { type: String, reflect: true },
3069
3288
  direction: { type: String, reflect: true },
3289
+ gap: { type: String, reflect: true },
3070
3290
  innerClass: { attribute: "inner-class", type: String }
3071
3291
  };
3072
3292
  function defineSpectreStack(tagName = "sp-stack") {
@@ -3348,6 +3568,137 @@ function defineSpectreFooter(tagName = "sp-footer") {
3348
3568
  customElements.define(tagName, SpectreFooterElement);
3349
3569
  return SpectreFooterElement;
3350
3570
  }
3571
+ var SpectreFooterChipElement = class extends SpectreProjectableElement {
3572
+ constructor() {
3573
+ super(...arguments);
3574
+ this.disabled = false;
3575
+ }
3576
+ get id() {
3577
+ return super.id;
3578
+ }
3579
+ set id(value) {
3580
+ super.id = value;
3581
+ }
3582
+ get title() {
3583
+ return super.title;
3584
+ }
3585
+ set title(value) {
3586
+ super.title = value;
3587
+ }
3588
+ getContentContainer() {
3589
+ return this.querySelector("[data-sp-footer-chip-native]");
3590
+ }
3591
+ isInternalNode(node) {
3592
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3593
+ return false;
3594
+ }
3595
+ const el = node;
3596
+ return el.hasAttribute("data-sp-footer-chip-native");
3597
+ }
3598
+ willUpdate(changedProperties) {
3599
+ if (changedProperties.has("disabled") && this.disabled == null) {
3600
+ this.disabled = false;
3601
+ }
3602
+ }
3603
+ get footerChipClasses() {
3604
+ return spectreUi.getFooterChipClasses({ disabled: this.disabled ?? false });
3605
+ }
3606
+ render() {
3607
+ return lit.html`<span
3608
+ aria-disabled="${ifDefined_js.ifDefined(this.disabled ? "true" : void 0)}"
3609
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
3610
+ class="${this.footerChipClasses}"
3611
+ data-sp-footer-chip-native
3612
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
3613
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
3614
+ >
3615
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
3616
+ </span>`;
3617
+ }
3618
+ };
3619
+ SpectreFooterChipElement.properties = {
3620
+ disabled: { type: Boolean, reflect: true }
3621
+ };
3622
+ function defineSpectreFooterChip(tagName = "sp-footer-chip") {
3623
+ const existingElement = customElements.get(tagName);
3624
+ if (existingElement) {
3625
+ return existingElement;
3626
+ }
3627
+ customElements.define(tagName, SpectreFooterChipElement);
3628
+ return SpectreFooterChipElement;
3629
+ }
3630
+ var SpectreFooterLinkElement = class extends SpectreProjectableElement {
3631
+ constructor() {
3632
+ super(...arguments);
3633
+ this.active = false;
3634
+ this.disabled = false;
3635
+ this.href = void 0;
3636
+ }
3637
+ get id() {
3638
+ return super.id;
3639
+ }
3640
+ set id(value) {
3641
+ super.id = value;
3642
+ }
3643
+ get title() {
3644
+ return super.title;
3645
+ }
3646
+ set title(value) {
3647
+ super.title = value;
3648
+ }
3649
+ getContentContainer() {
3650
+ return this.querySelector("[data-sp-footer-link-native]");
3651
+ }
3652
+ isInternalNode(node) {
3653
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3654
+ return false;
3655
+ }
3656
+ const el = node;
3657
+ return el.hasAttribute("data-sp-footer-link-native");
3658
+ }
3659
+ willUpdate(changedProperties) {
3660
+ if (changedProperties.has("active") && this.active == null) {
3661
+ this.active = false;
3662
+ }
3663
+ if (changedProperties.has("disabled") && this.disabled == null) {
3664
+ this.disabled = false;
3665
+ }
3666
+ }
3667
+ get footerLinkClasses() {
3668
+ return spectreUi.getFooterLinkClasses({
3669
+ active: this.active ?? false,
3670
+ disabled: this.disabled ?? false
3671
+ });
3672
+ }
3673
+ render() {
3674
+ return lit.html`<a
3675
+ aria-current="${ifDefined_js.ifDefined(this.active ? "page" : void 0)}"
3676
+ aria-disabled="${ifDefined_js.ifDefined(this.disabled ? "true" : void 0)}"
3677
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
3678
+ class="${this.footerLinkClasses}"
3679
+ data-sp-footer-link-native
3680
+ href="${ifDefined_js.ifDefined(this.disabled ? void 0 : this.href)}"
3681
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
3682
+ tabindex="${ifDefined_js.ifDefined(this.disabled ? -1 : void 0)}"
3683
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
3684
+ >
3685
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
3686
+ </a>`;
3687
+ }
3688
+ };
3689
+ SpectreFooterLinkElement.properties = {
3690
+ active: { type: Boolean, reflect: true },
3691
+ disabled: { type: Boolean, reflect: true },
3692
+ href: { type: String }
3693
+ };
3694
+ function defineSpectreFooterLink(tagName = "sp-footer-link") {
3695
+ const existingElement = customElements.get(tagName);
3696
+ if (existingElement) {
3697
+ return existingElement;
3698
+ }
3699
+ customElements.define(tagName, SpectreFooterLinkElement);
3700
+ return SpectreFooterLinkElement;
3701
+ }
3351
3702
  var FOCUSABLE_SELECTOR = [
3352
3703
  "a[href]",
3353
3704
  "button:not([disabled])",
@@ -3518,6 +3869,7 @@ function defineSpectreModal(tagName = "sp-modal") {
3518
3869
  var SpectreNavElement = class extends SpectreProjectableElement {
3519
3870
  constructor() {
3520
3871
  super(...arguments);
3872
+ this.align = void 0;
3521
3873
  this.bordered = false;
3522
3874
  this.fullWidth = false;
3523
3875
  this.innerClass = void 0;
@@ -3560,12 +3912,16 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3560
3912
  if (changedProperties.has("sticky") && this.sticky == null) {
3561
3913
  this.sticky = false;
3562
3914
  }
3915
+ if (changedProperties.has("align") && this.align != null && !isNavAlign(this.align)) {
3916
+ this.align = void 0;
3917
+ }
3563
3918
  }
3564
3919
  get navClasses() {
3565
3920
  const recipeClasses = spectreUi.getNavClasses({
3566
3921
  bordered: this.bordered ?? false,
3567
3922
  fullWidth: this.fullWidth ?? false,
3568
- sticky: this.sticky ?? false
3923
+ sticky: this.sticky ?? false,
3924
+ ...this.align !== void 0 && { align: this.align }
3569
3925
  });
3570
3926
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
3571
3927
  return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
@@ -3583,6 +3939,7 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3583
3939
  }
3584
3940
  };
3585
3941
  SpectreNavElement.properties = {
3942
+ align: { type: String, reflect: true },
3586
3943
  bordered: { type: Boolean, reflect: true },
3587
3944
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
3588
3945
  innerClass: { attribute: "inner-class", type: String },
@@ -3938,6 +4295,84 @@ function defineSpectreSidebar(tagName = "sp-sidebar") {
3938
4295
  customElements.define(tagName, SpectreSidebarElement);
3939
4296
  return SpectreSidebarElement;
3940
4297
  }
4298
+ var SpectreSidebarLinkElement = class extends SpectreProjectableElement {
4299
+ constructor() {
4300
+ super(...arguments);
4301
+ this.active = false;
4302
+ this.disabled = false;
4303
+ this.href = void 0;
4304
+ this.level = "parent";
4305
+ }
4306
+ get id() {
4307
+ return super.id;
4308
+ }
4309
+ set id(value) {
4310
+ super.id = value;
4311
+ }
4312
+ get title() {
4313
+ return super.title;
4314
+ }
4315
+ set title(value) {
4316
+ super.title = value;
4317
+ }
4318
+ getContentContainer() {
4319
+ return this.querySelector("[data-sp-sidebar-link-native]");
4320
+ }
4321
+ isInternalNode(node) {
4322
+ if (node.nodeType !== Node.ELEMENT_NODE) {
4323
+ return false;
4324
+ }
4325
+ const el = node;
4326
+ return el.hasAttribute("data-sp-sidebar-link-native");
4327
+ }
4328
+ willUpdate(changedProperties) {
4329
+ if (changedProperties.has("active") && this.active == null) {
4330
+ this.active = false;
4331
+ }
4332
+ if (changedProperties.has("disabled") && this.disabled == null) {
4333
+ this.disabled = false;
4334
+ }
4335
+ if (changedProperties.has("level") && (this.level == null || !isSidebarLinkLevel(this.level))) {
4336
+ this.level = "parent";
4337
+ }
4338
+ }
4339
+ get sidebarLinkClasses() {
4340
+ return spectreUi.getSidebarLinkClasses({
4341
+ active: this.active ?? false,
4342
+ disabled: this.disabled ?? false,
4343
+ level: this.level
4344
+ });
4345
+ }
4346
+ render() {
4347
+ return lit.html`<a
4348
+ aria-current="${ifDefined_js.ifDefined(this.active ? "page" : void 0)}"
4349
+ aria-disabled="${ifDefined_js.ifDefined(this.disabled ? "true" : void 0)}"
4350
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
4351
+ class="${this.sidebarLinkClasses}"
4352
+ data-sp-sidebar-link-native
4353
+ href="${ifDefined_js.ifDefined(this.disabled ? void 0 : this.href)}"
4354
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
4355
+ tabindex="${ifDefined_js.ifDefined(this.disabled ? -1 : void 0)}"
4356
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
4357
+ >
4358
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
4359
+ </a>`;
4360
+ }
4361
+ };
4362
+ SpectreSidebarLinkElement.properties = {
4363
+ active: { type: Boolean, reflect: true },
4364
+ disabled: { type: Boolean, reflect: true },
4365
+ href: { type: String },
4366
+ level: { type: String, reflect: true }
4367
+ };
4368
+ function defineSpectreSidebarLink(tagName = "sp-sidebar-link") {
4369
+ const existingElement = customElements.get(tagName);
4370
+ if (existingElement) {
4371
+ return existingElement;
4372
+ }
4373
+ customElements.define(tagName, SpectreSidebarLinkElement);
4374
+ return SpectreSidebarLinkElement;
4375
+ }
3941
4376
  var SpectreSidebarToggleElement = class extends SpectreProjectableElement {
3942
4377
  constructor() {
3943
4378
  super(...arguments);
@@ -4485,10 +4920,13 @@ function defineSpectreComponents() {
4485
4920
  defineSpectreStack();
4486
4921
  defineSpectreDropdown();
4487
4922
  defineSpectreFooter();
4923
+ defineSpectreFooterChip();
4924
+ defineSpectreFooterLink();
4488
4925
  defineSpectreModal();
4489
4926
  defineSpectreNav();
4490
4927
  defineSpectreNavItem();
4491
4928
  defineSpectreSidebar();
4929
+ defineSpectreSidebarLink();
4492
4930
  defineSpectreSidebarToggle();
4493
4931
  defineSpectreToast();
4494
4932
  defineSpectreTooltip();
@@ -4504,7 +4942,9 @@ exports.SpectreCheckboxElement = SpectreCheckboxElement;
4504
4942
  exports.SpectreContainerElement = SpectreContainerElement;
4505
4943
  exports.SpectreDropdownElement = SpectreDropdownElement;
4506
4944
  exports.SpectreFieldsetElement = SpectreFieldsetElement;
4945
+ exports.SpectreFooterChipElement = SpectreFooterChipElement;
4507
4946
  exports.SpectreFooterElement = SpectreFooterElement;
4947
+ exports.SpectreFooterLinkElement = SpectreFooterLinkElement;
4508
4948
  exports.SpectreGridElement = SpectreGridElement;
4509
4949
  exports.SpectreIconBoxElement = SpectreIconBoxElement;
4510
4950
  exports.SpectreInputElement = SpectreInputElement;
@@ -4518,6 +4958,7 @@ exports.SpectreRatingElement = SpectreRatingElement;
4518
4958
  exports.SpectreSectionElement = SpectreSectionElement;
4519
4959
  exports.SpectreSelectElement = SpectreSelectElement;
4520
4960
  exports.SpectreSidebarElement = SpectreSidebarElement;
4961
+ exports.SpectreSidebarLinkElement = SpectreSidebarLinkElement;
4521
4962
  exports.SpectreSidebarToggleElement = SpectreSidebarToggleElement;
4522
4963
  exports.SpectreSpinnerElement = SpectreSpinnerElement;
4523
4964
  exports.SpectreStackElement = SpectreStackElement;
@@ -4538,6 +4979,8 @@ exports.defineSpectreContainer = defineSpectreContainer;
4538
4979
  exports.defineSpectreDropdown = defineSpectreDropdown;
4539
4980
  exports.defineSpectreFieldset = defineSpectreFieldset;
4540
4981
  exports.defineSpectreFooter = defineSpectreFooter;
4982
+ exports.defineSpectreFooterChip = defineSpectreFooterChip;
4983
+ exports.defineSpectreFooterLink = defineSpectreFooterLink;
4541
4984
  exports.defineSpectreGrid = defineSpectreGrid;
4542
4985
  exports.defineSpectreIconBox = defineSpectreIconBox;
4543
4986
  exports.defineSpectreInput = defineSpectreInput;
@@ -4551,6 +4994,7 @@ exports.defineSpectreRating = defineSpectreRating;
4551
4994
  exports.defineSpectreSection = defineSpectreSection;
4552
4995
  exports.defineSpectreSelect = defineSpectreSelect;
4553
4996
  exports.defineSpectreSidebar = defineSpectreSidebar;
4997
+ exports.defineSpectreSidebarLink = defineSpectreSidebarLink;
4554
4998
  exports.defineSpectreSidebarToggle = defineSpectreSidebarToggle;
4555
4999
  exports.defineSpectreSpinner = defineSpectreSpinner;
4556
5000
  exports.defineSpectreStack = defineSpectreStack;
@@ -4572,6 +5016,7 @@ exports.spectreButtonVariants = spectreButtonVariants;
4572
5016
  exports.spectreCardVariants = spectreCardVariants;
4573
5017
  exports.spectreContainerMaxWidths = spectreContainerMaxWidths;
4574
5018
  exports.spectreDropdownPlacements = spectreDropdownPlacements;
5019
+ exports.spectreGridAligns = spectreGridAligns;
4575
5020
  exports.spectreGridColumns = spectreGridColumns;
4576
5021
  exports.spectreGridGaps = spectreGridGaps;
4577
5022
  exports.spectreIconBoxSizes = spectreInputSizes;
@@ -4584,6 +5029,7 @@ exports.spectreSpinnerVariants = spectreSpinnerVariants;
4584
5029
  exports.spectreStackAligns = spectreStackAligns;
4585
5030
  exports.spectreStackBases = spectreStackBases;
4586
5031
  exports.spectreStackDirections = spectreStackDirections;
5032
+ exports.spectreStackGaps = spectreStackGaps;
4587
5033
  exports.spectreTagSizes = spectreInputSizes;
4588
5034
  exports.spectreTagVariants = spectreTagVariants;
4589
5035
  exports.spectreTestimonialVariants = spectreTestimonialVariants;