{"ast":null,"code":"import { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nfunction PortfolioComponent_button_10_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 14);\n i0.ɵɵlistener(\"click\", function PortfolioComponent_button_10_Template_button_click_0_listener() {\n const category_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.setActiveCategory(category_r2.id));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const category_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r2.getButtonClass(category_r2.id));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", category_r2.name, \" \");\n }\n}\nfunction PortfolioComponent_div_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 15);\n i0.ɵɵlistener(\"click\", function PortfolioComponent_div_14_Template_div_click_0_listener() {\n const item_r5 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.openModal(item_r5));\n });\n i0.ɵɵelementStart(1, \"div\", 16)(2, \"div\", 17)(3, \"div\", 18);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(5, \"div\", 19)(6, \"div\", 20);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(7, \"svg\", 21);\n i0.ɵɵelement(8, \"path\", 22)(9, \"path\", 23);\n i0.ɵɵelementEnd();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(10, \"span\", 24);\n i0.ɵɵtext(11, \"Vergr\\u00F6\\u00DFern\");\n i0.ɵɵelementEnd()()()();\n i0.ɵɵelementStart(12, \"div\", 25)(13, \"h3\", 26);\n i0.ɵɵtext(14);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"p\", 27);\n i0.ɵɵtext(16);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(17, \"p\", 28);\n i0.ɵɵtext(18);\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const item_r5 = ctx.$implicit;\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngClass\", item_r5.gradientClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", item_r5.title, \" \");\n i0.ɵɵadvance(10);\n i0.ɵɵtextInterpolate1(\" \", item_r5.title, \" \");\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(item_r5.category);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(item_r5.description);\n }\n}\nfunction PortfolioComponent_div_15_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 29);\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(1, \"svg\", 30);\n i0.ɵɵelement(2, \"path\", 31);\n i0.ɵɵelementEnd();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(3, \"h3\", 32);\n i0.ɵɵtext(4, \"Keine Projekte gefunden\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"p\", 27);\n i0.ɵɵtext(6, \"F\\u00FCr diese Kategorie sind noch keine Projekte verf\\u00FCgbar.\");\n i0.ɵɵelementEnd()();\n }\n}\nfunction PortfolioComponent_div_16_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 33);\n i0.ɵɵlistener(\"click\", function PortfolioComponent_div_16_Template_div_click_0_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.closeModal());\n });\n i0.ɵɵelementStart(1, \"div\", 34);\n i0.ɵɵlistener(\"click\", function PortfolioComponent_div_16_Template_div_click_1_listener($event) {\n i0.ɵɵrestoreView(_r6);\n return i0.ɵɵresetView($event.stopPropagation());\n });\n i0.ɵɵelementStart(2, \"div\", 35)(3, \"button\", 36);\n i0.ɵɵlistener(\"click\", function PortfolioComponent_div_16_Template_button_click_3_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.closeModal());\n });\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(4, \"svg\", 37);\n i0.ɵɵelement(5, \"path\", 38);\n i0.ɵɵelementEnd()();\n i0.ɵɵnamespaceHTML();\n i0.ɵɵelementStart(6, \"div\", 39);\n i0.ɵɵtext(7);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"div\", 40)(9, \"h2\", 41);\n i0.ɵɵtext(10);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"p\", 42);\n i0.ɵɵtext(12);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(13, \"p\", 43);\n i0.ɵɵtext(14);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"div\", 44)(16, \"div\")(17, \"span\", 45);\n i0.ɵɵtext(18, \"Event-Typ:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(19, \"span\", 46);\n i0.ɵɵtext(20);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(21, \"div\")(22, \"span\", 45);\n i0.ɵɵtext(23, \"Saison:\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(24, \"span\", 46);\n i0.ɵɵtext(25);\n i0.ɵɵelementEnd()()()()()()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance(6);\n i0.ɵɵproperty(\"ngClass\", ctx_r2.selectedItem.gradientClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r2.selectedItem.title, \" \");\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx_r2.selectedItem.title);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.selectedItem.category);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r2.selectedItem.fullDescription);\n i0.ɵɵadvance(6);\n i0.ɵɵtextInterpolate(ctx_r2.selectedItem.eventType);\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate(ctx_r2.selectedItem.season);\n }\n}\nexport class PortfolioComponent {\n constructor() {\n this.activeCategory = 'all';\n this.selectedItem = null;\n this.categories = [{\n id: 'all',\n name: 'Alle'\n }, {\n id: 'wedding',\n name: 'Hochzeiten'\n }, {\n id: 'funeral',\n name: 'Beerdigungen'\n }, {\n id: 'corporate',\n name: 'Corporate Events'\n }, {\n id: 'private',\n name: 'Private Feiern'\n }];\n this.portfolioItems = [{\n id: 1,\n title: 'Romantische Garten-Hochzeit',\n category: 'Hochzeit',\n categoryId: 'wedding',\n description: 'Pastellfarbene Rosen und Pfingstrosen',\n fullDescription: 'Eine traumhafte Hochzeit im Garten mit einer zarten Farbpalette aus Rosa, Weiß und Grün. Brautstrauß aus Gartenrosen, Pfingstrosen und Eukalyptus, ergänzt durch romantische Tischdekorationen mit Kerzen und Vintage-Vasen.',\n eventType: 'Garten-Hochzeit',\n season: 'Frühling',\n gradientClass: 'from-pink-400 to-rose-500'\n }, {\n id: 2,\n title: 'Elegante Kirchenhochzeit',\n category: 'Hochzeit',\n categoryId: 'wedding',\n description: 'Klassische weiße Lilien und Rosen',\n fullDescription: 'Eine elegante Kirchenhochzeit mit klassischen weißen Blumen. Opulenter Brautstrauß aus weißen Rosen, Lilien und Schleierkraut, kombiniert mit stilvollen Altargestecken und Kirchenbankschmuck.',\n eventType: 'Kirchenhochzeit',\n season: 'Sommer',\n gradientClass: 'from-white to-gray-200'\n }, {\n id: 3,\n title: 'Würdevoller Abschied',\n category: 'Trauerfeier',\n categoryId: 'funeral',\n description: 'Trauerkranz mit weißen Chrysanthemen',\n fullDescription: 'Ein würdevoller Trauerkranz aus weißen Chrysanthemen, Lilien und Tannengrün. Ergänzt durch passende Gestecke und Sargschmuck für eine respektvolle Abschiedszeremonie.',\n eventType: 'Trauerfeier',\n season: 'Herbst',\n gradientClass: 'from-gray-400 to-gray-600'\n }, {\n id: 4,\n title: 'Firmen-Jubiläum',\n category: 'Corporate Event',\n categoryId: 'corporate',\n description: 'Moderne Arrangements in Firmenfarben',\n fullDescription: 'Stilvolle Blumenarrangements für ein Firmenjubiläum in den Unternehmensfarben Blau und Weiß. Moderne Gestecke mit Hortensien, weißen Rosen und blauen Akzenten für Empfang und Festsaal.',\n eventType: 'Firmenjubiläum',\n season: 'Winter',\n gradientClass: 'from-blue-500 to-indigo-600'\n }, {\n id: 5,\n title: 'Goldene Hochzeit',\n category: 'Private Feier',\n categoryId: 'private',\n description: 'Goldene Akzente mit gelben Rosen',\n fullDescription: 'Eine festliche Dekoration zur Goldenen Hochzeit mit gelben Rosen, goldenen Akzenten und eleganten Tischgestecken. Warme Farbtöne schaffen eine gemütliche und festliche Atmosphäre.',\n eventType: 'Goldene Hochzeit',\n season: 'Herbst',\n gradientClass: 'from-yellow-400 to-amber-500'\n }, {\n id: 6,\n title: 'Taufe im Frühling',\n category: 'Private Feier',\n categoryId: 'private',\n description: 'Zarte Frühlingsblumen in Pastelltönen',\n fullDescription: 'Eine liebevolle Taufdekoration mit zarten Frühlingsblumen in Pastelltönen. Kleine Gestecke mit Tulpen, Narzissen und Primeln schaffen eine fröhliche und festliche Stimmung.',\n eventType: 'Taufe',\n season: 'Frühling',\n gradientClass: 'from-green-300 to-emerald-400'\n }];\n }\n get filteredPortfolio() {\n if (this.activeCategory === 'all') {\n return this.portfolioItems;\n }\n return this.portfolioItems.filter(item => item.categoryId === this.activeCategory);\n }\n setActiveCategory(categoryId) {\n this.activeCategory = categoryId;\n }\n getButtonClass(categoryId) {\n const baseClass = 'px-6 py-2 rounded-full font-medium transition-all duration-200';\n if (this.activeCategory === categoryId) {\n return `${baseClass} bg-primary-600 text-white shadow-md`;\n }\n return `${baseClass} bg-gray-200 text-gray-700 hover:bg-primary-100 hover:text-primary-700`;\n }\n openModal(item) {\n this.selectedItem = item;\n document.body.style.overflow = 'hidden';\n }\n closeModal() {\n this.selectedItem = null;\n document.body.style.overflow = 'auto';\n }\n static {\n this.ɵfac = function PortfolioComponent_Factory(t) {\n return new (t || PortfolioComponent)();\n };\n }\n static {\n this.ɵcmp = /*@__PURE__*/i0.ɵɵdefineComponent({\n type: PortfolioComponent,\n selectors: [[\"app-portfolio\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 17,\n vars: 4,\n consts: [[1, \"min-h-screen\", \"bg-gray-50\"], [1, \"bg-white\", \"py-16\"], [1, \"max-w-7xl\", \"mx-auto\", \"px-4\", \"sm:px-6\", \"lg:px-8\", \"text-center\"], [1, \"text-4xl\", \"md:text-5xl\", \"font-serif\", \"font-bold\", \"text-gray-900\", \"mb-6\"], [1, \"text-xl\", \"text-gray-600\", \"max-w-3xl\", \"mx-auto\"], [1, \"py-8\", \"bg-white\", \"border-b\"], [1, \"max-w-7xl\", \"mx-auto\", \"px-4\", \"sm:px-6\", \"lg:px-8\"], [1, \"flex\", \"flex-wrap\", \"justify-center\", \"gap-4\"], [\"class\", \"px-6 py-2 rounded-full font-medium transition-all duration-200\", 3, \"class\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"py-16\"], [1, \"grid\", \"grid-cols-1\", \"md:grid-cols-2\", \"lg:grid-cols-3\", \"gap-8\"], [\"class\", \"group cursor-pointer\", 3, \"click\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"text-center py-16\", 4, \"ngIf\"], [\"class\", \"fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 p-4\", 3, \"click\", 4, \"ngIf\"], [1, \"px-6\", \"py-2\", \"rounded-full\", \"font-medium\", \"transition-all\", \"duration-200\", 3, \"click\"], [1, \"group\", \"cursor-pointer\", 3, \"click\"], [1, \"relative\", \"overflow-hidden\", \"rounded-lg\", \"shadow-md\", \"group-hover:shadow-xl\", \"transition-all\", \"duration-300\", \"transform\", \"group-hover:-translate-y-1\"], [1, \"aspect-w-4\", \"aspect-h-3\"], [1, \"w-full\", \"h-64\", \"bg-gradient-to-br\", \"flex\", \"items-center\", \"justify-center\", \"text-white\", \"font-medium\", \"text-lg\", 3, \"ngClass\"], [1, \"absolute\", \"inset-0\", \"bg-black\", \"bg-opacity-0\", \"group-hover:bg-opacity-40\", \"transition-all\", \"duration-300\", \"flex\", \"items-center\", \"justify-center\"], [1, \"opacity-0\", \"group-hover:opacity-100\", \"transition-opacity\", \"duration-300\", \"text-center\"], [\"fill\", \"none\", \"stroke\", \"currentColor\", \"viewBox\", \"0 0 24 24\", 1, \"w-12\", \"h-12\", \"text-white\", \"mx-auto\", \"mb-2\"], [\"stroke-linecap\", \"round\", \"stroke-linejoin\", \"round\", \"stroke-width\", \"2\", \"d\", \"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"], [\"stroke-linecap\", \"round\", \"stroke-linejoin\", \"round\", \"stroke-width\", \"2\", \"d\", \"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\"], [1, \"text-white\", \"font-medium\"], [1, \"mt-4\"], [1, \"text-lg\", \"font-semibold\", \"text-gray-900\", \"group-hover:text-primary-600\", \"transition-colors\", \"duration-200\"], [1, \"text-gray-600\"], [1, \"text-sm\", \"text-gray-500\", \"mt-1\"], [1, \"text-center\", \"py-16\"], [\"fill\", \"none\", \"stroke\", \"currentColor\", \"viewBox\", \"0 0 24 24\", 1, \"w-16\", \"h-16\", \"text-gray-400\", \"mx-auto\", \"mb-4\"], [\"stroke-linecap\", \"round\", \"stroke-linejoin\", \"round\", \"stroke-width\", \"2\", \"d\", \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"], [1, \"text-lg\", \"font-medium\", \"text-gray-900\", \"mb-2\"], [1, \"fixed\", \"inset-0\", \"bg-black\", \"bg-opacity-75\", \"flex\", \"items-center\", \"justify-center\", \"z-50\", \"p-4\", 3, \"click\"], [1, \"bg-white\", \"rounded-lg\", \"max-w-4xl\", \"w-full\", \"max-h-[90vh]\", \"overflow-y-auto\", 3, \"click\"], [1, \"relative\"], [1, \"absolute\", \"top-4\", \"right-4\", \"z-10\", \"bg-white\", \"rounded-full\", \"p-2\", \"shadow-lg\", \"hover:bg-gray-100\", \"transition-colors\", \"duration-200\", 3, \"click\"], [\"fill\", \"none\", \"stroke\", \"currentColor\", \"viewBox\", \"0 0 24 24\", 1, \"w-6\", \"h-6\", \"text-gray-600\"], [\"stroke-linecap\", \"round\", \"stroke-linejoin\", \"round\", \"stroke-width\", \"2\", \"d\", \"M6 18L18 6M6 6l12 12\"], [1, \"h-96\", \"bg-gradient-to-br\", \"flex\", \"items-center\", \"justify-center\", \"text-white\", \"font-medium\", \"text-2xl\", 3, \"ngClass\"], [1, \"p-6\"], [1, \"text-2xl\", \"font-serif\", \"font-bold\", \"text-gray-900\", \"mb-2\"], [1, \"text-primary-600\", \"font-medium\", \"mb-4\"], [1, \"text-gray-700\", \"mb-6\"], [1, \"grid\", \"grid-cols-2\", \"gap-4\", \"text-sm\"], [1, \"font-medium\", \"text-gray-900\"], [1, \"text-gray-600\", \"ml-2\"]],\n template: function PortfolioComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"section\", 1)(2, \"div\", 2)(3, \"h1\", 3);\n i0.ɵɵtext(4, \" Unser Portfolio \");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"p\", 4);\n i0.ɵɵtext(6, \" Entdecken Sie unsere vielf\\u00E4ltigen Blumenarrangements f\\u00FCr Hochzeiten, Beerdigungen und besondere Events. Jedes Arrangement wird mit Liebe zum Detail und Leidenschaft f\\u00FCr die Floristik gestaltet. \");\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(7, \"section\", 5)(8, \"div\", 6)(9, \"div\", 7);\n i0.ɵɵtemplate(10, PortfolioComponent_button_10_Template, 2, 3, \"button\", 8);\n i0.ɵɵelementEnd()()();\n i0.ɵɵelementStart(11, \"section\", 9)(12, \"div\", 6)(13, \"div\", 10);\n i0.ɵɵtemplate(14, PortfolioComponent_div_14_Template, 19, 5, \"div\", 11);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(15, PortfolioComponent_div_15_Template, 7, 0, \"div\", 12);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(16, PortfolioComponent_div_16_Template, 26, 7, \"div\", 13);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(10);\n i0.ɵɵproperty(\"ngForOf\", ctx.categories);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngForOf\", ctx.filteredPortfolio);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.filteredPortfolio.length === 0);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.selectedItem);\n }\n },\n dependencies: [CommonModule, i1.NgClass, i1.NgForOf, i1.NgIf],\n encapsulation: 2\n });\n }\n}","map":{"version":3,"names":["CommonModule","i0","ɵɵelementStart","ɵɵlistener","PortfolioComponent_button_10_Template_button_click_0_listener","category_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","setActiveCategory","id","ɵɵtext","ɵɵelementEnd","ɵɵclassMap","getButtonClass","ɵɵadvance","ɵɵtextInterpolate1","name","PortfolioComponent_div_14_Template_div_click_0_listener","item_r5","_r4","openModal","ɵɵelement","ɵɵproperty","gradientClass","title","ɵɵtextInterpolate","category","description","PortfolioComponent_div_16_Template_div_click_0_listener","_r6","closeModal","PortfolioComponent_div_16_Template_div_click_1_listener","$event","stopPropagation","PortfolioComponent_div_16_Template_button_click_3_listener","selectedItem","fullDescription","eventType","season","PortfolioComponent","constructor","activeCategory","categories","portfolioItems","categoryId","filteredPortfolio","filter","item","baseClass","document","body","style","overflow","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","PortfolioComponent_Template","rf","ctx","ɵɵtemplate","PortfolioComponent_button_10_Template","PortfolioComponent_div_14_Template","PortfolioComponent_div_15_Template","PortfolioComponent_div_16_Template","length","i1","NgClass","NgForOf","NgIf","encapsulation"],"sources":["/Users/julianvollmer/workspace/florale-emotion/src/app/pages/portfolio/portfolio.component.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-portfolio',\n standalone: true,\n imports: [CommonModule],\n template: `\n
\n Entdecken Sie unsere vielfältigen Blumenarrangements für Hochzeiten, \n Beerdigungen und besondere Events. Jedes Arrangement wird mit Liebe \n zum Detail und Leidenschaft für die Floristik gestaltet.\n
\n{{ item.category }}
\n{{ item.description }}
\nFür diese Kategorie sind noch keine Projekte verfügbar.
\n{{ selectedItem.category }}
\n{{ selectedItem.fullDescription }}
\n \n