easy-invoice-pdf/tailwind.config.ts
Vlad Sazonau 205f9bc234
feat: stripe invoice template, new CTA toasts, cleanup landing page + other improvements (#118)
* feat: enhance Android PDF viewer with error handling and memoization

- Added error handling for PDF loading failures in AndroidPdfViewer, utilizing Sentry for logging and user-friendly toast notifications.
- Implemented memoization for the InvoicePdfTemplate to optimize rendering performance.
- Updated layout.tsx to include necessary CSS for PDF rendering.
- Adjusted index.tsx comments for clarity on viewer types.

* feat: add new toasts, cleanup landing page, add stripe template

* feat: enhance PDF footer and update tests for dynamic content

- Introduced a new InvoiceFooter component to modularize footer rendering in PDF templates, improving code organization and reusability.
- Updated PDF tests to verify dynamic content in footers, including current month/year and payment due date, ensuring accurate invoice representation.
- Added PROD_WEBSITE_URL to config for consistent URL usage across components.
- Improved Telegram message handling with cache control headers for better performance.

* feat: implement invoice sharing logic and logo handling for stripe template

- Added state management for sharing invoices, including validation for logos that exceed URL length limits.
- Updated the share invoice button to reflect sharing capabilities based on logo presence.
- Introduced logo upload functionality with validation for file type and size, enhancing user experience.
- Refactored invoice form to disable sharing when a logo is present in Stripe templates, ensuring compliance with URL constraints.
- Improved toast notifications for user feedback on sharing and logo upload actions.

* feat: update invoice descriptions and enhance date handling in PDF templates

- Updated invoice descriptions in multiple languages to clarify that the tool runs entirely in the browser.
- Refactored date handling in the Stripe template components to ensure accurate formatting based on the invoice's language settings.
- Introduced a new InvoiceBody component to modularize the PDF rendering process, improving code organization and reusability.
- Enhanced the StripeDueAmount and StripeFooter components to reflect the updated date logic and improve overall clarity in the invoice presentation.
- Added localization support for date formatting using dayjs across various components.
- Added new currencies

* chore: remove unused vercel.json and add new e2e tests for invoice sharing and PDF generation

- Deleted the unused vercel.json configuration file.
- Updated the about page test to reflect changes in the description for clarity.
- Removed redundant error message checks in the invoice form tests.
- Added new e2e tests for PDF generation and sharing logic specific to the Stripe template, ensuring comprehensive coverage of invoice functionalities.

* feat: enhance umami tracking with invoice template data and improve error handling

* refactor: improve tooltips text and design, improve error handling and test assertions in invoice form and logo upload utilities

- Enhanced error handling in the logo upload function to ensure input elements are present and base64 data is provided.
- Updated e2e tests for the invoice generator page to use more reliable URL assertions.
- Refactored invoice form logic to simplify sharing validation based on template and logo presence.
- Improved button accessibility and user experience by clarifying aria-disabled attributes in various components.

* refactor: update CTA toast logic and improve button components

- Changed the timer for showing the CTA toast from 30 seconds to 40 seconds.

* fix tests

* fix: update date formatting in general information section to respect locale settings

* feat: add changelog page with mdx support

- Added support for MDX files in the Next.js configuration, allowing for rich content in the changelog.
- Introduced a new changelog layout and page structure to display updates effectively.
- Implemented dynamic routing for individual changelog entries, improving navigation and user experience.
- Enhanced the footer component with subscription functionality and improved styling.
- Updated translations to include changelog links across multiple languages.
- Added new components for date formatting and project logo descriptions to enhance the changelog presentation.

* feat: add environment configuration and update social links in tests

- Created a new .env.example file to define environment variables for server and client configurations, including Sentry, Resend, Redis, and personal information for invoices.
- Updated e2e tests to utilize GITHUB_URL and TWITTER_URL from the config for social media links, enhancing maintainability and consistency across the application.
- Refactored footer and about page components to use dynamic URLs for GitHub and Twitter, improving code clarity and reducing hardcoded values.

* chore: update environment configuration and README for clarity

- Updated .env.example to set default values for Sentry and Google Drive API configurations, enhancing clarity for new developers.
- Modified env.ts to remove minimum length validation for environment variables, simplifying the setup process.
- Enhanced README with quick start instructions and service links for Resend, Upstash, Google Drive API, and Telegram Bot API, improving onboarding experience.

* chore: add localtunnel script to package.json and adjust input component styles

- Added a new script expose-to-internet in package.json for localtunnel to facilitate external access during development.
- Updated the Input component to conditionally adjust width for date type inputs, enhancing responsiveness and usability.

* fix: update tagline in various components for consistency

* refactor: enhance loading component layout and styling

* refactor: improve invoice form validation and template handling

- Enhanced the InvoiceForm component to validate data before saving to local storage using Zod.
- Updated GeneralInformation component to handle template-specific updates for date format and clear fields based on the selected template.
- Adjusted StripeSellerBuyerInfo component styles for better spacing and consistency.
- Improved InvoiceBody component to handle invoice total formatting more robustly.
- Updated translations for 'billTo' in multiple languages for better accuracy.

* footer fix

* refactor: standardize date formatting in invoice templates

- Introduced STRIPE_DEFAULT_DATE_FORMAT constant for consistent date formatting across invoice-related components.
- Updated template tests to utilize the new date format for improved maintainability.
- Adjusted GeneralInformation component to set date format based on the selected template, enhancing clarity and consistency.
2025-07-09 01:39:21 +02:00

57 lines
1.6 KiB
TypeScript

import type { Config } from "tailwindcss";
const config: Config = {
darkMode: ["class"],
content: [
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
"./src/components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
"./content/**/*.{md,mdx}",
],
theme: {
extend: {
colors: {
background: "var(--background)",
foreground: "var(--foreground)",
},
borderRadius: {
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
},
keyframes: {
"accordion-down": {
from: {
height: "0",
},
to: {
height: "var(--radix-accordion-content-height)",
},
},
"accordion-up": {
from: {
height: "var(--radix-accordion-content-height)",
},
to: {
height: "0",
},
},
heartbeat: {
"0%": { transform: "scale(1)" },
"25%": { transform: "scale(1.4)" },
"50%": { transform: "scale(1)" },
"75%": { transform: "scale(1.4)" },
"100%": { transform: "scale(1)" },
},
},
animation: {
"accordion-down": "accordion-down 0.2s ease-out",
"accordion-up": "accordion-up 0.2s ease-out",
heartbeat: "heartbeat 3s ease-in-out infinite 25s", // 3s = duration of animation, infinite = repeat forever, 25s = delay before starting animation
},
},
},
// eslint-disable-next-line @typescript-eslint/no-require-imports
plugins: [require("tailwindcss-animate"), require("@tailwindcss/typography")],
};
export default config;