From 60a35e258363e26df68f96290fd9359f577f1498 Mon Sep 17 00:00:00 2001 From: Manuel <30572287+manuel-rw@users.noreply.github.com> Date: Sat, 4 May 2024 23:00:15 +0200 Subject: [PATCH] feat: #420 reimplement icon picker (#421) --- .../src/app/[locale]/manage/apps/_form.tsx | 12 +- .../new/_integration-new-dropdown.tsx | 3 +- .../components/icons/picker/icon-picker.tsx | 118 ++ apps/tasks/package.json | 3 +- apps/tasks/src/jobs.ts | 2 + apps/tasks/src/jobs/icons-updater.ts | 90 ++ apps/tasks/src/lib/cron-job/constants.ts | 2 + package.json | 1 - packages/api/src/root.ts | 2 + packages/api/src/router/icons.ts | 32 + packages/common/src/index.ts | 1 + packages/common/src/stopwatch.ts | 44 + .../migrations/mysql/0001_fluffy_overlord.sql | 16 + .../migrations/mysql/meta/0001_snapshot.json | 1150 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + .../migrations/sqlite/0001_unusual_rage.sql | 13 + .../migrations/sqlite/meta/0001_snapshot.json | 1097 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/package.json | 2 +- packages/db/schema/mysql.ts | 29 + packages/db/schema/sqlite.ts | 29 + packages/icons/index.ts | 2 + packages/icons/package.json | 39 + packages/icons/src/icons-fetcher.ts | 42 + .../repositories/github.icon-repository.ts | 72 ++ .../icons/src/repositories/icon-repository.ts | 38 + .../repositories/jsdelivr.icon-repository.ts | 63 + .../src/types/icon-repository-license.ts | 1 + packages/icons/src/types/index.ts | 3 + .../icons/src/types/repository-icon-group.ts | 7 + packages/icons/src/types/repository-icon.ts | 7 + packages/icons/tsconfig.json | 8 + packages/translation/src/lang/en.ts | 4 + packages/validation/src/icons.ts | 9 + packages/validation/src/index.ts | 2 + pnpm-lock.yaml | 25 + turbo/generators/templates/package.json.hbs | 2 +- 37 files changed, 2974 insertions(+), 10 deletions(-) create mode 100644 apps/nextjs/src/components/icons/picker/icon-picker.tsx create mode 100644 apps/tasks/src/jobs/icons-updater.ts create mode 100644 packages/api/src/router/icons.ts create mode 100644 packages/common/src/stopwatch.ts create mode 100644 packages/db/migrations/mysql/0001_fluffy_overlord.sql create mode 100644 packages/db/migrations/mysql/meta/0001_snapshot.json create mode 100644 packages/db/migrations/sqlite/0001_unusual_rage.sql create mode 100644 packages/db/migrations/sqlite/meta/0001_snapshot.json create mode 100644 packages/icons/index.ts create mode 100644 packages/icons/package.json create mode 100644 packages/icons/src/icons-fetcher.ts create mode 100644 packages/icons/src/repositories/github.icon-repository.ts create mode 100644 packages/icons/src/repositories/icon-repository.ts create mode 100644 packages/icons/src/repositories/jsdelivr.icon-repository.ts create mode 100644 packages/icons/src/types/icon-repository-license.ts create mode 100644 packages/icons/src/types/index.ts create mode 100644 packages/icons/src/types/repository-icon-group.ts create mode 100644 packages/icons/src/types/repository-icon.ts create mode 100644 packages/icons/tsconfig.json create mode 100644 packages/validation/src/icons.ts diff --git a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx index 367092e30..d024a9c36 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx @@ -9,7 +9,8 @@ import { useI18n } from "@homarr/translation/client"; import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; -// TODO: add icon picker +import { IconPicker } from "~/components/icons/picker/icon-picker"; + type FormType = z.infer; interface AppFormProps { @@ -38,10 +39,11 @@ export const AppForm = (props: AppFormProps) => {
- { + form.setFieldValue("iconUrl", iconUrl); + }} />