@manidecp/nagp-stencil-ui-kit 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/cjs/custom-modal.cjs.entry.js +35 -0
  2. package/dist/cjs/custom-modal.cjs.entry.js.map +1 -0
  3. package/dist/cjs/index-xXx7YX-n.js +1672 -0
  4. package/dist/cjs/index-xXx7YX-n.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +5 -0
  6. package/dist/cjs/index.cjs.js.map +1 -0
  7. package/dist/cjs/loader.cjs.js +15 -0
  8. package/dist/cjs/loader.cjs.js.map +1 -0
  9. package/dist/cjs/meal-slot-card.cjs.entry.js +33 -0
  10. package/dist/cjs/meal-slot-card.cjs.entry.js.map +1 -0
  11. package/dist/cjs/nagp-recipe-ui-kit.cjs.js +27 -0
  12. package/dist/cjs/nagp-recipe-ui-kit.cjs.js.map +1 -0
  13. package/dist/cjs/recipe-badge.cjs.entry.js +25 -0
  14. package/dist/cjs/recipe-badge.cjs.entry.js.map +1 -0
  15. package/dist/cjs/recipe-card.cjs.entry.js +59 -0
  16. package/dist/cjs/recipe-card.cjs.entry.js.map +1 -0
  17. package/dist/cjs/recipe-rating.cjs.entry.js +62 -0
  18. package/dist/cjs/recipe-rating.cjs.entry.js.map +1 -0
  19. package/dist/collection/collection-manifest.json +17 -0
  20. package/dist/collection/components/custom-modal/custom-modal.css +63 -0
  21. package/dist/collection/components/custom-modal/custom-modal.js +95 -0
  22. package/dist/collection/components/custom-modal/custom-modal.js.map +1 -0
  23. package/dist/collection/components/meal-slot-card/meal-slot-card.css +72 -0
  24. package/dist/collection/components/meal-slot-card/meal-slot-card.js +127 -0
  25. package/dist/collection/components/meal-slot-card/meal-slot-card.js.map +1 -0
  26. package/dist/collection/components/recipe-badge/recipe-badge.css +33 -0
  27. package/dist/collection/components/recipe-badge/recipe-badge.js +87 -0
  28. package/dist/collection/components/recipe-badge/recipe-badge.js.map +1 -0
  29. package/dist/collection/components/recipe-card/recipe-card.css +96 -0
  30. package/dist/collection/components/recipe-card/recipe-card.js +220 -0
  31. package/dist/collection/components/recipe-card/recipe-card.js.map +1 -0
  32. package/dist/collection/components/recipe-rating/recipe-rating.css +36 -0
  33. package/dist/collection/components/recipe-rating/recipe-rating.js +186 -0
  34. package/dist/collection/components/recipe-rating/recipe-rating.js.map +1 -0
  35. package/dist/collection/index.js +2 -0
  36. package/dist/collection/index.js.map +1 -0
  37. package/dist/components/custom-modal.d.ts +11 -0
  38. package/dist/components/custom-modal.js +2 -0
  39. package/dist/components/custom-modal.js.map +1 -0
  40. package/dist/components/index.d.ts +35 -0
  41. package/dist/components/index.js +2 -0
  42. package/dist/components/index.js.map +1 -0
  43. package/dist/components/meal-slot-card.d.ts +11 -0
  44. package/dist/components/meal-slot-card.js +2 -0
  45. package/dist/components/meal-slot-card.js.map +1 -0
  46. package/dist/components/recipe-badge.d.ts +11 -0
  47. package/dist/components/recipe-badge.js +2 -0
  48. package/dist/components/recipe-badge.js.map +1 -0
  49. package/dist/components/recipe-card.d.ts +11 -0
  50. package/dist/components/recipe-card.js +2 -0
  51. package/dist/components/recipe-card.js.map +1 -0
  52. package/dist/components/recipe-rating.d.ts +11 -0
  53. package/dist/components/recipe-rating.js +2 -0
  54. package/dist/components/recipe-rating.js.map +1 -0
  55. package/dist/esm/custom-modal.entry.js +33 -0
  56. package/dist/esm/custom-modal.entry.js.map +1 -0
  57. package/dist/esm/index-DrjLtd7S.js +1646 -0
  58. package/dist/esm/index-DrjLtd7S.js.map +1 -0
  59. package/dist/esm/index.js +4 -0
  60. package/dist/esm/index.js.map +1 -0
  61. package/dist/esm/loader.js +13 -0
  62. package/dist/esm/loader.js.map +1 -0
  63. package/dist/esm/meal-slot-card.entry.js +31 -0
  64. package/dist/esm/meal-slot-card.entry.js.map +1 -0
  65. package/dist/esm/nagp-recipe-ui-kit.js +23 -0
  66. package/dist/esm/nagp-recipe-ui-kit.js.map +1 -0
  67. package/dist/esm/recipe-badge.entry.js +23 -0
  68. package/dist/esm/recipe-badge.entry.js.map +1 -0
  69. package/dist/esm/recipe-card.entry.js +57 -0
  70. package/dist/esm/recipe-card.entry.js.map +1 -0
  71. package/dist/esm/recipe-rating.entry.js +60 -0
  72. package/dist/esm/recipe-rating.entry.js.map +1 -0
  73. package/dist/index.cjs.js +1 -0
  74. package/dist/index.js +1 -0
  75. package/dist/nagp-recipe-ui-kit/index.esm.js +2 -0
  76. package/dist/nagp-recipe-ui-kit/index.esm.js.map +1 -0
  77. package/dist/nagp-recipe-ui-kit/nagp-recipe-ui-kit.css +1 -0
  78. package/dist/nagp-recipe-ui-kit/nagp-recipe-ui-kit.esm.js +2 -0
  79. package/dist/nagp-recipe-ui-kit/nagp-recipe-ui-kit.esm.js.map +1 -0
  80. package/dist/nagp-recipe-ui-kit/p-21d809b9.entry.js +2 -0
  81. package/dist/nagp-recipe-ui-kit/p-21d809b9.entry.js.map +1 -0
  82. package/dist/nagp-recipe-ui-kit/p-524e6762.entry.js +2 -0
  83. package/dist/nagp-recipe-ui-kit/p-524e6762.entry.js.map +1 -0
  84. package/dist/nagp-recipe-ui-kit/p-DrjLtd7S.js +3 -0
  85. package/dist/nagp-recipe-ui-kit/p-DrjLtd7S.js.map +1 -0
  86. package/dist/nagp-recipe-ui-kit/p-cfec107f.entry.js +2 -0
  87. package/dist/nagp-recipe-ui-kit/p-cfec107f.entry.js.map +1 -0
  88. package/dist/nagp-recipe-ui-kit/p-de6ef31c.entry.js +2 -0
  89. package/dist/nagp-recipe-ui-kit/p-de6ef31c.entry.js.map +1 -0
  90. package/dist/nagp-recipe-ui-kit/p-e8a2f5f9.entry.js +2 -0
  91. package/dist/nagp-recipe-ui-kit/p-e8a2f5f9.entry.js.map +1 -0
  92. package/dist/types/components/custom-modal/custom-modal.d.ts +9 -0
  93. package/dist/types/components/meal-slot-card/meal-slot-card.d.ts +17 -0
  94. package/dist/types/components/recipe-badge/recipe-badge.d.ts +6 -0
  95. package/dist/types/components/recipe-card/recipe-card.d.ts +24 -0
  96. package/dist/types/components/recipe-rating/recipe-rating.d.ts +16 -0
  97. package/dist/types/components.d.ts +314 -0
  98. package/dist/types/index.d.ts +1 -0
  99. package/dist/types/stencil-public-runtime.d.ts +1873 -0
  100. package/package.json +32 -0
@@ -0,0 +1,4 @@
1
+
2
+ //# sourceMappingURL=index.js.map
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { g as globalScripts, b as bootstrapLazy } from './index-DrjLtd7S.js';
2
+ export { s as setNonce } from './index-DrjLtd7S.js';
3
+
4
+ const defineCustomElements = async (win, options) => {
5
+ if (typeof window === 'undefined') return undefined;
6
+ await globalScripts();
7
+ return bootstrapLazy([["custom-modal",[[769,"custom-modal",{"isOpen":[4,"is-open"],"modalTitle":[1,"modal-title"]}]]],["meal-slot-card",[[769,"meal-slot-card",{"day":[1],"mealType":[1,"meal-type"],"recipeName":[1,"recipe-name"]}]]],["recipe-badge",[[513,"recipe-badge",{"label":[1],"variant":[1],"color":[1]}]]],["recipe-card",[[769,"recipe-card",{"recipeId":[1,"recipe-id"],"recipeTitle":[1,"recipe-title"],"imageUrl":[1,"image-url"],"prepTime":[2,"prep-time"],"isFavorite":[4,"is-favorite"],"favoriteState":[32],"toggleFavorite":[64]},null,{"isFavorite":[{"handleFavoritePropChange":0}]}]]],["recipe-rating",[[513,"recipe-rating",{"score":[2],"maxScore":[2,"max-score"],"interactive":[4],"value":[2],"max":[2],"currentScore":[32]},null,{"score":[{"handleScoreChange":0}]}]]]], options);
8
+ };
9
+
10
+ export { defineCustomElements };
11
+ //# sourceMappingURL=loader.js.map
12
+
13
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sources":["@lazy-external-entrypoint?app-data=conditional"],"sourcesContent":["export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\nexport const defineCustomElements = async (win, options) => {\n if (typeof window === 'undefined') return undefined;\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n};\n"],"names":[],"mappings":";;;AAGY,MAAC,oBAAoB,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK;AAC5D,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,OAAO,SAAS;AACrD,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D;;;;"}
@@ -0,0 +1,31 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DrjLtd7S.js';
2
+
3
+ const mealSlotCardCss = () => `:host{--meal-card-bg:#fff7ed;--meal-card-border:#fed7aa;--meal-card-text:#111827;--meal-card-subtle:#9a5b00;--meal-card-accent:#f97316;display:block}.meal-slot-card{background:var(--meal-card-bg);border:1px solid var(--meal-card-border);border-radius:18px;padding:1rem;max-width:280px;box-shadow:0 10px 24px rgba(249, 115, 22, 0.08)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.75rem;color:var(--meal-card-subtle)}.day-label{font-weight:700}.meal-pill{display:inline-flex;padding:0.25rem 0.55rem;border-radius:999px;background:rgba(249, 115, 22, 0.12);color:var(--meal-card-accent);font-size:0.7rem;font-weight:700;text-transform:uppercase}.content h3{margin:0 0 0.5rem;color:var(--meal-card-text);font-size:1.2rem}.actions{display:flex;justify-content:space-between;gap:0.5rem;margin-top:1rem}button{border:none;border-radius:10px;padding:0.5rem 0.8rem;font-weight:700;cursor:pointer}button.primary{background:var(--meal-card-accent);color:white}button.secondary{background:#fff;color:#374151;border:1px solid rgba(15, 23, 42, 0.12)}`;
4
+
5
+ const MealSlotCard = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.removeMeal = createEvent(this, "removeMeal");
9
+ this.addMeal = createEvent(this, "addMeal");
10
+ }
11
+ day = 'Monday';
12
+ mealType = 'Dinner';
13
+ recipeName = 'No meal selected';
14
+ removeMeal;
15
+ addMeal;
16
+ handleAddMeal = () => {
17
+ this.addMeal.emit({ day: this.day, mealType: this.mealType });
18
+ };
19
+ handleRemoveMeal = () => {
20
+ this.removeMeal.emit({ day: this.day, mealType: this.mealType });
21
+ };
22
+ render() {
23
+ return (h("article", { key: 'fa9eb478dc830300b8cb795e315e630222c99ae9', class: "meal-slot-card" }, h("header", { key: 'da28c71efc7e22dea6b3c0e31a0a002cd49407e1', class: "card-header" }, h("span", { key: '690e9ae3282df47b991fcf9903b0fc549b76a455', class: "day-label" }, this.day), h("span", { key: '50bc7ed1f5aae519fa9233cdccc02fae13c4fabb', class: "meal-pill" }, this.mealType)), h("div", { key: '157360002668cea4b02436cf7afedb6232007f77', class: "content" }, h("h3", { key: '5c9121084ad9f1b152b51e2db034576cf38f5b03' }, this.recipeName), h("slot", { key: 'b60f501af76e15758c53f29bd66dbab7f196c859' })), h("div", { key: '2572b419e6e0d2f74027e0bf6ef2b1a83245b9ae', class: "actions" }, h("button", { key: '610ea49c7bc1f9b43ef2cff9855a237168c95408', type: "button", class: "primary", onClick: this.handleAddMeal }, "Add meal"), h("button", { key: '0511efe9d57aee3243e06ad43294cd1c4cc2b31b', type: "button", class: "secondary", onClick: this.handleRemoveMeal }, "Remove"))));
24
+ }
25
+ };
26
+ MealSlotCard.style = mealSlotCardCss();
27
+
28
+ export { MealSlotCard as meal_slot_card };
29
+ //# sourceMappingURL=meal-slot-card.entry.js.map
30
+
31
+ //# sourceMappingURL=meal-slot-card.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meal-slot-card.entry.js","sources":["src/components/meal-slot-card/meal-slot-card.css?tag=meal-slot-card&encapsulation=shadow","src/components/meal-slot-card/meal-slot-card.tsx"],"sourcesContent":[":host {\r\n --meal-card-bg: #fff7ed;\r\n --meal-card-border: #fed7aa;\r\n --meal-card-text: #111827;\r\n --meal-card-subtle: #9a5b00;\r\n --meal-card-accent: #f97316;\r\n display: block;\r\n}\r\n\r\n.meal-slot-card {\r\n background: var(--meal-card-bg);\r\n border: 1px solid var(--meal-card-border);\r\n border-radius: 18px;\r\n padding: 1rem;\r\n max-width: 280px;\r\n box-shadow: 0 10px 24px rgba(249, 115, 22, 0.08);\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 0.75rem;\r\n color: var(--meal-card-subtle);\r\n}\r\n\r\n.day-label {\r\n font-weight: 700;\r\n}\r\n\r\n.meal-pill {\r\n display: inline-flex;\r\n padding: 0.25rem 0.55rem;\r\n border-radius: 999px;\r\n background: rgba(249, 115, 22, 0.12);\r\n color: var(--meal-card-accent);\r\n font-size: 0.7rem;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n}\r\n\r\n.content h3 {\r\n margin: 0 0 0.5rem;\r\n color: var(--meal-card-text);\r\n font-size: 1.2rem;\r\n}\r\n\r\n.actions {\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 0.5rem;\r\n margin-top: 1rem;\r\n}\r\n\r\nbutton {\r\n border: none;\r\n border-radius: 10px;\r\n padding: 0.5rem 0.8rem;\r\n font-weight: 700;\r\n cursor: pointer;\r\n}\r\n\r\nbutton.primary {\r\n background: var(--meal-card-accent);\r\n color: white;\r\n}\r\n\r\nbutton.secondary {\r\n background: #fff;\r\n color: #374151;\r\n border: 1px solid rgba(15, 23, 42, 0.12);\r\n}\r\n","import { Component, h, Prop, Event, EventEmitter } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'meal-slot-card',\r\n styleUrl: 'meal-slot-card.css',\r\n shadow: true,\r\n})\r\nexport class MealSlotCard {\r\n @Prop() day: string = 'Monday';\r\n @Prop() mealType: 'Breakfast' | 'Lunch' | 'Dinner' = 'Dinner';\r\n @Prop() recipeName: string = 'No meal selected';\r\n\r\n @Event() removeMeal: EventEmitter<{ day: string; mealType: 'Breakfast' | 'Lunch' | 'Dinner' }>;\r\n @Event() addMeal: EventEmitter<{ day: string; mealType: 'Breakfast' | 'Lunch' | 'Dinner' }>;\r\n\r\n private handleAddMeal = () => {\r\n this.addMeal.emit({ day: this.day, mealType: this.mealType });\r\n };\r\n\r\n private handleRemoveMeal = () => {\r\n this.removeMeal.emit({ day: this.day, mealType: this.mealType });\r\n };\r\n\r\n render() {\r\n return (\r\n <article class=\"meal-slot-card\">\r\n <header class=\"card-header\">\r\n <span class=\"day-label\">{this.day}</span>\r\n <span class=\"meal-pill\">{this.mealType}</span>\r\n </header>\r\n\r\n <div class=\"content\">\r\n <h3>{this.recipeName}</h3>\r\n <slot />\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"primary\" onClick={this.handleAddMeal}>\r\n Add meal\r\n </button>\r\n <button type=\"button\" class=\"secondary\" onClick={this.handleRemoveMeal}>\r\n Remove\r\n </button>\r\n </div>\r\n </article>\r\n );\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,wjCAAwjC,CAAC;;MCO3kC,YAAY,GAAA,MAAA;;;;;;IACf,GAAG,GAAW,QAAQ;IACtB,QAAQ,GAAqC,QAAQ;IACrD,UAAU,GAAW,kBAAkB;AAEtC,IAAA,UAAU;AACV,IAAA,OAAO;IAER,aAAa,GAAG,MAAK;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/D,KAAC;IAEO,gBAAgB,GAAG,MAAK;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClE,KAAC;IAED,MAAM,GAAA;AACJ,QAAA,QACE,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,KAAK,EAAC,gBAAgB,EAAA,EAC7B,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,aAAa,EAAA,EACzB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,WAAW,IAAE,IAAI,CAAC,GAAG,CAAQ,EACzC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,WAAW,EAAA,EAAE,IAAI,CAAC,QAAQ,CAAQ,CACvC,EAET,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,SAAS,EAAA,EAClB,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAK,IAAI,CAAC,UAAU,CAAM,EAC1B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAQ,CACJ,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,SAAS,EAAA,EAClB,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,SAAS,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAA,EAAA,UAAA,CAExD,EACT,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,aAE7D,CACL,CACE;;;;;;;"}
@@ -0,0 +1,23 @@
1
+ import { p as promiseResolve, g as globalScripts, b as bootstrapLazy } from './index-DrjLtd7S.js';
2
+ export { s as setNonce } from './index-DrjLtd7S.js';
3
+
4
+ /*
5
+ Stencil Client Patch Browser v4.44.2 | MIT Licensed | https://stenciljs.com
6
+ */
7
+
8
+ var patchBrowser = () => {
9
+ const importMeta = import.meta.url;
10
+ const opts = {};
11
+ if (importMeta !== "") {
12
+ opts.resourcesUrl = new URL(".", importMeta).href;
13
+ }
14
+ return promiseResolve(opts);
15
+ };
16
+
17
+ patchBrowser().then(async (options) => {
18
+ await globalScripts();
19
+ return bootstrapLazy([["custom-modal",[[769,"custom-modal",{"isOpen":[4,"is-open"],"modalTitle":[1,"modal-title"]}]]],["meal-slot-card",[[769,"meal-slot-card",{"day":[1],"mealType":[1,"meal-type"],"recipeName":[1,"recipe-name"]}]]],["recipe-badge",[[513,"recipe-badge",{"label":[1],"variant":[1],"color":[1]}]]],["recipe-card",[[769,"recipe-card",{"recipeId":[1,"recipe-id"],"recipeTitle":[1,"recipe-title"],"imageUrl":[1,"image-url"],"prepTime":[2,"prep-time"],"isFavorite":[4,"is-favorite"],"favoriteState":[32],"toggleFavorite":[64]},null,{"isFavorite":[{"handleFavoritePropChange":0}]}]]],["recipe-rating",[[513,"recipe-rating",{"score":[2],"maxScore":[2,"max-score"],"interactive":[4],"value":[2],"max":[2],"currentScore":[32]},null,{"score":[{"handleScoreChange":0}]}]]]], options);
20
+ });
21
+ //# sourceMappingURL=nagp-recipe-ui-kit.js.map
22
+
23
+ //# sourceMappingURL=nagp-recipe-ui-kit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nagp-recipe-ui-kit.js","sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.44.2 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,23 @@
1
+ import { r as registerInstance, h } from './index-DrjLtd7S.js';
2
+
3
+ const recipeBadgeCss = () => `:host{--badge-primary-bg:#f97316;--badge-secondary-bg:#e5e7eb;--badge-accent-bg:#7c3aed;--badge-text:#ffffff;display:inline-block}.badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:0.45rem 0.8rem;font-size:0.7rem;font-weight:800;letter-spacing:0.06em;text-transform:uppercase;color:var(--badge-text)}.variant-primary{background:var(--badge-primary-bg)}.variant-secondary{background:var(--badge-secondary-bg);color:#111827}.variant-accent{background:var(--badge-accent-bg)}`;
4
+
5
+ const RecipeBadge = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ }
9
+ label = 'Featured';
10
+ variant = 'primary';
11
+ // Backward-compatible alias for the original scaffolded API.
12
+ color;
13
+ render() {
14
+ const style = this.color ? { background: this.color } : {};
15
+ return (h("span", { key: '35180a6a6346c97293dc0ddadb0819b7aa1ff9e5', class: { badge: true, [`variant-${this.variant}`]: true }, style: style }, this.label));
16
+ }
17
+ };
18
+ RecipeBadge.style = recipeBadgeCss();
19
+
20
+ export { RecipeBadge as recipe_badge };
21
+ //# sourceMappingURL=recipe-badge.entry.js.map
22
+
23
+ //# sourceMappingURL=recipe-badge.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-badge.entry.js","sources":["src/components/recipe-badge/recipe-badge.css?tag=recipe-badge&encapsulation=shadow","src/components/recipe-badge/recipe-badge.tsx"],"sourcesContent":[":host {\r\n --badge-primary-bg: #f97316;\r\n --badge-secondary-bg: #e5e7eb;\r\n --badge-accent-bg: #7c3aed;\r\n --badge-text: #ffffff;\r\n display: inline-block;\r\n}\r\n\r\n.badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 999px;\r\n padding: 0.45rem 0.8rem;\r\n font-size: 0.7rem;\r\n font-weight: 800;\r\n letter-spacing: 0.06em;\r\n text-transform: uppercase;\r\n color: var(--badge-text);\r\n}\r\n\r\n.variant-primary {\r\n background: var(--badge-primary-bg);\r\n}\r\n\r\n.variant-secondary {\r\n background: var(--badge-secondary-bg);\r\n color: #111827;\r\n}\r\n\r\n.variant-accent {\r\n background: var(--badge-accent-bg);\r\n}\r\n","import { Component, h, Prop } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'recipe-badge',\r\n styleUrl: 'recipe-badge.css',\r\n shadow: true,\r\n})\r\nexport class RecipeBadge {\r\n @Prop() label: string = 'Featured';\r\n @Prop() variant: 'primary' | 'secondary' | 'accent' = 'primary';\r\n\r\n // Backward-compatible alias for the original scaffolded API.\r\n @Prop() color: string;\r\n\r\n render() {\r\n const style = this.color ? { background: this.color } : {};\r\n return (\r\n <span class={{ badge: true, [`variant-${this.variant}`]: true }} style={style}>\r\n {this.label}\r\n </span>\r\n );\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,MAAM,CAAC,sgBAAsgB,CAAC;;MCOxhB,WAAW,GAAA,MAAA;;;;IACd,KAAK,GAAW,UAAU;IAC1B,OAAO,GAAuC,SAAS;;AAGvD,IAAA,KAAK;IAEb,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;AAC1D,QAAA,QACE,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA,QAAA,EAAW,IAAI,CAAC,OAAO,CAAA,CAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAA,EAC1E,IAAI,CAAC,KAAK,CACN;;;;;;;"}
@@ -0,0 +1,57 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DrjLtd7S.js';
2
+
3
+ const recipeCardCss = () => `:host{--recipe-card-bg:#ffffff;--recipe-card-text:#111827;--recipe-card-muted:#6b7280;--recipe-card-accent:#f97316;--recipe-card-border:#e5e7eb;display:block}.recipe-card{background:var(--recipe-card-bg);border:1px solid var(--recipe-card-border);border-radius:18px;overflow:hidden;box-shadow:0 12px 30px rgba(15, 23, 42, 0.08);cursor:pointer;transition:transform 0.2s ease, box-shadow 0.2s ease}.recipe-card:hover{transform:translateY(-2px);box-shadow:0 18px 32px rgba(15, 23, 42, 0.12)}.image-wrap{position:relative;height:180px;background:linear-gradient(135deg, #fff7ed, #ffedd5)}.image-wrap img,.image-placeholder{width:100%;height:100%;display:block;object-fit:cover}.image-placeholder{display:grid;place-items:center;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:var(--recipe-card-accent)}.favorite{position:absolute;top:12px;right:12px;width:2.5rem;height:2.5rem;border:none;border-radius:50%;background:rgba(255, 255, 255, 0.9);color:#9ca3af;font-size:1.2rem;cursor:pointer}.favorite.active{background:rgba(249, 115, 22, 0.12);color:var(--recipe-card-accent)}.card-content{padding:1rem}.meta-row{display:flex;justify-content:flex-end;margin-bottom:0.5rem}.prep-time{font-size:0.75rem;font-weight:700;letter-spacing:0.04em;text-transform:uppercase;color:var(--recipe-card-accent)}h2{margin:0 0 0.75rem;font-size:1.25rem;color:var(--recipe-card-text)}.actions-row{display:flex;justify-content:flex-end;align-items:center;gap:0.5rem}`;
4
+
5
+ const RecipeCard = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.cardClick = createEvent(this, "cardClick");
9
+ this.favoriteToggle = createEvent(this, "favoriteToggle");
10
+ }
11
+ recipeId = 'recipe-1';
12
+ recipeTitle = 'Spicy Pasta';
13
+ imageUrl = '';
14
+ prepTime = 30;
15
+ isFavorite = false;
16
+ favoriteState = false;
17
+ cardClick;
18
+ favoriteToggle;
19
+ componentWillLoad() {
20
+ this.favoriteState = this.isFavorite;
21
+ }
22
+ handleFavoritePropChange(newValue) {
23
+ this.favoriteState = newValue;
24
+ }
25
+ async toggleFavorite() {
26
+ this.favoriteState = !this.favoriteState;
27
+ this.favoriteToggle.emit({
28
+ recipeId: this.recipeId,
29
+ recipeTitle: this.recipeTitle,
30
+ isFavorite: this.favoriteState,
31
+ });
32
+ }
33
+ handleCardClick = () => {
34
+ this.cardClick.emit({
35
+ recipeId: this.recipeId,
36
+ recipeTitle: this.recipeTitle,
37
+ });
38
+ };
39
+ handleFavoriteClick = (event) => {
40
+ event.stopPropagation();
41
+ this.toggleFavorite();
42
+ };
43
+ render() {
44
+ return (h("article", { key: 'ea8d57192146e0c875ba9c357ea5e65ddf4e2c5e', class: "recipe-card", onClick: this.handleCardClick }, h("div", { key: 'f6dfc3b4481988fd07d23cd0548f1cb1984942f5', class: "image-wrap" }, this.imageUrl ? (h("img", { src: this.imageUrl, alt: this.recipeTitle })) : (h("div", { class: "image-placeholder" }, "Recipe")), h("button", { key: 'f024d1784c817c7bb2ad937444365be8d192d4f8', type: "button", class: { favorite: true, active: this.favoriteState }, "aria-label": this.favoriteState ? 'Remove favorite' : 'Add favorite', onClick: this.handleFavoriteClick }, this.favoriteState ? '♥' : '♡')), h("div", { key: 'e44fb2e9d90c8ef20d05a1f1baabc7d1e1b7a070', class: "card-content" }, h("div", { key: 'e34a861b6f82d9368d400d0115a329bf3a9b91f4', class: "meta-row" }, h("span", { key: '925e5a0682f4923d51c28b07348b403ddac19065', class: "prep-time" }, this.prepTime, " min")), h("h2", { key: '7a576e9ed4af7fa83a5e34400ad2a0cfb32f7a1c' }, this.recipeTitle), h("div", { key: 'd4f3a287d889da78d1a785183aa43c53f9546c36', class: "actions-row" }, h("slot", { key: 'aeb6163d6243fbc55cf98f5fd7c3fbbf59a1a6e9', name: "actions" })))));
45
+ }
46
+ static get watchers() { return {
47
+ "isFavorite": [{
48
+ "handleFavoritePropChange": 0
49
+ }]
50
+ }; }
51
+ };
52
+ RecipeCard.style = recipeCardCss();
53
+
54
+ export { RecipeCard as recipe_card };
55
+ //# sourceMappingURL=recipe-card.entry.js.map
56
+
57
+ //# sourceMappingURL=recipe-card.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-card.entry.js","sources":["src/components/recipe-card/recipe-card.css?tag=recipe-card&encapsulation=shadow","src/components/recipe-card/recipe-card.tsx"],"sourcesContent":[":host {\r\n --recipe-card-bg: #ffffff;\r\n --recipe-card-text: #111827;\r\n --recipe-card-muted: #6b7280;\r\n --recipe-card-accent: #f97316;\r\n --recipe-card-border: #e5e7eb;\r\n display: block;\r\n}\r\n\r\n.recipe-card {\r\n background: var(--recipe-card-bg);\r\n border: 1px solid var(--recipe-card-border);\r\n border-radius: 18px;\r\n overflow: hidden;\r\n box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);\r\n cursor: pointer;\r\n transition: transform 0.2s ease, box-shadow 0.2s ease;\r\n}\r\n\r\n.recipe-card:hover {\r\n transform: translateY(-2px);\r\n box-shadow: 0 18px 32px rgba(15, 23, 42, 0.12);\r\n}\r\n\r\n.image-wrap {\r\n position: relative;\r\n height: 180px;\r\n background: linear-gradient(135deg, #fff7ed, #ffedd5);\r\n}\r\n\r\n.image-wrap img,\r\n.image-placeholder {\r\n width: 100%;\r\n height: 100%;\r\n display: block;\r\n object-fit: cover;\r\n}\r\n\r\n.image-placeholder {\r\n display: grid;\r\n place-items: center;\r\n font-weight: 700;\r\n letter-spacing: 0.08em;\r\n text-transform: uppercase;\r\n color: var(--recipe-card-accent);\r\n}\r\n\r\n.favorite {\r\n position: absolute;\r\n top: 12px;\r\n right: 12px;\r\n width: 2.5rem;\r\n height: 2.5rem;\r\n border: none;\r\n border-radius: 50%;\r\n background: rgba(255, 255, 255, 0.9);\r\n color: #9ca3af;\r\n font-size: 1.2rem;\r\n cursor: pointer;\r\n}\r\n\r\n.favorite.active {\r\n background: rgba(249, 115, 22, 0.12);\r\n color: var(--recipe-card-accent);\r\n}\r\n\r\n.card-content {\r\n padding: 1rem;\r\n}\r\n\r\n.meta-row {\r\n display: flex;\r\n justify-content: flex-end;\r\n margin-bottom: 0.5rem;\r\n}\r\n\r\n.prep-time {\r\n font-size: 0.75rem;\r\n font-weight: 700;\r\n letter-spacing: 0.04em;\r\n text-transform: uppercase;\r\n color: var(--recipe-card-accent);\r\n}\r\n\r\nh2 {\r\n margin: 0 0 0.75rem;\r\n font-size: 1.25rem;\r\n color: var(--recipe-card-text);\r\n}\r\n\r\n.actions-row {\r\n display: flex;\r\n justify-content: flex-end;\r\n align-items: center;\r\n gap: 0.5rem;\r\n}\r\n","import { Component, h, Prop, State, Event, EventEmitter, Method, Watch } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'recipe-card',\r\n styleUrl: 'recipe-card.css',\r\n shadow: true,\r\n})\r\nexport class RecipeCard {\r\n @Prop() recipeId: string = 'recipe-1';\r\n @Prop() recipeTitle: string = 'Spicy Pasta';\r\n @Prop() imageUrl: string = '';\r\n @Prop() prepTime: number = 30;\r\n @Prop() isFavorite: boolean = false;\r\n\r\n @State() favoriteState: boolean = false;\r\n\r\n @Event() cardClick: EventEmitter<{ recipeId: string; recipeTitle: string }>;\r\n @Event() favoriteToggle: EventEmitter<{ recipeId: string; recipeTitle: string; isFavorite: boolean }>;\r\n\r\n componentWillLoad() {\r\n this.favoriteState = this.isFavorite;\r\n }\r\n\r\n @Watch('isFavorite')\r\n handleFavoritePropChange(newValue: boolean) {\r\n this.favoriteState = newValue;\r\n }\r\n\r\n @Method()\r\n async toggleFavorite() {\r\n this.favoriteState = !this.favoriteState;\r\n this.favoriteToggle.emit({\r\n recipeId: this.recipeId,\r\n recipeTitle: this.recipeTitle,\r\n isFavorite: this.favoriteState,\r\n });\r\n }\r\n\r\n private handleCardClick = () => {\r\n this.cardClick.emit({\r\n recipeId: this.recipeId,\r\n recipeTitle: this.recipeTitle,\r\n });\r\n };\r\n\r\n private handleFavoriteClick = (event: Event) => {\r\n event.stopPropagation();\r\n this.toggleFavorite();\r\n };\r\n\r\n render() {\r\n return (\r\n <article class=\"recipe-card\" onClick={this.handleCardClick}>\r\n <div class=\"image-wrap\">\r\n {this.imageUrl ? (\r\n <img src={this.imageUrl} alt={this.recipeTitle} />\r\n ) : (\r\n <div class=\"image-placeholder\">Recipe</div>\r\n )}\r\n <button\r\n type=\"button\"\r\n class={{ favorite: true, active: this.favoriteState }}\r\n aria-label={this.favoriteState ? 'Remove favorite' : 'Add favorite'}\r\n onClick={this.handleFavoriteClick}\r\n >\r\n {this.favoriteState ? '♥' : '♡'}\r\n </button>\r\n </div>\r\n\r\n <div class=\"card-content\">\r\n <div class=\"meta-row\">\r\n <span class=\"prep-time\">{this.prepTime} min</span>\r\n </div>\r\n <h2>{this.recipeTitle}</h2>\r\n <div class=\"actions-row\">\r\n <slot name=\"actions\" />\r\n </div>\r\n </div>\r\n </article>\r\n );\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAAA,MAAM,aAAa,GAAG,MAAM,CAAC,s7CAAs7C,CAAC;;MCOv8C,UAAU,GAAA,MAAA;;;;;;IACb,QAAQ,GAAW,UAAU;IAC7B,WAAW,GAAW,aAAa;IACnC,QAAQ,GAAW,EAAE;IACrB,QAAQ,GAAW,EAAE;IACrB,UAAU,GAAY,KAAK;IAE1B,aAAa,GAAY,KAAK;AAE9B,IAAA,SAAS;AACT,IAAA,cAAc;IAEvB,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;;AAItC,IAAA,wBAAwB,CAAC,QAAiB,EAAA;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;;AAI/B,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa;AACxC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,aAAa;AAC/B,SAAA,CAAC;;IAGI,eAAe,GAAG,MAAK;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC9B,SAAA,CAAC;AACJ,KAAC;AAEO,IAAA,mBAAmB,GAAG,CAAC,KAAY,KAAI;QAC7C,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;AACvB,KAAC;IAED,MAAM,GAAA;QACJ,QACE,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,KAAK,EAAC,aAAa,EAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAA,EACxD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,YAAY,EAAA,EACpB,IAAI,CAAC,QAAQ,IACZ,CAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAA,CAAI,KAElD,CAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,mBAAmB,aAAa,CAC5C,EACD,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,gBACzC,IAAI,CAAC,aAAa,GAAG,iBAAiB,GAAG,cAAc,EACnE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAA,EAEhC,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,GAAG,CACxB,CACL,EAEN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,cAAc,EAAA,EACvB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,UAAU,EAAA,EACnB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,WAAW,EAAA,EAAE,IAAI,CAAC,QAAQ,SAAY,CAC9C,EACN,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAK,IAAI,CAAC,WAAW,CAAM,EAC3B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAA,EACtB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,SAAS,EAAA,CAAG,CACnB,CACF,CACE;;;;;;;;;;;;"}
@@ -0,0 +1,60 @@
1
+ import { r as registerInstance, c as createEvent, h } from './index-DrjLtd7S.js';
2
+
3
+ const recipeRatingCss = () => `:host{--rating-filled:#fbbf24;--rating-empty:#d1d5db;display:inline-block}.rating{display:inline-flex;align-items:center;gap:0.15rem;font-size:1.2rem;line-height:1}.star{border:none;background:transparent;padding:0;margin:0;cursor:default;color:var(--rating-empty);user-select:none;font-size:inherit}.interactive .star{cursor:pointer}.star.filled{color:var(--rating-filled)}button.star{cursor:pointer}`;
4
+
5
+ const RecipeRating = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.ratingChange = createEvent(this, "ratingChange");
9
+ }
10
+ score = 4;
11
+ maxScore = 5;
12
+ interactive = false;
13
+ // Backward-compatible aliases for the original scaffolded API.
14
+ value;
15
+ max;
16
+ currentScore = 0;
17
+ ratingChange;
18
+ get effectiveScore() {
19
+ return this.score ?? this.value ?? 4;
20
+ }
21
+ get effectiveMaxScore() {
22
+ return this.maxScore ?? this.max ?? 5;
23
+ }
24
+ componentWillLoad() {
25
+ this.currentScore = this.effectiveScore;
26
+ }
27
+ handleScoreChange(newValue) {
28
+ this.currentScore = newValue;
29
+ }
30
+ handleStarClick = (value) => {
31
+ if (!this.interactive) {
32
+ return;
33
+ }
34
+ this.currentScore = value;
35
+ this.ratingChange.emit(value);
36
+ };
37
+ render() {
38
+ const maxScore = this.effectiveMaxScore;
39
+ const stars = Array.from({ length: maxScore }, (_, index) => {
40
+ const value = index + 1;
41
+ const filled = value <= this.currentScore;
42
+ if (this.interactive) {
43
+ return (h("button", { type: "button", class: { star: true, filled }, onClick: () => this.handleStarClick(value), "aria-label": `Rate ${value} out of ${maxScore}`, "aria-pressed": filled }, filled ? '★' : '☆'));
44
+ }
45
+ return h("span", { class: { star: true, filled }, "aria-hidden": "true" }, filled ? '★' : '☆');
46
+ });
47
+ return (h("div", { class: "rating", "aria-label": `Rated ${this.currentScore} out of ${maxScore}`, role: "img" }, stars));
48
+ }
49
+ static get watchers() { return {
50
+ "score": [{
51
+ "handleScoreChange": 0
52
+ }]
53
+ }; }
54
+ };
55
+ RecipeRating.style = recipeRatingCss();
56
+
57
+ export { RecipeRating as recipe_rating };
58
+ //# sourceMappingURL=recipe-rating.entry.js.map
59
+
60
+ //# sourceMappingURL=recipe-rating.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-rating.entry.js","sources":["src/components/recipe-rating/recipe-rating.css?tag=recipe-rating&encapsulation=shadow","src/components/recipe-rating/recipe-rating.tsx"],"sourcesContent":[":host {\r\n --rating-filled: #fbbf24;\r\n --rating-empty: #d1d5db;\r\n display: inline-block;\r\n}\r\n\r\n.rating {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 0.15rem;\r\n font-size: 1.2rem;\r\n line-height: 1;\r\n}\r\n\r\n.star {\r\n border: none;\r\n background: transparent;\r\n padding: 0;\r\n margin: 0;\r\n cursor: default;\r\n color: var(--rating-empty);\r\n user-select: none;\r\n font-size: inherit;\r\n}\r\n\r\n.interactive .star {\r\n cursor: pointer;\r\n}\r\n\r\n.star.filled {\r\n color: var(--rating-filled);\r\n}\r\n\r\nbutton.star {\r\n cursor: pointer;\r\n}\r\n","import { Component, h, Prop, State, Event, EventEmitter, Watch } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'recipe-rating',\r\n styleUrl: 'recipe-rating.css',\r\n shadow: true,\r\n})\r\nexport class RecipeRating {\r\n @Prop() score: number = 4;\r\n @Prop() maxScore: number = 5;\r\n @Prop() interactive: boolean = false;\r\n\r\n // Backward-compatible aliases for the original scaffolded API.\r\n @Prop() value: number;\r\n @Prop() max: number;\r\n\r\n @State() currentScore: number = 0;\r\n\r\n @Event() ratingChange: EventEmitter<number>;\r\n\r\n private get effectiveScore(): number {\r\n return this.score ?? this.value ?? 4;\r\n }\r\n\r\n private get effectiveMaxScore(): number {\r\n return this.maxScore ?? this.max ?? 5;\r\n }\r\n\r\n componentWillLoad() {\r\n this.currentScore = this.effectiveScore;\r\n }\r\n\r\n @Watch('score')\r\n handleScoreChange(newValue: number) {\r\n this.currentScore = newValue;\r\n }\r\n\r\n private handleStarClick = (value: number) => {\r\n if (!this.interactive) {\r\n return;\r\n }\r\n\r\n this.currentScore = value;\r\n this.ratingChange.emit(value);\r\n };\r\n\r\n render() {\r\n const maxScore = this.effectiveMaxScore;\r\n const stars = Array.from({ length: maxScore }, (_, index) => {\r\n const value = index + 1;\r\n const filled = value <= this.currentScore;\r\n\r\n if (this.interactive) {\r\n return (\r\n <button\r\n type=\"button\"\r\n class={{ star: true, filled }}\r\n onClick={() => this.handleStarClick(value)}\r\n aria-label={`Rate ${value} out of ${maxScore}`}\r\n aria-pressed={filled}\r\n >\r\n {filled ? '★' : '☆'}\r\n </button>\r\n );\r\n }\r\n\r\n return <span class={{ star: true, filled }} aria-hidden=\"true\">{filled ? '★' : '☆'}</span>;\r\n });\r\n\r\n return (\r\n <div class=\"rating\" aria-label={`Rated ${this.currentScore} out of ${maxScore}`} role=\"img\">\r\n {stars}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,iZAAiZ,CAAC;;MCOpa,YAAY,GAAA,MAAA;;;;;IACf,KAAK,GAAW,CAAC;IACjB,QAAQ,GAAW,CAAC;IACpB,WAAW,GAAY,KAAK;;AAG5B,IAAA,KAAK;AACL,IAAA,GAAG;IAEF,YAAY,GAAW,CAAC;AAExB,IAAA,YAAY;AAErB,IAAA,IAAY,cAAc,GAAA;QACxB,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;;AAGtC,IAAA,IAAY,iBAAiB,GAAA;QAC3B,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;;IAGvC,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc;;AAIzC,IAAA,iBAAiB,CAAC,QAAgB,EAAA;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;;AAGtB,IAAA,eAAe,GAAG,CAAC,KAAa,KAAI;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;;AAGF,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,KAAC;IAED,MAAM,GAAA;AACJ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB;AACvC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;AAC1D,YAAA,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC;AACvB,YAAA,MAAM,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY;AAEzC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,QACE,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAC7B,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAA,YAAA,EAC9B,CAAA,KAAA,EAAQ,KAAK,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAA,cAAA,EAChC,MAAM,EAAA,EAEnB,MAAM,GAAG,GAAG,GAAG,GAAG,CACZ;;AAIb,YAAA,OAAO,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAA,aAAA,EAAc,MAAM,EAAA,EAAE,MAAM,GAAG,GAAG,GAAG,GAAG,CAAQ;AAC5F,SAAC,CAAC;AAEF,QAAA,QACE,WAAK,KAAK,EAAC,QAAQ,EAAA,YAAA,EAAa,CAAA,MAAA,EAAS,IAAI,CAAC,YAAY,CAAA,QAAA,EAAW,QAAQ,CAAA,CAAE,EAAE,IAAI,EAAC,KAAK,EAAA,EACxF,KAAK,CACF;;;;;;;;;;;;"}
@@ -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,2 @@
1
+
2
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ :root{font-family:Inter, 'Segoe UI', sans-serif;color:#1f2937;background:#f8fafc}*{box-sizing:border-box}
@@ -0,0 +1,2 @@
1
+ import{p as e,g as r,b as a}from"./p-DrjLtd7S.js";export{s as setNonce}from"./p-DrjLtd7S.js";var i=()=>{const r=import.meta.url;const a={};if(r!==""){a.resourcesUrl=new URL(".",r).href}return e(a)};i().then((async e=>{await r();return a([["p-21d809b9",[[769,"custom-modal",{isOpen:[4,"is-open"],modalTitle:[1,"modal-title"]}]]],["p-524e6762",[[769,"meal-slot-card",{day:[1],mealType:[1,"meal-type"],recipeName:[1,"recipe-name"]}]]],["p-e8a2f5f9",[[513,"recipe-badge",{label:[1],variant:[1],color:[1]}]]],["p-cfec107f",[[769,"recipe-card",{recipeId:[1,"recipe-id"],recipeTitle:[1,"recipe-title"],imageUrl:[1,"image-url"],prepTime:[2,"prep-time"],isFavorite:[4,"is-favorite"],favoriteState:[32],toggleFavorite:[64]},null,{isFavorite:[{handleFavoritePropChange:0}]}]]],["p-de6ef31c",[[513,"recipe-rating",{score:[2],maxScore:[2,"max-score"],interactive:[4],value:[2],max:[2],currentScore:[32]},null,{score:[{handleScoreChange:0}]}]]]],e)}));
2
+ //# sourceMappingURL=nagp-recipe-ui-kit.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nagp-recipe-ui-kit.esm.js","sources":["node_modules/@stencil/core/internal/client/patch-browser.js","@lazy-browser-entrypoint?app-data=conditional"],"sourcesContent":["/*\n Stencil Client Patch Browser v4.44.2 | MIT Licensed | https://stenciljs.com\n */\n\n// src/client/client-patch-browser.ts\nimport { BUILD, NAMESPACE } from \"@stencil/core/internal/app-data\";\nimport { consoleDevInfo, H, promiseResolve, win } from \"@stencil/core\";\nvar patchBrowser = () => {\n if (BUILD.isDev && !BUILD.isTesting) {\n consoleDevInfo(\"Running in development mode.\");\n }\n if (BUILD.cloneNodeFix) {\n patchCloneNodeFix(H.prototype);\n }\n const scriptElm = BUILD.scriptDataOpts ? win.document && Array.from(win.document.querySelectorAll(\"script\")).find(\n (s) => new RegExp(`/${NAMESPACE}(\\\\.esm)?\\\\.js($|\\\\?|#)`).test(s.src) || s.getAttribute(\"data-stencil-namespace\") === NAMESPACE\n ) : null;\n const importMeta = import.meta.url;\n const opts = BUILD.scriptDataOpts ? (scriptElm || {})[\"data-opts\"] || {} : {};\n if (importMeta !== \"\") {\n opts.resourcesUrl = new URL(\".\", importMeta).href;\n }\n return promiseResolve(opts);\n};\nvar patchCloneNodeFix = (HTMLElementPrototype) => {\n const nativeCloneNodeFn = HTMLElementPrototype.cloneNode;\n HTMLElementPrototype.cloneNode = function(deep) {\n if (this.nodeName === \"TEMPLATE\") {\n return nativeCloneNodeFn.call(this, deep);\n }\n const clonedNode = nativeCloneNodeFn.call(this, false);\n const srcChildNodes = this.childNodes;\n if (deep) {\n for (let i = 0; i < srcChildNodes.length; i++) {\n if (srcChildNodes[i].nodeType !== 2) {\n clonedNode.appendChild(srcChildNodes[i].cloneNode(true));\n }\n }\n }\n return clonedNode;\n };\n};\nexport {\n patchBrowser\n};\n","export { setNonce } from '@stencil/core';\nimport { bootstrapLazy } from '@stencil/core';\nimport { patchBrowser } from '@stencil/core/internal/client/patch-browser';\nimport { globalScripts } from '@stencil/core/internal/app-globals';\npatchBrowser().then(async (options) => {\n await globalScripts();\n return bootstrapLazy([/*!__STENCIL_LAZY_DATA__*/], options);\n});\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;;AAKA,IAAI,YAAY,GAAG,MAAM;AAUzB,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;AACpC,EAAE,MAAM,IAAI,GAAiE,EAAE;AAC/E,EAAE,IAAI,UAAU,KAAK,EAAE,EAAE;AACzB,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,IAAI;AACrD;AACA,EAAE,OAAO,cAAc,CAAC,IAAI,CAAC;AAC7B,CAAC;;ACnBD,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK;AACvC,EAAE,MAAM,aAAa,EAAE;AACvB,EAAE,OAAO,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC;AAC7D,CAAC,CAAC","x_google_ignoreList":[0]}
@@ -0,0 +1,2 @@
1
+ import{r as o,c as a,h as e}from"./p-DrjLtd7S.js";const l=()=>`:host{--modal-overlay:rgba(15, 23, 42, 0.45);--modal-bg:#ffffff;--modal-border:#e5e7eb;--modal-text:#111827;--modal-muted:#6b7280;display:block}.modal-backdrop{position:fixed;inset:0;background:var(--modal-overlay);display:grid;place-items:center;padding:1rem;z-index:1000}.modal{width:min(420px, 100%);background:var(--modal-bg);border:1px solid var(--modal-border);border-radius:18px;padding:1.25rem;box-shadow:0 20px 45px rgba(15, 23, 42, 0.25)}header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}h3{margin:0;font-size:1.25rem;color:var(--modal-text)}.close-button{width:2rem;height:2rem;border:none;border-radius:999px;background:#f3f4f6;color:var(--modal-muted);font-size:1.25rem;cursor:pointer}.modal-body{color:var(--modal-text)}.modal-footer{display:flex;justify-content:flex-end;gap:0.75rem;margin-top:1.25rem}`;const r=class{constructor(e){o(this,e);this.closeModal=a(this,"closeModal")}isOpen=true;modalTitle="Dialog";closeModal;handleOverlayClick=o=>{if(o.target.classList.contains("modal-backdrop")){this.closeModal.emit()}};handleClose=()=>{this.closeModal.emit()};render(){if(!this.isOpen){return null}return e("div",{class:"modal-backdrop",onClick:this.handleOverlayClick},e("div",{class:"modal",role:"dialog","aria-modal":"true","aria-label":this.modalTitle},e("header",null,e("h3",null,this.modalTitle),e("button",{type:"button",class:"close-button",onClick:this.handleClose,"aria-label":"Close modal"},"×")),e("div",{class:"modal-body"},e("slot",null)),e("div",{class:"modal-footer"},e("slot",{name:"footer"}))))}};r.style=l();export{r as custom_modal};
2
+ //# sourceMappingURL=p-21d809b9.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["customModalCss","CustomModal","isOpen","modalTitle","closeModal","handleOverlayClick","event","target","classList","contains","this","emit","handleClose","render","h","class","onClick","role","type","name"],"sources":["src/components/custom-modal/custom-modal.css?tag=custom-modal&encapsulation=shadow","src/components/custom-modal/custom-modal.tsx"],"sourcesContent":[":host {\r\n --modal-overlay: rgba(15, 23, 42, 0.45);\r\n --modal-bg: #ffffff;\r\n --modal-border: #e5e7eb;\r\n --modal-text: #111827;\r\n --modal-muted: #6b7280;\r\n display: block;\r\n}\r\n\r\n.modal-backdrop {\r\n position: fixed;\r\n inset: 0;\r\n background: var(--modal-overlay);\r\n display: grid;\r\n place-items: center;\r\n padding: 1rem;\r\n z-index: 1000;\r\n}\r\n\r\n.modal {\r\n width: min(420px, 100%);\r\n background: var(--modal-bg);\r\n border: 1px solid var(--modal-border);\r\n border-radius: 18px;\r\n padding: 1.25rem;\r\n box-shadow: 0 20px 45px rgba(15, 23, 42, 0.25);\r\n}\r\n\r\nheader {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n gap: 1rem;\r\n margin-bottom: 1rem;\r\n}\r\n\r\nh3 {\r\n margin: 0;\r\n font-size: 1.25rem;\r\n color: var(--modal-text);\r\n}\r\n\r\n.close-button {\r\n width: 2rem;\r\n height: 2rem;\r\n border: none;\r\n border-radius: 999px;\r\n background: #f3f4f6;\r\n color: var(--modal-muted);\r\n font-size: 1.25rem;\r\n cursor: pointer;\r\n}\r\n\r\n.modal-body {\r\n color: var(--modal-text);\r\n}\r\n\r\n.modal-footer {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: 0.75rem;\r\n margin-top: 1.25rem;\r\n}\r\n","import { Component, h, Prop, Event, EventEmitter } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'custom-modal',\r\n styleUrl: 'custom-modal.css',\r\n shadow: true,\r\n})\r\nexport class CustomModal {\r\n @Prop() isOpen: boolean = true;\r\n @Prop() modalTitle: string = 'Dialog';\r\n\r\n @Event() closeModal: EventEmitter<void>;\r\n\r\n private handleOverlayClick = (event: MouseEvent) => {\r\n if ((event.target as HTMLElement).classList.contains('modal-backdrop')) {\r\n this.closeModal.emit();\r\n }\r\n };\r\n\r\n private handleClose = () => {\r\n this.closeModal.emit();\r\n };\r\n\r\n render() {\r\n if (!this.isOpen) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div class=\"modal-backdrop\" onClick={this.handleOverlayClick}>\r\n <div class=\"modal\" role=\"dialog\" aria-modal=\"true\" aria-label={this.modalTitle}>\r\n <header>\r\n <h3>{this.modalTitle}</h3>\r\n <button type=\"button\" class=\"close-button\" onClick={this.handleClose} aria-label=\"Close modal\">\r\n ×\r\n </button>\r\n </header>\r\n\r\n <div class=\"modal-body\">\r\n <slot />\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n <slot name=\"footer\" />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"kDAAA,MAAMA,EAAiB,IAAM,m2B,MCOhBC,EAAW,M,8DACdC,OAAkB,KAClBC,WAAqB,SAEpBC,WAEDC,mBAAsBC,IAC5B,GAAKA,EAAMC,OAAuBC,UAAUC,SAAS,kBAAmB,CACtEC,KAAKN,WAAWO,M,GAIZC,YAAc,KACpBF,KAAKN,WAAWO,MAAM,EAGxB,MAAAE,GACE,IAAKH,KAAKR,OAAQ,CAChB,OAAO,I,CAGT,OACEY,EAAA,OAAKC,MAAM,iBAAiBC,QAASN,KAAKL,oBACxCS,EAAA,OAAKC,MAAM,QAAQE,KAAK,SAAQ,aAAY,OAAM,aAAaP,KAAKP,YAClEW,EAAA,cACEA,EAAA,UAAKJ,KAAKP,YACVW,EAAA,UAAQI,KAAK,SAASH,MAAM,eAAeC,QAASN,KAAKE,YAAW,aAAa,eAAa,MAKhGE,EAAA,OAAKC,MAAM,cACTD,EAAA,cAGFA,EAAA,OAAKC,MAAM,gBACTD,EAAA,QAAMK,KAAK,a","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as a,h as r}from"./p-DrjLtd7S.js";const c=()=>`:host{--meal-card-bg:#fff7ed;--meal-card-border:#fed7aa;--meal-card-text:#111827;--meal-card-subtle:#9a5b00;--meal-card-accent:#f97316;display:block}.meal-slot-card{background:var(--meal-card-bg);border:1px solid var(--meal-card-border);border-radius:18px;padding:1rem;max-width:280px;box-shadow:0 10px 24px rgba(249, 115, 22, 0.08)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.75rem;color:var(--meal-card-subtle)}.day-label{font-weight:700}.meal-pill{display:inline-flex;padding:0.25rem 0.55rem;border-radius:999px;background:rgba(249, 115, 22, 0.12);color:var(--meal-card-accent);font-size:0.7rem;font-weight:700;text-transform:uppercase}.content h3{margin:0 0 0.5rem;color:var(--meal-card-text);font-size:1.2rem}.actions{display:flex;justify-content:space-between;gap:0.5rem;margin-top:1rem}button{border:none;border-radius:10px;padding:0.5rem 0.8rem;font-weight:700;cursor:pointer}button.primary{background:var(--meal-card-accent);color:white}button.secondary{background:#fff;color:#374151;border:1px solid rgba(15, 23, 42, 0.12)}`;const d=class{constructor(r){e(this,r);this.removeMeal=a(this,"removeMeal");this.addMeal=a(this,"addMeal")}day="Monday";mealType="Dinner";recipeName="No meal selected";removeMeal;addMeal;handleAddMeal=()=>{this.addMeal.emit({day:this.day,mealType:this.mealType})};handleRemoveMeal=()=>{this.removeMeal.emit({day:this.day,mealType:this.mealType})};render(){return r("article",{key:"fa9eb478dc830300b8cb795e315e630222c99ae9",class:"meal-slot-card"},r("header",{key:"da28c71efc7e22dea6b3c0e31a0a002cd49407e1",class:"card-header"},r("span",{key:"690e9ae3282df47b991fcf9903b0fc549b76a455",class:"day-label"},this.day),r("span",{key:"50bc7ed1f5aae519fa9233cdccc02fae13c4fabb",class:"meal-pill"},this.mealType)),r("div",{key:"157360002668cea4b02436cf7afedb6232007f77",class:"content"},r("h3",{key:"5c9121084ad9f1b152b51e2db034576cf38f5b03"},this.recipeName),r("slot",{key:"b60f501af76e15758c53f29bd66dbab7f196c859"})),r("div",{key:"2572b419e6e0d2f74027e0bf6ef2b1a83245b9ae",class:"actions"},r("button",{key:"610ea49c7bc1f9b43ef2cff9855a237168c95408",type:"button",class:"primary",onClick:this.handleAddMeal},"Add meal"),r("button",{key:"0511efe9d57aee3243e06ad43294cd1c4cc2b31b",type:"button",class:"secondary",onClick:this.handleRemoveMeal},"Remove")))}};d.style=c();export{d as meal_slot_card};
2
+ //# sourceMappingURL=p-524e6762.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["mealSlotCardCss","MealSlotCard","day","mealType","recipeName","removeMeal","addMeal","handleAddMeal","this","emit","handleRemoveMeal","render","h","key","class","type","onClick"],"sources":["src/components/meal-slot-card/meal-slot-card.css?tag=meal-slot-card&encapsulation=shadow","src/components/meal-slot-card/meal-slot-card.tsx"],"sourcesContent":[":host {\r\n --meal-card-bg: #fff7ed;\r\n --meal-card-border: #fed7aa;\r\n --meal-card-text: #111827;\r\n --meal-card-subtle: #9a5b00;\r\n --meal-card-accent: #f97316;\r\n display: block;\r\n}\r\n\r\n.meal-slot-card {\r\n background: var(--meal-card-bg);\r\n border: 1px solid var(--meal-card-border);\r\n border-radius: 18px;\r\n padding: 1rem;\r\n max-width: 280px;\r\n box-shadow: 0 10px 24px rgba(249, 115, 22, 0.08);\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 0.75rem;\r\n color: var(--meal-card-subtle);\r\n}\r\n\r\n.day-label {\r\n font-weight: 700;\r\n}\r\n\r\n.meal-pill {\r\n display: inline-flex;\r\n padding: 0.25rem 0.55rem;\r\n border-radius: 999px;\r\n background: rgba(249, 115, 22, 0.12);\r\n color: var(--meal-card-accent);\r\n font-size: 0.7rem;\r\n font-weight: 700;\r\n text-transform: uppercase;\r\n}\r\n\r\n.content h3 {\r\n margin: 0 0 0.5rem;\r\n color: var(--meal-card-text);\r\n font-size: 1.2rem;\r\n}\r\n\r\n.actions {\r\n display: flex;\r\n justify-content: space-between;\r\n gap: 0.5rem;\r\n margin-top: 1rem;\r\n}\r\n\r\nbutton {\r\n border: none;\r\n border-radius: 10px;\r\n padding: 0.5rem 0.8rem;\r\n font-weight: 700;\r\n cursor: pointer;\r\n}\r\n\r\nbutton.primary {\r\n background: var(--meal-card-accent);\r\n color: white;\r\n}\r\n\r\nbutton.secondary {\r\n background: #fff;\r\n color: #374151;\r\n border: 1px solid rgba(15, 23, 42, 0.12);\r\n}\r\n","import { Component, h, Prop, Event, EventEmitter } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'meal-slot-card',\r\n styleUrl: 'meal-slot-card.css',\r\n shadow: true,\r\n})\r\nexport class MealSlotCard {\r\n @Prop() day: string = 'Monday';\r\n @Prop() mealType: 'Breakfast' | 'Lunch' | 'Dinner' = 'Dinner';\r\n @Prop() recipeName: string = 'No meal selected';\r\n\r\n @Event() removeMeal: EventEmitter<{ day: string; mealType: 'Breakfast' | 'Lunch' | 'Dinner' }>;\r\n @Event() addMeal: EventEmitter<{ day: string; mealType: 'Breakfast' | 'Lunch' | 'Dinner' }>;\r\n\r\n private handleAddMeal = () => {\r\n this.addMeal.emit({ day: this.day, mealType: this.mealType });\r\n };\r\n\r\n private handleRemoveMeal = () => {\r\n this.removeMeal.emit({ day: this.day, mealType: this.mealType });\r\n };\r\n\r\n render() {\r\n return (\r\n <article class=\"meal-slot-card\">\r\n <header class=\"card-header\">\r\n <span class=\"day-label\">{this.day}</span>\r\n <span class=\"meal-pill\">{this.mealType}</span>\r\n </header>\r\n\r\n <div class=\"content\">\r\n <h3>{this.recipeName}</h3>\r\n <slot />\r\n </div>\r\n\r\n <div class=\"actions\">\r\n <button type=\"button\" class=\"primary\" onClick={this.handleAddMeal}>\r\n Add meal\r\n </button>\r\n <button type=\"button\" class=\"secondary\" onClick={this.handleRemoveMeal}>\r\n Remove\r\n </button>\r\n </div>\r\n </article>\r\n );\r\n }\r\n}\r\n"],"mappings":"kDAAA,MAAMA,EAAkB,IAAM,2jC,MCOjBC,EAAY,M,6FACfC,IAAc,SACdC,SAA6C,SAC7CC,WAAqB,mBAEpBC,WACAC,QAEDC,cAAgB,KACtBC,KAAKF,QAAQG,KAAK,CAAEP,IAAKM,KAAKN,IAAKC,SAAUK,KAAKL,UAAW,EAGvDO,iBAAmB,KACzBF,KAAKH,WAAWI,KAAK,CAAEP,IAAKM,KAAKN,IAAKC,SAAUK,KAAKL,UAAW,EAGlE,MAAAQ,GACE,OACEC,EAAA,WAAAC,IAAA,2CAASC,MAAM,kBACbF,EAAA,UAAAC,IAAA,2CAAQC,MAAM,eACZF,EAAA,QAAAC,IAAA,2CAAMC,MAAM,aAAaN,KAAKN,KAC9BU,EAAA,QAAAC,IAAA,2CAAMC,MAAM,aAAaN,KAAKL,WAGhCS,EAAA,OAAAC,IAAA,2CAAKC,MAAM,WACTF,EAAA,MAAAC,IAAA,4CAAKL,KAAKJ,YACVQ,EAAA,QAAAC,IAAA,8CAGFD,EAAA,OAAAC,IAAA,2CAAKC,MAAM,WACTF,EAAA,UAAAC,IAAA,2CAAQE,KAAK,SAASD,MAAM,UAAUE,QAASR,KAAKD,eAAa,YAGjEK,EAAA,UAAAC,IAAA,2CAAQE,KAAK,SAASD,MAAM,YAAYE,QAASR,KAAKE,kBAAgB,W","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ const e="nagp-recipe-ui-kit";const t={hotModuleReplacement:false,hydratedSelectorName:"hydrated",lazyLoad:true,propChangeCallback:true,state:true,updatable:true};const n=()=>{};const r=":root{font-family:Inter, 'Segoe UI', sans-serif;color:#1f2937;background:#f8fafc}*{box-sizing:border-box}";function i(e,t,n){const r=typeof HTMLElement!=="undefined"?HTMLElement.prototype:null;while(e&&e!==r){const r=Object.getOwnPropertyDescriptor(e,t);if(r&&(!n||r.get))return r;e=Object.getPrototypeOf(e)}return void 0}var l=(e,t)=>{var n;const r=t.t;const l=Object.entries((n=r.i)!=null?n:{});l.map((([n,[r]])=>{if(r&31||r&32){const r=e[n];const l=i(Object.getPrototypeOf(e),n,true)||Object.getOwnPropertyDescriptor(e,n);if(l){Object.defineProperty(e,n,{get(){return l.get.call(this)},set(e){l.set.call(this,e)},configurable:true,enumerable:true})}if(t.l.has(n)){e[n]=t.l.get(n)}else if(r!==void 0){e[n]=r}}}))};var o=e=>{if(e.__stencil__getHostRef){return e.__stencil__getHostRef()}return void 0};var s=(e,n)=>{if(!n)return;e.__stencil__getHostRef=()=>n;n.o=e;if(n.t.u&512&&t.state){l(e,n)}};var f=(e,t)=>{const n={u:0,$hostElement$:e,t,l:new Map,v:new Map};{n.p=new Promise((e=>n.h=e))}{n.m=new Promise((e=>n.$=e));e["s-p"]=[];e["s-rc"]=[]}{n.S=[]}const r=n;e.__stencil__getHostRef=()=>r;return r};var c=(e,t)=>t in e;var a=(e,t)=>(0,console.error)(e,t);var u=new Map;var v=new Map;var d=(e,t,n)=>{var r;const i=e.j.replace(/-/g,"_");const l=e.O;if(!l){return void 0}const o=u.get(l);if(o){return o[i]}const s=(r=v.get(l))!=null?r:0;const f=[s>0?`s-retry=${s}`:"",""].filter(Boolean).join("&");
2
+ /*!__STENCIL_STATIC_IMPORT_SWITCH__*/return import(`./${l}.entry.js${f?"?"+f:""}`).then((e=>{{v.delete(l);u.set(l,e)}return e[i]}),(e=>{v.set(l,s+1);a(e,t.$hostElement$)}))};var p=new Map;var h="{visibility:hidden}.hydrated{visibility:inherit}";var m="slot-fb{display:contents}slot-fb[hidden]{display:none}";var y=3;var b=1e3;var w=typeof window!=="undefined"?window:{};var $={u:0,k:"",jmp:e=>e(),raf:e=>requestAnimationFrame(e),ael:(e,t,n,r)=>e.addEventListener(t,n,r),rel:(e,t,n,r)=>e.removeEventListener(t,n,r),ce:(e,t)=>new CustomEvent(e,t)};var g=e=>Promise.resolve(e);var S=(()=>{try{if(!w.document.adoptedStyleSheets){return false}new CSSStyleSheet;return typeof(new CSSStyleSheet).replaceSync==="function"}catch(e){}return false})();var j=S?(()=>!!w.document&&Object.getOwnPropertyDescriptor(w.document.adoptedStyleSheets,"length").writable)():false;var O=false;var k=[];var C=[];var M=()=>{var e;return((e=w.document)==null?void 0:e.hidden)?L(N):$.raf(N)};var E=(e,t)=>n=>{e.push(n);if(!O){O=true;if(t&&$.u&4){L(N)}else{M()}}};var x=e=>{for(let t=0;t<e.length;t++){try{e[t](performance.now())}catch(e){a(e)}}e.length=0};var N=()=>{x(k);{x(C);if(O=k.length>0){M()}}};var L=e=>g().then(e);var R=E(C,true);function U(e){if(!S)return void 0;const t=new CSSStyleSheet;t.replaceSync(e);return t}var A;function P(e){var t;const n={mode:"open"};const i=this.attachShadow(n);if(A===void 0)A=(t=U(r))!=null?t:null;if(A){if(j){i.adoptedStyleSheets.push(A)}else{i.adoptedStyleSheets=[...i.adoptedStyleSheets,A]}}else if(!S){const e=document.createElement("style");e.innerHTML=r;i.prepend(e)}}var T=(e,t="")=>{{return()=>{}}};var D=(e,t)=>{{return()=>{}}};function z(e){var t,n,r;return(r=(n=(t=e.head)==null?void 0:t.querySelector('meta[name="csp-nonce"]'))==null?void 0:n.getAttribute("content"))!=null?r:void 0}var H=new WeakMap;var I=(e,t,n)=>{let r=p.get(e);if(S&&n){r=r||new CSSStyleSheet;if(typeof r==="string"){r=t}else{r.replaceSync(t)}}else{r=t}p.set(e,r)};var W=(e,t,n)=>{var r,i,l;const o=V(t);const s=p.get(o);if(!w.document){return o}e=e.nodeType===11?e:w.document;if(s){if(typeof s==="string"){e=e.head||e;let n=H.get(e);let l;if(!n){H.set(e,n=new Set)}if(!n.has(o)){l=w.document.createElement("style");l.textContent=s;const f=(r=$.C)!=null?r:z(w.document);if(f!=null){l.setAttribute("nonce",f)}if(!(t.u&1)){if(e.nodeName==="HEAD"){const t=e.querySelectorAll("link[rel=preconnect]");const n=t.length>0?t[t.length-1].nextSibling:e.querySelector("style");e.insertBefore(l,(n==null?void 0:n.parentNode)===e?n:null)}else if("host"in e){if(S){const t=(i=e.defaultView)!=null?i:e.ownerDocument.defaultView;const n=new t.CSSStyleSheet;n.replaceSync(s);if(j){e.adoptedStyleSheets.unshift(n)}else{e.adoptedStyleSheets=[n,...e.adoptedStyleSheets]}}else{const t=e.querySelector("style");if(t&&true){t.textContent=s+t.textContent}else{e.prepend(l)}}}else{e.append(l)}}if(t.u&1){e.insertBefore(l,null)}if(t.u&4){l.textContent+=m}if(n){n.add(o)}}}else{let t=H.get(e);if(!t){H.set(e,t=new Set)}if(!t.has(o)){const n=(l=e.defaultView)!=null?l:e.ownerDocument.defaultView;let r;if(s.constructor===n.CSSStyleSheet){r=s}else{r=new n.CSSStyleSheet;for(let e=0;e<s.cssRules.length;e++){r.insertRule(s.cssRules[e].cssText,e)}}if(j){e.adoptedStyleSheets.push(r)}else{e.adoptedStyleSheets=[...e.adoptedStyleSheets,r]}t.add(o)}}}return o};var F=e=>{const t=e.t;const n=e.$hostElement$;const r=t.u;const i=T("attachStyles",t.j);const l=W(n.shadowRoot?n.shadowRoot:n.getRootNode(),t);if(r&10){n["s-sc"]=l;n.classList.add(l+"-h")}i()};var V=(e,t)=>"sc-"+e.j;var q=e=>{e=typeof e;return e==="object"||e==="function"};var B=(e,t,...n)=>{if(typeof e==="string"){e=Fe(e)}let r=null;let i=null;let l=false;let o=false;const s=[];const f=t=>{for(let n=0;n<t.length;n++){r=t[n];if(Array.isArray(r)){f(r)}else if(r!=null&&typeof r!=="boolean"){if(l=typeof e!=="function"&&!q(r)){r=String(r)}else if(typeof e!=="function"&&r.u===void 0){{a("Invalid vNode child")}continue}if(l&&o){s[s.length-1].M+=r}else{s.push(l?G(null,r):r)}o=l}}};f(n);if(t){if(t.key){i=t.key}{const e=t.className||t.class;if(e){t.class=typeof e!=="object"?e:Object.keys(e).filter((t=>e[t])).join(" ")}}}const c=G(e,null);c.N=t;if(s.length>0){c.L=s}{c.R=i}return c};var G=(e,t)=>{const n={u:0,U:e,M:t!=null?t:null,A:null,L:null};{n.N=null}{n.R=null}return n};var Y={};var Z=e=>e&&e.U===Y;var _=e=>{if(!e)return void 0;const t=Object.keys(e);if(t.length===0)return void 0;let n=false;for(const r of t){if(n)break;for(const t of e[r]){if(typeof t==="string"){n=true;break}}}if(!n)return e;const r={};for(const n of t){r[n]=e[n].map((e=>typeof e==="string"?{[e]:0}:e))}return r};var J=(e,t,n)=>{if(e!=null&&!q(e)){if(t&4){{return e==="false"?false:e===""||!!e}}if(t&2){return typeof e==="string"?parseFloat(e):typeof e==="number"?e:NaN}if(t&1){return String(e)}return e}return e};var K=e=>{var t;return(t=o(e))==null?void 0:t.$hostElement$};var Q=(e,t,n)=>{const r=K(e);return{emit:e=>X(r,t,{bubbles:true,composed:true,cancelable:true,detail:e})}};var X=(e,t,n)=>{const r=$.ce(t,n);e.dispatchEvent(r);return r};var ee=(e,t,n,r,i,l,s)=>{if(n===r){return}let f=c(e,t);let a=t.toLowerCase();if(t==="class"){const t=e.classList;const i=ie(n);let l=ie(r);{t.remove(...i.filter((e=>e&&!l.includes(e))));t.add(...l.filter((e=>e&&!i.includes(e))))}}else if(t==="style"){{for(const t in n){if(!r||r[t]==null){if(t.includes("-")){e.style.removeProperty(t)}else{e.style[t]=""}}}}for(const t in r){if(!n||r[t]!==n[t]){if(t.includes("-")){e.style.setProperty(t,r[t])}else{e.style[t]=r[t]}}}}else if(t==="key");else if(!f&&t[0]==="o"&&t[1]==="n"){if(t[2]==="-"){t=t.slice(3)}else if(c(w,a)){t=a.slice(2)}else{t=a[2]+t.slice(3)}if(n||r){const i=t.endsWith(le);t=t.replace(oe,"");if(n){$.rel(e,t,n,i)}if(r){$.ael(e,t,r,i)}}}else if(t[0]==="a"&&t.startsWith("attr:")){const n=t.slice(5);let i;{const t=o(e);if(t&&t.t&&t.t.i){const e=t.t.i[n];if(e&&e[1]){i=e[1]}}}if(!i){i=n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}if(r==null||r===false){if(r!==false||e.getAttribute(i)===""){e.removeAttribute(i)}}else{e.setAttribute(i,r===true?"":r)}return}else if(t[0]==="p"&&t.startsWith("prop:")){const n=t.slice(5);try{e[n]=r}catch(e){}return}else{const o=q(r);if((f||o&&r!==null)&&!i){try{if(!e.tagName.includes("-")){const i=r==null?"":r;if(t==="list"){f=false}else if(n==null||e[t]!==i){if(typeof e.__lookupSetter__(t)==="function"){e[t]=i}else{e.setAttribute(t,i)}}}else if(e[t]!==r){e[t]=r}}catch(e){}}if(r==null||r===false){if(r!==false||e.getAttribute(t)===""||l&4&&!ne(t)){{e.removeAttribute(t)}}}else if((!f||l&4||i)&&!o&&e.nodeType===1){r=r===true?"":r;{e.setAttribute(t,r)}}}};var te=new Set(["draggable","contenteditable","spellcheck"]);var ne=e=>te.has(e)||e.startsWith("aria-");var re=/\s/;var ie=e=>{if(typeof e==="object"&&e&&"baseVal"in e){e=e.baseVal}if(!e||typeof e!=="string"){return[]}return e.split(re)};var le="Capture";var oe=new RegExp(le+"$");var se=(e,t,n,r)=>{const i=t.A.nodeType===11&&t.A.host?t.A.host:t.A;const l=e&&e.N||{};const o=t.N||{};{for(const e of fe(Object.keys(l))){if(!(e in o)){ee(i,e,l[e],void 0,n,t.u)}}}for(const e of fe(Object.keys(o))){ee(i,e,l[e],o[e],n,t.u)}};function fe(e){return e.includes("ref")?[...e.filter((e=>e!=="ref")),"ref"]:e}var ce;var ae=false;var ue=false;var ve=(e,t,n)=>{const r=t.L[n];let i=0;let l;let o;if(r.M!=null){l=r.A=w.document.createTextNode(r.M)}else{if(!w.document){throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM.")}l=r.A=w.document.createElement(r.U);{se(null,r,ue)}if(r.L){const t=r.U==="template"?l.content:l;for(i=0;i<r.L.length;++i){o=ve(e,r,i);if(o){t.appendChild(o)}}}}l["s-hn"]=ce;return l};var de=e=>{$.u|=1;const t=e.closest(ce.toLowerCase());if(t!=null){const n=Array.from(t.__childNodes||t.childNodes).find((e=>e["s-cr"]));const r=Array.from(e.__childNodes||e.childNodes);for(const e of n?r.reverse():r){if(e["s-sh"]!=null){we(t,e,n!=null?n:null);e["s-sh"]=void 0}}}$.u&=-2};var pe=(e,t,n,r,i,l)=>{let o=e;let s;if(o.shadowRoot&&o.tagName===ce){o=o.shadowRoot}if(n.U==="template"){o=o.content}for(;i<=l;++i){if(r[i]){s=ve(null,n,i);if(s){r[i].A=s;we(o,s,t)}}}};var he=(e,t,n)=>{for(let r=t;r<=n;++r){const t=e[r];if(t){const e=t.A;if(e){e.remove()}}}};var me=(e,t,n,r,i=false)=>{let l=0;let o=0;let s=0;let f=0;let c=t.length-1;let a=t[0];let u=t[c];let v=r.length-1;let d=r[0];let p=r[v];let h;let m;const y=n.U==="template"?e.content:e;while(l<=c&&o<=v){if(a==null){a=t[++l]}else if(u==null){u=t[--c]}else if(d==null){d=r[++o]}else if(p==null){p=r[--v]}else if(ye(a,d,i)){be(a,d,i);a=t[++l];d=r[++o]}else if(ye(u,p,i)){be(u,p,i);u=t[--c];p=r[--v]}else if(ye(a,p,i)){be(a,p,i);we(y,a.A,u.A.nextSibling);a=t[++l];p=r[--v]}else if(ye(u,d,i)){be(u,d,i);we(y,u.A,a.A);u=t[--c];d=r[++o]}else{s=-1;{for(f=l;f<=c;++f){if(t[f]&&t[f].R!==null&&t[f].R===d.R){s=f;break}}}if(s>=0){m=t[s];if(m.U!==d.U){h=ve(t&&t[o],n,s)}else{be(m,d,i);t[s]=void 0;h=m.A}d=r[++o]}else{h=ve(t&&t[o],n,o);d=r[++o]}if(h){{we(a.A.parentNode,h,a.A)}}}}if(l>c){pe(e,r[v+1]==null?null:r[v+1].A,n,r,o,v)}else if(o>v){he(t,l,c)}};var ye=(e,t,n=false)=>{if(e.U===t.U){if(!n){return e.R===t.R}if(n&&!e.R&&t.R){e.R=t.R}return true}return false};var be=(e,n,r=false)=>{const i=n.A=e.A;const l=e.L;const o=n.L;const s=n.U;const f=n.M;if(f==null){{if(s==="slot"&&!ae){if(e.P!==n.P){n.A["s-sn"]=n.P||"";de(n.A.parentElement)}}se(e,n,ue)}if(l!==null&&o!==null){me(i,l,n,o,r)}else if(o!==null){if(e.M!==null){i.textContent=""}pe(i,null,n,o,0,o.length-1)}else if(!r&&t.updatable&&l!==null){he(l,0,l.length-1)}else;}else if(e.M!==f){i.data=f}};var we=(e,t,n,r)=>{{return e==null?void 0:e.insertBefore(t,n)}};var $e=(e,t,n=false)=>{const r=e.$hostElement$;const i=e.t;const l=e.T||G(null,null);const o=Z(t);const s=o?t:B(null,null,t);ce=r.tagName;if(n&&s.N){for(const e of Object.keys(s.N)){if(r.hasAttribute(e)&&!["key","ref","style","class"].includes(e)){s.N[e]=r[e]}}}s.U=null;s.u|=4;e.T=s;s.A=l.A=r.shadowRoot||r;ae=!!(i.u&1)&&!(i.u&128);be(l,s,n)};var ge=(e,t)=>{if(t&&!e.D&&t["s-p"]){const n=t["s-p"].push(new Promise((r=>e.D=()=>{t["s-p"].splice(n-1,1);r()})))}};var Se=(e,t)=>{{e.u|=16}if(e.u&4){e.u|=512;return}ge(e,e.H);const n=()=>je(e,t);if(t){queueMicrotask((()=>{n()}));return}return R(n)};var je=(e,t)=>{const n=e.$hostElement$;const r=T("scheduleUpdate",e.t.j);const i=e.o;if(!i){throw new 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;if(t){{if(e.S.length){e.S.forEach((e=>e(n)))}}l=Ne(i,"componentWillLoad",void 0,n)}else{l=Ne(i,"componentWillUpdate",void 0,n)}l=Oe(l,(()=>Ne(i,"componentWillRender",void 0,n)));r();return Oe(l,(()=>Ce(e,i,t)))};var Oe=(e,t)=>ke(e)?e.then(t).catch((e=>{console.error(e);t()})):t();var ke=e=>e instanceof Promise||e&&e.then&&typeof e.then==="function";var Ce=async(e,t,n)=>{var r;const i=e.$hostElement$;const l=T("update",e.t.j);const o=i["s-rc"];if(n){F(e)}const s=T("render",e.t.j);{Me(e,t,i,n)}if(o){o.map((e=>e()));i["s-rc"]=void 0}s();l();{const t=(r=i["s-p"])!=null?r:[];const n=()=>Ee(e);if(t.length===0){n()}else{Promise.all(t).then(n).catch(n);e.u|=4;t.length=0}}};var Me=(e,t,n,r)=>{try{t=t.render();{e.u&=-17}{e.u|=2}{{{$e(e,t,r)}}}}catch(t){a(t,e.$hostElement$)}return null};var Ee=e=>{const t=e.t.j;const n=e.$hostElement$;const r=T("postUpdate",t);const i=e.o;const l=e.H;Ne(i,"componentDidRender",void 0,n);if(!(e.u&64)){e.u|=64;{Le(n)}Ne(i,"componentDidLoad",void 0,n);r();{e.$(n);if(!l){xe()}}}else{Ne(i,"componentDidUpdate",void 0,n);r()}{e.h(n)}{if(e.D){e.D();e.D=void 0}if(e.u&512){L((()=>Se(e,false)))}e.u&=-517}};var xe=t=>{L((()=>X(w,"appload",{detail:{namespace:e}})))};var Ne=(e,t,n,r)=>{if(e&&e[t]){try{return e[t](n)}catch(e){a(e,r)}}return void 0};var Le=e=>{var n;return e.classList.add((n=t.hydratedSelectorName)!=null?n:"hydrated")};var Re=(e,t)=>o(e).l.get(t);var Ue=(e,t,n,r)=>{const i=o(e);if(!i){return}if(!i){throw new Error(`Couldn't find host element for "${r.j}" 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 l=i.$hostElement$;const s=i.l.get(t);const f=i.u;const c=i.o;n=J(n,r.i[t][0]);const u=Number.isNaN(s)&&Number.isNaN(n);const v=n!==s&&!u;if((!(f&8)||s===void 0)&&v){i.l.set(t,n);if(r.I){const e=r.I[t];if(e){e.map((e=>{try{const[[r,l]]=Object.entries(e);if(f&128||l&1){if(!c){i.S.push((()=>{i.o[r](n,s,t)}))}else{c[r](n,s,t)}}}catch(e){a(e,l)}}))}}if(f&2){if(c.componentShouldUpdate){const e=c.componentShouldUpdate(n,s,t);if(e===false&&!(f&16)){return}}if(!(f&16)){Se(i,false)}}}};var Ae=(e,n,r)=>{var l,s;const f=e.prototype;if(n.i||t.propChangeCallback){{if(e.watchers&&!n.I){n.I=_(e.watchers)}if(e.deserializers&&!n.W){n.W=e.deserializers}if(e.serializers&&!n.F){n.F=e.serializers}}const c=Object.entries((l=n.i)!=null?l:{});c.map((([e,[t]])=>{if(t&31||r&2&&t&32){const{get:l,set:s}=i(f,e)||{};if(l)n.i[e][0]|=2048;if(s)n.i[e][0]|=4096;if(r&1||!l){Object.defineProperty(f,e,{get(){{if((n.i[e][0]&2048)===0){return Re(this,e)}const t=o(this);const r=t?t.o:f;if(!r)return;return r[e]}},configurable:true,enumerable:true})}Object.defineProperty(f,e,{set(i){const l=o(this);if(!l){return}if(s){const r=t&32?this[e]:l.$hostElement$[e];if(typeof r==="undefined"&&l.l.get(e)){i=l.l.get(e)}s.apply(this,[J(i,t)]);i=t&32?this[e]:l.$hostElement$[e];Ue(this,e,i,n);return}{if((r&1)===0||(n.i[e][0]&4096)===0){Ue(this,e,i,n);if(r&1&&!l.o){l.S.push((()=>{if(n.i[e][0]&4096&&l.o[e]!==l.l.get(e)){l.o[e]=i}}))}return}const o=()=>{const r=l.o[e];if(!l.l.get(e)&&r){l.l.set(e,r)}l.o[e]=J(i,t);Ue(this,e,l.o[e],n)};if(l.o){o()}else{l.S.push((()=>{o()}))}}}})}else if(r&1&&t&64){Object.defineProperty(f,e,{value(...t){var n;const r=o(this);return(n=r==null?void 0:r.p)==null?void 0:n.then((()=>{var n;return(n=r.o)==null?void 0:n[e](...t)}))}})}}));if(r&1){const r=new Map;f.attributeChangedCallback=function(e,i,l){$.jmp((()=>{var s;const a=r.get(e);const u=o(this);if(this.hasOwnProperty(a)&&t.lazyLoad){l=this[a];delete this[a]}if(f.hasOwnProperty(a)&&typeof this[a]==="number"&&this[a]==l){return}else if(a==null){const t=u==null?void 0:u.u;if(u&&t&&!(t&8)&&l!==i){const r=u.o;const o=(s=n.I)==null?void 0:s[e];o==null?void 0:o.forEach((n=>{const[[o,s]]=Object.entries(n);if(r[o]!=null&&(t&128||s&1)){r[o].call(r,l,i,e)}}))}return}const v=c.find((([e])=>e===a));const d=v?v[1][0]:0;const p=d&4;const h=p&&l===null&&this[a]===void 0;if(p){l=l===null||l==="false"?false:true}const m=Object.getOwnPropertyDescriptor(f,a);if(!h&&l!=this[a]&&(!m.get||!!m.set)){this[a]=l}}))};e.observedAttributes=Array.from(new Set([...Object.keys((s=n.I)!=null?s:{}),...c.filter((([e,t])=>t[0]&31)).map((([e,t])=>{const n=t[1]||e;r.set(n,e);return n}))]))}}return e};var Pe=async(e,n,r,i)=>{var l;let o;try{if((n.u&32)===0){n.u|=32;n.u&=-1025;const i=r.O;if(i){const t=d(r,n);if(t&&"then"in t){const e=D();o=await t;e()}else{o=t}if(!o){n.u&=-33;n.V=((l=n.V)!=null?l:0)+1;if(n.V<y){n.u|=1024}throw new Error(`Constructor for "${r.j}#${n.q}" was not found`)}if(!o.isProxied){{r.I=_(o.watchers);r.F=o.serializers;r.W=o.deserializers}Ae(o,r,2);o.isProxied=true}const i=T("createInstance",r.j);{n.u|=8}try{new o(n)}catch(t){a(t,e)}{n.u&=-9}{n.u|=128}i();{Te(n.o,e)}}else{o=e.constructor;const t=e.localName;customElements.whenDefined(t).then((()=>n.u|=128))}if(o&&o.style){let e;if(typeof o.style==="string"){e=o.style}const n=V(r);if(!p.has(n)||t.hotModuleReplacement){const t=T("registerStyles",r.j);I(n,e,!!(r.u&1));t()}}}const i=n.H;const s=()=>Se(n,true);if(i&&i["s-rc"]){i["s-rc"].push(s)}else{s()}}catch(t){a(t,e);if(n.D){n.D();n.D=void 0}if(n.$&&!(n.u&1024)){n.$(e)}}};var Te=(e,t)=>{{Ne(e,"connectedCallback",void 0,t)}};var De=e=>{if(($.u&1)===0){const t=o(e);if(!t){return}const n=t.t;const r=T("connectedCallback",n.j);if(!(t.u&1)){t.u|=1;{let n=e;while(n=n.parentNode||n.host){if(n["s-p"]){ge(t,t.H=n);break}}}if(n.i){Object.entries(n.i).map((([t,[n]])=>{if(n&31&&Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];delete e[t];e[t]=n}}))}{Pe(e,t,n)}}else{if(t==null?void 0:t.o){Te(t.o,e)}else if(t.u&1024){setTimeout((()=>Pe(e,t,n)),b)}else if(t==null?void 0:t.m){t.m.then((()=>Te(t.o,e)))}}r()}};var ze=(e,t)=>{{Ne(e,"disconnectedCallback",void 0,t||e)}};var He=async e=>{if(($.u&1)===0){const t=o(e);if(t==null?void 0:t.o){ze(t.o,e)}else if(t==null?void 0:t.m){t.m.then((()=>ze(t.o,e)))}}if(H.has(e)){H.delete(e)}if(e.shadowRoot&&H.has(e.shadowRoot)){H.delete(e.shadowRoot)}};var Ie=(e,t={})=>{var n;if(!w.document){console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");return}const r=T();const i=[];const l=t.exclude||[];const s=w.customElements;const c=w.document.head;const a=c.querySelector("meta[charset]");const u=w.document.createElement("style");const v=[];let d;let p=true;Object.assign($,t);$.k=new URL(t.resourcesUrl||"./",w.document.baseURI).href;e.map((e=>{e[1].map((t=>{var n,r;const c={u:t[0],j:t[1],i:t[2],B:t[3]};{c.i=t[2]}{c.I=_(t[4]);c.F=(n=t[5])!=null?n:{};c.W=(r=t[6])!=null?r:{}}const a=Fe(c.j);const u=class extends HTMLElement{["s-p"];["s-rc"];hasRegisteredEventListeners=false;constructor(e){super(e);e=this;f(e,c);if(c.u&1){{if(!e.shadowRoot){P.call(e,c)}else{if(e.shadowRoot.mode!=="open"){throw new Error(`Unable to re-use existing shadow root for ${c.j}! Mode is set to ${e.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}}}}connectedCallback(){const e=o(this);if(!e){return}if(!this.hasRegisteredEventListeners){this.hasRegisteredEventListeners=true}if(d){clearTimeout(d);d=null}if(p){v.push(this)}else{$.jmp((()=>De(this)))}}disconnectedCallback(){$.jmp((()=>He(this)));L((()=>{var e;const t=o(this);if(!t){return}const n=v.findIndex((e=>e===this));if(n>-1){v.splice(n,1)}if(((e=t==null?void 0:t.T)==null?void 0:e.A)instanceof Node&&!t.T.A.isConnected){delete t.T.A}}))}componentOnReady(){var e;return(e=o(this))==null?void 0:e.m}};c.O=e[0];if(!l.includes(a)&&!s.get(a)){i.push(a);s.define(a,Ae(u,c,1))}}))}));if(i.length>0){{u.textContent+=i.sort()+h}if(u.innerHTML.length){u.setAttribute("data-styles","");const e=(n=$.C)!=null?n:z(w.document);if(e!=null){u.setAttribute("nonce",e)}c.insertBefore(u,a?a.nextSibling:c.firstChild)}}p=false;if(v.length){v.map((e=>e.connectedCallback()))}else{{$.jmp((()=>d=setTimeout(xe,30)))}}r()};var We=e=>$.C=e;function Fe(e){return e}export{Ie as b,Q as c,n as g,B as h,g as p,s as r,We as s};
3
+ //# sourceMappingURL=p-DrjLtd7S.js.map