UNPKG

@helpwave/hightide

Version:

helpwave's component and theming library

90 lines (85 loc) 3.44 kB
// src/hooks/useLanguage.tsx import { createContext, useContext, useEffect as useEffect2, useState as useState2 } from "react"; // src/hooks/useLocalStorage.tsx import { useCallback, useEffect, useState } from "react"; // src/hooks/useLanguage.tsx import { jsx } from "react/jsx-runtime"; var DEFAULT_LANGUAGE = "en"; var LanguageContext = createContext({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v }); var useLanguage = () => useContext(LanguageContext); // src/hooks/useTranslation.ts var useTranslation = (defaults, translationOverwrite = {}) => { const { language: languageProp, translation: overwrite } = translationOverwrite; const { language: inferredLanguage } = useLanguage(); const usedLanguage = languageProp ?? inferredLanguage; let defaultValues = defaults[usedLanguage]; if (overwrite && overwrite[usedLanguage]) { defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }; } return defaultValues; }; // src/components/icons/Helpwave.tsx import { clsx } from "clsx"; import { jsx as jsx2, jsxs } from "react/jsx-runtime"; var Helpwave = ({ color = "currentColor", animate = "none", size = 64, ...props }) => { const isLoadingAnimation = animate === "loading"; let svgAnimationKey = ""; if (animate === "pulse") { svgAnimationKey = "animate-pulse"; } else if (animate === "bounce") { svgAnimationKey = "animate-bounce"; } if (size < 0) { console.error("size cannot be less than 0"); size = 64; } return /* @__PURE__ */ jsx2( "svg", { width: size, height: size, viewBox: "0 0 888 888", fill: "none", strokeLinecap: "round", strokeWidth: 48, ...props, children: /* @__PURE__ */ jsxs("g", { className: clsx(svgAnimationKey), children: [ /* @__PURE__ */ jsx2("path", { className: clsx({ "animate-wave-big-left-up": isLoadingAnimation }), d: "M144 543.235C144 423.259 232.164 326 340.92 326", stroke: color, strokeDasharray: "1000" }), /* @__PURE__ */ jsx2("path", { className: clsx({ "animate-wave-big-right-down": isLoadingAnimation }), d: "M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869", stroke: color, strokeDasharray: "1000" }), /* @__PURE__ */ jsx2("path", { className: clsx({ "animate-wave-small-left-up": isLoadingAnimation }), d: "M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495", stroke: color, strokeDasharray: "1000" }), /* @__PURE__ */ jsx2("path", { className: clsx({ "animate-wave-small-right-down": isLoadingAnimation }), d: "M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233", stroke: color, strokeDasharray: "1000" }) ] }) } ); }; // src/components/LoadingAnimation.tsx import clsx2 from "clsx"; import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime"; var defaultLoadingAnimationTranslation = { en: { loading: "Loading data" }, de: { loading: "Lade Daten" } }; var LoadingAnimation = ({ overwriteTranslation, loadingText, classname }) => { const translation = useTranslation(defaultLoadingAnimationTranslation, overwriteTranslation); return /* @__PURE__ */ jsxs2("div", { className: clsx2("col items-center justify-center w-full h-24", classname), children: [ /* @__PURE__ */ jsx3(Helpwave, { animate: "loading" }), loadingText ?? `${translation.loading}...` ] }); }; export { LoadingAnimation }; //# sourceMappingURL=LoadingAnimation.mjs.map