@buildcanada/components 0.3.2 → 0.3.4
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/content/Card/Card.d.ts +62 -0
- package/dist/content/Card/Card.d.ts.map +1 -0
- package/dist/content/Card/Card.js +45 -0
- package/dist/content/Card/index.d.ts +3 -0
- package/dist/content/Card/index.d.ts.map +1 -0
- package/dist/content/Card/index.js +2 -0
- package/dist/content/Hero/Hero.d.ts +28 -0
- package/dist/content/Hero/Hero.d.ts.map +1 -0
- package/dist/content/Hero/Hero.js +16 -0
- package/dist/content/Hero/index.d.ts +3 -0
- package/dist/content/Hero/index.d.ts.map +1 -0
- package/dist/content/Hero/index.js +2 -0
- package/dist/content/StatBlock/StatBlock.d.ts +15 -0
- package/dist/content/StatBlock/StatBlock.d.ts.map +1 -0
- package/dist/content/StatBlock/StatBlock.js +10 -0
- package/dist/content/StatBlock/index.d.ts +3 -0
- package/dist/content/StatBlock/index.d.ts.map +1 -0
- package/dist/content/StatBlock/index.js +2 -0
- package/dist/feedback/Dialog/Dialog.d.ts +18 -0
- package/dist/feedback/Dialog/Dialog.d.ts.map +1 -0
- package/dist/feedback/Dialog/Dialog.js +33 -0
- package/{src/feedback/Dialog/index.ts → dist/feedback/Dialog/index.d.ts} +2 -1
- package/dist/feedback/Dialog/index.d.ts.map +1 -0
- package/dist/feedback/Dialog/index.js +1 -0
- package/dist/feedback/PopupForm/PopupForm.d.ts +24 -0
- package/dist/feedback/PopupForm/PopupForm.d.ts.map +1 -0
- package/dist/feedback/PopupForm/PopupForm.js +13 -0
- package/dist/feedback/PopupForm/index.d.ts +2 -0
- package/dist/feedback/PopupForm/index.d.ts.map +1 -0
- package/dist/feedback/PopupForm/index.js +1 -0
- package/{src/index.ts → dist/index.d.ts} +16 -56
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/layout/Container/Container.d.ts +11 -0
- package/dist/layout/Container/Container.d.ts.map +1 -0
- package/dist/layout/Container/Container.js +7 -0
- package/dist/layout/Container/index.d.ts +3 -0
- package/dist/layout/Container/index.d.ts.map +1 -0
- package/dist/layout/Container/index.js +2 -0
- package/dist/layout/Divider/Divider.d.ts +12 -0
- package/dist/layout/Divider/Divider.d.ts.map +1 -0
- package/dist/layout/Divider/Divider.js +7 -0
- package/dist/layout/Divider/index.d.ts +3 -0
- package/dist/layout/Divider/index.d.ts.map +1 -0
- package/dist/layout/Divider/index.js +2 -0
- package/dist/layout/Grid/Grid.d.ts +24 -0
- package/dist/layout/Grid/Grid.d.ts.map +1 -0
- package/dist/layout/Grid/Grid.js +11 -0
- package/dist/layout/Grid/index.d.ts +3 -0
- package/dist/layout/Grid/index.d.ts.map +1 -0
- package/dist/layout/Grid/index.js +2 -0
- package/dist/layout/Section/Section.d.ts +13 -0
- package/dist/layout/Section/Section.d.ts.map +1 -0
- package/dist/layout/Section/Section.js +7 -0
- package/dist/layout/Section/index.d.ts +3 -0
- package/dist/layout/Section/index.d.ts.map +1 -0
- package/dist/layout/Section/index.js +2 -0
- package/dist/layout/Stack/Stack.d.ts +18 -0
- package/dist/layout/Stack/Stack.d.ts.map +1 -0
- package/dist/layout/Stack/Stack.js +7 -0
- package/dist/layout/Stack/index.d.ts +3 -0
- package/dist/layout/Stack/index.d.ts.map +1 -0
- package/dist/layout/Stack/index.js +2 -0
- package/dist/navigation/Footer/Footer.d.ts +31 -0
- package/dist/navigation/Footer/Footer.d.ts.map +1 -0
- package/dist/navigation/Footer/Footer.js +21 -0
- package/dist/navigation/Footer/index.d.ts +3 -0
- package/dist/navigation/Footer/index.d.ts.map +1 -0
- package/dist/navigation/Footer/index.js +2 -0
- package/dist/navigation/Header/Header.d.ts +23 -0
- package/dist/navigation/Header/Header.d.ts.map +1 -0
- package/dist/navigation/Header/Header.js +16 -0
- package/dist/navigation/Header/index.d.ts +3 -0
- package/dist/navigation/Header/index.d.ts.map +1 -0
- package/dist/navigation/Header/index.js +2 -0
- package/dist/primitives/Button/Button.d.ts +31 -0
- package/dist/primitives/Button/Button.d.ts.map +1 -0
- package/dist/primitives/Button/Button.js +36 -0
- package/dist/primitives/Button/index.d.ts +3 -0
- package/dist/primitives/Button/index.d.ts.map +1 -0
- package/dist/primitives/Button/index.js +2 -0
- package/dist/primitives/Checkbox/Checkbox.d.ts +13 -0
- package/dist/primitives/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/primitives/Checkbox/Checkbox.js +10 -0
- package/dist/primitives/Checkbox/index.d.ts +3 -0
- package/dist/primitives/Checkbox/index.d.ts.map +1 -0
- package/dist/primitives/Checkbox/index.js +2 -0
- package/dist/primitives/TextField/TextField.d.ts +22 -0
- package/dist/primitives/TextField/TextField.d.ts.map +1 -0
- package/dist/primitives/TextField/TextField.js +14 -0
- package/dist/primitives/TextField/index.d.ts +3 -0
- package/dist/primitives/TextField/index.d.ts.map +1 -0
- package/dist/primitives/TextField/index.js +2 -0
- package/package.json +11 -11
- package/src/assets/fonts/financier-text-regular.woff2 +0 -0
- package/src/assets/fonts/founders-grotesk-mono-regular.woff2 +0 -0
- package/src/assets/fonts/soehne-kraftig.woff2 +0 -0
- package/src/content/Card/Card.tsx +0 -170
- package/src/content/Card/index.ts +0 -22
- package/src/content/Hero/Hero.tsx +0 -63
- package/src/content/Hero/index.ts +0 -13
- package/src/content/StatBlock/StatBlock.tsx +0 -52
- package/src/content/StatBlock/index.ts +0 -2
- package/src/feedback/Dialog/Dialog.tsx +0 -120
- package/src/feedback/PopupForm/PopupForm.tsx +0 -90
- package/src/feedback/PopupForm/index.ts +0 -1
- package/src/layout/Container/Container.tsx +0 -29
- package/src/layout/Container/index.ts +0 -2
- package/src/layout/Divider/Divider.tsx +0 -32
- package/src/layout/Divider/index.ts +0 -2
- package/src/layout/Grid/Grid.tsx +0 -75
- package/src/layout/Grid/index.ts +0 -2
- package/src/layout/Section/Section.tsx +0 -37
- package/src/layout/Section/index.ts +0 -2
- package/src/layout/Stack/Stack.tsx +0 -48
- package/src/layout/Stack/index.ts +0 -9
- package/src/navigation/Footer/Footer.tsx +0 -174
- package/src/navigation/Footer/index.ts +0 -2
- package/src/navigation/Header/Header.tsx +0 -185
- package/src/navigation/Header/index.ts +0 -2
- package/src/primitives/Button/Button.tsx +0 -120
- package/src/primitives/Button/index.ts +0 -2
- package/src/primitives/Checkbox/Checkbox.tsx +0 -75
- package/src/primitives/Checkbox/index.ts +0 -2
- package/src/primitives/TextField/TextField.tsx +0 -105
- package/src/primitives/TextField/index.ts +0 -2
- /package/{src → dist}/content/Card/Card.scss +0 -0
- /package/{src → dist}/content/Hero/Hero.scss +0 -0
- /package/{src → dist}/content/StatBlock/StatBlock.scss +0 -0
- /package/{src → dist}/feedback/Dialog/Dialog.scss +0 -0
- /package/{src → dist}/feedback/PopupForm/PopupForm.scss +0 -0
- /package/{src → dist}/layout/Container/Container.scss +0 -0
- /package/{src → dist}/layout/Divider/Divider.scss +0 -0
- /package/{src → dist}/layout/Grid/Grid.scss +0 -0
- /package/{src → dist}/layout/Section/Section.scss +0 -0
- /package/{src → dist}/layout/Stack/Stack.scss +0 -0
- /package/{src → dist}/navigation/Footer/Footer.scss +0 -0
- /package/{src → dist}/navigation/Header/Header.scss +0 -0
- /package/{src → dist}/primitives/Button/Button.scss +0 -0
- /package/{src → dist}/primitives/Checkbox/Checkbox.scss +0 -0
- /package/{src → dist}/primitives/TextField/TextField.scss +0 -0
- /package/{src → dist}/styles/fonts.scss +0 -0
- /package/{src → dist}/styles/main.scss +0 -0
- /package/{src → dist}/styles/tokens.scss +0 -0
- /package/{src → dist}/styles/typography.scss +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/Grid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAC9G,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type SectionBackground = "white" | "linen" | "charcoal";
|
|
2
|
+
export type SectionSpacing = "none" | "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export interface SectionProps {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
style?: React.CSSProperties;
|
|
7
|
+
background?: SectionBackground;
|
|
8
|
+
spacing?: SectionSpacing;
|
|
9
|
+
id?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function Section({ children, className, style, background, spacing, id, }: SectionProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export default Section;
|
|
13
|
+
//# sourceMappingURL=Section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.d.ts","sourceRoot":"","sources":["../../../src/layout/Section/Section.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE/D,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,EAAE,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,OAAO,CAAC,EACpB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,UAAoB,EACpB,OAAc,EACd,EAAE,GACL,EAAE,YAAY,2CAad;AAED,eAAe,OAAO,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
export function Section({ children, className, style, background = "white", spacing = "lg", id, }) {
|
|
4
|
+
const classes = cx("bc-section", `bc-section--bg-${background}`, `bc-section--spacing-${spacing}`, className);
|
|
5
|
+
return (_jsx("section", { className: classes, style: style, id: id, children: children }));
|
|
6
|
+
}
|
|
7
|
+
export default Section;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/Section/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAA;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type StackDirection = "vertical" | "horizontal";
|
|
2
|
+
export type StackSpacing = "none" | "xs" | "sm" | "md" | "lg" | "xl";
|
|
3
|
+
export type StackAlign = "start" | "center" | "end" | "stretch";
|
|
4
|
+
export type StackJustify = "start" | "center" | "end" | "between" | "around";
|
|
5
|
+
export interface StackProps {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
style?: React.CSSProperties;
|
|
9
|
+
direction?: StackDirection;
|
|
10
|
+
spacing?: StackSpacing;
|
|
11
|
+
align?: StackAlign;
|
|
12
|
+
justify?: StackJustify;
|
|
13
|
+
wrap?: boolean;
|
|
14
|
+
as?: "div" | "ul" | "ol" | "nav";
|
|
15
|
+
}
|
|
16
|
+
export declare function Stack({ children, className, style, direction, spacing, align, justify, wrap, as: Component, }: StackProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export default Stack;
|
|
18
|
+
//# sourceMappingURL=Stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../../src/layout/Stack/Stack.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAA;AACtD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAA;AAC/D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE5E,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA;CACnC;AAED,wBAAgB,KAAK,CAAC,EAClB,QAAQ,EACR,SAAS,EACT,KAAK,EACL,SAAsB,EACtB,OAAc,EACd,KAAiB,EACjB,OAAiB,EACjB,IAAY,EACZ,EAAE,EAAE,SAAiB,GACxB,EAAE,UAAU,2CAgBZ;AAED,eAAe,KAAK,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
export function Stack({ children, className, style, direction = "vertical", spacing = "md", align = "stretch", justify = "start", wrap = false, as: Component = "div", }) {
|
|
4
|
+
const classes = cx("bc-stack", `bc-stack--${direction}`, `bc-stack--spacing-${spacing}`, `bc-stack--align-${align}`, `bc-stack--justify-${justify}`, { "bc-stack--wrap": wrap }, className);
|
|
5
|
+
return (_jsx(Component, { className: classes, style: style, children: children }));
|
|
6
|
+
}
|
|
7
|
+
export default Stack;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/Stack/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EACL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface FooterLink {
|
|
2
|
+
label: string;
|
|
3
|
+
href: string;
|
|
4
|
+
}
|
|
5
|
+
export interface SocialLink {
|
|
6
|
+
platform: "twitter" | "linkedin" | "instagram" | "github" | "email" | "bluesky";
|
|
7
|
+
href: string;
|
|
8
|
+
label?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface FooterProps {
|
|
11
|
+
logo?: React.ReactNode;
|
|
12
|
+
links?: FooterLink[];
|
|
13
|
+
socialLinks?: SocialLink[];
|
|
14
|
+
newsletter?: {
|
|
15
|
+
heading: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
buttonText?: string;
|
|
19
|
+
onSubmit?: (email: string) => void;
|
|
20
|
+
};
|
|
21
|
+
quote?: {
|
|
22
|
+
text: string;
|
|
23
|
+
attribution: string;
|
|
24
|
+
};
|
|
25
|
+
copyright?: string;
|
|
26
|
+
className?: string;
|
|
27
|
+
style?: React.CSSProperties;
|
|
28
|
+
}
|
|
29
|
+
export declare function Footer({ logo, links, socialLinks, newsletter, quote, copyright, className, style, }: FooterProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export default Footer;
|
|
31
|
+
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/navigation/Footer/Footer.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;IAC1B,UAAU,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KACrC,CAAA;IACD,KAAK,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC9B;AAmCD,wBAAgB,MAAM,CAAC,EACnB,IAAI,EACJ,KAAU,EACV,WAAgB,EAChB,UAAU,EACV,KAAK,EACL,SAAS,EACT,SAAS,EACT,KAAK,GACR,EAAE,WAAW,2CAgGb;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
const socialIcons = {
|
|
4
|
+
twitter: (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" }) })),
|
|
5
|
+
linkedin: (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" }) })),
|
|
6
|
+
instagram: (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" }) })),
|
|
7
|
+
github: (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" }) })),
|
|
8
|
+
email: (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: _jsx("path", { d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }) })),
|
|
9
|
+
bluesky: (_jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { d: "M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 01-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8z" }) })),
|
|
10
|
+
};
|
|
11
|
+
export function Footer({ logo, links = [], socialLinks = [], newsletter, quote, copyright, className, style, }) {
|
|
12
|
+
const classes = cx("bc-footer", className);
|
|
13
|
+
const handleNewsletterSubmit = (e) => {
|
|
14
|
+
e.preventDefault();
|
|
15
|
+
const formData = new FormData(e.currentTarget);
|
|
16
|
+
const email = formData.get("email");
|
|
17
|
+
newsletter?.onSubmit?.(email);
|
|
18
|
+
};
|
|
19
|
+
return (_jsx("footer", { className: classes, style: style, children: _jsxs("div", { className: "bc-footer__inner", children: [_jsxs("div", { className: "bc-footer__main", children: [logo && _jsx("div", { className: "bc-footer__logo", children: logo }), links.length > 0 && (_jsx("nav", { className: "bc-footer__nav", "aria-label": "Footer navigation", children: _jsx("ul", { className: "bc-footer__nav-list", children: links.map((link) => (_jsx("li", { children: _jsx("a", { href: link.href, className: "bc-footer__nav-link", children: link.label }) }, link.label))) }) })), newsletter && (_jsxs("div", { className: "bc-footer__newsletter", children: [_jsx("h4", { className: "bc-footer__newsletter-heading", children: newsletter.heading }), newsletter.description && (_jsx("p", { className: "bc-footer__newsletter-description", children: newsletter.description })), _jsxs("form", { className: "bc-footer__newsletter-form", onSubmit: handleNewsletterSubmit, children: [_jsx("input", { type: "email", name: "email", placeholder: newsletter.placeholder || "Enter your email", className: "bc-footer__newsletter-input", required: true }), _jsx("button", { type: "submit", className: "bc-footer__newsletter-button", children: newsletter.buttonText || "Subscribe" })] })] }))] }), _jsxs("div", { className: "bc-footer__bottom", children: [socialLinks.length > 0 && (_jsx("div", { className: "bc-footer__social", children: socialLinks.map((link) => (_jsx("a", { href: link.href, className: "bc-footer__social-link", "aria-label": link.label || link.platform, children: socialIcons[link.platform] }, link.platform))) })), copyright && (_jsx("p", { className: "bc-footer__copyright", children: copyright }))] }), quote && (_jsxs("div", { className: "bc-footer__quote", children: [_jsx("blockquote", { className: "bc-footer__quote-text", children: quote.text }), _jsxs("cite", { className: "bc-footer__quote-attribution", children: ["\u2014 ", quote.attribution] })] }))] }) }));
|
|
20
|
+
}
|
|
21
|
+
export default Footer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/navigation/Footer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface NavItem {
|
|
2
|
+
label: string;
|
|
3
|
+
href: string;
|
|
4
|
+
dropdown?: NavItem[];
|
|
5
|
+
}
|
|
6
|
+
export interface HeaderProps {
|
|
7
|
+
logo: React.ReactNode;
|
|
8
|
+
navItems?: NavItem[];
|
|
9
|
+
cta?: {
|
|
10
|
+
label: string;
|
|
11
|
+
href: string;
|
|
12
|
+
};
|
|
13
|
+
announcement?: {
|
|
14
|
+
text: string;
|
|
15
|
+
href?: string;
|
|
16
|
+
variant?: "default" | "auburn";
|
|
17
|
+
};
|
|
18
|
+
className?: string;
|
|
19
|
+
style?: React.CSSProperties;
|
|
20
|
+
}
|
|
21
|
+
export declare function Header({ logo, navItems, cta, announcement, className, style, }: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export default Header;
|
|
23
|
+
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/navigation/Header/Header.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,GAAG,CAAC,EAAE;QACF,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,MAAM,CAAA;KACf,CAAA;IACD,YAAY,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;KACjC,CAAA;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC9B;AAED,wBAAgB,MAAM,CAAC,EACnB,IAAI,EACJ,QAAa,EACb,GAAG,EACH,YAAY,EACZ,SAAS,EACT,KAAK,GACR,EAAE,WAAW,2CAsJb;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
export function Header({ logo, navItems = [], cta, announcement, className, style, }) {
|
|
5
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
|
|
6
|
+
const [openDropdown, setOpenDropdown] = useState(null);
|
|
7
|
+
const classes = cx("bc-header", className);
|
|
8
|
+
return (_jsxs("header", { className: classes, style: style, children: [announcement && (_jsx("div", { className: cx("bc-header__announcement", {
|
|
9
|
+
"bc-header__announcement--auburn": announcement.variant === "auburn",
|
|
10
|
+
}), children: announcement.href ? (_jsx("a", { href: announcement.href, children: announcement.text })) : (_jsx("span", { children: announcement.text })) })), _jsxs("div", { className: "bc-header__main", children: [_jsx("div", { className: "bc-header__logo", children: logo }), _jsx("nav", { className: "bc-header__nav", "aria-label": "Main navigation", children: _jsx("ul", { className: "bc-header__nav-list", children: navItems.map((item) => (_jsx("li", { className: cx("bc-header__nav-item", {
|
|
11
|
+
"bc-header__nav-item--has-dropdown": item.dropdown,
|
|
12
|
+
}), onMouseEnter: () => item.dropdown && setOpenDropdown(item.label), onMouseLeave: () => item.dropdown && setOpenDropdown(null), children: item.dropdown ? (_jsxs(_Fragment, { children: [_jsxs("button", { className: "bc-header__nav-link bc-header__nav-link--dropdown", "aria-expanded": openDropdown === item.label, "aria-haspopup": "true", children: [item.label, _jsx("svg", { className: "bc-header__dropdown-icon", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", children: _jsx("path", { fillRule: "evenodd", d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z", clipRule: "evenodd" }) })] }), openDropdown === item.label && (_jsx("ul", { className: "bc-header__dropdown", children: item.dropdown.map((subItem) => (_jsx("li", { children: _jsx("a", { href: subItem.href, className: "bc-header__dropdown-link", children: subItem.label }) }, subItem.label))) }))] })) : (_jsx("a", { href: item.href, className: "bc-header__nav-link", children: item.label })) }, item.label))) }) }), cta && (_jsx("a", { href: cta.href, className: "bc-header__cta", children: cta.label })), _jsx("button", { className: "bc-header__mobile-toggle", onClick: () => setMobileMenuOpen(!mobileMenuOpen), "aria-expanded": mobileMenuOpen, "aria-label": "Toggle navigation menu", children: _jsx("span", { className: "bc-header__hamburger" }) })] }), _jsx("div", { className: cx("bc-header__mobile-menu", {
|
|
13
|
+
"bc-header__mobile-menu--open": mobileMenuOpen,
|
|
14
|
+
}), children: _jsxs("nav", { "aria-label": "Mobile navigation", children: [_jsx("ul", { className: "bc-header__mobile-nav", children: navItems.map((item) => (_jsxs("li", { children: [_jsx("a", { href: item.href, className: "bc-header__mobile-link", onClick: () => setMobileMenuOpen(false), children: item.label }), item.dropdown && (_jsx("ul", { className: "bc-header__mobile-subnav", children: item.dropdown.map((subItem) => (_jsx("li", { children: _jsx("a", { href: subItem.href, className: "bc-header__mobile-link bc-header__mobile-link--sub", onClick: () => setMobileMenuOpen(false), children: subItem.label }) }, subItem.label))) }))] }, item.label))) }), cta && (_jsx("a", { href: cta.href, className: "bc-header__mobile-cta", onClick: () => setMobileMenuOpen(false), children: cta.label }))] }) })] }));
|
|
15
|
+
}
|
|
16
|
+
export default Header;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/navigation/Header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IconDefinition } from "@fortawesome/free-solid-svg-icons";
|
|
2
|
+
export type ButtonVariant = "solid-auburn" | "solid-charcoal" | "solid-linen" | "outline-auburn" | "outline-charcoal" | "outline-white";
|
|
3
|
+
export type ButtonSize = "sm" | "md" | "lg";
|
|
4
|
+
type ButtonCommonProps = {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
text?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
style?: React.CSSProperties;
|
|
9
|
+
variant?: ButtonVariant;
|
|
10
|
+
size?: ButtonSize;
|
|
11
|
+
icon?: IconDefinition | null;
|
|
12
|
+
iconPosition?: "left" | "right";
|
|
13
|
+
fullWidth?: boolean;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
ariaLabel?: string;
|
|
16
|
+
dataTrackNote?: string;
|
|
17
|
+
};
|
|
18
|
+
type WithHrefProps = {
|
|
19
|
+
href: string;
|
|
20
|
+
onClick?: never;
|
|
21
|
+
type?: never;
|
|
22
|
+
};
|
|
23
|
+
type WithOnClickProps = {
|
|
24
|
+
onClick?: () => void;
|
|
25
|
+
href?: never;
|
|
26
|
+
type?: "button" | "submit";
|
|
27
|
+
};
|
|
28
|
+
export type ButtonProps = (ButtonCommonProps & WithHrefProps) | (ButtonCommonProps & WithOnClickProps);
|
|
29
|
+
export declare function Button({ variant, size, className, style, href, onClick, text, children, ariaLabel, type, icon, iconPosition, fullWidth, dataTrackNote, disabled, }: ButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export default Button;
|
|
31
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/primitives/Button/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAgB,MAAM,mCAAmC,CAAA;AAEhF,MAAM,MAAM,aAAa,GACnB,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,CAAA;AAErB,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,KAAK,iBAAiB,GAAG;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,IAAI,CAAC,EAAE,KAAK,CAAA;CACf,CAAA;AAED,KAAK,gBAAgB,GAAG;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,WAAW,GACjB,CAAC,iBAAiB,GAAG,aAAa,CAAC,GACnC,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAA;AAE5C,wBAAgB,MAAM,CAAC,EACnB,OAAwB,EACxB,IAAW,EACX,SAAS,EACT,KAAK,EACL,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,IAAe,EACf,IAAmB,EACnB,YAAsB,EACtB,SAAiB,EACjB,aAAa,EACb,QAAQ,GACX,EAAE,WAAW,2CAwDb;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
4
|
+
import { faArrowRight } from "@fortawesome/free-solid-svg-icons";
|
|
5
|
+
export function Button({ variant = "solid-auburn", size = "md", className, style, href, onClick, text, children, ariaLabel, type = "button", icon = faArrowRight, iconPosition = "right", fullWidth = false, dataTrackNote, disabled, }) {
|
|
6
|
+
const classes = cx("bc-btn", `bc-btn--${variant}`, `bc-btn--${size}`, className, {
|
|
7
|
+
"bc-btn--icon-only": icon && !text && !children,
|
|
8
|
+
"bc-btn--full-width": fullWidth,
|
|
9
|
+
});
|
|
10
|
+
const content = (_jsxs(_Fragment, { children: [iconPosition === "left" && icon && (_jsx(FontAwesomeIcon, { className: cx("bc-btn__icon", { "bc-btn__icon--left": text || children }), icon: icon })), text && _jsx("span", { className: "bc-btn__text", children: text }), children, iconPosition !== "left" && icon && (_jsx(FontAwesomeIcon, { className: cx("bc-btn__icon", { "bc-btn__icon--right": text || children }), icon: icon }))] }));
|
|
11
|
+
if (href) {
|
|
12
|
+
const aProps = {
|
|
13
|
+
href: disabled ? undefined : href,
|
|
14
|
+
className: classes,
|
|
15
|
+
style,
|
|
16
|
+
"data-track-note": dataTrackNote,
|
|
17
|
+
onClick: disabled
|
|
18
|
+
? (e) => e.preventDefault()
|
|
19
|
+
: undefined,
|
|
20
|
+
"aria-label": ariaLabel,
|
|
21
|
+
"aria-disabled": disabled,
|
|
22
|
+
};
|
|
23
|
+
return _jsx("a", { ...aProps, children: content });
|
|
24
|
+
}
|
|
25
|
+
const buttonProps = {
|
|
26
|
+
type,
|
|
27
|
+
className: classes,
|
|
28
|
+
style,
|
|
29
|
+
onClick,
|
|
30
|
+
"aria-label": ariaLabel,
|
|
31
|
+
"data-track-note": dataTrackNote,
|
|
32
|
+
disabled,
|
|
33
|
+
};
|
|
34
|
+
return _jsx("button", { ...buttonProps, children: content });
|
|
35
|
+
}
|
|
36
|
+
export default Button;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/Button/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface CheckboxProps {
|
|
2
|
+
label: string;
|
|
3
|
+
checked?: boolean;
|
|
4
|
+
defaultChecked?: boolean;
|
|
5
|
+
name?: string;
|
|
6
|
+
id?: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare const Checkbox: import("react").ForwardRefExoticComponent<CheckboxProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
12
|
+
export default Checkbox;
|
|
13
|
+
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/primitives/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,QAAQ,4GA0DpB,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { forwardRef, useId } from "react";
|
|
4
|
+
export const Checkbox = forwardRef(function Checkbox({ label, checked, defaultChecked, name, id: providedId, className, disabled = false, onChange, }, ref) {
|
|
5
|
+
const generatedId = useId();
|
|
6
|
+
const id = providedId || generatedId;
|
|
7
|
+
const classes = cx("bc-checkbox", { "bc-checkbox--disabled": disabled }, className);
|
|
8
|
+
return (_jsxs("div", { className: classes, children: [_jsx("input", { ref: ref, type: "checkbox", id: id, name: name, checked: checked, defaultChecked: defaultChecked, disabled: disabled, className: "bc-checkbox__input", onChange: onChange }), _jsxs("label", { htmlFor: id, className: "bc-checkbox__label", children: [_jsx("span", { className: "bc-checkbox__box", children: _jsx("svg", { className: "bc-checkbox__check", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M11.5 4L5.5 10L2.5 7", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "square", strokeLinejoin: "round" }) }) }), _jsx("span", { className: "bc-checkbox__text", children: label })] })] }));
|
|
9
|
+
});
|
|
10
|
+
export default Checkbox;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/Checkbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type TextFieldType = "text" | "email" | "password" | "number" | "tel" | "url";
|
|
2
|
+
export interface TextFieldProps {
|
|
3
|
+
label?: string;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
defaultValue?: string;
|
|
7
|
+
type?: TextFieldType;
|
|
8
|
+
name?: string;
|
|
9
|
+
id?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
hint?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
required?: boolean;
|
|
15
|
+
autoComplete?: string;
|
|
16
|
+
onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
17
|
+
onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
18
|
+
onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare const TextField: import("react").ForwardRefExoticComponent<TextFieldProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
21
|
+
export default TextField;
|
|
22
|
+
//# sourceMappingURL=TextField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/primitives/TextField/TextField.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAA;AAEpF,MAAM,WAAW,cAAc;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IAC3D,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;IACxD,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAA;CAC5D;AAED,eAAO,MAAM,SAAS,6GA8ErB,CAAA;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import { forwardRef, useId } from "react";
|
|
4
|
+
export const TextField = forwardRef(function TextField({ label, placeholder, value, defaultValue, type = "text", name, id: providedId, className, error, hint, disabled = false, required = false, autoComplete, onChange, onBlur, onFocus, }, ref) {
|
|
5
|
+
const generatedId = useId();
|
|
6
|
+
const id = providedId || generatedId;
|
|
7
|
+
const errorId = `${id}-error`;
|
|
8
|
+
const hintId = `${id}-hint`;
|
|
9
|
+
const hasError = Boolean(error);
|
|
10
|
+
const classes = cx("bc-textfield", { "bc-textfield--error": hasError }, { "bc-textfield--disabled": disabled }, className);
|
|
11
|
+
return (_jsxs("div", { className: classes, children: [label && (_jsxs("label", { htmlFor: id, className: "bc-textfield__label", children: [label, required && _jsx("span", { className: "bc-textfield__required", children: "*" })] })), _jsx("input", { ref: ref, type: type, id: id, name: name, value: value, defaultValue: defaultValue, placeholder: placeholder, disabled: disabled, required: required, autoComplete: autoComplete, className: "bc-textfield__input", "aria-invalid": hasError, "aria-describedby": [error && errorId, hint && hintId].filter(Boolean).join(" ") ||
|
|
12
|
+
undefined, onChange: onChange, onBlur: onBlur, onFocus: onFocus }), hint && !error && (_jsx("p", { id: hintId, className: "bc-textfield__hint", children: hint })), error && (_jsx("p", { id: errorId, className: "bc-textfield__error", role: "alert", children: error }))] }));
|
|
13
|
+
});
|
|
14
|
+
export default TextField;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/primitives/TextField/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buildcanada/components",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"description": "Build Canada design system components",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "
|
|
7
|
-
"
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
8
9
|
"exports": {
|
|
9
10
|
".": {
|
|
10
|
-
"types": "./
|
|
11
|
-
"import": "./
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
12
13
|
},
|
|
13
|
-
"./styles.css": "./
|
|
14
|
-
"./
|
|
14
|
+
"./styles.css": "./dist/styles/main.scss",
|
|
15
|
+
"./styles/*": "./dist/styles/*",
|
|
15
16
|
"./src/*": "./src/*"
|
|
16
17
|
},
|
|
17
18
|
"files": [
|
|
18
|
-
"
|
|
19
|
-
"!src/**/*.test.ts",
|
|
20
|
-
"!src/**/*.test.tsx",
|
|
21
|
-
"!src/**/*.stories.tsx"
|
|
19
|
+
"dist"
|
|
22
20
|
],
|
|
23
21
|
"repository": {
|
|
24
22
|
"type": "git",
|
|
@@ -33,6 +31,8 @@
|
|
|
33
31
|
"access": "public"
|
|
34
32
|
},
|
|
35
33
|
"scripts": {
|
|
34
|
+
"build": "bun run build.ts",
|
|
35
|
+
"prepublishOnly": "bun run build",
|
|
36
36
|
"typecheck": "tsc --noEmit",
|
|
37
37
|
"test": "vitest run",
|
|
38
38
|
"test:watch": "vitest"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|