@helpwave/hightide
Version:
helpwave's component and theming library
136 lines (130 loc) • 4.57 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/components/TimeDisplay.tsx
var TimeDisplay_exports = {};
__export(TimeDisplay_exports, {
TimeDisplay: () => TimeDisplay
});
module.exports = __toCommonJS(TimeDisplay_exports);
// src/hooks/useLanguage.tsx
var import_react2 = require("react");
// src/hooks/useLocalStorage.tsx
var import_react = require("react");
// src/hooks/useLanguage.tsx
var import_jsx_runtime = require("react/jsx-runtime");
var DEFAULT_LANGUAGE = "en";
var LanguageContext = (0, import_react2.createContext)({ language: DEFAULT_LANGUAGE, setLanguage: (v) => v });
var useLanguage = () => (0, import_react2.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/TimeDisplay.tsx
var import_jsx_runtime2 = require("react/jsx-runtime");
var defaultTimeDisplayTranslations = {
en: {
today: "today",
yesterday: "yesterday",
tomorrow: "tomorrow",
inDays: (days) => `in ${days} days`,
agoDays: (days) => `${days} days ago`,
january: "January",
february: "February",
march: "March",
april: "April",
may: "May",
june: "June",
july: "July",
august: "August",
september: "September",
october: "October",
november: "November",
december: "December"
},
de: {
today: "heute",
yesterday: "gestern",
tomorrow: "morgen",
inDays: (days) => `in ${days} Tagen`,
agoDays: (days) => `vor ${days} Tagen`,
january: "Januar",
february: "Februar",
march: "M\xE4rz",
april: "April",
may: "Mai",
june: "Juni",
july: "Juli",
august: "August",
september: "September",
october: "October",
november: "November",
december: "December"
}
};
var TimeDisplay = ({
overwriteTranslation,
date,
mode = "daysFromToday"
}) => {
const translation = useTranslation(defaultTimeDisplayTranslations, overwriteTranslation);
const difference = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf();
const isBefore = difference > 0;
const differenceInDays = Math.floor(Math.abs(difference) / (1e3 * 3600 * 24));
let displayString;
if (differenceInDays === 0) {
displayString = translation.today;
} else if (differenceInDays === 1) {
displayString = isBefore ? translation.yesterday : translation.tomorrow;
} else {
displayString = isBefore ? translation.agoDays(differenceInDays) : translation.inDays(differenceInDays);
}
const monthToTranslation = {
0: translation.january,
1: translation.february,
2: translation.march,
3: translation.april,
4: translation.may,
5: translation.june,
6: translation.july,
7: translation.august,
8: translation.september,
9: translation.october,
10: translation.november,
11: translation.december
};
let fullString;
if (mode === "daysFromToday") {
fullString = `${date.getHours().toString().padStart(2, "0")}:${date.getMinutes().toString().padStart(2, "0")} - ${displayString}`;
} else {
fullString = `${date.getDate()}. ${monthToTranslation[date.getMonth()]} ${date.getFullYear()}`;
}
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: fullString });
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
TimeDisplay
});
//# sourceMappingURL=TimeDisplay.js.map