@recipe-book/react 0.0.3 → 0.1.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 (167) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/LICENSE +21 -0
  3. package/README.md +48 -15
  4. package/core/package.json +5 -0
  5. package/core/schema-org/package.json +5 -0
  6. package/dist/core/schema-org.cjs +25 -0
  7. package/dist/core/schema-org.cjs.map +1 -0
  8. package/dist/core/schema-org.d.cts +1 -0
  9. package/dist/core/schema-org.d.ts +1 -0
  10. package/dist/core/schema-org.js +3 -0
  11. package/dist/core/schema-org.js.map +1 -0
  12. package/dist/core.cjs +25 -0
  13. package/dist/core.cjs.map +1 -0
  14. package/dist/core.d.cts +1 -0
  15. package/dist/core.d.ts +1 -0
  16. package/dist/core.js +3 -0
  17. package/dist/core.js.map +1 -0
  18. package/dist/index.cjs +1224 -0
  19. package/dist/index.cjs.map +1 -0
  20. package/dist/index.d.cts +1276 -0
  21. package/dist/index.d.ts +1276 -10
  22. package/dist/index.js +1207 -2
  23. package/dist/index.js.map +1 -0
  24. package/package.json +71 -15
  25. package/dist/chunk-2S2Z4HLL.mjs +0 -46
  26. package/dist/chunk-2VMRVR3X.mjs +0 -1
  27. package/dist/chunk-36H6LM2B.mjs +0 -14
  28. package/dist/chunk-4IWVZEXX.mjs +0 -20
  29. package/dist/chunk-4XBZKTOL.mjs +0 -1
  30. package/dist/chunk-6AGILC25.mjs +0 -20
  31. package/dist/chunk-6AXGEB5P.mjs +0 -14
  32. package/dist/chunk-6JEDN4VR.mjs +0 -20
  33. package/dist/chunk-6KLLMLNF.mjs +0 -33
  34. package/dist/chunk-6LTLY5K7.mjs +0 -20
  35. package/dist/chunk-6RA4EVIO.mjs +0 -46
  36. package/dist/chunk-75DF3E6L.mjs +0 -50
  37. package/dist/chunk-7BWMULSB.mjs +0 -55
  38. package/dist/chunk-7PPB3PM6.mjs +0 -40
  39. package/dist/chunk-7SBP7DC5.mjs +0 -42
  40. package/dist/chunk-7XJBP24U.mjs +0 -20
  41. package/dist/chunk-A5JAKCMG.mjs +0 -44
  42. package/dist/chunk-ATOAYKI3.mjs +0 -26
  43. package/dist/chunk-B5IXKKFC.mjs +0 -38
  44. package/dist/chunk-BEMMFA52.mjs +0 -49
  45. package/dist/chunk-BOG5DA6M.mjs +0 -38
  46. package/dist/chunk-BW4DYFBO.mjs +0 -36
  47. package/dist/chunk-CDQFOSWR.mjs +0 -34
  48. package/dist/chunk-CRQVP6PW.mjs +0 -20
  49. package/dist/chunk-CY27OHOG.mjs +0 -1
  50. package/dist/chunk-DACFJWGN.mjs +0 -14
  51. package/dist/chunk-DE5GUZKO.mjs +0 -46
  52. package/dist/chunk-DNZAFS5G.mjs +0 -48
  53. package/dist/chunk-DS3O5PAR.mjs +0 -20
  54. package/dist/chunk-ENGJXHYU.mjs +0 -42
  55. package/dist/chunk-FIFGRJKD.mjs +0 -26
  56. package/dist/chunk-FWOMIZEF.mjs +0 -46
  57. package/dist/chunk-G7XD4VBW.mjs +0 -44
  58. package/dist/chunk-GBU6MVZL.mjs +0 -14
  59. package/dist/chunk-GM5F7IUT.mjs +0 -2
  60. package/dist/chunk-GSGRXRJP.mjs +0 -38
  61. package/dist/chunk-GZRNU24M.mjs +0 -46
  62. package/dist/chunk-HNDXCSZY.mjs +0 -44
  63. package/dist/chunk-HXTUDCO2.mjs +0 -49
  64. package/dist/chunk-I5TR6PEA.mjs +0 -0
  65. package/dist/chunk-IXRYSEMS.mjs +0 -30
  66. package/dist/chunk-J5Q2Z2JG.mjs +0 -38
  67. package/dist/chunk-JBAAWEV6.mjs +0 -1
  68. package/dist/chunk-JCPPNN26.mjs +0 -44
  69. package/dist/chunk-JR3OTSZB.mjs +0 -32
  70. package/dist/chunk-JWS5RTU3.mjs +0 -46
  71. package/dist/chunk-K6EZ773Q.mjs +0 -26
  72. package/dist/chunk-KNXMYQVO.mjs +0 -36
  73. package/dist/chunk-KRUZ7OA7.mjs +0 -44
  74. package/dist/chunk-KXCIJBR6.mjs +0 -14
  75. package/dist/chunk-M5D3UUZF.mjs +0 -19
  76. package/dist/chunk-MASAOP7L.mjs +0 -55
  77. package/dist/chunk-MGBEDCLT.mjs +0 -34
  78. package/dist/chunk-MKBCBPVR.mjs +0 -53
  79. package/dist/chunk-N53TONLF.mjs +0 -39
  80. package/dist/chunk-NYDGFRPM.mjs +0 -46
  81. package/dist/chunk-OPOABKD6.mjs +0 -23
  82. package/dist/chunk-OX6ITS5C.mjs +0 -20
  83. package/dist/chunk-PAAVW47I.mjs +0 -50
  84. package/dist/chunk-PAF5HSSV.mjs +0 -53
  85. package/dist/chunk-PBENQR7Y.mjs +0 -1
  86. package/dist/chunk-PH3LQIHZ.mjs +0 -26
  87. package/dist/chunk-PIB3RAOO.mjs +0 -24
  88. package/dist/chunk-PIXLJD7Y.mjs +0 -37
  89. package/dist/chunk-PTS3BZHK.mjs +0 -1
  90. package/dist/chunk-Q6I5J3IJ.mjs +0 -1
  91. package/dist/chunk-QOCKR2HO.mjs +0 -1
  92. package/dist/chunk-QOZCSS3B.mjs +0 -44
  93. package/dist/chunk-QSFPUODQ.mjs +0 -34
  94. package/dist/chunk-RY7QUBJI.mjs +0 -34
  95. package/dist/chunk-RZJRUG2I.mjs +0 -55
  96. package/dist/chunk-S3GGSQB5.mjs +0 -1
  97. package/dist/chunk-S3HRT5Z5.mjs +0 -14
  98. package/dist/chunk-SB7HBCCZ.mjs +0 -49
  99. package/dist/chunk-SEXTT3NJ.mjs +0 -25
  100. package/dist/chunk-SKEQCOPX.mjs +0 -43
  101. package/dist/chunk-TLBRVWD2.mjs +0 -1
  102. package/dist/chunk-TOOCHDUY.mjs +0 -36
  103. package/dist/chunk-TSKANLT4.mjs +0 -37
  104. package/dist/chunk-UAMZEZUI.mjs +0 -36
  105. package/dist/chunk-UQJ4XNWN.mjs +0 -26
  106. package/dist/chunk-VDSUUXCH.mjs +0 -34
  107. package/dist/chunk-VO7RY2ZK.mjs +0 -44
  108. package/dist/chunk-WJKDFBJ2.mjs +0 -34
  109. package/dist/chunk-WTC7PY7U.mjs +0 -54
  110. package/dist/chunk-WXDV7CMB.mjs +0 -14
  111. package/dist/chunk-X5FG3X6T.mjs +0 -1
  112. package/dist/chunk-X66DY4AZ.mjs +0 -1
  113. package/dist/chunk-XXSJXKWQ.mjs +0 -44
  114. package/dist/chunk-YZMVAQQG.mjs +0 -1
  115. package/dist/chunk-ZCXPZU7W.mjs +0 -20
  116. package/dist/chunk-ZJ4PNVYO.mjs +0 -52
  117. package/dist/chunk-ZU4QJLEY.mjs +0 -53
  118. package/dist/components/ingredients/ingredients-list.d.mts +0 -13
  119. package/dist/components/ingredients/ingredients-list.d.ts +0 -13
  120. package/dist/components/ingredients/ingredients-list.js +0 -2
  121. package/dist/components/ingredients/ingredients-list.mjs +0 -1
  122. package/dist/components/instructions/instruction-list.d.mts +0 -13
  123. package/dist/components/instructions/instruction-list.d.ts +0 -13
  124. package/dist/components/instructions/instruction-list.js +0 -1
  125. package/dist/components/instructions/instruction-list.mjs +0 -1
  126. package/dist/components/layouts/layout-default.d.mts +0 -7
  127. package/dist/components/layouts/layout-default.d.ts +0 -7
  128. package/dist/components/layouts/layout-default.js +0 -1
  129. package/dist/components/layouts/layout-default.mjs +0 -1
  130. package/dist/components/layouts/layout-types.d.mts +0 -8
  131. package/dist/components/layouts/layout-types.d.ts +0 -8
  132. package/dist/components/layouts/layout-types.js +0 -1
  133. package/dist/components/layouts/layout-types.mjs +0 -0
  134. package/dist/components/measurement-select.d.mts +0 -13
  135. package/dist/components/measurement-select.d.ts +0 -13
  136. package/dist/components/measurement-select.js +0 -1
  137. package/dist/components/measurement-select.mjs +0 -1
  138. package/dist/components/root.d.mts +0 -13
  139. package/dist/components/root.d.ts +0 -13
  140. package/dist/components/root.js +0 -1
  141. package/dist/components/root.mjs +0 -1
  142. package/dist/components/servings-select.d.mts +0 -11
  143. package/dist/components/servings-select.d.ts +0 -11
  144. package/dist/components/servings-select.js +0 -1
  145. package/dist/components/servings-select.mjs +0 -1
  146. package/dist/components/thumbnail.d.mts +0 -18
  147. package/dist/components/thumbnail.d.ts +0 -18
  148. package/dist/components/thumbnail.js +0 -1
  149. package/dist/components/thumbnail.mjs +0 -1
  150. package/dist/global-context.d.mts +0 -29
  151. package/dist/global-context.d.ts +0 -29
  152. package/dist/global-context.js +0 -1
  153. package/dist/global-context.mjs +0 -1
  154. package/dist/hooks/use-controllable.d.mts +0 -15
  155. package/dist/hooks/use-controllable.d.ts +0 -15
  156. package/dist/hooks/use-controllable.js +0 -1
  157. package/dist/hooks/use-controllable.mjs +0 -1
  158. package/dist/index.d.mts +0 -10
  159. package/dist/index.mjs +0 -1
  160. package/dist/recipe-context.d.mts +0 -29
  161. package/dist/recipe-context.d.ts +0 -29
  162. package/dist/recipe-context.js +0 -1
  163. package/dist/recipe-context.mjs +0 -1
  164. package/dist/types-from-core.d.mts +0 -1
  165. package/dist/types-from-core.d.ts +0 -1
  166. package/dist/types-from-core.js +0 -1
  167. package/dist/types-from-core.mjs +0 -1
@@ -1,36 +0,0 @@
1
- // src/recipe-context.tsx
2
- import { createContext, useContext, useState, useMemo } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var recipeContext = createContext(
5
- {}
6
- );
7
- function useRecipeContext() {
8
- const ctx = useContext(recipeContext);
9
- if (!ctx) {
10
- throw new Error("Missing recipe context. Are you using <Recipe.Root />?");
11
- }
12
- return ctx;
13
- }
14
- function RecipeContextProvider({
15
- children,
16
- recipe,
17
- servings,
18
- setServings
19
- }) {
20
- const [activeConversionKey, setActiveConversionKey] = useState();
21
- const recipeContextValue = useMemo(() => {
22
- return {
23
- ...recipe,
24
- activeConversionKey,
25
- setConversionKey: (key) => {
26
- setActiveConversionKey(key);
27
- }
28
- };
29
- }, [recipe, activeConversionKey, setActiveConversionKey]);
30
- return /* @__PURE__ */ jsx(recipeContext.Provider, { value: recipeContextValue, children });
31
- }
32
-
33
- export {
34
- useRecipeContext,
35
- RecipeContextProvider
36
- };
@@ -1,44 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-KNXMYQVO.mjs";
4
-
5
- // src/components/thumbnail.tsx
6
- import { AspectRatio } from "@radix-ui/react-aspect-ratio";
7
- import { jsx } from "react/jsx-runtime";
8
- function Thumbnail(props) {
9
- var _a, _b;
10
- const { thumbnail, name } = useRecipeContext();
11
- if (!thumbnail) {
12
- throw new Error("Missing thumbnail image. Did you forget to set one?");
13
- }
14
- const propStyle = (_a = props.style) != null ? _a : {};
15
- return /* @__PURE__ */ jsx(
16
- AspectRatio,
17
- {
18
- "recipe-thumbnail": "",
19
- className: props.className,
20
- style: {
21
- width: "100%",
22
- ...propStyle
23
- },
24
- ratio: props.aspectRatio || 1,
25
- children: /* @__PURE__ */ jsx(
26
- "img",
27
- {
28
- "recipe-thumbnail-image": "",
29
- style: {
30
- objectFit: "cover",
31
- width: "100%",
32
- height: "100%"
33
- },
34
- src: thumbnail,
35
- alt: (_b = props.alt) != null ? _b : name
36
- }
37
- )
38
- }
39
- );
40
- }
41
-
42
- export {
43
- Thumbnail
44
- };
@@ -1,14 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-ENGJXHYU.mjs";
4
-
5
- // src/components/instructions/instruction-list.tsx
6
- import { jsx } from "react/jsx-runtime";
7
- function InstructionList(props) {
8
- const { instructions } = useRecipeContext();
9
- return /* @__PURE__ */ jsx("ol", { "recipe-instruction-list": "", className: props.className, children: instructions.map((instruction, i) => /* @__PURE__ */ jsx("li", { "recipe-instruction": i + 1, children: instruction }, i)) });
10
- }
11
-
12
- export {
13
- InstructionList
14
- };
@@ -1,19 +0,0 @@
1
- // src/global-context.tsx
2
- import { createContext, useContext } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var GlobalContext = createContext({});
5
- function useGlobalContext() {
6
- return useContext(GlobalContext);
7
- }
8
- function GlobalContextProvider({
9
- children,
10
- config
11
- }) {
12
- return /* @__PURE__ */ jsx(GlobalContext.Provider, { value: { config }, children });
13
- }
14
-
15
- export {
16
- GlobalContext,
17
- useGlobalContext,
18
- GlobalContextProvider
19
- };
@@ -1,55 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-7SBP7DC5.mjs";
4
-
5
- // src/components/ingredients/ingredients-list.tsx
6
- import {
7
- IngredientUtils
8
- } from "@recipe-book/core";
9
- import { useMemo } from "react";
10
- import { jsx, jsxs } from "react/jsx-runtime";
11
- function getIngredientAmount(ingredient, conversionKey) {
12
- var _a;
13
- if (!conversionKey) {
14
- return ingredient.amount;
15
- }
16
- const conversion = (_a = ingredient.conversion) == null ? void 0 : _a[conversionKey];
17
- if (!conversion) {
18
- console.warn(
19
- `No conversion found for ingredient "${ingredient.name}" with key "${conversionKey}"
20
- Attempting conversion table lookup...`
21
- );
22
- const coerced = IngredientUtils.convert(
23
- ingredient,
24
- conversionKey
25
- );
26
- if (coerced) {
27
- return coerced.amount;
28
- }
29
- return ingredient.amount;
30
- }
31
- return conversion;
32
- }
33
- function IngredientList(props) {
34
- const { ingredients, activeConversionKey, measurements } = useRecipeContext();
35
- const ingredientsWithAmounts = useMemo(() => {
36
- if (activeConversionKey === measurements) {
37
- return ingredients;
38
- }
39
- return ingredients.map((ingredient) => ({
40
- ...ingredient,
41
- amount: getIngredientAmount(ingredient, activeConversionKey)
42
- }));
43
- }, [ingredients, activeConversionKey, measurements]);
44
- return /* @__PURE__ */ jsx("ul", { "recipe-ingredient-list": "", className: props.className, children: ingredientsWithAmounts.map((ingredient, i) => /* @__PURE__ */ jsxs("li", { "recipe-ingredient": "", children: [
45
- ingredient.name,
46
- " \u2014 ",
47
- ingredient.amount.value,
48
- " ",
49
- ingredient.amount.unit
50
- ] }, i)) });
51
- }
52
-
53
- export {
54
- IngredientList
55
- };
@@ -1,34 +0,0 @@
1
- // src/recipe-context.tsx
2
- import { createContext, useContext, useState, useMemo } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var recipeContext = createContext(
5
- {}
6
- );
7
- function useRecipeContext() {
8
- const ctx = useContext(recipeContext);
9
- if (!ctx) {
10
- throw new Error("Missing recipe context. Are you using <Recipe.Root />?");
11
- }
12
- return ctx;
13
- }
14
- function RecipeContextProvider({
15
- children,
16
- recipe
17
- }) {
18
- const [activeConversionKey, setActiveConversionKey] = useState();
19
- const recipeContextValue = useMemo(() => {
20
- return {
21
- ...recipe,
22
- activeConversionKey,
23
- setConversionKey: (key) => {
24
- setActiveConversionKey(key);
25
- }
26
- };
27
- }, [recipe, activeConversionKey, setActiveConversionKey]);
28
- return /* @__PURE__ */ jsx(recipeContext.Provider, { value: recipeContextValue, children });
29
- }
30
-
31
- export {
32
- useRecipeContext,
33
- RecipeContextProvider
34
- };
@@ -1,53 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-7SBP7DC5.mjs";
4
-
5
- // src/components/ingredients/ingredients-list.tsx
6
- import {
7
- IngredientUtils
8
- } from "@recipe-book/core";
9
- import { useMemo } from "react";
10
- import { jsx, jsxs } from "react/jsx-runtime";
11
- function getIngredientAmount(ingredient, conversionKey) {
12
- var _a;
13
- if (!conversionKey) {
14
- return ingredient.amount;
15
- }
16
- const conversion = (_a = ingredient.conversion) == null ? void 0 : _a[conversionKey];
17
- if (!conversion) {
18
- console.warn(
19
- `No conversion found for ingredient "${ingredient.name}" with key "${conversionKey}"
20
- Attempting conversion table lookup...`
21
- );
22
- const coerced = IngredientUtils.convert(
23
- ingredient,
24
- conversionKey
25
- );
26
- if (coerced) {
27
- return coerced.amount;
28
- }
29
- return ingredient.amount;
30
- }
31
- return conversion;
32
- }
33
- function IngredientList(props) {
34
- const { ingredients, activeConversionKey } = useRecipeContext();
35
- const ingredientsWithAmounts = useMemo(
36
- () => ingredients.map((ingredient) => ({
37
- ...ingredient,
38
- amount: getIngredientAmount(ingredient, activeConversionKey)
39
- })),
40
- [ingredients, activeConversionKey]
41
- );
42
- return /* @__PURE__ */ jsx("ul", { "recipe-ingredient-list": "", className: props.className, children: ingredientsWithAmounts.map((ingredient, i) => /* @__PURE__ */ jsxs("li", { "recipe-ingredient": "", children: [
43
- ingredient.name,
44
- " \u2014 ",
45
- ingredient.amount.value,
46
- " ",
47
- ingredient.amount.unit
48
- ] }, i)) });
49
- }
50
-
51
- export {
52
- IngredientList
53
- };
@@ -1,39 +0,0 @@
1
- // src/recipe-context.tsx
2
- import {
3
- createContext,
4
- useContext,
5
- useState,
6
- useMemo
7
- } from "react";
8
- import { jsx } from "react/jsx-runtime";
9
- var recipeContext = createContext(
10
- {}
11
- );
12
- function useRecipeContext() {
13
- const ctx = useContext(recipeContext);
14
- if (!ctx) {
15
- throw new Error("Missing recipe context. Are you using <Recipe.Root />?");
16
- }
17
- return ctx;
18
- }
19
- function RecipeContextProvider({
20
- children,
21
- recipe
22
- }) {
23
- const [activeConversionKey, setActiveConversionKey] = useState();
24
- const recipeContextValue = useMemo(() => {
25
- return {
26
- ...recipe,
27
- activeConversionKey,
28
- setConversionKey: (key) => {
29
- setActiveConversionKey(key);
30
- }
31
- };
32
- }, [recipe, activeConversionKey, setActiveConversionKey]);
33
- return /* @__PURE__ */ jsx(recipeContext.Provider, { value: recipeContextValue, children });
34
- }
35
-
36
- export {
37
- useRecipeContext,
38
- RecipeContextProvider
39
- };
@@ -1,46 +0,0 @@
1
- import {
2
- useGlobalContext
3
- } from "./chunk-SEXTT3NJ.mjs";
4
- import {
5
- RecipeContextProvider
6
- } from "./chunk-ENGJXHYU.mjs";
7
-
8
- // src/components/root.tsx
9
- import { RecipeUtils } from "@recipe-book/core";
10
- import { useMemo, useState } from "react";
11
- import { jsx } from "react/jsx-runtime";
12
- function Root(props) {
13
- const [servings, setServings] = useState(1);
14
- const { config: globalConfig } = useGlobalContext();
15
- const recipe = useMemo(() => {
16
- const finalConfig = {
17
- ...globalConfig,
18
- ...props.recipe
19
- };
20
- const _recipe = RecipeUtils.create(finalConfig);
21
- return {
22
- ..._recipe,
23
- ingredients: _recipe.ingredients.map((ingredient) => ({
24
- ...ingredient,
25
- amount: {
26
- ...ingredient.amount,
27
- // scale the amount by the number of servings
28
- value: ingredient.amount.value * servings
29
- }
30
- }))
31
- };
32
- }, [globalConfig, props.recipe, servings]);
33
- return /* @__PURE__ */ jsx(
34
- RecipeContextProvider,
35
- {
36
- recipe,
37
- servings,
38
- setServings,
39
- children: props.children
40
- }
41
- );
42
- }
43
-
44
- export {
45
- Root
46
- };
@@ -1,23 +0,0 @@
1
- // src/global-context.tsx
2
- import { createContext, useContext } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var GlobalContext = createContext({});
5
- function useGlobalContext() {
6
- const ctx = useContext(GlobalContext);
7
- if (!ctx) {
8
- return {};
9
- }
10
- return ctx;
11
- }
12
- function GlobalContextProvider({
13
- children,
14
- config
15
- }) {
16
- return /* @__PURE__ */ jsx(GlobalContext.Provider, { value: { config }, children });
17
- }
18
-
19
- export {
20
- GlobalContext,
21
- useGlobalContext,
22
- GlobalContextProvider
23
- };
@@ -1,20 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-MGBEDCLT.mjs";
4
-
5
- // src/components/ingredients/ingredients-list.tsx
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- function IngredientList(props) {
8
- const { ingredients } = useRecipeContext();
9
- return /* @__PURE__ */ jsx("ul", { "recipe-ingredient-list": "", className: props.className, children: ingredients.map((ingredient, i) => /* @__PURE__ */ jsxs("li", { "recipe-ingredient": "", children: [
10
- ingredient.name,
11
- " \u2014 ",
12
- ingredient.amount.value,
13
- " ",
14
- ingredient.amount.unit
15
- ] }, i)) });
16
- }
17
-
18
- export {
19
- IngredientList
20
- };
@@ -1,50 +0,0 @@
1
- import {
2
- useGlobalContext
3
- } from "./chunk-SEXTT3NJ.mjs";
4
- import {
5
- RecipeContextProvider
6
- } from "./chunk-ENGJXHYU.mjs";
7
-
8
- // src/components/root.tsx
9
- import { RecipeUtils } from "@recipe-book/core";
10
- import { useMemo, useState } from "react";
11
- import { jsx } from "react/jsx-runtime";
12
- function Root(props) {
13
- const [servings, setServings] = useState(1);
14
- const { config: globalConfig } = useGlobalContext();
15
- const recipe = useMemo(() => {
16
- const finalConfig = {
17
- ...globalConfig,
18
- ...props.recipe
19
- };
20
- const _recipe = RecipeUtils.create(finalConfig);
21
- return {
22
- ..._recipe,
23
- ingredients: _recipe.ingredients.map((ingredient) => ({
24
- ...ingredient,
25
- amount: {
26
- ...ingredient.amount,
27
- // scale the amount by the number of servings
28
- value: ingredient.amount.value * servings
29
- },
30
- conversion: typeof ingredient.conversion === "object" ? {
31
- ...ingredient.conversion,
32
- [finalConfig.measurements]: ingredient.amount
33
- } : void 0
34
- }))
35
- };
36
- }, [globalConfig, props.recipe, servings]);
37
- return /* @__PURE__ */ jsx(
38
- RecipeContextProvider,
39
- {
40
- recipe,
41
- servings,
42
- setServings,
43
- children: props.children
44
- }
45
- );
46
- }
47
-
48
- export {
49
- Root
50
- };
@@ -1,53 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-7SBP7DC5.mjs";
4
-
5
- // src/components/ingredients/ingredients-list.tsx
6
- import {
7
- IngredientUtils
8
- } from "@recipe-book/core";
9
- import { useMemo } from "react";
10
- import { jsx, jsxs } from "react/jsx-runtime";
11
- function getIngredientAmount(ingredient, conversionKey) {
12
- var _a;
13
- if (!conversionKey) {
14
- return ingredient.amount;
15
- }
16
- const conversion = (_a = ingredient.conversion) == null ? void 0 : _a[conversionKey];
17
- if (!conversion) {
18
- console.warn(
19
- `No conversion found for ingredient "${ingredient.name}" with key "${conversionKey}"
20
- Attempting conversion table lookup...`
21
- );
22
- const coerced = IngredientUtils.convert(
23
- ingredient,
24
- conversionKey
25
- );
26
- if (coerced) {
27
- return coerced.amount;
28
- }
29
- return ingredient.amount;
30
- }
31
- return conversion;
32
- }
33
- function IngredientList(props) {
34
- const { ingredients, activeConversionKey, measurements } = useRecipeContext();
35
- const ingredientsWithAmounts = useMemo(
36
- () => ingredients.map((ingredient) => ({
37
- ...ingredient,
38
- amount: getIngredientAmount(ingredient, activeConversionKey)
39
- })),
40
- [ingredients, activeConversionKey, measurements]
41
- );
42
- return /* @__PURE__ */ jsx("ul", { "recipe-ingredient-list": "", className: props.className, children: ingredientsWithAmounts.map((ingredient, i) => /* @__PURE__ */ jsxs("li", { "recipe-ingredient": "", children: [
43
- ingredient.name,
44
- " \u2014 ",
45
- ingredient.amount.value,
46
- " ",
47
- ingredient.amount.unit
48
- ] }, i)) });
49
- }
50
-
51
- export {
52
- IngredientList
53
- };
@@ -1 +0,0 @@
1
- import{createContext as C,useContext as p,useState as u,useMemo as a}from"react";import{jsx as x}from"react/jsx-runtime";var s=C({});function l(){let e=p(s);if(!e)throw new Error("Missing recipe context. Are you using <Recipe.Root />?");return e}function m({children:e,recipe:o,servings:n,setServings:t}){let[r,i]=u(o.measurements),c=a(()=>({...o,activeConversionKey:r,setConversionKey:v=>{i(v)},servings:n,setServings:t}),[o,r,i,n,t]);return x(s.Provider,{value:c,children:e})}export{l as a,m as b};
@@ -1,26 +0,0 @@
1
- import {
2
- useGlobalContext
3
- } from "./chunk-M5D3UUZF.mjs";
4
- import {
5
- RecipeContextProvider
6
- } from "./chunk-N53TONLF.mjs";
7
-
8
- // src/components/root.tsx
9
- import { RecipeUtils } from "@recipe-book/core";
10
- import { useMemo } from "react";
11
- import { jsx } from "react/jsx-runtime";
12
- function Root(props) {
13
- const { config: globalConfig } = useGlobalContext();
14
- const recipe = useMemo(() => {
15
- const finalConfig2 = {
16
- ...globalConfig,
17
- ...props.recipe
18
- };
19
- return RecipeUtils.create(finalConfig2);
20
- }, [globalConfig, props.recipe]);
21
- return /* @__PURE__ */ jsx(RecipeContextProvider, { recipe: finalConfig, children: props.children });
22
- }
23
-
24
- export {
25
- Root
26
- };
@@ -1,24 +0,0 @@
1
- import {
2
- useGlobalContext
3
- } from "./chunk-M5D3UUZF.mjs";
4
- import {
5
- RecipeContextProvider
6
- } from "./chunk-N53TONLF.mjs";
7
-
8
- // src/components/root.tsx
9
- import { useMemo } from "react";
10
- import { jsx } from "react/jsx-runtime";
11
- function Root(props) {
12
- const { config: globalConfig } = useGlobalContext();
13
- const finalConfig = useMemo(() => {
14
- return {
15
- ...globalConfig,
16
- ...props.recipe
17
- };
18
- }, [globalConfig, props.recipe]);
19
- return /* @__PURE__ */ jsx(RecipeContextProvider, { recipe: finalConfig, children: props.children });
20
- }
21
-
22
- export {
23
- Root
24
- };
@@ -1,37 +0,0 @@
1
- import {
2
- useGlobalContext
3
- } from "./chunk-SEXTT3NJ.mjs";
4
- import {
5
- RecipeContextProvider
6
- } from "./chunk-MGBEDCLT.mjs";
7
-
8
- // src/components/root.tsx
9
- import { RecipeUtils } from "@recipe-book/core";
10
- import { useMemo, useState } from "react";
11
- import { jsx } from "react/jsx-runtime";
12
- function Root(props) {
13
- const [servings, setServings] = useState(1);
14
- const { config: globalConfig } = useGlobalContext();
15
- const recipe = useMemo(() => {
16
- const finalConfig = {
17
- ...globalConfig,
18
- ...props.recipe
19
- };
20
- const _recipe = RecipeUtils.create(finalConfig);
21
- return {
22
- ..._recipe,
23
- ingredients: _recipe.ingredients.map((ingredient) => ({
24
- ...ingredient,
25
- amount: {
26
- ...ingredient.amount,
27
- value: ingredient.amount.value * servings
28
- }
29
- }))
30
- };
31
- }, [globalConfig, props.recipe]);
32
- return /* @__PURE__ */ jsx(RecipeContextProvider, { recipe, children: props.children });
33
- }
34
-
35
- export {
36
- Root
37
- };
@@ -1 +0,0 @@
1
- import{b as s}from"./chunk-Q6I5J3IJ.mjs";import{b as c}from"./chunk-PBENQR7Y.mjs";import{RecipeUtils as a}from"@recipe-book/core";import{useMemo as u,useState as v}from"react";import{jsx as f}from"react/jsx-runtime";function b(r){let[e,p]=v(1),{config:t}=s(),m=u(()=>{let i={...t,...r.recipe},n=a.create(i);return{...n,ingredients:n.ingredients.map(o=>({...o,amount:{...o.amount,value:o.amount.value*e},conversion:typeof o.conversion=="object"?{...o.conversion,[i.measurements]:o.amount.value*e}:o.conversion}))}},[t,r.recipe,e]);return f(c,{recipe:m,servings:e,setServings:p,children:r.children})}export{b as a};
@@ -1 +0,0 @@
1
- import{createContext as n,useContext as l}from"react";import{jsx as r}from"react/jsx-runtime";var t=n({});function c(){let o=l(t);return o||{config:{}}}function x({children:o,config:e}){return r(t.Provider,{value:{config:e},children:o})}export{t as a,c as b,x as c};
@@ -1 +0,0 @@
1
- import{createContext as l,useContext as n}from"react";import{jsx as r}from"react/jsx-runtime";var o=l({});function C(){return n(o)}function x({children:e,config:t}){return r(o.Provider,{value:{config:t},children:e})}export{o as a,C as b,x as c};
@@ -1,44 +0,0 @@
1
- import {
2
- useRecipeContext
3
- } from "./chunk-A5JAKCMG.mjs";
4
-
5
- // src/components/thumbnail.tsx
6
- import { AspectRatio } from "@radix-ui/react-aspect-ratio";
7
- import { jsx } from "react/jsx-runtime";
8
- function Thumbnail(props) {
9
- var _a, _b;
10
- const { thumbnail, name } = useRecipeContext();
11
- if (!thumbnail) {
12
- throw new Error("Missing thumbnail image. Did you forget to set one?");
13
- }
14
- const propStyle = (_a = props.style) != null ? _a : {};
15
- return /* @__PURE__ */ jsx(
16
- AspectRatio,
17
- {
18
- "recipe-thumbnail": "",
19
- className: props.className,
20
- style: {
21
- width: "100%",
22
- ...propStyle
23
- },
24
- ratio: props.aspectRatio || 1,
25
- children: /* @__PURE__ */ jsx(
26
- "img",
27
- {
28
- "recipe-thumbnail-image": "",
29
- style: {
30
- objectFit: "cover",
31
- width: "100%",
32
- height: "100%"
33
- },
34
- src: thumbnail,
35
- alt: (_b = props.alt) != null ? _b : name
36
- }
37
- )
38
- }
39
- );
40
- }
41
-
42
- export {
43
- Thumbnail
44
- };
@@ -1,34 +0,0 @@
1
- import {
2
- useGlobalContext
3
- } from "./chunk-SEXTT3NJ.mjs";
4
- import {
5
- RecipeContextProvider
6
- } from "./chunk-MGBEDCLT.mjs";
7
-
8
- // src/components/root.tsx
9
- import { RecipeUtils } from "@recipe-book/core";
10
- import { useMemo, useState } from "react";
11
- import { jsx } from "react/jsx-runtime";
12
- function Root(props) {
13
- const [servings, setServings] = useState(1);
14
- const { config: globalConfig } = useGlobalContext();
15
- const recipe = useMemo(() => {
16
- const finalConfig = {
17
- ...globalConfig,
18
- ...props.recipe
19
- };
20
- const _recipe = RecipeUtils.create(finalConfig);
21
- return {
22
- ..._recipe,
23
- ingredients: _recipe.ingredients.map((ingredient) => ({
24
- ...ingredient,
25
- quantity: ingredient.amount * servings
26
- }))
27
- };
28
- }, [globalConfig, props.recipe]);
29
- return /* @__PURE__ */ jsx(RecipeContextProvider, { recipe, children: props.children });
30
- }
31
-
32
- export {
33
- Root
34
- };