mirror of
https://github.com/immich-app/immich.git
synced 2026-07-28 14:47:30 -07:00
fix: privacy policy link
This commit is contained in:
@@ -191,7 +191,7 @@ const config = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Privacy Policy',
|
label: 'Privacy Policy',
|
||||||
to: '/privacy-policy',
|
href: 'https://immich.app/privacy-policy',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,78 +0,0 @@
|
|||||||
import useIsBrowser from '@docusaurus/useIsBrowser';
|
|
||||||
import { mdiCheckboxBlankCircle, mdiCheckboxMarkedCircle } from '@mdi/js';
|
|
||||||
import Icon from '@mdi/react';
|
|
||||||
import React from 'react';
|
|
||||||
|
|
||||||
export type Item = {
|
|
||||||
icon: string;
|
|
||||||
iconColor: string;
|
|
||||||
title: string;
|
|
||||||
description?: string;
|
|
||||||
link?: { url: string; text: string };
|
|
||||||
done?: false;
|
|
||||||
getDateLabel: (language: string) => string;
|
|
||||||
};
|
|
||||||
|
|
||||||
interface Props {
|
|
||||||
items: Item[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function Timeline({ items }: Props): JSX.Element {
|
|
||||||
const isBrowser = useIsBrowser();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<ul className="flex flex-col pl-4">
|
|
||||||
{items.map((item, index) => {
|
|
||||||
const isFirst = index === 0;
|
|
||||||
const isLast = index === items.length - 1;
|
|
||||||
const done = item.done ?? true;
|
|
||||||
const dateLabel = item.getDateLabel(isBrowser ? navigator.language : 'en-US');
|
|
||||||
const timelineIcon = done ? mdiCheckboxMarkedCircle : mdiCheckboxBlankCircle;
|
|
||||||
const cardIcon = item.icon;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<li key={index} className={`flex min-h-24 w-[700px] max-w-[90vw] ${done ? '' : 'italic'}`}>
|
|
||||||
<div className="md:flex justify-start w-36 mr-8 items-center dark:text-immich-dark-primary text-immich-primary hidden">
|
|
||||||
{dateLabel}
|
|
||||||
</div>
|
|
||||||
<div className={`${isFirst && 'relative top-[50%]'} ${isLast && 'relative bottom-[50%]'}`}>
|
|
||||||
<div
|
|
||||||
className={`h-full border-solid border-4 border-immich-primary dark:border-immich-dark-primary ${
|
|
||||||
isFirst && 'rounded rounded-t-full'
|
|
||||||
} ${isLast && 'rounded rounded-b-full'}`}
|
|
||||||
></div>
|
|
||||||
</div>
|
|
||||||
<div className="z-10 flex items-center bg-immich-primary dark:bg-immich-dark-primary border-2 border-solid rounded-full dark:text-black text-white relative top-[50%] left-[-3px] translate-y-[-50%] translate-x-[-50%] w-8 h-8 shadow-lg ">
|
|
||||||
{<Icon path={timelineIcon} size={1.25} />}
|
|
||||||
</div>
|
|
||||||
<section className=" dark:bg-immich-dark-gray bg-immich-gray dark:border-0 border-gray-200 border border-solid rounded-2xl flex flex-row w-full gap-2 p-4 md:ml-4 my-2 hover:bg-immich-primary/10 dark:hover:bg-immich-dark-primary/10 transition-all">
|
|
||||||
<div className="flex flex-col flex-grow justify-between gap-2">
|
|
||||||
<div className="flex gap-2 items-center">
|
|
||||||
{cardIcon === 'immich' ? (
|
|
||||||
<img src="/img/immich-logo.svg" height="30" className="rounded-none" />
|
|
||||||
) : (
|
|
||||||
<Icon path={cardIcon} size={1} color={item.iconColor} />
|
|
||||||
)}
|
|
||||||
<p className="m-0 mt-1 text-lg items-start flex gap-2 place-items-center content-center">
|
|
||||||
<span>{item.title}</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<p className="m-0 text-sm text-gray-600 dark:text-gray-300">{item.description}</p>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col justify-between place-items-end">
|
|
||||||
<span className="dark:text-immich-dark-primary text-immich-primary">
|
|
||||||
{item.link && (
|
|
||||||
<a href={item.link.url} target="_blank" rel="noopener">
|
|
||||||
[{item.link.text}]
|
|
||||||
</a>
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
<div className="md:hidden text-sm text-right">{dateLabel}</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</li>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</ul>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import Layout from '@theme/Layout';
|
|
||||||
function HomepageHeader() {
|
|
||||||
return (
|
|
||||||
<header>
|
|
||||||
<section className="max-w-[900px] m-4 p-4 md:p-6 md:m-auto md:my-12 border border-red-400 rounded-2xl bg-slate-200 dark:bg-immich-dark-gray">
|
|
||||||
<section>
|
|
||||||
<h1>Privacy Policy</h1>
|
|
||||||
<p>Last updated: July 31st 2024</p>
|
|
||||||
<p>
|
|
||||||
Welcome to Immich. We are committed to respecting your privacy. This Privacy Policy sets out how we collect,
|
|
||||||
use, and share information when you use our Immich app.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* 1. Scope of This Policy */}
|
|
||||||
<section>
|
|
||||||
<h2>1. Scope of This Policy</h2>
|
|
||||||
<p>
|
|
||||||
This Privacy Policy applies to the Immich app ("we", "our", or "us") and covers our collection, use, and
|
|
||||||
disclosure of your information. This Policy does not cover any third-party websites, services, or
|
|
||||||
applications that can be accessed through our app, or third-party services you may access through Immich.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* 2. Information We Collect */}
|
|
||||||
<section>
|
|
||||||
<h2>2. Information We Collect</h2>
|
|
||||||
<div>
|
|
||||||
<p>
|
|
||||||
<strong>Locally Stored Data</strong>: Immich stores all your photos, albums, settings, and locally on your
|
|
||||||
device. We do not have access to this data, nor do we transmit or store it on any of our servers.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<p>
|
|
||||||
<strong>Purchase Information:</strong> When you make a purchase within the{' '}
|
|
||||||
<a href="https://buy.immich.app">https://buy.immich.app</a>, we collect the following information for tax
|
|
||||||
calculation purposes:
|
|
||||||
</p>
|
|
||||||
<ul>
|
|
||||||
<li>Country of origin</li>
|
|
||||||
<li>Postal code (if the user is from Canada or the United States)</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* 3. Use of Your Information */}
|
|
||||||
<section>
|
|
||||||
<h2>3. Use of Your Information</h2>
|
|
||||||
<p>
|
|
||||||
<strong>Tax Calculation:</strong> The country of origin and postal code (for users from Canada or the United
|
|
||||||
States) are collected solely for determining the applicable tax rates on your purchase.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* 4. Sharing of Your Information */}
|
|
||||||
<section>
|
|
||||||
<h2>4. Sharing of Your Information</h2>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<strong>Tax Authorities:</strong> The purchase information may be shared with tax authorities as required
|
|
||||||
by law.
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<strong>Payment Providers:</strong> The purchase information may be shared with payment providers where
|
|
||||||
required.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* 5. Changes to This Policy */}
|
|
||||||
<section>
|
|
||||||
<h2>5. Changes to This Policy</h2>
|
|
||||||
<p>
|
|
||||||
We may update our Privacy Policy from time to time. If we make any changes, we will notify you by revising
|
|
||||||
the "Last updated" date at the top of this policy. It's encouraged that users frequently check this page for
|
|
||||||
any changes to stay informed about how we are helping to protect the personal information we collect.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
{/* 6. Contact Us */}
|
|
||||||
<section>
|
|
||||||
<h2>6. Contact Us</h2>
|
|
||||||
<p>
|
|
||||||
If you have any questions about this Privacy Policy, please contact us at{' '}
|
|
||||||
<a href="mailto:immich@futo.org">immich@futo.org</a>
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
</section>
|
|
||||||
</header>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Home(): JSX.Element {
|
|
||||||
return (
|
|
||||||
<Layout
|
|
||||||
title="Home"
|
|
||||||
description="immich Self-hosted photo and video backup solution directly from your mobile phone "
|
|
||||||
noFooter={true}
|
|
||||||
>
|
|
||||||
<HomepageHeader />
|
|
||||||
<div className="flex flex-col place-items-center place-content-center">
|
|
||||||
<p>This project is available under GNU AGPL v3 license.</p>
|
|
||||||
<p className="text-xs">Privacy should not be a luxury</p>
|
|
||||||
</div>
|
|
||||||
</Layout>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
Vendored
+1
@@ -36,3 +36,4 @@
|
|||||||
/overview/welcome /overview/quick-start 307
|
/overview/welcome /overview/quick-start 307
|
||||||
/docs/* /:splat 307
|
/docs/* /:splat 307
|
||||||
/features/automatic-backup /features/mobile-backup 307
|
/features/automatic-backup /features/mobile-backup 307
|
||||||
|
/privacy-policy https://immich.app/privacy-policy 307
|
||||||
|
|||||||
@@ -11,15 +11,9 @@ module.exports = {
|
|||||||
colors: {
|
colors: {
|
||||||
// Light Theme
|
// Light Theme
|
||||||
'immich-primary': '#4250af',
|
'immich-primary': '#4250af',
|
||||||
'immich-bg': '#f9f8fb',
|
|
||||||
'immich-fg': 'black',
|
|
||||||
'immich-gray': '#F6F6F4',
|
|
||||||
|
|
||||||
// Dark Theme
|
// Dark Theme
|
||||||
'immich-dark-primary': '#adcbfa',
|
'immich-dark-primary': '#adcbfa',
|
||||||
'immich-dark-bg': '#000000',
|
|
||||||
'immich-dark-fg': '#e5e7eb',
|
|
||||||
'immich-dark-gray': '#111111',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user