@phcdevworks/spectre-components 1.14.0 → 1.15.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 (100) hide show
  1. package/README.md +165 -80
  2. package/dist/alert.cjs.map +1 -1
  3. package/dist/alert.js.map +1 -1
  4. package/dist/avatar.cjs.map +1 -1
  5. package/dist/avatar.js.map +1 -1
  6. package/dist/badge.cjs.map +1 -1
  7. package/dist/badge.js.map +1 -1
  8. package/dist/button.cjs.map +1 -1
  9. package/dist/button.js.map +1 -1
  10. package/dist/card.cjs.map +1 -1
  11. package/dist/card.js.map +1 -1
  12. package/dist/container.cjs +17 -1
  13. package/dist/container.cjs.map +1 -1
  14. package/dist/container.d.cts +7 -0
  15. package/dist/container.d.ts +7 -0
  16. package/dist/container.js +17 -1
  17. package/dist/container.js.map +1 -1
  18. package/dist/dropdown.cjs +10 -1
  19. package/dist/dropdown.cjs.map +1 -1
  20. package/dist/dropdown.d.cts +6 -0
  21. package/dist/dropdown.d.ts +6 -0
  22. package/dist/dropdown.js +10 -1
  23. package/dist/dropdown.js.map +1 -1
  24. package/dist/footer.cjs +18 -2
  25. package/dist/footer.cjs.map +1 -1
  26. package/dist/footer.d.cts +7 -0
  27. package/dist/footer.d.ts +7 -0
  28. package/dist/footer.js +18 -2
  29. package/dist/footer.js.map +1 -1
  30. package/dist/grid.cjs +17 -1
  31. package/dist/grid.cjs.map +1 -1
  32. package/dist/grid.d.cts +7 -0
  33. package/dist/grid.d.ts +7 -0
  34. package/dist/grid.js +17 -1
  35. package/dist/grid.js.map +1 -1
  36. package/dist/icon-box.cjs.map +1 -1
  37. package/dist/icon-box.js.map +1 -1
  38. package/dist/index.cjs +222 -20
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.d.cts +1 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.js +222 -22
  43. package/dist/index.js.map +1 -1
  44. package/dist/input.cjs.map +1 -1
  45. package/dist/input.js.map +1 -1
  46. package/dist/nav-item.cjs +7 -1
  47. package/dist/nav-item.cjs.map +1 -1
  48. package/dist/nav-item.d.cts +6 -0
  49. package/dist/nav-item.d.ts +6 -0
  50. package/dist/nav-item.js +7 -1
  51. package/dist/nav-item.js.map +1 -1
  52. package/dist/nav.cjs +17 -1
  53. package/dist/nav.cjs.map +1 -1
  54. package/dist/nav.d.cts +7 -0
  55. package/dist/nav.d.ts +7 -0
  56. package/dist/nav.js +17 -1
  57. package/dist/nav.js.map +1 -1
  58. package/dist/rating.cjs.map +1 -1
  59. package/dist/rating.js.map +1 -1
  60. package/dist/section.cjs +22 -1
  61. package/dist/section.cjs.map +1 -1
  62. package/dist/section.d.cts +9 -0
  63. package/dist/section.d.ts +9 -0
  64. package/dist/section.js +22 -1
  65. package/dist/section.js.map +1 -1
  66. package/dist/select.cjs.map +1 -1
  67. package/dist/select.js.map +1 -1
  68. package/dist/sidebar-toggle.cjs +465 -0
  69. package/dist/sidebar-toggle.cjs.map +1 -0
  70. package/dist/sidebar-toggle.d.cts +44 -0
  71. package/dist/sidebar-toggle.d.ts +44 -0
  72. package/dist/sidebar-toggle.js +462 -0
  73. package/dist/sidebar-toggle.js.map +1 -0
  74. package/dist/sidebar.cjs +15 -10
  75. package/dist/sidebar.cjs.map +1 -1
  76. package/dist/sidebar.d.cts +7 -0
  77. package/dist/sidebar.d.ts +7 -0
  78. package/dist/sidebar.js +15 -10
  79. package/dist/sidebar.js.map +1 -1
  80. package/dist/spinner.cjs.map +1 -1
  81. package/dist/spinner.js.map +1 -1
  82. package/dist/stack.cjs +18 -2
  83. package/dist/stack.cjs.map +1 -1
  84. package/dist/stack.d.cts +7 -0
  85. package/dist/stack.d.ts +7 -0
  86. package/dist/stack.js +18 -2
  87. package/dist/stack.js.map +1 -1
  88. package/dist/tag.cjs.map +1 -1
  89. package/dist/tag.js.map +1 -1
  90. package/dist/testimonial.cjs.map +1 -1
  91. package/dist/testimonial.js.map +1 -1
  92. package/dist/text.cjs.map +1 -1
  93. package/dist/text.js.map +1 -1
  94. package/dist/textarea.cjs.map +1 -1
  95. package/dist/textarea.js.map +1 -1
  96. package/dist/toast.cjs.map +1 -1
  97. package/dist/toast.js.map +1 -1
  98. package/dist/tooltip.cjs.map +1 -1
  99. package/dist/tooltip.js.map +1 -1
  100. package/package.json +14 -9
package/dist/index.d.cts CHANGED
@@ -27,6 +27,7 @@ export { SpectreModalElement, SpectreModalProps, defineSpectreModal } from './mo
27
27
  export { SpectreNavElement, SpectreNavProps, defineSpectreNav } from './nav.cjs';
28
28
  export { SpectreNavItemElement, SpectreNavItemProps, defineSpectreNavItem } from './nav-item.cjs';
29
29
  export { SpectreSidebarElement, SpectreSidebarProps, defineSpectreSidebar } from './sidebar.cjs';
30
+ export { SpectreSidebarToggleElement, SpectreSidebarToggleProps, defineSpectreSidebarToggle } from './sidebar-toggle.cjs';
30
31
  export { SpectreToastElement, SpectreToastProps, defineSpectreToast } from './toast.cjs';
31
32
  export { SpectreTooltipElement, SpectreTooltipProps, defineSpectreTooltip } from './tooltip.cjs';
32
33
  export { SpectreTextElement, SpectreTextProps, defineSpectreText } from './text.cjs';
package/dist/index.d.ts CHANGED
@@ -27,6 +27,7 @@ export { SpectreModalElement, SpectreModalProps, defineSpectreModal } from './mo
27
27
  export { SpectreNavElement, SpectreNavProps, defineSpectreNav } from './nav.js';
28
28
  export { SpectreNavItemElement, SpectreNavItemProps, defineSpectreNavItem } from './nav-item.js';
29
29
  export { SpectreSidebarElement, SpectreSidebarProps, defineSpectreSidebar } from './sidebar.js';
30
+ export { SpectreSidebarToggleElement, SpectreSidebarToggleProps, defineSpectreSidebarToggle } from './sidebar-toggle.js';
30
31
  export { SpectreToastElement, SpectreToastProps, defineSpectreToast } from './toast.js';
31
32
  export { SpectreTooltipElement, SpectreTooltipProps, defineSpectreTooltip } from './tooltip.js';
32
33
  export { SpectreTextElement, SpectreTextProps, defineSpectreText } from './text.js';
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, getStackClasses, getDropdownClasses, getDropdownMenuClasses, getFooterClasses, getModalOverlayClasses, getModalClasses, getNavClasses, getNavLinkClasses, getSidebarClasses, getSidebarToggleClasses, getSidebarBackdropClasses, getToastClasses, getToastIconClasses, getTooltipClasses, getTextClasses, getSectionClasses } 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, getModalOverlayClasses, getModalClasses, getNavClasses, getNavLinkClasses, getSidebarClasses, getSidebarToggleClasses, getSidebarBackdropClasses, 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';
@@ -288,6 +288,13 @@ function normalizeInt(value, fallback, min = 0) {
288
288
  }
289
289
  return value;
290
290
  }
291
+ var spectreUtilityClassPattern = /^sp-[a-z0-9]+(?:-[a-z0-9]+)*$/;
292
+ function sanitizeUtilityClasses(value) {
293
+ if (!value) {
294
+ return "";
295
+ }
296
+ return value.split(/\s+/).filter((token) => spectreUtilityClassPattern.test(token)).join(" ");
297
+ }
291
298
  var SpectreBaseElement = class extends LitElement {
292
299
  constructor() {
293
300
  super(...arguments);
@@ -2770,6 +2777,7 @@ function defineSpectrePricingCard(tagName = "sp-pricing-card") {
2770
2777
  var SpectreContainerElement = class extends SpectreProjectableElement {
2771
2778
  constructor() {
2772
2779
  super(...arguments);
2780
+ this.innerClass = void 0;
2773
2781
  this.maxWidth = void 0;
2774
2782
  }
2775
2783
  get id() {
@@ -2784,6 +2792,11 @@ var SpectreContainerElement = class extends SpectreProjectableElement {
2784
2792
  set title(value) {
2785
2793
  super.title = value;
2786
2794
  }
2795
+ connectedCallback() {
2796
+ var _a;
2797
+ super.connectedCallback();
2798
+ (_a = this.style).display || (_a.display = "block");
2799
+ }
2787
2800
  getContentContainer() {
2788
2801
  return this.querySelector("[data-sp-container-native]");
2789
2802
  }
@@ -2800,9 +2813,11 @@ var SpectreContainerElement = class extends SpectreProjectableElement {
2800
2813
  }
2801
2814
  }
2802
2815
  get containerClasses() {
2803
- return getContainerClasses(
2816
+ const recipeClasses = getContainerClasses(
2804
2817
  this.maxWidth != null ? { maxWidth: this.maxWidth } : {}
2805
2818
  );
2819
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
2820
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
2806
2821
  }
2807
2822
  render() {
2808
2823
  return html`<div
@@ -2819,6 +2834,7 @@ var SpectreContainerElement = class extends SpectreProjectableElement {
2819
2834
  }
2820
2835
  };
2821
2836
  SpectreContainerElement.properties = {
2837
+ innerClass: { attribute: "inner-class", type: String },
2822
2838
  maxWidth: { attribute: "max-width", type: String, reflect: true }
2823
2839
  };
2824
2840
  function defineSpectreContainer(tagName = "sp-container") {
@@ -2834,6 +2850,7 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2834
2850
  super(...arguments);
2835
2851
  this.columns = 1;
2836
2852
  this.gap = "md";
2853
+ this.innerClass = void 0;
2837
2854
  }
2838
2855
  get id() {
2839
2856
  return super.id;
@@ -2847,6 +2864,11 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2847
2864
  set title(value) {
2848
2865
  super.title = value;
2849
2866
  }
2867
+ connectedCallback() {
2868
+ var _a;
2869
+ super.connectedCallback();
2870
+ (_a = this.style).display || (_a.display = "block");
2871
+ }
2850
2872
  getContentContainer() {
2851
2873
  return this.querySelector("[data-sp-grid-native]");
2852
2874
  }
@@ -2870,13 +2892,15 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2870
2892
  }
2871
2893
  }
2872
2894
  get gridClasses() {
2873
- return getGridClasses({
2895
+ const recipeClasses = getGridClasses({
2874
2896
  columns: this.columns,
2875
2897
  gap: this.gap,
2876
2898
  ...this.span !== void 0 && {
2877
2899
  span: this.span
2878
2900
  }
2879
2901
  });
2902
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
2903
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
2880
2904
  }
2881
2905
  render() {
2882
2906
  return html`<div
@@ -2895,6 +2919,7 @@ var SpectreGridElement = class extends SpectreProjectableElement {
2895
2919
  SpectreGridElement.properties = {
2896
2920
  columns: { type: Number, reflect: true },
2897
2921
  gap: { type: String, reflect: true },
2922
+ innerClass: { attribute: "inner-class", type: String },
2898
2923
  span: { type: Object }
2899
2924
  };
2900
2925
  function defineSpectreGrid(tagName = "sp-grid") {
@@ -2906,6 +2931,10 @@ function defineSpectreGrid(tagName = "sp-grid") {
2906
2931
  return SpectreGridElement;
2907
2932
  }
2908
2933
  var SpectreSectionElement = class extends SpectreProjectableElement {
2934
+ constructor() {
2935
+ super(...arguments);
2936
+ this.innerClass = void 0;
2937
+ }
2909
2938
  get id() {
2910
2939
  return super.id;
2911
2940
  }
@@ -2918,6 +2947,11 @@ var SpectreSectionElement = class extends SpectreProjectableElement {
2918
2947
  set title(value) {
2919
2948
  super.title = value;
2920
2949
  }
2950
+ connectedCallback() {
2951
+ var _a;
2952
+ super.connectedCallback();
2953
+ (_a = this.style).display || (_a.display = "block");
2954
+ }
2921
2955
  getContentContainer() {
2922
2956
  return this.querySelector("[data-sp-section-native]");
2923
2957
  }
@@ -2929,7 +2963,9 @@ var SpectreSectionElement = class extends SpectreProjectableElement {
2929
2963
  return el.hasAttribute("data-sp-section-native");
2930
2964
  }
2931
2965
  get sectionClasses() {
2932
- return getSectionClasses({});
2966
+ const recipeClasses = getSectionClasses({});
2967
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
2968
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
2933
2969
  }
2934
2970
  render() {
2935
2971
  return html`<section
@@ -2945,6 +2981,9 @@ var SpectreSectionElement = class extends SpectreProjectableElement {
2945
2981
  </section>`;
2946
2982
  }
2947
2983
  };
2984
+ SpectreSectionElement.properties = {
2985
+ innerClass: { attribute: "inner-class", type: String }
2986
+ };
2948
2987
  function defineSpectreSection(tagName = "sp-section") {
2949
2988
  const existingElement = customElements.get(tagName);
2950
2989
  if (existingElement) {
@@ -2959,6 +2998,7 @@ var SpectreStackElement = class extends SpectreProjectableElement {
2959
2998
  this.align = "center";
2960
2999
  this.basis = void 0;
2961
3000
  this.direction = "vertical";
3001
+ this.innerClass = void 0;
2962
3002
  }
2963
3003
  get id() {
2964
3004
  return super.id;
@@ -2972,6 +3012,11 @@ var SpectreStackElement = class extends SpectreProjectableElement {
2972
3012
  set title(value) {
2973
3013
  super.title = value;
2974
3014
  }
3015
+ connectedCallback() {
3016
+ var _a;
3017
+ super.connectedCallback();
3018
+ (_a = this.style).display || (_a.display = "block");
3019
+ }
2975
3020
  getContentContainer() {
2976
3021
  return this.querySelector("[data-sp-stack-native]");
2977
3022
  }
@@ -2994,11 +3039,13 @@ var SpectreStackElement = class extends SpectreProjectableElement {
2994
3039
  }
2995
3040
  }
2996
3041
  get stackClasses() {
2997
- return getStackClasses({
3042
+ const recipeClasses = getStackClasses({
2998
3043
  align: this.align,
2999
3044
  direction: this.direction,
3000
3045
  ...this.basis != null ? { basis: this.basis } : {}
3001
3046
  });
3047
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
3048
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
3002
3049
  }
3003
3050
  render() {
3004
3051
  return html`<div
@@ -3017,7 +3064,8 @@ var SpectreStackElement = class extends SpectreProjectableElement {
3017
3064
  SpectreStackElement.properties = {
3018
3065
  align: { type: String, reflect: true },
3019
3066
  basis: { type: String, reflect: true },
3020
- direction: { type: String, reflect: true }
3067
+ direction: { type: String, reflect: true },
3068
+ innerClass: { attribute: "inner-class", type: String }
3021
3069
  };
3022
3070
  function defineSpectreStack(tagName = "sp-stack") {
3023
3071
  const existingElement = customElements.get(tagName);
@@ -3031,6 +3079,7 @@ var SpectreDropdownElement = class extends SpectreBaseElement {
3031
3079
  constructor() {
3032
3080
  super(...arguments);
3033
3081
  this.fullWidth = false;
3082
+ this.mega = false;
3034
3083
  this.open = false;
3035
3084
  this.placement = "bottom-start";
3036
3085
  this.triggerLabel = "Toggle menu";
@@ -3134,6 +3183,9 @@ var SpectreDropdownElement = class extends SpectreBaseElement {
3134
3183
  if (changedProperties.has("fullWidth") && this.fullWidth == null) {
3135
3184
  this.fullWidth = false;
3136
3185
  }
3186
+ if (changedProperties.has("mega") && this.mega == null) {
3187
+ this.mega = false;
3188
+ }
3137
3189
  if (changedProperties.has("open") && this.open == null) {
3138
3190
  this.open = false;
3139
3191
  }
@@ -3169,10 +3221,14 @@ var SpectreDropdownElement = class extends SpectreBaseElement {
3169
3221
  this.dispatchEvent(new CustomEvent("sp-close", { bubbles: true }));
3170
3222
  }
3171
3223
  get dropdownClasses() {
3172
- return getDropdownClasses({ fullWidth: this.fullWidth ?? false });
3224
+ return getDropdownClasses({
3225
+ fullWidth: this.fullWidth ?? false,
3226
+ mega: this.mega ?? false
3227
+ });
3173
3228
  }
3174
3229
  get menuClasses() {
3175
3230
  return getDropdownMenuClasses({
3231
+ mega: this.mega ?? false,
3176
3232
  open: this.open ?? false,
3177
3233
  placement: this.placement
3178
3234
  });
@@ -3202,6 +3258,7 @@ var SpectreDropdownElement = class extends SpectreBaseElement {
3202
3258
  };
3203
3259
  SpectreDropdownElement.properties = {
3204
3260
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
3261
+ mega: { type: Boolean, reflect: true },
3205
3262
  open: { type: Boolean, reflect: true },
3206
3263
  placement: { type: String, reflect: true },
3207
3264
  triggerLabel: { attribute: "trigger-label", type: String }
@@ -3219,6 +3276,7 @@ var SpectreFooterElement = class extends SpectreProjectableElement {
3219
3276
  super(...arguments);
3220
3277
  this.bordered = false;
3221
3278
  this.fullWidth = false;
3279
+ this.innerClass = void 0;
3222
3280
  }
3223
3281
  get id() {
3224
3282
  return super.id;
@@ -3232,6 +3290,11 @@ var SpectreFooterElement = class extends SpectreProjectableElement {
3232
3290
  set title(value) {
3233
3291
  super.title = value;
3234
3292
  }
3293
+ connectedCallback() {
3294
+ var _a;
3295
+ super.connectedCallback();
3296
+ (_a = this.style).display || (_a.display = "block");
3297
+ }
3235
3298
  getContentContainer() {
3236
3299
  return this.querySelector("[data-sp-footer-native]");
3237
3300
  }
@@ -3251,10 +3314,12 @@ var SpectreFooterElement = class extends SpectreProjectableElement {
3251
3314
  }
3252
3315
  }
3253
3316
  get footerClasses() {
3254
- return getFooterClasses({
3317
+ const recipeClasses = getFooterClasses({
3255
3318
  bordered: this.bordered ?? false,
3256
3319
  fullWidth: this.fullWidth ?? false
3257
3320
  });
3321
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
3322
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
3258
3323
  }
3259
3324
  render() {
3260
3325
  return html`<footer
@@ -3270,7 +3335,8 @@ var SpectreFooterElement = class extends SpectreProjectableElement {
3270
3335
  };
3271
3336
  SpectreFooterElement.properties = {
3272
3337
  bordered: { type: Boolean, reflect: true },
3273
- fullWidth: { attribute: "full-width", type: Boolean, reflect: true }
3338
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
3339
+ innerClass: { attribute: "inner-class", type: String }
3274
3340
  };
3275
3341
  function defineSpectreFooter(tagName = "sp-footer") {
3276
3342
  const existingElement = customElements.get(tagName);
@@ -3452,6 +3518,7 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3452
3518
  super(...arguments);
3453
3519
  this.bordered = false;
3454
3520
  this.fullWidth = false;
3521
+ this.innerClass = void 0;
3455
3522
  this.sticky = false;
3456
3523
  }
3457
3524
  get id() {
@@ -3466,6 +3533,11 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3466
3533
  set title(value) {
3467
3534
  super.title = value;
3468
3535
  }
3536
+ connectedCallback() {
3537
+ var _a;
3538
+ super.connectedCallback();
3539
+ (_a = this.style).display || (_a.display = "block");
3540
+ }
3469
3541
  getContentContainer() {
3470
3542
  return this.querySelector("[data-sp-nav-native]");
3471
3543
  }
@@ -3488,11 +3560,13 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3488
3560
  }
3489
3561
  }
3490
3562
  get navClasses() {
3491
- return getNavClasses({
3563
+ const recipeClasses = getNavClasses({
3492
3564
  bordered: this.bordered ?? false,
3493
3565
  fullWidth: this.fullWidth ?? false,
3494
3566
  sticky: this.sticky ?? false
3495
3567
  });
3568
+ const utilityClasses = sanitizeUtilityClasses(this.innerClass);
3569
+ return utilityClasses ? `${recipeClasses} ${utilityClasses}` : recipeClasses;
3496
3570
  }
3497
3571
  render() {
3498
3572
  return html`<nav
@@ -3509,6 +3583,7 @@ var SpectreNavElement = class extends SpectreProjectableElement {
3509
3583
  SpectreNavElement.properties = {
3510
3584
  bordered: { type: Boolean, reflect: true },
3511
3585
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
3586
+ innerClass: { attribute: "inner-class", type: String },
3512
3587
  sticky: { type: Boolean, reflect: true }
3513
3588
  };
3514
3589
  function defineSpectreNav(tagName = "sp-nav") {
@@ -3525,6 +3600,7 @@ var SpectreNavItemElement = class extends SpectreBaseElement {
3525
3600
  this.dropdown = false;
3526
3601
  this.href = void 0;
3527
3602
  this.label = void 0;
3603
+ this.mega = false;
3528
3604
  this.open = false;
3529
3605
  this.placement = "bottom-start";
3530
3606
  this.triggerContent = [];
@@ -3627,6 +3703,9 @@ var SpectreNavItemElement = class extends SpectreBaseElement {
3627
3703
  if (changedProperties.has("dropdown") && this.dropdown == null) {
3628
3704
  this.dropdown = false;
3629
3705
  }
3706
+ if (changedProperties.has("mega") && this.mega == null) {
3707
+ this.mega = false;
3708
+ }
3630
3709
  if (changedProperties.has("open") && this.open == null) {
3631
3710
  this.open = false;
3632
3711
  }
@@ -3659,10 +3738,11 @@ var SpectreNavItemElement = class extends SpectreBaseElement {
3659
3738
  this.dispatchEvent(new CustomEvent("sp-close", { bubbles: true }));
3660
3739
  }
3661
3740
  get wrapperClasses() {
3662
- return getDropdownClasses();
3741
+ return getDropdownClasses({ mega: this.mega ?? false });
3663
3742
  }
3664
3743
  get menuClasses() {
3665
3744
  return getDropdownMenuClasses({
3745
+ mega: this.mega ?? false,
3666
3746
  open: this.open ?? false,
3667
3747
  placement: this.placement
3668
3748
  });
@@ -3710,6 +3790,7 @@ SpectreNavItemElement.properties = {
3710
3790
  dropdown: { type: Boolean, reflect: true },
3711
3791
  href: { type: String },
3712
3792
  label: { type: String },
3793
+ mega: { type: Boolean, reflect: true },
3713
3794
  open: { type: Boolean, reflect: true },
3714
3795
  placement: { type: String, reflect: true }
3715
3796
  };
@@ -3725,6 +3806,7 @@ var SpectreSidebarElement = class extends SpectreProjectableElement {
3725
3806
  constructor() {
3726
3807
  super(...arguments);
3727
3808
  this.bordered = false;
3809
+ this.hideToggle = false;
3728
3810
  this.open = false;
3729
3811
  this.toggleLabel = "Toggle sidebar";
3730
3812
  this.handleDocumentKeydown = (event) => {
@@ -3759,6 +3841,9 @@ var SpectreSidebarElement = class extends SpectreProjectableElement {
3759
3841
  if (changedProperties.has("bordered") && this.bordered == null) {
3760
3842
  this.bordered = false;
3761
3843
  }
3844
+ if (changedProperties.has("hideToggle") && this.hideToggle == null) {
3845
+ this.hideToggle = false;
3846
+ }
3762
3847
  if (changedProperties.has("open") && this.open == null) {
3763
3848
  this.open = false;
3764
3849
  }
@@ -3811,16 +3896,16 @@ var SpectreSidebarElement = class extends SpectreProjectableElement {
3811
3896
  return getSidebarClasses({ bordered: this.bordered ?? false });
3812
3897
  }
3813
3898
  render() {
3814
- return html`<button
3815
- aria-expanded="${this.open ? "true" : "false"}"
3816
- aria-label="${ifDefined(this.toggleLabel)}"
3817
- class="${getSidebarToggleClasses()}"
3818
- data-sp-sidebar-toggle
3819
- type="button"
3820
- @click="${() => this.toggle()}"
3821
- >
3822
- &#9776;
3823
- </button>
3899
+ return html`${this.hideToggle ? nothing : html`<button
3900
+ aria-expanded="${this.open ? "true" : "false"}"
3901
+ aria-label="${ifDefined(this.toggleLabel)}"
3902
+ class="${getSidebarToggleClasses()}"
3903
+ data-sp-sidebar-toggle
3904
+ type="button"
3905
+ @click="${() => this.toggle()}"
3906
+ >
3907
+ &#9776;
3908
+ </button>`}
3824
3909
  <div
3825
3910
  class="${getSidebarBackdropClasses()}"
3826
3911
  data-sp-sidebar-backdrop
@@ -3839,6 +3924,7 @@ var SpectreSidebarElement = class extends SpectreProjectableElement {
3839
3924
  };
3840
3925
  SpectreSidebarElement.properties = {
3841
3926
  bordered: { type: Boolean, reflect: true },
3927
+ hideToggle: { attribute: "hide-toggle", type: Boolean, reflect: true },
3842
3928
  open: { type: Boolean, reflect: false },
3843
3929
  toggleLabel: { attribute: "toggle-label", type: String }
3844
3930
  };
@@ -3850,6 +3936,119 @@ function defineSpectreSidebar(tagName = "sp-sidebar") {
3850
3936
  customElements.define(tagName, SpectreSidebarElement);
3851
3937
  return SpectreSidebarElement;
3852
3938
  }
3939
+ var SpectreSidebarToggleElement = class extends SpectreProjectableElement {
3940
+ constructor() {
3941
+ super(...arguments);
3942
+ this.for = void 0;
3943
+ this.label = "Toggle sidebar";
3944
+ this.expanded = false;
3945
+ this.handleTargetToggle = (event) => {
3946
+ if (event.target !== this.targetElement) {
3947
+ return;
3948
+ }
3949
+ this.syncExpanded();
3950
+ };
3951
+ }
3952
+ get id() {
3953
+ return super.id;
3954
+ }
3955
+ set id(value) {
3956
+ super.id = value;
3957
+ }
3958
+ get title() {
3959
+ return super.title;
3960
+ }
3961
+ set title(value) {
3962
+ super.title = value;
3963
+ }
3964
+ getContentContainer() {
3965
+ return this.querySelector("[data-sp-sidebar-toggle-native]");
3966
+ }
3967
+ isInternalNode(node) {
3968
+ if (node.nodeType !== Node.ELEMENT_NODE) {
3969
+ return false;
3970
+ }
3971
+ const el = node;
3972
+ return el.hasAttribute("data-sp-sidebar-toggle-native");
3973
+ }
3974
+ willUpdate(changedProperties) {
3975
+ if (changedProperties.has("label") && !this.label) {
3976
+ this.label = "Toggle sidebar";
3977
+ }
3978
+ }
3979
+ connectedCallback() {
3980
+ super.connectedCallback();
3981
+ document.addEventListener("sp-open", this.handleTargetToggle);
3982
+ document.addEventListener("sp-close", this.handleTargetToggle);
3983
+ this.syncExpanded();
3984
+ }
3985
+ disconnectedCallback() {
3986
+ document.removeEventListener("sp-open", this.handleTargetToggle);
3987
+ document.removeEventListener("sp-close", this.handleTargetToggle);
3988
+ super.disconnectedCallback();
3989
+ }
3990
+ updated(changedProperties) {
3991
+ super.updated(changedProperties);
3992
+ if (changedProperties.has("for")) {
3993
+ this.syncExpanded();
3994
+ }
3995
+ }
3996
+ get targetElement() {
3997
+ if (!this.for) {
3998
+ return null;
3999
+ }
4000
+ const native = document.getElementById(this.for);
4001
+ return native?.closest("sp-sidebar") ?? null;
4002
+ }
4003
+ syncExpanded() {
4004
+ const next = Boolean(this.targetElement?.open);
4005
+ if (next !== this.expanded) {
4006
+ this.expanded = next;
4007
+ this.requestUpdate();
4008
+ }
4009
+ }
4010
+ handleClick() {
4011
+ const target = this.targetElement;
4012
+ if (!target) {
4013
+ return;
4014
+ }
4015
+ const nextOpen = !target.open;
4016
+ target.open = nextOpen;
4017
+ target.dispatchEvent(
4018
+ new CustomEvent(nextOpen ? "sp-open" : "sp-close", { bubbles: true })
4019
+ );
4020
+ }
4021
+ get toggleClasses() {
4022
+ return getSidebarToggleClasses();
4023
+ }
4024
+ render() {
4025
+ return html`<button
4026
+ aria-controls="${ifDefined(this.for)}"
4027
+ aria-expanded="${this.expanded ? "true" : "false"}"
4028
+ aria-label="${ifDefined(this.forwardedAriaLabel ?? this.label)}"
4029
+ class="${this.toggleClasses}"
4030
+ data-sp-sidebar-toggle-native
4031
+ id="${ifDefined(this.id || void 0)}"
4032
+ title="${ifDefined(this.title || void 0)}"
4033
+ type="button"
4034
+ @click="${() => this.handleClick()}"
4035
+ >
4036
+ ${this.hasProjectedContent ? this.projectedContent : html`&#9776;`}
4037
+ </button>`;
4038
+ }
4039
+ };
4040
+ SpectreSidebarToggleElement.properties = {
4041
+ for: { type: String },
4042
+ label: { type: String }
4043
+ };
4044
+ function defineSpectreSidebarToggle(tagName = "sp-sidebar-toggle") {
4045
+ const existingElement = customElements.get(tagName);
4046
+ if (existingElement) {
4047
+ return existingElement;
4048
+ }
4049
+ customElements.define(tagName, SpectreSidebarToggleElement);
4050
+ return SpectreSidebarToggleElement;
4051
+ }
3853
4052
  var SpectreToastElement = class extends SpectreBaseElement {
3854
4053
  constructor() {
3855
4054
  super(...arguments);
@@ -4288,11 +4487,12 @@ function defineSpectreComponents() {
4288
4487
  defineSpectreNav();
4289
4488
  defineSpectreNavItem();
4290
4489
  defineSpectreSidebar();
4490
+ defineSpectreSidebarToggle();
4291
4491
  defineSpectreToast();
4292
4492
  defineSpectreTooltip();
4293
4493
  defineSpectreText();
4294
4494
  }
4295
4495
 
4296
- export { SpectreAlertElement, SpectreAvatarElement, SpectreBadgeElement, SpectreButtonElement, SpectreCardElement, SpectreCheckboxElement, SpectreContainerElement, SpectreDropdownElement, SpectreFieldsetElement, SpectreFooterElement, SpectreGridElement, SpectreIconBoxElement, SpectreInputElement, SpectreLabelElement, SpectreModalElement, SpectreNavElement, SpectreNavItemElement, SpectrePricingCardElement, SpectreRadioElement, SpectreRatingElement, SpectreSectionElement, SpectreSelectElement, SpectreSidebarElement, 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, 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 };
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 };
4297
4497
  //# sourceMappingURL=index.js.map
4298
4498
  //# sourceMappingURL=index.js.map