@phcdevworks/spectre-components 1.15.0 → 1.16.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 (130) hide show
  1. package/README.md +110 -15
  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 +6 -0
  15. package/dist/button.cjs.map +1 -1
  16. package/dist/button.d.cts +8 -2
  17. package/dist/button.d.ts +8 -2
  18. package/dist/button.js +6 -0
  19. package/dist/button.js.map +1 -1
  20. package/dist/card.cjs.map +1 -1
  21. package/dist/card.d.cts +2 -2
  22. package/dist/card.d.ts +2 -2
  23. package/dist/card.js.map +1 -1
  24. package/dist/container.cjs.map +1 -1
  25. package/dist/container.d.cts +2 -2
  26. package/dist/container.d.ts +2 -2
  27. package/dist/container.js.map +1 -1
  28. package/dist/dropdown.cjs.map +1 -1
  29. package/dist/dropdown.d.cts +2 -2
  30. package/dist/dropdown.d.ts +2 -2
  31. package/dist/dropdown.js.map +1 -1
  32. package/dist/footer-chip.cjs +411 -0
  33. package/dist/footer-chip.cjs.map +1 -0
  34. package/dist/footer-chip.d.cts +32 -0
  35. package/dist/footer-chip.d.ts +32 -0
  36. package/dist/footer-chip.js +408 -0
  37. package/dist/footer-chip.js.map +1 -0
  38. package/dist/footer-link.cjs +424 -0
  39. package/dist/footer-link.cjs.map +1 -0
  40. package/dist/footer-link.d.cts +43 -0
  41. package/dist/footer-link.d.ts +43 -0
  42. package/dist/footer-link.js +421 -0
  43. package/dist/footer-link.js.map +1 -0
  44. package/dist/footer.cjs.map +1 -1
  45. package/dist/footer.js.map +1 -1
  46. package/dist/{form-BGQjgJrL.d.cts → form-bHrr2vl7.d.cts} +40 -1
  47. package/dist/{form-BGQjgJrL.d.ts → form-bHrr2vl7.d.ts} +40 -1
  48. package/dist/grid.cjs +166 -0
  49. package/dist/grid.cjs.map +1 -1
  50. package/dist/grid.d.cts +56 -2
  51. package/dist/grid.d.ts +56 -2
  52. package/dist/grid.js +166 -0
  53. package/dist/grid.js.map +1 -1
  54. package/dist/icon-box.cjs.map +1 -1
  55. package/dist/icon-box.d.cts +2 -2
  56. package/dist/icon-box.d.ts +2 -2
  57. package/dist/icon-box.js.map +1 -1
  58. package/dist/index.cjs +409 -7
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.d.cts +4 -1
  61. package/dist/index.d.ts +4 -1
  62. package/dist/index.js +405 -9
  63. package/dist/index.js.map +1 -1
  64. package/dist/input.cjs.map +1 -1
  65. package/dist/input.d.cts +2 -2
  66. package/dist/input.d.ts +2 -2
  67. package/dist/input.js.map +1 -1
  68. package/dist/nav-item.cjs.map +1 -1
  69. package/dist/nav-item.d.cts +1 -1
  70. package/dist/nav-item.d.ts +1 -1
  71. package/dist/nav-item.js.map +1 -1
  72. package/dist/nav.cjs +11 -1
  73. package/dist/nav.cjs.map +1 -1
  74. package/dist/nav.d.cts +7 -0
  75. package/dist/nav.d.ts +7 -0
  76. package/dist/nav.js +11 -1
  77. package/dist/nav.js.map +1 -1
  78. package/dist/rating.cjs.map +1 -1
  79. package/dist/rating.d.cts +2 -2
  80. package/dist/rating.d.ts +2 -2
  81. package/dist/rating.js.map +1 -1
  82. package/dist/section.cjs.map +1 -1
  83. package/dist/section.js.map +1 -1
  84. package/dist/select.cjs.map +1 -1
  85. package/dist/select.d.cts +1 -1
  86. package/dist/select.d.ts +1 -1
  87. package/dist/select.js.map +1 -1
  88. package/dist/sidebar-link.cjs +436 -0
  89. package/dist/sidebar-link.cjs.map +1 -0
  90. package/dist/sidebar-link.d.cts +50 -0
  91. package/dist/sidebar-link.d.ts +50 -0
  92. package/dist/sidebar-link.js +433 -0
  93. package/dist/sidebar-link.js.map +1 -0
  94. package/dist/spinner.cjs.map +1 -1
  95. package/dist/spinner.d.cts +2 -2
  96. package/dist/spinner.d.ts +2 -2
  97. package/dist/spinner.js.map +1 -1
  98. package/dist/stack.cjs +1 -3
  99. package/dist/stack.cjs.map +1 -1
  100. package/dist/stack.d.cts +2 -2
  101. package/dist/stack.d.ts +2 -2
  102. package/dist/stack.js +1 -3
  103. package/dist/stack.js.map +1 -1
  104. package/dist/tag.cjs.map +1 -1
  105. package/dist/tag.d.cts +2 -2
  106. package/dist/tag.d.ts +2 -2
  107. package/dist/tag.js.map +1 -1
  108. package/dist/testimonial.cjs.map +1 -1
  109. package/dist/testimonial.d.cts +2 -2
  110. package/dist/testimonial.d.ts +2 -2
  111. package/dist/testimonial.js.map +1 -1
  112. package/dist/text.cjs +1 -3
  113. package/dist/text.cjs.map +1 -1
  114. package/dist/text.d.cts +2 -2
  115. package/dist/text.d.ts +2 -2
  116. package/dist/text.js +1 -3
  117. package/dist/text.js.map +1 -1
  118. package/dist/textarea.cjs.map +1 -1
  119. package/dist/textarea.d.cts +1 -1
  120. package/dist/textarea.d.ts +1 -1
  121. package/dist/textarea.js.map +1 -1
  122. package/dist/toast.cjs.map +1 -1
  123. package/dist/toast.d.cts +2 -2
  124. package/dist/toast.d.ts +2 -2
  125. package/dist/toast.js.map +1 -1
  126. package/dist/tooltip.cjs.map +1 -1
  127. package/dist/tooltip.d.cts +2 -2
  128. package/dist/tooltip.d.ts +2 -2
  129. package/dist/tooltip.js.map +1 -1
  130. package/package.json +23 -8
package/dist/index.cjs CHANGED
@@ -186,16 +186,118 @@ function isGridSpanOptions(value) {
186
186
  const candidate = value;
187
187
  return (candidate.base === void 0 || isGridSpan(candidate.base)) && (candidate.md === void 0 || isGridSpan(candidate.md)) && (candidate.lg === void 0 || isGridSpan(candidate.lg));
188
188
  }
189
- var spectreStackDirections = ["vertical", "horizontal"];
190
- function isStackDirection(value) {
191
- return spectreStackDirections.includes(
189
+ var spectreGridOffsets = [
190
+ 0,
191
+ 1,
192
+ 2,
193
+ 3,
194
+ 4,
195
+ 5,
196
+ 6,
197
+ 7,
198
+ 8,
199
+ 9,
200
+ 10,
201
+ 11
202
+ ];
203
+ function isGridOffset(value) {
204
+ return spectreGridOffsets.includes(value);
205
+ }
206
+ function isGridOffsetOptions(value) {
207
+ if (typeof value !== "object" || value === null) {
208
+ return false;
209
+ }
210
+ const candidate = value;
211
+ return (candidate.base === void 0 || isGridOffset(candidate.base)) && (candidate.md === void 0 || isGridOffset(candidate.md)) && (candidate.lg === void 0 || isGridOffset(candidate.lg));
212
+ }
213
+ var spectreGridOrders = [
214
+ "first",
215
+ "last",
216
+ "none",
217
+ 1,
218
+ 2,
219
+ 3,
220
+ 4,
221
+ 5,
222
+ 6,
223
+ 7,
224
+ 8,
225
+ 9,
226
+ 10,
227
+ 11,
228
+ 12
229
+ ];
230
+ function isGridOrder(value) {
231
+ return spectreGridOrders.includes(
192
232
  value
193
233
  );
194
234
  }
235
+ function isGridOrderOptions(value) {
236
+ if (typeof value !== "object" || value === null) {
237
+ return false;
238
+ }
239
+ const candidate = value;
240
+ return (candidate.base === void 0 || isGridOrder(candidate.base)) && (candidate.md === void 0 || isGridOrder(candidate.md)) && (candidate.lg === void 0 || isGridOrder(candidate.lg));
241
+ }
242
+ var spectreGridLeadingWeights = [1.5, 1.6, 2, 2.5, 3];
243
+ function isGridLeadingWeight(value) {
244
+ return spectreGridLeadingWeights.includes(
245
+ value
246
+ );
247
+ }
248
+ function isGridLeadingWeightOptions(value) {
249
+ if (typeof value !== "object" || value === null) {
250
+ return false;
251
+ }
252
+ const candidate = value;
253
+ return (candidate.base === void 0 || isGridLeadingWeight(candidate.base)) && (candidate.md === void 0 || isGridLeadingWeight(candidate.md)) && (candidate.lg === void 0 || isGridLeadingWeight(candidate.lg));
254
+ }
255
+ function isGridLeadingTracksOptions(value) {
256
+ if (typeof value !== "object" || value === null) {
257
+ return false;
258
+ }
259
+ const candidate = value;
260
+ return isGridLeadingWeight(candidate.weight) || isGridLeadingWeightOptions(candidate.weight);
261
+ }
262
+ var spectreGridFixedTrackCounts = [1, 2, 3, 4];
263
+ function isGridFixedTrackCount(value) {
264
+ return spectreGridFixedTrackCounts.includes(
265
+ value
266
+ );
267
+ }
268
+ function isGridFixedTracksOptions(value) {
269
+ if (typeof value !== "object" || value === null) {
270
+ return false;
271
+ }
272
+ const candidate = value;
273
+ return isGridFixedTrackCount(candidate.count);
274
+ }
275
+ var spectreGridTemplates = [
276
+ "edge-fluid-edge",
277
+ "label-fluid-fluid"
278
+ ];
279
+ function isGridTemplate(value) {
280
+ return spectreGridTemplates.includes(value);
281
+ }
282
+ function isGridExplicitTemplateOptions(value) {
283
+ if (typeof value !== "object" || value === null) {
284
+ return false;
285
+ }
286
+ const candidate = value;
287
+ return isGridTemplate(candidate.template) && (candidate.weight === void 0 || isGridLeadingWeight(candidate.weight));
288
+ }
289
+ var spectreStackDirections = ["vertical", "horizontal"];
290
+ function isStackDirection(value) {
291
+ return spectreStackDirections.includes(value);
292
+ }
195
293
  var spectreStackBases = ["sidebar"];
196
294
  function isStackBasis(value) {
197
295
  return spectreStackBases.includes(value);
198
296
  }
297
+ var spectreNavAligns = ["start", "center", "end"];
298
+ function isNavAlign(value) {
299
+ return spectreNavAligns.includes(value);
300
+ }
199
301
  var spectreStackAligns = ["center", "stretch"];
200
302
  function isStackAlign(value) {
201
303
  return spectreStackAligns.includes(value);
@@ -220,6 +322,12 @@ var spectreToastVariants = [
220
322
  function isToastVariant(value) {
221
323
  return spectreToastVariants.includes(value);
222
324
  }
325
+ var spectreSidebarLinkLevels = ["parent", "child"];
326
+ function isSidebarLinkLevel(value) {
327
+ return spectreSidebarLinkLevels.includes(
328
+ value
329
+ );
330
+ }
223
331
  var spectreTooltipPlacements = [
224
332
  "top",
225
333
  "bottom",
@@ -280,9 +388,7 @@ var spectreTextTransforms = [
280
388
  "capitalize"
281
389
  ];
282
390
  function isTextTransform(value) {
283
- return spectreTextTransforms.includes(
284
- value
285
- );
391
+ return spectreTextTransforms.includes(value);
286
392
  }
287
393
  function normalizeInt(value, fallback, min = 0) {
288
394
  if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
@@ -640,6 +746,7 @@ var SpectreProjectableElement = class extends SpectreBaseElement {
640
746
  var SpectreButtonElement = class extends SpectreProjectableElement {
641
747
  constructor() {
642
748
  super(...arguments);
749
+ this.compact = false;
643
750
  this.disabled = false;
644
751
  this.fullWidth = false;
645
752
  this.iconOnly = false;
@@ -683,6 +790,9 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
683
790
  return el.hasAttribute("data-sp-button-native") || el.hasAttribute("data-sp-button-loading-label") || el.hasAttribute("data-sp-button-label-fallback");
684
791
  }
685
792
  willUpdate(changedProperties) {
793
+ if (changedProperties.has("compact") && this.compact == null) {
794
+ this.compact = false;
795
+ }
686
796
  if (changedProperties.has("disabled") && this.disabled == null) {
687
797
  this.disabled = false;
688
798
  }
@@ -718,6 +828,7 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
718
828
  }
719
829
  get buttonClasses() {
720
830
  return spectreUi.getButtonClasses({
831
+ compact: this.compact ?? false,
721
832
  disabled: this.isDisabled,
722
833
  fullWidth: this.fullWidth ?? false,
723
834
  iconOnly: this.iconOnly ?? false,
@@ -794,6 +905,7 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
794
905
  }
795
906
  };
796
907
  SpectreButtonElement.properties = {
908
+ compact: { type: Boolean, reflect: true },
797
909
  disabled: { type: Boolean, reflect: true },
798
910
  form: { type: String },
799
911
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
@@ -2851,8 +2963,13 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2851
2963
  constructor() {
2852
2964
  super(...arguments);
2853
2965
  this.columns = 1;
2966
+ this.columnGap = void 0;
2967
+ this.explicitTemplate = void 0;
2968
+ this.fixedTracks = void 0;
2854
2969
  this.gap = "md";
2855
2970
  this.innerClass = void 0;
2971
+ this.leadingTracks = void 0;
2972
+ this.rowGap = void 0;
2856
2973
  }
2857
2974
  get id() {
2858
2975
  return super.id;
@@ -2889,16 +3006,68 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2889
3006
  if (changedProperties.has("gap") && (this.gap == null || !isGridGap(this.gap))) {
2890
3007
  this.gap = "md";
2891
3008
  }
3009
+ if (changedProperties.has("columnGap") && this.columnGap != null && !isGridGap(this.columnGap)) {
3010
+ this.columnGap = void 0;
3011
+ }
3012
+ if (changedProperties.has("rowGap") && this.rowGap != null && !isGridGap(this.rowGap)) {
3013
+ this.rowGap = void 0;
3014
+ }
2892
3015
  if (changedProperties.has("span") && this.span !== void 0 && !isGridSpan(this.span) && !isGridSpanOptions(this.span)) {
2893
3016
  this.span = void 0;
2894
3017
  }
3018
+ if (changedProperties.has("offset") && this.offset !== void 0 && !isGridOffset(this.offset) && !isGridOffsetOptions(this.offset)) {
3019
+ this.offset = void 0;
3020
+ }
3021
+ if (changedProperties.has("rowSpan") && this.rowSpan !== void 0 && !isGridSpan(this.rowSpan) && !isGridSpanOptions(this.rowSpan)) {
3022
+ this.rowSpan = void 0;
3023
+ }
3024
+ if (changedProperties.has("rowOffset") && this.rowOffset !== void 0 && !isGridOffset(this.rowOffset) && !isGridOffsetOptions(this.rowOffset)) {
3025
+ this.rowOffset = void 0;
3026
+ }
3027
+ if (changedProperties.has("order") && this.order !== void 0 && !isGridOrder(this.order) && !isGridOrderOptions(this.order)) {
3028
+ this.order = void 0;
3029
+ }
3030
+ if (changedProperties.has("leadingTracks") && this.leadingTracks !== void 0 && !isGridLeadingTracksOptions(this.leadingTracks)) {
3031
+ this.leadingTracks = void 0;
3032
+ }
3033
+ if (changedProperties.has("fixedTracks") && this.fixedTracks !== void 0 && !isGridFixedTracksOptions(this.fixedTracks)) {
3034
+ this.fixedTracks = void 0;
3035
+ }
3036
+ if (changedProperties.has("explicitTemplate") && this.explicitTemplate !== void 0 && !isGridExplicitTemplateOptions(this.explicitTemplate)) {
3037
+ this.explicitTemplate = void 0;
3038
+ }
2895
3039
  }
2896
3040
  get gridClasses() {
2897
3041
  const recipeClasses = spectreUi.getGridClasses({
2898
3042
  columns: this.columns,
2899
3043
  gap: this.gap,
3044
+ ...this.columnGap !== void 0 && {
3045
+ columnGap: this.columnGap
3046
+ },
3047
+ ...this.rowGap !== void 0 && { rowGap: this.rowGap },
2900
3048
  ...this.span !== void 0 && {
2901
3049
  span: this.span
3050
+ },
3051
+ ...this.offset !== void 0 && {
3052
+ offset: this.offset
3053
+ },
3054
+ ...this.rowSpan !== void 0 && {
3055
+ rowSpan: this.rowSpan
3056
+ },
3057
+ ...this.rowOffset !== void 0 && {
3058
+ rowOffset: this.rowOffset
3059
+ },
3060
+ ...this.order !== void 0 && {
3061
+ order: this.order
3062
+ },
3063
+ ...this.leadingTracks !== void 0 && {
3064
+ leadingTracks: this.leadingTracks
3065
+ },
3066
+ ...this.fixedTracks !== void 0 && {
3067
+ fixedTracks: this.fixedTracks
3068
+ },
3069
+ ...this.explicitTemplate !== void 0 && {
3070
+ explicitTemplate: this.explicitTemplate
2902
3071
  }
2903
3072
  });
2904
3073
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
@@ -2920,8 +3089,17 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2920
3089
  };
2921
3090
  SpectreGridElement.properties = {
2922
3091
  columns: { type: Number, reflect: true },
3092
+ columnGap: { attribute: "column-gap", type: String, reflect: true },
3093
+ explicitTemplate: { attribute: "explicit-template", type: Object },
3094
+ fixedTracks: { attribute: "fixed-tracks", type: Object },
2923
3095
  gap: { type: String, reflect: true },
2924
3096
  innerClass: { attribute: "inner-class", type: String },
3097
+ leadingTracks: { attribute: "leading-tracks", type: Object },
3098
+ offset: { type: Object },
3099
+ order: { type: Object },
3100
+ rowGap: { attribute: "row-gap", type: String, reflect: true },
3101
+ rowOffset: { attribute: "row-offset", type: Object },
3102
+ rowSpan: { attribute: "row-span", type: Object },
2925
3103
  span: { type: Object }
2926
3104
  };
2927
3105
  function defineSpectreGrid(tagName = "sp-grid") {
@@ -3348,6 +3526,137 @@ function defineSpectreFooter(tagName = "sp-footer") {
3348
3526
  customElements.define(tagName, SpectreFooterElement);
3349
3527
  return SpectreFooterElement;
3350
3528
  }
3529
+ var SpectreFooterChipElement = class extends SpectreProjectableElement {
3530
+ constructor() {
3531
+ super(...arguments);
3532
+ this.disabled = false;
3533
+ }
3534
+ get id() {
3535
+ return super.id;
3536
+ }
3537
+ set id(value) {
3538
+ super.id = value;
3539
+ }
3540
+ get title() {
3541
+ return super.title;
3542
+ }
3543
+ set title(value) {
3544
+ super.title = value;
3545
+ }
3546
+ getContentContainer() {
3547
+ return this.querySelector("[data-sp-footer-chip-native]");
3548
+ }
3549
+ isInternalNode(node) {
3550
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3551
+ return false;
3552
+ }
3553
+ const el = node;
3554
+ return el.hasAttribute("data-sp-footer-chip-native");
3555
+ }
3556
+ willUpdate(changedProperties) {
3557
+ if (changedProperties.has("disabled") && this.disabled == null) {
3558
+ this.disabled = false;
3559
+ }
3560
+ }
3561
+ get footerChipClasses() {
3562
+ return spectreUi.getFooterChipClasses({ disabled: this.disabled ?? false });
3563
+ }
3564
+ render() {
3565
+ return lit.html`<span
3566
+ aria-disabled="${ifDefined_js.ifDefined(this.disabled ? "true" : void 0)}"
3567
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
3568
+ class="${this.footerChipClasses}"
3569
+ data-sp-footer-chip-native
3570
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
3571
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
3572
+ >
3573
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
3574
+ </span>`;
3575
+ }
3576
+ };
3577
+ SpectreFooterChipElement.properties = {
3578
+ disabled: { type: Boolean, reflect: true }
3579
+ };
3580
+ function defineSpectreFooterChip(tagName = "sp-footer-chip") {
3581
+ const existingElement = customElements.get(tagName);
3582
+ if (existingElement) {
3583
+ return existingElement;
3584
+ }
3585
+ customElements.define(tagName, SpectreFooterChipElement);
3586
+ return SpectreFooterChipElement;
3587
+ }
3588
+ var SpectreFooterLinkElement = class extends SpectreProjectableElement {
3589
+ constructor() {
3590
+ super(...arguments);
3591
+ this.active = false;
3592
+ this.disabled = false;
3593
+ this.href = void 0;
3594
+ }
3595
+ get id() {
3596
+ return super.id;
3597
+ }
3598
+ set id(value) {
3599
+ super.id = value;
3600
+ }
3601
+ get title() {
3602
+ return super.title;
3603
+ }
3604
+ set title(value) {
3605
+ super.title = value;
3606
+ }
3607
+ getContentContainer() {
3608
+ return this.querySelector("[data-sp-footer-link-native]");
3609
+ }
3610
+ isInternalNode(node) {
3611
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3612
+ return false;
3613
+ }
3614
+ const el = node;
3615
+ return el.hasAttribute("data-sp-footer-link-native");
3616
+ }
3617
+ willUpdate(changedProperties) {
3618
+ if (changedProperties.has("active") && this.active == null) {
3619
+ this.active = false;
3620
+ }
3621
+ if (changedProperties.has("disabled") && this.disabled == null) {
3622
+ this.disabled = false;
3623
+ }
3624
+ }
3625
+ get footerLinkClasses() {
3626
+ return spectreUi.getFooterLinkClasses({
3627
+ active: this.active ?? false,
3628
+ disabled: this.disabled ?? false
3629
+ });
3630
+ }
3631
+ render() {
3632
+ return lit.html`<a
3633
+ aria-current="${ifDefined_js.ifDefined(this.active ? "page" : void 0)}"
3634
+ aria-disabled="${ifDefined_js.ifDefined(this.disabled ? "true" : void 0)}"
3635
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
3636
+ class="${this.footerLinkClasses}"
3637
+ data-sp-footer-link-native
3638
+ href="${ifDefined_js.ifDefined(this.disabled ? void 0 : this.href)}"
3639
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
3640
+ tabindex="${ifDefined_js.ifDefined(this.disabled ? -1 : void 0)}"
3641
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
3642
+ >
3643
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
3644
+ </a>`;
3645
+ }
3646
+ };
3647
+ SpectreFooterLinkElement.properties = {
3648
+ active: { type: Boolean, reflect: true },
3649
+ disabled: { type: Boolean, reflect: true },
3650
+ href: { type: String }
3651
+ };
3652
+ function defineSpectreFooterLink(tagName = "sp-footer-link") {
3653
+ const existingElement = customElements.get(tagName);
3654
+ if (existingElement) {
3655
+ return existingElement;
3656
+ }
3657
+ customElements.define(tagName, SpectreFooterLinkElement);
3658
+ return SpectreFooterLinkElement;
3659
+ }
3351
3660
  var FOCUSABLE_SELECTOR = [
3352
3661
  "a[href]",
3353
3662
  "button:not([disabled])",
@@ -3518,6 +3827,7 @@ function defineSpectreModal(tagName = "sp-modal") {
3518
3827
  var SpectreNavElement = class extends SpectreProjectableElement {
3519
3828
  constructor() {
3520
3829
  super(...arguments);
3830
+ this.align = void 0;
3521
3831
  this.bordered = false;
3522
3832
  this.fullWidth = false;
3523
3833
  this.innerClass = void 0;
@@ -3560,12 +3870,16 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3560
3870
  if (changedProperties.has("sticky") && this.sticky == null) {
3561
3871
  this.sticky = false;
3562
3872
  }
3873
+ if (changedProperties.has("align") && this.align != null && !isNavAlign(this.align)) {
3874
+ this.align = void 0;
3875
+ }
3563
3876
  }
3564
3877
  get navClasses() {
3565
3878
  const recipeClasses = spectreUi.getNavClasses({
3566
3879
  bordered: this.bordered ?? false,
3567
3880
  fullWidth: this.fullWidth ?? false,
3568
- sticky: this.sticky ?? false
3881
+ sticky: this.sticky ?? false,
3882
+ ...this.align !== void 0 && { align: this.align }
3569
3883
  });
3570
3884
  const utilityClasses = sanitizeUtilityClasses(this.innerClass);
3571
3885
  return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
@@ -3583,6 +3897,7 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3583
3897
  }
3584
3898
  };
3585
3899
  SpectreNavElement.properties = {
3900
+ align: { type: String, reflect: true },
3586
3901
  bordered: { type: Boolean, reflect: true },
3587
3902
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
3588
3903
  innerClass: { attribute: "inner-class", type: String },
@@ -3938,6 +4253,84 @@ function defineSpectreSidebar(tagName = "sp-sidebar") {
3938
4253
  customElements.define(tagName, SpectreSidebarElement);
3939
4254
  return SpectreSidebarElement;
3940
4255
  }
4256
+ var SpectreSidebarLinkElement = class extends SpectreProjectableElement {
4257
+ constructor() {
4258
+ super(...arguments);
4259
+ this.active = false;
4260
+ this.disabled = false;
4261
+ this.href = void 0;
4262
+ this.level = "parent";
4263
+ }
4264
+ get id() {
4265
+ return super.id;
4266
+ }
4267
+ set id(value) {
4268
+ super.id = value;
4269
+ }
4270
+ get title() {
4271
+ return super.title;
4272
+ }
4273
+ set title(value) {
4274
+ super.title = value;
4275
+ }
4276
+ getContentContainer() {
4277
+ return this.querySelector("[data-sp-sidebar-link-native]");
4278
+ }
4279
+ isInternalNode(node) {
4280
+ if (node.nodeType !== Node.ELEMENT_NODE) {
4281
+ return false;
4282
+ }
4283
+ const el = node;
4284
+ return el.hasAttribute("data-sp-sidebar-link-native");
4285
+ }
4286
+ willUpdate(changedProperties) {
4287
+ if (changedProperties.has("active") && this.active == null) {
4288
+ this.active = false;
4289
+ }
4290
+ if (changedProperties.has("disabled") && this.disabled == null) {
4291
+ this.disabled = false;
4292
+ }
4293
+ if (changedProperties.has("level") && (this.level == null || !isSidebarLinkLevel(this.level))) {
4294
+ this.level = "parent";
4295
+ }
4296
+ }
4297
+ get sidebarLinkClasses() {
4298
+ return spectreUi.getSidebarLinkClasses({
4299
+ active: this.active ?? false,
4300
+ disabled: this.disabled ?? false,
4301
+ level: this.level
4302
+ });
4303
+ }
4304
+ render() {
4305
+ return lit.html`<a
4306
+ aria-current="${ifDefined_js.ifDefined(this.active ? "page" : void 0)}"
4307
+ aria-disabled="${ifDefined_js.ifDefined(this.disabled ? "true" : void 0)}"
4308
+ aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
4309
+ class="${this.sidebarLinkClasses}"
4310
+ data-sp-sidebar-link-native
4311
+ href="${ifDefined_js.ifDefined(this.disabled ? void 0 : this.href)}"
4312
+ id="${ifDefined_js.ifDefined(this.id || void 0)}"
4313
+ tabindex="${ifDefined_js.ifDefined(this.disabled ? -1 : void 0)}"
4314
+ title="${ifDefined_js.ifDefined(this.title || void 0)}"
4315
+ >
4316
+ ${this.hasProjectedContent ? this.projectedContent : lit.nothing}
4317
+ </a>`;
4318
+ }
4319
+ };
4320
+ SpectreSidebarLinkElement.properties = {
4321
+ active: { type: Boolean, reflect: true },
4322
+ disabled: { type: Boolean, reflect: true },
4323
+ href: { type: String },
4324
+ level: { type: String, reflect: true }
4325
+ };
4326
+ function defineSpectreSidebarLink(tagName = "sp-sidebar-link") {
4327
+ const existingElement = customElements.get(tagName);
4328
+ if (existingElement) {
4329
+ return existingElement;
4330
+ }
4331
+ customElements.define(tagName, SpectreSidebarLinkElement);
4332
+ return SpectreSidebarLinkElement;
4333
+ }
3941
4334
  var SpectreSidebarToggleElement = class extends SpectreProjectableElement {
3942
4335
  constructor() {
3943
4336
  super(...arguments);
@@ -4485,10 +4878,13 @@ function defineSpectreComponents() {
4485
4878
  defineSpectreStack();
4486
4879
  defineSpectreDropdown();
4487
4880
  defineSpectreFooter();
4881
+ defineSpectreFooterChip();
4882
+ defineSpectreFooterLink();
4488
4883
  defineSpectreModal();
4489
4884
  defineSpectreNav();
4490
4885
  defineSpectreNavItem();
4491
4886
  defineSpectreSidebar();
4887
+ defineSpectreSidebarLink();
4492
4888
  defineSpectreSidebarToggle();
4493
4889
  defineSpectreToast();
4494
4890
  defineSpectreTooltip();
@@ -4504,7 +4900,9 @@ exports.SpectreCheckboxElement = SpectreCheckboxElement;
4504
4900
  exports.SpectreContainerElement = SpectreContainerElement;
4505
4901
  exports.SpectreDropdownElement = SpectreDropdownElement;
4506
4902
  exports.SpectreFieldsetElement = SpectreFieldsetElement;
4903
+ exports.SpectreFooterChipElement = SpectreFooterChipElement;
4507
4904
  exports.SpectreFooterElement = SpectreFooterElement;
4905
+ exports.SpectreFooterLinkElement = SpectreFooterLinkElement;
4508
4906
  exports.SpectreGridElement = SpectreGridElement;
4509
4907
  exports.SpectreIconBoxElement = SpectreIconBoxElement;
4510
4908
  exports.SpectreInputElement = SpectreInputElement;
@@ -4518,6 +4916,7 @@ exports.SpectreRatingElement = SpectreRatingElement;
4518
4916
  exports.SpectreSectionElement = SpectreSectionElement;
4519
4917
  exports.SpectreSelectElement = SpectreSelectElement;
4520
4918
  exports.SpectreSidebarElement = SpectreSidebarElement;
4919
+ exports.SpectreSidebarLinkElement = SpectreSidebarLinkElement;
4521
4920
  exports.SpectreSidebarToggleElement = SpectreSidebarToggleElement;
4522
4921
  exports.SpectreSpinnerElement = SpectreSpinnerElement;
4523
4922
  exports.SpectreStackElement = SpectreStackElement;
@@ -4538,6 +4937,8 @@ exports.defineSpectreContainer = defineSpectreContainer;
4538
4937
  exports.defineSpectreDropdown = defineSpectreDropdown;
4539
4938
  exports.defineSpectreFieldset = defineSpectreFieldset;
4540
4939
  exports.defineSpectreFooter = defineSpectreFooter;
4940
+ exports.defineSpectreFooterChip = defineSpectreFooterChip;
4941
+ exports.defineSpectreFooterLink = defineSpectreFooterLink;
4541
4942
  exports.defineSpectreGrid = defineSpectreGrid;
4542
4943
  exports.defineSpectreIconBox = defineSpectreIconBox;
4543
4944
  exports.defineSpectreInput = defineSpectreInput;
@@ -4551,6 +4952,7 @@ exports.defineSpectreRating = defineSpectreRating;
4551
4952
  exports.defineSpectreSection = defineSpectreSection;
4552
4953
  exports.defineSpectreSelect = defineSpectreSelect;
4553
4954
  exports.defineSpectreSidebar = defineSpectreSidebar;
4955
+ exports.defineSpectreSidebarLink = defineSpectreSidebarLink;
4554
4956
  exports.defineSpectreSidebarToggle = defineSpectreSidebarToggle;
4555
4957
  exports.defineSpectreSpinner = defineSpectreSpinner;
4556
4958
  exports.defineSpectreStack = defineSpectreStack;