diff --git a/TECHNICAL_DOCUMENTATION.md b/TECHNICAL_DOCUMENTATION.md new file mode 100644 index 0000000..47bcd77 --- /dev/null +++ b/TECHNICAL_DOCUMENTATION.md @@ -0,0 +1,299 @@ +# Technical Documentation - Austen's Wedding Guide + +## Project Overview + +A React-based web application that serves as a modern wedding guide themed around Jane Austen's works. The project combines literary analysis with interactive features, presenting Austen's insights in a contemporary context. + +## Tech Stack + +- **Framework**: React with TypeScript +- **Build Tool**: Vite +- **Styling**: Tailwind CSS +- **UI Components**: Shadcn/UI +- **Routing**: React Router +- **Package Manager**: npm + +## Project Structure + +``` +src/ +├── components/ +│ ├── ui/ # Shadcn UI components +│ ├── layout/ # Layout components +│ ├── vendor/ # Vendor-specific components +│ ├── BlogPost.tsx # Blog post component +│ ├── CommentSection.tsx +│ ├── ErrorBoundary.tsx +│ ├── Footer.tsx +│ ├── Layout.tsx +│ ├── LoadingSpinner.tsx +│ ├── Navbar.tsx +│ ├── Pagination.tsx +│ ├── QuoteDisplay.tsx +│ ├── Routes.tsx +│ ├── ShareButtons.tsx +│ └── theme-provider.tsx +│ +├── data/ +│ ├── blog-posts.ts # Character blog content +│ ├── quotes.ts # Austen quotes +│ ├── quiz.ts # Character quiz data +│ ├── dear-jane.ts # Advice column content +│ ├── success-stories.ts +│ ├── literary-analysis.ts # Literary analysis data +│ └── vendors.ts +│ +├── pages/ +│ ├── BlogPost/ +│ ├── Advice.tsx +│ ├── Analysis.tsx # Literary analysis page +│ ├── Blogs.tsx +│ ├── DearJane.tsx +│ ├── Home.tsx +│ ├── MarketCalculator.tsx +│ ├── Quiz.tsx +│ ├── Stories.tsx +│ ├── SuccessStories.tsx +│ └── Vendors.tsx +``` + +## Routing Structure + +The application uses React Router for navigation with the following route structure: + +```typescript + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + +``` + +### Navigation Updates + +- Main navigation in `Navbar.tsx` includes: + - Primary navigation links + - Literary Analysis link with distinct styling + - Responsive design for all screen sizes +- Home page features: + - Literary Analysis card in featured sections + - Direct link to analysis content +- Layout structure: + - MainLayout component wraps all pages + - Consistent header with navigation + - Footer with copyright and quote + +### Route Integration + +- Analysis page is directly accessible via `/analysis` +- Integrated into main navigation flow +- Maintains consistent layout and styling +- Proper error handling and loading states + +## Key Features + +### 1. Content Management + +- Data is stored in TypeScript files with strong typing +- Content is organized by characters and themes +- Modular content structure for easy updates +- **New: Comprehensive literary analysis data structure with detailed novel analysis** + +### 2. UI Components + +- Custom components built on Shadcn/UI +- Responsive design using Tailwind CSS +- Consistent theme using custom color palette: + - Sage + - Cream + - Rose +- **New: Interactive novel selector and tabbed analysis interface** + +### 3. Interactive Features + +- Character quiz with result mapping +- Blog comment system +- Share functionality +- Pagination for content lists +- Market calculator +- **New: Literary analysis with themed tabs and novel selection** + +### 4. Performance Considerations + +- Component-based architecture for better code splitting +- Error boundaries for graceful error handling +- Loading states for better UX +- Client-side routing for smooth navigation + +## Styling + +The project uses a combination of: + +- Tailwind CSS for utility-first styling +- Custom components from Shadcn/UI +- Custom theme variables for consistent branding +- Responsive design patterns +- **New: Scrollable content areas with consistent styling** +- **New: Themed cards and tabs for analysis content** + +## Typography + +- Headings: Cormorant font family +- Body: Lato font family +- Consistent text sizing using Tailwind's scale + +## Component Architecture + +### Layout Components + +- `Layout.tsx`: Main layout wrapper +- `Navbar.tsx`: Navigation header +- `Footer.tsx`: Site footer +- `ErrorBoundary.tsx`: Error handling wrapper + +### Content Components + +- `BlogPost.tsx`: Blog post display +- `QuoteDisplay.tsx`: Quote formatting +- `CommentSection.tsx`: User comments +- `ShareButtons.tsx`: Social sharing +- **New: Analysis.tsx**: Literary analysis with novel selection and tabbed content + +### UI Components + +Extensive UI component library including: + +- Buttons +- Cards +- Forms +- Modals +- Navigation menus +- Tables +- Toast notifications +- **New: Select dropdown for novel selection** +- **New: Tabs for content organization** +- **New: ScrollArea for content sections** + +## Data Structure + +### Blog Posts + +```typescript +interface BlogPost { + id: string; + title: string; + author: string; + authorImage: string; + date: string; + content: string[]; +} +``` + +### Quiz System + +```typescript +interface QuizQuestion { + id: string; + question: string; + options: QuizOption[]; +} + +interface QuizResult { + character: string; + quote: string; + description: string; + book: string; + matchAdvice: string; +} +``` + +### Literary Analysis + +```typescript +// Novel Analysis Structure +interface NovelAnalysis { + title: string; + publicationYear: number; + mainThemes: ThematicElement[]; + characterAnalysis: CharacterAnalysis[]; + socialCommentary: SocialCommentary[]; + literaryDevices: LiteraryDevice[]; +} + +// Theme Analysis +interface ThematicElement { + theme: string; + description: string; + examples: { + quote: string; + source: string; + analysis: string; + }[]; + significance: string; +} + +// Available Novels +const novelAnalyses = { + prideAndPrejudice: NovelAnalysis; + northangerAbbey: NovelAnalysis; + senseAndSensibility: NovelAnalysis; + mansfieldPark: NovelAnalysis; +} +``` + +## Pages and Components + +### Analysis Page + +- Path: `/analysis` +- Features: + - Novel selector dropdown + - Tabbed interface for different analysis aspects + - Scrollable content areas + - Themed styling +- Content Sections: + - Themes + - Characters + - Social Commentary + - Literary Devices + +### Data Organization + +- `src/data/literary-analysis.ts`: Contains structured analysis data for all novels + - Pride and Prejudice + - Northanger Abbey + - Sense and Sensibility + - Mansfield Park +- Each novel includes: + - Main themes with examples and significance + - Character analysis with development and key quotes + - Social commentary with modern relevance + - Literary devices with examples and effects + +## Best Practices + +1. TypeScript for type safety +2. Component-based architecture +3. Consistent file naming +4. Modular CSS with Tailwind +5. Error handling with boundaries +6. Loading state management +7. Responsive design patterns +8. **New: Structured content organization** +9. **New: Interactive content navigation** + +## Future Considerations + +1. Content expansion opportunities +2. Performance optimization +3. Accessibility improvements +4. SEO optimization +5. Content management system integration +6. **New: Additional novel analysis features** +7. **New: Comparative analysis tools** diff --git a/public/images/vendors/barton.jpg b/public/images/vendors/barton.jpg new file mode 100644 index 0000000..e6680f6 Binary files /dev/null and b/public/images/vendors/barton.jpg differ diff --git a/public/images/vendors/mansfield.jpg b/public/images/vendors/mansfield.jpg new file mode 100644 index 0000000..19ae4df Binary files /dev/null and b/public/images/vendors/mansfield.jpg differ diff --git a/src/App.tsx b/src/App.tsx index bd3dd56..ed62950 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -6,6 +6,7 @@ import Blogs from './pages/Blogs'; import BlogPost from './pages/BlogPost/BlogPost'; import { ErrorBoundary } from './components/ErrorBoundary'; import SuccessStories from './pages/SuccessStories'; +import Analysis from './pages/Analysis'; // Lazy load other pages const Quiz = React.lazy(() => import('./pages/Quiz')); @@ -27,7 +28,8 @@ function App() { } /> } /> } /> - } /> + } /> + } /> diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index 9059d36..3cd7a02 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -1,62 +1,43 @@ import { Link } from 'react-router-dom'; -import { Feather, Heart, BookOpen, Mail, Users } from 'lucide-react'; -import { Button } from '@/components/ui/button'; -import { - NavigationMenu, - NavigationMenuContent, - NavigationMenuItem, - NavigationMenuLink, - NavigationMenuList, - NavigationMenuTrigger, -} from '@/components/ui/navigation-menu'; +import { Feather } from 'lucide-react'; const Navbar = () => { return ( -
-
- - - Austen's Wedding Guide - - - - - Advice - -
- - - - Character Blogs - - - - - - Dear Jane - - -
-
-
- - - - - - - - - - -
-
+
+
+
+ + + Austen's Wedding Guide + + + +
); diff --git a/src/components/Routes.tsx b/src/components/Routes.tsx index fd2e6fa..5307d5a 100644 --- a/src/components/Routes.tsx +++ b/src/components/Routes.tsx @@ -4,6 +4,7 @@ import Blogs from '@/pages/Blogs'; import DearJane from '@/pages/DearJane'; import Quiz from '@/pages/Quiz'; import SuccessStories from '@/pages/SuccessStories'; +import Analysis from '@/pages/Analysis'; const Routes = () => { return ( @@ -13,8 +14,9 @@ const Routes = () => { } /> } /> } /> + } /> ); } -export default Routes; \ No newline at end of file +export default Routes; diff --git a/src/components/layout/MainLayout.tsx b/src/components/layout/MainLayout.tsx index f1b3ee0..244687e 100644 --- a/src/components/layout/MainLayout.tsx +++ b/src/components/layout/MainLayout.tsx @@ -1,28 +1,10 @@ -import { Link } from 'react-router-dom'; import { Toaster } from '@/components/ui/toaster'; +import Navbar from '../Navbar'; const MainLayout = ({ children }: { children: React.ReactNode }) => { return (
- +
{children} diff --git a/src/data/literary-analysis.ts b/src/data/literary-analysis.ts new file mode 100644 index 0000000..825ba0d --- /dev/null +++ b/src/data/literary-analysis.ts @@ -0,0 +1,368 @@ +interface ThematicElement { + theme: string; + description: string; + examples: { + quote: string; + source: string; + analysis: string; + }[]; + significance: string; +} + +interface NovelAnalysis { + title: string; + publicationYear: number; + mainThemes: ThematicElement[]; + characterAnalysis: { + character: string; + role: string; + development: string; + significance: string; + keyQuotes: { + quote: string; + context: string; + analysis: string; + }[]; + }[]; + socialCommentary: { + topic: string; + analysis: string; + modernRelevance: string; + examples: string[]; + }[]; + literaryDevices: { + device: string; + usage: string; + examples: string[]; + effect: string; + }[]; +} + +export const prideAndPrejudiceAnalysis: NovelAnalysis = { + title: "Pride and Prejudice", + publicationYear: 1813, + mainThemes: [ + { + theme: "Marriage and Economic Reality", + description: "Exploration of marriage as both a social and economic institution in Regency England", + examples: [ + { + quote: "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.", + source: "Chapter 1", + analysis: "This iconic opening line establishes the novel's central premise: the interconnection between marriage and economics. The ironic tone suggests Austen's critique of viewing marriage purely as an economic transaction." + }, + { + quote: "I am not romantic, you know. I never was. I ask only a comfortable home.", + source: "Charlotte Lucas to Elizabeth", + analysis: "Charlotte's practical view of marriage represents the economic reality many women faced, choosing financial security over romantic love." + } + ], + significance: "Through this theme, Austen critiques the marriage market while acknowledging the practical constraints women faced in Regency society." + }, + { + theme: "Pride and Social Prejudice", + description: "Examination of how pride and prejudice affect social relationships and personal growth", + examples: [ + { + quote: "I could easily forgive his pride, if he had not mortified mine.", + source: "Elizabeth about Darcy", + analysis: "This quote encapsulates how personal pride leads to prejudice, showing how both Elizabeth and Darcy must overcome their biases." + } + ], + significance: "The theme demonstrates how personal growth requires overcoming both social prejudices and individual pride." + } + ], + characterAnalysis: [ + { + character: "Elizabeth Bennet", + role: "Protagonist", + development: "Elizabeth's journey from confident wit to self-awareness represents the novel's central character development", + significance: "Through Elizabeth, Austen explores the balance between individual judgment and societal expectations", + keyQuotes: [ + { + quote: "Till this moment I never knew myself.", + context: "After reading Darcy's letter", + analysis: "This moment marks Elizabeth's recognition of her own prejudices and marks the beginning of her character transformation." + } + ] + }, + { + character: "Mr. Darcy", + role: "Male Protagonist", + development: "Darcy's evolution from proud aristocrat to humble lover shows the possibility of personal growth", + significance: "His character arc demonstrates how true love requires overcoming class prejudice and personal pride", + keyQuotes: [ + { + quote: "I have been a selfish being all my life, in practice, though not in principle.", + context: "Darcy's self-reflection to Elizabeth", + analysis: "This admission shows Darcy's growth and self-awareness, marking his character development." + } + ] + } + ], + socialCommentary: [ + { + topic: "Class Mobility", + analysis: "Austen explores the rigidity and occasional permeability of class boundaries in Regency England", + modernRelevance: "The commentary on social mobility and class prejudice remains relevant to modern social inequalities", + examples: [ + "The Bingley family's 'new money' status versus Darcy's established wealth", + "Elizabeth's ability to transcend class boundaries through marriage", + "Lady Catherine's attempts to maintain class distinctions" + ] + } + ], + literaryDevices: [ + { + device: "Free Indirect Discourse", + usage: "Austen pioneered this technique to blend narrator and character perspectives", + examples: [ + "The opening line's ironic tone", + "Elizabeth's internal reflections", + "Commentary on the Meryton assembly" + ], + effect: "Creates intimacy with characters while maintaining narrative distance for ironic commentary" + } + ] +}; + +export const northangerAbbeyAnalysis: NovelAnalysis = { + title: "Northanger Abbey", + publicationYear: 1818, + mainThemes: [ + { + theme: "Gothic Literature Parody", + description: "A satirical take on Gothic fiction and its influence on young readers", + examples: [ + { + quote: "The person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.", + source: "Chapter 5", + analysis: "Austen directly addresses the value of novel reading while simultaneously parodying Gothic literature's melodramatic tendencies." + }, + { + quote: "Oh! I am delighted with the book! I should like to spend my whole life in reading it.", + source: "Catherine about 'The Mysteries of Udolpho'", + analysis: "Illustrates Catherine's naive enthusiasm for Gothic novels, which Austen uses to critique uncritical consumption of literature." + } + ], + significance: "Through parody, Austen critiques both Gothic conventions and the societal attitudes toward novel reading." + }, + { + theme: "Reality vs. Imagination", + description: "The contrast between romantic imagination and everyday reality", + examples: [ + { + quote: "She had yet to learn that the commonplace details of real life can be more affecting than the most dramatic of imagined horrors.", + source: "Narrator about Catherine", + analysis: "Shows Catherine's growth from Gothic fantasy to understanding real-world complexities." + } + ], + significance: "Demonstrates how imagination must be tempered with reality and experience." + } + ], + characterAnalysis: [ + { + character: "Catherine Morland", + role: "Protagonist", + development: "Catherine's journey from naive Gothic romance enthusiast to mature observer of real human nature", + significance: "Represents the necessary maturation from adolescent fantasy to adult understanding", + keyQuotes: [ + { + quote: "No one who had ever seen Catherine Morland in her infancy would have supposed her born to be an heroine.", + context: "Opening line", + analysis: "Sets up the novel's playful subversion of Gothic and romantic conventions." + } + ] + } + ], + socialCommentary: [ + { + topic: "Novel Reading and Education", + analysis: "Austen examines the role of reading in young women's education and moral development", + modernRelevance: "Parallels contemporary debates about media influence on young minds", + examples: [ + "Catherine's Gothic-influenced imagination", + "The defense of novel reading", + "The contrast between sensational fiction and reality" + ] + } + ], + literaryDevices: [ + { + device: "Narrative Irony", + usage: "Austen uses ironic narration to comment on Gothic conventions and social expectations", + examples: [ + "The opening description of Catherine as an unlikely heroine", + "Commentary on Catherine's Gothic fantasies", + "The narrator's knowing asides about romance conventions" + ], + effect: "Creates a meta-commentary on literary conventions while telling an engaging story" + } + ] +}; + +export const senseAndSensibilityAnalysis: NovelAnalysis = { + title: "Sense and Sensibility", + publicationYear: 1811, + mainThemes: [ + { + theme: "Reason vs. Emotion", + description: "The balance between emotional expression and rational judgment", + examples: [ + { + quote: "I will be calm. I will be mistress of myself.", + source: "Elinor Dashwood", + analysis: "Represents the struggle between emotional truth and social necessity." + }, + { + quote: "The more I know of the world, the more I am convinced that I shall never see a man whom I can really love.", + source: "Marianne Dashwood", + analysis: "Illustrates the dangers of excessive romantic sensibility." + } + ], + significance: "Explores the necessity of balancing emotional authenticity with social pragmatism." + }, + { + theme: "Financial Vulnerability", + description: "The economic precarity of women in Regency society", + examples: [ + { + quote: "What have wealth or grandeur to do with happiness?", + source: "Marianne Dashwood", + analysis: "Highlights the tension between romantic ideals and economic reality." + } + ], + significance: "Demonstrates how economic circumstances shape women's choices and opportunities." + } + ], + characterAnalysis: [ + { + character: "Elinor Dashwood", + role: "Protagonist - Sense", + development: "Maintains emotional control while navigating social and personal challenges", + significance: "Represents the value of emotional regulation and social awareness", + keyQuotes: [ + { + quote: "I have suffered all the punishment of an attachment without enjoying any of its advantages.", + context: "Reflecting on Edward", + analysis: "Shows the cost of emotional restraint while highlighting its necessity." + } + ] + }, + { + character: "Marianne Dashwood", + role: "Protagonist - Sensibility", + development: "Learns to temper excessive emotion with judgment", + significance: "Shows the maturation from pure emotional response to balanced understanding", + keyQuotes: [ + { + quote: "My feelings shall be governed and my temper improved.", + context: "After her illness", + analysis: "Marks her growth toward emotional maturity." + } + ] + } + ], + socialCommentary: [ + { + topic: "Women's Economic Dependence", + analysis: "Examines how financial constraints affect women's choices and behavior", + modernRelevance: "Relates to contemporary issues of economic inequality and gender", + examples: [ + "The Dashwood women's reduced circumstances", + "Lucy Steele's strategic marriage choices", + "The power dynamics in courtship and marriage" + ] + } + ], + literaryDevices: [ + { + device: "Parallel Characters", + usage: "Uses contrasting character pairs to explore different approaches to life", + examples: [ + "Elinor and Marianne's different temperaments", + "Edward and Willoughby's different moral characters", + "Lucy and Elinor's different approaches to love" + ], + effect: "Creates a nuanced exploration of different philosophical approaches to life" + } + ] +}; + +export const mansfieldParkAnalysis: NovelAnalysis = { + title: "Mansfield Park", + publicationYear: 1814, + mainThemes: [ + { + theme: "Morality and Social Values", + description: "The relationship between moral character and social behavior", + examples: [ + { + quote: "We have all a better guide in ourselves, if we would attend to it, than any other person can be.", + source: "Fanny Price", + analysis: "Emphasizes the importance of individual moral judgment over social pressure." + } + ], + significance: "Explores how true morality must come from internal conviction rather than external rules." + }, + { + theme: "Colonial Undertones", + description: "The presence of colonial wealth and its moral implications", + examples: [ + { + quote: "But I do talk to him more than I used. I am sure I do. Did not you hear me ask him about the slave-trade last night?", + source: "Fanny about Sir Thomas", + analysis: "Highlights the novel's engagement with colonial issues and moral responsibility." + } + ], + significance: "Addresses the relationship between domestic English society and colonial exploitation." + } + ], + characterAnalysis: [ + { + character: "Fanny Price", + role: "Protagonist", + development: "Maintains moral integrity while navigating social pressures", + significance: "Represents moral constancy in the face of social corruption", + keyQuotes: [ + { + quote: "We have all a better guide in ourselves, if we would attend to it, than any other person can be.", + context: "Refusing Henry Crawford", + analysis: "Shows Fanny's commitment to internal moral guidance over external pressure." + } + ] + } + ], + socialCommentary: [ + { + topic: "Class and Moral Character", + analysis: "Examines the relationship between social position and moral behavior", + modernRelevance: "Connects to contemporary discussions about privilege and responsibility", + examples: [ + "The contrast between the Bertrams and the Crawfords", + "Fanny's position between social classes", + "The moral implications of wealth and privilege" + ] + } + ], + literaryDevices: [ + { + device: "Moral Contrast", + usage: "Uses character contrasts to highlight moral choices", + examples: [ + "Fanny's principles versus Mary's pragmatism", + "Edmund's sincerity versus Henry's performance", + "The stability of Mansfield versus the chaos of London" + ], + effect: "Creates a clear moral framework while exploring its complexities" + } + ] +}; + +// Export all analyses +export const novelAnalyses = { + prideAndPrejudice: prideAndPrejudiceAnalysis, + northangerAbbey: northangerAbbeyAnalysis, + senseAndSensibility: senseAndSensibilityAnalysis, + mansfieldPark: mansfieldParkAnalysis +}; diff --git a/src/data/vendors.ts b/src/data/vendors.ts index 2c1110c..3f2bdd8 100644 --- a/src/data/vendors.ts +++ b/src/data/vendors.ts @@ -108,5 +108,140 @@ export const VENDOR_LISTINGS: VendorListing[] = [ text: 'The chapel holds such special memories, and the grounds are perfect for quiet moments of reflection.' } ] + }, + { + id: '5', + name: 'Longbourn Catering Services', + description: 'Exquisite dining experiences for your special day. Our skilled staff ensures every detail is perfect, from intimate family gatherings to grand celebrations.', + category: 'catering', + location: 'Hertfordshire', + imageUrl: '/images/vendors/catering.jpg', + priceRange: '£££', + rating: { + reputation: 5, + elegance: 4, + value: 5 + }, + features: [ + 'Custom menu planning', + 'Local seasonal ingredients', + 'Formal dinner service', + 'Wedding breakfast', + 'Evening refreshments' + ], + testimonials: [ + { + author: 'Charlotte Lucas', + text: 'The attention to detail was remarkable. Every dish was perfectly prepared and beautifully presented.' + } + ] + }, + { + id: '6', + name: 'Devonshire Blooms', + description: 'Creating enchanting floral arrangements that capture the natural beauty of the English countryside. Specializing in seasonal flowers and romantic designs.', + category: 'flowers', + location: 'Devonshire', + imageUrl: '/images/vendors/flowers.jpg', + priceRange: '£££', + rating: { + reputation: 5, + elegance: 5, + value: 4 + }, + features: [ + 'Bridal bouquets', + 'Church decorations', + 'Reception arrangements', + 'Seasonal flowers', + 'Garden-inspired designs' + ], + testimonials: [ + { + author: 'Marianne Dashwood', + text: 'The wildflower arrangements perfectly captured the romantic spirit of our celebration.' + } + ] + }, + { + id: '7', + name: 'Mrs. Bennet\'s Matchmaking Services', + description: 'With years of experience in bringing together the finest matches in society, we offer discrete and personalized matchmaking services for discerning clients.', + category: 'matchmaking', + location: 'Hertfordshire', + imageUrl: '/images/vendors/matchmaking.jpg', + priceRange: '££', + rating: { + reputation: 4, + elegance: 3, + value: 5 + }, + features: [ + 'Personal introductions', + 'Society connections', + 'Discrete service', + 'County-wide network', + 'Pre-event consultations' + ], + testimonials: [ + { + author: 'Jane Bennet', + text: 'A most fortuitous introduction that led to the happiest of outcomes.' + } + ] + }, + { + id: '8', + name: 'Madame Laurent\'s Modiste', + description: 'Creating exquisite wedding attire that combines timeless elegance with the latest London fashions. Each piece is carefully crafted to ensure the perfect fit.', + category: 'modiste', + location: 'London', + imageUrl: '/images/vendors/modiste.jpg', + priceRange: '££££', + rating: { + reputation: 5, + elegance: 5, + value: 4 + }, + features: [ + 'Custom designs', + 'Finest materials', + 'Multiple fittings', + 'Wedding party attire', + 'Accessories available' + ], + testimonials: [ + { + author: 'Elizabeth Bennet', + text: 'My wedding dress exceeded all expectations. The attention to detail was remarkable.' + } + ] + }, + { + id: '9', + name: 'The Tilney Quartet', + description: 'Providing elegant musical entertainment for your celebration. From classical pieces to country dances, we ensure your celebration is filled with perfect harmony.', + category: 'music', + location: 'Bath', + imageUrl: '/images/vendors/music.jpg', + priceRange: '£££', + rating: { + reputation: 5, + elegance: 5, + value: 4 + }, + features: [ + 'String quartet', + 'Piano accompaniment', + 'Country dance music', + 'Ceremony music', + 'Evening entertainment' + ], + testimonials: [ + { + author: 'Catherine Morland', + text: 'The music was absolutely enchanting, perfect for both the ceremony and dancing.' + } + ] } ]; diff --git a/src/pages/Analysis.tsx b/src/pages/Analysis.tsx new file mode 100644 index 0000000..b96274f --- /dev/null +++ b/src/pages/Analysis.tsx @@ -0,0 +1,214 @@ +import { useState } from 'react'; +import { novelAnalyses } from '../data/literary-analysis'; +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from "../components/ui/tabs"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "../components/ui/card"; +import { ScrollArea } from "../components/ui/scroll-area"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "../components/ui/select"; + +const Analysis = () => { + const [selectedNovel, setSelectedNovel] = useState('prideAndPrejudice'); + const analysis = novelAnalyses[selectedNovel]; + + if (!analysis) { + return ( +
+

Loading analysis...

+
+ ); + } + + return ( +
+
+

+ Literary Analysis +

+
+ +
+
+

{analysis.title}

+

+ Published {analysis.publicationYear} - A Deep Dive into Themes, Characters, and Social Commentary +

+
+
+ + + + Themes + Characters + Social Commentary + Literary Devices + + + + {analysis.mainThemes.map((theme, index) => ( + + + {theme.theme} + {theme.description} + + + +
+ {theme.examples.map((example, i) => ( +
+
+ "{example.quote}" +
+ - {example.source} +
+
+

{example.analysis}

+
+ ))} +
+

Significance

+

{theme.significance}

+
+
+
+
+
+ ))} +
+ + + {analysis.characterAnalysis.map((character, index) => ( + + + {character.character} + {character.role} + + + +
+
+

Character Development

+

{character.development}

+
+
+

Significance

+

{character.significance}

+
+
+

Key Quotes

+ {character.keyQuotes.map((quote, i) => ( +
+
+ "{quote.quote}" +
+ Context: {quote.context} +
+
+

{quote.analysis}

+
+ ))} +
+
+
+
+
+ ))} +
+ + + {analysis.socialCommentary.map((topic, index) => ( + + + {topic.topic} + + + +
+
+

Analysis

+

{topic.analysis}

+
+
+

Modern Relevance

+

{topic.modernRelevance}

+
+
+

Examples

+
    + {topic.examples.map((example, i) => ( +
  • {example}
  • + ))} +
+
+
+
+
+
+ ))} +
+ + + {analysis.literaryDevices.map((device, index) => ( + + + {device.device} + + + +
+
+

Usage

+

{device.usage}

+
+
+

Examples

+
    + {device.examples.map((example, i) => ( +
  • {example}
  • + ))} +
+
+
+

Effect

+

{device.effect}

+
+
+
+
+
+ ))} +
+
+
+ ); +}; + +export default Analysis; diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 08634c8..c713e2c 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -15,6 +15,16 @@ const Home = () => { {/* Featured Sections */}
+ {/* Literary Analysis */} + +
+

Literary Analysis

+

+ Explore themes, characters, and social commentary in Austen's timeless works +

+
+ + {/* Character Blogs */}
@@ -64,17 +74,6 @@ const Home = () => {

- - {/* Featured Article */} -
-

Latest from Charlotte

-

- "The Art of Practical Partnership: A Guide to Sensible Matches" -

- - Read More → - -
{/* Quote Section */} diff --git a/src/pages/MarketCalculator.tsx b/src/pages/MarketCalculator.tsx index a854eda..3e5f3ee 100644 --- a/src/pages/MarketCalculator.tsx +++ b/src/pages/MarketCalculator.tsx @@ -4,30 +4,49 @@ interface MarketValue { income: number; estate: string; connections: string; + location: string; accomplishments: string[]; personality: string[]; } const ACCOMPLISHMENTS = [ 'Playing the pianoforte', + 'Playing the harp', 'Drawing landscapes', 'Speaking French', 'Embroidery', 'Reading extensively', + 'Reading Gothic novels', 'Dancing gracefully', - 'Writing poetry', - 'Maintaining witty correspondence' + 'Singing', + 'Writing letters', + 'Moral improvement', + 'Walking great distances' ]; const PERSONALITY_TRAITS = [ 'Wit and vivacity', 'Serene temperament', 'Excellent manners', + 'Strong principles', 'Proper reserve', 'Charming conversation', 'Filial devotion', 'Prudent judgment', - 'Musical taste' + 'Romantic sensibility', + 'Quiet dignity', + 'Natural elegance', + 'Quick understanding' +]; + +const LOCATIONS = [ + 'Derbyshire', + 'Devonshire', + 'Bath', + 'Northamptonshire', + 'Hertfordshire', + 'London', + 'Kent' ]; const MarketCalculator = () => { @@ -35,6 +54,7 @@ const MarketCalculator = () => { income: 0, estate: '', connections: '', + location: '', accomplishments: [], personality: [] }); @@ -49,14 +69,28 @@ const MarketCalculator = () => { // Estate value if (values.estate.toLowerCase().includes('pemberley')) score += 50; + if (values.estate.toLowerCase().includes('mansfield')) score += 45; + if (values.estate.toLowerCase().includes('northanger')) score += 40; if (values.estate.toLowerCase().includes('estate')) score += 20; if (values.estate.toLowerCase().includes('manor')) score += 15; + if (values.estate.toLowerCase().includes('parsonage')) score += 10; if (values.estate.toLowerCase().includes('cottage')) score += 5; + // Location value + if (values.location === 'Derbyshire') score += 20; + if (values.location === 'London') score += 15; + if (values.location === 'Bath') score += 12; + if (values.location === 'Northamptonshire') score += 15; + if (values.location === 'Devonshire') score += 10; + if (values.location === 'Hertfordshire') score += 8; + if (values.location === 'Kent') score += 10; + // Social connections if (values.connections.toLowerCase().includes('nobility')) score += 25; if (values.connections.toLowerCase().includes('london')) score += 15; - if (values.connections.toLowerCase().includes('bath')) score += 10; + if (values.connections.toLowerCase().includes('admiral')) score += 12; + if (values.connections.toLowerCase().includes('clergy')) score += 8; + if (values.connections.toLowerCase().includes('military')) score += 10; // Accomplishments score += values.accomplishments.length * 8; @@ -64,18 +98,18 @@ const MarketCalculator = () => { // Personality traits score += values.personality.length * 6; - // Calculate result + // Calculate result with references to the four novels let result = ''; if (score >= 100) { - result = "Most Eligible! You rival Mr. Darcy in desirability. Mrs. Bennet would faint from joy at the prospect of your acquaintance."; + result = "Most Eligible! Your prospects rival Mr. Darcy's, and even Lady Catherine de Bourgh would struggle to find fault with your situation."; } else if (score >= 75) { - result = "Highly Suitable! Like Mr. Bingley, you present an excellent prospect for any family's eldest daughter."; + result = "Highly Suitable! Like Colonel Brandon, you possess both the means and character to make an excellent match."; } else if (score >= 50) { - result = "Quite Promising! Colonel Brandon would consider you a worthy competitor in the marriage market."; + result = "Quite Promising! You stand with Edmund Bertram - respectable, principled, and possessed of good connections."; } else if (score >= 25) { - result = "Moderately Advantageous! You stand somewhere between a country parson and a militia officer in eligibility."; + result = "Moderately Advantageous! Like Henry Tilney, your situation is comfortable though not grand, with room for improvement."; } else { - result = "Rather Modest! Perhaps consider a position as a governess or companion while improving your prospects?"; + result = "Rather Modest! You might find yourself in Fanny Price's position - dependent on the goodwill of others, but possessed of true worth."; } setResult(result); @@ -122,6 +156,25 @@ const MarketCalculator = () => { />
+ {/* Location Selection */} +
+ + +
+ {/* Connections Input */}
diff --git a/src/types/vendors.ts b/src/types/vendors.ts index c721764..c267f8f 100644 --- a/src/types/vendors.ts +++ b/src/types/vendors.ts @@ -5,8 +5,8 @@ export type VendorCategory = | 'catering' | 'music' | 'flowers' - | 'transport' - | 'stationery'; + | 'matchmaking' + | 'modiste'; export type VendorRating = { reputation: number;