@phcdevworks/spectre-ui 2.3.0 → 2.4.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/CHANGELOG.md CHANGED
@@ -6,6 +6,26 @@ reflects package releases published to npm.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.4.0] - 2026-06-23
10
+
11
+ Release Title: App Shell Hardening
12
+
13
+ Contract change type: additive
14
+
15
+ ### Added
16
+
17
+ - **Stack `align` option**: Added an `align` option (`center` `stretch`) to
18
+ `getStackClasses`, mapping to `align-items` via the new
19
+ `.sp-stack--align-stretch` modifier class. Defaults to `center` to preserve
20
+ `.sp-hstack`'s existing hardcoded behavior. Fixes a downstream gap where
21
+ `.sp-hstack` could not stretch a docked `SpSidebar` to match a taller main
22
+ content column.
23
+ - **Sidebar toggle recipe**: Added `getSidebarToggleClasses`, wrapping a new
24
+ `.sp-sidebar-toggle` component class with an explicit
25
+ `--sp-component-sidebar-toggle-z-index` (`--sp-z-index-modal`) above
26
+ `--sp-component-sidebar-backdrop-z-index`, so a consumer-rendered toggle
27
+ button stays clickable above the backdrop once the sidebar is open.
28
+
9
29
  ## [2.3.0] - 2026-06-19
10
30
 
11
31
  Release Title: App Shell Recipe Expansion
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  | Project team | `project-design` |
8
8
  | Repository role | Spectre L2 CSS, Tailwind, and recipe contract |
9
9
  | Package/artifact | `@phcdevworks/spectre-ui` |
10
- | Current version/status | 2.0.0 |
10
+ | Current version/status | 2.4.0 |
11
11
 
12
12
  ## Standard Workflow
13
13
 
@@ -275,7 +275,7 @@ All options are optional and fall back to sensible defaults.
275
275
  | Dropdown | `getDropdownClasses` | menu placement: `bottom-start` `bottom-end` `top-start` `top-end` | — | `fullWidth`, item: `active` `disabled` |
276
276
  | Modal | `getModalClasses` | — | — | `open` `fullWidth` |
277
277
  | Container | `getContainerClasses` | maxWidth: `prose` | — | — |
278
- | Stack | `getStackClasses` | direction: `vertical` `horizontal`, basis: `sidebar` | — | — |
278
+ | Stack | `getStackClasses` | direction: `vertical` `horizontal`, basis: `sidebar`, align: `center` `stretch` | — | — |
279
279
  | Section | `getSectionClasses` | — | — | — |
280
280
  | Grid | `getGridClasses` | columns: `1` `2` `3` `4` `6` `12` | gap: `sm` `md` `lg` | — |
281
281
  | Sidebar | `getSidebarClasses` | — | — | `bordered` |
@@ -343,6 +343,7 @@ Root recipe helper functions:
343
343
  - `getRatingTextClasses`
344
344
  - `getSidebarBackdropClasses`
345
345
  - `getSidebarLinkClasses`
346
+ - `getSidebarToggleClasses`
346
347
  - `getTestimonialAuthorClasses`
347
348
  - `getTestimonialAuthorInfoClasses`
348
349
  - `getTestimonialAuthorNameClasses`
@@ -403,6 +404,12 @@ Consumers (typically a framework adapter) toggle the sidebar by setting a
403
404
  - Above `breakpoints.md`, the sidebar docks inline and the backdrop is
404
405
  always hidden, regardless of the `data-sidebar-open` value.
405
406
 
407
+ A consumer-rendered toggle button that opens/closes the sidebar must carry
408
+ `getSidebarToggleClasses()`. `.sp-sidebar-toggle` stacks above
409
+ `.sp-sidebar-backdrop` (`--sp-component-sidebar-toggle-z-index`, above
410
+ `--sp-component-sidebar-backdrop-z-index`) so the backdrop never intercepts
411
+ clicks meant for the toggle once the sidebar is open.
412
+
406
413
  Adapters own the hamburger/toggle control, click handling, and SSR-safe
407
414
  initial closed state.
408
415
 
@@ -501,7 +508,7 @@ npm run ci:verify
501
508
  ```
502
509
 
503
510
  This project requires Node.js `^22.13.0 || >=24.0.0` and npm `>=10.0.0`. The
504
- checked-in package manager is `npm@11.16.0`.
511
+ checked-in package manager is `npm@11.17.0`.
505
512
 
506
513
  ### Common commands
507
514
 
@@ -838,6 +838,7 @@
838
838
  --sp-component-sidebar-z-index: var(--sp-z-index-fixed);
839
839
  --sp-component-sidebar-backdrop: var(--sp-surface-overlay);
840
840
  --sp-component-sidebar-backdrop-z-index: var(--sp-z-index-overlay);
841
+ --sp-component-sidebar-toggle-z-index: var(--sp-z-index-modal);
841
842
 
842
843
  /* footer roles (reuses nav roles - bottom-bar counterpart to the top-bar nav) */
843
844
  --sp-component-footer-bg: var(--sp-nav-bg);
@@ -2825,6 +2826,11 @@
2825
2826
  z-index: var(--sp-component-sidebar-backdrop-z-index);
2826
2827
  }
2827
2828
 
2829
+ .sp-sidebar-toggle {
2830
+ position: relative;
2831
+ z-index: var(--sp-component-sidebar-toggle-z-index);
2832
+ }
2833
+
2828
2834
  [data-sidebar-open="true"] .sp-sidebar {
2829
2835
  transform: translateX(0);
2830
2836
  }
package/dist/index.cjs CHANGED
@@ -811,6 +811,9 @@ function getSidebarLinkClasses(opts = {}) {
811
811
  function getSidebarBackdropClasses() {
812
812
  return cx("sp-sidebar-backdrop");
813
813
  }
814
+ function getSidebarToggleClasses() {
815
+ return cx("sp-sidebar-toggle");
816
+ }
814
817
 
815
818
  // src/recipes/footer.ts
816
819
  function getFooterClasses(opts = {}) {
@@ -953,8 +956,12 @@ var STACK_BASES = {
953
956
  none: true,
954
957
  sidebar: true
955
958
  };
959
+ var STACK_ALIGNS = {
960
+ center: true,
961
+ stretch: true
962
+ };
956
963
  function getStackClasses(opts = {}) {
957
- const { direction: directionInput, basis: basisInput } = opts;
964
+ const { direction: directionInput, basis: basisInput, align: alignInput } = opts;
958
965
  const direction = resolveOption({
959
966
  name: "stack direction",
960
967
  value: directionInput,
@@ -967,9 +974,16 @@ function getStackClasses(opts = {}) {
967
974
  allowed: STACK_BASES,
968
975
  fallback: "none"
969
976
  });
977
+ const align = resolveOption({
978
+ name: "stack align",
979
+ value: alignInput,
980
+ allowed: STACK_ALIGNS,
981
+ fallback: "center"
982
+ });
970
983
  return cx(
971
984
  direction === "horizontal" ? "sp-hstack" : "sp-stack",
972
- basis !== "none" && `sp-stack--basis-${basis}`
985
+ basis !== "none" && `sp-stack--basis-${basis}`,
986
+ align !== "center" && `sp-stack--align-${align}`
973
987
  );
974
988
  }
975
989
 
@@ -1044,6 +1058,7 @@ exports.getSectionClasses = getSectionClasses;
1044
1058
  exports.getSidebarBackdropClasses = getSidebarBackdropClasses;
1045
1059
  exports.getSidebarClasses = getSidebarClasses;
1046
1060
  exports.getSidebarLinkClasses = getSidebarLinkClasses;
1061
+ exports.getSidebarToggleClasses = getSidebarToggleClasses;
1047
1062
  exports.getSpinnerClasses = getSpinnerClasses;
1048
1063
  exports.getStackClasses = getStackClasses;
1049
1064
  exports.getTagClasses = getTagClasses;
@@ -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","../src/recipes/nav.ts","../src/recipes/sidebar.ts","../src/recipes/footer.ts","../src/recipes/toast.ts","../src/recipes/tooltip.ts","../src/recipes/dropdown.ts","../src/recipes/modal.ts","../src/recipes/container.ts","../src/recipes/stack.ts","../src/recipes/section.ts","../src/recipes/grid.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'\n\nexport interface SidebarRecipeOptions {\n bordered?: boolean\n}\n\nexport function getSidebarClasses(opts: SidebarRecipeOptions = {}): string {\n const { bordered = false } = opts\n\n return cx('sp-sidebar', bordered && 'sp-sidebar--bordered')\n}\n\nexport interface SidebarLinkRecipeOptions {\n active?: boolean\n disabled?: boolean\n hovered?: boolean\n focused?: boolean\n}\n\nexport function getSidebarLinkClasses(opts: SidebarLinkRecipeOptions = {}): string {\n const {\n active = false,\n disabled = false,\n hovered = false,\n focused = false,\n } = opts\n\n return cx(\n 'sp-sidebar__link',\n active && 'sp-sidebar__link--active',\n disabled && 'sp-sidebar__link--disabled',\n hovered && 'sp-sidebar__link--hover is-hover',\n focused && 'sp-sidebar__link--focus is-focus'\n )\n}\n\nexport function getSidebarBackdropClasses(): string {\n return cx('sp-sidebar-backdrop')\n}\n","import { cx } from '../internal/cx'\n\nexport interface FooterRecipeOptions {\n bordered?: boolean\n fullWidth?: boolean\n}\n\nexport function getFooterClasses(opts: FooterRecipeOptions = {}): string {\n const { bordered = false, fullWidth = false } = opts\n\n return cx('sp-footer', bordered && 'sp-footer--bordered', fullWidth && 'sp-footer--full')\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","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst CONTAINER_MAX_WIDTHS = {\n none: true,\n prose: true,\n} as const\n\nexport type ContainerMaxWidth = Exclude<keyof typeof CONTAINER_MAX_WIDTHS, 'none'>\n\nexport interface ContainerRecipeOptions {\n maxWidth?: ContainerMaxWidth\n}\n\nexport function getContainerClasses(opts: ContainerRecipeOptions = {}): string {\n const { maxWidth: maxWidthInput } = opts\n\n const maxWidth = resolveOption({\n name: 'container maxWidth',\n value: maxWidthInput,\n allowed: CONTAINER_MAX_WIDTHS,\n fallback: 'none',\n })\n\n return cx('sp-container', maxWidth !== 'none' && `sp-container--max-width-${maxWidth}`)\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst STACK_DIRECTIONS = {\n vertical: true,\n horizontal: true,\n} as const\n\nconst STACK_BASES = {\n none: true,\n sidebar: true,\n} as const\n\nexport type StackDirection = keyof typeof STACK_DIRECTIONS\nexport type StackBasis = Exclude<keyof typeof STACK_BASES, 'none'>\n\nexport interface StackRecipeOptions {\n direction?: StackDirection\n basis?: StackBasis\n}\n\nexport function getStackClasses(opts: StackRecipeOptions = {}): string {\n const { direction: directionInput, basis: basisInput } = opts\n\n const direction = resolveOption({\n name: 'stack direction',\n value: directionInput,\n allowed: STACK_DIRECTIONS,\n fallback: 'vertical',\n })\n\n const basis = resolveOption({\n name: 'stack basis',\n value: basisInput,\n allowed: STACK_BASES,\n fallback: 'none',\n })\n\n return cx(\n direction === 'horizontal' ? 'sp-hstack' : 'sp-stack',\n basis !== 'none' && `sp-stack--basis-${basis}`\n )\n}\n","export interface SectionRecipeOptions {}\n\nexport function getSectionClasses(_opts: SectionRecipeOptions = {}): string {\n return 'sp-section'\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst GRID_COLUMNS = {\n '1': true,\n '2': true,\n '3': true,\n '4': true,\n '6': true,\n '12': true,\n} as const\n\nconst GRID_GAPS = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type GridColumns = 1 | 2 | 3 | 4 | 6 | 12\nexport type GridGap = keyof typeof GRID_GAPS\n\nexport interface GridRecipeOptions {\n columns?: GridColumns\n gap?: GridGap\n}\n\nexport function getGridClasses(opts: GridRecipeOptions = {}): string {\n const { columns: columnsInput, gap: gapInput } = opts\n\n const columns = resolveOption({\n name: 'grid columns',\n value: columnsInput === undefined ? undefined : String(columnsInput),\n allowed: GRID_COLUMNS,\n fallback: '1',\n })\n\n const gap = resolveOption({\n name: 'grid gap',\n value: gapInput,\n allowed: GRID_GAPS,\n fallback: 'md',\n })\n\n return cx('sp-grid', `sp-grid--gap-${gap}`, `sp-grid-cols-${columns}`)\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/sidebar.ts","../src/recipes/footer.ts","../src/recipes/toast.ts","../src/recipes/tooltip.ts","../src/recipes/dropdown.ts","../src/recipes/modal.ts","../src/recipes/container.ts","../src/recipes/stack.ts","../src/recipes/section.ts","../src/recipes/grid.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'\n\nexport interface SidebarRecipeOptions {\n bordered?: boolean\n}\n\nexport function getSidebarClasses(opts: SidebarRecipeOptions = {}): string {\n const { bordered = false } = opts\n\n return cx('sp-sidebar', bordered && 'sp-sidebar--bordered')\n}\n\nexport interface SidebarLinkRecipeOptions {\n active?: boolean\n disabled?: boolean\n hovered?: boolean\n focused?: boolean\n}\n\nexport function getSidebarLinkClasses(opts: SidebarLinkRecipeOptions = {}): string {\n const {\n active = false,\n disabled = false,\n hovered = false,\n focused = false,\n } = opts\n\n return cx(\n 'sp-sidebar__link',\n active && 'sp-sidebar__link--active',\n disabled && 'sp-sidebar__link--disabled',\n hovered && 'sp-sidebar__link--hover is-hover',\n focused && 'sp-sidebar__link--focus is-focus'\n )\n}\n\nexport function getSidebarBackdropClasses(): string {\n return cx('sp-sidebar-backdrop')\n}\n\nexport function getSidebarToggleClasses(): string {\n return cx('sp-sidebar-toggle')\n}\n","import { cx } from '../internal/cx'\n\nexport interface FooterRecipeOptions {\n bordered?: boolean\n fullWidth?: boolean\n}\n\nexport function getFooterClasses(opts: FooterRecipeOptions = {}): string {\n const { bordered = false, fullWidth = false } = opts\n\n return cx('sp-footer', bordered && 'sp-footer--bordered', fullWidth && 'sp-footer--full')\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","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst CONTAINER_MAX_WIDTHS = {\n none: true,\n prose: true,\n} as const\n\nexport type ContainerMaxWidth = Exclude<keyof typeof CONTAINER_MAX_WIDTHS, 'none'>\n\nexport interface ContainerRecipeOptions {\n maxWidth?: ContainerMaxWidth\n}\n\nexport function getContainerClasses(opts: ContainerRecipeOptions = {}): string {\n const { maxWidth: maxWidthInput } = opts\n\n const maxWidth = resolveOption({\n name: 'container maxWidth',\n value: maxWidthInput,\n allowed: CONTAINER_MAX_WIDTHS,\n fallback: 'none',\n })\n\n return cx('sp-container', maxWidth !== 'none' && `sp-container--max-width-${maxWidth}`)\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst STACK_DIRECTIONS = {\n vertical: true,\n horizontal: true,\n} as const\n\nconst STACK_BASES = {\n none: true,\n sidebar: true,\n} as const\n\nconst STACK_ALIGNS = {\n center: true,\n stretch: true,\n} as const\n\nexport type StackDirection = keyof typeof STACK_DIRECTIONS\nexport type StackBasis = Exclude<keyof typeof STACK_BASES, 'none'>\nexport type StackAlign = keyof typeof STACK_ALIGNS\n\nexport interface StackRecipeOptions {\n direction?: StackDirection\n basis?: StackBasis\n align?: StackAlign\n}\n\nexport function getStackClasses(opts: StackRecipeOptions = {}): string {\n const { direction: directionInput, basis: basisInput, align: alignInput } = opts\n\n const direction = resolveOption({\n name: 'stack direction',\n value: directionInput,\n allowed: STACK_DIRECTIONS,\n fallback: 'vertical',\n })\n\n const basis = resolveOption({\n name: 'stack basis',\n value: basisInput,\n allowed: STACK_BASES,\n fallback: 'none',\n })\n\n const align = resolveOption({\n name: 'stack align',\n value: alignInput,\n allowed: STACK_ALIGNS,\n fallback: 'center',\n })\n\n return cx(\n direction === 'horizontal' ? 'sp-hstack' : 'sp-stack',\n basis !== 'none' && `sp-stack--basis-${basis}`,\n align !== 'center' && `sp-stack--align-${align}`\n )\n}\n","export interface SectionRecipeOptions {}\n\nexport function getSectionClasses(_opts: SectionRecipeOptions = {}): string {\n return 'sp-section'\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst GRID_COLUMNS = {\n '1': true,\n '2': true,\n '3': true,\n '4': true,\n '6': true,\n '12': true,\n} as const\n\nconst GRID_GAPS = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type GridColumns = 1 | 2 | 3 | 4 | 6 | 12\nexport type GridGap = keyof typeof GRID_GAPS\n\nexport interface GridRecipeOptions {\n columns?: GridColumns\n gap?: GridGap\n}\n\nexport function getGridClasses(opts: GridRecipeOptions = {}): string {\n const { columns: columnsInput, gap: gapInput } = opts\n\n const columns = resolveOption({\n name: 'grid columns',\n value: columnsInput === undefined ? undefined : String(columnsInput),\n allowed: GRID_COLUMNS,\n fallback: '1',\n })\n\n const gap = resolveOption({\n name: 'grid gap',\n value: gapInput,\n allowed: GRID_GAPS,\n fallback: 'md',\n })\n\n return cx('sp-grid', `sp-grid--gap-${gap}`, `sp-grid-cols-${columns}`)\n}\n"]}
package/dist/index.css CHANGED
@@ -908,6 +908,7 @@
908
908
  --sp-component-sidebar-z-index: var(--sp-z-index-fixed);
909
909
  --sp-component-sidebar-backdrop: var(--sp-surface-overlay);
910
910
  --sp-component-sidebar-backdrop-z-index: var(--sp-z-index-overlay);
911
+ --sp-component-sidebar-toggle-z-index: var(--sp-z-index-modal);
911
912
 
912
913
  /* footer roles (reuses nav roles - bottom-bar counterpart to the top-bar nav) */
913
914
  --sp-component-footer-bg: var(--sp-nav-bg);
@@ -2895,6 +2896,11 @@
2895
2896
  z-index: var(--sp-component-sidebar-backdrop-z-index);
2896
2897
  }
2897
2898
 
2899
+ .sp-sidebar-toggle {
2900
+ position: relative;
2901
+ z-index: var(--sp-component-sidebar-toggle-z-index);
2902
+ }
2903
+
2898
2904
  [data-sidebar-open="true"] .sp-sidebar {
2899
2905
  transform: translateX(0);
2900
2906
  }
@@ -3221,6 +3227,10 @@
3221
3227
  flex: 0 0 var(--sp-layout-sidebar-width);
3222
3228
  }
3223
3229
 
3230
+ .sp-stack--align-stretch {
3231
+ align-items: stretch;
3232
+ }
3233
+
3224
3234
  .sp-container {
3225
3235
  width: 100%;
3226
3236
  margin-left: auto;
package/dist/index.d.cts CHANGED
@@ -370,6 +370,7 @@ interface SidebarLinkRecipeOptions {
370
370
  }
371
371
  declare function getSidebarLinkClasses(opts?: SidebarLinkRecipeOptions): string;
372
372
  declare function getSidebarBackdropClasses(): string;
373
+ declare function getSidebarToggleClasses(): string;
373
374
 
374
375
  interface FooterRecipeOptions {
375
376
  bordered?: boolean;
@@ -460,11 +461,17 @@ declare const STACK_BASES: {
460
461
  readonly none: true;
461
462
  readonly sidebar: true;
462
463
  };
464
+ declare const STACK_ALIGNS: {
465
+ readonly center: true;
466
+ readonly stretch: true;
467
+ };
463
468
  type StackDirection = keyof typeof STACK_DIRECTIONS;
464
469
  type StackBasis = Exclude<keyof typeof STACK_BASES, 'none'>;
470
+ type StackAlign = keyof typeof STACK_ALIGNS;
465
471
  interface StackRecipeOptions {
466
472
  direction?: StackDirection;
467
473
  basis?: StackBasis;
474
+ align?: StackAlign;
468
475
  }
469
476
  declare function getStackClasses(opts?: StackRecipeOptions): string;
470
477
 
@@ -485,4 +492,4 @@ interface GridRecipeOptions {
485
492
  }
486
493
  declare function getGridClasses(opts?: GridRecipeOptions): string;
487
494
 
488
- export { type AlertRecipeOptions, type AlertSize, type AlertVariant, type AvatarRecipeOptions, type AvatarShape, type AvatarSize, type BadgeRecipeOptions, type BadgeSize, type BadgeVariant, type ButtonRecipeOptions, type ButtonSize, type ButtonVariant, type CardRecipeOptions, type CardVariant, type ContainerMaxWidth, type ContainerRecipeOptions, type DropdownItemRecipeOptions, type DropdownMenuRecipeOptions, type DropdownPlacement, type DropdownRecipeOptions, type FooterRecipeOptions, type GridColumns, type GridGap, type GridRecipeOptions, type IconBoxRecipeOptions, type IconBoxSize, type IconBoxVariant, type InputRecipeOptions, type InputSize, type InputState, type ModalOverlayRecipeOptions, type ModalRecipeOptions, type NavLinkRecipeOptions, type NavRecipeOptions, type PricingCardRecipeOptions, type RatingRecipeOptions, type RatingSize, type SectionRecipeOptions, type SidebarLinkRecipeOptions, type SidebarRecipeOptions, type SpinnerRecipeOptions, type SpinnerSize, type SpinnerVariant, type StackBasis, type StackDirection, type StackRecipeOptions, type TagRecipeOptions, type TagSize, type TagVariant, type TestimonialRecipeOptions, type ToastIconRecipeOptions, type ToastRecipeOptions, type ToastVariant, type TooltipPlacement, type TooltipRecipeOptions, getAlertClasses, getAvatarClasses, getBadgeClasses, getButtonClasses, getCardClasses, getContainerClasses, getDropdownClasses, getDropdownItemClasses, getDropdownMenuClasses, getFooterClasses, getGridClasses, getIconBoxClasses, getInputClasses, getInputErrorMessageClasses, getInputHelperTextClasses, getInputLabelClasses, getInputWrapperClasses, getModalClasses, getModalOverlayClasses, getNavClasses, getNavLinkClasses, getNavLinksClasses, getPricingCardBadgeClasses, getPricingCardClasses, getPricingCardDescriptionClasses, getPricingCardPriceClasses, getPricingCardPriceContainerClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getSectionClasses, getSidebarBackdropClasses, getSidebarClasses, getSidebarLinkClasses, getSpinnerClasses, getStackClasses, getTagClasses, getTestimonialAuthorClasses, getTestimonialAuthorInfoClasses, getTestimonialAuthorNameClasses, getTestimonialAuthorTitleClasses, getTestimonialClasses, getTestimonialQuoteClasses, getToastClasses, getToastIconClasses, getTooltipClasses, spectreBaseStylesPath, spectreComponentsStylesPath, spectreIndexStylesPath, spectreStyles, spectreUtilitiesStylesPath };
495
+ export { type AlertRecipeOptions, type AlertSize, type AlertVariant, type AvatarRecipeOptions, type AvatarShape, type AvatarSize, type BadgeRecipeOptions, type BadgeSize, type BadgeVariant, type ButtonRecipeOptions, type ButtonSize, type ButtonVariant, type CardRecipeOptions, type CardVariant, type ContainerMaxWidth, type ContainerRecipeOptions, type DropdownItemRecipeOptions, type DropdownMenuRecipeOptions, type DropdownPlacement, type DropdownRecipeOptions, type FooterRecipeOptions, type GridColumns, type GridGap, type GridRecipeOptions, type IconBoxRecipeOptions, type IconBoxSize, type IconBoxVariant, type InputRecipeOptions, type InputSize, type InputState, type ModalOverlayRecipeOptions, type ModalRecipeOptions, type NavLinkRecipeOptions, type NavRecipeOptions, type PricingCardRecipeOptions, type RatingRecipeOptions, type RatingSize, type SectionRecipeOptions, type SidebarLinkRecipeOptions, type SidebarRecipeOptions, type SpinnerRecipeOptions, type SpinnerSize, type SpinnerVariant, type StackAlign, type StackBasis, type StackDirection, type StackRecipeOptions, type TagRecipeOptions, type TagSize, type TagVariant, type TestimonialRecipeOptions, type ToastIconRecipeOptions, type ToastRecipeOptions, type ToastVariant, type TooltipPlacement, type TooltipRecipeOptions, getAlertClasses, getAvatarClasses, getBadgeClasses, getButtonClasses, getCardClasses, getContainerClasses, getDropdownClasses, getDropdownItemClasses, getDropdownMenuClasses, getFooterClasses, getGridClasses, getIconBoxClasses, getInputClasses, getInputErrorMessageClasses, getInputHelperTextClasses, getInputLabelClasses, getInputWrapperClasses, getModalClasses, getModalOverlayClasses, getNavClasses, getNavLinkClasses, getNavLinksClasses, getPricingCardBadgeClasses, getPricingCardClasses, getPricingCardDescriptionClasses, getPricingCardPriceClasses, getPricingCardPriceContainerClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getSectionClasses, getSidebarBackdropClasses, getSidebarClasses, getSidebarLinkClasses, getSidebarToggleClasses, getSpinnerClasses, getStackClasses, getTagClasses, getTestimonialAuthorClasses, getTestimonialAuthorInfoClasses, getTestimonialAuthorNameClasses, getTestimonialAuthorTitleClasses, getTestimonialClasses, getTestimonialQuoteClasses, getToastClasses, getToastIconClasses, getTooltipClasses, spectreBaseStylesPath, spectreComponentsStylesPath, spectreIndexStylesPath, spectreStyles, spectreUtilitiesStylesPath };
package/dist/index.d.ts CHANGED
@@ -370,6 +370,7 @@ interface SidebarLinkRecipeOptions {
370
370
  }
371
371
  declare function getSidebarLinkClasses(opts?: SidebarLinkRecipeOptions): string;
372
372
  declare function getSidebarBackdropClasses(): string;
373
+ declare function getSidebarToggleClasses(): string;
373
374
 
374
375
  interface FooterRecipeOptions {
375
376
  bordered?: boolean;
@@ -460,11 +461,17 @@ declare const STACK_BASES: {
460
461
  readonly none: true;
461
462
  readonly sidebar: true;
462
463
  };
464
+ declare const STACK_ALIGNS: {
465
+ readonly center: true;
466
+ readonly stretch: true;
467
+ };
463
468
  type StackDirection = keyof typeof STACK_DIRECTIONS;
464
469
  type StackBasis = Exclude<keyof typeof STACK_BASES, 'none'>;
470
+ type StackAlign = keyof typeof STACK_ALIGNS;
465
471
  interface StackRecipeOptions {
466
472
  direction?: StackDirection;
467
473
  basis?: StackBasis;
474
+ align?: StackAlign;
468
475
  }
469
476
  declare function getStackClasses(opts?: StackRecipeOptions): string;
470
477
 
@@ -485,4 +492,4 @@ interface GridRecipeOptions {
485
492
  }
486
493
  declare function getGridClasses(opts?: GridRecipeOptions): string;
487
494
 
488
- export { type AlertRecipeOptions, type AlertSize, type AlertVariant, type AvatarRecipeOptions, type AvatarShape, type AvatarSize, type BadgeRecipeOptions, type BadgeSize, type BadgeVariant, type ButtonRecipeOptions, type ButtonSize, type ButtonVariant, type CardRecipeOptions, type CardVariant, type ContainerMaxWidth, type ContainerRecipeOptions, type DropdownItemRecipeOptions, type DropdownMenuRecipeOptions, type DropdownPlacement, type DropdownRecipeOptions, type FooterRecipeOptions, type GridColumns, type GridGap, type GridRecipeOptions, type IconBoxRecipeOptions, type IconBoxSize, type IconBoxVariant, type InputRecipeOptions, type InputSize, type InputState, type ModalOverlayRecipeOptions, type ModalRecipeOptions, type NavLinkRecipeOptions, type NavRecipeOptions, type PricingCardRecipeOptions, type RatingRecipeOptions, type RatingSize, type SectionRecipeOptions, type SidebarLinkRecipeOptions, type SidebarRecipeOptions, type SpinnerRecipeOptions, type SpinnerSize, type SpinnerVariant, type StackBasis, type StackDirection, type StackRecipeOptions, type TagRecipeOptions, type TagSize, type TagVariant, type TestimonialRecipeOptions, type ToastIconRecipeOptions, type ToastRecipeOptions, type ToastVariant, type TooltipPlacement, type TooltipRecipeOptions, getAlertClasses, getAvatarClasses, getBadgeClasses, getButtonClasses, getCardClasses, getContainerClasses, getDropdownClasses, getDropdownItemClasses, getDropdownMenuClasses, getFooterClasses, getGridClasses, getIconBoxClasses, getInputClasses, getInputErrorMessageClasses, getInputHelperTextClasses, getInputLabelClasses, getInputWrapperClasses, getModalClasses, getModalOverlayClasses, getNavClasses, getNavLinkClasses, getNavLinksClasses, getPricingCardBadgeClasses, getPricingCardClasses, getPricingCardDescriptionClasses, getPricingCardPriceClasses, getPricingCardPriceContainerClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getSectionClasses, getSidebarBackdropClasses, getSidebarClasses, getSidebarLinkClasses, getSpinnerClasses, getStackClasses, getTagClasses, getTestimonialAuthorClasses, getTestimonialAuthorInfoClasses, getTestimonialAuthorNameClasses, getTestimonialAuthorTitleClasses, getTestimonialClasses, getTestimonialQuoteClasses, getToastClasses, getToastIconClasses, getTooltipClasses, spectreBaseStylesPath, spectreComponentsStylesPath, spectreIndexStylesPath, spectreStyles, spectreUtilitiesStylesPath };
495
+ export { type AlertRecipeOptions, type AlertSize, type AlertVariant, type AvatarRecipeOptions, type AvatarShape, type AvatarSize, type BadgeRecipeOptions, type BadgeSize, type BadgeVariant, type ButtonRecipeOptions, type ButtonSize, type ButtonVariant, type CardRecipeOptions, type CardVariant, type ContainerMaxWidth, type ContainerRecipeOptions, type DropdownItemRecipeOptions, type DropdownMenuRecipeOptions, type DropdownPlacement, type DropdownRecipeOptions, type FooterRecipeOptions, type GridColumns, type GridGap, type GridRecipeOptions, type IconBoxRecipeOptions, type IconBoxSize, type IconBoxVariant, type InputRecipeOptions, type InputSize, type InputState, type ModalOverlayRecipeOptions, type ModalRecipeOptions, type NavLinkRecipeOptions, type NavRecipeOptions, type PricingCardRecipeOptions, type RatingRecipeOptions, type RatingSize, type SectionRecipeOptions, type SidebarLinkRecipeOptions, type SidebarRecipeOptions, type SpinnerRecipeOptions, type SpinnerSize, type SpinnerVariant, type StackAlign, type StackBasis, type StackDirection, type StackRecipeOptions, type TagRecipeOptions, type TagSize, type TagVariant, type TestimonialRecipeOptions, type ToastIconRecipeOptions, type ToastRecipeOptions, type ToastVariant, type TooltipPlacement, type TooltipRecipeOptions, getAlertClasses, getAvatarClasses, getBadgeClasses, getButtonClasses, getCardClasses, getContainerClasses, getDropdownClasses, getDropdownItemClasses, getDropdownMenuClasses, getFooterClasses, getGridClasses, getIconBoxClasses, getInputClasses, getInputErrorMessageClasses, getInputHelperTextClasses, getInputLabelClasses, getInputWrapperClasses, getModalClasses, getModalOverlayClasses, getNavClasses, getNavLinkClasses, getNavLinksClasses, getPricingCardBadgeClasses, getPricingCardClasses, getPricingCardDescriptionClasses, getPricingCardPriceClasses, getPricingCardPriceContainerClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getSectionClasses, getSidebarBackdropClasses, getSidebarClasses, getSidebarLinkClasses, getSidebarToggleClasses, getSpinnerClasses, getStackClasses, getTagClasses, getTestimonialAuthorClasses, getTestimonialAuthorInfoClasses, getTestimonialAuthorNameClasses, getTestimonialAuthorTitleClasses, getTestimonialClasses, getTestimonialQuoteClasses, getToastClasses, getToastIconClasses, getTooltipClasses, spectreBaseStylesPath, spectreComponentsStylesPath, spectreIndexStylesPath, spectreStyles, spectreUtilitiesStylesPath };
package/dist/index.js CHANGED
@@ -809,6 +809,9 @@ function getSidebarLinkClasses(opts = {}) {
809
809
  function getSidebarBackdropClasses() {
810
810
  return cx("sp-sidebar-backdrop");
811
811
  }
812
+ function getSidebarToggleClasses() {
813
+ return cx("sp-sidebar-toggle");
814
+ }
812
815
 
813
816
  // src/recipes/footer.ts
814
817
  function getFooterClasses(opts = {}) {
@@ -951,8 +954,12 @@ var STACK_BASES = {
951
954
  none: true,
952
955
  sidebar: true
953
956
  };
957
+ var STACK_ALIGNS = {
958
+ center: true,
959
+ stretch: true
960
+ };
954
961
  function getStackClasses(opts = {}) {
955
- const { direction: directionInput, basis: basisInput } = opts;
962
+ const { direction: directionInput, basis: basisInput, align: alignInput } = opts;
956
963
  const direction = resolveOption({
957
964
  name: "stack direction",
958
965
  value: directionInput,
@@ -965,9 +972,16 @@ function getStackClasses(opts = {}) {
965
972
  allowed: STACK_BASES,
966
973
  fallback: "none"
967
974
  });
975
+ const align = resolveOption({
976
+ name: "stack align",
977
+ value: alignInput,
978
+ allowed: STACK_ALIGNS,
979
+ fallback: "center"
980
+ });
968
981
  return cx(
969
982
  direction === "horizontal" ? "sp-hstack" : "sp-stack",
970
- basis !== "none" && `sp-stack--basis-${basis}`
983
+ basis !== "none" && `sp-stack--basis-${basis}`,
984
+ align !== "center" && `sp-stack--align-${align}`
971
985
  );
972
986
  }
973
987
 
@@ -1007,6 +1021,6 @@ function getGridClasses(opts = {}) {
1007
1021
  return cx("sp-grid", `sp-grid--gap-${gap}`, `sp-grid-cols-${columns}`);
1008
1022
  }
1009
1023
 
1010
- export { getAlertClasses, getAvatarClasses, getBadgeClasses, getButtonClasses, getCardClasses, getContainerClasses, getDropdownClasses, getDropdownItemClasses, getDropdownMenuClasses, getFooterClasses, getGridClasses, getIconBoxClasses, getInputClasses, getInputErrorMessageClasses, getInputHelperTextClasses, getInputLabelClasses, getInputWrapperClasses, getModalClasses, getModalOverlayClasses, getNavClasses, getNavLinkClasses, getNavLinksClasses, getPricingCardBadgeClasses, getPricingCardClasses, getPricingCardDescriptionClasses, getPricingCardPriceClasses, getPricingCardPriceContainerClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getSectionClasses, getSidebarBackdropClasses, getSidebarClasses, getSidebarLinkClasses, getSpinnerClasses, getStackClasses, getTagClasses, getTestimonialAuthorClasses, getTestimonialAuthorInfoClasses, getTestimonialAuthorNameClasses, getTestimonialAuthorTitleClasses, getTestimonialClasses, getTestimonialQuoteClasses, getToastClasses, getToastIconClasses, getTooltipClasses, spectreBaseStylesPath, spectreComponentsStylesPath, spectreIndexStylesPath, spectreStyles, spectreUtilitiesStylesPath };
1024
+ export { getAlertClasses, getAvatarClasses, getBadgeClasses, getButtonClasses, getCardClasses, getContainerClasses, getDropdownClasses, getDropdownItemClasses, getDropdownMenuClasses, getFooterClasses, getGridClasses, getIconBoxClasses, getInputClasses, getInputErrorMessageClasses, getInputHelperTextClasses, getInputLabelClasses, getInputWrapperClasses, getModalClasses, getModalOverlayClasses, getNavClasses, getNavLinkClasses, getNavLinksClasses, getPricingCardBadgeClasses, getPricingCardClasses, getPricingCardDescriptionClasses, getPricingCardPriceClasses, getPricingCardPriceContainerClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getSectionClasses, getSidebarBackdropClasses, getSidebarClasses, getSidebarLinkClasses, getSidebarToggleClasses, getSpinnerClasses, getStackClasses, getTagClasses, getTestimonialAuthorClasses, getTestimonialAuthorInfoClasses, getTestimonialAuthorNameClasses, getTestimonialAuthorTitleClasses, getTestimonialClasses, getTestimonialQuoteClasses, getToastClasses, getToastIconClasses, getTooltipClasses, spectreBaseStylesPath, spectreComponentsStylesPath, spectreIndexStylesPath, spectreStyles, spectreUtilitiesStylesPath };
1011
1025
  //# sourceMappingURL=index.js.map
1012
1026
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -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","../src/recipes/nav.ts","../src/recipes/sidebar.ts","../src/recipes/footer.ts","../src/recipes/toast.ts","../src/recipes/tooltip.ts","../src/recipes/dropdown.ts","../src/recipes/modal.ts","../src/recipes/container.ts","../src/recipes/stack.ts","../src/recipes/section.ts","../src/recipes/grid.ts"],"names":[],"mappings":"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","file":"index.js","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'\n\nexport interface SidebarRecipeOptions {\n bordered?: boolean\n}\n\nexport function getSidebarClasses(opts: SidebarRecipeOptions = {}): string {\n const { bordered = false } = opts\n\n return cx('sp-sidebar', bordered && 'sp-sidebar--bordered')\n}\n\nexport interface SidebarLinkRecipeOptions {\n active?: boolean\n disabled?: boolean\n hovered?: boolean\n focused?: boolean\n}\n\nexport function getSidebarLinkClasses(opts: SidebarLinkRecipeOptions = {}): string {\n const {\n active = false,\n disabled = false,\n hovered = false,\n focused = false,\n } = opts\n\n return cx(\n 'sp-sidebar__link',\n active && 'sp-sidebar__link--active',\n disabled && 'sp-sidebar__link--disabled',\n hovered && 'sp-sidebar__link--hover is-hover',\n focused && 'sp-sidebar__link--focus is-focus'\n )\n}\n\nexport function getSidebarBackdropClasses(): string {\n return cx('sp-sidebar-backdrop')\n}\n","import { cx } from '../internal/cx'\n\nexport interface FooterRecipeOptions {\n bordered?: boolean\n fullWidth?: boolean\n}\n\nexport function getFooterClasses(opts: FooterRecipeOptions = {}): string {\n const { bordered = false, fullWidth = false } = opts\n\n return cx('sp-footer', bordered && 'sp-footer--bordered', fullWidth && 'sp-footer--full')\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","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst CONTAINER_MAX_WIDTHS = {\n none: true,\n prose: true,\n} as const\n\nexport type ContainerMaxWidth = Exclude<keyof typeof CONTAINER_MAX_WIDTHS, 'none'>\n\nexport interface ContainerRecipeOptions {\n maxWidth?: ContainerMaxWidth\n}\n\nexport function getContainerClasses(opts: ContainerRecipeOptions = {}): string {\n const { maxWidth: maxWidthInput } = opts\n\n const maxWidth = resolveOption({\n name: 'container maxWidth',\n value: maxWidthInput,\n allowed: CONTAINER_MAX_WIDTHS,\n fallback: 'none',\n })\n\n return cx('sp-container', maxWidth !== 'none' && `sp-container--max-width-${maxWidth}`)\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst STACK_DIRECTIONS = {\n vertical: true,\n horizontal: true,\n} as const\n\nconst STACK_BASES = {\n none: true,\n sidebar: true,\n} as const\n\nexport type StackDirection = keyof typeof STACK_DIRECTIONS\nexport type StackBasis = Exclude<keyof typeof STACK_BASES, 'none'>\n\nexport interface StackRecipeOptions {\n direction?: StackDirection\n basis?: StackBasis\n}\n\nexport function getStackClasses(opts: StackRecipeOptions = {}): string {\n const { direction: directionInput, basis: basisInput } = opts\n\n const direction = resolveOption({\n name: 'stack direction',\n value: directionInput,\n allowed: STACK_DIRECTIONS,\n fallback: 'vertical',\n })\n\n const basis = resolveOption({\n name: 'stack basis',\n value: basisInput,\n allowed: STACK_BASES,\n fallback: 'none',\n })\n\n return cx(\n direction === 'horizontal' ? 'sp-hstack' : 'sp-stack',\n basis !== 'none' && `sp-stack--basis-${basis}`\n )\n}\n","export interface SectionRecipeOptions {}\n\nexport function getSectionClasses(_opts: SectionRecipeOptions = {}): string {\n return 'sp-section'\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst GRID_COLUMNS = {\n '1': true,\n '2': true,\n '3': true,\n '4': true,\n '6': true,\n '12': true,\n} as const\n\nconst GRID_GAPS = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type GridColumns = 1 | 2 | 3 | 4 | 6 | 12\nexport type GridGap = keyof typeof GRID_GAPS\n\nexport interface GridRecipeOptions {\n columns?: GridColumns\n gap?: GridGap\n}\n\nexport function getGridClasses(opts: GridRecipeOptions = {}): string {\n const { columns: columnsInput, gap: gapInput } = opts\n\n const columns = resolveOption({\n name: 'grid columns',\n value: columnsInput === undefined ? undefined : String(columnsInput),\n allowed: GRID_COLUMNS,\n fallback: '1',\n })\n\n const gap = resolveOption({\n name: 'grid gap',\n value: gapInput,\n allowed: GRID_GAPS,\n fallback: 'md',\n })\n\n return cx('sp-grid', `sp-grid--gap-${gap}`, `sp-grid-cols-${columns}`)\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/sidebar.ts","../src/recipes/footer.ts","../src/recipes/toast.ts","../src/recipes/tooltip.ts","../src/recipes/dropdown.ts","../src/recipes/modal.ts","../src/recipes/container.ts","../src/recipes/stack.ts","../src/recipes/section.ts","../src/recipes/grid.ts"],"names":[],"mappings":"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","file":"index.js","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'\n\nexport interface SidebarRecipeOptions {\n bordered?: boolean\n}\n\nexport function getSidebarClasses(opts: SidebarRecipeOptions = {}): string {\n const { bordered = false } = opts\n\n return cx('sp-sidebar', bordered && 'sp-sidebar--bordered')\n}\n\nexport interface SidebarLinkRecipeOptions {\n active?: boolean\n disabled?: boolean\n hovered?: boolean\n focused?: boolean\n}\n\nexport function getSidebarLinkClasses(opts: SidebarLinkRecipeOptions = {}): string {\n const {\n active = false,\n disabled = false,\n hovered = false,\n focused = false,\n } = opts\n\n return cx(\n 'sp-sidebar__link',\n active && 'sp-sidebar__link--active',\n disabled && 'sp-sidebar__link--disabled',\n hovered && 'sp-sidebar__link--hover is-hover',\n focused && 'sp-sidebar__link--focus is-focus'\n )\n}\n\nexport function getSidebarBackdropClasses(): string {\n return cx('sp-sidebar-backdrop')\n}\n\nexport function getSidebarToggleClasses(): string {\n return cx('sp-sidebar-toggle')\n}\n","import { cx } from '../internal/cx'\n\nexport interface FooterRecipeOptions {\n bordered?: boolean\n fullWidth?: boolean\n}\n\nexport function getFooterClasses(opts: FooterRecipeOptions = {}): string {\n const { bordered = false, fullWidth = false } = opts\n\n return cx('sp-footer', bordered && 'sp-footer--bordered', fullWidth && 'sp-footer--full')\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","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst CONTAINER_MAX_WIDTHS = {\n none: true,\n prose: true,\n} as const\n\nexport type ContainerMaxWidth = Exclude<keyof typeof CONTAINER_MAX_WIDTHS, 'none'>\n\nexport interface ContainerRecipeOptions {\n maxWidth?: ContainerMaxWidth\n}\n\nexport function getContainerClasses(opts: ContainerRecipeOptions = {}): string {\n const { maxWidth: maxWidthInput } = opts\n\n const maxWidth = resolveOption({\n name: 'container maxWidth',\n value: maxWidthInput,\n allowed: CONTAINER_MAX_WIDTHS,\n fallback: 'none',\n })\n\n return cx('sp-container', maxWidth !== 'none' && `sp-container--max-width-${maxWidth}`)\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst STACK_DIRECTIONS = {\n vertical: true,\n horizontal: true,\n} as const\n\nconst STACK_BASES = {\n none: true,\n sidebar: true,\n} as const\n\nconst STACK_ALIGNS = {\n center: true,\n stretch: true,\n} as const\n\nexport type StackDirection = keyof typeof STACK_DIRECTIONS\nexport type StackBasis = Exclude<keyof typeof STACK_BASES, 'none'>\nexport type StackAlign = keyof typeof STACK_ALIGNS\n\nexport interface StackRecipeOptions {\n direction?: StackDirection\n basis?: StackBasis\n align?: StackAlign\n}\n\nexport function getStackClasses(opts: StackRecipeOptions = {}): string {\n const { direction: directionInput, basis: basisInput, align: alignInput } = opts\n\n const direction = resolveOption({\n name: 'stack direction',\n value: directionInput,\n allowed: STACK_DIRECTIONS,\n fallback: 'vertical',\n })\n\n const basis = resolveOption({\n name: 'stack basis',\n value: basisInput,\n allowed: STACK_BASES,\n fallback: 'none',\n })\n\n const align = resolveOption({\n name: 'stack align',\n value: alignInput,\n allowed: STACK_ALIGNS,\n fallback: 'center',\n })\n\n return cx(\n direction === 'horizontal' ? 'sp-hstack' : 'sp-stack',\n basis !== 'none' && `sp-stack--basis-${basis}`,\n align !== 'center' && `sp-stack--align-${align}`\n )\n}\n","export interface SectionRecipeOptions {}\n\nexport function getSectionClasses(_opts: SectionRecipeOptions = {}): string {\n return 'sp-section'\n}\n","import { cx } from '../internal/cx'\nimport { resolveOption } from '../internal/resolve-option'\n\nconst GRID_COLUMNS = {\n '1': true,\n '2': true,\n '3': true,\n '4': true,\n '6': true,\n '12': true,\n} as const\n\nconst GRID_GAPS = {\n sm: true,\n md: true,\n lg: true,\n} as const\n\nexport type GridColumns = 1 | 2 | 3 | 4 | 6 | 12\nexport type GridGap = keyof typeof GRID_GAPS\n\nexport interface GridRecipeOptions {\n columns?: GridColumns\n gap?: GridGap\n}\n\nexport function getGridClasses(opts: GridRecipeOptions = {}): string {\n const { columns: columnsInput, gap: gapInput } = opts\n\n const columns = resolveOption({\n name: 'grid columns',\n value: columnsInput === undefined ? undefined : String(columnsInput),\n allowed: GRID_COLUMNS,\n fallback: '1',\n })\n\n const gap = resolveOption({\n name: 'grid gap',\n value: gapInput,\n allowed: GRID_GAPS,\n fallback: 'md',\n })\n\n return cx('sp-grid', `sp-grid--gap-${gap}`, `sp-grid-cols-${columns}`)\n}\n"]}
@@ -528,6 +528,10 @@
528
528
  flex: 0 0 var(--sp-layout-sidebar-width);
529
529
  }
530
530
 
531
+ .sp-stack--align-stretch {
532
+ align-items: stretch;
533
+ }
534
+
531
535
  .sp-container {
532
536
  width: 100%;
533
537
  margin-left: auto;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phcdevworks/spectre-ui",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "@phcdevworks/spectre-ui is the Layer 2 styling contract between @phcdevworks/spectre-tokens and downstream adapters or apps.",
5
5
  "keywords": [
6
6
  "phcdevworks",
@@ -105,10 +105,10 @@
105
105
  },
106
106
  "devDependencies": {
107
107
  "@phcdevworks/spectre-manifest": "^1.0.0",
108
- "@types/node": "^25.9.3",
109
- "@typescript-eslint/eslint-plugin": "^8.61.1",
110
- "@typescript-eslint/parser": "^8.61.1",
111
- "autoprefixer": "^10.5.0",
108
+ "@types/node": "^26.0.0",
109
+ "@typescript-eslint/eslint-plugin": "^8.62.0",
110
+ "@typescript-eslint/parser": "^8.62.0",
111
+ "autoprefixer": "^10.5.1",
112
112
  "eslint": "^10.5.0",
113
113
  "jiti": "^2.7.0",
114
114
  "postcss": "^8.5.15",
@@ -118,8 +118,8 @@
118
118
  "tailwindcss": "^4.3.1",
119
119
  "tsup": "^8.5.1",
120
120
  "typescript": "^6.0.3",
121
- "typescript-eslint": "^8.61.1",
122
- "vite": "^8.0.16",
121
+ "typescript-eslint": "^8.62.0",
122
+ "vite": "^8.1.0",
123
123
  "vitest": "^4.1.9"
124
124
  },
125
125
  "cSpell.words": [