- Introduce a toggleable grid/list view for the document list, enhancing organization and display flexibility. This involved updates across `DocumentList`, `DocumentFolder`, `DocumentListItem`, and `SortControls`. - Add a new `CodeBlock` component and integrate detailed Docker-based self-hosting instructions into the footer. - Enhance privacy policy popover with clearer details on Deepinfra usage and strongly recommend self-hosting for secure experience. - Implement conditional rendering and feature gating based on the `isDev` environment variable, differentiating features between the production demo and self-hosted instances. Affected components include `page.tsx`, `DocumentSettings.tsx`, `SettingsModal.tsx`, and `config.ts`. - Clarify that advanced features like audiobook export and word-by-word highlighting via `whisper.cpp` are exclusive to self-hosted setups and are disabled in the demo. - Expand the list of supported document types on the homepage to include MD and TXT. - Integrate new `ListIcon`, `GridIcon`, and `CopyIcon` to support UI enhancements. - Add a custom `xs` breakpoint in `tailwind.config.ts` for improved responsive design.
75 lines
2.4 KiB
TypeScript
75 lines
2.4 KiB
TypeScript
import type { Config } from "tailwindcss";
|
|
import typography from "@tailwindcss/typography";
|
|
|
|
export default {
|
|
content: [
|
|
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
|
|
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
|
|
],
|
|
darkMode: 'class',
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
background: "var(--background)",
|
|
foreground: "var(--foreground)",
|
|
base: "var(--base)",
|
|
offbase: "var(--offbase)",
|
|
accent: "var(--accent)",
|
|
"secondary-accent": "var(--secondary-accent)",
|
|
muted: "var(--muted)",
|
|
},
|
|
animation: {
|
|
'spin-slow': 'spin 2s linear infinite',
|
|
'fade-in': 'fadeIn 200ms ease-in',
|
|
'fade-out': 'fadeOut 200ms ease-out',
|
|
'scale-in': 'scaleIn 200ms ease-in',
|
|
'scale-out': 'scaleOut 200ms ease-out',
|
|
},
|
|
keyframes: {
|
|
fadeIn: {
|
|
'0%': { opacity: '0' },
|
|
'100%': { opacity: '1' },
|
|
},
|
|
fadeOut: {
|
|
'0%': { opacity: '1' },
|
|
'100%': { opacity: '0' },
|
|
},
|
|
scaleIn: {
|
|
'0%': { transform: 'scale(0.95)', opacity: '0' },
|
|
'100%': { transform: 'scale(1)', opacity: '1' },
|
|
},
|
|
scaleOut: {
|
|
'0%': { transform: 'scale(1)', opacity: '1' },
|
|
'100%': { transform: 'scale(0.95)', opacity: '0' },
|
|
},
|
|
},
|
|
typography: {
|
|
DEFAULT: {
|
|
css: {
|
|
'--tw-prose-body': 'var(--foreground)',
|
|
'--tw-prose-headings': 'var(--foreground)',
|
|
'--tw-prose-lead': 'var(--muted)',
|
|
'--tw-prose-links': 'var(--accent)',
|
|
'--tw-prose-bold': 'var(--foreground)',
|
|
'--tw-prose-counters': 'var(--muted)',
|
|
'--tw-prose-bullets': 'var(--muted)',
|
|
'--tw-prose-hr': 'var(--offbase)',
|
|
'--tw-prose-quotes': 'var(--foreground)',
|
|
'--tw-prose-quote-borders': 'var(--offbase)',
|
|
'--tw-prose-captions': 'var(--muted)',
|
|
'--tw-prose-code': 'var(--foreground)',
|
|
'--tw-prose-pre-code': 'var(--foreground)',
|
|
'--tw-prose-pre-bg': 'var(--base)',
|
|
'--tw-prose-th-borders': 'var(--offbase)',
|
|
'--tw-prose-td-borders': 'var(--offbase)',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
screens: {
|
|
xs: '410px', // custom xs breakpoint
|
|
},
|
|
},
|
|
plugins: [typography],
|
|
} satisfies Config;
|