@b3-crow/ui-kit 0.0.30-pr25.9 → 0.0.31-pr25.10
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/backgrounds/AnimatedBackground.d.ts.map +1 -0
- package/dist/components/backgrounds/AnimatedBackground.js.map +1 -0
- package/dist/components/backgrounds/Globe.d.ts.map +1 -0
- package/dist/components/backgrounds/Globe.js.map +1 -0
- package/dist/components/backgrounds/GradientBackground.d.ts.map +1 -0
- package/dist/components/backgrounds/GradientBackground.js.map +1 -0
- package/dist/components/{Button.d.ts → buttons/Button.d.ts} +5 -2
- package/dist/components/buttons/Button.d.ts.map +1 -0
- package/dist/components/buttons/Button.js +41 -0
- package/dist/components/buttons/Button.js.map +1 -0
- package/dist/components/buttons/CompanyPageButton.d.ts +10 -0
- package/dist/components/buttons/CompanyPageButton.d.ts.map +1 -0
- package/dist/components/buttons/CompanyPageButton.js +8 -0
- package/dist/components/buttons/CompanyPageButton.js.map +1 -0
- package/dist/components/cards/Card.d.ts.map +1 -0
- package/dist/components/{Card.js → cards/Card.js} +1 -1
- package/dist/components/cards/Card.js.map +1 -0
- package/dist/components/cards/CheckoutSummary.d.ts +38 -0
- package/dist/components/cards/CheckoutSummary.d.ts.map +1 -0
- package/dist/components/cards/CheckoutSummary.js +54 -0
- package/dist/components/cards/CheckoutSummary.js.map +1 -0
- package/dist/components/cards/ConnectionOption.d.ts +13 -0
- package/dist/components/cards/ConnectionOption.d.ts.map +1 -0
- package/dist/components/cards/ConnectionOption.js +22 -0
- package/dist/components/cards/ConnectionOption.js.map +1 -0
- package/dist/components/cards/InvitationDetailsCard.d.ts +8 -0
- package/dist/components/cards/InvitationDetailsCard.d.ts.map +1 -0
- package/dist/components/cards/InvitationDetailsCard.js +5 -0
- package/dist/components/cards/InvitationDetailsCard.js.map +1 -0
- package/dist/components/cards/OrderSummaryCard.d.ts +29 -0
- package/dist/components/cards/OrderSummaryCard.d.ts.map +1 -0
- package/dist/components/cards/OrderSummaryCard.js +8 -0
- package/dist/components/cards/OrderSummaryCard.js.map +1 -0
- package/dist/components/cards/PendingInviteCard.d.ts +26 -0
- package/dist/components/cards/PendingInviteCard.d.ts.map +1 -0
- package/dist/components/cards/PendingInviteCard.js +63 -0
- package/dist/components/cards/PendingInviteCard.js.map +1 -0
- package/dist/components/cards/PlanCard.d.ts +50 -0
- package/dist/components/cards/PlanCard.d.ts.map +1 -0
- package/dist/components/cards/PlanCard.js +40 -0
- package/dist/components/cards/PlanCard.js.map +1 -0
- package/dist/components/cards/RunAgentCard.d.ts +9 -0
- package/dist/components/cards/RunAgentCard.d.ts.map +1 -0
- package/dist/components/cards/RunAgentCard.js +15 -0
- package/dist/components/cards/RunAgentCard.js.map +1 -0
- package/dist/components/cards/SyncStatusCard.d.ts +8 -0
- package/dist/components/cards/SyncStatusCard.d.ts.map +1 -0
- package/dist/components/cards/SyncStatusCard.js +29 -0
- package/dist/components/cards/SyncStatusCard.js.map +1 -0
- package/dist/components/dashboard/StatusBadge.d.ts +1 -1
- package/dist/components/display/CodeBlock.d.ts +10 -0
- package/dist/components/display/CodeBlock.d.ts.map +1 -0
- package/dist/components/display/CodeBlock.js +20 -0
- package/dist/components/display/CodeBlock.js.map +1 -0
- package/dist/components/display/ConnectionStatus.d.ts +8 -0
- package/dist/components/display/ConnectionStatus.d.ts.map +1 -0
- package/dist/components/display/ConnectionStatus.js +5 -0
- package/dist/components/display/ConnectionStatus.js.map +1 -0
- package/dist/components/display/Logo.d.ts +16 -0
- package/dist/components/display/Logo.d.ts.map +1 -0
- package/dist/components/display/Logo.js +43 -0
- package/dist/components/display/Logo.js.map +1 -0
- package/dist/components/display/PackageManagerSelector.d.ts +8 -0
- package/dist/components/display/PackageManagerSelector.d.ts.map +1 -0
- package/dist/components/display/PackageManagerSelector.js +20 -0
- package/dist/components/display/PackageManagerSelector.js.map +1 -0
- package/dist/components/index.d.ts +39 -11
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +39 -11
- package/dist/components/index.js.map +1 -1
- package/dist/components/inputs/ApiKeyInput.d.ts +8 -0
- package/dist/components/inputs/ApiKeyInput.d.ts.map +1 -0
- package/dist/components/inputs/ApiKeyInput.js +22 -0
- package/dist/components/inputs/ApiKeyInput.js.map +1 -0
- package/dist/components/inputs/Checkbox.d.ts +11 -0
- package/dist/components/inputs/Checkbox.d.ts.map +1 -0
- package/dist/components/inputs/Checkbox.js +19 -0
- package/dist/components/inputs/Checkbox.js.map +1 -0
- package/dist/components/inputs/EmailTagInput.d.ts +9 -0
- package/dist/components/inputs/EmailTagInput.d.ts.map +1 -0
- package/dist/components/inputs/EmailTagInput.js +61 -0
- package/dist/components/inputs/EmailTagInput.js.map +1 -0
- package/dist/components/inputs/Input.d.ts +16 -0
- package/dist/components/inputs/Input.d.ts.map +1 -0
- package/dist/components/inputs/Input.js +42 -0
- package/dist/components/inputs/Input.js.map +1 -0
- package/dist/components/inputs/InputField.d.ts.map +1 -0
- package/dist/components/{InputField.js → inputs/InputField.js} +1 -1
- package/dist/components/inputs/InputField.js.map +1 -0
- package/dist/components/inputs/NumberStepper.d.ts +15 -0
- package/dist/components/inputs/NumberStepper.d.ts.map +1 -0
- package/dist/components/inputs/NumberStepper.js +49 -0
- package/dist/components/inputs/NumberStepper.js.map +1 -0
- package/dist/components/inputs/PermissionToggle.d.ts +15 -0
- package/dist/components/inputs/PermissionToggle.d.ts.map +1 -0
- package/dist/components/inputs/PermissionToggle.js +18 -0
- package/dist/components/inputs/PermissionToggle.js.map +1 -0
- package/dist/components/inputs/Select.d.ts +24 -0
- package/dist/components/inputs/Select.d.ts.map +1 -0
- package/dist/components/inputs/Select.js +156 -0
- package/dist/components/inputs/Select.js.map +1 -0
- package/dist/components/inputs/TagInput.d.ts +10 -0
- package/dist/components/inputs/TagInput.d.ts.map +1 -0
- package/dist/components/inputs/TagInput.js +20 -0
- package/dist/components/inputs/TagInput.js.map +1 -0
- package/dist/components/inputs/ToggleOption.d.ts +20 -0
- package/dist/components/inputs/ToggleOption.d.ts.map +1 -0
- package/dist/components/inputs/ToggleOption.js +70 -0
- package/dist/components/inputs/ToggleOption.js.map +1 -0
- package/dist/components/layout/Divider.d.ts +11 -0
- package/dist/components/layout/Divider.d.ts.map +1 -0
- package/dist/components/layout/Divider.js +15 -0
- package/dist/components/layout/Divider.js.map +1 -0
- package/dist/components/layout/Footer.d.ts +37 -0
- package/dist/components/layout/Footer.d.ts.map +1 -0
- package/dist/components/layout/Footer.js +49 -0
- package/dist/components/layout/Footer.js.map +1 -0
- package/dist/components/layout/FormSection.d.ts +9 -0
- package/dist/components/layout/FormSection.d.ts.map +1 -0
- package/dist/components/layout/FormSection.js +7 -0
- package/dist/components/layout/FormSection.js.map +1 -0
- package/dist/components/layout/LinkGroup.d.ts +15 -0
- package/dist/components/layout/LinkGroup.d.ts.map +1 -0
- package/dist/components/layout/LinkGroup.js +28 -0
- package/dist/components/layout/LinkGroup.js.map +1 -0
- package/dist/components/layout/Navbar.d.ts +32 -0
- package/dist/components/layout/Navbar.d.ts.map +1 -0
- package/dist/components/layout/Navbar.js +35 -0
- package/dist/components/layout/Navbar.js.map +1 -0
- package/dist/components/layout/PageHeader.d.ts +17 -0
- package/dist/components/layout/PageHeader.d.ts.map +1 -0
- package/dist/components/layout/PageHeader.js +86 -0
- package/dist/components/layout/PageHeader.js.map +1 -0
- package/dist/components/layout/SegmentedControl.d.ts +16 -0
- package/dist/components/layout/SegmentedControl.d.ts.map +1 -0
- package/dist/components/layout/SegmentedControl.js +24 -0
- package/dist/components/layout/SegmentedControl.js.map +1 -0
- package/dist/components/typography/HeroText.d.ts.map +1 -0
- package/dist/components/typography/HeroText.js.map +1 -0
- package/dist/components/typography/SectionLabel.d.ts.map +1 -0
- package/dist/components/typography/SectionLabel.js.map +1 -0
- package/dist/components/typography/Subtitle.d.ts.map +1 -0
- package/dist/components/typography/Subtitle.js.map +1 -0
- package/dist/components/typography/TypewriterText.d.ts.map +1 -0
- package/dist/components/typography/TypewriterText.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +2 -1
- package/dist/components/AnimatedBackground.d.ts.map +0 -1
- package/dist/components/AnimatedBackground.js.map +0 -1
- package/dist/components/Button.d.ts.map +0 -1
- package/dist/components/Button.js +0 -26
- package/dist/components/Button.js.map +0 -1
- package/dist/components/Card.d.ts.map +0 -1
- package/dist/components/Card.js.map +0 -1
- package/dist/components/Globe.d.ts.map +0 -1
- package/dist/components/Globe.js.map +0 -1
- package/dist/components/GradientBackground.d.ts.map +0 -1
- package/dist/components/GradientBackground.js.map +0 -1
- package/dist/components/HeroText.d.ts.map +0 -1
- package/dist/components/HeroText.js.map +0 -1
- package/dist/components/InputField.d.ts.map +0 -1
- package/dist/components/InputField.js.map +0 -1
- package/dist/components/Logo.d.ts +0 -6
- package/dist/components/Logo.d.ts.map +0 -1
- package/dist/components/Logo.js +0 -7
- package/dist/components/Logo.js.map +0 -1
- package/dist/components/SectionLabel.d.ts.map +0 -1
- package/dist/components/SectionLabel.js.map +0 -1
- package/dist/components/Subtitle.d.ts.map +0 -1
- package/dist/components/Subtitle.js.map +0 -1
- package/dist/components/TypewriterText.d.ts.map +0 -1
- package/dist/components/TypewriterText.js.map +0 -1
- /package/dist/components/{AnimatedBackground.d.ts → backgrounds/AnimatedBackground.d.ts} +0 -0
- /package/dist/components/{AnimatedBackground.js → backgrounds/AnimatedBackground.js} +0 -0
- /package/dist/components/{Globe.d.ts → backgrounds/Globe.d.ts} +0 -0
- /package/dist/components/{Globe.js → backgrounds/Globe.js} +0 -0
- /package/dist/components/{GradientBackground.d.ts → backgrounds/GradientBackground.d.ts} +0 -0
- /package/dist/components/{GradientBackground.js → backgrounds/GradientBackground.js} +0 -0
- /package/dist/components/{Card.d.ts → cards/Card.d.ts} +0 -0
- /package/dist/components/{InputField.d.ts → inputs/InputField.d.ts} +0 -0
- /package/dist/components/{HeroText.d.ts → typography/HeroText.d.ts} +0 -0
- /package/dist/components/{HeroText.js → typography/HeroText.js} +0 -0
- /package/dist/components/{SectionLabel.d.ts → typography/SectionLabel.d.ts} +0 -0
- /package/dist/components/{SectionLabel.js → typography/SectionLabel.js} +0 -0
- /package/dist/components/{Subtitle.d.ts → typography/Subtitle.d.ts} +0 -0
- /package/dist/components/{Subtitle.js → typography/Subtitle.js} +0 -0
- /package/dist/components/{TypewriterText.d.ts → typography/TypewriterText.d.ts} +0 -0
- /package/dist/components/{TypewriterText.js → typography/TypewriterText.js} +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useId } from 'react';
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
|
+
export function ToggleOption({ label, description, checked: controlledChecked, defaultChecked = false, onChange, disabled = false, size = 'md', variant = 'primary', labelClassName = '', descriptionClassName = '', toggleClassName = '', containerClassName = '', layout = 'horizontal', icon, id: providedId, }) {
|
|
5
|
+
const [internalChecked, setInternalChecked] = useState(defaultChecked);
|
|
6
|
+
const reactId = useId();
|
|
7
|
+
const id = providedId ?? reactId;
|
|
8
|
+
const isChecked = controlledChecked !== undefined ? controlledChecked : internalChecked;
|
|
9
|
+
const handleToggle = () => {
|
|
10
|
+
if (disabled)
|
|
11
|
+
return;
|
|
12
|
+
const newValue = !isChecked;
|
|
13
|
+
if (controlledChecked === undefined) {
|
|
14
|
+
setInternalChecked(newValue);
|
|
15
|
+
}
|
|
16
|
+
onChange?.(newValue);
|
|
17
|
+
};
|
|
18
|
+
const sizeStyles = {
|
|
19
|
+
sm: {
|
|
20
|
+
toggle: 'w-8 h-5',
|
|
21
|
+
circle: 'w-3 h-3',
|
|
22
|
+
circleTranslate: 'translate-x-3.5',
|
|
23
|
+
label: 'text-sm',
|
|
24
|
+
description: 'text-[10px]',
|
|
25
|
+
gap: 'gap-2',
|
|
26
|
+
},
|
|
27
|
+
md: {
|
|
28
|
+
toggle: 'w-10 h-6',
|
|
29
|
+
circle: 'w-4 h-4',
|
|
30
|
+
circleTranslate: 'translate-x-4',
|
|
31
|
+
label: 'text-base',
|
|
32
|
+
description: 'text-xs',
|
|
33
|
+
gap: 'gap-3',
|
|
34
|
+
},
|
|
35
|
+
lg: {
|
|
36
|
+
toggle: 'w-12 h-7',
|
|
37
|
+
circle: 'w-5 h-5',
|
|
38
|
+
circleTranslate: 'translate-x-5',
|
|
39
|
+
label: 'text-lg',
|
|
40
|
+
description: 'text-sm',
|
|
41
|
+
gap: 'gap-4',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
const variantStyles = {
|
|
45
|
+
default: {
|
|
46
|
+
active: 'bg-white/20',
|
|
47
|
+
inactive: 'bg-white/10',
|
|
48
|
+
},
|
|
49
|
+
primary: {
|
|
50
|
+
active: 'bg-violet-600',
|
|
51
|
+
inactive: 'bg-white/10',
|
|
52
|
+
},
|
|
53
|
+
success: {
|
|
54
|
+
active: 'bg-green-600',
|
|
55
|
+
inactive: 'bg-white/10',
|
|
56
|
+
},
|
|
57
|
+
warning: {
|
|
58
|
+
active: 'bg-yellow-600',
|
|
59
|
+
inactive: 'bg-white/10',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
const layoutStyles = {
|
|
63
|
+
horizontal: 'flex-row items-center',
|
|
64
|
+
vertical: 'flex-col items-start',
|
|
65
|
+
};
|
|
66
|
+
return (_jsxs("div", { className: cn('flex', layoutStyles[layout], sizeStyles[size].gap, containerClassName), children: [_jsx("button", { type: "button", role: "switch", "aria-checked": isChecked, disabled: disabled, onClick: handleToggle, id: id, className: cn('relative inline-flex items-center rounded-full transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-violet-500 focus:ring-offset-2 focus:ring-offset-black', sizeStyles[size].toggle, isChecked
|
|
67
|
+
? variantStyles[variant].active
|
|
68
|
+
: variantStyles[variant].inactive, disabled && 'opacity-50 cursor-not-allowed', !disabled && 'cursor-pointer', toggleClassName), children: _jsx("span", { className: cn('inline-block rounded-full bg-white transform transition-transform duration-200', sizeStyles[size].circle, isChecked ? sizeStyles[size].circleTranslate : 'translate-x-1') }) }), _jsxs("div", { className: "flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [icon && _jsx("span", { className: "flex-shrink-0", children: icon }), _jsx("label", { htmlFor: id, className: cn('font-medium text-white cursor-pointer', sizeStyles[size].label, disabled && 'opacity-50 cursor-not-allowed', labelClassName), children: label })] }), description && (_jsx("p", { className: cn('text-gray-500 mt-1', sizeStyles[size].description, disabled && 'opacity-50', descriptionClassName), children: description }))] })] }));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=ToggleOption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleOption.js","sourceRoot":"","sources":["../../../src/components/inputs/ToggleOption.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface DividerProps {
|
|
3
|
+
text?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
lineClassName?: string;
|
|
6
|
+
textClassName?: string;
|
|
7
|
+
orientation?: 'horizontal' | 'vertical';
|
|
8
|
+
variant?: 'default' | 'light' | 'dark';
|
|
9
|
+
}
|
|
10
|
+
export declare const Divider: React.FC<DividerProps>;
|
|
11
|
+
//# sourceMappingURL=Divider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Divider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;CACxC;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA6D1C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../../lib/utils';
|
|
3
|
+
export const Divider = ({ text, className = '', lineClassName = '', textClassName = '', orientation = 'horizontal', variant = 'default', }) => {
|
|
4
|
+
const variantClasses = {
|
|
5
|
+
default: 'via-gray-800',
|
|
6
|
+
light: 'via-gray-700',
|
|
7
|
+
dark: 'via-gray-900',
|
|
8
|
+
};
|
|
9
|
+
const lineStyles = cn('bg-gradient-to-r from-transparent to-transparent opacity-50', variantClasses[variant], orientation === 'horizontal' ? 'h-px w-full' : 'w-px h-full', lineClassName);
|
|
10
|
+
if (orientation === 'vertical') {
|
|
11
|
+
return (_jsxs("div", { className: cn('flex flex-col items-center gap-3 px-2 h-full', className), children: [_jsx("div", { className: lineStyles }), text && (_jsx("span", { className: cn('text-[10px] uppercase tracking-widest text-gray-600 font-medium shrink-0 [writing-mode:vertical-rl]', textClassName), children: text })), _jsx("div", { className: lineStyles })] }));
|
|
12
|
+
}
|
|
13
|
+
return (_jsxs("div", { className: cn('flex items-center gap-3 py-2 w-full', className), children: [_jsx("div", { className: lineStyles }), text && (_jsx("span", { className: cn('text-[10px] uppercase tracking-widest text-gray-600 font-medium shrink-0', textClassName), children: text })), _jsx("div", { className: lineStyles })] }));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sourceRoot":"","sources":["../../../src/components/layout/Divider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAWrC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAC9C,IAAI,EACJ,SAAS,GAAG,EAAE,EACd,aAAa,GAAG,EAAE,EAClB,aAAa,GAAG,EAAE,EAClB,WAAW,GAAG,YAAY,EAC1B,OAAO,GAAG,SAAS,GACpB,EAAE,EAAE;IACH,MAAM,cAAc,GAAG;QACrB,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;KACrB,CAAC;IAEF,MAAM,UAAU,GAAG,EAAE,CACnB,6DAA6D,EAC7D,cAAc,CAAC,OAAO,CAAC,EACvB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAC5D,aAAa,CACd,CAAC;IAEF,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,8CAA8C,EAC9C,SAAS,CACV,aAED,cAAK,SAAS,EAAE,UAAU,GAAQ,EACjC,IAAI,IAAI,CACP,eACE,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,aAAa,CACd,YAEA,IAAI,GACA,CACR,EACD,cAAK,SAAS,EAAE,UAAU,GAAQ,IAC9B,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qCAAqC,EAAE,SAAS,CAAC,aAClE,cAAK,SAAS,EAAE,UAAU,GAAQ,EACjC,IAAI,IAAI,CACP,eACE,SAAS,EAAE,EAAE,CACX,0EAA0E,EAC1E,aAAa,CACd,YAEA,IAAI,GACA,CACR,EACD,cAAK,SAAS,EAAE,UAAU,GAAQ,IAC9B,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface FooterLink {
|
|
3
|
+
text: string;
|
|
4
|
+
href: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
target?: string;
|
|
7
|
+
rel?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FooterProps {
|
|
10
|
+
className?: string;
|
|
11
|
+
containerClassName?: string;
|
|
12
|
+
showInviteSection?: boolean;
|
|
13
|
+
inviteContent?: React.ReactNode;
|
|
14
|
+
invitePrefix?: string;
|
|
15
|
+
inviteText?: string;
|
|
16
|
+
inviteHref?: string;
|
|
17
|
+
inviteLinkClassName?: string;
|
|
18
|
+
inviteSpanClassName?: string;
|
|
19
|
+
inviteSectionClassName?: string;
|
|
20
|
+
onInviteClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;
|
|
21
|
+
showTermsSection?: boolean;
|
|
22
|
+
termsContent?: React.ReactNode;
|
|
23
|
+
termsPrefix?: string;
|
|
24
|
+
termsLinks?: FooterLink[];
|
|
25
|
+
termsSectionClassName?: string;
|
|
26
|
+
termsTextClassName?: string;
|
|
27
|
+
termsLinkClassName?: string;
|
|
28
|
+
termsSeparator?: string;
|
|
29
|
+
beforeContent?: React.ReactNode;
|
|
30
|
+
afterContent?: React.ReactNode;
|
|
31
|
+
children?: React.ReactNode;
|
|
32
|
+
layout?: 'vertical' | 'horizontal';
|
|
33
|
+
gap?: string;
|
|
34
|
+
align?: 'left' | 'center' | 'right';
|
|
35
|
+
}
|
|
36
|
+
export declare function Footer({ className, containerClassName, showInviteSection, inviteContent, invitePrefix, inviteText, inviteHref, inviteLinkClassName, inviteSpanClassName, inviteSectionClassName, onInviteClick, showTermsSection, termsContent, termsPrefix, termsLinks, termsSectionClassName, termsTextClassName, termsLinkClassName, termsSeparator, beforeContent, afterContent, children, layout, gap, align, }: FooterProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=Footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Footer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAE1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAGjE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAG3B,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,wBAAgB,MAAM,CAAC,EAErB,SAAc,EACd,kBAAuB,EAGvB,iBAAwB,EACxB,aAAa,EACb,YAAgC,EAChC,UAAgC,EAChC,UAAgB,EAChB,mBAAwB,EACxB,mBAAwB,EACxB,sBAA2B,EAC3B,aAAa,EAGb,gBAAuB,EACvB,YAAY,EACZ,WAAoD,EACpD,UAGC,EACD,qBAA0B,EAC1B,kBAAuB,EACvB,kBAAuB,EACvB,cAAsB,EAGtB,aAAa,EACb,YAAY,EACZ,QAAQ,EAGR,MAAmB,EACnB,GAAa,EACb,KAAgB,GACjB,EAAE,WAAW,2CA+Gb"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
|
+
export function Footer({
|
|
5
|
+
// Container
|
|
6
|
+
className = '', containerClassName = '',
|
|
7
|
+
// Invite section
|
|
8
|
+
showInviteSection = true, inviteContent, invitePrefix = 'Have an invite?', inviteText = 'Accept invitation', inviteHref = '#', inviteLinkClassName = '', inviteSpanClassName = '', inviteSectionClassName = '', onInviteClick,
|
|
9
|
+
// Terms section
|
|
10
|
+
showTermsSection = true, termsContent, termsPrefix = 'By creating an account, you agree to', termsLinks = [
|
|
11
|
+
{ text: 'Terms', href: '#' },
|
|
12
|
+
{ text: 'Privacy Policy', href: '#' },
|
|
13
|
+
], termsSectionClassName = '', termsTextClassName = '', termsLinkClassName = '', termsSeparator = 'and',
|
|
14
|
+
// Additional content
|
|
15
|
+
beforeContent, afterContent, children,
|
|
16
|
+
// Layout
|
|
17
|
+
layout = 'vertical', gap = 'gap-2', align = 'center', }) {
|
|
18
|
+
const alignmentClasses = {
|
|
19
|
+
left: 'text-left items-start',
|
|
20
|
+
center: 'text-center items-center',
|
|
21
|
+
right: 'text-right items-end',
|
|
22
|
+
};
|
|
23
|
+
const layoutClasses = {
|
|
24
|
+
vertical: 'flex-col',
|
|
25
|
+
horizontal: 'flex-row flex-wrap justify-center',
|
|
26
|
+
};
|
|
27
|
+
const renderInviteSection = () => {
|
|
28
|
+
if (!showInviteSection)
|
|
29
|
+
return null;
|
|
30
|
+
if (inviteContent) {
|
|
31
|
+
return _jsx("div", { className: inviteSectionClassName, children: inviteContent });
|
|
32
|
+
}
|
|
33
|
+
const isExternal = inviteHref.startsWith('http://') || inviteHref.startsWith('https://');
|
|
34
|
+
return (_jsxs("a", { href: inviteHref, onClick: onInviteClick, className: cn('text-xs text-gray-400 hover:text-white transition-colors', layout === 'vertical' && 'mb-2', inviteLinkClassName), ...(isExternal && {
|
|
35
|
+
target: '_blank',
|
|
36
|
+
rel: 'noopener noreferrer',
|
|
37
|
+
}), children: [invitePrefix, ' ', _jsx("span", { className: cn('text-violet-400 hover:text-violet-300', inviteSpanClassName), children: inviteText })] }));
|
|
38
|
+
};
|
|
39
|
+
const renderTermsSection = () => {
|
|
40
|
+
if (!showTermsSection)
|
|
41
|
+
return null;
|
|
42
|
+
if (termsContent) {
|
|
43
|
+
return _jsx("div", { className: termsSectionClassName, children: termsContent });
|
|
44
|
+
}
|
|
45
|
+
return (_jsxs("p", { className: cn('text-[10px] text-gray-600 max-w-sm leading-relaxed', layout === 'horizontal' && 'mx-0', layout === 'vertical' && 'mx-auto', termsTextClassName), children: [termsPrefix, ' ', termsLinks.map((link, index) => (_jsxs(React.Fragment, { children: [_jsx("a", { className: cn('hover:text-gray-400 underline decoration-gray-800 underline-offset-2 transition-colors', termsLinkClassName, link.className), href: link.href, target: link.target, rel: link.rel, children: link.text }), index < termsLinks.length - 1 && (_jsx("span", { children: index === termsLinks.length - 2 ? ` ${termsSeparator} ` : ', ' }))] }, index))), "."] }));
|
|
46
|
+
};
|
|
47
|
+
return (_jsx("footer", { className: cn('w-full py-8 z-10 relative', alignmentClasses[align], className), children: _jsxs("div", { className: cn('flex', layoutClasses[layout], gap, containerClassName), children: [beforeContent, renderInviteSection(), renderTermsSection(), children, afterContent] }) }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=Footer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../src/components/layout/Footer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.d.ts","sourceRoot":"","sources":["../../../src/components/layout/FormSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqBlD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { motion, useReducedMotion } from 'framer-motion';
|
|
3
|
+
export const FormSection = ({ title, children, delay = 0, className = '', }) => {
|
|
4
|
+
const shouldReduceMotion = useReducedMotion();
|
|
5
|
+
return (_jsxs(motion.div, { className: `flex flex-col gap-5 ${className}`, initial: shouldReduceMotion ? {} : { opacity: 0, y: 20 }, animate: shouldReduceMotion ? {} : { opacity: 1, y: 0 }, transition: shouldReduceMotion ? {} : { duration: 0.5, delay }, children: [_jsx("h3", { className: "text-xs font-medium text-violet-400 uppercase tracking-wider pl-1", children: title }), _jsx("div", { className: "flex flex-col gap-4", children: children })] }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=FormSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormSection.js","sourceRoot":"","sources":["../../../src/components/layout/FormSection.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AASzD,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,KAAK,EACL,QAAQ,EACR,KAAK,GAAG,CAAC,EACT,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG,gBAAgB,EAAE,CAAC;IAE9C,OAAO,CACL,MAAC,MAAM,CAAC,GAAG,IACT,SAAS,EAAE,uBAAuB,SAAS,EAAE,EAC7C,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EACxD,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EACvD,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,aAE9D,aAAI,SAAS,EAAC,mEAAmE,YAC9E,KAAK,GACH,EACL,cAAK,SAAS,EAAC,qBAAqB,YAAE,QAAQ,GAAO,IAC1C,CACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface LinkGroupItem {
|
|
2
|
+
label: string;
|
|
3
|
+
href: string;
|
|
4
|
+
variant?: 'primary' | 'secondary' | 'muted';
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export interface LinkGroupProps {
|
|
8
|
+
links: LinkGroupItem[];
|
|
9
|
+
divider?: 'dot' | 'line' | 'none';
|
|
10
|
+
spacing?: 'sm' | 'md' | 'lg';
|
|
11
|
+
size?: 'xs' | 'sm' | 'md' | 'lg';
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function LinkGroup({ links, divider, spacing, size, className, }: LinkGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=LinkGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkGroup.d.ts","sourceRoot":"","sources":["../../../src/components/layout/LinkGroup.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAClC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2BD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAe,EACf,OAAc,EACd,IAAW,EACX,SAAc,GACf,EAAE,cAAc,2CA6BhB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
|
+
const variantStyles = {
|
|
5
|
+
primary: 'text-gray-400 hover:text-white',
|
|
6
|
+
secondary: 'text-gray-500 hover:text-gray-300',
|
|
7
|
+
muted: 'text-gray-600 hover:text-gray-400',
|
|
8
|
+
};
|
|
9
|
+
const sizeStyles = {
|
|
10
|
+
xs: 'text-xs',
|
|
11
|
+
sm: 'text-sm',
|
|
12
|
+
md: 'text-base',
|
|
13
|
+
lg: 'text-lg',
|
|
14
|
+
};
|
|
15
|
+
const spacingStyles = {
|
|
16
|
+
sm: 'gap-3',
|
|
17
|
+
md: 'gap-6',
|
|
18
|
+
lg: 'gap-8',
|
|
19
|
+
};
|
|
20
|
+
const dividerStyles = {
|
|
21
|
+
dot: 'w-1 h-1 rounded-full bg-white/10',
|
|
22
|
+
line: 'w-px h-4 bg-white/10',
|
|
23
|
+
none: 'hidden',
|
|
24
|
+
};
|
|
25
|
+
export function LinkGroup({ links, divider = 'dot', spacing = 'md', size = 'sm', className = '', }) {
|
|
26
|
+
return (_jsx("div", { className: cn('flex items-center', spacingStyles[spacing], sizeStyles[size], className), children: links.map((link, index) => (_jsxs(React.Fragment, { children: [_jsx("a", { href: link.href, onClick: link.onClick, className: cn(variantStyles[link.variant || 'primary'], 'transition-colors'), children: link.label }), index < links.length - 1 && divider !== 'none' && (_jsx("span", { className: dividerStyles[divider], "aria-hidden": "true" }))] }, link.href))) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=LinkGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkGroup.js","sourceRoot":"","sources":["../../../src/components/layout/LinkGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAiBrC,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,gCAAgC;IACzC,SAAS,EAAE,mCAAmC;IAC9C,KAAK,EAAE,mCAAmC;CAC3C,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,WAAW;IACf,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;CACZ,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,GAAG,EAAE,kCAAkC;IACvC,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,QAAQ;CACf,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,IAAI,EACd,IAAI,GAAG,IAAI,EACX,SAAS,GAAG,EAAE,GACC;IACf,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CACX,mBAAmB,EACnB,aAAa,CAAC,OAAO,CAAC,EACtB,UAAU,CAAC,IAAI,CAAC,EAChB,SAAS,CACV,YAEA,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,KAAK,CAAC,QAAQ,eACb,YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,EAAE,CACX,aAAa,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,EACxC,mBAAmB,CACpB,YAEA,IAAI,CAAC,KAAK,GACT,EACH,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,MAAM,IAAI,CACjD,eAAM,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,iBAAc,MAAM,GAAG,CAC/D,KAbkB,IAAI,CAAC,IAAI,CAcb,CAClB,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type LogoProps } from '../display/Logo';
|
|
3
|
+
export interface NavbarProps {
|
|
4
|
+
logo?: {
|
|
5
|
+
text?: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
src?: string;
|
|
8
|
+
alt?: string;
|
|
9
|
+
logoProps?: Partial<LogoProps>;
|
|
10
|
+
};
|
|
11
|
+
rightContent?: React.ReactNode;
|
|
12
|
+
centerContent?: React.ReactNode;
|
|
13
|
+
variant?: 'default' | 'centered';
|
|
14
|
+
animate?: boolean;
|
|
15
|
+
className?: string;
|
|
16
|
+
containerClassName?: string;
|
|
17
|
+
logoContainerClassName?: string;
|
|
18
|
+
rightContentClassName?: string;
|
|
19
|
+
centerContentClassName?: string;
|
|
20
|
+
maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '7xl' | 'full';
|
|
21
|
+
linkComponent?: React.ElementType;
|
|
22
|
+
}
|
|
23
|
+
export declare function Navbar({ variant, ...props }: NavbarProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export interface NavLinkProps {
|
|
25
|
+
href: string;
|
|
26
|
+
children: React.ReactNode;
|
|
27
|
+
className?: string;
|
|
28
|
+
variant?: 'primary' | 'secondary' | 'ghost';
|
|
29
|
+
linkComponent?: React.ElementType;
|
|
30
|
+
}
|
|
31
|
+
export declare const NavLink: React.FC<NavLinkProps>;
|
|
32
|
+
//# sourceMappingURL=Navbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Navbar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGvD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;KAChC,CAAC;IACF,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC9D,aAAa,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACnC;AAoJD,wBAAgB,MAAM,CAAC,EAAE,OAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CAMpE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,aAAa,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACnC;AAED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAyB1C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { motion } from 'framer-motion';
|
|
4
|
+
import { Logo } from '../display/Logo';
|
|
5
|
+
import { cn } from '../../lib/utils';
|
|
6
|
+
const MAX_WIDTH_CLASSES = {
|
|
7
|
+
sm: 'max-w-sm',
|
|
8
|
+
md: 'max-w-md',
|
|
9
|
+
lg: 'max-w-lg',
|
|
10
|
+
xl: 'max-w-xl',
|
|
11
|
+
'2xl': 'max-w-2xl',
|
|
12
|
+
'7xl': 'max-w-7xl',
|
|
13
|
+
full: 'max-w-full',
|
|
14
|
+
};
|
|
15
|
+
function CenteredNavbar({ logo, rightContent, centerContent, animate, className, containerClassName, logoContainerClassName, rightContentClassName, centerContentClassName, maxWidth = '7xl', linkComponent: LinkComponent = 'a', }) {
|
|
16
|
+
return (_jsxs(motion.nav, { className: cn('w-full flex items-center px-6 py-6 z-10 relative mx-auto', MAX_WIDTH_CLASSES[maxWidth], containerClassName, className), initial: animate ? { opacity: 0, y: -20 } : {}, animate: animate ? { opacity: 1, y: 0 } : {}, transition: { duration: 0.8, ease: 'easeOut' }, children: [_jsx(motion.div, { initial: animate ? { opacity: 0, x: -20 } : {}, animate: animate ? { opacity: 1, x: 0 } : {}, transition: { duration: 0.6, ease: 'easeOut' }, children: _jsx(LinkComponent, { href: logo?.href || '/', className: cn('flex items-center gap-3', logoContainerClassName), children: _jsx(Logo, { src: logo?.src || '/favicon.webp', alt: logo?.alt || 'Logo', text: logo?.text, position: "static", disableAnimation: !animate, ...logo?.logoProps }) }) }), centerContent && (_jsx(motion.div, { className: cn('absolute left-1/2 -translate-x-1/2 flex items-center gap-12', centerContentClassName), initial: animate ? { opacity: 0, y: -10 } : {}, animate: animate ? { opacity: 1, y: 0 } : {}, transition: { duration: 0.6, delay: 0.2, ease: 'easeOut' }, children: centerContent })), rightContent && (_jsx(motion.div, { className: cn('ml-auto flex items-center gap-4 h-fit', rightContentClassName), initial: animate ? { opacity: 0, x: 20 } : {}, animate: animate ? { opacity: 1, x: 0 } : {}, transition: { duration: 0.6, delay: 0.3, ease: 'easeOut' }, children: rightContent }))] }));
|
|
17
|
+
}
|
|
18
|
+
function DefaultNavbar({ logo, rightContent, animate, className, containerClassName, logoContainerClassName, rightContentClassName, maxWidth = '7xl', linkComponent: LinkComponent = 'a', }) {
|
|
19
|
+
return (_jsxs(motion.nav, { className: cn('w-full flex justify-between items-center px-6 py-6 z-10 relative mx-auto', MAX_WIDTH_CLASSES[maxWidth], containerClassName, className), initial: animate ? { opacity: 0, y: -20 } : {}, animate: animate ? { opacity: 1, y: 0 } : {}, transition: { duration: 0.8, ease: 'easeOut' }, children: [_jsx(motion.div, { initial: animate ? { opacity: 0, x: -20 } : {}, animate: animate ? { opacity: 1, x: 0 } : {}, transition: { duration: 0.6, ease: 'easeOut' }, children: _jsx(LinkComponent, { href: logo?.href || '/', className: cn('flex items-center gap-3', logoContainerClassName), children: _jsx(Logo, { src: logo?.src || '/favicon.webp', alt: logo?.alt || 'Logo', text: logo?.text, position: "static", disableAnimation: !animate, ...logo?.logoProps }) }) }), rightContent && (_jsx(motion.div, { className: cn('flex items-center gap-4 text-sm h-fit', rightContentClassName), initial: animate ? { opacity: 0, x: 20 } : {}, animate: animate ? { opacity: 1, x: 0 } : {}, transition: { duration: 0.6, delay: 0.2, ease: 'easeOut' }, children: rightContent }))] }));
|
|
20
|
+
}
|
|
21
|
+
export function Navbar({ variant = 'default', ...props }) {
|
|
22
|
+
if (variant === 'centered') {
|
|
23
|
+
return _jsx(CenteredNavbar, { variant: variant, ...props });
|
|
24
|
+
}
|
|
25
|
+
return _jsx(DefaultNavbar, { variant: variant, ...props });
|
|
26
|
+
}
|
|
27
|
+
export const NavLink = ({ href, children, className = '', variant = 'primary', linkComponent: LinkComponent = 'a', }) => {
|
|
28
|
+
const variantClasses = {
|
|
29
|
+
primary: 'text-white hover:text-violet-400',
|
|
30
|
+
secondary: 'text-purple-400 hover:text-purple-200',
|
|
31
|
+
ghost: 'text-gray-400 hover:text-white',
|
|
32
|
+
};
|
|
33
|
+
return (_jsx(LinkComponent, { href: href, className: cn('transition-colors font-medium flex items-center', variantClasses[variant], className), children: children }));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=Navbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Navbar.js","sourceRoot":"","sources":["../../../src/components/layout/Navbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface PageHeaderProps {
|
|
3
|
+
label?: string;
|
|
4
|
+
title: string | ReactNode;
|
|
5
|
+
description?: string | ReactNode;
|
|
6
|
+
showDivider?: boolean;
|
|
7
|
+
align?: 'left' | 'center' | 'right';
|
|
8
|
+
size?: 'sm' | 'md' | 'lg';
|
|
9
|
+
animate?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
labelClassName?: string;
|
|
12
|
+
titleClassName?: string;
|
|
13
|
+
descriptionClassName?: string;
|
|
14
|
+
dividerClassName?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function PageHeader({ label, title, description, showDivider, align, size, animate, className, labelClassName, titleClassName, descriptionClassName, dividerClassName, }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=PageHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAkB,EAClB,KAAgB,EAChB,IAAW,EACX,OAAc,EACd,SAAc,EACd,cAAmB,EACnB,cAAmB,EACnB,oBAAyB,EACzB,gBAAqB,GACtB,EAAE,eAAe,2CAgJjB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { motion } from 'framer-motion';
|
|
4
|
+
import { cn } from '../../lib/utils';
|
|
5
|
+
export function PageHeader({ label, title, description, showDivider = true, align = 'center', size = 'md', animate = true, className = '', labelClassName = '', titleClassName = '', descriptionClassName = '', dividerClassName = '', }) {
|
|
6
|
+
const alignmentClasses = {
|
|
7
|
+
left: 'items-start text-left',
|
|
8
|
+
center: 'items-center text-center',
|
|
9
|
+
right: 'items-end text-right',
|
|
10
|
+
};
|
|
11
|
+
const sizeClasses = {
|
|
12
|
+
sm: {
|
|
13
|
+
title: 'text-xl md:text-2xl',
|
|
14
|
+
description: 'text-xs max-w-sm',
|
|
15
|
+
label: 'text-[9px] mb-2',
|
|
16
|
+
},
|
|
17
|
+
md: {
|
|
18
|
+
title: 'text-2xl md:text-3xl',
|
|
19
|
+
description: 'text-xs max-w-xs',
|
|
20
|
+
label: 'text-[10px] mb-3',
|
|
21
|
+
},
|
|
22
|
+
lg: {
|
|
23
|
+
title: 'text-3xl md:text-4xl',
|
|
24
|
+
description: 'text-sm max-w-md',
|
|
25
|
+
label: 'text-[11px] mb-4',
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
const Container = animate ? motion.div : 'div';
|
|
29
|
+
const Label = animate ? motion.span : 'span';
|
|
30
|
+
const Title = animate ? motion.h1 : 'h1';
|
|
31
|
+
const Description = animate ? motion.p : 'p';
|
|
32
|
+
const Divider = animate ? motion.div : 'div';
|
|
33
|
+
const containerProps = animate
|
|
34
|
+
? {
|
|
35
|
+
initial: { opacity: 0, y: 20 },
|
|
36
|
+
animate: { opacity: 1, y: 0 },
|
|
37
|
+
transition: { duration: 0.6, ease: [0.4, 0, 0.2, 1] },
|
|
38
|
+
}
|
|
39
|
+
: {};
|
|
40
|
+
const labelProps = animate
|
|
41
|
+
? {
|
|
42
|
+
initial: { opacity: 0, y: -10 },
|
|
43
|
+
animate: { opacity: 1, y: 0 },
|
|
44
|
+
transition: {
|
|
45
|
+
duration: 0.5,
|
|
46
|
+
delay: 0.1,
|
|
47
|
+
ease: [0.4, 0, 0.2, 1],
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
: {};
|
|
51
|
+
const titleProps = animate
|
|
52
|
+
? {
|
|
53
|
+
initial: { opacity: 0, y: -10 },
|
|
54
|
+
animate: { opacity: 1, y: 0 },
|
|
55
|
+
transition: {
|
|
56
|
+
duration: 0.5,
|
|
57
|
+
delay: 0.2,
|
|
58
|
+
ease: [0.4, 0, 0.2, 1],
|
|
59
|
+
},
|
|
60
|
+
}
|
|
61
|
+
: {};
|
|
62
|
+
const descriptionProps = animate
|
|
63
|
+
? {
|
|
64
|
+
initial: { opacity: 0, y: -10 },
|
|
65
|
+
animate: { opacity: 1, y: 0 },
|
|
66
|
+
transition: {
|
|
67
|
+
duration: 0.5,
|
|
68
|
+
delay: 0.3,
|
|
69
|
+
ease: [0.4, 0, 0.2, 1],
|
|
70
|
+
},
|
|
71
|
+
}
|
|
72
|
+
: {};
|
|
73
|
+
const dividerProps = animate
|
|
74
|
+
? {
|
|
75
|
+
initial: { scaleX: 0 },
|
|
76
|
+
animate: { scaleX: 1 },
|
|
77
|
+
transition: {
|
|
78
|
+
duration: 0.5,
|
|
79
|
+
delay: 0.4,
|
|
80
|
+
ease: [0.4, 0, 0.2, 1],
|
|
81
|
+
},
|
|
82
|
+
}
|
|
83
|
+
: {};
|
|
84
|
+
return (_jsxs(Container, { className: cn('mb-6 flex flex-col', alignmentClasses[align], className), ...containerProps, children: [label && (_jsx(Label, { className: cn('text-violet-400 font-bold tracking-[0.2em] uppercase', sizeClasses[size].label, labelClassName), ...labelProps, children: label })), _jsx(Title, { className: cn('font-semibold text-white mb-2 tracking-tight', sizeClasses[size].title, titleClassName), ...titleProps, children: title }), description && (_jsx(Description, { className: cn('text-gray-500 mx-auto leading-relaxed', sizeClasses[size].description, align === 'left' && 'mx-0', align === 'right' && 'mx-0 ml-auto', descriptionClassName), ...descriptionProps, children: description })), showDivider && (_jsx(Divider, { className: cn('w-10 h-0.5 bg-gradient-to-r from-violet-600 to-purple-900 rounded-full mt-4 opacity-80', align === 'left' && 'mr-auto', align === 'right' && 'ml-auto', dividerClassName), ...dividerProps }))] }));
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=PageHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.js","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SegmentedControlOption<T extends string = string> {
|
|
2
|
+
label: string;
|
|
3
|
+
value: T;
|
|
4
|
+
}
|
|
5
|
+
export interface SegmentedControlProps<T extends string = string> {
|
|
6
|
+
options: [SegmentedControlOption<T>, SegmentedControlOption<T>];
|
|
7
|
+
defaultValue?: T;
|
|
8
|
+
value?: T;
|
|
9
|
+
onChange?: (value: T) => void;
|
|
10
|
+
label?: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
size?: 'sm' | 'md' | 'lg';
|
|
14
|
+
}
|
|
15
|
+
export declare function SegmentedControl<T extends string = string>({ options, defaultValue, value: controlledValue, onChange, label, description, className, size, }: SegmentedControlProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=SegmentedControl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/layout/SegmentedControl.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC9D,OAAO,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC1D,OAAO,EACP,YAAY,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,SAAc,EACd,IAAW,GACZ,EAAE,qBAAqB,CAAC,CAAC,CAAC,2CAoE1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { cn } from '../../lib/utils';
|
|
4
|
+
export function SegmentedControl({ options, defaultValue, value: controlledValue, onChange, label, description, className = '', size = 'md', }) {
|
|
5
|
+
const [internalValue, setInternalValue] = useState(defaultValue ?? options[0].value);
|
|
6
|
+
const selected = controlledValue ?? internalValue;
|
|
7
|
+
const handleToggle = (value) => {
|
|
8
|
+
if (controlledValue === undefined) {
|
|
9
|
+
setInternalValue(value);
|
|
10
|
+
}
|
|
11
|
+
onChange?.(value);
|
|
12
|
+
};
|
|
13
|
+
const sizeStyles = {
|
|
14
|
+
sm: 'px-3 py-1 text-xs',
|
|
15
|
+
md: 'px-5 py-1.5 text-sm',
|
|
16
|
+
lg: 'px-7 py-2 text-base',
|
|
17
|
+
};
|
|
18
|
+
return (_jsxs("div", { className: cn('flex flex-col items-center gap-2', className), children: [label && (_jsx("span", { className: "text-xs uppercase tracking-wider text-gray-500 font-medium", children: label })), _jsxs("div", { role: "radiogroup", "aria-label": label, className: "flex items-center bg-white/[0.03] border border-white/10 rounded-full p-1 relative", children: [_jsx("button", { type: "button", role: "radio", "aria-checked": selected === options[0].value, onClick: () => handleToggle(options[0].value), className: cn('font-medium transition-colors rounded-full relative z-10', sizeStyles[size], selected === options[0].value
|
|
19
|
+
? 'text-white bg-white/10 shadow-sm'
|
|
20
|
+
: 'text-gray-400 hover:text-white'), children: options[0].label }), _jsx("button", { type: "button", role: "radio", "aria-checked": selected === options[1].value, onClick: () => handleToggle(options[1].value), className: cn('font-medium transition-colors rounded-full relative z-10', sizeStyles[size], selected === options[1].value
|
|
21
|
+
? 'text-white bg-white/10 shadow-sm'
|
|
22
|
+
: 'text-gray-400 hover:text-white'), children: options[1].label })] }), description && (_jsx("span", { className: "text-[10px] text-violet-400/80", children: description }))] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SegmentedControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentedControl.js","sourceRoot":"","sources":["../../../src/components/layout/SegmentedControl.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAkBrC,MAAM,UAAU,gBAAgB,CAA4B,EAC1D,OAAO,EACP,YAAY,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,SAAS,GAAG,EAAE,EACd,IAAI,GAAG,IAAI,GACc;IACzB,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CACjC,CAAC;IAEF,MAAM,QAAQ,GAAG,eAAe,IAAI,aAAa,CAAC;IAElD,MAAM,YAAY,GAAG,CAAC,KAAQ,EAAE,EAAE;QAChC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,mBAAmB;QACvB,EAAE,EAAE,qBAAqB;QACzB,EAAE,EAAE,qBAAqB;KAC1B,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,aAC9D,KAAK,IAAI,CACR,eAAM,SAAS,EAAC,4DAA4D,YACzE,KAAK,GACD,CACR,EACD,eACE,IAAI,EAAC,YAAY,gBACL,KAAK,EACjB,SAAS,EAAC,oFAAoF,aAE9F,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAC7C,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,UAAU,CAAC,IAAI,CAAC,EAChB,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;4BAC3B,CAAC,CAAC,kCAAkC;4BACpC,CAAC,CAAC,gCAAgC,CACrC,YAEA,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GACV,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAC7C,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,UAAU,CAAC,IAAI,CAAC,EAChB,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;4BAC3B,CAAC,CAAC,kCAAkC;4BACpC,CAAC,CAAC,gCAAgC,CACrC,YAEA,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GACV,IACL,EACL,WAAW,IAAI,CACd,eAAM,SAAS,EAAC,gCAAgC,YAAE,WAAW,GAAQ,CACtE,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroText.d.ts","sourceRoot":"","sources":["../../../src/components/typography/HeroText.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,QAA2I,GAC5I,EAAE,aAAa,2CA2Bf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeroText.js","sourceRoot":"","sources":["../../../src/components/typography/HeroText.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,MAAM,UAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,QAAQ,GAAG,gIAAgI,GAC7H;IACd,OAAO,CACL,KAAC,MAAM,CAAC,EAAE,IACR,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAC9B,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAC7B,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EACxD,KAAK,EAAE;YACL,QAAQ,EAAE,0BAA0B;YACpC,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EAAE,QAAQ;YACpB,oBAAoB,EAAE,MAAM;YAC5B,cAAc,EAAE,MAAM;YACtB,mBAAmB,EAAE,aAAa;YAClC,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,CAAC;YACV,UAAU,EACR,2FAA2F;YAC7F,MAAM,EAAE,6CAA6C;SACtD,YAEA,IAAI,GACK,CACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionLabel.d.ts","sourceRoot":"","sources":["../../../src/components/typography/SectionLabel.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAc,EACd,OAAc,GACf,EAAE,iBAAiB,2CAuBnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionLabel.js","sourceRoot":"","sources":["../../../src/components/typography/SectionLabel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQvC,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,GAAG,EAAE,EACd,OAAO,GAAG,IAAI,GACI;IAClB,MAAM,OAAO,GAAG,CACd,eACE,SAAS,EAAE,kDAAkD,SAAS,EAAE,mBAErE,KAAK,UACJ,CACP,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,CACL,KAAC,MAAM,CAAC,GAAG,IACT,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAC/B,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EACxB,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAE5B,OAAO,GACG,CACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Subtitle.d.ts","sourceRoot":"","sources":["../../../src/components/typography/Subtitle.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAuBnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Subtitle.js","sourceRoot":"","sources":["../../../src/components/typography/Subtitle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAiB;IAClD,OAAO,CACL,KAAC,MAAM,CAAC,CAAC,IACP,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,EACxD,KAAK,EAAE;YACL,QAAQ,EAAE,8BAA8B;YACxC,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,2BAA2B;YAClC,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,OAAO;YACjB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,GAAG;YACf,aAAa,EAAE,QAAQ;YACvB,UAAU,EACR,2FAA2F;SAC9F,YAEA,QAAQ,GACA,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypewriterText.d.ts","sourceRoot":"","sources":["../../../src/components/typography/TypewriterText.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,EAAE,mBAAmB,2CA+E3D"}
|