@marianmeres/stuic 3.115.0 → 3.116.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/API.md +297 -304
  2. package/dist/actions/dim-behind/index.css +4 -1
  3. package/dist/actions/focus-trap.js +3 -1
  4. package/dist/components/Accordion/README.md +17 -17
  5. package/dist/components/Accordion/index.css +4 -2
  6. package/dist/components/AssetsPreview/README.md +7 -7
  7. package/dist/components/AssetsPreview/_internal/assets-preview-types.d.ts +1 -2
  8. package/dist/components/AssetsPreview/_internal/assets-preview-utils.d.ts +1 -1
  9. package/dist/components/AssetsPreview/_internal/assets-preview-utils.js +9 -3
  10. package/dist/components/Avatar/Avatar.svelte +1 -3
  11. package/dist/components/Avatar/README.md +33 -27
  12. package/dist/components/Book/Book.svelte +6 -1
  13. package/dist/components/Book/README.md +22 -20
  14. package/dist/components/Book/index.css +4 -2
  15. package/dist/components/Button/README.md +17 -17
  16. package/dist/components/Card/Card.svelte +25 -8
  17. package/dist/components/Card/README.md +52 -56
  18. package/dist/components/Card/index.css +2 -1
  19. package/dist/components/Carousel/Carousel.svelte +1 -3
  20. package/dist/components/Carousel/README.md +28 -28
  21. package/dist/components/Cart/Cart.svelte +2 -1
  22. package/dist/components/Cart/README.md +25 -25
  23. package/dist/components/Checkout/CheckoutGuestOrLoginForm.svelte +8 -3
  24. package/dist/components/Checkout/CheckoutShippingStep.svelte +1 -2
  25. package/dist/components/Checkout/README.md +143 -130
  26. package/dist/components/CronInput/CronInput.svelte +64 -60
  27. package/dist/components/CronInput/README.md +46 -46
  28. package/dist/components/DataTable/DataTable.svelte +5 -1
  29. package/dist/components/DataTable/README.md +78 -63
  30. package/dist/components/DropdownMenu/DropdownMenu.svelte +6 -2
  31. package/dist/components/DropdownMenu/README.md +33 -27
  32. package/dist/components/EmailVerifyForm/EmailVerifyForm.svelte +2 -9
  33. package/dist/components/EmailVerifyForm/README.md +30 -30
  34. package/dist/components/Header/Header.svelte +161 -165
  35. package/dist/components/Header/README.md +7 -7
  36. package/dist/components/IconSwap/README.md +20 -15
  37. package/dist/components/IconSwap/index.css +2 -1
  38. package/dist/components/ImageCycler/ImageCycler.svelte +19 -5
  39. package/dist/components/ImageCycler/ImageCycler.svelte.d.ts +14 -10
  40. package/dist/components/ImageCycler/README.md +15 -15
  41. package/dist/components/ImageCycler/index.css +26 -20
  42. package/dist/components/Input/FieldFile.svelte +1 -3
  43. package/dist/components/Input/FieldInput.svelte +1 -3
  44. package/dist/components/Input/FieldKeyValues.svelte +2 -6
  45. package/dist/components/Input/FieldObject.svelte +2 -1
  46. package/dist/components/Input/README.md +11 -11
  47. package/dist/components/KbdShortcut/index.css +2 -1
  48. package/dist/components/LoginForm/LoginForm.svelte +1 -7
  49. package/dist/components/LoginForm/README.md +46 -46
  50. package/dist/components/ModalDialog/index.css +2 -1
  51. package/dist/components/Notifications/index.css +24 -6
  52. package/dist/components/OtpInput/OtpInput.svelte +0 -0
  53. package/dist/components/OtpInput/README.md +15 -19
  54. package/dist/components/OtpInput/index.css +1 -4
  55. package/dist/components/OtpInput/index.d.ts +1 -1
  56. package/dist/components/OtpInput/index.js +1 -1
  57. package/dist/components/Pill/README.md +41 -40
  58. package/dist/components/Pill/index.css +3 -6
  59. package/dist/components/PricingTable/README.md +86 -86
  60. package/dist/components/PricingTable/index.css +20 -35
  61. package/dist/components/RegisterForm/README.md +60 -60
  62. package/dist/components/RegisterForm/RegisterForm.svelte +1 -7
  63. package/dist/components/Separator/README.md +7 -7
  64. package/dist/components/TabbedMenu/index.css +6 -3
  65. package/dist/components/Tree/README.md +67 -67
  66. package/dist/components/UserAvatarMenu/UserAvatarMenu.svelte +1 -5
  67. package/dist/components/WithSidePanel/index.css +4 -4
  68. package/dist/index.css +12 -8
  69. package/dist/utils/design-tokens.d.ts +1 -1
  70. package/dist/utils/design-tokens.js +1 -1
  71. package/docs/architecture.md +7 -7
  72. package/docs/component-testing/00-overview-and-roadmap.md +19 -19
  73. package/docs/component-testing/01-framework-setup.md +6 -6
  74. package/docs/component-testing/02-test-conventions.md +6 -5
  75. package/docs/component-testing/03-component-coverage-roadmap.md +27 -27
  76. package/docs/component-testing/04-hard-cases-and-e2e.md +8 -8
  77. package/docs/component-testing/05-ci.md +3 -3
  78. package/docs/component-testing/PROGRESS.md +30 -26
  79. package/docs/component-testing/README.md +8 -8
  80. package/docs/conventions.md +25 -25
  81. package/docs/domains/components.md +386 -385
  82. package/docs/domains/theming.md +24 -24
  83. package/docs/domains/utils.md +22 -25
  84. package/docs/testing.md +2 -2
  85. package/docs/upgrading.md +32 -28
  86. package/package.json +2 -1
@@ -4,36 +4,36 @@ A small rounded inline element for tags, badges, status indicators, and filter c
4
4
 
5
5
  ## Props
6
6
 
7
- | Prop | Type | Default | Description |
8
- | --------------- | ------------------------------------------------------------------ | -------- | -------------------------------------------------------------------- |
9
- | `intent` | `"primary" \| "accent" \| "destructive" \| "warning" \| "success"` | - | Semantic color intent |
10
- | `variant` | `"solid" \| "outline" \| "ghost" \| "soft" \| "link"` | `"soft"` | Visual variant (how colors are applied) |
11
- | `size` | `"sm" \| "md" \| "lg"` | `"md"` | Pill size |
12
- | `muted` | `boolean` | `false` | Reduce emphasis (lower opacity) |
13
- | `active` | `boolean` | `false` | Selected/active state (filter-chip behavior) |
7
+ | Prop | Type | Default | Description |
8
+ | --------------- | ------------------------------------------------------------------ | -------- | --------------------------------------------------------------------- |
9
+ | `intent` | `"primary" \| "accent" \| "destructive" \| "warning" \| "success"` | - | Semantic color intent |
10
+ | `variant` | `"solid" \| "outline" \| "ghost" \| "soft" \| "link"` | `"soft"` | Visual variant (how colors are applied) |
11
+ | `size` | `"sm" \| "md" \| "lg"` | `"md"` | Pill size |
12
+ | `muted` | `boolean` | `false` | Reduce emphasis (lower opacity) |
13
+ | `active` | `boolean` | `false` | Selected/active state (filter-chip behavior) |
14
14
  | `roundedFull` | `boolean` | `true` | Fully rounded corners (9999px). Set `false` to use the element radius |
15
15
  | `block` | `boolean` | `false` | Render as block-level flex (full width). `inline-flex` by default |
16
- | `unstyled` | `boolean` | `false` | Skip all default styling |
17
- | `href` | `string` | - | Render as `<a>` with this URL |
18
- | `target` | `string` | - | Link target (only when `href` is set) |
19
- | `onclick` | `(e: MouseEvent) => void` | - | Render as `<button>` with this handler (when no `href`) |
20
- | `disabled` | `boolean` | - | Disabled state (interactive variants only) |
21
- | `dismissible` | `boolean` | `false` | Show built-in X dismiss button |
22
- | `ondismiss` | `(e: MouseEvent) => void` | - | Called when X is clicked. Stops propagation |
23
- | `dot` | `boolean` | `false` | Status dot rendered before content |
24
- | `contentBefore` | `THC` | - | Content rendered before children |
25
- | `contentAfter` | `THC` | - | Content rendered after children |
26
- | `el` | `HTMLElement` | - | Element reference (bindable) |
27
- | `class` | `string` | - | Additional CSS classes |
16
+ | `unstyled` | `boolean` | `false` | Skip all default styling |
17
+ | `href` | `string` | - | Render as `<a>` with this URL |
18
+ | `target` | `string` | - | Link target (only when `href` is set) |
19
+ | `onclick` | `(e: MouseEvent) => void` | - | Render as `<button>` with this handler (when no `href`) |
20
+ | `disabled` | `boolean` | - | Disabled state (interactive variants only) |
21
+ | `dismissible` | `boolean` | `false` | Show built-in X dismiss button |
22
+ | `ondismiss` | `(e: MouseEvent) => void` | - | Called when X is clicked. Stops propagation |
23
+ | `dot` | `boolean` | `false` | Status dot rendered before content |
24
+ | `contentBefore` | `THC` | - | Content rendered before children |
25
+ | `contentAfter` | `THC` | - | Content rendered after children |
26
+ | `el` | `HTMLElement` | - | Element reference (bindable) |
27
+ | `class` | `string` | - | Additional CSS classes |
28
28
 
29
29
  ## Element Resolution
30
30
 
31
- | Condition | Element |
32
- | --------------------------------- | ------------------------------------------------------ |
33
- | Default | `<span>` |
34
- | `href` set | `<a>` |
35
- | `onclick` set (no `href`) | `<button>` |
36
- | `dismissible` set | `<span>` wrapper containing main element + X sibling |
31
+ | Condition | Element |
32
+ | ------------------------- | ---------------------------------------------------- |
33
+ | Default | `<span>` |
34
+ | `href` set | `<a>` |
35
+ | `onclick` set (no `href`) | `<button>` |
36
+ | `dismissible` set | `<span>` wrapper containing main element + X sibling |
37
37
 
38
38
  ## Usage
39
39
 
@@ -69,9 +69,7 @@ A small rounded inline element for tags, badges, status indicators, and filter c
69
69
  <Pill intent="accent" href="/profile">Profile</Pill>
70
70
 
71
71
  <!-- Button -->
72
- <Pill intent="success" onclick={() => console.log("clicked")}>
73
- Click me
74
- </Pill>
72
+ <Pill intent="success" onclick={() => console.log("clicked")}>Click me</Pill>
75
73
  ```
76
74
 
77
75
  ### Status Dot
@@ -150,7 +148,10 @@ A small rounded inline element for tags, badges, status indicators, and filter c
150
148
  <Pill intent="primary" roundedFull={false}>Element radius</Pill>
151
149
 
152
150
  <!-- Unstyled for full control -->
153
- <Pill unstyled class="bg-gradient-to-r from-purple-500 to-pink-500 text-white px-3 py-1 rounded-full">
151
+ <Pill
152
+ unstyled
153
+ class="bg-gradient-to-r from-purple-500 to-pink-500 text-white px-3 py-1 rounded-full"
154
+ >
154
155
  Custom
155
156
  </Pill>
156
157
  ```
@@ -159,17 +160,17 @@ A small rounded inline element for tags, badges, status indicators, and filter c
159
160
 
160
161
  ### Component Tokens
161
162
 
162
- | Variable | Default | Description |
163
- | ----------------------------- | ---------------------- | --------------------- |
164
- | `--stuic-pill-radius` | `--stuic-radius` | Border radius (overridden to `9999px` by `roundedFull`) |
165
- | `--stuic-pill-font-family` | `--font-sans` | Font family |
166
- | `--stuic-pill-font-weight` | `--font-weight-medium` | Font weight |
167
- | `--stuic-pill-transition` | `--stuic-transition` | Transition duration |
168
- | `--stuic-pill-border-width` | `--stuic-border-width` | Border width |
169
- | `--stuic-pill-ring-width` | `2px` | Focus ring width |
170
- | `--stuic-pill-ring-color` | `--stuic-color-ring` | Focus ring color |
171
- | `--stuic-pill-gap` | `0.375rem` | Gap between dot/before/children/after/dismiss |
172
- | `--stuic-pill-dot-size` | `0.5rem` | Status dot diameter |
163
+ | Variable | Default | Description |
164
+ | --------------------------- | ---------------------- | ------------------------------------------------------- |
165
+ | `--stuic-pill-radius` | `--stuic-radius` | Border radius (overridden to `9999px` by `roundedFull`) |
166
+ | `--stuic-pill-font-family` | `--font-sans` | Font family |
167
+ | `--stuic-pill-font-weight` | `--font-weight-medium` | Font weight |
168
+ | `--stuic-pill-transition` | `--stuic-transition` | Transition duration |
169
+ | `--stuic-pill-border-width` | `--stuic-border-width` | Border width |
170
+ | `--stuic-pill-ring-width` | `2px` | Focus ring width |
171
+ | `--stuic-pill-ring-color` | `--stuic-color-ring` | Focus ring color |
172
+ | `--stuic-pill-gap` | `0.375rem` | Gap between dot/before/children/after/dismiss |
173
+ | `--stuic-pill-dot-size` | `0.5rem` | Status dot diameter |
173
174
 
174
175
  ### Size Tokens
175
176
 
@@ -96,8 +96,7 @@
96
96
  /* Focus styles (interactive variants) */
97
97
  a.stuic-pill:focus-visible,
98
98
  button.stuic-pill:focus-visible {
99
- outline: var(--stuic-pill-ring-width) solid
100
- var(--_ring, var(--stuic-pill-ring-color));
99
+ outline: var(--stuic-pill-ring-width) solid var(--_ring, var(--stuic-pill-ring-color));
101
100
  outline-offset: var(--stuic-pill-ring-offset);
102
101
  }
103
102
 
@@ -432,8 +431,7 @@
432
431
  }
433
432
 
434
433
  .stuic-pill-main:focus-visible {
435
- outline: var(--stuic-pill-ring-width) solid
436
- var(--_ring, var(--stuic-pill-ring-color));
434
+ outline: var(--stuic-pill-ring-width) solid var(--_ring, var(--stuic-pill-ring-color));
437
435
  outline-offset: 2px;
438
436
  border-radius: 2px;
439
437
  }
@@ -464,8 +462,7 @@
464
462
  }
465
463
 
466
464
  .stuic-pill-dismiss:focus-visible {
467
- outline: var(--stuic-pill-ring-width) solid
468
- var(--_ring, var(--stuic-pill-ring-color));
465
+ outline: var(--stuic-pill-ring-width) solid var(--_ring, var(--stuic-pill-ring-color));
469
466
  outline-offset: 1px;
470
467
  border-radius: 9999px;
471
468
  }
@@ -64,115 +64,115 @@ A data-driven pricing tiers component for displaying plan comparisons with featu
64
64
 
65
65
  ## Props
66
66
 
67
- | Prop | Type | Default | Description |
68
- |------|------|---------|-------------|
69
- | `tiers` | `PricingTier[]` | **required** | Array of pricing tier definitions |
70
- | `billingPeriod` | `BillingPeriod` | `"monthly"` | Currently active billing period (bindable) |
71
- | `showBillingToggle` | `boolean` | `true` | Show the monthly/annual toggle |
72
- | `monthlyLabel` | `string` | `"Monthly"` | Label for monthly option in toggle |
73
- | `annualLabel` | `string` | `"Annual"` | Label for annual option in toggle |
74
- | `currency` | `string` | `"$"` | Currency symbol applied to all tiers (overridable per-tier) |
75
- | `periodLabel` | `{ monthly?: string; annual?: string }` | `{ monthly: "/mo", annual: "/yr" }` | Default period labels |
76
- | `renderToggle` | `Snippet` | - | Override the billing toggle area |
77
- | `renderTier` | `Snippet` | - | Override each tier card entirely |
78
- | `renderCta` | `Snippet` | - | Override the CTA button area per tier |
79
- | `renderFeatures` | `Snippet` | - | Override the feature list area per tier |
80
- | `renderFeatureIcon` | `Snippet` | - | Override feature icons |
81
- | `children` | `Snippet` | - | Header area above tiers |
82
- | `unstyled` | `boolean` | `false` | Skip all default styling |
83
- | `class` | `string` | - | Additional CSS classes for root |
84
- | `classTiers` | `string` | - | Additional CSS classes for tiers grid |
85
- | `classTier` | `string` | - | Additional CSS classes for each tier card |
86
- | `classToggle` | `string` | - | Additional CSS classes for the billing toggle ButtonGroupRadio |
87
- | `styleToggle` | `string` | - | Additional inline styles for the billing toggle ButtonGroupRadio |
88
- | `el` | `HTMLElement` | - | Bindable element reference |
89
- | `style` | `string` | - | Inline style (useful for CSS variable overrides) |
67
+ | Prop | Type | Default | Description |
68
+ | ------------------- | --------------------------------------- | ----------------------------------- | ---------------------------------------------------------------- |
69
+ | `tiers` | `PricingTier[]` | **required** | Array of pricing tier definitions |
70
+ | `billingPeriod` | `BillingPeriod` | `"monthly"` | Currently active billing period (bindable) |
71
+ | `showBillingToggle` | `boolean` | `true` | Show the monthly/annual toggle |
72
+ | `monthlyLabel` | `string` | `"Monthly"` | Label for monthly option in toggle |
73
+ | `annualLabel` | `string` | `"Annual"` | Label for annual option in toggle |
74
+ | `currency` | `string` | `"$"` | Currency symbol applied to all tiers (overridable per-tier) |
75
+ | `periodLabel` | `{ monthly?: string; annual?: string }` | `{ monthly: "/mo", annual: "/yr" }` | Default period labels |
76
+ | `renderToggle` | `Snippet` | - | Override the billing toggle area |
77
+ | `renderTier` | `Snippet` | - | Override each tier card entirely |
78
+ | `renderCta` | `Snippet` | - | Override the CTA button area per tier |
79
+ | `renderFeatures` | `Snippet` | - | Override the feature list area per tier |
80
+ | `renderFeatureIcon` | `Snippet` | - | Override feature icons |
81
+ | `children` | `Snippet` | - | Header area above tiers |
82
+ | `unstyled` | `boolean` | `false` | Skip all default styling |
83
+ | `class` | `string` | - | Additional CSS classes for root |
84
+ | `classTiers` | `string` | - | Additional CSS classes for tiers grid |
85
+ | `classTier` | `string` | - | Additional CSS classes for each tier card |
86
+ | `classToggle` | `string` | - | Additional CSS classes for the billing toggle ButtonGroupRadio |
87
+ | `styleToggle` | `string` | - | Additional inline styles for the billing toggle ButtonGroupRadio |
88
+ | `el` | `HTMLElement` | - | Bindable element reference |
89
+ | `style` | `string` | - | Inline style (useful for CSS variable overrides) |
90
90
 
91
91
  ## PricingTier
92
92
 
93
- | Property | Type | Default | Description |
94
- |----------|------|---------|-------------|
95
- | `id` | `string` | **required** | Unique identifier |
96
- | `name` | `THC` | **required** | Tier display name |
97
- | `description` | `THC` | - | Short description or tagline |
98
- | `price` | `{ monthly?: number \| string; annual?: number \| string }` | **required** | Price per billing period. Strings like `"Free"` or `"Custom"` render as-is. |
99
- | `currency` | `string` | - | Override table-level currency for this tier |
100
- | `periodLabel` | `{ monthly?: string; annual?: string }` | - | Override period labels for this tier |
101
- | `annualDiscountBadge` | `THC` | - | Badge text shown when annual is selected (e.g. "Save 20%") |
102
- | `features` | `PricingFeature[]` | - | Feature list for this tier |
103
- | `inheritFrom` | `string` | - | Tier id to inherit from ("Everything in X, plus...") |
104
- | `inheritLabel` | `THC` | - | Custom inheritance text |
105
- | `ctaLabel` | `THC` | - | CTA button label |
106
- | `ctaOnClick` | `(tier, period) => void` | - | CTA click handler |
107
- | `ctaHref` | `string` | - | CTA as anchor link |
108
- | `ctaIntent` | `IntentColorKey` | `"primary"` (highlighted) | CTA color intent |
109
- | `ctaVariant` | `ButtonVariant` | `"solid"` (highlighted) / `"outline"` | CTA visual variant |
110
- | `highlighted` | `boolean` | `false` | Mark as recommended/popular |
111
- | `highlightedBadge` | `THC` | - | Badge text (e.g. "Most Popular") |
112
- | `disabled` | `boolean` | `false` | Disabled/sold-out state |
113
- | `disabledLabel` | `THC` | - | Text shown instead of CTA when disabled |
93
+ | Property | Type | Default | Description |
94
+ | --------------------- | ----------------------------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------- |
95
+ | `id` | `string` | **required** | Unique identifier |
96
+ | `name` | `THC` | **required** | Tier display name |
97
+ | `description` | `THC` | - | Short description or tagline |
98
+ | `price` | `{ monthly?: number \| string; annual?: number \| string }` | **required** | Price per billing period. Strings like `"Free"` or `"Custom"` render as-is. |
99
+ | `currency` | `string` | - | Override table-level currency for this tier |
100
+ | `periodLabel` | `{ monthly?: string; annual?: string }` | - | Override period labels for this tier |
101
+ | `annualDiscountBadge` | `THC` | - | Badge text shown when annual is selected (e.g. "Save 20%") |
102
+ | `features` | `PricingFeature[]` | - | Feature list for this tier |
103
+ | `inheritFrom` | `string` | - | Tier id to inherit from ("Everything in X, plus...") |
104
+ | `inheritLabel` | `THC` | - | Custom inheritance text |
105
+ | `ctaLabel` | `THC` | - | CTA button label |
106
+ | `ctaOnClick` | `(tier, period) => void` | - | CTA click handler |
107
+ | `ctaHref` | `string` | - | CTA as anchor link |
108
+ | `ctaIntent` | `IntentColorKey` | `"primary"` (highlighted) | CTA color intent |
109
+ | `ctaVariant` | `ButtonVariant` | `"solid"` (highlighted) / `"outline"` | CTA visual variant |
110
+ | `highlighted` | `boolean` | `false` | Mark as recommended/popular |
111
+ | `highlightedBadge` | `THC` | - | Badge text (e.g. "Most Popular") |
112
+ | `disabled` | `boolean` | `false` | Disabled/sold-out state |
113
+ | `disabledLabel` | `THC` | - | Text shown instead of CTA when disabled |
114
114
 
115
115
  ## PricingFeature
116
116
 
117
- | Property | Type | Default | Description |
118
- |----------|------|---------|-------------|
119
- | `label` | `THC` | **required** | Feature label |
120
- | `icon` | `boolean \| THC` | `true` | `true` = checkmark, `false` = dash, or custom THC |
117
+ | Property | Type | Default | Description |
118
+ | -------- | ---------------- | ------------ | ------------------------------------------------- |
119
+ | `label` | `THC` | **required** | Feature label |
120
+ | `icon` | `boolean \| THC` | `true` | `true` = checkmark, `false` = dash, or custom THC |
121
121
 
122
122
  ## CSS Variables
123
123
 
124
124
  ### Layout
125
125
 
126
- | Variable | Default | Description |
127
- |----------|---------|-------------|
128
- | `--stuic-pricing-table-gap` | `2rem` | Gap between toggle and tiers |
129
- | `--stuic-pricing-table-tiers-gap` | `1.5rem` | Gap between tier cards |
130
- | `--stuic-pricing-table-tier-min-width` | `280px` | Minimum tier card width (controls grid breakpoints) |
131
- | `--stuic-pricing-table-tier-padding` | `1.5rem` | Tier card padding |
132
- | `--stuic-pricing-table-tier-gap` | `1.5rem` | Gap between sections within a tier |
126
+ | Variable | Default | Description |
127
+ | -------------------------------------- | -------- | --------------------------------------------------- |
128
+ | `--stuic-pricing-table-gap` | `2rem` | Gap between toggle and tiers |
129
+ | `--stuic-pricing-table-tiers-gap` | `1.5rem` | Gap between tier cards |
130
+ | `--stuic-pricing-table-tier-min-width` | `280px` | Minimum tier card width (controls grid breakpoints) |
131
+ | `--stuic-pricing-table-tier-padding` | `1.5rem` | Tier card padding |
132
+ | `--stuic-pricing-table-tier-gap` | `1.5rem` | Gap between sections within a tier |
133
133
 
134
134
  ### Tier Card
135
135
 
136
- | Variable | Default | Description |
137
- |----------|---------|-------------|
138
- | `--stuic-pricing-table-tier-bg` | card/background | Tier background |
139
- | `--stuic-pricing-table-tier-border-color` | border | Tier border color |
140
- | `--stuic-pricing-table-tier-border-width` | border-width | Tier border width |
141
- | `--stuic-pricing-table-tier-radius` | radius-container | Tier border radius |
142
- | `--stuic-pricing-table-tier-shadow` | shadow | Tier box shadow |
136
+ | Variable | Default | Description |
137
+ | ----------------------------------------- | ---------------- | ------------------ |
138
+ | `--stuic-pricing-table-tier-bg` | card/background | Tier background |
139
+ | `--stuic-pricing-table-tier-border-color` | border | Tier border color |
140
+ | `--stuic-pricing-table-tier-border-width` | border-width | Tier border width |
141
+ | `--stuic-pricing-table-tier-radius` | radius-container | Tier border radius |
142
+ | `--stuic-pricing-table-tier-shadow` | shadow | Tier box shadow |
143
143
 
144
144
  ### Highlighted Tier
145
145
 
146
- | Variable | Default | Description |
147
- |----------|---------|-------------|
148
- | `--stuic-pricing-table-tier-border-color-highlighted` | primary | Highlighted border color |
149
- | `--stuic-pricing-table-tier-border-width-highlighted` | `2px` | Highlighted border width |
150
- | `--stuic-pricing-table-tier-shadow-highlighted` | shadow-hover | Highlighted shadow |
151
- | `--stuic-pricing-table-tier-scale-highlighted` | `1.02` | Desktop scale transform |
146
+ | Variable | Default | Description |
147
+ | ----------------------------------------------------- | ------------ | ------------------------ |
148
+ | `--stuic-pricing-table-tier-border-color-highlighted` | primary | Highlighted border color |
149
+ | `--stuic-pricing-table-tier-border-width-highlighted` | `2px` | Highlighted border width |
150
+ | `--stuic-pricing-table-tier-shadow-highlighted` | shadow-hover | Highlighted shadow |
151
+ | `--stuic-pricing-table-tier-scale-highlighted` | `1.02` | Desktop scale transform |
152
152
 
153
153
  ### Badge
154
154
 
155
- | Variable | Default | Description |
156
- |----------|---------|-------------|
157
- | `--stuic-pricing-table-badge-bg` | primary | Badge background |
158
- | `--stuic-pricing-table-badge-color` | primary-foreground | Badge text color |
159
- | `--stuic-pricing-table-badge-font-size` | text-xs | Badge font size |
160
- | `--stuic-pricing-table-badge-padding` | `0.25rem 0.75rem` | Badge padding |
155
+ | Variable | Default | Description |
156
+ | --------------------------------------- | ------------------ | ---------------- |
157
+ | `--stuic-pricing-table-badge-bg` | primary | Badge background |
158
+ | `--stuic-pricing-table-badge-color` | primary-foreground | Badge text color |
159
+ | `--stuic-pricing-table-badge-font-size` | text-xs | Badge font size |
160
+ | `--stuic-pricing-table-badge-padding` | `0.25rem 0.75rem` | Badge padding |
161
161
 
162
162
  ### Toggle
163
163
 
164
- | Variable | Default | Description |
165
- |----------|---------|-------------|
166
- | `--stuic-pricing-table-toggle-bg` | muted | Toggle track background |
167
- | `--stuic-pricing-table-toggle-bg-active` | background | Active option background |
168
- | `--stuic-pricing-table-toggle-color` | muted-foreground | Option text color |
169
- | `--stuic-pricing-table-toggle-color-active` | foreground | Active option text color |
164
+ | Variable | Default | Description |
165
+ | ------------------------------------------- | ---------------- | ------------------------ |
166
+ | `--stuic-pricing-table-toggle-bg` | muted | Toggle track background |
167
+ | `--stuic-pricing-table-toggle-bg-active` | background | Active option background |
168
+ | `--stuic-pricing-table-toggle-color` | muted-foreground | Option text color |
169
+ | `--stuic-pricing-table-toggle-color-active` | foreground | Active option text color |
170
170
 
171
171
  ### Typography
172
172
 
173
- | Variable | Default | Description |
174
- |----------|---------|-------------|
175
- | `--stuic-pricing-table-tier-name-font-size` | text-lg | Tier name size |
176
- | `--stuic-pricing-table-tier-description-font-size` | text-sm | Description size |
177
- | `--stuic-pricing-table-price-font-size` | text-4xl | Price size |
178
- | `--stuic-pricing-table-price-period-font-size` | text-sm | Period label size |
173
+ | Variable | Default | Description |
174
+ | -------------------------------------------------- | -------- | ----------------- |
175
+ | `--stuic-pricing-table-tier-name-font-size` | text-lg | Tier name size |
176
+ | `--stuic-pricing-table-tier-description-font-size` | text-sm | Description size |
177
+ | `--stuic-pricing-table-price-font-size` | text-4xl | Price size |
178
+ | `--stuic-pricing-table-price-period-font-size` | text-sm | Period label size |
@@ -40,7 +40,10 @@
40
40
  position: relative;
41
41
  display: flex;
42
42
  flex-direction: column;
43
- background: var(--stuic-pricing-table-tier-bg, var(--stuic-color-card, var(--stuic-color-background)));
43
+ background: var(
44
+ --stuic-pricing-table-tier-bg,
45
+ var(--stuic-color-card, var(--stuic-color-background))
46
+ );
44
47
  border: var(--stuic-pricing-table-tier-border-width, var(--stuic-border-width)) solid
45
48
  var(--stuic-pricing-table-tier-border-color, var(--stuic-color-border));
46
49
  border-radius: var(--stuic-pricing-table-tier-radius, var(--stuic-radius-container));
@@ -82,9 +85,7 @@
82
85
 
83
86
  @media (min-width: 768px) {
84
87
  .stuic-pricing-table-tier[data-highlighted] {
85
- transform: scale(
86
- var(--stuic-pricing-table-tier-scale-highlighted, 1.02)
87
- );
88
+ transform: scale(var(--stuic-pricing-table-tier-scale-highlighted, 1.02));
88
89
  }
89
90
  }
90
91
 
@@ -108,7 +109,10 @@
108
109
  background: var(--stuic-pricing-table-badge-bg, var(--stuic-color-primary));
109
110
  color: var(--stuic-pricing-table-badge-color, var(--stuic-color-primary-foreground));
110
111
  font-size: var(--stuic-pricing-table-badge-font-size, var(--text-xs));
111
- font-weight: var(--stuic-pricing-table-badge-font-weight, var(--font-weight-semibold, 600));
112
+ font-weight: var(
113
+ --stuic-pricing-table-badge-font-weight,
114
+ var(--font-weight-semibold, 600)
115
+ );
112
116
  padding: var(--stuic-pricing-table-badge-padding, 0.25rem 0.75rem);
113
117
  border-radius: 9999px;
114
118
  white-space: nowrap;
@@ -135,10 +139,7 @@
135
139
  }
136
140
 
137
141
  .stuic-pricing-table-tier-description {
138
- font-size: var(
139
- --stuic-pricing-table-tier-description-font-size,
140
- var(--text-sm)
141
- );
142
+ font-size: var(--stuic-pricing-table-tier-description-font-size, var(--text-sm));
142
143
  color: var(
143
144
  --stuic-pricing-table-tier-description-color,
144
145
  var(--stuic-color-muted-foreground)
@@ -167,10 +168,7 @@
167
168
  }
168
169
 
169
170
  .stuic-pricing-table-price-period {
170
- font-size: var(
171
- --stuic-pricing-table-price-period-font-size,
172
- var(--text-sm)
173
- );
171
+ font-size: var(--stuic-pricing-table-price-period-font-size, var(--text-sm));
174
172
  color: var(
175
173
  --stuic-pricing-table-price-period-color,
176
174
  var(--stuic-color-muted-foreground)
@@ -182,10 +180,7 @@
182
180
  ============================================================================ */
183
181
 
184
182
  .stuic-pricing-table-discount-badge {
185
- font-size: var(
186
- --stuic-pricing-table-discount-badge-font-size,
187
- var(--text-xs)
188
- );
183
+ font-size: var(--stuic-pricing-table-discount-badge-font-size, var(--text-xs));
189
184
  font-weight: var(--font-weight-medium, 500);
190
185
  background: var(
191
186
  --stuic-pricing-table-discount-badge-bg,
@@ -220,14 +215,8 @@
220
215
  }
221
216
 
222
217
  .stuic-pricing-table-inherit {
223
- font-size: var(
224
- --stuic-pricing-table-inherit-font-size,
225
- var(--text-sm)
226
- );
227
- color: var(
228
- --stuic-pricing-table-inherit-color,
229
- var(--stuic-color-muted-foreground)
230
- );
218
+ font-size: var(--stuic-pricing-table-inherit-font-size, var(--text-sm));
219
+ color: var(--stuic-pricing-table-inherit-color, var(--stuic-color-muted-foreground));
231
220
  font-style: italic;
232
221
  padding-bottom: 0.25rem;
233
222
  }
@@ -245,14 +234,8 @@
245
234
  display: flex;
246
235
  align-items: baseline;
247
236
  gap: 0.5rem;
248
- font-size: var(
249
- --stuic-pricing-table-feature-font-size,
250
- var(--text-sm)
251
- );
252
- color: var(
253
- --stuic-pricing-table-feature-color,
254
- var(--stuic-color-foreground)
255
- );
237
+ font-size: var(--stuic-pricing-table-feature-font-size, var(--text-sm));
238
+ color: var(--stuic-pricing-table-feature-color, var(--stuic-color-foreground));
256
239
  }
257
240
 
258
241
  .stuic-pricing-table-feature-icon {
@@ -265,14 +248,16 @@
265
248
  );
266
249
  }
267
250
 
268
- .stuic-pricing-table-feature-item:not([data-included]) .stuic-pricing-table-feature-icon {
251
+ .stuic-pricing-table-feature-item:not([data-included])
252
+ .stuic-pricing-table-feature-icon {
269
253
  color: var(
270
254
  --stuic-pricing-table-feature-icon-color-excluded,
271
255
  var(--stuic-color-muted-foreground)
272
256
  );
273
257
  }
274
258
 
275
- .stuic-pricing-table-feature-item:not([data-included]) .stuic-pricing-table-feature-label {
259
+ .stuic-pricing-table-feature-item:not([data-included])
260
+ .stuic-pricing-table-feature-label {
276
261
  color: var(
277
262
  --stuic-pricing-table-feature-color-excluded,
278
263
  var(--stuic-color-muted-foreground)