PageSourceSearch

https://kyn-care.com/src/components/home/ExploreProducts.tsx

js kyn-care.com collected 2026-10-08 11:37:11 UTC 14,037 bytes, 166 lines download raw bytes

1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/home/ExploreProducts.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/@fs/home/runner/workspace/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=9ce4103e"; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"];
2import RefreshRuntime from "/@react-refresh";
3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope;
4let prevRefreshReg;
5let prevRefreshSig;
6if (import.meta.hot && !inWebWorker) {
7  if (!window.__vite_plugin_react_preamble_installed__) {
8    throw new Error("@vitejs/plugin-react can't detect preamble. Something is wrong. See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201");
9  }
10  prevRefreshReg = window.$RefreshReg$;
11  prevRefreshSig = window.$RefreshSig$;
12  window.$RefreshReg$ = (type, id) => {
13    RefreshRuntime.register(type, "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx " + id);
14  };
15  window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform;
16}
17var _s = $RefreshSig$();
18import { Link } from "/@fs/home/runner/workspace/node_modules/.vite/deps/wouter.js?v=9ce4103e";
19import { useLanguage } from "/src/lib/LanguageContext.tsx";
20import faceImage from "/src/assets/stock_images/kyn_face_serum.png?import";
21import bodyImage from "/src/assets/stock_images/kyn_body_cream.png?import";
22import lipsImage from "/src/assets/stock_images/kyn_lip_gloss_new.png?import";
23const ExploreProducts = () => {
24  _s();
25  const { t } = useLanguage();
26  const categories = [
27    {
28      id: "face",
29      name: "FACE",
30      image: faceImage,
31      filter: "face"
32    },
33    {
34      id: "body",
35      name: "BODY",
36      image: bodyImage,
37      filter: "body"
38    },
39    {
40      id: "lips",
41      name: "LIPS",
42      image: lipsImage,
43      filter: "lips"
44    }
45  ];
46  return /* @__PURE__ */ jsxDEV("section", { className: "pt-16 pb-20 bg-white", children: /* @__PURE__ */ jsxDEV("div", { className: "w-full max-w-[1440px] mx-auto px-4 md:px-8 lg:px-12", children: [
47    /* @__PURE__ */ jsxDEV("div", { className: "max-w-3xl mx-auto text-center mb-16", children: [
48      /* @__PURE__ */ jsxDEV("h2", { className: "text-base uppercase tracking-[2px] mb-5 font-light", "data-i18n": "exploreProductsTitle", children: t("exploreProductsTitle") }, void 0, false, {
49        fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
50        lineNumber: 36,
51        columnNumber: 11
52      }, this),
53      /* @__PURE__ */ jsxDEV("p", { className: "text-sm md:text-[14px] max-w-lg mx-auto px-6 font-light leading-relaxed", "data-i18n": "exploreProductsText", children: t("exploreProductsText") }, void 0, false, {
54        fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
55        lineNumber: 40,
56        columnNumber: 11
57      }, this)
58    ] }, void 0, true, {
59      fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
60      lineNumber: 35,
61      columnNumber: 9
62    }, this),
63    /* @__PURE__ */ jsxDEV("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8 lg:gap-12", children: categories.map(
64      (category) => /* @__PURE__ */ jsxDEV(
65        Link,
66        {
67          href: `/store?category=${category.filter}`,
68          className: "group cursor-pointer",
69          "data-testid": `category-card-${category.id}`,
70          children: /* @__PURE__ */ jsxDEV("div", { className: "relative aspect-[3/4] overflow-hidden bg-gray-100 rounded-sm zoom-container", children: [
71            /* @__PURE__ */ jsxDEV(
72              "img",
73              {
74                src: category.image,
75                alt: `KYN Skincare ${category.name} products`,
76                loading: "lazy",
77                decoding: "async",
78                className: "w-full h-full object-cover zoom-image"
79              },
80              void 0,
81              false,
82              {
83                fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
84                lineNumber: 55,
85                columnNumber: 17
86              },
87              this
88            ),
89            /* @__PURE__ */ jsxDEV("div", { className: "absolute inset-0 bg-white bg-opacity-10 group-hover:bg-opacity-20 transition-all duration-500" }, void 0, false, {
90              fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
91              lineNumber: 63,
92              columnNumber: 17
93            }, this),
94            /* @__PURE__ */ jsxDEV("div", { className: "absolute bottom-6 right-6", children: /* @__PURE__ */ jsxDEV(
95              "h3",
96              {
97                className: "text-sm md:text-base font-light tracking-[2px] uppercase",
98                style: { color: "#1a1a1a" },
99                children: category.name
100              },
101              void 0,
102              false,
103              {
104                fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
105                lineNumber: 67,
106                columnNumber: 19
107              },
108              this
109            ) }, void 0, false, {
110              fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
111              lineNumber: 66,
112              columnNumber: 17
113            }, this)
114          ] }, void 0, true, {
115            fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
116            lineNumber: 54,
117            columnNumber: 15
118          }, this)
119        },
120        category.id,
121        false,
122        {
123          fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
124          lineNumber: 48,
125          columnNumber: 11
126        },
127        this
128      )
129    ) }, void 0, false, {
130      fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
131      lineNumber: 46,
132      columnNumber: 9
133    }, this)
134  ] }, void 0, true, {
135    fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
136    lineNumber: 34,
137    columnNumber: 7
138  }, this) }, void 0, false, {
139    fileName: "/home/runner/workspace/client/src/components/home/ExploreProducts.tsx",
140    lineNumber: 33,
141    columnNumber: 5
142  }, this);
143};
144_s(ExploreProducts, "ot2YhC7pP10gRrIouBKIa40vomw=", false, function() {
145  return [useLanguage];
146});
147_c = ExploreProducts;
148export default ExploreProducts;
149var _c;
150$RefreshReg$(_c, "ExploreProducts");
151if (import.meta.hot && !inWebWorker) {
152  window.$RefreshReg$ = prevRefreshReg;
153  window.$RefreshSig$ = prevRefreshSig;
154}
155if (import.meta.hot && !inWebWorker) {
156  RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => {
157    RefreshRuntime.registerExportsForReactRefresh("/home/runner/workspace/client/src/components/home/ExploreProducts.tsx", currentExports);
158    import.meta.hot.accept((nextExports) => {
159      if (!nextExports) return;
160      const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/home/runner/workspace/client/src/components/home/ExploreProducts.tsx", currentExports, nextExports);
161      if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage);
162    });
163  });
164}
165
166//# sourceMappingURL=data:application/json;base64,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BQUFBO0FBQUEsTUF5QkE7QUFBQSxJQUNELEtBNUJIO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0E2QkE7QUFBQSxPQXpDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLFNBMENBLEtBM0NGO0FBQUE7QUFBQTtBQUFBO0FBQUEsU0E0Q0E7QUFFSjtBQUFFSCxHQXZFSUQsaUJBQXlCO0FBQUEsVUFDZkosV0FBVztBQUFBO0FBQUFlLEtBRHJCWDtBQXlFTixlQUFlQTtBQUFnQixJQUFBVztBQUFBQyxhQUFBRCxJQUFBIiwibmFtZXMiOlsiTGluayIsInVzZUxhbmd1YWdlIiwiZmFjZUltYWdlIiwiYm9keUltYWdlIiwibGlwc0ltYWdlIiwiRXhwbG9yZVByb2R1Y3RzIiwiX3MiLCJ0IiwiY2F0ZWdvcmllcyIsImlkIiwibmFtZSIsImltYWdlIiwiZmlsdGVyIiwibWFwIiwiY2F0ZWdvcnkiLCJjb2xvciIsIl9jIiwiJFJlZnJlc2hSZWckIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIkV4cGxvcmVQcm9kdWN0cy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICd3b3V0ZXInO1xuaW1wb3J0IHsgdXNlTGFuZ3VhZ2UgfSBmcm9tICdAL2xpYi9MYW5ndWFnZUNvbnRleHQnO1xuaW1wb3J0IGZhY2VJbWFnZSBmcm9tICcuLi8uLi9hc3NldHMvc3RvY2tfaW1hZ2VzL2t5bl9mYWNlX3NlcnVtLnBuZyc7XG5pbXBvcnQgYm9keUltYWdlIGZyb20gJy4uLy4uL2Fzc2V0cy9zdG9ja19pbWFnZXMva3luX2JvZHlfY3JlYW0ucG5nJztcbmltcG9ydCBsaXBzSW1hZ2UgZnJvbSAnLi4vLi4vYXNzZXRzL3N0b2NrX2ltYWdlcy9reW5fbGlwX2dsb3NzX25ldy5wbmcnO1xuXG5jb25zdCBFeHBsb3JlUHJvZHVjdHM6IFJlYWN0LkZDID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZUxhbmd1YWdlKCk7XG4gIFxuICBjb25zdCBjYXRlZ29yaWVzID0gW1xuICAgIHtcbiAgICAgIGlkOiAnZmFjZScsXG4gICAgICBuYW1lOiAnRkFDRScsXG4gICAgICBpbWFnZTogZmFjZUltYWdlLFxuICAgICAgZmlsdGVyOiAnZmFjZSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnYm9keScsXG4gICAgICBuYW1lOiAnQk9EWScsXG4gICAgICBpbWFnZTogYm9keUltYWdlLFxuICAgICAgZmlsdGVyOiAnYm9keSdcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnbGlwcycsXG4gICAgICBuYW1lOiAnTElQUycsXG4gICAgICBpbWFnZTogbGlwc0ltYWdlLFxuICAgICAgZmlsdGVyOiAnbGlwcydcbiAgICB9XG4gIF07XG4gIFxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInB0LTE2IHBiLTIwIGJnLXdoaXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBtYXgtdy1bMTQ0MHB4XSBteC1hdXRvIHB4LTQgbWQ6cHgtOCBsZzpweC0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTN4bCBteC1hdXRvIHRleHQtY2VudGVyIG1iLTE2XCI+XG4gICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtYmFzZSB1cHBlcmNhc2UgdHJhY2tpbmctWzJweF0gbWItNSBmb250LWxpZ2h0XCIgZGF0YS1pMThuPVwiZXhwbG9yZVByb2R1Y3RzVGl0bGVcIj5cbiAgICAgICAgICAgIHt0KCdleHBsb3JlUHJvZHVjdHNUaXRsZScpfVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgXG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSBtZDp0ZXh0LVsxNHB4XSBtYXgtdy1sZyBteC1hdXRvIHB4LTYgZm9udC1saWdodCBsZWFkaW5nLXJlbGF4ZWRcIiBkYXRhLWkxOG49XCJleHBsb3JlUHJvZHVjdHNUZXh0XCI+XG4gICAgICAgICAgICB7dCgnZXhwbG9yZVByb2R1Y3RzVGV4dCcpfVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgICAgICB7LyogQ2F0ZWdvcnkgY2FyZHMgY29udGFpbmVyICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTMgZ2FwLTggbGc6Z2FwLTEyXCI+XG4gICAgICAgICAge2NhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gKFxuICAgICAgICAgICAgPExpbmsgXG4gICAgICAgICAgICAgIGtleT17Y2F0ZWdvcnkuaWR9IFxuICAgICAgICAgICAgICBocmVmPXtgL3N0b3JlP2NhdGVnb3J5PSR7Y2F0ZWdvcnkuZmlsdGVyfWB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImdyb3VwIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BjYXRlZ29yeS1jYXJkLSR7Y2F0ZWdvcnkuaWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBhc3BlY3QtWzMvNF0gb3ZlcmZsb3ctaGlkZGVuIGJnLWdyYXktMTAwIHJvdW5kZWQtc20gem9vbS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8aW1nIFxuICAgICAgICAgICAgICAgICAgc3JjPXtjYXRlZ29yeS5pbWFnZX1cbiAgICAgICAgICAgICAgICAgIGFsdD17YEtZTiBTa2luY2FyZSAke2NhdGVnb3J5Lm5hbWV9IHByb2R1Y3RzYH1cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgIGRlY29kaW5nPVwiYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgem9vbS1pbWFnZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB7LyogTGlnaHQgb3ZlcmxheSBmb3IgYmV0dGVyIHRleHQgdmlzaWJpbGl0eSAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctd2hpdGUgYmctb3BhY2l0eS0xMCBncm91cC1ob3ZlcjpiZy1vcGFjaXR5LTIwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgI
166HsvKiBDYXRlZ29yeSBuYW1lIGF0IGJvdHRvbS1yaWdodCAqL31cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS02IHJpZ2h0LTZcIj5cbiAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LXNtIG1kOnRleHQtYmFzZSBmb250LWxpZ2h0IHRyYWNraW5nLVsycHhdIHVwcGVyY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICcjMWExYTFhJyB9fT5cbiAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHBsb3JlUHJvZHVjdHM7Il0sImZpbGUiOiIvaG9tZS9ydW5uZXIvd29ya3NwYWNlL2NsaWVudC9zcmMvY29tcG9uZW50cy9ob21lL0V4cGxvcmVQcm9kdWN0cy50c3gifQ==

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.