@phcdevworks/spectre-ui 1.7.0 → 1.9.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.
package/dist/index.cjs CHANGED
@@ -217,9 +217,9 @@ function getInputClasses(opts = {}) {
217
217
  // Visual state only; actual disabled attribute is handled by adapters.
218
218
  (state === "disabled" || disabled) && "sp-input--disabled",
219
219
  (state === "loading" || loading) && "sp-input--loading",
220
- focused && "sp-input--focus",
221
- hovered && "sp-input--hover",
222
- active && "sp-input--active",
220
+ focused && "sp-input--focus is-focus",
221
+ hovered && "sp-input--hover is-hover",
222
+ active && "sp-input--active is-active",
223
223
  fullWidth && "sp-input--full",
224
224
  pill && "sp-input--pill"
225
225
  );
@@ -255,6 +255,7 @@ var BADGE_VARIANTS = {
255
255
  neutral: true,
256
256
  info: true,
257
257
  ghost: true,
258
+ outline: true,
258
259
  accent: true,
259
260
  cta: true
260
261
  };
@@ -296,6 +297,7 @@ function getBadgeClasses(opts = {}) {
296
297
  neutral: "sp-badge--neutral",
297
298
  info: "sp-badge--info",
298
299
  ghost: "sp-badge--ghost",
300
+ outline: "sp-badge--outline",
299
301
  accent: "sp-badge--accent",
300
302
  cta: "sp-badge--cta"
301
303
  };
@@ -331,9 +333,11 @@ var ICONBOX_VARIANTS = {
331
333
  neutral: true,
332
334
  ghost: true,
333
335
  accent: true,
334
- cta: true
336
+ cta: true,
337
+ outline: true
335
338
  };
336
339
  var ICONBOX_SIZES = {
340
+ xs: true,
337
341
  sm: true,
338
342
  md: true,
339
343
  lg: true
@@ -373,10 +377,12 @@ function getIconBoxClasses(opts = {}) {
373
377
  neutral: "sp-iconbox--neutral",
374
378
  ghost: "sp-iconbox--ghost",
375
379
  accent: "sp-iconbox--accent",
376
- cta: "sp-iconbox--cta"
380
+ cta: "sp-iconbox--cta",
381
+ outline: "sp-iconbox--outline"
377
382
  };
378
383
  const variantClass = variantMap[variant];
379
384
  const sizeMap = {
385
+ xs: "sp-iconbox--xs",
380
386
  sm: "sp-iconbox--sm",
381
387
  md: "sp-iconbox--md",
382
388
  lg: "sp-iconbox--lg"
@@ -709,20 +715,187 @@ function getTagClasses(opts = {}) {
709
715
  }
710
716
 
711
717
  // src/recipes/spinner.ts
718
+ var SPINNER_VARIANTS = {
719
+ primary: true,
720
+ secondary: true,
721
+ success: true,
722
+ warning: true,
723
+ danger: true,
724
+ info: true,
725
+ neutral: true,
726
+ accent: true,
727
+ cta: true
728
+ };
712
729
  var SPINNER_SIZES = {
713
730
  sm: true,
714
731
  md: true,
715
732
  lg: true
716
733
  };
717
734
  function getSpinnerClasses(opts = {}) {
718
- const { size: sizeInput } = opts;
735
+ const {
736
+ variant: variantInput,
737
+ size: sizeInput,
738
+ disabled = false,
739
+ loading = false
740
+ } = opts;
741
+ const variant = variantInput && resolveOption({
742
+ name: "spinner variant",
743
+ value: variantInput,
744
+ allowed: SPINNER_VARIANTS,
745
+ fallback: "primary"
746
+ });
719
747
  const size = resolveOption({
720
748
  name: "spinner size",
721
749
  value: sizeInput,
722
750
  allowed: SPINNER_SIZES,
723
751
  fallback: "md"
724
752
  });
725
- return cx("sp-spinner", `sp-spinner--${size}`);
753
+ return cx(
754
+ "sp-spinner",
755
+ variant && `sp-spinner--${variant}`,
756
+ `sp-spinner--${size}`,
757
+ disabled && "sp-spinner--disabled",
758
+ loading && "sp-spinner--loading"
759
+ );
760
+ }
761
+
762
+ // src/recipes/nav.ts
763
+ function getNavClasses(opts = {}) {
764
+ const { bordered = false, sticky = false, fullWidth = false } = opts;
765
+ return cx(
766
+ "sp-nav",
767
+ bordered && "sp-nav--bordered",
768
+ sticky && "sp-nav--sticky",
769
+ fullWidth && "sp-nav--full"
770
+ );
771
+ }
772
+ function getNavLinksClasses() {
773
+ return cx("sp-nav__links");
774
+ }
775
+ function getNavLinkClasses(opts = {}) {
776
+ const {
777
+ active = false,
778
+ disabled = false,
779
+ hovered = false,
780
+ focused = false
781
+ } = opts;
782
+ return cx(
783
+ "sp-nav__link",
784
+ active && "sp-nav__link--active",
785
+ disabled && "sp-nav__link--disabled",
786
+ hovered && "sp-nav__link--hover is-hover",
787
+ focused && "sp-nav__link--focus is-focus"
788
+ );
789
+ }
790
+
791
+ // src/recipes/toast.ts
792
+ var TOAST_VARIANTS = {
793
+ info: true,
794
+ success: true,
795
+ warning: true,
796
+ danger: true
797
+ };
798
+ function getToastClasses(opts = {}) {
799
+ const { variant: variantInput, dismissed = false, fullWidth = false } = opts;
800
+ const variant = resolveOption({
801
+ name: "toast variant",
802
+ value: variantInput,
803
+ allowed: TOAST_VARIANTS,
804
+ fallback: "info"
805
+ });
806
+ return cx(
807
+ "sp-toast",
808
+ `sp-toast--${variant}`,
809
+ dismissed && "sp-toast--dismissed",
810
+ fullWidth && "sp-toast--full"
811
+ );
812
+ }
813
+ function getToastIconClasses(opts = {}) {
814
+ const { variant: variantInput } = opts;
815
+ const variant = resolveOption({
816
+ name: "toast variant",
817
+ value: variantInput,
818
+ allowed: TOAST_VARIANTS,
819
+ fallback: "info"
820
+ });
821
+ return cx("sp-toast__icon", `sp-toast__icon--${variant}`);
822
+ }
823
+
824
+ // src/recipes/tooltip.ts
825
+ var TOOLTIP_PLACEMENTS = {
826
+ top: true,
827
+ bottom: true,
828
+ left: true,
829
+ right: true
830
+ };
831
+ function getTooltipClasses(opts = {}) {
832
+ const { placement: placementInput, visible = false } = opts;
833
+ const placement = resolveOption({
834
+ name: "tooltip placement",
835
+ value: placementInput,
836
+ allowed: TOOLTIP_PLACEMENTS,
837
+ fallback: "top"
838
+ });
839
+ return cx(
840
+ "sp-tooltip",
841
+ `sp-tooltip--${placement}`,
842
+ visible && "sp-tooltip--visible"
843
+ );
844
+ }
845
+
846
+ // src/recipes/dropdown.ts
847
+ var DROPDOWN_PLACEMENTS = {
848
+ "bottom-start": true,
849
+ "bottom-end": true,
850
+ "top-start": true,
851
+ "top-end": true
852
+ };
853
+ function getDropdownClasses(opts = {}) {
854
+ const { fullWidth = false } = opts;
855
+ return cx("sp-dropdown", fullWidth && "sp-dropdown--full");
856
+ }
857
+ function getDropdownMenuClasses(opts = {}) {
858
+ const { placement: placementInput, open = false } = opts;
859
+ const placement = resolveOption({
860
+ name: "dropdown menu placement",
861
+ value: placementInput,
862
+ allowed: DROPDOWN_PLACEMENTS,
863
+ fallback: "bottom-start"
864
+ });
865
+ return cx(
866
+ "sp-dropdown__menu",
867
+ `sp-dropdown__menu--${placement}`,
868
+ open && "sp-dropdown__menu--open"
869
+ );
870
+ }
871
+ function getDropdownItemClasses(opts = {}) {
872
+ const {
873
+ active = false,
874
+ disabled = false,
875
+ hovered = false,
876
+ focused = false
877
+ } = opts;
878
+ return cx(
879
+ "sp-dropdown__item",
880
+ active && "sp-dropdown__item--active",
881
+ disabled && "sp-dropdown__item--disabled",
882
+ hovered && "sp-dropdown__item--hover is-hover",
883
+ focused && "sp-dropdown__item--focus is-focus"
884
+ );
885
+ }
886
+
887
+ // src/recipes/modal.ts
888
+ function getModalOverlayClasses(opts = {}) {
889
+ const { open = false } = opts;
890
+ return cx("sp-modal-overlay", open && "sp-modal-overlay--open");
891
+ }
892
+ function getModalClasses(opts = {}) {
893
+ const { open = false, fullWidth = false } = opts;
894
+ return cx(
895
+ "sp-modal",
896
+ open && "sp-modal--open",
897
+ fullWidth && "sp-modal--full"
898
+ );
726
899
  }
727
900
 
728
901
  exports.getAlertClasses = getAlertClasses;
@@ -730,12 +903,20 @@ exports.getAvatarClasses = getAvatarClasses;
730
903
  exports.getBadgeClasses = getBadgeClasses;
731
904
  exports.getButtonClasses = getButtonClasses;
732
905
  exports.getCardClasses = getCardClasses;
906
+ exports.getDropdownClasses = getDropdownClasses;
907
+ exports.getDropdownItemClasses = getDropdownItemClasses;
908
+ exports.getDropdownMenuClasses = getDropdownMenuClasses;
733
909
  exports.getIconBoxClasses = getIconBoxClasses;
734
910
  exports.getInputClasses = getInputClasses;
735
911
  exports.getInputErrorMessageClasses = getInputErrorMessageClasses;
736
912
  exports.getInputHelperTextClasses = getInputHelperTextClasses;
737
913
  exports.getInputLabelClasses = getInputLabelClasses;
738
914
  exports.getInputWrapperClasses = getInputWrapperClasses;
915
+ exports.getModalClasses = getModalClasses;
916
+ exports.getModalOverlayClasses = getModalOverlayClasses;
917
+ exports.getNavClasses = getNavClasses;
918
+ exports.getNavLinkClasses = getNavLinkClasses;
919
+ exports.getNavLinksClasses = getNavLinksClasses;
739
920
  exports.getPricingCardBadgeClasses = getPricingCardBadgeClasses;
740
921
  exports.getPricingCardClasses = getPricingCardClasses;
741
922
  exports.getPricingCardDescriptionClasses = getPricingCardDescriptionClasses;
@@ -753,6 +934,9 @@ exports.getTestimonialAuthorNameClasses = getTestimonialAuthorNameClasses;
753
934
  exports.getTestimonialAuthorTitleClasses = getTestimonialAuthorTitleClasses;
754
935
  exports.getTestimonialClasses = getTestimonialClasses;
755
936
  exports.getTestimonialQuoteClasses = getTestimonialQuoteClasses;
937
+ exports.getToastClasses = getToastClasses;
938
+ exports.getToastIconClasses = getToastIconClasses;
939
+ exports.getTooltipClasses = getTooltipClasses;
756
940
  exports.spectreBaseStylesPath = spectreBaseStylesPath;
757
941
  exports.spectreComponentsStylesPath = spectreComponentsStylesPath;
758
942
  exports.spectreIndexStylesPath = spectreIndexStylesPath;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/css-constants.ts","../src/internal/cx.ts","../src/internal/resolve-option.ts","../src/recipes/button.ts","../src/recipes/card.ts","../src/recipes/input.ts","../src/recipes/badge.ts","../src/recipes/iconbox.ts","../src/recipes/testimonial.ts","../src/recipes/pricing-card.ts","../src/recipes/rating.ts","../src/recipes/alert.ts","../src/recipes/avatar.ts","../src/recipes/tag.ts","../src/recipes/spinner.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export const spectreBaseStylesPath = \"@phcdevworks/spectre-ui/base.css\";\nexport const spectreComponentsStylesPath = \"@phcdevworks/spectre-ui/components.css\";\nexport const spectreUtilitiesStylesPath = \"@phcdevworks/spectre-ui/utilities.css\";\nexport const spectreIndexStylesPath = \"@phcdevworks/spectre-ui/index.css\";\n\nexport const spectreStyles = {\n index: spectreIndexStylesPath,\n base: spectreBaseStylesPath,\n components: spectreComponentsStylesPath,\n utilities: spectreUtilitiesStylesPath,\n};\n","export function cx(...parts: Array<string | false | null | undefined>): string {\n const seen = new Set<string>();\n const classes: string[] = [];\n\n for (const part of parts) {\n if (!part) continue;\n const trimmed = part.trim();\n if (!trimmed) continue;\n\n if (!/\\s/.test(trimmed)) {\n if (!seen.has(trimmed)) {\n seen.add(trimmed);\n classes.push(trimmed);\n }\n continue;\n }\n\n for (const token of trimmed.split(/\\s+/)) {\n if (!token || seen.has(token)) continue;\n seen.add(token);\n classes.push(token);\n }\n }\n\n return classes.join(\" \");\n}\n","type AllowedValues<T extends string> = readonly T[] | Record<T, unknown>;\n\nconst hasOwn = (value: object, key: string): boolean =>\n Object.prototype.hasOwnProperty.call(value, key);\n\nconst isAllowedValue = <T extends string>(value: T, allowed: AllowedValues<T>): boolean =>\n Array.isArray(allowed) ? allowed.includes(value) : hasOwn(allowed, value);\n\nexport function resolveOption<T extends string>(config: {\n name: string;\n value: T | undefined;\n allowed: AllowedValues<T>;\n fallback: T;\n}): T {\n const { name, value, allowed, fallback } = config;\n\n if (value === undefined) return fallback;\n if (isAllowedValue(value, allowed)) return value;\n\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(`[spectre-ui] Unknown ${name}: ${value}`);\n }\n\n return fallback;\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst BUTTON_VARIANTS = {\n primary: true,\n secondary: true,\n ghost: true,\n danger: true,\n success: true,\n cta: true,\n accent: true,\n} as const;\n\nconst BUTTON_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type ButtonVariant = keyof typeof BUTTON_VARIANTS;\nexport type ButtonSize = keyof typeof BUTTON_SIZES;\n\nexport interface ButtonRecipeOptions {\n variant?: ButtonVariant;\n size?: ButtonSize;\n fullWidth?: boolean;\n loading?: boolean;\n disabled?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n iconOnly?: boolean;\n pill?: boolean;\n}\n\nexport function getButtonClasses(opts: ButtonRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n fullWidth = false,\n loading = false,\n disabled = false,\n hovered = false,\n focused = false,\n active = false,\n iconOnly = false,\n pill = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"button variant\",\n value: variantInput,\n allowed: BUTTON_VARIANTS,\n fallback: \"primary\",\n });\n const size = resolveOption({\n name: \"button size\",\n value: sizeInput,\n allowed: BUTTON_SIZES,\n fallback: \"md\",\n });\n\n const variantMap: Record<ButtonVariant, string> = {\n primary: \"sp-btn--primary\",\n secondary: \"sp-btn--secondary\",\n ghost: \"sp-btn--ghost\",\n danger: \"sp-btn--danger\",\n success: \"sp-btn--success\",\n cta: \"sp-btn--cta\",\n accent: \"sp-btn--accent\",\n };\n const variantClass = variantMap[variant];\n\n const sizeMap: Record<ButtonSize, string> = {\n sm: \"sp-btn--sm\",\n md: \"sp-btn--md\",\n lg: \"sp-btn--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-btn\",\n variantClass,\n sizeClass,\n fullWidth && \"sp-btn--full\",\n loading && \"sp-btn--loading\",\n disabled && \"sp-btn--disabled\",\n hovered && \"sp-btn--hover is-hover\",\n focused && \"sp-btn--focus is-focus\",\n active && \"sp-btn--active is-active\",\n iconOnly && \"sp-btn--icon\",\n pill && \"sp-btn--pill\",\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst CARD_VARIANTS = {\n elevated: true,\n flat: true,\n outline: true,\n ghost: true,\n} as const;\n\nexport type CardVariant = keyof typeof CARD_VARIANTS;\n\nexport interface CardRecipeOptions {\n variant?: CardVariant;\n interactive?: boolean;\n padded?: boolean;\n fullHeight?: boolean;\n disabled?: boolean;\n loading?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n}\n\nexport function getCardClasses(opts: CardRecipeOptions = {}): string {\n const {\n variant: variantInput,\n interactive = false,\n padded = false,\n fullHeight = false,\n disabled = false,\n loading = false,\n hovered = false,\n focused = false,\n active = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"card variant\",\n value: variantInput,\n allowed: CARD_VARIANTS,\n fallback: \"elevated\",\n });\n\n const variantMap: Record<CardVariant, string> = {\n elevated: \"sp-card--elevated\",\n flat: \"sp-card--flat\",\n outline: \"sp-card--outline\",\n ghost: \"sp-card--ghost\",\n };\n const variantClass = variantMap[variant];\n\n return cx(\n \"sp-card\",\n variantClass,\n interactive && \"sp-card--interactive\",\n padded && \"sp-card--padded\",\n fullHeight && \"sp-card--full\",\n disabled && \"sp-card--disabled\",\n loading && \"sp-card--loading\",\n hovered && \"sp-card--hover is-hover\",\n focused && \"sp-card--focus is-focus\",\n active && \"sp-card--active is-active\",\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst INPUT_STATES = {\n default: true,\n error: true,\n success: true,\n disabled: true,\n loading: true,\n} as const;\n\nconst INPUT_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type InputState = keyof typeof INPUT_STATES;\nexport type InputSize = keyof typeof INPUT_SIZES;\n\nexport interface InputRecipeOptions {\n state?: InputState;\n size?: InputSize;\n fullWidth?: boolean;\n pill?: boolean;\n focused?: boolean;\n hovered?: boolean;\n active?: boolean;\n disabled?: boolean;\n loading?: boolean;\n}\n\nexport function getInputClasses(opts: InputRecipeOptions = {}): string {\n const {\n state: stateInput,\n size: sizeInput,\n fullWidth = false,\n pill = false,\n focused = false,\n hovered = false,\n active = false,\n disabled = false,\n loading = false,\n } = opts;\n\n const state = resolveOption({\n name: \"input state\",\n value: stateInput,\n allowed: INPUT_STATES,\n fallback: \"default\",\n });\n const size = resolveOption({\n name: \"input size\",\n value: sizeInput,\n allowed: INPUT_SIZES,\n fallback: \"md\",\n });\n\n const sizeMap: Record<InputSize, string> = {\n sm: \"sp-input--sm\",\n md: \"sp-input--md\",\n lg: \"sp-input--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-input\",\n sizeClass,\n state === \"error\" && \"sp-input--error\",\n state === \"success\" && \"sp-input--success\",\n // Visual state only; actual disabled attribute is handled by adapters.\n (state === \"disabled\" || disabled) && \"sp-input--disabled\",\n (state === \"loading\" || loading) && \"sp-input--loading\",\n focused && \"sp-input--focus\",\n hovered && \"sp-input--hover\",\n active && \"sp-input--active\",\n fullWidth && \"sp-input--full\",\n pill && \"sp-input--pill\",\n );\n}\n\nexport function getInputWrapperClasses(): string {\n return cx(\"sp-input-wrapper\");\n}\n\nexport function getInputLabelClasses(opts: { disabled?: boolean } = {}): string {\n const { disabled = false } = opts;\n return cx(\n \"sp-label\",\n disabled && \"sp-label--disabled\"\n );\n}\n\nexport function getInputHelperTextClasses(opts: { disabled?: boolean } = {}): string {\n const { disabled = false } = opts;\n return cx(\n \"sp-helper-text\",\n disabled && \"sp-helper-text--disabled\"\n );\n}\n\nexport function getInputErrorMessageClasses(): string {\n return cx(\"sp-error-message\");\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst BADGE_VARIANTS = {\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n neutral: true,\n info: true,\n ghost: true,\n accent: true,\n cta: true,\n} as const;\n\nconst BADGE_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type BadgeVariant = keyof typeof BADGE_VARIANTS;\nexport type BadgeSize = keyof typeof BADGE_SIZES;\n\nexport interface BadgeRecipeOptions {\n variant?: BadgeVariant;\n size?: BadgeSize;\n interactive?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n disabled?: boolean;\n loading?: boolean;\n fullWidth?: boolean;\n}\n\nexport function getBadgeClasses(opts: BadgeRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n disabled = false,\n loading = false,\n fullWidth = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"badge variant\",\n value: variantInput,\n allowed: BADGE_VARIANTS,\n fallback: \"primary\",\n });\n const size = resolveOption({\n name: \"badge size\",\n value: sizeInput,\n allowed: BADGE_SIZES,\n fallback: \"md\",\n });\n\n const variantMap: Record<BadgeVariant, string> = {\n primary: \"sp-badge--primary\",\n secondary: \"sp-badge--secondary\",\n success: \"sp-badge--success\",\n warning: \"sp-badge--warning\",\n danger: \"sp-badge--danger\",\n neutral: \"sp-badge--neutral\",\n info: \"sp-badge--info\",\n ghost: \"sp-badge--ghost\",\n accent: \"sp-badge--accent\",\n cta: \"sp-badge--cta\",\n };\n const variantClass = variantMap[variant];\n\n const sizeMap: Record<BadgeSize, string> = {\n sm: \"sp-badge--sm\",\n md: \"sp-badge--md\",\n lg: \"sp-badge--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-badge\",\n variantClass,\n sizeClass,\n interactive && \"sp-badge--interactive\",\n hovered && \"sp-badge--hover is-hover\",\n focused && \"sp-badge--focus is-focus\",\n active && \"sp-badge--active is-active\",\n disabled && \"sp-badge--disabled\",\n loading && \"sp-badge--loading\",\n fullWidth && \"sp-badge--full\"\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst ICONBOX_VARIANTS = {\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n info: true,\n neutral: true,\n ghost: true,\n accent: true,\n cta: true,\n} as const;\n\nconst ICONBOX_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type IconBoxVariant = keyof typeof ICONBOX_VARIANTS;\nexport type IconBoxSize = keyof typeof ICONBOX_SIZES;\n\nexport interface IconBoxRecipeOptions {\n variant?: IconBoxVariant;\n size?: IconBoxSize;\n disabled?: boolean;\n loading?: boolean;\n interactive?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n pill?: boolean;\n fullWidth?: boolean;\n}\n\nexport function getIconBoxClasses(opts: IconBoxRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n pill = false,\n fullWidth = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"icon box variant\",\n value: variantInput,\n allowed: ICONBOX_VARIANTS,\n fallback: \"primary\",\n });\n const size = resolveOption({\n name: \"icon box size\",\n value: sizeInput,\n allowed: ICONBOX_SIZES,\n fallback: \"md\",\n });\n\n const variantMap: Record<IconBoxVariant, string> = {\n primary: \"sp-iconbox--primary\",\n secondary: \"sp-iconbox--secondary\",\n success: \"sp-iconbox--success\",\n warning: \"sp-iconbox--warning\",\n danger: \"sp-iconbox--danger\",\n info: \"sp-iconbox--info\",\n neutral: \"sp-iconbox--neutral\",\n ghost: \"sp-iconbox--ghost\",\n accent: \"sp-iconbox--accent\",\n cta: \"sp-iconbox--cta\",\n };\n const variantClass = variantMap[variant];\n\n const sizeMap: Record<IconBoxSize, string> = {\n sm: \"sp-iconbox--sm\",\n md: \"sp-iconbox--md\",\n lg: \"sp-iconbox--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-iconbox\",\n variantClass,\n sizeClass,\n disabled && \"sp-iconbox--disabled\",\n loading && \"sp-iconbox--loading\",\n interactive && \"sp-iconbox--interactive\",\n hovered && \"sp-iconbox--hover is-hover\",\n focused && \"sp-iconbox--focus is-focus\",\n active && \"sp-iconbox--active is-active\",\n pill && \"sp-iconbox--pill\",\n fullWidth && \"sp-iconbox--full\"\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst TESTIMONIAL_VARIANTS = {\n elevated: true,\n flat: true,\n outline: true,\n ghost: true,\n} as const;\n\nexport type TestimonialVariant = keyof typeof TESTIMONIAL_VARIANTS;\n\nexport interface TestimonialRecipeOptions {\n variant?: TestimonialVariant;\n disabled?: boolean;\n loading?: boolean;\n interactive?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n fullHeight?: boolean;\n}\n\nexport function getTestimonialClasses(opts: TestimonialRecipeOptions = {}): string {\n const {\n variant: variantInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullHeight = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"testimonial variant\",\n value: variantInput,\n allowed: TESTIMONIAL_VARIANTS,\n fallback: \"outline\",\n });\n\n const variantMap: Record<TestimonialVariant, string> = {\n elevated: \"sp-testimonial--elevated\",\n flat: \"sp-testimonial--flat\",\n outline: \"sp-testimonial--outline\",\n ghost: \"sp-testimonial--ghost\",\n };\n const variantClass = variantMap[variant];\n\n return cx(\n \"sp-testimonial\",\n variantClass,\n disabled && \"sp-testimonial--disabled\",\n loading && \"sp-testimonial--loading\",\n interactive && \"sp-testimonial--interactive\",\n hovered && \"sp-testimonial--hover is-hover\",\n focused && \"sp-testimonial--focus is-focus\",\n active && \"sp-testimonial--active is-active\",\n fullHeight && \"sp-testimonial--full\"\n );\n}\n\nexport function getTestimonialQuoteClasses(): string {\n return cx(\"sp-testimonial-quote\");\n}\n\nexport function getTestimonialAuthorClasses(): string {\n return cx(\"sp-testimonial-author\");\n}\n\nexport function getTestimonialAuthorInfoClasses(): string {\n return cx(\"sp-testimonial-author-info\");\n}\n\nexport function getTestimonialAuthorNameClasses(): string {\n return cx(\"sp-testimonial-author-name\");\n}\n\nexport function getTestimonialAuthorTitleClasses(): string {\n return cx(\"sp-testimonial-author-title\");\n}\n","import { cx } from '../internal/cx'\n\nexport interface PricingCardRecipeOptions {\n featured?: boolean\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n fullHeight?: boolean\n}\n\nexport function getPricingCardClasses(opts: PricingCardRecipeOptions = {}): string {\n const {\n featured = false,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullHeight = false,\n } = opts\n\n return cx(\n 'sp-pricing-card',\n featured && 'sp-pricing-card--featured',\n disabled && 'sp-pricing-card--disabled',\n loading && 'sp-pricing-card--loading',\n interactive && 'sp-pricing-card--interactive',\n hovered && 'sp-pricing-card--hover is-hover',\n focused && 'sp-pricing-card--focus is-focus',\n active && 'sp-pricing-card--active is-active',\n fullHeight && 'sp-pricing-card--full'\n )\n}\n\nexport function getPricingCardBadgeClasses(): string {\n return cx('sp-pricing-card-badge')\n}\n\nexport function getPricingCardPriceContainerClasses(): string {\n return cx('sp-pricing-card-price-container')\n}\n\nexport function getPricingCardPriceClasses(): string {\n return cx('sp-pricing-card-price')\n}\n\nexport function getPricingCardDescriptionClasses(): string {\n return cx('sp-pricing-card-description')\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst RATING_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type RatingSize = keyof typeof RATING_SIZES\n\nexport interface RatingRecipeOptions {\n size?: RatingSize\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n pill?: boolean\n fullWidth?: boolean\n}\n\nexport function getRatingClasses(opts: RatingRecipeOptions = {}): string {\n const {\n size: sizeInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n pill = false,\n fullWidth = false,\n } = opts\n\n const size = resolveOption({\n name: 'rating size',\n value: sizeInput,\n allowed: RATING_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-rating',\n `sp-rating--${size}`,\n disabled && 'sp-rating--disabled',\n loading && 'sp-rating--loading',\n interactive && 'sp-rating--interactive',\n hovered && 'sp-rating--hover is-hover',\n focused && 'sp-rating--focus is-focus',\n active && 'sp-rating--active is-active',\n pill && 'sp-rating--pill',\n fullWidth && 'sp-rating--full'\n )\n}\n\nexport function getRatingStarsClasses(): string {\n return cx('sp-rating-stars')\n}\n\nexport function getRatingStarClasses(isFilled: boolean = false): string {\n return cx('sp-rating-star', isFilled && 'sp-rating-star--filled')\n}\n\nexport function getRatingTextClasses(opts: { disabled?: boolean } = {}): string {\n const { disabled = false } = opts\n return cx('sp-rating-text', disabled && 'sp-rating-text--disabled')\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst ALERT_VARIANTS = {\n info: true,\n success: true,\n warning: true,\n danger: true,\n neutral: true,\n} as const\n\nconst ALERT_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type AlertVariant = keyof typeof ALERT_VARIANTS\nexport type AlertSize = keyof typeof ALERT_SIZES\n\nexport interface AlertRecipeOptions {\n variant?: AlertVariant\n size?: AlertSize\n dismissed?: boolean\n fullWidth?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n disabled?: boolean\n loading?: boolean\n}\n\nexport function getAlertClasses(opts: AlertRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n dismissed = false,\n fullWidth = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n disabled = false,\n loading = false,\n } = opts\n\n const variant = resolveOption({\n name: 'alert variant',\n value: variantInput,\n allowed: ALERT_VARIANTS,\n fallback: 'info',\n })\n\n const size = resolveOption({\n name: 'alert size',\n value: sizeInput,\n allowed: ALERT_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-alert',\n `sp-alert--${variant}`,\n `sp-alert--${size}`,\n dismissed && 'sp-alert--dismissed',\n fullWidth && 'sp-alert--full',\n interactive && 'sp-alert--interactive',\n hovered && 'sp-alert--hover is-hover',\n focused && 'sp-alert--focus is-focus',\n active && 'sp-alert--active is-active',\n disabled && 'sp-alert--disabled',\n loading && 'sp-alert--loading'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst AVATAR_SIZES = {\n xs: true,\n sm: true,\n md: true,\n lg: true,\n xl: true,\n} as const\n\nconst AVATAR_SHAPES = {\n circle: true,\n square: true,\n} as const\n\nexport type AvatarSize = keyof typeof AVATAR_SIZES\nexport type AvatarShape = keyof typeof AVATAR_SHAPES\n\nexport interface AvatarRecipeOptions {\n size?: AvatarSize\n shape?: AvatarShape\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n fullWidth?: boolean\n placeholder?: boolean\n}\n\nexport function getAvatarClasses(opts: AvatarRecipeOptions = {}): string {\n const {\n size: sizeInput,\n shape: shapeInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullWidth = false,\n placeholder = false,\n } = opts\n\n const size = resolveOption({\n name: 'avatar size',\n value: sizeInput,\n allowed: AVATAR_SIZES,\n fallback: 'md',\n })\n\n const shape = resolveOption({\n name: 'avatar shape',\n value: shapeInput,\n allowed: AVATAR_SHAPES,\n fallback: 'circle',\n })\n\n return cx(\n 'sp-avatar',\n `sp-avatar--${size}`,\n `sp-avatar--${shape}`,\n disabled && 'sp-avatar--disabled',\n loading && 'sp-avatar--loading',\n interactive && 'sp-avatar--interactive',\n hovered && 'sp-avatar--hover is-hover',\n focused && 'sp-avatar--focus is-focus',\n active && 'sp-avatar--active is-active',\n fullWidth && 'sp-avatar--full',\n placeholder && 'sp-avatar--placeholder'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst TAG_VARIANTS = {\n default: true,\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n info: true,\n neutral: true,\n accent: true,\n cta: true,\n outline: true,\n ghost: true,\n} as const\n\nconst TAG_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type TagVariant = keyof typeof TAG_VARIANTS\nexport type TagSize = keyof typeof TAG_SIZES\n\nexport interface TagRecipeOptions {\n variant?: TagVariant\n size?: TagSize\n dismissible?: boolean\n selected?: boolean\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n fullWidth?: boolean\n}\n\nexport function getTagClasses(opts: TagRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n dismissible = false,\n selected = false,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullWidth = false,\n } = opts\n\n const variant = resolveOption({\n name: 'tag variant',\n value: variantInput,\n allowed: TAG_VARIANTS,\n fallback: 'default',\n })\n\n const size =\n sizeInput &&\n resolveOption({\n name: 'tag size',\n value: sizeInput,\n allowed: TAG_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-tag',\n `sp-tag--${variant}`,\n size && `sp-tag--${size}`,\n dismissible && 'sp-tag--dismissible',\n selected && 'sp-tag--selected',\n disabled && 'sp-tag--disabled',\n loading && 'sp-tag--loading',\n interactive && 'sp-tag--interactive',\n hovered && 'sp-tag--hover is-hover',\n focused && 'sp-tag--focus is-focus',\n active && 'sp-tag--active is-active',\n fullWidth && 'sp-tag--full'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst SPINNER_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type SpinnerSize = keyof typeof SPINNER_SIZES\n\nexport interface SpinnerRecipeOptions {\n size?: SpinnerSize\n}\n\nexport function getSpinnerClasses(opts: SpinnerRecipeOptions = {}): string {\n const { size: sizeInput } = opts\n\n const size = resolveOption({\n name: 'spinner size',\n value: sizeInput,\n allowed: SPINNER_SIZES,\n fallback: 'md',\n })\n\n return cx('sp-spinner', `sp-spinner--${size}`)\n}\n"]}
1
+ {"version":3,"sources":["../src/css-constants.ts","../src/internal/cx.ts","../src/internal/resolve-option.ts","../src/recipes/button.ts","../src/recipes/card.ts","../src/recipes/input.ts","../src/recipes/badge.ts","../src/recipes/iconbox.ts","../src/recipes/testimonial.ts","../src/recipes/pricing-card.ts","../src/recipes/rating.ts","../src/recipes/alert.ts","../src/recipes/avatar.ts","../src/recipes/tag.ts","../src/recipes/spinner.ts","../src/recipes/nav.ts","../src/recipes/toast.ts","../src/recipes/tooltip.ts","../src/recipes/dropdown.ts","../src/recipes/modal.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export const spectreBaseStylesPath = \"@phcdevworks/spectre-ui/base.css\";\nexport const spectreComponentsStylesPath = \"@phcdevworks/spectre-ui/components.css\";\nexport const spectreUtilitiesStylesPath = \"@phcdevworks/spectre-ui/utilities.css\";\nexport const spectreIndexStylesPath = \"@phcdevworks/spectre-ui/index.css\";\n\nexport const spectreStyles = {\n index: spectreIndexStylesPath,\n base: spectreBaseStylesPath,\n components: spectreComponentsStylesPath,\n utilities: spectreUtilitiesStylesPath,\n};\n","export function cx(...parts: Array<string | false | null | undefined>): string {\n const seen = new Set<string>();\n const classes: string[] = [];\n\n for (const part of parts) {\n if (!part) continue;\n const trimmed = part.trim();\n if (!trimmed) continue;\n\n if (!/\\s/.test(trimmed)) {\n if (!seen.has(trimmed)) {\n seen.add(trimmed);\n classes.push(trimmed);\n }\n continue;\n }\n\n for (const token of trimmed.split(/\\s+/)) {\n if (!token || seen.has(token)) continue;\n seen.add(token);\n classes.push(token);\n }\n }\n\n return classes.join(\" \");\n}\n","type AllowedValues<T extends string> = readonly T[] | Record<T, unknown>;\n\nconst hasOwn = (value: object, key: string): boolean =>\n Object.prototype.hasOwnProperty.call(value, key);\n\nconst isAllowedValue = <T extends string>(value: T, allowed: AllowedValues<T>): boolean =>\n Array.isArray(allowed) ? allowed.includes(value) : hasOwn(allowed, value);\n\nexport function resolveOption<T extends string>(config: {\n name: string;\n value: T | undefined;\n allowed: AllowedValues<T>;\n fallback: T;\n}): T {\n const { name, value, allowed, fallback } = config;\n\n if (value === undefined) return fallback;\n if (isAllowedValue(value, allowed)) return value;\n\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(`[spectre-ui] Unknown ${name}: ${value}`);\n }\n\n return fallback;\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst BUTTON_VARIANTS = {\n primary: true,\n secondary: true,\n ghost: true,\n danger: true,\n success: true,\n cta: true,\n accent: true,\n} as const;\n\nconst BUTTON_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type ButtonVariant = keyof typeof BUTTON_VARIANTS;\nexport type ButtonSize = keyof typeof BUTTON_SIZES;\n\nexport interface ButtonRecipeOptions {\n variant?: ButtonVariant;\n size?: ButtonSize;\n fullWidth?: boolean;\n loading?: boolean;\n disabled?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n iconOnly?: boolean;\n pill?: boolean;\n}\n\nexport function getButtonClasses(opts: ButtonRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n fullWidth = false,\n loading = false,\n disabled = false,\n hovered = false,\n focused = false,\n active = false,\n iconOnly = false,\n pill = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"button variant\",\n value: variantInput,\n allowed: BUTTON_VARIANTS,\n fallback: \"primary\",\n });\n const size = resolveOption({\n name: \"button size\",\n value: sizeInput,\n allowed: BUTTON_SIZES,\n fallback: \"md\",\n });\n\n const variantMap: Record<ButtonVariant, string> = {\n primary: \"sp-btn--primary\",\n secondary: \"sp-btn--secondary\",\n ghost: \"sp-btn--ghost\",\n danger: \"sp-btn--danger\",\n success: \"sp-btn--success\",\n cta: \"sp-btn--cta\",\n accent: \"sp-btn--accent\",\n };\n const variantClass = variantMap[variant];\n\n const sizeMap: Record<ButtonSize, string> = {\n sm: \"sp-btn--sm\",\n md: \"sp-btn--md\",\n lg: \"sp-btn--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-btn\",\n variantClass,\n sizeClass,\n fullWidth && \"sp-btn--full\",\n loading && \"sp-btn--loading\",\n disabled && \"sp-btn--disabled\",\n hovered && \"sp-btn--hover is-hover\",\n focused && \"sp-btn--focus is-focus\",\n active && \"sp-btn--active is-active\",\n iconOnly && \"sp-btn--icon\",\n pill && \"sp-btn--pill\",\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst CARD_VARIANTS = {\n elevated: true,\n flat: true,\n outline: true,\n ghost: true,\n} as const;\n\nexport type CardVariant = keyof typeof CARD_VARIANTS;\n\nexport interface CardRecipeOptions {\n variant?: CardVariant;\n interactive?: boolean;\n padded?: boolean;\n fullHeight?: boolean;\n disabled?: boolean;\n loading?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n}\n\nexport function getCardClasses(opts: CardRecipeOptions = {}): string {\n const {\n variant: variantInput,\n interactive = false,\n padded = false,\n fullHeight = false,\n disabled = false,\n loading = false,\n hovered = false,\n focused = false,\n active = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"card variant\",\n value: variantInput,\n allowed: CARD_VARIANTS,\n fallback: \"elevated\",\n });\n\n const variantMap: Record<CardVariant, string> = {\n elevated: \"sp-card--elevated\",\n flat: \"sp-card--flat\",\n outline: \"sp-card--outline\",\n ghost: \"sp-card--ghost\",\n };\n const variantClass = variantMap[variant];\n\n return cx(\n \"sp-card\",\n variantClass,\n interactive && \"sp-card--interactive\",\n padded && \"sp-card--padded\",\n fullHeight && \"sp-card--full\",\n disabled && \"sp-card--disabled\",\n loading && \"sp-card--loading\",\n hovered && \"sp-card--hover is-hover\",\n focused && \"sp-card--focus is-focus\",\n active && \"sp-card--active is-active\",\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst INPUT_STATES = {\n default: true,\n error: true,\n success: true,\n disabled: true,\n loading: true,\n} as const;\n\nconst INPUT_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type InputState = keyof typeof INPUT_STATES;\nexport type InputSize = keyof typeof INPUT_SIZES;\n\nexport interface InputRecipeOptions {\n state?: InputState;\n size?: InputSize;\n fullWidth?: boolean;\n pill?: boolean;\n focused?: boolean;\n hovered?: boolean;\n active?: boolean;\n disabled?: boolean;\n loading?: boolean;\n}\n\nexport function getInputClasses(opts: InputRecipeOptions = {}): string {\n const {\n state: stateInput,\n size: sizeInput,\n fullWidth = false,\n pill = false,\n focused = false,\n hovered = false,\n active = false,\n disabled = false,\n loading = false,\n } = opts;\n\n const state = resolveOption({\n name: \"input state\",\n value: stateInput,\n allowed: INPUT_STATES,\n fallback: \"default\",\n });\n const size = resolveOption({\n name: \"input size\",\n value: sizeInput,\n allowed: INPUT_SIZES,\n fallback: \"md\",\n });\n\n const sizeMap: Record<InputSize, string> = {\n sm: \"sp-input--sm\",\n md: \"sp-input--md\",\n lg: \"sp-input--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-input\",\n sizeClass,\n state === \"error\" && \"sp-input--error\",\n state === \"success\" && \"sp-input--success\",\n // Visual state only; actual disabled attribute is handled by adapters.\n (state === \"disabled\" || disabled) && \"sp-input--disabled\",\n (state === \"loading\" || loading) && \"sp-input--loading\",\n focused && \"sp-input--focus is-focus\",\n hovered && \"sp-input--hover is-hover\",\n active && \"sp-input--active is-active\",\n fullWidth && \"sp-input--full\",\n pill && \"sp-input--pill\",\n );\n}\n\nexport function getInputWrapperClasses(): string {\n return cx(\"sp-input-wrapper\");\n}\n\nexport function getInputLabelClasses(opts: { disabled?: boolean } = {}): string {\n const { disabled = false } = opts;\n return cx(\n \"sp-label\",\n disabled && \"sp-label--disabled\"\n );\n}\n\nexport function getInputHelperTextClasses(opts: { disabled?: boolean } = {}): string {\n const { disabled = false } = opts;\n return cx(\n \"sp-helper-text\",\n disabled && \"sp-helper-text--disabled\"\n );\n}\n\nexport function getInputErrorMessageClasses(): string {\n return cx(\"sp-error-message\");\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst BADGE_VARIANTS = {\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n neutral: true,\n info: true,\n ghost: true,\n outline: true,\n accent: true,\n cta: true,\n} as const;\n\nconst BADGE_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type BadgeVariant = keyof typeof BADGE_VARIANTS;\nexport type BadgeSize = keyof typeof BADGE_SIZES;\n\nexport interface BadgeRecipeOptions {\n variant?: BadgeVariant;\n size?: BadgeSize;\n interactive?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n disabled?: boolean;\n loading?: boolean;\n fullWidth?: boolean;\n}\n\nexport function getBadgeClasses(opts: BadgeRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n disabled = false,\n loading = false,\n fullWidth = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"badge variant\",\n value: variantInput,\n allowed: BADGE_VARIANTS,\n fallback: \"primary\",\n });\n const size = resolveOption({\n name: \"badge size\",\n value: sizeInput,\n allowed: BADGE_SIZES,\n fallback: \"md\",\n });\n\n const variantMap: Record<BadgeVariant, string> = {\n primary: \"sp-badge--primary\",\n secondary: \"sp-badge--secondary\",\n success: \"sp-badge--success\",\n warning: \"sp-badge--warning\",\n danger: \"sp-badge--danger\",\n neutral: \"sp-badge--neutral\",\n info: \"sp-badge--info\",\n ghost: \"sp-badge--ghost\",\n outline: \"sp-badge--outline\",\n accent: \"sp-badge--accent\",\n cta: \"sp-badge--cta\",\n };\n const variantClass = variantMap[variant];\n\n const sizeMap: Record<BadgeSize, string> = {\n sm: \"sp-badge--sm\",\n md: \"sp-badge--md\",\n lg: \"sp-badge--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-badge\",\n variantClass,\n sizeClass,\n interactive && \"sp-badge--interactive\",\n hovered && \"sp-badge--hover is-hover\",\n focused && \"sp-badge--focus is-focus\",\n active && \"sp-badge--active is-active\",\n disabled && \"sp-badge--disabled\",\n loading && \"sp-badge--loading\",\n fullWidth && \"sp-badge--full\"\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst ICONBOX_VARIANTS = {\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n info: true,\n neutral: true,\n ghost: true,\n accent: true,\n cta: true,\n outline: true,\n} as const;\n\nconst ICONBOX_SIZES = {\n xs: true,\n sm: true,\n md: true,\n lg: true,\n} as const;\n\nexport type IconBoxVariant = keyof typeof ICONBOX_VARIANTS;\nexport type IconBoxSize = keyof typeof ICONBOX_SIZES;\n\nexport interface IconBoxRecipeOptions {\n variant?: IconBoxVariant;\n size?: IconBoxSize;\n disabled?: boolean;\n loading?: boolean;\n interactive?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n pill?: boolean;\n fullWidth?: boolean;\n}\n\nexport function getIconBoxClasses(opts: IconBoxRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n pill = false,\n fullWidth = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"icon box variant\",\n value: variantInput,\n allowed: ICONBOX_VARIANTS,\n fallback: \"primary\",\n });\n const size = resolveOption({\n name: \"icon box size\",\n value: sizeInput,\n allowed: ICONBOX_SIZES,\n fallback: \"md\",\n });\n\n const variantMap: Record<IconBoxVariant, string> = {\n primary: \"sp-iconbox--primary\",\n secondary: \"sp-iconbox--secondary\",\n success: \"sp-iconbox--success\",\n warning: \"sp-iconbox--warning\",\n danger: \"sp-iconbox--danger\",\n info: \"sp-iconbox--info\",\n neutral: \"sp-iconbox--neutral\",\n ghost: \"sp-iconbox--ghost\",\n accent: \"sp-iconbox--accent\",\n cta: \"sp-iconbox--cta\",\n outline: \"sp-iconbox--outline\",\n };\n const variantClass = variantMap[variant];\n\n const sizeMap: Record<IconBoxSize, string> = {\n xs: \"sp-iconbox--xs\",\n sm: \"sp-iconbox--sm\",\n md: \"sp-iconbox--md\",\n lg: \"sp-iconbox--lg\",\n };\n const sizeClass = sizeMap[size];\n\n return cx(\n \"sp-iconbox\",\n variantClass,\n sizeClass,\n disabled && \"sp-iconbox--disabled\",\n loading && \"sp-iconbox--loading\",\n interactive && \"sp-iconbox--interactive\",\n hovered && \"sp-iconbox--hover is-hover\",\n focused && \"sp-iconbox--focus is-focus\",\n active && \"sp-iconbox--active is-active\",\n pill && \"sp-iconbox--pill\",\n fullWidth && \"sp-iconbox--full\"\n );\n}\n","import { cx } from \"../internal/cx\";\nimport { resolveOption } from \"../internal/resolve-option\";\n\nconst TESTIMONIAL_VARIANTS = {\n elevated: true,\n flat: true,\n outline: true,\n ghost: true,\n} as const;\n\nexport type TestimonialVariant = keyof typeof TESTIMONIAL_VARIANTS;\n\nexport interface TestimonialRecipeOptions {\n variant?: TestimonialVariant;\n disabled?: boolean;\n loading?: boolean;\n interactive?: boolean;\n hovered?: boolean;\n focused?: boolean;\n active?: boolean;\n fullHeight?: boolean;\n}\n\nexport function getTestimonialClasses(opts: TestimonialRecipeOptions = {}): string {\n const {\n variant: variantInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullHeight = false,\n } = opts;\n\n const variant = resolveOption({\n name: \"testimonial variant\",\n value: variantInput,\n allowed: TESTIMONIAL_VARIANTS,\n fallback: \"outline\",\n });\n\n const variantMap: Record<TestimonialVariant, string> = {\n elevated: \"sp-testimonial--elevated\",\n flat: \"sp-testimonial--flat\",\n outline: \"sp-testimonial--outline\",\n ghost: \"sp-testimonial--ghost\",\n };\n const variantClass = variantMap[variant];\n\n return cx(\n \"sp-testimonial\",\n variantClass,\n disabled && \"sp-testimonial--disabled\",\n loading && \"sp-testimonial--loading\",\n interactive && \"sp-testimonial--interactive\",\n hovered && \"sp-testimonial--hover is-hover\",\n focused && \"sp-testimonial--focus is-focus\",\n active && \"sp-testimonial--active is-active\",\n fullHeight && \"sp-testimonial--full\"\n );\n}\n\nexport function getTestimonialQuoteClasses(): string {\n return cx(\"sp-testimonial-quote\");\n}\n\nexport function getTestimonialAuthorClasses(): string {\n return cx(\"sp-testimonial-author\");\n}\n\nexport function getTestimonialAuthorInfoClasses(): string {\n return cx(\"sp-testimonial-author-info\");\n}\n\nexport function getTestimonialAuthorNameClasses(): string {\n return cx(\"sp-testimonial-author-name\");\n}\n\nexport function getTestimonialAuthorTitleClasses(): string {\n return cx(\"sp-testimonial-author-title\");\n}\n","import { cx } from '../internal/cx'\n\nexport interface PricingCardRecipeOptions {\n featured?: boolean\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n fullHeight?: boolean\n}\n\nexport function getPricingCardClasses(opts: PricingCardRecipeOptions = {}): string {\n const {\n featured = false,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullHeight = false,\n } = opts\n\n return cx(\n 'sp-pricing-card',\n featured && 'sp-pricing-card--featured',\n disabled && 'sp-pricing-card--disabled',\n loading && 'sp-pricing-card--loading',\n interactive && 'sp-pricing-card--interactive',\n hovered && 'sp-pricing-card--hover is-hover',\n focused && 'sp-pricing-card--focus is-focus',\n active && 'sp-pricing-card--active is-active',\n fullHeight && 'sp-pricing-card--full'\n )\n}\n\nexport function getPricingCardBadgeClasses(): string {\n return cx('sp-pricing-card-badge')\n}\n\nexport function getPricingCardPriceContainerClasses(): string {\n return cx('sp-pricing-card-price-container')\n}\n\nexport function getPricingCardPriceClasses(): string {\n return cx('sp-pricing-card-price')\n}\n\nexport function getPricingCardDescriptionClasses(): string {\n return cx('sp-pricing-card-description')\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst RATING_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type RatingSize = keyof typeof RATING_SIZES\n\nexport interface RatingRecipeOptions {\n size?: RatingSize\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n pill?: boolean\n fullWidth?: boolean\n}\n\nexport function getRatingClasses(opts: RatingRecipeOptions = {}): string {\n const {\n size: sizeInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n pill = false,\n fullWidth = false,\n } = opts\n\n const size = resolveOption({\n name: 'rating size',\n value: sizeInput,\n allowed: RATING_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-rating',\n `sp-rating--${size}`,\n disabled && 'sp-rating--disabled',\n loading && 'sp-rating--loading',\n interactive && 'sp-rating--interactive',\n hovered && 'sp-rating--hover is-hover',\n focused && 'sp-rating--focus is-focus',\n active && 'sp-rating--active is-active',\n pill && 'sp-rating--pill',\n fullWidth && 'sp-rating--full'\n )\n}\n\nexport function getRatingStarsClasses(): string {\n return cx('sp-rating-stars')\n}\n\nexport function getRatingStarClasses(isFilled: boolean = false): string {\n return cx('sp-rating-star', isFilled && 'sp-rating-star--filled')\n}\n\nexport function getRatingTextClasses(opts: { disabled?: boolean } = {}): string {\n const { disabled = false } = opts\n return cx('sp-rating-text', disabled && 'sp-rating-text--disabled')\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst ALERT_VARIANTS = {\n info: true,\n success: true,\n warning: true,\n danger: true,\n neutral: true,\n} as const\n\nconst ALERT_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type AlertVariant = keyof typeof ALERT_VARIANTS\nexport type AlertSize = keyof typeof ALERT_SIZES\n\nexport interface AlertRecipeOptions {\n variant?: AlertVariant\n size?: AlertSize\n dismissed?: boolean\n fullWidth?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n disabled?: boolean\n loading?: boolean\n}\n\nexport function getAlertClasses(opts: AlertRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n dismissed = false,\n fullWidth = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n disabled = false,\n loading = false,\n } = opts\n\n const variant = resolveOption({\n name: 'alert variant',\n value: variantInput,\n allowed: ALERT_VARIANTS,\n fallback: 'info',\n })\n\n const size = resolveOption({\n name: 'alert size',\n value: sizeInput,\n allowed: ALERT_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-alert',\n `sp-alert--${variant}`,\n `sp-alert--${size}`,\n dismissed && 'sp-alert--dismissed',\n fullWidth && 'sp-alert--full',\n interactive && 'sp-alert--interactive',\n hovered && 'sp-alert--hover is-hover',\n focused && 'sp-alert--focus is-focus',\n active && 'sp-alert--active is-active',\n disabled && 'sp-alert--disabled',\n loading && 'sp-alert--loading'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst AVATAR_SIZES = {\n xs: true,\n sm: true,\n md: true,\n lg: true,\n xl: true,\n} as const\n\nconst AVATAR_SHAPES = {\n circle: true,\n square: true,\n} as const\n\nexport type AvatarSize = keyof typeof AVATAR_SIZES\nexport type AvatarShape = keyof typeof AVATAR_SHAPES\n\nexport interface AvatarRecipeOptions {\n size?: AvatarSize\n shape?: AvatarShape\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n fullWidth?: boolean\n placeholder?: boolean\n}\n\nexport function getAvatarClasses(opts: AvatarRecipeOptions = {}): string {\n const {\n size: sizeInput,\n shape: shapeInput,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullWidth = false,\n placeholder = false,\n } = opts\n\n const size = resolveOption({\n name: 'avatar size',\n value: sizeInput,\n allowed: AVATAR_SIZES,\n fallback: 'md',\n })\n\n const shape = resolveOption({\n name: 'avatar shape',\n value: shapeInput,\n allowed: AVATAR_SHAPES,\n fallback: 'circle',\n })\n\n return cx(\n 'sp-avatar',\n `sp-avatar--${size}`,\n `sp-avatar--${shape}`,\n disabled && 'sp-avatar--disabled',\n loading && 'sp-avatar--loading',\n interactive && 'sp-avatar--interactive',\n hovered && 'sp-avatar--hover is-hover',\n focused && 'sp-avatar--focus is-focus',\n active && 'sp-avatar--active is-active',\n fullWidth && 'sp-avatar--full',\n placeholder && 'sp-avatar--placeholder'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst TAG_VARIANTS = {\n default: true,\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n info: true,\n neutral: true,\n accent: true,\n cta: true,\n outline: true,\n ghost: true,\n} as const\n\nconst TAG_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type TagVariant = keyof typeof TAG_VARIANTS\nexport type TagSize = keyof typeof TAG_SIZES\n\nexport interface TagRecipeOptions {\n variant?: TagVariant\n size?: TagSize\n dismissible?: boolean\n selected?: boolean\n disabled?: boolean\n loading?: boolean\n interactive?: boolean\n hovered?: boolean\n focused?: boolean\n active?: boolean\n fullWidth?: boolean\n}\n\nexport function getTagClasses(opts: TagRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n dismissible = false,\n selected = false,\n disabled = false,\n loading = false,\n interactive = false,\n hovered = false,\n focused = false,\n active = false,\n fullWidth = false,\n } = opts\n\n const variant = resolveOption({\n name: 'tag variant',\n value: variantInput,\n allowed: TAG_VARIANTS,\n fallback: 'default',\n })\n\n const size =\n sizeInput &&\n resolveOption({\n name: 'tag size',\n value: sizeInput,\n allowed: TAG_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-tag',\n `sp-tag--${variant}`,\n size && `sp-tag--${size}`,\n dismissible && 'sp-tag--dismissible',\n selected && 'sp-tag--selected',\n disabled && 'sp-tag--disabled',\n loading && 'sp-tag--loading',\n interactive && 'sp-tag--interactive',\n hovered && 'sp-tag--hover is-hover',\n focused && 'sp-tag--focus is-focus',\n active && 'sp-tag--active is-active',\n fullWidth && 'sp-tag--full'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst SPINNER_VARIANTS = {\n primary: true,\n secondary: true,\n success: true,\n warning: true,\n danger: true,\n info: true,\n neutral: true,\n accent: true,\n cta: true,\n} as const\n\nconst SPINNER_SIZES = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type SpinnerVariant = keyof typeof SPINNER_VARIANTS\nexport type SpinnerSize = keyof typeof SPINNER_SIZES\n\nexport interface SpinnerRecipeOptions {\n variant?: SpinnerVariant\n size?: SpinnerSize\n disabled?: boolean\n loading?: boolean\n}\n\nexport function getSpinnerClasses(opts: SpinnerRecipeOptions = {}): string {\n const {\n variant: variantInput,\n size: sizeInput,\n disabled = false,\n loading = false,\n } = opts\n\n const variant =\n variantInput &&\n resolveOption({\n name: 'spinner variant',\n value: variantInput,\n allowed: SPINNER_VARIANTS,\n fallback: 'primary',\n })\n\n const size = resolveOption({\n name: 'spinner size',\n value: sizeInput,\n allowed: SPINNER_SIZES,\n fallback: 'md',\n })\n\n return cx(\n 'sp-spinner',\n variant && `sp-spinner--${variant}`,\n `sp-spinner--${size}`,\n disabled && 'sp-spinner--disabled',\n loading && 'sp-spinner--loading'\n )\n}\n","import { cx } from '../internal/cx'\n\nexport interface NavRecipeOptions {\n bordered?: boolean\n sticky?: boolean\n fullWidth?: boolean\n}\n\nexport function getNavClasses(opts: NavRecipeOptions = {}): string {\n const { bordered = false, sticky = false, fullWidth = false } = opts\n\n return cx(\n 'sp-nav',\n bordered && 'sp-nav--bordered',\n sticky && 'sp-nav--sticky',\n fullWidth && 'sp-nav--full'\n )\n}\n\nexport function getNavLinksClasses(): string {\n return cx('sp-nav__links')\n}\n\nexport interface NavLinkRecipeOptions {\n active?: boolean\n disabled?: boolean\n hovered?: boolean\n focused?: boolean\n}\n\nexport function getNavLinkClasses(opts: NavLinkRecipeOptions = {}): string {\n const {\n active = false,\n disabled = false,\n hovered = false,\n focused = false,\n } = opts\n\n return cx(\n 'sp-nav__link',\n active && 'sp-nav__link--active',\n disabled && 'sp-nav__link--disabled',\n hovered && 'sp-nav__link--hover is-hover',\n focused && 'sp-nav__link--focus is-focus'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst TOAST_VARIANTS = {\n info: true,\n success: true,\n warning: true,\n danger: true,\n} as const\n\nexport type ToastVariant = keyof typeof TOAST_VARIANTS\n\nexport interface ToastRecipeOptions {\n variant?: ToastVariant\n dismissed?: boolean\n fullWidth?: boolean\n}\n\nexport function getToastClasses(opts: ToastRecipeOptions = {}): string {\n const { variant: variantInput, dismissed = false, fullWidth = false } = opts\n\n const variant = resolveOption({\n name: 'toast variant',\n value: variantInput,\n allowed: TOAST_VARIANTS,\n fallback: 'info',\n })\n\n return cx(\n 'sp-toast',\n `sp-toast--${variant}`,\n dismissed && 'sp-toast--dismissed',\n fullWidth && 'sp-toast--full'\n )\n}\n\nexport interface ToastIconRecipeOptions {\n variant?: ToastVariant\n}\n\nexport function getToastIconClasses(\n opts: ToastIconRecipeOptions = {}\n): string {\n const { variant: variantInput } = opts\n\n const variant = resolveOption({\n name: 'toast variant',\n value: variantInput,\n allowed: TOAST_VARIANTS,\n fallback: 'info',\n })\n\n return cx('sp-toast__icon', `sp-toast__icon--${variant}`)\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst TOOLTIP_PLACEMENTS = {\n top: true,\n bottom: true,\n left: true,\n right: true,\n} as const\n\nexport type TooltipPlacement = keyof typeof TOOLTIP_PLACEMENTS\n\nexport interface TooltipRecipeOptions {\n placement?: TooltipPlacement\n visible?: boolean\n}\n\nexport function getTooltipClasses(opts: TooltipRecipeOptions = {}): string {\n const { placement: placementInput, visible = false } = opts\n\n const placement = resolveOption({\n name: 'tooltip placement',\n value: placementInput,\n allowed: TOOLTIP_PLACEMENTS,\n fallback: 'top',\n })\n\n return cx(\n 'sp-tooltip',\n `sp-tooltip--${placement}`,\n visible && 'sp-tooltip--visible'\n )\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst DROPDOWN_PLACEMENTS = {\n 'bottom-start': true,\n 'bottom-end': true,\n 'top-start': true,\n 'top-end': true,\n} as const\n\nexport type DropdownPlacement = keyof typeof DROPDOWN_PLACEMENTS\n\nexport interface DropdownRecipeOptions {\n fullWidth?: boolean\n}\n\nexport function getDropdownClasses(opts: DropdownRecipeOptions = {}): string {\n const { fullWidth = false } = opts\n\n return cx('sp-dropdown', fullWidth && 'sp-dropdown--full')\n}\n\nexport interface DropdownMenuRecipeOptions {\n placement?: DropdownPlacement\n open?: boolean\n}\n\nexport function getDropdownMenuClasses(\n opts: DropdownMenuRecipeOptions = {}\n): string {\n const { placement: placementInput, open = false } = opts\n\n const placement = resolveOption({\n name: 'dropdown menu placement',\n value: placementInput,\n allowed: DROPDOWN_PLACEMENTS,\n fallback: 'bottom-start',\n })\n\n return cx(\n 'sp-dropdown__menu',\n `sp-dropdown__menu--${placement}`,\n open && 'sp-dropdown__menu--open'\n )\n}\n\nexport interface DropdownItemRecipeOptions {\n active?: boolean\n disabled?: boolean\n hovered?: boolean\n focused?: boolean\n}\n\nexport function getDropdownItemClasses(\n opts: DropdownItemRecipeOptions = {}\n): string {\n const {\n active = false,\n disabled = false,\n hovered = false,\n focused = false,\n } = opts\n\n return cx(\n 'sp-dropdown__item',\n active && 'sp-dropdown__item--active',\n disabled && 'sp-dropdown__item--disabled',\n hovered && 'sp-dropdown__item--hover is-hover',\n focused && 'sp-dropdown__item--focus is-focus'\n )\n}\n","import { cx } from '../internal/cx'\n\nexport interface ModalOverlayRecipeOptions {\n open?: boolean\n}\n\nexport function getModalOverlayClasses(\n opts: ModalOverlayRecipeOptions = {}\n): string {\n const { open = false } = opts\n\n return cx('sp-modal-overlay', open && 'sp-modal-overlay--open')\n}\n\nexport interface ModalRecipeOptions {\n open?: boolean\n fullWidth?: boolean\n}\n\nexport function getModalClasses(opts: ModalRecipeOptions = {}): string {\n const { open = false, fullWidth = false } = opts\n\n return cx(\n 'sp-modal',\n open && 'sp-modal--open',\n fullWidth && 'sp-modal--full'\n )\n}\n"]}