@stainless-api/ui-primitives 0.1.0-beta.8 → 1.0.0-beta.54

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 (51) hide show
  1. package/dist/DropdownMenu-DJ2-gPoP.d.ts +54 -0
  2. package/dist/components/Accordion.d.ts +26 -0
  3. package/dist/components/Accordion.js +29 -0
  4. package/dist/components/Badge.d.ts +40 -0
  5. package/dist/components/Badge.js +63 -0
  6. package/dist/components/Button.d.ts +45 -0
  7. package/dist/components/Button.js +50 -0
  8. package/dist/components/Callout.d.ts +18 -0
  9. package/dist/components/Callout.js +26 -0
  10. package/dist/components/Steps.d.ts +17 -0
  11. package/dist/components/Steps.js +22 -0
  12. package/dist/components/dropdown/Dropdown.d.ts +63 -0
  13. package/dist/components/dropdown/Dropdown.js +52 -0
  14. package/dist/components/dropdown/DropdownButton.d.ts +61 -0
  15. package/dist/components/dropdown/DropdownButton.js +54 -0
  16. package/dist/components/dropdown/DropdownMenu.d.ts +2 -0
  17. package/dist/components/dropdown/DropdownMenu.js +76 -0
  18. package/dist/components/icons/Function.d.ts +9 -0
  19. package/dist/components/icons/Function.js +6 -0
  20. package/dist/components/icons/index.d.ts +2 -0
  21. package/dist/components/icons/index.js +2 -0
  22. package/dist/index.d.ts +8 -0
  23. package/dist/index.js +8 -0
  24. package/dist/scripts/index.d.ts +23 -0
  25. package/dist/scripts/index.js +162 -0
  26. package/dist/styles/starlight-compat.css +131 -0
  27. package/dist/styles/theme.css +183 -0
  28. package/dist/styles.css +1184 -0
  29. package/package.json +42 -24
  30. package/.env +0 -1
  31. package/CHANGELOG.md +0 -55
  32. package/eslint.config.js +0 -2
  33. package/src/components/Button.tsx +0 -94
  34. package/src/components/Callout.tsx +0 -31
  35. package/src/components/DetailsGroup.tsx +0 -17
  36. package/src/components/DropdownButton.tsx +0 -109
  37. package/src/components/button.css +0 -157
  38. package/src/components/callout.css +0 -72
  39. package/src/components/details.css +0 -124
  40. package/src/components/dropdown-button.css +0 -177
  41. package/src/index.ts +0 -4
  42. package/src/scripts/dropdown-button.ts +0 -55
  43. package/src/scripts/index.ts +0 -1
  44. package/src/styles/layout.css +0 -11
  45. package/src/styles/scales.css +0 -129
  46. package/src/styles/starlight-compat.css +0 -152
  47. package/src/styles/swatches.css +0 -87
  48. package/src/styles/theme.css +0 -49
  49. package/src/styles/typography.css +0 -195
  50. package/src/styles.css +0 -11
  51. package/tsconfig.json +0 -15
package/package.json CHANGED
@@ -1,37 +1,55 @@
1
1
  {
2
2
  "name": "@stainless-api/ui-primitives",
3
- "version": "0.1.0-beta.8",
3
+ "version": "1.0.0-beta.54",
4
+ "license": "MIT",
4
5
  "publishConfig": {
5
6
  "access": "public"
6
7
  },
7
- "exports": {
8
- ".": {
9
- "types": "./src/index.ts",
10
- "import": "./src/index.ts",
11
- "require": "./src/index.ts"
12
- },
13
- "./scripts": {
14
- "types": "./src/scripts/index.ts",
15
- "import": "./src/scripts/index.ts",
16
- "require": "./src/scripts/index.ts"
17
- },
18
- "./styles.css": "./src/styles.css"
19
- },
20
- "types": "./src/index.ts",
8
+ "type": "module",
9
+ "files": [
10
+ "dist"
11
+ ],
21
12
  "peerDependencies": {
22
- "react": ">=18.0.0",
23
- "react-dom": ">=18.0.0"
13
+ "react": ">=19.0.0",
14
+ "react-dom": ">=19.0.0"
24
15
  },
25
16
  "dependencies": {
26
17
  "clsx": "^2.1.1",
27
- "lucide-react": "^0.544.0"
18
+ "lucide-react": "^1.14.0"
28
19
  },
29
20
  "devDependencies": {
30
- "@types/react": "^19.1.13",
31
- "@types/react-dom": "^19.1.9",
32
- "react": "^19.1.1",
33
- "react-dom": "^19.1.1",
34
- "typescript": "5.9.2",
35
- "@stainless/eslint-config": "0.0.0"
21
+ "@tsdown/css": "^0.22.0",
22
+ "@types/react": "19.2.14",
23
+ "react": "^19.2.6",
24
+ "sass": "^1.99.0",
25
+ "tsdown": "^0.22.0",
26
+ "typescript": "6.0.3",
27
+ "@stainless/eslint-config": "0.1.0-beta.2"
28
+ },
29
+ "exports": {
30
+ ".": {
31
+ "default": "./dist/index.js"
32
+ },
33
+ "./scripts": {
34
+ "default": "./dist/scripts/index.js"
35
+ },
36
+ "./styles.css": {
37
+ "default": "./dist/styles.css"
38
+ },
39
+ "./starlight-compat.css": {
40
+ "default": "./dist/styles/starlight-compat.css"
41
+ },
42
+ "./*": {
43
+ "default": "./dist/*"
44
+ },
45
+ "./icons": {
46
+ "default": "./dist/components/icons/index.js"
47
+ }
48
+ },
49
+ "scripts": {
50
+ "lint": "eslint --flag unstable_native_nodejs_ts_config .",
51
+ "check:types": "tsc --noEmit",
52
+ "build": "tsdown",
53
+ "clean": "rm -rf dist"
36
54
  }
37
55
  }
package/.env DELETED
@@ -1 +0,0 @@
1
- STAINLESS_API_KEY=stl_sk_001uwmod48VpDm2a1bvB1tUTdJ1ooZ5I
package/CHANGELOG.md DELETED
@@ -1,55 +0,0 @@
1
- # @stainless-api/ui-primitives
2
-
3
- ## 0.1.0-beta.8
4
-
5
- ### Patch Changes
6
-
7
- - d15a520: fix initialization of dropdown buttons
8
-
9
- ## 0.1.0-beta.7
10
-
11
- ### Patch Changes
12
-
13
- - 34e7c61: verify dependents update
14
-
15
- ## 0.1.0-beta.6
16
-
17
- ### Minor Changes
18
-
19
- - f664b4d: Creating design system css variables, markdown styles, and typography improvements
20
-
21
- ### Patch Changes
22
-
23
- - 34cbd12: verify publishing
24
-
25
- ## 0.1.0-beta.5
26
-
27
- ### Patch Changes
28
-
29
- - e7a2a96: verifying dependent packages update
30
-
31
- ## 0.1.0-beta.4
32
-
33
- ### Patch Changes
34
-
35
- - 2853ae8: fixing dependency structure
36
-
37
- ## 0.1.0-beta.3
38
-
39
- ### Patch Changes
40
-
41
- - 870af8d: verify dependent packages update
42
-
43
- ## 0.1.0-beta.2
44
-
45
- ## 0.1.0-beta.1
46
-
47
- ### Patch Changes
48
-
49
- - 5537225: verify publishing of dependent package works
50
-
51
- ## 0.1.0-beta.0
52
-
53
- ### Minor Changes
54
-
55
- - ed77b46: prep packages for beta release
package/eslint.config.js DELETED
@@ -1,2 +0,0 @@
1
- import { config } from '@stainless/eslint-config/astro';
2
- export default config;
@@ -1,94 +0,0 @@
1
- import React from 'react';
2
- import clsx from 'clsx';
3
- import { LucideIcon } from 'lucide-react';
4
-
5
- export type ButtonVariant =
6
- | 'outline'
7
- | 'ghost'
8
- | 'accent'
9
- | 'accent-muted'
10
- | 'muted'
11
- | 'success'
12
- | 'destructive'
13
- | 'default';
14
-
15
- type BaseProps = {
16
- variant?: ButtonVariant;
17
- className?: string;
18
- children?: React.ReactNode;
19
- size?: 'sm' | 'lg' | 'default';
20
- };
21
-
22
- type AnchorBranch = BaseProps &
23
- Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'className' | 'children'> & {
24
- href: string;
25
- };
26
-
27
- type ButtonBranch = BaseProps &
28
- Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'children'> & {
29
- href?: never;
30
- };
31
-
32
- export type ButtonProps = AnchorBranch | ButtonBranch;
33
-
34
- // Because this code needs to run inside .astro files, we can’t use React.cloneElement
35
- // (or radix-ui/react-slot). In .astro, children are passed as static HTML elements
36
- // rather than React elements, so they can’t be cloned or modified to add class names.
37
-
38
- export function Button(props: ButtonProps) {
39
- const { variant, children } = props;
40
-
41
- const classes = clsx(
42
- 'stl-ui-button',
43
- {
44
- 'stl-ui-button--outline': variant === 'outline',
45
- 'stl-ui-button--ghost': variant === 'ghost',
46
- 'stl-ui-button--accent': variant === 'accent',
47
- 'stl-ui-button--accent-muted': variant === 'accent-muted',
48
- 'stl-ui-button--muted': variant === 'muted',
49
- 'stl-ui-button--success': variant === 'success',
50
- 'stl-ui-button--destructive': variant === 'destructive',
51
- },
52
- {
53
- 'stl-ui-button--size-sm': props.size === 'sm',
54
- 'stl-ui-button--size-lg': props.size === 'lg',
55
- },
56
- 'not-content',
57
- props.className,
58
- );
59
-
60
- if ('href' in props) {
61
- const { href, ...rest } = props as AnchorBranch;
62
- return (
63
- <a href={href} {...rest} className={classes}>
64
- {children}
65
- </a>
66
- );
67
- }
68
-
69
- const { type, ...rest } = props as ButtonBranch;
70
- return (
71
- <button type={type ?? 'button'} {...rest} className={classes}>
72
- {children}
73
- </button>
74
- );
75
- }
76
-
77
- type LabelProps = React.HTMLAttributes<HTMLSpanElement>;
78
-
79
- Button.Label = function ButtonLabel({ className, ...rest }: LabelProps) {
80
- return <span className={clsx('stl-ui-button-label leading-none', className)} {...rest} />;
81
- };
82
-
83
- type IconProps = {
84
- icon: LucideIcon;
85
- size?: number;
86
- } & React.HTMLAttributes<HTMLSpanElement>;
87
-
88
- Button.Icon = function ButtonIcon({ className, icon: Icon, size = 18 }: IconProps) {
89
- return (
90
- <span className={clsx('stl-ui-button__icon', className)}>
91
- <Icon size={size} />
92
- </span>
93
- );
94
- };
@@ -1,31 +0,0 @@
1
- import React from 'react';
2
- import clsx from 'clsx';
3
- import { Info, CircleAlert, Lightbulb, Check, TriangleAlert, OctagonAlert } from 'lucide-react';
4
-
5
- export type CalloutVariant = 'info' | 'note' | 'tip' | 'success' | 'warning' | 'danger';
6
-
7
- export type CalloutProps = {
8
- variant?: CalloutVariant;
9
- className?: string;
10
- children?: React.ReactNode;
11
- } & Omit<React.ComponentProps<'aside'>, 'className' | 'children'>;
12
-
13
- export function Callout({ variant = 'info', className, children, ...props }: CalloutProps) {
14
- const classes = clsx('stl-ui-callout', `stl-ui-callout--${variant}`, className);
15
-
16
- const Icon = {
17
- info: Info,
18
- note: CircleAlert,
19
- tip: Lightbulb,
20
- success: Check,
21
- warning: TriangleAlert,
22
- danger: OctagonAlert,
23
- }[variant];
24
-
25
- return (
26
- <aside className={classes} {...props}>
27
- <Icon className="stl-ui-callout__icon" />
28
- <div className="stl-ui-callout__content">{children}</div>
29
- </aside>
30
- );
31
- }
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import clsx from 'clsx';
3
-
4
- export type DetailsGroupProps = React.ComponentProps<'div'>;
5
-
6
- export function DetailsGroup({ className, children, ...props }: DetailsGroupProps) {
7
- const classes = clsx('stl-ui-details-group', className);
8
-
9
- // TODO: boolean `exclusive` prop assigns a unique `name` to each of the child <details> elements
10
- // For now this can be handled by the user
11
-
12
- return (
13
- <div className={classes} {...props}>
14
- {children}
15
- </div>
16
- );
17
- }
@@ -1,109 +0,0 @@
1
- import clsx from 'clsx';
2
- import { ChevronsUpDown, ExternalLink } from 'lucide-react';
3
-
4
- function PrimaryActionText({ children }: { children?: React.ReactNode }) {
5
- return <span data-part="primary-action-text">{children}</span>;
6
- }
7
-
8
- function PrimaryAction({ children }: { children?: React.ReactNode }) {
9
- return (
10
- <button
11
- type="button"
12
- data-part="primary-action"
13
- className="stl-ui-dropdown-button__button stl-ui-dropdown-button--action"
14
- >
15
- {children}
16
- </button>
17
- );
18
- }
19
-
20
- function Trigger() {
21
- return (
22
- <button
23
- className="stl-ui-dropdown-button__button stl-ui-dropdown-button__trigger"
24
- aria-haspopup="listbox"
25
- aria-expanded="false"
26
- data-part="trigger"
27
- >
28
- <ChevronsUpDown size={16} />
29
- </button>
30
- );
31
- }
32
-
33
- function Menu({ children }: { children?: React.ReactNode }) {
34
- return (
35
- <div className="stl-ui-dropdown-button__menu" data-state="closed" data-part="menu">
36
- {children}
37
- </div>
38
- );
39
- }
40
-
41
- function MenuItemIcon({ children }: { children?: React.ReactNode }) {
42
- return (
43
- <div className="stl-ui-dropdown-button__menu-item-icon" data-part="item-icon">
44
- {children}
45
- </div>
46
- );
47
- }
48
-
49
- function MenuItemText({ children, subtle }: { children?: React.ReactNode; subtle?: boolean }) {
50
- return (
51
- <span
52
- className={clsx(`stl-ui-dropdown-button__menu-item-text`, {
53
- 'stl-ui-dropdown-button__menu-item-text--subtle': subtle,
54
- })}
55
- data-part="item-text"
56
- >
57
- {children}
58
- </span>
59
- );
60
- }
61
-
62
- function MenuItemTextSubtle({ children }: { children?: React.ReactNode }) {
63
- return (
64
- <span className="stl-ui-dropdown-button__menu-item-text-subtle" data-part="item-text-subtle">
65
- {children}
66
- </span>
67
- );
68
- }
69
-
70
- function MenuItem({
71
- children,
72
- value,
73
- isExternalLink,
74
- }: {
75
- children?: React.ReactNode;
76
- value: string;
77
- isExternalLink?: boolean;
78
- }) {
79
- return (
80
- <div className="stl-ui-dropdown-button__menu-item" data-part="item" data-value={value}>
81
- <div className="stl-ui-dropdown-button__menu-item-content">{children}</div>
82
- {isExternalLink && (
83
- <div
84
- className="stl-ui-dropdown-button__menu-item-external-link-icon"
85
- data-part="item-external-link-icon"
86
- >
87
- <ExternalLink size={16} />
88
- </div>
89
- )}
90
- </div>
91
- );
92
- }
93
-
94
- export function DropdownButton({ id, children }: { id: string; children?: React.ReactNode }) {
95
- return (
96
- <div className="stl-ui-dropdown-button stl-ui-not-prose not-content" id={id}>
97
- {children}
98
- </div>
99
- );
100
- }
101
-
102
- DropdownButton.Menu = Menu;
103
- DropdownButton.MenuItem = MenuItem;
104
- DropdownButton.MenuItemIcon = MenuItemIcon;
105
- DropdownButton.MenuItemText = MenuItemText;
106
- DropdownButton.MenuItemTextSubtle = MenuItemTextSubtle;
107
- DropdownButton.PrimaryAction = PrimaryAction;
108
- DropdownButton.PrimaryActionText = PrimaryActionText;
109
- DropdownButton.Trigger = Trigger;
@@ -1,157 +0,0 @@
1
- @layer stl-ui {
2
- .stl-ui-button {
3
- --stl-ui-button-color: var(--stl-ui-inverse-foreground);
4
- --stl-ui-button-background-color: var(--stl-ui-inverse-background);
5
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-inverse-background) l c h / 0.9);
6
-
7
- --stl-ui-button-border-color: transparent;
8
- --stl-ui-button-border-color-hover: transparent;
9
-
10
- --stl-ui-button-height: 32px;
11
- --stl-ui-button-padding: 8px 10px;
12
- --stl-ui-button-border-radius: var(--stl-ui-layout-border-radius-sml);
13
- --stl-ui-button-line-height: 150%;
14
- --stl-ui-button-font-weight: 500;
15
- --stl-ui-button-font-size: var(--stl-ui-type-scale-text-sm);
16
- --stl-ui-button-font-family: var(--stl-ui-typography-font);
17
-
18
- cursor: pointer;
19
- display: inline-flex;
20
- align-items: center;
21
- justify-content: center;
22
- gap: 2px;
23
- white-space: nowrap;
24
- flex-shrink: 0;
25
-
26
- height: var(--stl-ui-button-height);
27
- padding: var(--stl-ui-button-padding);
28
- border-radius: var(--stl-ui-button-border-radius);
29
- line-height: var(--stl-ui-button-line-height);
30
- font-weight: var(--stl-ui-button-font-weight);
31
- font-size: var(--stl-ui-button-font-size);
32
-
33
- border: 1px solid var(--stl-ui-button-border-color);
34
- font-family: var(--stl-ui-button-font-family);
35
-
36
- color: var(--stl-ui-button-color);
37
- background-color: var(--stl-ui-button-background-color);
38
-
39
- &:hover {
40
- background-color: var(--stl-ui-button-background-color-hover);
41
- border-color: var(--stl-ui-button-border-color-hover);
42
- }
43
- }
44
-
45
- /* --- COLOR VARIANTS --- */
46
- .stl-ui-button--accent {
47
- --stl-ui-button-color: var(--stl-ui-accent-foreground);
48
- --stl-ui-button-background-color: var(--stl-ui-accent-background);
49
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-accent-background) l c h / 0.9);
50
- }
51
-
52
- .stl-ui-button--accent-muted {
53
- --stl-ui-button-color: var(--stl-ui-accent-muted-foreground);
54
- --stl-ui-button-background-color: var(--stl-ui-accent-muted-background);
55
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-accent-background) l c h / 0.1);
56
- }
57
-
58
- .stl-ui-button--muted {
59
- --stl-ui-button-color: var(--stl-ui-foreground);
60
- --stl-ui-button-background-color: var(--stl-ui-muted-background);
61
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-foreground) l c h / 0.1);
62
- }
63
-
64
- .stl-ui-button--outline {
65
- --stl-ui-button-color: var(--stl-ui-foreground);
66
- --stl-ui-button-background-color: var(--stl-ui-card-background);
67
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-foreground) l c h / 0.05);
68
- --stl-ui-button-border-color: var(--stl-ui-border);
69
- --stl-ui-button-border-color-hover: var(--stl-ui-border-emphasis);
70
- }
71
-
72
- .stl-ui-button--ghost {
73
- --stl-ui-button-color: var(--stl-ui-foreground);
74
- --stl-ui-button-background-color: transparent;
75
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-foreground) l c h / 0.05);
76
- }
77
-
78
- .stl-ui-button--success {
79
- --stl-ui-button-color: var(--stl-ui-swatch-gray-white);
80
- --stl-ui-button-background-color: var(--stl-ui-swatch-green-base);
81
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-swatch-green-base) l c h / 0.9);
82
- }
83
-
84
- .stl-ui-button--destructive {
85
- --stl-ui-button-color: var(--stl-ui-swatch-gray-white);
86
- --stl-ui-button-background-color: var(--stl-ui-swatch-red-base);
87
- --stl-ui-button-background-color-hover: oklch(from var(--stl-ui-swatch-red-base) l c h / 0.9);
88
- }
89
-
90
- /* --- SIZE VARIANTS --- */
91
- .stl-ui-button--size-sm {
92
- --stl-ui-button-height: 24px;
93
- --stl-ui-button-padding: 0 6px;
94
- --stl-ui-button-border-radius: var(--stl-ui-layout-border-radius-xs);
95
- --stl-ui-button-line-height: 100%;
96
- --stl-ui-button-font-weight: 500;
97
- --stl-ui-button-font-size: var(--stl-ui-typography-text-body-xs);
98
- }
99
-
100
- .stl-ui-button--size-lg {
101
- --stl-ui-button-height: 40px;
102
- --stl-ui-button-padding: 8px 14px;
103
- --stl-ui-button-border-radius: var(--stl-ui-layout-border-radius);
104
- --stl-ui-button-line-height: 150%;
105
- --stl-ui-button-font-weight: 500;
106
- --stl-ui-button-font-size: var(--stl-ui-typography-text-body);
107
- }
108
-
109
- /* --- ICONS --- */
110
- .stl-ui-button__icon {
111
- flex-shrink: 0;
112
- display: flex;
113
- align-items: center;
114
- justify-content: center;
115
-
116
- svg {
117
- margin-top: 0;
118
- }
119
- }
120
-
121
- /* Left Icon */
122
- .stl-ui-button:has(.stl-ui-button__icon:first-child) .stl-ui-button__icon {
123
- margin-left: -4px;
124
- margin-right: 4px;
125
- }
126
-
127
- .stl-ui-button:has(.stl-ui-button__icon:last-child) .stl-ui-button__icon {
128
- /* Right Icon */
129
- margin-right: -4px;
130
- margin-left: 4px;
131
-
132
- /* Right & Left Icon */
133
- &:first-child {
134
- margin-left: -4px;
135
- margin-right: 4px;
136
- }
137
- }
138
-
139
- /* Only Icon */
140
- .stl-ui-button:not(:has(.stl-ui-button-label)):has(.stl-ui-button__icon:last-child):has(
141
- .stl-ui-button__icon:first-child
142
- ) {
143
- width: var(--stl-ui-button-height);
144
-
145
- .stl-ui-button__icon {
146
- margin-left: -4px;
147
- margin-right: -4px;
148
- }
149
- }
150
-
151
- /* --- LINKS --- */
152
-
153
- a.stl-ui-button {
154
- text-decoration: none;
155
- text-align: center;
156
- }
157
- }
@@ -1,72 +0,0 @@
1
- @layer stl-ui.components {
2
- .stl-ui-callout {
3
- --stl-ui-callout-background-color: var(--stl-ui-muted-background);
4
- --stl-ui-callout-border-color: var(--stl-ui-border);
5
- --stl-ui-callout-accent-color: var(--stl-ui-foreground-muted);
6
-
7
- border: 1px solid var(--stl-ui-callout-border-color);
8
- background-color: var(--stl-ui-callout-background-color);
9
- border-radius: var(--stl-ui-layout-border-radius);
10
- padding: 12px;
11
- line-height: var(--stl-ui-typography-line-height);
12
- font-weight: 400;
13
- font-size: var(--stl-ui-typography-text-body);
14
-
15
- display: flex;
16
- align-items: flex-start;
17
- gap: 8px;
18
- }
19
-
20
- .stl-ui-callout--info {
21
- --stl-ui-callout-background-color: var(--stl-ui-muted-background);
22
- --stl-ui-callout-border-color: var(--stl-ui-border);
23
- --stl-ui-callout-accent-color: var(--stl-ui-foreground-muted);
24
- }
25
-
26
- .stl-ui-callout--note {
27
- --stl-ui-callout-background-color: var(--stl-ui-swatch-blue-faint);
28
- --stl-ui-callout-border-color: var(--stl-ui-swatch-blue-muted);
29
- --stl-ui-callout-accent-color: var(--stl-ui-swatch-blue-base);
30
- }
31
-
32
- .stl-ui-callout--tip {
33
- --stl-ui-callout-background-color: var(--stl-ui-swatch-purple-faint);
34
- --stl-ui-callout-border-color: var(--stl-ui-swatch-purple-muted);
35
- --stl-ui-callout-accent-color: var(--stl-ui-swatch-purple-base);
36
- }
37
-
38
- .stl-ui-callout--success {
39
- --stl-ui-callout-background-color: var(--stl-ui-swatch-green-faint);
40
- --stl-ui-callout-border-color: var(--stl-ui-swatch-green-muted);
41
- --stl-ui-callout-accent-color: var(--stl-ui-swatch-green-base);
42
- }
43
-
44
- .stl-ui-callout--warning {
45
- --stl-ui-callout-background-color: var(--stl-ui-swatch-yellow-faint);
46
- --stl-ui-callout-border-color: var(--stl-ui-swatch-yellow-muted);
47
- --stl-ui-callout-accent-color: var(--stl-ui-swatch-yellow-base);
48
- }
49
-
50
- .stl-ui-callout--danger {
51
- --stl-ui-callout-background-color: var(--stl-ui-swatch-red-faint);
52
- --stl-ui-callout-border-color: var(--stl-ui-swatch-red-muted);
53
- --stl-ui-callout-accent-color: var(--stl-ui-swatch-red-base);
54
- }
55
-
56
- .stl-ui-callout__icon {
57
- color: var(--stl-ui-callout-accent-color);
58
- flex-shrink: 0;
59
- width: 1em;
60
- height: 1em;
61
- margin: calc((1lh - 1em) / 2);
62
- }
63
-
64
- .stl-ui-callout__content {
65
- flex: 1;
66
- margin-top: 0;
67
-
68
- & > :first-child {
69
- margin-top: 0;
70
- }
71
- }
72
- }