beacon-ui 3.1.9 → 3.2.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 +12 -0
- package/README.md +25 -0
- package/assets/README.md +24 -0
- package/assets/avatars/README.md +42 -0
- package/assets/avatars/avatar-female.png +0 -0
- package/assets/patterns/Cotton_pt.png +0 -0
- package/assets/patterns/Cube_pt.png +0 -0
- package/assets/patterns/Default_pt.png +0 -0
- package/assets/patterns/Denim_pt.png +0 -0
- package/assets/patterns/Diagonal_pt.png +0 -0
- package/assets/patterns/Dots_pt.png +0 -0
- package/assets/patterns/Ellipticleloop_pt.png +0 -0
- package/assets/patterns/Maths_pt.png +0 -0
- package/assets/patterns/Mosaic_pt.png +0 -0
- package/assets/patterns/README.md +40 -0
- package/assets/patterns/Rough_Paper_pt.png +0 -0
- package/assets/patterns/Smudge_pt.png +0 -0
- package/assets/patterns/Squares_pt.png +0 -0
- package/assets/preview/16x9_1024x576_preview.png +0 -0
- package/assets/preview/1x1_512px_preview.png +0 -0
- package/assets/preview/3x2_1024x683_preview.png +0 -0
- package/assets/preview/4x3_1024x768_preview.png +0 -0
- package/dist/components/Card.d.ts +10 -28
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/Card.js +105 -509
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/utils/patternPaths.d.ts +2 -2
- package/dist/utils/patternPaths.js +12 -12
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [3.2.0] - 2025-01-02
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Simplified Card component usage examples for better developer experience
|
|
12
|
+
- Removed unnecessary wrapper divs from Card examples - Card's built-in flex layout handles spacing automatically
|
|
13
|
+
- Improved code examples to be cleaner and more minimal, following design system best practices
|
|
14
|
+
- Card examples now demonstrate cleaner, more maintainable code patterns
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
- Fixed missing line-height in typography previews across Card component examples
|
|
18
|
+
- Fixed image constraints in Product Card Pattern example - removed fixed width/height props for better flexibility
|
|
19
|
+
|
|
8
20
|
## [3.1.9] - 2025-12-29
|
|
9
21
|
|
|
10
22
|
### Added
|
package/README.md
CHANGED
|
@@ -491,6 +491,31 @@ Components adapt seamlessly across breakpoints:
|
|
|
491
491
|
- Tablet (max-width: 1024px)
|
|
492
492
|
- Mobile (max-width: 768px)
|
|
493
493
|
|
|
494
|
+
## Assets (Images)
|
|
495
|
+
|
|
496
|
+
The package includes static assets (images) for patterns, avatars, and previews. These are located in `assets/` directory.
|
|
497
|
+
|
|
498
|
+
### Pattern Images (Card Component)
|
|
499
|
+
|
|
500
|
+
The Card component uses background pattern images. To use them:
|
|
501
|
+
|
|
502
|
+
1. Copy pattern images from `node_modules/beacon-ui/assets/patterns/` to your `public/images/patterns/` directory
|
|
503
|
+
2. The Card component will automatically reference them via `/images/patterns/` paths
|
|
504
|
+
|
|
505
|
+
### Automatic Setup
|
|
506
|
+
|
|
507
|
+
Add a postinstall script to your `package.json`:
|
|
508
|
+
|
|
509
|
+
```json
|
|
510
|
+
{
|
|
511
|
+
"scripts": {
|
|
512
|
+
"postinstall": "mkdir -p public/images/patterns public/images/avatars public/images/preview && cp -r node_modules/beacon-ui/assets/patterns/* public/images/patterns/ && cp -r node_modules/beacon-ui/assets/avatars/* public/images/avatars/ && cp -r node_modules/beacon-ui/assets/preview/* public/images/preview/"
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
See `assets/README.md` for more details.
|
|
518
|
+
|
|
494
519
|
## Troubleshooting
|
|
495
520
|
|
|
496
521
|
### Components not styling correctly
|
package/assets/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Assets
|
|
2
|
+
|
|
3
|
+
This directory contains static assets (images) used by the Beacon UI components.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- **patterns/** - Background pattern images for Card component
|
|
8
|
+
- **avatars/** - Avatar placeholder images
|
|
9
|
+
- **preview/** - Preview/demo images for documentation examples
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
These assets are part of the `beacon-ui` package. For Next.js applications:
|
|
14
|
+
|
|
15
|
+
1. The assets are automatically copied to `public/images/` during build via the `copy:assets` script
|
|
16
|
+
2. Components reference them via `/images/patterns/`, `/images/avatars/`, `/images/preview/` paths
|
|
17
|
+
3. For non-Next.js applications, copy these assets to your public/assets directory manually
|
|
18
|
+
|
|
19
|
+
## Package Distribution
|
|
20
|
+
|
|
21
|
+
When the package is published, these assets are included in the npm package under `node_modules/beacon-ui/assets/`.
|
|
22
|
+
|
|
23
|
+
Consuming applications should copy these assets to their public directory. You can use the provided postinstall script or copy them manually.
|
|
24
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Avatar Images
|
|
2
|
+
|
|
3
|
+
This directory contains avatar images used in the design system.
|
|
4
|
+
|
|
5
|
+
## Adding New Avatar Images
|
|
6
|
+
|
|
7
|
+
1. Place your image file in this directory (supported formats: JPG, PNG, WebP)
|
|
8
|
+
2. Update `src/utils/imagePaths.ts` to add your new image:
|
|
9
|
+
|
|
10
|
+
```typescript
|
|
11
|
+
export const IMAGE_PATHS = {
|
|
12
|
+
avatars: {
|
|
13
|
+
default: "/images/avatars/avatar-female.png",
|
|
14
|
+
user1: "/images/avatars/user1.jpg", // Add your new image here
|
|
15
|
+
user2: "/images/avatars/user2.jpg",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
3. Use the image in your code:
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { getAvatarImage } from "@/utils/imagePaths";
|
|
24
|
+
|
|
25
|
+
// Use the default image
|
|
26
|
+
const imageUrl = getAvatarImage("default");
|
|
27
|
+
|
|
28
|
+
// Or use a specific image
|
|
29
|
+
const imageUrl = getAvatarImage("user1");
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Image Guidelines
|
|
33
|
+
|
|
34
|
+
- Recommended size: 400x400px or larger (square aspect ratio)
|
|
35
|
+
- Formats: JPG, PNG, or WebP
|
|
36
|
+
- Keep file sizes reasonable for web performance
|
|
37
|
+
- Use consistent naming conventions (e.g., `avatar-default.jpg`, `user1.jpg`)
|
|
38
|
+
|
|
39
|
+
## Current Images
|
|
40
|
+
|
|
41
|
+
- `avatar-default.jpg` - Default avatar image (add this file)
|
|
42
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Pattern Images
|
|
2
|
+
|
|
3
|
+
This directory contains background pattern images used by the Card component.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
These images are part of the `beacon-ui` package and are stored in `packages/beacon-ui/assets/patterns/`.
|
|
8
|
+
|
|
9
|
+
For the documentation site, they are automatically copied to `public/images/patterns/` during build via the `copy:assets` script.
|
|
10
|
+
|
|
11
|
+
For consuming applications:
|
|
12
|
+
|
|
13
|
+
1. Copy the pattern images from `node_modules/beacon-ui/assets/patterns/` to your application's `public/images/patterns/` directory
|
|
14
|
+
2. The Card component will automatically reference them via `/images/patterns/` paths
|
|
15
|
+
|
|
16
|
+
## Pattern Files
|
|
17
|
+
|
|
18
|
+
- `Cube_pt.png` - Cubes pattern
|
|
19
|
+
- `Maths_pt.png` - Mathematics pattern
|
|
20
|
+
- `Dots_pt.png` - Dots pattern
|
|
21
|
+
- `Diagonal_pt.png` - Diagonal lines pattern
|
|
22
|
+
- `Smudge_pt.png` - Charcoal smudge pattern
|
|
23
|
+
- `Rough_Paper_pt.png` - Rough paper pattern
|
|
24
|
+
- `Denim_pt.png` - Denim pattern
|
|
25
|
+
- `Squares_pt.png` - Squares pattern
|
|
26
|
+
- `Mosaic_pt.png` - Mosaic pattern
|
|
27
|
+
- `Cotton_pt.png` - Cotton pattern
|
|
28
|
+
|
|
29
|
+
## Automatic Setup (Optional)
|
|
30
|
+
|
|
31
|
+
You can add a postinstall script to your `package.json` to automatically copy these images:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"scripts": {
|
|
36
|
+
"postinstall": "mkdir -p public/images/patterns && cp -r node_modules/beacon-ui/assets/patterns/* public/images/patterns/"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,37 +1,19 @@
|
|
|
1
1
|
import { ComponentPropsWithRef } from "react";
|
|
2
2
|
import { type PatternType } from "../utils/patternPaths";
|
|
3
|
-
|
|
4
|
-
export type
|
|
5
|
-
export type
|
|
6
|
-
export type ExperienceCardType = "default" | "skills" | "contacts";
|
|
7
|
-
export type GenericCardStatus = "default" | "highlighted" | "selected";
|
|
3
|
+
import type { CornerRadiusStep } from "./Button";
|
|
4
|
+
export type CardStatus = "default" | "highlighted" | "selected";
|
|
5
|
+
export type CardShadow = "0" | "50" | "100" | "200" | "300" | "400" | "500";
|
|
8
6
|
export interface CardProps extends Omit<ComponentPropsWithRef<"div">, "slot"> {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
status?:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
hasIdentifiers?: boolean;
|
|
15
|
-
hasButton?: boolean;
|
|
16
|
-
title?: string;
|
|
17
|
-
description?: string;
|
|
18
|
-
experienceType?: ExperienceCardType;
|
|
19
|
-
positionName?: string;
|
|
20
|
-
companyName?: string;
|
|
21
|
-
year?: string;
|
|
22
|
-
experienceDescription?: string;
|
|
23
|
-
label?: string;
|
|
24
|
-
details?: string;
|
|
25
|
-
cardName?: string;
|
|
26
|
-
cardDescription?: string;
|
|
27
|
-
hasIcon?: boolean;
|
|
28
|
-
genericStatus?: GenericCardStatus;
|
|
7
|
+
padding?: number;
|
|
8
|
+
height?: string;
|
|
9
|
+
status?: CardStatus;
|
|
10
|
+
shadow?: CardShadow;
|
|
11
|
+
cornerRadius?: CornerRadiusStep;
|
|
29
12
|
showBgPattern?: boolean;
|
|
30
13
|
patternType?: PatternType;
|
|
31
14
|
showOverlay?: boolean;
|
|
32
|
-
showShadow?: boolean;
|
|
33
15
|
showBorder?: boolean;
|
|
34
|
-
|
|
16
|
+
children?: React.ReactNode;
|
|
35
17
|
}
|
|
36
|
-
export declare function Card({
|
|
18
|
+
export declare function Card({ padding, height, status, shadow, cornerRadius, showBgPattern, patternType, showOverlay, showBorder, children, className, style, ref, ...rest }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
37
19
|
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../src/components/Card.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAW5E,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAoBD,wBAAgB,IAAI,CAAC,EACnB,OAAa,EACb,MAAM,EACN,MAAkB,EAClB,MAAM,EACN,YAAgB,EAChB,aAAqB,EACrB,WAAqB,EACrB,WAAmB,EACnB,UAAiB,EACjB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,SAAS,2CA0GX"}
|
package/dist/components/Card.js
CHANGED
|
@@ -1,519 +1,115 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import { useThemeSafe } from "../providers/ThemeProvider";
|
|
4
|
-
import {
|
|
4
|
+
import { ArrowDownFallSlotIcon } from "../icons";
|
|
5
5
|
import { getPatternConfig } from "../utils/patternPaths";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
flex: "1 0 0",
|
|
53
|
-
maxHeight: "240px",
|
|
54
|
-
maxWidth: "300px",
|
|
55
|
-
minHeight: "36px",
|
|
56
|
-
minWidth: "48px",
|
|
57
|
-
position: "relative",
|
|
58
|
-
borderRadius: "0 var(--corner-radius-400) 0 0",
|
|
59
|
-
overflow: "hidden",
|
|
60
|
-
}, children: _jsx("div", { style: {
|
|
61
|
-
position: "absolute",
|
|
62
|
-
inset: 0,
|
|
63
|
-
backgroundColor: "var(--bg-page-secondary)",
|
|
64
|
-
borderRadius: "0 var(--corner-radius-400) 0 0",
|
|
65
|
-
} }) })), _jsxs("div", { style: {
|
|
66
|
-
display: "flex",
|
|
67
|
-
flexDirection: "column",
|
|
68
|
-
flex: "1 0 0",
|
|
69
|
-
gap: "var(--spacing-500)",
|
|
70
|
-
alignItems: "flex-start",
|
|
71
|
-
minHeight: 0,
|
|
72
|
-
minWidth: 0,
|
|
73
|
-
padding: "0 0 var(--spacing-500) 0",
|
|
74
|
-
position: "relative",
|
|
75
|
-
}, children: [_jsxs("div", { style: {
|
|
76
|
-
display: "flex",
|
|
77
|
-
flexDirection: "column",
|
|
78
|
-
gap: "var(--spacing-200)",
|
|
79
|
-
alignItems: "flex-start",
|
|
80
|
-
width: "100%",
|
|
81
|
-
}, children: [_jsx("h4", { style: {
|
|
82
|
-
fontFamily: "var(--font-secondary)",
|
|
83
|
-
fontSize: "var(--heading-h4-text-size)",
|
|
84
|
-
lineHeight: "var(--heading-h4-line-height)",
|
|
85
|
-
fontWeight: "var(--font-weight-secondary-semibold)",
|
|
86
|
-
color: "var(--fg-neutral)",
|
|
87
|
-
margin: 0,
|
|
88
|
-
textTransform: "capitalize",
|
|
89
|
-
}, children: title }), _jsx("p", { style: {
|
|
90
|
-
fontFamily: "var(--font-secondary)",
|
|
91
|
-
fontSize: "var(--body-regular-text-size)",
|
|
92
|
-
lineHeight: "var(--body-regular-line-height)",
|
|
93
|
-
fontWeight: "var(--font-weight-secondary-regular)",
|
|
94
|
-
color: "var(--fg-neutral-tertiary)",
|
|
95
|
-
margin: 0,
|
|
96
|
-
flex: "1 0 0",
|
|
97
|
-
display: "-webkit-box",
|
|
98
|
-
WebkitLineClamp: 2,
|
|
99
|
-
WebkitBoxOrient: "vertical",
|
|
100
|
-
overflow: "hidden",
|
|
101
|
-
}, children: description })] }), hasIdentifiers && (_jsxs("div", { style: {
|
|
102
|
-
display: "flex",
|
|
103
|
-
gap: "var(--spacing-200)",
|
|
104
|
-
alignItems: "flex-start",
|
|
105
|
-
}, children: [_jsx("div", { style: {
|
|
106
|
-
backgroundColor: "var(--bg-page-tertiary)",
|
|
107
|
-
padding: "var(--spacing-100) var(--spacing-300)",
|
|
108
|
-
borderRadius: "var(--corner-radius-full)",
|
|
109
|
-
display: "flex",
|
|
110
|
-
alignItems: "center",
|
|
111
|
-
gap: "var(--spacing-100)",
|
|
112
|
-
}, children: _jsx("span", { style: {
|
|
113
|
-
fontFamily: "var(--font-secondary)",
|
|
114
|
-
fontSize: "var(--body-extra-small-text-size)",
|
|
115
|
-
lineHeight: "var(--body-extra-small-line-height)",
|
|
116
|
-
color: "var(--fg-neutral-tertiary)",
|
|
117
|
-
}, children: "Identifier" }) }), _jsx("div", { style: {
|
|
118
|
-
backgroundColor: "var(--bg-page-tertiary)",
|
|
119
|
-
padding: "var(--spacing-100) var(--spacing-300)",
|
|
120
|
-
borderRadius: "var(--corner-radius-full)",
|
|
121
|
-
display: "flex",
|
|
122
|
-
alignItems: "center",
|
|
123
|
-
gap: "var(--spacing-100)",
|
|
124
|
-
}, children: _jsx("span", { style: {
|
|
125
|
-
fontFamily: "var(--font-secondary)",
|
|
126
|
-
fontSize: "var(--body-extra-small-text-size)",
|
|
127
|
-
lineHeight: "var(--body-extra-small-line-height)",
|
|
128
|
-
color: "var(--fg-neutral-tertiary)",
|
|
129
|
-
}, children: "Tag" }) })] })), hasButton && (_jsxs("div", { style: {
|
|
130
|
-
backgroundColor: "var(--bg-primary-tonal)",
|
|
131
|
-
padding: "var(--spacing-300) var(--spacing-400)",
|
|
132
|
-
borderRadius: "var(--corner-radius-200)",
|
|
133
|
-
display: "flex",
|
|
134
|
-
alignItems: "center",
|
|
135
|
-
gap: "var(--spacing-200)",
|
|
136
|
-
cursor: "pointer",
|
|
137
|
-
}, children: [_jsx("span", { style: {
|
|
138
|
-
fontFamily: "var(--font-secondary)",
|
|
139
|
-
fontSize: "var(--body-small-text-size)",
|
|
140
|
-
lineHeight: "var(--body-small-line-height)",
|
|
141
|
-
fontWeight: "var(--font-weight-secondary-medium)",
|
|
142
|
-
color: "var(--fg-primary-on-tonal)",
|
|
143
|
-
}, children: "Button" }), _jsx(RightArrowIcon, { size: "xs" })] }))] })] }));
|
|
144
|
-
}
|
|
145
|
-
// Half size (vertical)
|
|
146
|
-
return (_jsxs("div", { style: cardStyles, children: [showBgPattern && (_jsx("div", { style: {
|
|
147
|
-
position: "absolute",
|
|
148
|
-
aspectRatio: "64/64",
|
|
149
|
-
inset: "-1px",
|
|
150
|
-
overflow: "hidden",
|
|
151
|
-
}, children: _jsx("div", { style: {
|
|
152
|
-
position: "absolute",
|
|
153
|
-
inset: "0 -322px -322px 0",
|
|
154
|
-
backgroundImage: "url('data:image/svg+xml,%3Csvg width=\"210\" height=\"163\" xmlns=\"http://www.w3.org/2000/svg\"%3E%3Crect width=\"210\" height=\"163\" fill=\"%23d2d2d6\"/%3E%3C/svg%3E')",
|
|
155
|
-
backgroundRepeat: "repeat",
|
|
156
|
-
backgroundSize: "210px 163px",
|
|
157
|
-
} }) })), showOverlay && _jsx("div", { style: overlayStyles }), _jsxs("div", { style: {
|
|
158
|
-
display: "flex",
|
|
159
|
-
flexDirection: "column",
|
|
160
|
-
gap: "var(--spacing-200)",
|
|
161
|
-
alignItems: "flex-start",
|
|
162
|
-
width: "100%",
|
|
163
|
-
position: "relative",
|
|
164
|
-
}, children: [_jsx("h5", { style: {
|
|
165
|
-
fontFamily: "var(--font-secondary)",
|
|
166
|
-
fontSize: "var(--heading-h5-text-size)",
|
|
167
|
-
lineHeight: "var(--heading-h5-line-height)",
|
|
168
|
-
fontWeight: "var(--font-weight-secondary-semibold)",
|
|
169
|
-
color: "var(--fg-neutral)",
|
|
170
|
-
margin: 0,
|
|
171
|
-
textTransform: "capitalize",
|
|
172
|
-
}, children: title }), _jsx("p", { style: {
|
|
173
|
-
fontFamily: "var(--font-secondary)",
|
|
174
|
-
fontSize: "var(--body-regular-text-size)",
|
|
175
|
-
lineHeight: "var(--body-regular-line-height)",
|
|
176
|
-
fontWeight: "var(--font-weight-secondary-regular)",
|
|
177
|
-
color: "var(--fg-neutral-tertiary)",
|
|
178
|
-
margin: 0,
|
|
179
|
-
display: "-webkit-box",
|
|
180
|
-
WebkitLineClamp: 1,
|
|
181
|
-
WebkitBoxOrient: "vertical",
|
|
182
|
-
overflow: "hidden",
|
|
183
|
-
}, children: description })] }), hasImage && (_jsx("div", { style: {
|
|
184
|
-
aspectRatio: imageAspectRatio === "16x9" ? "320/180" : "4/3",
|
|
185
|
-
minHeight: "27px",
|
|
186
|
-
minWidth: "48px",
|
|
187
|
-
position: "relative",
|
|
188
|
-
borderRadius: "var(--corner-radius-400)",
|
|
189
|
-
width: "100%",
|
|
190
|
-
overflow: "hidden",
|
|
191
|
-
}, children: _jsx("div", { style: {
|
|
192
|
-
position: "absolute",
|
|
193
|
-
inset: 0,
|
|
194
|
-
backgroundColor: "var(--bg-page-secondary)",
|
|
195
|
-
borderRadius: "var(--corner-radius-400)",
|
|
196
|
-
} }) })), hasIdentifiers && (_jsxs("div", { style: {
|
|
197
|
-
display: "flex",
|
|
198
|
-
gap: "var(--spacing-200)",
|
|
199
|
-
alignItems: "flex-start",
|
|
200
|
-
position: "relative",
|
|
201
|
-
}, children: [_jsx("div", { style: {
|
|
202
|
-
backgroundColor: "var(--bg-page-tertiary)",
|
|
203
|
-
padding: "var(--spacing-100) var(--spacing-300)",
|
|
204
|
-
borderRadius: "var(--corner-radius-full)",
|
|
205
|
-
display: "flex",
|
|
206
|
-
alignItems: "center",
|
|
207
|
-
gap: "var(--spacing-100)",
|
|
208
|
-
}, children: _jsx("span", { style: {
|
|
209
|
-
fontFamily: "var(--font-secondary)",
|
|
210
|
-
fontSize: "var(--body-extra-small-text-size)",
|
|
211
|
-
lineHeight: "var(--body-extra-small-line-height)",
|
|
212
|
-
color: "var(--fg-neutral-tertiary)",
|
|
213
|
-
}, children: "Identifier" }) }), _jsx("div", { style: {
|
|
214
|
-
backgroundColor: "var(--bg-page-tertiary)",
|
|
215
|
-
padding: "var(--spacing-100) var(--spacing-300)",
|
|
216
|
-
borderRadius: "var(--corner-radius-full)",
|
|
217
|
-
display: "flex",
|
|
218
|
-
alignItems: "center",
|
|
219
|
-
gap: "var(--spacing-100)",
|
|
220
|
-
}, children: _jsx("span", { style: {
|
|
221
|
-
fontFamily: "var(--font-secondary)",
|
|
222
|
-
fontSize: "var(--body-extra-small-text-size)",
|
|
223
|
-
lineHeight: "var(--body-extra-small-line-height)",
|
|
224
|
-
color: "var(--fg-neutral-tertiary)",
|
|
225
|
-
}, children: "Tag" }) })] })), hasButton && (_jsxs("div", { style: {
|
|
226
|
-
backgroundColor: "var(--bg-primary-tonal)",
|
|
227
|
-
padding: "var(--spacing-300) var(--spacing-400)",
|
|
228
|
-
borderRadius: "var(--corner-radius-200)",
|
|
229
|
-
display: "flex",
|
|
230
|
-
alignItems: "center",
|
|
231
|
-
gap: "var(--spacing-200)",
|
|
232
|
-
cursor: "pointer",
|
|
233
|
-
position: "relative",
|
|
234
|
-
}, children: [_jsx("span", { style: {
|
|
235
|
-
fontFamily: "var(--font-secondary)",
|
|
236
|
-
fontSize: "var(--body-small-text-size)",
|
|
237
|
-
lineHeight: "var(--body-small-line-height)",
|
|
238
|
-
fontWeight: "var(--font-weight-secondary-medium)",
|
|
239
|
-
color: "var(--fg-primary-on-tonal)",
|
|
240
|
-
}, children: "Button" }), _jsx(RightArrowIcon, { size: "xs" })] }))] }));
|
|
6
|
+
const CORNER_RADIUS_MAP = {
|
|
7
|
+
0: "var(--corner-radius-none)",
|
|
8
|
+
1: "var(--corner-radius-100)",
|
|
9
|
+
2: "var(--corner-radius-200)",
|
|
10
|
+
3: "var(--corner-radius-300)",
|
|
11
|
+
4: "var(--corner-radius-400)",
|
|
12
|
+
5: "var(--corner-radius-full)",
|
|
13
|
+
};
|
|
14
|
+
function getSpacingToken(padding) {
|
|
15
|
+
if (padding === 0) {
|
|
16
|
+
return "var(--spacing-none)";
|
|
17
|
+
}
|
|
18
|
+
return `var(--spacing-${padding})`;
|
|
19
|
+
}
|
|
20
|
+
function getShadowToken(shadow) {
|
|
21
|
+
if (!shadow)
|
|
22
|
+
return undefined;
|
|
23
|
+
return `var(--drop-shadow-${shadow})`;
|
|
24
|
+
}
|
|
25
|
+
function getHeightValue(height) {
|
|
26
|
+
if (height === undefined)
|
|
27
|
+
return undefined;
|
|
28
|
+
// Allow strings like "200px", "100%", "auto", "fill", etc.
|
|
29
|
+
return height;
|
|
30
|
+
}
|
|
31
|
+
export function Card({ padding = 400, height, status = "default", shadow, cornerRadius = 4, showBgPattern = false, patternType = "cubes", showOverlay = false, showBorder = true, children, className, style, ref, ...rest }) {
|
|
32
|
+
useThemeSafe();
|
|
33
|
+
const isDefault = status === "default";
|
|
34
|
+
const isHighlighted = status === "highlighted";
|
|
35
|
+
const isSelected = status === "selected";
|
|
36
|
+
const heightValue = getHeightValue(height);
|
|
37
|
+
// Only apply overflow: auto for fixed heights (not "auto" or undefined)
|
|
38
|
+
const hasFixedHeight = heightValue && heightValue !== "auto";
|
|
39
|
+
const cardStyles = {
|
|
40
|
+
display: "flex",
|
|
41
|
+
flexDirection: "column",
|
|
42
|
+
gap: "var(--spacing-400)",
|
|
43
|
+
alignItems: "flex-start",
|
|
44
|
+
overflow: hasFixedHeight ? "auto" : "hidden",
|
|
45
|
+
padding: getSpacingToken(padding),
|
|
46
|
+
borderRadius: CORNER_RADIUS_MAP[cornerRadius],
|
|
47
|
+
position: "relative",
|
|
48
|
+
backgroundColor: isDefault ? "var(--bg-page-tertiary)" : "var(--bg-page-primary)",
|
|
49
|
+
...(heightValue && { height: heightValue }),
|
|
50
|
+
...(shadow && { boxShadow: getShadowToken(shadow) }),
|
|
51
|
+
...style,
|
|
241
52
|
};
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
const isContacts = experienceType === "contacts";
|
|
246
|
-
if (isDefault) {
|
|
247
|
-
return (_jsxs("div", { style: {
|
|
248
|
-
display: "flex",
|
|
249
|
-
gap: "var(--spacing-500)",
|
|
250
|
-
alignItems: "flex-start",
|
|
251
|
-
width: "480px",
|
|
252
|
-
position: "relative",
|
|
253
|
-
}, children: [_jsx("div", { style: {
|
|
254
|
-
minHeight: "48px",
|
|
255
|
-
minWidth: "48px",
|
|
256
|
-
width: "64px",
|
|
257
|
-
height: "64px",
|
|
258
|
-
borderRadius: "var(--corner-radius-200)",
|
|
259
|
-
backgroundColor: "var(--bg-page-secondary)",
|
|
260
|
-
flexShrink: 0,
|
|
261
|
-
} }), _jsxs("div", { style: {
|
|
262
|
-
display: "flex",
|
|
263
|
-
flexDirection: "column",
|
|
264
|
-
flex: "1 0 0",
|
|
265
|
-
gap: "var(--spacing-300)",
|
|
266
|
-
alignItems: "flex-start",
|
|
267
|
-
maxWidth: "600px",
|
|
268
|
-
minHeight: 0,
|
|
269
|
-
minWidth: 0,
|
|
270
|
-
}, children: [_jsxs("div", { style: {
|
|
271
|
-
display: "flex",
|
|
272
|
-
flexDirection: "column",
|
|
273
|
-
gap: "var(--spacing-100)",
|
|
274
|
-
alignItems: "flex-start",
|
|
275
|
-
width: "100%",
|
|
276
|
-
}, children: [_jsx("h6", { style: {
|
|
277
|
-
fontFamily: "var(--font-secondary)",
|
|
278
|
-
fontSize: "var(--heading-h6-text-size)",
|
|
279
|
-
lineHeight: "var(--heading-h6-line-height)",
|
|
280
|
-
fontWeight: "var(--font-weight-secondary-semibold)",
|
|
281
|
-
color: "var(--fg-neutral)",
|
|
282
|
-
margin: 0,
|
|
283
|
-
textTransform: "capitalize",
|
|
284
|
-
}, children: positionName }), _jsx("p", { style: {
|
|
285
|
-
fontFamily: "var(--font-secondary)",
|
|
286
|
-
fontSize: "var(--body-regular-text-size)",
|
|
287
|
-
lineHeight: "var(--body-regular-line-height)",
|
|
288
|
-
fontWeight: "var(--font-weight-secondary-medium)",
|
|
289
|
-
color: "var(--fg-neutral-tertiary)",
|
|
290
|
-
margin: 0,
|
|
291
|
-
}, children: companyName }), _jsx("p", { style: {
|
|
292
|
-
fontFamily: "var(--font-secondary)",
|
|
293
|
-
fontSize: "var(--body-extra-small-text-size)",
|
|
294
|
-
lineHeight: "var(--body-extra-small-line-height)",
|
|
295
|
-
fontWeight: "var(--font-weight-secondary-regular)",
|
|
296
|
-
color: "var(--fg-neutral-tertiary)",
|
|
297
|
-
margin: 0,
|
|
298
|
-
}, children: year })] }), _jsx("p", { style: {
|
|
299
|
-
fontFamily: "var(--font-secondary)",
|
|
300
|
-
fontSize: "var(--body-small-text-size)",
|
|
301
|
-
lineHeight: "var(--body-small-line-height)",
|
|
302
|
-
fontWeight: "var(--font-weight-secondary-regular)",
|
|
303
|
-
color: "var(--fg-neutral-tertiary)",
|
|
304
|
-
margin: 0,
|
|
305
|
-
}, children: experienceDescription })] })] }));
|
|
53
|
+
if (showBorder) {
|
|
54
|
+
if (isSelected) {
|
|
55
|
+
cardStyles.border = "var(--border-width-25) solid var(--border-primary)";
|
|
306
56
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
display: "flex",
|
|
310
|
-
gap: "var(--spacing-400)",
|
|
311
|
-
alignItems: "center",
|
|
312
|
-
backgroundColor: "var(--bg-page-secondary)",
|
|
313
|
-
padding: "var(--spacing-200)",
|
|
314
|
-
borderRadius: "var(--corner-radius-200)",
|
|
315
|
-
width: "480px",
|
|
316
|
-
position: "relative",
|
|
317
|
-
}, children: [_jsx("div", { style: {
|
|
318
|
-
minHeight: "32px",
|
|
319
|
-
minWidth: "32px",
|
|
320
|
-
width: "48px",
|
|
321
|
-
height: "48px",
|
|
322
|
-
borderRadius: "var(--corner-radius-200)",
|
|
323
|
-
backgroundColor: "var(--bg-page-tertiary)",
|
|
324
|
-
flexShrink: 0,
|
|
325
|
-
} }), _jsx("p", { style: {
|
|
326
|
-
fontFamily: "var(--font-secondary)",
|
|
327
|
-
fontSize: "var(--body-regular-text-size)",
|
|
328
|
-
lineHeight: "var(--body-regular-line-height)",
|
|
329
|
-
fontWeight: "var(--font-weight-secondary-medium)",
|
|
330
|
-
color: "var(--fg-neutral)",
|
|
331
|
-
margin: 0,
|
|
332
|
-
flex: "1 0 0",
|
|
333
|
-
}, children: positionName })] }));
|
|
57
|
+
else {
|
|
58
|
+
cardStyles.border = "var(--border-width-25) solid var(--border-strong-200)";
|
|
334
59
|
}
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}, children: [_jsx("p", { style: {
|
|
352
|
-
fontFamily: "var(--font-secondary)",
|
|
353
|
-
fontSize: "var(--body-regular-text-size)",
|
|
354
|
-
lineHeight: "var(--body-regular-line-height)",
|
|
355
|
-
fontWeight: "var(--font-weight-secondary-regular)",
|
|
356
|
-
color: "var(--fg-neutral-tertiary)",
|
|
357
|
-
margin: 0,
|
|
358
|
-
}, children: label }), _jsx("p", { style: {
|
|
359
|
-
fontFamily: "var(--font-secondary)",
|
|
360
|
-
fontSize: "var(--body-medium-text-size)",
|
|
361
|
-
lineHeight: "var(--body-medium-line-height)",
|
|
362
|
-
fontWeight: "var(--font-weight-secondary-medium)",
|
|
363
|
-
color: "var(--fg-neutral)",
|
|
364
|
-
margin: 0,
|
|
365
|
-
}, children: details })] }), _jsx("div", { style: {
|
|
366
|
-
backgroundColor: "var(--bg-page-tertiary)",
|
|
367
|
-
width: "48px",
|
|
368
|
-
height: "48px",
|
|
369
|
-
borderRadius: "var(--corner-radius-200)",
|
|
370
|
-
display: "flex",
|
|
371
|
-
alignItems: "center",
|
|
372
|
-
justifyContent: "center",
|
|
373
|
-
flexShrink: 0,
|
|
374
|
-
}, children: _jsx("div", { style: {
|
|
375
|
-
width: "24px",
|
|
376
|
-
height: "24px",
|
|
377
|
-
backgroundColor: "var(--fg-neutral)",
|
|
378
|
-
borderRadius: "50%",
|
|
379
|
-
} }) })] }));
|
|
380
|
-
};
|
|
381
|
-
const renderInfoCard = () => {
|
|
382
|
-
return (_jsxs("div", { style: {
|
|
383
|
-
display: "flex",
|
|
384
|
-
gap: "var(--spacing-400)",
|
|
385
|
-
alignItems: "flex-start",
|
|
386
|
-
width: "480px",
|
|
387
|
-
position: "relative",
|
|
388
|
-
}, children: [hasIcon && (_jsx("div", { style: {
|
|
389
|
-
backgroundColor: "var(--bg-primary-tonal)",
|
|
390
|
-
width: "32px",
|
|
391
|
-
height: "32px",
|
|
392
|
-
borderRadius: "var(--corner-radius-200)",
|
|
393
|
-
display: "flex",
|
|
394
|
-
alignItems: "center",
|
|
395
|
-
justifyContent: "center",
|
|
396
|
-
flexShrink: 0,
|
|
397
|
-
padding: "8px",
|
|
398
|
-
}, children: _jsx("div", { style: {
|
|
399
|
-
width: "16px",
|
|
400
|
-
height: "16px",
|
|
401
|
-
backgroundColor: "var(--fg-primary-on-tonal)",
|
|
402
|
-
borderRadius: "50%",
|
|
403
|
-
} }) })), _jsxs("div", { style: {
|
|
404
|
-
display: "flex",
|
|
405
|
-
flexDirection: "column",
|
|
406
|
-
flex: "1 0 0",
|
|
407
|
-
gap: "var(--spacing-300)",
|
|
408
|
-
alignItems: "flex-start",
|
|
409
|
-
maxWidth: "600px",
|
|
410
|
-
minHeight: 0,
|
|
411
|
-
minWidth: 0,
|
|
412
|
-
}, children: [_jsx("p", { style: {
|
|
413
|
-
fontFamily: "var(--font-secondary)",
|
|
414
|
-
fontSize: "var(--body-regular-text-size)",
|
|
415
|
-
lineHeight: "var(--body-regular-line-height)",
|
|
416
|
-
fontWeight: "var(--font-weight-secondary-medium)",
|
|
417
|
-
color: "var(--fg-neutral)",
|
|
418
|
-
margin: 0,
|
|
419
|
-
}, children: cardName }), _jsx("p", { style: {
|
|
420
|
-
fontFamily: "var(--font-secondary)",
|
|
421
|
-
fontSize: "var(--body-small-text-size)",
|
|
422
|
-
lineHeight: "var(--body-small-line-height)",
|
|
423
|
-
fontWeight: "var(--font-weight-secondary-regular)",
|
|
424
|
-
color: "var(--fg-neutral-tertiary)",
|
|
425
|
-
margin: 0,
|
|
426
|
-
textAlign: "justify",
|
|
427
|
-
}, children: cardDescription })] })] }));
|
|
428
|
-
};
|
|
429
|
-
const renderGenericCard = () => {
|
|
430
|
-
const isDefault = genericStatus === "default";
|
|
431
|
-
const isHighlighted = genericStatus === "highlighted";
|
|
432
|
-
const isSelected = genericStatus === "selected";
|
|
433
|
-
const cardStyles = {
|
|
434
|
-
display: "flex",
|
|
435
|
-
flexDirection: "column",
|
|
436
|
-
gap: "var(--spacing-400)",
|
|
437
|
-
alignItems: "flex-start",
|
|
438
|
-
overflow: "hidden",
|
|
439
|
-
padding: "var(--spacing-400)",
|
|
440
|
-
borderRadius: "var(--corner-radius-400)",
|
|
441
|
-
width: "400px",
|
|
442
|
-
position: "relative",
|
|
443
|
-
backgroundColor: isDefault ? "var(--bg-page-tertiary)" : "var(--bg-page-primary)",
|
|
444
|
-
};
|
|
445
|
-
if (showBorder) {
|
|
446
|
-
if (isSelected) {
|
|
447
|
-
cardStyles.border = "var(--border-width-25) solid var(--border-primary)";
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
cardStyles.border = "var(--border-width-25) solid var(--border-strong-200)";
|
|
451
|
-
}
|
|
60
|
+
}
|
|
61
|
+
const overlayGradient = isDefault
|
|
62
|
+
? "var(--bg-page-secondary)"
|
|
63
|
+
: "var(--bg-page-primary)";
|
|
64
|
+
// Build background layers using CSS multiple backgrounds
|
|
65
|
+
// CSS backgrounds stack: first listed = top layer, last listed = bottom layer
|
|
66
|
+
// We want: overlay (middle) first, pattern (bottom) last
|
|
67
|
+
// Content will naturally be on top since it's not a background
|
|
68
|
+
const backgroundLayers = [];
|
|
69
|
+
if (showOverlay) {
|
|
70
|
+
backgroundLayers.push(`linear-gradient(to bottom, rgba(255,255,255,0) 26.827%, ${overlayGradient} 86.384%)`);
|
|
71
|
+
}
|
|
72
|
+
if (showBgPattern) {
|
|
73
|
+
const patternConfig = getPatternConfig(patternType);
|
|
74
|
+
if (patternConfig.imageUrl) {
|
|
75
|
+
backgroundLayers.push(`url("${patternConfig.imageUrl}")`);
|
|
452
76
|
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
77
|
+
}
|
|
78
|
+
// Apply background layers to card styles
|
|
79
|
+
if (backgroundLayers.length > 0) {
|
|
80
|
+
cardStyles.backgroundImage = backgroundLayers.join(", ");
|
|
81
|
+
if (showBgPattern && showOverlay) {
|
|
82
|
+
const patternConfig = getPatternConfig(patternType);
|
|
83
|
+
// First value applies to first background (overlay), second to pattern
|
|
84
|
+
cardStyles.backgroundRepeat = "no-repeat, repeat";
|
|
85
|
+
cardStyles.backgroundSize = patternConfig.backgroundSize
|
|
86
|
+
? `100% 100%, ${patternConfig.backgroundSize}`
|
|
87
|
+
: "100% 100%, auto";
|
|
88
|
+
cardStyles.backgroundPosition = patternConfig.backgroundPosition
|
|
89
|
+
? `center, ${patternConfig.backgroundPosition}`
|
|
90
|
+
: "center, top left";
|
|
462
91
|
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
if (!patternConfig.imageUrl)
|
|
469
|
-
return null;
|
|
470
|
-
return (_jsx("div", { style: {
|
|
471
|
-
position: "absolute",
|
|
472
|
-
aspectRatio: "64/64",
|
|
473
|
-
inset: showBorder ? "-1px" : "0",
|
|
474
|
-
overflow: "hidden",
|
|
475
|
-
zIndex: 1,
|
|
476
|
-
}, children: _jsx("div", { style: {
|
|
477
|
-
position: "absolute",
|
|
478
|
-
inset: patternConfig.inset || "0",
|
|
479
|
-
backgroundImage: `url("${patternConfig.imageUrl}")`,
|
|
480
|
-
backgroundRepeat: "repeat",
|
|
481
|
-
backgroundSize: patternConfig.backgroundSize,
|
|
482
|
-
backgroundPosition: patternConfig.backgroundPosition || "top left",
|
|
483
|
-
} }) }));
|
|
484
|
-
})(), showOverlay && (_jsx("div", { style: {
|
|
485
|
-
position: "absolute",
|
|
486
|
-
inset: showBorder ? "-1px" : "0",
|
|
487
|
-
background: `linear-gradient(to bottom, rgba(255,255,255,0) 26.827%, ${overlayGradient} 86.384%)`,
|
|
488
|
-
pointerEvents: "none",
|
|
489
|
-
zIndex: 2,
|
|
490
|
-
} })), slot || (_jsx("div", { style: {
|
|
491
|
-
backgroundColor: "var(--bg-warning-tonal)",
|
|
492
|
-
border: "var(--border-width-25) dashed var(--border-warning)",
|
|
493
|
-
padding: "var(--spacing-200) 8px",
|
|
494
|
-
borderRadius: "var(--corner-radius-100)",
|
|
495
|
-
width: "100%",
|
|
496
|
-
display: "flex",
|
|
497
|
-
alignItems: "center",
|
|
498
|
-
justifyContent: "center",
|
|
499
|
-
minHeight: "32px",
|
|
500
|
-
position: "relative",
|
|
501
|
-
zIndex: 3,
|
|
502
|
-
}, children: _jsx("div", { style: { color: "var(--fg-warning-on-tonal)" }, children: _jsx(ArrowDownFallSlotIcon, { size: "xs" }) }) }))] }));
|
|
503
|
-
};
|
|
504
|
-
const renderCard = () => {
|
|
505
|
-
switch (cardType) {
|
|
506
|
-
case "product":
|
|
507
|
-
return renderProductCard();
|
|
508
|
-
case "experience":
|
|
509
|
-
return renderExperienceCard();
|
|
510
|
-
case "info":
|
|
511
|
-
return renderInfoCard();
|
|
512
|
-
case "generic":
|
|
513
|
-
return renderGenericCard();
|
|
514
|
-
default:
|
|
515
|
-
return null;
|
|
92
|
+
else if (showBgPattern) {
|
|
93
|
+
const patternConfig = getPatternConfig(patternType);
|
|
94
|
+
cardStyles.backgroundRepeat = "repeat";
|
|
95
|
+
cardStyles.backgroundSize = patternConfig.backgroundSize || "auto";
|
|
96
|
+
cardStyles.backgroundPosition = patternConfig.backgroundPosition || "top left";
|
|
516
97
|
}
|
|
517
|
-
|
|
518
|
-
|
|
98
|
+
else if (showOverlay) {
|
|
99
|
+
cardStyles.backgroundRepeat = "no-repeat";
|
|
100
|
+
cardStyles.backgroundSize = "100% 100%";
|
|
101
|
+
cardStyles.backgroundPosition = "center";
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return (_jsx("div", { ref: ref, className: className, style: cardStyles, ...rest, children: children || (_jsx("div", { style: {
|
|
105
|
+
backgroundColor: "var(--bg-warning-tonal)",
|
|
106
|
+
border: "var(--border-width-25) dashed var(--border-warning)",
|
|
107
|
+
padding: "var(--spacing-200) 8px",
|
|
108
|
+
borderRadius: "var(--corner-radius-100)",
|
|
109
|
+
width: "100%",
|
|
110
|
+
display: "flex",
|
|
111
|
+
alignItems: "center",
|
|
112
|
+
justifyContent: "center",
|
|
113
|
+
minHeight: "32px",
|
|
114
|
+
}, children: _jsx("div", { style: { color: "var(--fg-warning-on-tonal)" }, children: _jsx(ArrowDownFallSlotIcon, { size: "xs" }) }) })) }));
|
|
519
115
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export { Menu, type MenuItem as MenuItemData } from "./components/Menu";
|
|
|
9
9
|
export { MenuItem, type MenuItemProps, type MenuItemState } from "./components/MenuItem";
|
|
10
10
|
export { RadioButton } from "./components/RadioButton";
|
|
11
11
|
export type { ButtonProps, ButtonVariant, ButtonSize, CornerRadiusStep, JustifyContent, ButtonState, ButtonColor } from "./components/Button";
|
|
12
|
-
export type { CardProps,
|
|
12
|
+
export type { CardProps, CardStatus, CardShadow } from "./components/Card";
|
|
13
13
|
export type { CheckboxProps, CheckboxStatus } from "./components/Checkbox";
|
|
14
14
|
export type { SwitchProps, SwitchStatus } from "./components/Switch";
|
|
15
15
|
export type { InputProps, InputSize, InputStatus } from "./components/Input";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9I,YAAY,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9I,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3E,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3G,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGlF,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
|
|
@@ -12,8 +12,8 @@ export interface PatternConfig {
|
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Pattern configurations with image URLs and tiling settings
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* Images are stored in the package assets and copied to public/images/patterns/ during build
|
|
16
|
+
* They are referenced via /images/patterns/ paths in the consuming application
|
|
17
17
|
*/
|
|
18
18
|
export declare const PATTERN_CONFIGS: Record<PatternType, PatternConfig>;
|
|
19
19
|
/**
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
/**
|
|
7
7
|
* Pattern configurations with image URLs and tiling settings
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Images are stored in the package assets and copied to public/images/patterns/ during build
|
|
9
|
+
* They are referenced via /images/patterns/ paths in the consuming application
|
|
10
10
|
*/
|
|
11
11
|
export const PATTERN_CONFIGS = {
|
|
12
12
|
default: {
|
|
@@ -14,60 +14,60 @@ export const PATTERN_CONFIGS = {
|
|
|
14
14
|
backgroundSize: "128px 128px",
|
|
15
15
|
},
|
|
16
16
|
cubes: {
|
|
17
|
-
imageUrl: "
|
|
17
|
+
imageUrl: "/images/patterns/Cube_pt.png",
|
|
18
18
|
backgroundSize: "33.5px 50px",
|
|
19
19
|
backgroundPosition: "top left",
|
|
20
20
|
},
|
|
21
21
|
mathematics: {
|
|
22
|
-
imageUrl: "
|
|
22
|
+
imageUrl: "/images/patterns/Maths_pt.png",
|
|
23
23
|
backgroundSize: "64px 128px",
|
|
24
24
|
backgroundPosition: "top left",
|
|
25
25
|
inset: "0 -322px -322px 0",
|
|
26
26
|
},
|
|
27
27
|
dots: {
|
|
28
|
-
imageUrl: "
|
|
28
|
+
imageUrl: "/images/patterns/Dots_pt.png",
|
|
29
29
|
backgroundSize: "186px 186px",
|
|
30
30
|
backgroundPosition: "top left",
|
|
31
31
|
inset: "0 -322px -322px 0",
|
|
32
32
|
},
|
|
33
33
|
diagonal: {
|
|
34
|
-
imageUrl: "
|
|
34
|
+
imageUrl: "/images/patterns/Diagonal_pt.png",
|
|
35
35
|
backgroundSize: "7px 7px",
|
|
36
36
|
backgroundPosition: "top left",
|
|
37
37
|
inset: "0 -322px -322px 0",
|
|
38
38
|
},
|
|
39
39
|
smudge: {
|
|
40
|
-
imageUrl: "
|
|
40
|
+
imageUrl: "/images/patterns/Smudge_pt.png",
|
|
41
41
|
backgroundSize: "200px 200px",
|
|
42
42
|
backgroundPosition: "top left",
|
|
43
43
|
inset: "0 -322px -322px 0",
|
|
44
44
|
},
|
|
45
45
|
paper: {
|
|
46
|
-
imageUrl: "
|
|
46
|
+
imageUrl: "/images/patterns/Rough_Paper_pt.png",
|
|
47
47
|
backgroundSize: "158px 158px",
|
|
48
48
|
backgroundPosition: "top left",
|
|
49
49
|
inset: "0 -322px -322px 0",
|
|
50
50
|
},
|
|
51
51
|
denim: {
|
|
52
|
-
imageUrl: "
|
|
52
|
+
imageUrl: "/images/patterns/Denim_pt.png",
|
|
53
53
|
backgroundSize: "210px 163px",
|
|
54
54
|
backgroundPosition: "top left",
|
|
55
55
|
inset: "0 -322px -322px 0",
|
|
56
56
|
},
|
|
57
57
|
squares: {
|
|
58
|
-
imageUrl: "
|
|
58
|
+
imageUrl: "/images/patterns/Squares_pt.png",
|
|
59
59
|
backgroundSize: "32px 32px",
|
|
60
60
|
backgroundPosition: "top left",
|
|
61
61
|
inset: "0 -322px -322px 0",
|
|
62
62
|
},
|
|
63
63
|
mosaic: {
|
|
64
|
-
imageUrl: "
|
|
64
|
+
imageUrl: "/images/patterns/Mosaic_pt.png",
|
|
65
65
|
backgroundSize: "355px 288px",
|
|
66
66
|
backgroundPosition: "top left",
|
|
67
67
|
inset: "0 -322px -322px 0",
|
|
68
68
|
},
|
|
69
69
|
cotton: {
|
|
70
|
-
imageUrl: "
|
|
70
|
+
imageUrl: "/images/patterns/Cotton_pt.png",
|
|
71
71
|
backgroundSize: "157.5px 157.5px",
|
|
72
72
|
backgroundPosition: "top left",
|
|
73
73
|
inset: "0 -322px -322px 0",
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "beacon-ui",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Beacon Design System - Components and tokens",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist",
|
|
9
9
|
"tokens",
|
|
10
|
+
"assets",
|
|
10
11
|
"README.md",
|
|
11
12
|
"CHANGELOG.md"
|
|
12
13
|
],
|