@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.
- package/API.md +297 -304
- package/dist/actions/dim-behind/index.css +4 -1
- package/dist/actions/focus-trap.js +3 -1
- package/dist/components/Accordion/README.md +17 -17
- package/dist/components/Accordion/index.css +4 -2
- package/dist/components/AssetsPreview/README.md +7 -7
- package/dist/components/AssetsPreview/_internal/assets-preview-types.d.ts +1 -2
- package/dist/components/AssetsPreview/_internal/assets-preview-utils.d.ts +1 -1
- package/dist/components/AssetsPreview/_internal/assets-preview-utils.js +9 -3
- package/dist/components/Avatar/Avatar.svelte +1 -3
- package/dist/components/Avatar/README.md +33 -27
- package/dist/components/Book/Book.svelte +6 -1
- package/dist/components/Book/README.md +22 -20
- package/dist/components/Book/index.css +4 -2
- package/dist/components/Button/README.md +17 -17
- package/dist/components/Card/Card.svelte +25 -8
- package/dist/components/Card/README.md +52 -56
- package/dist/components/Card/index.css +2 -1
- package/dist/components/Carousel/Carousel.svelte +1 -3
- package/dist/components/Carousel/README.md +28 -28
- package/dist/components/Cart/Cart.svelte +2 -1
- package/dist/components/Cart/README.md +25 -25
- package/dist/components/Checkout/CheckoutGuestOrLoginForm.svelte +8 -3
- package/dist/components/Checkout/CheckoutShippingStep.svelte +1 -2
- package/dist/components/Checkout/README.md +143 -130
- package/dist/components/CronInput/CronInput.svelte +64 -60
- package/dist/components/CronInput/README.md +46 -46
- package/dist/components/DataTable/DataTable.svelte +5 -1
- package/dist/components/DataTable/README.md +78 -63
- package/dist/components/DropdownMenu/DropdownMenu.svelte +6 -2
- package/dist/components/DropdownMenu/README.md +33 -27
- package/dist/components/EmailVerifyForm/EmailVerifyForm.svelte +2 -9
- package/dist/components/EmailVerifyForm/README.md +30 -30
- package/dist/components/Header/Header.svelte +161 -165
- package/dist/components/Header/README.md +7 -7
- package/dist/components/IconSwap/README.md +20 -15
- package/dist/components/IconSwap/index.css +2 -1
- package/dist/components/ImageCycler/ImageCycler.svelte +19 -5
- package/dist/components/ImageCycler/ImageCycler.svelte.d.ts +14 -10
- package/dist/components/ImageCycler/README.md +15 -15
- package/dist/components/ImageCycler/index.css +26 -20
- package/dist/components/Input/FieldFile.svelte +1 -3
- package/dist/components/Input/FieldInput.svelte +1 -3
- package/dist/components/Input/FieldKeyValues.svelte +2 -6
- package/dist/components/Input/FieldObject.svelte +2 -1
- package/dist/components/Input/README.md +11 -11
- package/dist/components/KbdShortcut/index.css +2 -1
- package/dist/components/LoginForm/LoginForm.svelte +1 -7
- package/dist/components/LoginForm/README.md +46 -46
- package/dist/components/ModalDialog/index.css +2 -1
- package/dist/components/Notifications/index.css +24 -6
- package/dist/components/OtpInput/OtpInput.svelte +0 -0
- package/dist/components/OtpInput/README.md +15 -19
- package/dist/components/OtpInput/index.css +1 -4
- package/dist/components/OtpInput/index.d.ts +1 -1
- package/dist/components/OtpInput/index.js +1 -1
- package/dist/components/Pill/README.md +41 -40
- package/dist/components/Pill/index.css +3 -6
- package/dist/components/PricingTable/README.md +86 -86
- package/dist/components/PricingTable/index.css +20 -35
- package/dist/components/RegisterForm/README.md +60 -60
- package/dist/components/RegisterForm/RegisterForm.svelte +1 -7
- package/dist/components/Separator/README.md +7 -7
- package/dist/components/TabbedMenu/index.css +6 -3
- package/dist/components/Tree/README.md +67 -67
- package/dist/components/UserAvatarMenu/UserAvatarMenu.svelte +1 -5
- package/dist/components/WithSidePanel/index.css +4 -4
- package/dist/index.css +12 -8
- package/dist/utils/design-tokens.d.ts +1 -1
- package/dist/utils/design-tokens.js +1 -1
- package/docs/architecture.md +7 -7
- package/docs/component-testing/00-overview-and-roadmap.md +19 -19
- package/docs/component-testing/01-framework-setup.md +6 -6
- package/docs/component-testing/02-test-conventions.md +6 -5
- package/docs/component-testing/03-component-coverage-roadmap.md +27 -27
- package/docs/component-testing/04-hard-cases-and-e2e.md +8 -8
- package/docs/component-testing/05-ci.md +3 -3
- package/docs/component-testing/PROGRESS.md +30 -26
- package/docs/component-testing/README.md +8 -8
- package/docs/conventions.md +25 -25
- package/docs/domains/components.md +386 -385
- package/docs/domains/theming.md +24 -24
- package/docs/domains/utils.md +22 -25
- package/docs/testing.md +2 -2
- package/docs/upgrading.md +32 -28
- 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
|
|
32
|
-
|
|
|
33
|
-
| Default
|
|
34
|
-
| `href` set
|
|
35
|
-
| `onclick` set (no `href`)
|
|
36
|
-
| `dismissible` set
|
|
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
|
|
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
|
|
163
|
-
|
|
|
164
|
-
| `--stuic-pill-radius`
|
|
165
|
-
| `--stuic-pill-font-family`
|
|
166
|
-
| `--stuic-pill-font-weight`
|
|
167
|
-
| `--stuic-pill-transition`
|
|
168
|
-
| `--stuic-pill-border-width`
|
|
169
|
-
| `--stuic-pill-ring-width`
|
|
170
|
-
| `--stuic-pill-ring-color`
|
|
171
|
-
| `--stuic-pill-gap`
|
|
172
|
-
| `--stuic-pill-dot-size`
|
|
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
|
|
68
|
-
|
|
69
|
-
| `tiers`
|
|
70
|
-
| `billingPeriod`
|
|
71
|
-
| `showBillingToggle` | `boolean`
|
|
72
|
-
| `monthlyLabel`
|
|
73
|
-
| `annualLabel`
|
|
74
|
-
| `currency`
|
|
75
|
-
| `periodLabel`
|
|
76
|
-
| `renderToggle`
|
|
77
|
-
| `renderTier`
|
|
78
|
-
| `renderCta`
|
|
79
|
-
| `renderFeatures`
|
|
80
|
-
| `renderFeatureIcon` | `Snippet`
|
|
81
|
-
| `children`
|
|
82
|
-
| `unstyled`
|
|
83
|
-
| `class`
|
|
84
|
-
| `classTiers`
|
|
85
|
-
| `classTier`
|
|
86
|
-
| `classToggle`
|
|
87
|
-
| `styleToggle`
|
|
88
|
-
| `el`
|
|
89
|
-
| `style`
|
|
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
|
|
94
|
-
|
|
95
|
-
| `id`
|
|
96
|
-
| `name`
|
|
97
|
-
| `description`
|
|
98
|
-
| `price`
|
|
99
|
-
| `currency`
|
|
100
|
-
| `periodLabel`
|
|
101
|
-
| `annualDiscountBadge` | `THC`
|
|
102
|
-
| `features`
|
|
103
|
-
| `inheritFrom`
|
|
104
|
-
| `inheritLabel`
|
|
105
|
-
| `ctaLabel`
|
|
106
|
-
| `ctaOnClick`
|
|
107
|
-
| `ctaHref`
|
|
108
|
-
| `ctaIntent`
|
|
109
|
-
| `ctaVariant`
|
|
110
|
-
| `highlighted`
|
|
111
|
-
| `highlightedBadge`
|
|
112
|
-
| `disabled`
|
|
113
|
-
| `disabledLabel`
|
|
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
|
|
118
|
-
|
|
119
|
-
| `label`
|
|
120
|
-
| `icon`
|
|
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
|
|
127
|
-
|
|
128
|
-
| `--stuic-pricing-table-gap`
|
|
129
|
-
| `--stuic-pricing-table-tiers-gap`
|
|
130
|
-
| `--stuic-pricing-table-tier-min-width` | `280px`
|
|
131
|
-
| `--stuic-pricing-table-tier-padding`
|
|
132
|
-
| `--stuic-pricing-table-tier-gap`
|
|
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
|
|
137
|
-
|
|
138
|
-
| `--stuic-pricing-table-tier-bg`
|
|
139
|
-
| `--stuic-pricing-table-tier-border-color` | border
|
|
140
|
-
| `--stuic-pricing-table-tier-border-width` | border-width
|
|
141
|
-
| `--stuic-pricing-table-tier-radius`
|
|
142
|
-
| `--stuic-pricing-table-tier-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
|
|
147
|
-
|
|
148
|
-
| `--stuic-pricing-table-tier-border-color-highlighted` | primary
|
|
149
|
-
| `--stuic-pricing-table-tier-border-width-highlighted` | `2px`
|
|
150
|
-
| `--stuic-pricing-table-tier-shadow-highlighted`
|
|
151
|
-
| `--stuic-pricing-table-tier-scale-highlighted`
|
|
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
|
|
156
|
-
|
|
157
|
-
| `--stuic-pricing-table-badge-bg`
|
|
158
|
-
| `--stuic-pricing-table-badge-color`
|
|
159
|
-
| `--stuic-pricing-table-badge-font-size` | text-xs
|
|
160
|
-
| `--stuic-pricing-table-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
|
|
165
|
-
|
|
166
|
-
| `--stuic-pricing-table-toggle-bg`
|
|
167
|
-
| `--stuic-pricing-table-toggle-bg-active`
|
|
168
|
-
| `--stuic-pricing-table-toggle-color`
|
|
169
|
-
| `--stuic-pricing-table-toggle-color-active` | foreground
|
|
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
|
|
174
|
-
|
|
175
|
-
| `--stuic-pricing-table-tier-name-font-size`
|
|
176
|
-
| `--stuic-pricing-table-tier-description-font-size` | text-sm
|
|
177
|
-
| `--stuic-pricing-table-price-font-size`
|
|
178
|
-
| `--stuic-pricing-table-price-period-font-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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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])
|
|
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])
|
|
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)
|