1215 Commits

Author SHA1 Message Date
Alexandre Bodin
a1a359742a fix: manage auth in redux store 2024-06-24 11:19:53 +02:00
Alexandre Bodin
3aee925501 fix: several media lib ui issues
fix: using open prop does not clear any state and create a lot of bugs

fix: crop
2024-06-20 17:27:42 +02:00
Alexandre Bodin
2fac4a3cfe fix: multiple is only available in attribute now 2024-06-17 17:58:33 +02:00
Josh
11011e9804
chore: integrate beta.5 of the design-system (#20431)
* chore: refactor admin

* chore: refactor content-manager

* chore: refactor plugins

* chore: refactor content-releases

* chore: refactor CTB

* chore: refactor i18n

* chore: refactor user-permissions

* chore: refactor upload plugin

* chore: update deps

* chore: fix ci

* chore: design fixes

* chore: update import

Co-Authored-By: Simone <startae14@gmail.com>

* fix: guided home tour check color

* chore: update snapshots

* chore: update to beta.6

* chore: update import

Co-authored-by: Simone <startae14@gmail.com>

* chore: more fixes

* chore: fix import syntax

Co-authored-by: Simone <startae14@gmail.com>

* chore: fixes

* fix(upload): snapshot

---------

Co-authored-by: Simone <startae14@gmail.com>
Co-authored-by: Jamie Howard <jamie.howard@strapi.io>
2024-06-10 14:50:34 +01:00
Josh
5ff7024fc8
chore: update DS to 2.0.0-beta.4 (#20301) 2024-05-20 10:42:44 +01:00
Simone
c734c14d5f
feat(main-nav): Main nav refactoring, change links order (#20275)
* feat(main-nav): change links order in main nav

* feat(main-nav): add the position property to order links in the main nav

* feat(main-nav): refactor the sorting of the nav links

* feat(main-nav): add useCollator and format message to sort by name the links
2024-05-13 08:58:09 +02:00
Bassel Kanso
3bc72930fa Merge branch 'v5/main' into v5/replace-axios 2024-05-08 12:00:18 +03:00
Josh
b7c62568a8
chore!: update styled-components to 6 & update DS to 2.0.0-beta.3 (#20260)
* chore: update styled-components to 6

* chore: update admin

* chore: update CM

* chore: update ctb

* chore: update other plugin packages

* chore: update content-releases

* chore: update user-permissions

* chore: update upload

* chore: update fields to be dot notation

* chore: update tests

* chore: update yarn.lock

* chore: update snapshots

* chore: update deps

* chore: update snapshots

* fix: left menu

* test: add label prop to NavLink test

* chore: PR tweaks
2024-05-07 14:01:26 +01:00
Bassel Kanso
ab41b2e7ac Merge branch 'v5/main' into v5/replace-axios 2024-05-06 21:48:47 +03:00
Madhuri Sandbhor
63d70071de
chore: moved cms components from DS to admin (#20242)
* chore: move all CMS components from DS to admin

* fix: eslint config

---------

Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
2024-05-06 09:29:44 +01:00
Bassel Kanso
6138ca5504 Merge branch 'v5/main' into v5/replace-axios 2024-05-02 16:22:04 +03:00
Rémi de Juvigny
f1dbaef309
chore: rename core packages (#20243)
* chore: remove plugin from cm package name

* chore: remove plugin from upload package name

* chore: remove plugin from email package name

* chore: remove plugin from ctb package name

* chore: remove plugin from i18n package name

* fix: plugin ids

* fix: v5 migratino

* fix: import order lint error
2024-05-02 09:07:50 -04:00
Bassel Kanso
833d0a7ccd chore: removing onUploadProgress from upload plugin 2024-05-02 13:32:54 +03:00
Bassel Kanso
fd55682955 Merge branch 'v5/main' into v5/replace-axios 2024-04-29 02:13:48 +03:00
Josh
5d000fb33c
chore: upgrade to DS 2.0.0-beta.2 (#20151) 2024-04-25 16:17:23 +01:00
Bassel Kanso
8f75d1e78a chore: making upload work with fetchClient 2024-04-23 17:12:52 +03:00
markkaylor
80e532931b
chore: merge develop into v5/main (#20126) 2024-04-16 18:06:25 +02:00
Ben Irvin
b003dee48e
chore: upgrade prettier to 3.2.5 2024-03-29 14:39:52 +01:00
Christian
8af582bab7
chore(admin): remove react-helmet (#19923)
* chore: remove react-helmet

* chore: lint fixes

---------

Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
2024-03-27 10:02:40 +00:00
Josh
e11b6f2e96
chore(helper-plugin)!: move RBAC / remove auth / remove usePersistentState (#19847)
* chore(helper-plugin)!: move useRBAC

* chore: get tests working

* chore!: remove auth

* chore!: remove usePersistentState

* fix: refactor building admin package so it shares modules with different entries

* fix: session vs local
2024-03-20 11:39:59 +00:00
Simone
bef2911a46
chore(helper-plugin)!: remove stopPropagation (#19846)
* chore(helper-plugin)!: remove stopPropagation

* chore(helper-plugin)!: remove onRowClick util
2024-03-19 17:47:38 +00:00
Simone
c46976a9da
chore(helper-plugin)!: remove prefixPluginTranslations (#19845) 2024-03-19 16:33:46 +00:00
Simone
e9eabddd69
chore(helper-plugin)!: move getFetchClient and useFetchClient (#19840)
* chore(helper-plugin)!: move useFetchClient and getFetchClient to the admin

* chore(helper-plugin)!: fix prettier errors

* chore(helper-plugin)!: remove useless functions
2024-03-19 15:37:20 +00:00
Simone
426ddd2ec2
chore(helper-plugin)!: remove useSelectionState (#19841) 2024-03-19 14:22:11 +00:00
Josh
b17a180f13
chore!(helper-plugin): remove useLockScroll / useClipboard / useFocusWhenNavigate / useQuery / useFocusInputField (#19835)
* chore!: remove useLockScroll & useClipboard

* chore!: remove useFocusWhenNavigate

* chore!: remove useQuery

* chore!: remove useFocusInputField

* chore!: move useQueryParams

* chore: fix tests

* chore: update copy

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

* chore: pretty

---------

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
2024-03-19 09:56:07 +00:00
Josh
95674865d9
chore(helper-plugin)!: move Notifications & AppInfo to admin (#19831)
* chore(helper-plugin)!: move Notifications to admin

* chore(helper-plugin)!: move AppInfo to admin
2024-03-18 21:07:24 +00:00
Josh
23d1b3801a
chore(helper-plugin)!: remove auto-reload blockers (#19828) 2024-03-18 19:09:41 +00:00
Josh
493e2923f5
chore(deps): update some fe deps (#19810)
* chore(deps): update some

* chore: fix tests from deps updates
2024-03-18 17:27:27 +00:00
Simone
2b10610286
chore(helper-plugin)!: move getPrefixedId, useAPIErrorHandler, normalizeAPIError and getAPIInnerErrors (#19823) 2024-03-18 15:43:19 +00:00
Simone
1cb89ea8d0
chore!: remove translatedErrors from the helper-plugin (#19814)
* chore: move translatedErrors into the admin

* chore: fix prettier errors
2024-03-18 13:36:43 +00:00
Josh
5989f7ef55
chore(helper-plugin)!: move tracking feature (#19809) 2024-03-18 10:09:21 +00:00
Josh
82aa22ff29
chore!: remove CheckPermissions component (#19793) 2024-03-18 08:17:42 +00:00
Josh
f2e89269f9
chore!: move confirm dialog to admin package and refactor (#19782) 2024-03-15 15:33:24 +00:00
Simone
85f4bdc214
chore: helper-plugin remove prefixFileUrlWithBackendUrl (#19764)
* chore: remove prefixFileUrlWithBackendUrl from the helper plugin

* chore: move the prefixFileUrlWithBackend in an util inside the admin

* chore: remove commented code
2024-03-14 15:26:13 +01:00
Simone
11079442a1
chore: remove pxToRem and replace it with the returning value of the function (#19771)
* chore: remove pxToRem from the helper plugin utils

* chore: fix prettier errors
2024-03-14 11:18:35 +01:00
Simone
794f5522b5
chore: remove getFileExtension and replace it with its code where used (#19762)
* chore: remove getFileExtension and replace it with its code where used

* chore: create a getFileExtension util in upload with its test
2024-03-13 22:54:00 +01:00
Josh
af3c6ff7bd
chore(helper-plugin): deprecate MORE components (#19718) 2024-03-11 12:00:00 +00:00
Josh
cbe7d7a488
chore(helper-plugin)!: remove page decorators (#19662)
* chore(helper-plugin): remove page decorators

* chore: fixes
2024-03-05 14:53:55 +00:00
Josh
7134d545db
chore(helper-plugin)!: remove some components (#19640)
* chore!: move ContentBox

* chore!: remove status

* chore!: remove the icons

* chore!: remove SettingsPageTitle

* chore!: remove InjectionZone

* chore!: remove NotAllowedInput

* fix(user-permissions): unit test for advanced settings

* chore!: remove ReactSelect

* chore!: remove NoMedia

* chore!: remove NoContent
2024-03-05 08:50:41 +00:00
Josh
93eda17d2a
chore(helper-plugin)!: remove form (#19612)
* chore!: remove form

* chore: re-introduce form error focusing

* chore: remove usage of Formik in auth

* chore: fix test suite
2024-02-29 14:18:21 +00:00
Josh
585e011c69
chore: begin work on dismantling helper-plugin (#19607)
* chore: remove stories

* docs: add generator from type-doc

* chore!: remove CM functions

* chore!: remove DateTimePicker

* chore!: remove Link and LinkButton
2024-02-27 13:23:04 +00:00
Josh
4f4e3c3acd
feat(cm): D&P pt2 (#19380)
* feat: return metadata on content manager endpoints (#19361)

* feat: return metadata on content manager endpoints

* feat: return meta

* fix: cm tests

* feat: fix cm metadata api tests (#19375)

* feat: return metadata on content manager endpoints

* feat: return meta

* fix: cm tests

* fix: admin test

* chore(cm): refactor CM (#19341)

* chore(cm): refactor EditView

comes with a host of new re-usable APIs!

* feat(cm): add useDocument hook

* feat(cm): add useDocumentOperations hook

* feat(cm): initialise EditView header

* feat(cm): add useDocumentLayout hook

* fix: listView from layout refactor

* chore(cm): refactor editview form input renderer

* chore: fix lint & ts

* fix: re-add custom fields

* test: fix admin/CM unit tests

* docs(cm): add docs at a high level of how the CM works

* test: add useDocumentRBAC tests

* chore: pr amends

* feat: add addEditViewSidePanel API to strapi (#19398)

* feat: add addEditViewSidePanel API to strapi

fix: don't pass all the query params to the create route

* chore: pr amends

* fix: return available status when content type doesnt have i18n enabled (#19419)

* fix: return available status when content type doesnt have i18n enabled

* chore: remove comment

* fix(cm): list view & build process

* feat: save and publish

* feat: update contract

* feat: dp tests

* chore: use document from create and update

* feat: save and publish single types

* feat: return metadata on content manager endpoints (#19361)

* feat: return metadata on content manager endpoints

* feat: return meta

* fix: cm tests

* feat: fix cm metadata api tests (#19375)

* feat: return metadata on content manager endpoints

* feat: return meta

* fix: cm tests

* fix: admin test

* chore(cm): refactor CM (#19341)

* chore(cm): refactor EditView

comes with a host of new re-usable APIs!

* feat(cm): add useDocument hook

* feat(cm): add useDocumentOperations hook

* feat(cm): initialise EditView header

* feat(cm): add useDocumentLayout hook

* fix: listView from layout refactor

* chore(cm): refactor editview form input renderer

* chore: fix lint & ts

* fix: re-add custom fields

* test: fix admin/CM unit tests

* docs(cm): add docs at a high level of how the CM works

* test: add useDocumentRBAC tests

* chore: pr amends

* feat: add addEditViewSidePanel API to strapi (#19398)

* feat: add addEditViewSidePanel API to strapi

fix: don't pass all the query params to the create route

* chore: pr amends

* fix: return available status when content type doesnt have i18n enabled (#19419)

* fix: return available status when content type doesnt have i18n enabled

* chore: remove comment

* fix(cm): list view & build process

* feat: add publish & update action (#19423)

* feat: return metadata on content manager endpoints (#19361)

* feat: return metadata on content manager endpoints

* feat: return meta

* fix: cm tests

* feat: fix cm metadata api tests (#19375)

* feat: return metadata on content manager endpoints

* feat: return meta

* fix: cm tests

* fix: admin test

* chore(cm): refactor CM (#19341)

* chore(cm): refactor EditView

comes with a host of new re-usable APIs!

* feat(cm): add useDocument hook

* feat(cm): add useDocumentOperations hook

* feat(cm): initialise EditView header

* feat(cm): add useDocumentLayout hook

* fix: listView from layout refactor

* chore(cm): refactor editview form input renderer

* chore: fix lint & ts

* fix: re-add custom fields

* test: fix admin/CM unit tests

* docs(cm): add docs at a high level of how the CM works

* test: add useDocumentRBAC tests

* chore: pr amends

* feat: add addEditViewSidePanel API to strapi (#19398)

* feat: add addEditViewSidePanel API to strapi

fix: don't pass all the query params to the create route

* chore: pr amends

* fix: return available status when content type doesnt have i18n enabled (#19419)

* fix: return available status when content type doesnt have i18n enabled

* chore: remove comment

* feat: add publish & update action

* feat: add published disabled state

* test: fix suite

* test: add unit for Panels

* fix(cm): status not state for redirect

* fix(cm): list view status & component main field property

* chore: pr feedback

* chore: apply suggestions

Co-authored-by: markkaylor <mark.kaylor@strapi.io>

---------

Co-authored-by: Marc Roig <marc12info@gmail.com>
Co-authored-by: markkaylor <mark.kaylor@strapi.io>

* feat: test single types

* feat: wrap single type publish into a transaction

* feat(cm): add unpublish & delete actions, also re-enable single-types (#19459)

* fix: delete url was wrong way round

* feat: compute modified status

* fix(cm): reimplement ListSettingsView (#19432)

* chore: PR feedback

* feat: discard endpoint

* feat: discard draft api tests

* feat: unpublish and discard

* chore: pr comments

* chore: update sanitizer

* feat(cm): add publish and save (#19500)

* feat(cm): add publish and save

* test(cm): fix unit for useDocumentActions

* Update packages/core/content-manager/server/src/controllers/collection-types.ts

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

* Update packages/core/content-manager/shared/contracts/single-types-v5.ts

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

* feat(document-service): map document ID to entry ID (#19248)

* feat: use document service in content manager

* feat: update contracts with meta information

* chore: group metadata types into a single type

* feat: metadata information in single types

* chore: change meta contract to return documents instead of strings

* fix: remove unused type

* fix: ignore doc id if entry is null

* fix: update contract metadata

* feat: document metadata service

* feat: locale and status filtering

* chore: add comment

* chore: refactor metadata service

* chore: refactor entity manager exists to handle single types

* feat: refactor single type controllers to use documents

* feat: get locale param from in cm endpoints

* Revert "feat: get locale param from in cm endpoints"

This reverts commit 856c38588b8f8521cadd85c8c933f42a36a2178a.

* feat: get locale param from cm endpoints

* Update packages/plugins/i18n/server/src/controllers/validate-locale-creation.ts

Co-authored-by: Ben Irvin <ben@innerdvations.com>

* fix: entity manager unit tests

* chore: unit test document metadata

* feat: prevent empty string locale filtering

* fix: cm contract import

* chore: test new d&p cm features

* fix: search content manager api test

* fix: cm tests

* fix: cm tests

* fix: cm tests

* fix(content-manager): access to non default locale documents (#19190)

* fix(content-manager): access to non default locale documents

* chore(content-manager): revert route construction

* fix(content-manager): api tests for number of draft relations

* test(content-manager): counting number of draft relations for non default locales

* chore(content-manager): remove default locale from entity manager countDraftRelations

* chore: basic relations testing for document service

* chore(e2e): disable edit view tests (#19235)

* feat: get relation ids

* chore: clean functions into other folders

* chore: rename files

* fix: group document ids by its uid

* feat: id mapper

* chore: improve typings

* chore: rename transform functions

* fix: id-transform tests

* chore: simplify function return value

* chore: improve comments

* fix: api tests

* fix: single types unit test

* fix: skip relations test

* fix: exclude fields

* fix: short hand ifs

* fix: merge conflict

* fix: transform output of find one

* Update packages/core/core/src/services/document-service/transform/utils.ts

Co-authored-by: Ben Irvin <ben.irvin@strapi.io>

* feat[Document Service]: Param transformation (#19373)

* fix(core): wip param transformation

* feat(core): wip param transformation based on relational status

* feat(core): wip populate and filter transformation based on relational status

* chore(core): simplify fields and sort

* chore(core): clean up

* feat(core): wip filter transformation with traverseQueryFilters

* feat(core): reorganise and PR feedback

* fix(core): filters traversal logic

* feat(core): populate relational transformations

* chore(core): reintroduce populate transformation

* fix(core): enforce that fields must include id

* fix(core): enforce that fields must include id

* fix(core): filter and sort transformation

* chore(core): typos

* chore(core): further filters test cases

* feat(core): support object based sorts

* chore(core): fields test naming

* feat(core): handle logical operators in filters

* fix: skip conditions test

* fix(core): switchIdForDocumentId (#19497)

* fix: uniqueness test

* fix: available status should be an array

* fix: available statuses

* fix: skip uniqueness folder

* fix: skip uniqueness test errors

* fix: skip failing test

---------

Co-authored-by: Ben Irvin <ben@innerdvations.com>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
Co-authored-by: Jamie Howard <jamie.howard@strapi.io>
Co-authored-by: Ben Irvin <ben.irvin@strapi.io>

* chore: re-implement edit configuration (#19488)

* chore: re-implement edit configuration

* chore: cleanups

* test: fix unit tests

* feat(cm): add discard changes action (#19509)

* feat(cm): add discard changes action

* feat(cm): add discard when unpublishing

* test(e2e): fix editview e2e

* test(e2e): fix uniqueness partially

* test(unit): fix unit tests for actions & add for discard

* chore: bump playwright

* fix(webkit): add shim for requestIdCallback

* chore: pr amends

* feat: return status on available locales

* feat: add document-actions to list-view (#19523)

* fix(cm): add gap and alignment for edit-view heading with super long names

* fix(cm): list view status'

* feat: add list-view actions

* fix: conditions for actions to be enabled

* fix: stay on draft tab when published

* fix: stop propogation on list-view row click

* test(e2e): fix editview tests

* chore: update spelling error

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

---------

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

* feat: test document metadata

* chore: remove unnecessary unit test

* fix: return modified on published documents

* chore: init split single-type collection-type in document service

* Fix/fields test case (#19481)

* Update packages/core/content-manager/server/src/services/document-metadata.ts

Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>

* fix: pretty

* chore: refactor middlewares

* feat: send empty object if locale does not exist on document

* feat: single types

* chore: add tests to middlewares

* feat: update locale using query params (#19546)

* feat: return available locales when not finding locale

* chore: update typings

* feat: add clone action (#19526)

* feat: add clone action

* test(e2e): add auto clone tests

* chore: pr amends

* feat: add information to header actions menu (#19548)

* feat: add information to header actions menu

* fix: dont use non-null-assertion

* feat: manage relations on publish (#19427)


---------

Co-authored-by: Ben Irvin <ben@innerdvations.com>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
Co-authored-by: Jamie Howard <jamie.howard@strapi.io>

* feat: v5 i18n relations (#19504)


Co-authored-by: Ben Irvin <ben@innerdvations.com>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
Co-authored-by: Jamie Howard <jamie.howard@strapi.io>

* fix: locale test api

* chore: refactor i18n (#19555)

* chore: remove types package, should be using strapi

* chore: refactor i18n settings page

* feat: add i18n to CM

* feat(i18n): add delete locale action (#19562)

* chore: pr amends

Co-authored-by: Simone <startae14@gmail.com>

---------

Co-authored-by: Simone <startae14@gmail.com>

* feat(cm): re-implement validation (#19578)

* feat: re-implement validation in the CM

feat: add blocker

feat: handle validation errors from the API

chore: reimplement useFieldHint

test(unit): fix fe tests

chore: fix bad logical operator

* chore: await notifications to leave before trying to go to other pages

* fix: validation issues & blocker showing up incorrectly

* fix: broken publish behaviour

* fix(content-manager): uid availability and generation (#19518)

* fix(content-manager): uid availability and generation

* fix(content-manager): pass locale as is from UID service

* fix(content-manager): match UIDs based on startsWith

---------

Co-authored-by: Marc Roig <marc12info@gmail.com>
Co-authored-by: markkaylor <mark.kaylor@strapi.io>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
Co-authored-by: Ben Irvin <ben@innerdvations.com>
Co-authored-by: Jamie Howard <jamie.howard@strapi.io>
Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com>
Co-authored-by: Alexandre BODIN <alexandrebodin@users.noreply.github.com>
Co-authored-by: Simone <startae14@gmail.com>
2024-02-22 17:18:32 +00:00
Josh
cc1043c512
feat: update to react-router-dom@6 (#19184) 2024-01-15 11:13:36 +00:00
Josh
8aac0893a9
chore: update ds 1.14.1 (#19179) 2024-01-09 11:40:22 +00:00
Josh
3301d58a39
chore(deps): update DS to 1.13.2 (#18959)
* chore(deps): update DS to 1.13.2

* chore: update snapshots
2023-11-30 16:37:04 +00:00
Josh
a549feb253
chore: pretty codebase (#18835) 2023-11-17 14:48:05 +00:00
Josh
0f89dca460
chore(upload): convert JS to JSX (#18818) 2023-11-16 14:10:16 +00:00
Alexandre BODIN
ae792fb42c
Release 4.15.1 (#18646)
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
Co-authored-by: Marc Roig <marc12info@gmail.com>
2023-11-03 08:37:53 +01:00
Thanos
524af8055c
fix(upload): media library image signedUrl cache busting issue (#18541)
* media library image signedUrl cache busting issue references #18443

* date query param typo

* add asset isUrlSigned property, used as asset url cache busting condition

* removed cacheBustUrl function, added inline comment to describe functionality
2023-10-31 15:28:52 +00:00
Josh
116339ad86
refactor: admin build pipeline (#18539)
* chore(admin): refactor admin develop/build pipeline

chore: remove `webpackChunkName` comments

chore: reuse admin tsconfig where possible

chore: add .strapi to gitignore

chore(admin): pack-up

feat(admin): inject commands into strapi from admin for building

feat(admin): move watch command to admin

chore: keep backward compat API available

Update packages/core/admin/_internal/cli/index.ts

docs(admin): document the build & develop process and pipeline

test(admin): fix StrapiApp tests

chore: fix build

* Update skipped_tests.yml

* test(e2e): fix e2e setup

feat: add dependency installation

fix: mjs webpack resolution

* chore: fix server exports

* fix: typescript project type generation

* fix: development watch mode

* fix: connect to hot middleware – anywhere

* Update packages/core/admin/_internal/node/core/monorepo.ts

Co-authored-by: Marc Roig <marc12info@gmail.com>

* fix(admin): theme toggle type export

* chore: fixes

* chore: pr amends

Co-Authored-By: Ben Irvin <ben@innerdvations.com>

---------

Co-authored-by: Marc Roig <marc12info@gmail.com>
Co-authored-by: Ben Irvin <ben@innerdvations.com>
2023-10-30 11:36:16 +00:00