mirror of
https://github.com/DefectingCat/DefectingCat.github.io
synced 2025-07-15 08:41:37 +00:00
209 lines
6.5 KiB
TypeScript
209 lines
6.5 KiB
TypeScript
export const Button = `type ButtonProps = {} & React.DetailedHTMLProps<
|
|
React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
HTMLButtonElement
|
|
>;
|
|
|
|
const Button = ({ ...rest }: ButtonProps) => {
|
|
const { children, className, ...props } = rest;
|
|
|
|
return (
|
|
<>
|
|
<button
|
|
className={\`rua-button \${className}\`}
|
|
{...props}
|
|
>
|
|
{children}
|
|
</button>
|
|
|
|
<style>
|
|
{\`.rua-button {
|
|
-webkit-text-size-adjust: 100%;
|
|
tab-size: 4;
|
|
box-sizing: border-box;
|
|
border-style: solid;
|
|
border-color: #e5e7eb;
|
|
--tw-border-spacing-x: 0;
|
|
--tw-border-spacing-y: 0;
|
|
--tw-translate-x: 0;
|
|
--tw-translate-y: 0;
|
|
--tw-rotate: 0;
|
|
--tw-skew-x: 0;
|
|
--tw-skew-y: 0;
|
|
--tw-scale-x: 1;
|
|
--tw-scale-y: 1;
|
|
--tw-pan-x: ;
|
|
--tw-pan-y: ;
|
|
--tw-pinch-zoom: ;
|
|
--tw-scroll-snap-strictness: proximity;
|
|
--tw-ordinal: ;
|
|
--tw-slashed-zero: ;
|
|
--tw-numeric-figure: ;
|
|
--tw-numeric-spacing: ;
|
|
--tw-numeric-fraction: ;
|
|
--tw-ring-inset: ;
|
|
--tw-ring-offset-width: 0px;
|
|
--tw-ring-offset-color: #fff;
|
|
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
--tw-ring-offset-shadow: 0 0 #0000;
|
|
--tw-ring-shadow: 0 0 #0000;
|
|
--tw-shadow: 0 0 #0000;
|
|
--tw-shadow-colored: 0 0 #0000;
|
|
--tw-blur: ;
|
|
--tw-brightness: ;
|
|
--tw-contrast: ;
|
|
--tw-grayscale: ;
|
|
--tw-hue-rotate: ;
|
|
--tw-invert: ;
|
|
--tw-saturate: ;
|
|
--tw-sepia: ;
|
|
--tw-drop-shadow: ;
|
|
--tw-backdrop-blur: ;
|
|
--tw-backdrop-brightness: ;
|
|
--tw-backdrop-contrast: ;
|
|
--tw-backdrop-grayscale: ;
|
|
--tw-backdrop-hue-rotate: ;
|
|
--tw-backdrop-invert: ;
|
|
--tw-backdrop-opacity: ;
|
|
--tw-backdrop-saturate: ;
|
|
--tw-backdrop-sepia: ;
|
|
font-family: inherit;
|
|
font-size: 100%;
|
|
font-weight: inherit;
|
|
line-height: inherit;
|
|
color: inherit;
|
|
margin: 0;
|
|
text-transform: none;
|
|
-webkit-appearance: button;
|
|
background-color: transparent;
|
|
background-image: none;
|
|
cursor: pointer;
|
|
margin-right: 1rem;
|
|
border-radius: 0.375rem;
|
|
border-width: 1px;
|
|
padding-left: 1.25rem;
|
|
padding-right: 1.25rem;
|
|
padding-top: 0.5rem;
|
|
padding-bottom: 0.5rem;
|
|
transition-property: all;
|
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
transition-duration: 150ms;
|
|
}
|
|
.rua-button:focus {
|
|
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
}
|
|
\`}
|
|
</style>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default Button;`;
|
|
|
|
export const Input = `type InputProps = {} & React.DetailedHTMLProps<
|
|
React.InputHTMLAttributes<HTMLInputElement>,
|
|
HTMLInputElement
|
|
>;
|
|
|
|
const Input = ({ ...rest }: InputProps) => {
|
|
const { className, ...props } = rest;
|
|
|
|
return (
|
|
<>
|
|
<input
|
|
className={\`rua-input \${className}\`}
|
|
{...props}
|
|
/>
|
|
|
|
<style>{\`
|
|
.rua-input {
|
|
-webkit-text-size-adjust: 100%;
|
|
tab-size: 4;
|
|
box-sizing: border-box;
|
|
border-style: solid;
|
|
--tw-border-spacing-x: 0;
|
|
--tw-border-spacing-y: 0;
|
|
--tw-translate-x: 0;
|
|
--tw-translate-y: 0;
|
|
--tw-rotate: 0;
|
|
--tw-skew-x: 0;
|
|
--tw-skew-y: 0;
|
|
--tw-scale-x: 1;
|
|
--tw-scale-y: 1;
|
|
--tw-pan-x: ;
|
|
--tw-pan-y: ;
|
|
--tw-pinch-zoom: ;
|
|
--tw-scroll-snap-strictness: proximity;
|
|
--tw-ordinal: ;
|
|
--tw-slashed-zero: ;
|
|
--tw-numeric-figure: ;
|
|
--tw-numeric-spacing: ;
|
|
--tw-numeric-fraction: ;
|
|
--tw-ring-inset: ;
|
|
--tw-ring-offset-width: 0px;
|
|
--tw-ring-offset-color: #fff;
|
|
--tw-ring-color: rgb(59 130 246 / 0.5);
|
|
--tw-ring-offset-shadow: 0 0 #0000;
|
|
--tw-ring-shadow: 0 0 #0000;
|
|
--tw-shadow: 0 0 #0000;
|
|
--tw-shadow-colored: 0 0 #0000;
|
|
--tw-blur: ;
|
|
--tw-brightness: ;
|
|
--tw-contrast: ;
|
|
--tw-grayscale: ;
|
|
--tw-hue-rotate: ;
|
|
--tw-invert: ;
|
|
--tw-saturate: ;
|
|
--tw-sepia: ;
|
|
--tw-drop-shadow: ;
|
|
--tw-backdrop-blur: ;
|
|
--tw-backdrop-brightness: ;
|
|
--tw-backdrop-contrast: ;
|
|
--tw-backdrop-grayscale: ;
|
|
--tw-backdrop-hue-rotate: ;
|
|
--tw-backdrop-invert: ;
|
|
--tw-backdrop-opacity: ;
|
|
--tw-backdrop-saturate: ;
|
|
--tw-backdrop-sepia: ;
|
|
font-family: inherit;
|
|
font-size: 100%;
|
|
font-weight: inherit;
|
|
line-height: inherit;
|
|
margin: 0;
|
|
margin-top: 0.5rem;
|
|
border-radius: 0.375rem;
|
|
border-width: 1px;
|
|
--tw-border-opacity: 1;
|
|
border-color: rgb(229 231 235 / var(--tw-border-opacity));
|
|
--tw-bg-opacity: 1;
|
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
|
padding-top: 0.5rem;
|
|
padding-bottom: 0.5rem;
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
--tw-text-opacity: 1;
|
|
color: rgb(55 65 81 / var(--tw-text-opacity));
|
|
transition-property: all;
|
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
transition-duration: 150ms;
|
|
}
|
|
|
|
.rua-input:focus {
|
|
--tw-border-opacity: 1;
|
|
border-color: rgb(96 165 250 / var(--tw-border-opacity));
|
|
outline: 2px solid transparent;
|
|
outline-offset: 2px;
|
|
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity));
|
|
--tw-ring-opacity: 0.8;
|
|
}\`}
|
|
</style>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default Input;`;
|