mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-09-26 19:41:29 +08:00
feat: add i18n (translation/localization) (#16877)
* Translation module init * Add more i18n keys * fix: fix string wrong * refactor: use namespace translation file * chore: add more translation key * fix: fix some page name error * refactor: change Trans tag for t function * chore: fix some key not work * chore: fix SearchFilterDialog i18n key error Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * chore: fix en i18n file filter missing some keys * chore: add some i18n keys * chore: add more i18n keys again * feat: add search page i18n * feat: add explore model i18n keys * Update web/src/components/menu/GeneralSettings.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/components/menu/GeneralSettings.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/components/menu/GeneralSettings.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * feat: add more live i18n keys * feat: add more search setting i18n keys * fix: remove some comment * fix: fix some setting page url error * Update web/src/views/settings/SearchSettingsView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * fix: add system missing keys * fix: update password update i18n keys * chore: remove outdate translation.json file * fix: fix exploreSettings error * chore: add object setting i18n keys * Update web/src/views/recording/RecordingView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/public/locales/en/components/filter.json Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/components/overlay/ExportDialog.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * feat: add more i18n keys * fix: fix motionDetectionTuner html node * feat: add more page i18n keys * fix: cameraStream i18n keys error * feat: add Player i18n keys * feat: add more toast i18n keys * feat: change explore setting name * feat: add more document title i18n keys * feat: add more search i18n keys * fix: fix accessDenied i18n keys error * chore: add objectType i18n * chore: add inputWithTags i18n * chore: add SearchFilterDialog i18n * Update web/src/views/settings/ObjectSettingsView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/views/settings/ObjectSettingsView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/views/settings/ObjectSettingsView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/views/settings/ObjectSettingsView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * Update web/src/views/settings/ObjectSettingsView.tsx Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> * chore: add some missing i18n keys * chore: remove most import { t } from "i18next"; --------- Co-authored-by: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com>
This commit is contained in:
170
web/tailwind.config.cjs
Normal file
170
web/tailwind.config.cjs
Normal file
@@ -0,0 +1,170 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
darkMode: ["class"],
|
||||
content: [
|
||||
"./pages/**/*.{ts,tsx}",
|
||||
"./components/**/*.{ts,tsx}",
|
||||
"./app/**/*.{ts,tsx}",
|
||||
"./src/**/*.{ts,tsx}",
|
||||
],
|
||||
safelist: [
|
||||
{
|
||||
pattern: /(outline|shadow)-severity_(alert|detection|significant_motion)/,
|
||||
},
|
||||
],
|
||||
theme: {
|
||||
container: {
|
||||
center: true,
|
||||
padding: "2rem",
|
||||
screens: {
|
||||
"2xl": "1400px",
|
||||
},
|
||||
},
|
||||
fontFamily: {
|
||||
sans: ['"Inter"', "sans-serif"],
|
||||
},
|
||||
extend: {
|
||||
animation: {
|
||||
"accordion-down": "accordion-down 0.2s ease-out",
|
||||
"accordion-up": "accordion-up 0.2s ease-out",
|
||||
move: "move 3s ease-in-out infinite",
|
||||
scale1: "scale1 3s ease-in-out infinite",
|
||||
scale2: "scale2 3s ease-in-out infinite",
|
||||
scale3: "scale3 3s ease-in-out infinite",
|
||||
scale4: "scale4 3s ease-in-out infinite",
|
||||
"timeline-zoom-in": "timeline-zoom-in 0.3s ease-out",
|
||||
"timeline-zoom-out": "timeline-zoom-out 0.3s ease-out",
|
||||
},
|
||||
aspectRatio: {
|
||||
wide: "32 / 9",
|
||||
tall: "8 / 9",
|
||||
},
|
||||
colors: {
|
||||
border: "hsl(var(--border))",
|
||||
input: "hsl(var(--input))",
|
||||
ring: "hsl(var(--ring))",
|
||||
danger: "#ef4444",
|
||||
success: "#22c55e",
|
||||
background: "hsl(var(--background))",
|
||||
background_alt: "hsl(var(--background-alt))",
|
||||
foreground: "hsl(var(--foreground))",
|
||||
selected: {
|
||||
DEFAULT: "hsl(var(--selected))",
|
||||
foreground: "hsl(var(--selected-foreground))",
|
||||
},
|
||||
primary: {
|
||||
DEFAULT: "hsl(var(--primary))",
|
||||
foreground: "hsl(var(--primary-foreground))",
|
||||
variant: "hsl(var(--primary-variant))",
|
||||
},
|
||||
secondary: {
|
||||
DEFAULT: "hsl(var(--secondary))",
|
||||
foreground: "hsl(var(--secondary-foreground))",
|
||||
highlight: "hsl(var(--secondary-highlight))",
|
||||
},
|
||||
destructive: {
|
||||
DEFAULT: "hsl(var(--destructive))",
|
||||
foreground: "hsl(var(--destructive-foreground))",
|
||||
},
|
||||
warning: {
|
||||
DEFAULT: "hsl(var(--warning))",
|
||||
foreground: "hsl(var(--warning-foreground))",
|
||||
},
|
||||
muted: {
|
||||
DEFAULT: "hsl(var(--muted))",
|
||||
foreground: "hsl(var(--muted-foreground))",
|
||||
},
|
||||
accent: {
|
||||
DEFAULT: "hsl(var(--accent))",
|
||||
foreground: "hsl(var(--accent-foreground))",
|
||||
},
|
||||
popover: {
|
||||
DEFAULT: "hsl(var(--popover))",
|
||||
foreground: "hsl(var(--popover-foreground))",
|
||||
},
|
||||
card: {
|
||||
DEFAULT: "hsl(var(--card))",
|
||||
foreground: "hsl(var(--card-foreground))",
|
||||
},
|
||||
severity_alert: {
|
||||
DEFAULT: "hsl(var(--severity_alert))",
|
||||
dimmed: "hsl(var(--severity_alert_dimmed))",
|
||||
},
|
||||
severity_detection: {
|
||||
DEFAULT: "hsl(var(--severity_detection))",
|
||||
dimmed: "hsl(var(--severity_detection_dimmed))",
|
||||
},
|
||||
severity_significant_motion: {
|
||||
DEFAULT: "hsl(var(--severity_significant_motion))",
|
||||
dimmed: "hsl(var(--severity_significant_motion_dimmed))",
|
||||
},
|
||||
motion_review: {
|
||||
DEFAULT: "hsl(var(--motion_review))",
|
||||
dimmed: "hsl(var(--motion_review_dimmed))",
|
||||
},
|
||||
audio_review: {
|
||||
DEFAULT: "hsl(var(--audio_review))",
|
||||
},
|
||||
neutral: {
|
||||
DEFAULT: "hsl(var(--neutral))",
|
||||
},
|
||||
neutral_variant: {
|
||||
DEFAULT: "hsl(var(--neutral_variant))",
|
||||
},
|
||||
},
|
||||
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 },
|
||||
},
|
||||
move: {
|
||||
"50%": { left: "calc(100% - 7px)" },
|
||||
},
|
||||
scale1: {
|
||||
"0%, 100%": { transform: "scale(1.3)" },
|
||||
"10%, 90%": { transform: "scale(1.4)" },
|
||||
"20%, 80%": { transform: "scale(1)" },
|
||||
},
|
||||
scale2: {
|
||||
"20%, 80%": { transform: "scale(1.4)" },
|
||||
"10%, 30%, 70%, 90%": { transform: "scale(1)" },
|
||||
},
|
||||
scale3: {
|
||||
"30%, 70%": { transform: "scale(1.4)" },
|
||||
"20%, 40%, 60%, 80%": { transform: "scale(1)" },
|
||||
},
|
||||
scale4: {
|
||||
"50%": { transform: "scale(1.3)" },
|
||||
"40%, 60%": { transform: "scale(1.4)" },
|
||||
"30%, 70%": { transform: "scale(1)" },
|
||||
},
|
||||
"timeline-zoom-in": {
|
||||
"0%": { transform: "translateY(0)", opacity: "1" },
|
||||
"50%": { transform: "translateY(0%)", opacity: "0.5" },
|
||||
"100%": { transform: "translateY(0)", opacity: "1" },
|
||||
},
|
||||
"timeline-zoom-out": {
|
||||
"0%": { transform: "translateY(0)", opacity: "1" },
|
||||
"50%": { transform: "translateY(0%)", opacity: "0.5" },
|
||||
"100%": { transform: "translateY(0)", opacity: "1" },
|
||||
},
|
||||
},
|
||||
screens: {
|
||||
xs: "480px",
|
||||
"2xl": "1440px",
|
||||
"3xl": "1920px",
|
||||
"2k": "2560px",
|
||||
"4k": "3180px",
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: [
|
||||
require("tailwindcss-animate"),
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require("tailwind-scrollbar")({ nocompatible: true }),
|
||||
],
|
||||
};
|
Reference in New Issue
Block a user