diff --git a/docker-compose.yml b/docker-compose.yml index 0034a965b9e6..7674ec2937d8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,9 +11,28 @@ services: - 9091:3000 environment: - GLOBAL_MIDDLEWARE=auth - - SUB_PATH=/mealie/ + # - SUB_PATH=/mealie/ - ALLOW_SIGNUP=true - API_URL=http://mealie-api:80 + + # ===================================== + # Light Mode Config + - THEME_LIGHT_PRIMARY=#E58325 + - THEME_LIGHT_ACCENT=#007A99 + - THEME_LIGHT_SECONDARY=#973542 + - THEME_LIGHT_SUCCESS=#43A047 + - THEME_LIGHT_INFO=#1976D2 + - THEME_LIGHT_WARNING=#FF6D00 + - THEME_LIGHT_ERROR=#EF5350 + # ===================================== + # Light Mode Config + - THEME_DARK_PRIMARY=#E58325 + - THEME_DARK_ACCENT=#007A99 + - THEME_DARK_SECONDARY=#973542 + - THEME_DARK_SUCCESS=#43A047 + - THEME_DARK_INFO=#1976D2 + - THEME_DARK_WARNING=#FF6D00 + - THEME_DARK_ERROR=#EF5350 mealie: container_name: mealie-api build: diff --git a/docs/docs/changelog/v1.0.0.md b/docs/docs/changelog/v1.0.0.md new file mode 100644 index 000000000000..7e94a7416ce2 --- /dev/null +++ b/docs/docs/changelog/v1.0.0.md @@ -0,0 +1,47 @@ +# v1.0.0 A Whole New App! + +# DRAFT + +!!! error "Breaking Changes" + As you may have guessed, this release comes with some breaking changes. If you are/were consuming the API you will need to validate all endpoints as nearly all of them have changed. + + To import your data into Mealie v1 from the most recent previous release, you'll need to export and import your data using the bult in method. **Note that only your recipes will be usable in the migration**. + + +## โœจ What's New (What isn't?!?!) + +### ๐Ÿฅณ General +- Mealie will by default only be accessible to users. Future plans are to create spaces for non-users to access a specific group. +- Mealie has gone through a big redesign and has tried to standerize it's look a feel a bit more across the board. +- User/Group settings are now completly seperated from the Administration page. +- All settings and configurations pages now have some sort of self-documenting help text. Additional text or descriptions are welcome from PRs + +### ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Users and Groups +- Recipes are now only viewable by group members +- All memebers of a group can generate invitation tokens for other users to join their group +- Users now a have "Advaced" setting to enable/disable features like Webhooks and API tokens. This will also apply to future features that are deemed as advanced. +- "Pages" have been dropped in favor of Cookbooks which are now group specific so each group can have it's own set of cookbooks +- Default recipe settings can now be set by the group instead of environmental variables. + + +### ๐Ÿ—“ Meal Plans +- Mealplans have been completly redesigned to use a calendar approach so you'll be able to see what meals you have planned in a more traditional view +- Drag and Drop meals between days +- Add Recipes or Notes to a specific day + +### ๐Ÿฅ™ Recipes +- Foods/Units for Ingredients are now supported (toggle inside your recipe settings) +- Common Food and Units come pre-packaged with Mealie +- Recipes can now scale when Food/Units are properly defined +- Landscape and Portrait views is now available + +### โš ๏ธ Other things to know... +- Themes have been depreciated for specific users. You can still set specific themes for your site through ENV variables. This approach should yield much better results for perforance and some weirdness users have experienced. +- If you've experienced slowness in the past, you may notice a significant improvement in the "All Recipes" and "Search" pages, or whereever large payloads of recipes are being displayed. This is due to not validating responses from the database, as such if you are consuming these API's you may get extra values that are unexpected. + + +### ๐Ÿ‘จโ€๐Ÿ’ป Backend/Development Goodies +- Codebase is siginficantly more organized both Frontend and Backend +- We've moved to Nuxt for SSR and Typescript for better type safety and less bugs ๐ŸŽ‰ +- Backend now using a Class based architecture to maxamize code reuse +- Tons of performance improvements across the board \ No newline at end of file diff --git a/docs/docs/documentation/getting-started/install.md b/docs/docs/documentation/getting-started/install.md index 390806802a02..83e69a2a26af 100644 --- a/docs/docs/documentation/getting-started/install.md +++ b/docs/docs/documentation/getting-started/install.md @@ -112,35 +112,48 @@ services: POSTGRES_USER: mealie ``` -## Env Variables +## mealie-api Env Variables -| Variables | Default | Description | -| ----------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| PUID | 911 | UserID permissions between host OS and container | -| PGID | 911 | GroupID permissions between host OS and container | -| DEFAULT_GROUP | Home | The default group for users | -| DEFAULT_EMAIL | changeme@email.com | The default username for the superuser | -| BASE_URL | http://localhost:8080 | Used for Notifications | -| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' | -| POSTGRES_USER | mealie | Postgres database user | -| POSTGRES_PASSWORD | mealie | Postgres database password | -| POSTGRES_SERVER | postgres | Postgres database server address | -| POSTGRES_PORT | 5432 | Postgres database port | -| POSTGRES_DB | mealie | Postgres database name | -| TOKEN_TIME | 2 | The time in hours that a login/auth token is valid | -| RECIPE_PUBLIC | True | Default Recipe Settings - Make Recipe Public | -| RECIPE_SHOW_NUTRITION | True | Default Recipe Settings - Show Recipe Nutrition | -| RECIPE_SHOW_ASSETS | True | Default Recipe Settings - Show Recipe Assets | -| RECIPE_LANDSCAPE_VIEW | True | Default Recipe Settings - Set Landscape View | -| RECIPE_DISABLE_COMMENTS | False | Default Recipe Settings - Disable Comments | -| RECIPE_DISABLE_AMOUNT | False | Default Recipe Settings - Disable Amount | -| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** | -| API_DOCS | True | Turns on/off access to the API documentation locally. | -| TZ | UTC | Must be set to get correct date/time on the server | -| WORKERS_PER_CORE | 1 | Set the number of workers to the number of CPU cores multiplied by this value (Value \* CPUs). More info [here][workers_per_core] | -| MAX_WORKERS | | Set the maximum number of workers to use. Default is not set meaning unlimited. More info [here][max_workers] | -| WEB_CONCURRENCY | 2 | Override the automatic definition of number of workers. More info [here][web_concurrency] | +| Variables | Default | Description | +| ----------------- | :-------------------: | --------------------------------------------------------------------------------------------------------------------------------- | +| PUID | 911 | UserID permissions between host OS and container | +| PGID | 911 | GroupID permissions between host OS and container | +| DEFAULT_GROUP | Home | The default group for users | +| DEFAULT_EMAIL | changeme@email.com | The default username for the superuser | +| BASE_URL | http://localhost:8080 | Used for Notifications | +| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' | +| POSTGRES_USER | mealie | Postgres database user | +| POSTGRES_PASSWORD | mealie | Postgres database password | +| POSTGRES_SERVER | postgres | Postgres database server address | +| POSTGRES_PORT | 5432 | Postgres database port | +| POSTGRES_DB | mealie | Postgres database name | +| TOKEN_TIME | 2 | The time in hours that a login/auth token is valid | +| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** | +| API_DOCS | True | Turns on/off access to the API documentation locally. | +| TZ | UTC | Must be set to get correct date/time on the server | +| WORKERS_PER_CORE | 1 | Set the number of workers to the number of CPU cores multiplied by this value (Value \* CPUs). More info [here][workers_per_core] | +| MAX_WORKERS | | Set the maximum number of workers to use. Default is not set meaning unlimited. More info [here][max_workers] | +| WEB_CONCURRENCY | 2 | Override the automatic definition of number of workers. More info [here][web_concurrency] | +## mealie-frontend Env Variables + +| Variables | Default | Description | +| --------------------- | :-----: | ---------------------------------- | +| ALLOW_SIGNUP | true | Allows anyone to signup for Mealie | +| THEME_LIGHT_PRIMARY | #E58325 | Light Theme Config Variable | +| THEME_LIGHT_ACCENT | #007A99 | Light Theme Config Variable | +| THEME_LIGHT_SECONDARY | #973542 | Light Theme Config Variable | +| THEME_LIGHT_SUCCESS | #43A047 | Light Theme Config Variable | +| THEME_LIGHT_INFO | #1976D2 | Light Theme Config Variable | +| THEME_LIGHT_WARNING | #FF6D00 | Light Theme Config Variable | +| THEME_LIGHT_ERROR | #EF5350 | Light Theme Config Variable | +| DARK_LIGHT_PRIMARY | #E58325 | Dark Theme Config Variable | +| DARK_LIGHT_ACCENT | #007A99 | Dark Theme Config Variable | +| DARK_LIGHT_SECONDARY | #973542 | Dark Theme Config Variable | +| DARK_LIGHT_SUCCESS | #43A047 | Dark Theme Config Variable | +| DARK_LIGHT_INFO | #1976D2 | Dark Theme Config Variable | +| DARK_LIGHT_WARNING | #FF6D00 | Dark Theme Config Variable | +| DARK_LIGHT_ERROR | #EF5350 | Dark Theme Config Variable | ## Raspberry Pi 4 diff --git a/docs/docs/overrides/api.html b/docs/docs/overrides/api.html index 94fd252df193..743c83c72a24 100644 --- a/docs/docs/overrides/api.html +++ b/docs/docs/overrides/api.html @@ -14,7 +14,7 @@
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index eefdd4fdccd8..026d03126c9b 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -94,6 +94,7 @@ nav: - Style Guide: "contributors/developers-guide/style-guide.md" - Development Road Map: "roadmap.md" - Change Log: + - v1.0.0 A Whole New App: "changelog/v1.0.0.md" - v0.5.2 Misc Updates: "changelog/v0.5.2.md" - v0.5.1 Bug Fixes: "changelog/v0.5.1.md" - v0.5.0 General Upgrades: "changelog/v0.5.0.md" diff --git a/frontend/components/Domain/Recipe/RecipeCardSection.vue b/frontend/components/Domain/Recipe/RecipeCardSection.vue index 4ec0f09c9920..2019dd8717b0 100644 --- a/frontend/components/Domain/Recipe/RecipeCardSection.vue +++ b/frontend/components/Domain/Recipe/RecipeCardSection.vue @@ -57,7 +57,7 @@
- +
-
- - - -
@@ -150,7 +145,6 @@ export default { data() { return { sortLoading: false, - cardLimit: 50, loading: false, EVENTS: { az: "az", @@ -180,21 +174,8 @@ export default { return this.icon || this.$globals.icons.tags; }, }, - watch: { - recipes() { - this.bumpList(); - }, - }, + methods: { - bumpList() { - const newCardLimit = Math.min(this.cardLimit + 20, this.effectiveHardLimit); - - if (this.loading === false && newCardLimit > this.cardLimit) { - this.setLoader(); - } - - this.cardLimit = newCardLimit; - }, async setLoader() { this.loading = true; // eslint-disable-next-line promise/param-names @@ -202,7 +183,7 @@ export default { this.loading = false; }, navigateRandom() { - const recipe = this.utils.recipe.randomRecipe(this.recipes); + const recipe = this.recipes[Math.floor(Math.random() * this.recipes.length)]; this.$router.push(`/recipe/${recipe.slug}`); }, sortRecipes(sortType) { diff --git a/frontend/components/global/ToggleState.vue b/frontend/components/global/ToggleState.vue index d2fb0bf97ac6..d626258c245b 100644 --- a/frontend/components/global/ToggleState.vue +++ b/frontend/components/global/ToggleState.vue @@ -18,7 +18,6 @@ export default defineComponent({ }, setup() { const [state, toggle] = useToggle(); - console.log(state, toggle); return { state, toggle, diff --git a/frontend/composables/use-recipes.ts b/frontend/composables/use-recipes.ts index f0b7a401c65e..cc28d74ae285 100644 --- a/frontend/composables/use-recipes.ts +++ b/frontend/composables/use-recipes.ts @@ -57,6 +57,26 @@ export const useSorter = () => { }; }; +export const useLazyRecipes = function () { + const api = useApiSingleton(); + + const recipes = ref([]); + + async function fetchMore(start: number, limit: number) { + const { data } = await api.recipes.getAll(start, limit); + if (data) { + data.forEach((recipe) => { + recipes.value?.push(recipe); + }); + } + } + + return { + recipes, + fetchMore, + }; +}; + export const useRecipes = (all = false, fetchRecipes = true) => { const api = useApiSingleton(); diff --git a/frontend/nuxt.config.js b/frontend/nuxt.config.js index 206f073b5149..202131b3a66c 100644 --- a/frontend/nuxt.config.js +++ b/frontend/nuxt.config.js @@ -30,7 +30,7 @@ export default { css: [{ src: "~/assets/main.css" }, { src: "~/assets/style-overrides.scss" }], // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins - plugins: ["~/plugins/globals.ts"], + plugins: ["~/plugins/globals.ts", "~/plugins/theme.ts"], // Auto import components: https://go.nuxtjs.dev/config-components components: true, @@ -205,6 +205,26 @@ export default { axios: { browserBaseURL: process.env.SUB_PATH || "", }, + themes: { + dark: { + primary: process.env.THEME_DARK_PRIMARY || "#E58325", + accent: process.env.THEME_DARK_ACCENT || "#007A99", + secondary: process.env.THEME_DARK_SECONDARY || "#973542", + success: process.env.THEME_DARK_SUCCESS || "#43A047", + info: process.env.THEME_DARK_INFO || "#1976d2", + warning: process.env.THEME_DARK_WARNING || "#FF6D00", + error: process.env.THEME_DARK_ERROR || "#EF5350", + }, + light: { + primary: process.env.THEME_LIGHT_PRIMARY || "#007A99", + accent: process.env.THEME_LIGHT_ACCENT || "#007A99", + secondary: process.env.THEME_DARK_SECONDARY || "#973542", + success: process.env.THEME_DARK_SUCCESS || "#43A047", + info: process.env.THEME_LIGHT_INFO || "#1976d2", + warning: process.env.THEME_LIGHT_WARNING || "#FF6D00", + error: process.env.THEME_LIGHT_ERROR || "#EF5350", + }, + }, }, privateRuntimeConfig: {}, @@ -249,6 +269,8 @@ export default { customProperties: true, }, dark: false, + // Theme Config set at runtime by /plugins/theme.ts + // This config doesn't do anything. themes: { dark: { primary: "#E58325", diff --git a/frontend/pages/recipes/all.vue b/frontend/pages/recipes/all.vue index 242288490c8e..794915251a43 100644 --- a/frontend/pages/recipes/all.vue +++ b/frontend/pages/recipes/all.vue @@ -3,23 +3,49 @@ + + + + diff --git a/frontend/pages/search.vue b/frontend/pages/search.vue index bcaf27b455c5..1f754b35cc8e 100644 --- a/frontend/pages/search.vue +++ b/frontend/pages/search.vue @@ -58,8 +58,7 @@ diff --git a/frontend/plugins/globals.ts b/frontend/plugins/globals.ts index c6cdb5592266..01bb91b376ee 100644 --- a/frontend/plugins/globals.ts +++ b/frontend/plugins/globals.ts @@ -1,214 +1,4 @@ -import { - mdiAccount, - mdiSilverwareVariant, - mdiPlus, - mdiPlusCircle, - mdiDelete, - mdiContentSave, - mdiContentSaveEdit, - mdiSquareEditOutline, - mdiClose, - mdiTagMultipleOutline, - mdiBookOutline, - mdiAccountCog, - mdiAccountGroup, - mdiHome, - mdiMagnify, - mdiTranslate, - mdiClockTimeFourOutline, - mdiImport, - mdiEmail, - mdiLock, - mdiEye, - mdiDrag, - mdiEyeOff, - mdiCalendarMinus, - mdiCalendar, - mdiDiceMultiple, - mdiAlertCircle, - mdiDotsVertical, - mdiPrinter, - mdiShareVariant, - mdiHeart, - mdiHeartOutline, - mdiDotsHorizontal, - mdiCheckboxBlankOutline, - mdiCommentTextMultipleOutline, - mdiDownload, - mdiFile, - mdiFilePdfBox, - mdiFileImage, - mdiCodeJson, - mdiCog, - mdiSort, - mdiOrderAlphabeticalAscending, - mdiStar, - mdiNewBox, - mdiShuffleVariant, - mdiAlert, - mdiCheckboxMarkedCircle, - mdiInformation, - mdiBellAlert, - mdiRefreshCircle, - mdiMenu, - mdiWeatherSunny, - mdiWeatherNight, - mdiLink, - mdiRobot, - mdiLinkVariant, - mdiViewModule, - mdiViewDashboard, - mdiTools, - mdiCalendarWeek, - mdiCalendarToday, - mdiCalendarMultiselect, - mdiFormatListChecks, - mdiLogout, - mdiContentCopy, - mdiClipboardCheck, - mdiCloudUpload, - mdiDatabase, - mdiGithub, - mdiFolderOutline, - mdiApi, - mdiTestTube, - mdiDevTo, - mdiBackupRestore, - mdiNotificationClearAll, - mdiFood, - mdiWebhook, - mdiFilter, - mdiAccountPlusOutline, - mdiDesktopTowerMonitor, - mdiFormatColorFill, - mdiFormSelect, - mdiPageLayoutBody, - mdiCalendarWeekBegin, - mdiOpenInNew, - mdiCheck, - mdiBroom, - mdiCartCheck, - mdiArrowLeftBold, - mdiMinus, - mdiWindowClose, - mdiFolderZipOutline, - mdiFoodApple, - mdiBeakerOutline, - mdiArrowLeftBoldOutline, - mdiArrowRightBoldOutline, -} from "@mdi/js"; - -const icons = { - // Primary - primary: mdiSilverwareVariant, - - // General - foods: mdiFoodApple, - units: mdiBeakerOutline, - alert: mdiAlert, - alertCircle: mdiAlertCircle, - api: mdiApi, - arrowLeftBold: mdiArrowLeftBold, - arrowUpDown: mdiDrag, - backupRestore: mdiBackupRestore, - bellAlert: mdiBellAlert, - broom: mdiBroom, - calendar: mdiCalendar, - calendarMinus: mdiCalendarMinus, - calendarMultiselect: mdiCalendarMultiselect, - calendarToday: mdiCalendarToday, - calendarWeek: mdiCalendarWeek, - calendarWeekBegin: mdiCalendarWeekBegin, - cartCheck: mdiCartCheck, - check: mdiCheck, - checkboxBlankOutline: mdiCheckboxBlankOutline, - checkboxMarkedCircle: mdiCheckboxMarkedCircle, - clipboardCheck: mdiClipboardCheck, - clockOutline: mdiClockTimeFourOutline, - codeBraces: mdiCodeJson, - codeJson: mdiCodeJson, - cog: mdiCog, - commentTextMultipleOutline: mdiCommentTextMultipleOutline, - contentCopy: mdiContentCopy, - database: mdiDatabase, - desktopTowerMonitor: mdiDesktopTowerMonitor, - devTo: mdiDevTo, - diceMultiple: mdiDiceMultiple, - dotsHorizontal: mdiDotsHorizontal, - dotsVertical: mdiDotsVertical, - download: mdiDownload, - email: mdiEmail, - externalLink: mdiLinkVariant, - eye: mdiEye, - eyeOff: mdiEyeOff, - file: mdiFile, - fileImage: mdiFileImage, - filePDF: mdiFilePdfBox, - filter: mdiFilter, - folderOutline: mdiFolderOutline, - food: mdiFood, - formatColorFill: mdiFormatColorFill, - formatListCheck: mdiFormatListChecks, - formSelect: mdiFormSelect, - github: mdiGithub, - heart: mdiHeart, - heartOutline: mdiHeartOutline, - home: mdiHome, - import: mdiImport, - information: mdiInformation, - link: mdiLink, - lock: mdiLock, - logout: mdiLogout, - menu: mdiMenu, - newBox: mdiNewBox, - notificationClearAll: mdiNotificationClearAll, - openInNew: mdiOpenInNew, - orderAlphabeticalAscending: mdiOrderAlphabeticalAscending, - pageLayoutBody: mdiPageLayoutBody, - printer: mdiPrinter, - refreshCircle: mdiRefreshCircle, - robot: mdiRobot, - search: mdiMagnify, - shareVariant: mdiShareVariant, - shuffleVariant: mdiShuffleVariant, - sort: mdiSort, - star: mdiStar, - testTube: mdiTestTube, - tools: mdiTools, - translate: mdiTranslate, - upload: mdiCloudUpload, - viewDashboard: mdiViewDashboard, - viewModule: mdiViewModule, - weatherNight: mdiWeatherNight, - weatherSunny: mdiWeatherSunny, - webhook: mdiWebhook, - windowClose: mdiWindowClose, - zip: mdiFolderZipOutline, - - // Crud - backArrow: mdiArrowLeftBoldOutline, - createAlt: mdiPlus, - create: mdiPlusCircle, - delete: mdiDelete, - save: mdiContentSave, - update: mdiContentSaveEdit, - edit: mdiSquareEditOutline, - close: mdiClose, - minus: mdiMinus, - - // Organization - tags: mdiTagMultipleOutline, - pages: mdiBookOutline, - - // Admin - user: mdiAccount, - admin: mdiAccountCog, - group: mdiAccountGroup, - accountPlusOutline: mdiAccountPlusOutline, - - forward: mdiArrowRightBoldOutline, - back: mdiArrowLeftBoldOutline, -}; +import { icons } from "~/utils/icons"; // eslint-disable-next-line no-empty-pattern export default ({}, inject: any) => { diff --git a/frontend/plugins/theme.ts b/frontend/plugins/theme.ts new file mode 100644 index 000000000000..7a02ce729008 --- /dev/null +++ b/frontend/plugins/theme.ts @@ -0,0 +1,3 @@ +export default ({ $vuetify, $config }: any) => { + $vuetify.theme.themes = $config.themes; +}; diff --git a/frontend/template.env b/frontend/template.env index 606ab3787d7a..986eab07f84c 100644 --- a/frontend/template.env +++ b/frontend/template.env @@ -1,3 +1,22 @@ -GLOBAL_MIDDLEWARE=null # null or 'auth' +GLOBAL_MIDDLEWARE=null BASE_URL = "" -ALLOW_SIGNUP=true \ No newline at end of file +ALLOW_SIGNUP=true + +# ===================================== +# Light Mode Config +THEME_LIGHT_PRIMARY=#007A99 +THEME_LIGHT_ACCENT=#007A99 +THEME_LIGHT_SECONDARY=#973542 +THEME_LIGHT_SUCCESS=#43A047 +THEME_LIGHT_INFO=#1976D2 +THEME_LIGHT_WARNING=#FF6D00 +THEME_LIGHT_ERROR=#EF5350 +# ===================================== +# Light Mode Config +THEME_DARK_PRIMARY=#E58325 +THEME_DARK_ACCENT=#007A99 +THEME_DARK_SECONDARY=#973542 +THEME_DARK_SUCCESS=#43A047 +THEME_DARK_INFO=#1976D2 +THEME_DARK_WARNING=#FF6D00 +THEME_DARK_ERROR=#EF5350 \ No newline at end of file diff --git a/frontend/types/vue.d.ts b/frontend/types/vue.d.ts index e787ca754e4d..7b3204f64d2e 100644 --- a/frontend/types/vue.d.ts +++ b/frontend/types/vue.d.ts @@ -1,5 +1,10 @@ import Vue from "vue"; import "@nuxt/types"; +import { Icon } from "~/utils/icons/icon-type"; + +interface Globals { + icons: Icon; +} declare module "vue/types/vue" { interface Vue { @@ -9,9 +14,9 @@ declare module "vue/types/vue" { declare module "vue/types/options" { interface ComponentOptions { - $globals?: any; + $globals?: Globals; } interface ComponentOptions { - $globals?: any; + $globals?: Globals; } } diff --git a/frontend/utils/icons/icon-type.ts b/frontend/utils/icons/icon-type.ts new file mode 100644 index 000000000000..70cf59224050 --- /dev/null +++ b/frontend/utils/icons/icon-type.ts @@ -0,0 +1,111 @@ +export interface Icon { + // Primary + primary: String; + + // General + foods: String; + units: String; + alert: String; + alertCircle: String; + api: String; + arrowLeftBold: String; + arrowUpDown: String; + backupRestore: String; + bellAlert: String; + broom: String; + calendar: String; + calendarMinus: String; + calendarMultiselect: String; + calendarToday: String; + calendarWeek: String; + calendarWeekBegin: String; + cartCheck: String; + check: String; + checkboxBlankOutline: String; + checkboxMarkedCircle: String; + clipboardCheck: String; + clockOutline: String; + codeBraces: String; + codeJson: String; + cog: String; + commentTextMultipleOutline: String; + contentCopy: String; + database: String; + desktopTowerMonitor: String; + devTo: String; + diceMultiple: String; + dotsHorizontal: String; + dotsVertical: String; + download: String; + email: String; + externalLink: String; + eye: String; + eyeOff: String; + file: String; + fileImage: String; + filePDF: String; + filter: String; + folderOutline: String; + food: String; + formatColorFill: String; + formatListCheck: String; + formSelect: String; + github: String; + heart: String; + heartOutline: String; + home: String; + import: String; + information: String; + link: String; + lock: String; + logout: String; + menu: String; + newBox: String; + notificationClearAll: String; + openInNew: String; + orderAlphabeticalAscending: String; + pageLayoutBody: String; + printer: String; + refreshCircle: String; + robot: String; + search: String; + shareVariant: String; + shuffleVariant: String; + sort: String; + star: String; + testTube: String; + tools: String; + translate: String; + upload: String; + viewDashboard: String; + viewModule: String; + weatherNight: String; + weatherSunny: String; + webhook: String; + windowClose: String; + zip: String; + + // Crud + backArrow: String; + createAlt: String; + create: String; + delete: String; + save: String; + update: String; + edit: String; + close: String; + minus: String; + + // Organization + tags: String; + pages: String; + + // Admin + user: String; + admin: String; + group: String; + accountPlusOutline: String; + + forward: String; + back: String; +} diff --git a/frontend/utils/icons/icons.ts b/frontend/utils/icons/icons.ts new file mode 100644 index 000000000000..d753a930c3f6 --- /dev/null +++ b/frontend/utils/icons/icons.ts @@ -0,0 +1,211 @@ +import { + mdiAccount, + mdiSilverwareVariant, + mdiPlus, + mdiPlusCircle, + mdiDelete, + mdiContentSave, + mdiContentSaveEdit, + mdiSquareEditOutline, + mdiClose, + mdiTagMultipleOutline, + mdiBookOutline, + mdiAccountCog, + mdiAccountGroup, + mdiHome, + mdiMagnify, + mdiTranslate, + mdiClockTimeFourOutline, + mdiImport, + mdiEmail, + mdiLock, + mdiEye, + mdiDrag, + mdiEyeOff, + mdiCalendarMinus, + mdiCalendar, + mdiDiceMultiple, + mdiAlertCircle, + mdiDotsVertical, + mdiPrinter, + mdiShareVariant, + mdiHeart, + mdiHeartOutline, + mdiDotsHorizontal, + mdiCheckboxBlankOutline, + mdiCommentTextMultipleOutline, + mdiDownload, + mdiFile, + mdiFilePdfBox, + mdiFileImage, + mdiCodeJson, + mdiCog, + mdiSort, + mdiOrderAlphabeticalAscending, + mdiStar, + mdiNewBox, + mdiShuffleVariant, + mdiAlert, + mdiCheckboxMarkedCircle, + mdiInformation, + mdiBellAlert, + mdiRefreshCircle, + mdiMenu, + mdiWeatherSunny, + mdiWeatherNight, + mdiLink, + mdiRobot, + mdiLinkVariant, + mdiViewModule, + mdiViewDashboard, + mdiTools, + mdiCalendarWeek, + mdiCalendarToday, + mdiCalendarMultiselect, + mdiFormatListChecks, + mdiLogout, + mdiContentCopy, + mdiClipboardCheck, + mdiCloudUpload, + mdiDatabase, + mdiGithub, + mdiFolderOutline, + mdiApi, + mdiTestTube, + mdiDevTo, + mdiBackupRestore, + mdiNotificationClearAll, + mdiFood, + mdiWebhook, + mdiFilter, + mdiAccountPlusOutline, + mdiDesktopTowerMonitor, + mdiFormatColorFill, + mdiFormSelect, + mdiPageLayoutBody, + mdiCalendarWeekBegin, + mdiOpenInNew, + mdiCheck, + mdiBroom, + mdiCartCheck, + mdiArrowLeftBold, + mdiMinus, + mdiWindowClose, + mdiFolderZipOutline, + mdiFoodApple, + mdiBeakerOutline, + mdiArrowLeftBoldOutline, + mdiArrowRightBoldOutline, +} from "@mdi/js"; + +export const icons = { + // Primary + primary: mdiSilverwareVariant, + + // General + foods: mdiFoodApple, + units: mdiBeakerOutline, + alert: mdiAlert, + alertCircle: mdiAlertCircle, + api: mdiApi, + arrowLeftBold: mdiArrowLeftBold, + arrowUpDown: mdiDrag, + backupRestore: mdiBackupRestore, + bellAlert: mdiBellAlert, + broom: mdiBroom, + calendar: mdiCalendar, + calendarMinus: mdiCalendarMinus, + calendarMultiselect: mdiCalendarMultiselect, + calendarToday: mdiCalendarToday, + calendarWeek: mdiCalendarWeek, + calendarWeekBegin: mdiCalendarWeekBegin, + cartCheck: mdiCartCheck, + check: mdiCheck, + checkboxBlankOutline: mdiCheckboxBlankOutline, + checkboxMarkedCircle: mdiCheckboxMarkedCircle, + clipboardCheck: mdiClipboardCheck, + clockOutline: mdiClockTimeFourOutline, + codeBraces: mdiCodeJson, + codeJson: mdiCodeJson, + cog: mdiCog, + commentTextMultipleOutline: mdiCommentTextMultipleOutline, + contentCopy: mdiContentCopy, + database: mdiDatabase, + desktopTowerMonitor: mdiDesktopTowerMonitor, + devTo: mdiDevTo, + diceMultiple: mdiDiceMultiple, + dotsHorizontal: mdiDotsHorizontal, + dotsVertical: mdiDotsVertical, + download: mdiDownload, + email: mdiEmail, + externalLink: mdiLinkVariant, + eye: mdiEye, + eyeOff: mdiEyeOff, + file: mdiFile, + fileImage: mdiFileImage, + filePDF: mdiFilePdfBox, + filter: mdiFilter, + folderOutline: mdiFolderOutline, + food: mdiFood, + formatColorFill: mdiFormatColorFill, + formatListCheck: mdiFormatListChecks, + formSelect: mdiFormSelect, + github: mdiGithub, + heart: mdiHeart, + heartOutline: mdiHeartOutline, + home: mdiHome, + import: mdiImport, + information: mdiInformation, + link: mdiLink, + lock: mdiLock, + logout: mdiLogout, + menu: mdiMenu, + newBox: mdiNewBox, + notificationClearAll: mdiNotificationClearAll, + openInNew: mdiOpenInNew, + orderAlphabeticalAscending: mdiOrderAlphabeticalAscending, + pageLayoutBody: mdiPageLayoutBody, + printer: mdiPrinter, + refreshCircle: mdiRefreshCircle, + robot: mdiRobot, + search: mdiMagnify, + shareVariant: mdiShareVariant, + shuffleVariant: mdiShuffleVariant, + sort: mdiSort, + star: mdiStar, + testTube: mdiTestTube, + tools: mdiTools, + translate: mdiTranslate, + upload: mdiCloudUpload, + viewDashboard: mdiViewDashboard, + viewModule: mdiViewModule, + weatherNight: mdiWeatherNight, + weatherSunny: mdiWeatherSunny, + webhook: mdiWebhook, + windowClose: mdiWindowClose, + zip: mdiFolderZipOutline, + + // Crud + backArrow: mdiArrowLeftBoldOutline, + createAlt: mdiPlus, + create: mdiPlusCircle, + delete: mdiDelete, + save: mdiContentSave, + update: mdiContentSaveEdit, + edit: mdiSquareEditOutline, + close: mdiClose, + minus: mdiMinus, + + // Organization + tags: mdiTagMultipleOutline, + pages: mdiBookOutline, + + // Admin + user: mdiAccount, + admin: mdiAccountCog, + group: mdiAccountGroup, + accountPlusOutline: mdiAccountPlusOutline, + + forward: mdiArrowRightBoldOutline, + back: mdiArrowLeftBoldOutline, +}; diff --git a/frontend/utils/icons/index.ts b/frontend/utils/icons/index.ts new file mode 100644 index 000000000000..6575371f5166 --- /dev/null +++ b/frontend/utils/icons/index.ts @@ -0,0 +1 @@ +export { icons } from "./icons"; diff --git a/mealie/core/config.py b/mealie/core/config.py index e5d93a28f1f5..4bdf221ce7bf 100644 --- a/mealie/core/config.py +++ b/mealie/core/config.py @@ -7,8 +7,8 @@ from typing import Any, Optional, Union import dotenv from pydantic import BaseSettings, Field, PostgresDsn, validator -APP_VERSION = "v0.5.2" -DB_VERSION = "v0.5.0" +APP_VERSION = "v1.0.0b" +DB_VERSION = "v1.0.0b" CWD = Path(__file__).parent BASE_DIR = CWD.parent.parent diff --git a/pyproject.toml b/pyproject.toml index 85c25d4f6ff1..82fd607589ba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "mealie" -version = "0.5.2" +version = "1.0.0b" description = "A Recipe Manager" authors = ["Hayden "] license = "MIT" diff --git a/tests/unit_tests/test_config.py b/tests/unit_tests/test_config.py index 4bfe630fa8f4..3ceb507ce7e4 100644 --- a/tests/unit_tests/test_config.py +++ b/tests/unit_tests/test_config.py @@ -52,7 +52,7 @@ def test_non_default_settings(monkeypatch): def test_default_connection_args(monkeypatch): monkeypatch.setenv("DB_ENGINE", "sqlite") app_settings = AppSettings() - assert re.match(r"sqlite:////.*mealie/dev/data/mealie_v0.5.0.db", app_settings.DB_URL) + assert re.match(r"sqlite:////.*mealie/dev/data/mealie_v1.0.0b.db", app_settings.DB_URL) def test_pg_connection_args(monkeypatch):