@softwareone/spi-sv5-library 0.1.3 → 1.1.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/README.md +75 -19
- package/dist/Avatar/Avatar.svelte +33 -0
- package/dist/Avatar/Avatar.svelte.d.ts +10 -0
- package/dist/Breadcrumbs/Breadcrumbs.svelte +10 -20
- package/dist/Button/Button.svelte +66 -115
- package/dist/Button/Button.svelte.d.ts +8 -6
- package/dist/Card/Card.svelte +18 -44
- package/dist/Card/Card.svelte.d.ts +1 -1
- package/dist/Chips/Chips.svelte +40 -46
- package/dist/Chips/Chips.svelte.d.ts +2 -1
- package/dist/Chips/chipsState.svelte.d.ts +7 -0
- package/dist/Chips/chipsState.svelte.js +8 -0
- package/dist/ErrorPage/ErrorPage.svelte +96 -0
- package/dist/ErrorPage/ErrorPage.svelte.d.ts +7 -0
- package/dist/Footer/Footer.svelte +29 -135
- package/dist/Footer/Footer.svelte.d.ts +1 -1
- package/dist/Form/Input/Input.svelte +393 -0
- package/dist/Form/Input/Input.svelte.d.ts +14 -0
- package/dist/Form/Input/InputIcon.svelte +97 -0
- package/dist/Form/Input/InputIcon.svelte.d.ts +9 -0
- package/dist/Form/TextArea/TextArea.svelte +260 -0
- package/dist/Form/TextArea/TextArea.svelte.d.ts +13 -0
- package/dist/Form/Toggle/Toggle.svelte +120 -0
- package/dist/{Toggle → Form/Toggle}/Toggle.svelte.d.ts +4 -3
- package/dist/Header/Header.svelte +54 -136
- package/dist/Header/Header.svelte.d.ts +2 -2
- package/dist/Header/HeaderAccount.svelte +14 -35
- package/dist/Header/HeaderLoader.svelte +2 -2
- package/dist/Header/HeaderLogo.svelte +7 -4
- package/dist/Header/HeaderLogo.svelte.d.ts +14 -6
- package/dist/HighlightPanel/HighlightPanel.svelte +125 -0
- package/dist/HighlightPanel/HighlightPanel.svelte.d.ts +10 -0
- package/dist/HighlightPanel/highlightPanelState.svelte.d.ts +35 -0
- package/dist/HighlightPanel/highlightPanelState.svelte.js +13 -0
- package/dist/Menu/Menu.svelte +158 -0
- package/dist/Menu/Menu.svelte.d.ts +8 -0
- package/dist/Menu/MenuItem.svelte +149 -0
- package/dist/Menu/MenuItem.svelte.d.ts +11 -0
- package/dist/Menu/Sidebar.svelte +228 -0
- package/dist/Menu/Sidebar.svelte.d.ts +11 -0
- package/dist/Menu/SidebarState.svelte.d.ts +6 -0
- package/dist/Menu/SidebarState.svelte.js +1 -0
- package/dist/Modal/Modal.svelte +81 -29
- package/dist/Modal/Modal.svelte.d.ts +2 -9
- package/dist/Modal/ModalContent.svelte +8 -88
- package/dist/Modal/ModalContent.svelte.d.ts +2 -3
- package/dist/Modal/ModalFooter.svelte +21 -66
- package/dist/Modal/ModalFooter.svelte.d.ts +5 -5
- package/dist/Modal/ModalHeader.svelte +50 -34
- package/dist/Modal/ModalHeader.svelte.d.ts +5 -4
- package/dist/Modal/modalState.svelte.d.ts +15 -0
- package/dist/Modal/modalState.svelte.js +1 -0
- package/dist/ProgressWizard/ProgressWizard.svelte +273 -294
- package/dist/ProgressWizard/ProgressWizard.svelte.d.ts +11 -13
- package/dist/ProgressWizard/progressWizardState.svelte.d.ts +6 -0
- package/dist/ProgressWizard/progressWizardState.svelte.js +1 -0
- package/dist/Search/Search.svelte +154 -0
- package/dist/Search/Search.svelte.d.ts +10 -0
- package/dist/Tabs/Tabs.svelte +111 -0
- package/dist/Tabs/Tabs.svelte.d.ts +8 -0
- package/dist/Tabs/tabsState.svelte.d.ts +7 -0
- package/dist/Tabs/tabsState.svelte.js +1 -0
- package/dist/Toast/Toast.svelte +116 -49
- package/dist/Toast/toastState.svelte.d.ts +7 -3
- package/dist/Toast/toastState.svelte.js +13 -10
- package/dist/Tooltip/Tooltip.svelte +168 -0
- package/dist/Tooltip/Tooltip.svelte.d.ts +13 -0
- package/dist/assets/icons/feedback.svg +5 -0
- package/dist/index.d.ts +28 -8
- package/dist/index.js +24 -9
- package/package.json +4 -5
- package/dist/Toggle/Toggle.svelte +0 -170
package/README.md
CHANGED
|
@@ -15,32 +15,88 @@ npm install @softwareone/swo-spi-svelte5-library
|
|
|
15
15
|
Import the components you need into your Svelte application:
|
|
16
16
|
|
|
17
17
|
```javascript
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
import {
|
|
19
|
+
Avatar,
|
|
20
|
+
Breadcrumbs,
|
|
21
|
+
Button,
|
|
22
|
+
Card,
|
|
23
|
+
Chips,
|
|
24
|
+
ErrorPage,
|
|
25
|
+
Footer,
|
|
26
|
+
Header,
|
|
27
|
+
HeaderAccount,
|
|
28
|
+
HeaderLoader,
|
|
29
|
+
HeaderLogo,
|
|
30
|
+
HighlightPanel,
|
|
31
|
+
Input,
|
|
32
|
+
Menu,
|
|
33
|
+
Modal,
|
|
34
|
+
ProgressWizard,
|
|
35
|
+
Sidebar,
|
|
36
|
+
Tabs,
|
|
37
|
+
TextArea,
|
|
38
|
+
Toaster,
|
|
39
|
+
Toggle,
|
|
40
|
+
Tooltip
|
|
41
|
+
} from '@softwareone/swo-spi-svelte5-library';
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Import the types you need into your Svelte application:
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
import {
|
|
48
|
+
type BreadcrumbsNameMap,
|
|
49
|
+
type HighlightPanelColumn,
|
|
50
|
+
type MenuItem,
|
|
51
|
+
type ModalProps,
|
|
52
|
+
type ProgressWizardStep,
|
|
53
|
+
type Tab,
|
|
54
|
+
type Toast
|
|
55
|
+
} from '@softwareone/swo-spi-svelte5-library';
|
|
33
56
|
```
|
|
34
57
|
|
|
35
58
|
# List of components
|
|
36
59
|
|
|
60
|
+
- Avatar
|
|
61
|
+
- Breadcrumbs
|
|
37
62
|
- Button
|
|
63
|
+
- Card
|
|
64
|
+
- Chips
|
|
65
|
+
- ErrorPage
|
|
66
|
+
- Footer
|
|
67
|
+
- Form
|
|
68
|
+
- Input
|
|
69
|
+
- TextArea
|
|
70
|
+
- Toggle
|
|
71
|
+
- Header (including a loader)
|
|
72
|
+
- HeaderAccount
|
|
73
|
+
- HeaderLoader
|
|
74
|
+
- HeaderLogo
|
|
75
|
+
- HighlightPanel
|
|
76
|
+
- Menu
|
|
77
|
+
- Sidebar
|
|
38
78
|
- Modal
|
|
79
|
+
- ProgressWizard
|
|
39
80
|
- Spinner
|
|
81
|
+
- Tabs
|
|
40
82
|
- Toaster
|
|
41
|
-
-
|
|
42
|
-
|
|
83
|
+
- Tooltip
|
|
84
|
+
|
|
85
|
+
# List of types per component
|
|
86
|
+
|
|
43
87
|
- Breadcrumbs
|
|
88
|
+
- BreadcrumbsNameMap
|
|
44
89
|
- Chips
|
|
45
|
-
-
|
|
46
|
-
-
|
|
90
|
+
- ChipType
|
|
91
|
+
- HighlightPanel
|
|
92
|
+
- ColumnType
|
|
93
|
+
- HighlightPanelColumn
|
|
94
|
+
- ImageType
|
|
95
|
+
- Menu
|
|
96
|
+
- MenuItem
|
|
97
|
+
- Modal
|
|
98
|
+
- ModalProps
|
|
99
|
+
- ProgressWizard
|
|
100
|
+
- ProgressWizardStep
|
|
101
|
+
- Tab
|
|
102
|
+
- Toast
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
type BackgroundColor = '#472AFF' | '#25282D';
|
|
3
|
+
type TextColor = '#333840' | '#FFFFFF';
|
|
4
|
+
|
|
5
|
+
interface AvatarProps {
|
|
6
|
+
text: string;
|
|
7
|
+
backgroundColor?: BackgroundColor;
|
|
8
|
+
textColor?: TextColor;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let { text, backgroundColor = '#25282D', textColor = '#FFFFFF' }: AvatarProps = $props();
|
|
12
|
+
|
|
13
|
+
const avatarSrc = (name: string): string => {
|
|
14
|
+
const defaultValue = 'SO';
|
|
15
|
+
if (!name) return defaultValue;
|
|
16
|
+
const [lastName, firstName] = name.split(' ');
|
|
17
|
+
return `${firstName[0]}${lastName[0]}`.toUpperCase();
|
|
18
|
+
};
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<svg class="avatar" width="40" height="40" viewBox="0 0 40 40">
|
|
22
|
+
<circle cx="20" cy="20" r="20" fill={backgroundColor} />
|
|
23
|
+
<text x="20" y="25" text-anchor="middle" font-size="14" font-weight="normal" fill={textColor}>
|
|
24
|
+
{avatarSrc(text)}
|
|
25
|
+
</text>
|
|
26
|
+
</svg>
|
|
27
|
+
|
|
28
|
+
<style>
|
|
29
|
+
.avatar {
|
|
30
|
+
min-width: 40px;
|
|
31
|
+
min-height: 40px;
|
|
32
|
+
}
|
|
33
|
+
</style>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type BackgroundColor = '#472AFF' | '#25282D';
|
|
2
|
+
type TextColor = '#333840' | '#FFFFFF';
|
|
3
|
+
interface AvatarProps {
|
|
4
|
+
text: string;
|
|
5
|
+
backgroundColor?: BackgroundColor;
|
|
6
|
+
textColor?: TextColor;
|
|
7
|
+
}
|
|
8
|
+
declare const Avatar: import("svelte").Component<AvatarProps, {}, "">;
|
|
9
|
+
type Avatar = ReturnType<typeof Avatar>;
|
|
10
|
+
export default Avatar;
|
|
@@ -32,56 +32,46 @@
|
|
|
32
32
|
|
|
33
33
|
<style>
|
|
34
34
|
.breadcrumb {
|
|
35
|
-
list-style: none;
|
|
36
35
|
display: inline-flex;
|
|
37
36
|
align-items: flex-end;
|
|
38
37
|
gap: 9px;
|
|
39
38
|
margin-left: 16px;
|
|
40
39
|
padding: 8px 16px;
|
|
41
|
-
color:
|
|
42
|
-
/* regular/2 */
|
|
43
|
-
font-family: 'Haas Grotesk Display Pro', sans-serif;
|
|
40
|
+
color: #472aff;
|
|
44
41
|
font-size: 14px;
|
|
45
42
|
font-style: normal;
|
|
46
43
|
font-weight: 400;
|
|
47
|
-
line-height: 20px;
|
|
44
|
+
line-height: 20px;
|
|
48
45
|
text-decoration-line: none;
|
|
49
46
|
}
|
|
47
|
+
|
|
50
48
|
.breadcrumb li::after {
|
|
51
49
|
content: '/';
|
|
52
50
|
margin-left: 8px;
|
|
53
|
-
color:
|
|
54
|
-
/* regular/2 */
|
|
55
|
-
font-family: 'Haas Grotesk Display Pro', sans-serif;
|
|
51
|
+
color: #472aff;
|
|
56
52
|
font-size: 14px;
|
|
57
53
|
font-style: normal;
|
|
58
54
|
font-weight: 400;
|
|
59
|
-
line-height: 20px;
|
|
55
|
+
line-height: 20px;
|
|
60
56
|
}
|
|
57
|
+
|
|
61
58
|
.breadcrumb li:last-child::after {
|
|
62
59
|
content: '';
|
|
63
60
|
}
|
|
61
|
+
|
|
64
62
|
.breadcrumbActive {
|
|
65
|
-
color:
|
|
66
|
-
/* bold/4 */
|
|
67
|
-
font-family: 'Haas Grotesk Display Pro', sans-serif;
|
|
63
|
+
color: #000;
|
|
68
64
|
font-size: 18px;
|
|
69
65
|
font-style: normal;
|
|
70
66
|
font-weight: 700;
|
|
71
|
-
line-height: 20px;
|
|
72
|
-
}
|
|
73
|
-
/* Prevent the visited (purple) color */
|
|
74
|
-
.breadcrumb a {
|
|
75
|
-
color: inherit; /* Keeps the same color as the parent */
|
|
76
|
-
text-decoration: none; /* Optional: removes underline */
|
|
67
|
+
line-height: 20px;
|
|
77
68
|
}
|
|
78
69
|
|
|
79
70
|
.breadcrumb a:visited {
|
|
80
|
-
color: inherit;
|
|
71
|
+
color: inherit;
|
|
81
72
|
}
|
|
82
73
|
|
|
83
74
|
.breadcrumb a:hover {
|
|
84
|
-
text-decoration: none; /* Optional: Add an underline on hover */
|
|
85
75
|
color: #2b1999;
|
|
86
76
|
}
|
|
87
77
|
</style>
|
|
@@ -1,172 +1,123 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
variant?: 'primary' | 'danger';
|
|
5
|
-
disabled?: boolean;
|
|
6
|
-
onClick?: () => void;
|
|
7
|
-
name?: string;
|
|
8
|
-
}
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
9
4
|
|
|
10
|
-
|
|
5
|
+
type Variant = 'primary' | 'secondary' | 'outline' | 'outline-none';
|
|
6
|
+
type VariantColor = 'primary' | 'danger';
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
interface ButtonProps extends HTMLButtonAttributes {
|
|
9
|
+
variant?: Variant;
|
|
10
|
+
variantColor?: VariantColor;
|
|
11
|
+
children: Snippet;
|
|
12
|
+
}
|
|
16
13
|
|
|
17
|
-
let
|
|
14
|
+
let { variant = 'primary', variantColor = 'primary', children, ...props }: ButtonProps = $props();
|
|
18
15
|
</script>
|
|
19
16
|
|
|
20
|
-
<button class={
|
|
17
|
+
<button class="btn btn-{variant}-{variantColor}" {...props}>
|
|
18
|
+
{@render children()}
|
|
19
|
+
</button>
|
|
21
20
|
|
|
22
21
|
<style>
|
|
23
|
-
.btn
|
|
24
|
-
.btn-secondary-primary,
|
|
25
|
-
.btn-outline-primary,
|
|
26
|
-
.btn-primary-danger,
|
|
27
|
-
.btn-secondary-danger,
|
|
28
|
-
.btn-outline-danger {
|
|
29
|
-
display: inline-flex;
|
|
22
|
+
.btn {
|
|
30
23
|
padding: 8px 16px;
|
|
31
|
-
align-items: flex-start;
|
|
32
|
-
gap: 8px;
|
|
33
24
|
border-radius: 8px;
|
|
34
25
|
border: none;
|
|
35
|
-
font-family: 'Haas Grotesk Display Pro', sans-serif;
|
|
36
26
|
font-size: 14px;
|
|
37
27
|
font-style: normal;
|
|
38
28
|
font-weight: 400;
|
|
39
|
-
line-height: 20px;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.btn-primary-primary {
|
|
43
|
-
background: var(--brand-primary, #472aff);
|
|
44
|
-
color: var(--brand-white, #fff);
|
|
29
|
+
line-height: 20px;
|
|
45
30
|
}
|
|
46
31
|
|
|
47
|
-
.btn
|
|
48
|
-
.btn
|
|
49
|
-
background: var(--brand-primary, #3520bf);
|
|
32
|
+
.btn:hover:not(:disabled),
|
|
33
|
+
.btn:focus:not(:disabled) {
|
|
50
34
|
cursor: pointer;
|
|
51
35
|
}
|
|
52
36
|
|
|
53
|
-
.btn
|
|
37
|
+
.btn:focus:not(:disabled),
|
|
38
|
+
.btn:focus-visible:not(:disabled) {
|
|
54
39
|
box-shadow: 0px 0px 0px 3px #959bff;
|
|
40
|
+
outline: none;
|
|
55
41
|
}
|
|
56
42
|
|
|
57
|
-
.btn
|
|
58
|
-
background:
|
|
59
|
-
color:
|
|
43
|
+
.btn:disabled {
|
|
44
|
+
background: #e0e5e8;
|
|
45
|
+
color: #6b7180;
|
|
60
46
|
cursor: not-allowed;
|
|
61
47
|
}
|
|
62
48
|
|
|
63
|
-
.btn-
|
|
64
|
-
background:
|
|
65
|
-
color:
|
|
49
|
+
.btn-primary-primary {
|
|
50
|
+
background: #472aff;
|
|
51
|
+
color: #fff;
|
|
66
52
|
}
|
|
67
53
|
|
|
68
|
-
.btn-
|
|
69
|
-
.btn-
|
|
70
|
-
background:
|
|
71
|
-
color: var(--brand-white, #fff);
|
|
72
|
-
cursor: pointer;
|
|
54
|
+
.btn-primary-primary:hover:not(:disabled),
|
|
55
|
+
.btn-primary-primary:focus:not(:disabled) {
|
|
56
|
+
background: #3520bf;
|
|
73
57
|
}
|
|
74
58
|
|
|
75
|
-
.btn-secondary-primary
|
|
76
|
-
|
|
59
|
+
.btn-secondary-primary {
|
|
60
|
+
background: #eaecff;
|
|
61
|
+
color: #472aff;
|
|
77
62
|
}
|
|
78
63
|
|
|
79
|
-
.btn-secondary-primary:disabled
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
64
|
+
.btn-secondary-primary:hover:not(:disabled),
|
|
65
|
+
.btn-secondary-primary:focus:not(:disabled) {
|
|
66
|
+
background: #472aff;
|
|
67
|
+
color: #fff;
|
|
83
68
|
}
|
|
84
69
|
|
|
85
70
|
.btn-outline-primary {
|
|
86
|
-
border: 1px solid
|
|
87
|
-
background:
|
|
88
|
-
color:
|
|
71
|
+
border: 1px solid #472aff;
|
|
72
|
+
background: #fff;
|
|
73
|
+
color: #472aff;
|
|
89
74
|
}
|
|
90
75
|
|
|
91
|
-
.btn-outline-primary:hover,
|
|
92
|
-
.btn-outline-primary:focus {
|
|
93
|
-
background:
|
|
94
|
-
cursor: pointer;
|
|
76
|
+
.btn-outline-primary:hover:not(:disabled),
|
|
77
|
+
.btn-outline-primary:focus:not(:disabled) {
|
|
78
|
+
background: #eaecff;
|
|
95
79
|
}
|
|
96
80
|
|
|
97
|
-
.btn-outline-primary
|
|
98
|
-
|
|
81
|
+
.btn-outline-none-primary {
|
|
82
|
+
border: none;
|
|
83
|
+
background: #fff;
|
|
84
|
+
color: #472aff;
|
|
99
85
|
}
|
|
100
86
|
|
|
101
|
-
.btn-outline-primary:disabled
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
cursor: not-allowed;
|
|
87
|
+
.btn-outline-none-primary:hover:not(:disabled),
|
|
88
|
+
.btn-outline-none-primary:focus:not(:disabled) {
|
|
89
|
+
background: #e0e5e8;
|
|
105
90
|
}
|
|
106
91
|
|
|
107
92
|
.btn-primary-danger {
|
|
108
|
-
background:
|
|
109
|
-
color:
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.btn-primary-danger:hover,
|
|
113
|
-
.btn-primary-danger:focus {
|
|
114
|
-
background: var(--brand-primary, #bb1425);
|
|
115
|
-
cursor: pointer;
|
|
93
|
+
background: #dc182c;
|
|
94
|
+
color: #fff;
|
|
116
95
|
}
|
|
117
96
|
|
|
118
|
-
.btn-primary-danger:
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
.btn-primary-danger:disabled {
|
|
123
|
-
background: var(--brand-primary, #e0e5e8);
|
|
124
|
-
color: var(--brand-white, #6b7180);
|
|
125
|
-
cursor: not-allowed;
|
|
97
|
+
.btn-primary-danger:hover:not(:disabled),
|
|
98
|
+
.btn-primary-danger:focus:not(:disabled) {
|
|
99
|
+
background: #bb1425;
|
|
126
100
|
}
|
|
127
101
|
|
|
128
102
|
.btn-secondary-danger {
|
|
129
|
-
background:
|
|
130
|
-
color:
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.btn-secondary-danger:hover,
|
|
134
|
-
.btn-secondary-danger:focus {
|
|
135
|
-
background: var(--brand-primary, #dc182c);
|
|
136
|
-
color: var(--brand-white, #fff);
|
|
137
|
-
cursor: pointer;
|
|
103
|
+
background: #fce8ea;
|
|
104
|
+
color: #dc182c;
|
|
138
105
|
}
|
|
139
106
|
|
|
140
|
-
.btn-secondary-danger:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
.btn-secondary-danger:disabled {
|
|
145
|
-
background: var(--brand-primary, #e0e5e8);
|
|
146
|
-
color: var(--brand-white, #6b7180);
|
|
147
|
-
cursor: not-allowed;
|
|
107
|
+
.btn-secondary-danger:hover:not(:disabled),
|
|
108
|
+
.btn-secondary-danger:focus:not(:disabled) {
|
|
109
|
+
background: #dc182c;
|
|
110
|
+
color: #fff;
|
|
148
111
|
}
|
|
149
112
|
|
|
150
113
|
.btn-outline-danger {
|
|
151
|
-
border: 1px solid
|
|
152
|
-
background:
|
|
153
|
-
color:
|
|
114
|
+
border: 1px solid #dc182c;
|
|
115
|
+
background: #fff;
|
|
116
|
+
color: #dc182c;
|
|
154
117
|
}
|
|
155
118
|
|
|
156
|
-
.btn-outline-danger:hover,
|
|
157
|
-
.btn-outline-danger:focus {
|
|
158
|
-
background:
|
|
159
|
-
cursor: pointer;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
.btn-outline-danger:focus {
|
|
163
|
-
box-shadow: 0px 0px 0px 3px #959bff;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
.btn-outline-danger:disabled {
|
|
167
|
-
background: var(--brand-primary, #e0e5e8);
|
|
168
|
-
color: var(--brand-white, #6b7180);
|
|
169
|
-
cursor: not-allowed;
|
|
170
|
-
border: none;
|
|
119
|
+
.btn-outline-danger:hover:not(:disabled),
|
|
120
|
+
.btn-outline-danger:focus:not(:disabled) {
|
|
121
|
+
background: #fce8ea;
|
|
171
122
|
}
|
|
172
123
|
</style>
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
3
|
+
type Variant = 'primary' | 'secondary' | 'outline' | 'outline-none';
|
|
4
|
+
type VariantColor = 'primary' | 'danger';
|
|
5
|
+
interface ButtonProps extends HTMLButtonAttributes {
|
|
6
|
+
variant?: Variant;
|
|
7
|
+
variantColor?: VariantColor;
|
|
8
|
+
children: Snippet;
|
|
7
9
|
}
|
|
8
10
|
declare const Button: import("svelte").Component<ButtonProps, {}, "">;
|
|
9
11
|
type Button = ReturnType<typeof Button>;
|
package/dist/Card/Card.svelte
CHANGED
|
@@ -3,70 +3,44 @@
|
|
|
3
3
|
|
|
4
4
|
interface CardProps {
|
|
5
5
|
alignItems?: 'left' | 'center' | 'right';
|
|
6
|
-
type?: '
|
|
6
|
+
type?: 'layout' | 'highlight';
|
|
7
7
|
children?: Snippet;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
let { alignItems, type, children }: CardProps = $props();
|
|
11
|
-
|
|
12
|
-
alignItems = alignItems ?? 'left';
|
|
13
|
-
type = type ?? 'default';
|
|
14
|
-
|
|
15
|
-
const getCardType = (type: string): string => {
|
|
16
|
-
const types: Record<string, string> = {
|
|
17
|
-
layout: 'card-layout',
|
|
18
|
-
default: 'card'
|
|
19
|
-
};
|
|
20
|
-
return types[type] || 'card'; // Default to card if type is unknown
|
|
21
|
-
};
|
|
10
|
+
let { alignItems = 'left', type = 'layout', children }: CardProps = $props();
|
|
22
11
|
</script>
|
|
23
12
|
|
|
24
|
-
<div
|
|
25
|
-
|
|
26
|
-
data-align={alignItems}
|
|
27
|
-
>
|
|
28
|
-
<div class="card-content">
|
|
29
|
-
{@render children?.()}
|
|
30
|
-
</div>
|
|
13
|
+
<div class="card card-{type}" data-align={alignItems}>
|
|
14
|
+
{@render children?.()}
|
|
31
15
|
</div>
|
|
32
16
|
|
|
33
17
|
<style>
|
|
34
|
-
.card
|
|
35
|
-
.card-layout {
|
|
18
|
+
.card {
|
|
36
19
|
display: inline-flex;
|
|
37
|
-
margin-left: 24px;
|
|
38
|
-
margin-right: 48px;
|
|
39
|
-
margin-bottom: 24px;
|
|
40
|
-
height: calc(100vh);
|
|
41
|
-
min-width: 222px;
|
|
42
|
-
min-height: 222px;
|
|
43
20
|
flex-direction: column;
|
|
44
|
-
|
|
45
|
-
|
|
21
|
+
width: 100%;
|
|
22
|
+
min-width: 222px;
|
|
23
|
+
min-height: var(--card-min-height, auto);
|
|
24
|
+
background: #fff;
|
|
25
|
+
margin-bottom: 24px;
|
|
26
|
+
padding: 24px;
|
|
27
|
+
border-radius: 16px;
|
|
46
28
|
box-shadow:
|
|
47
|
-
0px 1px 16px
|
|
48
|
-
0px 1px 3px
|
|
29
|
+
0px 1px 16px rgba(107, 113, 128, 0.1),
|
|
30
|
+
0px 1px 3px rgba(107, 113, 128, 0.2);
|
|
49
31
|
}
|
|
50
32
|
|
|
51
33
|
.card-layout {
|
|
52
|
-
height:
|
|
53
|
-
width: calc(100% - 48px);
|
|
34
|
+
--card-min-height: 100vh;
|
|
54
35
|
}
|
|
55
36
|
|
|
56
|
-
.card[data-align='left']
|
|
57
|
-
.card-layout[data-align='left'] {
|
|
37
|
+
.card[data-align='left'] {
|
|
58
38
|
align-items: flex-start;
|
|
59
39
|
}
|
|
60
|
-
.card[data-align='center']
|
|
61
|
-
.card-layout[data-align='center'] {
|
|
40
|
+
.card[data-align='center'] {
|
|
62
41
|
align-items: center;
|
|
63
42
|
}
|
|
64
|
-
.card[data-align='right']
|
|
65
|
-
.card-layout[data-align='right'] {
|
|
43
|
+
.card[data-align='right'] {
|
|
66
44
|
align-items: flex-end;
|
|
67
45
|
}
|
|
68
|
-
|
|
69
|
-
.card-content {
|
|
70
|
-
padding: 24px;
|
|
71
|
-
}
|
|
72
46
|
</style>
|