@reactor-team/ui 1.0.1 → 1.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.
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/EmailForm/EmailForm.d.ts +13 -0
- package/dist/components/EmailForm/index.d.ts +2 -0
- package/dist/components/Input/Input.d.ts +6 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Nav/Nav.d.ts +19 -0
- package/dist/components/Nav/index.d.ts +2 -0
- package/dist/components/ReactorLogo/ReactorLogo.d.ts +11 -0
- package/dist/components/ReactorLogo/index.d.ts +2 -0
- package/dist/components/TextLink/TextLink.d.ts +6 -0
- package/dist/components/TextLink/index.d.ts +2 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/reactor-ui.cjs +1 -1
- package/dist/reactor-ui.cjs.map +1 -1
- package/dist/reactor-ui.mjs +136 -23
- package/dist/reactor-ui.mjs.map +1 -1
- package/dist/ui.css +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ButtonHTMLAttributes } from 'react';
|
|
2
2
|
export type ButtonSize = 'small' | 'default' | 'large';
|
|
3
|
-
export type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';
|
|
3
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'dark' | 'muted' | 'ghost';
|
|
4
4
|
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
5
5
|
/** The visual style variant of the button */
|
|
6
6
|
variant?: ButtonVariant;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { FormHTMLAttributes } from 'react';
|
|
2
|
+
export interface EmailFormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'children'> {
|
|
3
|
+
/** Placeholder text for the email input */
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
/** Submit button label */
|
|
6
|
+
buttonLabel?: string;
|
|
7
|
+
/** Callback when form is submitted with the email value */
|
|
8
|
+
onEmailSubmit?: (email: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function EmailForm({ placeholder, buttonLabel, onEmailSubmit, className, ...props }: EmailFormProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare namespace EmailForm {
|
|
12
|
+
var displayName: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { InputHTMLAttributes } from 'react';
|
|
2
|
+
export interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
/** Visual variant of the input */
|
|
4
|
+
variant?: 'default';
|
|
5
|
+
}
|
|
6
|
+
export declare const Input: import('react').ForwardRefExoticComponent<InputProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface NavLink {
|
|
3
|
+
/** The link label */
|
|
4
|
+
label: string;
|
|
5
|
+
/** The link URL */
|
|
6
|
+
href: string;
|
|
7
|
+
}
|
|
8
|
+
export interface NavProps extends HTMLAttributes<HTMLElement> {
|
|
9
|
+
/** Logo element to render on the left */
|
|
10
|
+
logo?: ReactNode;
|
|
11
|
+
/** Navigation links to render in the center */
|
|
12
|
+
links?: NavLink[];
|
|
13
|
+
/** Action element (e.g. button) to render on the right */
|
|
14
|
+
action?: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare function Nav({ logo, links, action, className, ...props }: NavProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare namespace Nav {
|
|
18
|
+
var displayName: string;
|
|
19
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SVGAttributes } from 'react';
|
|
2
|
+
export interface ReactorLogoProps extends SVGAttributes<SVGSVGElement> {
|
|
3
|
+
/** Width of the logo */
|
|
4
|
+
width?: number | string;
|
|
5
|
+
/** Height of the logo */
|
|
6
|
+
height?: number | string;
|
|
7
|
+
}
|
|
8
|
+
export declare function ReactorLogo({ width, height, className, ...props }: ReactorLogoProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare namespace ReactorLogo {
|
|
10
|
+
var displayName: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AnchorHTMLAttributes } from 'react';
|
|
2
|
+
export interface TextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
3
|
+
/** The link label text */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}
|
|
6
|
+
export declare const TextLink: import('react').ForwardRefExoticComponent<TextLinkProps & import('react').RefAttributes<HTMLAnchorElement>>;
|
package/dist/reactor-ui.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),m=require("react"),u=m.forwardRef(({variant:t="primary",size:r="default",shadow:a=!0,children:o,className:s="",disabled:l,...n},c)=>{const i=["reactor-button",`reactor-button--${t}`,`reactor-button--${r}`,a&&"reactor-button--shadow",l&&"reactor-button--disabled",s].filter(Boolean).join(" ");return e.jsx("button",{ref:c,className:i,disabled:l,...n,children:e.jsx("span",{className:"reactor-button__label",children:o})})});u.displayName="Button";const f=m.forwardRef(({children:t,className:r="",...a},o)=>{const s=["reactor-text-link",r].filter(Boolean).join(" ");return e.jsx("a",{ref:o,className:s,...a,children:e.jsx("span",{className:"reactor-text-link__label",children:t})})});f.displayName="TextLink";function N({width:t=48,height:r=34,className:a="",...o}){const s=["reactor-logo",a].filter(Boolean).join(" ");return e.jsx("svg",{className:s,width:t,height:r,viewBox:"0 0 236 167",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-label":"Reactor Logo",...o,children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M206.095 0C226.816 8.93696e-06 236 12.1455 236 28.7287V77.5436C236 93.6597 227.052 105.805 206.801 105.805L206.316 105.807C201.046 105.826 197.927 111.667 200.873 116.002L235.529 167H193.51L153.406 109.84C151.633 107.313 148.724 105.806 145.62 105.805C140.38 105.805 136.133 110.018 136.133 115.215V167H99.867V115.215C99.867 110.018 95.6196 105.805 90.3804 105.805C87.2757 105.806 84.3674 107.313 82.5939 109.84L42.4899 167H0.47133L35.1272 116.002C38.0728 111.667 34.9544 105.826 29.6842 105.807L29.199 105.805C8.94824 105.805 0 93.6597 0 77.5436V28.7287C0 12.1455 9.18356 8.93696e-06 29.9053 0H206.095ZM40.5014 32.6996C37.205 32.6997 36.2631 33.8675 36.2631 37.1373V69.1357C36.2631 72.1719 37.2054 73.1059 40.2665 73.1059H195.734C198.795 73.1059 199.737 72.1719 199.737 69.1357V37.1373C199.737 33.8675 198.795 32.6997 195.499 32.6996H40.5014Z",fill:"currentColor"})})}N.displayName="ReactorLogo";function j({logo:t,links:r=[],action:a,className:o="",...s}){const l=["reactor-nav",o].filter(Boolean).join(" ");return e.jsx("nav",{className:l,...s,children:e.jsxs("div",{className:"reactor-nav__inner",children:[e.jsx("div",{className:"reactor-nav__logo",children:t}),r.length>0&&e.jsx("div",{className:"reactor-nav__links",children:r.map(n=>e.jsx("a",{href:n.href,className:"reactor-nav__link",children:n.label},n.href))}),e.jsx("div",{className:"reactor-nav__action",children:a})]})})}j.displayName="Nav";const d=m.forwardRef(({variant:t="default",className:r="",...a},o)=>{const s=["reactor-input",`reactor-input--${t}`,r].filter(Boolean).join(" ");return e.jsx("input",{ref:o,className:s,...a})});d.displayName="Input";function p({placeholder:t="Your email here",buttonLabel:r="Submit",onEmailSubmit:a,className:o="",...s}){const l=["reactor-email-form",o].filter(Boolean).join(" "),n=c=>{c.preventDefault();const i=c.currentTarget,x=new FormData(i).get("email");a==null||a(x)};return e.jsxs("form",{className:l,onSubmit:n,...s,children:[e.jsx(d,{type:"email",name:"email",placeholder:t,className:"reactor-email-form__input",required:!0}),e.jsx(u,{type:"submit",variant:"muted",size:"default",shadow:!1,children:r})]})}p.displayName="EmailForm";exports.Button=u;exports.EmailForm=p;exports.Input=d;exports.Nav=j;exports.ReactorLogo=N;exports.TextLink=f;
|
|
2
2
|
//# sourceMappingURL=reactor-ui.cjs.map
|
package/dist/reactor-ui.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor-ui.cjs","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport './Button.css';\n\nexport type ButtonSize = 'small' | 'default' | 'large';\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** The visual style variant of the button */\n variant?: ButtonVariant;\n /** The size of the button */\n size?: ButtonSize;\n /** Whether to show the shadow effect */\n shadow?: boolean;\n /** The button label text */\n children: React.ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'default',\n shadow = true,\n children,\n className = '',\n disabled,\n ...props\n },\n ref\n ) => {\n const classNames = [\n 'reactor-button',\n `reactor-button--${variant}`,\n `reactor-button--${size}`,\n shadow && 'reactor-button--shadow',\n disabled && 'reactor-button--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classNames}\n disabled={disabled}\n {...props}\n >\n <span className=\"reactor-button__label\">{children}</span>\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n"],"names":["Button","forwardRef","variant","size","shadow","children","className","disabled","props","ref","classNames","jsx"],"mappings":"wIAiBaA,EAASC,EAAAA,WACpB,CACE,CACE,QAAAC,EAAU,UACV,KAAAC,EAAO,UACP,OAAAC,EAAS,GACT,SAAAC,EACA,UAAAC,EAAY,GACZ,SAAAC,EACA,GAAGC,CAAA,EAELC,IACG,CACH,MAAMC,EAAa,CACjB,iBACA,mBAAmBR,CAAO,GAC1B,mBAAmBC,CAAI,GACvBC,GAAU,yBACVG,GAAY,2BACZD,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACEK,EAAAA,IAAC,SAAA,CACC,IAAAF,EACA,UAAWC,EACX,SAAAH,EACC,GAAGC,EAEJ,SAAAG,EAAAA,IAAC,OAAA,CAAK,UAAU,wBAAyB,SAAAN,CAAA,CAAS,CAAA,CAAA,CAGxD,CACF,EAEAL,EAAO,YAAc"}
|
|
1
|
+
{"version":3,"file":"reactor-ui.cjs","sources":["../src/components/Button/Button.tsx","../src/components/TextLink/TextLink.tsx","../src/components/ReactorLogo/ReactorLogo.tsx","../src/components/Nav/Nav.tsx","../src/components/Input/Input.tsx","../src/components/EmailForm/EmailForm.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport './Button.css';\n\nexport type ButtonSize = 'small' | 'default' | 'large';\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'dark' | 'muted' | 'ghost';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** The visual style variant of the button */\n variant?: ButtonVariant;\n /** The size of the button */\n size?: ButtonSize;\n /** Whether to show the shadow effect */\n shadow?: boolean;\n /** The button label text */\n children: React.ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'default',\n shadow = true,\n children,\n className = '',\n disabled,\n ...props\n },\n ref\n ) => {\n const classNames = [\n 'reactor-button',\n `reactor-button--${variant}`,\n `reactor-button--${size}`,\n shadow && 'reactor-button--shadow',\n disabled && 'reactor-button--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classNames}\n disabled={disabled}\n {...props}\n >\n <span className=\"reactor-button__label\">{children}</span>\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import { forwardRef, type AnchorHTMLAttributes } from 'react';\nimport './TextLink.css';\n\nexport interface TextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** The link label text */\n children: React.ReactNode;\n}\n\nexport const TextLink = forwardRef<HTMLAnchorElement, TextLinkProps>(\n ({ children, className = '', ...props }, ref) => {\n const classNames = ['reactor-text-link', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <a ref={ref} className={classNames} {...props}>\n <span className=\"reactor-text-link__label\">{children}</span>\n </a>\n );\n }\n);\n\nTextLink.displayName = 'TextLink';\n","import { type SVGAttributes } from 'react';\n\nexport interface ReactorLogoProps extends SVGAttributes<SVGSVGElement> {\n /** Width of the logo */\n width?: number | string;\n /** Height of the logo */\n height?: number | string;\n}\n\nexport function ReactorLogo({\n width = 48,\n height = 34,\n className = '',\n ...props\n}: ReactorLogoProps) {\n const classNames = ['reactor-logo', className].filter(Boolean).join(' ');\n\n return (\n <svg\n className={classNames}\n width={width}\n height={height}\n viewBox=\"0 0 236 167\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Reactor Logo\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M206.095 0C226.816 8.93696e-06 236 12.1455 236 28.7287V77.5436C236 93.6597 227.052 105.805 206.801 105.805L206.316 105.807C201.046 105.826 197.927 111.667 200.873 116.002L235.529 167H193.51L153.406 109.84C151.633 107.313 148.724 105.806 145.62 105.805C140.38 105.805 136.133 110.018 136.133 115.215V167H99.867V115.215C99.867 110.018 95.6196 105.805 90.3804 105.805C87.2757 105.806 84.3674 107.313 82.5939 109.84L42.4899 167H0.47133L35.1272 116.002C38.0728 111.667 34.9544 105.826 29.6842 105.807L29.199 105.805C8.94824 105.805 0 93.6597 0 77.5436V28.7287C0 12.1455 9.18356 8.93696e-06 29.9053 0H206.095ZM40.5014 32.6996C37.205 32.6997 36.2631 33.8675 36.2631 37.1373V69.1357C36.2631 72.1719 37.2054 73.1059 40.2665 73.1059H195.734C198.795 73.1059 199.737 72.1719 199.737 69.1357V37.1373C199.737 33.8675 198.795 32.6997 195.499 32.6996H40.5014Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\nReactorLogo.displayName = 'ReactorLogo';\n","import { type HTMLAttributes, type ReactNode } from 'react';\nimport './Nav.css';\n\nexport interface NavLink {\n /** The link label */\n label: string;\n /** The link URL */\n href: string;\n}\n\nexport interface NavProps extends HTMLAttributes<HTMLElement> {\n /** Logo element to render on the left */\n logo?: ReactNode;\n /** Navigation links to render in the center */\n links?: NavLink[];\n /** Action element (e.g. button) to render on the right */\n action?: ReactNode;\n}\n\nexport function Nav({\n logo,\n links = [],\n action,\n className = '',\n ...props\n}: NavProps) {\n const classNames = ['reactor-nav', className].filter(Boolean).join(' ');\n\n return (\n <nav className={classNames} {...props}>\n <div className=\"reactor-nav__inner\">\n <div className=\"reactor-nav__logo\">\n {logo}\n </div>\n\n {links.length > 0 && (\n <div className=\"reactor-nav__links\">\n {links.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className=\"reactor-nav__link\"\n >\n {link.label}\n </a>\n ))}\n </div>\n )}\n\n <div className=\"reactor-nav__action\">\n {action}\n </div>\n </div>\n </nav>\n );\n}\n\nNav.displayName = 'Nav';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport './Input.css';\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** Visual variant of the input */\n variant?: 'default';\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ variant = 'default', className = '', ...props }, ref) => {\n const classNames = [\n 'reactor-input',\n `reactor-input--${variant}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return <input ref={ref} className={classNames} {...props} />;\n }\n);\n\nInput.displayName = 'Input';\n","import { type FormHTMLAttributes } from 'react';\nimport { Input } from '../Input';\nimport { Button } from '../Button';\nimport './EmailForm.css';\n\nexport interface EmailFormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'children'> {\n /** Placeholder text for the email input */\n placeholder?: string;\n /** Submit button label */\n buttonLabel?: string;\n /** Callback when form is submitted with the email value */\n onEmailSubmit?: (email: string) => void;\n}\n\nexport function EmailForm({\n placeholder = 'Your email here',\n buttonLabel = 'Submit',\n onEmailSubmit,\n className = '',\n ...props\n}: EmailFormProps) {\n const classNames = ['reactor-email-form', className]\n .filter(Boolean)\n .join(' ');\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const form = e.currentTarget;\n const formData = new FormData(form);\n const email = formData.get('email') as string;\n onEmailSubmit?.(email);\n };\n\n return (\n <form className={classNames} onSubmit={handleSubmit} {...props}>\n <Input\n type=\"email\"\n name=\"email\"\n placeholder={placeholder}\n className=\"reactor-email-form__input\"\n required\n />\n <Button\n type=\"submit\"\n variant=\"muted\"\n size=\"default\"\n shadow={false}\n >\n {buttonLabel}\n </Button>\n </form>\n );\n}\n\nEmailForm.displayName = 'EmailForm';\n"],"names":["Button","forwardRef","variant","size","shadow","children","className","disabled","props","ref","classNames","jsx","TextLink","ReactorLogo","width","height","Nav","logo","links","action","jsxs","link","Input","EmailForm","placeholder","buttonLabel","onEmailSubmit","handleSubmit","e","form","email"],"mappings":"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"}
|
package/dist/reactor-ui.mjs
CHANGED
|
@@ -1,37 +1,150 @@
|
|
|
1
|
-
import { jsx as
|
|
1
|
+
import { jsx as e, jsxs as u } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef as m } from "react";
|
|
3
|
-
const
|
|
3
|
+
const d = m(
|
|
4
4
|
({
|
|
5
|
-
variant:
|
|
6
|
-
size:
|
|
7
|
-
shadow:
|
|
8
|
-
children:
|
|
9
|
-
className:
|
|
10
|
-
disabled:
|
|
11
|
-
...
|
|
12
|
-
},
|
|
13
|
-
const
|
|
5
|
+
variant: t = "primary",
|
|
6
|
+
size: r = "default",
|
|
7
|
+
shadow: a = !0,
|
|
8
|
+
children: o,
|
|
9
|
+
className: n = "",
|
|
10
|
+
disabled: l,
|
|
11
|
+
...s
|
|
12
|
+
}, c) => {
|
|
13
|
+
const i = [
|
|
14
14
|
"reactor-button",
|
|
15
|
+
`reactor-button--${t}`,
|
|
15
16
|
`reactor-button--${r}`,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
s
|
|
17
|
+
a && "reactor-button--shadow",
|
|
18
|
+
l && "reactor-button--disabled",
|
|
19
|
+
n
|
|
20
20
|
].filter(Boolean).join(" ");
|
|
21
|
-
return /* @__PURE__ */
|
|
21
|
+
return /* @__PURE__ */ e(
|
|
22
22
|
"button",
|
|
23
23
|
{
|
|
24
|
-
ref:
|
|
25
|
-
className:
|
|
26
|
-
disabled:
|
|
27
|
-
...
|
|
28
|
-
children: /* @__PURE__ */
|
|
24
|
+
ref: c,
|
|
25
|
+
className: i,
|
|
26
|
+
disabled: l,
|
|
27
|
+
...s,
|
|
28
|
+
children: /* @__PURE__ */ e("span", { className: "reactor-button__label", children: o })
|
|
29
29
|
}
|
|
30
30
|
);
|
|
31
31
|
}
|
|
32
32
|
);
|
|
33
|
-
|
|
33
|
+
d.displayName = "Button";
|
|
34
|
+
const p = m(
|
|
35
|
+
({ children: t, className: r = "", ...a }, o) => {
|
|
36
|
+
const n = ["reactor-text-link", r].filter(Boolean).join(" ");
|
|
37
|
+
return /* @__PURE__ */ e("a", { ref: o, className: n, ...a, children: /* @__PURE__ */ e("span", { className: "reactor-text-link__label", children: t }) });
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
p.displayName = "TextLink";
|
|
41
|
+
function h({
|
|
42
|
+
width: t = 48,
|
|
43
|
+
height: r = 34,
|
|
44
|
+
className: a = "",
|
|
45
|
+
...o
|
|
46
|
+
}) {
|
|
47
|
+
const n = ["reactor-logo", a].filter(Boolean).join(" ");
|
|
48
|
+
return /* @__PURE__ */ e(
|
|
49
|
+
"svg",
|
|
50
|
+
{
|
|
51
|
+
className: n,
|
|
52
|
+
width: t,
|
|
53
|
+
height: r,
|
|
54
|
+
viewBox: "0 0 236 167",
|
|
55
|
+
fill: "none",
|
|
56
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
57
|
+
"aria-label": "Reactor Logo",
|
|
58
|
+
...o,
|
|
59
|
+
children: /* @__PURE__ */ e(
|
|
60
|
+
"path",
|
|
61
|
+
{
|
|
62
|
+
fillRule: "evenodd",
|
|
63
|
+
clipRule: "evenodd",
|
|
64
|
+
d: "M206.095 0C226.816 8.93696e-06 236 12.1455 236 28.7287V77.5436C236 93.6597 227.052 105.805 206.801 105.805L206.316 105.807C201.046 105.826 197.927 111.667 200.873 116.002L235.529 167H193.51L153.406 109.84C151.633 107.313 148.724 105.806 145.62 105.805C140.38 105.805 136.133 110.018 136.133 115.215V167H99.867V115.215C99.867 110.018 95.6196 105.805 90.3804 105.805C87.2757 105.806 84.3674 107.313 82.5939 109.84L42.4899 167H0.47133L35.1272 116.002C38.0728 111.667 34.9544 105.826 29.6842 105.807L29.199 105.805C8.94824 105.805 0 93.6597 0 77.5436V28.7287C0 12.1455 9.18356 8.93696e-06 29.9053 0H206.095ZM40.5014 32.6996C37.205 32.6997 36.2631 33.8675 36.2631 37.1373V69.1357C36.2631 72.1719 37.2054 73.1059 40.2665 73.1059H195.734C198.795 73.1059 199.737 72.1719 199.737 69.1357V37.1373C199.737 33.8675 198.795 32.6997 195.499 32.6996H40.5014Z",
|
|
65
|
+
fill: "currentColor"
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
h.displayName = "ReactorLogo";
|
|
72
|
+
function v({
|
|
73
|
+
logo: t,
|
|
74
|
+
links: r = [],
|
|
75
|
+
action: a,
|
|
76
|
+
className: o = "",
|
|
77
|
+
...n
|
|
78
|
+
}) {
|
|
79
|
+
const l = ["reactor-nav", o].filter(Boolean).join(" ");
|
|
80
|
+
return /* @__PURE__ */ e("nav", { className: l, ...n, children: /* @__PURE__ */ u("div", { className: "reactor-nav__inner", children: [
|
|
81
|
+
/* @__PURE__ */ e("div", { className: "reactor-nav__logo", children: t }),
|
|
82
|
+
r.length > 0 && /* @__PURE__ */ e("div", { className: "reactor-nav__links", children: r.map((s) => /* @__PURE__ */ e(
|
|
83
|
+
"a",
|
|
84
|
+
{
|
|
85
|
+
href: s.href,
|
|
86
|
+
className: "reactor-nav__link",
|
|
87
|
+
children: s.label
|
|
88
|
+
},
|
|
89
|
+
s.href
|
|
90
|
+
)) }),
|
|
91
|
+
/* @__PURE__ */ e("div", { className: "reactor-nav__action", children: a })
|
|
92
|
+
] }) });
|
|
93
|
+
}
|
|
94
|
+
v.displayName = "Nav";
|
|
95
|
+
const f = m(
|
|
96
|
+
({ variant: t = "default", className: r = "", ...a }, o) => {
|
|
97
|
+
const n = [
|
|
98
|
+
"reactor-input",
|
|
99
|
+
`reactor-input--${t}`,
|
|
100
|
+
r
|
|
101
|
+
].filter(Boolean).join(" ");
|
|
102
|
+
return /* @__PURE__ */ e("input", { ref: o, className: n, ...a });
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
f.displayName = "Input";
|
|
106
|
+
function _({
|
|
107
|
+
placeholder: t = "Your email here",
|
|
108
|
+
buttonLabel: r = "Submit",
|
|
109
|
+
onEmailSubmit: a,
|
|
110
|
+
className: o = "",
|
|
111
|
+
...n
|
|
112
|
+
}) {
|
|
113
|
+
const l = ["reactor-email-form", o].filter(Boolean).join(" ");
|
|
114
|
+
return /* @__PURE__ */ u("form", { className: l, onSubmit: (c) => {
|
|
115
|
+
c.preventDefault();
|
|
116
|
+
const i = c.currentTarget, N = new FormData(i).get("email");
|
|
117
|
+
a == null || a(N);
|
|
118
|
+
}, ...n, children: [
|
|
119
|
+
/* @__PURE__ */ e(
|
|
120
|
+
f,
|
|
121
|
+
{
|
|
122
|
+
type: "email",
|
|
123
|
+
name: "email",
|
|
124
|
+
placeholder: t,
|
|
125
|
+
className: "reactor-email-form__input",
|
|
126
|
+
required: !0
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
/* @__PURE__ */ e(
|
|
130
|
+
d,
|
|
131
|
+
{
|
|
132
|
+
type: "submit",
|
|
133
|
+
variant: "muted",
|
|
134
|
+
size: "default",
|
|
135
|
+
shadow: !1,
|
|
136
|
+
children: r
|
|
137
|
+
}
|
|
138
|
+
)
|
|
139
|
+
] });
|
|
140
|
+
}
|
|
141
|
+
_.displayName = "EmailForm";
|
|
34
142
|
export {
|
|
35
|
-
|
|
143
|
+
d as Button,
|
|
144
|
+
_ as EmailForm,
|
|
145
|
+
f as Input,
|
|
146
|
+
v as Nav,
|
|
147
|
+
h as ReactorLogo,
|
|
148
|
+
p as TextLink
|
|
36
149
|
};
|
|
37
150
|
//# sourceMappingURL=reactor-ui.mjs.map
|
package/dist/reactor-ui.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor-ui.mjs","sources":["../src/components/Button/Button.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport './Button.css';\n\nexport type ButtonSize = 'small' | 'default' | 'large';\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'ghost';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** The visual style variant of the button */\n variant?: ButtonVariant;\n /** The size of the button */\n size?: ButtonSize;\n /** Whether to show the shadow effect */\n shadow?: boolean;\n /** The button label text */\n children: React.ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'default',\n shadow = true,\n children,\n className = '',\n disabled,\n ...props\n },\n ref\n ) => {\n const classNames = [\n 'reactor-button',\n `reactor-button--${variant}`,\n `reactor-button--${size}`,\n shadow && 'reactor-button--shadow',\n disabled && 'reactor-button--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classNames}\n disabled={disabled}\n {...props}\n >\n <span className=\"reactor-button__label\">{children}</span>\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n"],"names":["Button","forwardRef","variant","size","shadow","children","className","disabled","props","ref","classNames","jsx"],"mappings":";;AAiBO,MAAMA,IAASC;AAAA,EACpB,CACE;AAAA,IACE,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,QAAAC,IAAS;AAAA,IACT,UAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAa;AAAA,MACjB;AAAA,MACA,mBAAmBR,CAAO;AAAA,MAC1B,mBAAmBC,CAAI;AAAA,MACvBC,KAAU;AAAA,MACVG,KAAY;AAAA,MACZD;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAF;AAAA,QACA,WAAWC;AAAA,QACX,UAAAH;AAAA,QACC,GAAGC;AAAA,QAEJ,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAAN,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAGxD;AACF;AAEAL,EAAO,cAAc;"}
|
|
1
|
+
{"version":3,"file":"reactor-ui.mjs","sources":["../src/components/Button/Button.tsx","../src/components/TextLink/TextLink.tsx","../src/components/ReactorLogo/ReactorLogo.tsx","../src/components/Nav/Nav.tsx","../src/components/Input/Input.tsx","../src/components/EmailForm/EmailForm.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport './Button.css';\n\nexport type ButtonSize = 'small' | 'default' | 'large';\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'dark' | 'muted' | 'ghost';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** The visual style variant of the button */\n variant?: ButtonVariant;\n /** The size of the button */\n size?: ButtonSize;\n /** Whether to show the shadow effect */\n shadow?: boolean;\n /** The button label text */\n children: React.ReactNode;\n}\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'default',\n shadow = true,\n children,\n className = '',\n disabled,\n ...props\n },\n ref\n ) => {\n const classNames = [\n 'reactor-button',\n `reactor-button--${variant}`,\n `reactor-button--${size}`,\n shadow && 'reactor-button--shadow',\n disabled && 'reactor-button--disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classNames}\n disabled={disabled}\n {...props}\n >\n <span className=\"reactor-button__label\">{children}</span>\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import { forwardRef, type AnchorHTMLAttributes } from 'react';\nimport './TextLink.css';\n\nexport interface TextLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** The link label text */\n children: React.ReactNode;\n}\n\nexport const TextLink = forwardRef<HTMLAnchorElement, TextLinkProps>(\n ({ children, className = '', ...props }, ref) => {\n const classNames = ['reactor-text-link', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <a ref={ref} className={classNames} {...props}>\n <span className=\"reactor-text-link__label\">{children}</span>\n </a>\n );\n }\n);\n\nTextLink.displayName = 'TextLink';\n","import { type SVGAttributes } from 'react';\n\nexport interface ReactorLogoProps extends SVGAttributes<SVGSVGElement> {\n /** Width of the logo */\n width?: number | string;\n /** Height of the logo */\n height?: number | string;\n}\n\nexport function ReactorLogo({\n width = 48,\n height = 34,\n className = '',\n ...props\n}: ReactorLogoProps) {\n const classNames = ['reactor-logo', className].filter(Boolean).join(' ');\n\n return (\n <svg\n className={classNames}\n width={width}\n height={height}\n viewBox=\"0 0 236 167\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Reactor Logo\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M206.095 0C226.816 8.93696e-06 236 12.1455 236 28.7287V77.5436C236 93.6597 227.052 105.805 206.801 105.805L206.316 105.807C201.046 105.826 197.927 111.667 200.873 116.002L235.529 167H193.51L153.406 109.84C151.633 107.313 148.724 105.806 145.62 105.805C140.38 105.805 136.133 110.018 136.133 115.215V167H99.867V115.215C99.867 110.018 95.6196 105.805 90.3804 105.805C87.2757 105.806 84.3674 107.313 82.5939 109.84L42.4899 167H0.47133L35.1272 116.002C38.0728 111.667 34.9544 105.826 29.6842 105.807L29.199 105.805C8.94824 105.805 0 93.6597 0 77.5436V28.7287C0 12.1455 9.18356 8.93696e-06 29.9053 0H206.095ZM40.5014 32.6996C37.205 32.6997 36.2631 33.8675 36.2631 37.1373V69.1357C36.2631 72.1719 37.2054 73.1059 40.2665 73.1059H195.734C198.795 73.1059 199.737 72.1719 199.737 69.1357V37.1373C199.737 33.8675 198.795 32.6997 195.499 32.6996H40.5014Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n}\n\nReactorLogo.displayName = 'ReactorLogo';\n","import { type HTMLAttributes, type ReactNode } from 'react';\nimport './Nav.css';\n\nexport interface NavLink {\n /** The link label */\n label: string;\n /** The link URL */\n href: string;\n}\n\nexport interface NavProps extends HTMLAttributes<HTMLElement> {\n /** Logo element to render on the left */\n logo?: ReactNode;\n /** Navigation links to render in the center */\n links?: NavLink[];\n /** Action element (e.g. button) to render on the right */\n action?: ReactNode;\n}\n\nexport function Nav({\n logo,\n links = [],\n action,\n className = '',\n ...props\n}: NavProps) {\n const classNames = ['reactor-nav', className].filter(Boolean).join(' ');\n\n return (\n <nav className={classNames} {...props}>\n <div className=\"reactor-nav__inner\">\n <div className=\"reactor-nav__logo\">\n {logo}\n </div>\n\n {links.length > 0 && (\n <div className=\"reactor-nav__links\">\n {links.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className=\"reactor-nav__link\"\n >\n {link.label}\n </a>\n ))}\n </div>\n )}\n\n <div className=\"reactor-nav__action\">\n {action}\n </div>\n </div>\n </nav>\n );\n}\n\nNav.displayName = 'Nav';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport './Input.css';\n\nexport interface InputProps extends InputHTMLAttributes<HTMLInputElement> {\n /** Visual variant of the input */\n variant?: 'default';\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ variant = 'default', className = '', ...props }, ref) => {\n const classNames = [\n 'reactor-input',\n `reactor-input--${variant}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return <input ref={ref} className={classNames} {...props} />;\n }\n);\n\nInput.displayName = 'Input';\n","import { type FormHTMLAttributes } from 'react';\nimport { Input } from '../Input';\nimport { Button } from '../Button';\nimport './EmailForm.css';\n\nexport interface EmailFormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'children'> {\n /** Placeholder text for the email input */\n placeholder?: string;\n /** Submit button label */\n buttonLabel?: string;\n /** Callback when form is submitted with the email value */\n onEmailSubmit?: (email: string) => void;\n}\n\nexport function EmailForm({\n placeholder = 'Your email here',\n buttonLabel = 'Submit',\n onEmailSubmit,\n className = '',\n ...props\n}: EmailFormProps) {\n const classNames = ['reactor-email-form', className]\n .filter(Boolean)\n .join(' ');\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const form = e.currentTarget;\n const formData = new FormData(form);\n const email = formData.get('email') as string;\n onEmailSubmit?.(email);\n };\n\n return (\n <form className={classNames} onSubmit={handleSubmit} {...props}>\n <Input\n type=\"email\"\n name=\"email\"\n placeholder={placeholder}\n className=\"reactor-email-form__input\"\n required\n />\n <Button\n type=\"submit\"\n variant=\"muted\"\n size=\"default\"\n shadow={false}\n >\n {buttonLabel}\n </Button>\n </form>\n );\n}\n\nEmailForm.displayName = 'EmailForm';\n"],"names":["Button","forwardRef","variant","size","shadow","children","className","disabled","props","ref","classNames","jsx","TextLink","ReactorLogo","width","height","Nav","logo","links","action","jsxs","link","Input","EmailForm","placeholder","buttonLabel","onEmailSubmit","e","form","email"],"mappings":"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"}
|