-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
update main #210
Merged
Merged
update main #210
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#141) * 🔧 fix(preview-apps-delete.yml): remove unnecessary steps for downloading and getting PREVIEW_URL from cache 🔧 fix(preview-apps.yml): remove unnecessary steps for caching and installing Vercel CLI, saving environment variables to a file, and uploading env_vars.txt as an artifact ✨ feat(preview-apps.yml): add step to check if app should be built before deploying to Vercel ✨ feat(preview-apps.yml): add step to deploy preview to Vercel only if app requires build ✨ feat(preview-apps.yml): add step to comment on Pull Request with relevant links and Vercel Preview URLs for each app * 🔧 chore(preview-apps.yml): remove unused setup-environment step to simplify workflow 🔧 chore(preview-apps.yml): move setup-environment step after checkout to ensure correct environment setup 🔧 chore(preview-apps.yml): fix cache key for Vercel CLI to ensure correct caching 🔧 chore(preview-apps.yml): fix environment variable name for build required status to ensure correct value is used in deployment step ✨ feat(preview-apps.yml): add support for caching build required status for each app to optimize deployment process ✨ feat(preview-apps.yml): add environment variable for build required status to deployment step to ensure correct deployment based on build status * 🔧 chore(.env.local): update NX_CACHE_DIRECTORY to use .nx/cache directory for improved caching 🔧 chore(.eslintignore): update .eslintignore to ignore .nx directory for linting 🔧 chore(.eslintrc.json): update eslint configuration to use @nx/eslint-plugin and @nx/eslint-plugin/typescript 🔧 chore(.github/workflows/preview-apps-delete.yml): remove trailing whitespace at the end of the file 🔧 chore(.github/workflows/preview-apps.yml): remove trailing whitespace at the end of the file 🔧 chore(.github/workflows/staging-apps.yml): remove trailing whitespace at the end of the file 🔧 chore(.prettierignore): update .prettierignore to ignore .nx/cache directory 🔧 chore(migrations.json): update migrations.json with new migration descriptions and implementations 🔧 chore(package.json): update dependencies and devDependencies to latest versions * 🔧 chore(next.config.js): remove unused serverActions configuration option in back-office and web apps 🔧 chore(generators): update import statement for Linter from '@nx/linter' to '@nx/eslint' in component generator spec * 🔧 chore(project.json): update executor for lint script to use @nx/eslint:lint for consistency and compatibility with other projects * 🔧 chore(workspace): update executor for lint target in project.json files to use @nx/eslint:lint for consistency with other projects * 🔧 chore(.eslintrc.json): reformat and simplify ESLint configuration for better readability and maintainability * 🔧 chore(preview-apps.yml): add 'set -e' to stop execution on error for better error handling 🔧 chore(nx.json): enable caching for various tasks to improve build and test performance * 🔧 chore(ci.yml): remove unused workspace-lint command from parallel-commands to improve build performance 🔧 chore(nx.json): remove workspace-lint command to simplify configuration 🔧 chore(package.json): remove workspace-lint command from lint script to align with configuration changes 🔧 chore(README.md): remove workspace-lint command from deployment instructions as it is no longer needed * 🔧 chore(preview-apps.yml): add debug flag to the script to improve troubleshooting capabilities * 🐛 fix(preview-apps.yml): fix conditional check for BUILD_REQUIRED variable to correctly deploy preview to Vercel ✨ feat(preview-apps.yml): improve build check process by capturing output of nx-ignore command and setting BUILD_REQUIRED variable based on the output * 🔧 chore(preview-apps.yml): add debug and error handling to app build check step for better troubleshooting * 🐛 fix(preview-apps.yml): add debug output to check the exit status of the nx-ignore command The debug output is added to print the exit status of the nx-ignore command. This will help in troubleshooting any issues related to the build process. * 🐛 fix(preview-apps.yml): remove 'set -e' from app_check_build and build_app jobs to prevent job failure on non-zero exit status * 🔧 chore(preview-apps.yml): remove unnecessary debug output and improve readability of the code 🔧 chore(staging-apps.yml): remove unnecessary debug output and improve readability of the code 🔧 chore(vercel.json): add rootDirectory property to specify the root directory of the project for Vercel deployment * 🔧 chore(preview-apps.yml): update vercel pull command to use local config file for better organization and maintainability 🔧 chore(vercel.json): remove unnecessary rootDirectory property from vercel.json file * 🔧 chore(staging-apps.yml): update Vercel deployment commands to use local configuration file for each app 🚀 feat(staging-apps.yml): add support for pulling Vercel configuration from local config file for each app to improve deployment process * 🐛 fix(CartCancelled.stories.tsx): add msw handler to mock graphql query 'GetEventWithPasses' response as null 🐛 fix(CartSuccessful.stories.tsx): add msw handler to mock graphql query 'GetEventWithPasses' response as null 🐛 fix(PassList.stories.tsx): add parameters from PassCard.stories to meta parameters 🐛 fix(PassPurchase.stories.tsx): add msw handler to mock graphql query 'GetEventPassPendingOrderForEventPasses' response as null 🐛 fix(PassPurchaseSheetContainer.stories.tsx): add parameters from PassPurchase.stories to meta parameters * 🔧 chore(preview-apps.yml): update environment variable configuration for Vercel deployment to use .vercel/.env.preview.local file instead of .env file 🔧 chore(PassList.stories.tsx): comment out unused code and remove unused imports to improve code readability and maintainability 🔧 chore(UserPassList.stories.tsx): comment out unused code and remove unused imports to improve code readability and maintainability * 🔧 chore(preview-apps.yml): update Vercel deployment process to include build step and use prebuilt flag for faster deployments 🔨 refactor(Ping.stories.tsx): update WithNumberDoubleDigit story to have isActive set to false instead of true 🔨 refactor(Ping.tsx): update condition for rendering number in Ping component to include isActive check * 🐛 fix(ConvertedCurrency): add support for translation key to display localized content in ConvertedCurrency component 🐛 fix(PassTotal): update translation key for total price in PassTotal component to match the changes in ConvertedCurrency component ✨ feat(PassTotal): add skeleton loading state for PassTotal component in Storybook ✨ feat(ConvertedCurrency): add support for translation key to display localized content in ConvertedCurrency component 🌐 chore(i18n): update translation keys for total price in English and French messages to match the changes in PassTotal component * 🐛 fix(next.config.js): update remotePatterns in images configuration to match media.graphassets.com 🐛 fix(next.config.js): update remotePatterns in images configuration to match media.graphassets.com ✨ feat(next.config.js): enable serverActions experimental feature for Next.js 🐛 fix(next.config.js): update remotePatterns in images configuration to match media.graphassets.com ✨ feat(next.config.js): enable serverActions experimental feature for Next.js 🐛 fix(tsconfig.json): exclude examples.tsx files from TypeScript compilation 🐛 fix(AppNavLayout.tsx): move mobile navigation menu to a separate component ✨ feat(AppNavLayoutDesktop.tsx): create AppNavLayoutDesktop component for desktop navigation ✨ feat(AppNavLayoutMobile.tsx): create AppNavLayoutMobile component for mobile navigation 🐛 fix(AppNavLayout.tsx): move mobile navigation menu to a separate component * 🐛 fix(preview-apps.yml): remove unnecessary variable assignment in vercel build command to fix build process The variable assignment in the vercel build command was unnecessary and caused issues during the build process. Removing it will fix the build process. * 🔧 chore(preview-apps.yml): add NODE_OPTIONS environment variable to increase max old space size for better memory management during build process * 🔧 chore(site.ts): comment out unused site configuration properties to improve code readability and maintainability 🔧 chore(layout.tsx): comment out unused metadata properties to improve code readability and maintainability
* add: maxDuration to 30 seconds for route stripe/checkout to match stripe timeout and give more time to checkOrder fix: alchemy fix, switching from data() thirdweb from all to only one nft to get the base ipfs tokenUri fix: pass not showing in /pass due to eventParameters not having dates fix: french word missing in sentence fix: back-event pass url in pass view and max maxDuration for claim/order route * 🐛 fix(preview-apps.yml): pass global config file to vercel deploy command to fix issue with deploying prebuilt apps * 🔨 refactor(SinglePass.stories.tsx): remove unused import and reorganize import statements for better readability 🐛 fix(SinglePass.stories.tsx): update button names to match the changes in the component for better consistency and accuracy * 🐛 fix(action.ts): throw error if event is not found or has no date to handle edge cases 🔧 chore(nx.json): increase parallelism to 5 for faster execution of tasks * 📝 chore(eslint): add .eslintrc.ci.json configuration file to enforce additional rules for CI environment 🔧 chore(eslint): remove eslint-plugin-prettier from .eslintrc.json as it is not needed 🔧 chore(eslint): update import/no-cycle rule to be turned off in .eslintrc.json * 🔧 chore(.eslintrc.json): remove unnecessary line breaks and align plugin array for better readability 🔧 chore(.eslintrc.json): remove unused rules and align import parser array for better readability * 🔧 chore(.eslintrc.ci.json): extend configuration from .eslintrc.json to maintain consistency and avoid duplication of rules 🔧 chore(ci.yml): update linting command to use --eslintConfig flag instead of --config flag to align with changes in lint-staged.config.js 🔧 chore(lint-staged.config.js): update linting command to use --eslintConfig flag instead of --config flag to align with changes in ci.yml --------- Co-authored-by: sebpalluel <[email protected]>
#147) * 🐛 fix(main.ts): remove unnecessary code and imports to improve code readability and maintainability ✨ feat(main.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🐛 fix(preview.tsx): remove unnecessary code and imports to improve code readability and maintainability ✨ feat(preview.tsx): add DarkModeDecorator, I18nextStoryDecorator, and localStorageResetDecorator decorators for storybook customization 🐛 fix(preview.tsx): remove unnecessary code and imports to improve code readability and maintainability * 🚀 feat(ProfileNav): import ProfileNav as named export to improve code readability and maintainability 🚀 feat(ProfileNav): remove default export of ProfileNav to align with named export 🚀 feat(ProfileAvatar): import ProfileAvatar as named export to improve code readability and maintainability 🚀 feat(ProfileAvatar): remove default export of ProfileAvatar to align with named export * 📦 chore(storybook): add main.ts configuration file to back-office storybook to specify story files and features 📦 chore(storybook): add preview-head.html file to back-office storybook to include Google Fonts link for Inter font 📦 chore(storybook): add preview.tsx file to back-office storybook to configure decorators and loaders 📦 chore(project.json): update port configuration for back-office storybook to use port 4403 📦 chore(tsconfig.json): add tsconfig.storybook.json reference to back-office tsconfig.json to include story files in compilation 📦 chore(tsconfig.storybook.json): create tsconfig.storybook.json file for back-office storybook to specify include and exclude paths 🔥 chore(Dockerfile.web.local): remove Dockerfile.web.local file as it is no longer needed 🔥 chore(storybook.preview.base.tsx): remove storybook.preview.base.tsx file as it is no longer needed 📦 chore(tsconfig.base.json): add back-office app-nav-ui to tsconfig.base.json to include its source files in compilation * 📦 chore(app-nav): add app-nav library to back-office feature 📝 docs(app-nav): add README.md file for app-nav library 🔧 chore(app-nav): add eslint configuration for app-nav library 🔧 chore(app-nav): add jest configuration for app-nav library 🔧 chore(app-nav): add package.json for app-nav library 🔧 chore(app-nav): add project.json for app-nav library 🔧 chore(app-nav): add index.ts file for app-nav library 🔧 chore(app-nav): add hello-server.tsx file for app-nav library 🔧 chore(app-nav): add tsconfig.json for app-nav library 🔧 chore(app-nav): add tsconfig.lib.json for app-nav library 🔧 chore(app-nav): add tsconfig.spec.json for app-nav library 🔧 chore(app-nav): update tsconfig.base.json to include app-nav library * move app-nav-ui to app-nav naming * 🚀 feat(storybook): update storybook configuration for back-office and web apps 📝 chore(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics 🔧 chore(tsconfig.base.json): update paths for various modules and libraries * 🚀 feat(app-nav): add ProfileNavClient component to export React client components for profile navigation 🔥 chore(app-nav): remove unused HelloServer component 🆕 feat(app-nav): add ProfileNavClient.stories.tsx to showcase the usage of ProfileNavClient component 🆕 feat(app-nav): add ProfileNavClient component to handle profile navigation logic and UI rendering * 🚀 feat(app-nav): add ProfileNavClient component to handle profile navigation for authenticated users 🚧 chore(app-nav): add ProfileNavClient.stories.tsx to showcase the usage of ProfileNavClient component 🔧 fix(app-nav): fix import statements in ProfileNavClient.tsx to resolve module paths 🔧 fix(app-nav): fix import statements in examples.tsx to resolve module paths * 🔧 fix(profileNav/default.tsx): update import path for ProfileNavClient to use the new location in @features/app-nav 🔧 fix(layout.tsx): reorder NextAuthProvider and AuthProvider components to fix authentication flow 🔧 fix(next.config.js): update import path for @features/appNav/ui to @features/appNav to match the actual location * 🚀 feat(default.tsx): add new component ProfileNavSection to handle profile navigation in the app 🚀 feat(layout.tsx): add CurrencyProvider to provide currency context to the app 🔥 chore(ProfileNavClient.tsx): remove unused component ProfileNavClient 🔧 chore(next.config.js): update import paths for appNav related features * ✨ feat(settings/page.tsx): add new settings page component to the back office app 🐛 fix(manifest.json): update short name and name fields for back office and web apps to improve clarity and branding * 🔧 chore(jest.config.ts): remove unnecessary transform configuration and update moduleFileExtensions 🔧 chore(middleware.ts): update authPages paths to remove leading slashes for consistency 🔧 chore(tsconfig.spec.json): include *.spec.ts files in the test configuration * 🔧 chore(middleware.spec.ts): add unit tests for middleware function 🔧 chore(middleware.ts): add support for sub routes in authPages array to restrict access to dashboard sub routes * 🚀 feat(chromatic-back-office.yml): add workflow for Chromatic Back-Office to automatically publish changes to Chromatic on pull requests and pushes to staging branch 🚀 feat(chromatic-web.yml): update paths for Chromatic Web workflow to include libs/features and exclude libs/features/back-office 🚀 feat(package.json): add script for building Storybook for Back-Office component library
* fix: add png extension to upload filepath * add: is_minting order status * rename: getEventPassOrderPurchased * add: is_minting to trigger * add: error and refunded to update eventPassOrder sums * update: tests for getEventPassOrderPurchasedForEventPass/es * update: tests for eventPassOrder and migration for update eventPassOrder sums * add: setRates in local in layout.tsx * add: bytescale png verification * add: new minting success message * fix: tests for new getPassorganizer/User * fix: eventPassOrder_by_pk for type in nft EventWithContractMetada * fix: eventPassOrder_by_pk in routes.ts claim/order * fix: squash migrations * fix: add story for minting success in /pass * fix: add test for eventPassOrder is_minting status * fix: tests for eventPassOrder with is_minting
#151) * add: generateMetadata in page.tsx for organizer/organizerSlug/event/eventSlug * add: locale for language and generateLocaleURLs for alternates languages
* ✨ feat(audit): add audit functionality to track changes in tables This commit adds the necessary SQL scripts to implement an audit functionality for tracking changes in tables. The audit functionality is based on the 2ndQuadrant/audit-trigger project with a few modifications. The changes include: - Requiring PostgreSQL version 10 or higher - Storing row data in jsonb format The commit includes the following changes: - Creates a new schema called "audit" to store the audit tables and trigger functions - Creates a table called "audit.logged_actions" to store the history of auditable actions on audited tables - Defines a trigger function called "audit.if_modified_func()" to track changes to a table at the statement and/or row level - Defines a function called "audit.audit_table()" to add auditing support to a table, allowing for row-level changes to be logged with full client query text - Provides convenience call wrappers for the "audit.audit_table()" function to simplify the process of adding auditing support to a table The audit functionality allows for customization through optional parameters in the CREATE TRIGGER call, including whether to log the query text and which columns to ignore in updates. ✨ feat(roles_and_role_assignments): add migration scripts for roles and role_assignments tables The migration scripts add the following changes: - Create the "roles" table to store different user roles with their values as primary keys. - Insert default roles into the "roles" table. - Add comments to describe each role in the "roles" table. - Create the "role_assignments" table to assign roles to accounts, allowing a many-to-many relationship. - Add comments to explain the purpose and design of the "role_assignments" table. - Enable auditing for the "role_assignments" table to record row changes and SQL text. These changes are necessary to implement the Role-Based Access Control (RBAC) system integration within the Offline platform. 📦 chore(audit): add audit_logged_actions.yaml table to audit schema 📦 chore(audit): add public_role_assignments.yaml table to public schema 📦 chore(audit): add public_roles.yaml table to public schema 📦 chore(audit): update tables.yaml to include new tables audit_logged_actions.yaml, public_role_assignments.yaml, and public_roles.yaml 🔧 chore(.env.local): add HASURA_GRAPHQL_DEV_MODE=true to enable development mode in local environment 🔧 chore(.env.test.jest): add HASURA_GRAPHQL_DEV_MODE=true to enable development mode in test environment 📦 chore(roleAssignments): rename table and file names to improve consistency and readability 📝 docs(roleAssignments): update table comment to provide more detailed explanation of its purpose and design 🔧 fix(roleAssignments): update migration scripts to use correct table name and schema 🐛 fix(docker-compose.yaml): add x-hasura-organizer-id claim to HASURA_GRAPHQL_JWT_SECRET in order to support organizer role in authorization ✨ feat(docker-compose.yaml): update HASURA_GRAPHQL_JWT_SECRET in test/docker-compose.yml to include x-hasura-organizer-id claim for testing purposes 🔧 fix(index.spec.ts): update mockOrganizer object to include role property for better test coverage 🔧 fix(index.spec.ts): update path in test case to use mockOrganizer's role.organizerId instead of organizerId 🔧 fix(index.ts): update getJwtAccessOptions function to handle access depending on user's role 🔧 fix(next-auth.ts): import RoleAssignments type from '@gql/shared/types' for better type checking 🔍 chore(.opencommitignore): add schema.graphql and schema.json to the list of ignored files to exclude them from version control 🔧 chore(.opencommitignore): update ignore patterns for schema.graphql and schema.json files 🐛 fix(Dashboard/layout.tsx): fix condition to check if user is an organizer by accessing the role property 🐛 fix(Dashboard/page.tsx): fix condition to check if user is an organizer by accessing the role property 🔒 chore(public_eventParameters.yaml): add insert permissions for the 'organizer' role 🔒 chore(public_eventParameters.yaml): add check condition for insert permissions of 'organizer' role to ensure the user has the required role assignments 🔒 chore(public_eventParameters.yaml): set 'organizerId' column value to 'X-Hasura-Organizer-Id' for insert permissions of 'organizer' role 🔒 chore(public_eventParameters.yaml): specify columns for insert permissions of 'organizer' role 🔧 chore(hasura): update role names and descriptions for better clarity and organization The role names and descriptions in the `public_eventParameters.yaml` file and the `up.sql` and `down.sql` migration scripts have been updated to use the prefix "organizer_" to indicate that these roles are specific to organizers. This change improves clarity and organization within the codebase. 🔒 chore(.env.local): update JWT secrets for authentication to improve security 🔒 chore(next.config.js): update NEXTAUTH_SECRET to improve security 🔒 chore(docker-compose.yaml): update HASURA_GRAPHQL_JWT_SECRETS to improve security 🔒 chore(tools/test/docker-compose.yml): update HASURA_GRAPHQL_JWT_SECRETS to improve security 🐛 fix(route.ts): remove unnecessary parameter from createOptions() function call 🐛 fix(route.ts): remove unnecessary parameter from createOptions() function call 🐛 fix(index.spec.ts): remove unnecessary parameter from createOptions() function call 🐛 fix(index.spec.ts): remove unnecessary parameter from createOptions() function call 🐛 fix(index.spec.ts): remove unnecessary parameter from createOptions() function call 🐛 fix(index.ts): remove unnecessary parameter from createOptions() function call 🐛 fix(getCurrentUser.ts): remove unnecessary parameters from createOptions() and getServerSession() function calls 🐛 fix(getJwt.ts): remove unnecessary parameter from nextAuthCookieName() function call 🐛 fix(getJwt.ts): remove unnecessary parameters from getToken() function call 🐛 fix(getSession.ts): remove unnecessary parameters from createOptions() and getServerSession() function calls 🔧 fix(nextAuthCookieName.ts): add support for appending '.back-office' to the cookie name if isBackOffice() returns true 🔧 fix(index.ts): refactor generateJwt function to accept user object and secret as arguments, and generate JWT with user and role information for marketplace users 🔧 fix(index.ts): refactor usersJwt object to use generateJwt function with user object, secret, and role for marketplace users 📝 chore(env): update HASURA_VERSION to v2.35.0 in .env.local file to use the latest version of Hasura GraphQL Engine 📝 chore(docker-compose): update hasura/graphql-engine image version to v2.35.0 in docker-compose.yaml file to use the latest version of Hasura GraphQL Engine 📝 chore(hasura): update Hasura CLI version to v2.35.0 in Dockerfile to use the latest version of Hasura CLI 📝 chore(test): update hasura/graphql-engine image version to v2.35.0.cli-migrations-v3 in docker-compose.yml file to use the latest version of Hasura GraphQL Engine for testing purposes 🐛 fix(global-error.tsx): remove unnecessary console.log statement in Error component 🔀 merge(gql): add support for back-office-jwt and marketplace-jwt headers in fetchDataForTest function 🔧 chore(jest.setup.back-office.ts): add environment variables for back-office app and NEXTAUTH_SECRET 📦 chore(docker-compose.yaml): update PostgreSQL image version from 13 to 16 for both db and test-db services to use the latest version 🔧 refactor(features-pass-cache.ts): update cache methods to use kv namespace for better readability and maintainability 🔧 refactor(index.spec.ts): update cache methods to use kv namespace for better readability and maintainability 🔧 refactor(index.ts): rename client property to kv and update cache methods to use kv namespace for better readability and maintainability 📦 chore(admin): add admin role library 📝 Add .eslintrc.json configuration file for the admin role library to extend the root .eslintrc.json file and ignore specific patterns. 📝 Add .swcrc configuration file for the admin role library to configure the SWC compiler options. 📝 Add README.md file for the admin role library. 📝 Add jest.config.ts file for the admin role library to configure Jest for unit testing. 📝 Add package.json file for the admin role library. 📝 Add project.json file for the admin role library to define the project structure and targets. 📝 Add index.ts file for the admin role library to export the roles-admin module. 📝 Add roles-admin.ts file for the admin role library to implement the RoleInvitationService class and its methods. 📝 Add tsconfig.json file for the admin role library to extend the base tsconfig and configure the compiler options. 📝 Add tsconfig.lib.json file for the admin role library to extend the tsconfig.json and configure the compiler options for the library. 📝 Add tsconfig.spec.json file for the admin role library to extend the tsconfig.json and configure the compiler options for unit testing. 🔧 chore(roles_and_role_assignments): update down.sql and up.sql to add "invitedById" column and unique constraint on roleAssignments table ✨ feat(account.query.gql): add new query GetAccountByAddress to fetch account by address 📦 add(roles/roleAssignments.mutation.gql): add new mutation CreateRoleAssignment to insert a role assignment into roleAssignments table 🔧 chore(roleAssignments.yaml): add object and remote relationships, select and delete permissions to improve data model and access control 📝 docs(roleAssignments.query.gql): add new queries to fetch role assignments with organizer and inviter information 📝 docs(RoleAssignmentsFields.fragement.gql): add fragment for role assignments fields 🔧 chore(roles-admin.ts): refactor and improve code readability and semantics 🚀 feat(roles-admin.ts): add support for accepting and declining role invitations 🐛 fix(roles-admin.ts): fix bugs related to invitation verification and retrieval 🔧 chore(roles-admin.ts): refactor RoleInvitationService constructor to accept an optional cache parameter for better testability and flexibility 🔧 chore(roles-admin.spec.ts): add tests for RoleInvitationService class methods to ensure proper functionality and error handling 🔧 chore(index.ts): add back-office user accounts and JWT generation for testing purposes 📦 chore(roles-api): add ESLint configuration file 📦 chore(roles-api): add README.md file 📦 chore(roles-api): add Jest configuration file 📦 chore(roles-api): add package.json file 📦 chore(roles-api): add project.json file 📦 feat(roles-api): add index.ts file 📦 feat(roles-api): add getMyRoles function 📦 feat(roles-api): add getMyRolesWithOrganizerAndInviterInfos function 📦 feat(roles-api): add getMyRolesWithOrganizerInfos function 📦 chore(roles-api): add tsconfig.json file 📦 chore(roles-api): add tsconfig.lib.json file 📦 chore(roles-api): add tsconfig.spec.json file 🔧 chore(public_account.yaml): remove unused remote_relationships block to simplify the configuration 🔧 chore(1698942028885_roles_and_role_assignments): add NOT NULL constraint to "accountId", "invitedById", and "role" columns for roleAssignments table 🔧 chore(1699117141773_alter_table_public_account_drop_column_organizerId): add migration scripts to drop and add "organizerId" column in the "account" table 🔧 chore(0_account.sql): remove "organizerId" column from INSERT statements in the "account" seed data 🔧 chore(AccountFields.fragment.gql): remove "organizerId" field from AccountFields fragment 🔧 chore(index.ts): update backOfficeAccounts object to use satisfies keyword instead of casting to AppUser 📝 chore(roleAssignments.sql): add roleAssignments seed file to populate roleAssignments table with initial data 📝 chore(db): update SeedTable enum to include roleAssignments table 📝 chore(gql): add alpha_organizer2_admin_user to backOfficeAccounts to simulate an organizer admin user with a dummy organizer ID 📝 chore(deleteAllData.js): add roleAssignments table to tablesToDelete list to ensure it gets deleted when running deleteAllData script 🔥 refactor(migrations): remove unnecessary migration files and update account seed data 🔥 refactor(migrations): remove unnecessary migration files and update account seed data to remove "isOrganizer" column and update "emailVerified" column values 🐛 fix(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics ✨ feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🐛 fix(index.ts): import Currency_Enum_Not_Const from '@currency/types' to fix missing import error 🐛 fix(index.ts): remove unused imports to improve code cleanliness ✨ feat(index.ts): add supportedCurrencies property to Currency class to store supported currencies as a string ✨ feat(index.ts): initialize supportedCurrencies property in Currency class constructor to join values of Currency_Enum_Not_Const enum 🐛 fix(index.ts): update getRate method in Currency class to include symbols query parameter in API URL to fetch rates for supported currencies only 🐛 fix(tsconfig.json): add "preserveConstEnums": true to preserve const enums during compilation 🐛 fix(tsconfig.lib.json): add "preserveConstEnums": true to preserve const enums during compilation 🐛 fix(currency-types.ts): update Currency_Enum_Not_Const enum values to start with uppercase letters for consistency 🐛 fix(next-currency-cache.spec.ts): update import statements to fix missing import errors ✨ feat(CurrencyCache): add CurrencyCache class to handle caching of currency rates ✨ feat(CurrencyCache): implement getCacheKey method to generate cache key for a given currency ✨ feat(CurrencyCache): implement withCacheKey method to wrap a function with cache key generation logic ✨ feat(CurrencyCache): implement setRate method to fetch rate for a currency from Currency API and store it in Cache API ✨ feat(CurrencyCache): implement getRate method to fetch rate for a currency from Cache API ✨ feat(CurrencyCache): implement setRates method to set rates for all currencies by calling setRate method for each currency ✨ feat(CurrencyCache): implement getRates method to fetch rates for all currencies by calling getRate method for each currency ✨ feat(CurrencyCache): implement populateCacheIfEmpty method to populate cache with rates if cache is empty 🐛 fix(CurrencyProvider): update import statement to fix missing import error ✨ feat(CurrencyProvider): create instance of CurrencyCache class to handle caching of currency rates ✨ feat(CurrencyProvider): update useEffect hook to call getRates method of CurrencyCache instance 🔧 chore(roles-api): update jest configuration to ignore integration tests and add new integration test configuration ✨ feat(roles-api): add integration test configuration for roles-api 🔧 chore(roles-api): update project.json to include new test-integration executor and configuration ✅ test(roles-api): add integration test for getMyRoles function ✅ test(roles-api): add unit test for getMyRoles function 🔧 chore(roles-api): update tsconfig.spec.json to include types from the types folder in the coverage calculation 🔀 refactor(index.ts): reorganize and optimize user client functions 🔀 refactor(index.ts): reorganize and optimize back-office user client functions ✨ feat(index.ts): add support for isBackOffice parameter in alphaUserClient and betaUserClient functions to generate appropriate JWTs for back-office users 🐛 fix(roleAssignments.sql): fix incorrect value in accountId field in one of the seed records 🚀 feat(docker-compose.yaml): add "organizer_human_resources" service to the list of services in the docker-compose file to support new functionality related to human resources management in the organization 🐛 fix(roles_role_assignments_account): add "organizer_human_resources" role to the list of roles in the up and down migration scripts to enable administrative permissions for managing human resources in the organization 🚀 feat(docker-compose.yml): add "organizer_human_resources" service to the list of services in the test docker-compose file to support testing of new functionality related to human resources management in the organization 🔥 refactor(public_eventParameters.yaml): remove unused insert_permissions block to simplify the configuration 🔥 refactor(public_nftTransfer.yaml): remove unused select_permissions block to simplify the configuration 🔧 fix(roles-admin.spec.ts): add missing cache operations for srem and sadd ✨ feat(roles-admin.ts): add support for managing inviter's sent invitations in cache 📦 chore: add roleAssignments.query.gql and RoleAssignmentsFields.fragment.gql files to the project 🐛 fix(roles-admin.ts): fix expiration time calculation for invitation creation to set it to 24 hours from now ✨ feat(roles-admin.ts): add invitationForRoleExists method to check if an invitation or role assignment already exists for a given role, organizer, and event 🐛 fix(roles-admin.ts): perform cleanup and throw error if invitation has expired during verification or acceptance of invitation 🐛 fix(types): update type definition for EventPassOrderWithContractData to use correct GraphQL query response type ✨ feat(roles-admin): add support for checking if an invitation for a role exists for a given inviter, invited, role, organizerId, and eventId ✅ test(roles-admin): add tests for invitationForRoleExists and getInvitationsByInviter methods in RoleInvitationService class 🐛 fix(roles-admin): fix bug in invitationForRoleExists method where it was not returning false when the invited user does not have the given role for the given organizer and event ✨ feat(roles-admin): add support for filtering out null results from expired or non-existent invitations in getInvitationsByInviter method 🐛 fix(roles-admin): fix bug in fetchInvitation method where it was not marked as public 🐛 fix(roles-admin.spec.ts): remove unnecessary mockResolvedValue for cache get method ✨ feat(roles-admin.spec.ts): add test cases for fetchInvitation method to cover different scenarios 🐛 fix(roles-admin.spec.ts): fix incorrect property names in invitationForRoleExists and verifyInvitation functions 🐛 fix(roles-admin.spec.ts): import RoleAuthorization class to fix reference error ✨ feat(roles-admin.spec.ts): add tests for RoleAuthorization.inviteAccountWithRole method to ensure proper role authorization logic 🚚 chore(roles-admin.ts): move RoleAuthorization class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorizationError class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move InviteAccountWithRoleProps interface to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorization class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorizationError class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move InviteAccountWithRoleProps interface to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorization class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorizationError class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move InviteAccountWithRoleProps interface to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorization class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorizationError class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move InviteAccountWithRoleProps interface to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorization class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorizationError class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move InviteAccountWithRoleProps interface to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorization class to its own file for better organization and separation of concerns 🚚 chore(roles-admin.ts): move RoleAuthorizationError class to its own file for better organization and separation of concerns 📦 chore(roles-actions): add roles-actions library ✨ feat(roles-actions): add .eslintrc.json configuration file for roles-actions library ✨ feat(roles-actions): add README.md file for roles-actions library ✨ feat(roles-actions): add jest.config.ts configuration file for roles-actions library ✨ feat(roles-actions): add package.json file for roles-actions library ✨ feat(roles-actions): add project.json configuration file for roles-actions library ✨ feat(roles-actions): add index.ts file for roles-actions library ✨ feat(roles-actions): add inviteAccountWithRole.ts file for roles-actions library ✨ feat(roles-actions): add inviteAccountWithRole.spec.ts file for roles-actions library ✨ feat(roles-actions): add tsconfig.json configuration file for roles-actions library ✨ feat(roles-actions): add tsconfig.lib.json configuration file for roles-actions library ✨ feat(roles-actions): add tsconfig.spec.json configuration file for roles-actions library 🔧 chore(public_roleAssignments.yaml): add insert and delete permissions for organizer_human_resources and organizer_super_admin roles 🔧 chore(public_roleAssignments.yaml): add insert and delete permissions for organizer_human_resources and organizer_super_admin roles 🔧 chore(inviteAccountWithRole.spec.ts): refactor test cases to use mock functions and improve readability feat: updated next-auth to handle RBAC with user.role for backoffice + tests feat: account now return roles list feat: permissions for roleAssignments + roles relationship in account 🐛 fix(index.spec.ts): remove unused imports and variables 🐛 fix(index.spec.ts): remove unused mockReq variable 🐛 fix(index.spec.ts): remove commented out code 🐛 fix(index.spec.ts): remove unused mockToken variable ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in back office ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in back office and updated role ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in back office and unauthorized role ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in back office and unauthorized kyc status ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in web app ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in web app and no role ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in web app and unauthorized role ✨ feat(index.spec.ts): add test case for createOptions callbacks.jwt function with user in web app and unauthorized kyc status 🐛 fix(index.ts): remove unused import 🐛 fix(index.ts): remove unused variable ✨ feat(index.ts): add check for user role and return undefined if role is not defined ✨ feat(index.ts): add check for user role and return undefined if app is not back office ✨ feat(index.ts): add check for user role and return undefined if user kyc is not validated 🐛 fix(next-auth.ts): remove unused import 🐛 fix(next-auth.ts): remove unused type import ✨ feat(next-auth.ts): update AppUser type to use Role type instead of RoleAssignments type 🐛 fix(index.ts): remove unused import 🐛 fix(index.ts): remove unused type import ✨ feat(index.ts): export Role type 🔥 refactor(jest.config.js): remove unused jest configuration file 🔥 refactor(next/hasura/utils): remove unused files and configurations 🔥 refactor(next/hasura/utils/src/index.ts): remove unused enum and types 🔥 refactor(next/hasura/utils/tsconfig.json): remove unused tsconfig file 🔥 refactor(next/hasura/utils/tsconfig.lib.json): remove unused tsconfig file 🔥 refactor(next/hasura/utils/tsconfig.spec.json): remove unused tsconfig file 🔥 refactor(tsconfig.base.json): remove unused paths for next/hasura/utils 🔀 refactor(index.ts): add optional levelName parameter to isUserKycValidated function for more flexible validation 🐛 fix(index.ts): fix isUserKycValidated function to properly validate user's kyc levelName if provided 📦 chore(roles): add ESLint configuration file for roles feature 📦 chore(roles): add README.md file for roles feature 📦 chore(roles): add Jest configuration file for roles feature 📦 chore(roles): add package.json file for roles feature 📦 chore(roles): add project.json file for roles feature 📦 chore(roles): add index.ts file for roles feature 📦 chore(roles): add RoleBadge.stories.tsx file for RoleBadge component 📦 feat(RoleBadge): implement RoleBadge component to display role badges 📦 chore(roles): add tsconfig.json file for roles feature 📦 chore(roles): add tsconfig.lib.json file for roles feature 📦 chore(roles): add tsconfig.spec.json file for roles feature 📦 chore(i18n): update en.json and fr.json with translations for RoleBadge component 📦 chore(role-avatar): add RoleAvatar component and its stories 📝 Add RoleAvatar component and its related files: - Added RoleAvatar.stories.tsx file to showcase the RoleAvatar component in Storybook. - Added RoleAvatar.tsx file to implement the RoleAvatar component. - Added examples.tsx file to provide example data for the RoleAvatar component. The RoleAvatar component is used to display an avatar for a specific role with its associated organizer. It takes a role object as a prop, which includes information about the organizer such as their name, image URL, and slug. The component renders an avatar with the organizer's image if available, or falls back to displaying the organizer's initials if no image is provided. The RoleAvatar component is now ready to be used in the application. 📦 chore(gql): add OrganizerFields fragment to improve code reusability and readability in roleAssignments queries 🔀 merge(gql): use OrganizerFields fragment in roleAssignments queries to fetch organizer information 🔀 merge(roles): add RoleWithOrganizer type to represent a role with associated organizer information 🚀 feat(app-nav): add ProfileAvatar component to app-nav library 🐛 fix(app-nav): fix className assignment in ProfileAvatar component 🚀 feat(app-nav): add ProfileNav and ProfileNavSkeleton components to app-nav library 🚀 feat(app-nav): add ProfileNavClient component to app-nav library 🚀 feat(app-nav): add ProfileNavClientExample and ProfileNavExample components to app-nav library * 🐛 fix(docker-compose.yml): fix syntax error by adding missing closing double quote for "organizer_guest" service name * 🐛 fix(layout.tsx): import CurrencyCache instead of individual functions from currency-cache to improve code readability and maintainability 🐛 fix(layout.tsx): change getRate and setRates function calls to methods of CurrencyCache class to improve code readability and maintainability 🐛 fix(next.config.js): add webpack configuration to resolve fs and path modules to fix build errors 🐛 fix(next.config.js): add webpack configuration to resolve fs and path modules to fix build errors 🐛 fix(layout.tsx): import CurrencyCache instead of individual functions from currency-cache to improve code readability and maintainability 🐛 fix(layout.tsx): change getRate and setRates function calls to methods of CurrencyCache class to improve code readability and maintainability 🐛 fix(next.config.js): add webpack configuration to resolve fs and path modules to fix build errors 🐛 fix(next.config.js): add webpack configuration to resolve fs and path modules to fix build errors 🐛 fix(index.ts): change ProfileAvatarProps type import to use 'type' keyword for consistency 🐛 fix(setRates.ts): import CurrencyCache instead of next-currency-cache to improve code readability and maintainability 🐛 fix(next-currency-cache.ts): remove unnecessary 'use server' statement 🐛 fix(roles-admin.ts): add null check for user.role to prevent potential errors * fix: alchemy network undefined, change in AlchemyNFTACtivityWebHookEvent * fix: alchemy tests and network in event * 🔧 chore(handleAccount.spec.ts): add test case for null roles in handleAccount function * 🐛 fix(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics ✨ feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🐛 fix(default.tsx): refactor ProfileNavSection to accept locale as a parameter to improve reusability ✨ feat(default.tsx): add Suspense component to handle loading state and render ProfileNavSectionContent when locale is available 🐛 fix(default.tsx): refactor ProfileNavSectionContent to use getCurrentUser and getMyRolesWithOrganizerInfos functions to improve data fetching ✨ feat(default.tsx): pass roles and account props to ProfileNavClient component to display user role and account information 🐛 fix(index.ts): export ProfileNavSkeleton component to fix import error in other files 🐛 fix(ProfileNav.stories.tsx): remove unused imports and fix import path for ProfileNavSkeleton component ✨ feat(ProfileNav.stories.tsx): add new stories for different scenarios of ProfileNav component 🐛 fix(ProfileNav.tsx): refactor ProfileNav component to split rendering logic into separate functions for better readability ✨ feat(ProfileNav.tsx): add ProfileNavUser, ProfileNavNotConnected, and ProfileNavRole components to handle different user states and roles 🐛 fix(ProfileNavClient.tsx): refactor ProfileNavClient component to use SafeUser type from @next/auth and RoleWithOrganizer type from @roles/types ✨ feat(ProfileNavClient.tsx): add matchingRole variable to find the matching role for the current user and pass it to ProfileNav component 🐛 fix(examples.tsx): fix import path for ProfileNav component ✨ feat(examples.tsx): add user object for testing purposes 🐛 fix(RoleAvatar.stories.tsx): remove unused import and fix import path for RoleAvatar component ✨ feat(RoleAvatar.stories.tsx): add new stories for different scenarios of RoleAvatar component 🐛 fix(RoleAvatar.tsx): fix fallback value for organizer name and profile image in RoleAvatar component ✨ feat(role-avatar/examples.tsx): rename organizerRole to organizerRoleAdmin for better clarity 🐛 fix(index.ts): export RoleBadge component from lib/role-badge/RoleBadge * 🔧 fix(ProfileNav.tsx): update CSS classes to improve readability and maintain consistency 🔧 fix(RoleBadge.tsx): update import path for Badge component to match new file structure 🔧 fix(index.ts): update export statement for Badge component to include type BadgeProps * add make reset-docker to ci make ci commands sequential 🔧 chore(ci.yml): update parallel commands in CI workflow to run docker:test and docker:services commands concurrently 🐛 fix(docker-compose.yaml): fix JSON path in x-hasura-* headers to correctly access values * 🐛 fix(ProfileNav.stories.tsx): include WithUser configuration in Skeleton story to ensure consistent rendering 🐛 fix(RoleAvatar.tsx): remove 'role' prop from Omit type to prevent TypeScript error ✨ feat(RoleAvatar.tsx): destructure 'props' object in function signature for improved readability and maintainability 🔧 chore(tsconfig.lib.json): exclude example and story files from TypeScript compilation to improve build performance * 🔨 refactor(ProfileNav.tsx): improve readability and semantics of ProfileNav component 🐛 fix(ProfileNav.tsx): replace span element with div element for better accessibility and styling --------- Co-authored-by: Alexandre Gouasmi <[email protected]>
…t function to prevent undefined error ✨ feat(layout.tsx): add support for fetching and passing currency rates to CurrencyProvider component in RootLayout function
…rsion 7.77.0 for critical security fix ⬇️ chore(package.json): downgrade next-auth to version 4.23.1 to resolve compatibility issues with SIWE
* 🚀 feat(ui): add SelectItems component to handle rendering of select items in the UI library 🔧 chore(ui): add SelectItems stories to showcase different usage scenarios and functionality of the component 🔨 refactor(DropdownMenuItemClient.tsx): reorder imports to improve readability and maintain consistency 🔨 refactor(DropdownMenuItems.tsx): reorder imports to improve readability and maintain consistency 🔨 refactor(NavigationMenu.tsx): reorder imports to improve readability and maintain consistency 🔧 fix(ProfileNav.tsx): remove unnecessary class names and improve layout in ProfileNav component 🔧 fix(ProfileNav.stories.tsx): refactor WithAdminRoleMobile to reuse WithAdminRole configuration and update viewport 🔧 fix(ProfileNav.tsx): remove unnecessary class names and improve layout in ProfileNavUser and ProfileNavNotConnected components 🔧 fix(ProfileNav.tsx): remove unnecessary class names and improve layout in ProfileNavRole component 🚀 feat(app-nav): add new examples for AppNavLayout component - Added new examples for the AppNavLayout component to showcase different scenarios. - Added the "WithUser" example to demonstrate the layout with a user profile navigation. - Added the "WithAdminRole" example to demonstrate the layout with an admin role profile navigation. - Added the "WithNoUserMobile", "WithUserMobile", and "WithAdminRoleMobile" examples to demonstrate the layout in mobile view. - Updated the import statements in the examples file to reflect the correct paths. - Updated the AppNavLayoutDesktop component to include a border at the bottom. - Updated the AppNavLayoutMobile component to include a border at the top. - Updated the ProfileNavWithNoUser example to include isLoading prop and remove unused imports. - Added the ProfileNavWithUser and ProfileNavWithAdminRole examples to showcase different profile navigation scenarios. 📝 feat(back-office): add MenuNav component to handle navigation menu in the back-office app 📝 fix(back-office): update import path for AppNavLayout component in layout.tsx to match new location * 🐛 fix(nav-link): add flex class to NavigationMenuItem to fix layout issue ✨ feat(app-nav-layout): add support for different menuNav and profileNav components in AppNavLayout stories 🐛 fix(app-nav-layout): remove unnecessary flex class from NavigationMenu in AppNavLayoutMobile 🐛 fix(app-nav-layout): remove unnecessary whitespace-nowrap class from NavigationMenuList in AppNavLayoutMobile ✨ feat(app-nav-layout): add support for different menuNav and profileNav components in AppNavLayoutMobile ✨ feat(app-nav-layout): add support for different menuNav and profileNav components in examples.tsx ✨ feat(menu-nav): add support for different menu items based on user role and add translations 🐛 fix(menu-nav): hide MenuNavDesktop component on mobile screens ✨ feat(menu-nav): add support for different menu items based on user role and add translations * 🔧 chore(app-nav): refactor AppNavLayout.stories.tsx to add support for Super Admin role in profile navigation 🔧 chore(app-nav): refactor examples.tsx to add support for Super Admin role in profile navigation 🔧 chore(role-avatar): refactor examples.tsx to add support for Super Admin role in role avatar * 🚀 feat(ui): add BlockchainAddress component to display and copy blockchain addresses The BlockchainAddress component is added to the UI library. It allows displaying a blockchain address and provides the functionality to copy the address to the clipboard. The component is implemented using React and includes a Badge component to display the address and a Copy icon to trigger the copy functionality. When the address is clicked, a tooltip is shown indicating that the address has been copied. The address is truncated to 16 characters to improve readability. * 🔧 fix(DropdownMenuItems.tsx): refactor DropdownMenuItems component to handle subItems with type 'children' properly 🔧 fix(useScreenSize.ts): update import statement for useWindowSize hook from '@uidotdev/usehooks' package 🔧 fix(icons.tsx): add Copy icon component using LuCopy icon from 'react-icons/lu' package * 🔧 chore(package.json): update dependencies 🐛 fix(ProfileNavClient.stories.tsx): remove unused imports to improve code cleanliness ✨ feat(ProfileNavClient.tsx): add support for displaying roles and switching between roles in the profile navigation 🔧 chore(ProfileNavClient.tsx): refactor constructItems function to improve readability and maintainability * 🌐 i18n(profile-nav): add translation for "copied-address" in English and French to improve localization 🔧 fix(profile-nav): add "copiedAddress" item to ProfileNavSectionContent component to display copied address message * 🔧 fix(components): export toast function from useToast module to improve usability 🔧 fix(components): add className prop to div elements in DropdownMenuItems component to allow custom styling * 🔧 chore(ProfileNav.stories.tsx): refactor ProfileNav stories to improve readability and add support for mobile viewport 🔧 chore(ProfileNavClient.tsx): refactor ProfileNavClient to improve code organization and remove unnecessary console.log statement 🔧 chore(examples.tsx): import toast from @ui/components instead of libs/ui/components to fix import path * 🔨 refactor(ProfileNav.stories.tsx): simplify profile navigation tests by removing unnecessary async/await calls 🔨 refactor(ProfileNav.tsx): add "w-fit" class to DropdownMenuItems to ensure proper width 🔨 refactor(ProfileNav.tsx): change Spinner size from "xl" to "auto" for better responsiveness 🔨 refactor(ProfileNav.tsx): adjust spacing and alignment in ProfileNavUser and ProfileNavNotConnected components 🔨 refactor(ProfileNavRole): change Spinner size from "xl" to "auto" for better responsiveness 🔨 refactor(ProfileNavClient.tsx): remove unnecessary "overflow-hidden" class from role name in constructItems function 🔨 refactor(ProfileNavClient.tsx): simplify constructItems function by removing unnecessary subItems array 🔨 refactor(variants.tsx): add "auto" size variant for icons to allow for automatic sizing * 🐛 fix(AppNavLayout.stories.tsx): import correct types for Meta and StoryObj to fix compilation error ✨ feat(AppNavLayout.stories.tsx): add play function to simulate user interaction and test component behavior 🐛 fix(AppNavLayout.stories.tsx): fix typo in play function to correctly target elements ✨ feat(AppNavLayout.stories.tsx): add additional stories to test different scenarios and mobile view 🐛 fix(AppNavLayoutMobile.tsx): adjust styling to center profileNav in mobile view ✨ feat(examples.tsx): add examples for different profileNav scenarios and roles * 🔧 fix(profileNav): update profile navigation texts to match the latest translations 🌟 feat(profileNav): add support for switching to user account and switching to a different role with toast notifications for success and error messages 🌐 i18n: update English and French translations for the new profile navigation texts * 🔧 fix(profile-nav): add missing translations for switch to my account toast titles and descriptions 🌐 feat(i18n): add English translations for switch to my account toast titles and descriptions 🌐 feat(i18n): add French translations for switch to my account toast titles and descriptions 🔧 fix(menu-nav): update menu nav links to use Next.js Link component for better navigation experience 🔧 fix(app-nav-layout): remove unnecessary import and update import for testing-library 🔧 fix(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics * 🔧 fix(MenuNav.tsx): update value of manage-roles to '/manage-roles' to fix broken link 🔧 fix(ProfileNavClient.tsx): import useRouter from '@next/navigation' to fix missing import 🔧 fix(ProfileNavClient.tsx): add router.push('/my-roles') to redirect to '/my-roles' after switching to my account * updated features lib name from dashboard to events * 🔧 fix(app): rename DashboardLoading component to EventsLoading for better naming consistency and clarity 🔧 fix(middleware.spec.ts): update nextUrl.pathname to '/en/event/event-slug' to fix redirection issue when not authenticated on sub route 🔧 fix(middleware.ts): update authPages array to include 'events' and 'events/*' for restricted access to event-related routes 🔧 fix(next.config.js): update import path for '@features/back-office/dashboard' to '@features/back-office/events' to reflect the correct module location 🔧 fix(tsconfig.base.json): remove unnecessary line breaks and update import paths for various modules to reflect the correct file locations * 🐛 fix(@profileNav/default.tsx): import missing deepPick function from @utils to fix compilation error ✨ feat(@profileNav/default.tsx): add support for internationalization by wrapping ProfileNavClient component with NextIntlClientProvider and passing locale-specific messages 🐛 fix(layout.tsx): import missing deepPick function from @utils to fix compilation error ✨ feat(layout.tsx): add support for internationalization by wrapping Toaster component with NextIntlClientProvider and passing locale-specific messages 🐛 fix(MenuNav.tsx): fix conditional rendering of items when user has no role 🐛 fix(MenuNavMobile.tsx): remove console.log statement 🐛 fix(ProfileNavClient.tsx): fix rendering of RoleItem component by extracting it into a separate RoleItemDisplay component ✨ feat(ProfileNavClient.tsx): add support for internationalization by passing locale-specific messages to ProfileNavClient component 🌐 feat(fr.json): add missing translation for switch-to-role-toast-title * New lib roles common with isSameRole function * 🐛 fix(roles): set default value for eventId column in roleAssignments table to empty string to prevent NULL values 🐛 fix(test-utils): set default value for eventId in backOfficeAccounts to empty string to match schema * 🔧 chore(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics 🔧 chore(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🔧 chore(downloadPass.spec.ts): reorder imports to improve readability 🔧 chore(downloadPass.spec.ts): fix file path assertion to include file extension 🔧 chore(payment-admin.spec.ts): remove unused markEventPassOrderAsCompleted function 🔧 chore(payment-admin.spec.ts): remove unused markEventPassOrderAsCompleted test case 🔧 chore(payment-admin.ts): remove unused markEventPassOrderAsCompleted function 🔧 chore(roles-admin.spec.ts): add eventId property to test data objects 🔧 chore(blockchain-address/BlockchainAddress.tsx): reorder imports to improve readability 🔧 chore(blockchain-address/BlockchainAddress.tsx): fix import statement for useCopy * 🐛 fix(middleware.spec.ts): update route pathnames to match correct route structure 🐛 fix(payment-admin.spec.ts): update test description to accurately reflect the scenario being tested 🐛 fix(useScreenSize.ts): update import statement to use 'react-use' instead of '@uidotdev/usehooks' * 🐛 fix(MenuNav.tsx): handle null or undefined user role to prevent error when accessing role property 🐛 fix(ProfileNavClient.tsx): import RoleBadge from correct path to fix module resolution issue 🐛 fix(tsconfig.lib.json): exclude examples.tsx from compilation in app-nav and roles libraries 🐛 fix(RoleBadge.stories.tsx): add empty string eventId to roleOptions to fix missing property error * 🔧 chore(middleware.ts): add 'my-roles' to the list of restricted pages in the back-office middleware 🐛 fix(ProfileNavClient.tsx): await the update function call to ensure session is updated before displaying toast and refresh the router after switching roles or redirecting to my-roles 🐛 fix(SumsubDialogClient.tsx): await the update function call when status is different to ensure proper handling of status updates * fix: tests for payment-admin and payment-webhooks to reflect new refund policy * 🔧 fix(menu-nav): remove unused import of Link from @next/navigation in MenuNav.tsx 🔧 fix(menu-nav): remove unused import of usePathname from @next/navigation and add useRouter import in MenuNavMobile.tsx 🔧 fix(profile-nav): refactor constructItems function to improve readability and remove unused import of usePathname from @next/navigation in ProfileNavClient.tsx 🔧 fix(select): refactor SelectItem component to remove unused wrapper prop and improve code readability in Select.tsx 🔧 fix(select-items): refactor SelectItems component to remove unused wrapper prop and improve code readability in SelectItems.tsx * 🐛 fix(AppNavLayout.stories.tsx): import sleep function from @utils to fix compilation error 🐛 fix(AppNavLayout.stories.tsx): add sleep before interacting with elements to fix flaky tests 🐛 fix(ProfileNav.stories.tsx): import sleep function from @utils to fix compilation error 🐛 fix(ProfileNav.stories.tsx): add sleep before interacting with elements to fix flaky tests --------- Co-authored-by: Alexandre Gouasmi <[email protected]>
* 🐛 fix(index.mjs): replace escaped newline characters in UPLOAD_SECRET_JWT environment variable to actual newline characters for proper formatting * 🔧 chore(next.config.js): add '@features/navigation' to the list of features in next.config.js files 🚀 feat(package.json): update 'next' package to 'canary' version for better compatibility with other dependencies 🚀 feat(package.json): update 'next-intl' package to version 3.0.1 for bug fixes and improvements 🔥 chore(package.json): remove unused dependency '@opentelemetry/api' from package.json * 🔧 chore(global-error.tsx): remove unused import and console.log statements to improve code cleanliness and readability 🔧 chore(global-error.tsx): remove unused import to improve code cleanliness and readability 🔧 chore(ErrorClient.tsx): comment out Alert component to fix breaking issue in next apps 🔧 chore(ErrorClient.tsx): refactor Alert component to a div to fix breaking issue in next apps * 🐛 fix(default.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(default.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(layout.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(layout.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(default.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(default.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(layout.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(layout.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(page.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(page.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(EventPassesCart.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(EventPassesCart.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(PassCardSelect.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(PassCardSelect.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(PassTotal.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(PassTotal.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(DateRangeServer.tsx): update import statements to fix compilation errors caused by incorrect import paths ✨ feat(DateRangeServer.tsx): update import statements to use the correct paths for translations and suspenses 🐛 fix(nextIntlServer.mock.js): rename getTranslator function to getTranslations to match the actual implementation * 🔥 refactor(page.tsx): remove unused CatchAllPage component from back-office and web apps 🔥 refactor(error.tsx): remove unused Error component from back-office app ✨ feat(not-found.tsx): add NotFound component to back-office and web apps to handle 404 errors 🔨 refactor(EventOrganizerButton.tsx): remove Link and Button components from EventOrganizerButton to simplify the code and improve performance * 🔧 fix(layout.tsx): import Viewport from 'next' to resolve missing import error 🔧 fix(next.config.js): remove experimental.serverActions flag to fix build error 🔧 fix(layout.tsx): uncomment viewport constant to enable theme color customization 🔧 fix(next.config.js): remove experimental.serverActions flag to fix build error 🔧 fix(PassCardSelectClient.tsx): remove unused import and updateEventPassCart parameter to fix build error * 🔧 fix(page.tsx): add UploaderProvider to wrap OrganizerEvents component to provide uploader functionality 🔧 fix(layout.tsx): remove redundant UploaderProvider wrapping in RootLayout component * 🐛 fix(MenuNavMobile.tsx): set defaultValue based on current pathname to ensure correct initial value in Select component 🐛 fix(SelectItems.tsx): remove unnecessary object destructuring in map function to improve code readability * 🚀 feat(events): add support for displaying a placeholder when there are no events - Added a new component `NoEventsPlaceholder` in the `molecules` directory to display a placeholder when there are no events. - Updated the `OrganizerEvents` component to use the `NoEventsPlaceholder` component when there are no events. - Added a new prop `noEventsImage` to the `OrganizerEvents` component to specify the image to be displayed in the placeholder. - Added a new prop `noEventsText` to the `OrganizerEvents` component to specify the text to be displayed in the placeholder. - Updated the `page.tsx` file to pass the `noEventsImage` and `noEventsText` props to the `OrganizerEvents` component. 🌐 feat(i18n): add translation for "no-events" in OrganizerEvents namespace - Added translation for the key "no-events" in the `OrganizerEvents` namespace in the `en.json` and `fr.json` files. ✨ feat(next-intl): add support for fetching translations in the `OrganizerEvents` namespace - Imported the `getTranslations` function from `next-intl/server` in the `page.tsx` file. - Added a new variable `t` to fetch the translations for the `OrganizerEvents` namespace. - Updated the `noEventsText` prop in the `OrganizerEvents` component to use the translated value for "no-events". * 🚀 feat(ui/components): add Table component to the UI library 🚀 feat(ui/components): add TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell, and TableCaption components to the Table component 🚀 feat(ui/components): add TableExample component to showcase the usage of the Table component in Storybook * 🚀 feat(ui/components): add DataTableFacetedFilter component to provide a faceted filtering functionality to data tables 🚀 feat(ui/components): add DataTableColumnHeader component to display column headers in data tables with sorting and visibility controls 🔧 chore(package.json): add @radix-ui/react-icons and @tanstack/react-table as dependencies * 🚀 feat(ui/components): add DataTablePagination component to provide pagination functionality to data tables 🚀 feat(ui/components): add DataTableRowActions component to provide row actions functionality to data tables * 🆕 feat(DataTableToolbar.tsx): add DataTableToolbar component to provide a toolbar for data tables 🆕 feat(DataTableViewOptions.tsx): add DataTableViewOptions component to provide options for viewing and toggling columns in data tables * 🐛 fix(PassCard.tsx): move CardFooter inside conditional rendering to prevent rendering when eventPassPricing is null or undefined 🆕 feat(formatCurrency.spec.ts): add unit tests for formatCurrency function 🔨 refactor(formatCurrency.ts): use default values for currency and amount if not provided, add error logging when rates is not provided * 🐛 fix(schema): update schema to implement Entity interface for Asset, Event, EventPass, Organizer, ScheduledOperation, ScheduledRelease, and User types ✨ feat(schema): update EntityTypeName enum description to include models and components ✨ feat(schema): update EntityWhereInput input description to include models and components ✨ feat(schema): update Event type to implement Entity interface ✨ feat(schema): update EventPass type to implement Entity interface ✨ feat(schema): update Organizer type to implement Entity interface ✨ feat(schema): update ScheduledOperation type to implement Entity interface ✨ feat(schema): update ScheduledRelease type to implement Entity interface ✨ feat(schema): update User type to implement Entity interface * 🐛 fix(schema): remove unnecessary exclamation mark from EventDateLocation return type in PassOption 🐛 fix(schema): remove unnecessary exclamation mark from EventDateLocation input type in PassOptionCreateInput 🐛 fix(types): make eventDateLocation field optional in EventPassFieldsFragment 🐛 fix(types): make eventDateLocation field optional in EventPassNftFieldsFragment * 🎉 feat(DataTable): add DataTable component to the UI components library This commit adds a new DataTable component to the UI components library. The DataTable component is a customizable table component that supports features like column visibility, column filtering, sorting, row selection, pagination, and toolbar. The DataTable component accepts the following props: - columns: an array of column definitions - data: an array of data to be displayed in the table - showHeader: a boolean flag to determine whether to show the table header (default is true) - enableRowSelection: a boolean flag to enable row selection (default is false) - toolbarProps: additional props for the DataTableToolbar component - paginationProps: additional props for the DataTablePagination component - noResultsText: text to display when there are no results to show in the table The DataTable component uses the @tanstack/react-table library for handling table functionality and rendering. It provides hooks and state management for handling sorting, filtering, pagination, and row selection. The DataTable component renders a Table component from the UI components library, with the table header and body generated based on the provided columns and data. If there are no results to show, a message is displayed in the table body. This new component will be useful for displaying tabular data in various applications. * 📦 chore(DataTable): add DataTable.stories.tsx file to showcase the DataTable component 🐛 fix(DataTableRowActions): remove unused import and remove unused row prop from DataTableRowActions component 📦 chore(DataTable): add columns.tsx file to define the columns for the DataTable component 📦 chore(DataTable): add data.tsx file to provide example data for the DataTable component 📦 chore(DataTable): add schema.ts file to define the schema for the example data in the DataTable component 📦 chore(DataTable): add tasks.tsx file to provide example tasks data for the DataTable component 📝 docs(tsconfig): exclude examples files from the build and test process * 🔨 refactor(DropdownMenu.tsx): reorganize imports and fix import paths to improve code readability and maintainability 🔨 refactor(DropdownMenuActions.tsx): remove unused imports and fix import paths to improve code cleanliness 🔨 refactor(DropdownMenuItemClient.tsx): add missing value property to MenuItem interface to improve type safety 🔨 refactor(DropdownMenuItems.stories.tsx): remove unused imports and fix import paths to improve code cleanliness 🔨 refactor(DropdownMenuItems.tsx): add align prop to DropdownMenuContent and valueChanged prop to DropdownMenuItemsProps to improve flexibility and customization * 🔨 refactor(Button.stories.tsx): reorganize imports and remove unused imports to improve code readability and maintainability 🔨 refactor(Button.tsx): reorganize imports and remove unused imports to improve code readability and maintainability 🔨 refactor(Command.tsx): reorganize imports and remove unused imports to improve code readability and maintainability * 🐛 fix(DataTableFacetedFilter.tsx): rename 'label' property to 'text' in options array to improve semantics 🐛 fix(DataTableFacetedFilter.tsx): rename 'label' variable to 'text' in Badge component to improve semantics 🐛 fix(DataTableFacetedFilter.tsx): add 'h-8' class to CommandInput component to fix height issue 🐛 fix(DataTableFacetedFilter.tsx): rename 'label' variable to 'text' in option rendering to improve semantics 🐛 fix(DataTableRowActions.tsx): add useState import to fix missing import error 🐛 fix(DataTableRowActions.tsx): add loading state and setLoading function to fix loading state issue 🐛 fix(DataTableRowActions.tsx): add isLoading and helperText props to Button component to fix loading state issue 🐛 fix(DataTableRowActions.tsx): add size prop to Button component to fix size issue 🐛 fix(DataTableRowActions.tsx): remove unused controlText prop from DataTableRowActions component 🐛 fix(DataTableToolbar.tsx): add OutlineSearch icon to Input component to fix missing icon issue 🐛 fix(DataTableToolbar.tsx): add searchProps prop to enable search functionality 🐛 fix(DataTableToolbar.tsx): rename enableSearch prop to searchProps and update its type to SearchProps to improve semantics 🐛 fix(DataTableToolbar.tsx): update filtersConfig type to Omit<FilterConfig<TData, any>, 'controlText'>[] to improve semantics * 🐛 fix(DataTable.stories.tsx): import missing dependencies and fix label and status text properties ✨ feat(DataTable.stories.tsx): add new stories for DataTable with pagination, toolbar search, and toolbar filters 🐛 fix(columns.tsx): fix label and status text properties * 🚀 feat(DataTable.stories.tsx): add play function to DefaultDataTable story to simulate user interaction with sorting feature 🚀 feat(DataTable.stories.tsx): add play function to DataTableWithToolbarToggleColumns story to simulate user interaction with toggle columns feature * ⬆️ chore(package.json): update next package version to ^14.0.3 for compatibility and stability improvements * 🐛 fix(ConvertedCurrency.tsx): pass locale as an object to getFormatter function to improve readability and maintainability 🐛 fix(DateRangeServer.tsx): pass locale as an object to getTimeZone and getFormatter functions to improve readability and maintainability 🐛 fix(nextIntlServer.mock.js): pass locale as an object to getFormatter function to improve readability and maintainability * 🔨 refactor(nextIntlServer.mock.js): remove unnecessary type annotation in getFormatter function signature to improve code readability * 🐛 fix(DataTable.stories.tsx): update click event to wait for button to be found by role name 'view' to improve reliability and avoid potential race condition 🐛 fix(DropdownMenuItems.stories.tsx): update click event to hover over text 'Labels' before finding text 'Radio 1' to ensure proper interaction with dropdown menu * 🔧 chore(ci.yml): refactor parallel commands in CI workflow to use a single command for affected tasks 🔧 chore(package.json): update affected:parallel-ci script to run lint, test, and build tasks in parallel with 3 workers * 🔧 chore(event-actions): export UpdateEventPassCartProps type from updateEventPassCart module 🔧 chore(PassCardSelect): remove unused import of updateEventPassCart from event-actions module 🔧 chore(PassCardSelectClient): remove unused updateEventPassCart prop 🔧 chore(PassOptions): add conditional rendering for EventDatesServer and EventLocations components based on eventDateLocation prop * 🔧 chore(env): remove NX_CLOUD_AUTH_TOKEN from env validation to align with current project configuration 🔧 chore(jest.config.ts): remove unnecessary transform configuration to improve build performance 🔧 chore(EventHero.spec.tsx): remove TODO comment and mock EventDatesServer component to fix test 🔧 chore(PassCard.spec.tsx): remove unused test file 🔧 chore(PassList.spec.tsx): remove unused test file 🔧 chore(PassPurchase.spec.tsx): remove unused test file 🔧 chore(PassPurchaseSheetContainer.spec.tsx): remove unused test file 🔧 chore(nextIntlServer.mock.js): update getTranslations function signature to match the latest version of next-intl 🔧 chore(index.d.ts): remove NX_CLOUD_AUTH_TOKEN from environment variable types to align with current project configuration * 🎨 style(AppNavLayoutDesktop.tsx): update header styles for better visual consistency and readability 🎨 style(Logo.tsx): update SVG component props to improve customization options 🎨 style(NavLink.tsx): add 'bg-transparent' class to NavLink component for better background styling 🎨 style(AppNavLayoutDesktop.tsx): update header styles for better visual consistency and readability in back-office app * 🔨 refactor(index.ts): remove unused CardOverlay component from exports 🔨 refactor(Card.tsx): remove unused CardOverlay component 🔨 refactor(examples.tsx): remove usage of CardOverlay component * 🔨 refactor(EventCards.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(CartCancelled.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(CartSuccessful.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(NoUserCart.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(UserCart.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(PassFooterCardClient.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(Event.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(NoUserPass.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(SinglePass.tsx): remove unused CardOverlay component to improve code readability 🔨 refactor(Settings.tsx): remove unused CardOverlay component to improve code readability * 🔧 fix(AppNavLayout.tsx): remove unnecessary padding-bottom on mobile view to improve layout consistency 🔧 fix(AppNavLayoutMobile.tsx): remove unnecessary md:hidden class on navigation menu items to improve responsiveness * 🐛 fix(AppNavLayout.tsx): add overflow-hidden to prevent content overflow on smaller screens ✨ feat(AppNavLayout.tsx): add support for process.env.PORT environment variable to be able to run app on a configurable port 🐛 fix(AppNavLayoutMobile.tsx): add flex to fix layout issue on mobile screens 🐛 fix(SinglePass.tsx): add variant prop to CardContent to handle sticky footer behavior 🐛 fix(Card.tsx): adjust sticky footer styles to fix layout issue on smaller screens * 🔧 fix(SinglePass.tsx): add isMain prop to CardContent component to customize styling based on its value 🔧 fix(Card.tsx): add support for isMain prop in CardContent component to apply different styling when isMain is true and variant is stickyFooter * 🔧 fix(AppNavLayoutDesktop.tsx): change header positioning to absolute instead of sticky to fix layout issue 🔧 fix(UserPass.tsx): change Card variant class name from stickyFooter to mb-16 to fix layout issue 🔧 fix(Card.tsx): adjust styling for sticky footer variant to fix layout issue * 🔨 refactor(app-nav): move AppContainer, AppContainerFooter, and AppContainerOverflow components to app-nav library for reusability and better organization 🔨 refactor(event): update imports to use components from the app-nav library instead of the ui/components library for consistency and better code organization 🔨 refactor(event): replace Card, CardHeader, CardOverflow, and CardFooter components with AppContainer, AppContainerOverflow, and AppContainerFooter components for a more semantic and consistent layout structure * 🔧 chore(AppContainer.tsx): simplify AppContainer component by removing unnecessary variant prop and using inline styles directly 🔧 chore(AppContainer.tsx): simplify AppContainerOverflow component by removing unnecessary variant prop and using inline styles directly 🔧 chore(Event.tsx): remove variant prop from AppContainer component and AppContainerOverflow component as it is not needed 🔧 chore(SinglePass.tsx): remove variant prop from Card component and CardOverflow component and replace them with AppContainer and AppContainerOverflow components for better consistency and code reuse 🔧 chore(SinglePassSkeleton.tsx): remove variant prop from Card component and CardOverflow component and replace them with AppContainer and AppContainerOverflow components for better consistency and code reuse * 🎨 style(CartCancelled.tsx): refactor component structure to use AppContainer, AppContainerOverflow, and AppContainerFooter for better code organization and reusability 🎨 style(CartSuccessful.tsx): refactor component structure to use AppContainer, AppContainerOverflow, and AppContainerFooter for better code organization and reusability 🎨 style(NoUserCart.tsx): refactor component structure to use AppContainer, AppContainerOverflow, and AppContainerFooter for better code organization and reusability 🎨 style(UserCart.tsx): refactor component structure to use AppContainer, AppContainerOverflow, and AppContainerFooter for better code organization and reusability 🎨 style(ErrorClient.tsx): refactor component structure to use AppContainer, AppContainerOverflow, and AppContainerFooter for better code organization and reusability 🎨 style(NotFound.tsx): refactor component structure to use AppContainer, AppContainerOverflow, and AppContainerFooter for better code organization and reusability * 🔨 refactor(NoUserPass.tsx): replace Card component with AppContainer, AppContainerFooter, and AppContainerOverflow components for better code organization and consistency 🔨 refactor(UserPass.tsx): replace Card component with AppContainer component for better code organization and consistency * 🐛 fix(layout.tsx): rename textMintingOrders to textMintingOrdersBadge for better clarity and semantics 🐛 fix(UserPass.stories.tsx): add eventParameters2 to eventsParameters array to fix a bug 🐛 fix(UserPass.tsx): replace Alert component with Badge component for displaying textMintingOrdersBadge 🐛 fix(examples.tsx): rename textMintingOrders to textMintingOrdersBadge for better clarity and semantics 🐛 fix(en.json): update minting-success-message-badge translation to match the new text in the code 🐛 fix(fr.json): update minting-success-message-badge translation to match the new text in the code * 🔧 fix(cart/page.tsx): add block and className to Button component to improve styling and layout 🗑️ chore(error.tsx): remove unused error component 🔧 fix(purchase/layout.tsx): replace Card component with AppContainer component to improve layout and styling 🔧 fix(AppContainer.tsx): add h-full class to improve layout and ensure full height 🔧 fix(SumsubButton.tsx): add block and className to Button component to improve styling and layout 🔧 fix(PassFooterCardClient.tsx): replace CardFooter component with AppContainerFooter component to improve layout and styling 🔧 fix(Event.tsx): replace CardFooter component with AppContainerFooter component to improve layout and styling 🔧 fix(PassPurchaseCard.tsx): replace CardOverflow component with AppContainerOverflow component to improve layout and styling 🔧 fix(CardNavBack.tsx): add className to Button component to hide on small screens * 🔧 chore(ci.yml): add NODE_OPTIONS environment variable with '--max_old_space_size=4096' value to increase memory limit for Node.js processes during CI 🔧 chore(staging-apps.yml): add NODE_OPTIONS environment variable with '--max_old_space_size=4096' value to increase memory limit for Node.js processes during staging app deployment * 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🆕 feat(.swcrc): add .swcrc configuration file for new project libs/features/back-office/roles-actions 🔄 chore(project.json): change build executor to @nx/js:swc for improved build performance 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support 🔄 chore(.swcrc): update target to es2022 for improved compatibility and language features support * 🔧 chore(SumsubDialog.tsx): remove unused import to improve code cleanliness and maintainability 🔧 chore(project.json): fix outputPath typo in event-api project to ensure correct build output location 🔧 chore(package.json): remove unnecessary dependencies and configuration in common package 🔧 chore(.swcrc): add strict and noInterop options to improve code quality and maintainability 🔧 chore(package.json): remove unnecessary dependencies and configuration in types package 🔧 chore(tsconfig.json): remove unnecessary compiler options in types tsconfig 🔧 chore(nx.json): add analyzeSourceFiles option to @nx/rollup plugin configuration * 🔧 chore(ci.yml): add NX_CLOUD_AUTH_TOKEN environment variable to CI workflow for authentication 🔧 chore(ci.yml): add NX_CLOUD_AUTH_TOKEN secret to CI workflow for authentication 🗑️ chore(roles-actions): remove unused .swcrc configuration file 🔧 chore(roles-actions): update jest.config.ts to remove @swc/jest transformer 🔧 chore(roles-actions): update project.json to use @nx/rollup:rollup executor and swc compiler
* fix: stripe payment in USD when user has his money set to usd * fix: canceled url for stripe and trad in cart/canceled * fix: tests that collide with rebase * fix: tests and playwright utils * add: calculateUnitAmount function for stripe conversion and add tests for it * fix: rollback index.ts generateJwt * remove: cypress related deprecated code * fix: window type and fr.json duplicated key * fix: error cases for priceAmount and rates, adding a test for overflow * fix: move calculateUnitAmount to currency-common and refactor to use Money object * fix: rollback on dropdownmenu and fix window.ethereum for connection * fix: integration tests for gql * 🔧 chore(jest.config.ts): add global setup and teardown scripts for Hasura integration tests 🔧 chore(jest.integration.config.ts): remove unnecessary transform configuration for TypeScript files 🔧 chore(.swcrc): remove unnecessary exclude patterns for test files in payment admin library * 🔧 chore(ci.yml): remove unused artifacts-path, artifacts-name, environment-variables, and cypress_cache_path to simplify CI workflow 🔧 chore(extensions.json): add ms-playwright.playwright extension for Playwright support in VS Code 🔧 chore(eslintrc.json): add playwright/recommended plugin to eslint config for Playwright-specific linting rules ✨ feat(event.spec.ts): add e2e test for user buying a pass to test pass selection and payment flow ✨ feat(alpha_user.json): add test user data for e2e tests ✨ feat(loadUser.ts): add utility function to load user data in e2e tests 🔧 chore(playwright.config.ts): update baseURL to use environment variable or default to localhost:8888 for CI compatibility 🔧 chore(nx.json): update @nx/devkit version to 17.1.3 🔧 chore(package.json): add eslint-plugin-playwright to devDependencies 🔧 chore(tsconfig.base.json): update paths for project references and add missing entries for new files and directories * Refactor nx.json file * Update file paths in event.spec.ts and jest.config.ts * fix playwright config.ts * Update '@bytescale/sdk' dependency to version 3.10.0 * fix playwright test for stripe part * 🔒 chore(.env.local): update NEXT_PUBLIC_WEB3AUTH_CLIENT_ID to use a new client ID for improved security * Update RPC targets in safeAuthSetup.tsx * Remove unused import * Fix indentation in generateLocaleURLs function * 🔧 fix(page.tsx): replace deprecated getNextAppURL import with getLocalizedUrls to fix build error 🔧 fix(index.ts): add import for getNextAppURL to fix build error ✨ feat(index.ts): add getLocalizedUrls function to generate localized URLs for different locales * 🔥 refactor(page.tsx): remove unused imports and commented out code to improve code cleanliness and readability 🔧 chore(getMyRoles.integration.test.ts): rename deleteTables function to deleteAllTables for clarity and consistency with other functions * Update ci.yml to skip installation for e2e tests * Add dummy code to check e2e * fix: timeout to 2 minutes for WebServer * Add @next/font package * Add @next/font package * 🔧 chore(ci.yml): update environment variable to dynamically set environment based on branch name 🔧 chore(ci.yml): remove unnecessary command to launch docker services ✨ feat(e2e.yml): add workflow for running end-to-end tests ✨ feat(pr-approval-trigger-preview.yml): add workflow for triggering preview apps and e2e tests on PR approval ✨ feat(preview-apps.yml): add workflow for deploying preview apps ✨ feat(staging-apps.yml): add workflow for deploying staging apps * Update PR-approval-trigger-preview workflow condition * Add pull request reference in workflow inputs * Update workflow files * 🔧 chore(e2e.yml): remove unused branch input from workflow_dispatch event to simplify workflow configuration 🔧 chore(pr-approval-trigger-preview.yml): update benc-uk/workflow-dispatch action to v1.2.2 for triggering workflows on pull request approval 🔧 chore(preview-apps.yml): remove unused branch input from workflow_dispatch event to simplify workflow configuration * 🔧 chore(e2e.yml): remove unnecessary quotes from workflow name to improve readability 🔧 chore(preview-apps.yml): remove commented out code and unused event triggers to simplify the workflow configuration * Update E2E workflow name --------- Co-authored-by: sebpalluel <[email protected]>
…#171) * 🔀 chore(remote_schemas.yaml): change relationship_type from array to object for better data modeling 🔀 chore(index.ts): add types for GetEventsFromOrganizerIdTableQuery to ensure type safety 🔀 chore(event.query.gql): add GetEventsFromOrganizerIdTable query to fetch events with additional parameters for better data retrieval 🔧 chore(app-nav): add AppContainerHeader component to improve app navigation layout 🔧 chore(app-nav): exclude stories.tsx from the build process to avoid unnecessary compilation 🔧 chore(tsconfig.base.json): add stories.tsx to the app-nav module to include it in the build process Adjust layout styling for mobile and desktop navigation menus. - The AppNavLayoutMobile component has been modified to set a fixed height for the NavigationMenuList, ensuring that it occupies a certain amount of vertical space. - The AppNavLayoutDesktop component has been modified to set the position of the header to absolute and adjust the z-index, making it appear above other elements in the layout. These changes improve the overall styling and visual presentation of the navigation menus on different devices. Exclude "src/stories.tsx" from "tsconfig.lib.json" and "tsconfig.spec.json" in the "app-nav" and "events" features. Include all other relevant source files in the configurations. feat: Add EventsTable component and associated columns This commit adds a new component called EventsTable, which renders a table of events. It also introduces a new file called columns.tsx, which defines the columns for the table. The EventsTable component receives an array of events as a prop and renders the table with the appropriate data and column configuration. This allows for easy customization and reuse of the table component. Minor changes: - Remove unnecessary import statement in examples.tsx feat(back-office): Add EventsTable stories Added a new file to showcase the EventsTable component using Storybook. The stories include examples with different configurations and data. fix(pass): Update UserPass component Updated the UserPass component to use the new AppContainerHeader component instead of CardHeader for better consistency in styling. feat(i18n): Update English and French translation messages Updated the translation messages for the OrganizerEvents and UI.Table keys in the English and French JSON files. feat(ui): Add className prop to DataTable component Added a className prop to the DataTable component in order to apply custom styling to the component. Add @next/i18n-ui library Remove showToggleColumns prop from DataTableToolbar Refactor table functions Update tsconfig.json files Fix toolbarProps type in DataTable component Update column titles in data table Update tsconfig files to include additional file paths Add search functionality to Events Management table Fix pagination row text Update EventsTable and add EventsPage Fix alignment issue in DataTable and DataTableViewOptions Refactor EventsTable component and remove unused columns Refactor EventsPage component to use NextIntlClientProvider and EventsTable component Add getEventsFromOrganizerIdTable function Refactor events page and update imports Add event sheet page and related components Remove unused imports and update align property in ColumnMeta Remove backButtonLink prop from PassPurchaseSheet component Remove CardNavBack component and its skeleton Add AppContainerNavBack and AppContainerNavBackSkeleton components Refactor PassPurchaseCard component Add navigation back button to SinglePass page Fix import order and add 404 page handling Update event types and queries Add EventPassCard and EventSheet components Refactor event sheet page and layout components Refactor EventPassCard component Fix event pass card rendering issue Refactor card component and its stories Refactor PassCard and SinglePass components Update global CSS variables Update color variables in globals.css and Card component Add event pass pricing details to generated code Add EventPassNftsInfos component to EventPassCard Remove unused backClasses import and update SheetHeader padding Update sheet size in EventSheetPage and SheetHeader 🎨 style(EventPassNftsInfos.tsx): add image display for event pass NFTs to improve visual representation 🎨 style(EventPassCard.tsx): remove image display for event pass NFTs to simplify design and improve consistency Add EventPassNfts component and update EventSheet examples 🔧 chore(globals.css): comment out unused heading styles to improve code readability and reduce file size 🔧 chore(globals.css): comment out unused heading styles to improve code readability and reduce file size 🔧 chore(globals.css): comment out unused heading styles to improve code readability and reduce file size 🔧 chore(Accordion.tsx): optimize imports and fix incorrect import order 🔧 chore(Sheet.tsx): update SheetNavigationProps backButtonText type to allow React.ReactNode Refactor EventPassNftsInfos component to use Accordion Remove commented out code in globals.css Update Accordion component styles 📦 feat(EventPassNftFiles): add component to display pass associated with NFTs 📦 feat(EventPassNfts): add EventPassNftFiles component to display pass associated with NFTs 🌐 feat(i18n): update translation for NFTs Informations and Pass associated to your NFTs 🔨 refactor(EventPassNftsInfos.tsx): change font weight of labels from "font-semibold" to "font-medium" for better visual consistency 🐛 fix(roles-admin.spec.ts): remove unnecessary comment generated by CodiumAI ✨ feat(roles-admin.ts): add readAndWritePassesFile and readOrganizerEventManagement methods to RoleAuthorization class to handle role-based authorization logic 🔄 refactor(events-api): rename getEventsFromOrganizerId to getEventWithPassesOrganizer for better clarity and consistency 🔥 chore(events-api): remove unused getEventsFromOrganizerId file to clean up codebase 🔧 fix(page.tsx): add support for fetching event data and user authentication to improve functionality ✨ feat(page.tsx): add support for passing locale to EventSheetPageContent component to improve localization 🔧 fix(index.ts): export EventSheet component to fix import error in page.tsx 🔧 fix(EventSheet.tsx): add support for getting locale and wrapping SheetNavigation component with Link to improve navigation Remove EventHeroButton component 🚀 feat(PassFooterSheet.tsx): add PassFooterSheet component to handle the footer of the pass selection sheet 🚀 feat(Event.tsx): remove purchaseLink and purchaseText props from EventHero component to simplify the component 🚀 feat(PassPurchaseSheet.tsx): remove PassPurchaseSheetNavigationClient component and replace it with SheetNavigation component to handle navigation in the pass purchase sheet Add new storybook examples for HelperText component 🔧 chore(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics 🔧 chore(back-office): remove unused code in page.tsx 🔧 chore(back-office): add EventPassCardFooter component to EventPassCard 🔧 chore(back-office): add EventPassCardContent component to EventPassCard 🔧 chore(back-office): remove eventPassNftContract from examples.tsx 🔧 chore(payment-admin): remove console.log statements in integration test * Update affected:parallel-ci script in package.json * 🔧 chore(ci.yml): remove commented out code for running e2e tests The commented out code for running e2e tests has been removed from the CI workflow file. * 🔧 fix(index.ts): add TableSkeleton export to the list of exports to fix missing export error 🔧 fix(Accordion.tsx): remove unnecessary assignment in className to fix linting error 🔧 fix(DataTableColumnHeader.tsx): add conditional rendering for sorting and hiding dropdown menu items based on columnDef properties to fix unwanted rendering 🔧 fix(HelperText.tsx): add conditional rendering for displaying helper text message to fix empty message rendering 🔧 fix(Table.stories.tsx): add TableSkeleton and TableSkeletonHighlight exports to fix missing export error 🔧 fix(Table.tsx): add TableSkeleton component to provide a skeleton loading state for the table * 🌐 feat(i18n): add translations for new strings in en.json and fr.json The following translations were added: - In en.json: - "EventPassNftFilesTable" section with translations for "header-file-path", "header-show", and "header-delete" - "EventPassCardFooter" section with translations for "deploy-contract", "no-pricing-set", and "copied-contract-address" - In fr.json: - "EventPassNftFilesTable" section with translations for "header-file-path", "header-show", and "header-delete" - "EventPassCardFooter" section with translations for "deploy-contract", "no-pricing-set", and "copied-contract-address" * 🔧 chore(EventSheet.tsx): refactor EventSheet component to improve readability and maintainability 🔧 chore(EventsTable.tsx): comment out unused column in EventsTable component for future reference 🔧 chore(EventsPage.tsx): refactor EventsPage component to improve readability and maintainability 🔧 chore(index.ts): add missing type definition for GetEventPassOrganizerFolderPath interface * 🆕 feat(EventPassNftFilesTable): add new component EventPassNftFilesTable to display a table of NFT files for an event pass 🆕 feat(EventPassNftFilesTableClient): add new component EventPassNftFilesTableClient to render the table of NFT files for an event pass on the client side 🗑️ chore(NoEventsPlaceholder): remove unused component NoEventsPlaceholder 🔀 refactor(EventPassCardContent): update EventPassCardContent to use the new EventPassNftFiles component and pass necessary props to it * 🔥 refactor(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics 🔧 chore(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🗑️ chore(events/loading.tsx): delete unused file 🔧 chore(events/page.tsx): add Suspense component to wrap EventsContent component for lazy loading 🔧 chore(events/page.tsx): change function name from Events to EventsContent for clarity 🔧 chore(events/index.ts): add EventTableSkeleton export to improve code organization 📝 docs(EventCards.tmp): add missing import statements and fix formatting 🗑️ chore(OrganizerEvents.tsx): delete unused file 🔧 chore(getEventPassNftFiles.tsx): add type for GetEventPassNftFilesProps and rename function to getEventPassNftFiles 🔧 chore(renameFolderQrCodes.ts): add type for CheckFolderProps and RenameFolderQrCodesProps and rename function to renameFolderQrCodes 🔧 chore(EventPassCardFooter.tsx): add import statement for BlockchainAddress component and useTranslations hook 🔧 chore(EventPassNftFiles.tsx): add import statement for Suspense component and TableSkeleton component 🔧 chore(EventPassNftFilesTable.tsx): add import statement for Suspense component 🔧 chore(EventPassFilesUploader.tsx): add import statements for UploadDropzone component and Bytescale SDK 🔧 chore(tsconfig.lib.json): add include path for type definitions in the project * 🔥 refactor(Table.tsx): remove commented out code in TableSkeleton component to improve code readability and maintainability * 🐛 fix(EventPassCardFooter.tsx): initialize isDisabledReasons as an empty string array to prevent type errors The `isDisabledReasons` variable was not properly initialized as an empty string array, which could lead to type errors when trying to push values into it. This commit fixes the issue by explicitly initializing `isDisabledReasons` as an empty string array. * 🔧 fix(getEventPassNftFiles.tsx): fix missing semicolon in type declaration to improve code consistency 🔧 fix(EventPassFilesUploader.tsx): fix missing semicolon in type declaration to improve code consistency 🔧 fix(tsconfig.lib.json): remove unnecessary newlines to improve code readability
* add: downloadPass in action and batchDownloadOrReveal v1 * fix: .gitignore and downloadPass imports * fix: tests for batchDownloadOrReveal * add: downloadPass in action and batchDownloadOrReveal v1 * fix: duplicate import * fix: pr comments * fix: env/client declaration not find * Remove unnecessary comment step in preview-apps workflow --------- Co-authored-by: sebpalluel <[email protected]>
* 🔄 chore(ui): update Accordion component to include AccordionItemSkeleton and AccordionSkeleton 🔄 chore(ui): update Tabs component to include TabsSkeleton and TabsTriggerSkeleton 🔄 chore(ui): update Text component to include color variant for TextSkeleton 🔄 chore(ui): update Button component to include color variant for ButtonSkeleton 🔄 chore(ui): update Card component to include CardTitleSkeleton and CardDescriptionSkeleton 🔄 chore(ui): update Sheet component to include SheetTitleSkeleton and SheetDescriptionSkeleton ✨ feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port The Accordion component has been updated to include the AccordionItemSkeleton and AccordionSkeleton components. This allows for displaying skeleton loading states for accordion items and the entire accordion component. The Tabs component has been updated to include the TabsSkeleton and TabsTriggerSkeleton components. This allows for displaying skeleton loading states for tabs and tab triggers. The Text component has been updated to include a color variant for the TextSkeleton component. This allows for displaying skeleton loading states with different background colors. The Button component has been updated to include a color variant for the ButtonSkeleton component. This allows for displaying skeleton loading states with different background colors. The Card component has been updated to include the CardTitleSkeleton and CardDescriptionSkeleton components. This allows for displaying skeleton loading states for card titles and descriptions. The Sheet component has been updated to include the SheetTitleSkeleton and SheetDescriptionSkeleton components. This allows for displaying skeleton loading states for sheet titles and descriptions. In addition, the server.ts file has been updated to add support for the process.env.PORT environment variable. This allows the app to be run on a configurable port specified by the environment variable. 🐛 fix(page.tsx): replace loading fallback with EventSheetSkeleton component for better user experience ✨ feat(index.ts): add EventSheetSkeleton export to allow for displaying skeleton loading state of EventSheet component 🐛 fix(EventPassCard.tsx): import missing components for EventPassCard and add EventPassCardSkeleton component ✨ feat(EventPassCard.tsx): add EventPassCardSkeleton component to display skeleton loading state of EventPassCard 🐛 fix(EventSheet.stories.tsx): import missing components for EventSheetExample and add EventSheetSkeletonExample component ✨ feat(EventSheet.stories.tsx): add Skeleton story to display skeleton loading state of EventSheet component 🐛 fix(EventSheet.tsx): import missing components for EventSheet and add EventSheetSkeleton component ✨ feat(EventSheet.tsx): add EventSheetSkeleton component to display skeleton loading state of EventSheet ✨ feat(examples.tsx): add EventSheetSkeletonExample component to display skeleton loading state of EventSheetExample 📝 chore(loading.tsx): add loading component for event page to improve user experience 🐛 fix(page.tsx): fix import statement for NotFound component 🚀 feat(page.tsx): add support for generating metadata for event pages to improve SEO and social sharing 🔧 chore(RichTextField.tsx): organize imports and remove unused import ✨ feat(RichTextField.tsx): add support for rendering different heading levels and paragraphs in the RichTextField component 🎨 style(RichTextField.tsx): update class name for the container div to remove unnecessary class name 🔥 refactor(loading.tsx): remove unused loading component 🔥 refactor(page.tsx): remove unused imports and simplify code structure 🔥 refactor(Settings.tsx): refactor component structure and remove unused imports 🔧 chore(layout.tsx): remove unused 'use client' import to clean up code 🔧 chore(page.tsx): remove commented out query parameters in purchaseLink to improve code readability 🔧 chore(page.tsx): remove commented out query parameters in purchaseLink to improve code readability 🔧 chore(page.tsx): remove commented out query parameters in purchaseLink to improve code readability 🔧 chore(PassPurchaseSheet.tsx): import LinkProps from 'next/link' to fix type error 🔧 chore(PassPurchaseSheet.tsx): add closeLink prop to PassPurchaseSheetProps to enable closing the sheet with a link 🔧 chore(PassPurchaseSheet.tsx): add closeLink prop to PassPurchaseSheetProps to enable closing the sheet with a link 🔧 chore(PassPurchaseSheet.tsx): add closeLink prop to PassPurchaseSheetProps to enable closing the sheet with a link 🔧 chore(PassPurchaseSheet.tsx): add closeLink prop to PassPurchaseSheetProps to enable closing the sheet with a link 🔧 chore(examples.tsx): add closeLink prop to passPurchaseProps to enable closing the sheet with a link 🐛 fix(page.tsx): replace deprecated notFound function with NotFound component to improve code maintainability and readability 🔧 fix(page.tsx): remove unused import and replace notFound() function with NotFound component for better code organization and consistency 🔧 fix(page.tsx): remove unused console.log statement for cleaner code and improved readability 🔧 fix(page.tsx): replace notFound() function with NotFound component for better code organization and consistency 🔧 fix(NotFound.tsx): fix CSS class name to correctly set the height of the flex container * 🔀 chore(nx.json): update defaultBase value from "main" to "staging" for better branch management 🔀 chore(nx.json): update defaultBase value from "main" to "staging" for better branch management * 🔧 chore(env): remove NX_CACHE_DIRECTORY from env validation and usage 🔧 chore(nx.json): remove cacheDirectory configuration 🔧 chore(types): remove NX_CACHE_DIRECTORY from env types
#177) * add: e2e tests for pass and update version of thirdweb sdk to fix nonetwork issue * fix: next build and serve for e2e tests * fix: change pass test to reveal with batchDownloadOrReveal * fix: batch or reveal spec test for not checking revalidateTag * test: add back eventcards.tmp * fix: utils function to get the corresponding chain object from thirdweb * fix: push with playwright config command for webServer with --turbo * fix: no timeout in pass.spec.ts * 🐛 fix(CartNav.stories.tsx): remove unused imports to improve code cleanliness and readability 🐛 fix(PassNav.stories.tsx): remove unused imports to improve code cleanliness and readability 🐛 fix(ProfileNav.stories.tsx): remove unused imports to improve code cleanliness and readability 🐛 fix(EventOrganizerButton.tsx): uncomment code to enable linking to organizer page and improve user experience 🐛 fix(Event/examples.tsx): add missing purchase link and text to improve user experience 🐛 fix(SinglePass.stories.tsx): replace getByText with findByText to ensure elements are present before interacting with them 🐛 fix(DateRange.stories.tsx): replace getByText with findByText to ensure elements are present before interacting with them * 🔧 chore(.eslintrc.json): reformat the file to improve readability and maintainability 🔧 chore(.gitignore): remove 'storybook-static' directory from git tracking 🔧 chore(e2e/event.spec.ts): add 'resetCache' function import and call it before each test to clear cache 🔧 chore(e2e/pass.spec.ts): remove unnecessary 'loadUser' function call and update page.goto URL 🔧 chore(e2e/utils/loadUser.ts): refactor 'loadUser' function to accept an object with optional 'goTo' property 🔧 chore(playwright.config.ts): remove 'export NEXT_PUBLIC_PLAYWRIGHT=true' from webServer command 🔧 chore(next/types/window.ts): remove unused 'STORYBOOK_ENV' and make 'useE2EAuthContext' function optional in Window interface ✨ feat(test-utils/cache.ts): add 'resetCache' function to clear all cache keys * 🔧 fix(PassPurchase.stories.tsx): await the expectation for backButton to be visible to ensure proper test execution 🔧 fix(UserPass.stories.tsx): await the expectations for toastElement visibility to ensure proper test execution * 🔧 fix(e2e): update import statement in event.spec.ts and pass.spec.ts to reflect file name change 🔧 fix(e2e): update import statement in loadAccount.ts to reflect file name change 🔧 fix(authProvider.tsx): update condition to check for useE2EAuthContext in e2e tests 🔧 fix(safeAuthSetup.tsx): update condition to check for useE2EAuthContext in e2e tests 🔧 fix(Web3AuthModalPack.ts): update condition to check for useE2EAuthContext in e2e tests * 🔧 chore(.env.local): add e2e test environment variables for Next.js app 🔧 chore(event.spec.ts): update import path for test-utils/db package 🔧 chore(loadAccount.ts): update import path for @next/types package 🔧 chore(tsconfig.json): exclude e2e directory from TypeScript compilation 🔧 chore(authProvider.tsx): add condition to bypass web3auth in e2e tests 🔧 chore(safeAuthSetup.tsx): add condition to bypass web3auth in e2e tests 🔧 chore(Web3AuthModalPack.ts): add condition to set ethereum provider from window.ethereum in e2e tests * 🔧 chore(e2e.yml): update e2e workflow to build web:build:production before running e2e tests 🔧 chore(pr-approval-trigger-preview.yml): temporarily disable preview-apps job in pr-approval-trigger-preview workflow * 🔧 chore(.eslintrc.json): remove unnecessary line breaks and align plugin array for better readability 🔧 chore(UserPassEvent.tsx): add flex class to the div for better layout * 🔧 chore(lint-staged.config.js): update lint-staged config to use pnpm command for format:check instead of nx affected command * 🔧 chore(.eslintrc.json): reformat file to improve readability and maintainability 🔧 chore(package.json): update @typescript-eslint/eslint-plugin and @typescript-eslint/parser versions to 6.13.1 for compatibility * 🐛 fix(Accordion.stories.tsx): await the expectation for accordionContent to be visible to ensure proper test execution 🐛 fix(BlockchainAddress.stories.tsx): await the expectation for tooltip to be visible to ensure proper test execution 🐛 fix(BoundedNumericStepper.spec.tsx): await the expectation for incrementButton to be disabled to ensure proper test execution 🐛 fix(BoundedNumericStepper.stories.tsx): await the expectation for incrementButton to be disabled and decrementButton to be enabled to ensure proper test execution 🐛 fix(Button.spec.tsx): await the expectation for buttonElement to be disabled to ensure proper test execution 🐛 fix(Checkbox.stories.tsx): await the expectation for checkboxElement to be disabled and have aria-checked attribute to ensure proper test execution 🐛 fix(CheckboxWithText.stories.tsx): await the expectation for checkboxElement to be disabled and have aria-checked attribute to ensure proper test execution 🐛 fix(Command.stories.tsx): await the expectation for Next.js item to have aria-selected attribute to ensure proper test execution 🐛 fix(CommandComboboxWithSelection.stories.tsx): await the expectation for Remix item to have data-state attribute to ensure proper test execution 🐛 fix(Dialog.stories.tsx): await the expectation for dialogTitle, dialogDescription, and allInputs[0] to be visible/focused to ensure proper test execution 🐛 fix(NavigationMenu.stories.tsx): await the expectation for gettingStartedContent and componentsContent to be visible to ensure proper test execution 🐛 fix(Popover.stories.tsx): await the expectation for allInputs[0] to be focused to ensure proper test execution 🐛 fix(Sheet.stories.tsx): await the expectation for dialogTitle, allInputs[0], and saveButton to be visible to ensure proper test execution 🐛 fix(Switch.stories.tsx): await the expectation for switchElement to be disabled and have aria-checked attribute to ensure proper test execution 🐛 fix(Toast.stories.tsx): await the expectation for toastDescription, toastTitle, toastAction, and toastElement to be visible to ensure proper test execution * 🔧 chore(.eslintrc.json): enable @typescript-eslint/no-unused-vars rule with warn severity to catch unused variables 🔧 chore(.gitignore): remove trailing slash from playwright-report entry to match the actual directory name 🔧 chore(lint-staged.config.js): reorder lint-staged commands to first format files, then run lint with fix, and finally write the formatted files * 🔥 refactor(tailwind.config.js): remove unused import and variable to improve code cleanliness and maintainability * 🔧 chore(chromatic-back-office.yml): comment out push event configuration to prevent triggering workflows on push to staging branch 🔧 chore(chromatic-ui.yml): comment out push event configuration to prevent triggering workflows on push to main branch 🔧 chore(chromatic-web.yml): comment out push event configuration to prevent triggering workflows on push to staging branch ✨ feat(e2e-web.yml): add workflow for running end-to-end tests for web 🔧 chore(pr-approval-trigger-preview.yml): comment out e2e job configuration to temporarily disable triggering e2e workflow * 🔧 chore(.eslintrc.json): remove unnecessary line breaks and align plugin array for better readability * 📦 chore(workflows): add build and e2e web tests workflow 📦 chore(workflows): add e2e-web job to trigger build and e2e workflow for web tests * 🔧 fix(UserPassEvent.tsx): add 'w-full' class to the div element to ensure it takes up the full width 🔧 fix(UserPassEventCard.tsx): add 'w-full' class to the Card component to ensure it takes up the full width --------- Co-authored-by: sebpalluel <[email protected]>
…or back-office and web apps to improve build process 🔧 chore(vercel.json): update cron paths for handlePendingOrders and setRates scripts in web app to fix cron job execution
…elative paths for better reliability and consistency
…EMOTE_CACHE_TEAM environment variables for Vercel remote cache support 🔧 chore(nx.json): configure tasks runner options to use @vercel/remote-nx runner and set cacheDirectory to /tmp/nx-cache 🔧 chore(package.json): add @vercel/remote-nx package as a dependency for Vercel remote cache support
…eb apps to correct relative path
* parent 0f0c3b3 author sebpalluel <[email protected]> 1701101942 +0000 committer sebpalluel <[email protected]> 1701342238 +0000 gpgsig -----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgN9QiBN67+zupTqfByHyNW3858y zJXS7P+FN4ObcF8+AAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQNLDMddKUnP2ircUCUtyYjKKjzG3TvriPbXx0ZY09Tq3E0NHuAlSzm02NCoxt0ycLT tfmSPS4ACHJGA50BVmLQw= -----END SSH SIGNATURE----- parent 0f0c3b3 author sebpalluel <[email protected]> 1701101942 +0000 committer sebpalluel <[email protected]> 1701342123 +0000 gpgsig -----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgN9QiBN67+zupTqfByHyNW3858y zJXS7P+FN4ObcF8+AAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQNZY2t5NrQNXOtBQxAt3oi0FMC2edphsLEoFDgSir8RqZxsir1Bgct2w0/09cy7pAY X868t44359ToJCPUBNeQ8= -----END SSH SIGNATURE----- 🔒 chore(package.json): update jsonwebtoken package version to 9.0.2 for security reasons ⬆️ chore(package.json): update pnpm package manager version to 8.11.0 for compatibility with other dependencies Fix naming convention in event-api library Update defaultBase to main and remove NX_CACHE_DIRECTORY 🚀 feat(index.spec.ts): add tests for checking user KYC validation based on levelName The tests were added to check if the user's KYC validation status is correct based on the levelName. The levelName is now included in the user object and is used to determine if the user's KYC is validated or not. The tests cover scenarios where the user's KYC is completed and the levelName matches, where the levelName is advanced, and where the levelName does not match. 🎨 style(EventPassNftsInfos.tsx): add rounded-sm and object-cover classes to Image component for consistent styling 🎨 style(EventPasses.tsx): add object-cover class to image for consistent styling 🎨 style(EventHero.tsx): add object-cover class to image for consistent styling 🎨 style(PassCard.tsx): add object-cover class to image for consistent styling 🎨 style(UserPassEvent.tsx): add object-cover class to image for consistent styling 🎨 style(UserPassEventCard.tsx): add rounded-sm and object-cover classes to Image component for consistent styling 🎨 style(SinglePass.tsx): add object-cover class to image for consistent styling 🎨 style(AspectRatio.stories.tsx): add rounded-sm and object-cover classes to img element for consistent styling 🔧 chore(.env.local): add OPENZEPPELIN_URL environment variable to .env.local file 🔧 chore(index.mjs): update OPENZEPPELIN_URL environment variable to use the value from .env.local file 🔧 chore(gql): add heroImageClasses and imageClasses fields to various queries and fragments to support additional styling options for event and pass images 🎨 style(role-avatar): add organizer image classes to RoleAvatar component to allow custom styling of the avatar image 🎨 style(cart): add event hero image classes to EventPasses component to allow custom styling of the hero image 🎨 style(event-hero): add hero image classes to EventHero component to allow custom styling of the hero image 🎨 style(event-organizer-button): add image classes to EventOrganizerButton component to allow custom styling of the avatar image Added handle fields to organizer in hygraph Update OrganizerFieldsFragment with imageClasses Update backdrop-blur classes in AppContainer and AppNavLayout Add organizer feature with ESLint configuration and package.json 🔧 chore(icons.tsx): add new social media icons (Telegram, Discord, Youtube, TikTok, Twitch, Twitter, Facebook, Instagram) to enhance icon library 🔧 chore(icons.tsx): update import statements to include new social media icons (Telegram, Discord, Youtube, TikTok, Twitch, Twitter, Facebook, Instagram) 📦 feat(SocialMediaButton): add new social media widgets for Discord, Facebook, Instagram, TikTok, Twitch, Twitter, and YouTube ✨ feat(DiscordWidget): add DiscordWidget component to display a Discord server widget based on the provided handle ✨ feat(FacebookWidget): add FacebookWidget component to display a Facebook profile widget based on the provided handle ✨ feat(InstagramWidget): add InstagramWidget component to display an Instagram profile widget based on the provided handle ✨ feat(TikTokWidget): add TikTokWidget component to display a TikTok profile widget based on the provided handle ✨ feat(TwitchWidget): add TwitchWidget component to display a Twitch channel widget based on the provided handle ✨ feat(TwitterWidget): add TwitterWidget component to display a Twitter profile widget based on the provided handle ✨ feat(YouTubeWidget): add YouTubeWidget component to display a YouTube channel widget based on the provided handle 🔧 chore(YouTubeWidget): update YouTubeWidgetContent to fetch YouTube profile information using the YouTube Data API 🔧 chore(FacebookWidget): update FacebookWidgetContent to fetch Facebook profile information using the Facebook Graph API 🔧 chore(InstagramWidget): update InstagramWidgetContent to fetch Instagram profile information using the Facebook Graph API 🔧 chore(TikTokWidget): update TikTokWidgetContent to fetch TikTok profile information using the TikTok oEmbed API 🔧 chore(TwitchWidget): update TwitchWidget to use Twitch Embed API to embed Twitch channel based on the provided handle 🔧 chore(TwitterWidget): update TwitterWidgetContent to fetch Twitter profile information using the Twitter oEmbed API 🚀 feat(SocialMediaButton.stories.tsx): add storybook stories for SocialMediaButton component with different platforms and handles 🚀 feat(SocialMediaButton.tsx): implement SocialMediaButton component with dynamic rendering based on platform and handle props 🌐 feat(en.json, fr.json): add translation key for SocialMediaButton hover content to go to platform 🚀 feat(SocialMediaButtons.stories.tsx): add storybook stories for SocialMediaButtons component 🚀 feat(SocialMediaButtons.tsx): create SocialMediaButtons component to render a list of social media buttons based on provided platforms 🔧 fix(YouTubeWidget.tsx): replace hardcoded locale with useLocale() hook to dynamically fetch the correct language title and description from the API 🔨 refactor(organizer): remove duplicated code by extracting OrganizerFields fragment and reusing it in event.query.gql and organizer.query.gql 🔨 refactor(organizer): remove unused fields from OrganizerFields fragment in OrganizerFields.fragment.gql 📦 feat(organizer): add OrganizerHero component ✨ feat(organizer): add OrganizerHero component to the organizer feature library. This component is responsible for rendering the hero section of an organizer. It accepts props of type Organizer and omits the 'description', 'id', and 'slug' properties. The component is currently a placeholder and needs to be replaced with actual code. 📦 feat(organizer): add types library ✨ feat(organizer): add types library to the organizer feature. This library contains the type definition for the Organizer object. It exports the Organizer type, which is a non-nullable subset of the GetOrganizerQuery['organizer'] type from the '@gql/admin/types' module. 🔧 chore(organizer): add ESLint configuration for types library 🔧 chore(organizer): add ESLint configuration for the types library in the organizer feature. The ESLint configuration extends the root ESLint configuration and applies no additional rules. 🔧 chore(organizer): add SWC configuration for types library 🔧 chore(organizer): add SWC configuration for the types library in the organizer feature. The SWC configuration specifies the target as ES2017, enables TypeScript syntax, decorators, and dynamic imports, and sets the output module type as CommonJS. 📝 docs(organizer): add README for types library 📝 docs(organizer): add README file for the types library in the organizer feature. The README file provides basic information about the library and instructions for building it. 📦 feat(organizer): add package.json for types library ✨ feat(organizer): add package.json file for the types library in the organizer feature. The package.json file specifies the name and version of the library. 🔧 chore(organizer): add project.json for types library 🔧 chore(organizer): add project.json file for the types library in the organizer feature. The project.json file defines the project configuration for the library, including the source root, targets for building and linting, and tags. 📝 docs(organizer): add index.ts file for types library 📝 docs(organizer): add index.ts file for the types library in the organizer feature. The index.ts file exports the Organizer type from the 'lib/index' module. 🔧 chore(organizer): add tsconfig.json for 🚀 feat(ui/components): add Toggle component to the library 🐛 fix(ui/components): fix import order in Badge.tsx to improve readability and maintainability 🚀 feat(ui/components): add Toggle component stories 🚀 feat(ui/components): add Toggle component implementation 🚀 feat(ui/components): add Toggle component example 🚀 feat(ui/icons): add Star and StarFill icons 🚀 feat(ui/shared): add colors module to export textColors and backgroundColors 📦 chore(public_follow.yaml): add follow table to the default database schema 📦 chore(1701254129012_create_follow): create follow table in the default database schema 🔧 fix(organizer.query.gql): remove unnecessary id field from GetOrganizer query 📦 chore(gql): add follow mutation and query for organizer in admin and user APIs 🔀 merge(ui): export ToggleProps from Toggle component to improve reusability 🔧 chore(layout.tsx): remove unused import of `Inter` font from `@next/font/google` to optimize bundle size 🔧 chore(package.json): remove unused dependency `@next/font` to optimize bundle size 🔧 chore(public_follow.yaml): add insert, select, and delete permissions for user role to improve data access control ✨ feat(followToggleOrganizer.ts): implement followToggleOrganizer function to allow users to toggle following status of an organizer ✨ feat(isFollowingOrganizer.ts): implement isFollowingOrganizer function to check if a user is following an organizer 📦 chore(organizer): add Jest configuration files for unit and integration tests 📝 docs(organizer): add tsconfig.spec.json to specify compiler options for running tests 🐛 fix(EventOrganizerButton.tsx): add fallback empty string to imageClasses to prevent undefined error 🔧 fix(followToggleOrganizer.spec.ts): update test cases to use correct mock functions and remove unnecessary comments 🔧 fix(followToggleOrganizer.ts): throw an error if organizerSlug is empty to prevent invalid input 🔧 fix(isFollowingOrganizer.spec.ts): update test cases to use correct mock functions and remove unnecessary comments 🔧 fix(isFollowingOrganizer.ts): handle case when getCurrentUser() throws an error and throw an error if adminSdk.CheckFollowingOrganizer() returns an error 📝 chore: add follow seed file to default seeds 🔧 fix(jest.config.ts): update testMatch pattern to include test files in subdirectories 🔧 fix(isFollowingOrganizer.integration.test.ts): update import statements and mock implementation 🔧 fix(features-pass-cache.integration.test.ts): update import statements and reset cache before each test 🔧 fix(index.spec.ts): update import statement and reset cache before each test 🔧 fix(test-utils-cache.ts): update resetCache function to use kv.flushall() 🔧 fix(index.ts): add follow seed table to SeedTable enum 🔧 fix(deleteAllData.js): add follow table to tablesToDelete list 🚧 test(followToggleOrganizer.integration.test.ts): add integration tests for followToggleOrganizer function This commit adds integration tests for the followToggleOrganizer function in the organizer feature. The tests cover the scenarios where the user is already following the organizer and where the user is not following the organizer. The tests use mocked dependencies and a test database to ensure isolation and reproducibility. 🐛 fix(OrganizerFollowButton.tsx): fix import statement for 'isConnected' function from '@next/next-auth/user' to '@next/next-auth/client' to resolve import error ✨ feat(OrganizerFollowButton.tsx): add support for displaying follow/unfollow button based on user authentication status and implement debounce for handleAction function to prevent multiple rapid API calls 🐛 fix(OrganizerFollowButtonClient.tsx): fix import statement for 'Organizer' type from '@gql/shared/types' to '@features/organizer/types' to resolve import error ✨ feat(OrganizerFollowButtonClient.tsx): add support for displaying follow/unfollow button based on user authentication status and implement debounce for handleAction function to prevent multiple rapid API calls 🐛 fix(OrganizerHero.tsx): fix import statement for 'Organizer' type from '@features/organizer/types' to '@gql/shared/types' to resolve import error ✨ feat(OrganizerHero.tsx): add support for displaying follow/unfollow button in OrganizerHero component using OrganizerFollowButton component 🐛 fix(en.json): add missing translation keys for OrganizerFollowButton component 🐛 fix(fr.json): add missing translation keys for OrganizerFollowButton component 📦 chore(storybook): add jsonwebtoken mock to storybook mocks 🔧 fix(storybook): remove unused import in storybook.nextjs.decorators.tsx 🔧 fix(storybook): add jsonwebtoken mock to mainConfig in storybook.nextjs.main.base.ts 🔧 chore(package.json): add "@types/lodash" dependency to improve type definitions for lodash library 🔧 chore(tsconfig.base.json): format tsconfig.base.json file for better readability and maintainability 🎨 style(app-nav): add 'fullscreen' layout parameter to mobile stories for better visualization 🎨 style(events): add 'fullscreen' layout parameter to mobile stories for better visualization 🎨 style(PassPurchase): add 'fullscreen' layout parameter to story for better visualization 🔧 chore(Settings.stories.tsx): remove unused imports and dependencies in Settings.stories.tsx 🔧 chore(Settings.tsx): refactor import statements in Settings.tsx to improve code organization and readability 🚀 feat(organizer.query.gql): add social media handles and discord widget ID to the organizer query The changes were made to the `organizer.query.gql` file in the `libs/gql/admin/api/src/queries/organizer` directory. The following additions were made to the query: - Added `twitterHandle` field - Added `instagramHandle` field - Added `tiktokHandle` field - Added `facebookHandle` field - Added `youtubeHandle` field - Added `telegramHandle` field - Added `discordWidgetId` field These additions allow retrieving the social media handles and discord widget ID for an organizer. 🔀 chore(Text.tsx): update text variant styles for h1 and h2 to improve readability and consistency across different screen sizes 🔧 fix(OrganizerFollowButtonClient.tsx): update import path for Organizer type to '@features/organizer/types' to match the correct location 🔧 fix(OrganizerHero.tsx): add missing imports for CardHeader and SocialMediaButtons components ✨ feat(OrganizerHero.tsx): add support for displaying social media buttons based on provided handles for various platforms ✨ feat(OrganizerPage.stories.tsx): create a story for the OrganizerPage component with default props ✨ feat(OrganizerPage.tsx): create OrganizerPage component to display the hero section and description of an organizer ✨ feat(OrganizerPage/examples.tsx): create example data and demo function for the OrganizerPage component 🔧 fix(OrganizerFollowButton.tsx): update type definitions to improve code readability and maintainability 🔧 fix(OrganizerFollowButtonClient.tsx): add missing flex item alignment class to improve layout 🔧 fix(OrganizerHero.tsx): update imports and remove unused code to optimize bundle size 🔧 fix(OrganizerPage.tsx): add missing import and update props to fix type errors 🔧 fix(examples.tsx): update image URLs to use valid placeholders 🔧 fix(en.json, fr.json): update helper text translations to use double quotes for consistency 🔧 fix(Avatar.tsx): add missing export statement for AvatarImage component 🔧 fix(Toggle.tsx): add new variant class for highlight style 🐛 fix(OrganizerHero.tsx): change class name from "mr-2" to "mx-2" to fix horizontal margin ✨ feat(OrganizerPage.stories.tsx): add new story for OrganizerPage with long name and social links 🔧 chore(examples.tsx): add new example for OrganizerPage with long name and social links 🐛 fix(DiscordWidget.tsx): adjust dimensions of HoverCardContent to fit the iframe properly 🔀 chore(types): add types for GetOrganizerLatestEventsQuery and OrganizerLatestEvents to improve type safety and code readability 🔀 chore(gql): add GetOrganizerLatestEvents query to fetch the latest events for an organizer based on organizerId, locale, and stage 📝 chore(OrganizerEventsSection.tsx): create OrganizerEventsSection component to display the latest events for an organizer 📝 chore(OrganizerPage.stories.tsx): update component and render properties to use OrganizerSection instead of OrganizerPage 📝 chore(examples.tsx): update OrganizerSectionDemo function to use OrganizerSection component instead of OrganizerPage 📝 chore(OrganizerSection.tsx): create OrganizerSection component to display organizer information, including description and social media buttons 🚀 feat(OrganizerEventsSection): add support for displaying latest events and a placeholder when no events are available 🐛 fix(OrganizerHero): adjust margin between avatar and text for better alignment 🚚 chore(OrganizerPage): update import statement for OrganizerEventsSection component 🚚 chore(OrganizerPage): update import statement for OrganizerLatestEvents type 🚚 chore(OrganizerPage): update import statement for Organizer type 🚚 chore(NoPassPlaceholder): update import statement for Image component 🌐 i18n(en.json): add translation for "noEvents" in OrganizerEventsSection 🌐 i18n(fr.json): add translation for "noEvents" in OrganizerEventsSection 🔍 chore(organizer.query.gql): add limit parameter to GetOrganizerLatestEvents query to retrieve only 3 events 🔍 chore(organizer.query.gql): add slug field to event selection in GetOrganizerLatestEvents query for better data retrieval 🔧 chore(package.json): update Storybook dependencies to their latest versions 🔧 chore(package.json): update msw-storybook-addon to version 1.10.0 🔧 chore(package.json): update storybook-dark-mode to version 3.0.3 🔧 chore(storybook.nextjs.main.base.ts): remove 'storybook-addon-swc' from mainConfig addons 🔧 chore(storybook.nextjs.main.base.ts): add 'builder' option with useSWC set to true in mainConfig framework options 🐛 fix(OrganizerEventsSection.tsx): fix the layout of the NoEventsPlaceholder component to properly display the info alert and remove unnecessary classes ✨ feat(OrganizerEventsSection.tsx): add support for displaying the latest events in the OrganizerEventsSection component 🎉 feat(OrganizerLatestEventCard.tsx): create a new component to display the latest event card in the OrganizerEventsSection component 🐛 fix(OrganizerHero.tsx): adjust the height of the OrganizerHero component to improve the layout on different screen sizes 🐛 fix(OrganizerPage.stories.tsx): rename the story WithLongNameAndSocialLinks to WithLongNameSocialLinksAndEvents and add new stories for Dark and Mobile viewports 🎨 chore(OrganizerPage/examples.tsx): add example data for latest events and update the OrganizerSectionDemo and OrganizerSectionWithEventsDemo functions to include the OrganizerEventsSection component 🐛 fix(OrganizerSection.tsx): remove bottom margin from the CardContent component in the OrganizerSection component to improve the layout 🎨 chore(types/src/index.ts): export the Organizer and OrganizerLatestEvents types from the index file 🎨 style(globals.css): add new custom CSS variable --image to define image color 🔧 chore(tailwind.config.base.js): add new color definition for --image CSS variable in tailwind configuration 🐛 fix(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics ✨ feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🐛 fix(OrganizerHero.tsx): add missing imports for AvatarSkeleton, ButtonSkeleton, and TextSkeleton ✨ feat(OrganizerHero.tsx): add OrganizerHeroSkeleton component to display a loading skeleton for OrganizerHero 🐛 fix(OrganizerPage.stories.tsx): change render prop from OrganizerSectionDemo to OrganizerPageDemo ✨ feat(OrganizerPage.stories.tsx): add Skeleton story to display a loading skeleton for OrganizerPage 🐛 fix(OrganizerPage/examples.tsx): change function name from OrganizerSectionDemo to OrganizerPageDemo ✨ feat(OrganizerPage/examples.tsx): add OrganizerPageSkeleton component to display a loading skeleton for OrganizerPage 🐛 fix(OrganizerSection.tsx): add missing imports for OrganizerHeroSkeleton and SocialMediaButtonsSkeleton ✨ feat(OrganizerSection.tsx): add OrganizerSectionSkeleton component to display a loading skeleton for OrganizerSection 🐛 fix(SocialMediaButtons.tsx): add missing import for ButtonSkeleton ✨ feat(SocialMediaButtons.tsx): add SocialMediaButtonsSkeleton component to display a loading skeleton for SocialMediaButtons 🐛 fix(AspectRatio.tsx): change class name in aspectRatioSkeletonVariantsCva to 'bg-image' for consistency ✨ feat(Button.tsx): add ButtonSkeleton component to display a loading skeleton for Button ✨ feat(Toggle.tsx): change highlight variant to use accent-foreground text color for better visibility 🐛 fix(package.json): add missing playwright dependency for testing 🔨 refactor(OrganizerEventsSection.tsx): add TextSkeleton and OrganizerLatestEventCardSkeleton components to improve loading state UI 🔨 refactor(OrganizerLatestEventCard.tsx): add AspectRatioSkeleton and TextSkeleton components to improve loading state UI 🔨 refactor(OrganizerPage.stories.tsx): add SkeletonMobile story to showcase mobile view of OrganizerPageSkeleton 🔨 refactor(examples.tsx): add OrganizerEventsSectionSkeleton component to OrganizerPageSkeleton to improve loading state UI 📦 chore(organizer): add new files and export components for organizer feature 🔀 merge(organizer): update OrganizerEventsSection component to use latestEvents prop instead of events prop 🔀 merge(organizer): update OrganizerEventsSection component to use latestEvents prop instead of events prop 🔀 merge(organizer): update OrganizerEventsSection component to use latestEvents prop instead of events prop 🔀 merge(organizer): update OrganizerEventsSection component to use latestEvents prop instead of events prop change path for organzer libs to avoid build issues 📝 chore(organizer.query.gql): add new query GetOrganizerFromSlug to retrieve organizer by slug and stage 🔥 refactor(organizer.query.gql): remove unused variables from GetOrganizerLatestEvents query 📦 chore(eslint): add eslint configuration for organizer-api library 📦 chore(swc): add swc configuration for organizer-api library 📦 chore(organizer-api): add initial files and configuration for organizer-api library 📦 chore(jest): add jest configuration for organizer-api library 📦 chore(organizer-api): add package.json for organizer-api library 📦 chore(organizer-api): add project.json for organizer-api library 📦 chore(organizer-api): add tsconfig.json for organizer-api library 📦 chore(organizer-api): add tsconfig.lib.json for organizer-api library 📦 chore(organizer-api): add tsconfig.spec.json for organizer-api library 📦 chore(organizer-api): add README.md for organizer-api library 📦 chore(organizer-api): add jest.config.ts for organizer-api library 📦 chore(organizer-api): add organizer-related functions ✨ feat(getOrganizer): add function to fetch organizer data based on slug and locale ✨ feat(getOrganizerFromSlug): add function to fetch organizer data based on slug ✨ feat(getOrganizerLatestEvents): add function to fetch latest events for an organizer based on slug and locale 🔧 chore(organizer): add latest events page and refactor organizer page 📝 refactor(organizer-types): change export to use type instead of export 🔨 refactor(organizer-ui): comment out unused translation code in OrganizerHero component 🔥 refactor(.swcrc): remove unnecessary .swcrc file from the project 🔧 chore(project.json): update build target executor to use @nx/rollup:rollup for better bundling 🔧 chore(tsconfig.json): update compiler options for stricter TypeScript configuration 🔧 chore(tsconfig.lib.json): update compiler options and file includes/excludes for better build and linting 🐛 fix(YouTubeWidget.tsx): fix type declaration for profileInfo variable to any to avoid TypeScript error 🔧 chore(YouTubeWidget.tsx): update AvatarImage and AvatarFallback props to use optional chaining to avoid potential null errors 🔧 chore(eslintrc.json): update eslint configuration for organizer-api to match project-wide configuration 🔧 chore(eslintrc.json): remove unused rules and file patterns from organizer-api eslint configuration * 🔧 chore(ci.yml): remove unused code and parallel-commands-on-agents step in CI workflow 🚀 feat(Command.stories.tsx): add new CommandComboboxWithText and CommandComboboxWithSelection stories 🔧 chore(nx.json): update token and teamId values for Nx Cloud configuration ⬆️ chore(package.json): update @thirdweb-dev/sdk dependency to version 4.0.18 and next-auth dependency to version 4.24.5 * prettier fix * 🚀 feat(SocialMediaButton.stories.tsx): add sleep function import to fix timing issue in Youtube story 🔧 fix(followToggleOrganizer.integration.test.ts): import userSdk from correct location to fix test failure 🔧 fix(isFollowingOrganizer.integration.test.ts): delete tables before applying seeds to ensure clean state for test * 🐛 fix(ErrorClient.tsx): fix height of CardContent to be full height to prevent content overflow 🔧 chore(package.json): update affected:parallel-ci script to run tests in series instead of parallel to avoid race conditions
* fix: name of file * 🔺 chore(package.json): update next-intl dependency from version 3.0.3 to 3.2.0 to get the latest features and bug fixes * 🔀 chore(cart-types): update import path for GetEventWithPassesQuery to use admin types instead of anonymous types 🔀 chore(cart-types): update EventPassCart interface to include optional created_at property 🔀 chore(event.query.gql): add timeBeforeDelete field to GetEventWithPasses query 🗑️ chore(event.query.gql): remove unused anonymous GetEventWithPasses query file * 🐛 fix(EventPassList.tsx): add support for 'timeRemainingDeletion' prop to pass it down to EventPasses component 🐛 fix(EventPasses/examples.tsx): update eventPassesCart and eventCartProps to include 'timeBeforeDelete' property for each event pass 🐛 fix(EventPassesCart.tsx): pass 'timeRemainingDeletion' prop to EventPassList component based on the presence of userPassPendingOrders * 📦 chore(EventPassTimeBeforeDeletion): add EventPassTimeBeforeDeletion component 📦 chore(EventPassTimeBeforeDeletionClient): add EventPassTimeBeforeDeletionClient component 🔨 refactor(EventPasses): remove unused import and refactor layout styles 🔨 refactor(EventPasses): move EventPassTimeBeforeDeletion component to AccordionContentWrapper 🔨 refactor(EventPasses): pass timeRemainingDeletion prop to AccordionContentWrapper 🔨 refactor(EventPasses): remove unused imports and functions 🌐 chore(i18n): add translation for time-before-deletion in en.json and fr.json 📦 chore(icons): add Timer icon component * 🔀 chore(nextIntlServer.mock.js): update getRequestConfig function to return messages and now date for better mocking in storybook 🔀 chore(nextIntlServer.mock.js): update getTranslations function to use Promise.resolve for better mocking in storybook * 🔺 chore(package.json): update next-intl dependency from version 3.2.0 to 3.2.2 to get the latest bug fixes and improvements * 🔧 fix(EventPassTimeBeforeDeletionClient.tsx): remove unused import 'useTranslations' to improve code cleanliness and performance 🔧 fix(EventPasses.stories.tsx): remove unused import 'expect' to improve code cleanliness and performance 🔧 fix(EventPasses.stories.tsx): remove unused import 'userEvent' to improve code cleanliness and performance 🔧 fix(EventPasses.stories.tsx): change the name of the 'Opened' story to 'OpenedWithNoTimeDeletion' to better reflect its purpose 🔧 fix(EventPasses.stories.tsx): change the name of the 'OpenedWithNoTimeDeletion' story to 'OpenedWithTimeRemainingDeletion' to better reflect its purpose 🔧 fix(EventPasses.stories.tsx): change the name of the 'OpenedWithTimeRemainingDeletion' story to 'OpenedWithNoActions' to better reflect its purpose 🔧 fix(EventPasses.stories.tsx): change the name of the 'OpenedWithNoActions' story to 'OpenedMobile' to better reflect its purpose 🔧 fix(EventPasses.stories.tsx): change the name of the 'Skeleton' story to 'SkeletonMobile' to better reflect its purpose 🔧 fix(examples.tsx): update the 'created_at' values of 'passPending1' and 'passPending2' to reflect correct dates 🔧 fix(getTimeBeforeDeletion.tsx): remove unused code and file to improve code cleanliness and performance 🔧 fix(index.ts): remove unused imports to improve code cleanliness and performance 🔧 fix(useNow.ts): add 'use client' pragma to fix linting error 🔧 fix(useNow.ts): add conditional logic to return a fixed date when running in Storybook environment 🔧 fix(index.ts): add 'useNow' export to expose the 'useNow' function from 'next-intl' * 🔧 chore(chromatic-back-office.yml): enable push trigger for staging branch and specific paths to improve workflow efficiency 🔧 chore(chromatic-ui.yml): enable push trigger for staging branch and specific paths to improve workflow efficiency 🔧 chore(chromatic-web.yml): enable push trigger for staging branch and specific paths to improve workflow efficiency * 📦 chore(build-and-e2e-web-tests.yml): fix typo in workflow name for better readability and consistency --------- Co-authored-by: sebpalluel <[email protected]>
The following changes were made: - Removed unused import of `useNow` from `next-intl` - Removed unused function `useNow` - Removed unused import of `notFound` from `next/navigation`
…on call for better readability 🔧 fix(event.query.gql): add timeBeforeDelete field to GetEventWithPasses query in organizer and user API to retrieve the time before an event pass is deleted
… code readability and consistency 🚀 chore(package.json): update typescript version to ~5.3.0 for compatibility with other dependencies
…eadability and maintainability ✨ feat(mockServiceWorker.js): add support for handling KEEPALIVE_REQUEST and INTEGRITY_CHECK_REQUEST messages to improve communication with clients 🔧 chore(mockServiceWorker.js): refactor handleRequest function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor resolveMainClient function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor getResponse function to improve code organization and readability
* 📝 chore(organizer): add new files for latest events page, loading, and layout 🔥 chore(organizer): remove unused purchase layout file * 🚀 feat(purchase/loading.tsx): add AppContainer component to PurchaseLoading component to wrap PassPurchaseSheetSkeleton component and improve layout structure 🚀 feat(purchase/page.tsx): add AppContainer component to PurchaseSectionContent component to wrap PassPurchaseCard component and improve layout structure 🚀 feat(PassFooterSheet.tsx): remove SheetOverlay component and refactor SheetFooter component to include a div with a gradient background to create a visual separation between the content and the footer 🚀 feat(PassPurchaseSheetContainer/examples.tsx): add Event component and pass eventProps to display event information in PassPurchaseSheetContainerExample component 🚀 feat(ui/components): remove SheetOverlay component and refactor SheetFooter component to include a div with a gradient background to create a visual separation between the content and the footer 🚀 feat(sheet/examples.tsx): remove SheetOverlay component and refactor SheetFooter component to include a div with a gradient background to create a visual separation between the content and the footer
* add: script sitemap generaiton * add: sitemap generation with nx run web:postbuild * rollback useless query * fix: dependencies for dev * remove wrong lines in pnpm lockl * fix comments on PR 163 * pnpm lock * restore pnpm lock yaml * pnpm install to generate lock * change script to remove every @ route to handle latest and purchase * 🔀 chore(build-and-e2e-web-tests.yml): update build and check step to use staging branch as base for affected check 🐛 fix(build-and-e2e-web-tests.yml): fix affected command to include --base=staging flag to correctly check for affected builds --------- Co-authored-by: sebpalluel <[email protected]>
…ionality (#202) * 📝 chore(public_eventPassNftContract.yaml): add new columns 'isAirdrop', 'isDelayedRevealed', and 'type' to the select permissions 📝 feat(public_eventPassNftContractType.yaml): add new table 'eventPassNftContractType' to store contract types 📝 chore(tables.yaml): include 'public_eventPassNftContractType.yaml' in the list of tables 📝 feat(1701796170434_eventPassNftContractType_update_eventPassNftContract/up.sql): create 'eventPassNftContractType' table and add new columns to 'eventPassNftContract' table 📝 fix(1701796170434_eventPassNftContractType_update_eventPassNftContract/down.sql): add down migration for creating 'eventPassNftContractType' table and adding new columns to 'eventPassNftContract' table 📝 chore(4_eventPassNftContract.sql): insert new records with 'normal' type into 'eventPassNftContract' table 🔧 chore(eventPassNftContractType_update_eventPassNftContract): add new columns to eventPassNftContract table 📝 docs(eventPassNftContractType_update_eventPassNftContract): update eventPassNftContract table to include new columns for improved functionality 🔧 chore(build-and-e2e-web-tests.yml): set fetch-depth to 0 to improve performance and ensure full repository history is available for checkout 🔧 chore(ci.yml): refactor CI workflow to simplify and improve readability, remove unused environment variables, and update job names and steps for clarity and consistency * 🔧 chore(build-and-e2e-web-tests.yml): remove unnecessary base flag from nx affected command to improve build check accuracy 🔧 chore(ci.yml): simplify nx affected command for running integration tests 🔧 chore(nx.json): change default base branch from "main" to "staging" for affected commands to use staging branch as the base * 🔧 chore(workflows): update checkout step in build-and-e2e-web-tests.yml and ci.yml workflows 🔧 chore(workflows): update checkout step in build-and-e2e-web-tests.yml and ci.yml workflows to fetch the full commit history for pull requests and the default branch * 🔧 chore(workflows): add step to derive appropriate SHAs for base and head for nx affected commands 🔧 chore(workflows): update main-branch-name parameter to "staging" for nx affected commands
…layedrevealed (#203) * eventPassNftContract model update + creation of EventPassDelayedRevealed on Hygraph 🔧 chore(event.query.gql): add passOptions field to GetEventWithPassesOrganizer query to retrieve pass options information 🔧 chore(eventPass.query.gql): add GetEventPassDelayedRevealedFromEventPassIdOrganizer query to retrieve delayed revealed event pass information 🚀 feat(events-api): add new function getEventPassDelayedRevealedFromEventPassIdOrganizer 🔀 chore(events-types): add type definitions for GetEventPassDelayedRevealedFromEventPassIdOrganizerQuery and EventPassDelayedRevealed The commit adds a new function `getEventPassDelayedRevealedFromEventPassIdOrganizer` to the `events-api` library. This function retrieves the delayed revealed status of an event pass based on the event pass ID and locale. Additionally, the commit includes type definitions for the `GetEventPassDelayedRevealedFromEventPassIdOrganizerQuery` and `EventPassDelayedRevealed` types in the `events-types` library. These types are used to ensure type safety when working with the GraphQL API response. 🔧 chore(eventPass.query.gql): update query name to improve clarity and remove unnecessary words 🔧 chore(eventPassNftContract.query.gql): update query name to improve clarity and remove unnecessary words 🔧 chore(eventParameters.query.gql): update query names to improve clarity and remove unnecessary words 🐛 fix(getEventPassDelayedRevealedFromEventPassId.ts): fix import path for adminSdk.GetEventPassDelayedRevealedFromEventPassId ✨ feat(getEventPassDelayedRevealedFromEventPassId.ts): add function to check if event pass is delayed revealed before fetching the data ✅ test(getEventPassDelayedRevealedFromEventPassId.spec.ts): add unit tests for isDelayedRevealed function and getEventPassDelayedRevealedFromEventPassId function 🔀 chore(index.ts): update import and type references to match changes in the GraphQL schema 🔀 chore(index.ts): update import and type references to match changes in the GraphQL schema 🔀 refactor(index.ts): reformat the type definition for EventPassDelayedRevealed to improve readability 🔧 chore(chromatic-back-office.yml): refactor GitHub Actions workflow to improve code readability and maintainability 🔧 chore(chromatic-ui.yml): refactor GitHub Actions workflow to improve code readability and maintainability 🔧 chore(chromatic-web.yml): refactor GitHub Actions workflow to improve code readability and maintainability * 🔧 chore(staging-apps.yml): remove push event trigger for staging branch to prevent accidental deployments 📝 docs(vercel-build.sh): add script to skip build on Vercel for main and staging branches, and pull requests * 🔧 chore(vercel.json): add ignoreCommand to prevent deployments on non-main and non-staging branches and pull requests 🔥 chore(vercel-build.sh): remove vercel-build.sh script as it is no longer needed for deployment configuration
…iables for local and CI environments 🔒 chore(next.config.js): remove unused SENTRY_DSN variable and add null check for SENTRY_AUTH_TOKEN to improve code readability ✨ feat(next.config.js): add support for setting NEXT_PORT, NEXTAUTH_URL, and NEXTAUTH_SECRET environment variables based on the environment to improve configurability and flexibility
* add: e2e basic tests for back-office and ci * fix: jest.config.ts to ignore e2e directory in back-office * fix: PR comments, i18n and Role_Enum in loadAccountAndRole and switch to english with no exact
…nin and siwe persistence (#206) * ⬆️ chore(package.json): update dependencies - Update `@safe-global/api-kit` from `1.3.1` to `2.0.0` - Update `@safe-global/protocol-kit` from `1.3.0` to `2.0.0` - Update `@web3auth/base` from `7.0.4` to `7.2.0` - Update `@web3auth/metamask-adapter` from `7.0.4` to `7.2.0` - Update `@web3auth/modal` from `7.0.4` to `7.2.0` - Update `@web3auth/openlogin-adapter` from `7.0.4` to `7.2.0` - Update `ethers` from `5.7.2` to `6.9.0` This update includes bug fixes, performance improvements, and new features. 🔀 chore(package.json): update "@bytescale/upload-widget-react" dependency to version 4.13.0 🔥 chore(package.json): remove "@ethersproject/providers" dependency as it is no longer needed 🔧 chore(.env.local): update NEXT_PUBLIC_CHAIN and CHAIN values to use a different chain ID for Eth Goerli 🔧 chore(.env.local): update NEXT_PUBLIC_ALCHEMY_API_KEY and ALCHEMY_API_KEY values to use a different Alchemy API key 🔧 chore(AuthKitBasePack.ts): update method signature of getSafes to accept optional txServiceUrl parameter 🔧 chore(AuthKitBasePack.ts): update method signature of signIn and signOut to accept optional options parameter 🔧 chore(AuthKitBasePack.ts): update method signature of getProvider to return Eip1193Provider instead of ethers.providers.ExternalProvider 🔧 chore(AuthKitBasePack.ts): update method signature of getAddress to throw an error if provider is not defined 🔧 chore(AuthKitBasePack.ts): update method signature of getChainId to throw an error if provider is not defined 🔧 chore(AuthKitBasePack.ts): update #getApiKit method to use BrowserProvider instead of Web3Provider and remove ethAdapter 🔧 chore(Web3AuthModalPack.test.ts): remove unused import and commented code 🔧 chore(Web3AuthModalPack.ts): update #provider type to Eip1193Provider and remove unused import 🔧 chore(Web3AuthModalPack.ts): update getProvider method to return Eip1193Provider instead of ExternalProvider 🔧 chore(Web3AuthModalPack.ts): update get isAuthenticated method to check if web3Auth is connected 🔧 chore(window.ts): update ethereum type to Eip1193Provider 🔧 chore(index.ts): update constructor of NftCollection to accept Signer instead of ExternalProvider 🔧 chore(roles-admin.ts): update provider initialization to use BrowserProvider instead of Web3Provider 🔧 fix(safeAuthSetup.tsx): import isDev function from @shared/client to fix compilation error 🔧 fix(safeAuthSetup.tsx): change ethers.providers.Web3Provider to ethers.BrowserProvider to fix compilation error 🔧 fix(safeAuthSetup.tsx): change safeProvider type from ExternalProvider to Eip1193Provider to fix type error 🔧 fix(safeAuthSetup.tsx): change web3Provider.getSigner(0) to web3Provider.getSigner() to fix compilation error 🔧 fix(safeAuthSetup.tsx): change console.warn to console.error in catch block to improve error logging 🔧 fix(safeAuthSetup.tsx): add console.log to indicate user not connected to web3auth 🔧 fix(safeAuthSetup.tsx): add console.log to indicate web3auth connected but logout due to error in siwe ⬆️ chore(package.json): update "@thirdweb-dev/chains" to version 0.1.60 and "@thirdweb-dev/sdk" to version 4.0.19 to incorporate the latest changes and bug fixes ⬇️ chore(package.json): downgrade "ethers" to version 5.7.2 and add "ethers6" as a dependency to maintain compatibility with other packages 🐛 fix(mockServiceWorker.js): remove unnecessary semicolons to improve code readability and consistency ✨ feat(mockServiceWorker.js): add support for handling KEEPALIVE_REQUEST and INTEGRITY_CHECK_REQUEST messages to improve communication with clients 🔧 chore(mockServiceWorker.js): refactor handleRequest function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor resolveMainClient function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor getResponse function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor sendToClient function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor sleep function to improve code organization and readability 🔧 chore(mockServiceWorker.js): refactor respondWithMock function to improve code organization and readability 🔧 fix(AuthKitBasePack.ts): update import statement for ethers library to use 'ethers6' package instead of 'ethers' to resolve compatibility issue 🔧 fix(Web3AuthModalPack.ts): update import statement for ethers library to use 'ethers6' package instead of 'ethers' to resolve compatibility issue 🔧 fix(window.ts): update import statement for ethers library to use 'ethers6' package instead of 'ethers' to resolve compatibility issue 🔧 fix(safeAuthSetup.tsx): update ethers import to use ethers6 package instead of ethers to resolve compatibility issue 🐛 fix(index.ts): convert tokenIdInBigNumber to string before converting it to BigInt to prevent potential loss of precision 🔧 fix(cart): wrap EventPassListSkeleton component in AppContainer and AppContainerOverflow components for consistent styling and layout across different cart pages 🔧 fix(layout.tsx): remove unnecessary optional numMintingOrders prop from PassLayoutProps interface 🔧 fix(layout.tsx): remove unnecessary optional numMintingOrders prop from PassLayoutContentProps interface 🔧 fix(layout.tsx): remove unnecessary async keyword from PassLayout function 🔧 fix(layout.tsx): remove unnecessary declaration of userPassMintingOrders variable in PassLayout function 🔧 fix(layout.tsx): remove unnecessary await keyword when calling getEventPassOrdersIsMinting function in PassLayout function 🔧 fix(layout.tsx): remove unnecessary if condition for checking userPassMintingOrders length in PassLayout function 🔧 fix(layout.tsx): remove unnecessary reduce function for calculating numMintingOrders in PassLayout function 🔧 fix(layout.tsx): remove unnecessary spread operator when passing numMintingOrders prop to PassLayoutContent component 🔧 chore(vercel.json): update ignoreCommand in back-office and web vercel.json files to improve deployment conditions 🐛 fix(mockServiceWorker.js): add missing semicolons and improve code readability ✨ feat(mockServiceWorker.js): add support for responding with mock data and handling network errors in the mock service worker 🔧 chore(.env.local): remove NX_CLOUD_AUTH_TOKEN to avoid exposing sensitive information 🔧 chore(nx.json): add "dependsOn" property to the "test" task to ensure it runs after the "build" task 🔧 chore(nx.json): remove nxCloudAccessToken value to avoid exposing sensitive information * 🔧 chore(ci.yml): update affected commands to run lint and test tasks sequentially for better performance 🔧 chore(package.json): remove affected:parallel-ci script as it is no longer needed after updating CI workflow * 🔧 chore(ci.yml): update CI workflow to run commands in parallel for faster execution and use 'wait' command to ensure completion before proceeding 🔧 chore(vercel.json): update build command to include lint and test commands before building the app for better code quality assurance * 🔧 fix(getMyRoles.integration.test.ts): update expected number of roles for Alpha User to three instead of two to reflect the correct state 🔧 fix(gql/index.ts): update levelName value for kyc object to AdvancedKycLevel instead of BasicKycLevel to reflect the correct level name * 🔧 chore(vercel.json): update buildCommand to run lint, test, and build commands concurrently for back-office and web apps The buildCommand in the vercel.json file for both the back-office and web apps has been updated to run the lint, test, and build commands concurrently using the nx run-many command. This change improves the build process by running these commands in parallel, reducing the overall build time. * 🔧 chore(vercel.json): update build commands for back-office and web apps to improve build process efficiency 🔧 chore(package.json): add linting, testing, and build scripts for all apps to streamline development process * 🔧 chore(ci.yml): remove 'lint' and 'test' checks from the docker tests container setup to improve performance and reduce unnecessary checks * remove auto install peer
…requests and exit codes
…uests and exit with 1 if conditions are met
* 🔺 chore(package.json): update next package version from 14.0.3 to 14.0.4 to get the latest bug fixes and improvements * 🚀 feat(ui/components): add PopoverInfo component 🚀 feat(ui/components): add PopoverInfo component to export list 🚀 feat(ui/components): add PopoverInfo stories 🚀 feat(ui/components): add PopoverInfo component implementation 🐛 fix(ui/components): adjust Sheet padding bottom to improve layout 🚀 feat(ui/icons): add InfoAvailable and InfoSealed icons * ✨ feat(EventPassTypeBadge): add EventPassTypeBadge component to display different types of event pass badges 🔧 chore(EventPassTypeBadge.stories): create stories for EventPassTypeBadge component to showcase different types of badges The `EventPassTypeBadge` component is a new component that displays different types of event pass badges based on the `type` prop. It uses the `Badge` component from the `@ui/components` library and the `InfoAvailable` and `InfoSealed` icons from the `@ui/icons` library. The `EventPassTypeBadge` component accepts the following props: - `type`: The type of the event pass badge. It is of type `EventPassNftContractType_Enum` from the `@gql/shared/types` library. - `className`: Additional CSS classes to be applied to the badge. The component uses the `useTranslations` hook from the `next-intl` library to translate the badge text and description based on the `type` prop. The `EventPassTypeBadge` component is used in the `AllTypesComponent` component to render all types of event pass badges. The `AllTypes` and `AllTypesWithDarkMode` stories showcase the different types of badges. The `EventPassTypeBadgeStory` is a meta object for Storybook that configures the title, component, and argTypes for the `EventPassTypeBadge` component. The `DefaultEventPassTypeBadge` story sets the default `type` prop to `EventPassNftContractType_Enum.Normal`. The `EventPassTypeBadge` component and its stories are located in the `libs/features/back-office/events/src/lib/atoms/EventPassTypeBadge` directory. * 🐛 fix(EventPassTypeBadge.stories.tsx): import missing dependencies to fix compilation error 🌐 localize(EventPassTypeBadge): add translations for event pass type badges and descriptions in English and French 🐛 fix(PopoverInfo.tsx): fix typo in className prop * 🎨 style(globals.css): update popover color values to improve visual consistency 🚀 chore(globals.css): refactor popover color values to improve maintainability 🔨 refactor(Popover.tsx): reorder imports and fix import statement for React to improve code organization and readability * 🎨 style(globals.css): update foreground color values to improve visual consistency and readability * 🐛 fix(Badge.tsx): set default value for size prop to 'default' to prevent undefined error 🐛 fix(Badge.tsx): remove unnecessary margin class when iconOnly is false ✨ feat(Badge.tsx): add support for dynamic margin right value based on size prop 🐛 fix(PopoverInfo.tsx): remove unnecessary dark mode class from iconSizeVariantsCva ✨ feat(PopoverInfo.tsx): add support for different icon sizes in different breakpoints 🐛 fix(variants.tsx): adjust default icon size to match the desired size 🐛 fix(variants.tsx): adjust default icon margin left and right to match the desired size 🐛 fix(variants.tsx): adjust default icon margin and padding to match the desired size * 📦 chore(storybook): add mock files for next/cache and @opentelemetry/api to improve testing and avoid webpack issues * 🔥 refactor(getEventPassNftFiles.tsx): remove unused file and function ✨ feat(getEventPassType.tsx): add function to get event pass type based on event pass object 🔨 refactor(EventPassNftFilesTable.tsx): modify file paths in nftFiles array to only include the file name * changed name of lib from @next/cache to @next/redis for clarity * 🔄 chore(organizer-types): update target to es2022 in .swcrc file for better compatibility with modern JavaScript features 🆕 feat(next/cache): add new package next/cache with initial files and configurations 🆕 feat(next/cache): add README.md file with basic information about the library 🆕 feat(next/cache): add jest.config.ts file for Jest configuration 🆕 feat(next/cache): add package.json file with initial dependencies and main entry point 🆕 feat(next/cache): add project.json file with project configuration for Nx 🆕 feat(next/cache): add index.ts file with initial export 🆕 feat(next/cache): add tsconfig.json file with compiler options for the library 🆕 feat(next/cache): add tsconfig.lib.json file with extended compiler options for library build 🆕 feat(next/cache): add tsconfig.spec.json file with extended compiler options for running tests 🔄 chore(next/i18n-ui): update target to es2022 in .swcrc file for better compatibility with modern JavaScript features 🔄 chore(tsconfig.base): add @next/redis to the list of paths for better module resolution * 🚀 feat(cacheWithDynamicKeys): add cacheWithDynamicKeys function to enable caching of functions with dynamic keys This commit adds a new file `cacheWithDynamicKeys.ts` which contains the `cacheWithDynamicKeys` function. This function allows caching of functions with dynamic keys. The `cacheWithDynamicKeys` function takes two arguments: - `cb`: the original function that needs to be cached - `keyGenerator`: a function that generates the cache key based on the arguments passed to the original function The `cacheWithDynamicKeys` function returns a new function that wraps the original function and adds caching functionality. When the wrapped function is called, it generates the cache key using the `keyGenerator` function and passes it to the `unstable_cache` function from the `next/cache` module along with the original function and the arguments. The result of the `unstable_cache` function is then returned. This commit also includes a test file `cacheWithDynamicKeys.spec.ts` which contains tests for the `cacheWithDynamicKeys` function. The tests cover the following scenarios: - Generating the cache key dynamically based on the arguments passed - Passing the cache key to the `unstable_cache` function - Calling the original function with the arguments passed - Throwing an error when the original function throws an error * 🔧 refactor(features-pass-cache.ts): replace Cache class with NextRedis class for improved caching functionality 🔧 refactor(features-pass-cache.ts): replace userSdk import with getUnauthenticatedUserCookie import for improved authentication handling * 🚀 feat(events-api): add getEventPassNftFiles function to retrieve NFT files for event passes 📦 feat(getEventPassNftFiles.tsx): implement getEventPassNftFiles function to fetch NFT files for event passes 🔒 feat(getEventPassNftFiles.tsx): add caching to getEventPassNftFiles function for improved performance and reduced API calls * 🔧 fix(events-types): remove unused import and update type definition to improve code cleanliness and maintainability 🔧 fix(events-types): update type definition for EventPassDelayedRevealed to match changes in schema 🔧 fix(event.query.gql): remove unused fields from GetEventWithPassesOrganizer query and update eventPassDelayedRevealed field to match changes in schema * 🐛 fix(EventPassCardFooter.tsx): fix missing import for getEventPassNftFiles function ✨ feat(EventPassCardFooter.tsx): add support for fetching event pass NFT files and logging them for debugging purposes * 🐛 fix(EventPassCard.tsx): fix import statements and type usage to resolve compilation errors ✨ feat(EventPassCard.tsx): add support for different types of event passes and display corresponding badge 🆕 feat(EventPassCardContentDelayedReveal.tsx): add component for delayed reveal event pass content 🆕 feat(EventPassCardContentNormal.tsx): add component for normal event pass content 🌐 update(fr.json): update French translations for event pass types and descriptions * 🐛 fix(getEventPassNftFiles.tsx): fix import statement for cacheWithDynamicKeys from @next/cache ✨ feat(EventPassCardFooter.tsx): add support for dynamic event pass deployment button based on event pass pricing and number of uploaded files 📝 chore(en.json): add translation for "num-files-does-not-match" message in EventPassCardFooter 📝 chore(fr.json): add translation for "num-files-does-not-match" message in EventPassCardFooter * 🔥 refactor(nx.json): remove unnecessary "dependsOn" property from the "test" task to simplify configuration * 🔧 chore(.eslintrc.json): clean up formatting and remove unnecessary newlines and spaces 🔧 chore(index.ts): fix import formatting to use consistent spacing * 🔧 chore(globalSetupHasura.ts): increase the number of retries from 3 to 5 to improve test reliability * 🔧 chore(globalSetupHasura.ts): increase the number of retries from 5 to 20 to improve test reliability * 🐛 fix(vercel.json): fix ignoreCommand logic to correctly allow or block deployments based on the git commit ref * 🔧 chore(vercel.json): remove unnecessary flags from buildCommand in back-office and web apps The `--aggregate-output` and `--parallel` flags were removed from the `buildCommand` in the `vercel.json` files of the back-office and web apps. These flags were unnecessary and were causing issues during the build process. * 🔧 chore(vercel.json): update buildCommand in back-office and web vercel.json files to enable parallel and aggregate output for linting, testing, and building 🔧 chore(package.json): set NODE_ENV=test for test:all script to ensure tests run in the test environment
…GIT_PULL_REQUEST_ID to properly ignore pull request deployments
…f bash script for better cross-platform compatibility and readability
…cel.json files to use vercel-ignore.sh script 📝 docs(vercel-ignore.sh): add vercel-ignore.sh script to ignore builds on branches other than 'main' or 'staging' and not part of a pull request
…al (#207) * fix: new NftCollection code with more clean code, delayed reveal function and error class add: error try catch for functions add: backstop and new arguments for deploy using EventPass * add: full tests and type rework, new functions to have less code duplication * fix: reword type to make it more generic * fix: fix review comment * add: integration tests * 🔧 chore(jest.config.ts): add testPathIgnorePatterns to exclude integration tests from coverage report 🔧 chore(errors.integration.test.ts): refactor ThirdwebSDK mock implementation to improve readability and maintainability 🔧 chore(happyPath.integration.test.ts): refactor ThirdwebSDK mock implementation to improve readability and maintainability * add: integration tests and jest mock for different describe * fix: test wording for error * fix: e2e tests not finding rates files, added to asset and fix superAdmin.spec.ts to remove picky expect * fix: e2e tests not finding rates files, added rates in assets in web project.json --------- Co-authored-by: sebpalluel <[email protected]>
…eature flag (#209) * 🔧 chore(.env.local): add PostHog configuration keys for tracking and analytics 🔧 chore(env): add NEXT_PUBLIC_POSTHOG_KEY to client environment variables 🔧 chore(env): add POSTHOG_KEY and POSTHOG_PERSONAL_API_KEY to server environment variables 🔧 chore(package.json): add posthog-js and posthog-node dependencies for PostHog integration 🔧 chore(tsconfig.base.json): add @insight/server and @insight/types paths for Insight module integration 🔧 chore(types/env): add NEXT_PUBLIC_POSTHOG_KEY to client environment type declaration 🔧 chore(types/env): add POSTHOG_KEY and POSTHOG_PERSONAL_API_KEY to server environment type declaration 📦 chore(insight-server): add ESLint configuration file for insight-server library 📦 chore(insight-server): add README.md file for insight-server library 📦 chore(insight-server): add Jest configuration file for insight-server library 📦 chore(insight-server): add project.json file for insight-server library 📦 chore(insight-server): add index.ts file for insight-server library 📦 chore(insight-server): add insight-server.spec.ts file for insight-server library 📦 chore(insight-server): add tsconfig.json file for insight-server library 📦 chore(insight-server): add tsconfig.lib.json file for insight-server library 📦 chore(insight-server): add tsconfig.spec.json file for insight-server library 📦 chore(insight-types): add ESLint configuration file for insight-types library 📦 chore(insight-types): add .swcrc file for insight-types library 📦 chore(insight-types): add README.md file for insight-types library 📦 chore(insight-types): add package.json file for insight-types library 📦 chore(insight-types): add project.json file for insight-types library 📦 chore(insight-types): add index.ts file for insight-types library 📦 chore(insight-types): add tsconfig.json file for insight-types library 📦 chore(insight-types): add tsconfig.lib.json file for insight-types library 🐛 fix(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics ✨ feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🔥 refactor(layout.tsx): remove unused import of Analytics component ✨ feat(layout.tsx): add PHProvider, PostHogPageview, and VercelAnalytics components for tracking and analytics purposes 🔧 chore(next.config.js): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(next.config.js): add @insight/client to optimizePackageImports for better performance 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore(vercel.json): add rewrite rule for /ingest/:path* to redirect to https://eu.posthog.com/:path* for analytics tracking 🔧 chore( 🔀 refactor(layout.tsx): remove unnecessary imports and components from layout file ✨ feat(layout.tsx): add support for Suspense component to enable lazy loading of components 🔀 refactor(layout.tsx): remove unnecessary components from layout file 🔧 fix(insight-server.ts): change null assignment to undefined for Posthog instance to avoid potential bugs 🔥 refactor(siweProvider.ts): remove unused import of Posthog from insight/server 🔧 chore(tsconfig.base.json): clean up and optimize paths and imports in tsconfig.base.json 🔧 chore(.eslintrc.ci.json): remove import/no-named-as-default rule to improve linting configuration ✨ feat(cart/canceled/page.tsx): add support for feature flag check for KYC and use Posthog to get the flag value ✨ feat(cart/page.tsx): add support for feature flag check for KYC and use Posthog to get the flag value ✨ feat(cart/purchase/page.tsx): add support for feature flag check for KYC and use Posthog to get the flag value ✨ feat(cart/success/page.tsx): add support for feature flag check for KYC and use Posthog to get the flag value 🔧 chore(insight/client/provider.tsx): disable feature flags on first load to improve performance 🔧 chore(insight/server/insight-server.ts): change feature flags polling interval to 30 minutes to reduce server load ✨ feat(insight/server/insight-server.ts): add support for getting feature flag value for a specific user 🔧 chore(next/auth/safeAuthSetup.tsx): add console log for debugging purposes ✨ feat(next/next-auth/options/src/lib/index.ts): add support for feature flag check for KYC and use Posthog to get the flag value 🐛 fix(payment-admin.integration.test.ts): mock Posthog.getInstance() to return true for getFeatureFlag() to enable a feature flag 🐛 fix(payment-admin.spec.ts): mock Posthog.getInstance() to return true for getFeatureFlag() to enable a feature flag ✨ feat(payment-admin.ts): add support for feature flag to determine whether to use KYC or not when creating a Stripe customer ✨ feat(payment-admin.ts): add support for updating Stripe customer in the database when updating Stripe customer in Stripe API 🐛 fix(cart/page.tsx): remove unnecessary call to Posthog.getInstance().reloadFeatureFlags() to improve performance 🐛 fix(next.config.js): remove commented out code and improve comments for outputFileTracingRoot ✨ feat(isPosthogActivated.ts): add utility function to check if Posthog should be activated based on environment 🐛 fix(provider.tsx): add check for isPosthogActivated() before initializing Posthog client to improve performance and prevent unnecessary initialization 🐛 fix(insight-server.spec.ts): update mock implementation for Posthog and fix method names to match actual implementation 🐛 fix(insight-server.ts): add finalization registry to properly shutdown Posthog client and fix method names to match actual implementation ✨ feat(insight-server.ts): add method to get all flags at once and return JSON payload for feature flags if available 🐛 fix(index.spec.ts): mock Posthog.getInstance to fix failing tests due to missing mock implementation 🐛 fix(index.spec.ts): mock @insight/server to fix failing tests due to missing mock implementation 🐛 fix(index.spec.ts): mock @next/siwe/provider to fix failing tests due to missing mock implementation 🐛 fix(index.spec.ts): mock @features/account/api to fix failing tests due to missing mock implementation 🐛 fix(index.spec.ts): mock getAccount to fix failing tests due to missing mock implementation ✨ feat(index.spec.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port 🐛 fix(payment-admin.integration.test.ts): mock @insight/server to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.integration.test.ts): mock @features/kyc-api to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.integration.test.ts): mock stripe to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.spec.ts): mock stripe to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.spec.ts): mock @insight/server to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.spec.ts): mock @nft/thirdweb-admin to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.spec.ts): mock @features/kyc-api to fix failing tests due to missing mock implementation 🐛 fix(payment-admin.spec.ts): mock @gql/admin/api to fix failing tests due to missing mock implementation 🐛 fix(insight): fix path to types in tsconfig.lib.json to include types from the correct directory ✨ feat(insight): add .swcrc file to configure swc compiler options for insight server ✨ feat(insight): add package.json file for insight server ✨ feat(insight): add build target to project.json for insight server to build the server library 🐛 fix(insight-server): make instance property optional in Posthog class to allow for uninitialized instance 🐛 fix(insight-server): throw error if kyc is missing for user in Payment class 🔥 refactor(workspace): remove unused files and configurations 🗑️ Delete the following files and configurations: - `.babelrc`: Removed because it is no longer needed. - `.eslintrc.json`: Removed because it is no longer needed. - `README.md`: Removed because it is no longer needed. - `executors.json`: Removed because it is no longer needed. - `generators.json`: Removed because it is no longer needed. - `jest.config.ts`: Removed because it is no longer needed. - `package.json`: Removed because it is no longer needed. - `project.json`: Removed because it is no longer needed. - `src/generators/component/files/src/index.ts__template__`: Removed because it is no longer needed. - `src/generators/component/generator.spec.ts`: Removed because it is no longer needed. - `src/generators/component/generator.ts`: Removed because it is no longer needed. - `src/generators/component/schema.d.ts`: Removed because it is no longer needed. - `src/index.ts`: Removed because it is no longer needed. - `tsconfig.json`: Removed because it is no longer needed. - `tsconfig.lib.json`: Removed because it is no longer needed. - `tsconfig.spec.json`: Removed because it is no longer needed. These files and configurations were deleted as they were no longer being used and were cluttering the workspace. * ⬆️ chore(package.json): update @thirdweb-dev/chains to version 0.1.61 and @thirdweb-dev/sdk to version 4.0.21 for bug fixes and improvements
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.