diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..e7a70afa5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,4 @@ +# Changelog + +## Unreleased +- Add filament label printing with separate presets, QR codes, and AML export (labels and pages), plus AML size control and filament QR scanning support. diff --git a/README.md b/README.md index a6a796cf8..f5f85640c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +
+ @@ -38,3 +40,15 @@ Spoolman is a self-hosted web service designed to help you efficiently manage yo ## Installation Please see the [Installation page on the Wiki](https://github.com/Donkie/Spoolman/wiki/Installation) for details how to install Spoolman. + +## Syncing Manufacturer Logos +If you want to bundle manufacturer logos locally for UI + label rendering, run: + +```bash +./scripts/sync_vendor_logos.sh +``` + +This pulls the `logos` set from `MarksMakerSpace/filament-profiles` into `client/public/vendor-logos`. + +In the Manufacturers list, use `Sync Logos` to auto-map existing manufacturers to bundled logos. +The matching normalizes casing and separators (for example `Bambu Lab`, `bambu-lab`, `BAMBU LAB`). diff --git a/client/README.MD b/client/README.MD index 4b27fbd26..855fd6c27 100644 --- a/client/README.MD +++ b/client/README.MD @@ -1,3 +1,7 @@ # Spoolman UI A simple [refine](https://github.com/refinedev/refine) based UI for manipulating the data in the Spoolman database. + +## Local Review Cache Reset + +Set `VITE_BYPASS_LOOPBACK_PWA_CACHE=true` when you want loopback URLs such as `localhost`, `127.0.0.1`, or `::1` to clear existing service workers and browser caches before the app boots. This is intended for local review and debugging when stale PWA assets are masking the current frontend bundle. diff --git a/client/package-lock.json b/client/package-lock.json index b19647a12..4efe04a31 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -24,6 +24,7 @@ "i18next": "^25.7.3", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", + "jszip": "3.10.1", "react": "^19.2.3", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", @@ -6206,6 +6207,12 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -8656,6 +8663,12 @@ "node": ">= 4" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -8698,7 +8711,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/ini": { @@ -9626,6 +9638,54 @@ "node": ">=4.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/kbar": { "version": "0.1.0-beta.40", "resolved": "https://registry.npmjs.org/kbar/-/kbar-0.1.0-beta.40.tgz", @@ -9687,6 +9747,15 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -10857,6 +10926,12 @@ "dev": true, "license": "MIT" }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, "node_modules/papaparse": { "version": "5.5.3", "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.3.tgz", @@ -11316,6 +11391,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -13036,6 +13117,12 @@ "node": ">= 0.4" } }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -14352,7 +14439,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, "license": "MIT" }, "node_modules/utils-merge": { diff --git a/client/package.json b/client/package.json index 1603ff246..dbcd71fb6 100644 --- a/client/package.json +++ b/client/package.json @@ -23,6 +23,7 @@ "i18next": "^25.7.3", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", + "jszip": "3.10.1", "react": "^19.2.3", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", diff --git a/client/public/locales/en/common.json b/client/public/locales/en/common.json index 88ff2ae85..01a4a2523 100644 --- a/client/public/locales/en/common.json +++ b/client/public/locales/en/common.json @@ -28,8 +28,10 @@ "hideArchived": "Hide Archived", "showArchived": "Show Archived", "notAccessTitle": "You don't have permission to access", - "hideColumns": "Hide Columns", - "clearFilters": "Clear Filters" + "hideColumns": "Columns", + "clearFilters": "Clear Filters", + "selectAll": "Select All", + "selectNone": "Select None" }, "warnWhenUnsavedChanges": "Are you sure you want to leave? You have unsaved changes.", "notifications": { @@ -70,6 +72,7 @@ "paperSize": "Paper Size", "customSize": "Custom", "dimensions": "Dimensions", + "amlLabelSize": "AML Label Size", "showBorder": "Show Border", "previewScale": "Preview Scale", "skipItems": "Skip Items", @@ -100,15 +103,71 @@ "deleteSettingsConfirm": "Are you sure you want to delete this preset?", "settingsName": "Preset Name", "saveSetting": "Save Presets", - "saveAsImage": "Save as Image" + "savePreset": "Save Preset", + "saveAsImage": "Save as Image", + "saveAsAmlLabels": "Save as AML (Labels)", + "saveAsAmlPages": "Save as AML (Pages)", + "spoolImagePresets": "Spool Image Presets", + "filamentImagePresets": "Filament Image Presets", + "exportFormat": "Export Format", + "exportFormatOptions": { + "png": "PNG", + "aml": "AML" + }, + "exportAsZip": "Export as .zip", + "exportDpi": "Export DPI", + "exportDpiHelp": "Higher DPI improves image quality for exports but increases file size.", + "exportLabels": "Export Labels", + "filenamePreview": "Filename Preview", + "filenamePreviewAdditional": "Additional Example", + "zipFilenamePreview": "ZIP Filename" }, "qrcode": { "button": "Print Labels", + "selectButton": "Print / Export Labels", + "exportButton": "Export Labels", + "selectTitle": "Export / Print Labels", + "exportFilamentTitle": "Export Filament Labels", + "exportSpoolTitle": "Export Spool Labels", + "printFilamentTitle": "Print Filament Labels", + "printSpoolTitle": "Print Spool Labels", "title": "Label Printing", + "sectionLogo": "Logo", + "sectionTitle": "Title", + "sectionQRCode": "QR Code", + "sectionInformation": "Information", "template": "Label Template", - "templateHelp": "Use {} to insert values of the spool object as text. For example, {id} will be replaced with the spool id, or {filament.material} will be replaced with the material of the spool. if a value is missing it will be replaced with \"?\". A second set of {} can be used to remove this. In addition, any text between the sets of {} will be removed if the value is missing. For example, {Lot Nr: {lot_nr}} will only show the label if the spool has a lot number. Enclose text with double asterix ** to make it bold. Click the button to view a list of all available tags.", + "titleTemplate": "Title Template", + "infoTemplate": "Information Template", + "templateHelp": "Use {} to insert values of the spool object as text. For example, {id} will be replaced with the spool id, or {filament.material} will be replaced with the material of the spool. if a value is missing it will be replaced with \"?\". A second set of {} can be used to remove this. In addition, any text between the sets of {} will be removed if the value is missing. For example, {Lot Nr: {lot_nr}} will only show the label if the spool has a lot number. Enclose text with double asterix ** to make it bold, and use ==text== to invert text. Click the button to view a list of all available tags.", + "templateHelpFilament": "Use {} to insert values of the filament object as text. For example, {id} will be replaced with the filament id, or {vendor.name} will be replaced with the vendor name. If a value is missing it will be replaced with \"?\". A second set of {} can be used to remove this. In addition, any text between the sets of {} will be removed if the value is missing. For example, {Article: {article_number}} will only show the label if a filament has an article number. Enclose text with double asterix ** to make it bold, and use ==text== to invert text. Click the button to view a list of all available tags.", "textSize": "Label Text Size", - "showContent": "Print Label", + "infoTextSize": "Information Text Size", + "titleTextSize": "Title Text Size", + "titleMaxTextSize": "Title Max Text Size", + "titleAreaHeight": "Title Area Height", + "showContent": "Show Information on label", + "showManufacturerLogo": "Show Manufacturer Logo", + "showTitle": "Show Title", + "titleFitToWidth": "Fit Title to Width", + "titleFitToWidthOptions": { + "on": "On", + "off": "Off" + }, + "appliedTextSize": "Applied Size", + "logoSize": "Logo Size", + "logoAlign": "Logo Horizontal Align", + "titleAlign": "Title Horizontal Align", + "qrCodePosition": "QR Code Position", + "qrCodePositionLeft": "Left", + "qrCodePositionRight": "Right", + "qrCodeAlign": "QR Code Vertical Align", + "qrCodeAlignTop": "Top", + "qrCodeAlignCenter": "Center", + "qrCodeAlignBottom": "Bottom", + "qrCodeSize": "QR Code Size", + "infoAlign": "Information Horizontal Align", + "infoVerticalAlign": "Information Vertical Align", "useHTTPUrl": { "label": "QR code link", "tooltip": "Will use proprietary link that will work only if scanned from Spoolman's scanning feature (default). URL uses either the base URL specified in settings, or the current page URL if not set.", @@ -123,16 +182,31 @@ "no": "No", "simple": "Simple", "withIcon": "With Icon" - } + }, + "filenameTemplate": "Filename Template", + "filenameTemplateTooltipSpool": "Use {} to insert values of the spool object as text. Refer to the label template rules and available tags for details.", + "filenameTemplateTooltipFilament": "Use {} to insert values of the filament object as text. Refer to the label template rules and available tags for details.", + "titleTemplateTooltipSpool": "Use {} to insert values of the spool object as text. Refer to the label template rules and available tags for details.", + "titleTemplateTooltipFilament": "Use {} to insert values of the filament object as text. Refer to the label template rules and available tags for details." }, "spoolSelect": { "title": "Select Spools", "description": "Select spools to print labels for.", + "searchPlaceholder": "Search vendor, name, material, lot #", "showArchived": "Show Archived", "noSpoolsSelected": "You have not selected any spools.", "selectAll": "Select/Unselect All", "selectedTotal_one": "{{count}} spool selected", "selectedTotal_other": "{{count}} spools selected" + }, + "filamentSelect": { + "title": "Select Filaments", + "description": "Select filaments to print labels for.", + "searchPlaceholder": "Search vendor, name, material, article #", + "noFilamentsSelected": "You have not selected any filaments.", + "selectAll": "Select/Unselect All", + "selectedTotal_one": "{{count}} filament selected", + "selectedTotal_other": "{{count}} filaments selected" } }, "scanner": { @@ -226,6 +300,7 @@ "diameter": "Diameter", "weight": "Weight", "spool_weight": "Spool Weight", + "spool_count": "Spool Count", "article_number": "Article Number", "registered": "Registered", "comment": "Comment", @@ -269,14 +344,27 @@ "vendor": "Manufacturers", "fields": { "id": "ID", + "logo": "Logo", + "logo_url": "Logo URL", + "print_logo_url": "Print Logo URL", + "logo_preview": "Logo Preview", + "print_logo_preview": "Print Logo Preview", "name": "Name", "empty_spool_weight": "Empty Spool Weight", "external_id": "External ID", "registered": "Registered", - "comment": "Comment" + "comment": "Comment", + "logo_suggestions": "Logo Suggestions", + "print_logo_suggestions": "Print Logo Suggestions", + "logo_suggestions_placeholder": "Select a suggested logo path", + "logo_suggestions_none": "None" }, "fields_help": { - "empty_spool_weight": "The weight of an empty spool from this manufacturer." + "empty_spool_weight": "The weight of an empty spool from this manufacturer.", + "logo_url": "Optional custom logo used in the UI. Supports absolute URLs or local paths like /vendor-logos/web/bambu-lab-web.png.", + "print_logo_url": "Optional custom logo used for label rendering. Supports absolute URLs or local paths like /vendor-logos/print/bambu-lab.png.", + "logo_suggestions": "Checks the logo database for files with names similar to this manufacturer.", + "print_logo_suggestions": "Checks the print-logo database for files with names similar to this manufacturer." }, "titles": { "create": "Create Manufacturer", @@ -286,8 +374,21 @@ "show": "Show Manufacturer", "show_title": "[Manufacturer #{{id}}] {{name}}" }, + "buttons": { + "sync_logos": "Sync Logos", + "clear_logo_url": "Clear URL", + "convert_logo_to_print": "Convert Logo to Print", + "convert_logo_to_print_help": "Creates a black-and-white print logo from the current Logo URL and stores it as a separate local print logo file." + }, "form": { - "vendor_updated": "This manufacturer has been updated by someone/something else since you opened this page. Saving will overwrite those changes!" + "vendor_updated": "This manufacturer has been updated by someone/something else since you opened this page. Saving will overwrite those changes!", + "logo_sync_no_match": "No matching logos found for this manufacturer name.", + "logo_sync_applied": "Suggested logo paths applied.", + "logo_preview_auto_notice": "using auto-matched logo from bundled logo pack", + "logo_preview_default_notice": "no logo defined, using default generated text logo", + "logo_convert_requires_web_logo": "Set a Logo URL first.", + "logo_convert_success": "Generated print logo from web logo.", + "logo_convert_error": "Could not generate a print logo from this Logo URL." } }, "home": { @@ -322,6 +423,23 @@ "round_prices": { "label": "Round prices", "tooltip": "Round prices to the nearest whole number." + }, + "logo_sync": { + "title": "Global Manufacturer Logo Sync", + "description": "Syncs missing logo URLs across the whole manufacturer database using the bundled logo manifest. Existing logo URLs are not overwritten.", + "where": "Source: /vendor-logos/manifest.json (bundled static web/print logo files). Matching ignores minor punctuation/case differences in names.", + "button": "Sync Logos Now", + "not_ready": "Logo manifest is not available yet.", + "load_error": "Could not load manufacturers for logo sync.", + "done": "Logo sync complete. Matched {{matched}}, updated {{updated}}.", + "github_title": "Update Logo Pack from GitHub", + "github_description": "Checks the upstream logo repository for changes and downloads files only when there is a newer logo pack. No re-download happens when unchanged.", + "github_source": "Source repository:", + "github_button": "Check GitHub for Logo Updates", + "github_load_error": "Could not check GitHub logo updates.", + "github_done_updated": "Logo pack updated from GitHub. Web: {{web}}, Print: {{print}}.", + "github_done_no_changes": "Logo pack already up to date. Web: {{web}}, Print: {{print}}.", + "scope_note": "This action syncs the whole manufacturer database. You can sync a single manufacturer from its Edit page." } }, "extra_fields": { diff --git a/client/public/vendor-logos/README.md b/client/public/vendor-logos/README.md new file mode 100644 index 000000000..0093d8eb8 --- /dev/null +++ b/client/public/vendor-logos/README.md @@ -0,0 +1,21 @@ +This directory stores bundled manufacturer logos for Spoolman. + +Layout: +- `web/*-web.png`: logos used in the regular UI (manufacturer pages and list) +- `print/*.png`: logos used in label print/export rendering + +The app resolves logos by slugified manufacturer name. +Example: +- Manufacturer `Bambu Lab` -> slug `bambu-lab` +- UI logo path: `/vendor-logos/web/bambu-lab-web.png` +- Print logo path: `/vendor-logos/print/bambu-lab.png` + +To sync the logo set from `MarksMakerSpace/filament-profiles`, run: + +```bash +./scripts/sync_vendor_logos.sh +``` + +You can override logos per manufacturer in the UI by filling: +- `Logo URL` (UI logo) +- `Print Logo URL` (label logo) diff --git a/client/public/vendor-logos/manifest.json b/client/public/vendor-logos/manifest.json new file mode 100644 index 000000000..a7f825caf --- /dev/null +++ b/client/public/vendor-logos/manifest.json @@ -0,0 +1,7 @@ +{ + "source_repo": "MarksMakerSpace/filament-profiles", + "source_ref": "main", + "synced_at_utc": "2026-02-18T16:36:19Z", + "web_logo_count": 338, + "print_logo_count": 338 +} diff --git a/client/public/vendor-logos/print/.gitkeep b/client/public/vendor-logos/print/.gitkeep new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/client/public/vendor-logos/print/.gitkeep @@ -0,0 +1 @@ + diff --git a/client/public/vendor-logos/print/123-3d.png b/client/public/vendor-logos/print/123-3d.png new file mode 100644 index 000000000..14b1370fb Binary files /dev/null and b/client/public/vendor-logos/print/123-3d.png differ diff --git a/client/public/vendor-logos/print/3d-best-q.png b/client/public/vendor-logos/print/3d-best-q.png new file mode 100644 index 000000000..455479854 Binary files /dev/null and b/client/public/vendor-logos/print/3d-best-q.png differ diff --git a/client/public/vendor-logos/print/3d-fillies.png b/client/public/vendor-logos/print/3d-fillies.png new file mode 100644 index 000000000..33e953c7d Binary files /dev/null and b/client/public/vendor-logos/print/3d-fillies.png differ diff --git a/client/public/vendor-logos/print/3d-fuel.png b/client/public/vendor-logos/print/3d-fuel.png new file mode 100644 index 000000000..7cf9447eb Binary files /dev/null and b/client/public/vendor-logos/print/3d-fuel.png differ diff --git a/client/public/vendor-logos/print/3d-plast.png b/client/public/vendor-logos/print/3d-plast.png new file mode 100644 index 000000000..739b0dc14 Binary files /dev/null and b/client/public/vendor-logos/print/3d-plast.png differ diff --git a/client/public/vendor-logos/print/3d-printing-canada.png b/client/public/vendor-logos/print/3d-printing-canada.png new file mode 100644 index 000000000..ba30e98fd Binary files /dev/null and b/client/public/vendor-logos/print/3d-printing-canada.png differ diff --git a/client/public/vendor-logos/print/3d-printz.png b/client/public/vendor-logos/print/3d-printz.png new file mode 100644 index 000000000..b18f23566 Binary files /dev/null and b/client/public/vendor-logos/print/3d-printz.png differ diff --git a/client/public/vendor-logos/print/3d-warhorse.png b/client/public/vendor-logos/print/3d-warhorse.png new file mode 100644 index 000000000..02865af95 Binary files /dev/null and b/client/public/vendor-logos/print/3d-warhorse.png differ diff --git a/client/public/vendor-logos/print/3d4makers.png b/client/public/vendor-logos/print/3d4makers.png new file mode 100644 index 000000000..be55ae4e2 Binary files /dev/null and b/client/public/vendor-logos/print/3d4makers.png differ diff --git a/client/public/vendor-logos/print/3dactive.png b/client/public/vendor-logos/print/3dactive.png new file mode 100644 index 000000000..ac4da8761 Binary files /dev/null and b/client/public/vendor-logos/print/3dactive.png differ diff --git a/client/public/vendor-logos/print/3de.png b/client/public/vendor-logos/print/3de.png new file mode 100644 index 000000000..79c64bf51 Binary files /dev/null and b/client/public/vendor-logos/print/3de.png differ diff --git a/client/public/vendor-logos/print/3dfila.png b/client/public/vendor-logos/print/3dfila.png new file mode 100644 index 000000000..117e17602 Binary files /dev/null and b/client/public/vendor-logos/print/3dfila.png differ diff --git a/client/public/vendor-logos/print/3dfillies.png b/client/public/vendor-logos/print/3dfillies.png new file mode 100644 index 000000000..0d38cf4f4 Binary files /dev/null and b/client/public/vendor-logos/print/3dfillies.png differ diff --git a/client/public/vendor-logos/print/3dfils.png b/client/public/vendor-logos/print/3dfils.png new file mode 100644 index 000000000..291a8a0af Binary files /dev/null and b/client/public/vendor-logos/print/3dfils.png differ diff --git a/client/public/vendor-logos/print/3dfinity.png b/client/public/vendor-logos/print/3dfinity.png new file mode 100644 index 000000000..7889eab67 Binary files /dev/null and b/client/public/vendor-logos/print/3dfinity.png differ diff --git a/client/public/vendor-logos/print/3dgenius.png b/client/public/vendor-logos/print/3dgenius.png new file mode 100644 index 000000000..055e681a3 Binary files /dev/null and b/client/public/vendor-logos/print/3dgenius.png differ diff --git a/client/public/vendor-logos/print/3dhojor.png b/client/public/vendor-logos/print/3dhojor.png new file mode 100644 index 000000000..89eab4176 Binary files /dev/null and b/client/public/vendor-logos/print/3dhojor.png differ diff --git a/client/public/vendor-logos/print/3djake.png b/client/public/vendor-logos/print/3djake.png new file mode 100644 index 000000000..1ec6a9299 Binary files /dev/null and b/client/public/vendor-logos/print/3djake.png differ diff --git a/client/public/vendor-logos/print/3dkordo.png b/client/public/vendor-logos/print/3dkordo.png new file mode 100644 index 000000000..8b560f509 Binary files /dev/null and b/client/public/vendor-logos/print/3dkordo.png differ diff --git a/client/public/vendor-logos/print/3do.png b/client/public/vendor-logos/print/3do.png new file mode 100644 index 000000000..adbdf557b Binary files /dev/null and b/client/public/vendor-logos/print/3do.png differ diff --git a/client/public/vendor-logos/print/3dpower.png b/client/public/vendor-logos/print/3dpower.png new file mode 100644 index 000000000..9cdb9a11e Binary files /dev/null and b/client/public/vendor-logos/print/3dpower.png differ diff --git a/client/public/vendor-logos/print/3dtrcek.png b/client/public/vendor-logos/print/3dtrcek.png new file mode 100644 index 000000000..def7d69cc Binary files /dev/null and b/client/public/vendor-logos/print/3dtrcek.png differ diff --git a/client/public/vendor-logos/print/3dxtech.png b/client/public/vendor-logos/print/3dxtech.png new file mode 100644 index 000000000..94201c33a Binary files /dev/null and b/client/public/vendor-logos/print/3dxtech.png differ diff --git a/client/public/vendor-logos/print/aceaddity.png b/client/public/vendor-logos/print/aceaddity.png new file mode 100644 index 000000000..5e10fd9f9 Binary files /dev/null and b/client/public/vendor-logos/print/aceaddity.png differ diff --git a/client/public/vendor-logos/print/addnorth.png b/client/public/vendor-logos/print/addnorth.png new file mode 100644 index 000000000..088bfade2 Binary files /dev/null and b/client/public/vendor-logos/print/addnorth.png differ diff --git a/client/public/vendor-logos/print/agf.png b/client/public/vendor-logos/print/agf.png new file mode 100644 index 000000000..77920da48 Binary files /dev/null and b/client/public/vendor-logos/print/agf.png differ diff --git a/client/public/vendor-logos/print/aicopyto.png b/client/public/vendor-logos/print/aicopyto.png new file mode 100644 index 000000000..740ae5f7a Binary files /dev/null and b/client/public/vendor-logos/print/aicopyto.png differ diff --git a/client/public/vendor-logos/print/aio-robotics.png b/client/public/vendor-logos/print/aio-robotics.png new file mode 100644 index 000000000..8e72f0b35 Binary files /dev/null and b/client/public/vendor-logos/print/aio-robotics.png differ diff --git a/client/public/vendor-logos/print/alchemakes.png b/client/public/vendor-logos/print/alchemakes.png new file mode 100644 index 000000000..b7c39882e Binary files /dev/null and b/client/public/vendor-logos/print/alchemakes.png differ diff --git a/client/public/vendor-logos/print/alltime3d.png b/client/public/vendor-logos/print/alltime3d.png new file mode 100644 index 000000000..5c50e678b Binary files /dev/null and b/client/public/vendor-logos/print/alltime3d.png differ diff --git a/client/public/vendor-logos/print/alzament.png b/client/public/vendor-logos/print/alzament.png new file mode 100644 index 000000000..dafada3e1 Binary files /dev/null and b/client/public/vendor-logos/print/alzament.png differ diff --git a/client/public/vendor-logos/print/amazon-basics.png b/client/public/vendor-logos/print/amazon-basics.png new file mode 100644 index 000000000..cef4ed905 Binary files /dev/null and b/client/public/vendor-logos/print/amazon-basics.png differ diff --git a/client/public/vendor-logos/print/ambrosia.png b/client/public/vendor-logos/print/ambrosia.png new file mode 100644 index 000000000..d4ef60d78 Binary files /dev/null and b/client/public/vendor-logos/print/ambrosia.png differ diff --git a/client/public/vendor-logos/print/american-filament.png b/client/public/vendor-logos/print/american-filament.png new file mode 100644 index 000000000..4cfefcb3d Binary files /dev/null and b/client/public/vendor-logos/print/american-filament.png differ diff --git a/client/public/vendor-logos/print/amolen.png b/client/public/vendor-logos/print/amolen.png new file mode 100644 index 000000000..5066d455a Binary files /dev/null and b/client/public/vendor-logos/print/amolen.png differ diff --git a/client/public/vendor-logos/print/amoybaby.png b/client/public/vendor-logos/print/amoybaby.png new file mode 100644 index 000000000..6ee47475e Binary files /dev/null and b/client/public/vendor-logos/print/amoybaby.png differ diff --git a/client/public/vendor-logos/print/amz3d.png b/client/public/vendor-logos/print/amz3d.png new file mode 100644 index 000000000..cdf3d9e76 Binary files /dev/null and b/client/public/vendor-logos/print/amz3d.png differ diff --git a/client/public/vendor-logos/print/ankermake.png b/client/public/vendor-logos/print/ankermake.png new file mode 100644 index 000000000..caf39b6ce Binary files /dev/null and b/client/public/vendor-logos/print/ankermake.png differ diff --git a/client/public/vendor-logos/print/anycubic.png b/client/public/vendor-logos/print/anycubic.png new file mode 100644 index 000000000..599e0ebbf Binary files /dev/null and b/client/public/vendor-logos/print/anycubic.png differ diff --git a/client/public/vendor-logos/print/arianeplast.png b/client/public/vendor-logos/print/arianeplast.png new file mode 100644 index 000000000..ab7c3aae7 Binary files /dev/null and b/client/public/vendor-logos/print/arianeplast.png differ diff --git a/client/public/vendor-logos/print/artillery.png b/client/public/vendor-logos/print/artillery.png new file mode 100644 index 000000000..db7d907b5 Binary files /dev/null and b/client/public/vendor-logos/print/artillery.png differ diff --git a/client/public/vendor-logos/print/ataraxia-art.png b/client/public/vendor-logos/print/ataraxia-art.png new file mode 100644 index 000000000..eaf392d66 Binary files /dev/null and b/client/public/vendor-logos/print/ataraxia-art.png differ diff --git a/client/public/vendor-logos/print/atomic-filament.png b/client/public/vendor-logos/print/atomic-filament.png new file mode 100644 index 000000000..5ae31d9ef Binary files /dev/null and b/client/public/vendor-logos/print/atomic-filament.png differ diff --git a/client/public/vendor-logos/print/aurapol.png b/client/public/vendor-logos/print/aurapol.png new file mode 100644 index 000000000..f4ed494ea Binary files /dev/null and b/client/public/vendor-logos/print/aurapol.png differ diff --git a/client/public/vendor-logos/print/azurefilm.png b/client/public/vendor-logos/print/azurefilm.png new file mode 100644 index 000000000..c47eabadb Binary files /dev/null and b/client/public/vendor-logos/print/azurefilm.png differ diff --git a/client/public/vendor-logos/print/bambu-lab.png b/client/public/vendor-logos/print/bambu-lab.png new file mode 100644 index 000000000..8387dfc57 Binary files /dev/null and b/client/public/vendor-logos/print/bambu-lab.png differ diff --git a/client/public/vendor-logos/print/bambu-labs.png b/client/public/vendor-logos/print/bambu-labs.png new file mode 100644 index 000000000..c65fdd596 Binary files /dev/null and b/client/public/vendor-logos/print/bambu-labs.png differ diff --git a/client/public/vendor-logos/print/basf.png b/client/public/vendor-logos/print/basf.png new file mode 100644 index 000000000..58e6dcff1 Binary files /dev/null and b/client/public/vendor-logos/print/basf.png differ diff --git a/client/public/vendor-logos/print/basicfil.png b/client/public/vendor-logos/print/basicfil.png new file mode 100644 index 000000000..e8d8518fa Binary files /dev/null and b/client/public/vendor-logos/print/basicfil.png differ diff --git a/client/public/vendor-logos/print/bavaria.png b/client/public/vendor-logos/print/bavaria.png new file mode 100644 index 000000000..2e01de489 Binary files /dev/null and b/client/public/vendor-logos/print/bavaria.png differ diff --git a/client/public/vendor-logos/print/bblife.png b/client/public/vendor-logos/print/bblife.png new file mode 100644 index 000000000..63e6897bb Binary files /dev/null and b/client/public/vendor-logos/print/bblife.png differ diff --git a/client/public/vendor-logos/print/bcn3d.png b/client/public/vendor-logos/print/bcn3d.png new file mode 100644 index 000000000..caa7025d7 Binary files /dev/null and b/client/public/vendor-logos/print/bcn3d.png differ diff --git a/client/public/vendor-logos/print/bestfilament.png b/client/public/vendor-logos/print/bestfilament.png new file mode 100644 index 000000000..aab77ca2e Binary files /dev/null and b/client/public/vendor-logos/print/bestfilament.png differ diff --git a/client/public/vendor-logos/print/bing3d.png b/client/public/vendor-logos/print/bing3d.png new file mode 100644 index 000000000..d83535e42 Binary files /dev/null and b/client/public/vendor-logos/print/bing3d.png differ diff --git a/client/public/vendor-logos/print/biqu.png b/client/public/vendor-logos/print/biqu.png new file mode 100644 index 000000000..d68c3729c Binary files /dev/null and b/client/public/vendor-logos/print/biqu.png differ diff --git a/client/public/vendor-logos/print/black-forest-filaments.png b/client/public/vendor-logos/print/black-forest-filaments.png new file mode 100644 index 000000000..1c7d0f382 Binary files /dev/null and b/client/public/vendor-logos/print/black-forest-filaments.png differ diff --git a/client/public/vendor-logos/print/black-magic-3d.png b/client/public/vendor-logos/print/black-magic-3d.png new file mode 100644 index 000000000..6b5a67e8b Binary files /dev/null and b/client/public/vendor-logos/print/black-magic-3d.png differ diff --git a/client/public/vendor-logos/print/botfeeder.png b/client/public/vendor-logos/print/botfeeder.png new file mode 100644 index 000000000..f5d1e20bb Binary files /dev/null and b/client/public/vendor-logos/print/botfeeder.png differ diff --git a/client/public/vendor-logos/print/bq.png b/client/public/vendor-logos/print/bq.png new file mode 100644 index 000000000..4c4e9b790 Binary files /dev/null and b/client/public/vendor-logos/print/bq.png differ diff --git a/client/public/vendor-logos/print/buddy3d.png b/client/public/vendor-logos/print/buddy3d.png new file mode 100644 index 000000000..de837fbaf Binary files /dev/null and b/client/public/vendor-logos/print/buddy3d.png differ diff --git a/client/public/vendor-logos/print/california-filament.png b/client/public/vendor-logos/print/california-filament.png new file mode 100644 index 000000000..cc8d3b847 Binary files /dev/null and b/client/public/vendor-logos/print/california-filament.png differ diff --git a/client/public/vendor-logos/print/capital-3d.png b/client/public/vendor-logos/print/capital-3d.png new file mode 100644 index 000000000..1385194f7 Binary files /dev/null and b/client/public/vendor-logos/print/capital-3d.png differ diff --git a/client/public/vendor-logos/print/capricorn.png b/client/public/vendor-logos/print/capricorn.png new file mode 100644 index 000000000..cc471a68f Binary files /dev/null and b/client/public/vendor-logos/print/capricorn.png differ diff --git a/client/public/vendor-logos/print/carbon.png b/client/public/vendor-logos/print/carbon.png new file mode 100644 index 000000000..6e6908eca Binary files /dev/null and b/client/public/vendor-logos/print/carbon.png differ diff --git a/client/public/vendor-logos/print/cc3d.png b/client/public/vendor-logos/print/cc3d.png new file mode 100644 index 000000000..05acbddc3 Binary files /dev/null and b/client/public/vendor-logos/print/cc3d.png differ diff --git a/client/public/vendor-logos/print/cctree.png b/client/public/vendor-logos/print/cctree.png new file mode 100644 index 000000000..6d63f02cf Binary files /dev/null and b/client/public/vendor-logos/print/cctree.png differ diff --git a/client/public/vendor-logos/print/cel-robox.png b/client/public/vendor-logos/print/cel-robox.png new file mode 100644 index 000000000..d7bbcdb22 Binary files /dev/null and b/client/public/vendor-logos/print/cel-robox.png differ diff --git a/client/public/vendor-logos/print/cerprise.png b/client/public/vendor-logos/print/cerprise.png new file mode 100644 index 000000000..04e698934 Binary files /dev/null and b/client/public/vendor-logos/print/cerprise.png differ diff --git a/client/public/vendor-logos/print/chitu-systems.png b/client/public/vendor-logos/print/chitu-systems.png new file mode 100644 index 000000000..34d4ee08e Binary files /dev/null and b/client/public/vendor-logos/print/chitu-systems.png differ diff --git a/client/public/vendor-logos/print/chromatik.png b/client/public/vendor-logos/print/chromatik.png new file mode 100644 index 000000000..2f2bf270b Binary files /dev/null and b/client/public/vendor-logos/print/chromatik.png differ diff --git a/client/public/vendor-logos/print/clas-ohlson.png b/client/public/vendor-logos/print/clas-ohlson.png new file mode 100644 index 000000000..5d3e3e1ee Binary files /dev/null and b/client/public/vendor-logos/print/clas-ohlson.png differ diff --git a/client/public/vendor-logos/print/coex.png b/client/public/vendor-logos/print/coex.png new file mode 100644 index 000000000..36f50aed1 Binary files /dev/null and b/client/public/vendor-logos/print/coex.png differ diff --git a/client/public/vendor-logos/print/colido.png b/client/public/vendor-logos/print/colido.png new file mode 100644 index 000000000..d1adf5b5d Binary files /dev/null and b/client/public/vendor-logos/print/colido.png differ diff --git a/client/public/vendor-logos/print/colorfabb.png b/client/public/vendor-logos/print/colorfabb.png new file mode 100644 index 000000000..4a6525d24 Binary files /dev/null and b/client/public/vendor-logos/print/colorfabb.png differ diff --git a/client/public/vendor-logos/print/colorfil.png b/client/public/vendor-logos/print/colorfil.png new file mode 100644 index 000000000..b14476daa Binary files /dev/null and b/client/public/vendor-logos/print/colorfil.png differ diff --git a/client/public/vendor-logos/print/colorful.png b/client/public/vendor-logos/print/colorful.png new file mode 100644 index 000000000..e2830edb7 Binary files /dev/null and b/client/public/vendor-logos/print/colorful.png differ diff --git a/client/public/vendor-logos/print/comgrow.png b/client/public/vendor-logos/print/comgrow.png new file mode 100644 index 000000000..ef93798c8 Binary files /dev/null and b/client/public/vendor-logos/print/comgrow.png differ diff --git a/client/public/vendor-logos/print/cookiecad.png b/client/public/vendor-logos/print/cookiecad.png new file mode 100644 index 000000000..270f6927d Binary files /dev/null and b/client/public/vendor-logos/print/cookiecad.png differ diff --git a/client/public/vendor-logos/print/copper-3d.png b/client/public/vendor-logos/print/copper-3d.png new file mode 100644 index 000000000..5b9485de1 Binary files /dev/null and b/client/public/vendor-logos/print/copper-3d.png differ diff --git a/client/public/vendor-logos/print/copymaster3d.png b/client/public/vendor-logos/print/copymaster3d.png new file mode 100644 index 000000000..fabcf8ca0 Binary files /dev/null and b/client/public/vendor-logos/print/copymaster3d.png differ diff --git a/client/public/vendor-logos/print/cr3d.png b/client/public/vendor-logos/print/cr3d.png new file mode 100644 index 000000000..68a91e0ec Binary files /dev/null and b/client/public/vendor-logos/print/cr3d.png differ diff --git a/client/public/vendor-logos/print/creality.png b/client/public/vendor-logos/print/creality.png new file mode 100644 index 000000000..43dbbe806 Binary files /dev/null and b/client/public/vendor-logos/print/creality.png differ diff --git a/client/public/vendor-logos/print/creozone.png b/client/public/vendor-logos/print/creozone.png new file mode 100644 index 000000000..82e999bca Binary files /dev/null and b/client/public/vendor-logos/print/creozone.png differ diff --git a/client/public/vendor-logos/print/crofil-3d.png b/client/public/vendor-logos/print/crofil-3d.png new file mode 100644 index 000000000..ae56c8add Binary files /dev/null and b/client/public/vendor-logos/print/crofil-3d.png differ diff --git a/client/public/vendor-logos/print/cs3d.png b/client/public/vendor-logos/print/cs3d.png new file mode 100644 index 000000000..c7f4bdd13 Binary files /dev/null and b/client/public/vendor-logos/print/cs3d.png differ diff --git a/client/public/vendor-logos/print/d3d-sigma.png b/client/public/vendor-logos/print/d3d-sigma.png new file mode 100644 index 000000000..0c90b94b3 Binary files /dev/null and b/client/public/vendor-logos/print/d3d-sigma.png differ diff --git a/client/public/vendor-logos/print/das-filament.png b/client/public/vendor-logos/print/das-filament.png new file mode 100644 index 000000000..6505dab8a Binary files /dev/null and b/client/public/vendor-logos/print/das-filament.png differ diff --git a/client/public/vendor-logos/print/devil-design.png b/client/public/vendor-logos/print/devil-design.png new file mode 100644 index 000000000..9a1af51a5 Binary files /dev/null and b/client/public/vendor-logos/print/devil-design.png differ diff --git a/client/public/vendor-logos/print/dikale.png b/client/public/vendor-logos/print/dikale.png new file mode 100644 index 000000000..13bdf232a Binary files /dev/null and b/client/public/vendor-logos/print/dikale.png differ diff --git a/client/public/vendor-logos/print/do3d.png b/client/public/vendor-logos/print/do3d.png new file mode 100644 index 000000000..96c09711e Binary files /dev/null and b/client/public/vendor-logos/print/do3d.png differ diff --git a/client/public/vendor-logos/print/dowell-3d.png b/client/public/vendor-logos/print/dowell-3d.png new file mode 100644 index 000000000..6781dcca5 Binary files /dev/null and b/client/public/vendor-logos/print/dowell-3d.png differ diff --git a/client/public/vendor-logos/print/dr3d.png b/client/public/vendor-logos/print/dr3d.png new file mode 100644 index 000000000..541686aa1 Binary files /dev/null and b/client/public/vendor-logos/print/dr3d.png differ diff --git a/client/public/vendor-logos/print/dudv2.png b/client/public/vendor-logos/print/dudv2.png new file mode 100644 index 000000000..c61b260e0 Binary files /dev/null and b/client/public/vendor-logos/print/dudv2.png differ diff --git a/client/public/vendor-logos/print/duramic-3d.png b/client/public/vendor-logos/print/duramic-3d.png new file mode 100644 index 000000000..ea5b98843 Binary files /dev/null and b/client/public/vendor-logos/print/duramic-3d.png differ diff --git a/client/public/vendor-logos/print/dyair.png b/client/public/vendor-logos/print/dyair.png new file mode 100644 index 000000000..bf5a9ebe0 Binary files /dev/null and b/client/public/vendor-logos/print/dyair.png differ diff --git a/client/public/vendor-logos/print/eibos.png b/client/public/vendor-logos/print/eibos.png new file mode 100644 index 000000000..00a654997 Binary files /dev/null and b/client/public/vendor-logos/print/eibos.png differ diff --git a/client/public/vendor-logos/print/elegoo.png b/client/public/vendor-logos/print/elegoo.png new file mode 100644 index 000000000..ddf814dcb Binary files /dev/null and b/client/public/vendor-logos/print/elegoo.png differ diff --git a/client/public/vendor-logos/print/ender.png b/client/public/vendor-logos/print/ender.png new file mode 100644 index 000000000..f21792739 Binary files /dev/null and b/client/public/vendor-logos/print/ender.png differ diff --git a/client/public/vendor-logos/print/eono.png b/client/public/vendor-logos/print/eono.png new file mode 100644 index 000000000..cb373a521 Binary files /dev/null and b/client/public/vendor-logos/print/eono.png differ diff --git a/client/public/vendor-logos/print/epax.png b/client/public/vendor-logos/print/epax.png new file mode 100644 index 000000000..8feb16b5a Binary files /dev/null and b/client/public/vendor-logos/print/epax.png differ diff --git a/client/public/vendor-logos/print/eryone.png b/client/public/vendor-logos/print/eryone.png new file mode 100644 index 000000000..bd9987550 Binary files /dev/null and b/client/public/vendor-logos/print/eryone.png differ diff --git a/client/public/vendor-logos/print/esun.png b/client/public/vendor-logos/print/esun.png new file mode 100644 index 000000000..9290809a1 Binary files /dev/null and b/client/public/vendor-logos/print/esun.png differ diff --git a/client/public/vendor-logos/print/eureka.png b/client/public/vendor-logos/print/eureka.png new file mode 100644 index 000000000..afbe81c42 Binary files /dev/null and b/client/public/vendor-logos/print/eureka.png differ diff --git a/client/public/vendor-logos/print/extrudr.png b/client/public/vendor-logos/print/extrudr.png new file mode 100644 index 000000000..9ab8d7bd6 Binary files /dev/null and b/client/public/vendor-logos/print/extrudr.png differ diff --git a/client/public/vendor-logos/print/fdplast.png b/client/public/vendor-logos/print/fdplast.png new file mode 100644 index 000000000..6655453ea Binary files /dev/null and b/client/public/vendor-logos/print/fdplast.png differ diff --git a/client/public/vendor-logos/print/fiberlogy.png b/client/public/vendor-logos/print/fiberlogy.png new file mode 100644 index 000000000..6363176fd Binary files /dev/null and b/client/public/vendor-logos/print/fiberlogy.png differ diff --git a/client/public/vendor-logos/print/fiberon.png b/client/public/vendor-logos/print/fiberon.png new file mode 100644 index 000000000..05e6ba4fb Binary files /dev/null and b/client/public/vendor-logos/print/fiberon.png differ diff --git a/client/public/vendor-logos/print/fil-x.png b/client/public/vendor-logos/print/fil-x.png new file mode 100644 index 000000000..735296409 Binary files /dev/null and b/client/public/vendor-logos/print/fil-x.png differ diff --git a/client/public/vendor-logos/print/filabees.png b/client/public/vendor-logos/print/filabees.png new file mode 100644 index 000000000..125521930 Binary files /dev/null and b/client/public/vendor-logos/print/filabees.png differ diff --git a/client/public/vendor-logos/print/filablend.png b/client/public/vendor-logos/print/filablend.png new file mode 100644 index 000000000..8cb39e98a Binary files /dev/null and b/client/public/vendor-logos/print/filablend.png differ diff --git a/client/public/vendor-logos/print/filabotics.png b/client/public/vendor-logos/print/filabotics.png new file mode 100644 index 000000000..5009c860f Binary files /dev/null and b/client/public/vendor-logos/print/filabotics.png differ diff --git a/client/public/vendor-logos/print/filacube.png b/client/public/vendor-logos/print/filacube.png new file mode 100644 index 000000000..5341b722e Binary files /dev/null and b/client/public/vendor-logos/print/filacube.png differ diff --git a/client/public/vendor-logos/print/filalab.png b/client/public/vendor-logos/print/filalab.png new file mode 100644 index 000000000..1dd575ee6 Binary files /dev/null and b/client/public/vendor-logos/print/filalab.png differ diff --git a/client/public/vendor-logos/print/filament-hub.png b/client/public/vendor-logos/print/filament-hub.png new file mode 100644 index 000000000..d8c2a1001 Binary files /dev/null and b/client/public/vendor-logos/print/filament-hub.png differ diff --git a/client/public/vendor-logos/print/filament-pm.png b/client/public/vendor-logos/print/filament-pm.png new file mode 100644 index 000000000..292310f3d Binary files /dev/null and b/client/public/vendor-logos/print/filament-pm.png differ diff --git a/client/public/vendor-logos/print/filamentive.png b/client/public/vendor-logos/print/filamentive.png new file mode 100644 index 000000000..684127549 Binary files /dev/null and b/client/public/vendor-logos/print/filamentive.png differ diff --git a/client/public/vendor-logos/print/filamentone.png b/client/public/vendor-logos/print/filamentone.png new file mode 100644 index 000000000..7131c8937 Binary files /dev/null and b/client/public/vendor-logos/print/filamentone.png differ diff --git a/client/public/vendor-logos/print/filamentos-3d-brasil.png b/client/public/vendor-logos/print/filamentos-3d-brasil.png new file mode 100644 index 000000000..ceaa84a1a Binary files /dev/null and b/client/public/vendor-logos/print/filamentos-3d-brasil.png differ diff --git a/client/public/vendor-logos/print/filaments-depot.png b/client/public/vendor-logos/print/filaments-depot.png new file mode 100644 index 000000000..07fcfec7c Binary files /dev/null and b/client/public/vendor-logos/print/filaments-depot.png differ diff --git a/client/public/vendor-logos/print/filamentsca.png b/client/public/vendor-logos/print/filamentsca.png new file mode 100644 index 000000000..e6b55430b Binary files /dev/null and b/client/public/vendor-logos/print/filamentsca.png differ diff --git a/client/public/vendor-logos/print/filamentworld.png b/client/public/vendor-logos/print/filamentworld.png new file mode 100644 index 000000000..369637101 Binary files /dev/null and b/client/public/vendor-logos/print/filamentworld.png differ diff --git a/client/public/vendor-logos/print/filanora.png b/client/public/vendor-logos/print/filanora.png new file mode 100644 index 000000000..39cb69d77 Binary files /dev/null and b/client/public/vendor-logos/print/filanora.png differ diff --git a/client/public/vendor-logos/print/filatex3d.png b/client/public/vendor-logos/print/filatex3d.png new file mode 100644 index 000000000..1748e0cba Binary files /dev/null and b/client/public/vendor-logos/print/filatex3d.png differ diff --git a/client/public/vendor-logos/print/filaxix.png b/client/public/vendor-logos/print/filaxix.png new file mode 100644 index 000000000..11615a8ca Binary files /dev/null and b/client/public/vendor-logos/print/filaxix.png differ diff --git a/client/public/vendor-logos/print/fillamentum.png b/client/public/vendor-logos/print/fillamentum.png new file mode 100644 index 000000000..5aeef2e05 Binary files /dev/null and b/client/public/vendor-logos/print/fillamentum.png differ diff --git a/client/public/vendor-logos/print/filoalfa.png b/client/public/vendor-logos/print/filoalfa.png new file mode 100644 index 000000000..f25a74dab Binary files /dev/null and b/client/public/vendor-logos/print/filoalfa.png differ diff --git a/client/public/vendor-logos/print/filright.png b/client/public/vendor-logos/print/filright.png new file mode 100644 index 000000000..cc5cf31a1 Binary files /dev/null and b/client/public/vendor-logos/print/filright.png differ diff --git a/client/public/vendor-logos/print/firos.png b/client/public/vendor-logos/print/firos.png new file mode 100644 index 000000000..df3b7aff6 Binary files /dev/null and b/client/public/vendor-logos/print/firos.png differ diff --git a/client/public/vendor-logos/print/flashforge.png b/client/public/vendor-logos/print/flashforge.png new file mode 100644 index 000000000..d894f9423 Binary files /dev/null and b/client/public/vendor-logos/print/flashforge.png differ diff --git a/client/public/vendor-logos/print/formfutura.png b/client/public/vendor-logos/print/formfutura.png new file mode 100644 index 000000000..d7c160a94 Binary files /dev/null and b/client/public/vendor-logos/print/formfutura.png differ diff --git a/client/public/vendor-logos/print/forshape.png b/client/public/vendor-logos/print/forshape.png new file mode 100644 index 000000000..3d52f856a Binary files /dev/null and b/client/public/vendor-logos/print/forshape.png differ diff --git a/client/public/vendor-logos/print/fortis-filaments.png b/client/public/vendor-logos/print/fortis-filaments.png new file mode 100644 index 000000000..09811d7a1 Binary files /dev/null and b/client/public/vendor-logos/print/fortis-filaments.png differ diff --git a/client/public/vendor-logos/print/fovfo.png b/client/public/vendor-logos/print/fovfo.png new file mode 100644 index 000000000..43703c106 Binary files /dev/null and b/client/public/vendor-logos/print/fovfo.png differ diff --git a/client/public/vendor-logos/print/fugacity.png b/client/public/vendor-logos/print/fugacity.png new file mode 100644 index 000000000..d50bd1f19 Binary files /dev/null and b/client/public/vendor-logos/print/fugacity.png differ diff --git a/client/public/vendor-logos/print/fulament.png b/client/public/vendor-logos/print/fulament.png new file mode 100644 index 000000000..8bb3dbfac Binary files /dev/null and b/client/public/vendor-logos/print/fulament.png differ diff --git a/client/public/vendor-logos/print/fused-materials.png b/client/public/vendor-logos/print/fused-materials.png new file mode 100644 index 000000000..7154fa6e2 Binary files /dev/null and b/client/public/vendor-logos/print/fused-materials.png differ diff --git a/client/public/vendor-logos/print/fusion-filaments.png b/client/public/vendor-logos/print/fusion-filaments.png new file mode 100644 index 000000000..aefc276ab Binary files /dev/null and b/client/public/vendor-logos/print/fusion-filaments.png differ diff --git a/client/public/vendor-logos/print/g3d-pro-grossiste-3d.png b/client/public/vendor-logos/print/g3d-pro-grossiste-3d.png new file mode 100644 index 000000000..345150039 Binary files /dev/null and b/client/public/vendor-logos/print/g3d-pro-grossiste-3d.png differ diff --git a/client/public/vendor-logos/print/geeetech.png b/client/public/vendor-logos/print/geeetech.png new file mode 100644 index 000000000..515d8d590 Binary files /dev/null and b/client/public/vendor-logos/print/geeetech.png differ diff --git a/client/public/vendor-logos/print/gembird.png b/client/public/vendor-logos/print/gembird.png new file mode 100644 index 000000000..738dc4471 Binary files /dev/null and b/client/public/vendor-logos/print/gembird.png differ diff --git a/client/public/vendor-logos/print/giantarm.png b/client/public/vendor-logos/print/giantarm.png new file mode 100644 index 000000000..74bb2b551 Binary files /dev/null and b/client/public/vendor-logos/print/giantarm.png differ diff --git a/client/public/vendor-logos/print/gizmo-dorks.png b/client/public/vendor-logos/print/gizmo-dorks.png new file mode 100644 index 000000000..468474111 Binary files /dev/null and b/client/public/vendor-logos/print/gizmo-dorks.png differ diff --git a/client/public/vendor-logos/print/gnvtntp.png b/client/public/vendor-logos/print/gnvtntp.png new file mode 100644 index 000000000..1993162f2 Binary files /dev/null and b/client/public/vendor-logos/print/gnvtntp.png differ diff --git a/client/public/vendor-logos/print/golgeo.png b/client/public/vendor-logos/print/golgeo.png new file mode 100644 index 000000000..2e0588fc5 Binary files /dev/null and b/client/public/vendor-logos/print/golgeo.png differ diff --git a/client/public/vendor-logos/print/goto-guard.png b/client/public/vendor-logos/print/goto-guard.png new file mode 100644 index 000000000..0e5d03007 Binary files /dev/null and b/client/public/vendor-logos/print/goto-guard.png differ diff --git a/client/public/vendor-logos/print/gratkit.png b/client/public/vendor-logos/print/gratkit.png new file mode 100644 index 000000000..06a08c11b Binary files /dev/null and b/client/public/vendor-logos/print/gratkit.png differ diff --git a/client/public/vendor-logos/print/greengate3d.png b/client/public/vendor-logos/print/greengate3d.png new file mode 100644 index 000000000..aefc57fb2 Binary files /dev/null and b/client/public/vendor-logos/print/greengate3d.png differ diff --git a/client/public/vendor-logos/print/grilon3.png b/client/public/vendor-logos/print/grilon3.png new file mode 100644 index 000000000..50e0a5116 Binary files /dev/null and b/client/public/vendor-logos/print/grilon3.png differ diff --git a/client/public/vendor-logos/print/gryddle.png b/client/public/vendor-logos/print/gryddle.png new file mode 100644 index 000000000..f669970d7 Binary files /dev/null and b/client/public/vendor-logos/print/gryddle.png differ diff --git a/client/public/vendor-logos/print/gst-3d.png b/client/public/vendor-logos/print/gst-3d.png new file mode 100644 index 000000000..11e5a6dc4 Binary files /dev/null and b/client/public/vendor-logos/print/gst-3d.png differ diff --git a/client/public/vendor-logos/print/gtmax.png b/client/public/vendor-logos/print/gtmax.png new file mode 100644 index 000000000..bf24ac5f5 Binary files /dev/null and b/client/public/vendor-logos/print/gtmax.png differ diff --git a/client/public/vendor-logos/print/handtmann.png b/client/public/vendor-logos/print/handtmann.png new file mode 100644 index 000000000..d2e36d6f4 Binary files /dev/null and b/client/public/vendor-logos/print/handtmann.png differ diff --git a/client/public/vendor-logos/print/hatchbox.png b/client/public/vendor-logos/print/hatchbox.png new file mode 100644 index 000000000..880e14f9a Binary files /dev/null and b/client/public/vendor-logos/print/hatchbox.png differ diff --git a/client/public/vendor-logos/print/hellbot.png b/client/public/vendor-logos/print/hellbot.png new file mode 100644 index 000000000..2acd523d6 Binary files /dev/null and b/client/public/vendor-logos/print/hellbot.png differ diff --git a/client/public/vendor-logos/print/hello3d.png b/client/public/vendor-logos/print/hello3d.png new file mode 100644 index 000000000..9709214d0 Binary files /dev/null and b/client/public/vendor-logos/print/hello3d.png differ diff --git a/client/public/vendor-logos/print/hzst-3d.png b/client/public/vendor-logos/print/hzst-3d.png new file mode 100644 index 000000000..7f2870fe2 Binary files /dev/null and b/client/public/vendor-logos/print/hzst-3d.png differ diff --git a/client/public/vendor-logos/print/i3d-tested.png b/client/public/vendor-logos/print/i3d-tested.png new file mode 100644 index 000000000..78c0d81bd Binary files /dev/null and b/client/public/vendor-logos/print/i3d-tested.png differ diff --git a/client/public/vendor-logos/print/iboss.png b/client/public/vendor-logos/print/iboss.png new file mode 100644 index 000000000..9959e9144 Binary files /dev/null and b/client/public/vendor-logos/print/iboss.png differ diff --git a/client/public/vendor-logos/print/ic3d.png b/client/public/vendor-logos/print/ic3d.png new file mode 100644 index 000000000..45191a102 Binary files /dev/null and b/client/public/vendor-logos/print/ic3d.png differ diff --git a/client/public/vendor-logos/print/ice.png b/client/public/vendor-logos/print/ice.png new file mode 100644 index 000000000..845f6440c Binary files /dev/null and b/client/public/vendor-logos/print/ice.png differ diff --git a/client/public/vendor-logos/print/iemai.png b/client/public/vendor-logos/print/iemai.png new file mode 100644 index 000000000..c47ce49fe Binary files /dev/null and b/client/public/vendor-logos/print/iemai.png differ diff --git a/client/public/vendor-logos/print/ifilament.png b/client/public/vendor-logos/print/ifilament.png new file mode 100644 index 000000000..596b55884 Binary files /dev/null and b/client/public/vendor-logos/print/ifilament.png differ diff --git a/client/public/vendor-logos/print/igus.png b/client/public/vendor-logos/print/igus.png new file mode 100644 index 000000000..d970a68e1 Binary files /dev/null and b/client/public/vendor-logos/print/igus.png differ diff --git a/client/public/vendor-logos/print/iiid-max.png b/client/public/vendor-logos/print/iiid-max.png new file mode 100644 index 000000000..e6b303af2 Binary files /dev/null and b/client/public/vendor-logos/print/iiid-max.png differ diff --git a/client/public/vendor-logos/print/inkstation.png b/client/public/vendor-logos/print/inkstation.png new file mode 100644 index 000000000..74c9ef48e Binary files /dev/null and b/client/public/vendor-logos/print/inkstation.png differ diff --git a/client/public/vendor-logos/print/inland.png b/client/public/vendor-logos/print/inland.png new file mode 100644 index 000000000..2e2081324 Binary files /dev/null and b/client/public/vendor-logos/print/inland.png differ diff --git a/client/public/vendor-logos/print/innofil-3d.png b/client/public/vendor-logos/print/innofil-3d.png new file mode 100644 index 000000000..9dcb56879 Binary files /dev/null and b/client/public/vendor-logos/print/innofil-3d.png differ diff --git a/client/public/vendor-logos/print/inslogic.png b/client/public/vendor-logos/print/inslogic.png new file mode 100644 index 000000000..66c465e0a Binary files /dev/null and b/client/public/vendor-logos/print/inslogic.png differ diff --git a/client/public/vendor-logos/print/isanghu.png b/client/public/vendor-logos/print/isanghu.png new file mode 100644 index 000000000..dbc52210b Binary files /dev/null and b/client/public/vendor-logos/print/isanghu.png differ diff --git a/client/public/vendor-logos/print/isanmate.png b/client/public/vendor-logos/print/isanmate.png new file mode 100644 index 000000000..6802e5381 Binary files /dev/null and b/client/public/vendor-logos/print/isanmate.png differ diff --git a/client/public/vendor-logos/print/iwecolor.png b/client/public/vendor-logos/print/iwecolor.png new file mode 100644 index 000000000..451b312e6 Binary files /dev/null and b/client/public/vendor-logos/print/iwecolor.png differ diff --git a/client/public/vendor-logos/print/jamg-he.png b/client/public/vendor-logos/print/jamg-he.png new file mode 100644 index 000000000..3f55398f4 Binary files /dev/null and b/client/public/vendor-logos/print/jamg-he.png differ diff --git a/client/public/vendor-logos/print/janbex.png b/client/public/vendor-logos/print/janbex.png new file mode 100644 index 000000000..6cd3dd386 Binary files /dev/null and b/client/public/vendor-logos/print/janbex.png differ diff --git a/client/public/vendor-logos/print/jarees.png b/client/public/vendor-logos/print/jarees.png new file mode 100644 index 000000000..da562467f Binary files /dev/null and b/client/public/vendor-logos/print/jarees.png differ diff --git a/client/public/vendor-logos/print/jayo.png b/client/public/vendor-logos/print/jayo.png new file mode 100644 index 000000000..c369456d9 Binary files /dev/null and b/client/public/vendor-logos/print/jayo.png differ diff --git a/client/public/vendor-logos/print/jiufu.png b/client/public/vendor-logos/print/jiufu.png new file mode 100644 index 000000000..7fdbb339a Binary files /dev/null and b/client/public/vendor-logos/print/jiufu.png differ diff --git a/client/public/vendor-logos/print/justmaker.png b/client/public/vendor-logos/print/justmaker.png new file mode 100644 index 000000000..5ddd106cf Binary files /dev/null and b/client/public/vendor-logos/print/justmaker.png differ diff --git a/client/public/vendor-logos/print/kaaber.png b/client/public/vendor-logos/print/kaaber.png new file mode 100644 index 000000000..cb11375ae Binary files /dev/null and b/client/public/vendor-logos/print/kaaber.png differ diff --git a/client/public/vendor-logos/print/kaisertech.png b/client/public/vendor-logos/print/kaisertech.png new file mode 100644 index 000000000..046362052 Binary files /dev/null and b/client/public/vendor-logos/print/kaisertech.png differ diff --git a/client/public/vendor-logos/print/keene-village-plastics.png b/client/public/vendor-logos/print/keene-village-plastics.png new file mode 100644 index 000000000..c1ad4a3d2 Binary files /dev/null and b/client/public/vendor-logos/print/keene-village-plastics.png differ diff --git a/client/public/vendor-logos/print/kexcelled.png b/client/public/vendor-logos/print/kexcelled.png new file mode 100644 index 000000000..8d937b4df Binary files /dev/null and b/client/public/vendor-logos/print/kexcelled.png differ diff --git a/client/public/vendor-logos/print/kimya.png b/client/public/vendor-logos/print/kimya.png new file mode 100644 index 000000000..b6aeaafb4 Binary files /dev/null and b/client/public/vendor-logos/print/kimya.png differ diff --git a/client/public/vendor-logos/print/kingroon.png b/client/public/vendor-logos/print/kingroon.png new file mode 100644 index 000000000..1eb67736c Binary files /dev/null and b/client/public/vendor-logos/print/kingroon.png differ diff --git a/client/public/vendor-logos/print/kinluot.png b/client/public/vendor-logos/print/kinluot.png new file mode 100644 index 000000000..b3d30f4fe Binary files /dev/null and b/client/public/vendor-logos/print/kinluot.png differ diff --git a/client/public/vendor-logos/print/kiwi3d.png b/client/public/vendor-logos/print/kiwi3d.png new file mode 100644 index 000000000..957b093cb Binary files /dev/null and b/client/public/vendor-logos/print/kiwi3d.png differ diff --git a/client/public/vendor-logos/print/kodak.png b/client/public/vendor-logos/print/kodak.png new file mode 100644 index 000000000..d7ad3a1bc Binary files /dev/null and b/client/public/vendor-logos/print/kodak.png differ diff --git a/client/public/vendor-logos/print/kretrum.png b/client/public/vendor-logos/print/kretrum.png new file mode 100644 index 000000000..16b1c87f8 Binary files /dev/null and b/client/public/vendor-logos/print/kretrum.png differ diff --git a/client/public/vendor-logos/print/landu.png b/client/public/vendor-logos/print/landu.png new file mode 100644 index 000000000..78601bcc4 Binary files /dev/null and b/client/public/vendor-logos/print/landu.png differ diff --git a/client/public/vendor-logos/print/lbl-ua.png b/client/public/vendor-logos/print/lbl-ua.png new file mode 100644 index 000000000..4b490dc62 Binary files /dev/null and b/client/public/vendor-logos/print/lbl-ua.png differ diff --git a/client/public/vendor-logos/print/lehvoss.png b/client/public/vendor-logos/print/lehvoss.png new file mode 100644 index 000000000..70e4f3af5 Binary files /dev/null and b/client/public/vendor-logos/print/lehvoss.png differ diff --git a/client/public/vendor-logos/print/locyfens.png b/client/public/vendor-logos/print/locyfens.png new file mode 100644 index 000000000..697e192c5 Binary files /dev/null and b/client/public/vendor-logos/print/locyfens.png differ diff --git a/client/public/vendor-logos/print/loneness.png b/client/public/vendor-logos/print/loneness.png new file mode 100644 index 000000000..6a9e4ae08 Binary files /dev/null and b/client/public/vendor-logos/print/loneness.png differ diff --git a/client/public/vendor-logos/print/lotactree.png b/client/public/vendor-logos/print/lotactree.png new file mode 100644 index 000000000..3a594cda7 Binary files /dev/null and b/client/public/vendor-logos/print/lotactree.png differ diff --git a/client/public/vendor-logos/print/lovoon.png b/client/public/vendor-logos/print/lovoon.png new file mode 100644 index 000000000..0e0a25809 Binary files /dev/null and b/client/public/vendor-logos/print/lovoon.png differ diff --git a/client/public/vendor-logos/print/lume.png b/client/public/vendor-logos/print/lume.png new file mode 100644 index 000000000..91886ab34 Binary files /dev/null and b/client/public/vendor-logos/print/lume.png differ diff --git a/client/public/vendor-logos/print/maertz.png b/client/public/vendor-logos/print/maertz.png new file mode 100644 index 000000000..c42bd7bea Binary files /dev/null and b/client/public/vendor-logos/print/maertz.png differ diff --git a/client/public/vendor-logos/print/makerbot.png b/client/public/vendor-logos/print/makerbot.png new file mode 100644 index 000000000..f0e542116 Binary files /dev/null and b/client/public/vendor-logos/print/makerbot.png differ diff --git a/client/public/vendor-logos/print/markforged.png b/client/public/vendor-logos/print/markforged.png new file mode 100644 index 000000000..183a89d1c Binary files /dev/null and b/client/public/vendor-logos/print/markforged.png differ diff --git a/client/public/vendor-logos/print/marswork.png b/client/public/vendor-logos/print/marswork.png new file mode 100644 index 000000000..cdbc76b31 Binary files /dev/null and b/client/public/vendor-logos/print/marswork.png differ diff --git a/client/public/vendor-logos/print/material4print.png b/client/public/vendor-logos/print/material4print.png new file mode 100644 index 000000000..164f35e34 Binary files /dev/null and b/client/public/vendor-logos/print/material4print.png differ diff --git a/client/public/vendor-logos/print/matter3d.png b/client/public/vendor-logos/print/matter3d.png new file mode 100644 index 000000000..48c3725b1 Binary files /dev/null and b/client/public/vendor-logos/print/matter3d.png differ diff --git a/client/public/vendor-logos/print/matterhackers.png b/client/public/vendor-logos/print/matterhackers.png new file mode 100644 index 000000000..75f83b361 Binary files /dev/null and b/client/public/vendor-logos/print/matterhackers.png differ diff --git a/client/public/vendor-logos/print/menetee.png b/client/public/vendor-logos/print/menetee.png new file mode 100644 index 000000000..a9472ba92 Binary files /dev/null and b/client/public/vendor-logos/print/menetee.png differ diff --git a/client/public/vendor-logos/print/mg-chemicals.png b/client/public/vendor-logos/print/mg-chemicals.png new file mode 100644 index 000000000..144626d1b Binary files /dev/null and b/client/public/vendor-logos/print/mg-chemicals.png differ diff --git a/client/public/vendor-logos/print/mh-build.png b/client/public/vendor-logos/print/mh-build.png new file mode 100644 index 000000000..da52cabb7 Binary files /dev/null and b/client/public/vendor-logos/print/mh-build.png differ diff --git a/client/public/vendor-logos/print/mika3d.png b/client/public/vendor-logos/print/mika3d.png new file mode 100644 index 000000000..aeaf41231 Binary files /dev/null and b/client/public/vendor-logos/print/mika3d.png differ diff --git a/client/public/vendor-logos/print/mkoem.png b/client/public/vendor-logos/print/mkoem.png new file mode 100644 index 000000000..5b5fcf64d Binary files /dev/null and b/client/public/vendor-logos/print/mkoem.png differ diff --git a/client/public/vendor-logos/print/monofilament-ua.png b/client/public/vendor-logos/print/monofilament-ua.png new file mode 100644 index 000000000..71887be32 Binary files /dev/null and b/client/public/vendor-logos/print/monofilament-ua.png differ diff --git a/client/public/vendor-logos/print/monoprice.png b/client/public/vendor-logos/print/monoprice.png new file mode 100644 index 000000000..011e38422 Binary files /dev/null and b/client/public/vendor-logos/print/monoprice.png differ diff --git a/client/public/vendor-logos/print/mosaic.png b/client/public/vendor-logos/print/mosaic.png new file mode 100644 index 000000000..3f9bd4f80 Binary files /dev/null and b/client/public/vendor-logos/print/mosaic.png differ diff --git a/client/public/vendor-logos/print/naga.png b/client/public/vendor-logos/print/naga.png new file mode 100644 index 000000000..8fe5584c8 Binary files /dev/null and b/client/public/vendor-logos/print/naga.png differ diff --git a/client/public/vendor-logos/print/nanocaddo.png b/client/public/vendor-logos/print/nanocaddo.png new file mode 100644 index 000000000..2f0c3d1cd Binary files /dev/null and b/client/public/vendor-logos/print/nanocaddo.png differ diff --git a/client/public/vendor-logos/print/nebula.png b/client/public/vendor-logos/print/nebula.png new file mode 100644 index 000000000..f4a9bb120 Binary files /dev/null and b/client/public/vendor-logos/print/nebula.png differ diff --git a/client/public/vendor-logos/print/neofil3d.png b/client/public/vendor-logos/print/neofil3d.png new file mode 100644 index 000000000..569659d29 Binary files /dev/null and b/client/public/vendor-logos/print/neofil3d.png differ diff --git a/client/public/vendor-logos/print/new-matter.png b/client/public/vendor-logos/print/new-matter.png new file mode 100644 index 000000000..91e039839 Binary files /dev/null and b/client/public/vendor-logos/print/new-matter.png differ diff --git a/client/public/vendor-logos/print/ninjatek.png b/client/public/vendor-logos/print/ninjatek.png new file mode 100644 index 000000000..2b45d8484 Binary files /dev/null and b/client/public/vendor-logos/print/ninjatek.png differ diff --git a/client/public/vendor-logos/print/nobufil.png b/client/public/vendor-logos/print/nobufil.png new file mode 100644 index 000000000..9a31a06c8 Binary files /dev/null and b/client/public/vendor-logos/print/nobufil.png differ diff --git a/client/public/vendor-logos/print/novamaker.png b/client/public/vendor-logos/print/novamaker.png new file mode 100644 index 000000000..d7b2610ee Binary files /dev/null and b/client/public/vendor-logos/print/novamaker.png differ diff --git a/client/public/vendor-logos/print/numakers.png b/client/public/vendor-logos/print/numakers.png new file mode 100644 index 000000000..928430546 Binary files /dev/null and b/client/public/vendor-logos/print/numakers.png differ diff --git a/client/public/vendor-logos/print/octofiber.png b/client/public/vendor-logos/print/octofiber.png new file mode 100644 index 000000000..6a16d2765 Binary files /dev/null and b/client/public/vendor-logos/print/octofiber.png differ diff --git a/client/public/vendor-logos/print/ooznest.png b/client/public/vendor-logos/print/ooznest.png new file mode 100644 index 000000000..e66456d4d Binary files /dev/null and b/client/public/vendor-logos/print/ooznest.png differ diff --git a/client/public/vendor-logos/print/overture.png b/client/public/vendor-logos/print/overture.png new file mode 100644 index 000000000..3bf625667 Binary files /dev/null and b/client/public/vendor-logos/print/overture.png differ diff --git a/client/public/vendor-logos/print/ovv3d.png b/client/public/vendor-logos/print/ovv3d.png new file mode 100644 index 000000000..a008e9b85 Binary files /dev/null and b/client/public/vendor-logos/print/ovv3d.png differ diff --git a/client/public/vendor-logos/print/owl-filament.png b/client/public/vendor-logos/print/owl-filament.png new file mode 100644 index 000000000..1d8fd0333 Binary files /dev/null and b/client/public/vendor-logos/print/owl-filament.png differ diff --git a/client/public/vendor-logos/print/panchroma.png b/client/public/vendor-logos/print/panchroma.png new file mode 100644 index 000000000..396788ff1 Binary files /dev/null and b/client/public/vendor-logos/print/panchroma.png differ diff --git a/client/public/vendor-logos/print/paramount-3d.png b/client/public/vendor-logos/print/paramount-3d.png new file mode 100644 index 000000000..dd32ba78e Binary files /dev/null and b/client/public/vendor-logos/print/paramount-3d.png differ diff --git a/client/public/vendor-logos/print/patona.png b/client/public/vendor-logos/print/patona.png new file mode 100644 index 000000000..31bca432c Binary files /dev/null and b/client/public/vendor-logos/print/patona.png differ diff --git a/client/public/vendor-logos/print/peakace.png b/client/public/vendor-logos/print/peakace.png new file mode 100644 index 000000000..6c48682bf Binary files /dev/null and b/client/public/vendor-logos/print/peakace.png differ diff --git a/client/public/vendor-logos/print/pinrui.png b/client/public/vendor-logos/print/pinrui.png new file mode 100644 index 000000000..f78ba8c5f Binary files /dev/null and b/client/public/vendor-logos/print/pinrui.png differ diff --git a/client/public/vendor-logos/print/plas3d.png b/client/public/vendor-logos/print/plas3d.png new file mode 100644 index 000000000..ad9722b35 Binary files /dev/null and b/client/public/vendor-logos/print/plas3d.png differ diff --git a/client/public/vendor-logos/print/plasport.png b/client/public/vendor-logos/print/plasport.png new file mode 100644 index 000000000..2b04e2e3a Binary files /dev/null and b/client/public/vendor-logos/print/plasport.png differ diff --git a/client/public/vendor-logos/print/plasticz.png b/client/public/vendor-logos/print/plasticz.png new file mode 100644 index 000000000..05351e587 Binary files /dev/null and b/client/public/vendor-logos/print/plasticz.png differ diff --git a/client/public/vendor-logos/print/polar-filament.png b/client/public/vendor-logos/print/polar-filament.png new file mode 100644 index 000000000..79b16a2ee Binary files /dev/null and b/client/public/vendor-logos/print/polar-filament.png differ diff --git a/client/public/vendor-logos/print/polaroid.png b/client/public/vendor-logos/print/polaroid.png new file mode 100644 index 000000000..f3953f53c Binary files /dev/null and b/client/public/vendor-logos/print/polaroid.png differ diff --git a/client/public/vendor-logos/print/polyalchemy.png b/client/public/vendor-logos/print/polyalchemy.png new file mode 100644 index 000000000..510d24ce1 Binary files /dev/null and b/client/public/vendor-logos/print/polyalchemy.png differ diff --git a/client/public/vendor-logos/print/polymaker.png b/client/public/vendor-logos/print/polymaker.png new file mode 100644 index 000000000..3c196b869 Binary files /dev/null and b/client/public/vendor-logos/print/polymaker.png differ diff --git a/client/public/vendor-logos/print/polyprinter.png b/client/public/vendor-logos/print/polyprinter.png new file mode 100644 index 000000000..b0540b27e Binary files /dev/null and b/client/public/vendor-logos/print/polyprinter.png differ diff --git a/client/public/vendor-logos/print/priline-3d.png b/client/public/vendor-logos/print/priline-3d.png new file mode 100644 index 000000000..e1c1907c8 Binary files /dev/null and b/client/public/vendor-logos/print/priline-3d.png differ diff --git a/client/public/vendor-logos/print/primacreator.png b/client/public/vendor-logos/print/primacreator.png new file mode 100644 index 000000000..ba11a96b4 Binary files /dev/null and b/client/public/vendor-logos/print/primacreator.png differ diff --git a/client/public/vendor-logos/print/primaselect.png b/client/public/vendor-logos/print/primaselect.png new file mode 100644 index 000000000..86cb53715 Binary files /dev/null and b/client/public/vendor-logos/print/primaselect.png differ diff --git a/client/public/vendor-logos/print/primavalue.png b/client/public/vendor-logos/print/primavalue.png new file mode 100644 index 000000000..1c92ec2ee Binary files /dev/null and b/client/public/vendor-logos/print/primavalue.png differ diff --git a/client/public/vendor-logos/print/print-me.png b/client/public/vendor-logos/print/print-me.png new file mode 100644 index 000000000..67e1bdc66 Binary files /dev/null and b/client/public/vendor-logos/print/print-me.png differ diff --git a/client/public/vendor-logos/print/printalot.png b/client/public/vendor-logos/print/printalot.png new file mode 100644 index 000000000..26e019c1d Binary files /dev/null and b/client/public/vendor-logos/print/printalot.png differ diff --git a/client/public/vendor-logos/print/printbed.png b/client/public/vendor-logos/print/printbed.png new file mode 100644 index 000000000..61e31fdbc Binary files /dev/null and b/client/public/vendor-logos/print/printbed.png differ diff --git a/client/public/vendor-logos/print/printed-solid.png b/client/public/vendor-logos/print/printed-solid.png new file mode 100644 index 000000000..d0d7de833 Binary files /dev/null and b/client/public/vendor-logos/print/printed-solid.png differ diff --git a/client/public/vendor-logos/print/pritonic.png b/client/public/vendor-logos/print/pritonic.png new file mode 100644 index 000000000..ee5984dc2 Binary files /dev/null and b/client/public/vendor-logos/print/pritonic.png differ diff --git a/client/public/vendor-logos/print/prografen.png b/client/public/vendor-logos/print/prografen.png new file mode 100644 index 000000000..2d0c958a5 Binary files /dev/null and b/client/public/vendor-logos/print/prografen.png differ diff --git a/client/public/vendor-logos/print/prorock.png b/client/public/vendor-logos/print/prorock.png new file mode 100644 index 000000000..dc7bbcabf Binary files /dev/null and b/client/public/vendor-logos/print/prorock.png differ diff --git a/client/public/vendor-logos/print/protech.png b/client/public/vendor-logos/print/protech.png new file mode 100644 index 000000000..675efef47 Binary files /dev/null and b/client/public/vendor-logos/print/protech.png differ diff --git a/client/public/vendor-logos/print/protopasta.png b/client/public/vendor-logos/print/protopasta.png new file mode 100644 index 000000000..fa71adb9a Binary files /dev/null and b/client/public/vendor-logos/print/protopasta.png differ diff --git a/client/public/vendor-logos/print/prusa.png b/client/public/vendor-logos/print/prusa.png new file mode 100644 index 000000000..6f5cf2063 Binary files /dev/null and b/client/public/vendor-logos/print/prusa.png differ diff --git a/client/public/vendor-logos/print/prusament.png b/client/public/vendor-logos/print/prusament.png new file mode 100644 index 000000000..61b7af903 Binary files /dev/null and b/client/public/vendor-logos/print/prusament.png differ diff --git a/client/public/vendor-logos/print/purefil.png b/client/public/vendor-logos/print/purefil.png new file mode 100644 index 000000000..99870e556 Binary files /dev/null and b/client/public/vendor-logos/print/purefil.png differ diff --git a/client/public/vendor-logos/print/push-plastic.png b/client/public/vendor-logos/print/push-plastic.png new file mode 100644 index 000000000..a4829cddb Binary files /dev/null and b/client/public/vendor-logos/print/push-plastic.png differ diff --git a/client/public/vendor-logos/print/qidi-tech.png b/client/public/vendor-logos/print/qidi-tech.png new file mode 100644 index 000000000..73d00aa0b Binary files /dev/null and b/client/public/vendor-logos/print/qidi-tech.png differ diff --git a/client/public/vendor-logos/print/r3d.png b/client/public/vendor-logos/print/r3d.png new file mode 100644 index 000000000..112b868dc Binary files /dev/null and b/client/public/vendor-logos/print/r3d.png differ diff --git a/client/public/vendor-logos/print/raise3d.png b/client/public/vendor-logos/print/raise3d.png new file mode 100644 index 000000000..f14969719 Binary files /dev/null and b/client/public/vendor-logos/print/raise3d.png differ diff --git a/client/public/vendor-logos/print/rambery.png b/client/public/vendor-logos/print/rambery.png new file mode 100644 index 000000000..8c6cc212e Binary files /dev/null and b/client/public/vendor-logos/print/rambery.png differ diff --git a/client/public/vendor-logos/print/real.png b/client/public/vendor-logos/print/real.png new file mode 100644 index 000000000..aafd74a96 Binary files /dev/null and b/client/public/vendor-logos/print/real.png differ diff --git a/client/public/vendor-logos/print/recreus.png b/client/public/vendor-logos/print/recreus.png new file mode 100644 index 000000000..4d363ee7a Binary files /dev/null and b/client/public/vendor-logos/print/recreus.png differ diff --git a/client/public/vendor-logos/print/recycling-fabrik.png b/client/public/vendor-logos/print/recycling-fabrik.png new file mode 100644 index 000000000..c601344c3 Binary files /dev/null and b/client/public/vendor-logos/print/recycling-fabrik.png differ diff --git a/client/public/vendor-logos/print/recyclingfabrik.png b/client/public/vendor-logos/print/recyclingfabrik.png new file mode 100644 index 000000000..3cc616752 Binary files /dev/null and b/client/public/vendor-logos/print/recyclingfabrik.png differ diff --git a/client/public/vendor-logos/print/redline-filament.png b/client/public/vendor-logos/print/redline-filament.png new file mode 100644 index 000000000..447068d15 Binary files /dev/null and b/client/public/vendor-logos/print/redline-filament.png differ diff --git a/client/public/vendor-logos/print/reflow-filament.png b/client/public/vendor-logos/print/reflow-filament.png new file mode 100644 index 000000000..50202fa79 Binary files /dev/null and b/client/public/vendor-logos/print/reflow-filament.png differ diff --git a/client/public/vendor-logos/print/renkforce.png b/client/public/vendor-logos/print/renkforce.png new file mode 100644 index 000000000..8dd08e31f Binary files /dev/null and b/client/public/vendor-logos/print/renkforce.png differ diff --git a/client/public/vendor-logos/print/replay3d.png b/client/public/vendor-logos/print/replay3d.png new file mode 100644 index 000000000..5940629e5 Binary files /dev/null and b/client/public/vendor-logos/print/replay3d.png differ diff --git a/client/public/vendor-logos/print/reprapper.png b/client/public/vendor-logos/print/reprapper.png new file mode 100644 index 000000000..3fbdb2e5a Binary files /dev/null and b/client/public/vendor-logos/print/reprapper.png differ diff --git a/client/public/vendor-logos/print/rigidink.png b/client/public/vendor-logos/print/rigidink.png new file mode 100644 index 000000000..f3d42b97e Binary files /dev/null and b/client/public/vendor-logos/print/rigidink.png differ diff --git a/client/public/vendor-logos/print/rosa3d.png b/client/public/vendor-logos/print/rosa3d.png new file mode 100644 index 000000000..05f0131fe Binary files /dev/null and b/client/public/vendor-logos/print/rosa3d.png differ diff --git a/client/public/vendor-logos/print/rs-pro.png b/client/public/vendor-logos/print/rs-pro.png new file mode 100644 index 000000000..b396d604e Binary files /dev/null and b/client/public/vendor-logos/print/rs-pro.png differ diff --git a/client/public/vendor-logos/print/sa-filament.png b/client/public/vendor-logos/print/sa-filament.png new file mode 100644 index 000000000..a9ee08a25 Binary files /dev/null and b/client/public/vendor-logos/print/sa-filament.png differ diff --git a/client/public/vendor-logos/print/sainsmart.png b/client/public/vendor-logos/print/sainsmart.png new file mode 100644 index 000000000..5177d1574 Binary files /dev/null and b/client/public/vendor-logos/print/sainsmart.png differ diff --git a/client/public/vendor-logos/print/sakata3d.png b/client/public/vendor-logos/print/sakata3d.png new file mode 100644 index 000000000..52c974bc4 Binary files /dev/null and b/client/public/vendor-logos/print/sakata3d.png differ diff --git a/client/public/vendor-logos/print/sculpto.png b/client/public/vendor-logos/print/sculpto.png new file mode 100644 index 000000000..040602dc9 Binary files /dev/null and b/client/public/vendor-logos/print/sculpto.png differ diff --git a/client/public/vendor-logos/print/semdon.png b/client/public/vendor-logos/print/semdon.png new file mode 100644 index 000000000..08dbb9def Binary files /dev/null and b/client/public/vendor-logos/print/semdon.png differ diff --git a/client/public/vendor-logos/print/shengtian.png b/client/public/vendor-logos/print/shengtian.png new file mode 100644 index 000000000..71d8caa8c Binary files /dev/null and b/client/public/vendor-logos/print/shengtian.png differ diff --git a/client/public/vendor-logos/print/siddament.png b/client/public/vendor-logos/print/siddament.png new file mode 100644 index 000000000..dc16f7fbb Binary files /dev/null and b/client/public/vendor-logos/print/siddament.png differ diff --git a/client/public/vendor-logos/print/siraya-tech.png b/client/public/vendor-logos/print/siraya-tech.png new file mode 100644 index 000000000..8a46ca146 Binary files /dev/null and b/client/public/vendor-logos/print/siraya-tech.png differ diff --git a/client/public/vendor-logos/print/skywire-ua.png b/client/public/vendor-logos/print/skywire-ua.png new file mode 100644 index 000000000..2f19ef3e0 Binary files /dev/null and b/client/public/vendor-logos/print/skywire-ua.png differ diff --git a/client/public/vendor-logos/print/slic3d.png b/client/public/vendor-logos/print/slic3d.png new file mode 100644 index 000000000..7bf0f44b4 Binary files /dev/null and b/client/public/vendor-logos/print/slic3d.png differ diff --git a/client/public/vendor-logos/print/sliceworx.png b/client/public/vendor-logos/print/sliceworx.png new file mode 100644 index 000000000..45b752550 Binary files /dev/null and b/client/public/vendor-logos/print/sliceworx.png differ diff --git a/client/public/vendor-logos/print/smartfil.png b/client/public/vendor-logos/print/smartfil.png new file mode 100644 index 000000000..b42d5d2de Binary files /dev/null and b/client/public/vendor-logos/print/smartfil.png differ diff --git a/client/public/vendor-logos/print/smartmaterials.png b/client/public/vendor-logos/print/smartmaterials.png new file mode 100644 index 000000000..09ba72f59 Binary files /dev/null and b/client/public/vendor-logos/print/smartmaterials.png differ diff --git a/client/public/vendor-logos/print/smith3d.png b/client/public/vendor-logos/print/smith3d.png new file mode 100644 index 000000000..28a0873c9 Binary files /dev/null and b/client/public/vendor-logos/print/smith3d.png differ diff --git a/client/public/vendor-logos/print/snapmaker.png b/client/public/vendor-logos/print/snapmaker.png new file mode 100644 index 000000000..b095456b4 Binary files /dev/null and b/client/public/vendor-logos/print/snapmaker.png differ diff --git a/client/public/vendor-logos/print/soleyin.png b/client/public/vendor-logos/print/soleyin.png new file mode 100644 index 000000000..df0fc4d30 Binary files /dev/null and b/client/public/vendor-logos/print/soleyin.png differ diff --git a/client/public/vendor-logos/print/solutech.png b/client/public/vendor-logos/print/solutech.png new file mode 100644 index 000000000..04020e850 Binary files /dev/null and b/client/public/vendor-logos/print/solutech.png differ diff --git a/client/public/vendor-logos/print/sovol.png b/client/public/vendor-logos/print/sovol.png new file mode 100644 index 000000000..c307bafaa Binary files /dev/null and b/client/public/vendor-logos/print/sovol.png differ diff --git a/client/public/vendor-logos/print/spectrum.png b/client/public/vendor-logos/print/spectrum.png new file mode 100644 index 000000000..e61977374 Binary files /dev/null and b/client/public/vendor-logos/print/spectrum.png differ diff --git a/client/public/vendor-logos/print/spidermaker.png b/client/public/vendor-logos/print/spidermaker.png new file mode 100644 index 000000000..92c1354ac Binary files /dev/null and b/client/public/vendor-logos/print/spidermaker.png differ diff --git a/client/public/vendor-logos/print/splice3d.png b/client/public/vendor-logos/print/splice3d.png new file mode 100644 index 000000000..d5ae209a7 Binary files /dev/null and b/client/public/vendor-logos/print/splice3d.png differ diff --git a/client/public/vendor-logos/print/spool3d.png b/client/public/vendor-logos/print/spool3d.png new file mode 100644 index 000000000..81489351b Binary files /dev/null and b/client/public/vendor-logos/print/spool3d.png differ diff --git a/client/public/vendor-logos/print/starplast.png b/client/public/vendor-logos/print/starplast.png new file mode 100644 index 000000000..99b668256 Binary files /dev/null and b/client/public/vendor-logos/print/starplast.png differ diff --git a/client/public/vendor-logos/print/stlflix.png b/client/public/vendor-logos/print/stlflix.png new file mode 100644 index 000000000..262155ee8 Binary files /dev/null and b/client/public/vendor-logos/print/stlflix.png differ diff --git a/client/public/vendor-logos/print/stronghero3d.png b/client/public/vendor-logos/print/stronghero3d.png new file mode 100644 index 000000000..1215a730b Binary files /dev/null and b/client/public/vendor-logos/print/stronghero3d.png differ diff --git a/client/public/vendor-logos/print/stronghold3d.png b/client/public/vendor-logos/print/stronghold3d.png new file mode 100644 index 000000000..aba6d646a Binary files /dev/null and b/client/public/vendor-logos/print/stronghold3d.png differ diff --git a/client/public/vendor-logos/print/sunlu.png b/client/public/vendor-logos/print/sunlu.png new file mode 100644 index 000000000..bbdfb6846 Binary files /dev/null and b/client/public/vendor-logos/print/sunlu.png differ diff --git a/client/public/vendor-logos/print/super-filament.png b/client/public/vendor-logos/print/super-filament.png new file mode 100644 index 000000000..98694769f Binary files /dev/null and b/client/public/vendor-logos/print/super-filament.png differ diff --git a/client/public/vendor-logos/print/tcpoly.png b/client/public/vendor-logos/print/tcpoly.png new file mode 100644 index 000000000..bfddbade1 Binary files /dev/null and b/client/public/vendor-logos/print/tcpoly.png differ diff --git a/client/public/vendor-logos/print/tecbears.png b/client/public/vendor-logos/print/tecbears.png new file mode 100644 index 000000000..13a3b3147 Binary files /dev/null and b/client/public/vendor-logos/print/tecbears.png differ diff --git a/client/public/vendor-logos/print/tecnikoa.png b/client/public/vendor-logos/print/tecnikoa.png new file mode 100644 index 000000000..e49828f67 Binary files /dev/null and b/client/public/vendor-logos/print/tecnikoa.png differ diff --git a/client/public/vendor-logos/print/tecor.png b/client/public/vendor-logos/print/tecor.png new file mode 100644 index 000000000..f431ec293 Binary files /dev/null and b/client/public/vendor-logos/print/tecor.png differ diff --git a/client/public/vendor-logos/print/tecsonar.png b/client/public/vendor-logos/print/tecsonar.png new file mode 100644 index 000000000..dce06db62 Binary files /dev/null and b/client/public/vendor-logos/print/tecsonar.png differ diff --git a/client/public/vendor-logos/print/teqstone.png b/client/public/vendor-logos/print/teqstone.png new file mode 100644 index 000000000..881f03c0f Binary files /dev/null and b/client/public/vendor-logos/print/teqstone.png differ diff --git a/client/public/vendor-logos/print/terrafilum.png b/client/public/vendor-logos/print/terrafilum.png new file mode 100644 index 000000000..07c2d535c Binary files /dev/null and b/client/public/vendor-logos/print/terrafilum.png differ diff --git a/client/public/vendor-logos/print/the-virtual-foundry.png b/client/public/vendor-logos/print/the-virtual-foundry.png new file mode 100644 index 000000000..47139f1fd Binary files /dev/null and b/client/public/vendor-logos/print/the-virtual-foundry.png differ diff --git a/client/public/vendor-logos/print/threebees.png b/client/public/vendor-logos/print/threebees.png new file mode 100644 index 000000000..b23553145 Binary files /dev/null and b/client/public/vendor-logos/print/threebees.png differ diff --git a/client/public/vendor-logos/print/thriftymake.png b/client/public/vendor-logos/print/thriftymake.png new file mode 100644 index 000000000..4d3eb57a9 Binary files /dev/null and b/client/public/vendor-logos/print/thriftymake.png differ diff --git a/client/public/vendor-logos/print/tianse-3d.png b/client/public/vendor-logos/print/tianse-3d.png new file mode 100644 index 000000000..0c7db423f Binary files /dev/null and b/client/public/vendor-logos/print/tianse-3d.png differ diff --git a/client/public/vendor-logos/print/tinmorry.png b/client/public/vendor-logos/print/tinmorry.png new file mode 100644 index 000000000..91d5d4089 Binary files /dev/null and b/client/public/vendor-logos/print/tinmorry.png differ diff --git a/client/public/vendor-logos/print/tm3d.png b/client/public/vendor-logos/print/tm3d.png new file mode 100644 index 000000000..2de688cc3 Binary files /dev/null and b/client/public/vendor-logos/print/tm3d.png differ diff --git a/client/public/vendor-logos/print/torwell.png b/client/public/vendor-logos/print/torwell.png new file mode 100644 index 000000000..2e4e60764 Binary files /dev/null and b/client/public/vendor-logos/print/torwell.png differ diff --git a/client/public/vendor-logos/print/tronxy.png b/client/public/vendor-logos/print/tronxy.png new file mode 100644 index 000000000..0ac56a50b Binary files /dev/null and b/client/public/vendor-logos/print/tronxy.png differ diff --git a/client/public/vendor-logos/print/ttyt3d.png b/client/public/vendor-logos/print/ttyt3d.png new file mode 100644 index 000000000..4727e1629 Binary files /dev/null and b/client/public/vendor-logos/print/ttyt3d.png differ diff --git a/client/public/vendor-logos/print/tucab-fil3d.png b/client/public/vendor-logos/print/tucab-fil3d.png new file mode 100644 index 000000000..5386c3e4c Binary files /dev/null and b/client/public/vendor-logos/print/tucab-fil3d.png differ diff --git a/client/public/vendor-logos/print/ujoybio3d.png b/client/public/vendor-logos/print/ujoybio3d.png new file mode 100644 index 000000000..45a8b753c Binary files /dev/null and b/client/public/vendor-logos/print/ujoybio3d.png differ diff --git a/client/public/vendor-logos/print/ultimaker.png b/client/public/vendor-logos/print/ultimaker.png new file mode 100644 index 000000000..f371e52fd Binary files /dev/null and b/client/public/vendor-logos/print/ultimaker.png differ diff --git a/client/public/vendor-logos/print/velleman.png b/client/public/vendor-logos/print/velleman.png new file mode 100644 index 000000000..88777db33 Binary files /dev/null and b/client/public/vendor-logos/print/velleman.png differ diff --git a/client/public/vendor-logos/print/verbatim.png b/client/public/vendor-logos/print/verbatim.png new file mode 100644 index 000000000..2fc9e7f7a Binary files /dev/null and b/client/public/vendor-logos/print/verbatim.png differ diff --git a/client/public/vendor-logos/print/visdream.png b/client/public/vendor-logos/print/visdream.png new file mode 100644 index 000000000..9b1e979ac Binary files /dev/null and b/client/public/vendor-logos/print/visdream.png differ diff --git a/client/public/vendor-logos/print/voolt3d.png b/client/public/vendor-logos/print/voolt3d.png new file mode 100644 index 000000000..ced4e5112 Binary files /dev/null and b/client/public/vendor-logos/print/voolt3d.png differ diff --git a/client/public/vendor-logos/print/voxelab.png b/client/public/vendor-logos/print/voxelab.png new file mode 100644 index 000000000..526733615 Binary files /dev/null and b/client/public/vendor-logos/print/voxelab.png differ diff --git a/client/public/vendor-logos/print/voxelpla.png b/client/public/vendor-logos/print/voxelpla.png new file mode 100644 index 000000000..3d45bbcad Binary files /dev/null and b/client/public/vendor-logos/print/voxelpla.png differ diff --git a/client/public/vendor-logos/print/wanhao.png b/client/public/vendor-logos/print/wanhao.png new file mode 100644 index 000000000..6ead642ac Binary files /dev/null and b/client/public/vendor-logos/print/wanhao.png differ diff --git a/client/public/vendor-logos/print/wellshow.png b/client/public/vendor-logos/print/wellshow.png new file mode 100644 index 000000000..9921e41e7 Binary files /dev/null and b/client/public/vendor-logos/print/wellshow.png differ diff --git a/client/public/vendor-logos/print/winkle.png b/client/public/vendor-logos/print/winkle.png new file mode 100644 index 000000000..0126caaf1 Binary files /dev/null and b/client/public/vendor-logos/print/winkle.png differ diff --git a/client/public/vendor-logos/print/wyz-works.png b/client/public/vendor-logos/print/wyz-works.png new file mode 100644 index 000000000..d757cd1e5 Binary files /dev/null and b/client/public/vendor-logos/print/wyz-works.png differ diff --git a/client/public/vendor-logos/print/xtellar.png b/client/public/vendor-logos/print/xtellar.png new file mode 100644 index 000000000..1b6b05bf0 Binary files /dev/null and b/client/public/vendor-logos/print/xtellar.png differ diff --git a/client/public/vendor-logos/print/xyzprinting.png b/client/public/vendor-logos/print/xyzprinting.png new file mode 100644 index 000000000..a0b55a718 Binary files /dev/null and b/client/public/vendor-logos/print/xyzprinting.png differ diff --git a/client/public/vendor-logos/print/xzn.png b/client/public/vendor-logos/print/xzn.png new file mode 100644 index 000000000..879e16397 Binary files /dev/null and b/client/public/vendor-logos/print/xzn.png differ diff --git a/client/public/vendor-logos/print/yousu.png b/client/public/vendor-logos/print/yousu.png new file mode 100644 index 000000000..9ae971090 Binary files /dev/null and b/client/public/vendor-logos/print/yousu.png differ diff --git a/client/public/vendor-logos/print/yoyi-yoyi.png b/client/public/vendor-logos/print/yoyi-yoyi.png new file mode 100644 index 000000000..ae78c6ad7 Binary files /dev/null and b/client/public/vendor-logos/print/yoyi-yoyi.png differ diff --git a/client/public/vendor-logos/print/yumi.png b/client/public/vendor-logos/print/yumi.png new file mode 100644 index 000000000..4150f5186 Binary files /dev/null and b/client/public/vendor-logos/print/yumi.png differ diff --git a/client/public/vendor-logos/print/yxpolyer.png b/client/public/vendor-logos/print/yxpolyer.png new file mode 100644 index 000000000..a3b9943da Binary files /dev/null and b/client/public/vendor-logos/print/yxpolyer.png differ diff --git a/client/public/vendor-logos/print/zedex.png b/client/public/vendor-logos/print/zedex.png new file mode 100644 index 000000000..ae4ca6b4b Binary files /dev/null and b/client/public/vendor-logos/print/zedex.png differ diff --git a/client/public/vendor-logos/print/ziro.png b/client/public/vendor-logos/print/ziro.png new file mode 100644 index 000000000..4c28609b3 Binary files /dev/null and b/client/public/vendor-logos/print/ziro.png differ diff --git a/client/public/vendor-logos/print/zortrax.png b/client/public/vendor-logos/print/zortrax.png new file mode 100644 index 000000000..90dc3979c Binary files /dev/null and b/client/public/vendor-logos/print/zortrax.png differ diff --git a/client/public/vendor-logos/print/zyltech.png b/client/public/vendor-logos/print/zyltech.png new file mode 100644 index 000000000..fff3a2036 Binary files /dev/null and b/client/public/vendor-logos/print/zyltech.png differ diff --git a/client/public/vendor-logos/web/.gitkeep b/client/public/vendor-logos/web/.gitkeep new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/client/public/vendor-logos/web/.gitkeep @@ -0,0 +1 @@ + diff --git a/client/public/vendor-logos/web/123-3d-web.png b/client/public/vendor-logos/web/123-3d-web.png new file mode 100644 index 000000000..825ca3019 Binary files /dev/null and b/client/public/vendor-logos/web/123-3d-web.png differ diff --git a/client/public/vendor-logos/web/3d-best-q-web.png b/client/public/vendor-logos/web/3d-best-q-web.png new file mode 100644 index 000000000..3fc38a37b Binary files /dev/null and b/client/public/vendor-logos/web/3d-best-q-web.png differ diff --git a/client/public/vendor-logos/web/3d-fillies-web.png b/client/public/vendor-logos/web/3d-fillies-web.png new file mode 100644 index 000000000..b6221b3b8 Binary files /dev/null and b/client/public/vendor-logos/web/3d-fillies-web.png differ diff --git a/client/public/vendor-logos/web/3d-fuel-web.png b/client/public/vendor-logos/web/3d-fuel-web.png new file mode 100644 index 000000000..80bf1d511 Binary files /dev/null and b/client/public/vendor-logos/web/3d-fuel-web.png differ diff --git a/client/public/vendor-logos/web/3d-plast-web.png b/client/public/vendor-logos/web/3d-plast-web.png new file mode 100644 index 000000000..5c4084639 Binary files /dev/null and b/client/public/vendor-logos/web/3d-plast-web.png differ diff --git a/client/public/vendor-logos/web/3d-printing-canada-web.png b/client/public/vendor-logos/web/3d-printing-canada-web.png new file mode 100644 index 000000000..94ba1bc28 Binary files /dev/null and b/client/public/vendor-logos/web/3d-printing-canada-web.png differ diff --git a/client/public/vendor-logos/web/3d-printz-web.png b/client/public/vendor-logos/web/3d-printz-web.png new file mode 100644 index 000000000..dec361669 Binary files /dev/null and b/client/public/vendor-logos/web/3d-printz-web.png differ diff --git a/client/public/vendor-logos/web/3d-warhorse-web.png b/client/public/vendor-logos/web/3d-warhorse-web.png new file mode 100644 index 000000000..881a229e9 Binary files /dev/null and b/client/public/vendor-logos/web/3d-warhorse-web.png differ diff --git a/client/public/vendor-logos/web/3d4makers-web.png b/client/public/vendor-logos/web/3d4makers-web.png new file mode 100644 index 000000000..fdde3a751 Binary files /dev/null and b/client/public/vendor-logos/web/3d4makers-web.png differ diff --git a/client/public/vendor-logos/web/3dactive-web.png b/client/public/vendor-logos/web/3dactive-web.png new file mode 100644 index 000000000..7c66c5bf8 Binary files /dev/null and b/client/public/vendor-logos/web/3dactive-web.png differ diff --git a/client/public/vendor-logos/web/3de-web.png b/client/public/vendor-logos/web/3de-web.png new file mode 100644 index 000000000..9a8016788 Binary files /dev/null and b/client/public/vendor-logos/web/3de-web.png differ diff --git a/client/public/vendor-logos/web/3dfila-web.png b/client/public/vendor-logos/web/3dfila-web.png new file mode 100644 index 000000000..0b8a4d311 Binary files /dev/null and b/client/public/vendor-logos/web/3dfila-web.png differ diff --git a/client/public/vendor-logos/web/3dfillies-web.png b/client/public/vendor-logos/web/3dfillies-web.png new file mode 100644 index 000000000..33546ae50 Binary files /dev/null and b/client/public/vendor-logos/web/3dfillies-web.png differ diff --git a/client/public/vendor-logos/web/3dfils-web.png b/client/public/vendor-logos/web/3dfils-web.png new file mode 100644 index 000000000..76b70c7e0 Binary files /dev/null and b/client/public/vendor-logos/web/3dfils-web.png differ diff --git a/client/public/vendor-logos/web/3dfinity-web.png b/client/public/vendor-logos/web/3dfinity-web.png new file mode 100644 index 000000000..85b4c97c2 Binary files /dev/null and b/client/public/vendor-logos/web/3dfinity-web.png differ diff --git a/client/public/vendor-logos/web/3dgenius-web.png b/client/public/vendor-logos/web/3dgenius-web.png new file mode 100644 index 000000000..f5eff3af4 Binary files /dev/null and b/client/public/vendor-logos/web/3dgenius-web.png differ diff --git a/client/public/vendor-logos/web/3dhojor-web.png b/client/public/vendor-logos/web/3dhojor-web.png new file mode 100644 index 000000000..1c78377f4 Binary files /dev/null and b/client/public/vendor-logos/web/3dhojor-web.png differ diff --git a/client/public/vendor-logos/web/3djake-web.png b/client/public/vendor-logos/web/3djake-web.png new file mode 100644 index 000000000..bdb02ca4b Binary files /dev/null and b/client/public/vendor-logos/web/3djake-web.png differ diff --git a/client/public/vendor-logos/web/3dkordo-web.png b/client/public/vendor-logos/web/3dkordo-web.png new file mode 100644 index 000000000..706d4028b Binary files /dev/null and b/client/public/vendor-logos/web/3dkordo-web.png differ diff --git a/client/public/vendor-logos/web/3do-web.png b/client/public/vendor-logos/web/3do-web.png new file mode 100644 index 000000000..ed1d1e039 Binary files /dev/null and b/client/public/vendor-logos/web/3do-web.png differ diff --git a/client/public/vendor-logos/web/3dpower-web.png b/client/public/vendor-logos/web/3dpower-web.png new file mode 100644 index 000000000..357842c75 Binary files /dev/null and b/client/public/vendor-logos/web/3dpower-web.png differ diff --git a/client/public/vendor-logos/web/3dtrcek-web.png b/client/public/vendor-logos/web/3dtrcek-web.png new file mode 100644 index 000000000..8fb8a7a5a Binary files /dev/null and b/client/public/vendor-logos/web/3dtrcek-web.png differ diff --git a/client/public/vendor-logos/web/3dxtech-web.png b/client/public/vendor-logos/web/3dxtech-web.png new file mode 100644 index 000000000..b9c90067d Binary files /dev/null and b/client/public/vendor-logos/web/3dxtech-web.png differ diff --git a/client/public/vendor-logos/web/aceaddity-web.png b/client/public/vendor-logos/web/aceaddity-web.png new file mode 100644 index 000000000..aa794d94c Binary files /dev/null and b/client/public/vendor-logos/web/aceaddity-web.png differ diff --git a/client/public/vendor-logos/web/addnorth-web.png b/client/public/vendor-logos/web/addnorth-web.png new file mode 100644 index 000000000..feed7d98d Binary files /dev/null and b/client/public/vendor-logos/web/addnorth-web.png differ diff --git a/client/public/vendor-logos/web/agf-web.png b/client/public/vendor-logos/web/agf-web.png new file mode 100644 index 000000000..961eac559 Binary files /dev/null and b/client/public/vendor-logos/web/agf-web.png differ diff --git a/client/public/vendor-logos/web/aicopyto-web.png b/client/public/vendor-logos/web/aicopyto-web.png new file mode 100644 index 000000000..fb1638ee2 Binary files /dev/null and b/client/public/vendor-logos/web/aicopyto-web.png differ diff --git a/client/public/vendor-logos/web/aio-robotics-web.png b/client/public/vendor-logos/web/aio-robotics-web.png new file mode 100644 index 000000000..dc7cba4b8 Binary files /dev/null and b/client/public/vendor-logos/web/aio-robotics-web.png differ diff --git a/client/public/vendor-logos/web/alchemakes-web.png b/client/public/vendor-logos/web/alchemakes-web.png new file mode 100644 index 000000000..1e3d7f658 Binary files /dev/null and b/client/public/vendor-logos/web/alchemakes-web.png differ diff --git a/client/public/vendor-logos/web/alltime3d-web.png b/client/public/vendor-logos/web/alltime3d-web.png new file mode 100644 index 000000000..63812f13d Binary files /dev/null and b/client/public/vendor-logos/web/alltime3d-web.png differ diff --git a/client/public/vendor-logos/web/alzament-web.png b/client/public/vendor-logos/web/alzament-web.png new file mode 100644 index 000000000..41dd5393d Binary files /dev/null and b/client/public/vendor-logos/web/alzament-web.png differ diff --git a/client/public/vendor-logos/web/amazon-basics-web.png b/client/public/vendor-logos/web/amazon-basics-web.png new file mode 100644 index 000000000..1758ccaca Binary files /dev/null and b/client/public/vendor-logos/web/amazon-basics-web.png differ diff --git a/client/public/vendor-logos/web/ambrosia-web.png b/client/public/vendor-logos/web/ambrosia-web.png new file mode 100644 index 000000000..746c554a8 Binary files /dev/null and b/client/public/vendor-logos/web/ambrosia-web.png differ diff --git a/client/public/vendor-logos/web/american-filament-web.png b/client/public/vendor-logos/web/american-filament-web.png new file mode 100644 index 000000000..c9b28ab3f Binary files /dev/null and b/client/public/vendor-logos/web/american-filament-web.png differ diff --git a/client/public/vendor-logos/web/amolen-web.png b/client/public/vendor-logos/web/amolen-web.png new file mode 100644 index 000000000..7b3168be9 Binary files /dev/null and b/client/public/vendor-logos/web/amolen-web.png differ diff --git a/client/public/vendor-logos/web/amoybaby-web.png b/client/public/vendor-logos/web/amoybaby-web.png new file mode 100644 index 000000000..9a70f4a68 Binary files /dev/null and b/client/public/vendor-logos/web/amoybaby-web.png differ diff --git a/client/public/vendor-logos/web/amz3d-web.png b/client/public/vendor-logos/web/amz3d-web.png new file mode 100644 index 000000000..22753c5a7 Binary files /dev/null and b/client/public/vendor-logos/web/amz3d-web.png differ diff --git a/client/public/vendor-logos/web/ankermake-web.png b/client/public/vendor-logos/web/ankermake-web.png new file mode 100644 index 000000000..e21278f48 Binary files /dev/null and b/client/public/vendor-logos/web/ankermake-web.png differ diff --git a/client/public/vendor-logos/web/anycubic-web.png b/client/public/vendor-logos/web/anycubic-web.png new file mode 100644 index 000000000..c290b3405 Binary files /dev/null and b/client/public/vendor-logos/web/anycubic-web.png differ diff --git a/client/public/vendor-logos/web/arianeplast-web.png b/client/public/vendor-logos/web/arianeplast-web.png new file mode 100644 index 000000000..9728f1b95 Binary files /dev/null and b/client/public/vendor-logos/web/arianeplast-web.png differ diff --git a/client/public/vendor-logos/web/artillery-web.png b/client/public/vendor-logos/web/artillery-web.png new file mode 100644 index 000000000..643cd22e2 Binary files /dev/null and b/client/public/vendor-logos/web/artillery-web.png differ diff --git a/client/public/vendor-logos/web/ataraxia-art-web.png b/client/public/vendor-logos/web/ataraxia-art-web.png new file mode 100644 index 000000000..38383d921 Binary files /dev/null and b/client/public/vendor-logos/web/ataraxia-art-web.png differ diff --git a/client/public/vendor-logos/web/atomic-filament-web.png b/client/public/vendor-logos/web/atomic-filament-web.png new file mode 100644 index 000000000..bd34af2f1 Binary files /dev/null and b/client/public/vendor-logos/web/atomic-filament-web.png differ diff --git a/client/public/vendor-logos/web/aurapol-web.png b/client/public/vendor-logos/web/aurapol-web.png new file mode 100644 index 000000000..2a4fc8061 Binary files /dev/null and b/client/public/vendor-logos/web/aurapol-web.png differ diff --git a/client/public/vendor-logos/web/azurefilm-web.png b/client/public/vendor-logos/web/azurefilm-web.png new file mode 100644 index 000000000..846196735 Binary files /dev/null and b/client/public/vendor-logos/web/azurefilm-web.png differ diff --git a/client/public/vendor-logos/web/bambu-lab-web.png b/client/public/vendor-logos/web/bambu-lab-web.png new file mode 100644 index 000000000..dd1f6a50f Binary files /dev/null and b/client/public/vendor-logos/web/bambu-lab-web.png differ diff --git a/client/public/vendor-logos/web/bambu-labs-web.png b/client/public/vendor-logos/web/bambu-labs-web.png new file mode 100644 index 000000000..31c6bf5dd Binary files /dev/null and b/client/public/vendor-logos/web/bambu-labs-web.png differ diff --git a/client/public/vendor-logos/web/basf-web.png b/client/public/vendor-logos/web/basf-web.png new file mode 100644 index 000000000..88a997e68 Binary files /dev/null and b/client/public/vendor-logos/web/basf-web.png differ diff --git a/client/public/vendor-logos/web/basicfil-web.png b/client/public/vendor-logos/web/basicfil-web.png new file mode 100644 index 000000000..b4db63f31 Binary files /dev/null and b/client/public/vendor-logos/web/basicfil-web.png differ diff --git a/client/public/vendor-logos/web/bavaria-web.png b/client/public/vendor-logos/web/bavaria-web.png new file mode 100644 index 000000000..8dbf56a78 Binary files /dev/null and b/client/public/vendor-logos/web/bavaria-web.png differ diff --git a/client/public/vendor-logos/web/bblife-web.png b/client/public/vendor-logos/web/bblife-web.png new file mode 100644 index 000000000..7f41fed39 Binary files /dev/null and b/client/public/vendor-logos/web/bblife-web.png differ diff --git a/client/public/vendor-logos/web/bcn3d-web.png b/client/public/vendor-logos/web/bcn3d-web.png new file mode 100644 index 000000000..0040fb6c2 Binary files /dev/null and b/client/public/vendor-logos/web/bcn3d-web.png differ diff --git a/client/public/vendor-logos/web/bestfilament-web.png b/client/public/vendor-logos/web/bestfilament-web.png new file mode 100644 index 000000000..2fe3a3728 Binary files /dev/null and b/client/public/vendor-logos/web/bestfilament-web.png differ diff --git a/client/public/vendor-logos/web/bing3d-web.png b/client/public/vendor-logos/web/bing3d-web.png new file mode 100644 index 000000000..6bc2af48e Binary files /dev/null and b/client/public/vendor-logos/web/bing3d-web.png differ diff --git a/client/public/vendor-logos/web/biqu-web.png b/client/public/vendor-logos/web/biqu-web.png new file mode 100644 index 000000000..b086c2c15 Binary files /dev/null and b/client/public/vendor-logos/web/biqu-web.png differ diff --git a/client/public/vendor-logos/web/black-forest-filaments-web.png b/client/public/vendor-logos/web/black-forest-filaments-web.png new file mode 100644 index 000000000..c55d6289f Binary files /dev/null and b/client/public/vendor-logos/web/black-forest-filaments-web.png differ diff --git a/client/public/vendor-logos/web/black-magic-3d-web.png b/client/public/vendor-logos/web/black-magic-3d-web.png new file mode 100644 index 000000000..2235bb774 Binary files /dev/null and b/client/public/vendor-logos/web/black-magic-3d-web.png differ diff --git a/client/public/vendor-logos/web/botfeeder-web.png b/client/public/vendor-logos/web/botfeeder-web.png new file mode 100644 index 000000000..e3990e801 Binary files /dev/null and b/client/public/vendor-logos/web/botfeeder-web.png differ diff --git a/client/public/vendor-logos/web/bq-web.png b/client/public/vendor-logos/web/bq-web.png new file mode 100644 index 000000000..1a9a5f1b5 Binary files /dev/null and b/client/public/vendor-logos/web/bq-web.png differ diff --git a/client/public/vendor-logos/web/buddy3d-web.png b/client/public/vendor-logos/web/buddy3d-web.png new file mode 100644 index 000000000..6b774b42c Binary files /dev/null and b/client/public/vendor-logos/web/buddy3d-web.png differ diff --git a/client/public/vendor-logos/web/california-filament-web.png b/client/public/vendor-logos/web/california-filament-web.png new file mode 100644 index 000000000..a6d675327 Binary files /dev/null and b/client/public/vendor-logos/web/california-filament-web.png differ diff --git a/client/public/vendor-logos/web/capital-3d-web.png b/client/public/vendor-logos/web/capital-3d-web.png new file mode 100644 index 000000000..1dff91c74 Binary files /dev/null and b/client/public/vendor-logos/web/capital-3d-web.png differ diff --git a/client/public/vendor-logos/web/capricorn-web.png b/client/public/vendor-logos/web/capricorn-web.png new file mode 100644 index 000000000..9a180af9e Binary files /dev/null and b/client/public/vendor-logos/web/capricorn-web.png differ diff --git a/client/public/vendor-logos/web/carbon-web.png b/client/public/vendor-logos/web/carbon-web.png new file mode 100644 index 000000000..6b1937be6 Binary files /dev/null and b/client/public/vendor-logos/web/carbon-web.png differ diff --git a/client/public/vendor-logos/web/cc3d-web.png b/client/public/vendor-logos/web/cc3d-web.png new file mode 100644 index 000000000..a4cf59a7c Binary files /dev/null and b/client/public/vendor-logos/web/cc3d-web.png differ diff --git a/client/public/vendor-logos/web/cctree-web.png b/client/public/vendor-logos/web/cctree-web.png new file mode 100644 index 000000000..23720f674 Binary files /dev/null and b/client/public/vendor-logos/web/cctree-web.png differ diff --git a/client/public/vendor-logos/web/cel-robox-web.png b/client/public/vendor-logos/web/cel-robox-web.png new file mode 100644 index 000000000..573748f5e Binary files /dev/null and b/client/public/vendor-logos/web/cel-robox-web.png differ diff --git a/client/public/vendor-logos/web/cerprise-web.png b/client/public/vendor-logos/web/cerprise-web.png new file mode 100644 index 000000000..5f58a4cac Binary files /dev/null and b/client/public/vendor-logos/web/cerprise-web.png differ diff --git a/client/public/vendor-logos/web/chitu-systems-web.png b/client/public/vendor-logos/web/chitu-systems-web.png new file mode 100644 index 000000000..eedac4221 Binary files /dev/null and b/client/public/vendor-logos/web/chitu-systems-web.png differ diff --git a/client/public/vendor-logos/web/chromatik-web.png b/client/public/vendor-logos/web/chromatik-web.png new file mode 100644 index 000000000..3968bf7d7 Binary files /dev/null and b/client/public/vendor-logos/web/chromatik-web.png differ diff --git a/client/public/vendor-logos/web/clas-ohlson-web.png b/client/public/vendor-logos/web/clas-ohlson-web.png new file mode 100644 index 000000000..1b12b00e7 Binary files /dev/null and b/client/public/vendor-logos/web/clas-ohlson-web.png differ diff --git a/client/public/vendor-logos/web/coex-web.png b/client/public/vendor-logos/web/coex-web.png new file mode 100644 index 000000000..3d29f56ee Binary files /dev/null and b/client/public/vendor-logos/web/coex-web.png differ diff --git a/client/public/vendor-logos/web/colido-web.png b/client/public/vendor-logos/web/colido-web.png new file mode 100644 index 000000000..9c4429df1 Binary files /dev/null and b/client/public/vendor-logos/web/colido-web.png differ diff --git a/client/public/vendor-logos/web/colorfabb-web.png b/client/public/vendor-logos/web/colorfabb-web.png new file mode 100644 index 000000000..2c021eddb Binary files /dev/null and b/client/public/vendor-logos/web/colorfabb-web.png differ diff --git a/client/public/vendor-logos/web/colorfil-web.png b/client/public/vendor-logos/web/colorfil-web.png new file mode 100644 index 000000000..88fdfd39b Binary files /dev/null and b/client/public/vendor-logos/web/colorfil-web.png differ diff --git a/client/public/vendor-logos/web/colorful-web.png b/client/public/vendor-logos/web/colorful-web.png new file mode 100644 index 000000000..3f35512a8 Binary files /dev/null and b/client/public/vendor-logos/web/colorful-web.png differ diff --git a/client/public/vendor-logos/web/comgrow-web.png b/client/public/vendor-logos/web/comgrow-web.png new file mode 100644 index 000000000..99bc28ad0 Binary files /dev/null and b/client/public/vendor-logos/web/comgrow-web.png differ diff --git a/client/public/vendor-logos/web/cookiecad-web.png b/client/public/vendor-logos/web/cookiecad-web.png new file mode 100644 index 000000000..fec817c1e Binary files /dev/null and b/client/public/vendor-logos/web/cookiecad-web.png differ diff --git a/client/public/vendor-logos/web/copper-3d-web.png b/client/public/vendor-logos/web/copper-3d-web.png new file mode 100644 index 000000000..b0652a239 Binary files /dev/null and b/client/public/vendor-logos/web/copper-3d-web.png differ diff --git a/client/public/vendor-logos/web/copymaster3d-web.png b/client/public/vendor-logos/web/copymaster3d-web.png new file mode 100644 index 000000000..5bb059d0a Binary files /dev/null and b/client/public/vendor-logos/web/copymaster3d-web.png differ diff --git a/client/public/vendor-logos/web/cr3d-web.png b/client/public/vendor-logos/web/cr3d-web.png new file mode 100644 index 000000000..b1b2cbe40 Binary files /dev/null and b/client/public/vendor-logos/web/cr3d-web.png differ diff --git a/client/public/vendor-logos/web/creality-web.png b/client/public/vendor-logos/web/creality-web.png new file mode 100644 index 000000000..a4624f850 Binary files /dev/null and b/client/public/vendor-logos/web/creality-web.png differ diff --git a/client/public/vendor-logos/web/creozone-web.png b/client/public/vendor-logos/web/creozone-web.png new file mode 100644 index 000000000..31e15e925 Binary files /dev/null and b/client/public/vendor-logos/web/creozone-web.png differ diff --git a/client/public/vendor-logos/web/crofil-3d-web.png b/client/public/vendor-logos/web/crofil-3d-web.png new file mode 100644 index 000000000..b82448403 Binary files /dev/null and b/client/public/vendor-logos/web/crofil-3d-web.png differ diff --git a/client/public/vendor-logos/web/cs3d-web.png b/client/public/vendor-logos/web/cs3d-web.png new file mode 100644 index 000000000..ee18a58c0 Binary files /dev/null and b/client/public/vendor-logos/web/cs3d-web.png differ diff --git a/client/public/vendor-logos/web/d3d-sigma-web.png b/client/public/vendor-logos/web/d3d-sigma-web.png new file mode 100644 index 000000000..7373bab5b Binary files /dev/null and b/client/public/vendor-logos/web/d3d-sigma-web.png differ diff --git a/client/public/vendor-logos/web/das-filament-web.png b/client/public/vendor-logos/web/das-filament-web.png new file mode 100644 index 000000000..8e5334312 Binary files /dev/null and b/client/public/vendor-logos/web/das-filament-web.png differ diff --git a/client/public/vendor-logos/web/devil-design-web.png b/client/public/vendor-logos/web/devil-design-web.png new file mode 100644 index 000000000..50d9d86b8 Binary files /dev/null and b/client/public/vendor-logos/web/devil-design-web.png differ diff --git a/client/public/vendor-logos/web/dikale-web.png b/client/public/vendor-logos/web/dikale-web.png new file mode 100644 index 000000000..79ebda88c Binary files /dev/null and b/client/public/vendor-logos/web/dikale-web.png differ diff --git a/client/public/vendor-logos/web/do3d-web.png b/client/public/vendor-logos/web/do3d-web.png new file mode 100644 index 000000000..a7f44ddfe Binary files /dev/null and b/client/public/vendor-logos/web/do3d-web.png differ diff --git a/client/public/vendor-logos/web/dowell-3d-web.png b/client/public/vendor-logos/web/dowell-3d-web.png new file mode 100644 index 000000000..9dca3422c Binary files /dev/null and b/client/public/vendor-logos/web/dowell-3d-web.png differ diff --git a/client/public/vendor-logos/web/dr3d-web.png b/client/public/vendor-logos/web/dr3d-web.png new file mode 100644 index 000000000..3aa4bbd11 Binary files /dev/null and b/client/public/vendor-logos/web/dr3d-web.png differ diff --git a/client/public/vendor-logos/web/dudv2-web.png b/client/public/vendor-logos/web/dudv2-web.png new file mode 100644 index 000000000..926591c99 Binary files /dev/null and b/client/public/vendor-logos/web/dudv2-web.png differ diff --git a/client/public/vendor-logos/web/duramic-3d-web.png b/client/public/vendor-logos/web/duramic-3d-web.png new file mode 100644 index 000000000..fccfe4d6d Binary files /dev/null and b/client/public/vendor-logos/web/duramic-3d-web.png differ diff --git a/client/public/vendor-logos/web/dyair-web.png b/client/public/vendor-logos/web/dyair-web.png new file mode 100644 index 000000000..02913f063 Binary files /dev/null and b/client/public/vendor-logos/web/dyair-web.png differ diff --git a/client/public/vendor-logos/web/eibos-web.png b/client/public/vendor-logos/web/eibos-web.png new file mode 100644 index 000000000..957a61f6f Binary files /dev/null and b/client/public/vendor-logos/web/eibos-web.png differ diff --git a/client/public/vendor-logos/web/elegoo-web.png b/client/public/vendor-logos/web/elegoo-web.png new file mode 100644 index 000000000..54caab019 Binary files /dev/null and b/client/public/vendor-logos/web/elegoo-web.png differ diff --git a/client/public/vendor-logos/web/ender-web.png b/client/public/vendor-logos/web/ender-web.png new file mode 100644 index 000000000..d05b6657a Binary files /dev/null and b/client/public/vendor-logos/web/ender-web.png differ diff --git a/client/public/vendor-logos/web/eono-web.png b/client/public/vendor-logos/web/eono-web.png new file mode 100644 index 000000000..88d6b8db5 Binary files /dev/null and b/client/public/vendor-logos/web/eono-web.png differ diff --git a/client/public/vendor-logos/web/epax-web.png b/client/public/vendor-logos/web/epax-web.png new file mode 100644 index 000000000..debc013f8 Binary files /dev/null and b/client/public/vendor-logos/web/epax-web.png differ diff --git a/client/public/vendor-logos/web/eryone-web.png b/client/public/vendor-logos/web/eryone-web.png new file mode 100644 index 000000000..7cbe5e342 Binary files /dev/null and b/client/public/vendor-logos/web/eryone-web.png differ diff --git a/client/public/vendor-logos/web/esun-web.png b/client/public/vendor-logos/web/esun-web.png new file mode 100644 index 000000000..a7c823044 Binary files /dev/null and b/client/public/vendor-logos/web/esun-web.png differ diff --git a/client/public/vendor-logos/web/eureka-web.png b/client/public/vendor-logos/web/eureka-web.png new file mode 100644 index 000000000..31f8793ac Binary files /dev/null and b/client/public/vendor-logos/web/eureka-web.png differ diff --git a/client/public/vendor-logos/web/extrudr-web.png b/client/public/vendor-logos/web/extrudr-web.png new file mode 100644 index 000000000..6cf4d3b93 Binary files /dev/null and b/client/public/vendor-logos/web/extrudr-web.png differ diff --git a/client/public/vendor-logos/web/fdplast-web.png b/client/public/vendor-logos/web/fdplast-web.png new file mode 100644 index 000000000..a555b70f8 Binary files /dev/null and b/client/public/vendor-logos/web/fdplast-web.png differ diff --git a/client/public/vendor-logos/web/fiberlogy-web.png b/client/public/vendor-logos/web/fiberlogy-web.png new file mode 100644 index 000000000..fc59d6c30 Binary files /dev/null and b/client/public/vendor-logos/web/fiberlogy-web.png differ diff --git a/client/public/vendor-logos/web/fiberon-web.png b/client/public/vendor-logos/web/fiberon-web.png new file mode 100644 index 000000000..5f7f75598 Binary files /dev/null and b/client/public/vendor-logos/web/fiberon-web.png differ diff --git a/client/public/vendor-logos/web/fil-x-web.png b/client/public/vendor-logos/web/fil-x-web.png new file mode 100644 index 000000000..f4c6ae0f7 Binary files /dev/null and b/client/public/vendor-logos/web/fil-x-web.png differ diff --git a/client/public/vendor-logos/web/filabees-web.png b/client/public/vendor-logos/web/filabees-web.png new file mode 100644 index 000000000..d49a53328 Binary files /dev/null and b/client/public/vendor-logos/web/filabees-web.png differ diff --git a/client/public/vendor-logos/web/filablend-web.png b/client/public/vendor-logos/web/filablend-web.png new file mode 100644 index 000000000..33135d97a Binary files /dev/null and b/client/public/vendor-logos/web/filablend-web.png differ diff --git a/client/public/vendor-logos/web/filabotics-web.png b/client/public/vendor-logos/web/filabotics-web.png new file mode 100644 index 000000000..2c9faae48 Binary files /dev/null and b/client/public/vendor-logos/web/filabotics-web.png differ diff --git a/client/public/vendor-logos/web/filacube-web.png b/client/public/vendor-logos/web/filacube-web.png new file mode 100644 index 000000000..032082a10 Binary files /dev/null and b/client/public/vendor-logos/web/filacube-web.png differ diff --git a/client/public/vendor-logos/web/filalab-web.png b/client/public/vendor-logos/web/filalab-web.png new file mode 100644 index 000000000..1a2943d25 Binary files /dev/null and b/client/public/vendor-logos/web/filalab-web.png differ diff --git a/client/public/vendor-logos/web/filament-hub-web.png b/client/public/vendor-logos/web/filament-hub-web.png new file mode 100644 index 000000000..e9360f296 Binary files /dev/null and b/client/public/vendor-logos/web/filament-hub-web.png differ diff --git a/client/public/vendor-logos/web/filament-pm-web.png b/client/public/vendor-logos/web/filament-pm-web.png new file mode 100644 index 000000000..dd5c9c8f6 Binary files /dev/null and b/client/public/vendor-logos/web/filament-pm-web.png differ diff --git a/client/public/vendor-logos/web/filamentive-web.png b/client/public/vendor-logos/web/filamentive-web.png new file mode 100644 index 000000000..6a0e2ffc0 Binary files /dev/null and b/client/public/vendor-logos/web/filamentive-web.png differ diff --git a/client/public/vendor-logos/web/filamentone-web.png b/client/public/vendor-logos/web/filamentone-web.png new file mode 100644 index 000000000..1b37b2aec Binary files /dev/null and b/client/public/vendor-logos/web/filamentone-web.png differ diff --git a/client/public/vendor-logos/web/filamentos-3d-brasil-web.png b/client/public/vendor-logos/web/filamentos-3d-brasil-web.png new file mode 100644 index 000000000..565d5d20c Binary files /dev/null and b/client/public/vendor-logos/web/filamentos-3d-brasil-web.png differ diff --git a/client/public/vendor-logos/web/filaments-depot-web.png b/client/public/vendor-logos/web/filaments-depot-web.png new file mode 100644 index 000000000..ed9693a8a Binary files /dev/null and b/client/public/vendor-logos/web/filaments-depot-web.png differ diff --git a/client/public/vendor-logos/web/filamentsca-web.png b/client/public/vendor-logos/web/filamentsca-web.png new file mode 100644 index 000000000..b02ccb1cf Binary files /dev/null and b/client/public/vendor-logos/web/filamentsca-web.png differ diff --git a/client/public/vendor-logos/web/filamentworld-web.png b/client/public/vendor-logos/web/filamentworld-web.png new file mode 100644 index 000000000..685046443 Binary files /dev/null and b/client/public/vendor-logos/web/filamentworld-web.png differ diff --git a/client/public/vendor-logos/web/filanora-web.png b/client/public/vendor-logos/web/filanora-web.png new file mode 100644 index 000000000..18f59a893 Binary files /dev/null and b/client/public/vendor-logos/web/filanora-web.png differ diff --git a/client/public/vendor-logos/web/filatex3d-web.png b/client/public/vendor-logos/web/filatex3d-web.png new file mode 100644 index 000000000..80396b372 Binary files /dev/null and b/client/public/vendor-logos/web/filatex3d-web.png differ diff --git a/client/public/vendor-logos/web/filaxix-web.png b/client/public/vendor-logos/web/filaxix-web.png new file mode 100644 index 000000000..781cf9f7f Binary files /dev/null and b/client/public/vendor-logos/web/filaxix-web.png differ diff --git a/client/public/vendor-logos/web/fillamentum-web.png b/client/public/vendor-logos/web/fillamentum-web.png new file mode 100644 index 000000000..be1e9dd07 Binary files /dev/null and b/client/public/vendor-logos/web/fillamentum-web.png differ diff --git a/client/public/vendor-logos/web/filoalfa-web.png b/client/public/vendor-logos/web/filoalfa-web.png new file mode 100644 index 000000000..1c5bccf25 Binary files /dev/null and b/client/public/vendor-logos/web/filoalfa-web.png differ diff --git a/client/public/vendor-logos/web/filright-web.png b/client/public/vendor-logos/web/filright-web.png new file mode 100644 index 000000000..061814d33 Binary files /dev/null and b/client/public/vendor-logos/web/filright-web.png differ diff --git a/client/public/vendor-logos/web/firos-web.png b/client/public/vendor-logos/web/firos-web.png new file mode 100644 index 000000000..d6680ff26 Binary files /dev/null and b/client/public/vendor-logos/web/firos-web.png differ diff --git a/client/public/vendor-logos/web/flashforge-web.png b/client/public/vendor-logos/web/flashforge-web.png new file mode 100644 index 000000000..c1d702674 Binary files /dev/null and b/client/public/vendor-logos/web/flashforge-web.png differ diff --git a/client/public/vendor-logos/web/formfutura-web.png b/client/public/vendor-logos/web/formfutura-web.png new file mode 100644 index 000000000..5eb9df45c Binary files /dev/null and b/client/public/vendor-logos/web/formfutura-web.png differ diff --git a/client/public/vendor-logos/web/forshape-web.png b/client/public/vendor-logos/web/forshape-web.png new file mode 100644 index 000000000..fb8b3c0f5 Binary files /dev/null and b/client/public/vendor-logos/web/forshape-web.png differ diff --git a/client/public/vendor-logos/web/fortis-filaments-web.png b/client/public/vendor-logos/web/fortis-filaments-web.png new file mode 100644 index 000000000..461f30bca Binary files /dev/null and b/client/public/vendor-logos/web/fortis-filaments-web.png differ diff --git a/client/public/vendor-logos/web/fovfo-web.png b/client/public/vendor-logos/web/fovfo-web.png new file mode 100644 index 000000000..05d1f0224 Binary files /dev/null and b/client/public/vendor-logos/web/fovfo-web.png differ diff --git a/client/public/vendor-logos/web/fugacity-web.png b/client/public/vendor-logos/web/fugacity-web.png new file mode 100644 index 000000000..64bbb512f Binary files /dev/null and b/client/public/vendor-logos/web/fugacity-web.png differ diff --git a/client/public/vendor-logos/web/fulament-web.png b/client/public/vendor-logos/web/fulament-web.png new file mode 100644 index 000000000..baa944722 Binary files /dev/null and b/client/public/vendor-logos/web/fulament-web.png differ diff --git a/client/public/vendor-logos/web/fused-materials-web.png b/client/public/vendor-logos/web/fused-materials-web.png new file mode 100644 index 000000000..80cc2fa67 Binary files /dev/null and b/client/public/vendor-logos/web/fused-materials-web.png differ diff --git a/client/public/vendor-logos/web/fusion-filaments-web.png b/client/public/vendor-logos/web/fusion-filaments-web.png new file mode 100644 index 000000000..84eaeb70e Binary files /dev/null and b/client/public/vendor-logos/web/fusion-filaments-web.png differ diff --git a/client/public/vendor-logos/web/g3d-pro-grossiste-3d-web.png b/client/public/vendor-logos/web/g3d-pro-grossiste-3d-web.png new file mode 100644 index 000000000..525a0387c Binary files /dev/null and b/client/public/vendor-logos/web/g3d-pro-grossiste-3d-web.png differ diff --git a/client/public/vendor-logos/web/geeetech-web.png b/client/public/vendor-logos/web/geeetech-web.png new file mode 100644 index 000000000..0a6646f39 Binary files /dev/null and b/client/public/vendor-logos/web/geeetech-web.png differ diff --git a/client/public/vendor-logos/web/gembird-web.png b/client/public/vendor-logos/web/gembird-web.png new file mode 100644 index 000000000..9834967c4 Binary files /dev/null and b/client/public/vendor-logos/web/gembird-web.png differ diff --git a/client/public/vendor-logos/web/giantarm-web.png b/client/public/vendor-logos/web/giantarm-web.png new file mode 100644 index 000000000..d57fd0680 Binary files /dev/null and b/client/public/vendor-logos/web/giantarm-web.png differ diff --git a/client/public/vendor-logos/web/gizmo-dorks-web.png b/client/public/vendor-logos/web/gizmo-dorks-web.png new file mode 100644 index 000000000..86a4ee916 Binary files /dev/null and b/client/public/vendor-logos/web/gizmo-dorks-web.png differ diff --git a/client/public/vendor-logos/web/gnvtntp-web.png b/client/public/vendor-logos/web/gnvtntp-web.png new file mode 100644 index 000000000..d7194671d Binary files /dev/null and b/client/public/vendor-logos/web/gnvtntp-web.png differ diff --git a/client/public/vendor-logos/web/golgeo-web.png b/client/public/vendor-logos/web/golgeo-web.png new file mode 100644 index 000000000..d58248602 Binary files /dev/null and b/client/public/vendor-logos/web/golgeo-web.png differ diff --git a/client/public/vendor-logos/web/goto-guard-web.png b/client/public/vendor-logos/web/goto-guard-web.png new file mode 100644 index 000000000..44549fdc9 Binary files /dev/null and b/client/public/vendor-logos/web/goto-guard-web.png differ diff --git a/client/public/vendor-logos/web/gratkit-web.png b/client/public/vendor-logos/web/gratkit-web.png new file mode 100644 index 000000000..99f2ccafa Binary files /dev/null and b/client/public/vendor-logos/web/gratkit-web.png differ diff --git a/client/public/vendor-logos/web/greengate3d-web.png b/client/public/vendor-logos/web/greengate3d-web.png new file mode 100644 index 000000000..2d336a92d Binary files /dev/null and b/client/public/vendor-logos/web/greengate3d-web.png differ diff --git a/client/public/vendor-logos/web/grilon3-web.png b/client/public/vendor-logos/web/grilon3-web.png new file mode 100644 index 000000000..f3e1aacb4 Binary files /dev/null and b/client/public/vendor-logos/web/grilon3-web.png differ diff --git a/client/public/vendor-logos/web/gryddle-web.png b/client/public/vendor-logos/web/gryddle-web.png new file mode 100644 index 000000000..5d18aef34 Binary files /dev/null and b/client/public/vendor-logos/web/gryddle-web.png differ diff --git a/client/public/vendor-logos/web/gst-3d-web.png b/client/public/vendor-logos/web/gst-3d-web.png new file mode 100644 index 000000000..b7766880a Binary files /dev/null and b/client/public/vendor-logos/web/gst-3d-web.png differ diff --git a/client/public/vendor-logos/web/gtmax-web.png b/client/public/vendor-logos/web/gtmax-web.png new file mode 100644 index 000000000..f698a67ae Binary files /dev/null and b/client/public/vendor-logos/web/gtmax-web.png differ diff --git a/client/public/vendor-logos/web/handtmann-web.png b/client/public/vendor-logos/web/handtmann-web.png new file mode 100644 index 000000000..74a64edab Binary files /dev/null and b/client/public/vendor-logos/web/handtmann-web.png differ diff --git a/client/public/vendor-logos/web/hatchbox-web.png b/client/public/vendor-logos/web/hatchbox-web.png new file mode 100644 index 000000000..74af6176e Binary files /dev/null and b/client/public/vendor-logos/web/hatchbox-web.png differ diff --git a/client/public/vendor-logos/web/hellbot-web.png b/client/public/vendor-logos/web/hellbot-web.png new file mode 100644 index 000000000..ae07a137a Binary files /dev/null and b/client/public/vendor-logos/web/hellbot-web.png differ diff --git a/client/public/vendor-logos/web/hello3d-web.png b/client/public/vendor-logos/web/hello3d-web.png new file mode 100644 index 000000000..e19cf646b Binary files /dev/null and b/client/public/vendor-logos/web/hello3d-web.png differ diff --git a/client/public/vendor-logos/web/hzst-3d-web.png b/client/public/vendor-logos/web/hzst-3d-web.png new file mode 100644 index 000000000..324911132 Binary files /dev/null and b/client/public/vendor-logos/web/hzst-3d-web.png differ diff --git a/client/public/vendor-logos/web/i3d-tested-web.png b/client/public/vendor-logos/web/i3d-tested-web.png new file mode 100644 index 000000000..fc4400d55 Binary files /dev/null and b/client/public/vendor-logos/web/i3d-tested-web.png differ diff --git a/client/public/vendor-logos/web/iboss-web.png b/client/public/vendor-logos/web/iboss-web.png new file mode 100644 index 000000000..b92ae7398 Binary files /dev/null and b/client/public/vendor-logos/web/iboss-web.png differ diff --git a/client/public/vendor-logos/web/ic3d-web.png b/client/public/vendor-logos/web/ic3d-web.png new file mode 100644 index 000000000..f788d455e Binary files /dev/null and b/client/public/vendor-logos/web/ic3d-web.png differ diff --git a/client/public/vendor-logos/web/ice-web.png b/client/public/vendor-logos/web/ice-web.png new file mode 100644 index 000000000..1fc3dacc7 Binary files /dev/null and b/client/public/vendor-logos/web/ice-web.png differ diff --git a/client/public/vendor-logos/web/iemai-web.png b/client/public/vendor-logos/web/iemai-web.png new file mode 100644 index 000000000..0641d23e8 Binary files /dev/null and b/client/public/vendor-logos/web/iemai-web.png differ diff --git a/client/public/vendor-logos/web/ifilament-web.png b/client/public/vendor-logos/web/ifilament-web.png new file mode 100644 index 000000000..9b1349afa Binary files /dev/null and b/client/public/vendor-logos/web/ifilament-web.png differ diff --git a/client/public/vendor-logos/web/igus-web.png b/client/public/vendor-logos/web/igus-web.png new file mode 100644 index 000000000..19e14e5ef Binary files /dev/null and b/client/public/vendor-logos/web/igus-web.png differ diff --git a/client/public/vendor-logos/web/iiid-max-web.png b/client/public/vendor-logos/web/iiid-max-web.png new file mode 100644 index 000000000..4bd1b01f0 Binary files /dev/null and b/client/public/vendor-logos/web/iiid-max-web.png differ diff --git a/client/public/vendor-logos/web/inkstation-web.png b/client/public/vendor-logos/web/inkstation-web.png new file mode 100644 index 000000000..a7b8e2ecd Binary files /dev/null and b/client/public/vendor-logos/web/inkstation-web.png differ diff --git a/client/public/vendor-logos/web/inland-web.png b/client/public/vendor-logos/web/inland-web.png new file mode 100644 index 000000000..31ed5bde9 Binary files /dev/null and b/client/public/vendor-logos/web/inland-web.png differ diff --git a/client/public/vendor-logos/web/innofil-3d-web.png b/client/public/vendor-logos/web/innofil-3d-web.png new file mode 100644 index 000000000..10b1d432c Binary files /dev/null and b/client/public/vendor-logos/web/innofil-3d-web.png differ diff --git a/client/public/vendor-logos/web/inslogic-web.png b/client/public/vendor-logos/web/inslogic-web.png new file mode 100644 index 000000000..de9c93da2 Binary files /dev/null and b/client/public/vendor-logos/web/inslogic-web.png differ diff --git a/client/public/vendor-logos/web/isanghu-web.png b/client/public/vendor-logos/web/isanghu-web.png new file mode 100644 index 000000000..6cd9794c3 Binary files /dev/null and b/client/public/vendor-logos/web/isanghu-web.png differ diff --git a/client/public/vendor-logos/web/isanmate-web.png b/client/public/vendor-logos/web/isanmate-web.png new file mode 100644 index 000000000..cb3bad1f7 Binary files /dev/null and b/client/public/vendor-logos/web/isanmate-web.png differ diff --git a/client/public/vendor-logos/web/iwecolor-web.png b/client/public/vendor-logos/web/iwecolor-web.png new file mode 100644 index 000000000..2b8a6f93b Binary files /dev/null and b/client/public/vendor-logos/web/iwecolor-web.png differ diff --git a/client/public/vendor-logos/web/jamg-he-web.png b/client/public/vendor-logos/web/jamg-he-web.png new file mode 100644 index 000000000..9a14b7145 Binary files /dev/null and b/client/public/vendor-logos/web/jamg-he-web.png differ diff --git a/client/public/vendor-logos/web/janbex-web.png b/client/public/vendor-logos/web/janbex-web.png new file mode 100644 index 000000000..2dba7af02 Binary files /dev/null and b/client/public/vendor-logos/web/janbex-web.png differ diff --git a/client/public/vendor-logos/web/jarees-web.png b/client/public/vendor-logos/web/jarees-web.png new file mode 100644 index 000000000..a0067e82d Binary files /dev/null and b/client/public/vendor-logos/web/jarees-web.png differ diff --git a/client/public/vendor-logos/web/jayo-web.png b/client/public/vendor-logos/web/jayo-web.png new file mode 100644 index 000000000..99a08edbf Binary files /dev/null and b/client/public/vendor-logos/web/jayo-web.png differ diff --git a/client/public/vendor-logos/web/jiufu-web.png b/client/public/vendor-logos/web/jiufu-web.png new file mode 100644 index 000000000..312d6165d Binary files /dev/null and b/client/public/vendor-logos/web/jiufu-web.png differ diff --git a/client/public/vendor-logos/web/justmaker-web.png b/client/public/vendor-logos/web/justmaker-web.png new file mode 100644 index 000000000..aa477888e Binary files /dev/null and b/client/public/vendor-logos/web/justmaker-web.png differ diff --git a/client/public/vendor-logos/web/kaaber-web.png b/client/public/vendor-logos/web/kaaber-web.png new file mode 100644 index 000000000..89a9d8a09 Binary files /dev/null and b/client/public/vendor-logos/web/kaaber-web.png differ diff --git a/client/public/vendor-logos/web/kaisertech-web.png b/client/public/vendor-logos/web/kaisertech-web.png new file mode 100644 index 000000000..dbfd22fd9 Binary files /dev/null and b/client/public/vendor-logos/web/kaisertech-web.png differ diff --git a/client/public/vendor-logos/web/keene-village-plastics-web.png b/client/public/vendor-logos/web/keene-village-plastics-web.png new file mode 100644 index 000000000..a537959a1 Binary files /dev/null and b/client/public/vendor-logos/web/keene-village-plastics-web.png differ diff --git a/client/public/vendor-logos/web/kexcelled-web.png b/client/public/vendor-logos/web/kexcelled-web.png new file mode 100644 index 000000000..8451b149f Binary files /dev/null and b/client/public/vendor-logos/web/kexcelled-web.png differ diff --git a/client/public/vendor-logos/web/kimya-web.png b/client/public/vendor-logos/web/kimya-web.png new file mode 100644 index 000000000..5af33c732 Binary files /dev/null and b/client/public/vendor-logos/web/kimya-web.png differ diff --git a/client/public/vendor-logos/web/kingroon-web.png b/client/public/vendor-logos/web/kingroon-web.png new file mode 100644 index 000000000..2db544443 Binary files /dev/null and b/client/public/vendor-logos/web/kingroon-web.png differ diff --git a/client/public/vendor-logos/web/kinluot-web.png b/client/public/vendor-logos/web/kinluot-web.png new file mode 100644 index 000000000..881714e21 Binary files /dev/null and b/client/public/vendor-logos/web/kinluot-web.png differ diff --git a/client/public/vendor-logos/web/kiwi3d-web.png b/client/public/vendor-logos/web/kiwi3d-web.png new file mode 100644 index 000000000..09b18fea3 Binary files /dev/null and b/client/public/vendor-logos/web/kiwi3d-web.png differ diff --git a/client/public/vendor-logos/web/kodak-web.png b/client/public/vendor-logos/web/kodak-web.png new file mode 100644 index 000000000..fb0337f94 Binary files /dev/null and b/client/public/vendor-logos/web/kodak-web.png differ diff --git a/client/public/vendor-logos/web/kretrum-web.png b/client/public/vendor-logos/web/kretrum-web.png new file mode 100644 index 000000000..652137f52 Binary files /dev/null and b/client/public/vendor-logos/web/kretrum-web.png differ diff --git a/client/public/vendor-logos/web/landu-web.png b/client/public/vendor-logos/web/landu-web.png new file mode 100644 index 000000000..3ef1f530b Binary files /dev/null and b/client/public/vendor-logos/web/landu-web.png differ diff --git a/client/public/vendor-logos/web/lbl-ua-web.png b/client/public/vendor-logos/web/lbl-ua-web.png new file mode 100644 index 000000000..19147e533 Binary files /dev/null and b/client/public/vendor-logos/web/lbl-ua-web.png differ diff --git a/client/public/vendor-logos/web/lehvoss-web.png b/client/public/vendor-logos/web/lehvoss-web.png new file mode 100644 index 000000000..29c6c3b43 Binary files /dev/null and b/client/public/vendor-logos/web/lehvoss-web.png differ diff --git a/client/public/vendor-logos/web/locyfens-web.png b/client/public/vendor-logos/web/locyfens-web.png new file mode 100644 index 000000000..cd5fb3927 Binary files /dev/null and b/client/public/vendor-logos/web/locyfens-web.png differ diff --git a/client/public/vendor-logos/web/loneness-web.png b/client/public/vendor-logos/web/loneness-web.png new file mode 100644 index 000000000..7e1691c23 Binary files /dev/null and b/client/public/vendor-logos/web/loneness-web.png differ diff --git a/client/public/vendor-logos/web/lotactree-web.png b/client/public/vendor-logos/web/lotactree-web.png new file mode 100644 index 000000000..aa1f126a8 Binary files /dev/null and b/client/public/vendor-logos/web/lotactree-web.png differ diff --git a/client/public/vendor-logos/web/lovoon-web.png b/client/public/vendor-logos/web/lovoon-web.png new file mode 100644 index 000000000..3b757cd5e Binary files /dev/null and b/client/public/vendor-logos/web/lovoon-web.png differ diff --git a/client/public/vendor-logos/web/lume-web.png b/client/public/vendor-logos/web/lume-web.png new file mode 100644 index 000000000..c2044e55a Binary files /dev/null and b/client/public/vendor-logos/web/lume-web.png differ diff --git a/client/public/vendor-logos/web/maertz-web.png b/client/public/vendor-logos/web/maertz-web.png new file mode 100644 index 000000000..9cb795ccf Binary files /dev/null and b/client/public/vendor-logos/web/maertz-web.png differ diff --git a/client/public/vendor-logos/web/makerbot-web.png b/client/public/vendor-logos/web/makerbot-web.png new file mode 100644 index 000000000..c8b8ab098 Binary files /dev/null and b/client/public/vendor-logos/web/makerbot-web.png differ diff --git a/client/public/vendor-logos/web/markforged-web.png b/client/public/vendor-logos/web/markforged-web.png new file mode 100644 index 000000000..10db3f78f Binary files /dev/null and b/client/public/vendor-logos/web/markforged-web.png differ diff --git a/client/public/vendor-logos/web/marswork-web.png b/client/public/vendor-logos/web/marswork-web.png new file mode 100644 index 000000000..42baaa081 Binary files /dev/null and b/client/public/vendor-logos/web/marswork-web.png differ diff --git a/client/public/vendor-logos/web/material4print-web.png b/client/public/vendor-logos/web/material4print-web.png new file mode 100644 index 000000000..678b564f9 Binary files /dev/null and b/client/public/vendor-logos/web/material4print-web.png differ diff --git a/client/public/vendor-logos/web/matter3d-web.png b/client/public/vendor-logos/web/matter3d-web.png new file mode 100644 index 000000000..fe57b2994 Binary files /dev/null and b/client/public/vendor-logos/web/matter3d-web.png differ diff --git a/client/public/vendor-logos/web/matterhackers-web.png b/client/public/vendor-logos/web/matterhackers-web.png new file mode 100644 index 000000000..fc1422058 Binary files /dev/null and b/client/public/vendor-logos/web/matterhackers-web.png differ diff --git a/client/public/vendor-logos/web/menetee-web.png b/client/public/vendor-logos/web/menetee-web.png new file mode 100644 index 000000000..f56e34c08 Binary files /dev/null and b/client/public/vendor-logos/web/menetee-web.png differ diff --git a/client/public/vendor-logos/web/mg-chemicals-web.png b/client/public/vendor-logos/web/mg-chemicals-web.png new file mode 100644 index 000000000..a67865838 Binary files /dev/null and b/client/public/vendor-logos/web/mg-chemicals-web.png differ diff --git a/client/public/vendor-logos/web/mh-build-web.png b/client/public/vendor-logos/web/mh-build-web.png new file mode 100644 index 000000000..4a171e454 Binary files /dev/null and b/client/public/vendor-logos/web/mh-build-web.png differ diff --git a/client/public/vendor-logos/web/mika3d-web.png b/client/public/vendor-logos/web/mika3d-web.png new file mode 100644 index 000000000..05e2c8e54 Binary files /dev/null and b/client/public/vendor-logos/web/mika3d-web.png differ diff --git a/client/public/vendor-logos/web/mkoem-web.png b/client/public/vendor-logos/web/mkoem-web.png new file mode 100644 index 000000000..a3062771e Binary files /dev/null and b/client/public/vendor-logos/web/mkoem-web.png differ diff --git a/client/public/vendor-logos/web/monofilament-ua-web.png b/client/public/vendor-logos/web/monofilament-ua-web.png new file mode 100644 index 000000000..60b6d8147 Binary files /dev/null and b/client/public/vendor-logos/web/monofilament-ua-web.png differ diff --git a/client/public/vendor-logos/web/monoprice-web.png b/client/public/vendor-logos/web/monoprice-web.png new file mode 100644 index 000000000..e74b2ff6d Binary files /dev/null and b/client/public/vendor-logos/web/monoprice-web.png differ diff --git a/client/public/vendor-logos/web/mosaic-web.png b/client/public/vendor-logos/web/mosaic-web.png new file mode 100644 index 000000000..0cdfe4677 Binary files /dev/null and b/client/public/vendor-logos/web/mosaic-web.png differ diff --git a/client/public/vendor-logos/web/naga-web.png b/client/public/vendor-logos/web/naga-web.png new file mode 100644 index 000000000..34f60dd4e Binary files /dev/null and b/client/public/vendor-logos/web/naga-web.png differ diff --git a/client/public/vendor-logos/web/nanocaddo-web.png b/client/public/vendor-logos/web/nanocaddo-web.png new file mode 100644 index 000000000..c036c7d7b Binary files /dev/null and b/client/public/vendor-logos/web/nanocaddo-web.png differ diff --git a/client/public/vendor-logos/web/nebula-web.png b/client/public/vendor-logos/web/nebula-web.png new file mode 100644 index 000000000..0b5aae470 Binary files /dev/null and b/client/public/vendor-logos/web/nebula-web.png differ diff --git a/client/public/vendor-logos/web/neofil3d-web.png b/client/public/vendor-logos/web/neofil3d-web.png new file mode 100644 index 000000000..e1af68184 Binary files /dev/null and b/client/public/vendor-logos/web/neofil3d-web.png differ diff --git a/client/public/vendor-logos/web/new-matter-web.png b/client/public/vendor-logos/web/new-matter-web.png new file mode 100644 index 000000000..ab8e2e195 Binary files /dev/null and b/client/public/vendor-logos/web/new-matter-web.png differ diff --git a/client/public/vendor-logos/web/ninjatek-web.png b/client/public/vendor-logos/web/ninjatek-web.png new file mode 100644 index 000000000..e7ee49fac Binary files /dev/null and b/client/public/vendor-logos/web/ninjatek-web.png differ diff --git a/client/public/vendor-logos/web/nobufil-web.png b/client/public/vendor-logos/web/nobufil-web.png new file mode 100644 index 000000000..6a788c88e Binary files /dev/null and b/client/public/vendor-logos/web/nobufil-web.png differ diff --git a/client/public/vendor-logos/web/novamaker-web.png b/client/public/vendor-logos/web/novamaker-web.png new file mode 100644 index 000000000..961ab82af Binary files /dev/null and b/client/public/vendor-logos/web/novamaker-web.png differ diff --git a/client/public/vendor-logos/web/numakers-web.png b/client/public/vendor-logos/web/numakers-web.png new file mode 100644 index 000000000..e6807d408 Binary files /dev/null and b/client/public/vendor-logos/web/numakers-web.png differ diff --git a/client/public/vendor-logos/web/octofiber-web.png b/client/public/vendor-logos/web/octofiber-web.png new file mode 100644 index 000000000..8e178154e Binary files /dev/null and b/client/public/vendor-logos/web/octofiber-web.png differ diff --git a/client/public/vendor-logos/web/ooznest-web.png b/client/public/vendor-logos/web/ooznest-web.png new file mode 100644 index 000000000..a1d4ab3b1 Binary files /dev/null and b/client/public/vendor-logos/web/ooznest-web.png differ diff --git a/client/public/vendor-logos/web/overture-web.png b/client/public/vendor-logos/web/overture-web.png new file mode 100644 index 000000000..f47b678d4 Binary files /dev/null and b/client/public/vendor-logos/web/overture-web.png differ diff --git a/client/public/vendor-logos/web/ovv3d-web.png b/client/public/vendor-logos/web/ovv3d-web.png new file mode 100644 index 000000000..a24e1f696 Binary files /dev/null and b/client/public/vendor-logos/web/ovv3d-web.png differ diff --git a/client/public/vendor-logos/web/owl-filament-web.png b/client/public/vendor-logos/web/owl-filament-web.png new file mode 100644 index 000000000..3eb87d37b Binary files /dev/null and b/client/public/vendor-logos/web/owl-filament-web.png differ diff --git a/client/public/vendor-logos/web/panchroma-web.png b/client/public/vendor-logos/web/panchroma-web.png new file mode 100644 index 000000000..8a0791566 Binary files /dev/null and b/client/public/vendor-logos/web/panchroma-web.png differ diff --git a/client/public/vendor-logos/web/paramount-3d-web.png b/client/public/vendor-logos/web/paramount-3d-web.png new file mode 100644 index 000000000..cb45333e6 Binary files /dev/null and b/client/public/vendor-logos/web/paramount-3d-web.png differ diff --git a/client/public/vendor-logos/web/patona-web.png b/client/public/vendor-logos/web/patona-web.png new file mode 100644 index 000000000..0f1d2b0d7 Binary files /dev/null and b/client/public/vendor-logos/web/patona-web.png differ diff --git a/client/public/vendor-logos/web/peakace-web.png b/client/public/vendor-logos/web/peakace-web.png new file mode 100644 index 000000000..f1020912d Binary files /dev/null and b/client/public/vendor-logos/web/peakace-web.png differ diff --git a/client/public/vendor-logos/web/pinrui-web.png b/client/public/vendor-logos/web/pinrui-web.png new file mode 100644 index 000000000..4ff695fe3 Binary files /dev/null and b/client/public/vendor-logos/web/pinrui-web.png differ diff --git a/client/public/vendor-logos/web/plas3d-web.png b/client/public/vendor-logos/web/plas3d-web.png new file mode 100644 index 000000000..b79ab1001 Binary files /dev/null and b/client/public/vendor-logos/web/plas3d-web.png differ diff --git a/client/public/vendor-logos/web/plasport-web.png b/client/public/vendor-logos/web/plasport-web.png new file mode 100644 index 000000000..240ca52c9 Binary files /dev/null and b/client/public/vendor-logos/web/plasport-web.png differ diff --git a/client/public/vendor-logos/web/plasticz-web.png b/client/public/vendor-logos/web/plasticz-web.png new file mode 100644 index 000000000..a693a754e Binary files /dev/null and b/client/public/vendor-logos/web/plasticz-web.png differ diff --git a/client/public/vendor-logos/web/polar-filament-web.png b/client/public/vendor-logos/web/polar-filament-web.png new file mode 100644 index 000000000..7491055c3 Binary files /dev/null and b/client/public/vendor-logos/web/polar-filament-web.png differ diff --git a/client/public/vendor-logos/web/polaroid-web.png b/client/public/vendor-logos/web/polaroid-web.png new file mode 100644 index 000000000..ebbee9391 Binary files /dev/null and b/client/public/vendor-logos/web/polaroid-web.png differ diff --git a/client/public/vendor-logos/web/polyalchemy-web.png b/client/public/vendor-logos/web/polyalchemy-web.png new file mode 100644 index 000000000..f8743e819 Binary files /dev/null and b/client/public/vendor-logos/web/polyalchemy-web.png differ diff --git a/client/public/vendor-logos/web/polymaker-web.png b/client/public/vendor-logos/web/polymaker-web.png new file mode 100644 index 000000000..0e609e0e9 Binary files /dev/null and b/client/public/vendor-logos/web/polymaker-web.png differ diff --git a/client/public/vendor-logos/web/polyprinter-web.png b/client/public/vendor-logos/web/polyprinter-web.png new file mode 100644 index 000000000..68e33c552 Binary files /dev/null and b/client/public/vendor-logos/web/polyprinter-web.png differ diff --git a/client/public/vendor-logos/web/priline-3d-web.png b/client/public/vendor-logos/web/priline-3d-web.png new file mode 100644 index 000000000..5503fe17a Binary files /dev/null and b/client/public/vendor-logos/web/priline-3d-web.png differ diff --git a/client/public/vendor-logos/web/primacreator-web.png b/client/public/vendor-logos/web/primacreator-web.png new file mode 100644 index 000000000..3c6c1c93e Binary files /dev/null and b/client/public/vendor-logos/web/primacreator-web.png differ diff --git a/client/public/vendor-logos/web/primaselect-web.png b/client/public/vendor-logos/web/primaselect-web.png new file mode 100644 index 000000000..b0e9c3a5b Binary files /dev/null and b/client/public/vendor-logos/web/primaselect-web.png differ diff --git a/client/public/vendor-logos/web/primavalue-web.png b/client/public/vendor-logos/web/primavalue-web.png new file mode 100644 index 000000000..fe1b5db8c Binary files /dev/null and b/client/public/vendor-logos/web/primavalue-web.png differ diff --git a/client/public/vendor-logos/web/print-me-web.png b/client/public/vendor-logos/web/print-me-web.png new file mode 100644 index 000000000..e59031ec9 Binary files /dev/null and b/client/public/vendor-logos/web/print-me-web.png differ diff --git a/client/public/vendor-logos/web/printalot-web.png b/client/public/vendor-logos/web/printalot-web.png new file mode 100644 index 000000000..06c14274f Binary files /dev/null and b/client/public/vendor-logos/web/printalot-web.png differ diff --git a/client/public/vendor-logos/web/printbed-web.png b/client/public/vendor-logos/web/printbed-web.png new file mode 100644 index 000000000..64700ba3e Binary files /dev/null and b/client/public/vendor-logos/web/printbed-web.png differ diff --git a/client/public/vendor-logos/web/printed-solid-web.png b/client/public/vendor-logos/web/printed-solid-web.png new file mode 100644 index 000000000..e13f85968 Binary files /dev/null and b/client/public/vendor-logos/web/printed-solid-web.png differ diff --git a/client/public/vendor-logos/web/pritonic-web.png b/client/public/vendor-logos/web/pritonic-web.png new file mode 100644 index 000000000..ec333ab68 Binary files /dev/null and b/client/public/vendor-logos/web/pritonic-web.png differ diff --git a/client/public/vendor-logos/web/prografen-web.png b/client/public/vendor-logos/web/prografen-web.png new file mode 100644 index 000000000..889ed62f7 Binary files /dev/null and b/client/public/vendor-logos/web/prografen-web.png differ diff --git a/client/public/vendor-logos/web/prorock-web.png b/client/public/vendor-logos/web/prorock-web.png new file mode 100644 index 000000000..399489565 Binary files /dev/null and b/client/public/vendor-logos/web/prorock-web.png differ diff --git a/client/public/vendor-logos/web/protech-web.png b/client/public/vendor-logos/web/protech-web.png new file mode 100644 index 000000000..dd6cab618 Binary files /dev/null and b/client/public/vendor-logos/web/protech-web.png differ diff --git a/client/public/vendor-logos/web/protopasta-web.png b/client/public/vendor-logos/web/protopasta-web.png new file mode 100644 index 000000000..6a82b3909 Binary files /dev/null and b/client/public/vendor-logos/web/protopasta-web.png differ diff --git a/client/public/vendor-logos/web/prusa-web.png b/client/public/vendor-logos/web/prusa-web.png new file mode 100644 index 000000000..302646855 Binary files /dev/null and b/client/public/vendor-logos/web/prusa-web.png differ diff --git a/client/public/vendor-logos/web/prusament-web.png b/client/public/vendor-logos/web/prusament-web.png new file mode 100644 index 000000000..e2217e589 Binary files /dev/null and b/client/public/vendor-logos/web/prusament-web.png differ diff --git a/client/public/vendor-logos/web/purefil-web.png b/client/public/vendor-logos/web/purefil-web.png new file mode 100644 index 000000000..dc64cb1b4 Binary files /dev/null and b/client/public/vendor-logos/web/purefil-web.png differ diff --git a/client/public/vendor-logos/web/push-plastic-web.png b/client/public/vendor-logos/web/push-plastic-web.png new file mode 100644 index 000000000..974278873 Binary files /dev/null and b/client/public/vendor-logos/web/push-plastic-web.png differ diff --git a/client/public/vendor-logos/web/qidi-tech-web.png b/client/public/vendor-logos/web/qidi-tech-web.png new file mode 100644 index 000000000..f4667cb6c Binary files /dev/null and b/client/public/vendor-logos/web/qidi-tech-web.png differ diff --git a/client/public/vendor-logos/web/r3d-web.png b/client/public/vendor-logos/web/r3d-web.png new file mode 100644 index 000000000..e00943d44 Binary files /dev/null and b/client/public/vendor-logos/web/r3d-web.png differ diff --git a/client/public/vendor-logos/web/raise3d-web.png b/client/public/vendor-logos/web/raise3d-web.png new file mode 100644 index 000000000..4891a31d8 Binary files /dev/null and b/client/public/vendor-logos/web/raise3d-web.png differ diff --git a/client/public/vendor-logos/web/rambery-web.png b/client/public/vendor-logos/web/rambery-web.png new file mode 100644 index 000000000..0dec080df Binary files /dev/null and b/client/public/vendor-logos/web/rambery-web.png differ diff --git a/client/public/vendor-logos/web/real-web.png b/client/public/vendor-logos/web/real-web.png new file mode 100644 index 000000000..ae3d6d40e Binary files /dev/null and b/client/public/vendor-logos/web/real-web.png differ diff --git a/client/public/vendor-logos/web/recreus-web.png b/client/public/vendor-logos/web/recreus-web.png new file mode 100644 index 000000000..e058b1284 Binary files /dev/null and b/client/public/vendor-logos/web/recreus-web.png differ diff --git a/client/public/vendor-logos/web/recycling-fabrik-web.png b/client/public/vendor-logos/web/recycling-fabrik-web.png new file mode 100644 index 000000000..2da3d2133 Binary files /dev/null and b/client/public/vendor-logos/web/recycling-fabrik-web.png differ diff --git a/client/public/vendor-logos/web/recyclingfabrik-web.png b/client/public/vendor-logos/web/recyclingfabrik-web.png new file mode 100644 index 000000000..2da3d2133 Binary files /dev/null and b/client/public/vendor-logos/web/recyclingfabrik-web.png differ diff --git a/client/public/vendor-logos/web/redline-filament-web.png b/client/public/vendor-logos/web/redline-filament-web.png new file mode 100644 index 000000000..6eb115bf2 Binary files /dev/null and b/client/public/vendor-logos/web/redline-filament-web.png differ diff --git a/client/public/vendor-logos/web/reflow-filament-web.png b/client/public/vendor-logos/web/reflow-filament-web.png new file mode 100644 index 000000000..7baca1d90 Binary files /dev/null and b/client/public/vendor-logos/web/reflow-filament-web.png differ diff --git a/client/public/vendor-logos/web/renkforce-web.png b/client/public/vendor-logos/web/renkforce-web.png new file mode 100644 index 000000000..96db41ab2 Binary files /dev/null and b/client/public/vendor-logos/web/renkforce-web.png differ diff --git a/client/public/vendor-logos/web/replay3d-web.png b/client/public/vendor-logos/web/replay3d-web.png new file mode 100644 index 000000000..ae7b1f694 Binary files /dev/null and b/client/public/vendor-logos/web/replay3d-web.png differ diff --git a/client/public/vendor-logos/web/reprapper-web.png b/client/public/vendor-logos/web/reprapper-web.png new file mode 100644 index 000000000..4316f79b1 Binary files /dev/null and b/client/public/vendor-logos/web/reprapper-web.png differ diff --git a/client/public/vendor-logos/web/rigidink-web.png b/client/public/vendor-logos/web/rigidink-web.png new file mode 100644 index 000000000..eeda3bf22 Binary files /dev/null and b/client/public/vendor-logos/web/rigidink-web.png differ diff --git a/client/public/vendor-logos/web/rosa3d-web.png b/client/public/vendor-logos/web/rosa3d-web.png new file mode 100644 index 000000000..f2d4491d1 Binary files /dev/null and b/client/public/vendor-logos/web/rosa3d-web.png differ diff --git a/client/public/vendor-logos/web/rs-pro-web.png b/client/public/vendor-logos/web/rs-pro-web.png new file mode 100644 index 000000000..b3be12840 Binary files /dev/null and b/client/public/vendor-logos/web/rs-pro-web.png differ diff --git a/client/public/vendor-logos/web/sa-filament-web.png b/client/public/vendor-logos/web/sa-filament-web.png new file mode 100644 index 000000000..649d277c1 Binary files /dev/null and b/client/public/vendor-logos/web/sa-filament-web.png differ diff --git a/client/public/vendor-logos/web/sainsmart-web.png b/client/public/vendor-logos/web/sainsmart-web.png new file mode 100644 index 000000000..2868a95a8 Binary files /dev/null and b/client/public/vendor-logos/web/sainsmart-web.png differ diff --git a/client/public/vendor-logos/web/sakata3d-web.png b/client/public/vendor-logos/web/sakata3d-web.png new file mode 100644 index 000000000..3fbb754ea Binary files /dev/null and b/client/public/vendor-logos/web/sakata3d-web.png differ diff --git a/client/public/vendor-logos/web/sculpto-web.png b/client/public/vendor-logos/web/sculpto-web.png new file mode 100644 index 000000000..fe711cf0a Binary files /dev/null and b/client/public/vendor-logos/web/sculpto-web.png differ diff --git a/client/public/vendor-logos/web/semdon-web.png b/client/public/vendor-logos/web/semdon-web.png new file mode 100644 index 000000000..81bf9643a Binary files /dev/null and b/client/public/vendor-logos/web/semdon-web.png differ diff --git a/client/public/vendor-logos/web/shengtian-web.png b/client/public/vendor-logos/web/shengtian-web.png new file mode 100644 index 000000000..bf58f7692 Binary files /dev/null and b/client/public/vendor-logos/web/shengtian-web.png differ diff --git a/client/public/vendor-logos/web/siddament-web.png b/client/public/vendor-logos/web/siddament-web.png new file mode 100644 index 000000000..3cb19bdb8 Binary files /dev/null and b/client/public/vendor-logos/web/siddament-web.png differ diff --git a/client/public/vendor-logos/web/siraya-tech-web.png b/client/public/vendor-logos/web/siraya-tech-web.png new file mode 100644 index 000000000..ce792ac9b Binary files /dev/null and b/client/public/vendor-logos/web/siraya-tech-web.png differ diff --git a/client/public/vendor-logos/web/skywire-ua-web.png b/client/public/vendor-logos/web/skywire-ua-web.png new file mode 100644 index 000000000..cb00ffb3c Binary files /dev/null and b/client/public/vendor-logos/web/skywire-ua-web.png differ diff --git a/client/public/vendor-logos/web/slic3d-web.png b/client/public/vendor-logos/web/slic3d-web.png new file mode 100644 index 000000000..5bf51d17b Binary files /dev/null and b/client/public/vendor-logos/web/slic3d-web.png differ diff --git a/client/public/vendor-logos/web/sliceworx-web.png b/client/public/vendor-logos/web/sliceworx-web.png new file mode 100644 index 000000000..608597462 Binary files /dev/null and b/client/public/vendor-logos/web/sliceworx-web.png differ diff --git a/client/public/vendor-logos/web/smartfil-web.png b/client/public/vendor-logos/web/smartfil-web.png new file mode 100644 index 000000000..b5e3bf2f5 Binary files /dev/null and b/client/public/vendor-logos/web/smartfil-web.png differ diff --git a/client/public/vendor-logos/web/smartmaterials-web.png b/client/public/vendor-logos/web/smartmaterials-web.png new file mode 100644 index 000000000..ee02aba0e Binary files /dev/null and b/client/public/vendor-logos/web/smartmaterials-web.png differ diff --git a/client/public/vendor-logos/web/smith3d-web.png b/client/public/vendor-logos/web/smith3d-web.png new file mode 100644 index 000000000..c577235bb Binary files /dev/null and b/client/public/vendor-logos/web/smith3d-web.png differ diff --git a/client/public/vendor-logos/web/snapmaker-web.png b/client/public/vendor-logos/web/snapmaker-web.png new file mode 100644 index 000000000..96e5edd4d Binary files /dev/null and b/client/public/vendor-logos/web/snapmaker-web.png differ diff --git a/client/public/vendor-logos/web/soleyin-web.png b/client/public/vendor-logos/web/soleyin-web.png new file mode 100644 index 000000000..7242a492f Binary files /dev/null and b/client/public/vendor-logos/web/soleyin-web.png differ diff --git a/client/public/vendor-logos/web/solutech-web.png b/client/public/vendor-logos/web/solutech-web.png new file mode 100644 index 000000000..b7f9878e7 Binary files /dev/null and b/client/public/vendor-logos/web/solutech-web.png differ diff --git a/client/public/vendor-logos/web/sovol-web.png b/client/public/vendor-logos/web/sovol-web.png new file mode 100644 index 000000000..dd839302e Binary files /dev/null and b/client/public/vendor-logos/web/sovol-web.png differ diff --git a/client/public/vendor-logos/web/spectrum-web.png b/client/public/vendor-logos/web/spectrum-web.png new file mode 100644 index 000000000..1821b8713 Binary files /dev/null and b/client/public/vendor-logos/web/spectrum-web.png differ diff --git a/client/public/vendor-logos/web/spidermaker-web.png b/client/public/vendor-logos/web/spidermaker-web.png new file mode 100644 index 000000000..848721f9e Binary files /dev/null and b/client/public/vendor-logos/web/spidermaker-web.png differ diff --git a/client/public/vendor-logos/web/splice3d-web.png b/client/public/vendor-logos/web/splice3d-web.png new file mode 100644 index 000000000..1955a1094 Binary files /dev/null and b/client/public/vendor-logos/web/splice3d-web.png differ diff --git a/client/public/vendor-logos/web/spool3d-web.png b/client/public/vendor-logos/web/spool3d-web.png new file mode 100644 index 000000000..a7f11aabe Binary files /dev/null and b/client/public/vendor-logos/web/spool3d-web.png differ diff --git a/client/public/vendor-logos/web/starplast-web.png b/client/public/vendor-logos/web/starplast-web.png new file mode 100644 index 000000000..1fbed4832 Binary files /dev/null and b/client/public/vendor-logos/web/starplast-web.png differ diff --git a/client/public/vendor-logos/web/stlflix-web.png b/client/public/vendor-logos/web/stlflix-web.png new file mode 100644 index 000000000..5b470b33b Binary files /dev/null and b/client/public/vendor-logos/web/stlflix-web.png differ diff --git a/client/public/vendor-logos/web/stronghero3d-web.png b/client/public/vendor-logos/web/stronghero3d-web.png new file mode 100644 index 000000000..e0871857c Binary files /dev/null and b/client/public/vendor-logos/web/stronghero3d-web.png differ diff --git a/client/public/vendor-logos/web/stronghold3d-web.png b/client/public/vendor-logos/web/stronghold3d-web.png new file mode 100644 index 000000000..854518c90 Binary files /dev/null and b/client/public/vendor-logos/web/stronghold3d-web.png differ diff --git a/client/public/vendor-logos/web/sunlu-web.png b/client/public/vendor-logos/web/sunlu-web.png new file mode 100644 index 000000000..7240a7057 Binary files /dev/null and b/client/public/vendor-logos/web/sunlu-web.png differ diff --git a/client/public/vendor-logos/web/super-filament-web.png b/client/public/vendor-logos/web/super-filament-web.png new file mode 100644 index 000000000..33a146312 Binary files /dev/null and b/client/public/vendor-logos/web/super-filament-web.png differ diff --git a/client/public/vendor-logos/web/tcpoly-web.png b/client/public/vendor-logos/web/tcpoly-web.png new file mode 100644 index 000000000..b5059724d Binary files /dev/null and b/client/public/vendor-logos/web/tcpoly-web.png differ diff --git a/client/public/vendor-logos/web/tecbears-web.png b/client/public/vendor-logos/web/tecbears-web.png new file mode 100644 index 000000000..a437fb8a6 Binary files /dev/null and b/client/public/vendor-logos/web/tecbears-web.png differ diff --git a/client/public/vendor-logos/web/tecnikoa-web.png b/client/public/vendor-logos/web/tecnikoa-web.png new file mode 100644 index 000000000..0053e64bc Binary files /dev/null and b/client/public/vendor-logos/web/tecnikoa-web.png differ diff --git a/client/public/vendor-logos/web/tecor-web.png b/client/public/vendor-logos/web/tecor-web.png new file mode 100644 index 000000000..167df66e8 Binary files /dev/null and b/client/public/vendor-logos/web/tecor-web.png differ diff --git a/client/public/vendor-logos/web/tecsonar-web.png b/client/public/vendor-logos/web/tecsonar-web.png new file mode 100644 index 000000000..ef43e2569 Binary files /dev/null and b/client/public/vendor-logos/web/tecsonar-web.png differ diff --git a/client/public/vendor-logos/web/teqstone-web.png b/client/public/vendor-logos/web/teqstone-web.png new file mode 100644 index 000000000..0f14b5003 Binary files /dev/null and b/client/public/vendor-logos/web/teqstone-web.png differ diff --git a/client/public/vendor-logos/web/terrafilum-web.png b/client/public/vendor-logos/web/terrafilum-web.png new file mode 100644 index 000000000..dee13ab98 Binary files /dev/null and b/client/public/vendor-logos/web/terrafilum-web.png differ diff --git a/client/public/vendor-logos/web/the-virtual-foundry-web.png b/client/public/vendor-logos/web/the-virtual-foundry-web.png new file mode 100644 index 000000000..644de28a5 Binary files /dev/null and b/client/public/vendor-logos/web/the-virtual-foundry-web.png differ diff --git a/client/public/vendor-logos/web/threebees-web.png b/client/public/vendor-logos/web/threebees-web.png new file mode 100644 index 000000000..db97f6035 Binary files /dev/null and b/client/public/vendor-logos/web/threebees-web.png differ diff --git a/client/public/vendor-logos/web/thriftymake-web.png b/client/public/vendor-logos/web/thriftymake-web.png new file mode 100644 index 000000000..6aad2cbdf Binary files /dev/null and b/client/public/vendor-logos/web/thriftymake-web.png differ diff --git a/client/public/vendor-logos/web/tianse-3d-web.png b/client/public/vendor-logos/web/tianse-3d-web.png new file mode 100644 index 000000000..1e2aa7fbf Binary files /dev/null and b/client/public/vendor-logos/web/tianse-3d-web.png differ diff --git a/client/public/vendor-logos/web/tinmorry-web.png b/client/public/vendor-logos/web/tinmorry-web.png new file mode 100644 index 000000000..a624a50dd Binary files /dev/null and b/client/public/vendor-logos/web/tinmorry-web.png differ diff --git a/client/public/vendor-logos/web/tm3d-web.png b/client/public/vendor-logos/web/tm3d-web.png new file mode 100644 index 000000000..e65240ec4 Binary files /dev/null and b/client/public/vendor-logos/web/tm3d-web.png differ diff --git a/client/public/vendor-logos/web/torwell-web.png b/client/public/vendor-logos/web/torwell-web.png new file mode 100644 index 000000000..d540211e9 Binary files /dev/null and b/client/public/vendor-logos/web/torwell-web.png differ diff --git a/client/public/vendor-logos/web/tronxy-web.png b/client/public/vendor-logos/web/tronxy-web.png new file mode 100644 index 000000000..38f1c379d Binary files /dev/null and b/client/public/vendor-logos/web/tronxy-web.png differ diff --git a/client/public/vendor-logos/web/ttyt3d-web.png b/client/public/vendor-logos/web/ttyt3d-web.png new file mode 100644 index 000000000..a70d9a5a2 Binary files /dev/null and b/client/public/vendor-logos/web/ttyt3d-web.png differ diff --git a/client/public/vendor-logos/web/tucab-fil3d-web.png b/client/public/vendor-logos/web/tucab-fil3d-web.png new file mode 100644 index 000000000..929568716 Binary files /dev/null and b/client/public/vendor-logos/web/tucab-fil3d-web.png differ diff --git a/client/public/vendor-logos/web/ujoybio3d-web.png b/client/public/vendor-logos/web/ujoybio3d-web.png new file mode 100644 index 000000000..a6240c103 Binary files /dev/null and b/client/public/vendor-logos/web/ujoybio3d-web.png differ diff --git a/client/public/vendor-logos/web/ultimaker-web.png b/client/public/vendor-logos/web/ultimaker-web.png new file mode 100644 index 000000000..5fe4d5a8f Binary files /dev/null and b/client/public/vendor-logos/web/ultimaker-web.png differ diff --git a/client/public/vendor-logos/web/velleman-web.png b/client/public/vendor-logos/web/velleman-web.png new file mode 100644 index 000000000..ca794a6db Binary files /dev/null and b/client/public/vendor-logos/web/velleman-web.png differ diff --git a/client/public/vendor-logos/web/verbatim-web.png b/client/public/vendor-logos/web/verbatim-web.png new file mode 100644 index 000000000..9a1d5e570 Binary files /dev/null and b/client/public/vendor-logos/web/verbatim-web.png differ diff --git a/client/public/vendor-logos/web/visdream-web.png b/client/public/vendor-logos/web/visdream-web.png new file mode 100644 index 000000000..f34915c4c Binary files /dev/null and b/client/public/vendor-logos/web/visdream-web.png differ diff --git a/client/public/vendor-logos/web/voolt3d-web.png b/client/public/vendor-logos/web/voolt3d-web.png new file mode 100644 index 000000000..316ea5fcf Binary files /dev/null and b/client/public/vendor-logos/web/voolt3d-web.png differ diff --git a/client/public/vendor-logos/web/voxelab-web.png b/client/public/vendor-logos/web/voxelab-web.png new file mode 100644 index 000000000..65e7a7704 Binary files /dev/null and b/client/public/vendor-logos/web/voxelab-web.png differ diff --git a/client/public/vendor-logos/web/voxelpla-web.png b/client/public/vendor-logos/web/voxelpla-web.png new file mode 100644 index 000000000..f6e8192b8 Binary files /dev/null and b/client/public/vendor-logos/web/voxelpla-web.png differ diff --git a/client/public/vendor-logos/web/wanhao-web.png b/client/public/vendor-logos/web/wanhao-web.png new file mode 100644 index 000000000..51411d984 Binary files /dev/null and b/client/public/vendor-logos/web/wanhao-web.png differ diff --git a/client/public/vendor-logos/web/wellshow-web.png b/client/public/vendor-logos/web/wellshow-web.png new file mode 100644 index 000000000..8c7554b92 Binary files /dev/null and b/client/public/vendor-logos/web/wellshow-web.png differ diff --git a/client/public/vendor-logos/web/winkle-web.png b/client/public/vendor-logos/web/winkle-web.png new file mode 100644 index 000000000..7f3ab1312 Binary files /dev/null and b/client/public/vendor-logos/web/winkle-web.png differ diff --git a/client/public/vendor-logos/web/wyz-works-web.png b/client/public/vendor-logos/web/wyz-works-web.png new file mode 100644 index 000000000..f79207a7e Binary files /dev/null and b/client/public/vendor-logos/web/wyz-works-web.png differ diff --git a/client/public/vendor-logos/web/xtellar-web.png b/client/public/vendor-logos/web/xtellar-web.png new file mode 100644 index 000000000..0186026e6 Binary files /dev/null and b/client/public/vendor-logos/web/xtellar-web.png differ diff --git a/client/public/vendor-logos/web/xyzprinting-web.png b/client/public/vendor-logos/web/xyzprinting-web.png new file mode 100644 index 000000000..7de726e97 Binary files /dev/null and b/client/public/vendor-logos/web/xyzprinting-web.png differ diff --git a/client/public/vendor-logos/web/xzn-web.png b/client/public/vendor-logos/web/xzn-web.png new file mode 100644 index 000000000..6d86c9ed4 Binary files /dev/null and b/client/public/vendor-logos/web/xzn-web.png differ diff --git a/client/public/vendor-logos/web/yousu-web.png b/client/public/vendor-logos/web/yousu-web.png new file mode 100644 index 000000000..d2e9c5320 Binary files /dev/null and b/client/public/vendor-logos/web/yousu-web.png differ diff --git a/client/public/vendor-logos/web/yoyi-yoyi-web.png b/client/public/vendor-logos/web/yoyi-yoyi-web.png new file mode 100644 index 000000000..78838ad78 Binary files /dev/null and b/client/public/vendor-logos/web/yoyi-yoyi-web.png differ diff --git a/client/public/vendor-logos/web/yumi-web.png b/client/public/vendor-logos/web/yumi-web.png new file mode 100644 index 000000000..72b294d7c Binary files /dev/null and b/client/public/vendor-logos/web/yumi-web.png differ diff --git a/client/public/vendor-logos/web/yxpolyer-web.png b/client/public/vendor-logos/web/yxpolyer-web.png new file mode 100644 index 000000000..9eb25bfc8 Binary files /dev/null and b/client/public/vendor-logos/web/yxpolyer-web.png differ diff --git a/client/public/vendor-logos/web/zedex-web.png b/client/public/vendor-logos/web/zedex-web.png new file mode 100644 index 000000000..5fe26ad0c Binary files /dev/null and b/client/public/vendor-logos/web/zedex-web.png differ diff --git a/client/public/vendor-logos/web/ziro-web.png b/client/public/vendor-logos/web/ziro-web.png new file mode 100644 index 000000000..e710da812 Binary files /dev/null and b/client/public/vendor-logos/web/ziro-web.png differ diff --git a/client/public/vendor-logos/web/zortrax-web.png b/client/public/vendor-logos/web/zortrax-web.png new file mode 100644 index 000000000..50c1047c6 Binary files /dev/null and b/client/public/vendor-logos/web/zortrax-web.png differ diff --git a/client/public/vendor-logos/web/zyltech-web.png b/client/public/vendor-logos/web/zyltech-web.png new file mode 100644 index 000000000..7e8d7c3ef Binary files /dev/null and b/client/public/vendor-logos/web/zyltech-web.png differ diff --git a/client/src/App.tsx b/client/src/App.tsx index d907b8ee1..71d84182d 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -28,6 +28,7 @@ import liveProvider from "./components/liveProvider"; import SpoolmanNotificationProvider from "./components/notificationProvider"; import { ColorModeContextProvider } from "./contexts/color-mode"; import { languages } from "./i18n"; +import "./utils/overrides.css"; import { getAPIURL, getBasePath } from "./utils/url"; interface ResourcePageProps { @@ -194,7 +195,9 @@ function App() { /> } /> } /> + } /> } /> + } /> } /> @@ -208,6 +211,9 @@ function App() { /> } /> } /> + } /> + } /> + } /> } /> diff --git a/client/src/components/colorHexPreview.tsx b/client/src/components/colorHexPreview.tsx new file mode 100644 index 000000000..1931795cb --- /dev/null +++ b/client/src/components/colorHexPreview.tsx @@ -0,0 +1,78 @@ +import { Typography } from "antd"; +import SpoolIcon from "./spoolIcon"; + +interface ColorHexPreviewProps { + colorHex?: string | null; + multiColorHexes?: string | null; + multiColorDirection?: string | null; +} + +const SMALL_TEXT_STYLE = { + fontSize: 12, + color: "rgba(255,255,255,0.45)", + lineHeight: 1.2, +}; + +const normalizeHex = (value: string) => `#${value.replace("#", "").toUpperCase()}`; + +export default function ColorHexPreview({ colorHex, multiColorHexes, multiColorDirection }: Readonly) { + const colors = + multiColorHexes + ?.split(",") + .map((hex) => hex.trim()) + .filter((hex) => hex.length > 0) + .map(normalizeHex) ?? []; + + if (colors.length <= 1) { + const singleColor = colorHex ? normalizeHex(colorHex) : colors[0]; + if (!singleColor) return null; + return ( +
+ + {singleColor} +
+ ); + } + + const isLongitudinal = multiColorDirection === "longitudinal"; + if (isLongitudinal) { + return ( +
+ {colors.map((hex, index) => ( +
+
+ {hex} +
+ ))} +
+ ); + } + + return ( +
+ {colors.map((hex, index) => ( +
+ + {hex} +
+ ))} +
+ ); +} diff --git a/client/src/components/column.tsx b/client/src/components/column.tsx index 059b607f0..e017cd5f4 100644 --- a/client/src/components/column.tsx +++ b/client/src/components/column.tsx @@ -1,10 +1,11 @@ import { DateField, TextField } from "@refinedev/antd"; import { UseQueryResult } from "@tanstack/react-query"; -import { Button, Col, Dropdown, Row, Space, Spin } from "antd"; +import { Button, Checkbox, Col, Dropdown, Input, Row, Space, Spin } from "antd"; import { ColumnFilterItem, ColumnType } from "antd/es/table/interface"; import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; import { AlignType } from "rc-table/lib/interface"; +import { Key, useMemo, useState } from "react"; import { Link } from "react-router"; import { getFiltersForField, typeFilters } from "../utils/filtering"; import { enrichText } from "../utils/parsing"; @@ -27,6 +28,270 @@ const FilterDropdownLoading = () => { ); }; +function filterSearchTerm(item: ColumnFilterItem): string { + const extraSearchTerm = (item as ColumnFilterItem & { sortId?: string }).sortId; + if (extraSearchTerm) { + return extraSearchTerm.toLowerCase(); + } + if (typeof item.text === "string") { + return item.text.toLowerCase(); + } + if (item.value !== undefined && item.value !== null) { + return String(item.value).toLowerCase(); + } + return ""; +} + +function valueKey(value: Key): string { + return String(value); +} + +function normalizeSearchableValue(value: unknown): string { + if (value === null || value === undefined) { + return ""; + } + if (Array.isArray(value)) { + return value.map((entry) => String(entry)).join(", "); + } + return String(value); +} + +function getRecordValue(record: unknown, dataIndex: string | string[]): unknown { + if (Array.isArray(dataIndex)) { + return dataIndex.reduce((current, part) => { + if (current === null || current === undefined || typeof current !== "object") { + return undefined; + } + return (current as Record)[part]; + }, record); + } + + if (record !== null && record !== undefined && typeof record === "object") { + const recordObject = record as Record; + if (Object.prototype.hasOwnProperty.call(recordObject, dataIndex)) { + return recordObject[dataIndex]; + } + } + + return dataIndex.split(".").reduce((current, part) => { + if (current === null || current === undefined || typeof current !== "object") { + return undefined; + } + return (current as Record)[part]; + }, record); +} + +function FilterDropdownContent(props: { + items: ColumnFilterItem[]; + selectedKeys: Key[]; + setSelectedKeys: (keys: Key[]) => void; + confirm: () => void; + clearFilters?: () => void; + allowMultipleFilters: boolean; + t: (key: string) => string; +}) { + const { items, selectedKeys, setSelectedKeys, confirm, clearFilters, allowMultipleFilters, t } = props; + const [searchQuery, setSearchQuery] = useState(""); + + const filteredItems = useMemo(() => { + const search = searchQuery.trim().toLowerCase(); + if (search.length === 0) { + return items; + } + return items.filter((item) => filterSearchTerm(item).includes(search)); + }, [items, searchQuery]); + + const filteredValues = useMemo( + () => + filteredItems + .map((item) => item.value) + .filter((value): value is Key => value !== undefined && value !== null && typeof value !== "boolean"), + [filteredItems], + ); + + const selectedKeySet = useMemo(() => new Set(selectedKeys.map(valueKey)), [selectedKeys]); + const filteredValueKeySet = useMemo(() => new Set(filteredValues.map(valueKey)), [filteredValues]); + const dropdownWidth = useMemo(() => { + const minWidth = 240; + const maxWidth = minWidth * 2; + // Keep a stable width while typing/filtering by sizing from the full list. + const longestTextLength = items.reduce((maxLength, item) => { + return Math.max(maxLength, filterSearchTerm(item).length); + }, 0); + const estimatedWidth = 90 + Math.min(longestTextLength, 48) * 8; + const buttonLabelWidth = Math.max( + (t("buttons.selectAll").length + t("buttons.selectNone").length + 8) * 7, + minWidth, + ); + return Math.min(Math.max(minWidth, estimatedWidth, buttonLabelWidth), maxWidth); + }, [items, t]); + + const selectAllFiltered = () => { + if (filteredValues.length === 0) { + return; + } + if (!allowMultipleFilters) { + setSelectedKeys([filteredValues[0]]); + return; + } + + const existing = new Map(selectedKeys.map((value) => [valueKey(value), value])); + filteredValues.forEach((value) => existing.set(valueKey(value), value)); + setSelectedKeys(Array.from(existing.values())); + }; + + const selectNoneFiltered = () => { + if (!allowMultipleFilters) { + const firstNonFiltered = selectedKeys.find((value) => !filteredValueKeySet.has(valueKey(value))); + setSelectedKeys(firstNonFiltered ? [firstNonFiltered] : []); + return; + } + setSelectedKeys(selectedKeys.filter((value) => !filteredValueKeySet.has(valueKey(value)))); + }; + + return ( +
+ setSearchQuery(event.target.value)} + /> +
+ + +
+
+ {filteredItems.map((item, index) => { + const optionValue = item.value; + if (optionValue === undefined || optionValue === null || typeof optionValue === "boolean") { + return null; + } + const checked = selectedKeySet.has(valueKey(optionValue)); + return ( +
+ { + const isChecked = event.target.checked; + if (!allowMultipleFilters) { + setSelectedKeys(isChecked ? [optionValue] : []); + return; + } + + if (isChecked) { + setSelectedKeys([...selectedKeys, optionValue]); + } else { + setSelectedKeys(selectedKeys.filter((value) => valueKey(value) !== valueKey(optionValue))); + } + }} + > + + {item.text} + + +
+ ); + })} +
+ + + + +
+ ); +} + + +function SearchFilterDropdownContent(props: { + selectedKeys: Key[]; + setSelectedKeys: (keys: Key[]) => void; + confirm: () => void; + clearFilters?: () => void; + t: (key: string) => string; + placeholder: string; +}) { + const { selectedKeys, setSelectedKeys, confirm, clearFilters, t, placeholder } = props; + const currentValue = selectedKeys.length > 0 ? String(selectedKeys[0]) : ""; + + return ( +
+ { + const value = event.target.value; + setSelectedKeys(value ? [value] : []); + }} + onPressEnter={() => confirm()} + /> + + + + +
+ ); +} + interface Entity { id: number; } @@ -46,6 +311,9 @@ interface BaseColumnProps { title?: string; align?: AlignType; sorter?: boolean; + searchable?: boolean; + searchPlaceholder?: string; + searchValueFormatter?: (rawValue: unknown, record: Obj) => string; t: (key: string) => string; navigate: (link: string) => void; dataSource: Obj[]; @@ -108,9 +376,22 @@ function Column( if (props.filters && props.filteredValue) { columnProps.filters = props.filters; columnProps.filteredValue = props.filteredValue; - if (props.loadingFilters) { - columnProps.filterDropdown = ; - } + columnProps.filterDropdown = ({ selectedKeys, setSelectedKeys, confirm, clearFilters }) => { + if (props.loadingFilters) { + return ; + } + return ( + + ); + }; columnProps.filterDropdownProps = { onOpenChange: (open) => { if (open && props.onFilterDropdownOpen) { @@ -121,6 +402,69 @@ function Column( if (props.dataId) { columnProps.key = props.dataId; } + } else if (props.searchable) { + const filterField = props.dataId ?? (Array.isArray(props.id) ? undefined : (props.id as keyof Obj)); + if (filterField) { + const typedFilters = typeFilters(props.tableState.filters); + const filteredValue = getFiltersForField(typedFilters, filterField); + const searchableValues = new Map(); + const searchValueDataIndex = props.dataId ?? props.id; + + props.dataSource.forEach((record) => { + const rawValue = getRecordValue(record, searchValueDataIndex); + const displayValue = props.searchValueFormatter + ? props.searchValueFormatter(rawValue, record) + : normalizeSearchableValue(rawValue); + const normalizedDisplayValue = displayValue ?? ""; + const filterValue = normalizedDisplayValue === "" ? "" : normalizedDisplayValue; + if (!searchableValues.has(filterValue)) { + searchableValues.set(filterValue, normalizedDisplayValue); + } + }); + + const searchableFilters: ColumnFilterItem[] = Array.from(searchableValues.entries()) + .map(([value, label]) => ({ value, text: label })) + .sort((left, right) => + filterSearchTerm(left).localeCompare(filterSearchTerm(right), undefined, { + numeric: true, + sensitivity: "base", + }), + ); + + columnProps.filteredValue = filteredValue; + + if (searchableFilters.length > 0) { + columnProps.filters = searchableFilters; + columnProps.filterMultiple = true; + columnProps.filterDropdown = ({ selectedKeys, setSelectedKeys, confirm, clearFilters }) => ( + + ); + } else { + columnProps.filterMultiple = false; + columnProps.filterDropdown = ({ selectedKeys, setSelectedKeys, confirm, clearFilters }) => ( + + ); + } + + if (props.dataId) { + columnProps.key = props.dataId; + } + } } // Render @@ -170,6 +514,7 @@ export function SortedColumn(props: BaseColumnProps) { return Column({ ...props, sorter: true, + searchable: props.searchable ?? true, }); } @@ -178,6 +523,7 @@ export function RichColumn( ) { return Column({ ...props, + searchable: props.searchable ?? true, render: (rawValue: string | undefined) => { const value = props.transform ? props.transform(rawValue) : rawValue; return enrichText(value); @@ -188,6 +534,8 @@ export function RichColumn( interface FilteredQueryColumnProps extends BaseColumnProps { filterValueQuery: UseQueryResult; allowMultipleFilters?: boolean; + includeEmptyFilter?: boolean; + emptyFilterLabel?: string; } export function FilteredQueryColumn(props: FilteredQueryColumnProps) { @@ -205,19 +553,29 @@ export function FilteredQueryColumn(props: FilteredQueryColu return item; }); } - filters.push({ - text: "", - value: "", - }); + if (props.includeEmptyFilter !== false) { + filters.push({ + text: props.emptyFilterLabel ?? "", + value: "", + }); + } const typedFilters = typeFilters(props.tableState.filters); const filteredValue = getFiltersForField(typedFilters, props.dataId ?? (props.id as keyof Obj)); const onFilterDropdownOpen = () => { - query.refetch(); + if (query.data === undefined && !query.isFetching) { + query.refetch(); + } }; - return Column({ ...props, filters, filteredValue, onFilterDropdownOpen, loadingFilters: query.isLoading }); + return Column({ + ...props, + filters, + filteredValue, + onFilterDropdownOpen, + loadingFilters: query.isLoading && query.data === undefined, + }); } interface NumberColumnProps extends BaseColumnProps { @@ -231,6 +589,7 @@ export function NumberColumn(props: NumberColumnProps) return Column({ ...props, align: "right", + searchable: props.searchable ?? true, render: (rawValue) => { const value = props.transform ? props.transform(rawValue) : rawValue; if (value === null || value === undefined) { @@ -253,6 +612,14 @@ export function NumberColumn(props: NumberColumnProps) export function DateColumn(props: BaseColumnProps) { return Column({ ...props, + searchable: props.searchable ?? true, + searchValueFormatter: (rawValue) => { + const value = props.transform ? props.transform(rawValue) : rawValue; + if (!value) { + return ""; + } + return dayjs.utc(value as string).local().format("YYYY-MM-DD HH:mm"); + }, render: (rawValue) => { const value = props.transform ? props.transform(rawValue) : rawValue; return ( @@ -273,7 +640,10 @@ export function ActionsColumn( ): ColumnType | undefined { return { title, + key: "actions", responsive: ["lg"], + fixed: "right", + width: 190, render: (_, record) => { const buttons = actionsFn(record).map((action) => { if (action.link) { @@ -366,6 +736,7 @@ export function SpoolIconColumn(props: SpoolIconColumnProps< export function NumberRangeColumn(props: NumberColumnProps) { return Column({ ...props, + searchable: props.searchable ?? true, render: (rawValue) => { const value = props.transform ? props.transform(rawValue) : rawValue; if (value === null || value === undefined) { diff --git a/client/src/components/multiColorPicker.tsx b/client/src/components/multiColorPicker.tsx index ef84e5045..f2a92a004 100644 --- a/client/src/components/multiColorPicker.tsx +++ b/client/src/components/multiColorPicker.tsx @@ -26,46 +26,184 @@ export function MultiColorPicker(props: { onChange?: (value: string | null | undefined) => void; min?: number; max?: number; + layout?: "horizontal" | "vertical"; + showHex?: boolean; + hexPosition?: "right" | "bottom"; + swatchWidth?: number; + swatchHeight?: number; }) { const values = props.value ? props.value.split(",") : generateInitialColors(props.min ?? 0); if (!props.value && props.onChange) { // Update value immediately props.onChange(values.join(",")); } - const pickers = values.map((value, idx) => ( - (props.min ?? 0) ? ( - - { + const formattedHex = `#${value.replace("#", "").toUpperCase()}`; + return ( + (props.min ?? 0) ? ( + + { + if (props.onChange) { + props.onChange(values.filter((v, i) => i !== idx).join(",")); + } + }} + /> + + ) : ( + <> + ) + } + > +
+ { + if (props.onChange) { + props.onChange(values.map((v, i) => (i === idx ? clr.toHex() : v)).join(",")); + } + }} + > +
+ + {showHex && {formattedHex}} +
+ + ); + }); + + const isVerticalWithRightHex = layout === "vertical" && showHex && hexPosition === "right"; + if (isVerticalWithRightHex) { + const canRemove = values.length > (props.min ?? 0); + const canAdd = values.length < (props.max ?? Infinity); + const actionSize = Math.max(20, Math.min(28, swatchHeight)); + const rowGap = 12; + return ( +
+ + {values.map((_, idx) => ( +