@sebgroup/green-core 3.23.0 → 3.24.1
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/assets/icons/regular/satellite.svg +6 -0
- package/assets/icons/solid/satellite.svg +5 -0
- package/components/button/button.component.js +6 -1
- package/components/calendar/calendar.component.js +2 -1
- package/components/context-menu/context-menu.component.js +3 -0
- package/components/datepicker/datepicker.component.js +57 -13
- package/components/icon/icons/index.d.ts +1 -0
- package/components/icon/icons/index.js +1 -0
- package/components/icon/icons/pure.d.ts +1 -0
- package/components/icon/icons/pure.js +1 -0
- package/components/icon/icons/satellite.component.d.ts +18 -0
- package/components/icon/icons/satellite.component.js +25 -0
- package/components/icon/icons/satellite.d.ts +2 -0
- package/components/icon/icons/satellite.js +6 -0
- package/components/link/link.styles.js +23 -3
- package/components/popover/popover.component.js +3 -2
- package/components/table/table.stories.data.js +186 -182
- package/custom-elements.json +27017 -26394
- package/gds-element.js +1 -1
- package/generated/mcp/alert/index.json +0 -1
- package/generated/mcp/avatar/index.json +0 -1
- package/generated/mcp/badge/index.json +0 -1
- package/generated/mcp/blur/index.json +0 -1
- package/generated/mcp/breadcrumbs/index.json +0 -1
- package/generated/mcp/button/index.json +0 -1
- package/generated/mcp/calendar/index.json +0 -1
- package/generated/mcp/card/index.json +0 -1
- package/generated/mcp/card-pattern-01/index.json +0 -1
- package/generated/mcp/checkbox/index.json +0 -1
- package/generated/mcp/coachmark/index.json +0 -1
- package/generated/mcp/components.json +1 -44
- package/generated/mcp/context-menu/index.json +0 -1
- package/generated/mcp/datepicker/index.json +0 -1
- package/generated/mcp/details/index.json +0 -1
- package/generated/mcp/dialog/index.json +0 -1
- package/generated/mcp/div/index.json +0 -1
- package/generated/mcp/divider/index.json +0 -1
- package/generated/mcp/dropdown/index.json +0 -1
- package/generated/mcp/fab/index.json +0 -1
- package/generated/mcp/filter-chips/index.json +0 -1
- package/generated/mcp/flex/index.json +0 -1
- package/generated/mcp/form-summary/index.json +0 -1
- package/generated/mcp/grid/index.json +0 -1
- package/generated/mcp/icon-satellite/angular.md +15 -0
- package/generated/mcp/icon-satellite/api.md +31 -0
- package/generated/mcp/icon-satellite/index.json +8 -0
- package/generated/mcp/icon-satellite/react.md +15 -0
- package/generated/mcp/icons.json +13 -1
- package/generated/mcp/index.json +1 -1
- package/generated/mcp/input/index.json +0 -1
- package/generated/mcp/link/index.json +0 -1
- package/generated/mcp/list/index.json +0 -1
- package/generated/mcp/list-item-pattern-01/index.json +0 -1
- package/generated/mcp/menu-button/index.json +0 -1
- package/generated/mcp/pagination/index.json +0 -1
- package/generated/mcp/popover/index.json +0 -1
- package/generated/mcp/radio/index.json +0 -1
- package/generated/mcp/rich-text/index.json +0 -1
- package/generated/mcp/segmented-control/index.json +0 -1
- package/generated/mcp/select/index.json +0 -1
- package/generated/mcp/signal/index.json +0 -1
- package/generated/mcp/spinner/index.json +0 -1
- package/generated/mcp/switch/index.json +0 -1
- package/generated/mcp/table/index.json +0 -1
- package/generated/mcp/tabs/index.json +0 -1
- package/generated/mcp/text/index.json +0 -1
- package/generated/mcp/textarea/index.json +0 -1
- package/generated/mcp/theme/index.json +0 -1
- package/generated/mcp/tokens.json +1 -1
- package/generated/mcp/video/index.json +0 -1
- package/generated/react/icons/icon-satellite/index.d.ts +691 -0
- package/generated/react/icons/icon-satellite/index.js +14 -0
- package/generated/react/index.d.ts +2 -1
- package/generated/react/index.js +2 -1
- package/package.json +2 -1
- package/utils/helpers/custom-element-scoping.js +1 -1
- package/utils/helpers/has-changed.d.ts +8 -0
- package/utils/helpers/has-changed.js +10 -0
- package/generated/mcp/alert/guidelines.md +0 -105
- package/generated/mcp/avatar/guidelines.md +0 -40
- package/generated/mcp/badge/guidelines.md +0 -56
- package/generated/mcp/blur/guidelines.md +0 -3
- package/generated/mcp/breadcrumbs/guidelines.md +0 -35
- package/generated/mcp/button/guidelines.md +0 -83
- package/generated/mcp/calendar/guidelines.md +0 -3
- package/generated/mcp/card/guidelines.md +0 -78
- package/generated/mcp/card-pattern-01/guidelines.md +0 -52
- package/generated/mcp/checkbox/guidelines.md +0 -91
- package/generated/mcp/coachmark/guidelines.md +0 -8
- package/generated/mcp/context-menu/guidelines.md +0 -33
- package/generated/mcp/datepicker/guidelines.md +0 -44
- package/generated/mcp/details/guidelines.md +0 -24
- package/generated/mcp/dialog/guidelines.md +0 -35
- package/generated/mcp/div/guidelines.md +0 -3
- package/generated/mcp/divider/guidelines.md +0 -24
- package/generated/mcp/dropdown/guidelines.md +0 -96
- package/generated/mcp/fab/guidelines.md +0 -27
- package/generated/mcp/filter-chips/guidelines.md +0 -47
- package/generated/mcp/flex/guidelines.md +0 -1
- package/generated/mcp/form-summary/guidelines.md +0 -39
- package/generated/mcp/grid/guidelines.md +0 -3
- package/generated/mcp/input/guidelines.md +0 -127
- package/generated/mcp/link/guidelines.md +0 -43
- package/generated/mcp/list/guidelines.md +0 -16
- package/generated/mcp/list-item-pattern-01/guidelines.md +0 -49
- package/generated/mcp/menu-button/guidelines.md +0 -39
- package/generated/mcp/pagination/guidelines.md +0 -24
- package/generated/mcp/popover/guidelines.md +0 -3
- package/generated/mcp/radio/guidelines.md +0 -74
- package/generated/mcp/rich-text/guidelines.md +0 -3
- package/generated/mcp/segmented-control/guidelines.md +0 -31
- package/generated/mcp/select/guidelines.md +0 -29
- package/generated/mcp/signal/guidelines.md +0 -14
- package/generated/mcp/spinner/guidelines.md +0 -6
- package/generated/mcp/switch/guidelines.md +0 -41
- package/generated/mcp/table/guidelines.md +0 -169
- package/generated/mcp/tabs/guidelines.md +0 -64
- package/generated/mcp/text/guidelines.md +0 -3
- package/generated/mcp/textarea/guidelines.md +0 -73
- package/generated/mcp/theme/guidelines.md +0 -3
- package/generated/mcp/video/guidelines.md +0 -3
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import "../../../../chunks/chunk.CAV4X6PU.js";
|
|
2
|
+
import { createElement } from "react";
|
|
3
|
+
import { IconSatellite as IconSatelliteClass } from "../../../../components/icon/icons/satellite.component.js";
|
|
4
|
+
import { getReactComponent } from "../../../../utils/react.js";
|
|
5
|
+
const IconSatellite = (props) => {
|
|
6
|
+
IconSatelliteClass.define();
|
|
7
|
+
const JSXElement = getReactComponent("gds-icon-satellite");
|
|
8
|
+
const propsWithClass = { ...props, class: props.className, ref: props.ref };
|
|
9
|
+
return createElement(JSXElement, propsWithClass);
|
|
10
|
+
};
|
|
11
|
+
IconSatellite.displayName = "IconSatellite";
|
|
12
|
+
export {
|
|
13
|
+
IconSatellite
|
|
14
|
+
};
|
|
@@ -26,8 +26,8 @@ export * from './grouped-list/index.js';
|
|
|
26
26
|
export * from './img/index.js';
|
|
27
27
|
export * from './input/index.js';
|
|
28
28
|
export * from './link/index.js';
|
|
29
|
-
export * from './mask/index.js';
|
|
30
29
|
export * from './list/index.js';
|
|
30
|
+
export * from './mask/index.js';
|
|
31
31
|
export * from './menu-button/index.js';
|
|
32
32
|
export * from './pagination/index.js';
|
|
33
33
|
export * from './backdrop/index.js';
|
|
@@ -315,6 +315,7 @@ export * from './icons/icon-robot/index.js';
|
|
|
315
315
|
export * from './icons/icon-rocket/index.js';
|
|
316
316
|
export * from './icons/icon-run-shortcut/index.js';
|
|
317
317
|
export * from './icons/icon-safari/index.js';
|
|
318
|
+
export * from './icons/icon-satellite/index.js';
|
|
318
319
|
export * from './icons/icon-school/index.js';
|
|
319
320
|
export * from './icons/icon-scissors/index.js';
|
|
320
321
|
export * from './icons/icon-search-menu/index.js';
|
package/generated/react/index.js
CHANGED
|
@@ -26,8 +26,8 @@ export * from "./grouped-list/index.js";
|
|
|
26
26
|
export * from "./img/index.js";
|
|
27
27
|
export * from "./input/index.js";
|
|
28
28
|
export * from "./link/index.js";
|
|
29
|
-
export * from "./mask/index.js";
|
|
30
29
|
export * from "./list/index.js";
|
|
30
|
+
export * from "./mask/index.js";
|
|
31
31
|
export * from "./menu-button/index.js";
|
|
32
32
|
export * from "./pagination/index.js";
|
|
33
33
|
export * from "./backdrop/index.js";
|
|
@@ -315,6 +315,7 @@ export * from "./icons/icon-robot/index.js";
|
|
|
315
315
|
export * from "./icons/icon-rocket/index.js";
|
|
316
316
|
export * from "./icons/icon-run-shortcut/index.js";
|
|
317
317
|
export * from "./icons/icon-safari/index.js";
|
|
318
|
+
export * from "./icons/icon-satellite/index.js";
|
|
318
319
|
export * from "./icons/icon-school/index.js";
|
|
319
320
|
export * from "./icons/icon-scissors/index.js";
|
|
320
321
|
export * from "./icons/icon-search-menu/index.js";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebgroup/green-core",
|
|
3
3
|
"description": "A carefully crafted set of Web Components, laying the foundation of the Green Design System.",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.24.1",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"module": "index.js",
|
|
7
7
|
"type": "module",
|
|
@@ -189,6 +189,7 @@
|
|
|
189
189
|
"./components/icon/icons/search-menu.js",
|
|
190
190
|
"./components/icon/icons/scissors.js",
|
|
191
191
|
"./components/icon/icons/school.js",
|
|
192
|
+
"./components/icon/icons/satellite.js",
|
|
192
193
|
"./components/icon/icons/safari.js",
|
|
193
194
|
"./components/icon/icons/run-shortcut.js",
|
|
194
195
|
"./components/icon/icons/rocket.js",
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `hasChanged` function for Lit reactive properties that treats `Date` values as equal when they
|
|
3
|
+
* represent the same point in time, rather than requiring referential equality. Use this on
|
|
4
|
+
* `Date`-typed properties (e.g. `value`) to avoid triggering reactive side effects, such as `@watch`
|
|
5
|
+
* handlers, when an equivalent but new `Date` instance is assigned - a common occurrence when a value
|
|
6
|
+
* is bound from a framework wrapper that re-renders with freshly created `Date` objects.
|
|
7
|
+
*/
|
|
8
|
+
export declare function dateHasChanged<T>(value: T, oldValue: T): boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import "../../chunks/chunk.CAV4X6PU.js";
|
|
2
|
+
function dateHasChanged(value, oldValue) {
|
|
3
|
+
if (value instanceof Date && oldValue instanceof Date) {
|
|
4
|
+
return value.getTime() !== oldValue.getTime();
|
|
5
|
+
}
|
|
6
|
+
return value !== oldValue;
|
|
7
|
+
}
|
|
8
|
+
export {
|
|
9
|
+
dateHasChanged
|
|
10
|
+
};
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# Alert
|
|
2
|
-
|
|
3
|
-
An alert displays important messages, feedback, or time-sensitive information.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Variants
|
|
9
|
-
|
|
10
|
-
A set of predefined styles that convey different meanings and states through consistent visual treatment each with specific icons.
|
|
11
|
-
|
|
12
|
-
#### Information
|
|
13
|
-
|
|
14
|
-
Used for _passive_, non-critical updates like tips or background information. It's quiet and unobtrusive.
|
|
15
|
-
|
|
16
|
-
#### Notice
|
|
17
|
-
|
|
18
|
-
Used for _actionable_, attention-worthy updates that are still non-critical, like a change in a process or a reminder to do something soon.
|
|
19
|
-
|
|
20
|
-
#### Positive
|
|
21
|
-
|
|
22
|
-
Confirms successful actions, such as form submissions, with a success message, optional next steps, and possible brand reinforcement.
|
|
23
|
-
|
|
24
|
-
#### Warning
|
|
25
|
-
|
|
26
|
-
Highlights non-critical issues, such as upcoming deadlines, with a concise issue summary, optional duration estimate, and suggested actions.
|
|
27
|
-
|
|
28
|
-
#### Negative
|
|
29
|
-
|
|
30
|
-
Communicates critical issues or errors, such as system outages, with a clear problem description, optional apology for system issues, and resolution guidance.
|
|
31
|
-
|
|
32
|
-
### Action button
|
|
33
|
-
|
|
34
|
-
Alert supports an optional action button with customisable text to trigger relevant actions.
|
|
35
|
-
|
|
36
|
-
### Dismissible
|
|
37
|
-
|
|
38
|
-
Alerts can be configured as `dismissible` in order to show a close button in the upper right corner. This also enabled closing the alert by pressing the escape key.
|
|
39
|
-
|
|
40
|
-
### Auto-dismiss
|
|
41
|
-
|
|
42
|
-
Alert can also be set up to use an auto-dismiss timer. In this configuration, a timer progress bar will be shown at the bottom of the alert, and the alert will close once the timer reaches the end.
|
|
43
|
-
|
|
44
|
-
### Placement
|
|
45
|
-
|
|
46
|
-
The most important rule is to place the alert near the issue that triggered it.
|
|
47
|
-
|
|
48
|
-
#### Global alert
|
|
49
|
-
|
|
50
|
-
Used for system-wide messages.
|
|
51
|
-
|
|
52
|
-
* Placed above the header and takes full width of the screen.
|
|
53
|
-
|
|
54
|
-
* The icon, text content, and action button should be center-aligned horizontally.
|
|
55
|
-
|
|
56
|
-
* The dismiss button is placed at the far right.
|
|
57
|
-
|
|
58
|
-
#### Page alert
|
|
59
|
-
|
|
60
|
-
Used for messages affecting the entire page (e.g., _Bankgiro is down_).
|
|
61
|
-
|
|
62
|
-
* Placed at the top of the page, below the header.
|
|
63
|
-
|
|
64
|
-
#### Group alert
|
|
65
|
-
|
|
66
|
-
Used for messages related to a specific module (e.g., _Transaction listing is unavailable_).
|
|
67
|
-
|
|
68
|
-
* Placed within the module, at the top.
|
|
69
|
-
|
|
70
|
-
#### Specific alert
|
|
71
|
-
|
|
72
|
-
Used for messages related to specific content (e.g., _Negative balance_).
|
|
73
|
-
|
|
74
|
-
* Placed directly in the content area, close to the element it concerns (such as a table or field).
|
|
75
|
-
|
|
76
|
-
### Guidelines
|
|
77
|
-
|
|
78
|
-
Select the appropriate variant to match the message’s intent, such as using positive for success messages or negative for errors. Also ensure a meaningful label property is set to describe the alert’s purpose for accessibility. A label should always be set when using alert.
|
|
79
|
-
|
|
80
|
-
Choose the role property carefully, using alert for critical messages and status for informational updates, to align with ARIA best practices.
|
|
81
|
-
|
|
82
|
-
For toast-like messages, like save confirmations and other non-critical messages, auto-dismiss can be used to avoid interrupting user workflows.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
## UX Guidelines
|
|
86
|
-
|
|
87
|
-
### Writing UX text for alerts
|
|
88
|
-
|
|
89
|
-
### Alert with a heading
|
|
90
|
-
|
|
91
|
-
### Alert without a heading
|
|
92
|
-
|
|
93
|
-
### Alert with a button
|
|
94
|
-
|
|
95
|
-
### Alert with a link
|
|
96
|
-
|
|
97
|
-
### Using buttons and links together
|
|
98
|
-
|
|
99
|
-
### Information alert
|
|
100
|
-
|
|
101
|
-
### Success alert
|
|
102
|
-
|
|
103
|
-
### Warning alert
|
|
104
|
-
|
|
105
|
-
### Critical and error alert
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Avatar
|
|
2
|
-
|
|
3
|
-
An avatar represents a user, entity, or object. It is typically displayed as an image, initials, or icon, and helps identify ownership, participation, or presence in the interface.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Usage
|
|
9
|
-
|
|
10
|
-
Use an avatar when you need to represent a user, such as in lists, messages, or account-related contexts. It provides quick visual recognition and helps users understand who is involved in a specific action or piece of content. Avatars are especially useful in collaborative or communication-heavy interfaces where multiple people are present.
|
|
11
|
-
|
|
12
|
-
### Variants
|
|
13
|
-
|
|
14
|
-
The avatar comes in two shapes:
|
|
15
|
-
|
|
16
|
-
- **Circular**
|
|
17
|
-
Used in more prominent or personal contexts, such as the top header or profile-related areas.
|
|
18
|
-
- **Squared**
|
|
19
|
-
Used to represent products, accounts, or organizations. This includes cases like specific account types, funds, or company logos.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
### Sizes
|
|
24
|
-
|
|
25
|
-
The avatar is available in four sizes:
|
|
26
|
-
|
|
27
|
-
- **XS**
|
|
28
|
-
- **S**
|
|
29
|
-
- **M**
|
|
30
|
-
- **L**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
### Grouped avatars
|
|
35
|
-
|
|
36
|
-
Avatars can be grouped to represent multiple users, for example in shared ownership or collaborative contexts. The avatars are displayed in a horizontal stack with a slight overlap to save space and create a cohesive visual unit.
|
|
37
|
-
|
|
38
|
-
To maintain clarity, a maximum of three avatars should be visible at the same time. If more users are included, the remaining count is shown as a “+X” indicator, such as “+2”.
|
|
39
|
-
|
|
40
|
-
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Badge
|
|
2
|
-
|
|
3
|
-
A compact visual indicator for status, counts and notifications.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Usage
|
|
9
|
-
|
|
10
|
-
Badges are especially useful for:
|
|
11
|
-
|
|
12
|
-
* **Status indicators** – Showing that something is new, in progress, needs attention, or has been successfully completed.
|
|
13
|
-
|
|
14
|
-
* **Counters** – Indicating the number of new messages, notifications, or tasks.
|
|
15
|
-
|
|
16
|
-
* **Contextual highlights** – Marking a feature as beta or signaling updates users should be aware of.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
Use badges sparingly – too many can create visual noise and reduce their impact. Always ensure that the badge color, icon and label clearly support the intended message.
|
|
20
|
-
|
|
21
|
-
### Variants
|
|
22
|
-
|
|
23
|
-
A set of predefined styles that convey different meanings and states through consistent visual treatment.
|
|
24
|
-
|
|
25
|
-
* **Information** – For general updates or tips that help the user understand context.
|
|
26
|
-
|
|
27
|
-
* **Notice** – For neutral alerts or flags that are not critical but still relevant.
|
|
28
|
-
|
|
29
|
-
* **Positive** – For confirming success or a completed action (e.g., “Active” or “Paid”).
|
|
30
|
-
|
|
31
|
-
* **Warning** – For potential issues users should be cautious about.
|
|
32
|
-
|
|
33
|
-
* **Negative** – For errors, failed states, or items requiring immediate attention.
|
|
34
|
-
|
|
35
|
-
### Size
|
|
36
|
-
|
|
37
|
-
Available in large (default) and small sizes to accommodate different UI contexts and content requirements.
|
|
38
|
-
|
|
39
|
-
### Notification mode
|
|
40
|
-
|
|
41
|
-
Optimised for notification indicators.
|
|
42
|
-
|
|
43
|
-
### Rounded
|
|
44
|
-
|
|
45
|
-
The rounded property transforms the badge's appearance by applying fully circular corners, making it ideal for numerical indicators or status markers.
|
|
46
|
-
|
|
47
|
-
### Lead and trail slots
|
|
48
|
-
|
|
49
|
-
The badge component supports both lead and trail slots, enabling the placement of icons or additional content before or after the main text.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
## UX Guidelines
|
|
53
|
-
|
|
54
|
-
### Writing UX text for badges
|
|
55
|
-
|
|
56
|
-
### Our most common statuses
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# Breadcrumbs
|
|
2
|
-
|
|
3
|
-
A breadcrumb is a secondary navigation showing the website hierarchy.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### When to use it
|
|
9
|
-
|
|
10
|
-
Use for sites and applications that have a substantial amount of pages present deeper down in site structures.
|
|
11
|
-
|
|
12
|
-
### Desktop
|
|
13
|
-
|
|
14
|
-
The full path may not take up more than one row in the layout.
|
|
15
|
-
|
|
16
|
-
### Mobile
|
|
17
|
-
|
|
18
|
-
For mobile views we only display the link to the parent page, as the full path tends to take too much space.
|
|
19
|
-
|
|
20
|
-
The same version may be used in shallow hierarchies where there still is a need to easily move one step up, or back to the page from where you came.
|
|
21
|
-
|
|
22
|
-
### Overflow
|
|
23
|
-
|
|
24
|
-
The breadcrumbs component is designed with flexibility in mind, allowing developers to implement \* custom overflow solutions that best fit their specific needs.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
## UX Guidelines
|
|
28
|
-
|
|
29
|
-
### Writing UX text for breadcrums
|
|
30
|
-
|
|
31
|
-
### Be clear and simple
|
|
32
|
-
|
|
33
|
-
### Breadcrumbs on mobile web
|
|
34
|
-
|
|
35
|
-
### Breadcrumbs in native apps
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# Button
|
|
2
|
-
|
|
3
|
-
A button can be tapped or clicked to perform an action.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Variants and ranks
|
|
9
|
-
|
|
10
|
-
Variant is used to communicate the intent of the button, such as positive, negative, notice.
|
|
11
|
-
|
|
12
|
-
Rank determines the priority of the button, and can be primary, secondary or tertiary. All variants are each available in those three ranks.
|
|
13
|
-
|
|
14
|
-
### Neutral
|
|
15
|
-
|
|
16
|
-
This is our default button used for most cases. Carefully choose what rank to use and avoid using more than one primary button for each context.
|
|
17
|
-
|
|
18
|
-
### Brand
|
|
19
|
-
|
|
20
|
-
Our brand button is used in specific scenarios, such as hero areas, login or brand enforcing messages.
|
|
21
|
-
|
|
22
|
-
### Negative
|
|
23
|
-
|
|
24
|
-
Used for destructive actions such as "Delete". Also used for sell actions (e.g. selling stocks or funds).
|
|
25
|
-
|
|
26
|
-
### Notice
|
|
27
|
-
|
|
28
|
-
Use only for the notice alert and for buy actions (e.g. buying stocks or funds).
|
|
29
|
-
|
|
30
|
-
### Icon button
|
|
31
|
-
|
|
32
|
-
Use an icon button only when the icon is universally understood and can stand on its own, such as a close or expand icon.
|
|
33
|
-
|
|
34
|
-
If the action is not immediately clear, use a regular button with a text label instead to ensure clarity and accessibility.
|
|
35
|
-
|
|
36
|
-
The icon button comes in the same ranks and variants as regular buttons.
|
|
37
|
-
|
|
38
|
-
### Split button
|
|
39
|
-
|
|
40
|
-
The split button always has a primary action. This action is most likely to be used by the customer as the default action. The users can click on the icon button to reveal a context menu providing secondary or additional options.
|
|
41
|
-
|
|
42
|
-
### Next and back button
|
|
43
|
-
|
|
44
|
-
Used inside flows to signal the direction forward or backward.
|
|
45
|
-
|
|
46
|
-
Back button comes in both primary and secondary state depending on what suits the content. The next button comes as primary only.
|
|
47
|
-
|
|
48
|
-
### Size
|
|
49
|
-
|
|
50
|
-
Buttons can be xs, small, medium or large. The default size is medium.
|
|
51
|
-
Choose size depending on context. Avoid to mix different sizes in the same context.
|
|
52
|
-
|
|
53
|
-
### Desktop placements
|
|
54
|
-
|
|
55
|
-
- **Left**: In overviews and widgets, the user tends to read from top to bottom following the left side, therefore the buttons are kept to the left. Place the primary button furthest to the left.
|
|
56
|
-
- **Right**: Modals and flows move the user forward (interpreted as to the right in western culture), therefore the buttons are placed to the right. Place the primary button furthest to the right.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
### In a mobile device
|
|
61
|
-
|
|
62
|
-
- **One button**, use the full width of the content area.
|
|
63
|
-
- **Two buttons**, aim to place them side by side. It is allowed to stack them if needed.
|
|
64
|
-
- **Three buttons**, consider the need for all of them. "cancel or close" might be x in the top right corner. Worst case scenario: place two buttons side by side and one tertiary button under.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
### Do’s and don’ts
|
|
69
|
-
|
|
70
|
-
Only use one primary action in the same context of several actions.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
## UX Guidelines
|
|
74
|
-
|
|
75
|
-
### Writing UX text for buttons
|
|
76
|
-
|
|
77
|
-
### Use commands and requests in the button
|
|
78
|
-
|
|
79
|
-
### Avoid Perform and Okay
|
|
80
|
-
|
|
81
|
-
### Standard button texts
|
|
82
|
-
|
|
83
|
-
### Do’s and don’ts
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# Card
|
|
2
|
-
|
|
3
|
-
The card groups related content into a single container.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Variants
|
|
9
|
-
|
|
10
|
-
### Brand cards
|
|
11
|
-
|
|
12
|
-
Brand-01 and brand-02 can only be used in special contexts and with specific content. This will be added as guidelines. Since we do not have any matching action components for now you can only slot text, link and icon.
|
|
13
|
-
|
|
14
|
-
### Interactions
|
|
15
|
-
|
|
16
|
-
#### Default
|
|
17
|
-
|
|
18
|
-
The entire card area is not clickable. The slotted content can contain one or several clickable elements, such as button and link.
|
|
19
|
-
|
|
20
|
-
#### Linked
|
|
21
|
-
|
|
22
|
-
The entire card area is clickable. The slotted content can include one decorative element. This element must be inert (non-interactive) since the whole card already functions as the clickable target.
|
|
23
|
-
|
|
24
|
-
### Usage
|
|
25
|
-
|
|
26
|
-
Don't mix linked and default cards in the same group or grid. Interactions should be consistent across a set of cards to ensure a predictable and accessible experience. If you must use both in the same view, do it with care, for example, by visually separating them or clearly communicating the interaction difference.
|
|
27
|
-
|
|
28
|
-
#### Why this matters:
|
|
29
|
-
|
|
30
|
-
- **Consistency** – users should understand how a card behaves before they interact with it. Mixing types can make it unclear whether the whole card or only parts are clickable.
|
|
31
|
-
- **Accessibility** – linked cards rely on different interaction logic and focus handling compared to cards with multiple actions. Mixing them can create confusion for keyboard and screen-reader users.
|
|
32
|
-
- **Visual clarity** – linked cards use hover and press states that don’t apply to default cards, which can create inconsistent visual feedback.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
### Card on card
|
|
37
|
-
|
|
38
|
-
Cards can be placed inside other cards to create hierarchy and visual grouping. This also goes for a card inside a modal since the card and the modal have the same base tokens. To support this, we use elevated color tokens that ensure proper contrast and consistency across both light and dark mode.
|
|
39
|
-
|
|
40
|
-
#### How it works
|
|
41
|
-
|
|
42
|
-
When nesting cards or placing cards in modals, the inner card should always contrast against its parent background. This is handled through paired color tokens and creates a clear visual separation between layers without relying on shadows alone.
|
|
43
|
-
|
|
44
|
-
#### Light mode behavior
|
|
45
|
-
|
|
46
|
-
Always use the “-2” token for the nested card to maintain correct contrast and hierarchy.
|
|
47
|
-
|
|
48
|
-
- A **grey card (neutral-01)** can contain a **white card (neutral-01-2)**
|
|
49
|
-
- A **white card (neutral-02)** can contain a **grey card (neutral-02-2)**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
#### Dark mode behavior
|
|
54
|
-
|
|
55
|
-
In dark mode, base card variants share the same surface value. The elevated variants (“-2”) are adjusted to create subtle contrast between layers. This ensures that nested cards remain distinguishable and maintain a clear sense of hierarchy.
|
|
56
|
-
|
|
57
|
-
- **Neutral-01** and **Neutral-02** share the same base value
|
|
58
|
-
- **Neutral-01-2** and **Neutral-02-2** use slightly adjusted values to create elevation and separation between nested cards. (MIGHT NEED UPDATE!)
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
#### In Figma
|
|
63
|
-
|
|
64
|
-
Elevated cards are available as **variants** of the Card component. We call them ”Raised”.
|
|
65
|
-
|
|
66
|
-
- Select the appropriate **variant** based on the card’s context (base or nested).
|
|
67
|
-
- Use the **“-2” variants** when placing a card inside another card or modal.
|
|
68
|
-
- Avoid manually changing fill colors, always switch variants instead.
|
|
69
|
-
|
|
70
|
-
(A card instance in a card needs a bit of a trick. You need to add the card instance in your slot AFTER you place the slot in your card. This will be much easier as soon as we rebuild the cards to use the new feature with actual slots, that will remove the obsticle of you needing to create a lot of slot components).
|
|
71
|
-
|
|
72
|
-
#### Card on card guidelines
|
|
73
|
-
|
|
74
|
-
- Use nested cards to group related content or create visual hierarchy.
|
|
75
|
-
- Always use the paired “-2” variants/tokens for inner cards.
|
|
76
|
-
- Think of the “-2” variants as an elevation step, they define how surfaces stack.
|
|
77
|
-
|
|
78
|
-
### Do's and don'ts
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Card pattern 01
|
|
2
|
-
|
|
3
|
-
Card pattern 01 is a pre-built composition based on the card component.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Slots
|
|
9
|
-
|
|
10
|
-
All card patterns are built on top of the base card component. Card pattern 01 is available in both interaction types – default card and linked card, and uses slots to build flexible yet consistent layouts.
|
|
11
|
-
|
|
12
|
-
Each variant consists of:
|
|
13
|
-
|
|
14
|
-
- **header slot** – img, icon or custom
|
|
15
|
-
- **main area** – includes heading and excerpt
|
|
16
|
-
- **footer** **slot** – supports actions depending on card type (see below).
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
### Header
|
|
21
|
-
|
|
22
|
-
#### Empty
|
|
23
|
-
|
|
24
|
-
No header content.
|
|
25
|
-
|
|
26
|
-
#### Image
|
|
27
|
-
|
|
28
|
-
Can be 16:9 (landscape) or 1:1 (portrait).
|
|
29
|
-
|
|
30
|
-
#### Custom
|
|
31
|
-
|
|
32
|
-
Allows placement of custom content.
|
|
33
|
-
|
|
34
|
-
### Footer
|
|
35
|
-
|
|
36
|
-
### Decorative elements
|
|
37
|
-
|
|
38
|
-
The footer on a linked card upports two types of decorative elements: a label, set via the `label` property, and slotted elements, such as an icon button.
|
|
39
|
-
|
|
40
|
-
Note: All decorative elements are always inert.
|
|
41
|
-
|
|
42
|
-
### Empty
|
|
43
|
-
|
|
44
|
-
The footer will not show if the card is linked without a label, or if no slotted elements are provided.
|
|
45
|
-
|
|
46
|
-
### Actions
|
|
47
|
-
|
|
48
|
-
Note: This only applies to the default card (not linked).
|
|
49
|
-
|
|
50
|
-
### Variants
|
|
51
|
-
|
|
52
|
-
In card pattern 01, you can choose between two variants: `neutral-01` and `neutral-02`. The `neutral-02` variant can also be outlined.
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# Checkbox
|
|
2
|
-
|
|
3
|
-
A checkbox is a form control that allows users to select one or multiple options.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Overview
|
|
7
|
-
|
|
8
|
-
### Variants
|
|
9
|
-
|
|
10
|
-
- **Default**
|
|
11
|
-
- **Contained**: Coming soon Used on its own or together with other form components.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
### Features
|
|
16
|
-
|
|
17
|
-
#### Label
|
|
18
|
-
|
|
19
|
-
All individual checkboxes must have a label to ensure clarity and accessibility. When checkboxes are grouped, the group must have a header label. Labels help users understand the purpose of the checkboxes, including those using assistive technologies.
|
|
20
|
-
|
|
21
|
-
#### Optional field indicator
|
|
22
|
-
|
|
23
|
-
Only use in the header label. We only ask for required information. If some fields are optional, we let users know by adding "(optional)" in brackets next to the field label. The word "(optional)" is shown in regular font weight to distinguish it from the label.
|
|
24
|
-
|
|
25
|
-
### Support text
|
|
26
|
-
|
|
27
|
-
This can be used for both the header and individual checkboxes. Use this to explain how to fill in the field, for example how to count or what to include. Contained checkboxes don’t have support text for the individual checkboxes.
|
|
28
|
-
|
|
29
|
-
### Contextual help
|
|
30
|
-
|
|
31
|
-
If the label and support text are not enough to explain a field, we can use the info icon. Clicking the icon shows additional support text between the label support and the field.
|
|
32
|
-
|
|
33
|
-
- Use a tooltip if space is limited.
|
|
34
|
-
- Use a modal for large amounts of text.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
### Error message
|
|
39
|
-
|
|
40
|
-
Used to indicate that a single checkbox must be checked or that a group of checkboxes has errors.
|
|
41
|
-
|
|
42
|
-
### Indeterminate state
|
|
43
|
-
|
|
44
|
-
Used when a checkbox is partially selected, typically in parent-child relationships within nested checkboxes. Not available for the contained variant.
|
|
45
|
-
|
|
46
|
-
### Behaviour:
|
|
47
|
-
|
|
48
|
-
- If some child checkboxes are selected, the parent shows the indeterminate state.
|
|
49
|
-
- If all child checkboxes are selected, the parent appears selected.
|
|
50
|
-
- Selecting a parent checkbox (whether unselected or in the indeterminate state) selects all child checkboxes.
|
|
51
|
-
- Deselecting the parent checkbox deselects all child checkboxes.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
### Alignment
|
|
56
|
-
|
|
57
|
-
Checkboxes can be aligned horizontal or vertical.
|
|
58
|
-
|
|
59
|
-
- **Vertical**: This is the default alignment. It's easier to read and scan the available options.
|
|
60
|
-
- **Horizontal**: Only used for a small set of options if the page shouldn't be to long, but try to avoid.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
### Do's and don'ts
|
|
65
|
-
|
|
66
|
-
### Read only
|
|
67
|
-
|
|
68
|
-
The read only shows the selected state without allowing it to be changed. When several checkboxes represent a group of choices, the read only retain enough context for users to understand both selected and unselected options when that information is relevant.
|
|
69
|
-
|
|
70
|
-
[Read more about the read only pattern](https://seb.io/patterns/read-only)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
## UX Guidelines
|
|
74
|
-
|
|
75
|
-
### Writing UX text for checkboxes
|
|
76
|
-
|
|
77
|
-
### Stand-alone checkbox
|
|
78
|
-
|
|
79
|
-
### Use the “I” form
|
|
80
|
-
|
|
81
|
-
### Don't
|
|
82
|
-
|
|
83
|
-
### Avoid negations
|
|
84
|
-
|
|
85
|
-
### Avoid questions
|
|
86
|
-
|
|
87
|
-
### Multiple options
|
|
88
|
-
|
|
89
|
-
### Do
|
|
90
|
-
|
|
91
|
-
### Don't
|