@aws505/sheetsite 1.0.0 → 1.0.2
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/index.js +27 -22
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +28 -22
- package/dist/components/index.mjs.map +1 -1
- package/dist/index.js +26 -22
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +26 -22
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/layout/Footer.tsx +4 -4
- package/src/components/layout/Header.tsx +4 -4
- package/src/components/sections/FAQ.tsx +5 -3
- package/src/components/sections/Hours.tsx +5 -3
- package/src/components/sections/Services.tsx +5 -3
- package/src/components/sections/Testimonials.tsx +3 -1
package/package.json
CHANGED
|
@@ -33,10 +33,10 @@ export interface FooterProps {
|
|
|
33
33
|
|
|
34
34
|
const defaultQuickLinks: FooterLink[] = [
|
|
35
35
|
{ label: 'Home', href: '/' },
|
|
36
|
-
{ label: 'Services', href: '
|
|
37
|
-
{ label: '
|
|
38
|
-
{ label: '
|
|
39
|
-
{ label: '
|
|
36
|
+
{ label: 'Services', href: '/#services' },
|
|
37
|
+
{ label: 'Hours', href: '/#hours' },
|
|
38
|
+
{ label: 'Reviews', href: '/#reviews' },
|
|
39
|
+
{ label: 'FAQ', href: '/#faq' },
|
|
40
40
|
];
|
|
41
41
|
|
|
42
42
|
const dayNames: Record<string, string> = {
|
|
@@ -26,10 +26,10 @@ export interface HeaderProps {
|
|
|
26
26
|
|
|
27
27
|
const defaultNavigation: NavItem[] = [
|
|
28
28
|
{ label: 'Home', href: '/' },
|
|
29
|
-
{ label: 'Services', href: '
|
|
30
|
-
{ label: '
|
|
31
|
-
{ label: '
|
|
32
|
-
{ label: '
|
|
29
|
+
{ label: 'Services', href: '/#services' },
|
|
30
|
+
{ label: 'Hours', href: '/#hours' },
|
|
31
|
+
{ label: 'Reviews', href: '/#reviews' },
|
|
32
|
+
{ label: 'FAQ', href: '/#faq' },
|
|
33
33
|
];
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -18,6 +18,7 @@ export interface FAQProps {
|
|
|
18
18
|
defaultOpen?: number | number[];
|
|
19
19
|
allowMultiple?: boolean;
|
|
20
20
|
className?: string;
|
|
21
|
+
id?: string;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -31,6 +32,7 @@ export function FAQ({
|
|
|
31
32
|
defaultOpen = 0,
|
|
32
33
|
allowMultiple = false,
|
|
33
34
|
className = '',
|
|
35
|
+
id = 'faq',
|
|
34
36
|
}: FAQProps) {
|
|
35
37
|
const initialOpen = Array.isArray(defaultOpen) ? defaultOpen : [defaultOpen];
|
|
36
38
|
const [openItems, setOpenItems] = useState<number[]>(initialOpen);
|
|
@@ -51,7 +53,7 @@ export function FAQ({
|
|
|
51
53
|
|
|
52
54
|
if (variant === 'cards') {
|
|
53
55
|
return (
|
|
54
|
-
<section className={`py-16 ${className}`}>
|
|
56
|
+
<section id={id} className={`py-16 ${className}`}>
|
|
55
57
|
<div className="container mx-auto px-4">
|
|
56
58
|
<SectionHeader title={title} subtitle={subtitle} />
|
|
57
59
|
<div className="grid md:grid-cols-2 gap-6 max-w-4xl mx-auto">
|
|
@@ -66,7 +68,7 @@ export function FAQ({
|
|
|
66
68
|
|
|
67
69
|
if (variant === 'simple') {
|
|
68
70
|
return (
|
|
69
|
-
<section className={`py-16 ${className}`}>
|
|
71
|
+
<section id={id} className={`py-16 ${className}`}>
|
|
70
72
|
<div className="container mx-auto px-4">
|
|
71
73
|
<SectionHeader title={title} subtitle={subtitle} />
|
|
72
74
|
<div className="max-w-3xl mx-auto space-y-8">
|
|
@@ -81,7 +83,7 @@ export function FAQ({
|
|
|
81
83
|
|
|
82
84
|
// Default: accordion variant
|
|
83
85
|
return (
|
|
84
|
-
<section className={`py-16 bg-gray-50 ${className}`}>
|
|
86
|
+
<section id={id} className={`py-16 bg-gray-50 ${className}`}>
|
|
85
87
|
<div className="container mx-auto px-4">
|
|
86
88
|
<SectionHeader title={title} subtitle={subtitle} />
|
|
87
89
|
<div className="max-w-3xl mx-auto">
|
|
@@ -15,6 +15,7 @@ export interface HoursProps {
|
|
|
15
15
|
variant?: 'card' | 'inline' | 'minimal';
|
|
16
16
|
timezone?: string;
|
|
17
17
|
className?: string;
|
|
18
|
+
id?: string;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
const dayOrder: DayOfWeek[] = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
|
|
@@ -61,6 +62,7 @@ export function Hours({
|
|
|
61
62
|
variant = 'card',
|
|
62
63
|
timezone,
|
|
63
64
|
className = '',
|
|
65
|
+
id = 'hours',
|
|
64
66
|
}: HoursProps) {
|
|
65
67
|
const todayDay = getTodayDay(timezone);
|
|
66
68
|
|
|
@@ -71,7 +73,7 @@ export function Hours({
|
|
|
71
73
|
|
|
72
74
|
if (variant === 'inline') {
|
|
73
75
|
return (
|
|
74
|
-
<div className={`flex flex-wrap gap-4 ${className}`}>
|
|
76
|
+
<div id={id} className={`flex flex-wrap gap-4 ${className}`}>
|
|
75
77
|
{sortedHours.map((entry) => (
|
|
76
78
|
<HoursInlineItem
|
|
77
79
|
key={entry.day}
|
|
@@ -85,7 +87,7 @@ export function Hours({
|
|
|
85
87
|
|
|
86
88
|
if (variant === 'minimal') {
|
|
87
89
|
return (
|
|
88
|
-
<div className={`space-y-1 ${className}`}>
|
|
90
|
+
<div id={id} className={`space-y-1 ${className}`}>
|
|
89
91
|
{sortedHours.map((entry) => (
|
|
90
92
|
<HoursMinimalItem
|
|
91
93
|
key={entry.day}
|
|
@@ -99,7 +101,7 @@ export function Hours({
|
|
|
99
101
|
|
|
100
102
|
// Default: card variant
|
|
101
103
|
return (
|
|
102
|
-
<div className={`bg-white rounded-lg shadow p-6 ${className}`}>
|
|
104
|
+
<div id={id} className={`bg-white rounded-lg shadow p-6 ${className}`}>
|
|
103
105
|
<div className="flex items-center mb-4">
|
|
104
106
|
<ClockIcon size={24} className="text-primary-600 mr-2" />
|
|
105
107
|
<h3 className="text-xl font-semibold text-gray-900">{title}</h3>
|
|
@@ -18,6 +18,7 @@ export interface ServicesProps {
|
|
|
18
18
|
variant?: 'cards' | 'list' | 'minimal';
|
|
19
19
|
limit?: number;
|
|
20
20
|
className?: string;
|
|
21
|
+
id?: string;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -33,6 +34,7 @@ export function Services({
|
|
|
33
34
|
variant = 'cards',
|
|
34
35
|
limit,
|
|
35
36
|
className = '',
|
|
37
|
+
id = 'services',
|
|
36
38
|
}: ServicesProps) {
|
|
37
39
|
const displayedServices = limit ? services.slice(0, limit) : services;
|
|
38
40
|
|
|
@@ -44,7 +46,7 @@ export function Services({
|
|
|
44
46
|
|
|
45
47
|
if (variant === 'list') {
|
|
46
48
|
return (
|
|
47
|
-
<section className={`py-16 ${className}`}>
|
|
49
|
+
<section id={id} className={`py-16 ${className}`}>
|
|
48
50
|
<div className="container mx-auto px-4">
|
|
49
51
|
<SectionHeader title={title} subtitle={subtitle} />
|
|
50
52
|
<div className="max-w-3xl mx-auto divide-y divide-gray-200">
|
|
@@ -64,7 +66,7 @@ export function Services({
|
|
|
64
66
|
|
|
65
67
|
if (variant === 'minimal') {
|
|
66
68
|
return (
|
|
67
|
-
<section className={`py-16 ${className}`}>
|
|
69
|
+
<section id={id} className={`py-16 ${className}`}>
|
|
68
70
|
<div className="container mx-auto px-4">
|
|
69
71
|
<SectionHeader title={title} subtitle={subtitle} />
|
|
70
72
|
<div className={`grid gap-6 ${gridCols[columns]}`}>
|
|
@@ -83,7 +85,7 @@ export function Services({
|
|
|
83
85
|
|
|
84
86
|
// Default: cards variant
|
|
85
87
|
return (
|
|
86
|
-
<section className={`py-16 bg-gray-50 ${className}`}>
|
|
88
|
+
<section id={id} className={`py-16 bg-gray-50 ${className}`}>
|
|
87
89
|
<div className="container mx-auto px-4">
|
|
88
90
|
<SectionHeader title={title} subtitle={subtitle} />
|
|
89
91
|
<div className={`grid gap-6 ${gridCols[columns]}`}>
|
|
@@ -17,6 +17,7 @@ export interface TestimonialsProps {
|
|
|
17
17
|
variant?: 'cards' | 'quotes' | 'minimal';
|
|
18
18
|
limit?: number;
|
|
19
19
|
className?: string;
|
|
20
|
+
id?: string;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/**
|
|
@@ -31,6 +32,7 @@ export function Testimonials({
|
|
|
31
32
|
variant = 'cards',
|
|
32
33
|
limit,
|
|
33
34
|
className = '',
|
|
35
|
+
id = 'reviews',
|
|
34
36
|
}: TestimonialsProps) {
|
|
35
37
|
const displayedTestimonials = limit ? testimonials.slice(0, limit) : testimonials;
|
|
36
38
|
|
|
@@ -41,7 +43,7 @@ export function Testimonials({
|
|
|
41
43
|
};
|
|
42
44
|
|
|
43
45
|
return (
|
|
44
|
-
<section className={`py-16 ${className}`}>
|
|
46
|
+
<section id={id} className={`py-16 ${className}`}>
|
|
45
47
|
<div className="container mx-auto px-4">
|
|
46
48
|
{/* Header */}
|
|
47
49
|
<div className="text-center mb-12">
|