@fluid-topics/ftds-radio 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ export interface FtdsRadioProperties {
2
+ value?: string;
3
+ name?: string;
4
+ checked?: boolean;
5
+ ariaChecked?: string;
6
+ disabled?: boolean;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { radio } from "@fluid-topics/ft-wc-utils";
2
+ export { radio as FtdsRadioCssVariables };
3
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,112 @@
1
+ import { css } from "lit";
2
+ import { radio, setVariable, } from "@fluid-topics/ft-wc-utils";
3
+ import { FtRippleCssVariables } from "@fluid-topics/ft-ripple";
4
+ export { radio as FtdsRadioCssVariables };
5
+ export const styles = css `
6
+ * {
7
+ box-sizing: border-box;
8
+ display: inline-flex;
9
+ align-items: center;
10
+ --input-size: calc(${radio.circleSize} + 2 * (${radio.focusOutlineOffset} + ${radio.focusOutlineWidth}));
11
+ --input-margin: calc(-1 * ${radio.focusOutlineOffset} - ${radio.focusOutlineWidth});
12
+ }
13
+
14
+ .ftds-radio {
15
+ box-sizing: border-box;
16
+ color: ${radio.color};
17
+ gap: ${radio.horizontalGap};
18
+ }
19
+
20
+ .ftds-radio--disabled:not(.ftds-radio--checked) {
21
+ opacity: ${radio.unselectedDisabledComponentOpacity}
22
+ }
23
+
24
+ .ftds-radio--disabled.ftds-radio--checked {
25
+ opacity: ${radio.selectedDisabledComponentOpacity}
26
+ }
27
+
28
+ input {
29
+ opacity: 0;
30
+ position: absolute;
31
+ width: var(--input-size);
32
+ height: var(--input-size);
33
+ margin: 0;
34
+ }
35
+
36
+ .ftds-radio--box-container {
37
+ position: relative;
38
+ width: var(--input-size);
39
+ height: var(--input-size);
40
+ margin: var(--input-margin);
41
+
42
+ display: flex;
43
+ justify-content: center;
44
+ align-items: center;
45
+ flex-shrink: 0;
46
+ }
47
+
48
+ .ftds-radio ft-ripple {
49
+ z-index: 0;
50
+ ${setVariable(FtRippleCssVariables.color, radio.unselectedStateLayerColor)};
51
+ ${setVariable(FtRippleCssVariables.backgroundColor, radio.unselectedStateLayerColor)};
52
+ ${setVariable(FtRippleCssVariables.opacityContentOnSurfaceHover, radio.unselectedHoverStateLayerOpacity)};
53
+ ${setVariable(FtRippleCssVariables.opacityContentOnSurfaceFocused, radio.unselectedFocusStateLayerOpacity)};
54
+ ${setVariable(FtRippleCssVariables.opacityContentOnSurfacePressed, radio.unselectedActiveStateLayerOpacity)};
55
+ }
56
+
57
+ .ftds-radio--checked ft-ripple {
58
+ ${setVariable(FtRippleCssVariables.color, radio.selectedStateLayerColor)};
59
+ ${setVariable(FtRippleCssVariables.backgroundColor, radio.selectedStateLayerColor)};
60
+ ${setVariable(FtRippleCssVariables.opacityContentOnSurfaceHover, radio.selectedHoverStateLayerOpacity)};
61
+ ${setVariable(FtRippleCssVariables.opacityContentOnSurfaceFocused, radio.selectedFocusStateLayerOpacity)};
62
+ ${setVariable(FtRippleCssVariables.opacityContentOnSurfacePressed, radio.selectedActiveStateLayerOpacity)};
63
+ }
64
+
65
+ .ftds-radio--box {
66
+ z-index: 1;
67
+ border: 2px solid ${radio.unselectedBorderColor};
68
+ border-radius: 50%;
69
+
70
+ display: flex;
71
+ justify-content: center;
72
+ align-items: center;
73
+
74
+ width: ${radio.circleSize};
75
+ height: ${radio.circleSize};
76
+ }
77
+
78
+ .ftds-radio--box:after {
79
+ content: " ";
80
+ background-color: ${radio.selectedRadioColor};
81
+
82
+ border-radius: 50%;
83
+
84
+ width: calc(${radio.circleSize} - 8px);
85
+ height: calc(${radio.circleSize} - 8px);
86
+
87
+ transform: scale(0);
88
+ transition: transform 100ms ease;
89
+ }
90
+
91
+ .ftds-radio--checked .ftds-radio--box {
92
+ border-color: ${radio.selectedRadioColor};
93
+ }
94
+
95
+
96
+ .ftds-radio--checked .ftds-radio--box:after {
97
+ transform: scale(1);
98
+ }
99
+
100
+ .ftds-radio--disabled .ftds-radio--box {
101
+ background-color: transparent;
102
+ }
103
+
104
+ .ftds-radio:has(:focus-visible) .ftds-radio--box {
105
+ outline: ${radio.focusOutlineWidth} solid ${radio.focusFocusRingColor};
106
+ outline-offset: ${radio.focusOutlineOffset};
107
+ }
108
+
109
+ .ftds-radio ftds-typography {
110
+ padding-right: 2px;
111
+ }
112
+ `;
@@ -0,0 +1,7 @@
1
+ export * from "./ftds-radio.styles";
2
+ export * from "./ftds-radio.properties";
3
+ export * from "./ftds-radio";
4
+ export * from "./ftds-radio-group";
5
+ export * from "./ftds-radio-group.styles";
6
+ export * from "./ftds-radio-group.properties";
7
+ import "./define";
package/build/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./ftds-radio.styles";
2
+ export * from "./ftds-radio.properties";
3
+ export * from "./ftds-radio";
4
+ export * from "./ftds-radio-group";
5
+ export * from "./ftds-radio-group.styles";
6
+ export * from "./ftds-radio-group.properties";
7
+ import "./define";
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@fluid-topics/ftds-radio",
3
+ "version": "2.1.0",
4
+ "description": "The design system radio component",
5
+ "keywords": [
6
+ "Lit"
7
+ ],
8
+ "author": "Fluid Topics <devtopics@antidot.net>",
9
+ "license": "ISC",
10
+ "main": "build/index.js",
11
+ "web": "build/ftds-radio.min.js",
12
+ "typings": "build/index",
13
+ "files": [
14
+ "build/**/*.js",
15
+ "build/**/*.ts"
16
+ ],
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "ssh://git@scm.mrs.antidot.net:2222/fluidtopics/ft-web-components.git"
20
+ },
21
+ "dependencies": {
22
+ "@fluid-topics/design-system-variables": "3.5.0",
23
+ "@fluid-topics/ft-ripple": "2.1.0",
24
+ "@fluid-topics/ft-wc-utils": "2.1.0",
25
+ "@fluid-topics/ftds-typography": "2.1.0",
26
+ "lit": "3.1.0"
27
+ },
28
+ "devDependencies": {
29
+ "@fluid-topics/ft-wc-test-utils": "2.1.0"
30
+ },
31
+ "gitHead": "4727cf19d04236ad1d2b2cb43ce1c46298834c7e"
32
+ }