@aws505/sheetsite 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +105 -0
  2. package/dist/components/index.js +1696 -0
  3. package/dist/components/index.js.map +1 -0
  4. package/dist/components/index.mjs +1630 -0
  5. package/dist/components/index.mjs.map +1 -0
  6. package/dist/config/index.js +1840 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/config/index.mjs +1793 -0
  9. package/dist/config/index.mjs.map +1 -0
  10. package/dist/data/index.js +1296 -0
  11. package/dist/data/index.js.map +1 -0
  12. package/dist/data/index.mjs +1220 -0
  13. package/dist/data/index.mjs.map +1 -0
  14. package/dist/index.js +5433 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/index.mjs +5285 -0
  17. package/dist/index.mjs.map +1 -0
  18. package/dist/seo/index.js +187 -0
  19. package/dist/seo/index.js.map +1 -0
  20. package/dist/seo/index.mjs +155 -0
  21. package/dist/seo/index.mjs.map +1 -0
  22. package/dist/theme/index.js +552 -0
  23. package/dist/theme/index.js.map +1 -0
  24. package/dist/theme/index.mjs +526 -0
  25. package/dist/theme/index.mjs.map +1 -0
  26. package/package.json +96 -0
  27. package/src/components/index.ts +41 -0
  28. package/src/components/layout/Footer.tsx +234 -0
  29. package/src/components/layout/Header.tsx +134 -0
  30. package/src/components/sections/FAQ.tsx +178 -0
  31. package/src/components/sections/Gallery.tsx +107 -0
  32. package/src/components/sections/Hero.tsx +202 -0
  33. package/src/components/sections/Hours.tsx +225 -0
  34. package/src/components/sections/Services.tsx +216 -0
  35. package/src/components/sections/Testimonials.tsx +184 -0
  36. package/src/components/ui/Button.tsx +158 -0
  37. package/src/components/ui/Card.tsx +162 -0
  38. package/src/components/ui/Icons.tsx +508 -0
  39. package/src/config/index.ts +207 -0
  40. package/src/config/presets/generic.ts +153 -0
  41. package/src/config/presets/home-kitchen.ts +154 -0
  42. package/src/config/presets/index.ts +708 -0
  43. package/src/config/presets/professional.ts +165 -0
  44. package/src/config/presets/repair.ts +160 -0
  45. package/src/config/presets/restaurant.ts +162 -0
  46. package/src/config/presets/salon.ts +178 -0
  47. package/src/config/presets/tailor.ts +159 -0
  48. package/src/config/types.ts +314 -0
  49. package/src/data/csv-parser.ts +154 -0
  50. package/src/data/defaults.ts +202 -0
  51. package/src/data/google-drive.ts +148 -0
  52. package/src/data/index.ts +535 -0
  53. package/src/data/sheets.ts +709 -0
  54. package/src/data/types.ts +379 -0
  55. package/src/seo/index.ts +272 -0
  56. package/src/theme/colors.ts +351 -0
  57. package/src/theme/index.ts +249 -0
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Generic Business Preset
3
+ * A flexible starting point for any business type
4
+ */
5
+
6
+ import type { BusinessPreset } from '../types';
7
+
8
+ export const genericPreset: BusinessPreset = {
9
+ type: 'generic',
10
+ name: 'Generic Business',
11
+ description: 'A flexible configuration that works for most business types',
12
+
13
+ config: {
14
+ businessType: 'generic',
15
+ theme: {
16
+ preset: 'cool-blue',
17
+ borderRadius: 'md',
18
+ shadows: 'md',
19
+ },
20
+ pages: {
21
+ home: {
22
+ enabled: true,
23
+ sections: [
24
+ 'hero',
25
+ 'services',
26
+ 'testimonials',
27
+ 'hours',
28
+ 'location',
29
+ 'faq',
30
+ ],
31
+ },
32
+ about: { enabled: true },
33
+ services: { enabled: true },
34
+ gallery: { enabled: true },
35
+ faq: { enabled: true },
36
+ contact: { enabled: true },
37
+ privacy: { enabled: true },
38
+ },
39
+ seo: {
40
+ titleTemplate: '%s | Quality Service',
41
+ keywords: ['local business', 'professional service', 'quality'],
42
+ jsonLdType: 'LocalBusiness',
43
+ },
44
+ contactForm: {
45
+ enabled: true,
46
+ fields: {
47
+ name: true,
48
+ email: true,
49
+ phone: true,
50
+ service: true,
51
+ message: true,
52
+ },
53
+ },
54
+ features: {
55
+ mobileCallBar: true,
56
+ openStatus: true,
57
+ mapEmbed: true,
58
+ socialLinks: true,
59
+ },
60
+ },
61
+
62
+ defaults: {
63
+ business: {
64
+ tagline: 'Quality Service You Can Trust',
65
+ description: 'We are dedicated to providing exceptional service to our community.',
66
+ priceRange: '$$',
67
+ },
68
+ services: [
69
+ { id: 's1', title: 'Service One', description: 'Our primary service offering', priceNote: 'Contact for pricing', sortOrder: 1 },
70
+ { id: 's2', title: 'Service Two', description: 'Another excellent option', priceNote: 'Contact for pricing', sortOrder: 2 },
71
+ { id: 's3', title: 'Service Three', description: 'Specialized service for unique needs', priceNote: 'Contact for pricing', sortOrder: 3 },
72
+ ],
73
+ faq: [
74
+ { id: 'f1', question: 'What are your hours?', answer: 'Please check our hours section above or contact us for current availability.', sortOrder: 1 },
75
+ { id: 'f2', question: 'How can I contact you?', answer: 'You can reach us by phone, email, or through the contact form on this website.', sortOrder: 2 },
76
+ { id: 'f3', question: 'Do you offer free estimates?', answer: 'Yes, we provide free estimates for most services. Contact us to schedule.', sortOrder: 3 },
77
+ ],
78
+ },
79
+
80
+ sheetTemplate: {
81
+ tabs: [
82
+ {
83
+ name: 'business',
84
+ required: true,
85
+ columns: [
86
+ { name: 'key', description: 'Setting name', example: 'name', required: true },
87
+ { name: 'value', description: 'Setting value', example: 'Your Business Name', required: true },
88
+ ],
89
+ },
90
+ {
91
+ name: 'hours',
92
+ required: true,
93
+ columns: [
94
+ { name: 'day', description: 'Day of week', example: 'Monday', required: true },
95
+ { name: 'open', description: 'Opening time', example: '9:00 AM', required: false },
96
+ { name: 'close', description: 'Closing time', example: '5:00 PM', required: false },
97
+ { name: 'closed', description: 'Is closed?', example: 'FALSE', required: false },
98
+ ],
99
+ },
100
+ {
101
+ name: 'services',
102
+ required: true,
103
+ columns: [
104
+ { name: 'title', description: 'Service name', example: 'Main Service', required: true },
105
+ { name: 'description', description: 'Service description', example: 'Description of the service', required: false },
106
+ { name: 'price_note', description: 'Pricing info', example: 'From $50', required: false },
107
+ { name: 'icon', description: 'Icon name', example: 'star', required: false },
108
+ { name: 'sort', description: 'Display order', example: '1', required: false },
109
+ ],
110
+ },
111
+ {
112
+ name: 'gallery',
113
+ required: false,
114
+ columns: [
115
+ { name: 'image_url', description: 'Image URL', example: 'https://drive.google.com/...', required: true },
116
+ { name: 'alt', description: 'Image description', example: 'Image description', required: false },
117
+ { name: 'caption', description: 'Caption text', example: 'Photo caption', required: false },
118
+ { name: 'sort', description: 'Display order', example: '1', required: false },
119
+ ],
120
+ },
121
+ {
122
+ name: 'testimonials',
123
+ required: false,
124
+ columns: [
125
+ { name: 'quote', description: 'Customer review', example: 'Great service!', required: true },
126
+ { name: 'name', description: 'Customer name', example: 'John D.', required: true },
127
+ { name: 'rating', description: 'Star rating (1-5)', example: '5', required: false },
128
+ { name: 'sort', description: 'Display order', example: '1', required: false },
129
+ ],
130
+ },
131
+ {
132
+ name: 'faq',
133
+ required: false,
134
+ columns: [
135
+ { name: 'question', description: 'Question text', example: 'Common question?', required: true },
136
+ { name: 'answer', description: 'Answer text', example: 'The answer...', required: true },
137
+ { name: 'sort', description: 'Display order', example: '1', required: false },
138
+ ],
139
+ },
140
+ ],
141
+ },
142
+
143
+ iconSuggestions: ['star', 'check', 'heart', 'sparkles', 'shield', 'clock', 'phone', 'mail'],
144
+
145
+ imageSuggestions: [
146
+ 'Professional team photo',
147
+ 'Service in action',
148
+ 'Happy customers',
149
+ 'Business storefront',
150
+ 'Quality workmanship',
151
+ 'Before and after results',
152
+ ],
153
+ };
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Home Kitchen / Cottage Food Business Preset
3
+ */
4
+
5
+ import type { BusinessPreset } from '../types';
6
+
7
+ export const homeKitchenPreset: BusinessPreset = {
8
+ type: 'home-kitchen',
9
+ name: 'Home Kitchen & Cottage Food',
10
+ description: 'Configuration for home-based food businesses, cottage food producers, and bakers',
11
+
12
+ config: {
13
+ businessType: 'home-kitchen',
14
+ theme: {
15
+ preset: 'warm-amber',
16
+ borderRadius: 'lg',
17
+ shadows: 'sm',
18
+ },
19
+ pages: {
20
+ home: {
21
+ enabled: true,
22
+ sections: [
23
+ 'hero',
24
+ 'products',
25
+ 'how-it-works',
26
+ 'gallery',
27
+ 'testimonials',
28
+ 'faq',
29
+ 'contact-form',
30
+ ],
31
+ },
32
+ about: { enabled: true, title: 'My Story' },
33
+ products: { enabled: true, title: 'Products' },
34
+ gallery: { enabled: true, title: 'Gallery' },
35
+ faq: { enabled: true },
36
+ contact: { enabled: true },
37
+ privacy: { enabled: true },
38
+ },
39
+ seo: {
40
+ titleTemplate: '%s | Homemade with Love',
41
+ keywords: ['homemade', 'cottage food', 'baked goods', 'local', 'handmade', 'artisan'],
42
+ jsonLdType: 'LocalBusiness',
43
+ },
44
+ contactForm: {
45
+ enabled: true,
46
+ fields: {
47
+ name: true,
48
+ email: true,
49
+ phone: true,
50
+ service: false,
51
+ message: true,
52
+ },
53
+ successMessage: 'Thank you for your order inquiry! I\'ll get back to you within 24 hours.',
54
+ },
55
+ features: {
56
+ mobileCallBar: true,
57
+ openStatus: false, // Often by appointment
58
+ socialLinks: true,
59
+ bookingButton: true,
60
+ },
61
+ },
62
+
63
+ defaults: {
64
+ business: {
65
+ tagline: 'Homemade Goodness, Made with Love',
66
+ description: 'Delicious homemade treats crafted with quality ingredients and care.',
67
+ priceRange: '$$',
68
+ },
69
+ products: [
70
+ { id: 'p1', name: 'Signature Cookies', description: 'Our famous chocolate chip cookies', price: 3.50, priceNote: 'per cookie or $18/dozen', category: 'Cookies', featured: true, sortOrder: 1 },
71
+ { id: 'p2', name: 'Fresh Bread', description: 'Artisan sourdough baked fresh', price: 8, priceNote: 'per loaf', category: 'Bread', sortOrder: 2 },
72
+ { id: 'p3', name: 'Seasonal Pie', description: 'Made with fresh, seasonal fruit', price: 25, priceNote: '9-inch pie', category: 'Pies', sortOrder: 3 },
73
+ { id: 'p4', name: 'Custom Cake', description: 'Birthday, celebration, or special occasion cakes', priceNote: 'Starting at $45', category: 'Cakes', sortOrder: 4 },
74
+ { id: 'p5', name: 'Homemade Jam', description: 'Small-batch preserves with local fruit', price: 8, priceNote: '8 oz jar', category: 'Preserves', sortOrder: 5 },
75
+ ],
76
+ faq: [
77
+ { id: 'f1', question: 'How do I place an order?', answer: 'You can place an order through the contact form on this website, by texting or calling, or through our social media pages. I\'ll confirm availability and arrange pickup or delivery.', sortOrder: 1 },
78
+ { id: 'f2', question: 'How far in advance should I order?', answer: 'For standard items, 2-3 days notice is usually sufficient. For custom cakes or large orders, please give at least 1-2 weeks notice.', sortOrder: 2 },
79
+ { id: 'f3', question: 'Do you accommodate dietary restrictions?', answer: 'Yes! I offer gluten-free, dairy-free, and vegan options for many items. Please mention any allergies or dietary needs when ordering.', sortOrder: 3 },
80
+ { id: 'f4', question: 'Do you deliver?', answer: 'I offer local pickup from my home and delivery within a 10-mile radius for orders over $25. Delivery fees may apply.', sortOrder: 4 },
81
+ { id: 'f5', question: 'What forms of payment do you accept?', answer: 'I accept cash, Venmo, PayPal, and Zelle. Payment is due at pickup or delivery.', sortOrder: 5 },
82
+ { id: 'f6', question: 'Are you licensed?', answer: 'Yes! I operate under my state\'s cottage food law, which allows me to produce and sell specific homemade food items directly to consumers.', sortOrder: 6 },
83
+ ],
84
+ },
85
+
86
+ sheetTemplate: {
87
+ tabs: [
88
+ {
89
+ name: 'business',
90
+ required: true,
91
+ columns: [
92
+ { name: 'key', description: 'Setting name', example: 'name', required: true },
93
+ { name: 'value', description: 'Setting value', example: 'Sweet Home Bakery', required: true },
94
+ ],
95
+ },
96
+ {
97
+ name: 'products',
98
+ required: true,
99
+ columns: [
100
+ { name: 'name', description: 'Product name', example: 'Chocolate Chip Cookies', required: true },
101
+ { name: 'description', description: 'Product description', example: 'Classic cookies with premium chocolate', required: false },
102
+ { name: 'price', description: 'Price (number)', example: '18', required: false },
103
+ { name: 'price_note', description: 'Price details', example: 'per dozen', required: false },
104
+ { name: 'category', description: 'Product category', example: 'Cookies', required: false },
105
+ { name: 'image_url', description: 'Product image', example: 'https://drive.google.com/...', required: false },
106
+ { name: 'featured', description: 'Is featured?', example: 'TRUE', required: false },
107
+ { name: 'in_stock', description: 'Currently available?', example: 'TRUE', required: false },
108
+ { name: 'sort', description: 'Display order', example: '1', required: false },
109
+ ],
110
+ },
111
+ {
112
+ name: 'gallery',
113
+ required: false,
114
+ columns: [
115
+ { name: 'image_url', description: 'Image URL', example: 'https://drive.google.com/...', required: true },
116
+ { name: 'alt', description: 'Image description', example: 'Fresh baked cookies', required: false },
117
+ { name: 'caption', description: 'Caption text', example: 'Straight from the oven', required: false },
118
+ { name: 'sort', description: 'Display order', example: '1', required: false },
119
+ ],
120
+ },
121
+ {
122
+ name: 'testimonials',
123
+ required: false,
124
+ columns: [
125
+ { name: 'quote', description: 'Customer review', example: 'The best cookies I\'ve ever had!', required: true },
126
+ { name: 'name', description: 'Customer name', example: 'Lisa M.', required: true },
127
+ { name: 'context', description: 'Order context', example: 'Birthday party order', required: false },
128
+ { name: 'rating', description: 'Star rating (1-5)', example: '5', required: false },
129
+ { name: 'sort', description: 'Display order', example: '1', required: false },
130
+ ],
131
+ },
132
+ {
133
+ name: 'faq',
134
+ required: false,
135
+ columns: [
136
+ { name: 'question', description: 'Question text', example: 'How do I order?', required: true },
137
+ { name: 'answer', description: 'Answer text', example: 'Contact me through the form...', required: true },
138
+ { name: 'sort', description: 'Display order', example: '1', required: false },
139
+ ],
140
+ },
141
+ ],
142
+ },
143
+
144
+ iconSuggestions: ['cake', 'cookie', 'bread', 'heart', 'sparkles', 'star', 'gift', 'home'],
145
+
146
+ imageSuggestions: [
147
+ 'Beautifully decorated custom cake',
148
+ 'Fresh-baked cookies cooling on rack',
149
+ 'Artisan bread with golden crust',
150
+ 'Colorful cupcake display',
151
+ 'Homemade jam jars with labels',
152
+ 'Kitchen workspace with ingredients',
153
+ ],
154
+ };