@aristobyte-ui/radio 0.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/index.d.ts +4 -0
- package/@types/styles/scss-modules.d.ts +4 -0
- package/assets/svg/i_Copy.svg +1 -0
- package/assets/svg/i_Error.svg +1 -0
- package/assets/svg/i_Info.svg +1 -0
- package/assets/svg/i_Success.svg +1 -0
- package/assets/svg/i_Warning.svg +1 -0
- package/components/Radio/Radio.module.scss +773 -0
- package/components/Radio/index.tsx +75 -0
- package/components/RadioGroup/RadioGroup.module.scss +15 -0
- package/components/RadioGroup/index.tsx +86 -0
- package/components/index.ts +2 -0
- package/dist/components/Anchor/index.js +28 -0
- package/dist/components/Button/index.js +35 -0
- package/dist/components/ButtonGroup/index.js +16 -0
- package/dist/components/CodeBlock/index.js +33 -0
- package/dist/components/CodeBlock/types.js +1 -0
- package/dist/components/Dropdown/index.js +73 -0
- package/dist/components/DropdownOption/index.js +13 -0
- package/dist/components/MessageBox/index.js +19 -0
- package/dist/components/Radio/index.js +10 -0
- package/dist/components/RadioGroup/index.js +21 -0
- package/dist/components/Spinner/index.js +6 -0
- package/dist/components/Switch/index.js +15 -0
- package/dist/components/TabSwitchWithSlidingIndicator/index.js +10 -0
- package/dist/components/index.js +12 -0
- package/dist/index.js +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/components/Anchor/index.d.ts +6 -0
- package/dist/types/components/Anchor/index.d.ts.map +1 -0
- package/dist/types/components/Button/index.d.ts +15 -0
- package/dist/types/components/Button/index.d.ts.map +1 -0
- package/dist/types/components/ButtonGroup/index.d.ts +13 -0
- package/dist/types/components/ButtonGroup/index.d.ts.map +1 -0
- package/dist/types/components/CodeBlock/index.d.ts +11 -0
- package/dist/types/components/CodeBlock/index.d.ts.map +1 -0
- package/dist/types/components/CodeBlock/types.d.ts +3 -0
- package/dist/types/components/CodeBlock/types.d.ts.map +1 -0
- package/dist/types/components/Dropdown/index.d.ts +14 -0
- package/dist/types/components/Dropdown/index.d.ts.map +1 -0
- package/dist/types/components/DropdownOption/index.d.ts +12 -0
- package/dist/types/components/DropdownOption/index.d.ts.map +1 -0
- package/dist/types/components/MessageBox/index.d.ts +14 -0
- package/dist/types/components/MessageBox/index.d.ts.map +1 -0
- package/dist/types/components/Radio/index.d.ts +17 -0
- package/dist/types/components/Radio/index.d.ts.map +1 -0
- package/dist/types/components/RadioGroup/index.d.ts +18 -0
- package/dist/types/components/RadioGroup/index.d.ts.map +1 -0
- package/dist/types/components/Spinner/index.d.ts +9 -0
- package/dist/types/components/Spinner/index.d.ts.map +1 -0
- package/dist/types/components/Switch/index.d.ts +18 -0
- package/dist/types/components/Switch/index.d.ts.map +1 -0
- package/dist/types/components/TabSwitchWithSlidingIndicator/index.d.ts +9 -0
- package/dist/types/components/TabSwitchWithSlidingIndicator/index.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +3 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/utils/Portal.d.ts +5 -0
- package/dist/types/utils/Portal.d.ts.map +1 -0
- package/dist/types/utils/icons.d.ts +8 -0
- package/dist/types/utils/icons.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/ripple.d.ts +9 -0
- package/dist/types/utils/ripple.d.ts.map +1 -0
- package/dist/utils/Portal.js +12 -0
- package/dist/utils/icons.js +12 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/ripple.js +38 -0
- package/eslint.config.mjs +2 -0
- package/index.ts +1 -0
- package/package.json +43 -0
- package/styles/_settings.scss +179 -0
- package/tsconfig.json +11 -0
- package/turbo/generators/config.ts +30 -0
- package/turbo/generators/templates/component.hbs +8 -0
- package/utils/Portal.tsx +17 -0
- package/utils/icons.ts +13 -0
- package/utils/index.ts +2 -0
- package/utils/ripple.tsx +54 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PlopTypes } from "@turbo/gen";
|
|
2
|
+
|
|
3
|
+
// Learn more about Turborepo Generators at https://turborepo.com/docs/guides/generating-code
|
|
4
|
+
|
|
5
|
+
export default function generator(plop: PlopTypes.NodePlopAPI): void {
|
|
6
|
+
// A simple generator to add a new React component to the internal UI library
|
|
7
|
+
plop.setGenerator("react-component", {
|
|
8
|
+
description: "Adds a new react component",
|
|
9
|
+
prompts: [
|
|
10
|
+
{
|
|
11
|
+
type: "input",
|
|
12
|
+
name: "name",
|
|
13
|
+
message: "What is the name of the component?",
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
actions: [
|
|
17
|
+
{
|
|
18
|
+
type: "add",
|
|
19
|
+
path: "src/{{kebabCase name}}.tsx",
|
|
20
|
+
templateFile: "templates/component.hbs",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
type: "append",
|
|
24
|
+
path: "package.json",
|
|
25
|
+
pattern: /"exports": {(?<insertion>)/g,
|
|
26
|
+
template: ' "./{{kebabCase name}}": "./src/{{kebabCase name}}.tsx",',
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
});
|
|
30
|
+
}
|
package/utils/Portal.tsx
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { createPortal } from "react-dom";
|
|
5
|
+
|
|
6
|
+
export const Portal: React.FC<{ children: React.ReactNode }> = ({
|
|
7
|
+
children,
|
|
8
|
+
}) => {
|
|
9
|
+
const [mounted, setMounted] = React.useState(false);
|
|
10
|
+
|
|
11
|
+
React.useEffect(() => {
|
|
12
|
+
setMounted(true);
|
|
13
|
+
}, []);
|
|
14
|
+
|
|
15
|
+
if (!mounted || typeof window === "undefined") return null;
|
|
16
|
+
return createPortal(children, document.body);
|
|
17
|
+
};
|
package/utils/icons.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Copy from "../assets/svg/i_Copy.svg";
|
|
2
|
+
import Error from "../assets/svg/i_Error.svg";
|
|
3
|
+
import Info from "../assets/svg/i_Info.svg";
|
|
4
|
+
import Success from "../assets/svg/i_Success.svg";
|
|
5
|
+
import Warning from "../assets/svg/i_Warning.svg";
|
|
6
|
+
|
|
7
|
+
export const Icons = {
|
|
8
|
+
Copy,
|
|
9
|
+
Error,
|
|
10
|
+
Info,
|
|
11
|
+
Success,
|
|
12
|
+
Warning,
|
|
13
|
+
};
|
package/utils/index.ts
ADDED
package/utils/ripple.tsx
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
type RippleParamsRef = HTMLButtonElement | HTMLAnchorElement;
|
|
2
|
+
|
|
3
|
+
export type RippleParams<HTMLElementType extends RippleParamsRef> = {
|
|
4
|
+
ref: React.RefObject<HTMLElementType | null>;
|
|
5
|
+
clientX: number;
|
|
6
|
+
clientY: number;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const renderRipple = <HTMLElementType extends RippleParamsRef>({
|
|
10
|
+
ref,
|
|
11
|
+
clientX,
|
|
12
|
+
clientY,
|
|
13
|
+
}: RippleParams<HTMLElementType>) => {
|
|
14
|
+
const button = ref.current;
|
|
15
|
+
if (!button) return;
|
|
16
|
+
|
|
17
|
+
const circle = document.createElement("span");
|
|
18
|
+
const diameter = Math.max(button.clientWidth, button.clientHeight);
|
|
19
|
+
const radius = diameter / 2;
|
|
20
|
+
|
|
21
|
+
circle.id = "ripple";
|
|
22
|
+
|
|
23
|
+
const style = document.createElement("style");
|
|
24
|
+
style.innerHTML = `
|
|
25
|
+
#ripple {
|
|
26
|
+
animation: ripple 300ms linear;
|
|
27
|
+
background-color: rgba(255, 255, 255, 0.3);
|
|
28
|
+
border-radius: 50%;
|
|
29
|
+
height: ${diameter}px;
|
|
30
|
+
left: ${clientX - button.getBoundingClientRect().left - radius}px;
|
|
31
|
+
pointer-events: none;
|
|
32
|
+
position: absolute;
|
|
33
|
+
top: ${clientY - button.getBoundingClientRect().top - radius}px;
|
|
34
|
+
transform: scale(0);
|
|
35
|
+
width: ${diameter}px;
|
|
36
|
+
z-index: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@keyframes ripple {
|
|
40
|
+
to {
|
|
41
|
+
opacity: 0;
|
|
42
|
+
transform: scale(2);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
button.appendChild(style);
|
|
48
|
+
button.appendChild(circle);
|
|
49
|
+
|
|
50
|
+
circle.addEventListener("animationend", () => {
|
|
51
|
+
circle.remove();
|
|
52
|
+
style.remove();
|
|
53
|
+
});
|
|
54
|
+
};
|