diff --git a/apps/mobile/app/components/date-picker/index.tsx b/apps/mobile/app/components/date-picker/index.tsx
deleted file mode 100644
index 62a86916b..000000000
--- a/apps/mobile/app/components/date-picker/index.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-This file is part of the Notesnook project (https://notesnook.com/)
-
-Copyright (C) 2023 Streetwriters (Private) Limited
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-import React from "react";
-import { useThemeColors } from "@notesnook/theme";
-import { useRef } from "react";
-import { useWindowDimensions, View } from "react-native";
-import { defaultBorderRadius } from "../../utils/size";
-import { DefaultAppStyles } from "../../utils/styles";
-import DatePicker from "react-native-date-picker";
-import dayjs from "dayjs";
-import { strings } from "@notesnook/intl";
-import { Button } from "../ui/button";
-
-export default function DatePickerComponent(props: {
- onConfirm: (date: Date) => void;
- onCancel: () => void;
-}) {
- const { colors, isDark } = useThemeColors();
- const dateRef = useRef(dayjs().add(1, "week").toDate());
-
- const { width } = useWindowDimensions();
-
- return (
-
- {
- close?.();
- }}
- date={dateRef.current}
- onDateChange={(date) => {
- dateRef.current = date;
- }}
- />
-
-
- );
-}
diff --git a/apps/mobile/app/components/date-time-picker/date-time-picker.tsx b/apps/mobile/app/components/date-time-picker/date-time-picker.tsx
new file mode 100644
index 000000000..fb50f9ad6
--- /dev/null
+++ b/apps/mobile/app/components/date-time-picker/date-time-picker.tsx
@@ -0,0 +1,200 @@
+/*
+This file is part of the Notesnook project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+import { useThemeColors } from "@notesnook/theme";
+import dayjs, { locale } from "dayjs";
+import React, { useMemo } from "react";
+import { I18nManager, ViewStyle } from "react-native";
+import RNDateTimePicker, {
+ DateType,
+ useDefaultStyles
+} from "react-native-ui-datepicker";
+import { FontFamily } from "../../common/design/font";
+import { Radius } from "../../common/design/spacing";
+import { db } from "../../common/database";
+import { useSettingStore } from "../../stores/use-setting-store";
+import AppIcon from "../ui/AppIcon";
+import DeviceInfo from "react-native-device-info";
+
+export type DateTimePickerMode = "date" | "time" | "datetime";
+
+export type DateTimePickerProps = {
+ /**
+ * Which parts of the value can be picked. `date` shows only the calendar,
+ * `time` shows only the time wheel and `datetime` shows both.
+ */
+ mode?: DateTimePickerMode;
+ date: Date;
+ onChange: (date: Date) => void;
+ minDate?: Date;
+ maxDate?: Date;
+ /**
+ * Force 24-hour time. Defaults to the user's time format setting.
+ */
+ is24Hour?: boolean;
+ /**
+ * First day of the week (0 = Sunday, 1 = Monday). Defaults to the user's
+ * week format setting.
+ */
+ firstDayOfWeek?: number;
+ style?: ViewStyle;
+};
+
+const toDate = (value: DateType) =>
+ value ? dayjs(value).toDate() : new Date();
+
+/**
+ * Themed date/time picker built on top of `react-native-ui-datepicker`.
+ * Renders inline; use `DateTimePicker.present()` (see index) for the sheet.
+ */
+export default function DateTimePicker({
+ mode = "date",
+ date,
+ onChange,
+ minDate,
+ maxDate,
+ is24Hour,
+ firstDayOfWeek,
+ style
+}: DateTimePickerProps) {
+ const { colors, isDark } = useThemeColors();
+ const defaultStyles = useDefaultStyles(isDark ? "dark" : "light");
+ const weekFormat = useSettingStore((state) => state.weekFormat);
+
+ const use12Hours =
+ (is24Hour ?? db.settings.getTimeFormat() === "24-hour") === false;
+ const firstDay = firstDayOfWeek ?? (weekFormat === "Mon" ? 1 : 0);
+
+ const styles = useMemo(
+ () =>
+ ({
+ ...defaultStyles,
+ today: {
+ borderColor: colors.primary.accent,
+ borderWidth: 1,
+ borderRadius: Radius.S
+ },
+ today_label: {
+ color: colors.primary.accent
+ },
+ selected: {
+ backgroundColor: colors.primary.accent,
+ borderRadius: Radius.S
+ },
+ selected_label: {
+ color: colors.static.white
+ },
+ day_label: {
+ color: colors.primary.paragraph,
+ fontFamily: FontFamily.REGULAR
+ },
+ disabled_label: {
+ color: colors.disabled.paragraph
+ },
+ outside_label: {
+ color: colors.secondary.paragraph
+ },
+ weekday_label: {
+ color: colors.secondary.paragraph,
+ fontFamily: FontFamily.MEDIUM
+ },
+ month_selector_label: {
+ color: colors.primary.heading,
+ fontFamily: FontFamily.SEMI_BOLD
+ },
+ year_selector_label: {
+ color: colors.primary.heading,
+ fontFamily: FontFamily.SEMI_BOLD
+ },
+ time_selector_label: {
+ color: colors.primary.heading,
+ fontFamily: FontFamily.SEMI_BOLD
+ },
+ month_label: {
+ color: colors.primary.paragraph
+ },
+ year_label: {
+ color: colors.primary.paragraph
+ },
+ selected_month: {
+ backgroundColor: colors.primary.accent,
+ borderRadius: Radius.S
+ },
+ selected_month_label: {
+ color: colors.static.white
+ },
+ selected_year: {
+ backgroundColor: colors.primary.accent,
+ borderRadius: Radius.S
+ },
+ selected_year_label: {
+ color: colors.static.white
+ },
+ active_year: {
+ backgroundColor: colors.secondary.background,
+ borderRadius: Radius.S
+ },
+ time_label: {
+ color: colors.primary.heading,
+ fontFamily: FontFamily.SEMI_BOLD
+ },
+ time_selected_indicator: {
+ backgroundColor: colors.secondary.background,
+ borderRadius: Radius.S
+ }
+ }) as ReturnType,
+ [colors, defaultStyles]
+ );
+
+ return (
+
+ ),
+ IconNext: (
+
+ )
+ }}
+ onChange={(params) => {
+ const changed = (params as { date: DateType }).date;
+ onChange(toDate(changed));
+ }}
+ />
+ );
+}
diff --git a/apps/mobile/app/components/date-time-picker/index.tsx b/apps/mobile/app/components/date-time-picker/index.tsx
new file mode 100644
index 000000000..e0066ff8b
--- /dev/null
+++ b/apps/mobile/app/components/date-time-picker/index.tsx
@@ -0,0 +1,224 @@
+/*
+This file is part of the Notesnook project (https://notesnook.com/)
+
+Copyright (C) 2023 Streetwriters (Private) Limited
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+import { strings } from "@notesnook/intl";
+import { useThemeColors } from "@notesnook/theme";
+import React, { useState } from "react";
+import { View, ViewStyle } from "react-native";
+import { Radius, Spacing } from "../../common/design/spacing";
+import { presentDialog } from "../dialog/functions";
+import { presentSheet } from "../../services/event-manager";
+import AppIcon from "../ui/AppIcon";
+import { Button } from "../ui/button";
+import Heading from "../ui/typography/heading";
+import Paragraph from "../ui/typography/paragraph";
+import DateTimePicker, {
+ DateTimePickerMode,
+ DateTimePickerProps
+} from "./date-time-picker";
+
+export { default } from "./date-time-picker";
+export type {
+ DateTimePickerMode,
+ DateTimePickerProps
+} from "./date-time-picker";
+
+const DEFAULT_ICONS: Record = {
+ date: "calendar-dots",
+ time: "clock",
+ datetime: "calendar-dots"
+};
+
+export type PresentDateTimePickerOptions = Pick<
+ DateTimePickerProps,
+ "minDate" | "maxDate" | "is24Hour" | "firstDayOfWeek"
+> & {
+ mode?: DateTimePickerMode;
+ /** Initial value the picker opens on. Defaults to now. */
+ date?: Date;
+ title?: string;
+ description?: string;
+ icon?: string;
+ /** Label for the confirm button. Defaults to `strings.done()`. */
+ confirmText?: string;
+ /** Dialog context to render into (dialog presentation only). */
+ context?: string;
+ onConfirm: (date: Date) => void;
+ onCancel?: () => void;
+};
+
+type Presentation = "dialog" | "sheet";
+
+type DateTimePickerContentProps = PresentDateTimePickerOptions & {
+ presentation: Presentation;
+ close?: (ctx?: string) => void;
+};
+
+/**
+ * The shared picker body used by both the dialog and the sheet: a header,
+ * the themed picker, and Cancel/Confirm actions. Presentation-specific chrome
+ * (the dialog card vs. the sheet surface) is applied by the outer container.
+ */
+function DateTimePickerContent({
+ presentation,
+ mode = "date",
+ date,
+ minDate,
+ maxDate,
+ is24Hour,
+ firstDayOfWeek,
+ title,
+ description,
+ icon,
+ confirmText,
+ onConfirm,
+ onCancel,
+ close
+}: DateTimePickerContentProps) {
+ const { colors } = useThemeColors();
+ const [selected, setSelected] = useState(date || new Date());
+
+ const containerStyle: ViewStyle =
+ presentation === "dialog"
+ ? {
+ width: "90%",
+ maxWidth: 400,
+ alignSelf: "center",
+ backgroundColor: colors.primary.background,
+ borderRadius: Radius.S,
+ borderWidth: 0.5,
+ borderColor: colors.primary.border,
+ overflow: "hidden"
+ }
+ : {
+ width: "100%"
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ {title ||
+ (mode === "time"
+ ? strings.selectTimeHeading()
+ : strings.selectDate())}
+
+ {description ? (
+
+ {description}
+
+ ) : null}
+
+
+
+ {/* */}
+
+
+
+
+ {
+ close?.();
+ onCancel?.();
+ }}
+ />
+ {
+ close?.();
+ onConfirm(selected);
+ }}
+ />
+
+
+
+ );
+}
+
+/**
+ * Show the themed date/time picker in a dialog. This is the default surface
+ * used across the app. Resolves the picked value through `onConfirm`;
+ * dismissing without confirming calls `onCancel`.
+ */
+export function presentDateTimePicker(options: PresentDateTimePickerOptions) {
+ presentDialog({
+ context: options.context || "global",
+ component: (close) => (
+
+ )
+ });
+}
+
+/**
+ * Show the same date/time picker in a bottom sheet. Preferred on the
+ * add-reminder screen; elsewhere use {@link presentDateTimePicker}.
+ */
+export function presentDateTimePickerSheet(
+ options: PresentDateTimePickerOptions
+) {
+ presentSheet({
+ context: options.context || "global",
+ component: (_ref, close) => (
+
+ )
+ });
+}
diff --git a/apps/mobile/app/components/properties/date-meta.tsx b/apps/mobile/app/components/properties/date-meta.tsx
index 1091b0879..5a2da9109 100644
--- a/apps/mobile/app/components/properties/date-meta.tsx
+++ b/apps/mobile/app/components/properties/date-meta.tsx
@@ -17,23 +17,40 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-import React, { useState } from "react";
-import { View } from "react-native";
-import { useThemeColors } from "@notesnook/theme";
-import { AppFontSize } from "../../utils/size";
-import Paragraph from "../ui/typography/paragraph";
import { getFormattedDate } from "@notesnook/common";
-import { strings } from "@notesnook/intl";
-import DateTimePickerModal from "react-native-modal-datetime-picker";
-import { db } from "../../common/database";
import { Item, Note } from "@notesnook/core";
-import AppIcon from "../ui/AppIcon";
+import { strings } from "@notesnook/intl";
+import { useThemeColors } from "@notesnook/theme";
+import React, { useState } from "react";
+import { TouchableOpacity, View } from "react-native";
+import { db } from "../../common/database";
import { Radius, Spacing } from "../../common/design/spacing";
+import { presentDateTimePicker } from "../date-time-picker";
+import AppIcon from "../ui/AppIcon";
+import Paragraph from "../ui/typography/paragraph";
export const DateMeta = ({ item }: { item: Item }) => {
- const { colors, isDark } = useThemeColors();
- const [isDatePickerVisible, setIsDatePickerVisible] = useState(false);
+ const { colors } = useThemeColors();
const [dateCreated, setDateCreated] = useState(item.dateCreated);
+ const editDateCreated = () => {
+ presentDateTimePicker({
+ context: "properties",
+ mode: "datetime",
+ title: strings.changeCreatedDate(),
+ description: strings.changeCreatedDateDesc(),
+ confirmText: strings.change(),
+ date: new Date(dateCreated),
+ maxDate: new Date((item as Note).dateEdited),
+ onConfirm: async (date) => {
+ await db.notes.add({
+ id: item.id,
+ dateCreated: date.getTime()
+ });
+ setDateCreated(date.getTime());
+ }
+ });
+ };
+
function getDateMeta() {
const keys = Object.keys(item);
if (keys.includes("dateEdited"))
@@ -46,8 +63,14 @@ export const DateMeta = ({ item }: { item: Item }) => {
const renderItem = (key: string) =>
!item[key as keyof Item] ? null : (
- {
gap: Spacing.LEVEL_0
}}
>
-
+
{strings.dateDescFromKey(
key as
| "dateDeleted"
@@ -75,16 +98,9 @@ export const DateMeta = ({ item }: { item: Item }) => {
)}
{
- setIsDatePickerVisible(true);
- }
- }
>
{getFormattedDate(
key === "dateCreated"
@@ -100,42 +116,17 @@ export const DateMeta = ({ item }: { item: Item }) => {
>
) : null}
-
+
);
return (
- <>
- {item.type === "note" ? (
- {
- await db.notes.add({
- id: item.id,
- dateCreated: date.getTime()
- });
- setDateCreated(date.getTime());
- setIsDatePickerVisible(false);
- }}
- onCancel={() => {
- setIsDatePickerVisible(false);
- }}
- maximumDate={new Date((item as Note).dateEdited)}
- isDarkModeEnabled={isDark}
- themeVariant={isDark ? "dark" : "light"}
- is24Hour={db.settings.getTimeFormat() === "24-hour"}
- date={new Date(dateCreated)}
- />
- ) : null}
-
-
- {getDateMeta().map(renderItem)}
-
- >
+
+ {getDateMeta().map(renderItem)}
+
);
};
diff --git a/apps/mobile/app/hooks/use-actions.tsx b/apps/mobile/app/hooks/use-actions.tsx
index 7324d764f..3f2a7c410 100644
--- a/apps/mobile/app/hooks/use-actions.tsx
+++ b/apps/mobile/app/hooks/use-actions.tsx
@@ -18,6 +18,7 @@ along with this program. If not, see .
*/
/* eslint-disable no-inner-declarations */
import { isFeatureAvailable, useAreFeaturesAvailable } from "@notesnook/common";
+import dayjs from "dayjs";
import {
Color,
createInternalLink,
@@ -32,7 +33,7 @@ import { strings } from "@notesnook/intl";
import { useThemeColors } from "@notesnook/theme";
import { DisplayedNotification } from "@notifee/react-native";
import Clipboard from "@react-native-clipboard/clipboard";
-import React, { useEffect, useRef, useState } from "react";
+import { useEffect, useRef, useState } from "react";
import { InteractionManager, Platform } from "react-native";
import Share from "react-native-share";
import { DatabaseLogger, db } from "../common/database";
@@ -75,7 +76,7 @@ import { convertNoteToText } from "../utils/note-to-text";
import { NotesnookModule } from "../utils/notesnook-module";
import { sleep } from "../utils/time";
-import DatePickerComponent from "../components/date-picker";
+import { presentDateTimePicker } from "../components/date-time-picker";
export type ActionId =
| "select"
@@ -1227,26 +1228,26 @@ export const useActions = ({
return;
}
- presentDialog({
+ presentDateTimePicker({
context: "properties",
- component: (close) => (
- close?.()}
- onConfirm={async (date) => {
- close?.();
- await db.notes.setExpiryDate(date.getTime(), item.id);
- Navigation.queueRoutesForUpdate();
- eSendEvent(eMenuItemUpdate);
- ToastManager.show({
- message: strings.expiryDateSet(),
- type: "success",
- context: "local"
- });
+ mode: "date",
+ title: strings.setExpiry(),
+ description: strings.setExpiryDesc(),
+ confirmText: strings.setExpiry(),
+ date: dayjs().add(1, "week").toDate(),
+ minDate: dayjs().add(1, "day").toDate(),
+ onConfirm: async (date) => {
+ await db.notes.setExpiryDate(date.getTime(), item.id);
+ Navigation.queueRoutesForUpdate();
+ eSendEvent(eMenuItemUpdate);
+ ToastManager.show({
+ message: strings.expiryDateSet(),
+ type: "success",
+ context: "local"
+ });
- setItem((await db.notes.note(item.id)) as Item);
- }}
- />
- )
+ setItem((await db.notes.note(item.id)) as Item);
+ }
});
}
}
diff --git a/apps/mobile/app/screens/add-reminder/index.tsx b/apps/mobile/app/screens/add-reminder/index.tsx
index 3ef71452e..09ccd1199 100644
--- a/apps/mobile/app/screens/add-reminder/index.tsx
+++ b/apps/mobile/app/screens/add-reminder/index.tsx
@@ -16,12 +16,12 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-import { Note, Reminder } from "@notesnook/core";
import {
getFormattedDate,
useIsFeatureAvailable,
usePromise
} from "@notesnook/common";
+import { Note, Reminder } from "@notesnook/core";
import { strings } from "@notesnook/intl";
import { useThemeColors } from "@notesnook/theme";
import React, { useRef, useState } from "react";
@@ -32,12 +32,13 @@ import {
TextInput,
View
} from "react-native";
-import DateTimePickerModal from "react-native-modal-datetime-picker";
import { SafeAreaView } from "react-native-safe-area-context";
-import { Spacing, Radius } from "../../common/design/spacing";
import { db } from "../../common/database";
+import { Radius, Spacing } from "../../common/design/spacing";
+import { presentDateTimePicker } from "../../components/date-time-picker";
import { Dialog } from "../../components/dialog";
import { Header } from "../../components/header";
+import PaywallSheet from "../../components/sheets/paywall";
import AppIcon from "../../components/ui/AppIcon";
import { Button } from "../../components/ui/button";
import FormInput, {
@@ -54,7 +55,6 @@ import { eSendEvent, ToastManager } from "../../services/event-manager";
import Navigation, { NavigationProps } from "../../services/navigation";
import Notifications from "../../services/notifications";
import SettingsService from "../../services/settings";
-import PaywallSheet from "../../components/sheets/paywall";
import { useRelationStore } from "../../stores/use-relation-store";
import { useSettingStore } from "../../stores/use-setting-store";
import { eOnLoadNote } from "../../utils/events";
@@ -89,7 +89,7 @@ export default function AddReminder(props: NavigationProps<"AddReminder">) {
return false;
}
});
- const { colors, isDark } = useThemeColors();
+ const { colors } = useThemeColors();
const weekFormat = useSettingStore((state) => state.weekFormat);
const [reminderMode, setReminderMode] = useState(
reminder?.mode === "permanent" ? "once" : reminder?.mode || "once"
@@ -107,8 +107,6 @@ export default function AddReminder(props: NavigationProps<"AddReminder">) {
const [reminderNotificationMode, setReminderNotificatioMode] = useState<
Reminder["priority"]
>(reminder?.priority || SettingsService.get().reminderNotificationMode);
- const [isDatePickerVisible, setDatePickerVisibility] = useState(false);
- const [pickerMode, setPickerMode] = useState<"date" | "time">("date");
const [dateSelected, setDateSelected] = useState(!!reminder);
const [timeSelected, setTimeSelected] = useState(!!reminder);
const [frequencyExpanded, setFrequencyExpanded] = useState(true);
@@ -150,20 +148,10 @@ export default function AddReminder(props: NavigationProps<"AddReminder">) {
reminderMode === "repeat" &&
(recurringMode === "week" || recurringMode === "month");
- const openPicker = (mode: "date" | "time") => {
- setPickerMode(mode);
- setDatePickerVisibility(true);
- };
-
- const hidePicker = () => {
- setDatePickerVisibility(false);
- };
-
- const handleConfirm = (selected: Date) => {
- hidePicker();
+ const handleConfirm = (mode: "date" | "time", selected: Date) => {
setDateError(undefined);
const next = new Date(date);
- if (pickerMode === "time") {
+ if (mode === "time") {
next.setHours(selected.getHours(), selected.getMinutes(), 0, 0);
setTimeSelected(true);
} else {
@@ -177,6 +165,20 @@ export default function AddReminder(props: NavigationProps<"AddReminder">) {
setDate(next);
};
+ const openPicker = (mode: "date" | "time") => {
+ presentDateTimePicker({
+ mode,
+ date,
+ minDate:
+ mode === "date" && reminderMode === "once" ? new Date() : undefined,
+ onConfirm: (selected) => handleConfirm(mode, selected),
+ description:
+ mode === "date"
+ ? strings.selectReminderDate()
+ : strings.selectReminderTime()
+ });
+ };
+
const selectFrequency = (mode: FrequencyMode) => {
if (
mode !== "once" &&
@@ -600,19 +602,6 @@ export default function AddReminder(props: NavigationProps<"AddReminder">) {
) : null}
-
-
{/* More options */}
{
const reminderFeature = await isFeatureAvailable("activeReminders");
diff --git a/apps/mobile/fonts/MaterialCommunityIcons.ttf b/apps/mobile/fonts/MaterialCommunityIcons.ttf
index 3b6bdcfc3..b62f717d8 100644
Binary files a/apps/mobile/fonts/MaterialCommunityIcons.ttf and b/apps/mobile/fonts/MaterialCommunityIcons.ttf differ
diff --git a/apps/mobile/fonts/notesnook-icons.glyphmap.json b/apps/mobile/fonts/notesnook-icons.glyphmap.json
index a81731661..ec59d949a 100644
--- a/apps/mobile/fonts/notesnook-icons.glyphmap.json
+++ b/apps/mobile/fonts/notesnook-icons.glyphmap.json
@@ -1 +1 @@
-{"m":{"f":"notesnook-icons","u":1024,"z":1020,"s":59648,"h":"067582ef109a4e9ceb4cdaa84ba2da48c467d84d522a55d215111518d281f3aa"},"i":{"archive":[1024,[[59648,"#666666"]]],"arrow-back":[1024,[[59649,"rgba(255,255,255,0.7)"]]],"arrow-clockwise":[1024,[[59650,"#181818"]]],"arrow-counter-clockwise":[1024,[[59651,"#181818"]]],"arrow-fat-up":[1024,[[59652,"var(--fill-0, #181818)"]]],"arrow-right":[1024,[[59653,"#008836"]]],"arrow-square-out":[1024,[[59654,"#666666"]]],"arrow-u-up-left":[1024,[[59655,"var(--fill-0, #181818)"]]],"arrows-clockwise":[1024,[[59656,"var(--fill-0, #181818)"]]],"backspace":[1024,[[59657,"#181818"]]],"bag-simple":[1024,[[59658,"var(--fill-0, #181818)"]]],"bell-z":[1024,[[59659,"#181818"]]],"bell":[1024,[[59660,"#666666"]]],"bomb-off":[1024,[[59661,"currentColor"]]],"bomb":[1024,[[59662,"#666666"]]],"book-open":[1024,[[59663,"#666666"]]],"bookmark":[1024,[[59664,"#666666"]]],"box-empty":[1024,[[59665,"#B0B0B1"]]],"bug-droid":[1024,[[59666,"var(--fill-0, #181818)"]]],"calendar-check":[946,[[59667,"var(--fill-0, #181818)"]]],"calendar-day":[1024,[[59668,"#181818"]]],"calendar-dots":[946,[[59669,"var(--fill-0, #181818)"]]],"calendar":[1024,[[59670,"rgba(102,102,102,0.8)"]]],"chart-donut":[1024,[[59671,"#181818"]]],"chart-line-up":[1024,[[59672,"var(--fill-0, #181818)"]]],"chat":[1024,[[59673,"white"]]],"check-circle":[1024,[[59674,"#008836"]]],"check-small":[951,[[59675,"#008836"]]],"check-square":[1024,[[59676,"#181818"]]],"check":[1024,[[59677,"#008836"]]],"checkbox-intermediate":[1024,[[59678,"currentColor"]]],"checkbox":[1024,[[59679,"#008836"],[59680,"white"]]],"checks":[1024,[[59681,"#181818"]]],"chevron-down":[1024,[[59682,"#181818"]]],"chevron-right":[1024,[[59683,"#181818"]]],"chevron-up":[1024,[[59684,"#181818"]]],"clock-counter-clockwise":[1024,[[59685,"var(--fill-0, #181818)"]]],"clock":[1024,[[59686,"#181818"]]],"close":[1024,[[59687,"#666666"]]],"cloud-check":[1024,[[59688,"var(--fill-0, #181818)"]]],"cloud-upload":[1024,[[59689,"#858585"]]],"cloud":[1024,[[59690,"white"]]],"copy":[1024,[[59691,"#008836"]]],"crown-simple":[1024,[[59692,"#E0B637"]]],"dark-mode-outline":[1024,[[59693,"currentColor"]]],"delete-restore":[1024,[[59694,"currentColor"]]],"device-mobile-camera":[1024,[[59695,"var(--fill-0, #181818)"]]],"discord-logo":[1024,[[59696,"var(--fill-0, #181818)"]]],"dots-three":[1024,[[59697,"#202020"]]],"download-simple":[1024,[[59698,"var(--fill-0, #181818)"]]],"drive-file-move":[1088,[[59699,"#666666"]]],"duplicate":[1024,[[59700,"currentColor"]]],"edit-pencil":[1024,[[59701,"#181818"]]],"ellipse":[1024,[[59702,"#A6A6A6"]]],"envelope-simple":[1024,[[59703,"white"]]],"export":[1024,[[59704,"var(--fill-0, #181818)"]]],"eye-closed":[1024,[[59705,"white"]]],"eye-filled":[1024,[[59706,"#666666"]]],"eye-open":[1024,[[59707,"#666666"]]],"eye-slash":[1024,[[59708,"var(--fill-0, #181818)"]]],"file-cloud":[1024,[[59709,"#181818"]]],"file-dashed":[1024,[[59710,"var(--fill-0, #181818)"]]],"file-html":[1024,[[59711,"#181818"]]],"file-pdf":[1024,[[59712,"#181818"]]],"file-text":[1024,[[59713,"var(--fill-0, #181818)"]]],"file":[1024,[[59714,"white"]]],"fingerprint-simple":[1024,[[59715,"#181818"]]],"folder":[1024,[[59716,"#181818"]]],"funnel":[1024,[[59717,"#666666"]]],"gift":[1024,[[59718,"#181818"]]],"git-pull-request":[1024,[[59719,"var(--fill-0, #181818)"]]],"github-logo":[1024,[[59720,"var(--fill-0, #181818)"]]],"hard-drives":[1024,[[59721,"var(--fill-0, #181818)"]]],"home":[1024,[[59722,"#181818"]]],"house":[1024,[[59723,"#6F6F6F"]]],"identifier":[1024,[[59724,"currentColor"]]],"image-outline":[1024,[[59725,"white"]]],"image":[1024,[[59726,"#181818"]]],"key":[1024,[[59727,"var(--fill-0, #181818)"]]],"link-alt":[1024,[[59728,"#666666"]]],"link-simple":[1024,[[59729,"white"]]],"link":[560,[[59730,"#666666"]]],"list":[2190,[[59731,"#181818"]]],"lock-simple":[1024,[[59732,"white"]]],"lock":[1024,[[59733,"#181818"]]],"markdown":[1024,[[59734,"#181818"]]],"mastodon-logo":[1024,[[59735,"var(--fill-0, #181818)"]]],"menu":[1024,[[59736,"#181818"]]],"message-badge-outline":[1024,[[59737,"currentColor"]]],"minus":[1024,[[59738,"#181818"]]],"mode-edit":[1024,[[59739,"#181818"]]],"moon":[1024,[[59740,"var(--fill-0, #181818)"]]],"music-notes":[1024,[[59741,"#181818"]]],"network":[1024,[[59742,"var(--fill-0, #181818)"]]],"note":[1024,[[59743,"#181818"]]],"notification":[1024,[[59744,"var(--fill-0, #181818)"]]],"numpad":[1024,[[59745,"#181818"]]],"nut":[1024,[[59746,"#181818"]]],"paint-brush-household":[1024,[[59747,"#181818"]]],"paint-roller":[1024,[[59748,"var(--fill-0, #181818)"]]],"palette":[1024,[[59749,"#666666"]]],"paperclip":[1024,[[59750,"#666666"]]],"pause":[1024,[[59751,"var(--fill-0, #181818)"]]],"pencil-ruler":[1024,[[59752,"#181818"]]],"pencil-simple-line":[1024,[[59753,"var(--fill-0, #181818)"]]],"pencil-simple-slash":[1024,[[59754,"#858585"]]],"pencil-simple":[1024,[[59755,"#181818"]]],"pin":[939,[[59756,"#666666"]]],"plus":[1024,[[59757,"#181818"]]],"radio-button":[1024,[[59758,"#008836"]]],"recovery-key-cloud-arrow-down":[1024,[[59759,"var(--fill-0, #181818)"]]],"recovery-key-copy":[1024,[[59760,"var(--stroke-0, #008836)"]]],"recovery-key-file":[1024,[[59761,"var(--fill-0, #181818)"]]],"recovery-key-key":[1024,[[59762,"var(--fill-0, #181818)"]]],"recovery-key-qr-code":[1024,[[59763,"var(--fill-0, #181818)"]]],"recovery-key-shield-check":[1024,[[59764,"var(--fill-0, #008836)"]]],"search":[1024,[[59765,"#181818"]]],"share":[1024,[[59766,"#666666"]]],"shield-check":[1024,[[59767,"#181818"]]],"shield-plus":[1024,[[59768,"#181818"]]],"shield":[1024,[[59769,"var(--fill-0, #181818)"]]],"shopping-mode":[1024,[[59770,"#666666"]]],"sliders-horizontal":[1024,[[59771,"var(--fill-0, #181818)"]]],"sliders":[1024,[[59772,"#181818"]]],"sort-ascending":[1024,[[59773,"#666666"]]],"sort-descending":[1024,[[59774,"currentColor"]]],"speaker-high":[1024,[[59775,"#181818"]]],"spellcheck":[1067,[[59776,"currentColor"]]],"square-out":[1024,[[59777,"#181818"]]],"squares-four":[1024,[[59778,"var(--fill-0, #181818)"]]],"star-filled":[1024,[[59779,"#E5C131"]]],"star":[1024,[[59780,"#666666"]]],"sun":[1024,[[59781,"#666666"]]],"swatches":[1024,[[59782,"var(--fill-0, #181818)"]]],"sync-disabled":[911,[[59783,"#858585"]]],"table":[1024,[[59784,"#181818"]]],"telegram-logo":[1024,[[59785,"var(--fill-0, #181818)"]]],"text-aa":[1024,[[59786,"#181818"]]],"toggle-off":[1725,[[59787,"#DADADA"]]],"toggle-on":[1725,[[59788,"#008836"]]],"trash-alt":[1024,[[59789,"#FB2C36"]]],"trash":[1024,[[59790,"#666666"]]],"tray-arrow-down":[1024,[[59791,"#181818"]]],"upload":[1024,[[59792,"#181818"]]],"user-circle-minus":[1024,[[59793,"var(--fill-0, #FF242E)"]]],"user-sheet-docs":[1024,[[59794,"var(--fill-0, #181818)"]]],"user-sheet-logout":[1024,[[59795,"var(--fill-0, #FB2C36)"]]],"user-sheet-settings":[1024,[[59796,"var(--fill-0, #181818)"]]],"user-sheet-support":[1024,[[59797,"var(--fill-0, #181818)"]]],"user-sheet-sync":[1024,[[59798,"var(--fill-0, #181818)"]]],"user":[1024,[[59799,"var(--fill-0, #181818)"]]],"users-three":[1024,[[59800,"var(--fill-0, #181818)"]]],"video-camera":[1024,[[59801,"#181818"]]],"view-list":[1024,[[59802,"#181818"]]],"warning-circle":[1024,[[59803,"#BB3431"]]],"warning":[1024,[[59804,"#FF242E"]]],"wifi-slash":[1024,[[59805,"var(--fill-0, #181818)"]]],"wrench":[1024,[[59806,"#181818"]]],"x-logo":[1024,[[59807,"var(--fill-0, #181818)"]]]}}
\ No newline at end of file
+{"m":{"f":"notesnook-icons","u":1024,"z":1020,"s":59648,"h":"cafbd686797638d450feef4042053fcc050296d1770314c8adc212e5c3382240"},"i":{"archive":[1024,[[59648,"#666666"]]],"arrow-back":[1024,[[59649,"rgba(255,255,255,0.7)"]]],"arrow-clockwise":[1024,[[59650,"#181818"]]],"arrow-counter-clockwise":[1024,[[59651,"#181818"]]],"arrow-fat-up":[1024,[[59652,"var(--fill-0, #181818)"]]],"arrow-right":[1024,[[59653,"#008836"]]],"arrow-square-out":[1024,[[59654,"#666666"]]],"arrow-u-up-left":[1024,[[59655,"var(--fill-0, #181818)"]]],"arrows-clockwise":[1024,[[59656,"var(--fill-0, #181818)"]]],"backspace":[1024,[[59657,"#181818"]]],"bag-simple":[1024,[[59658,"var(--fill-0, #181818)"]]],"bell-z":[1024,[[59659,"#181818"]]],"bell":[1024,[[59660,"#666666"]]],"bomb-off":[1024,[[59661,"currentColor"]]],"bomb":[1024,[[59662,"#666666"]]],"book-open":[1024,[[59663,"#666666"]]],"bookmark":[1024,[[59664,"#666666"]]],"box-empty":[1024,[[59665,"#B0B0B1"]]],"bug-droid":[1024,[[59666,"var(--fill-0, #181818)"]]],"calendar-check":[946,[[59667,"var(--fill-0, #181818)"]]],"calendar-day":[1024,[[59668,"#181818"]]],"calendar-dots":[946,[[59669,"var(--fill-0, #181818)"]]],"calendar":[1024,[[59670,"rgba(102,102,102,0.8)"]]],"chart-donut":[1024,[[59671,"#181818"]]],"chart-line-up":[1024,[[59672,"var(--fill-0, #181818)"]]],"chat":[1024,[[59673,"white"]]],"check-circle":[1024,[[59674,"#008836"]]],"check-small":[951,[[59675,"#008836"]]],"check-square":[1024,[[59676,"#181818"]]],"check":[1024,[[59677,"#008836"]]],"checkbox-intermediate":[1024,[[59678,"currentColor"]]],"checkbox":[1024,[[59679,"#008836"],[59680,"white"]]],"checks":[1024,[[59681,"#181818"]]],"chevron-down":[1024,[[59682,"#181818"]]],"chevron-left":[1024,[[59683,"currentColor"]]],"chevron-right":[1024,[[59684,"#181818"]]],"chevron-up":[1024,[[59685,"#181818"]]],"clock-counter-clockwise":[1024,[[59686,"var(--fill-0, #181818)"]]],"clock":[1024,[[59687,"#181818"]]],"close":[1024,[[59688,"#666666"]]],"cloud-check":[1024,[[59689,"var(--fill-0, #181818)"]]],"cloud-upload":[1024,[[59690,"#858585"]]],"cloud":[1024,[[59691,"white"]]],"copy":[1024,[[59692,"#008836"]]],"crown-simple":[1024,[[59693,"#E0B637"]]],"dark-mode-outline":[1024,[[59694,"currentColor"]]],"delete-restore":[1024,[[59695,"currentColor"]]],"device-mobile-camera":[1024,[[59696,"var(--fill-0, #181818)"]]],"discord-logo":[1024,[[59697,"var(--fill-0, #181818)"]]],"dots-three":[1024,[[59698,"#202020"]]],"download-simple":[1024,[[59699,"var(--fill-0, #181818)"]]],"drive-file-move":[1088,[[59700,"#666666"]]],"duplicate":[1024,[[59701,"currentColor"]]],"edit-pencil":[1024,[[59702,"#181818"]]],"ellipse":[1024,[[59703,"#A6A6A6"]]],"envelope-simple":[1024,[[59704,"white"]]],"export":[1024,[[59705,"var(--fill-0, #181818)"]]],"eye-closed":[1024,[[59706,"white"]]],"eye-filled":[1024,[[59707,"#666666"]]],"eye-open":[1024,[[59708,"#666666"]]],"eye-slash":[1024,[[59709,"var(--fill-0, #181818)"]]],"file-cloud":[1024,[[59710,"#181818"]]],"file-dashed":[1024,[[59711,"var(--fill-0, #181818)"]]],"file-html":[1024,[[59712,"#181818"]]],"file-pdf":[1024,[[59713,"#181818"]]],"file-text":[1024,[[59714,"var(--fill-0, #181818)"]]],"file":[1024,[[59715,"white"]]],"fingerprint-simple":[1024,[[59716,"#181818"]]],"folder":[1024,[[59717,"#181818"]]],"funnel":[1024,[[59718,"#666666"]]],"gift":[1024,[[59719,"#181818"]]],"git-pull-request":[1024,[[59720,"var(--fill-0, #181818)"]]],"github-logo":[1024,[[59721,"var(--fill-0, #181818)"]]],"hard-drives":[1024,[[59722,"var(--fill-0, #181818)"]]],"home":[1024,[[59723,"#181818"]]],"house":[1024,[[59724,"#6F6F6F"]]],"identifier":[1024,[[59725,"currentColor"]]],"image-outline":[1024,[[59726,"white"]]],"image":[1024,[[59727,"#181818"]]],"key":[1024,[[59728,"var(--fill-0, #181818)"]]],"link-alt":[1024,[[59729,"#666666"]]],"link-simple":[1024,[[59730,"white"]]],"link":[560,[[59731,"#666666"]]],"list":[2190,[[59732,"#181818"]]],"lock-simple":[1024,[[59733,"white"]]],"lock":[1024,[[59734,"#181818"]]],"markdown":[1024,[[59735,"#181818"]]],"mastodon-logo":[1024,[[59736,"var(--fill-0, #181818)"]]],"menu":[1024,[[59737,"#181818"]]],"message-badge-outline":[1024,[[59738,"currentColor"]]],"minus":[1024,[[59739,"#181818"]]],"mode-edit":[1024,[[59740,"#181818"]]],"moon":[1024,[[59741,"var(--fill-0, #181818)"]]],"music-notes":[1024,[[59742,"#181818"]]],"network":[1024,[[59743,"var(--fill-0, #181818)"]]],"note":[1024,[[59744,"#181818"]]],"notification":[1024,[[59745,"var(--fill-0, #181818)"]]],"numpad":[1024,[[59746,"#181818"]]],"nut":[1024,[[59747,"#181818"]]],"paint-brush-household":[1024,[[59748,"#181818"]]],"paint-roller":[1024,[[59749,"var(--fill-0, #181818)"]]],"palette":[1024,[[59750,"#666666"]]],"paperclip":[1024,[[59751,"#666666"]]],"pause":[1024,[[59752,"var(--fill-0, #181818)"]]],"pencil-ruler":[1024,[[59753,"#181818"]]],"pencil-simple-line":[1024,[[59754,"var(--fill-0, #181818)"]]],"pencil-simple-slash":[1024,[[59755,"#858585"]]],"pencil-simple":[1024,[[59756,"#181818"]]],"pin":[939,[[59757,"#666666"]]],"plus":[1024,[[59758,"#181818"]]],"radio-button":[1024,[[59759,"#008836"]]],"recovery-key-cloud-arrow-down":[1024,[[59760,"var(--fill-0, #181818)"]]],"recovery-key-copy":[1024,[[59761,"var(--stroke-0, #008836)"]]],"recovery-key-file":[1024,[[59762,"var(--fill-0, #181818)"]]],"recovery-key-key":[1024,[[59763,"var(--fill-0, #181818)"]]],"recovery-key-qr-code":[1024,[[59764,"var(--fill-0, #181818)"]]],"recovery-key-shield-check":[1024,[[59765,"var(--fill-0, #008836)"]]],"search":[1024,[[59766,"#181818"]]],"share":[1024,[[59767,"#666666"]]],"shield-check":[1024,[[59768,"#181818"]]],"shield-plus":[1024,[[59769,"#181818"]]],"shield":[1024,[[59770,"var(--fill-0, #181818)"]]],"shopping-mode":[1024,[[59771,"#666666"]]],"sliders-horizontal":[1024,[[59772,"var(--fill-0, #181818)"]]],"sliders":[1024,[[59773,"#181818"]]],"sort-ascending":[1024,[[59774,"#666666"]]],"sort-descending":[1024,[[59775,"currentColor"]]],"speaker-high":[1024,[[59776,"#181818"]]],"spellcheck":[1067,[[59777,"currentColor"]]],"square-out":[1024,[[59778,"#181818"]]],"squares-four":[1024,[[59779,"var(--fill-0, #181818)"]]],"star-filled":[1024,[[59780,"#E5C131"]]],"star":[1024,[[59781,"#666666"]]],"sun":[1024,[[59782,"#666666"]]],"swatches":[1024,[[59783,"var(--fill-0, #181818)"]]],"sync-disabled":[911,[[59784,"#858585"]]],"table":[1024,[[59785,"#181818"]]],"telegram-logo":[1024,[[59786,"var(--fill-0, #181818)"]]],"text-aa":[1024,[[59787,"#181818"]]],"toggle-off":[1725,[[59788,"#DADADA"]]],"toggle-on":[1725,[[59789,"#008836"]]],"trash-alt":[1024,[[59790,"#FB2C36"]]],"trash":[1024,[[59791,"#666666"]]],"tray-arrow-down":[1024,[[59792,"#181818"]]],"upload":[1024,[[59793,"#181818"]]],"user-circle-minus":[1024,[[59794,"var(--fill-0, #FF242E)"]]],"user-sheet-docs":[1024,[[59795,"var(--fill-0, #181818)"]]],"user-sheet-logout":[1024,[[59796,"var(--fill-0, #FB2C36)"]]],"user-sheet-settings":[1024,[[59797,"var(--fill-0, #181818)"]]],"user-sheet-support":[1024,[[59798,"var(--fill-0, #181818)"]]],"user-sheet-sync":[1024,[[59799,"var(--fill-0, #181818)"]]],"user":[1024,[[59800,"var(--fill-0, #181818)"]]],"users-three":[1024,[[59801,"var(--fill-0, #181818)"]]],"video-camera":[1024,[[59802,"#181818"]]],"view-list":[1024,[[59803,"#181818"]]],"warning-circle":[1024,[[59804,"#BB3431"]]],"warning":[1024,[[59805,"#FF242E"]]],"wifi-slash":[1024,[[59806,"var(--fill-0, #181818)"]]],"wrench":[1024,[[59807,"#181818"]]],"x-logo":[1024,[[59808,"var(--fill-0, #181818)"]]]}}
\ No newline at end of file
diff --git a/apps/mobile/fonts/notesnook-icons.ttf b/apps/mobile/fonts/notesnook-icons.ttf
index ef3e9b60c..28e152d30 100644
Binary files a/apps/mobile/fonts/notesnook-icons.ttf and b/apps/mobile/fonts/notesnook-icons.ttf differ
diff --git a/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock
index a6cfcc4dc..622f5d99f 100644
--- a/apps/mobile/ios/Podfile.lock
+++ b/apps/mobile/ios/Podfile.lock
@@ -1946,34 +1946,6 @@ PODS:
- react-native-config/App (= 1.5.7)
- react-native-config/App (1.5.7):
- React-Core
- - react-native-date-picker (5.0.13):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - RCTRequired
- - RCTTypeSafety
- - React-Core
- - React-debug
- - React-Fabric
- - React-featureflags
- - React-graphics
- - React-ImageManager
- - React-jsi
- - React-NativeModulesApple
- - React-RCTFabric
- - React-renderercss
- - React-rendererdebug
- - React-utils
- - ReactCodegen
- - ReactCommon/turbomodule/bridging
- - ReactCommon/turbomodule/core
- - SocketRocket
- - Yoga
- react-native-document-picker (11.0.3):
- boost
- DoubleConversion
@@ -3066,34 +3038,6 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - RNDateTimePicker (8.4.5):
- - boost
- - DoubleConversion
- - fast_float
- - fmt
- - glog
- - hermes-engine
- - RCT-Folly
- - RCT-Folly/Fabric
- - RCTRequired
- - RCTTypeSafety
- - React-Core
- - React-debug
- - React-Fabric
- - React-featureflags
- - React-graphics
- - React-ImageManager
- - React-jsi
- - React-NativeModulesApple
- - React-RCTFabric
- - React-renderercss
- - React-rendererdebug
- - React-utils
- - ReactCodegen
- - ReactCommon/turbomodule/bridging
- - ReactCommon/turbomodule/core
- - SocketRocket
- - Yoga
- RNDeviceInfo (14.1.1):
- React-Core
- RNExitApp (1.1.0):
@@ -3608,7 +3552,6 @@ DEPENDENCIES:
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
- "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)"
- react-native-config (from `../node_modules/react-native-config`)
- - react-native-date-picker (from `../node_modules/react-native-date-picker`)
- "react-native-document-picker (from `../node_modules/@react-native-documents/picker`)"
- react-native-fast-openpgp (from `../node_modules/react-native-fast-openpgp`)
- "react-native-fingerprint-scanner (from `../node_modules/@ammarahmed/react-native-fingerprint-scanner`)"
@@ -3670,7 +3613,6 @@ DEPENDENCIES:
- "RNCCheckbox (from `../node_modules/@react-native-community/checkbox`)"
- "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)"
- "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)"
- - "RNDateTimePicker (from `../node_modules/@react-native-community/datetimepicker`)"
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNExitApp (from `../node_modules/react-native-exit-app`)
- RNFileViewer (from `../node_modules/react-native-file-viewer`)
@@ -3808,8 +3750,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/@react-native-camera-roll/camera-roll"
react-native-config:
:path: "../node_modules/react-native-config"
- react-native-date-picker:
- :path: "../node_modules/react-native-date-picker"
react-native-document-picker:
:path: "../node_modules/@react-native-documents/picker"
react-native-fast-openpgp:
@@ -3932,8 +3872,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/@react-native-clipboard/clipboard"
RNCMaskedView:
:path: "../node_modules/@react-native-masked-view/masked-view"
- RNDateTimePicker:
- :path: "../node_modules/@react-native-community/datetimepicker"
RNDeviceInfo:
:path: "../node_modules/react-native-device-info"
RNExitApp:
@@ -4036,7 +3974,6 @@ SPEC CHECKSUMS:
react-native-blob-util: 7946b7e13acf0da5e849dc2f73fcfebe1d981699
react-native-cameraroll: bb98380ee21115d5fe1ae0f8b80c86e044613746
react-native-config: 963b5efabc864cf69412e54b5de49b6a23e4af03
- react-native-date-picker: 4f4f40f6e65798038bb4b1bff47890c2be69c2e6
react-native-document-picker: d624d3d9bd9311da87f6f7b64aa44f69927d8543
react-native-fast-openpgp: 42a99ddfafbd132457cb7964062431fbaf666484
react-native-fingerprint-scanner: d5e143a361f3f01858e9c45141ddcabc4fd57055
@@ -4098,7 +4035,6 @@ SPEC CHECKSUMS:
RNCCheckbox: 33b44487ca8008394ce658cc32b26eab04f426ef
RNCClipboard: 4b58c780f63676367640f23c8e114e9bd0cf86ac
RNCMaskedView: 5ef8c95cbab95334a32763b72896a7b7d07e6299
- RNDateTimePicker: 113004837aad399a525cd391ac70b7951219ff2f
RNDeviceInfo: bcce8752b5043a623fe3c26789679b473f705d3c
RNExitApp: 890cce29b4e01372c84b3b775f9a63f90d77de19
RNFileViewer: 4b5d83358214347e4ab2d4ca8d5c1c90d869e251
diff --git a/apps/mobile/ios/nanoicons-fonts/notesnook-icons.ttf b/apps/mobile/ios/nanoicons-fonts/notesnook-icons.ttf
index ef3e9b60c..28e152d30 100644
Binary files a/apps/mobile/ios/nanoicons-fonts/notesnook-icons.ttf and b/apps/mobile/ios/nanoicons-fonts/notesnook-icons.ttf differ
diff --git a/apps/mobile/package-lock.json b/apps/mobile/package-lock.json
index 1099de515..80f6a531f 100644
--- a/apps/mobile/package-lock.json
+++ b/apps/mobile/package-lock.json
@@ -40,7 +40,6 @@
"@react-native-camera-roll/camera-roll": "^7.10.2",
"@react-native-clipboard/clipboard": "^1.16.3",
"@react-native-community/checkbox": "^0.5.20",
- "@react-native-community/datetimepicker": "^8.4.5",
"@react-native-community/netinfo": "^11.4.1",
"@react-native-community/toolbar-android": "^0.2.1",
"@react-native-documents/picker": "^11.0.3",
@@ -81,7 +80,6 @@
"react-native-bootsplash": "6.3.11",
"react-native-check-version": "^1.3.0",
"react-native-config": "github:protikbiswas100/react-native-config#fabric-windows-implementation",
- "react-native-date-picker": "5.0.13",
"react-native-device-info": "^14.1.1",
"react-native-drax": "^0.10.2",
"react-native-exit-app": "github:ammarahm-ed/react-native-exit-app",
@@ -100,7 +98,6 @@
"react-native-keychain": "4.0.5",
"react-native-material-menu": "^2.0.0",
"react-native-mmkv-storage": "^12.0.1",
- "react-native-modal-datetime-picker": "14.0.0",
"react-native-nano-icons": "^0.1.8",
"react-native-navigation-bar-color": "2.0.2",
"react-native-nitro-cloud-uploader": "^1.0.9",
@@ -123,6 +120,7 @@
"react-native-swiper-flatlist": "3.2.2",
"react-native-theme-switch-animation": "^0.6.0",
"react-native-tooltips": "^1.0.3",
+ "react-native-ui-datepicker": "^3.3.0",
"react-native-url-polyfill": "^2.0.0",
"react-native-vector-icons": "10.3.0",
"react-native-view-shot": "^4.0.3",
@@ -4814,29 +4812,6 @@
"node": ">=10"
}
},
- "node_modules/@react-native-community/datetimepicker": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@react-native-community/datetimepicker/-/datetimepicker-8.4.5.tgz",
- "integrity": "sha512-vvVOJAHjU8TFBzTUjQzANCL6C3pZSE2zjfutCATk790uz7ASEc2tOBD+EIG4BTelWtP2G9jqvXp2L7XGdhEBRg==",
- "license": "MIT",
- "dependencies": {
- "invariant": "^2.2.4"
- },
- "peerDependencies": {
- "expo": ">=52.0.0",
- "react": "*",
- "react-native": "*",
- "react-native-windows": "*"
- },
- "peerDependenciesMeta": {
- "expo": {
- "optional": true
- },
- "react-native-windows": {
- "optional": true
- }
- }
- },
"node_modules/@react-native-community/netinfo": {
"version": "11.4.1",
"resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.4.1.tgz",
@@ -8031,6 +8006,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/clsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@@ -11372,6 +11356,12 @@
"node": ">=10"
}
},
+ "node_modules/jalali-plugin-dayjs": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/jalali-plugin-dayjs/-/jalali-plugin-dayjs-1.1.4.tgz",
+ "integrity": "sha512-d62QGMTufGQ1TSov4a85gBU58PA8aL6wVQs9BnC3+d/VA+v4Sq0OqM3o6RoY+/VZjliYJroGIPwlSVf7uLnZ3w==",
+ "license": "MIT"
+ },
"node_modules/jest": {
"version": "29.7.0",
"resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz",
@@ -16098,16 +16088,6 @@
}
}
},
- "node_modules/react-native-date-picker": {
- "version": "5.0.13",
- "resolved": "https://registry.npmjs.org/react-native-date-picker/-/react-native-date-picker-5.0.13.tgz",
- "integrity": "sha512-qCLUODZVsJetO5zuoXjw1D39K527XWqBG8sOfhWdHyPzf13h8RXR1/RSKd1N0fdRDi5GdyizYmB0lPAK12/hbw==",
- "license": "MIT",
- "peerDependencies": {
- "react": ">= 17.0.1",
- "react-native": ">= 0.64.3"
- }
- },
"node_modules/react-native-device-info": {
"version": "14.1.1",
"resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-14.1.1.tgz",
@@ -16334,19 +16314,6 @@
"react-native": "*"
}
},
- "node_modules/react-native-modal-datetime-picker": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/react-native-modal-datetime-picker/-/react-native-modal-datetime-picker-14.0.0.tgz",
- "integrity": "sha512-orI0BMgX9uooSZWYIILmMaZXqi8Ebr0vqsLUFL03zORpv9NvkBlLMQ8dZVdDxWUc1Lbx/N5DJskC16AOypPy8Q==",
- "license": "MIT",
- "dependencies": {
- "prop-types": "^15.7.2"
- },
- "peerDependencies": {
- "@react-native-community/datetimepicker": ">=3.0.0",
- "react-native": ">=0.65.0"
- }
- },
"node_modules/react-native-nano-icons": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/react-native-nano-icons/-/react-native-nano-icons-0.1.8.tgz",
@@ -16849,6 +16816,26 @@
"integrity": "sha512-f2XEL23FlPMpIq11t6EIYGf1sl1FoWCwQRFIvQB9+6v5Jyod1O61yoKy2lgg91Egz531Szmqac0wTXuxVC9vjw==",
"license": "Apache License"
},
+ "node_modules/react-native-ui-datepicker": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/react-native-ui-datepicker/-/react-native-ui-datepicker-3.3.0.tgz",
+ "integrity": "sha512-TdiOADwpQQDEtD6RxzPFfu9iZlMrQkmIMlqYNXE9zigyTlG8kstnSLSCS/lJ+fS5/L4LGU/26xp0oVuYMzDzCg==",
+ "license": "MIT",
+ "dependencies": {
+ "clsx": "^2.1.1",
+ "dayjs": "^1.11.13",
+ "jalali-plugin-dayjs": "^1.1.4",
+ "lodash": "^4.17.21",
+ "tailwind-merge": "^3.0.1"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-url-polyfill": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/react-native-url-polyfill/-/react-native-url-polyfill-2.0.0.tgz",
@@ -18888,6 +18875,16 @@
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"license": "MIT"
},
+ "node_modules/tailwind-merge": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz",
+ "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
"node_modules/tapable": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index d7511ac16..92c675190 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -58,7 +58,6 @@
"@react-native-camera-roll/camera-roll": "^7.10.2",
"@react-native-clipboard/clipboard": "^1.16.3",
"@react-native-community/checkbox": "^0.5.20",
- "@react-native-community/datetimepicker": "^8.4.5",
"@react-native-community/netinfo": "^11.4.1",
"@react-native-community/toolbar-android": "^0.2.1",
"@react-native-documents/picker": "^11.0.3",
@@ -99,7 +98,6 @@
"react-native-bootsplash": "6.3.11",
"react-native-check-version": "^1.3.0",
"react-native-config": "github:protikbiswas100/react-native-config#fabric-windows-implementation",
- "react-native-date-picker": "5.0.13",
"react-native-device-info": "^14.1.1",
"react-native-drax": "^0.10.2",
"react-native-exit-app": "github:ammarahm-ed/react-native-exit-app",
@@ -118,7 +116,6 @@
"react-native-keychain": "4.0.5",
"react-native-material-menu": "^2.0.0",
"react-native-mmkv-storage": "^12.0.1",
- "react-native-modal-datetime-picker": "14.0.0",
"react-native-nano-icons": "^0.1.8",
"react-native-navigation-bar-color": "2.0.2",
"react-native-nitro-cloud-uploader": "^1.0.9",
@@ -141,6 +138,7 @@
"react-native-swiper-flatlist": "3.2.2",
"react-native-theme-switch-animation": "^0.6.0",
"react-native-tooltips": "^1.0.3",
+ "react-native-ui-datepicker": "^3.3.0",
"react-native-url-polyfill": "^2.0.0",
"react-native-vector-icons": "10.3.0",
"react-native-view-shot": "^4.0.3",
diff --git a/apps/mobile/patches/react-native-ui-datepicker+3.3.0.patch b/apps/mobile/patches/react-native-ui-datepicker+3.3.0.patch
new file mode 100644
index 000000000..88098dddb
--- /dev/null
+++ b/apps/mobile/patches/react-native-ui-datepicker+3.3.0.patch
@@ -0,0 +1,166 @@
+diff --git a/node_modules/react-native-ui-datepicker/lib/commonjs/components/time-picker/wheel-picker/wheel-picker.js b/node_modules/react-native-ui-datepicker/lib/commonjs/components/time-picker/wheel-picker/wheel-picker.js
+index 0140365..abecca4 100644
+--- a/node_modules/react-native-ui-datepicker/lib/commonjs/components/time-picker/wheel-picker/wheel-picker.js
++++ b/node_modules/react-native-ui-datepicker/lib/commonjs/components/time-picker/wheel-picker/wheel-picker.js
+@@ -32,6 +32,7 @@ const WheelPicker = ({
+ flatListProps = {}
+ }) => {
+ const momentumStarted = (0, _react.useRef)(false);
++ const isUserScrolling = (0, _react.useRef)(false);
+ const selectedIndex = options.findIndex(item => item.value === value);
+ const flatListRef = (0, _react.useRef)(null);
+ const [scrollY] = (0, _react.useState)(new _reactNative.Animated.Value(selectedIndex * itemHeight));
+@@ -58,11 +59,21 @@ const WheelPicker = ({
+ onChange(((_options$index = options[index]) === null || _options$index === void 0 ? void 0 : _options$index.value) || 0);
+ }
+ };
++ const handleScrollBeginDrag = () => {
++ isUserScrolling.current = true;
++ };
+ const handleMomentumScrollBegin = () => {
+ momentumStarted.current = true;
+ };
+ const handleMomentumScrollEnd = event => {
+ momentumStarted.current = false;
++ // Ignore momentum that wasn't started by a user drag (e.g. the FlatList
++ // settling onto initialScrollIndex on mount, or the scrollToIndex sync
++ // effect) — otherwise it can spuriously reset the value.
++ if (!isUserScrolling.current) {
++ return;
++ }
++ isUserScrolling.current = false;
+ handleScrollEnd(event);
+ };
+ const handleScrollEndDrag = event => {
+@@ -75,6 +86,7 @@ const WheelPicker = ({
+ // If momentum scroll hasn't started within the timeout,
+ // then it was a slow scroll that won't trigger momentum
+ if (!momentumStarted.current && offsetY !== undefined) {
++ isUserScrolling.current = false;
+ // Create a synthetic event with just the data we need
+ const syntheticEvent = {
+ nativeEvent: {
+@@ -130,6 +142,7 @@ const WheelPicker = ({
+ }], {
+ useNativeDriver: true
+ }),
++ onScrollBeginDrag: handleScrollBeginDrag,
+ onScrollEndDrag: handleScrollEndDrag,
+ onMomentumScrollBegin: handleMomentumScrollBegin,
+ onMomentumScrollEnd: handleMomentumScrollEnd,
+diff --git a/node_modules/react-native-ui-datepicker/lib/module/components/time-picker/wheel-picker/wheel-picker.js b/node_modules/react-native-ui-datepicker/lib/module/components/time-picker/wheel-picker/wheel-picker.js
+index 1c11309..8bd4ee8 100644
+--- a/node_modules/react-native-ui-datepicker/lib/module/components/time-picker/wheel-picker/wheel-picker.js
++++ b/node_modules/react-native-ui-datepicker/lib/module/components/time-picker/wheel-picker/wheel-picker.js
+@@ -23,6 +23,7 @@ const WheelPicker = ({
+ flatListProps = {}
+ }) => {
+ const momentumStarted = useRef(false);
++ const isUserScrolling = useRef(false);
+ const selectedIndex = options.findIndex(item => item.value === value);
+ const flatListRef = useRef(null);
+ const [scrollY] = useState(new Animated.Value(selectedIndex * itemHeight));
+@@ -49,11 +50,21 @@ const WheelPicker = ({
+ onChange(((_options$index = options[index]) === null || _options$index === void 0 ? void 0 : _options$index.value) || 0);
+ }
+ };
++ const handleScrollBeginDrag = () => {
++ isUserScrolling.current = true;
++ };
+ const handleMomentumScrollBegin = () => {
+ momentumStarted.current = true;
+ };
+ const handleMomentumScrollEnd = event => {
+ momentumStarted.current = false;
++ // Ignore momentum that wasn't started by a user drag (e.g. the FlatList
++ // settling onto initialScrollIndex on mount, or the scrollToIndex sync
++ // effect) — otherwise it can spuriously reset the value.
++ if (!isUserScrolling.current) {
++ return;
++ }
++ isUserScrolling.current = false;
+ handleScrollEnd(event);
+ };
+ const handleScrollEndDrag = event => {
+@@ -66,6 +77,7 @@ const WheelPicker = ({
+ // If momentum scroll hasn't started within the timeout,
+ // then it was a slow scroll that won't trigger momentum
+ if (!momentumStarted.current && offsetY !== undefined) {
++ isUserScrolling.current = false;
+ // Create a synthetic event with just the data we need
+ const syntheticEvent = {
+ nativeEvent: {
+@@ -121,6 +133,7 @@ const WheelPicker = ({
+ }], {
+ useNativeDriver: true
+ }),
++ onScrollBeginDrag: handleScrollBeginDrag,
+ onScrollEndDrag: handleScrollEndDrag,
+ onMomentumScrollBegin: handleMomentumScrollBegin,
+ onMomentumScrollEnd: handleMomentumScrollEnd,
+diff --git a/node_modules/react-native-ui-datepicker/src/components/time-picker/wheel-picker/wheel-picker.tsx b/node_modules/react-native-ui-datepicker/src/components/time-picker/wheel-picker/wheel-picker.tsx
+index a694882..a199982 100644
+--- a/node_modules/react-native-ui-datepicker/src/components/time-picker/wheel-picker/wheel-picker.tsx
++++ b/node_modules/react-native-ui-datepicker/src/components/time-picker/wheel-picker/wheel-picker.tsx
+@@ -56,6 +56,13 @@ const WheelPicker: React.FC = ({
+ flatListProps = {},
+ }) => {
+ const momentumStarted = useRef(false);
++ // Tracks whether the current scroll was initiated by the user dragging.
++ // Programmatic scrolls (initialScrollIndex settle on mount, and the
++ // scrollToIndex sync effect below) never fire onScrollBeginDrag, so this
++ // flag lets us ignore the scroll-end events they emit — those transient
++ // events can report contentOffset.y ≈ 0 and would otherwise snap the value
++ // to 0 (e.g. resetting the time to 00:00 when switching to the time view).
++ const isUserScrolling = useRef(false);
+ const selectedIndex = options.findIndex((item) => item.value === value);
+
+ const flatListRef = useRef(null);
+@@ -98,6 +105,10 @@ const WheelPicker: React.FC = ({
+ }
+ };
+
++ const handleScrollBeginDrag = () => {
++ isUserScrolling.current = true;
++ };
++
+ const handleMomentumScrollBegin = () => {
+ momentumStarted.current = true;
+ };
+@@ -106,12 +117,20 @@ const WheelPicker: React.FC = ({
+ event: NativeSyntheticEvent
+ ) => {
+ momentumStarted.current = false;
++ // Ignore momentum that wasn't started by a user drag (e.g. the FlatList
++ // settling onto initialScrollIndex on mount, or the scrollToIndex sync
++ // effect) — otherwise it can spuriously reset the value.
++ if (!isUserScrolling.current) {
++ return;
++ }
++ isUserScrolling.current = false;
+ handleScrollEnd(event);
+ };
+
+ const handleScrollEndDrag = (
+ event: NativeSyntheticEvent
+ ) => {
++ // A drag-end only ever comes from real user interaction.
+ // Capture the offset value immediately
+ const offsetY = event.nativeEvent.contentOffset?.y;
+
+@@ -120,6 +139,7 @@ const WheelPicker: React.FC = ({
+ // If momentum scroll hasn't started within the timeout,
+ // then it was a slow scroll that won't trigger momentum
+ if (!momentumStarted.current && offsetY !== undefined) {
++ isUserScrolling.current = false;
+ // Create a synthetic event with just the data we need
+ const syntheticEvent = {
+ nativeEvent: {
+@@ -178,6 +198,7 @@ const WheelPicker: React.FC = ({
+ [{ nativeEvent: { contentOffset: { y: scrollY } } }],
+ { useNativeDriver: true }
+ )}
++ onScrollBeginDrag={handleScrollBeginDrag}
+ onScrollEndDrag={handleScrollEndDrag}
+ onMomentumScrollBegin={handleMomentumScrollBegin}
+ onMomentumScrollEnd={handleMomentumScrollEnd}
diff --git a/apps/mobile/react-native.config.js b/apps/mobile/react-native.config.js
index ef1ec54f0..dd7538c12 100644
--- a/apps/mobile/react-native.config.js
+++ b/apps/mobile/react-native.config.js
@@ -18,7 +18,7 @@ along with this program. If not, see .
*/
const isGithubRelease = false;
const config = {
- commands: require("@callstack/repack/commands/rspack")
+ // commands: require("@callstack/repack/commands/rspack")
};
if (!config.dependencies) config.dependencies = {};
diff --git a/packages/icons/svgs/chevron-left.svg b/packages/icons/svgs/chevron-left.svg
new file mode 100644
index 000000000..8bebf83bd
--- /dev/null
+++ b/packages/icons/svgs/chevron-left.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/intl/locale/en.po b/packages/intl/locale/en.po
index 1cd4976c8..99b4361d7 100644
--- a/packages/intl/locale/en.po
+++ b/packages/intl/locale/en.po
@@ -776,7 +776,7 @@ msgstr "Add shortcut"
msgid "Add shortcuts for notebooks and tags here."
msgstr "Add shortcuts for notebooks and tags here."
-#: src/strings.ts:3009
+#: src/strings.ts:3011
msgid "Add some details..."
msgstr "Add some details..."
@@ -837,7 +837,7 @@ msgstr "Advanced settings"
msgid "After scanning the QR code image, the app will display a code that you can enter below."
msgstr "After scanning the QR code image, the app will display a code that you can enter below."
-#: src/strings.ts:3006
+#: src/strings.ts:3008
msgid "Alert mode"
msgstr "Alert mode"
@@ -917,7 +917,7 @@ msgstr "All tools in this group will be removed from the toolbar."
msgid "All your backups are stored in 'Phone Storage/Notesnook/backups/' folder"
msgstr "All your backups are stored in 'Phone Storage/Notesnook/backups/' folder"
-#: src/strings.ts:3004
+#: src/strings.ts:3006
msgid "All-day reminder"
msgstr "All-day reminder"
@@ -1544,6 +1544,10 @@ msgstr "Change app lock pin"
msgid "Change backup location"
msgstr "Change backup location"
+#: src/strings.ts:3014
+msgid "Change created date"
+msgstr "Change created date"
+
#: src/strings.ts:490
msgid "Change email address"
msgstr "Change email address"
@@ -1704,6 +1708,14 @@ msgstr "Choose how you want to secure your notes locally."
msgid "Choose how you want to set up your Inbox PGP keys:"
msgstr "Choose how you want to set up your Inbox PGP keys:"
+#: src/strings.ts:3000
+msgid "Choose the day you want to be reminded."
+msgstr "Choose the day you want to be reminded."
+
+#: src/strings.ts:3001
+msgid "Choose the time you want to be reminded."
+msgstr "Choose the time you want to be reminded."
+
#: src/strings.ts:2702
msgid "Choose what day to display as the first day of the week"
msgstr "Choose what day to display as the first day of the week"
@@ -2172,7 +2184,7 @@ msgstr "Create new key"
msgid "Create notebook"
msgstr "Create notebook"
-#: src/strings.ts:3010
+#: src/strings.ts:3012
msgid "Create Reminder"
msgstr "Create Reminder"
@@ -4575,7 +4587,7 @@ msgstr "Monthly"
msgid "More"
msgstr "More"
-#: src/strings.ts:3003
+#: src/strings.ts:3005
msgid "More options"
msgstr "More options"
@@ -4945,6 +4957,10 @@ msgstr "Note unpublished"
msgid "Note version history is local only."
msgstr "Note version history is local only."
+#: src/strings.ts:3013
+msgid "Note will get deleted on the set date."
+msgstr "Note will get deleted on the set date."
+
#: src/strings.ts:1270
msgid "NOTE: Creating a backup with attachments can take a while, and also fail completely. The app will try to resume/restart the backup in case of interruptions."
msgstr "NOTE: Creating a backup with attachments can take a while, and also fail completely. The app will try to resume/restart the backup in case of interruptions."
@@ -5980,7 +5996,7 @@ msgstr "Reload app"
msgid "Relogin to your Account"
msgstr "Relogin to your Account"
-#: src/strings.ts:3005
+#: src/strings.ts:3007
msgid "Remains active throughout the day."
msgstr "Remains active throughout the day."
@@ -6589,7 +6605,11 @@ msgstr "Select date"
msgid "Select date & time"
msgstr "Select date & time"
-#: src/strings.ts:3001
+#: src/strings.ts:3016
+msgid "Select date and time to change the created date"
+msgstr "Select date and time to change the created date"
+
+#: src/strings.ts:3003
msgid "Select Dates"
msgstr "Select Dates"
@@ -6665,11 +6685,11 @@ msgstr "Select the languages the spell checker should check in."
msgid "Select the release track for Notesnook."
msgstr "Select the release track for Notesnook."
-#: src/strings.ts:3000
+#: src/strings.ts:3002
msgid "Select time"
msgstr "Select time"
-#: src/strings.ts:3002
+#: src/strings.ts:3004
msgid "Select Time"
msgstr "Select Time"
@@ -6907,7 +6927,7 @@ msgstr "Share to cloud"
msgid "Share ZIP"
msgstr "Share ZIP"
-#: src/strings.ts:3007
+#: src/strings.ts:3009
msgid "Short Detail"
msgstr "Short Detail"
@@ -8296,7 +8316,7 @@ msgstr "What happens to my data if I switch plans?"
msgid "What is your refund policy?"
msgstr "What is your refund policy?"
-#: src/strings.ts:3008
+#: src/strings.ts:3010
msgid "What needs to be done?"
msgstr "What needs to be done?"
diff --git a/packages/intl/locale/pseudo-LOCALE.po b/packages/intl/locale/pseudo-LOCALE.po
index 7466f4565..6d5ca697d 100644
--- a/packages/intl/locale/pseudo-LOCALE.po
+++ b/packages/intl/locale/pseudo-LOCALE.po
@@ -776,7 +776,7 @@ msgstr ""
msgid "Add shortcuts for notebooks and tags here."
msgstr ""
-#: src/strings.ts:3009
+#: src/strings.ts:3011
msgid "Add some details..."
msgstr ""
@@ -837,7 +837,7 @@ msgstr ""
msgid "After scanning the QR code image, the app will display a code that you can enter below."
msgstr ""
-#: src/strings.ts:3006
+#: src/strings.ts:3008
msgid "Alert mode"
msgstr ""
@@ -917,7 +917,7 @@ msgstr ""
msgid "All your backups are stored in 'Phone Storage/Notesnook/backups/' folder"
msgstr ""
-#: src/strings.ts:3004
+#: src/strings.ts:3006
msgid "All-day reminder"
msgstr ""
@@ -1544,6 +1544,10 @@ msgstr ""
msgid "Change backup location"
msgstr ""
+#: src/strings.ts:3014
+msgid "Change created date"
+msgstr ""
+
#: src/strings.ts:490
msgid "Change email address"
msgstr ""
@@ -1704,6 +1708,14 @@ msgstr ""
msgid "Choose how you want to set up your Inbox PGP keys:"
msgstr ""
+#: src/strings.ts:3000
+msgid "Choose the day you want to be reminded."
+msgstr ""
+
+#: src/strings.ts:3001
+msgid "Choose the time you want to be reminded."
+msgstr ""
+
#: src/strings.ts:2702
msgid "Choose what day to display as the first day of the week"
msgstr ""
@@ -2161,7 +2173,7 @@ msgstr ""
msgid "Create notebook"
msgstr ""
-#: src/strings.ts:3010
+#: src/strings.ts:3012
msgid "Create Reminder"
msgstr ""
@@ -4555,7 +4567,7 @@ msgstr ""
msgid "More"
msgstr ""
-#: src/strings.ts:3003
+#: src/strings.ts:3005
msgid "More options"
msgstr ""
@@ -4925,6 +4937,10 @@ msgstr ""
msgid "Note version history is local only."
msgstr ""
+#: src/strings.ts:3013
+msgid "Note will get deleted on the set date."
+msgstr ""
+
#: src/strings.ts:1270
msgid "NOTE: Creating a backup with attachments can take a while, and also fail completely. The app will try to resume/restart the backup in case of interruptions."
msgstr ""
@@ -5954,7 +5970,7 @@ msgstr ""
msgid "Relogin to your Account"
msgstr ""
-#: src/strings.ts:3005
+#: src/strings.ts:3007
msgid "Remains active throughout the day."
msgstr ""
@@ -6563,7 +6579,11 @@ msgstr ""
msgid "Select date & time"
msgstr ""
-#: src/strings.ts:3001
+#: src/strings.ts:3016
+msgid "Select date and time to change the created date"
+msgstr ""
+
+#: src/strings.ts:3003
msgid "Select Dates"
msgstr ""
@@ -6639,11 +6659,11 @@ msgstr ""
msgid "Select the release track for Notesnook."
msgstr ""
-#: src/strings.ts:3000
+#: src/strings.ts:3002
msgid "Select time"
msgstr ""
-#: src/strings.ts:3002
+#: src/strings.ts:3004
msgid "Select Time"
msgstr ""
@@ -6873,7 +6893,7 @@ msgstr ""
msgid "Share ZIP"
msgstr ""
-#: src/strings.ts:3007
+#: src/strings.ts:3009
msgid "Short Detail"
msgstr ""
@@ -8246,7 +8266,7 @@ msgstr ""
msgid "What is your refund policy?"
msgstr ""
-#: src/strings.ts:3008
+#: src/strings.ts:3010
msgid "What needs to be done?"
msgstr ""
diff --git a/packages/intl/src/strings.ts b/packages/intl/src/strings.ts
index e8672953d..2b9890c0c 100644
--- a/packages/intl/src/strings.ts
+++ b/packages/intl/src/strings.ts
@@ -2997,6 +2997,8 @@ Continue without attachments?`,
t`The reminder will occur on the selected day.`,
reminderSelecetDateHelp: () => t`Adjusts to last day in shorter months`,
selectDateAndTime: () => t`Select date & time`,
+ selectReminderDate: () => t`Choose the day you want to be reminded.`,
+ selectReminderTime: () => t`Choose the time you want to be reminded.`,
selectTimeHeading: () => t`Select time`,
selectDatesPlaceholder: () => t`Select Dates`,
selectTimePlaceholder: () => t`Select Time`,
@@ -3007,5 +3009,9 @@ Continue without attachments?`,
reminderShortDetail: () => t`Short Detail`,
reminderTitlePlaceholder: () => t`What needs to be done?`,
reminderDetailsPlaceholder: () => t`Add some details...`,
- createReminder: () => t`Create Reminder`
+ createReminder: () => t`Create Reminder`,
+ setExpiryDesc: () => t`Note will get deleted on the set date.`,
+ changeCreatedDate: () => t`Change created date`,
+ changeCreatedDateDesc: () =>
+ t`Select date and time to change the created date`
};