@seepmaini/stencil-recipe-components 0.0.1

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 (118) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/app-globals-V2Kpy_OQ.js +5 -0
  3. package/dist/cjs/index-BgGiRDlK.js +1502 -0
  4. package/dist/cjs/index.cjs.js +7 -0
  5. package/dist/cjs/loader.cjs.js +13 -0
  6. package/dist/cjs/my-component.cjs.entry.js +33 -0
  7. package/dist/cjs/no-recipe-found.cjs.entry.js +25 -0
  8. package/dist/cjs/recipe-browser.cjs.entry.js +64 -0
  9. package/dist/cjs/recipe-button.cjs.entry.js +24 -0
  10. package/dist/cjs/recipe-card.cjs.entry.js +78 -0
  11. package/dist/cjs/recipe-form-section.cjs.entry.js +20 -0
  12. package/dist/cjs/recipe-input.cjs.entry.js +24 -0
  13. package/dist/cjs/recipe-navbar.cjs.entry.js +30 -0
  14. package/dist/cjs/recipe-textarea.cjs.entry.js +23 -0
  15. package/dist/cjs/search-food.cjs.entry.js +36 -0
  16. package/dist/cjs/stencil-recipe-components.cjs.js +25 -0
  17. package/dist/collection/collection-manifest.json +22 -0
  18. package/dist/collection/components/my-component/my-component.cmp.test.js +27 -0
  19. package/dist/collection/components/my-component/my-component.css +3 -0
  20. package/dist/collection/components/my-component/my-component.js +95 -0
  21. package/dist/collection/components/no-recipe-found/no-recipe-found.css +76 -0
  22. package/dist/collection/components/no-recipe-found/no-recipe-found.js +107 -0
  23. package/dist/collection/components/recipe-browser/recipe-browser.css +183 -0
  24. package/dist/collection/components/recipe-browser/recipe-browser.js +220 -0
  25. package/dist/collection/components/recipe-button/recipe-button.css +34 -0
  26. package/dist/collection/components/recipe-button/recipe-button.js +89 -0
  27. package/dist/collection/components/recipe-card/recipe-card.css +207 -0
  28. package/dist/collection/components/recipe-card/recipe-card.js +260 -0
  29. package/dist/collection/components/recipe-form-section/recipe-form-section.css +54 -0
  30. package/dist/collection/components/recipe-form-section/recipe-form-section.js +82 -0
  31. package/dist/collection/components/recipe-input/recipe-input.css +47 -0
  32. package/dist/collection/components/recipe-input/recipe-input.js +167 -0
  33. package/dist/collection/components/recipe-navbar/recipe-navbar.css +56 -0
  34. package/dist/collection/components/recipe-navbar/recipe-navbar.js +55 -0
  35. package/dist/collection/components/recipe-textarea/recipe-textarea.css +43 -0
  36. package/dist/collection/components/recipe-textarea/recipe-textarea.js +146 -0
  37. package/dist/collection/components/search-food/search-food.css +117 -0
  38. package/dist/collection/components/search-food/search-food.js +92 -0
  39. package/dist/collection/index.js +10 -0
  40. package/dist/collection/utils/utils.js +3 -0
  41. package/dist/collection/utils/utils.unit.test.js +16 -0
  42. package/dist/components/index.d.ts +35 -0
  43. package/dist/components/index.js +1 -0
  44. package/dist/components/my-component.d.ts +11 -0
  45. package/dist/components/my-component.js +1 -0
  46. package/dist/components/no-recipe-found.d.ts +11 -0
  47. package/dist/components/no-recipe-found.js +1 -0
  48. package/dist/components/p-DlkZDAps.js +1 -0
  49. package/dist/components/recipe-browser.d.ts +11 -0
  50. package/dist/components/recipe-browser.js +1 -0
  51. package/dist/components/recipe-button.d.ts +11 -0
  52. package/dist/components/recipe-button.js +1 -0
  53. package/dist/components/recipe-card.d.ts +11 -0
  54. package/dist/components/recipe-card.js +1 -0
  55. package/dist/components/recipe-form-section.d.ts +11 -0
  56. package/dist/components/recipe-form-section.js +1 -0
  57. package/dist/components/recipe-input.d.ts +11 -0
  58. package/dist/components/recipe-input.js +1 -0
  59. package/dist/components/recipe-navbar.d.ts +11 -0
  60. package/dist/components/recipe-navbar.js +1 -0
  61. package/dist/components/recipe-textarea.d.ts +11 -0
  62. package/dist/components/recipe-textarea.js +1 -0
  63. package/dist/components/search-food.d.ts +11 -0
  64. package/dist/components/search-food.js +1 -0
  65. package/dist/esm/app-globals-DQuL1Twl.js +3 -0
  66. package/dist/esm/index-DxpnpZMq.js +1495 -0
  67. package/dist/esm/index.js +5 -0
  68. package/dist/esm/loader.js +11 -0
  69. package/dist/esm/my-component.entry.js +31 -0
  70. package/dist/esm/no-recipe-found.entry.js +23 -0
  71. package/dist/esm/recipe-browser.entry.js +62 -0
  72. package/dist/esm/recipe-button.entry.js +22 -0
  73. package/dist/esm/recipe-card.entry.js +76 -0
  74. package/dist/esm/recipe-form-section.entry.js +18 -0
  75. package/dist/esm/recipe-input.entry.js +22 -0
  76. package/dist/esm/recipe-navbar.entry.js +28 -0
  77. package/dist/esm/recipe-textarea.entry.js +21 -0
  78. package/dist/esm/search-food.entry.js +34 -0
  79. package/dist/esm/stencil-recipe-components.js +21 -0
  80. package/dist/index.cjs.js +1 -0
  81. package/dist/index.js +1 -0
  82. package/dist/stencil-recipe-components/index.esm.js +1 -0
  83. package/dist/stencil-recipe-components/p-06b59cd5.entry.js +1 -0
  84. package/dist/stencil-recipe-components/p-2289adb0.entry.js +1 -0
  85. package/dist/stencil-recipe-components/p-5df4665a.entry.js +1 -0
  86. package/dist/stencil-recipe-components/p-83e3c89d.entry.js +1 -0
  87. package/dist/stencil-recipe-components/p-87586541.entry.js +1 -0
  88. package/dist/stencil-recipe-components/p-969201bf.entry.js +1 -0
  89. package/dist/stencil-recipe-components/p-DQuL1Twl.js +1 -0
  90. package/dist/stencil-recipe-components/p-DxpnpZMq.js +3 -0
  91. package/dist/stencil-recipe-components/p-b5c77a1a.entry.js +1 -0
  92. package/dist/stencil-recipe-components/p-c8a44beb.entry.js +1 -0
  93. package/dist/stencil-recipe-components/p-efd4f7bb.entry.js +1 -0
  94. package/dist/stencil-recipe-components/p-f5524ed4.entry.js +1 -0
  95. package/dist/stencil-recipe-components/stencil-recipe-components.esm.js +1 -0
  96. package/dist/types/components/my-component/my-component.cmp.test.d.ts +1 -0
  97. package/dist/types/components/my-component/my-component.d.ts +16 -0
  98. package/dist/types/components/no-recipe-found/no-recipe-found.d.ts +9 -0
  99. package/dist/types/components/recipe-browser/recipe-browser.d.ts +21 -0
  100. package/dist/types/components/recipe-button/recipe-button.d.ts +6 -0
  101. package/dist/types/components/recipe-card/recipe-card.d.ts +34 -0
  102. package/dist/types/components/recipe-form-section/recipe-form-section.d.ts +6 -0
  103. package/dist/types/components/recipe-input/recipe-input.d.ts +10 -0
  104. package/dist/types/components/recipe-navbar/recipe-navbar.d.ts +4 -0
  105. package/dist/types/components/recipe-textarea/recipe-textarea.d.ts +9 -0
  106. package/dist/types/components/search-food/search-food.d.ts +10 -0
  107. package/dist/types/components.d.ts +558 -0
  108. package/dist/types/index.d.ts +11 -0
  109. package/dist/types/stencil-public-runtime.d.ts +1872 -0
  110. package/dist/types/utils/utils.d.ts +1 -0
  111. package/dist/types/utils/utils.unit.test.d.ts +1 -0
  112. package/loader/cdn.js +1 -0
  113. package/loader/index.cjs.js +1 -0
  114. package/loader/index.d.ts +24 -0
  115. package/loader/index.es2017.js +1 -0
  116. package/loader/index.js +2 -0
  117. package/package.json +82 -0
  118. package/readme.md +111 -0
@@ -0,0 +1,5 @@
1
+ function format(first, middle, last) {
2
+ return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');
3
+ }
4
+
5
+ export { format };
@@ -0,0 +1,11 @@
1
+ import { b as bootstrapLazy } from './index-DxpnpZMq.js';
2
+ export { s as setNonce } from './index-DxpnpZMq.js';
3
+ import { g as globalScripts } from './app-globals-DQuL1Twl.js';
4
+
5
+ const defineCustomElements = async (win, options) => {
6
+ if (typeof window === 'undefined') return undefined;
7
+ await globalScripts();
8
+ return bootstrapLazy([["my-component",[[513,"my-component",{"first":[1],"middle":[1],"last":[1]}]]],["no-recipe-found",[[513,"no-recipe-found",{"header":[1],"message":[1],"buttonText":[1,"button-text"]}]]],["recipe-browser",[[513,"recipe-browser",{"categories":[16],"areas":[16],"ingredients":[16],"selectedCategory":[1,"selected-category"],"selectedArea":[1,"selected-area"],"selectedIngredient":[1,"selected-ingredient"]}]]],["recipe-button",[[769,"recipe-button",{"variant":[1],"type":[1],"disabled":[4]}]]],["recipe-card",[[513,"recipe-card",{"recipeId":[1,"recipe-id"],"recipeTitle":[1,"recipe-title"],"image":[1],"category":[1],"cuisine":[1],"favorite":[4],"showPlanner":[32],"selectedDay":[32],"selectedMeal":[32]}]]],["recipe-form-section",[[769,"recipe-form-section",{"number":[1],"formTitle":[1,"form-title"],"description":[1]}]]],["recipe-input",[[513,"recipe-input",{"label":[1],"name":[1],"type":[1],"placeholder":[1],"value":[1],"required":[4],"helper":[1]}]]],["recipe-navbar",[[513,"recipe-navbar",{"currentPage":[1,"current-page"]}]]],["recipe-textarea",[[513,"recipe-textarea",{"label":[1],"name":[1],"rows":[2],"placeholder":[1],"value":[1],"required":[4]}]]],["search-food",[[513,"search-food",{"search":[1025]}]]]], options);
9
+ };
10
+
11
+ export { defineCustomElements };
@@ -0,0 +1,31 @@
1
+ import { r as registerInstance, h } from './index-DxpnpZMq.js';
2
+ import { format } from './index.js';
3
+
4
+ const myComponentCss = () => `:host{display:block}`;
5
+
6
+ const MyComponent = class {
7
+ constructor(hostRef) {
8
+ registerInstance(this, hostRef);
9
+ }
10
+ /**
11
+ * The first name
12
+ */
13
+ first;
14
+ /**
15
+ * The middle name
16
+ */
17
+ middle;
18
+ /**
19
+ * The last name
20
+ */
21
+ last;
22
+ getText() {
23
+ return format(this.first, this.middle, this.last);
24
+ }
25
+ render() {
26
+ return h("div", { key: 'edcd595f3b87cfa751442fba79e07a8823826cbc' }, "Hello, World! I'm ", this.getText());
27
+ }
28
+ };
29
+ MyComponent.style = myComponentCss();
30
+
31
+ export { MyComponent as my_component };
@@ -0,0 +1,23 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DxpnpZMq.js';
2
+
3
+ const noRecipeFoundCss = () => `:host{display:block;font-family:Arial, sans-serif}.icon{width:70px;height:70px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;border-radius:50%;background:#ffffff;font-size:32px}.empty-state{width:min(650px, calc(100% - 40px));margin:50px auto;padding:55px 25px;display:flex;flex-direction:column;align-items:center;text-align:center;background:#ffffff;border:1px solid #eeeeee;border-radius:20px;box-shadow:0 8px 30px rgba(0, 0, 0, 0.08);box-sizing:border-box}h2{margin:0 0 10px;color:#2c2c2c;font-size:28px;font-weight:700}p{max-width:500px;margin:0 0 25px;color:#eeeeee;font-size:15px;line-height:1.6}button{padding:11px 20px;border:none;border-radius:10px;background:#f97316;color:white;font-family:Arial, sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background 0.2s ease, transform 0.2s ease}button:hover{background:#ea580c;transform:translateY(-2px)}button:active{transform:translateY(0)}@media (max-width: 600px){.empty-state{width:calc(100% - 24px);margin:35px auto;padding:40px 20px}h2{font-size:24px}p{font-size:14px}}`;
4
+
5
+ const NoRecipesFound = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.clear = createEvent(this, "clear");
9
+ }
10
+ header = 'No Recipes Found';
11
+ message = 'We couldn’t find any recipes matching your search. Try a different recipe, category, cuisine, or ingredient.';
12
+ buttonText = 'Clear Search';
13
+ clear;
14
+ handleClear = () => {
15
+ this.clear.emit();
16
+ };
17
+ render() {
18
+ return (h("section", { key: '8f32c60bdbe3662614a69ed6df89ee3100381f74', class: "empty-state" }, h("div", { key: 'ab15444f85192f5a0599a8639ee78513359d0489', class: "icon", "aria-hidden": "true" }, "\uD83C\uDF7D\uFE0F"), h("h2", { key: '1a4fac73782ea53e4405b38f28686eea414d1d94' }, this.header), h("p", { key: 'ee205e4e18009cc93995d717bf9129c265f293f7' }, this.message), h("button", { key: '90f4c76d61253e050ae0fc8ff005dfba2e053d98', type: "button", onClick: this.handleClear }, this.buttonText)));
19
+ }
20
+ };
21
+ NoRecipesFound.style = noRecipeFoundCss();
22
+
23
+ export { NoRecipesFound as no_recipe_found };
@@ -0,0 +1,62 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeBrowserCss = () => `:host{display:block;font-family:Arial, sans-serif;color:#2c2c2c}.wrapper{width:min(1200px, calc(100% - 40px));margin:0 auto;padding:45px 0}.header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px}.heading{max-width:650px}.eyebrow{display:block;margin-bottom:8px;font-size:14px;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:#f97316}h2{margin:0;font-size:clamp(28px, 4vw, 40px);line-height:1.1;font-weight:700;letter-spacing:-0.03em}.heading p{margin:10px 0 0;font-size:16px;line-height:1.6;color:#777777}.clear-button{flex-shrink:0;padding:10px 17px;border:1px solid #e5e7eb;border-radius:10px;background:white;color:#2c2c2c;font-family:Arial, sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background 0.2s ease, color 0.2s ease, border-color 0.2s ease}.clear-button:hover{background:#fff7ed;border-color:#fdba74;color:#ea580c}.filters{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:18px}.filter-card{display:flex;gap:16px;padding:22px;background:white;border:1px solid #eeeeee;border-radius:18px;box-shadow:0 6px 25px rgba(0, 0, 0, 0.04);transition:transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease}.filter-card:hover{transform:translateY(-3px);border-color:#fed7aa;box-shadow:0 12px 30px rgba(0, 0, 0, 0.08)}.icon{width:46px;height:46px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:12px;font-size:22px}.category-icon{background:#fff7ed}.cuisine-icon{background:#eff6ff}.ingredient-icon{background:#f0fdf4}.content{flex:1;min-width:0}.content h3{margin:0;font-size:17px;font-weight:700}.content p{margin:6px 0 14px;font-size:13px;line-height:1.5;color:#777}select{display:block;width:100%;height:42px;padding:0 12px;border:1px solid #e5e7eb;border-radius:9px;background:white;color:#2c2c2c;font-family:Arial, sans-serif;font-size:14px;cursor:pointer;outline:none;box-sizing:border-box;transition:border-color 0.2s ease, box-shadow 0.2s ease}select:hover{border-color:#fb923c}select:focus{border-color:#f97316;box-shadow:0 0 0 3px rgba(249, 115, 22, 0.12)}@media (max-width: 900px){.filters{grid-template-columns:repeat(2, minmax(0, 1fr))}.filter-card:last-child{grid-column:span 2}}@media (max-width: 600px){.wrapper{width:calc(100% - 24px);padding:35px 0}.header{align-items:flex-start;flex-direction:column}.clear-button{align-self:flex-start}.filters{grid-template-columns:1fr;gap:14px}.filter-card:last-child{grid-column:auto}.filter-card{padding:18px}}@media (prefers-reduced-motion: reduce){.filter-card,.clear-button,select{transition:none}}`;
4
+
5
+ const RecipeBrowser = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.browseChange = createEvent(this, "browseChange");
9
+ this.browseClear = createEvent(this, "browseClear");
10
+ }
11
+ categories = [];
12
+ areas = [];
13
+ ingredients = [];
14
+ selectedCategory = '';
15
+ selectedArea = '';
16
+ selectedIngredient = '';
17
+ browseChange;
18
+ browseClear;
19
+ handleCategory = (event) => {
20
+ const select = event.target;
21
+ const value = select.value;
22
+ if (!value) {
23
+ return;
24
+ }
25
+ this.browseChange.emit({
26
+ type: 'category',
27
+ value,
28
+ });
29
+ };
30
+ handleArea = (event) => {
31
+ const select = event.target;
32
+ const value = select.value;
33
+ if (!value) {
34
+ return;
35
+ }
36
+ this.browseChange.emit({
37
+ type: 'area',
38
+ value,
39
+ });
40
+ };
41
+ handleIngredient = (event) => {
42
+ const select = event.target;
43
+ const value = select.value;
44
+ if (!value) {
45
+ return;
46
+ }
47
+ this.browseChange.emit({
48
+ type: 'ingredient',
49
+ value,
50
+ });
51
+ };
52
+ handleClear = () => {
53
+ this.browseClear.emit();
54
+ };
55
+ render() {
56
+ const hasSelection = this.selectedCategory !== '' || this.selectedArea !== '' || this.selectedIngredient !== '';
57
+ return (h("section", { key: '1e4b3474c45baf701d6212a58d4cfc465063bc5e', class: "wrapper" }, h("div", { key: '165084c65d6e9a4e457c601fc8ce6feb0321544c', class: "header" }, h("div", { key: '6fd026ea128dca2e65c3cbdfdc4908ee34ee4bfc', class: "heading" }, h("span", { key: '7a110eeebd3835354934bca2e141248142beb8e2', class: "eyebrow" }, "\u2726 BROWSE RECIPES"), h("h2", { key: '74431b3cfda0539b1c639d2f5ec71092dada18d9' }, "Find Your Perfect Recipe"), h("p", { key: 'd4ca3d04dd15a8f3a74020eafc454770a6d15e17' }, "Explore delicious recipes by category, cuisine or ingredient.")), hasSelection && (h("button", { key: 'c0576d993b85806611797e3b34c52773594b28ca', type: "button", class: "clear-button", onClick: this.handleClear }, "Clear Filters"))), h("div", { key: 'db81e498a63b5ba1ca7fab36bef03ca69337f695', class: "filters" }, h("div", { key: '1c4981b68d5ffffb2533a2ba08ed31746d8ed63d', class: "filter-card" }, h("div", { key: '5e253ee63f146f9d14404e6d9c00c2132cb32c6e', class: "content" }, h("h3", { key: 'c803bb45c98d0108babb53c77ec4fe495ebfc475' }, "Category"), h("p", { key: 'b81b23f23c834ad6e718213e640221e7361e41c4' }, "Find recipes by food category."), h("select", { key: '79b2055724ae09bc9ff5810ed85549abdf82025c', "aria-label": "Select recipe category", onChange: this.handleCategory }, h("option", { key: '2c8426061798f6790b0e6c06e232388aad1f2010', value: "" }, "All Categories"), this.categories.map(category => (h("option", { value: category, selected: this.selectedCategory === category }, category)))))), h("div", { key: '7809c3a73c2f32c5b1bcf318249b7cb71ce6f1d0', class: "filter-card" }, h("div", { key: '7353fe2a352af762393d11482ddecbb7de08176b', class: "content" }, h("h3", { key: '949566a102ece48164fccfc2805b77c5364152ff' }, "Ingredient"), h("p", { key: '060f125190ee29b79cf3e6025f71fd9759ac5e55' }, "Find recipes using your favourite ingredients."), h("select", { key: 'abff2d33d651b611a60952aba9c59ff5e9bb2ab6', "aria-label": "Select recipe ingredient", onChange: this.handleIngredient }, h("option", { key: 'eaeb17a91f94ba7c81b1a9e074f837a04b2630c6', value: "" }, "All Ingredients"), this.ingredients.map(ingredient => (h("option", { value: ingredient, selected: this.selectedIngredient === ingredient }, ingredient)))))), h("div", { key: '993eadac9b0939bcf6480960cdf46436900d6c0e', class: "filter-card" }, h("div", { key: '06f401549f627d20c725353882f625b97df14267', class: "content" }, h("h3", { key: '83a457b4b81a96d857edb50919a305ac0eeb0c06' }, "Cuisine"), h("p", { key: '9cb3a03bfec4fcb2170439cf7c6ab3d5714c07c0' }, "Discover recipes from around the world."), h("select", { key: 'b839e0b5570e4d7f7b9bccd12a0a4f7ed13d7181', "aria-label": "Select recipe cuisine", onChange: this.handleArea }, h("option", { key: 'ab8df5981542546ad9c35732327dc8b9d40e7c4a', value: "" }, "All Cuisines"), this.areas.map(area => (h("option", { value: area, selected: this.selectedArea === area }, area)))))))));
58
+ }
59
+ };
60
+ RecipeBrowser.style = recipeBrowserCss();
61
+
62
+ export { RecipeBrowser as recipe_browser };
@@ -0,0 +1,22 @@
1
+ import { r as registerInstance, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeButtonCss = () => `:host{display:inline-block}.button{min-width:120px;min-height:44px;padding:0 18px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer}.primary{border:none;background:#f97316;color:white}.secondary{border:1px solid #ddd;background:white;color:#777777}.primary:hover{background:#ea580c}.button:disabled{opacity:0.6;cursor:not-allowed}`;
4
+
5
+ const RecipeButton = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ variant = 'primary';
10
+ type = 'button';
11
+ disabled = false;
12
+ render() {
13
+ return (h("button", { key: '69decd9fcbcb01bce1f5c78fdb79ccea94f4369d', type: this.type, class: {
14
+ button: true,
15
+ primary: this.variant === 'primary',
16
+ secondary: this.variant === 'secondary',
17
+ }, disabled: this.disabled }, h("slot", { key: '9561dcb8e2f50f8f85ccaacb0ff885b67a5eab1d' })));
18
+ }
19
+ };
20
+ RecipeButton.style = recipeButtonCss();
21
+
22
+ export { RecipeButton as recipe_button };
@@ -0,0 +1,76 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeCardCss = () => `:host{display:block;font-family:Arial, sans-serif}.recipe-card{position:relative;overflow:hidden;background:#ffffff;border:1px solid #eeeeee;border-radius:18px;box-shadow:0 6px 25px rgba(0, 0, 0, 0.05)}.image-container{position:relative;height:220px;overflow:hidden}.image-container img{width:100%;height:100%;display:block;object-fit:cover}.category{position:absolute;top:14px;left:14px;padding:6px 10px;border-radius:20px;background:rgba(255, 255, 255, 0.94);color:#444444;font-size:12px;font-weight:700}.favorite{position:absolute;top:12px;right:12px;width:38px;height:38px;border:none;border-radius:50%;background:rgba(255, 255, 255, 0.95);color:#777777;font-size:24px;cursor:pointer}.favorite.active{color:#e05252}.content{padding:18px}.cuisine{margin-bottom:8px;color:#f97316;font-size:12px;font-weight:600}.content h3{margin:0 0 16px;color:#2c2c2c;font-size:20px;line-height:1.3}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.view-button,.planner-button{width:100%;min-height:42px;border-radius:9px;font-family:Arial, sans-serif;font-size:13px;font-weight:600;cursor:pointer}.view-button{display:flex;align-items:center;justify-content:center;gap:6px;border:none;background:#f97316;color:white}.view-button:hover{background:#ea580c}.planner-button{border:1px solid #fed7aa;background:#fff7ed;color:#ea580c}.planner-button:hover{background:#ffedd5}.planner-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(0, 0, 0, 0.45)}.planner-modal{width:min(420px, 100%);padding:24px;border-radius:18px;background:white;box-shadow:0 20px 60px rgba(0, 0, 0, 0.2)}.planner-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:22px}.planner-header h4{margin:0 0 6px;font-size:20px;color:#2c2c2c}.planner-header p{margin:0;color:#777777;font-size:13px;line-height:1.5}.close-button{width:32px;height:32px;border:none;border-radius:50%;background:#f5f5f5;font-size:22px;color:#555555;cursor:pointer}.close-button:hover{background:#eeeeee}.planner-modal label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;color:#444444}.planner-modal select{width:100%;height:44px;padding:0 12px;border:1px solid #dddddd;border-radius:10px;background:white;font-family:Arial, sans-serif;font-size:14px;outline:none;box-sizing:border-box}.planner-actions{display:flex;gap:10px;margin-top:20px}.cancel-button,.add-button{flex:1;height:42px;border-radius:9px;font-family:Arial, sans-serif;font-size:14px;font-weight:700;cursor:pointer}.cancel-button{border:1px solid #dddddd;background:white;color:#555555}.cancel-button:hover{background:#f5f5f5}.add-button{border:none;background:#f97316;color:white}.add-button:hover:not(:disabled){background:#ea580c}.add-button:disabled{opacity:0.5;cursor:not-allowed}.field{padding-top:10px}`;
4
+
5
+ const RecipeCard = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.favoriteToggle = createEvent(this, "favoriteToggle");
9
+ this.recipeClick = createEvent(this, "recipeClick");
10
+ this.addToPlanner = createEvent(this, "add-to-planner");
11
+ }
12
+ recipeId = '';
13
+ recipeTitle = '';
14
+ image = '';
15
+ category = '';
16
+ cuisine = '';
17
+ favorite = false;
18
+ favoriteToggle;
19
+ recipeClick;
20
+ addToPlanner;
21
+ showPlanner = false;
22
+ selectedDay = '';
23
+ selectedMeal = '';
24
+ handleViewRecipe = () => {
25
+ this.recipeClick.emit({
26
+ id: this.recipeId,
27
+ });
28
+ };
29
+ toggleFavorite = (event) => {
30
+ event.stopPropagation();
31
+ this.favoriteToggle.emit({
32
+ id: this.recipeId,
33
+ });
34
+ };
35
+ openPlanner = (event) => {
36
+ event.stopPropagation();
37
+ this.selectedDay = '';
38
+ this.selectedMeal = '';
39
+ this.showPlanner = true;
40
+ };
41
+ closePlanner = () => {
42
+ this.showPlanner = false;
43
+ this.selectedDay = '';
44
+ this.selectedMeal = '';
45
+ };
46
+ handleDayChange = (event) => {
47
+ const select = event.target;
48
+ this.selectedDay = select.value;
49
+ };
50
+ handleMealChange = (event) => {
51
+ const select = event.target;
52
+ this.selectedMeal = select.value;
53
+ };
54
+ confirmPlanner = () => {
55
+ if (!this.selectedDay || !this.selectedMeal) {
56
+ return;
57
+ }
58
+ this.addToPlanner.emit({
59
+ id: this.recipeId,
60
+ day: this.selectedDay,
61
+ mealType: this.selectedMeal,
62
+ });
63
+ this.closePlanner();
64
+ };
65
+ render() {
66
+ const favoriteLabel = this.favorite ? `Remove ${this.recipeTitle} from favorites` : `Add ${this.recipeTitle} to favorites`;
67
+ const canAdd = this.selectedDay !== '' && this.selectedMeal !== '';
68
+ return (h("article", { key: 'e9cac86199c4999118277c301095f0d5fdc0465e', class: "recipe-card" }, h("div", { key: '41cc1e4446a23d097181d023e28ef26ec8e1c709', class: "image-container" }, h("img", { key: '5f9d485af235d895d5ba410826fe00ead8795420', src: this.image, alt: this.recipeTitle, loading: "lazy", decoding: "async" }), this.category && h("span", { key: '8f50506474a6ec6d9cb973bec927640fe1bbc14e', class: "category" }, this.category), h("button", { key: 'cc2b1c5291f30e8fc8cb14591a884cebd3343018', type: "button", class: {
69
+ favorite: true,
70
+ active: this.favorite,
71
+ }, onClick: this.toggleFavorite, "aria-label": favoriteLabel, "aria-pressed": this.favorite }, this.favorite ? '♥' : '♡')), h("div", { key: '8cb4a3397069c51ee95baff05662bf9f3aee9c1d', class: "content" }, this.cuisine && (h("div", { key: 'de5ad5288350fe2f251ffa62cda82fa35bf53f3e', class: "cuisine" }, h("span", { key: '87aa4b6d69bd35acf850b5650b8f5a2db28adef0' }, "\u2726"), this.cuisine)), h("h3", { key: '332a9140cc9627d02ab1e5621fb0b2f0c0d8f754' }, this.recipeTitle), h("div", { key: '7c2962abe8ebb3cb22e91b61acf1362dc6216f81', class: "actions" }, h("button", { key: 'fc9b769b0198145d8a49dfaf837acbe24eee3f2e', type: "button", class: "view-button", onClick: this.handleViewRecipe }, "View Recipe", h("span", { key: '50f0f5e55f9caab5d70f16aaf3585c80c1e5ac7c' }, "\u2192")), h("button", { key: '6936bec5da6c7509f51abf2646312cc0315dbe99', type: "button", class: "planner-button", onClick: this.openPlanner }, "\uFF0B Add to Planner"))), this.showPlanner && (h("div", { key: 'a15cc6195d9331cadbec3eae206a9c82737be735', class: "planner-overlay", onClick: this.closePlanner }, h("div", { key: 'a5b74b52a845f1488e3eeb2356fc6044f1c15912', class: "planner-modal", onClick: event => event.stopPropagation() }, h("div", { key: '572800bf57b24b41cadfacb49da5dccef6a9f132', class: "planner-header" }, h("div", { key: 'cd7f730b46ef2fad37a22e05bc5bc3e1fdc6d0c6' }, h("h4", { key: 'c30504584428ffac7a3dfe0a1d5c2c7c895d1665' }, "Add to Meal Planner"), h("p", { key: 'dbee3ab4e4dc0b0b3c553684e447a931813b7c66' }, "Add ", h("strong", { key: '501eee64ac955ccaa7116a7f20f35473ecc2912d' }, this.recipeTitle))), h("button", { key: '55ca144a870c33892b1d61051c8b60dab1528bb8', type: "button", class: "close-button", onClick: this.closePlanner }, "\u00D7")), h("div", { key: 'b8e4b435c27e0a5536335897b59386bd9b4b1b1b', class: "field" }, h("label", { key: 'b26aec673a147830320a92389d6f2da7a4a901e4', htmlFor: "planner-day" }, "Day"), h("select", { key: '0b95a3b9b32278534a0157f469281a67e0c0ad9b', id: "planner-day", onChange: this.handleDayChange }, h("option", { key: 'c2e6e6d89ece44b371ae377b395aa8719935f326', value: "" }, "Select a day"), h("option", { key: '98c27f6fb8e49de25ecabda4f52436d8c3fac93b', value: "Monday" }, "Monday"), h("option", { key: '7e782ca431ad476040a87f4664341e679a435fd0', value: "Tuesday" }, "Tuesday"), h("option", { key: '12f03a59c1a6a4c9d087e612259b585ad1609128', value: "Wednesday" }, "Wednesday"), h("option", { key: '718c4397a7c13ad5e38603c97f3fe43f5da17fce', value: "Thursday" }, "Thursday"), h("option", { key: 'bde3aaa5cce683c0be7a07c2ad4514bf1ed259a4', value: "Friday" }, "Friday"), h("option", { key: '28adf4b21ed230171a653a173b6f1564fdadbd86', value: "Saturday" }, "Saturday"), h("option", { key: 'ba10816944f43c0f693d7e8e926d7cf9514b8f1a', value: "Sunday" }, "Sunday"))), h("div", { key: '2f2bbf50b1e3e515424770fe183f40321ed4a0ec', class: "field" }, h("label", { key: '3dbb417dd46359dbc524ab187a26b5af3001b809', htmlFor: "planner-meal" }, "Meal"), h("select", { key: 'ce276fce3064936bf7695897803fce10e83e345c', id: "planner-meal", onChange: this.handleMealChange }, h("option", { key: '6c05f317d30a94be195c432d926034e0b7d1bcb5', value: "" }, "Select a meal"), h("option", { key: '1392d0ae0d8922547329790707812474e63fcc3b', value: "Breakfast" }, "Breakfast"), h("option", { key: '2cc7682e5108e782220dbda63e403d90c04dbd5e', value: "Lunch" }, "Lunch"), h("option", { key: '255117f914a6112ccf9169f52ae35bc99df1c549', value: "Dinner" }, "Dinner"))), h("div", { key: 'efd8158033d291082b9cb131deee84b09a649411', class: "planner-actions" }, h("button", { key: '816d91efb664e45ea8bb49285049995536848ba5', type: "button", class: "cancel-button", onClick: this.closePlanner }, "Cancel"), h("button", { key: 'd4b72a6d50bfdf116210f34a67c8f15bc9d38a69', type: "button", class: "add-button", disabled: !canAdd, onClick: this.confirmPlanner }, "Add to Planner")))))));
72
+ }
73
+ };
74
+ RecipeCard.style = recipeCardCss();
75
+
76
+ export { RecipeCard as recipe_card };
@@ -0,0 +1,18 @@
1
+ import { r as registerInstance, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeFormSectionCss = () => `:host{display:block}.section{padding:30px;border:1px solid #e9e5e1;border-radius:22px;background:white}.section-heading{display:flex;gap:14px;margin-bottom:25px}.section-heading>span{width:32px;height:32px;display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:50%;background:#f3e9e1;color:#f97316;font-size:16px;font-weight:700}.section-heading h2{margin:0;color:#2c2c2c;font-family:Arial, sans-serif;font-size:24px;font-weight:500}.section-heading p{margin:4px 0 0;color:#999999;font-size:16px}.content{display:block}@media (max-width: 600px){.section{padding:20px}}`;
4
+
5
+ const RecipeFormSection = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ number;
10
+ formTitle;
11
+ description;
12
+ render() {
13
+ return (h("section", { key: '39aba625964827041a26eaf4e59e95fce101af07', class: "section" }, h("div", { key: '7f7ed2a37b09b8efa5bbcbe0087e7b575776e61b', class: "section-heading" }, h("span", { key: 'ae898bcf907768d9abe73e0ff18c39614b6ae23b' }, this.number), h("div", { key: '16c1e35edf0e0bba569ab260a640981419a83d44' }, h("h2", { key: '61def6637277c674aa708041c148925595493ad7' }, this.formTitle), h("p", { key: '62ab7295b08d2ade90ba9dbcb61e2cfe26929c84' }, this.description))), h("div", { key: 'e56052a380d5c72190b776ea8c7e80f1099a8442', class: "content" }, h("slot", { key: '7735bc4718c0d4c7c0805abd1d176fdf3270faa3' }))));
14
+ }
15
+ };
16
+ RecipeFormSection.style = recipeFormSectionCss();
17
+
18
+ export { RecipeFormSection as recipe_form_section };
@@ -0,0 +1,22 @@
1
+ import { r as registerInstance, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeInputCss = () => `:host{display:block}.field{display:flex;flex-direction:column;gap:8px}label{color:#555555;font-size:16px;font-weight:700}input{width:100%;height:44px;padding:12px 13px;border:1px solid #eeeeee;border-radius:10px;outline:none;background:#fafafa;color:#333333;font-family:Arial, sans-serif;font-size:14px;box-sizing:border-box;transition:border-color 0.2s ease, box-shadow 0.2s ease}input:focus{border-color:#f97316;background:white;box-shadow:0 0 0 3px rgba(163, 111, 66, 0.08)}input::placeholder{color:#bbb}small{color:#aaa;font-size:9px}`;
4
+
5
+ const RecipeInput = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ label;
10
+ name;
11
+ type = 'text';
12
+ placeholder = '';
13
+ value = '';
14
+ required = false;
15
+ helper = '';
16
+ render() {
17
+ return (h("div", { key: '70a6dc59dc7c4367c091fa1cb69a6f9ab7936108', class: "field" }, h("label", { key: '4ac58bf5d0570aeb26333b6056429dd90483fddc', htmlFor: this.name }, this.label, this.required ? ' *' : ''), h("input", { key: '1146d0d67f77e85ffb058d8c705c739e5f4d8765', id: this.name, name: this.name, type: this.type, placeholder: this.placeholder, value: this.value, required: this.required }), this.helper && h("small", { key: '1bfde2d7cbffdc08d8d97e011fc08e89619a6926' }, this.helper)));
18
+ }
19
+ };
20
+ RecipeInput.style = recipeInputCss();
21
+
22
+ export { RecipeInput as recipe_input };
@@ -0,0 +1,28 @@
1
+ import { r as registerInstance, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeNavbarCss = () => `:host{display:block}.navbar{display:flex;align-items:center;justify-content:space-between;padding:16px 40px;background:#f97316;border-bottom:1px solid #e5e7eb}.logo{color:#ffffff;text-decoration:none;font-size:28px;font-weight:700}.nav-links{display:flex;align-items:center;gap:26px}.nav-link{color:#ffffff;text-decoration:none;font-size:15px;font-weight:600;transition:color 0.2s ease}.nav-link:hover{color:#f9b787}@media (max-width: 700px){.navbar{flex-direction:column;gap:15px;padding:15px 20px}.logo{font-size:22px;text-align:center}.nav-links{gap:15px;flex-wrap:wrap;justify-content:center}}`;
4
+
5
+ const RecipeNavbar = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ currentPage = '';
10
+ render() {
11
+ return (h("nav", { key: '566b7977eb5d49698529bb053851bfd00ae3e6b7', class: "navbar" }, h("a", { key: '0486dfb39ffe360a78251520ce19aeeb02f9cbe8', href: "/", class: "logo" }, "\uD83C\uDF74 Recipe Finder and Meal Planner"), h("div", { key: '3c08b289c5845dfe5845dae53e48736e04c98f73', class: "nav-links" }, h("a", { key: 'ca549a73243a753de94117ac0a4c1136ec43d4d3', href: "/", class: {
12
+ 'nav-link': true,
13
+ 'active': this.currentPage === 'home',
14
+ } }, "Home"), h("a", { key: 'd8fc2d2b873d7e7f1eb17e5f3e53a367811124ba', href: "/favorites", class: {
15
+ 'nav-link': true,
16
+ 'active': this.currentPage === 'favorites',
17
+ } }, "Favorites"), h("a", { key: 'de54d4a21354713ee67e5f28675d8046e8093c0c', href: "/meal-plan", class: {
18
+ 'nav-link': true,
19
+ 'active': this.currentPage === 'meal-plan',
20
+ } }, "Meal Planner"), h("a", { key: '98a0114e219316138f9968f9b9f462ab90dc2144', href: "/my-recipes", class: {
21
+ 'nav-link': true,
22
+ 'active': this.currentPage === 'my-recipes',
23
+ } }, "My Recipes"))));
24
+ }
25
+ };
26
+ RecipeNavbar.style = recipeNavbarCss();
27
+
28
+ export { RecipeNavbar as recipe_navbar };
@@ -0,0 +1,21 @@
1
+ import { r as registerInstance, h } from './index-DxpnpZMq.js';
2
+
3
+ const recipeTextareaCss = () => `:host{display:block}.field{display:flex;flex-direction:column;gap:8px}label{color:#555555;font-size:16px;font-weight:700}textarea{width:100%;padding:12px 13px;border:1px solid #eeeeee;border-radius:10px;outline:none;background:#fafafa;color:#333333;font-family:Arial, sans-serif;font-size:14px;line-height:1.7;resize:vertical;box-sizing:border-box;transition:border-color 0.2s ease, box-shadow 0.2s ease}textarea:focus{border-color:#f97316;background:white;box-shadow:0 0 0 3px rgba(163, 111, 66, 0.08)}textarea::placeholder{color:#bbb}`;
4
+
5
+ const RecipeTextarea = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ label;
10
+ name;
11
+ rows = 5;
12
+ placeholder = '';
13
+ value = '';
14
+ required = false;
15
+ render() {
16
+ return (h("div", { key: '65e2378ab0cd0e4d0b255aebf5db8f9dd9b7cd23', class: "field" }, h("label", { key: '1806eef424c6305fc8456a9bd3209ac2cd6ccae3', htmlFor: this.name }, this.label, this.required ? ' *' : ''), h("textarea", { key: 'dfa80a318722b204622fc7d0935cf8fb346e2bd0', id: this.name, name: this.name, rows: this.rows, placeholder: this.placeholder, required: this.required }, this.value)));
17
+ }
18
+ };
19
+ RecipeTextarea.style = recipeTextareaCss();
20
+
21
+ export { RecipeTextarea as recipe_textarea };
@@ -0,0 +1,34 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DxpnpZMq.js';
2
+
3
+ const searchFoodCss = () => `:host{display:block;font-family:Arial, sans-serif}.search-wrapper{width:100%;display:flex;justify-content:center;box-sizing:border-box;padding:24px 16px}.search-box{width:100%;max-width:700px;display:flex;align-items:center;padding:6px;background:#ffffff;border:1px solid #d7d2cd;border-radius:14px;box-shadow:0 6px 20px rgba(0, 0, 0, 0.06);transition:border-color 0.2s ease, box-shadow 0.2s ease}.search-box:focus-within{border-color:#e0700f;box-shadow:0 0 0 3px rgba(163, 111, 66, 0.1), 0 8px 24px rgba(0, 0, 0, 0.07)}.search-icon{flex-shrink:0;margin-left:12px;margin-right:8px;font-size:20px}input{flex:1;min-width:0;padding:13px 8px;border:none;outline:none;background:transparent;color:#2c2c2c;font-family:Arial, sans-serif;font-size:16px}input::placeholder{color:#b7bdca}.clear-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;border-radius:50%;background:transparent;color:#999999;font-family:Arial, sans-serif;font-size:24px;cursor:pointer;transition:background-color 0.2s ease, color 0.2s ease}.clear-button:hover{background:#f5f2ef;color:#555555}.search-button{flex-shrink:0;padding:12px 22px;border:none;border-radius:10px;background:#f97316;color:#ffffff;font-family:Arial, sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background-color 0.2s ease, transform 0.2s ease}.search-button:hover{background:#f97316;transform:translateY(-1px)}.search-button:active{transform:translateY(0)}@media (max-width: 600px){.search-wrapper{padding:18px 12px}.search-box{border-radius:12px}input{font-size:14px}.search-button{padding:11px 15px;font-size:13px}}@media (prefers-reduced-motion: reduce){.search-box,.clear-button,.search-button{transition:none}}`;
4
+
5
+ const SearchFood = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.searchSubmit = createEvent(this, "searchSubmit");
9
+ this.searchClear = createEvent(this, "searchClear");
10
+ }
11
+ search = '';
12
+ searchSubmit;
13
+ searchClear;
14
+ handleInput = (event) => {
15
+ this.search = event.target.value;
16
+ };
17
+ handleSearch = () => {
18
+ const value = this.search.trim();
19
+ if (!value) {
20
+ return;
21
+ }
22
+ this.searchSubmit.emit(value);
23
+ };
24
+ clearSearch = () => {
25
+ this.search = '';
26
+ this.searchClear.emit();
27
+ };
28
+ render() {
29
+ return (h("div", { key: 'aec6c865acb5f9ebcacc2fd517641085c2339303', class: "search-wrapper" }, h("div", { key: 'f50a9844f4bb84b0ec4e1b04df5d6198e1fe3786', class: "search-box" }, h("span", { key: '013f2674aa34aeca8e8166ccc626299433230bc5', class: "search-icon", "aria-hidden": "true" }, "\uD83D\uDD0D"), h("input", { key: '4b8fad8626692ee6c44cacd05e48b46b00213b20', type: "text", value: this.search, placeholder: "Searching...", "aria-label": "Search for a food", onInput: this.handleInput }), this.search && (h("button", { key: '15af3cda9b0394918e4ca72e313259a006edf54d', type: "button", class: "clear-button", onClick: this.clearSearch, "aria-label": "Clear search" }, "\u00D7")), h("button", { key: '22cd49c7076666d2f560f83bf718eaaf7ceffbf1', type: "button", class: "search-button", onClick: this.handleSearch }, "Search"))));
30
+ }
31
+ };
32
+ SearchFood.style = searchFoodCss();
33
+
34
+ export { SearchFood as search_food };
@@ -0,0 +1,21 @@
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-DxpnpZMq.js';
2
+ export { s as setNonce } from './index-DxpnpZMq.js';
3
+ import { g as globalScripts } from './app-globals-DQuL1Twl.js';
4
+
5
+ /*
6
+ Stencil Client Patch Browser v4.44.0 | MIT Licensed | https://stenciljs.com
7
+ */
8
+
9
+ var patchBrowser = () => {
10
+ const importMeta = import.meta.url;
11
+ const opts = {};
12
+ if (importMeta !== "") {
13
+ opts.resourcesUrl = new URL(".", importMeta).href;
14
+ }
15
+ return promiseResolve(opts);
16
+ };
17
+
18
+ patchBrowser().then(async (options) => {
19
+ await globalScripts();
20
+ return bootstrapLazy([["my-component",[[513,"my-component",{"first":[1],"middle":[1],"last":[1]}]]],["no-recipe-found",[[513,"no-recipe-found",{"header":[1],"message":[1],"buttonText":[1,"button-text"]}]]],["recipe-browser",[[513,"recipe-browser",{"categories":[16],"areas":[16],"ingredients":[16],"selectedCategory":[1,"selected-category"],"selectedArea":[1,"selected-area"],"selectedIngredient":[1,"selected-ingredient"]}]]],["recipe-button",[[769,"recipe-button",{"variant":[1],"type":[1],"disabled":[4]}]]],["recipe-card",[[513,"recipe-card",{"recipeId":[1,"recipe-id"],"recipeTitle":[1,"recipe-title"],"image":[1],"category":[1],"cuisine":[1],"favorite":[4],"showPlanner":[32],"selectedDay":[32],"selectedMeal":[32]}]]],["recipe-form-section",[[769,"recipe-form-section",{"number":[1],"formTitle":[1,"form-title"],"description":[1]}]]],["recipe-input",[[513,"recipe-input",{"label":[1],"name":[1],"type":[1],"placeholder":[1],"value":[1],"required":[4],"helper":[1]}]]],["recipe-navbar",[[513,"recipe-navbar",{"currentPage":[1,"current-page"]}]]],["recipe-textarea",[[513,"recipe-textarea",{"label":[1],"name":[1],"rows":[2],"placeholder":[1],"value":[1],"required":[4]}]]],["search-food",[[513,"search-food",{"search":[1025]}]]]], options);
21
+ });
@@ -0,0 +1 @@
1
+ module.exports = require('./cjs/index.cjs.js');
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './esm/index.js';
@@ -0,0 +1 @@
1
+ function n(n,r,t){return(n||"")+(r?` ${r}`:"")+(t?` ${t}`:"")}export{n as format}
@@ -0,0 +1 @@
1
+ import{r as e,c as a,h as c}from"./p-DxpnpZMq.js";const r=class{constructor(c){e(this,c),this.browseChange=a(this,"browseChange"),this.browseClear=a(this,"browseClear")}categories=[];areas=[];ingredients=[];selectedCategory="";selectedArea="";selectedIngredient="";browseChange;browseClear;handleCategory=e=>{const a=e.target.value;a&&this.browseChange.emit({type:"category",value:a})};handleArea=e=>{const a=e.target.value;a&&this.browseChange.emit({type:"area",value:a})};handleIngredient=e=>{const a=e.target.value;a&&this.browseChange.emit({type:"ingredient",value:a})};handleClear=()=>{this.browseClear.emit()};render(){const e=""!==this.selectedCategory||""!==this.selectedArea||""!==this.selectedIngredient;return c("section",{key:"1e4b3474c45baf701d6212a58d4cfc465063bc5e",class:"wrapper"},c("div",{key:"165084c65d6e9a4e457c601fc8ce6feb0321544c",class:"header"},c("div",{key:"6fd026ea128dca2e65c3cbdfdc4908ee34ee4bfc",class:"heading"},c("span",{key:"7a110eeebd3835354934bca2e141248142beb8e2",class:"eyebrow"},"✦ BROWSE RECIPES"),c("h2",{key:"74431b3cfda0539b1c639d2f5ec71092dada18d9"},"Find Your Perfect Recipe"),c("p",{key:"d4ca3d04dd15a8f3a74020eafc454770a6d15e17"},"Explore delicious recipes by category, cuisine or ingredient.")),e&&c("button",{key:"c0576d993b85806611797e3b34c52773594b28ca",type:"button",class:"clear-button",onClick:this.handleClear},"Clear Filters")),c("div",{key:"db81e498a63b5ba1ca7fab36bef03ca69337f695",class:"filters"},c("div",{key:"1c4981b68d5ffffb2533a2ba08ed31746d8ed63d",class:"filter-card"},c("div",{key:"5e253ee63f146f9d14404e6d9c00c2132cb32c6e",class:"content"},c("h3",{key:"c803bb45c98d0108babb53c77ec4fe495ebfc475"},"Category"),c("p",{key:"b81b23f23c834ad6e718213e640221e7361e41c4"},"Find recipes by food category."),c("select",{key:"79b2055724ae09bc9ff5810ed85549abdf82025c","aria-label":"Select recipe category",onChange:this.handleCategory},c("option",{key:"2c8426061798f6790b0e6c06e232388aad1f2010",value:""},"All Categories"),this.categories.map((e=>c("option",{value:e,selected:this.selectedCategory===e},e)))))),c("div",{key:"7809c3a73c2f32c5b1bcf318249b7cb71ce6f1d0",class:"filter-card"},c("div",{key:"7353fe2a352af762393d11482ddecbb7de08176b",class:"content"},c("h3",{key:"949566a102ece48164fccfc2805b77c5364152ff"},"Ingredient"),c("p",{key:"060f125190ee29b79cf3e6025f71fd9759ac5e55"},"Find recipes using your favourite ingredients."),c("select",{key:"abff2d33d651b611a60952aba9c59ff5e9bb2ab6","aria-label":"Select recipe ingredient",onChange:this.handleIngredient},c("option",{key:"eaeb17a91f94ba7c81b1a9e074f837a04b2630c6",value:""},"All Ingredients"),this.ingredients.map((e=>c("option",{value:e,selected:this.selectedIngredient===e},e)))))),c("div",{key:"993eadac9b0939bcf6480960cdf46436900d6c0e",class:"filter-card"},c("div",{key:"06f401549f627d20c725353882f625b97df14267",class:"content"},c("h3",{key:"83a457b4b81a96d857edb50919a305ac0eeb0c06"},"Cuisine"),c("p",{key:"9cb3a03bfec4fcb2170439cf7c6ab3d5714c07c0"},"Discover recipes from around the world."),c("select",{key:"b839e0b5570e4d7f7b9bccd12a0a4f7ed13d7181","aria-label":"Select recipe cuisine",onChange:this.handleArea},c("option",{key:"ab8df5981542546ad9c35732327dc8b9d40e7c4a",value:""},"All Cuisines"),this.areas.map((e=>c("option",{value:e,selected:this.selectedArea===e},e))))))))}};r.style=":host{display:block;font-family:Arial, sans-serif;color:#2c2c2c}.wrapper{width:min(1200px, calc(100% - 40px));margin:0 auto;padding:45px 0}.header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px}.heading{max-width:650px}.eyebrow{display:block;margin-bottom:8px;font-size:14px;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;color:#f97316}h2{margin:0;font-size:clamp(28px, 4vw, 40px);line-height:1.1;font-weight:700;letter-spacing:-0.03em}.heading p{margin:10px 0 0;font-size:16px;line-height:1.6;color:#777777}.clear-button{flex-shrink:0;padding:10px 17px;border:1px solid #e5e7eb;border-radius:10px;background:white;color:#2c2c2c;font-family:Arial, sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background 0.2s ease, color 0.2s ease, border-color 0.2s ease}.clear-button:hover{background:#fff7ed;border-color:#fdba74;color:#ea580c}.filters{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:18px}.filter-card{display:flex;gap:16px;padding:22px;background:white;border:1px solid #eeeeee;border-radius:18px;box-shadow:0 6px 25px rgba(0, 0, 0, 0.04);transition:transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease}.filter-card:hover{transform:translateY(-3px);border-color:#fed7aa;box-shadow:0 12px 30px rgba(0, 0, 0, 0.08)}.icon{width:46px;height:46px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:12px;font-size:22px}.category-icon{background:#fff7ed}.cuisine-icon{background:#eff6ff}.ingredient-icon{background:#f0fdf4}.content{flex:1;min-width:0}.content h3{margin:0;font-size:17px;font-weight:700}.content p{margin:6px 0 14px;font-size:13px;line-height:1.5;color:#777}select{display:block;width:100%;height:42px;padding:0 12px;border:1px solid #e5e7eb;border-radius:9px;background:white;color:#2c2c2c;font-family:Arial, sans-serif;font-size:14px;cursor:pointer;outline:none;box-sizing:border-box;transition:border-color 0.2s ease, box-shadow 0.2s ease}select:hover{border-color:#fb923c}select:focus{border-color:#f97316;box-shadow:0 0 0 3px rgba(249, 115, 22, 0.12)}@media (max-width: 900px){.filters{grid-template-columns:repeat(2, minmax(0, 1fr))}.filter-card:last-child{grid-column:span 2}}@media (max-width: 600px){.wrapper{width:calc(100% - 24px);padding:35px 0}.header{align-items:flex-start;flex-direction:column}.clear-button{align-self:flex-start}.filters{grid-template-columns:1fr;gap:14px}.filter-card:last-child{grid-column:auto}.filter-card{padding:18px}}@media (prefers-reduced-motion: reduce){.filter-card,.clear-button,select{transition:none}}";export{r as recipe_browser}
@@ -0,0 +1 @@
1
+ import{r,h as o}from"./p-DxpnpZMq.js";const t=class{constructor(o){r(this,o)}variant="primary";type="button";disabled=!1;render(){return o("button",{key:"69decd9fcbcb01bce1f5c78fdb79ccea94f4369d",type:this.type,class:{button:!0,primary:"primary"===this.variant,secondary:"secondary"===this.variant},disabled:this.disabled},o("slot",{key:"9561dcb8e2f50f8f85ccaacb0ff885b67a5eab1d"}))}};t.style=":host{display:inline-block}.button{min-width:120px;min-height:44px;padding:0 18px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer}.primary{border:none;background:#f97316;color:white}.secondary{border:1px solid #ddd;background:white;color:#777777}.primary:hover{background:#ea580c}.button:disabled{opacity:0.6;cursor:not-allowed}";export{t as recipe_button}
@@ -0,0 +1 @@
1
+ import{r as e,h as a}from"./p-DxpnpZMq.js";const i=class{constructor(a){e(this,a)}number;formTitle;description;render(){return a("section",{key:"39aba625964827041a26eaf4e59e95fce101af07",class:"section"},a("div",{key:"7f7ed2a37b09b8efa5bbcbe0087e7b575776e61b",class:"section-heading"},a("span",{key:"ae898bcf907768d9abe73e0ff18c39614b6ae23b"},this.number),a("div",{key:"16c1e35edf0e0bba569ab260a640981419a83d44"},a("h2",{key:"61def6637277c674aa708041c148925595493ad7"},this.formTitle),a("p",{key:"62ab7295b08d2ade90ba9dbcb61e2cfe26929c84"},this.description))),a("div",{key:"e56052a380d5c72190b776ea8c7e80f1099a8442",class:"content"},a("slot",{key:"7735bc4718c0d4c7c0805abd1d176fdf3270faa3"})))}};i.style=":host{display:block}.section{padding:30px;border:1px solid #e9e5e1;border-radius:22px;background:white}.section-heading{display:flex;gap:14px;margin-bottom:25px}.section-heading>span{width:32px;height:32px;display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:50%;background:#f3e9e1;color:#f97316;font-size:16px;font-weight:700}.section-heading h2{margin:0;color:#2c2c2c;font-family:Arial, sans-serif;font-size:24px;font-weight:500}.section-heading p{margin:4px 0 0;color:#999999;font-size:16px}.content{display:block}@media (max-width: 600px){.section{padding:20px}}";export{i as recipe_form_section}
@@ -0,0 +1 @@
1
+ import{r as t,h as s}from"./p-DxpnpZMq.js";import{format as r}from"./index.esm.js";const e=class{constructor(s){t(this,s)}first;middle;last;getText(){return r(this.first,this.middle,this.last)}render(){return s("div",{key:"edcd595f3b87cfa751442fba79e07a8823826cbc"},"Hello, World! I'm ",this.getText())}};e.style=":host{display:block}";export{e as my_component}
@@ -0,0 +1 @@
1
+ import{r as e,c as t,h as a}from"./p-DxpnpZMq.js";const i=class{constructor(a){e(this,a),this.clear=t(this,"clear")}header="No Recipes Found";message="We couldn’t find any recipes matching your search. Try a different recipe, category, cuisine, or ingredient.";buttonText="Clear Search";clear;handleClear=()=>{this.clear.emit()};render(){return a("section",{key:"8f32c60bdbe3662614a69ed6df89ee3100381f74",class:"empty-state"},a("div",{key:"ab15444f85192f5a0599a8639ee78513359d0489",class:"icon","aria-hidden":"true"},"🍽️"),a("h2",{key:"1a4fac73782ea53e4405b38f28686eea414d1d94"},this.header),a("p",{key:"ee205e4e18009cc93995d717bf9129c265f293f7"},this.message),a("button",{key:"90f4c76d61253e050ae0fc8ff005dfba2e053d98",type:"button",onClick:this.handleClear},this.buttonText))}};i.style=":host{display:block;font-family:Arial, sans-serif}.icon{width:70px;height:70px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;border-radius:50%;background:#ffffff;font-size:32px}.empty-state{width:min(650px, calc(100% - 40px));margin:50px auto;padding:55px 25px;display:flex;flex-direction:column;align-items:center;text-align:center;background:#ffffff;border:1px solid #eeeeee;border-radius:20px;box-shadow:0 8px 30px rgba(0, 0, 0, 0.08);box-sizing:border-box}h2{margin:0 0 10px;color:#2c2c2c;font-size:28px;font-weight:700}p{max-width:500px;margin:0 0 25px;color:#eeeeee;font-size:15px;line-height:1.6}button{padding:11px 20px;border:none;border-radius:10px;background:#f97316;color:white;font-family:Arial, sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background 0.2s ease, transform 0.2s ease}button:hover{background:#ea580c;transform:translateY(-2px)}button:active{transform:translateY(0)}@media (max-width: 600px){.empty-state{width:calc(100% - 24px);margin:35px auto;padding:40px 20px}h2{font-size:24px}p{font-size:14px}}";export{i as no_recipe_found}
@@ -0,0 +1 @@
1
+ import{r as e,h as r}from"./p-DxpnpZMq.js";const a=class{constructor(r){e(this,r)}label;name;rows=5;placeholder="";value="";required=!1;render(){return r("div",{key:"65e2378ab0cd0e4d0b255aebf5db8f9dd9b7cd23",class:"field"},r("label",{key:"1806eef424c6305fc8456a9bd3209ac2cd6ccae3",htmlFor:this.name},this.label,this.required?" *":""),r("textarea",{key:"dfa80a318722b204622fc7d0935cf8fb346e2bd0",id:this.name,name:this.name,rows:this.rows,placeholder:this.placeholder,required:this.required},this.value))}};a.style=":host{display:block}.field{display:flex;flex-direction:column;gap:8px}label{color:#555555;font-size:16px;font-weight:700}textarea{width:100%;padding:12px 13px;border:1px solid #eeeeee;border-radius:10px;outline:none;background:#fafafa;color:#333333;font-family:Arial, sans-serif;font-size:14px;line-height:1.7;resize:vertical;box-sizing:border-box;transition:border-color 0.2s ease, box-shadow 0.2s ease}textarea:focus{border-color:#f97316;background:white;box-shadow:0 0 0 3px rgba(163, 111, 66, 0.08)}textarea::placeholder{color:#bbb}";export{a as recipe_textarea}
@@ -0,0 +1 @@
1
+ const o=()=>{};export{o as g}
@@ -0,0 +1,3 @@
1
+ function t(t,e,n){const o="undefined"!=typeof HTMLElement?HTMLElement.prototype:null;for(;t&&t!==o;){const o=Object.getOwnPropertyDescriptor(t,e);if(o&&(!n||o.get))return o;t=Object.getPrototypeOf(t)}}var e,n=(e,n)=>{var o;Object.entries(null!=(o=n.o.t)?o:{}).map((([o,[l]])=>{if(31&l||32&l){const l=e[o],i=t(Object.getPrototypeOf(e),o,!0)||Object.getOwnPropertyDescriptor(e,o);i&&Object.defineProperty(e,o,{get(){return i.get.call(this)},set(t){i.set.call(this,t)},configurable:!0,enumerable:!0}),n.l.has(o)?e[o]=n.l.get(o):void 0!==l&&(e[o]=l)}}))},o=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},l=(t,e)=>{e&&(t.__stencil__getHostRef=()=>e,e.i=t,512&e.o.u&&n(t,e))},i=(t,e)=>e in t,s=(t,e)=>(0,console.error)(t,e),r=new Map,c=new Map,u=new Map,a="undefined"!=typeof window?window:{},f={u:0,p:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,e,n,o)=>t.addEventListener(e,n,o),rel:(t,e,n,o)=>t.removeEventListener(e,n,o),ce:(t,e)=>new CustomEvent(t,e)},d=t=>Promise.resolve(t),p=(()=>{try{return!!a.document.adoptedStyleSheets&&(new CSSStyleSheet,"function"==typeof(new CSSStyleSheet).replaceSync)}catch(t){}return!1})(),h=!!p&&(()=>!!a.document&&Object.getOwnPropertyDescriptor(a.document.adoptedStyleSheets,"length").writable)(),m=!1,v=[],y=[],b=()=>{var t;return(null==(t=a.document)?void 0:t.hidden)?j(g):f.raf(g)},$=(t,e)=>n=>{t.push(n),m||(m=!0,e&&4&f.u?j(g):b())},w=t=>{for(let e=0;e<t.length;e++)try{t[e](performance.now())}catch(t){s(t)}t.length=0},g=()=>{w(v),w(y),(m=v.length>0)&&b()},j=t=>d().then(t),S=$(y,!0);function O(){const t=this.attachShadow({mode:"open"});void 0===e&&(e=null),e&&(h?t.adoptedStyleSheets.push(e):t.adoptedStyleSheets=[...t.adoptedStyleSheets,e])}function k(t){var e,n,o;return null!=(o=null==(n=null==(e=t.head)?void 0:e.querySelector('meta[name="csp-nonce"]'))?void 0:n.getAttribute("content"))?o:void 0}var M,E=new WeakMap,C=t=>"sc-"+t.h,N=t=>"object"==(t=typeof t)||"function"===t,x=(t,e,...n)=>{let o=null,l=null,i=!1,r=!1;const c=[],u=e=>{for(let n=0;n<e.length;n++)if(o=e[n],Array.isArray(o))u(o);else if(null!=o&&"boolean"!=typeof o){if(i="function"!=typeof t&&!N(o))o+="";else if("function"!=typeof t&&void 0===o.u){s("Invalid vNode child");continue}i&&r?c[c.length-1].m+=o:c.push(i?A(null,o):o),r=i}};if(u(n),e){e.key&&(l=e.key);{const t=e.className||e.class;t&&(e.class="object"!=typeof t?t:Object.keys(t).filter((e=>t[e])).join(" "))}}const a=A(t,null);return a.v=e,c.length>0&&(a.$=c),a.j=l,a},A=(t,e)=>({u:0,S:t,m:null!=e?e:null,O:null,$:null,v:null,j:null}),L={},R=(t,e)=>null==t||N(t)?t:4&e?"false"!==t&&(""===t||!!t):2&e?"string"==typeof t?parseFloat(t):"number"==typeof t?t:NaN:1&e?t+"":t,T=(t,e)=>{const n=(t=>{var e;return null==(e=o(t))?void 0:e.$hostElement$})(t);return{emit:t=>D(n,e,{bubbles:!0,composed:!0,cancelable:!0,detail:t})}},D=(t,e,n)=>{const o=f.ce(e,n);return t.dispatchEvent(o),o},P=(t,e,n,l,s,r)=>{if(n===l)return;let c=i(t,e),u=e.toLowerCase();if("class"===e){const e=t.classList,o=U(n);let i=U(l);e.remove(...o.filter((t=>t&&!i.includes(t)))),e.add(...i.filter((t=>t&&!o.includes(t))))}else if("key"===e);else if(c||"o"!==e[0]||"n"!==e[1]){if("a"===e[0]&&e.startsWith("attr:")){const n=e.slice(5);let i;{const e=o(t);if(e&&e.o&&e.o.t){const t=e.o.t[n];t&&t[1]&&(i=t[1])}}return i||(i=n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),void(null==l||!1===l?!1===l&&""!==t.getAttribute(i)||t.removeAttribute(i):t.setAttribute(i,!0===l?"":l))}if("p"===e[0]&&e.startsWith("prop:")){const n=e.slice(5);try{t[n]=l}catch(t){}return}{const o=N(l);if((c||o&&null!==l)&&!s)try{if(t.tagName.includes("-"))t[e]!==l&&(t[e]=l);else{const o=null==l?"":l;"list"===e?c=!1:null!=n&&t[e]===o||("function"==typeof t.__lookupSetter__(e)?t[e]=o:t.setAttribute(e,o))}}catch(t){}null==l||!1===l?!1===l&&""!==t.getAttribute(e)||t.removeAttribute(e):(!c||4&r||s)&&!o&&1===t.nodeType&&t.setAttribute(e,l=!0===l?"":l)}}else if(e="-"===e[2]?e.slice(3):i(a,u)?u.slice(2):u[2]+e.slice(3),n||l){const o=e.endsWith(W);e=e.replace(z,""),n&&f.rel(t,e,n,o),l&&f.ael(t,e,l,o)}},H=/\s/,U=t=>("object"==typeof t&&t&&"baseVal"in t&&(t=t.baseVal),t&&"string"==typeof t?t.split(H):[]),W="Capture",z=RegExp(W+"$"),F=(t,e,n)=>{const o=11===e.O.nodeType&&e.O.host?e.O.host:e.O,l=t&&t.v||{},i=e.v||{};for(const t of V(Object.keys(l)))t in i||P(o,t,l[t],void 0,n,e.u);for(const t of V(Object.keys(i)))P(o,t,l[t],i[t],n,e.u)};function V(t){return t.includes("ref")?[...t.filter((t=>"ref"!==t)),"ref"]:t}var q=!1,B=!1,G=(t,e,n)=>{const o=e.$[n];let l,i,s=0;if(null!=o.m)l=o.O=a.document.createTextNode(o.m);else{if(!a.document)throw Error("You are trying to render a Stencil component in an environment that doesn't support the DOM.");if(l=o.O=a.document.createElement(o.S),F(null,o,B),o.$){const e="template"===o.S?l.content:l;for(s=0;s<o.$.length;++s)i=G(t,o,s),i&&e.appendChild(i)}}return l["s-hn"]=M,l},I=(t,e,n,o,l,i)=>{let s,r=t;for(r.shadowRoot&&r.tagName===M&&(r=r.shadowRoot),"template"===n.S&&(r=r.content);l<=i;++l)o[l]&&(s=G(null,n,l),s&&(o[l].O=s,J(r,s,e)))},Y=(t,e,n)=>{for(let o=e;o<=n;++o){const e=t[o];if(e){const t=e.O;t&&t.remove()}}},Z=(t,e,n=!1)=>t.S===e.S&&(n?(n&&!t.j&&e.j&&(t.j=e.j),!0):t.j===e.j),_=(t,e,n=!1)=>{const o=e.O=t.O,l=t.$,i=e.$,s=e.m;null==s?("slot"!==e.S||q||t.k!==e.k&&(e.O["s-sn"]=e.k||"",(t=>{f.u|=1;const e=t.closest(M.toLowerCase());if(null!=e){const n=Array.from(e.__childNodes||e.childNodes).find((t=>t["s-cr"])),o=Array.from(t.__childNodes||t.childNodes);for(const t of n?o.reverse():o)null!=t["s-sh"]&&(J(e,t,null!=n?n:null),t["s-sh"]=void 0)}f.u&=-2})(e.O.parentElement)),F(t,e,B),null!==l&&null!==i?((t,e,n,o,l=!1)=>{let i,s,r=0,c=0,u=0,a=0,f=e.length-1,d=e[0],p=e[f],h=o.length-1,m=o[0],v=o[h];const y="template"===n.S?t.content:t;for(;r<=f&&c<=h;)if(null==d)d=e[++r];else if(null==p)p=e[--f];else if(null==m)m=o[++c];else if(null==v)v=o[--h];else if(Z(d,m,l))_(d,m,l),d=e[++r],m=o[++c];else if(Z(p,v,l))_(p,v,l),p=e[--f],v=o[--h];else if(Z(d,v,l))_(d,v,l),J(y,d.O,p.O.nextSibling),d=e[++r],v=o[--h];else if(Z(p,m,l))_(p,m,l),J(y,p.O,d.O),p=e[--f],m=o[++c];else{for(u=-1,a=r;a<=f;++a)if(e[a]&&null!==e[a].j&&e[a].j===m.j){u=a;break}u>=0?(s=e[u],s.S!==m.S?i=G(e&&e[c],n,u):(_(s,m,l),e[u]=void 0,i=s.O),m=o[++c]):(i=G(e&&e[c],n,c),m=o[++c]),i&&J(d.O.parentNode,i,d.O)}r>f?I(t,null==o[h+1]?null:o[h+1].O,n,o,c,h):c>h&&Y(e,r,f)})(o,l,e,i,n):null!==i?(null!==t.m&&(o.textContent=""),I(o,null,e,i,0,i.length-1)):!n&&null!==l&&Y(l,0,l.length-1)):t.m!==s&&(o.data=s)},J=(t,e,n)=>t.__insertBefore?t.__insertBefore(e,n):null==t?void 0:t.insertBefore(e,n),K=(t,e)=>{if(e&&!t.M&&e["s-p"]){const n=e["s-p"].push(new Promise((o=>t.M=()=>{e["s-p"].splice(n-1,1),o()})))}},Q=(t,e)=>{if(t.u|=16,4&t.u)return void(t.u|=512);K(t,t.C);const n=()=>X(t,e);if(!e)return S(n);queueMicrotask((()=>{n()}))},X=(t,e)=>{const n=t.$hostElement$,o=t.i;if(!o)throw Error(`Can't render component <${n.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`);let l;return e?(t.N.length&&t.N.forEach((t=>t(n))),l=st(o,"componentWillLoad",void 0,n)):l=st(o,"componentWillUpdate",void 0,n),l=tt(l,(()=>st(o,"componentWillRender",void 0,n))),tt(l,(()=>nt(t,o,e)))},tt=(t,e)=>et(t)?t.then(e).catch((t=>{console.error(t),e()})):e(),et=t=>t instanceof Promise||t&&t.then&&"function"==typeof t.then,nt=async(t,e,n)=>{var o;const l=t.$hostElement$,i=l["s-rc"];n&&(t=>{const e=t.o,n=t.$hostElement$,o=e.u,l=((t,e)=>{var n,o,l;const i=C(e),s=u.get(i);if(!a.document)return i;if(t=11===t.nodeType?t:a.document,s)if("string"==typeof s){let l,r=E.get(t=t.head||t);if(r||E.set(t,r=new Set),!r.has(i)){l=a.document.createElement("style"),l.textContent=s;const c=null!=(n=f.A)?n:k(a.document);if(null!=c&&l.setAttribute("nonce",c),!(1&e.u))if("HEAD"===t.nodeName){const e=t.querySelectorAll("link[rel=preconnect]"),n=e.length>0?e[e.length-1].nextSibling:t.querySelector("style");t.insertBefore(l,(null==n?void 0:n.parentNode)===t?n:null)}else if("host"in t)if(p){const e=new(null!=(o=t.defaultView)?o:t.ownerDocument.defaultView).CSSStyleSheet;e.replaceSync(s),h?t.adoptedStyleSheets.unshift(e):t.adoptedStyleSheets=[e,...t.adoptedStyleSheets]}else{const e=t.querySelector("style");e?e.textContent=s+e.textContent:t.prepend(l)}else t.append(l);1&e.u&&t.insertBefore(l,null),4&e.u&&(l.textContent+="slot-fb{display:contents}slot-fb[hidden]{display:none}"),r&&r.add(i)}}else{let e=E.get(t);if(e||E.set(t,e=new Set),!e.has(i)){const n=null!=(l=t.defaultView)?l:t.ownerDocument.defaultView;let o;if(s.constructor===n.CSSStyleSheet)o=s;else{o=new n.CSSStyleSheet;for(let t=0;t<s.cssRules.length;t++)o.insertRule(s.cssRules[t].cssText,t)}h?t.adoptedStyleSheets.push(o):t.adoptedStyleSheets=[...t.adoptedStyleSheets,o],e.add(i)}}return i})(n.shadowRoot?n.shadowRoot:n.getRootNode(),e);10&o&&(n["s-sc"]=l,n.classList.add(l+"-h"))})(t);ot(t,e,l,n),i&&(i.map((t=>t())),l["s-rc"]=void 0);{const e=null!=(o=l["s-p"])?o:[],n=()=>lt(t);0===e.length?n():(Promise.all(e).then(n).catch(n),t.u|=4,e.length=0)}},ot=(t,e,n,o)=>{try{e=e.render(),t.u&=-17,t.u|=2,((t,e,n=!1)=>{const o=t.$hostElement$,l=t.o,i=t.L||A(null,null),s=(t=>t&&t.S===L)(e)?e:x(null,null,e);if(M=o.tagName,n&&s.v)for(const t of Object.keys(s.v))o.hasAttribute(t)&&!["key","ref","style","class"].includes(t)&&(s.v[t]=o[t]);s.S=null,s.u|=4,t.L=s,s.O=i.O=o.shadowRoot||o,q=!(!(1&l.u)||128&l.u),_(i,s,n)})(t,e,o)}catch(e){s(e,t.$hostElement$)}return null},lt=t=>{const e=t.$hostElement$,n=t.i,o=t.C;st(n,"componentDidRender",void 0,e),64&t.u?st(n,"componentDidUpdate",void 0,e):(t.u|=64,rt(e),st(n,"componentDidLoad",void 0,e),t.R(e),o||it()),t.M&&(t.M(),t.M=void 0),512&t.u&&j((()=>Q(t,!1))),t.u&=-517},it=()=>{j((()=>D(a,"appload",{detail:{namespace:"stencil-recipe-components"}})))},st=(t,e,n,o)=>{if(t&&t[e])try{return t[e](n)}catch(t){s(t,o)}},rt=t=>t.classList.add("hydrated"),ct=(t,e,n,l)=>{const i=o(t);if(!i)return;if(!i)throw Error(`Couldn't find host element for "${l.h}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`);const s=i.l.get(e),r=i.u,c=i.i;if(n=R(n,l.t[e][0]),(!(8&r)||void 0===s)&&n!==s&&(!Number.isNaN(s)||!Number.isNaN(n))&&(i.l.set(e,n),2&r)){if(c.componentShouldUpdate&&!1===c.componentShouldUpdate(n,s,e)&&!(16&r))return;16&r||Q(i,!1)}},ut=(e,n,l)=>{var i,s;const r=e.prototype;if(n.t){const c=Object.entries(null!=(i=n.t)?i:{});if(c.map((([e,[i]])=>{if(31&i||2&l&&32&i){const{get:s,set:c}=t(r,e)||{};s&&(n.t[e][0]|=2048),c&&(n.t[e][0]|=4096),(1&l||!s)&&Object.defineProperty(r,e,{get(){{if(!(2048&n.t[e][0]))return((t,e)=>o(this).l.get(e))(0,e);const t=o(this),l=t?t.i:r;if(!l)return;return l[e]}},configurable:!0,enumerable:!0}),Object.defineProperty(r,e,{set(t){const s=o(this);if(s){if(c)return void 0===(32&i?this[e]:s.$hostElement$[e])&&s.l.get(e)&&(t=s.l.get(e)),c.call(this,R(t,i)),void ct(this,e,t=32&i?this[e]:s.$hostElement$[e],n);{if(!(1&l&&4096&n.t[e][0]))return ct(this,e,t,n),void(1&l&&!s.i&&s.N.push((()=>{4096&n.t[e][0]&&s.i[e]!==s.l.get(e)&&(s.i[e]=t)})));const o=()=>{const o=s.i[e];!s.l.get(e)&&o&&s.l.set(e,o),s.i[e]=R(t,i),ct(this,e,s.i[e],n)};s.i?o():s.N.push((()=>{o()}))}}}})}})),1&l){const t=new Map;r.attributeChangedCallback=function(e,l,i){f.jmp((()=>{var s;const u=t.get(e),a=o(this);if(this.hasOwnProperty(u)&&(i=this[u],delete this[u]),r.hasOwnProperty(u)&&"number"==typeof this[u]&&this[u]==i)return;if(null==u){const t=null==a?void 0:a.u;if(a&&t&&!(8&t)&&i!==l){const o=a.i,r=null==(s=n.T)?void 0:s[e];null==r||r.forEach((n=>{const[[s,r]]=Object.entries(n);null!=o[s]&&(128&t||1&r)&&o[s].call(o,i,l,e)}))}return}const f=c.find((([t])=>t===u)),d=f&&4&f[1][0],p=d&&null===i&&void 0===this[u];d&&(i=null!==i&&"false"!==i);const h=Object.getOwnPropertyDescriptor(r,u);p||i==this[u]||h.get&&!h.set||(this[u]=i)}))},e.observedAttributes=Array.from(new Set([...Object.keys(null!=(s=n.T)?s:{}),...c.filter((([t,e])=>31&e[0])).map((([e,n])=>{const o=n[1]||e;return t.set(o,e),o}))]))}}return e},at=async(t,e,n)=>{var o;let l;try{if(!(32&e.u)){if(e.u|=32,e.u&=-1025,n.D){const i=((t,e)=>{var n;const o=t.h.replace(/-/g,"_"),l=t.D;if(!l)return;const i=r.get(l);if(i)return i[o];const u=null!=(n=c.get(l))?n:0,a=[u>0?"s-retry="+u:"",""].filter(Boolean).join("&");
2
+ /*!__STENCIL_STATIC_IMPORT_SWITCH__*/
3
+ return import(`./${l}.entry.js${a?"?"+a:""}`).then((t=>(c.delete(l),r.set(l,t),t[o])),(t=>{c.set(l,u+1),s(t,e.$hostElement$)}))})(n,e);if(i&&"then"in i){const t=()=>{};l=await i,t()}else l=i;if(!l)throw e.u&=-33,e.P=(null!=(o=e.P)?o:0)+1,e.P<3&&(e.u|=1024),Error(`Constructor for "${n.h}#${e.H}" was not found`);l.isProxied||(ut(l,n,2),l.isProxied=!0);const u=()=>{};e.u|=8;try{new l(e)}catch(e){s(e,t)}e.u&=-9,u(),ft(e.i,t)}else l=t.constructor,customElements.whenDefined(t.localName).then((()=>e.u|=128));if(l&&l.style){let t;"string"==typeof l.style&&(t=l.style);const e=C(n);if(!u.has(e)){const o=()=>{};((t,e,n)=>{let o=u.get(t);p&&n?(o=o||new CSSStyleSheet,"string"==typeof o?o=e:o.replaceSync(e)):o=e,u.set(t,o)})(e,t,!!(1&n.u)),o()}}}const i=e.C,a=()=>Q(e,!0);i&&i["s-rc"]?i["s-rc"].push(a):a()}catch(n){s(n,t),e.M&&(e.M(),e.M=void 0),!e.R||1024&e.u||e.R(t)}},ft=(t,e)=>{st(t,"connectedCallback",void 0,e)},dt=(t,e)=>{st(t,"disconnectedCallback",void 0,e||t)},pt=(t,e={})=>{var n;if(!a.document)return void console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");const l=[],i=e.exclude||[],s=a.customElements,r=a.document.head,c=r.querySelector("meta[charset]"),u=a.document.createElement("style"),d=[];let p,h=!0;if(Object.assign(f,e),f.p=new URL(e.resourcesUrl||"./",a.document.baseURI).href,t.map((t=>{t[1].map((e=>{const n={u:e[0],h:e[1],t:e[2],U:e[3]};n.t=e[2];const r=n.h,c=class extends HTMLElement{"s-p";"s-rc";hasRegisteredEventListeners=!1;constructor(t){if(super(t),((t,e)=>{const n={u:0,$hostElement$:t,o:e,l:new Map,W:new Map};n.F=new Promise((t=>n.R=t)),t["s-p"]=[],t["s-rc"]=[],n.N=[];const o=n;t.__stencil__getHostRef=()=>o})(t=this,n),1&n.u)if(t.shadowRoot){if("open"!==t.shadowRoot.mode)throw Error(`Unable to re-use existing shadow root for ${n.h}! Mode is set to ${t.shadowRoot.mode} but Stencil only supports open shadow roots.`)}else O.call(t,n)}connectedCallback(){o(this)&&(this.hasRegisteredEventListeners||(this.hasRegisteredEventListeners=!0),p&&(clearTimeout(p),p=null),h?d.push(this):f.jmp((()=>(t=>{if(!(1&f.u)){const e=o(t);if(!e)return;const n=e.o,l=()=>{};if(1&e.u)(null==e?void 0:e.i)?ft(e.i,t):1024&e.u?setTimeout((()=>at(t,e,n)),1e3):(null==e?void 0:e.F)&&e.F.then((()=>ft(e.i,t)));else{e.u|=1;{let n=t;for(;n=n.parentNode||n.host;)if(n["s-p"]){K(e,e.C=n);break}}n.t&&Object.entries(n.t).map((([e,[n]])=>{if(31&n&&Object.prototype.hasOwnProperty.call(t,e)){const n=t[e];delete t[e],t[e]=n}})),at(t,e,n)}l()}})(this))))}disconnectedCallback(){f.jmp((()=>(async t=>{if(!(1&f.u)){const e=o(t);(null==e?void 0:e.i)?dt(e.i,t):(null==e?void 0:e.F)&&e.F.then((()=>dt(e.i,t)))}E.has(t)&&E.delete(t),t.shadowRoot&&E.has(t.shadowRoot)&&E.delete(t.shadowRoot)})(this))),j((()=>{var t;const e=o(this);if(!e)return;const n=d.findIndex((t=>t===this));n>-1&&d.splice(n,1),(null==(t=null==e?void 0:e.L)?void 0:t.O)instanceof Node&&!e.L.O.isConnected&&delete e.L.O}))}componentOnReady(){var t;return null==(t=o(this))?void 0:t.F}};n.D=t[0],i.includes(r)||s.get(r)||(l.push(r),s.define(r,ut(c,n,1)))}))})),l.length>0&&(u.textContent+=l.sort()+"{visibility:hidden}.hydrated{visibility:inherit}",u.innerHTML.length)){u.setAttribute("data-styles","");const t=null!=(n=f.A)?n:k(a.document);null!=t&&u.setAttribute("nonce",t),r.insertBefore(u,c?c.nextSibling:r.firstChild)}h=!1,d.length?d.map((t=>t.connectedCallback())):f.jmp((()=>p=setTimeout(it,30)))},ht=t=>f.A=t;export{pt as b,T as c,x as h,d as p,l as r,ht as s}
@@ -0,0 +1 @@
1
+ import{r as e,c as a,h as t}from"./p-DxpnpZMq.js";const d=class{constructor(t){e(this,t),this.favoriteToggle=a(this,"favoriteToggle"),this.recipeClick=a(this,"recipeClick"),this.addToPlanner=a(this,"add-to-planner")}recipeId="";recipeTitle="";image="";category="";cuisine="";favorite=!1;favoriteToggle;recipeClick;addToPlanner;showPlanner=!1;selectedDay="";selectedMeal="";handleViewRecipe=()=>{this.recipeClick.emit({id:this.recipeId})};toggleFavorite=e=>{e.stopPropagation(),this.favoriteToggle.emit({id:this.recipeId})};openPlanner=e=>{e.stopPropagation(),this.selectedDay="",this.selectedMeal="",this.showPlanner=!0};closePlanner=()=>{this.showPlanner=!1,this.selectedDay="",this.selectedMeal=""};handleDayChange=e=>{this.selectedDay=e.target.value};handleMealChange=e=>{this.selectedMeal=e.target.value};confirmPlanner=()=>{this.selectedDay&&this.selectedMeal&&(this.addToPlanner.emit({id:this.recipeId,day:this.selectedDay,mealType:this.selectedMeal}),this.closePlanner())};render(){const e=this.favorite?`Remove ${this.recipeTitle} from favorites`:`Add ${this.recipeTitle} to favorites`,a=""!==this.selectedDay&&""!==this.selectedMeal;return t("article",{key:"e9cac86199c4999118277c301095f0d5fdc0465e",class:"recipe-card"},t("div",{key:"41cc1e4446a23d097181d023e28ef26ec8e1c709",class:"image-container"},t("img",{key:"5f9d485af235d895d5ba410826fe00ead8795420",src:this.image,alt:this.recipeTitle,loading:"lazy",decoding:"async"}),this.category&&t("span",{key:"8f50506474a6ec6d9cb973bec927640fe1bbc14e",class:"category"},this.category),t("button",{key:"cc2b1c5291f30e8fc8cb14591a884cebd3343018",type:"button",class:{favorite:!0,active:this.favorite},onClick:this.toggleFavorite,"aria-label":e,"aria-pressed":this.favorite},this.favorite?"♥":"♡")),t("div",{key:"8cb4a3397069c51ee95baff05662bf9f3aee9c1d",class:"content"},this.cuisine&&t("div",{key:"de5ad5288350fe2f251ffa62cda82fa35bf53f3e",class:"cuisine"},t("span",{key:"87aa4b6d69bd35acf850b5650b8f5a2db28adef0"},"✦"),this.cuisine),t("h3",{key:"332a9140cc9627d02ab1e5621fb0b2f0c0d8f754"},this.recipeTitle),t("div",{key:"7c2962abe8ebb3cb22e91b61acf1362dc6216f81",class:"actions"},t("button",{key:"fc9b769b0198145d8a49dfaf837acbe24eee3f2e",type:"button",class:"view-button",onClick:this.handleViewRecipe},"View Recipe",t("span",{key:"50f0f5e55f9caab5d70f16aaf3585c80c1e5ac7c"},"→")),t("button",{key:"6936bec5da6c7509f51abf2646312cc0315dbe99",type:"button",class:"planner-button",onClick:this.openPlanner},"+ Add to Planner"))),this.showPlanner&&t("div",{key:"a15cc6195d9331cadbec3eae206a9c82737be735",class:"planner-overlay",onClick:this.closePlanner},t("div",{key:"a5b74b52a845f1488e3eeb2356fc6044f1c15912",class:"planner-modal",onClick:e=>e.stopPropagation()},t("div",{key:"572800bf57b24b41cadfacb49da5dccef6a9f132",class:"planner-header"},t("div",{key:"cd7f730b46ef2fad37a22e05bc5bc3e1fdc6d0c6"},t("h4",{key:"c30504584428ffac7a3dfe0a1d5c2c7c895d1665"},"Add to Meal Planner"),t("p",{key:"dbee3ab4e4dc0b0b3c553684e447a931813b7c66"},"Add ",t("strong",{key:"501eee64ac955ccaa7116a7f20f35473ecc2912d"},this.recipeTitle))),t("button",{key:"55ca144a870c33892b1d61051c8b60dab1528bb8",type:"button",class:"close-button",onClick:this.closePlanner},"×")),t("div",{key:"b8e4b435c27e0a5536335897b59386bd9b4b1b1b",class:"field"},t("label",{key:"b26aec673a147830320a92389d6f2da7a4a901e4",htmlFor:"planner-day"},"Day"),t("select",{key:"0b95a3b9b32278534a0157f469281a67e0c0ad9b",id:"planner-day",onChange:this.handleDayChange},t("option",{key:"c2e6e6d89ece44b371ae377b395aa8719935f326",value:""},"Select a day"),t("option",{key:"98c27f6fb8e49de25ecabda4f52436d8c3fac93b",value:"Monday"},"Monday"),t("option",{key:"7e782ca431ad476040a87f4664341e679a435fd0",value:"Tuesday"},"Tuesday"),t("option",{key:"12f03a59c1a6a4c9d087e612259b585ad1609128",value:"Wednesday"},"Wednesday"),t("option",{key:"718c4397a7c13ad5e38603c97f3fe43f5da17fce",value:"Thursday"},"Thursday"),t("option",{key:"bde3aaa5cce683c0be7a07c2ad4514bf1ed259a4",value:"Friday"},"Friday"),t("option",{key:"28adf4b21ed230171a653a173b6f1564fdadbd86",value:"Saturday"},"Saturday"),t("option",{key:"ba10816944f43c0f693d7e8e926d7cf9514b8f1a",value:"Sunday"},"Sunday"))),t("div",{key:"2f2bbf50b1e3e515424770fe183f40321ed4a0ec",class:"field"},t("label",{key:"3dbb417dd46359dbc524ab187a26b5af3001b809",htmlFor:"planner-meal"},"Meal"),t("select",{key:"ce276fce3064936bf7695897803fce10e83e345c",id:"planner-meal",onChange:this.handleMealChange},t("option",{key:"6c05f317d30a94be195c432d926034e0b7d1bcb5",value:""},"Select a meal"),t("option",{key:"1392d0ae0d8922547329790707812474e63fcc3b",value:"Breakfast"},"Breakfast"),t("option",{key:"2cc7682e5108e782220dbda63e403d90c04dbd5e",value:"Lunch"},"Lunch"),t("option",{key:"255117f914a6112ccf9169f52ae35bc99df1c549",value:"Dinner"},"Dinner"))),t("div",{key:"efd8158033d291082b9cb131deee84b09a649411",class:"planner-actions"},t("button",{key:"816d91efb664e45ea8bb49285049995536848ba5",type:"button",class:"cancel-button",onClick:this.closePlanner},"Cancel"),t("button",{key:"d4b72a6d50bfdf116210f34a67c8f15bc9d38a69",type:"button",class:"add-button",disabled:!a,onClick:this.confirmPlanner},"Add to Planner")))))}};d.style=":host{display:block;font-family:Arial, sans-serif}.recipe-card{position:relative;overflow:hidden;background:#ffffff;border:1px solid #eeeeee;border-radius:18px;box-shadow:0 6px 25px rgba(0, 0, 0, 0.05)}.image-container{position:relative;height:220px;overflow:hidden}.image-container img{width:100%;height:100%;display:block;object-fit:cover}.category{position:absolute;top:14px;left:14px;padding:6px 10px;border-radius:20px;background:rgba(255, 255, 255, 0.94);color:#444444;font-size:12px;font-weight:700}.favorite{position:absolute;top:12px;right:12px;width:38px;height:38px;border:none;border-radius:50%;background:rgba(255, 255, 255, 0.95);color:#777777;font-size:24px;cursor:pointer}.favorite.active{color:#e05252}.content{padding:18px}.cuisine{margin-bottom:8px;color:#f97316;font-size:12px;font-weight:600}.content h3{margin:0 0 16px;color:#2c2c2c;font-size:20px;line-height:1.3}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.view-button,.planner-button{width:100%;min-height:42px;border-radius:9px;font-family:Arial, sans-serif;font-size:13px;font-weight:600;cursor:pointer}.view-button{display:flex;align-items:center;justify-content:center;gap:6px;border:none;background:#f97316;color:white}.view-button:hover{background:#ea580c}.planner-button{border:1px solid #fed7aa;background:#fff7ed;color:#ea580c}.planner-button:hover{background:#ffedd5}.planner-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(0, 0, 0, 0.45)}.planner-modal{width:min(420px, 100%);padding:24px;border-radius:18px;background:white;box-shadow:0 20px 60px rgba(0, 0, 0, 0.2)}.planner-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:22px}.planner-header h4{margin:0 0 6px;font-size:20px;color:#2c2c2c}.planner-header p{margin:0;color:#777777;font-size:13px;line-height:1.5}.close-button{width:32px;height:32px;border:none;border-radius:50%;background:#f5f5f5;font-size:22px;color:#555555;cursor:pointer}.close-button:hover{background:#eeeeee}.planner-modal label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;color:#444444}.planner-modal select{width:100%;height:44px;padding:0 12px;border:1px solid #dddddd;border-radius:10px;background:white;font-family:Arial, sans-serif;font-size:14px;outline:none;box-sizing:border-box}.planner-actions{display:flex;gap:10px;margin-top:20px}.cancel-button,.add-button{flex:1;height:42px;border-radius:9px;font-family:Arial, sans-serif;font-size:14px;font-weight:700;cursor:pointer}.cancel-button{border:1px solid #dddddd;background:white;color:#555555}.cancel-button:hover{background:#f5f5f5}.add-button{border:none;background:#f97316;color:white}.add-button:hover:not(:disabled){background:#ea580c}.add-button:disabled{opacity:0.5;cursor:not-allowed}.field{padding-top:10px}";export{d as recipe_card}
@@ -0,0 +1 @@
1
+ import{r as e,c as a,h as r}from"./p-DxpnpZMq.js";const o=class{constructor(r){e(this,r),this.searchSubmit=a(this,"searchSubmit"),this.searchClear=a(this,"searchClear")}search="";searchSubmit;searchClear;handleInput=e=>{this.search=e.target.value};handleSearch=()=>{const e=this.search.trim();e&&this.searchSubmit.emit(e)};clearSearch=()=>{this.search="",this.searchClear.emit()};render(){return r("div",{key:"aec6c865acb5f9ebcacc2fd517641085c2339303",class:"search-wrapper"},r("div",{key:"f50a9844f4bb84b0ec4e1b04df5d6198e1fe3786",class:"search-box"},r("span",{key:"013f2674aa34aeca8e8166ccc626299433230bc5",class:"search-icon","aria-hidden":"true"},"🔍"),r("input",{key:"4b8fad8626692ee6c44cacd05e48b46b00213b20",type:"text",value:this.search,placeholder:"Searching...","aria-label":"Search for a food",onInput:this.handleInput}),this.search&&r("button",{key:"15af3cda9b0394918e4ca72e313259a006edf54d",type:"button",class:"clear-button",onClick:this.clearSearch,"aria-label":"Clear search"},"×"),r("button",{key:"22cd49c7076666d2f560f83bf718eaaf7ceffbf1",type:"button",class:"search-button",onClick:this.handleSearch},"Search")))}};o.style=":host{display:block;font-family:Arial, sans-serif}.search-wrapper{width:100%;display:flex;justify-content:center;box-sizing:border-box;padding:24px 16px}.search-box{width:100%;max-width:700px;display:flex;align-items:center;padding:6px;background:#ffffff;border:1px solid #d7d2cd;border-radius:14px;box-shadow:0 6px 20px rgba(0, 0, 0, 0.06);transition:border-color 0.2s ease, box-shadow 0.2s ease}.search-box:focus-within{border-color:#e0700f;box-shadow:0 0 0 3px rgba(163, 111, 66, 0.1), 0 8px 24px rgba(0, 0, 0, 0.07)}.search-icon{flex-shrink:0;margin-left:12px;margin-right:8px;font-size:20px}input{flex:1;min-width:0;padding:13px 8px;border:none;outline:none;background:transparent;color:#2c2c2c;font-family:Arial, sans-serif;font-size:16px}input::placeholder{color:#b7bdca}.clear-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:none;border-radius:50%;background:transparent;color:#999999;font-family:Arial, sans-serif;font-size:24px;cursor:pointer;transition:background-color 0.2s ease, color 0.2s ease}.clear-button:hover{background:#f5f2ef;color:#555555}.search-button{flex-shrink:0;padding:12px 22px;border:none;border-radius:10px;background:#f97316;color:#ffffff;font-family:Arial, sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background-color 0.2s ease, transform 0.2s ease}.search-button:hover{background:#f97316;transform:translateY(-1px)}.search-button:active{transform:translateY(0)}@media (max-width: 600px){.search-wrapper{padding:18px 12px}.search-box{border-radius:12px}input{font-size:14px}.search-button{padding:11px 15px;font-size:13px}}@media (prefers-reduced-motion: reduce){.search-box,.clear-button,.search-button{transition:none}}";export{o as search_food}
@@ -0,0 +1 @@
1
+ import{r as e,h as a}from"./p-DxpnpZMq.js";const n=class{constructor(a){e(this,a)}currentPage="";render(){return a("nav",{key:"566b7977eb5d49698529bb053851bfd00ae3e6b7",class:"navbar"},a("a",{key:"0486dfb39ffe360a78251520ce19aeeb02f9cbe8",href:"/",class:"logo"},"🍴 Recipe Finder and Meal Planner"),a("div",{key:"3c08b289c5845dfe5845dae53e48736e04c98f73",class:"nav-links"},a("a",{key:"ca549a73243a753de94117ac0a4c1136ec43d4d3",href:"/",class:{"nav-link":!0,active:"home"===this.currentPage}},"Home"),a("a",{key:"d8fc2d2b873d7e7f1eb17e5f3e53a367811124ba",href:"/favorites",class:{"nav-link":!0,active:"favorites"===this.currentPage}},"Favorites"),a("a",{key:"de54d4a21354713ee67e5f28675d8046e8093c0c",href:"/meal-plan",class:{"nav-link":!0,active:"meal-plan"===this.currentPage}},"Meal Planner"),a("a",{key:"98a0114e219316138f9968f9b9f462ab90dc2144",href:"/my-recipes",class:{"nav-link":!0,active:"my-recipes"===this.currentPage}},"My Recipes")))}};n.style=":host{display:block}.navbar{display:flex;align-items:center;justify-content:space-between;padding:16px 40px;background:#f97316;border-bottom:1px solid #e5e7eb}.logo{color:#ffffff;text-decoration:none;font-size:28px;font-weight:700}.nav-links{display:flex;align-items:center;gap:26px}.nav-link{color:#ffffff;text-decoration:none;font-size:15px;font-weight:600;transition:color 0.2s ease}.nav-link:hover{color:#f9b787}@media (max-width: 700px){.navbar{flex-direction:column;gap:15px;padding:15px 20px}.logo{font-size:22px;text-align:center}.nav-links{gap:15px;flex-wrap:wrap;justify-content:center}}";export{n as recipe_navbar}
@@ -0,0 +1 @@
1
+ import{r as e,h as o}from"./p-DxpnpZMq.js";const i=class{constructor(o){e(this,o)}label;name;type="text";placeholder="";value="";required=!1;helper="";render(){return o("div",{key:"70a6dc59dc7c4367c091fa1cb69a6f9ab7936108",class:"field"},o("label",{key:"4ac58bf5d0570aeb26333b6056429dd90483fddc",htmlFor:this.name},this.label,this.required?" *":""),o("input",{key:"1146d0d67f77e85ffb058d8c705c739e5f4d8765",id:this.name,name:this.name,type:this.type,placeholder:this.placeholder,value:this.value,required:this.required}),this.helper&&o("small",{key:"1bfde2d7cbffdc08d8d97e011fc08e89619a6926"},this.helper))}};i.style=":host{display:block}.field{display:flex;flex-direction:column;gap:8px}label{color:#555555;font-size:16px;font-weight:700}input{width:100%;height:44px;padding:12px 13px;border:1px solid #eeeeee;border-radius:10px;outline:none;background:#fafafa;color:#333333;font-family:Arial, sans-serif;font-size:14px;box-sizing:border-box;transition:border-color 0.2s ease, box-shadow 0.2s ease}input:focus{border-color:#f97316;background:white;box-shadow:0 0 0 3px rgba(163, 111, 66, 0.08)}input::placeholder{color:#bbb}small{color:#aaa;font-size:9px}";export{i as recipe_input}
@@ -0,0 +1 @@
1
+ import{p as e,b as r}from"./p-DxpnpZMq.js";export{s as setNonce}from"./p-DxpnpZMq.js";import{g as t}from"./p-DQuL1Twl.js";(()=>{const r=import.meta.url,t={};return""!==r&&(t.resourcesUrl=new URL(".",r).href),e(t)})().then((async e=>(await t(),r([["p-83e3c89d",[[513,"my-component",{first:[1],middle:[1],last:[1]}]]],["p-87586541",[[513,"no-recipe-found",{header:[1],message:[1],buttonText:[1,"button-text"]}]]],["p-06b59cd5",[[513,"recipe-browser",{categories:[16],areas:[16],ingredients:[16],selectedCategory:[1,"selected-category"],selectedArea:[1,"selected-area"],selectedIngredient:[1,"selected-ingredient"]}]]],["p-2289adb0",[[769,"recipe-button",{variant:[1],type:[1],disabled:[4]}]]],["p-b5c77a1a",[[513,"recipe-card",{recipeId:[1,"recipe-id"],recipeTitle:[1,"recipe-title"],image:[1],category:[1],cuisine:[1],favorite:[4],showPlanner:[32],selectedDay:[32],selectedMeal:[32]}]]],["p-5df4665a",[[769,"recipe-form-section",{number:[1],formTitle:[1,"form-title"],description:[1]}]]],["p-f5524ed4",[[513,"recipe-input",{label:[1],name:[1],type:[1],placeholder:[1],value:[1],required:[4],helper:[1]}]]],["p-efd4f7bb",[[513,"recipe-navbar",{currentPage:[1,"current-page"]}]]],["p-969201bf",[[513,"recipe-textarea",{label:[1],name:[1],rows:[2],placeholder:[1],value:[1],required:[4]}]]],["p-c8a44beb",[[513,"search-food",{search:[1025]}]]]],e))));
@@ -0,0 +1,16 @@
1
+ export declare class MyComponent {
2
+ /**
3
+ * The first name
4
+ */
5
+ first?: string;
6
+ /**
7
+ * The middle name
8
+ */
9
+ middle?: string;
10
+ /**
11
+ * The last name
12
+ */
13
+ last?: string;
14
+ private getText;
15
+ render(): any;
16
+ }