@rikstv/shared-components 0.6.2 → 0.6.6

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.
@@ -1 +1,10 @@
1
- import{C as r}from"./Core.js";import{j as s}from"./RiksTV.js";const o=({children:o})=>s(r,{brand:"strm",children:o});export{o as S};
1
+ import { C as Core } from "./Core.js";
2
+ import { j as jsx } from "./RiksTV.js";
3
+ var strm = "";
4
+ const StrimProvider = ({
5
+ children
6
+ }) => /* @__PURE__ */ jsx(Core, {
7
+ brand: "strm",
8
+ children
9
+ });
10
+ export { StrimProvider as S };
@@ -1,4 +1,4 @@
1
- @use './core';
1
+ @use "./core";
2
2
 
3
3
  .rtv {
4
4
  --rds-button-primary-fg: #fff;
@@ -25,6 +25,10 @@
25
25
  --rds-foreground-overlay-medium: rgba(255, 255, 255, 0.3);
26
26
  --rds-foreground-overlay-heavy: rgba(255, 255, 255, 0.7);
27
27
 
28
+ --rds-foreground-solid-soft: #3c3c3c;
29
+
30
+ --rds-surface-foreground: #434343;
31
+
28
32
  --rds-background-overlay-soft: rgba(0, 0, 0, 0.1);
29
33
  --rds-background-overlay-medium: rgba(0, 0, 0, 0.5);
30
34
  --rds-background-overlay-heavy: rgba(0, 0, 0, 0.85);
@@ -1,13 +1,9 @@
1
- @use './core';
1
+ @use "./core";
2
2
 
3
3
  .strm {
4
4
  --stand-up-green: #49f5a4;
5
5
  --surface-background: #edfef6;
6
- --rds-button-primary-fg: #004b50;
7
- --rds-button-secondary-pressed-fg: #ffffff;
8
- --rds-button-secondary-pressed-bg: #001d1d;
9
- --rds-button-tertirary-bg: #193f3f;
10
- --rds-button-tertiary-hover-bg: #004b50;
6
+
11
7
  --rds-accent-color: #faed6f;
12
8
  --rds-accent-color-mid: #f7e426;
13
9
  --rds-accent-color-dark: #f7e426;
@@ -27,6 +23,10 @@
27
23
  --rds-foreground-overlay-medium: rgba(255, 255, 255, 0.3);
28
24
  --rds-foreground-overlay-heavy: rgba(255, 255, 255, 0.7);
29
25
 
26
+ --rds-foreground-solid-soft: #1a4040;
27
+
28
+ --rds-surface-foreground: #004b50;
29
+
30
30
  --rds-background-overlay-soft: rgba(0, 0, 0, 0.1);
31
31
  --rds-background-overlay-medium: rgba(0, 0, 0, 0.5);
32
32
  --rds-background-overlay-heavy: rgba(0, 0, 0, 0.85);
@@ -36,6 +36,12 @@
36
36
  --rds-feedback-confirm: #4cbb81;
37
37
  --rds-feedback-error: #e01c17;
38
38
 
39
+ --rds-button-primary-fg: var(--rds-surface-foreground);
40
+ --rds-button-secondary-pressed-fg: #ffffff;
41
+ --rds-button-secondary-pressed-bg: #001d1d;
42
+ --rds-button-tertirary-bg: #193f3f;
43
+ --rds-button-tertiary-hover-bg: var(--rds-surface-foreground);
44
+
39
45
  --rds-roundness--default: 12px;
40
46
  --rds-roundness--button: 12px;
41
47
  --rds-roundness--round: 50%;
@@ -0,0 +1,2 @@
1
+ import { FC } from "react";
2
+ export declare const Chevron: FC;
@@ -0,0 +1,16 @@
1
+ import { j as jsx } from "../core/RiksTV.js";
2
+ const Chevron = () => /* @__PURE__ */ jsx("svg", {
3
+ "aria-label": "Pil",
4
+ width: "24",
5
+ height: "25",
6
+ viewBox: "0 0 24 25",
7
+ fill: "none",
8
+ xmlns: "http://www.w3.org/2000/svg",
9
+ children: /* @__PURE__ */ jsx("path", {
10
+ fillRule: "evenodd",
11
+ clipRule: "evenodd",
12
+ d: "M5.00962 7.91897C4.64323 7.53475 4.0374 7.52589 3.66026 7.89988C3.2872 8.26982 3.27911 8.87487 3.64154 9.25495L10.9543 16.9237C11.0883 17.0644 11.2493 17.1779 11.429 17.256C11.6089 17.3342 11.8031 17.375 12 17.375C12.1969 17.375 12.3911 17.3342 12.571 17.256C12.7508 17.1778 12.9121 17.0639 13.046 16.9234L20.3585 9.25495C20.7209 8.87486 20.7128 8.26982 20.3397 7.89988C19.9626 7.52589 19.3568 7.53475 18.9904 7.91897L12 15.2496L5.00962 7.91897Z",
13
+ fill: "white"
14
+ })
15
+ });
16
+ export { Chevron as C };
@@ -0,0 +1,29 @@
1
+ @keyframes rds-heart-beat {
2
+ 10% {
3
+ transform: scale(0.95);
4
+ }
5
+ 20% {
6
+ transform: scale(1.15);
7
+ }
8
+ 30% {
9
+ transform: scale(0.95);
10
+ }
11
+ 40% {
12
+ transform: scale(1.15);
13
+ }
14
+ 50% {
15
+ transform: scale(0.95);
16
+ }
17
+ 60% {
18
+ transform: scale(1);
19
+ }
20
+ }
21
+
22
+ .rds-icon__heart-toggle {
23
+ transform: scale(1);
24
+ animation-duration: 1000ms;
25
+ animation-fill-mode: forwards;
26
+ animation-iteration-count: 1;
27
+ animation-name: rds-heart-beat;
28
+ animation-timing-function: ease-out;
29
+ }
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export { RiksTVProvider } from "./core/RiksTV";
2
2
  export { StrimProvider } from "./core/Strim";
3
3
  export { LightMode } from "./core/LightMode";
4
+ export { Accordion } from "./accordion/Accordion";
4
5
  export { PrimaryButton, SecondaryButton, TertiaryButton } from "./button/Button";
5
6
  export { PrimaryIconButton, SecondaryIconButton, TertiaryIconButton } from "./button/IconButton";
7
+ export { ToggleButton } from "./toggleButton/ToggleButton";
6
8
  export { RadioToggleInput } from "./toggle/RadioToggle";
7
9
  export { FieldSet } from "./toggle/FieldSet";
8
10
  export { DisplayTitle, H1, H2, H3, H4, Body, Bold, SubBody, Tag, Meta } from "./typography/Typography";
@@ -1 +1,14 @@
1
- export{R as RiksTVProvider}from"./core/RiksTV.js";export{S as StrimProvider}from"./core/Strim.js";export{L as LightMode}from"./core/LightMode.js";export{P as PrimaryButton,S as SecondaryButton,T as TertiaryButton}from"./button/Button.js";export{P as PrimaryIconButton,S as SecondaryIconButton,T as TertiaryIconButton}from"./button/IconButton.js";export{a as RadioToggleInput}from"./toggle/RadioToggle.js";export{F as FieldSet}from"./toggle/FieldSet.js";export{B as Body,d as Bold,D as DisplayTitle,H as H1,a as H2,b as H3,c as H4,M as Meta,S as SubBody,T as Tag}from"./typography/Typography.js";import"react";import"./core/Core.js";import"./button/BaseButton.js";
1
+ export { R as RiksTVProvider } from "./core/RiksTV.js";
2
+ export { S as StrimProvider } from "./core/Strim.js";
3
+ export { L as LightMode } from "./core/LightMode.js";
4
+ export { A as Accordion } from "./accordion/Accordion.js";
5
+ export { P as PrimaryButton, S as SecondaryButton, T as TertiaryButton } from "./button/Button.js";
6
+ export { P as PrimaryIconButton, S as SecondaryIconButton, T as TertiaryIconButton } from "./button/IconButton.js";
7
+ export { T as ToggleButton } from "./toggleButton/ToggleButton.js";
8
+ export { a as RadioToggleInput } from "./toggle/RadioToggle.js";
9
+ export { F as FieldSet } from "./toggle/FieldSet.js";
10
+ export { B as Body, d as Bold, D as DisplayTitle, H as H1, a as H2, b as H3, c as H4, M as Meta, S as SubBody, T as Tag } from "./typography/Typography.js";
11
+ import "react";
12
+ import "./core/Core.js";
13
+ import "./icons/Chevron.js";
14
+ import "./button/BaseButton.js";
@@ -1 +1,66 @@
1
- var e=Object.defineProperty,r=Object.defineProperties,a=Object.getOwnPropertyDescriptors,l=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,s=(r,a,l)=>a in r?e(r,a,{enumerable:!0,configurable:!0,writable:!0,value:l}):r[a]=l,i=(e,r)=>{for(var a in r||(r={}))t.call(r,a)&&s(e,a,r[a]);if(l)for(var a of l(r))o.call(r,a)&&s(e,a,r[a]);return e};import{forwardRef as n}from"react";import{R as d}from"./RadioToggle.js";import{j as c,a as f}from"../core/RiksTV.js";const m=n(((e,s)=>{var n,m,p=e,{legend:b,children:g,name:O,className:v="",showLegend:y=!1}=p,j=((e,r)=>{var a={};for(var s in e)t.call(e,s)&&r.indexOf(s)<0&&(a[s]=e[s]);if(null!=e&&l)for(var s of l(e))r.indexOf(s)<0&&o.call(e,s)&&(a[s]=e[s]);return a})(p,["legend","children","name","className","showLegend"]);return c(d.Provider,{value:{radioName:O},children:f("fieldset",(n=i({"data-testid":"fieldset"},j),m={className:`rds-field-set ${v}`,ref:s,children:[c("legend",{className:"rds-field-set__legend "+(y?"":"sr-only"),children:b}),g]},r(n,a(m))))})}));m.displayName="FieldSet";export{m as F};
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { forwardRef } from "react";
33
+ import { R as RadioContext } from "./RadioToggle.js";
34
+ import { j as jsx, a as jsxs } from "../core/RiksTV.js";
35
+ const FieldSet = forwardRef((_a, ref) => {
36
+ var _b = _a, {
37
+ legend,
38
+ children,
39
+ name,
40
+ className = "",
41
+ showLegend = false
42
+ } = _b, rest = __objRest(_b, [
43
+ "legend",
44
+ "children",
45
+ "name",
46
+ "className",
47
+ "showLegend"
48
+ ]);
49
+ return /* @__PURE__ */ jsx(RadioContext.Provider, {
50
+ value: {
51
+ radioName: name
52
+ },
53
+ children: /* @__PURE__ */ jsxs("fieldset", __spreadProps(__spreadValues({
54
+ "data-testid": "fieldset"
55
+ }, rest), {
56
+ className: `rds-field-set ${className}`,
57
+ ref,
58
+ children: [/* @__PURE__ */ jsx("legend", {
59
+ className: `rds-field-set__legend ${showLegend ? "" : "sr-only"}`,
60
+ children: legend
61
+ }), children]
62
+ }))
63
+ });
64
+ });
65
+ FieldSet.displayName = "FieldSet";
66
+ export { FieldSet as F };
@@ -1 +1 @@
1
- .rds-field-set{border:none;margin:0;padding:0;display:flex}.rds-field-set__legend{margin-bottom:var(--rds-spacing--8)}.rds-radio-toggle{padding:0;background-color:var(--rds-foreground-overlay-soft);color:#fff;margin:0 var(--rds-spacing--8);display:block;max-width:25ch;min-width:7ch;overflow:hidden;border-radius:var(--rds-roundness--button)}.rds-radio-toggle:hover{background-color:var(--rds-background-tertiary)}.rds-radio-toggle:active{background-color:var(--rds-background-overlay-soft);color:#fff}.rds-radio-toggle__label{width:100%;display:grid;place-items:center;transition:125ms ease background-color;padding:.78125rem var(--rds-spacing--24);box-sizing:border-box;user-select:none}.rds-radio-toggle__input{position:absolute;opacity:0}.rds-radio-toggle__input:checked+.rds-radio-toggle__label{background-color:var(--rds-foreground-tertiary)}.rds-radio-toggle__input:active+.rds-radio-toggle__label{background-color:var(--rds-foreground-overlay-soft)}.rds-radio-toggle:focus::-moz-focus-inner{border-style:none;outline:0}.rds-radio-toggle:focus button::-moz-focus-inner,.rds-radio-toggle:focus [type=button]::-moz-focus-inner,.rds-radio-toggle:focus [type=reset]::-moz-focus-inner,.rds-radio-toggle:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-radio-toggle:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-radio-toggle:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-radio-toggle:focus-within::-moz-focus-inner{border-style:none;outline:0}.rds-radio-toggle:focus-within button::-moz-focus-inner,.rds-radio-toggle:focus-within [type=button]::-moz-focus-inner,.rds-radio-toggle:focus-within [type=reset]::-moz-focus-inner,.rds-radio-toggle:focus-within [type=submit]::-moz-focus-inner{border-style:none}.rds-radio-toggle:focus-within input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-radio-toggle:focus-within{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}
1
+ .rds-button__shared,.rds-radio-toggle{--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-tertiary);--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,.rds-radio-toggle::-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);border:2px solid 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,.rds-radio-toggle{background-color:var(--common-button--tertiary-bg);color:var(--common-button--tertiary-color)}.rds-button__shared--tertiary:hover,.rds-radio-toggle:hover{background-color:var(--common-button--tertiary-hover-bg);color:var(--common-button--tertiary-hover-color)}.rds-button__shared--tertiary:active,.rds-radio-toggle:active{background-color:var(--common-button--tertiary-pressed-bg);color:var(--common-button--tertiary-pressed-color)}.rds-button__shared:disabled,.rds-radio-toggle: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,.rds-radio-toggle:hover{box-shadow:var(--rds-box-shadow--default)}.rds-button__shared:active,.rds-radio-toggle:active{box-shadow:none}.rds-button__shared:focus::-moz-focus-inner,.rds-radio-toggle:focus::-moz-focus-inner{border-style:none;outline:0}.rds-button__shared:focus button::-moz-focus-inner,.rds-radio-toggle:focus button::-moz-focus-inner,.rds-button__shared:focus [type=button]::-moz-focus-inner,.rds-radio-toggle:focus [type=button]::-moz-focus-inner,.rds-button__shared:focus [type=reset]::-moz-focus-inner,.rds-radio-toggle:focus [type=reset]::-moz-focus-inner,.rds-button__shared:focus [type=submit]::-moz-focus-inner,.rds-radio-toggle:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-button__shared:focus input[type=button]::-moz-focus-inner,.rds-radio-toggle:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-button__shared:focus,html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-radio-toggle:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-button,.rds-radio-toggle{padding:.78125rem var(--rds-spacing--32);border-radius:var(--rds-roundness--button);overflow-y:hidden;cursor:pointer;font-size:1.125rem}.rds-button__icon{display:flex;align-items:center;align-self:center;margin-right:var(--rds-spacing--16);width:1.125rem}.rds-button__icon>svg{width:100%}.rds-button__postfix{position:relative;display:flex;align-items:center;margin-left:var(--rds-spacing--16);padding-left:var(--rds-spacing--16)}.rds-button__postfix:before{content:" ";position:absolute;width:1px;background-color:currentColor;height:200%;left:0}.rds-button--loading:disabled{cursor:wait!important}.rds-button--loading:disabled:hover{box-shadow:none}.rds-field-set{border:none;margin:0;padding:0;display:flex}.rds-field-set__legend{margin-bottom:var(--rds-spacing--8)}.rds-radio-toggle{padding:0;background-color:var(--rds-foreground-overlay-soft);color:#fff;margin:0 var(--rds-spacing--8);display:block;max-width:25ch;min-width:7ch;overflow:hidden;border-radius:var(--rds-roundness--button)}.rds-radio-toggle:hover{background-color:var(--rds-background-tertiary)}.rds-radio-toggle:active{background-color:var(--rds-background-overlay-soft);color:#fff}.rds-radio-toggle__label{width:100%;display:grid;place-items:center;transition:125ms ease background-color;padding:.78125rem var(--rds-spacing--24);box-sizing:border-box;user-select:none}.rds-radio-toggle__input{position:absolute;opacity:0}.rds-radio-toggle__input:checked+.rds-radio-toggle__label{background-color:var(--rds-foreground-tertiary)}.rds-radio-toggle__input:active+.rds-radio-toggle__label{background-color:var(--rds-foreground-overlay-soft)}.rds-radio-toggle:focus::-moz-focus-inner{border-style:none;outline:0}.rds-radio-toggle:focus button::-moz-focus-inner,.rds-radio-toggle:focus [type=button]::-moz-focus-inner,.rds-radio-toggle:focus [type=reset]::-moz-focus-inner,.rds-radio-toggle:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-radio-toggle:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-radio-toggle:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-radio-toggle:focus-within::-moz-focus-inner{border-style:none;outline:0}.rds-radio-toggle:focus-within button::-moz-focus-inner,.rds-radio-toggle:focus-within [type=button]::-moz-focus-inner,.rds-radio-toggle:focus-within [type=reset]::-moz-focus-inner,.rds-radio-toggle:focus-within [type=submit]::-moz-focus-inner{border-style:none}.rds-radio-toggle:focus-within input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-radio-toggle:focus-within{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}
@@ -1 +1,65 @@
1
- var r=Object.defineProperty,e=Object.defineProperties,a=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,l=Object.prototype.propertyIsEnumerable,s=(e,a,t)=>a in e?r(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t,n=(r,e)=>{for(var a in e||(e={}))o.call(e,a)&&s(r,a,e[a]);if(t)for(var a of t(e))l.call(e,a)&&s(r,a,e[a]);return r};import{createContext as i,forwardRef as c,useContext as p}from"react";import"../button/Button.js";import{a as d,j as m}from"../core/RiksTV.js";const b=i({radioName:""});const f=c(((r,s)=>{var i=r,{label:c,name:f,className:u=""}=i,g=((r,e)=>{var a={};for(var s in r)o.call(r,s)&&e.indexOf(s)<0&&(a[s]=r[s]);if(null!=r&&t)for(var s of t(r))e.indexOf(s)<0&&l.call(r,s)&&(a[s]=r[s]);return a})(i,["label","name","className"]);const{radioName:y}=p(b);return d("label",{className:`rds-radio-toggle rds-button rds-button__shared rds-button__shared--primary ${u}`,children:[m("input",(O=n({className:"rds-radio-toggle__input"},g),j={ref:s,type:"radio",name:y||f},e(O,a(j)))),m("span",{className:"rds-radio-toggle__label",children:c})]});var O,j}));f.displayName="RadioToggleInput";export{b as R,f as a};
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { createContext, forwardRef, useContext } from "react";
33
+ import "../button/Button.js";
34
+ import { a as jsxs, j as jsx } from "../core/RiksTV.js";
35
+ const RadioContext = createContext({ radioName: "" });
36
+ var radioToggle = "";
37
+ const RadioToggleInput = forwardRef((_a, ref) => {
38
+ var _b = _a, {
39
+ label,
40
+ name,
41
+ className = ""
42
+ } = _b, rest = __objRest(_b, [
43
+ "label",
44
+ "name",
45
+ "className"
46
+ ]);
47
+ const {
48
+ radioName
49
+ } = useContext(RadioContext);
50
+ return /* @__PURE__ */ jsxs("label", {
51
+ className: `rds-radio-toggle ${className}`,
52
+ children: [/* @__PURE__ */ jsx("input", __spreadProps(__spreadValues({
53
+ className: "rds-radio-toggle__input"
54
+ }, rest), {
55
+ ref,
56
+ type: "radio",
57
+ name: radioName || name
58
+ })), /* @__PURE__ */ jsx("span", {
59
+ className: "rds-radio-toggle__label",
60
+ children: label
61
+ })]
62
+ });
63
+ });
64
+ RadioToggleInput.displayName = "RadioToggleInput";
65
+ export { RadioContext as R, RadioToggleInput as a };
@@ -1,5 +1,7 @@
1
- @use '../core/mixin/focus' as mix;
2
- @use '../core/mixin/rem';
1
+ @use "../core/mixin/focus" as mix;
2
+ @use "../core/mixin/rem";
3
+ @use "../button/button-shared";
4
+ @use "../button/button";
3
5
 
4
6
  .rds-field-set {
5
7
  border: none;
@@ -12,6 +14,9 @@
12
14
  }
13
15
 
14
16
  .rds-radio-toggle {
17
+ @extend .rds-button__shared;
18
+ @extend .rds-button;
19
+ @extend .rds-button__shared--tertiary;
15
20
  // button reset
16
21
  padding: 0;
17
22
  background-color: var(--rds-foreground-overlay-soft);
@@ -0,0 +1 @@
1
+ .rds-button__shared,.rds-toggle-button{--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-tertiary);--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,.rds-toggle-button::-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);border:2px solid 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,.rds-toggle-button{background-color:var(--common-button--tertiary-bg);color:var(--common-button--tertiary-color)}.rds-button__shared--tertiary:hover,.rds-toggle-button:hover{background-color:var(--common-button--tertiary-hover-bg);color:var(--common-button--tertiary-hover-color)}.rds-button__shared--tertiary:active,.rds-toggle-button:active{background-color:var(--common-button--tertiary-pressed-bg);color:var(--common-button--tertiary-pressed-color)}.rds-button__shared:disabled,.rds-toggle-button: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,.rds-toggle-button:hover{box-shadow:var(--rds-box-shadow--default)}.rds-button__shared:active,.rds-toggle-button:active{box-shadow:none}.rds-button__shared:focus::-moz-focus-inner,.rds-toggle-button:focus::-moz-focus-inner{border-style:none;outline:0}.rds-button__shared:focus button::-moz-focus-inner,.rds-toggle-button:focus button::-moz-focus-inner,.rds-button__shared:focus [type=button]::-moz-focus-inner,.rds-toggle-button:focus [type=button]::-moz-focus-inner,.rds-button__shared:focus [type=reset]::-moz-focus-inner,.rds-toggle-button:focus [type=reset]::-moz-focus-inner,.rds-button__shared:focus [type=submit]::-moz-focus-inner,.rds-toggle-button:focus [type=submit]::-moz-focus-inner{border-style:none}.rds-button__shared:focus input[type=button]::-moz-focus-inner,.rds-toggle-button:focus input[type=button]::-moz-focus-inner{outline:0}html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-button__shared:focus,html:not([data-mousenavigation]):not([data-touchnavigation]) .rds-toggle-button:focus{outline-offset:2px;outline:2px solid var(--rds-feedback-info);transition:outline-offset .25s ease}.rds-button,.rds-toggle-button{padding:.78125rem var(--rds-spacing--32);border-radius:var(--rds-roundness--button);overflow-y:hidden;cursor:pointer;font-size:1.125rem}.rds-button__icon,.rds-toggle-button__rounded{display:flex;align-items:center;align-self:center;margin-right:var(--rds-spacing--16);width:1.125rem}.rds-button__icon>svg,.rds-toggle-button__rounded>svg{width:100%}.rds-button__postfix{position:relative;display:flex;align-items:center;margin-left:var(--rds-spacing--16);padding-left:var(--rds-spacing--16)}.rds-button__postfix:before{content:" ";position:absolute;width:1px;background-color:currentColor;height:200%;left:0}.rds-button--loading:disabled{cursor:wait!important}.rds-button--loading:disabled:hover{box-shadow:none}.rds-icon-button,.rds-toggle-button--round{--default-icon-size: 3rem;--default-icon-margin: .75rem;border-radius:50%;max-height:var(--default-icon-size);max-width:var(--default-icon-size);display:flex;justify-content:center;align-items:center;box-sizing:border-box;margin:0;padding:0}.rds-icon-button .rds-button__icon,.rds-toggle-button--round .rds-button__icon,.rds-icon-button .rds-toggle-button__rounded,.rds-toggle-button--round .rds-toggle-button__rounded{margin:0;box-sizing:border-box;margin:var(--default-icon-margin);height:var(--default-icon-size);width:var(--default-icon-size)}.rds-icon-button .rds-button__icon>svg,.rds-toggle-button--round .rds-button__icon>svg,.rds-icon-button .rds-toggle-button__rounded>svg,.rds-toggle-button--round .rds-toggle-button__rounded>svg{width:100%}.rds-toggle-button{display:inline-block;user-select:none}.rds-toggle-button__input{opacity:0;position:absolute}.rds-toggle-button__content{display:flex;align-items:center}.rds-toggle-button__input:checked+.rds-toggle-button{background-color:var(--rds-foreground-tertiary)}.rds-toggle-button__input:checked+.rds-toggle-button:active{background-color:var(--rds-foreground-overlay-medium)}.rds-toggle-button--round .rds-toggle-button__rounded{margin:0}
@@ -0,0 +1,17 @@
1
+ import { FC, InputHTMLAttributes } from "react";
2
+ import "./toggleButton.scss";
3
+ interface Props extends Omit<InputHTMLAttributes<HTMLInputElement>, "type"> {
4
+ children: string;
5
+ showLabel?: boolean;
6
+ icons?: {
7
+ checkedIcon?: () => JSX.Element;
8
+ uncheckedIcon?: () => JSX.Element;
9
+ } | {
10
+ toggleIcon?: FC<{
11
+ checked: boolean;
12
+ }>;
13
+ };
14
+ iconClass?: string;
15
+ }
16
+ export declare const ToggleButton: import("react").ForwardRefExoticComponent<Props & import("react").RefAttributes<HTMLInputElement>>;
17
+ export {};
@@ -0,0 +1,106 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __objRest = (source, exclude) => {
18
+ var target = {};
19
+ for (var prop in source)
20
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
21
+ target[prop] = source[prop];
22
+ if (source != null && __getOwnPropSymbols)
23
+ for (var prop of __getOwnPropSymbols(source)) {
24
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
25
+ target[prop] = source[prop];
26
+ }
27
+ return target;
28
+ };
29
+ import { forwardRef, useRef, useState } from "react";
30
+ import { a as jsxs, j as jsx } from "../core/RiksTV.js";
31
+ const generateId = (id) => {
32
+ if (id) {
33
+ return id;
34
+ }
35
+ return `${new Date().valueOf()}`;
36
+ };
37
+ var toggleButton = "";
38
+ const ToggleButton = forwardRef((_a, ref) => {
39
+ var _b = _a, {
40
+ defaultChecked,
41
+ showLabel = true,
42
+ icons,
43
+ iconClass = "",
44
+ children,
45
+ onChange,
46
+ id,
47
+ className = ""
48
+ } = _b, rest = __objRest(_b, [
49
+ "defaultChecked",
50
+ "showLabel",
51
+ "icons",
52
+ "iconClass",
53
+ "children",
54
+ "onChange",
55
+ "id",
56
+ "className"
57
+ ]);
58
+ const internalRef = useRef(null);
59
+ const [internalId] = useState(generateId(id));
60
+ const [isChecked, setIsChecked] = useState(!!defaultChecked);
61
+ const CheckedIcon = icons && "checkedIcon" in icons ? icons.checkedIcon : null;
62
+ const UncheckedIcon = icons && "uncheckedIcon" in icons ? icons.uncheckedIcon : null;
63
+ const ToggleIcon = icons && "toggleIcon" in icons ? icons.toggleIcon : null;
64
+ const inputRef = ref || internalRef;
65
+ const handleChange = (e) => {
66
+ var _a2;
67
+ if (typeof onChange === "function") {
68
+ onChange(e);
69
+ }
70
+ if (typeof inputRef !== "function") {
71
+ setIsChecked(!!((_a2 = inputRef.current) == null ? void 0 : _a2.checked));
72
+ } else {
73
+ setIsChecked(!isChecked);
74
+ }
75
+ };
76
+ return /* @__PURE__ */ jsxs("div", {
77
+ className,
78
+ children: [/* @__PURE__ */ jsx("input", __spreadValues({
79
+ id: internalId,
80
+ ref: inputRef,
81
+ type: "checkbox",
82
+ className: "rds-toggle-button__input",
83
+ onChange: handleChange,
84
+ defaultChecked
85
+ }, rest)), /* @__PURE__ */ jsx("label", {
86
+ "data-testid": "toggle-button__label",
87
+ className: `rds-toggle-button ${showLabel ? "" : "rds-toggle-button--round"}`,
88
+ htmlFor: internalId,
89
+ children: /* @__PURE__ */ jsxs("span", {
90
+ className: "rds-toggle-button__content",
91
+ children: [icons && /* @__PURE__ */ jsxs("span", {
92
+ className: `rds-toggle-button__rounded ${iconClass}`,
93
+ children: [ToggleIcon && /* @__PURE__ */ jsx(ToggleIcon, {
94
+ checked: isChecked
95
+ }), CheckedIcon && isChecked && /* @__PURE__ */ jsx(CheckedIcon, {}), UncheckedIcon && !isChecked && /* @__PURE__ */ jsx(UncheckedIcon, {})]
96
+ }), /* @__PURE__ */ jsx("span", {
97
+ "data-testid": "toggle-button__label__text",
98
+ className: showLabel ? "" : "sr-only",
99
+ children
100
+ })]
101
+ })
102
+ })]
103
+ });
104
+ });
105
+ ToggleButton.displayName = "ToggleButton";
106
+ export { ToggleButton as T };
@@ -0,0 +1 @@
1
+ export declare const generateId: (id: string | undefined) => string;
@@ -0,0 +1,43 @@
1
+ @use "../button/button-shared";
2
+ @use "../button/button";
3
+ @use "../button/icon-button";
4
+
5
+ .rds-toggle-button {
6
+ @extend .rds-button__shared;
7
+ @extend .rds-button;
8
+ @extend .rds-button__shared--tertiary;
9
+
10
+ display: inline-block;
11
+ user-select: none;
12
+
13
+ &__input {
14
+ opacity: 0;
15
+ position: absolute;
16
+ }
17
+
18
+ &__rounded {
19
+ @extend .rds-button__icon;
20
+ }
21
+
22
+ &__content {
23
+ display: flex;
24
+ align-items: center;
25
+ }
26
+
27
+ &__input:checked {
28
+ & + .rds-toggle-button {
29
+ background-color: var(--rds-foreground-tertiary);
30
+
31
+ &:active {
32
+ background-color: var(--rds-foreground-overlay-medium);
33
+ }
34
+ }
35
+ }
36
+
37
+ &--round {
38
+ @extend .rds-icon-button;
39
+ .rds-toggle-button__rounded {
40
+ margin: 0;
41
+ }
42
+ }
43
+ }
@@ -1 +1,95 @@
1
- var e=Object.defineProperty,t=Object.defineProperties,o=Object.getOwnPropertyDescriptors,l=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,i=(t,o,l)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:l}):t[o]=l;import{forwardRef as n}from"react";import{j as s}from"../core/RiksTV.js";const c=e=>n(((n,c)=>{var m=n,{children:k,lookLike:p=e.lookLike,className:b="",lightBackground:d=!1}=m,f=((e,t)=>{var o={};for(var i in e)a.call(e,i)&&t.indexOf(i)<0&&(o[i]=e[i]);if(null!=e&&l)for(var i of l(e))t.indexOf(i)<0&&r.call(e,i)&&(o[i]=e[i]);return o})(m,["children","lookLike","className","lightBackground"]);const L=e.semanticElement;return s(L,(h=((e,t)=>{for(var o in t||(t={}))a.call(t,o)&&i(e,o,t[o]);if(l)for(var o of l(t))r.call(t,o)&&i(e,o,t[o]);return e})({className:`rds-${p} ${d?`rds-${p}--light`:""} ${b}`},f),t(h,o({ref:c,children:k}))));var h})),m=c({semanticElement:"h1",lookLike:"display-title"}),k=c({semanticElement:"h1",lookLike:"title-1"}),p=c({semanticElement:"h2",lookLike:"title-2"}),b=c({semanticElement:"h3",lookLike:"title-3"}),d=c({semanticElement:"h4",lookLike:"title-4"}),f=c({semanticElement:"p",lookLike:"body"}),L=c({semanticElement:"p",lookLike:"sub-body"}),h=c({semanticElement:"span",lookLike:"tag"}),E=c({semanticElement:"strong",lookLike:"bold"}),u=c({semanticElement:"span",lookLike:"meta"});export{f as B,m as D,k as H,u as M,L as S,h as T,p as a,b,d as c,E as d};
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __objRest = (source, exclude) => {
21
+ var target = {};
22
+ for (var prop in source)
23
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
+ target[prop] = source[prop];
25
+ if (source != null && __getOwnPropSymbols)
26
+ for (var prop of __getOwnPropSymbols(source)) {
27
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
+ target[prop] = source[prop];
29
+ }
30
+ return target;
31
+ };
32
+ import { forwardRef } from "react";
33
+ import { j as jsx } from "../core/RiksTV.js";
34
+ var typography = "";
35
+ const typographyFactory = (factoryProps) => forwardRef((_a, ref) => {
36
+ var _b = _a, {
37
+ children,
38
+ lookLike = factoryProps.lookLike,
39
+ className = "",
40
+ lightBackground = false
41
+ } = _b, props = __objRest(_b, [
42
+ "children",
43
+ "lookLike",
44
+ "className",
45
+ "lightBackground"
46
+ ]);
47
+ const C = factoryProps.semanticElement;
48
+ return /* @__PURE__ */ jsx(C, __spreadProps(__spreadValues({
49
+ className: `rds-${lookLike} ${lightBackground ? `rds-${lookLike}--light` : ""} ${className}`
50
+ }, props), {
51
+ ref,
52
+ children
53
+ }));
54
+ });
55
+ const DisplayTitle = typographyFactory({
56
+ semanticElement: "h1",
57
+ lookLike: "display-title"
58
+ });
59
+ const H1 = typographyFactory({
60
+ semanticElement: "h1",
61
+ lookLike: "title-1"
62
+ });
63
+ const H2 = typographyFactory({
64
+ semanticElement: "h2",
65
+ lookLike: "title-2"
66
+ });
67
+ const H3 = typographyFactory({
68
+ semanticElement: "h3",
69
+ lookLike: "title-3"
70
+ });
71
+ const H4 = typographyFactory({
72
+ semanticElement: "h4",
73
+ lookLike: "title-4"
74
+ });
75
+ const Body = typographyFactory({
76
+ semanticElement: "p",
77
+ lookLike: "body"
78
+ });
79
+ const SubBody = typographyFactory({
80
+ semanticElement: "p",
81
+ lookLike: "sub-body"
82
+ });
83
+ const Tag = typographyFactory({
84
+ semanticElement: "span",
85
+ lookLike: "tag"
86
+ });
87
+ const Bold = typographyFactory({
88
+ semanticElement: "strong",
89
+ lookLike: "bold"
90
+ });
91
+ const Meta = typographyFactory({
92
+ semanticElement: "span",
93
+ lookLike: "meta"
94
+ });
95
+ export { Body as B, DisplayTitle as D, H1 as H, Meta as M, SubBody as S, Tag as T, H2 as a, H3 as b, H4 as c, Bold as d };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rikstv/shared-components",
3
- "version": "0.6.2",
3
+ "version": "0.6.6",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -34,7 +34,7 @@
34
34
  "@cypress/react": "^5.10.0",
35
35
  "@cypress/vite-dev-server": "^2.1.0",
36
36
  "@testing-library/cypress": "^8.0.1",
37
- "react-hook-form": "^7.15.4",
37
+ "react-hook-form": "^7.16.1",
38
38
  "rollup-plugin-copy": "^3.4.0",
39
39
  "rollup-plugin-svg": "^2.0.0",
40
40
  "vite-plugin-react-svg": "^0.2.0"