From 51ccca4bca52210b069650534efc82a80e622175 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 15:55:08 +0200 Subject: [PATCH 01/25] Add Button component --- src/components/library/Button.svelte | 53 ++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/components/library/Button.svelte diff --git a/src/components/library/Button.svelte b/src/components/library/Button.svelte new file mode 100644 index 00000000..f754d096 --- /dev/null +++ b/src/components/library/Button.svelte @@ -0,0 +1,53 @@ + + + From 65c0d2c4d8c68e6862ca54d50b37deb9ab39607a Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 15:55:39 +0200 Subject: [PATCH 02/25] Replace buttons in HeaderButtons.svelte --- src/components/HeaderButtons.svelte | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/components/HeaderButtons.svelte b/src/components/HeaderButtons.svelte index d36aeb3e..b6fcfce9 100644 --- a/src/components/HeaderButtons.svelte +++ b/src/components/HeaderButtons.svelte @@ -1,5 +1,6 @@
- - + +
From c2edcfad116bf85b6505711cc254f58022733e8d Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 16:08:10 +0200 Subject: [PATCH 03/25] Replace ad-hoc buttons in rewards for Button component --- src/components/Header.astro | 4 +--- src/components/Reward.svelte | 13 ++++++------- src/components/RewardModal.svelte | 17 +++++------------ src/components/TopReward.svelte | 13 ++++++------- src/components/project/ProjectRewards.svelte | 13 ++++++------- 5 files changed, 24 insertions(+), 36 deletions(-) diff --git a/src/components/Header.astro b/src/components/Header.astro index c91946a8..b2bc0120 100644 --- a/src/components/Header.astro +++ b/src/components/Header.astro @@ -55,9 +55,7 @@ if (accessToken) {
  • - +
  • diff --git a/src/components/RewardModal.svelte b/src/components/RewardModal.svelte index 87807397..1f8b80be 100644 --- a/src/components/RewardModal.svelte +++ b/src/components/RewardModal.svelte @@ -9,6 +9,7 @@ import { cart } from "../stores/cart"; import { renderMarkdown } from "../utils/renderMarkdown"; import { onMount } from "svelte"; + import Button from "./library/Button.svelte"; let { open = $bindable(false), @@ -150,20 +151,12 @@ {/if}
    - - + +
    diff --git a/src/components/TopReward.svelte b/src/components/TopReward.svelte index cf53fe21..719b7fed 100644 --- a/src/components/TopReward.svelte +++ b/src/components/TopReward.svelte @@ -3,6 +3,7 @@ import type { Project, ProjectReward } from "../openapi/client"; import { formatCurrency } from "../utils/currencies"; import { renderMarkdown } from "../utils/renderMarkdown"; + import Button from "./library/Button.svelte"; import RewardModal from "./RewardModal.svelte"; let { @@ -48,16 +49,14 @@ {/if} - + diff --git a/src/components/project/ProjectRewards.svelte b/src/components/project/ProjectRewards.svelte index 73d306e3..0678ead9 100644 --- a/src/components/project/ProjectRewards.svelte +++ b/src/components/project/ProjectRewards.svelte @@ -8,6 +8,7 @@ import { cart } from "../../stores/cart"; import { getUnit } from "../../utils/currencies"; import { extractId } from "../../utils/extractId"; + import Button from "../library/Button.svelte"; import Reward from "../Reward.svelte"; let { @@ -97,16 +98,14 @@ placeholder={$t("rewards.donation-free.placeholder")} bind:value={freeAmount} /> - + {#each rewards as reward} From ab94c71e628a43fa1723333c3b1f5deeff8b1463 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 16:30:48 +0200 Subject: [PATCH 04/25] Add invert kind --- src/components/library/Button.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/library/Button.svelte b/src/components/library/Button.svelte index f754d096..25d69289 100644 --- a/src/components/library/Button.svelte +++ b/src/components/library/Button.svelte @@ -22,6 +22,7 @@ primary: "bg-primary", secondary: "bg-purple-tint", ghost: "inset-ring-1 inset-ring-[#462949]", + invert: "" }; let { From 731f50320ad7bd99ef35fc39776d7dbba4a97abc Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 16:31:06 +0200 Subject: [PATCH 05/25] Replace buttons in project page --- src/components/project/Card.svelte | 8 +++----- src/components/project/SingleProject.svelte | 22 +++++++++------------ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/components/project/Card.svelte b/src/components/project/Card.svelte index 9e3b1ce3..f7fbd2bf 100644 --- a/src/components/project/Card.svelte +++ b/src/components/project/Card.svelte @@ -8,6 +8,7 @@ import { formatCurrency } from "../../utils/currencies"; import ProgressChart from "./ProgressChart.svelte"; import { t } from "../../i18n/store"; + import Button from "../library/Button.svelte"; export let project: Project; export let totalSupports: number = 0; @@ -87,10 +88,7 @@ - + diff --git a/src/components/project/SingleProject.svelte b/src/components/project/SingleProject.svelte index 5ac875fd..6e4c020d 100644 --- a/src/components/project/SingleProject.svelte +++ b/src/components/project/SingleProject.svelte @@ -21,6 +21,7 @@ import RememberIcon from "../../svgs/RememberIcon.svelte"; import { getDefaultLanguage } from "../../utils/consts"; import TopRewards from "./TopRewards.svelte"; + import Button from "../library/Button.svelte"; let { lang = $bindable(), @@ -137,11 +138,10 @@
    - +
    @@ -149,18 +149,14 @@

    {$t("reward.trending")}

    - +
    - + From 0d418983ad22252c20e16614d09526dbb812c74f Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 16:36:12 +0200 Subject: [PATCH 06/25] Remove project subtitle clamping button --- src/components/project/SingleProject.svelte | 27 +-------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/src/components/project/SingleProject.svelte b/src/components/project/SingleProject.svelte index 6e4c020d..987c7f00 100644 --- a/src/components/project/SingleProject.svelte +++ b/src/components/project/SingleProject.svelte @@ -40,10 +40,7 @@ } = $props(); let poster = { src: project.video?.thumbnail || "", alt: "Miniatura del video" }; - let showFull = $state(false); - let paragraphRef: HTMLParagraphElement; - let showToggle = $state(false); const countdownEnd = project.calendar?.optimum ? new Date(project.calendar.optimum) : undefined; async function getProjectData(code?: string) { @@ -58,13 +55,6 @@ project = data!; } - - onMount(() => { - const twoLinesHeight = parseFloat(getComputedStyle(paragraphRef).lineHeight) * 2; - if (paragraphRef.scrollHeight > twoLinesHeight + 1) { - showToggle = true; - } - });
    @@ -81,24 +71,9 @@
    -

    +

    {project.subtitle}

    - - {#if showToggle} - - {/if}
    From 64fd50249702eb4e8dde6d336400c6ecaa83849b Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 16:44:02 +0200 Subject: [PATCH 07/25] Replace buttons in ProjectUpdate cards --- src/components/project/ProjectUpdate.svelte | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/components/project/ProjectUpdate.svelte b/src/components/project/ProjectUpdate.svelte index 542ea10b..a4e7746a 100644 --- a/src/components/project/ProjectUpdate.svelte +++ b/src/components/project/ProjectUpdate.svelte @@ -9,6 +9,7 @@ import { apiProjectUpdatesGetCollection } from "../../openapi/client/index"; import Carousel from "../Carousel.svelte"; import { renderMarkdown } from "../../utils/renderMarkdown"; + import Button from "../library/Button.svelte"; let { lang = $bindable(), @@ -141,15 +142,15 @@
    - +
    {/each} @@ -177,12 +178,10 @@
    - +
    {/if} From 618ac797a6e0dfc850c32a483010f915f723c73c Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 17:15:25 +0200 Subject: [PATCH 08/25] Allow Button component to attack specific forms --- src/components/library/Button.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/library/Button.svelte b/src/components/library/Button.svelte index 25d69289..79443c71 100644 --- a/src/components/library/Button.svelte +++ b/src/components/library/Button.svelte @@ -22,11 +22,12 @@ primary: "bg-primary", secondary: "bg-purple-tint", ghost: "inset-ring-1 inset-ring-[#462949]", - invert: "" + invert: "", }; let { children, + form = undefined, type = "button", disabled = false, class: className = "", @@ -35,6 +36,7 @@ onclick, }: { children: Snippet; + form?: string; type?: "button" | "submit"; disabled?: boolean; size?: keyof typeof sizeStyles; @@ -46,6 +48,7 @@
    diff --git a/src/pages/[...lang]/login.astro b/src/pages/[...lang]/login.astro index 50c9de7a..1ce8f591 100644 --- a/src/pages/[...lang]/login.astro +++ b/src/pages/[...lang]/login.astro @@ -4,6 +4,7 @@ import LoginForm from "../../components/LoginForm.astro"; import Summary from "../../components/Checkout/Summary.svelte"; import Steps from "../../components/Checkout/Steps.svelte"; import Oauth from "../../components/Oauth.astro"; +import Button from "../../components/library/Button.svelte"; import BackButton from "../../components/BackButton.astro"; import { itemCount } from "../../stores/cart"; @@ -82,13 +83,9 @@ itemCount.subscribe((count) => { ) } - + diff --git a/src/pages/[...lang]/payment/index.astro b/src/pages/[...lang]/payment/index.astro index b8c46e23..92054f9c 100644 --- a/src/pages/[...lang]/payment/index.astro +++ b/src/pages/[...lang]/payment/index.astro @@ -3,6 +3,7 @@ import Layout from "../../../layouts/Layout.astro"; import Summary from "../../../components/Checkout/Summary.svelte"; import PaymentMethod from "../../../components/Checkout/PaymentMethod.astro"; import Steps from "../../../components/Checkout/Steps.svelte"; +import Button from "../../../components/library/Button.svelte"; import BackButton from "../../../components/BackButton.astro"; import { getDefaultCurrency } from "../../../utils/consts.ts"; import { apiAccountingsIdGet, apiGatewaysGetCollection } from "../../../openapi/client/index"; @@ -55,14 +56,12 @@ const { data: paymentGateways } = await apiGatewaysGetCollection();
    -

    {t("checkout.summary.deduct")}

    - +
    diff --git a/src/pages/[...lang]/register.astro b/src/pages/[...lang]/register.astro index 46ca2f90..bc8f15c4 100644 --- a/src/pages/[...lang]/register.astro +++ b/src/pages/[...lang]/register.astro @@ -3,6 +3,7 @@ import Layout from "../../layouts/Layout.astro"; import RegisterForm from "../../components/RegisterForm.astro"; import Summary from "../../components/Checkout/Summary.svelte"; import Steps from "../../components/Checkout/Steps.svelte"; +import Button from "../../components/library/Button.svelte"; import Oauth from "../../components/Oauth.astro"; import { itemCount } from "../../stores/cart"; @@ -85,11 +86,9 @@ itemCount.subscribe((count) => { ) } - - {t("global.btn.continue")} - + From 7e1a57e74b2c01075c87e3dec71e8812f429e539 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 17:32:58 +0200 Subject: [PATCH 11/25] Remove unused svelte componente Navigation --- src/components/Navigation/Navigation.svelte | 93 --------------------- 1 file changed, 93 deletions(-) delete mode 100644 src/components/Navigation/Navigation.svelte diff --git a/src/components/Navigation/Navigation.svelte b/src/components/Navigation/Navigation.svelte deleted file mode 100644 index 4f6aa33e..00000000 --- a/src/components/Navigation/Navigation.svelte +++ /dev/null @@ -1,93 +0,0 @@ - - - - - -{#if showCategoryMenu} -
    e.key === "Escape" && closeCategoryMenu()} - >
    -{/if} From 112cb6fdaf93315103536820d55fdc5623821dd8 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 17:33:24 +0200 Subject: [PATCH 12/25] Add eslint-plugin-unused-imports --- eslint.config.js | 4 ++++ package.json | 1 + pnpm-lock.yaml | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/eslint.config.js b/eslint.config.js index a8738f27..1cc35acb 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -3,6 +3,7 @@ import importPlugin from "eslint-plugin-import"; import globals from "globals"; import tseslint from "typescript-eslint"; import cypressPlugin from "eslint-plugin-cypress"; +import unusedImportsPlugin from "eslint-plugin-unused-imports"; /** @type {import('eslint').Linter.Config[]} */ export default [ @@ -19,6 +20,7 @@ export default [ ".astro/**", ".astro/**/*", "openapi/client/**", + ".github/**", ], }, { files: ["**/*.{js,mjs,cjs,ts}"] }, @@ -28,6 +30,7 @@ export default [ { plugins: { import: importPlugin, + "unused-imports": unusedImportsPlugin, }, rules: { "import/order": [ @@ -48,6 +51,7 @@ export default [ }, ], "@typescript-eslint/no-explicit-any": "off", + "unused-imports/no-unused-imports": "error", }, }, // Cypress configuration diff --git a/package.json b/package.json index 38d6e47e..c2062f8a 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "eslint": "^9.28.0", "eslint-plugin-cypress": "^5.0.1", "eslint-plugin-import": "^2.31.0", + "eslint-plugin-unused-imports": "^4.2.0", "flowbite": "^3.1.2", "flowbite-svelte": "1.5.2", "flowbite-svelte-icons": "^2.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 949d0924..f95f37fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,6 +90,9 @@ importers: eslint-plugin-import: specifier: ^2.31.0 version: 2.31.0(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2)) + eslint-plugin-unused-imports: + specifier: ^4.2.0 + version: 4.2.0(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2)) flowbite: specifier: ^3.1.2 version: 3.1.2(rollup@4.36.0) @@ -1761,6 +1764,15 @@ packages: '@typescript-eslint/parser': optional: true + eslint-plugin-unused-imports@4.2.0: + resolution: {integrity: sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5744,6 +5756,12 @@ snapshots: - eslint-import-resolver-webpack - supports-color + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2)): + dependencies: + eslint: 9.28.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.28.0(jiti@2.4.2))(typescript@5.8.3) + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 From 038b70c4ce77008fca2ea28e964e5666faa5938a Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 17:37:04 +0200 Subject: [PATCH 13/25] Add tailwing-merge --- package.json | 1 + pnpm-lock.yaml | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c2062f8a..c2d72e5c 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "marked": "^15.0.12", "media-icons": "^1.1.5", "svelte": "^5.33.13", + "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.8", "typescript": "^5.8.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f95f37fa..95397fef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ importers: svelte: specifier: ^5.33.13 version: 5.33.13 + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 tailwindcss: specifier: ^4.1.8 version: 4.1.8 @@ -3474,8 +3477,8 @@ packages: tailwind-merge@3.0.2: resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} - tailwind-merge@3.3.0: - resolution: {integrity: sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==} + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} tailwind-variants@1.0.0: resolution: {integrity: sha512-2WSbv4ulEEyuBKomOunut65D8UZwxrHoRfYnxGcQNnHqlSCp2+B7Yz2W+yrNDrxRodOXtGD/1oCcKGNBnUqMqA==} @@ -5980,7 +5983,7 @@ snapshots: dependencies: clsx: 2.1.1 svelte: 5.33.13 - tailwind-merge: 3.3.0 + tailwind-merge: 3.3.1 flowbite-svelte@1.5.2(rollup@4.36.0)(svelte@5.33.13)(tailwindcss@4.1.8): dependencies: @@ -5990,7 +5993,7 @@ snapshots: clsx: 2.1.1 flowbite: 3.1.2(rollup@4.36.0) svelte: 5.33.13 - tailwind-merge: 3.3.0 + tailwind-merge: 3.3.1 tailwind-variants: 1.0.0(tailwindcss@4.1.8) tailwindcss: 4.1.8 transitivePeerDependencies: @@ -7869,7 +7872,7 @@ snapshots: tailwind-merge@3.0.2: {} - tailwind-merge@3.3.0: {} + tailwind-merge@3.3.1: {} tailwind-variants@1.0.0(tailwindcss@4.1.8): dependencies: From 0545f46f310006b6077ef0818f82a13fc40267e7 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 17:37:19 +0200 Subject: [PATCH 14/25] Remove unused imports --- env.d.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/env.d.ts b/env.d.ts index a2f7737a..37d90486 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,7 +1,4 @@ /// -/* eslint-disable @typescript-eslint/no-unused-vars */ -import type { useTranslations } from "./i18n/utils"; -import type { Locale } from "../i18n/locales/index"; declare global { namespace App { From 7ae63ad9152de11ba864570c8c9424d442c9367f Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 3 Oct 2025 17:52:45 +0200 Subject: [PATCH 15/25] Add Category and CategorySelect component --- src/components/library/Category.svelte | 42 +++++++++++++ src/components/library/CategorySelect.svelte | 66 ++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 src/components/library/Category.svelte create mode 100644 src/components/library/CategorySelect.svelte diff --git a/src/components/library/Category.svelte b/src/components/library/Category.svelte new file mode 100644 index 00000000..fa8c2746 --- /dev/null +++ b/src/components/library/Category.svelte @@ -0,0 +1,42 @@ + + + diff --git a/src/components/library/CategorySelect.svelte b/src/components/library/CategorySelect.svelte new file mode 100644 index 00000000..1babad84 --- /dev/null +++ b/src/components/library/CategorySelect.svelte @@ -0,0 +1,66 @@ + + +
    + {#each options as option} + handleClick(option)} + > + {option.text} + + {/each} +
    From 06a015a2811072f5710ef43194c207879e7c69e8 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 16:45:17 +0200 Subject: [PATCH 16/25] Ignore env.d.ts linting for unused imports necessary for type hinting --- env.d.ts | 3 +++ eslint.config.js | 1 + 2 files changed, 4 insertions(+) diff --git a/env.d.ts b/env.d.ts index 37d90486..a2f7737a 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,4 +1,7 @@ /// +/* eslint-disable @typescript-eslint/no-unused-vars */ +import type { useTranslations } from "./i18n/utils"; +import type { Locale } from "../i18n/locales/index"; declare global { namespace App { diff --git a/eslint.config.js b/eslint.config.js index 1cc35acb..432ad4d6 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -21,6 +21,7 @@ export default [ ".astro/**/*", "openapi/client/**", ".github/**", + "env.d.ts", ], }, { files: ["**/*.{js,mjs,cjs,ts}"] }, From c5053b9b1d20351d24e4847f9e32f4941ddb7c3a Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 16:45:32 +0200 Subject: [PATCH 17/25] Update order of colors for prominence --- src/styles/global.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/global.css b/src/styles/global.css index 27cc5827..e9caf5dc 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -18,12 +18,12 @@ --color-body: #1e293b; /* Extended color tokens for components */ + --color-white: #ffffff; /* Pure white */ --color-light-accent: #e6d9f3; /* Light purple accent for buttons */ --color-light-surface: #fbfbfb; /* Light background surface */ --color-light-muted: #f3f3ef; /* Muted light background */ --color-purple-tint: #e6e5f7; /* Light purple tint */ --color-neutral-light: #e6e6e6; /* Light neutral border */ - --color-white: #ffffff; /* Pure white */ --font-body: "Karla", sans-serif; --body-regular: 1rem; From b9b0f6984d3aad569edfd72e8e787454d4760cf3 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 16:45:47 +0200 Subject: [PATCH 18/25] Add TextInput component --- src/components/library/TextInput.svelte | 87 +++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 src/components/library/TextInput.svelte diff --git a/src/components/library/TextInput.svelte b/src/components/library/TextInput.svelte new file mode 100644 index 00000000..a92e2c21 --- /dev/null +++ b/src/components/library/TextInput.svelte @@ -0,0 +1,87 @@ + + +
    + {#if labelText} + + {/if} + + {#if helperText} + + {helperText} + + {/if} +
    From 5a1a0f81667350aab4a298452381f9b219af08cc Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 16:51:25 +0200 Subject: [PATCH 19/25] Update LoginForm with new svelte button components --- src/components/LoginForm.astro | 61 ++++++++++++---------------------- 1 file changed, 22 insertions(+), 39 deletions(-) diff --git a/src/components/LoginForm.astro b/src/components/LoginForm.astro index f2892b7b..a0c5591b 100644 --- a/src/components/LoginForm.astro +++ b/src/components/LoginForm.astro @@ -1,44 +1,25 @@ --- +import TextInput from "./library/TextInput.svelte"; + const { t } = Astro.locals; ---
    -
    -
    - - -
    - -
    - - -
    + + +
    @@ -88,11 +69,13 @@ const { t } = Astro.locals; errorContent.innerText = error.message; } - if (hasCart) { - window.location.href = `/payment`; - } + if (!error) { + if (hasCart) { + window.location.href = `/payment`; + } - window.location.href = `/`; + window.location.href = `/`; + } }); } From e9253a4fe9334b51caed268c02c41b7d51680ba5 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 16:57:52 +0200 Subject: [PATCH 20/25] Update colors from figma library --- src/styles/global.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/styles/global.css b/src/styles/global.css index e9caf5dc..3e8e2970 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -12,13 +12,14 @@ @theme { /* Light Theme (default) */ --color-primary: #59e9d3; - --color-secondary: #3d3d3d; - --color-tertiary: #462949; + --color-secondary: #462949; + --color-tertiary: #e94668; --color-background: #f8fafc; --color-body: #1e293b; /* Extended color tokens for components */ - --color-white: #ffffff; /* Pure white */ + --color-white: #fbfbfb; + --color-black: #3d3d3d --color-light-accent: #e6d9f3; /* Light purple accent for buttons */ --color-light-surface: #fbfbfb; /* Light background surface */ --color-light-muted: #f3f3ef; /* Muted light background */ From fce9de162af69e1f088bc8a66639bd16f3f429bf Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 17:00:33 +0200 Subject: [PATCH 21/25] Switch border-tertiary and border-secondary --- src/components/Admin/Filters.svelte | 12 ++++++------ src/components/Admin/Search.svelte | 2 +- src/components/Admin/Table.svelte | 6 +++--- src/components/Tags.svelte | 4 ++-- src/components/home/Blog.astro | 2 +- src/components/home/Stats.astro | 4 ++-- src/components/library/TextInput.svelte | 2 +- src/components/project/Card.svelte | 4 ++-- src/pages/[...lang]/checkout.astro | 2 +- src/pages/[...lang]/login.astro | 2 +- src/pages/[...lang]/payment/index.astro | 2 +- src/pages/[...lang]/payment/verify.astro | 4 ++-- src/pages/[...lang]/payment/wallet.astro | 2 +- src/pages/[...lang]/register.astro | 2 +- 14 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/components/Admin/Filters.svelte b/src/components/Admin/Filters.svelte index 182043f6..952dd34e 100644 --- a/src/components/Admin/Filters.svelte +++ b/src/components/Admin/Filters.svelte @@ -220,7 +220,7 @@ diff --git a/src/components/Tags.svelte b/src/components/Tags.svelte index a425e410..fbcd1d6a 100644 --- a/src/components/Tags.svelte +++ b/src/components/Tags.svelte @@ -25,11 +25,11 @@
    -
    +
    {$t(`categories.${project.category}`)}
    -
    +
    {displayName(project.territory)}
    diff --git a/src/components/home/Blog.astro b/src/components/home/Blog.astro index b6f66878..4039f807 100644 --- a/src/components/home/Blog.astro +++ b/src/components/home/Blog.astro @@ -32,7 +32,7 @@ const blogPost = {
    {blogPost.buttonText} diff --git a/src/components/home/Stats.astro b/src/components/home/Stats.astro index 866a42e8..344b94f7 100644 --- a/src/components/home/Stats.astro +++ b/src/components/home/Stats.astro @@ -57,7 +57,7 @@ const { t } = Astro.locals; {t("home.stats.theoryToAction.button")} @@ -116,7 +116,7 @@ const { t } = Astro.locals; {t("home.stats.whyGoteo.button")} diff --git a/src/components/library/TextInput.svelte b/src/components/library/TextInput.svelte index a92e2c21..e897495c 100644 --- a/src/components/library/TextInput.svelte +++ b/src/components/library/TextInput.svelte @@ -4,7 +4,7 @@ const baseStyle = [ "peer", "w-full p-4", - "bg-light-surface rounded-md border border-tertiary", + "bg-light-surface rounded-md border border-secondary", "text-base text-gray-700 placeholder-gray-400", "focus:ring-1 focus:ring-tertiary focus:outline-none", ]; diff --git a/src/components/project/Card.svelte b/src/components/project/Card.svelte index f7fbd2bf..93a029e0 100644 --- a/src/components/project/Card.svelte +++ b/src/components/project/Card.svelte @@ -39,11 +39,11 @@ >
    {#if hasReached(project.budget?.optimum?.money)} - + {$t("campaignProgress.optimumReached")} {:else if hasReached(project.budget?.minimum?.money)} - + {$t("campaignProgress.minimumReached")} {/if} diff --git a/src/pages/[...lang]/checkout.astro b/src/pages/[...lang]/checkout.astro index 505d5608..7bc4edb1 100644 --- a/src/pages/[...lang]/checkout.astro +++ b/src/pages/[...lang]/checkout.astro @@ -29,7 +29,7 @@ const accountingIdPlatoniq = Number(getPlatoniqAccountingId() || 0);
    diff --git a/src/pages/[...lang]/login.astro b/src/pages/[...lang]/login.astro index 1ce8f591..665667dd 100644 --- a/src/pages/[...lang]/login.astro +++ b/src/pages/[...lang]/login.astro @@ -54,7 +54,7 @@ itemCount.subscribe((count) => {
    {hasCart && } {hasCart && } diff --git a/src/pages/[...lang]/payment/index.astro b/src/pages/[...lang]/payment/index.astro index 92054f9c..00298adc 100644 --- a/src/pages/[...lang]/payment/index.astro +++ b/src/pages/[...lang]/payment/index.astro @@ -51,7 +51,7 @@ const { data: paymentGateways } = await apiGatewaysGetCollection();
    diff --git a/src/pages/[...lang]/payment/verify.astro b/src/pages/[...lang]/payment/verify.astro index 71d37bc0..284655b0 100644 --- a/src/pages/[...lang]/payment/verify.astro +++ b/src/pages/[...lang]/payment/verify.astro @@ -88,7 +88,7 @@ try {
    -
    +
    @@ -124,7 +124,7 @@ try {
    -
    +
    diff --git a/src/pages/[...lang]/payment/wallet.astro b/src/pages/[...lang]/payment/wallet.astro index eef351a0..f5f178d0 100644 --- a/src/pages/[...lang]/payment/wallet.astro +++ b/src/pages/[...lang]/payment/wallet.astro @@ -43,7 +43,7 @@ const { data: accounting } = await apiAccountingsIdGet({
    diff --git a/src/pages/[...lang]/register.astro b/src/pages/[...lang]/register.astro index bc8f15c4..8c72d528 100644 --- a/src/pages/[...lang]/register.astro +++ b/src/pages/[...lang]/register.astro @@ -57,7 +57,7 @@ itemCount.subscribe((count) => {
    {hasCart && } {hasCart && } From f6ba64a15699fd406fee1c72829446f34441249c Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 17:48:10 +0200 Subject: [PATCH 22/25] Add missing colors from library --- src/styles/global.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/styles/global.css b/src/styles/global.css index 3e8e2970..d923f735 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -15,15 +15,17 @@ --color-secondary: #462949; --color-tertiary: #e94668; --color-background: #f8fafc; + --color-content: #575757; --color-body: #1e293b; /* Extended color tokens for components */ --color-white: #fbfbfb; - --color-black: #3d3d3d + --color-black: #3d3d3d; --color-light-accent: #e6d9f3; /* Light purple accent for buttons */ --color-light-surface: #fbfbfb; /* Light background surface */ --color-light-muted: #f3f3ef; /* Muted light background */ --color-purple-tint: #e6e5f7; /* Light purple tint */ + --color-soft-purple: #faf9ff; --color-neutral-light: #e6e6e6; /* Light neutral border */ --font-body: "Karla", sans-serif; From 6054c12079ff5a6e14e6e9c9c257c2f4f15fb061 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Mon, 6 Oct 2025 17:48:47 +0200 Subject: [PATCH 23/25] Updated hardcoded hex colors to tw theme vars --- src/components/Admin/ActionsBtn.svelte | 8 +-- src/components/Admin/ContentFooter.svelte | 4 +- src/components/Admin/DetailsRow.svelte | 40 ++++++------- src/components/Admin/Filters.svelte | 8 +-- src/components/Admin/Pagination.svelte | 22 ++++---- src/components/Admin/Slider.svelte | 8 +-- src/components/Admin/Table.svelte | 40 ++++++------- src/components/BackButton.astro | 2 +- src/components/Carousel.svelte | 4 +- src/components/Checkout/Cart.svelte | 2 +- src/components/Checkout/CartItem.svelte | 10 ++-- src/components/Checkout/FeedbackForm.svelte | 12 ++-- src/components/Checkout/PaymentMethod.astro | 8 +-- src/components/Checkout/Steps.svelte | 4 +- src/components/Checkout/Summary.svelte | 6 +- src/components/Checkout/Tipjar.svelte | 4 +- .../Checkout/WalletConfirmation.astro | 2 +- src/components/Checkout/WalletInfo.svelte | 4 +- src/components/Countdown.svelte | 2 +- src/components/Footer.astro | 56 +++++++++---------- src/components/Hero/Hero.astro | 6 +- src/components/LoginForm.astro | 2 +- src/components/Logout.astro | 2 +- src/components/RegisterForm.astro | 24 ++++---- src/components/Reward.svelte | 8 +-- src/components/RewardModal.svelte | 8 +-- src/components/Tabs.svelte | 8 +-- src/components/Tags.svelte | 4 +- src/components/TopReward.svelte | 4 +- src/components/UiLanguages.astro | 2 +- src/components/home/Blog.astro | 8 +-- src/components/home/CampaignCard.astro | 16 +++--- src/components/home/Campaigns.astro | 2 +- src/components/home/FeaturedPromoters.astro | 4 +- src/components/home/Matchfunding.astro | 8 +-- src/components/home/PromoterCard.astro | 12 ++-- src/components/home/RenovationBanner.astro | 4 +- src/components/home/ResourceCard.astro | 6 +- src/components/home/Resources.astro | 2 +- src/components/home/Stats.astro | 36 ++++++------ src/components/home/Stories.astro | 10 ++-- src/components/library/Button.svelte | 2 +- src/components/library/Category.svelte | 8 +-- .../profile/ProfileDonorType.svelte | 10 ++-- src/components/profile/ProfileHero.astro | 4 +- src/components/profile/ProfileInfo.svelte | 2 +- src/components/project/Banner.svelte | 10 ++-- src/components/project/BudgetBar.svelte | 2 +- src/components/project/Card.svelte | 26 +++++---- src/components/project/LegendBudgetBar.svelte | 2 +- src/components/project/ProjectBudget.svelte | 16 +++--- .../project/ProjectCommunity.svelte | 12 ++-- .../project/ProjectCommunityAnonymous.svelte | 6 +- .../ProjectCommunityMatchfunding.svelte | 8 +-- .../project/ProjectCommunityMessage.svelte | 8 +-- src/components/project/ProjectRewards.svelte | 6 +- src/components/project/ProjectUpdate.svelte | 16 +++--- src/components/project/ResumeBudget.svelte | 6 +- src/components/project/Sharebutton.svelte | 16 +++--- src/components/project/SingleProject.svelte | 10 ++-- src/components/project/Slider.svelte | 12 ++-- src/components/project/Tabs.svelte | 10 ++-- src/pages/[...lang]/admin/charges.astro | 4 +- src/pages/[...lang]/checkout.astro | 8 +-- src/pages/[...lang]/login.astro | 20 +++---- src/pages/[...lang]/payment/index.astro | 6 +- src/pages/[...lang]/payment/verify.astro | 16 +++--- src/pages/[...lang]/payment/wallet.astro | 8 +-- .../[...lang]/profile/[idOrHandle].astro | 6 +- src/pages/[...lang]/register.astro | 22 +++----- src/svgs/ClockIcon.svelte | 2 +- 71 files changed, 352 insertions(+), 354 deletions(-) diff --git a/src/components/Admin/ActionsBtn.svelte b/src/components/Admin/ActionsBtn.svelte index 9b24f7e6..e5932187 100644 --- a/src/components/Admin/ActionsBtn.svelte +++ b/src/components/Admin/ActionsBtn.svelte @@ -5,21 +5,21 @@
    diff --git a/src/components/Admin/ContentFooter.svelte b/src/components/Admin/ContentFooter.svelte index db4427a4..ce6990c5 100644 --- a/src/components/Admin/ContentFooter.svelte +++ b/src/components/Admin/ContentFooter.svelte @@ -44,11 +44,11 @@ {/if}
    -

    +

    {$t("contributions.grid.content-footer.downloadDetails")}

    {$t("contributions.grid.content-footer.annotations", { diff --git a/src/components/Admin/DetailsRow.svelte b/src/components/Admin/DetailsRow.svelte index 2d93fef2..268afbf3 100644 --- a/src/components/Admin/DetailsRow.svelte +++ b/src/components/Admin/DetailsRow.svelte @@ -59,7 +59,7 @@

    {$t("contributions.grid.details.operationTime")}

    @@ -68,7 +68,7 @@

    {$t("contributions.grid.details.trackingCodes.title")}

    @@ -322,7 +322,7 @@ type="button" onclick={handleExportCSV} disabled={isExporting} - class="relative inline-flex cursor-pointer items-center gap-2 rounded-2xl bg-[#E6E5F7] px-4 py-2 font-medium text-nowrap text-gray-700 transition-colors disabled:cursor-not-allowed disabled:opacity-50" + class="bg-purple-tint relative inline-flex cursor-pointer items-center gap-2 rounded-2xl px-4 py-2 font-medium text-nowrap text-gray-700 transition-colors disabled:cursor-not-allowed disabled:opacity-50" > {#if isExporting} diff --git a/src/components/Admin/Pagination.svelte b/src/components/Admin/Pagination.svelte index 7da21e92..0e9a4714 100644 --- a/src/components/Admin/Pagination.svelte +++ b/src/components/Admin/Pagination.svelte @@ -39,26 +39,26 @@ โ€ฆ + โ€ฆ {:else} {#if total > 0} - + {@html $t("contributions.pagination.showing", { items, total }, { allowHTML: true })} {:else if total === 0 && !isLoading} - + {@html $t("contributions.pagination.noResults")} {:else} - + {@html $t("contributions.pagination.unloaded")} {/if} diff --git a/src/components/Admin/Slider.svelte b/src/components/Admin/Slider.svelte index 30b64e27..3159ce2a 100644 --- a/src/components/Admin/Slider.svelte +++ b/src/components/Admin/Slider.svelte @@ -44,17 +44,17 @@
    {#if !isLoaded}
    - Cargando... + Cargando...
    {/if} diff --git a/src/components/Admin/Table.svelte b/src/components/Admin/Table.svelte index 9d3af06a..9b23669c 100644 --- a/src/components/Admin/Table.svelte +++ b/src/components/Admin/Table.svelte @@ -507,12 +507,12 @@
    -

    +

    {$t("contributions.filters.order.title")}

    @@ -540,10 +540,10 @@
    - + {#each tableHeaders as header} handleHeaderClick(header)} > @@ -579,44 +579,46 @@ toggleRow(i)} class="{openRow === i - ? 'bg-[#FAF9FF]' - : 'bg-white'} border border-[#e6e5f7] transition-colors hover:bg-[#FAF9FF]" + ? 'bg-soft-purple]' + : 'bg-white'} border-purple-tint hover:bg-soft-purple] border transition-colors" > {charge.targetDisplayName} {#if charge.money.amount && charge.money.currency} - + {formatCurrency(charge.money.amount, charge.money.currency)} {:else} - โ€” + โ€” {/if} - {charge.originDisplayName} - + {$t(`contributions.table.rows.payments.${charge.paymentMethod}`)} - + {getDate(charge.dateCreated).date}

    {charge.trackingCodes[0]?.value || "โ€”"}

    - + - {charge.refundToWallet}
    @@ -624,7 +626,7 @@
    {#each Object.entries($groupedByOwner) as [target, items]}
    -

    +

    {$t("project.owner")} {$displayNames[target] ?? ""}

    diff --git a/src/components/Checkout/CartItem.svelte b/src/components/Checkout/CartItem.svelte index 38b61354..e44fb797 100644 --- a/src/components/Checkout/CartItem.svelte +++ b/src/components/Checkout/CartItem.svelte @@ -29,11 +29,11 @@ {/if}
    -

    +

    {formatCurrency(item.amount, item.currency)}

    -

    {item.title}

    -

    +

    {item.title}

    +

    {#if typeof item.claimed === "number"} {#if item.claimed > 0} {item.claimed} {$t("checkout.reward.claimed")} @@ -53,7 +53,7 @@

    - {item.quantity}
    @@ -81,7 +81,7 @@ id={`reward-checkbox-${item.key}`} class="accent-primary h-6 w-6 rounded" /> -
    --> diff --git a/src/components/Checkout/FeedbackForm.svelte b/src/components/Checkout/FeedbackForm.svelte index 427c6029..b2c64264 100644 --- a/src/components/Checkout/FeedbackForm.svelte +++ b/src/components/Checkout/FeedbackForm.svelte @@ -8,7 +8,7 @@
    -

    +

    {$t("payment.page-aproved.form-goal.title")}

    @@ -35,7 +35,7 @@ type="radio" name="type" value="organization" - class="relative h-6 w-6 appearance-none rounded-full border border-[#855a96] after:absolute after:top-1/2 after:left-1/2 after:hidden after:h-2 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:rounded-full after:bg-purple-900 after:content-[''] checked:border-teal-400 checked:bg-teal-400 checked:after:block" + class="border-secondary relative h-6 w-6 appearance-none rounded-full border after:absolute after:top-1/2 after:left-1/2 after:hidden after:h-2 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:rounded-full after:bg-purple-900 after:content-[''] checked:border-teal-400 checked:bg-teal-400 checked:after:block" />
    -

    +

    {$t("payment.page-aproved.form-review.title")}

    -

    {$t("payment.page-aproved.form-review.description")}

    +

    {$t("payment.page-aproved.form-review.description")}

    @@ -74,7 +74,7 @@ name="messageType" value="public" bind:group={messageType} - class="relative h-6 w-6 appearance-none rounded-full border border-[#855a96] after:absolute after:top-1/2 after:left-1/2 after:hidden after:h-2 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:rounded-full after:bg-purple-900 after:content-[''] checked:border-teal-400 checked:bg-teal-400 checked:after:block" + class="border-secondary relative h-6 w-6 appearance-none rounded-full border after:absolute after:top-1/2 after:left-1/2 after:hidden after:h-2 after:w-2 after:-translate-x-1/2 after:-translate-y-1/2 after:transform after:rounded-full after:bg-purple-900 after:content-[''] checked:border-teal-400 checked:bg-teal-400 checked:after:block" /> Dejar un mensaje de forma pรบblica @@ -87,7 +87,7 @@