@rikstv/shared-components 0.8.1 → 1.1.79
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 +21 -2
- package/dist/{accordion → components/accordion}/Accordion.d.ts +1 -2
- package/dist/components/accordion/Accordion.js +34 -0
- package/dist/{accordion → components/accordion}/accordion.scss +58 -39
- package/dist/components/breadcrumb/Breadcrumb.d.ts +13 -0
- package/dist/components/breadcrumb/Breadcrumb.js +39 -0
- package/dist/components/breadcrumb/breadcrumb.scss +75 -0
- package/dist/components/button/ArrowButton.d.ts +12 -0
- package/dist/components/button/ArrowButton.js +44 -0
- package/dist/components/button/BaseButton.d.ts +18 -0
- package/dist/components/button/BaseButton.js +42 -0
- package/dist/components/button/BaseDecoratedButton.d.ts +11 -0
- package/dist/components/button/BaseDecoratedButton.js +32 -0
- package/dist/components/button/BaseLinkButton.d.ts +20 -0
- package/dist/components/button/BaseLinkButton.js +44 -0
- package/dist/{button → components/button}/Button.d.ts +2 -0
- package/dist/components/button/Button.js +29 -0
- package/dist/components/button/DecoratedButton.d.ts +7 -0
- package/dist/components/button/DecoratedButton.js +23 -0
- package/dist/{button → components/button}/IconButton.d.ts +2 -3
- package/dist/components/button/IconButton.js +24 -0
- package/dist/components/button/LinkButton.d.ts +5 -0
- package/dist/components/button/LinkButton.js +10 -0
- package/dist/components/button/arrow-button.scss +37 -0
- package/dist/{button → components/button}/button-shared.scss +14 -3
- package/dist/components/button/button.scss +93 -0
- package/dist/{button → components/button}/icon-button.scss +0 -0
- package/dist/components/button/link-button.scss +6 -0
- package/dist/components/checkbox/Checkbox.d.ts +9 -0
- package/dist/components/checkbox/Checkbox.js +40 -0
- package/dist/components/checkbox/checkbox.scss +116 -0
- package/dist/{core → components/core}/Core.d.ts +0 -0
- package/dist/{core → components/core}/Core.js +0 -0
- package/dist/{core → components/core}/LightMode.d.ts +0 -0
- package/dist/components/core/LightMode.js +14 -0
- package/dist/{core → components/core}/RiksTV.d.ts +0 -0
- package/dist/components/core/RiksTV.js +116 -0
- package/dist/{core → components/core}/Strim.d.ts +0 -0
- package/dist/components/core/Strim.js +10 -0
- package/dist/components/core/core.scss +102 -0
- package/dist/components/core/docs/Spacing.scss +12 -0
- package/dist/components/core/docs/componets/ColorSwatch/ColorSwatch.scss +66 -0
- package/dist/components/core/docs/componets/ColorSwatch/ColorSwatchBtn.scss +19 -0
- package/dist/components/core/docs/componets/ExampleGrid/ExampleGrid.scss +12 -0
- package/dist/components/core/docs/componets/SpacingBlock/SpacingBlock.scss +6 -0
- package/dist/components/core/docs/hooks/animated.scss +12 -0
- package/dist/components/core/docs/hooks/clickOutside.scss +11 -0
- package/dist/components/core/docs/hooks/intersection.scss +14 -0
- package/dist/components/core/hooks/useAnimatedHeight.d.ts +19 -0
- package/dist/components/core/hooks/useBrowserPreferences.d.ts +5 -0
- package/dist/components/core/hooks/useClickOutsideListener.d.ts +8 -0
- package/dist/components/core/hooks/useIntersectionObserver.d.ts +2 -0
- package/dist/components/core/hooks/useMutationObserver.d.ts +2 -0
- package/dist/components/core/mixin/breakpoints.scss +44 -0
- package/dist/{core → components/core}/mixin/fluid.scss +0 -0
- package/dist/{core → components/core}/mixin/focus.scss +0 -0
- package/dist/{core → components/core}/mixin/navigation.scss +0 -0
- package/dist/{core → components/core}/mixin/rem.scss +0 -0
- package/dist/components/core/rikstvColors.scss +71 -0
- package/dist/components/core/rtv.scss +75 -0
- package/dist/components/core/spacing/Gutter.d.ts +2 -0
- package/dist/components/core/spacing/GutterPadding.d.ts +2 -0
- package/dist/components/core/strimColors.scss +48 -0
- package/dist/components/core/strm.scss +79 -0
- package/dist/{core → components/core}/utils/detectUserInputMethod.d.ts +0 -0
- package/dist/components/icons/Arrow.d.ts +2 -0
- package/dist/components/icons/Arrow.js +12 -0
- package/dist/{icons → components/icons}/Chevron.d.ts +0 -0
- package/dist/{icons → components/icons}/Chevron.js +0 -0
- package/dist/{icons → components/icons}/heartToggle.scss +12 -6
- package/dist/components/index.d.ts +31 -0
- package/dist/components/list/CheckmarkListItem.d.ts +8 -0
- package/dist/components/list/CheckmarkListItem.js +32 -0
- package/dist/components/list/CheckmarkListItem.scss +41 -0
- package/dist/components/list/CrossmarkListItem.d.ts +8 -0
- package/dist/components/list/CrossmarkListItem.js +23 -0
- package/dist/components/list/CrossmarkListItem.scss +42 -0
- package/dist/components/list/List.d.ts +8 -0
- package/dist/components/list/List.js +28 -0
- package/dist/components/list/List.scss +15 -0
- package/dist/components/list/ListItem.d.ts +8 -0
- package/dist/components/list/ListItem.js +19 -0
- package/dist/components/list/ListItem.scss +25 -0
- package/dist/components/list/OrderedListItem.d.ts +7 -0
- package/dist/components/list/OrderedListItem.js +15 -0
- package/dist/components/list/OrderedListItem.scss +21 -0
- package/dist/components/list/internal/getMarkColor.d.ts +3 -0
- package/dist/components/loader/Loader.d.ts +7 -0
- package/dist/components/loader/Loader.js +31 -0
- package/dist/components/loader/Loader.scss +148 -0
- package/dist/components/loader/RawLoader.d.ts +10 -0
- package/dist/components/loader/RawLoader.js +30 -0
- package/dist/components/panel/Info.d.ts +2 -0
- package/dist/components/panel/Info.js +25 -0
- package/dist/components/panel/Panel.d.ts +15 -0
- package/dist/components/panel/Panel.js +55 -0
- package/dist/components/panel/Success.d.ts +2 -0
- package/dist/components/panel/Success.js +80 -0
- package/dist/components/panel/Warning.d.ts +2 -0
- package/dist/components/panel/Warning.js +14 -0
- package/dist/components/panel/panel.scss +95 -0
- package/dist/components/progress/CircularProgress.d.ts +11 -0
- package/dist/components/progress/CircularProgress.js +87 -0
- package/dist/components/progress/Progress.d.ts +11 -0
- package/dist/components/progress/Progress.js +42 -0
- package/dist/components/progress/Progress.scss +76 -0
- package/dist/components/progress/circularProgress.scss +70 -0
- package/dist/components/spacing/Gutter.js +13 -0
- package/dist/components/spacing/GutterPadding.js +13 -0
- package/dist/{textfield → components/textfield}/TextField.d.ts +6 -5
- package/dist/components/textfield/TextField.js +57 -0
- package/dist/components/textfield/textfield.scss +178 -0
- package/dist/{toggle → components/toggle}/FieldSet.d.ts +0 -0
- package/dist/components/toggle/FieldSet.js +29 -0
- package/dist/{toggle → components/toggle}/RadioContext.d.ts +0 -0
- package/dist/{toggle → components/toggle}/RadioToggle.d.ts +0 -0
- package/dist/components/toggle/RadioToggle.js +30 -0
- package/dist/{toggle → components/toggle}/radioToggle.scss +2 -1
- package/dist/{toggleButton → components/toggleButton}/ToggleButton.d.ts +1 -0
- package/dist/components/toggleButton/ToggleButton.js +70 -0
- package/dist/{toggleButton → components/toggleButton}/toggleButton.scss +16 -8
- package/dist/components/toggleLinkButton/ToggleLinkButton.d.ts +10 -0
- package/dist/components/toggleLinkButton/ToggleLinkButton.js +60 -0
- package/dist/components/toggleLinkButton/toggleLinkButton.scss +54 -0
- package/dist/{typography → components/typography}/Typography.d.ts +3 -1
- package/dist/components/typography/Typography.js +67 -0
- package/dist/{typography → components/typography}/typography.scss +30 -1
- package/dist/shared-components.es.js +210 -15
- package/dist/style.css +1 -1
- package/dist/{core/utils → utils}/generateId.d.ts +0 -0
- package/package.json +12 -17
- package/dist/accordion/Accordion.js +0 -73
- package/dist/button/BaseButton.d.ts +0 -15
- package/dist/button/BaseButton.js +0 -80
- package/dist/button/Button.js +0 -40
- package/dist/button/IconButton.js +0 -40
- package/dist/button/button.scss +0 -46
- package/dist/core/LightMode.js +0 -50
- package/dist/core/RiksTV.js +0 -115
- package/dist/core/Strim.js +0 -10
- package/dist/core/core.scss +0 -29
- package/dist/core/rtv.scss +0 -58
- package/dist/core/strm.scss +0 -62
- package/dist/index.d.ts +0 -11
- package/dist/textfield/TextField.js +0 -87
- package/dist/textfield/textfield.scss +0 -101
- package/dist/toggle/FieldSet.js +0 -66
- package/dist/toggle/RadioToggle.js +0 -65
- package/dist/toggleButton/ToggleButton.js +0 -106
- package/dist/toggleButton/internal/generateId.d.ts +0 -1
- package/dist/typography/Typography.js +0 -95
package/README.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Shared-components
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Wrap your app with you preferred brand. The css needs to be imported manually once in the app.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
import { Strim, PrimaryButton, DisplayTitle } from '@rikstv/shared-components";
|
|
7
|
+
import '@rikstv/shared-components/components/dist/style.css";
|
|
8
|
+
|
|
9
|
+
const Root = () => (
|
|
10
|
+
<Strim>
|
|
11
|
+
<main>
|
|
12
|
+
<DisplayTitle>
|
|
13
|
+
MyApp
|
|
14
|
+
</DisplayTitle>
|
|
15
|
+
|
|
16
|
+
<PrimaryButton>
|
|
17
|
+
Hello world
|
|
18
|
+
</PrimaryButton>
|
|
19
|
+
</main>
|
|
20
|
+
</Strim>
|
|
21
|
+
)
|
|
22
|
+
```
|
|
@@ -3,8 +3,7 @@ import "./accordion.scss";
|
|
|
3
3
|
interface Props extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> {
|
|
4
4
|
heading: ReactNode;
|
|
5
5
|
initialOpen?: boolean;
|
|
6
|
-
|
|
7
|
-
lightBackground?: boolean;
|
|
6
|
+
lightBackground?: boolean | "white";
|
|
8
7
|
}
|
|
9
8
|
export declare const Accordion: FC<Props>;
|
|
10
9
|
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useRef, useEffect } from "react";
|
|
2
|
+
import { C as Chevron } from "../icons/Chevron.js";
|
|
3
|
+
import { a as jsxs, j as jsx } from "../core/RiksTV.js";
|
|
4
|
+
var accordion = /* @__PURE__ */ (() => ".rtv{--sub-body-color--light: var(--rds-foreground-solid-soft)}.strm{--sub-body-color--light: var(--rds-button-primary-fg)}.rds-link{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;color:var(--rds-foreground-primary);transition:75ms ease color}.rds-link:visited{color:var(--rds-foreground-primary)}.rds-link:hover{text-decoration-thickness:2px;color:var(--rds-heading-accent)}.rds-link:active{text-decoration:none;text-shadow:0px 0px 1px var(--rds-foreground-primary)}.rds-link--active,.rds-link[aria-current=page]{text-shadow:0px 0px 1px var(--rds-foreground-primary)}.rds-link:focus::-moz-focus-inner{border-style:none;outline:0}.rds-link:focus button::-moz-focus-inner,.rds-link:focus [type=button]::-moz-focus-inner,.rds-link:focus [type=reset]::-moz-focus-inner,.rds-link:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-link:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-link:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-display-title{font-family:var(--rds-font-family-lg-headlines);font-size:clamp(2.5rem,calc(1.4285714286rem + 2.9761904762vw),5rem);font-weight:400;line-height:1.2;color:var(--rds-foreground-primary)}.rds-title-1{font-family:var(--rds-font-family-lg-headlines);font-size:clamp(1.875rem,calc(1.1785714286rem + 1.9345238095vw),3.5rem);font-weight:400;line-height:1.2;color:var(--rds-foreground-primary)}.rds-title-2{font-family:var(--rds-font-family-lg-headlines);font-size:clamp(1.5rem,calc(1.0714285714rem + 1.1904761905vw),2.5rem);font-weight:400;line-height:1.2;color:var(--rds-foreground-primary)}.rds-sub-title-2{font-family:var(--rds-font-family-lg-headlines);font-size:clamp(1.375rem,calc(1.1071428571rem + .744047619vw),2rem);font-weight:400;line-height:1.2;color:var(--rds-foreground-primary)}.rds-title-3{font-family:var(--rds-font-family-m-headlines);font-size:clamp(1.25rem,calc(1.1964285714rem + .1488095238vw),1.375rem);font-weight:400;line-height:1.2;color:var(--rds-heading-accent)}.rds-title-4{font-family:var(--rds-font-family-m-headlines);font-size:clamp(1rem,calc(.9464285714rem + .1488095238vw),1.125rem);font-weight:400;line-height:1.2;color:var(--rds-foreground-primary)}.rds-lead{font-family:var(--rds-font-family-m-headlines);font-size:clamp(1.25rem,calc(1.1964285714rem + .1488095238vw),1.375rem);font-weight:400;line-height:1.5;color:var(--rds-foreground-primary)}.rds-body,.rds-span{font-family:var(--rds-font-family-body);font-size:clamp(1rem,calc(.9464285714rem + .1488095238vw),1.125rem);font-weight:400;line-height:1.5;color:var(--rds-foreground-primary)}.rds-sub-body{font-family:var(--rds-font-family-body);font-size:clamp(.875rem,calc(.8214285714rem + .1488095238vw),1rem);font-weight:400;line-height:1.5;color:var(--rds-foreground-primary)}.rds-tag{font-family:var(--rds-font-family-headlines);text-transform:uppercase;font-size:clamp(.75rem,calc(.6964285714rem + .1488095238vw),.875rem);line-height:1.2;font-weight:400;letter-spacing:.09375rem;color:var(--rds-foreground-primary)}.rds-bold,.rds-accordion-details__summary{font-family:var(--rds-font-family-headlines);font-size:clamp(1.125rem,calc(1.125rem + 0vw),1.125rem);font-weight:400;line-height:1.5;color:var(--rds-foreground-primary)}.rds-meta{font-family:var(--rds-font-family-body);font-size:clamp(.75rem,calc(.6964285714rem + .1488095238vw),.875rem);font-weight:400;line-height:1.5;color:var(--rds-foreground-overlay-heavy)}.rds-link--light,.rds-light .rds-link{color:var(--rds-background-primary)}.rds-link--light:hover,.rds-light .rds-link:hover{color:var(--rds-foreground-tertiary)}.rds-link--light:active,.rds-light .rds-link:active{text-shadow:0px 0px 1px var(--rds-background-primary)}.rds-link--light:visited,.rds-light .rds-link:visited{color:var(--rds-background-primary)}.rds-link--light--active,.rds-link--light[aria-current=page],.rds-light [aria-current=page].rds-link{text-shadow:0px 0px 1px var(--rds-background-primary)}.rds-light .rds-display-title,.rds-display-title--light{color:var(--rds-foreground-tertiary)}.rds-light .rds-title-1,.rds-title-1--light,.rds-light .rds-title-2,.rds-title-2--light,.rds-light .rds-title-3,.rds-title-3--light,.rds-light .rds-title-4,.rds-title-4--light,.rds-light .rds-subtite-2,.rds-subtite-2--light{color:var(--rds-button-primary-fg)}.rds-light .rds-body,.rds-light .rds-span,.rds-body--light{color:var(--rds-background-primary)}.rds-light .rds-sub-body,.rds-sub-body--light{color:var(--sub-body-color--light)}.rds-light .rds-tag,.rds-tag--light,.rds-light .rds-bold,.rds-light .rds-accordion-details__summary,.rds-bold--light{color:var(--rds-background-primary)}.rds-light .rds-meta,.rds-meta--light{color:var(--rds-button-primary-fg)}@keyframes details-sweep{0%{opacity:0}to{opacity:1}}.rtv{--accordion-border-color: #d9d9d9}.strm{--accordion-border-color: #99b7b9}.rds-accordion-details{--accordion-hover-bg: var(--rds-background-tertiary);--accordion-active-bg: var(--rds-background-card);--accordion-color: var(--rds-foreground-primary);--accordion-shadow: 0px 8px 18px rgba(0, 0, 0, .3);border-radius:var(--rds-roundness--default);transition:125ms ease-in-out;transition-property:box-shadow,background-color;border:1.5px solid var(--accordion-border-color)}@media (hover: hover){.rds-accordion-details[open]:hover,.rds-accordion-details:hover{background-color:var(--accordion-hover-bg);box-shadow:0 8px 18px #0000004d}}.rds-accordion-details[open]:active,.rds-accordion-details:active{background-color:var(--accordion-active-bg)}.rds-accordion-details[open]{--chevron-direction: 180deg;background-color:transparent;overflow:hidden}.rds-accordion-details[open] summary~*{animation:details-sweep .5s ease-in-out forwards}.rds-accordion-details[open] summary~*>*{--toggle-sweep-delay: 0;opacity:0;animation:details-sweep .5s ease-in-out forwards;animation-delay:var(--toggle-sweep-delay)}.rds-accordion-details:not([open]){--chevron-direction: 0;height:fit-content}@media (hover: hover){.rds-accordion-details:not([open]):hover{box-shadow:none}.rds-accordion-details:not([open]):hover .rds-accordion-details__summary{box-shadow:var(--accordion-shadow)}}.rds-accordion-details__summary{transition:125ms ease-in-out box-shadow;border-radius:var(--rds-roundness--default);background-color:transparent;color:var(--accordion-color)!important;cursor:pointer;list-style:none;user-select:none;height:fit-content;display:flex;align-items:center;align-self:center;position:relative;padding-block:clamp(9px,2vw,16px);padding-right:56px;padding-left:16px}.rds-accordion-details__summary:focus::-moz-focus-inner{border-style:none;outline:0}.rds-accordion-details__summary:focus button::-moz-focus-inner,.rds-accordion-details__summary:focus [type=button]::-moz-focus-inner,.rds-accordion-details__summary:focus [type=reset]::-moz-focus-inner,.rds-accordion-details__summary:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-accordion-details__summary:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-accordion-details__summary:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-accordion-details__summary>svg{height:100%;transform:rotate(var(--chevron-direction));transition:transform 125ms ease-in-out;transform-origin:center;position:absolute;right:18px;top:0}.rds-accordion-details__summary>svg>path{fill:var(--accordion-color)}.rds-accordion-details__summary__content{box-sizing:border-box;display:flex;align-items:center;height:100%}.rds-accordion-details__summary::marker,.rds-accordion-details__summary::-webkit-details-marker{display:none}.rds-accordion-details__summary~*{padding-right:32px;padding-left:16px}.rds-accordion-details--light,.rds-light .rds-accordion-details{--accordion-color: var(--rds-background-tertiary);--accordion-hover-bg: #d6ffec;--accordion-active-bg: #bcfbde;--accordion-border-color: #5d8b82;--accordion-shadow: 0px 4px 8px rgba(0, 75, 80, .2)}.rds-accordion-details--white{--accordion-hover-bg: #edfef6}\n")();
|
|
5
|
+
const Accordion = ({
|
|
6
|
+
initialOpen = true,
|
|
7
|
+
children,
|
|
8
|
+
heading,
|
|
9
|
+
className = "",
|
|
10
|
+
lightBackground = false,
|
|
11
|
+
...rest
|
|
12
|
+
}) => {
|
|
13
|
+
const ref = useRef(null);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (ref.current) {
|
|
16
|
+
ref.current.open = initialOpen;
|
|
17
|
+
}
|
|
18
|
+
}, [initialOpen]);
|
|
19
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
20
|
+
ref,
|
|
21
|
+
"data-testid": "rds-accordion",
|
|
22
|
+
className: `rds-accordion-details ${lightBackground ? "rds-accordion-details--light" : ""} ${lightBackground === "white" ? "rds-accordion-details--white" : ""} ${className}`,
|
|
23
|
+
...rest,
|
|
24
|
+
children: [/* @__PURE__ */ jsxs("summary", {
|
|
25
|
+
"data-testid": "rds-accordion-summary",
|
|
26
|
+
className: "rds-accordion-details__summary",
|
|
27
|
+
children: [/* @__PURE__ */ jsx(Chevron, {}), /* @__PURE__ */ jsx("div", {
|
|
28
|
+
className: "rds-accordion-details__summary__content",
|
|
29
|
+
children: heading
|
|
30
|
+
})]
|
|
31
|
+
}), children]
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
export { Accordion as A };
|
|
@@ -10,17 +10,43 @@
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
// TODO: DO THIS PROPERLY, NOT LIKE THIS
|
|
14
|
+
.rtv {
|
|
15
|
+
--accordion-border-color: #d9d9d9;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.strm {
|
|
19
|
+
--accordion-border-color: #99b7b9;
|
|
20
|
+
}
|
|
21
|
+
|
|
13
22
|
.rds-accordion-details {
|
|
23
|
+
// TODO: USE COLORS FROM CORE
|
|
24
|
+
--accordion-hover-bg: var(--rds-background-tertiary);
|
|
25
|
+
--accordion-active-bg: var(--rds-background-card);
|
|
26
|
+
--accordion-color: var(--rds-foreground-primary);
|
|
27
|
+
--accordion-shadow: 0px 8px 18px rgba(0, 0, 0, 0.3);
|
|
28
|
+
|
|
14
29
|
border-radius: var(--rds-roundness--default);
|
|
15
|
-
transition: 125ms ease-in-out
|
|
30
|
+
transition: 125ms ease-in-out;
|
|
31
|
+
transition-property: box-shadow, background-color;
|
|
32
|
+
border: 1.5px solid var(--accordion-border-color);
|
|
16
33
|
|
|
17
|
-
|
|
18
|
-
|
|
34
|
+
@media (hover: hover) {
|
|
35
|
+
&[open]:hover,
|
|
36
|
+
&:hover {
|
|
37
|
+
background-color: var(--accordion-hover-bg);
|
|
38
|
+
box-shadow: 0px 8px 18px rgba(0, 0, 0, 0.3);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&[open]:active,
|
|
43
|
+
&:active {
|
|
44
|
+
background-color: var(--accordion-active-bg);
|
|
19
45
|
}
|
|
20
46
|
|
|
21
47
|
&[open] {
|
|
22
48
|
--chevron-direction: 180deg;
|
|
23
|
-
background-color:
|
|
49
|
+
background-color: transparent;
|
|
24
50
|
overflow: hidden;
|
|
25
51
|
|
|
26
52
|
& summary ~ * {
|
|
@@ -32,17 +58,18 @@
|
|
|
32
58
|
animation-delay: var(--toggle-sweep-delay);
|
|
33
59
|
}
|
|
34
60
|
}
|
|
35
|
-
&:hover {
|
|
36
|
-
box-shadow: 0px 8px 18px rgba(0, 0, 0, 0.3);
|
|
37
|
-
}
|
|
38
61
|
}
|
|
39
62
|
|
|
40
63
|
&:not([open]) {
|
|
41
64
|
--chevron-direction: 0;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
65
|
+
height: fit-content;
|
|
66
|
+
|
|
67
|
+
@media (hover: hover) {
|
|
68
|
+
&:hover {
|
|
69
|
+
box-shadow: none;
|
|
70
|
+
.rds-accordion-details__summary {
|
|
71
|
+
box-shadow: var(--accordion-shadow);
|
|
72
|
+
}
|
|
46
73
|
}
|
|
47
74
|
}
|
|
48
75
|
}
|
|
@@ -52,22 +79,24 @@
|
|
|
52
79
|
@extend .rds-bold;
|
|
53
80
|
transition: 125ms ease-in-out box-shadow;
|
|
54
81
|
border-radius: var(--rds-roundness--default);
|
|
55
|
-
background-color:
|
|
56
|
-
color: var(--
|
|
82
|
+
background-color: transparent;
|
|
83
|
+
color: var(--accordion-color) !important;
|
|
57
84
|
cursor: pointer;
|
|
58
85
|
list-style: none;
|
|
59
86
|
user-select: none;
|
|
60
|
-
height:
|
|
87
|
+
height: fit-content;
|
|
61
88
|
display: flex;
|
|
62
89
|
align-items: center;
|
|
63
90
|
align-self: center;
|
|
64
91
|
position: relative;
|
|
65
|
-
padding:
|
|
92
|
+
padding-block: clamp(9px, 2vw, 16px);
|
|
93
|
+
padding-right: 56px;
|
|
94
|
+
padding-left: 16px;
|
|
66
95
|
|
|
67
96
|
& > svg {
|
|
68
97
|
height: 100%;
|
|
69
98
|
& > path {
|
|
70
|
-
fill: var(--
|
|
99
|
+
fill: var(--accordion-color);
|
|
71
100
|
}
|
|
72
101
|
transform: rotate(var(--chevron-direction));
|
|
73
102
|
transition: transform 125ms ease-in-out;
|
|
@@ -89,34 +118,24 @@
|
|
|
89
118
|
}
|
|
90
119
|
|
|
91
120
|
& ~ * {
|
|
92
|
-
padding:
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
&--left > summary {
|
|
97
|
-
padding: 8px 32px 8px 64px;
|
|
98
|
-
|
|
99
|
-
& > svg {
|
|
100
|
-
right: initial;
|
|
101
|
-
left: 18px;
|
|
121
|
+
padding-right: 32px;
|
|
122
|
+
padding-left: 16px;
|
|
102
123
|
}
|
|
103
124
|
}
|
|
104
|
-
|
|
105
|
-
&--hide-default-text > summary {
|
|
106
|
-
max-width: 100%;
|
|
107
|
-
height: 100%;
|
|
108
|
-
background-color: transparent;
|
|
109
|
-
margin-bottom: 0;
|
|
110
|
-
}
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
.rds-accordion-details--light {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
128
|
+
// TODO: USE COLORS FROM CORE
|
|
129
|
+
--accordion-color: var(--rds-background-tertiary);
|
|
130
|
+
--accordion-hover-bg: #d6ffec;
|
|
131
|
+
--accordion-active-bg: #bcfbde;
|
|
132
|
+
--accordion-border-color: #5d8b82;
|
|
133
|
+
--accordion-shadow: 0px 4px 8px rgba(0, 75, 80, 0.2);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.rds-accordion-details--white {
|
|
137
|
+
// TODO: USE COLORS FROM CORE
|
|
138
|
+
--accordion-hover-bg: #edfef6;
|
|
120
139
|
}
|
|
121
140
|
|
|
122
141
|
.rds-light {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FC, HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import "./breadcrumb.scss";
|
|
3
|
+
interface Props extends HTMLAttributes<HTMLElement> {
|
|
4
|
+
crumbs: Array<{
|
|
5
|
+
name: string;
|
|
6
|
+
href: string;
|
|
7
|
+
}>;
|
|
8
|
+
render: (name: string, href: string, current: boolean) => ReactNode;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const Breadcrumb: import("react").ForwardRefExoticComponent<Props & import("react").RefAttributes<HTMLElement>>;
|
|
12
|
+
export declare const BreadcrumbCurrent: FC;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { S as Span } from "../typography/Typography.js";
|
|
3
|
+
import { j as jsx } from "../core/RiksTV.js";
|
|
4
|
+
var breadcrumb = /* @__PURE__ */ (() => '.rds-breadcrumb{--rds-crumb-separator: "/"}.rds-breadcrumb__list{list-style:none;padding:0;display:flex;flex-wrap:nowrap}.rds-breadcrumb__list-item{padding-inline-end:var(--rds-spacing--24);position:relative;display:flex;flex-wrap:nowrap;white-space:nowrap}.rds-breadcrumb__list-item:after{content:var(--rds-crumb-separator);position:absolute;right:var(--rds-spacing--8)}.rds-breadcrumb__list-item:last-of-type:after{display:none}@media (max-width: 768px){.rds-breadcrumb__list-item--truncate{display:none}.rds-breadcrumb__list-item--truncate:after{display:none}.rds-breadcrumb__list-item--truncate:first-of-type{display:flex;padding-inline-end:var(--rds-spacing--48)}.rds-breadcrumb__list-item--truncate:first-of-type:after{content:var(--rds-crumb-separator) " ... " var(--rds-crumb-separator);display:initial;position:absolute;right:var(--rds-spacing--8)}.rds-breadcrumb__list-item--truncate:nth-last-child(2){display:flex}}.rds-breadcrumb__current{color:var(--rds-foreground-overlay-heavy)}\n')();
|
|
5
|
+
const Breadcrumb = forwardRef(({
|
|
6
|
+
className = "",
|
|
7
|
+
crumbs,
|
|
8
|
+
render,
|
|
9
|
+
...rest
|
|
10
|
+
}, ref) => /* @__PURE__ */ jsx("nav", {
|
|
11
|
+
className: `rds-breadcrumb ${className}`,
|
|
12
|
+
ref,
|
|
13
|
+
...rest,
|
|
14
|
+
children: /* @__PURE__ */ jsx(Span, {
|
|
15
|
+
children: /* @__PURE__ */ jsx("ol", {
|
|
16
|
+
className: "rds-breadcrumb__list",
|
|
17
|
+
children: crumbs.map(({
|
|
18
|
+
name,
|
|
19
|
+
href
|
|
20
|
+
}, idx) => {
|
|
21
|
+
const isCurrent = idx === crumbs.length - 1;
|
|
22
|
+
return /* @__PURE__ */ jsx("li", {
|
|
23
|
+
className: `rds-breadcrumb__list-item ${crumbs.length >= 4 ? "rds-breadcrumb__list-item--truncate" : ""}`,
|
|
24
|
+
"data-testid": `rds-breadcrumb-${name}`,
|
|
25
|
+
"aria-current": isCurrent ? "page" : "false",
|
|
26
|
+
children: render(name, href, isCurrent)
|
|
27
|
+
}, name);
|
|
28
|
+
})
|
|
29
|
+
})
|
|
30
|
+
})
|
|
31
|
+
}));
|
|
32
|
+
const BreadcrumbCurrent = ({
|
|
33
|
+
children
|
|
34
|
+
}) => /* @__PURE__ */ jsx(Span, {
|
|
35
|
+
className: "rds-breadcrumb__current",
|
|
36
|
+
children
|
|
37
|
+
});
|
|
38
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
39
|
+
export { Breadcrumb as B, BreadcrumbCurrent as a };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
@use "../core/mixin/breakpoints" as break;
|
|
2
|
+
|
|
3
|
+
.rds-breadcrumb {
|
|
4
|
+
--rds-crumb-separator: "/";
|
|
5
|
+
// --rds-crumb-separator: "›";
|
|
6
|
+
|
|
7
|
+
&__list {
|
|
8
|
+
list-style: none;
|
|
9
|
+
padding: 0;
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-wrap: nowrap;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&__list-item {
|
|
15
|
+
padding-inline-end: var(--rds-spacing--24);
|
|
16
|
+
position: relative;
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-wrap: nowrap;
|
|
19
|
+
white-space: nowrap;
|
|
20
|
+
|
|
21
|
+
&::after {
|
|
22
|
+
content: var(--rds-crumb-separator);
|
|
23
|
+
position: absolute;
|
|
24
|
+
right: var(--rds-spacing--8);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&:last-of-type::after {
|
|
28
|
+
display: none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// This only occurs when more than 4 elements in crumb-path and small screen
|
|
32
|
+
// step 1 step 2 step 3 step 4
|
|
33
|
+
// visible hidden visible hidden
|
|
34
|
+
|
|
35
|
+
// step 1 step 2 step 3 step 4 step 5
|
|
36
|
+
// visible hidden hidden visible hidden
|
|
37
|
+
|
|
38
|
+
// The reasoning for this is that the last is current-page, you know this, so we can hide it
|
|
39
|
+
// you're most likely to either go all the way back to the start, or back one step, so that's
|
|
40
|
+
// the ones we show
|
|
41
|
+
&--truncate {
|
|
42
|
+
@include break.breakpoint("sm") {
|
|
43
|
+
// Flip everything to be not visible
|
|
44
|
+
display: none;
|
|
45
|
+
&::after {
|
|
46
|
+
// Also remove separator, handled by first-of-type
|
|
47
|
+
display: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Flip the first element back visible
|
|
51
|
+
&:first-of-type {
|
|
52
|
+
display: flex;
|
|
53
|
+
padding-inline-end: var(--rds-spacing--48);
|
|
54
|
+
|
|
55
|
+
&::after {
|
|
56
|
+
// Custom separator to indicate truncating
|
|
57
|
+
content: var(--rds-crumb-separator) " ... " var(--rds-crumb-separator);
|
|
58
|
+
display: initial;
|
|
59
|
+
position: absolute;
|
|
60
|
+
right: var(--rds-spacing--8);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Flip second to last element to be visible
|
|
65
|
+
&:nth-last-child(2) {
|
|
66
|
+
display: flex;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
&__current {
|
|
73
|
+
color: var(--rds-foreground-overlay-heavy);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DecoratedButtonProps } from "./BaseDecoratedButton";
|
|
3
|
+
import "./button.scss";
|
|
4
|
+
import "./arrow-button.scss";
|
|
5
|
+
import "./button-shared.scss";
|
|
6
|
+
interface ArrowButtonProps extends Omit<DecoratedButtonProps, "arrow"> {
|
|
7
|
+
forwards?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const PrimaryArrowButton: import("react").ForwardRefExoticComponent<ArrowButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
10
|
+
export declare const SecondaryArrowButton: import("react").ForwardRefExoticComponent<ArrowButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
export declare const TertiaryArrowButton: import("react").ForwardRefExoticComponent<ArrowButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { P as PrimaryDecoratedButton, S as SecondaryDecoratedButton, T as TertiaryDecoratedButton } from "./DecoratedButton.js";
|
|
3
|
+
import { A as Arrow } from "../icons/Arrow.js";
|
|
4
|
+
import "./Button.js";
|
|
5
|
+
import { j as jsx } from "../core/RiksTV.js";
|
|
6
|
+
var arrowButton = /* @__PURE__ */ (() => ".rds-arrow-button{--default-arrow-size: 1.125rem;--default-arrow-margin: .75rem;align-items:center}.rds-arrow-button>svg{width:100%}.rds-arrow-button .rds-button__arrow{margin:0;box-sizing:border-box;margin-inline:var(--default-arrow-margin) -6px;height:var(--default-arrow-size);width:var(--default-arrow-size)}.rds-arrow-button .rds-button__arrow>svg{width:100%}.rds-arrow-button--backwards .rds-button__arrow{margin-inline:-6px var(--default-arrow-margin)}.rds-arrow-button--backwards .rds-button__arrow>svg{transform:rotate(180deg)}.rds-arrow-button--forwards{flex-direction:row-reverse}\n")();
|
|
7
|
+
const A = () => /* @__PURE__ */ jsx(Arrow, {});
|
|
8
|
+
const PrimaryArrowButton = forwardRef(({
|
|
9
|
+
forwards = true,
|
|
10
|
+
className = "",
|
|
11
|
+
...props
|
|
12
|
+
}, ref) => /* @__PURE__ */ jsx(PrimaryDecoratedButton, {
|
|
13
|
+
className: `${className} ${forwards ? "rds-arrow-button--forwards" : "rds-arrow-button--backwards"}`,
|
|
14
|
+
arrow: A,
|
|
15
|
+
buttonStyle: "rds-arrow-button",
|
|
16
|
+
ref,
|
|
17
|
+
...props
|
|
18
|
+
}));
|
|
19
|
+
PrimaryArrowButton.displayName = "PrimaryArrowButton";
|
|
20
|
+
const SecondaryArrowButton = forwardRef(({
|
|
21
|
+
forwards = true,
|
|
22
|
+
className = "",
|
|
23
|
+
...props
|
|
24
|
+
}, ref) => /* @__PURE__ */ jsx(SecondaryDecoratedButton, {
|
|
25
|
+
className: `${className} ${forwards ? "rds-arrow-button--forwards" : "rds-arrow-button--backwards"}`,
|
|
26
|
+
arrow: A,
|
|
27
|
+
buttonStyle: "rds-arrow-button",
|
|
28
|
+
ref,
|
|
29
|
+
...props
|
|
30
|
+
}));
|
|
31
|
+
SecondaryArrowButton.displayName = "SecondaryArrowButton";
|
|
32
|
+
const TertiaryArrowButton = forwardRef(({
|
|
33
|
+
forwards = true,
|
|
34
|
+
className = "",
|
|
35
|
+
...props
|
|
36
|
+
}, ref) => /* @__PURE__ */ jsx(TertiaryDecoratedButton, {
|
|
37
|
+
className: `${className} ${forwards ? "rds-arrow-button--forwards" : "rds-arrow-button--backwards"}`,
|
|
38
|
+
arrow: A,
|
|
39
|
+
buttonStyle: "rds-arrow-button",
|
|
40
|
+
ref,
|
|
41
|
+
...props
|
|
42
|
+
}));
|
|
43
|
+
TertiaryArrowButton.displayName = "TertiaryArrowButton";
|
|
44
|
+
export { PrimaryArrowButton as P, SecondaryArrowButton as S, TertiaryArrowButton as T };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes } from "react";
|
|
2
|
+
export declare type ButtonVariants = "primary" | "secondary" | "tertiary";
|
|
3
|
+
export declare type ButtonBackgroundStyles = boolean | "white";
|
|
4
|
+
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
|
+
isLoading?: boolean;
|
|
6
|
+
className?: string;
|
|
7
|
+
lightBackground?: ButtonBackgroundStyles;
|
|
8
|
+
transparent?: boolean;
|
|
9
|
+
/** @deprecated */
|
|
10
|
+
icon?: () => JSX.Element;
|
|
11
|
+
/** @deprecated */
|
|
12
|
+
iconClass?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BaseButtonProps extends ButtonProps {
|
|
15
|
+
buttonType: ButtonVariants;
|
|
16
|
+
buttonStyle: "rds-button" | "rds-arrow-button" | "rds-icon-button";
|
|
17
|
+
}
|
|
18
|
+
export declare const BaseButton: import("react").ForwardRefExoticComponent<BaseButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { j as jsx, a as jsxs, F as Fragment } from "../core/RiksTV.js";
|
|
3
|
+
const BaseButton = forwardRef(({
|
|
4
|
+
children,
|
|
5
|
+
buttonType,
|
|
6
|
+
buttonStyle,
|
|
7
|
+
type = "button",
|
|
8
|
+
isLoading = false,
|
|
9
|
+
lightBackground = false,
|
|
10
|
+
transparent = false,
|
|
11
|
+
disabled,
|
|
12
|
+
className = "",
|
|
13
|
+
"aria-busy": ariaBusy,
|
|
14
|
+
icon: Icon,
|
|
15
|
+
iconClass = "",
|
|
16
|
+
...rest
|
|
17
|
+
}, ref) => /* @__PURE__ */ jsx("button", {
|
|
18
|
+
type,
|
|
19
|
+
...rest,
|
|
20
|
+
ref,
|
|
21
|
+
disabled: isLoading || disabled,
|
|
22
|
+
"aria-busy": isLoading || ariaBusy,
|
|
23
|
+
className: `
|
|
24
|
+
${buttonStyle}
|
|
25
|
+
rds-button__shared
|
|
26
|
+
rds-button__shared--${buttonType}
|
|
27
|
+
rds-button--${buttonType}
|
|
28
|
+
${isLoading ? "rds-button--loading" : ""}
|
|
29
|
+
${lightBackground ? "rds-light" : ""}
|
|
30
|
+
${lightBackground === "white" ? "rds-white" : ""}
|
|
31
|
+
${transparent ? "rds-transparent" : ""}
|
|
32
|
+
${className}`,
|
|
33
|
+
children: /* @__PURE__ */ jsxs(Fragment, {
|
|
34
|
+
children: [Icon && /* @__PURE__ */ jsx("span", {
|
|
35
|
+
"data-testid": "rds-button__icon",
|
|
36
|
+
className: `rds-button__icon ${iconClass}`,
|
|
37
|
+
children: /* @__PURE__ */ jsx(Icon, {})
|
|
38
|
+
}), children]
|
|
39
|
+
})
|
|
40
|
+
}));
|
|
41
|
+
BaseButton.displayName = "BaseButton";
|
|
42
|
+
export { BaseButton as B };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BaseButtonProps, ButtonProps } from "./BaseButton";
|
|
3
|
+
export interface DecoratedButtonProps extends ButtonProps {
|
|
4
|
+
postfix?: string;
|
|
5
|
+
icon?: () => JSX.Element;
|
|
6
|
+
arrow?: () => JSX.Element;
|
|
7
|
+
iconClass?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface BaseDecoratedButtonProps extends BaseButtonProps, DecoratedButtonProps {
|
|
10
|
+
}
|
|
11
|
+
export declare const BaseDecoratedButton: import("react").ForwardRefExoticComponent<BaseDecoratedButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { B as BaseButton } from "./BaseButton.js";
|
|
3
|
+
import { j as jsx, a as jsxs, F as Fragment } from "../core/RiksTV.js";
|
|
4
|
+
const BaseDecoratedButton = forwardRef(({
|
|
5
|
+
children,
|
|
6
|
+
buttonStyle,
|
|
7
|
+
postfix,
|
|
8
|
+
icon: Icon,
|
|
9
|
+
arrow: Arrow,
|
|
10
|
+
iconClass = "",
|
|
11
|
+
...rest
|
|
12
|
+
}, ref) => /* @__PURE__ */ jsx(BaseButton, {
|
|
13
|
+
buttonStyle,
|
|
14
|
+
ref,
|
|
15
|
+
...rest,
|
|
16
|
+
children: /* @__PURE__ */ jsxs(Fragment, {
|
|
17
|
+
children: [Icon && /* @__PURE__ */ jsx("span", {
|
|
18
|
+
"data-testid": "rds-button__icon",
|
|
19
|
+
className: `rds-button__icon ${iconClass}`,
|
|
20
|
+
children: /* @__PURE__ */ jsx(Icon, {})
|
|
21
|
+
}), Arrow && /* @__PURE__ */ jsx("span", {
|
|
22
|
+
"data-testid": "rds-button__arrow",
|
|
23
|
+
className: `rds-button__arrow ${iconClass}`,
|
|
24
|
+
children: /* @__PURE__ */ jsx(Arrow, {})
|
|
25
|
+
}), children, !!postfix && buttonStyle !== "rds-icon-button" && /* @__PURE__ */ jsx("span", {
|
|
26
|
+
className: "rds-button__postfix",
|
|
27
|
+
children: postfix
|
|
28
|
+
})]
|
|
29
|
+
})
|
|
30
|
+
}));
|
|
31
|
+
BaseDecoratedButton.displayName = "BaseDecoratedButton";
|
|
32
|
+
export { BaseDecoratedButton as B };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ButtonBackgroundStyles, ButtonVariants } from "./BaseButton";
|
|
3
|
+
import "./button.scss";
|
|
4
|
+
import "./button-shared.scss";
|
|
5
|
+
import "./link-button.scss";
|
|
6
|
+
import "./arrow-button.scss";
|
|
7
|
+
interface BaseLinkButtonPropsWithElement<ElementProps> {
|
|
8
|
+
element: (props: ElementProps) => JSX.Element;
|
|
9
|
+
variant?: ButtonVariants;
|
|
10
|
+
lightBackground?: ButtonBackgroundStyles;
|
|
11
|
+
transparent?: boolean;
|
|
12
|
+
className?: string;
|
|
13
|
+
withArrow?: boolean;
|
|
14
|
+
arrowForward?: boolean;
|
|
15
|
+
iconClass?: string;
|
|
16
|
+
}
|
|
17
|
+
declare type Props<ElementProps> = BaseLinkButtonPropsWithElement<ElementProps> & ElementProps;
|
|
18
|
+
export declare type BaseLinkButtonProps<ElementProps> = Omit<Props<ElementProps>, "element">;
|
|
19
|
+
export declare const BaseLinkButton: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<HTMLAnchorElement>>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import "./Button.js";
|
|
3
|
+
import "./ArrowButton.js";
|
|
4
|
+
import { A as Arrow } from "../icons/Arrow.js";
|
|
5
|
+
import { j as jsx, a as jsxs, F as Fragment } from "../core/RiksTV.js";
|
|
6
|
+
var linkButton = /* @__PURE__ */ (() => ".rds-link-button{width:fit-content}.rds-link-button>*{text-decoration:none}\n")();
|
|
7
|
+
const A = () => /* @__PURE__ */ jsx(Arrow, {});
|
|
8
|
+
const BaseLinkButton = forwardRef(({
|
|
9
|
+
element: Element,
|
|
10
|
+
variant = "primary",
|
|
11
|
+
className = "",
|
|
12
|
+
withArrow,
|
|
13
|
+
arrowForward,
|
|
14
|
+
iconClass = "",
|
|
15
|
+
children,
|
|
16
|
+
lightBackground,
|
|
17
|
+
transparent = false,
|
|
18
|
+
...rest
|
|
19
|
+
}, ref) => /* @__PURE__ */ jsx("div", {
|
|
20
|
+
className: `rds-link-button ${className}`,
|
|
21
|
+
children: /* @__PURE__ */ jsx(Element, {
|
|
22
|
+
className: `
|
|
23
|
+
rds-button rds-button__shared
|
|
24
|
+
rds-button__shared--${variant}
|
|
25
|
+
rds-button--${variant}
|
|
26
|
+
${lightBackground ? "rds-light" : ""}
|
|
27
|
+
${lightBackground === "white" ? "rds-white" : ""}
|
|
28
|
+
${transparent ? "rds-transparent" : ""}
|
|
29
|
+
${withArrow ? "rds-arrow-button" : ""}
|
|
30
|
+
${arrowForward === void 0 ? "" : arrowForward ? "rds-arrow-button--forwards" : "rds-arrow-button--backwards"}
|
|
31
|
+
`,
|
|
32
|
+
ref,
|
|
33
|
+
...rest,
|
|
34
|
+
children: /* @__PURE__ */ jsxs(Fragment, {
|
|
35
|
+
children: [withArrow && /* @__PURE__ */ jsx("span", {
|
|
36
|
+
"data-testid": "rds-button__arrow",
|
|
37
|
+
className: `rds-button__arrow ${iconClass}`,
|
|
38
|
+
children: /* @__PURE__ */ jsx(A, {})
|
|
39
|
+
}), children]
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
}));
|
|
43
|
+
BaseLinkButton.displayName = "BaseLinkButton";
|
|
44
|
+
export { BaseLinkButton as B };
|
|
@@ -5,3 +5,5 @@ import "./button-shared.scss";
|
|
|
5
5
|
export declare const PrimaryButton: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
6
6
|
export declare const SecondaryButton: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
7
7
|
export declare const TertiaryButton: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
export { LinkButton } from "./LinkButton";
|
|
9
|
+
export { BaseLinkButton } from "./BaseLinkButton";
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { B as BaseButton } from "./BaseButton.js";
|
|
3
|
+
import { j as jsx } from "../core/RiksTV.js";
|
|
4
|
+
import "./LinkButton.js";
|
|
5
|
+
import "./BaseLinkButton.js";
|
|
6
|
+
var button = /* @__PURE__ */ (() => '.rds-arrow-button,.rds-button{--fluid-block: clamp(.65625rem, 2vw, .78125rem);--fluid-inline: clamp(1rem, 2vw, 1.5rem);padding:var(--fluid-block) var(--fluid-inline);border-radius:var(--rds-roundness--button);overflow-y:hidden;cursor:pointer;font-size:1.125rem}.rds-arrow-button__icon,.rds-button__icon{display:flex;align-items:center;align-self:center;margin-right:var(--rds-spacing--16);width:1.125rem}.rds-arrow-button__icon>svg,.rds-button__icon>svg{width:100%}.rds-arrow-button__postfix,.rds-button__postfix{position:relative;display:flex;align-items:center;margin-left:var(--rds-spacing--16);padding-left:var(--rds-spacing--16)}.rds-arrow-button__postfix:before,.rds-button__postfix:before{content:" ";position:absolute;width:1px;background-color:currentColor;height:220%;left:0}.rds-arrow-button--loading:disabled,.rds-button--loading:disabled{cursor:wait!important;position:relative;overflow:hidden}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rds-arrow-button--loading:disabled:before,.rds-button--loading:disabled:before{content:"";position:absolute;inset:0;background-color:var(--rds-background-overlay-medium)}.rds-arrow-button--loading:disabled:after,.rds-button--loading:disabled:after{--button-spinner-size: 24px;--button-spinner-width: 3px;--calculated-spinner-size: calc( calc(var(--button-spinner-size) + var(--button-spinner-width) + var(--button-spinner-width)) / 2 );content:"";position:absolute;left:calc(50% - var(--calculated-spinner-size));top:calc(50% - var(--calculated-spinner-size));height:var(--button-spinner-size);width:var(--button-spinner-size);background-color:transparent;border-top:var(--button-spinner-width) solid var(--rds-accent-color-dark);border-left:var(--button-spinner-width) solid var(--rds-accent-color-dark);border-right:var(--button-spinner-width) solid var(--rds-accent-color-dark);border-bottom:var(--button-spinner-width) solid transparent;border-radius:50px;animation-duration:1s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:spin;animation-timing-function:linear}.rds-arrow-button--loading:disabled:hover,.rds-button--loading:disabled:hover{box-shadow:none}\n')();
|
|
7
|
+
var buttonShared = /* @__PURE__ */ (() => ".rds-button__shared{--common-button--primary-color: var(--rds-button-primary-fg);--common-button--primary-bg: var(--rds-accent-color);--common-button--primary-hover-bg: var(--rds-accent-hover);--common-button--primary-pressed-bg: var(--rds-accent-color);--common-button--secondary-border-color: var(--rds-foreground-primary);--common-button--secondary-color: var(--rds-foreground-primary);--common-button--secondary-bg: var(--rds-background-primary);--common-button--secondary-hover-color: var(--rds-background-primary);--common-button--secondary-hover-bg: var(--rds-foreground-primary);--common-button--secondary-pressed-color: var(--rds-button-secondary-pressed-fg);--common-button--secondary-pressed-bg: var(--rds-button-secondary-pressed-bg);--common-button--tertiary-bg: var(--rds-button-tertirary-bg);--common-button--tertiary-color: var(--rds-foreground-primary);--common-button--tertiary-hover-bg: var(--rds-button-tertiary-hover-bg);--common-button--tertiary-hover-color: var(--rds-foreground-primary);--common-button--tertiary-pressed-bg: var(--rds-background-secondary);--common-button--tertiary-pressed-color: var(--rds-foreground-primary);--common-button--disabled-bg: var(--rds-foreground-secondary);--common-button--disabled-color: var(--rds-foreground-tertiary);border:none;width:auto;background:transparent;line-height:normal;-webkit-appearance:none;display:flex;transition:125ms ease-in-out;transition-property:color,box-shadow,background-color;font-family:var(--rds-font-family-m-headlines)}.rds-button__shared::-moz-focus-inner{border:0;padding:0}.rds-button__shared--primary{color:var(--common-button--primary-color);background-color:var(--common-button--primary-bg)}.rds-button__shared--primary:hover{background-color:var(--common-button--primary-hover-bg)}.rds-button__shared--primary:active{box-shadow:none;background-color:var(--common-button--primary-pressed-bg)}.rds-button__shared--secondary{background-color:var(--common-button--secondary-bg);box-shadow:inset 0 0 0 2px var(--common-button--secondary-border-color);color:var(--common-button--secondary-color)}.rds-button__shared--secondary:hover{background-color:var(--common-button--secondary-hover-bg);color:var(--common-button--secondary-hover-color)}.rds-button__shared--secondary:active{background-color:var(--common-button--secondary-pressed-bg);color:var(--common-button--secondary-pressed-color);border-color:var(--common-button--secondary-pressed-bg)}.rds-button__shared--tertiary{background-color:var(--common-button--tertiary-bg);color:var(--common-button--tertiary-color)}.rds-button__shared--tertiary:hover{background-color:var(--common-button--tertiary-hover-bg);color:var(--common-button--tertiary-hover-color)}.rds-button__shared--tertiary:active{background-color:var(--common-button--tertiary-pressed-bg);color:var(--common-button--tertiary-pressed-color)}.rds-button__shared:disabled{background-color:var(--common-button--disabled-bg);color:var(--common-button--disabled-color);box-shadow:none;cursor:not-allowed;border:none}.rds-button__shared:hover{box-shadow:var(--rds-box-shadow--default)}.rds-button__shared:active{box-shadow:none}.rds-button__shared:focus::-moz-focus-inner{border-style:none;outline:0}.rds-button__shared:focus button::-moz-focus-inner,.rds-button__shared:focus [type=button]::-moz-focus-inner,.rds-button__shared:focus [type=reset]::-moz-focus-inner,.rds-button__shared:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-button__shared:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-button__shared:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-light .rds-button__shared--primary,.rds-light.rds-button__shared--primary{--common-button--primary-color: var(--rds-foreground-primary);--common-button--primary-bg: var(--rds-button-primary-fg)}.rds-light .rds-button__shared--primary:hover,.rds-light.rds-button__shared--primary:hover{--common-button--primary-hover-bg: var(--rds-foreground-tertiary)}.rds-light .rds-button__shared--primary:active,.rds-light.rds-button__shared--primary:active{box-shadow:none;--common-button--primary-pressed-bg: var(--rds-background-primary)}.rds-light .rds-button__shared--primary:disabled,.rds-light.rds-button__shared--primary:disabled{--common-button--disabled-color: var(--rds-button-tertiary-hover-bg)}.rds-light .rds-button__shared--secondary,.rds-light.rds-button__shared--secondary{--common-button--secondary-color: var(--rds-button-tertiary-hover-bg);--common-button--secondary-border-color: var(--rds-button-tertiary-hover-bg);--common-button--secondary-bg: var(--surface-background)}.rds-light .rds-button__shared--secondary:hover,.rds-light.rds-button__shared--secondary:hover{--common-button--secondary-hover-bg: var(--rds-button-primary-fg);--common-button--secondary-hover-color: var(--rds-foreground-primary)}.rds-light .rds-button__shared--secondary:active,.rds-light.rds-button__shared--secondary:active{--common-button--secondary-pressed-color: var(--rds-foreground-primary);--common-button--secondary-pressed-bg: var(--rds-button-primary-fg)}.rds-light .rds-button__shared--secondary:disabled,.rds-light.rds-button__shared--secondary:disabled{--common-button--disabled-color: var(--rds-button-primary-fg)}.rds-light.rds-white.rds-button__shared--secondary{--common-button--secondary-bg: var(--rds-foreground-primary)}.rds-transparent.rds-button__shared--secondary{--common-button--secondary-bg: transparent}\n")();
|
|
8
|
+
const PrimaryButton = forwardRef((props, ref) => /* @__PURE__ */ jsx(BaseButton, {
|
|
9
|
+
buttonStyle: "rds-button",
|
|
10
|
+
buttonType: "primary",
|
|
11
|
+
ref,
|
|
12
|
+
...props
|
|
13
|
+
}));
|
|
14
|
+
PrimaryButton.displayName = "PrimaryButton";
|
|
15
|
+
const SecondaryButton = forwardRef((props, ref) => /* @__PURE__ */ jsx(BaseButton, {
|
|
16
|
+
buttonStyle: "rds-button",
|
|
17
|
+
buttonType: "secondary",
|
|
18
|
+
ref,
|
|
19
|
+
...props
|
|
20
|
+
}));
|
|
21
|
+
SecondaryButton.displayName = "SecondaryButton";
|
|
22
|
+
const TertiaryButton = forwardRef((props, ref) => /* @__PURE__ */ jsx(BaseButton, {
|
|
23
|
+
buttonStyle: "rds-button",
|
|
24
|
+
buttonType: "tertiary",
|
|
25
|
+
ref,
|
|
26
|
+
...props
|
|
27
|
+
}));
|
|
28
|
+
TertiaryButton.displayName = "TertiaryButton";
|
|
29
|
+
export { PrimaryButton as P, SecondaryButton as S, TertiaryButton as T };
|