Copy disabled (too large)
Download .txt
Showing preview only (15,341K chars total). Download the full file to get everything.
Repository: PalisadoesFoundation/talawa-admin
Branch: main
Commit: 909d2193ece3
Files: 3311
Total size: 13.6 MB
Directory structure:
gitextract_7oxmh0tn/
├── .coderabbit/
│ └── ast-grep-rules/
│ ├── assertions-must-use-waitfor.yml
│ ├── hardcoded-timeout.yml
│ ├── mutation-null-guards.yml
│ ├── no-dynamic-timestamps-in-tests.yml
│ ├── no-local-timezone-in-tests.yml
│ └── vitest-cleanup.yml
├── .coderabbit.yaml
├── .dockerignore
├── .flake8
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug-report.md
│ │ └── feature-request.md
│ ├── dependabot.yaml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── README.md
│ ├── auto-assign.yml
│ ├── auto-label.json5
│ ├── check-tsdoc.js
│ ├── codeql-codescan.yml
│ ├── config/
│ │ ├── check-pr-issue-skip-usernames.txt
│ │ ├── countline_excluded_file_list.txt
│ │ └── sensitive_files.txt
│ ├── issue-assigned.yml
│ ├── issue-unassigned.yml
│ ├── issue.yml
│ ├── pull-request-comment.yml
│ ├── pull-request-review.yml
│ ├── pull-request-target.yml
│ ├── pull-request.yml
│ ├── push-deploy-website.yml
│ ├── push.yml
│ ├── requirements.txt
│ ├── scripts/
│ │ ├── app_health_check.sh
│ │ ├── check-minio-compliance.cjs
│ │ ├── compare_translations.py
│ │ ├── css_check.py
│ │ ├── test/
│ │ │ ├── README.md
│ │ │ ├── test_css_check.py
│ │ │ └── test_translation_check.py
│ │ └── translation_check.py
│ └── stale.yml
├── .gitignore
├── .graphqlrc.yml
├── .husky/
│ ├── commit-msg
│ ├── post-merge
│ ├── pre-commit
│ └── scripts/
│ ├── check-tools.sh
│ ├── fetch-verified.sh
│ ├── precommit-node.sh
│ ├── precommit-python.sh
│ ├── staged-files.sh
│ └── venv.sh
├── .lintstagedrc.json
├── .nojekyll
├── .prettierignore
├── .prettierrc
├── .pydocstyle
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CODE_STYLE.md
├── CONTRIBUTING.md
├── DOCUMENTATION.md
├── INSTALLATION.md
├── ISSUE_GUIDELINES.md
├── LICENSE
├── PR_GUIDELINES.md
├── README.md
├── commitlint.config.js
├── config/
│ ├── babel.config.cjs
│ ├── docker/
│ │ └── setup/
│ │ ├── apache.conf
│ │ ├── nginx.conf
│ │ └── nginx.rootless.conf.template
│ ├── vite.config.spec.ts
│ └── vite.config.ts
├── cypress/
│ ├── README.md
│ ├── e2e/
│ │ ├── Accessibility/
│ │ │ └── .gitkeep
│ │ ├── AdminPortal/
│ │ │ ├── ActionItems/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── ActionItems.cy.ts
│ │ │ ├── Advertisements/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── Advertisements.cy.ts
│ │ │ ├── Dashboard/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── AdminDashboard.cy.ts
│ │ │ ├── Events/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── EventLifecycle.cy.ts
│ │ │ ├── Organizations/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── OrganizationSetup.cy.ts
│ │ │ ├── People/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── ManageMembers.cy.ts
│ │ │ ├── Posts/
│ │ │ │ ├── .gitkeep
│ │ │ │ └── Posts.cy.ts
│ │ │ ├── Tags/
│ │ │ │ └── .gitkeep
│ │ │ └── Venues/
│ │ │ └── .gitkeep
│ │ ├── Auth/
│ │ │ ├── .gitkeep
│ │ │ └── Login.cy.ts
│ │ ├── CascadingEffects/
│ │ │ └── .gitkeep
│ │ ├── E2EFlows/
│ │ │ └── .gitkeep
│ │ ├── ErrorScenarios/
│ │ │ └── .gitkeep
│ │ ├── MultiOrganization/
│ │ │ └── .gitkeep
│ │ ├── SharedComponents/
│ │ │ ├── .gitkeep
│ │ │ ├── GraphQLUtilities.cy.ts
│ │ │ └── Navigation.cy.ts
│ │ └── UserPortal/
│ │ ├── Dashboard/
│ │ │ ├── .gitkeep
│ │ │ └── UserDashboard.cy.ts
│ │ ├── EventDiscovery/
│ │ │ └── .gitkeep
│ │ ├── OrganizationDiscovery/
│ │ │ └── .gitkeep
│ │ ├── Posts/
│ │ │ └── .gitkeep
│ │ ├── Profile/
│ │ │ └── .gitkeep
│ │ ├── Transactions/
│ │ │ └── .gitkeep
│ │ └── VolunteerSignup/
│ │ └── .gitkeep
│ ├── fixtures/
│ │ ├── admin/
│ │ │ ├── actionItems.json
│ │ │ ├── advertisements.json
│ │ │ ├── events.json
│ │ │ ├── organizations.json
│ │ │ ├── people.json
│ │ │ ├── tags.json
│ │ │ └── venues.json
│ │ ├── api/
│ │ │ └── graphql/
│ │ │ ├── createOrganization.error.conflict.json
│ │ │ ├── createOrganization.success.json
│ │ │ ├── getOrganizationEvents.error.notFound.json
│ │ │ ├── getOrganizationEvents.success.json
│ │ │ ├── getOrganizationMembers.error.notFound.json
│ │ │ ├── getOrganizationMembers.success.json
│ │ │ └── organizations.success.json
│ │ ├── auth/
│ │ │ ├── credentials.json
│ │ │ └── users.json
│ │ └── user/
│ │ ├── campaigns.json
│ │ ├── donations.json
│ │ ├── posts.json
│ │ └── volunteers.json
│ ├── pageObjects/
│ │ ├── AdminPortal/
│ │ │ ├── ActionItemPage.ts
│ │ │ ├── AdminDashboard.ts
│ │ │ ├── AdminEventPage.ts
│ │ │ ├── AdvertisementPage.ts
│ │ │ ├── EventAttendancePage.ts
│ │ │ ├── LeftDrawer.ts
│ │ │ ├── MemberManagementPage.ts
│ │ │ ├── OrganizationSettingsPage.ts
│ │ │ ├── PeoplePage.ts
│ │ │ ├── PostPage.ts
│ │ │ └── VolunteerManagementPage.ts
│ │ ├── UserPortal/
│ │ │ └── UserDashboard.ts
│ │ ├── auth/
│ │ │ └── LoginPage.ts
│ │ ├── base/
│ │ │ └── BasePage.ts
│ │ └── shared/
│ │ ├── ModalActions.ts
│ │ ├── TableActions.ts
│ │ └── types.ts
│ └── support/
│ ├── commands.ts
│ ├── e2e.ts
│ └── graphql-utils.ts
├── cypress.config.ts
├── docker/
│ ├── Dockerfile.deploy
│ ├── Dockerfile.dev
│ ├── Dockerfile.prod
│ ├── Dockerfile.rootless.dev
│ ├── Dockerfile.rootless.prod
│ ├── docker-compose.deploy.yaml
│ ├── docker-compose.dev.yaml
│ ├── docker-compose.prod.yaml
│ ├── docker-compose.rootless.dev.yaml
│ └── docker-compose.rootless.prod.yaml
├── docs/
│ ├── .gitignore
│ ├── CNAME
│ ├── README.md
│ ├── docs/
│ │ ├── auto-docs/
│ │ │ ├── App/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── Constant/
│ │ │ │ ├── common/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── FILE_NAME_TEMPLATE_BACKUP_ENV.md
│ │ │ │ │ │ ├── ROUTE_USER.md
│ │ │ │ │ │ ├── ROUTE_USER_ORG.md
│ │ │ │ │ │ ├── TEST_ID_DELETE_EVENT_MODAL.md
│ │ │ │ │ │ ├── TEST_ID_PEOPLE_CARD.md
│ │ │ │ │ │ ├── TEST_ID_PEOPLE_EMAIL.md
│ │ │ │ │ │ ├── TEST_ID_PEOPLE_IMAGE.md
│ │ │ │ │ │ ├── TEST_ID_PEOPLE_NAME.md
│ │ │ │ │ │ ├── TEST_ID_PEOPLE_ROLE.md
│ │ │ │ │ │ ├── TEST_ID_PEOPLE_SNO.md
│ │ │ │ │ │ └── TEST_ID_UPDATE_EVENT_MODAL.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── DATE_FORMAT.md
│ │ │ │ │ ├── DATE_FORMAT_ISO_DATE.md
│ │ │ │ │ ├── DATE_TIME_SEPARATOR.md
│ │ │ │ │ ├── DUMMY_DATE_TIME_PREFIX.md
│ │ │ │ │ ├── IDENTIFIER_ID.md
│ │ │ │ │ ├── IDENTIFIER_USER_ID.md
│ │ │ │ │ └── MAX_NAME_LENGTH.md
│ │ │ │ ├── constant/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── deriveBackendWebsocketUrl.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── AUTH_TOKEN.md
│ │ │ │ │ ├── BACKEND_URL.md
│ │ │ │ │ ├── BACKEND_WEBSOCKET_URL.md
│ │ │ │ │ ├── REACT_APP_USE_RECAPTCHA.md
│ │ │ │ │ └── RECAPTCHA_SITE_KEY.md
│ │ │ │ └── fileUpload/
│ │ │ │ └── variables/
│ │ │ │ ├── AGENDA_ITEM_ALLOWED_MIME_TYPES.md
│ │ │ │ ├── AGENDA_ITEM_MIME_TYPE.md
│ │ │ │ ├── FILE_UPLOAD_ALLOWED_TYPES.md
│ │ │ │ └── FILE_UPLOAD_MAX_SIZE_MB.md
│ │ │ ├── GraphQl/
│ │ │ │ ├── Mutations/
│ │ │ │ │ ├── ActionItemCategoryMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_ACTION_ITEM_CATEGORY_MUTATION.md
│ │ │ │ │ │ ├── DELETE_ACTION_ITEM_CATEGORY_MUTATION.md
│ │ │ │ │ │ └── UPDATE_ACTION_ITEM_CATEGORY_MUTATION.md
│ │ │ │ │ ├── ActionItemMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── COMPLETE_ACTION_ITEM_FOR_INSTANCE.md
│ │ │ │ │ │ ├── CREATE_ACTION_ITEM_MUTATION.md
│ │ │ │ │ │ ├── DELETE_ACTION_ITEM_FOR_INSTANCE.md
│ │ │ │ │ │ ├── DELETE_ACTION_ITEM_MUTATION.md
│ │ │ │ │ │ ├── MARK_ACTION_ITEM_AS_PENDING_FOR_INSTANCE.md
│ │ │ │ │ │ ├── MARK_ACTION_ITEM_AS_PENDING_MUTATION.md
│ │ │ │ │ │ ├── UPDATE_ACTION_ITEM_FOR_INSTANCE.md
│ │ │ │ │ │ └── UPDATE_ACTION_ITEM_MUTATION.md
│ │ │ │ │ ├── AdvertisementMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── ADD_ADVERTISEMENT_MUTATION.md
│ │ │ │ │ │ ├── DELETE_ADVERTISEMENT_MUTATION.md
│ │ │ │ │ │ └── UPDATE_ADVERTISEMENT_MUTATION.md
│ │ │ │ │ ├── AgendaFolderMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_AGENDA_FOLDER_MUTATION.md
│ │ │ │ │ │ ├── DELETE_AGENDA_FOLDER_MUTATION.md
│ │ │ │ │ │ └── UPDATE_AGENDA_FOLDER_MUTATION.md
│ │ │ │ │ ├── AgendaItemMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_AGENDA_ITEM_MUTATION.md
│ │ │ │ │ │ ├── DELETE_AGENDA_ITEM_MUTATION.md
│ │ │ │ │ │ ├── UPDATE_AGENDA_ITEM_MUTATION.md
│ │ │ │ │ │ └── UPDATE_AGENDA_ITEM_SEQUENCE_MUTATION.md
│ │ │ │ │ ├── CampaignMutation/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_CAMPAIGN_MUTATION.md
│ │ │ │ │ │ └── UPDATE_CAMPAIGN_MUTATION.md
│ │ │ │ │ ├── CommentMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_COMMENT_POST.md
│ │ │ │ │ │ ├── DELETE_COMMENT.md
│ │ │ │ │ │ ├── LIKE_COMMENT.md
│ │ │ │ │ │ ├── UNLIKE_COMMENT.md
│ │ │ │ │ │ └── UPDATE_COMMENT.md
│ │ │ │ │ ├── EventAttendeeMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── ADD_EVENT_ATTENDEE.md
│ │ │ │ │ │ ├── MARK_CHECKIN.md
│ │ │ │ │ │ └── REMOVE_EVENT_ATTENDEE.md
│ │ │ │ │ ├── EventMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_EVENT_MUTATION.md
│ │ │ │ │ │ ├── DELETE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION.md
│ │ │ │ │ │ ├── DELETE_SINGLE_EVENT_INSTANCE_MUTATION.md
│ │ │ │ │ │ ├── DELETE_STANDALONE_EVENT_MUTATION.md
│ │ │ │ │ │ ├── DELETE_THIS_AND_FOLLOWING_EVENTS_MUTATION.md
│ │ │ │ │ │ ├── REGISTER_EVENT.md
│ │ │ │ │ │ ├── UPDATE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION.md
│ │ │ │ │ │ ├── UPDATE_EVENT_MUTATION.md
│ │ │ │ │ │ ├── UPDATE_SINGLE_RECURRING_EVENT_INSTANCE_MUTATION.md
│ │ │ │ │ │ └── UPDATE_THIS_AND_FOLLOWING_EVENTS_MUTATION.md
│ │ │ │ │ ├── EventVolunteerMutation/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── ADD_VOLUNTEER.md
│ │ │ │ │ │ ├── CREATE_VOLUNTEER_GROUP.md
│ │ │ │ │ │ ├── DELETE_VOLUNTEER.md
│ │ │ │ │ │ ├── DELETE_VOLUNTEER_FOR_INSTANCE.md
│ │ │ │ │ │ ├── DELETE_VOLUNTEER_GROUP.md
│ │ │ │ │ │ ├── DELETE_VOLUNTEER_GROUP_FOR_INSTANCE.md
│ │ │ │ │ │ ├── UPDATE_VOLUNTEER_GROUP.md
│ │ │ │ │ │ └── UPDATE_VOLUNTEER_MEMBERSHIP.md
│ │ │ │ │ ├── FundMutation/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_FUND_MUTATION.md
│ │ │ │ │ │ └── UPDATE_FUND_MUTATION.md
│ │ │ │ │ ├── OrganizationMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CANCEL_MEMBERSHIP_REQUEST.md
│ │ │ │ │ │ ├── CREATE_CHAT.md
│ │ │ │ │ │ ├── CREATE_CHAT_MEMBERSHIP.md
│ │ │ │ │ │ ├── CREATE_SAMPLE_ORGANIZATION_MUTATION.md
│ │ │ │ │ │ ├── DELETE_CHAT.md
│ │ │ │ │ │ ├── DELETE_CHAT_MEMBERSHIP.md
│ │ │ │ │ │ ├── DELETE_CHAT_MESSAGE.md
│ │ │ │ │ │ ├── EDIT_CHAT_MESSAGE.md
│ │ │ │ │ │ ├── JOIN_PUBLIC_ORGANIZATION.md
│ │ │ │ │ │ ├── MARK_CHAT_MESSAGES_AS_READ.md
│ │ │ │ │ │ ├── MESSAGE_SENT_TO_CHAT.md
│ │ │ │ │ │ ├── REMOVE_SAMPLE_ORGANIZATION_MUTATION.md
│ │ │ │ │ │ ├── SEND_MEMBERSHIP_REQUEST.md
│ │ │ │ │ │ ├── SEND_MESSAGE_TO_CHAT.md
│ │ │ │ │ │ ├── TOGGLE_PINNED_POST.md
│ │ │ │ │ │ ├── UPDATE_CHAT.md
│ │ │ │ │ │ ├── UPDATE_CHAT_MEMBERSHIP.md
│ │ │ │ │ │ └── UPDATE_USER_ROLE_IN_ORG_MUTATION.md
│ │ │ │ │ ├── PledgeMutation/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_PLEDGE.md
│ │ │ │ │ │ ├── DELETE_PLEDGE.md
│ │ │ │ │ │ └── UPDATE_PLEDGE.md
│ │ │ │ │ ├── PluginMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_PLUGIN_MUTATION.md
│ │ │ │ │ │ ├── DELETE_PLUGIN_MUTATION.md
│ │ │ │ │ │ ├── INSTALL_PLUGIN_MUTATION.md
│ │ │ │ │ │ ├── UPDATE_PLUGIN_MUTATION.md
│ │ │ │ │ │ └── UPLOAD_PLUGIN_ZIP_MUTATION.md
│ │ │ │ │ ├── TagMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── ADD_PEOPLE_TO_TAG.md
│ │ │ │ │ │ ├── ASSIGN_TO_TAGS.md
│ │ │ │ │ │ ├── CREATE_USER_TAG.md
│ │ │ │ │ │ ├── REMOVE_FROM_TAGS.md
│ │ │ │ │ │ ├── REMOVE_USER_TAG.md
│ │ │ │ │ │ ├── UNASSIGN_USER_TAG.md
│ │ │ │ │ │ └── UPDATE_USER_TAG.md
│ │ │ │ │ ├── VenueMutations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── CREATE_VENUE_MUTATION.md
│ │ │ │ │ │ ├── DELETE_VENUE_MUTATION.md
│ │ │ │ │ │ └── UPDATE_VENUE_MUTATION.md
│ │ │ │ │ └── mutations/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── ACCEPT_EVENT_INVITATION.md
│ │ │ │ │ ├── ACCEPT_ORGANIZATION_REQUEST_MUTATION.md
│ │ │ │ │ ├── BLOCK_USER_MUTATION_PG.md
│ │ │ │ │ ├── CREATE_MEMBER_PG.md
│ │ │ │ │ ├── CREATE_ORGANIZATION_MEMBERSHIP_MUTATION_PG.md
│ │ │ │ │ ├── CREATE_ORGANIZATION_MUTATION.md
│ │ │ │ │ ├── CREATE_ORGANIZATION_MUTATION_PG.md
│ │ │ │ │ ├── CREATE_POST_MUTATION.md
│ │ │ │ │ ├── DELETE_ORGANIZATION_MUTATION.md
│ │ │ │ │ ├── DELETE_POST_MUTATION.md
│ │ │ │ │ ├── DONATE_TO_ORGANIZATION.md
│ │ │ │ │ ├── FORGOT_PASSWORD_MUTATION.md
│ │ │ │ │ ├── GENERATE_OTP_MUTATION.md
│ │ │ │ │ ├── GET_FILE_PRESIGNEDURL.md
│ │ │ │ │ ├── LINK_OAUTH_ACCOUNT.md
│ │ │ │ │ ├── LOGOUT_MUTATION.md
│ │ │ │ │ ├── PRESIGNED_URL.md
│ │ │ │ │ ├── REFRESH_TOKEN_MUTATION.md
│ │ │ │ │ ├── REJECT_ORGANIZATION_REQUEST_MUTATION.md
│ │ │ │ │ ├── REMOVE_MEMBER_MUTATION.md
│ │ │ │ │ ├── REMOVE_MEMBER_MUTATION_PG.md
│ │ │ │ │ ├── RESEND_VERIFICATION_EMAIL_MUTATION.md
│ │ │ │ │ ├── RESET_COMMUNITY.md
│ │ │ │ │ ├── REVOKE_REFRESH_TOKEN.md
│ │ │ │ │ ├── SEND_EVENT_INVITATIONS.md
│ │ │ │ │ ├── SIGNUP_MUTATION.md
│ │ │ │ │ ├── SIGN_IN_WITH_OAUTH.md
│ │ │ │ │ ├── UNBLOCK_USER_MUTATION_PG.md
│ │ │ │ │ ├── UNLINK_OAUTH_ACCOUNT.md
│ │ │ │ │ ├── UPDATE_COMMUNITY_PG.md
│ │ │ │ │ ├── UPDATE_CURRENT_USER_MUTATION.md
│ │ │ │ │ ├── UPDATE_EVENT_MUTATION.md
│ │ │ │ │ ├── UPDATE_ORGANIZATION_MUTATION.md
│ │ │ │ │ ├── UPDATE_POST_MUTATION.md
│ │ │ │ │ ├── UPDATE_POST_VOTE.md
│ │ │ │ │ ├── UPDATE_SESSION_TIMEOUT_PG.md
│ │ │ │ │ ├── UPDATE_USER_MUTATION.md
│ │ │ │ │ ├── VERIFY_EMAIL_MUTATION.md
│ │ │ │ │ └── VERIFY_EVENT_INVITATION.md
│ │ │ │ └── Queries/
│ │ │ │ ├── ActionItemCategoryQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── ACTION_ITEM_CATEGORY_LIST.md
│ │ │ │ │ └── GET_ACTION_ITEM_CATEGORY.md
│ │ │ │ ├── ActionItemQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── ACTION_ITEM_LIST.md
│ │ │ │ │ └── GET_EVENT_ACTION_ITEMS.md
│ │ │ │ ├── AdvertisementQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── ORGANIZATION_ADVERTISEMENT_LIST.md
│ │ │ │ ├── AgendaCategoryQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── AGENDA_ITEM_CATEGORY_LIST.md
│ │ │ │ ├── AgendaFolderQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── AGENDA_FOLDER_LIST.md
│ │ │ │ ├── CommentQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── GET_POST_COMMENTS.md
│ │ │ │ ├── EventVolunteerQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── EVENT_VOLUNTEER_GROUP_LIST.md
│ │ │ │ │ ├── GET_EVENT_VOLUNTEERS.md
│ │ │ │ │ ├── GET_EVENT_VOLUNTEER_GROUPS.md
│ │ │ │ │ ├── USER_EVENTS_VOLUNTEER.md
│ │ │ │ │ ├── USER_VOLUNTEER_MEMBERSHIP.md
│ │ │ │ │ └── VOLUNTEER_RANKING.md
│ │ │ │ ├── NotificationQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── GET_USER_NOTIFICATIONS.md
│ │ │ │ │ └── MARK_NOTIFICATION_AS_READ.md
│ │ │ │ ├── OrganizationQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── ORGANIZATION_MEMBERS.md
│ │ │ │ │ ├── ORGANIZATION_PINNED_POST_LIST.md
│ │ │ │ │ ├── ORGANIZATION_POST_BY_ID.md
│ │ │ │ │ ├── ORGANIZATION_POST_LIST_WITH_VOTES.md
│ │ │ │ │ ├── ORGANIZATION_USER_TAGS_LIST.md
│ │ │ │ │ ├── ORGANIZATION_USER_TAGS_LIST_PG.md
│ │ │ │ │ ├── USER_CREATED_ORGANIZATIONS.md
│ │ │ │ │ ├── USER_JOINED_ORGANIZATIONS_PG.md
│ │ │ │ │ └── VENUE_LIST.md
│ │ │ │ ├── PlugInQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── CHATS_LIST.md
│ │ │ │ │ ├── CHAT_BY_ID.md
│ │ │ │ │ ├── GET_ALL_PLUGINS.md
│ │ │ │ │ ├── IS_SAMPLE_ORGANIZATION_QUERY.md
│ │ │ │ │ └── UNREAD_CHATS.md
│ │ │ │ ├── Queries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── ALL_ORGANIZATIONS_PG.md
│ │ │ │ │ ├── CURRENT_USER.md
│ │ │ │ │ ├── EVENT_ATTENDEES.md
│ │ │ │ │ ├── EVENT_CHECKINS.md
│ │ │ │ │ ├── EVENT_DETAILS.md
│ │ │ │ │ ├── EVENT_FEEDBACKS.md
│ │ │ │ │ ├── EVENT_REGISTRANTS.md
│ │ │ │ │ ├── GET_COMMUNITY_DATA_PG.md
│ │ │ │ │ ├── GET_COMMUNITY_SESSION_TIMEOUT_DATA_PG.md
│ │ │ │ │ ├── GET_EVENTS_BY_ORGANIZATION_ID.md
│ │ │ │ │ ├── GET_ORGANIZATION_BASIC_DATA.md
│ │ │ │ │ ├── GET_ORGANIZATION_BLOCKED_USERS_COUNT.md
│ │ │ │ │ ├── GET_ORGANIZATION_BLOCKED_USERS_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_DATA_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_EVENTS_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_EVENTS_USER_PORTAL_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_MEMBERS_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_POSTS_COUNT_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_POSTS_PG.md
│ │ │ │ │ ├── GET_ORGANIZATION_VENUES_COUNT.md
│ │ │ │ │ ├── GET_ORGANIZATION_VENUES_PG.md
│ │ │ │ │ ├── GET_USER_BY_ID.md
│ │ │ │ │ ├── GET_USER_TAGS.md
│ │ │ │ │ ├── MEMBERSHIP_REQUEST_PG.md
│ │ │ │ │ ├── MEMBERS_LIST.md
│ │ │ │ │ ├── MEMBERS_LIST_PG.md
│ │ │ │ │ ├── MEMBERS_LIST_WITH_DETAILS.md
│ │ │ │ │ ├── ORGANIZATIONS_LIST.md
│ │ │ │ │ ├── ORGANIZATIONS_LIST_BASIC.md
│ │ │ │ │ ├── ORGANIZATIONS_MEMBER_CONNECTION_LIST.md
│ │ │ │ │ ├── ORGANIZATION_DONATION_CONNECTION_LIST.md
│ │ │ │ │ ├── ORGANIZATION_EVENT_CONNECTION_LIST.md
│ │ │ │ │ ├── ORGANIZATION_FIELDS.md
│ │ │ │ │ ├── ORGANIZATION_FILTER_LIST.md
│ │ │ │ │ ├── ORGANIZATION_LIST.md
│ │ │ │ │ ├── ORGANIZATION_LIST_NO_MEMBERS.md
│ │ │ │ │ ├── ORGANIZATION_MEMBER_ADMIN_COUNT.md
│ │ │ │ │ ├── RECURRING_EVENTS.md
│ │ │ │ │ ├── SIGNIN_QUERY.md
│ │ │ │ │ ├── USERS_CONNECTION_LIST.md
│ │ │ │ │ ├── USER_DETAILS.md
│ │ │ │ │ ├── USER_JOINED_ORGANIZATIONS_NO_MEMBERS.md
│ │ │ │ │ ├── USER_LIST.md
│ │ │ │ │ ├── USER_LIST_FOR_ADMIN.md
│ │ │ │ │ ├── USER_LIST_FOR_TABLE.md
│ │ │ │ │ └── USER_ORGANIZATION_LIST.md
│ │ │ │ ├── fundQueries/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── FUND_CAMPAIGN.md
│ │ │ │ │ ├── FUND_CAMPAIGN_PLEDGE.md
│ │ │ │ │ ├── FUND_LIST.md
│ │ │ │ │ ├── USER_FUND_CAMPAIGNS.md
│ │ │ │ │ └── USER_PLEDGES.md
│ │ │ │ └── userTagQueries/
│ │ │ │ └── variables/
│ │ │ │ ├── USER_TAGS_ASSIGNED_MEMBERS.md
│ │ │ │ ├── USER_TAGS_MEMBERS_TO_ASSIGN_TO.md
│ │ │ │ └── USER_TAG_SUB_TAGS.md
│ │ │ ├── components/
│ │ │ │ ├── AdminPortal/
│ │ │ │ │ ├── AddPeopleToTag/
│ │ │ │ │ │ ├── AddPeopleToTag/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── AddPeopleToTagsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_ERROR.md
│ │ │ │ │ │ ├── MOCK_EMPTY.md
│ │ │ │ │ │ └── MOCK_NON_ERROR.md
│ │ │ │ │ ├── Advertisements/
│ │ │ │ │ │ ├── Advertisements/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── AdvertisementsMocks/
│ │ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ │ └── wait.md
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── client.md
│ │ │ │ │ │ │ ├── createAdvertisement.md
│ │ │ │ │ │ │ ├── createAdvertisementError.md
│ │ │ │ │ │ │ ├── createAdvertisementWithEndDateBeforeStart.md
│ │ │ │ │ │ │ ├── createAdvertisementWithoutName.md
│ │ │ │ │ │ │ ├── createDates.md
│ │ │ │ │ │ │ ├── dateConstants.md
│ │ │ │ │ │ │ ├── deleteAdvertisementMocks.md
│ │ │ │ │ │ │ ├── emptyMocks.md
│ │ │ │ │ │ │ ├── fetchErrorMocks.md
│ │ │ │ │ │ │ ├── filterActiveAdvertisementData.md
│ │ │ │ │ │ │ ├── filterCompletedAdvertisementData.md
│ │ │ │ │ │ │ ├── getActiveAdvertisementMocks.md
│ │ │ │ │ │ │ ├── getCompletedAdvertisementMocks.md
│ │ │ │ │ │ │ ├── initialActiveData.md
│ │ │ │ │ │ │ ├── initialArchivedData.md
│ │ │ │ │ │ │ ├── link.md
│ │ │ │ │ │ │ ├── updateAdMocks.md
│ │ │ │ │ │ │ └── updateDates.md
│ │ │ │ │ │ ├── core/
│ │ │ │ │ │ │ ├── AdvertisementEntry/
│ │ │ │ │ │ │ │ └── AdvertisementEntry/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── AdvertisementRegister/
│ │ │ │ │ │ │ ├── AdvertisementRegister/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── AdvertisementRegisterMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── createAdFailMock.md
│ │ │ │ │ │ │ ├── createAdvertisement.md
│ │ │ │ │ │ │ ├── dateConstants.md
│ │ │ │ │ │ │ ├── mockBigFile.md
│ │ │ │ │ │ │ ├── mockFile.md
│ │ │ │ │ │ │ └── updateAdFailMock.md
│ │ │ │ │ │ └── skeleton/
│ │ │ │ │ │ └── AdvertisementSkeleton/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── AdvertisementSkeleton.md
│ │ │ │ │ ├── AgendaFolder/
│ │ │ │ │ │ ├── AgendaFolderContainer/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── Create/
│ │ │ │ │ │ │ └── AgendaFolderCreateModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── Delete/
│ │ │ │ │ │ │ └── AgendaFolderDeleteModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── DragAndDrop/
│ │ │ │ │ │ │ └── AgendaDragAndDrop/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── Update/
│ │ │ │ │ │ └── AgendaFolderUpdateModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── AgendaItems/
│ │ │ │ │ │ ├── Create/
│ │ │ │ │ │ │ └── AgendaItemsCreateModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── Delete/
│ │ │ │ │ │ │ └── AgendaItemsDeleteModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── Preview/
│ │ │ │ │ │ │ └── AgendaItemsPreviewModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── Update/
│ │ │ │ │ │ └── AgendaItemsUpdateModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── ApplyToSelector/
│ │ │ │ │ │ └── ApplyToSelector/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── AssignmentTypeSelector/
│ │ │ │ │ │ └── AssignmentTypeSelector/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── ContriStats/
│ │ │ │ │ │ └── ContriStats/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EventManagement/
│ │ │ │ │ │ ├── Dashboard/
│ │ │ │ │ │ │ ├── EventDashboard/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── EventDashboard.mocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS_EMPTY_DATE_STRINGS.md
│ │ │ │ │ │ │ ├── MOCKS_INVALID_DATETIME.md
│ │ │ │ │ │ │ ├── MOCKS_MISSING_DATA.md
│ │ │ │ │ │ │ ├── MOCKS_NO_EVENT.md
│ │ │ │ │ │ │ ├── MOCKS_NO_LOCATION.md
│ │ │ │ │ │ │ ├── MOCKS_UNDEFINED_INVITE_ONLY.md
│ │ │ │ │ │ │ ├── MOCKS_WITHOUT_TIME.md
│ │ │ │ │ │ │ └── MOCKS_WITH_TIME.md
│ │ │ │ │ │ ├── EventActionItems/
│ │ │ │ │ │ │ └── EventActionItems/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── EventAgenda/
│ │ │ │ │ │ │ └── EventAgenda/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── EventAttendance/
│ │ │ │ │ │ │ ├── Attendance/
│ │ │ │ │ │ │ │ └── EventAttendance/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ ├── AttendanceList/
│ │ │ │ │ │ │ │ └── AttendedEventList/
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ ├── EventAttendanceMocks/
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ ├── MOCKDETAIL.md
│ │ │ │ │ │ │ │ ├── MOCKEVENT.md
│ │ │ │ │ │ │ │ └── MOCKS.md
│ │ │ │ │ │ │ └── Statistics/
│ │ │ │ │ │ │ └── EventStatistics/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── AttendanceStatisticsModal.md
│ │ │ │ │ │ └── EventRegistrant/
│ │ │ │ │ │ ├── EventRegistrants/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── Registrations.mocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── COMBINED_MOCKS.md
│ │ │ │ │ │ ├── EMPTY_EVENT_CHECKINS_MOCK.md
│ │ │ │ │ │ ├── EMPTY_REGISTRANTS_MOCK.md
│ │ │ │ │ │ ├── EMPTY_STATE_MOCKS.md
│ │ │ │ │ │ ├── ERROR_DELETION_MOCKS.md
│ │ │ │ │ │ ├── EVENT_CHECKINS_MOCK.md
│ │ │ │ │ │ ├── EVENT_DETAILS_MOCK.md
│ │ │ │ │ │ ├── MISSING_DATE_MOCKS.md
│ │ │ │ │ │ ├── MISSING_NAME_MOCKS.md
│ │ │ │ │ │ ├── RECURRING_EVENT_DETAILS_MOCK.md
│ │ │ │ │ │ ├── RECURRING_EVENT_MOCKS.md
│ │ │ │ │ │ ├── RECURRING_EVENT_REGISTRANTS_MOCK.md
│ │ │ │ │ │ ├── REGISTRANTS_ERROR_USER_MOCK.md
│ │ │ │ │ │ ├── REGISTRANTS_MISSING_DATE_MOCK.md
│ │ │ │ │ │ ├── REGISTRANTS_MISSING_NAME_MOCK.md
│ │ │ │ │ │ ├── REGISTRANTS_MOCK.md
│ │ │ │ │ │ ├── REMOVE_ATTENDEE_ERROR_MOCK.md
│ │ │ │ │ │ └── REMOVE_ATTENDEE_SUCCESS_MOCK.md
│ │ │ │ │ ├── EventRegistrantsModal/
│ │ │ │ │ │ ├── EventRegistrantsWrapper/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── EventRegistrantsWrapper.md
│ │ │ │ │ │ └── Modal/
│ │ │ │ │ │ ├── AddOnSpot/
│ │ │ │ │ │ │ └── AddOnSpotAttendee/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── EventRegistrantsModal/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── EventRegistrantsModal.md
│ │ │ │ │ │ └── InviteByEmail/
│ │ │ │ │ │ └── InviteByEmailModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── LeftDrawer/
│ │ │ │ │ │ └── LeftDrawer/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── ILeftDrawerProps.md
│ │ │ │ │ ├── OrgContriCards/
│ │ │ │ │ │ └── OrgContriCards/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrgPeopleListCard/
│ │ │ │ │ │ └── OrgPeopleListCard/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrgSettings/
│ │ │ │ │ │ ├── ActionItemCategories/
│ │ │ │ │ │ │ ├── Modal/
│ │ │ │ │ │ │ │ ├── ActionItemCategoryModal/
│ │ │ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ │ │ └── IActionItemCategoryModal.md
│ │ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ │ └── ActionItemCategoryViewModal/
│ │ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ │ └── ICategoryViewModalProps.md
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ ├── OrgActionItemCategories/
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── OrgActionItemCategoryMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_EMPTY.md
│ │ │ │ │ │ │ └── MOCKS_ERROR.md
│ │ │ │ │ │ └── General/
│ │ │ │ │ │ ├── DeleteOrg/
│ │ │ │ │ │ │ └── DeleteOrg/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── GeneralSettings/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── OrgUpdate/
│ │ │ │ │ │ ├── OrgUpdate/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── OrgUpdateMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── FIXED_UTC_TIMESTAMP.md
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_QUERY_ERROR.md
│ │ │ │ │ │ ├── MOCKS_QUERY_ERROR_FETCH.md
│ │ │ │ │ │ ├── MOCKS_UPDATE_ERROR.md
│ │ │ │ │ │ ├── mockOrgData.md
│ │ │ │ │ │ ├── mockOrgDataWithEmptyFields.md
│ │ │ │ │ │ ├── mockOrgDataWithNullUserReg.md
│ │ │ │ │ │ └── mockUpdateOrgResponse.md
│ │ │ │ │ ├── OrganizationDashCards/
│ │ │ │ │ │ ├── CardItem/
│ │ │ │ │ │ │ ├── CardItem/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── Loader/
│ │ │ │ │ │ │ └── CardItemLoading/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── DashboardCard/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── Loader/
│ │ │ │ │ │ └── DashboardCardLoading/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrganizationScreen/
│ │ │ │ │ │ └── OrganizationScreen/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── translationKeyMap.md
│ │ │ │ │ ├── SecuredRoute/
│ │ │ │ │ │ └── SecuredRoute/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── SuperAdminScreen/
│ │ │ │ │ │ └── SuperAdminScreen/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── TagActions/
│ │ │ │ │ │ ├── Node/
│ │ │ │ │ │ │ ├── TagNode/
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── TagNodeMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS1.md
│ │ │ │ │ │ │ └── MOCKS_ERROR_SUBTAGS_QUERY1.md
│ │ │ │ │ │ ├── TagActions/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── TagActionsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_ERROR_ASSIGN_OR_REMOVAL_TAGS.md
│ │ │ │ │ │ └── MOCKS_ERROR_SUBTAGS_QUERY.md
│ │ │ │ │ ├── UpdateSession/
│ │ │ │ │ │ └── UpdateSession/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UserTableRow/
│ │ │ │ │ │ └── UserTableRow/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── UserTableRow.md
│ │ │ │ │ └── Venues/
│ │ │ │ │ ├── Modal/
│ │ │ │ │ │ └── VenueModal/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceVenueModalProps.md
│ │ │ │ │ ├── VenueCard/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── VenueCardMocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── MOCK_VENUE_ITEM.md
│ │ │ │ │ ├── MOCK_VENUE_ITEM_LONG_TEXT.md
│ │ │ │ │ └── MOCK_VENUE_ITEM_WITH_IMAGE.md
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── LoginForm/
│ │ │ │ │ │ └── LoginForm/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── LoginForm.md
│ │ │ │ │ ├── OAuthButton/
│ │ │ │ │ │ └── OAuthButton/
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ ├── OAuthMode.md
│ │ │ │ │ │ │ └── OAuthSize.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── OAuthButton.md
│ │ │ │ │ ├── OrgSelector/
│ │ │ │ │ │ └── OrgSelector/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── OrgSelector.md
│ │ │ │ │ ├── PasswordStrengthIndicator/
│ │ │ │ │ │ ├── PasswordStrengthIndicator/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── PasswordStrengthIndicator.md
│ │ │ │ │ │ └── RequirementRow/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── RequirementRow.md
│ │ │ │ │ ├── RegistrationForm/
│ │ │ │ │ │ └── RegistrationForm/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── RegistrationForm.md
│ │ │ │ │ └── theme/
│ │ │ │ │ └── oauthBrand/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── brandForProvider.md
│ │ │ │ ├── ChangeLanguageDropdown/
│ │ │ │ │ └── ChangeLanguageDropDown/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── CollapsibleDropdown/
│ │ │ │ │ └── CollapsibleDropdown/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── CursorPaginationManager/
│ │ │ │ │ └── CursorPaginationManager/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── CursorPaginationManager.md
│ │ │ │ ├── EventCalender/
│ │ │ │ │ ├── EventCalenderMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ └── eventData.md
│ │ │ │ │ ├── Header/
│ │ │ │ │ │ └── EventHeader/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── Monthly/
│ │ │ │ │ │ └── EventCalender/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── Yearly/
│ │ │ │ │ └── YearlyEventCalender/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── EventDashboardScreen/
│ │ │ │ │ ├── EventDashboardScreen/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── EventDashboardScreenMocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── MOCKS.md
│ │ │ │ ├── EventStats/
│ │ │ │ │ ├── EventStatsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── diverseRatingsProps.md
│ │ │ │ │ │ ├── emptyProps.md
│ │ │ │ │ │ ├── mockData.md
│ │ │ │ │ │ └── nonEmptyProps.md
│ │ │ │ │ └── Statistics/
│ │ │ │ │ ├── AverageRating/
│ │ │ │ │ │ └── AverageRating/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── AverageRating.md
│ │ │ │ │ ├── EventStats/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── EventStats.md
│ │ │ │ │ ├── Feedback/
│ │ │ │ │ │ └── Feedback/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── FeedbackStats.md
│ │ │ │ │ └── Review/
│ │ │ │ │ └── Review/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── ReviewStats.md
│ │ │ │ ├── HolidayCards/
│ │ │ │ │ └── HolidayCard/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── IconComponent/
│ │ │ │ │ └── IconComponent/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── IIconComponent.md
│ │ │ │ ├── LeftDrawerOrg/
│ │ │ │ │ └── LeftDrawerOrg/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── ILeftDrawerProps.md
│ │ │ │ ├── NotificationIcon/
│ │ │ │ │ └── NotificationIcon/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Pagination/
│ │ │ │ │ └── Navigator/
│ │ │ │ │ └── Pagination/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── ProfileCard/
│ │ │ │ │ └── ProfileCard/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── ProfileDropdown/
│ │ │ │ │ └── ProfileDropdown/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SignOut/
│ │ │ │ │ └── SignOut/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── UserDetails/
│ │ │ │ │ ├── UserEvents/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UserOrganizations/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── UserTags/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── UserPortal/
│ │ │ │ │ ├── ChatRoom/
│ │ │ │ │ │ ├── ChatHeader/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── ChatRoom/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── EmptyChatState/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── MessageImage/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── MessageInput/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── MessageItem/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── INewChat.md
│ │ │ │ │ │ └── InterfaceChatHeaderProps.md
│ │ │ │ │ ├── CommentCard/
│ │ │ │ │ │ └── CommentCard/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── ContactCard/
│ │ │ │ │ │ └── ContactCard/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── CreateDirectChat/
│ │ │ │ │ │ └── CreateDirectChat/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── CreateGroupChat/
│ │ │ │ │ │ └── CreateGroupChat/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── DonationCard/
│ │ │ │ │ │ └── DonationCard/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EventCard/
│ │ │ │ │ │ └── EventCard/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── GroupChatDetails/
│ │ │ │ │ │ ├── GroupChatDetails/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── GroupChatDetailsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── delayedMocks.md
│ │ │ │ │ │ ├── failingMocks.md
│ │ │ │ │ │ ├── filledMockChat.md
│ │ │ │ │ │ ├── incompleteMockChat.md
│ │ │ │ │ │ └── mocks.md
│ │ │ │ │ ├── OrganizationSidebar/
│ │ │ │ │ │ └── OrganizationSidebar/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── SecuredRouteForUser/
│ │ │ │ │ │ └── SecuredRouteForUser/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UserNavbar/
│ │ │ │ │ │ └── UserNavbar/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UserPortalCard/
│ │ │ │ │ │ └── UserPortalCard/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UserPortalNavigationBar/
│ │ │ │ │ │ ├── LanguageSelector/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── UserDropdown/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── UserPortalNavigationBar/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── UserPortalNavigationBar.md
│ │ │ │ │ │ └── UserPortalNavigationBarMocks/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── getMockIcon.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── logoutErrorMock.md
│ │ │ │ │ │ ├── logoutMock.md
│ │ │ │ │ │ ├── logoutNetworkErrorMock.md
│ │ │ │ │ │ ├── mockNavigationLinksBase.md
│ │ │ │ │ │ ├── mockOrganizationId.md
│ │ │ │ │ │ ├── mockOrganizationName.md
│ │ │ │ │ │ ├── mockUserId.md
│ │ │ │ │ │ ├── mockUserName.md
│ │ │ │ │ │ ├── organizationDataErrorMock.md
│ │ │ │ │ │ ├── organizationDataMock.md
│ │ │ │ │ │ └── organizationDataNullMock.md
│ │ │ │ │ ├── UserProfileSettings/
│ │ │ │ │ │ └── UserProfile/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UserSidebar/
│ │ │ │ │ │ └── UserSidebar/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceUserSidebarProps.md
│ │ │ │ │ └── UserSidebarOrg/
│ │ │ │ │ └── UserSidebarOrg/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceUserSidebarOrgProps.md
│ │ │ │ └── UsersTableItem/
│ │ │ │ ├── UserTableItemMocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ ├── MOCKS2.md
│ │ │ │ │ └── MOCKS_UPDATE.md
│ │ │ │ └── UsersTableItem/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── config/
│ │ │ │ └── oauthProviders/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── getEnabledProviders.md
│ │ │ │ │ └── getProviderConfig.md
│ │ │ │ └── variables/
│ │ │ │ └── OAUTH_PROVIDERS.md
│ │ │ ├── constants/
│ │ │ │ └── variables/
│ │ │ │ └── socialMediaLinks.md
│ │ │ ├── hooks/
│ │ │ │ ├── auth/
│ │ │ │ │ ├── useAuthNotifications/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── useAuthNotifications.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceToastConfig.md
│ │ │ │ │ ├── useLogin/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── useLogin.md
│ │ │ │ │ └── useRegistration/
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ └── RegistrationError.md
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── useRegistration.md
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── IRegisterInput.md
│ │ │ │ │ │ └── IRegistrationSuccessResult.md
│ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ └── RegistrationErrorCodeType.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── RegistrationErrorCode.md
│ │ │ │ ├── useAvatarUpload/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── useAvatarUpload.md
│ │ │ │ ├── useFieldValidation/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── useFieldValidation.md
│ │ │ │ ├── usePasswordVisibility/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── usePasswordVisibility.md
│ │ │ │ └── useUserProfile/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── index/
│ │ │ │ └── variables/
│ │ │ │ └── client.md
│ │ │ ├── install/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── handleDirectExecutionError.md
│ │ │ │ │ ├── main.md
│ │ │ │ │ └── runIfDirectExecution.md
│ │ │ │ ├── os/
│ │ │ │ │ ├── detector/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ ├── detectOS.md
│ │ │ │ │ │ └── isRunningInWsl.md
│ │ │ │ │ ├── linux/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ ├── installDocker.md
│ │ │ │ │ │ └── installTypeScript.md
│ │ │ │ │ ├── macos/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ ├── installDocker.md
│ │ │ │ │ │ └── installTypeScript.md
│ │ │ │ │ └── windows/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── installDocker.md
│ │ │ │ │ └── installTypeScript.md
│ │ │ │ ├── packages/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── installPackage.md
│ │ │ │ ├── types/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── IOSInfo.md
│ │ │ │ │ │ └── IPackageStatus.md
│ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ ├── LinuxDistro.md
│ │ │ │ │ │ ├── OS.md
│ │ │ │ │ │ └── PackageName.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── PACKAGE_NAMES.md
│ │ │ │ └── utils/
│ │ │ │ ├── checker/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── checkInstalledPackages.md
│ │ │ │ │ └── checkPackage.md
│ │ │ │ ├── checkers/
│ │ │ │ │ ├── docker/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── checkDocker.md
│ │ │ │ │ └── typescript/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── checkTypeScript.md
│ │ │ │ ├── exec/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── checkVersion.md
│ │ │ │ │ │ ├── commandExists.md
│ │ │ │ │ │ └── execCommand.md
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── IExecOptions.md
│ │ │ │ │ │ └── IExecResult.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── deps.md
│ │ │ │ └── logger/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── createSpinner.md
│ │ │ │ │ ├── logError.md
│ │ │ │ │ ├── logInfo.md
│ │ │ │ │ ├── logStep.md
│ │ │ │ │ ├── logSuccess.md
│ │ │ │ │ └── logWarning.md
│ │ │ │ └── interfaces/
│ │ │ │ └── ISpinner.md
│ │ │ ├── plugin/
│ │ │ │ ├── graphql-service/
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ └── PluginGraphQLService.md
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── useCreatePlugin.md
│ │ │ │ │ │ ├── useDeletePlugin.md
│ │ │ │ │ │ ├── useGetAllPlugins.md
│ │ │ │ │ │ ├── useInstallPlugin.md
│ │ │ │ │ │ └── useUpdatePlugin.md
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── ICreatePluginInput.md
│ │ │ │ │ ├── IDeletePluginInput.md
│ │ │ │ │ ├── IInstallPluginInput.md
│ │ │ │ │ ├── IPlugin.md
│ │ │ │ │ └── IUpdatePluginInput.md
│ │ │ │ ├── hooks/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── useLoadedPlugins.md
│ │ │ │ │ ├── usePluginDrawerItems.md
│ │ │ │ │ ├── usePluginInjectors.md
│ │ │ │ │ └── usePluginRoutes.md
│ │ │ │ ├── manager/
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ └── PluginManager.md
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── getPluginManager.md
│ │ │ │ │ └── resetPluginManager.md
│ │ │ │ ├── managers/
│ │ │ │ │ ├── discovery/
│ │ │ │ │ │ └── classes/
│ │ │ │ │ │ └── DiscoveryManager.md
│ │ │ │ │ ├── event-manager/
│ │ │ │ │ │ └── classes/
│ │ │ │ │ │ └── EventManager.md
│ │ │ │ │ ├── extension-registry/
│ │ │ │ │ │ └── classes/
│ │ │ │ │ │ └── ExtensionRegistryManager.md
│ │ │ │ │ └── lifecycle/
│ │ │ │ │ └── classes/
│ │ │ │ │ └── LifecycleManager.md
│ │ │ │ ├── registry/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── createErrorComponent.md
│ │ │ │ │ │ ├── createLazyPluginComponent.md
│ │ │ │ │ │ ├── discoverAndRegisterAllPlugins.md
│ │ │ │ │ │ ├── extractComponentNames.md
│ │ │ │ │ │ ├── getPluginComponent.md
│ │ │ │ │ │ ├── getPluginComponents.md
│ │ │ │ │ │ ├── getPluginManifest.md
│ │ │ │ │ │ ├── initializePluginSystem.md
│ │ │ │ │ │ ├── isPluginRegistered.md
│ │ │ │ │ │ └── registerPluginDynamically.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── manifestCache.md
│ │ │ │ │ └── pluginRegistry.md
│ │ │ │ ├── services/
│ │ │ │ │ ├── AdminPluginFileService/
│ │ │ │ │ │ ├── classes/
│ │ │ │ │ │ │ └── AdminPluginFileService.md
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── IInstalledPlugin.md
│ │ │ │ │ │ │ ├── IPluginFileValidationResult.md
│ │ │ │ │ │ │ └── IPluginInstallationResult.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── adminPluginFileService.md
│ │ │ │ │ └── InternalFileWriter/
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ └── InternalFileWriter.md
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── IFileOperationResult.md
│ │ │ │ │ │ └── IFileWriteResult.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── internalFileWriter.md
│ │ │ │ ├── types/
│ │ │ │ │ ├── enumerations/
│ │ │ │ │ │ ├── ExtensionPointType.md
│ │ │ │ │ │ └── PluginStatus.md
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── IDrawerExtension.md
│ │ │ │ │ ├── IExtensionPoints.md
│ │ │ │ │ ├── IExtensionRegistry.md
│ │ │ │ │ ├── IInjectorExtension.md
│ │ │ │ │ ├── IInstalledPlugin.md
│ │ │ │ │ ├── ILoadedPlugin.md
│ │ │ │ │ ├── IPluginDetails.md
│ │ │ │ │ ├── IPluginDrawerItemsProps.md
│ │ │ │ │ ├── IPluginInfo.md
│ │ │ │ │ ├── IPluginLifecycle.md
│ │ │ │ │ ├── IPluginManifest.md
│ │ │ │ │ ├── IPluginMeta.md
│ │ │ │ │ ├── IPluginModalProps.md
│ │ │ │ │ ├── IPluginRouterProps.md
│ │ │ │ │ ├── IPluginStoreProps.md
│ │ │ │ │ └── IRouteExtension.md
│ │ │ │ ├── utils/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── filterByPermissions.md
│ │ │ │ │ ├── generatePluginId.md
│ │ │ │ │ ├── sortDrawerItems.md
│ │ │ │ │ └── validatePluginManifest.md
│ │ │ │ ├── variables/
│ │ │ │ │ ├── PluginInjector.md
│ │ │ │ │ ├── PluginRouteRenderer.md
│ │ │ │ │ └── PluginRoutes.md
│ │ │ │ └── vite/
│ │ │ │ └── internalFileWriterPlugin/
│ │ │ │ ├── functions/
│ │ │ │ │ └── createInternalFileWriterPlugin.md
│ │ │ │ └── interfaces/
│ │ │ │ └── IInternalFileWriterPluginOptions.md
│ │ │ ├── reportWebVitals/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── screens/
│ │ │ │ ├── AdminPortal/
│ │ │ │ │ ├── BlockUser/
│ │ │ │ │ │ └── BlockUser/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── CommunityProfile/
│ │ │ │ │ │ └── CommunityProfile/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EventManagement/
│ │ │ │ │ │ └── EventManagement/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EventVolunteers/
│ │ │ │ │ │ ├── Requests/
│ │ │ │ │ │ │ ├── Requests/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── Requests.mocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ │ │ ├── ERROR_MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_WITH_FILTER_DATA.md
│ │ │ │ │ │ │ └── UPDATE_ERROR_MOCKS.md
│ │ │ │ │ │ ├── VolunteerContainer/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── VolunteerGroups/
│ │ │ │ │ │ │ ├── VolunteerGroups/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ ├── deleteModal/
│ │ │ │ │ │ │ │ └── VolunteerGroupDeleteModal/
│ │ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ │ └── InterfaceDeleteVolunteerGroupModal.md
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── modal/
│ │ │ │ │ │ │ ├── VolunteerGroupModal/
│ │ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ │ └── InterfaceVolunteerGroupModal.md
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── VolunteerGroups.mocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_EMPTY.md
│ │ │ │ │ │ │ └── MOCKS_ERROR.md
│ │ │ │ │ │ └── Volunteers/
│ │ │ │ │ │ ├── Volunteers/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── Volunteers.mocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_EMPTY.md
│ │ │ │ │ │ │ └── MOCKS_ERROR.md
│ │ │ │ │ │ ├── createModal/
│ │ │ │ │ │ │ └── VolunteerCreateModal/
│ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ └── InterfaceVolunteerCreateModal.md
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── deleteModal/
│ │ │ │ │ │ │ └── VolunteerDeleteModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── viewModal/
│ │ │ │ │ │ └── VolunteerViewModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── FundCampaignPledge/
│ │ │ │ │ │ ├── FundCampaignPledge/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── PledgeColumns/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── getPledgeColumns.md
│ │ │ │ │ │ ├── Pledges.mocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_DELETE_PLEDGE_ERROR.md
│ │ │ │ │ │ │ ├── MOCKS_FUND_CAMPAIGN_PLEDGE_ERROR.md
│ │ │ │ │ │ │ ├── PLEDGE_MODAL_ERROR_MOCKS.md
│ │ │ │ │ │ │ └── PLEDGE_MODAL_MOCKS.md
│ │ │ │ │ │ ├── deleteModal/
│ │ │ │ │ │ │ └── PledgeDeleteModal/
│ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ └── InterfaceDeletePledgeModal.md
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── modal/
│ │ │ │ │ │ └── PledgeModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfacePledgeModal.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── Leaderboard/
│ │ │ │ │ │ ├── Leaderboard/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── Leaderboard.mocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ │ ├── ERROR_MOCKS.md
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ └── SEARCH_EMPTY_MOCKS.md
│ │ │ │ │ ├── ManageTag/
│ │ │ │ │ │ ├── ManageTag/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ ├── default.md
│ │ │ │ │ │ │ └── getManageTagErrorMessage.md
│ │ │ │ │ │ ├── ManageTagMockComponents/
│ │ │ │ │ │ │ ├── MockAddPeopleToTag/
│ │ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── MockTagActions/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── ManageTagMockUtils/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── buildAssignedUsers.md
│ │ │ │ │ │ ├── ManageTagMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ └── MOCKS_ERROR_ASSIGNED_MEMBERS.md
│ │ │ │ │ │ ├── ManageTagNonErrorMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS_ERROR_OBJECT.md
│ │ │ │ │ │ │ ├── MOCKS_INFINITE_SCROLL_NULL_EDGES.md
│ │ │ │ │ │ │ ├── MOCKS_INFINITE_SCROLL_NULL_FETCH_RESULT.md
│ │ │ │ │ │ │ ├── MOCKS_INFINITE_SCROLL_PAGINATION.md
│ │ │ │ │ │ │ ├── MOCKS_SUCCESS_REMOVE_USER_TAG.md
│ │ │ │ │ │ │ ├── MOCKS_SUCCESS_UNASSIGN_USER_TAG.md
│ │ │ │ │ │ │ ├── MOCKS_SUCCESS_UPDATE_USER_TAG.md
│ │ │ │ │ │ │ └── MOCKS_WITH_ANCESTOR_TAGS.md
│ │ │ │ │ │ ├── ManageTagNullFalsyMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS_EMPTY_ASSIGNED_MEMBERS_ARRAY.md
│ │ │ │ │ │ │ ├── MOCKS_EMPTY_EDGES_ARRAY.md
│ │ │ │ │ │ │ ├── MOCKS_EMPTY_PAGE_INFO.md
│ │ │ │ │ │ │ ├── MOCKS_ERROR_REMOVE_USER_TAG.md
│ │ │ │ │ │ │ ├── MOCKS_ERROR_UNASSIGN_USER_TAG.md
│ │ │ │ │ │ │ ├── MOCKS_ERROR_UPDATE_USER_TAG.md
│ │ │ │ │ │ │ ├── MOCKS_NULL_ANCESTOR_TAGS.md
│ │ │ │ │ │ │ ├── MOCKS_NULL_DATA.md
│ │ │ │ │ │ │ ├── MOCKS_NULL_USERS_ASSIGNED_TO.md
│ │ │ │ │ │ │ └── MOCKS_UNDEFINED_DATA.md
│ │ │ │ │ │ ├── editModal/
│ │ │ │ │ │ │ └── EditUserTagModal/
│ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ └── InterfaceEditUserTagModalProps.md
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── removeModal/
│ │ │ │ │ │ │ └── RemoveUserTagModal/
│ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ └── InterfaceRemoveUserTagModalProps.md
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── unassignModal/
│ │ │ │ │ │ └── UnassignUserTagModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceUnassignUserTagModalProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── MemberDetail/
│ │ │ │ │ │ ├── MemberDetail/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── UserContactDetails/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── fieldConfigs/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── addressFieldConfigs.md
│ │ │ │ │ │ │ └── phoneFieldConfigs.md
│ │ │ │ │ │ └── resolveAvatarFile/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── resolveAvatarFile.md
│ │ │ │ │ ├── Notification/
│ │ │ │ │ │ └── Notification/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrgContribution/
│ │ │ │ │ │ └── OrgContribution/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrgList/
│ │ │ │ │ │ ├── OrgList/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── OrgListMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_ADMIN.md
│ │ │ │ │ │ │ └── MOCKS_EMPTY.md
│ │ │ │ │ │ └── modal/
│ │ │ │ │ │ └── OrganizationModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceOrganizationModalProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrgSettings/
│ │ │ │ │ │ ├── OrgSettings/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── OrgSettings.mocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── MOCKS.md
│ │ │ │ │ ├── OrganizationDashboard/
│ │ │ │ │ │ ├── OrganizationDashboard/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── OrganizationDashboardMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ │ │ ├── ERROR_MOCKS.md
│ │ │ │ │ │ │ └── MOCKS.md
│ │ │ │ │ │ ├── OrganizationDashboardSecondaryMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── MOCKS_ORG2.md
│ │ │ │ │ │ └── components/
│ │ │ │ │ │ ├── DashboardStats/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── UpcomingEventsCard/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrganizationEvents/
│ │ │ │ │ │ ├── CreateEventModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── OrganizationEvents/
│ │ │ │ │ │ │ ├── enumerations/
│ │ │ │ │ │ │ │ └── ViewType.md
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── OrganizationEventsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── MOCKS.md
│ │ │ │ │ ├── OrganizationFundCampaign/
│ │ │ │ │ │ ├── OrganizationFundCampaignMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ └── MOCK_ERROR.md
│ │ │ │ │ │ ├── OrganizationFundCampaigns/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── modal/
│ │ │ │ │ │ ├── CampaignModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── IDateRangeValue.md
│ │ │ │ │ │ └── InterfaceCampaignModal.md
│ │ │ │ │ ├── OrganizationFunds/
│ │ │ │ │ │ ├── OrganizationFunds/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── OrganizationFundsMocks/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ │ ├── MOCKS_ERROR.md
│ │ │ │ │ │ │ └── NO_FUNDS.md
│ │ │ │ │ │ └── modal/
│ │ │ │ │ │ └── FundModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceFundModal.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrganizationPeople/
│ │ │ │ │ │ ├── OrganizationPeople/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── addMember/
│ │ │ │ │ │ ├── AddMember/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ ├── enumerations/
│ │ │ │ │ │ │ └── OrganizationMembershipRole.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── IEdge.md
│ │ │ │ │ │ ├── IQueryVariable.md
│ │ │ │ │ │ └── IUserDetails.md
│ │ │ │ │ ├── OrganizationTags/
│ │ │ │ │ │ ├── OrganizationTags/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── OrganizationTagsMocks/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ ├── makeTagEdge.md
│ │ │ │ │ │ │ └── makeUserTags.md
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ └── TagEdge.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_ASCENDING_NO_SEARCH.md
│ │ │ │ │ │ ├── MOCKS_EMPTY.md
│ │ │ │ │ │ ├── MOCKS_ERROR.md
│ │ │ │ │ │ ├── MOCKS_ERROR_ERROR_TAG.md
│ │ │ │ │ │ ├── MOCKS_FETCHMORE_UNDEFINED.md
│ │ │ │ │ │ ├── MOCKS_NO_MORE_PAGES.md
│ │ │ │ │ │ ├── MOCKS_NULL_END_CURSOR.md
│ │ │ │ │ │ ├── MOCKS_UNDEFINED_USER_TAGS.md
│ │ │ │ │ │ └── MOCK_RESPONSES.md
│ │ │ │ │ ├── OrganizationTransactions/
│ │ │ │ │ │ └── OrganizationTransactions/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── OrganizationVenues/
│ │ │ │ │ │ └── OrganizationVenues/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── PluginStore/
│ │ │ │ │ │ ├── PluginModal/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── PluginStore/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── UploadPluginModal/
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── PluginCard/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ ├── PluginList/
│ │ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ └── UninstallConfirmationModal/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── hooks/
│ │ │ │ │ │ ├── useInstallTimer/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── useInstallTimer.md
│ │ │ │ │ │ ├── usePluginActions/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── usePluginActions.md
│ │ │ │ │ │ └── usePluginFilters/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── usePluginFilters.md
│ │ │ │ │ ├── Requests/
│ │ │ │ │ │ ├── Requests/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── RequestsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ │ ├── EMPTY_REQUEST_MOCKS.md
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS4.md
│ │ │ │ │ │ ├── MOCKS_WITH_ERROR.md
│ │ │ │ │ │ └── UPDATED_MOCKS.md
│ │ │ │ │ ├── SubTags/
│ │ │ │ │ │ ├── SubTags/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── SubTagsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_CREATE_TAG_ERROR.md
│ │ │ │ │ │ ├── MOCKS_ERROR_SUB_TAGS.md
│ │ │ │ │ │ └── emptyMocks.md
│ │ │ │ │ └── Users/
│ │ │ │ │ ├── Organization.mocks/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── generateMockUser.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCK_USERS.md
│ │ │ │ │ │ ├── createAddress.md
│ │ │ │ │ │ └── createCreator.md
│ │ │ │ │ ├── User.mocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ └── MOCKS2.md
│ │ │ │ │ ├── Users/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ ├── default.md
│ │ │ │ │ │ ├── isValidFilteringOption.md
│ │ │ │ │ │ └── isValidSortingOption.md
│ │ │ │ │ └── UsersMocks.mocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ ├── MOCKS_NEW.md
│ │ │ │ │ ├── MOCKS_NEW_2.md
│ │ │ │ │ └── USER_UNDEFINED_MOCK.md
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── ForgotPassword/
│ │ │ │ │ │ └── ForgotPassword/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── LoginPage/
│ │ │ │ │ │ └── LoginPage/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── VerifyEmail/
│ │ │ │ │ └── VerifyEmail/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Public/
│ │ │ │ │ ├── Invitation/
│ │ │ │ │ │ └── AcceptInvitation/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── PageNotFound/
│ │ │ │ │ └── PageNotFound/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ └── UserPortal/
│ │ │ │ ├── Campaigns/
│ │ │ │ │ ├── Campaigns/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── CampaignWithStatus.md
│ │ │ │ │ ├── CampaignsMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_WITH_FUND_NO_CAMPAIGNS.md
│ │ │ │ │ │ ├── MOCKS_WITH_NO_FUNDS.md
│ │ │ │ │ │ ├── MOCKS_WITH_NULL_ORGANIZATION.md
│ │ │ │ │ │ ├── MOCKS_WITH_PENDING_CAMPAIGN.md
│ │ │ │ │ │ ├── MOCKS_WITH_UNDEFINED_CAMPAIGNS.md
│ │ │ │ │ │ └── USER_FUND_CAMPAIGNS_ERROR.md
│ │ │ │ │ └── PledgeModal/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── areOptionsEqual.md
│ │ │ │ │ │ └── getMemberLabel.md
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── InterfacePledgeModal.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Chat/
│ │ │ │ │ └── Chat/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Donate/
│ │ │ │ │ └── Donate/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Events/
│ │ │ │ │ └── Events/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── computeCalendarFromStartDate.md
│ │ │ │ │ └── default.md
│ │ │ │ ├── LeaveOrganization/
│ │ │ │ │ └── LeaveOrganization/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── userEmail.md
│ │ │ │ │ └── userId.md
│ │ │ │ ├── Organizations/
│ │ │ │ │ └── Organizations/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── People/
│ │ │ │ │ └── People/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Pledges/
│ │ │ │ │ ├── Pledges/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── PledgesMocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── MOCKS.md
│ │ │ │ ├── Transactions/
│ │ │ │ │ └── Transactions/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── UserGlobalScreen/
│ │ │ │ │ └── UserGlobalScreen/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── UserScreen/
│ │ │ │ │ └── UserScreen/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ └── Volunteer/
│ │ │ │ ├── Actions/
│ │ │ │ │ ├── Actions/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── Actions.mocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ ├── ERROR_MOCKS.md
│ │ │ │ │ └── MOCKS.md
│ │ │ │ ├── Groups/
│ │ │ │ │ ├── GroupModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceGroupModal.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── Groups/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── Groups.mocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ └── UPDATE_ERROR_MOCKS.md
│ │ │ │ ├── Invitations/
│ │ │ │ │ └── Invitations/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── UpcomingEvents/
│ │ │ │ │ ├── RecurringEventVolunteerModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── UpcomingEvents/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── getStatusBadgeProps.md
│ │ │ │ │ ├── UpcomingEvents.mockEvents/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── baseRecurringEvent.md
│ │ │ │ │ │ ├── duplicateInstanceEvent.md
│ │ │ │ │ │ ├── event1.md
│ │ │ │ │ │ ├── event2.md
│ │ │ │ │ │ ├── event3.md
│ │ │ │ │ │ ├── nullVolunteerGroups.md
│ │ │ │ │ │ ├── pastEvent.md
│ │ │ │ │ │ └── recurringInstanceEvent.md
│ │ │ │ │ ├── UpcomingEvents.mockHelpers/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ ├── createEventVolunteer.md
│ │ │ │ │ │ │ └── createMembershipRecord.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceEventVolunteerOverride.md
│ │ │ │ │ │ └── InterfaceMembershipOptions.md
│ │ │ │ │ └── UpcomingEvents.mocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── EMPTY_MOCKS.md
│ │ │ │ │ ├── ERROR_MOCKS.md
│ │ │ │ │ ├── MEMBERSHIP_LOOKUP_MOCKS.md
│ │ │ │ │ └── MOCKS.md
│ │ │ │ └── VolunteerManagement/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── setup/
│ │ │ │ ├── askAndSetDockerOption/
│ │ │ │ │ └── askAndSetDockerOption/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── askAndUpdatePort/
│ │ │ │ │ └── askAndUpdatePort/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── askForCustomPort/
│ │ │ │ │ └── askForCustomPort/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── askForCustomPort.md
│ │ │ │ │ ├── reservedPortWarning.md
│ │ │ │ │ └── validatePort.md
│ │ │ │ ├── askForDocker/
│ │ │ │ │ └── askForDocker/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── askAndUpdateTalawaApiUrl.md
│ │ │ │ │ └── askForDocker.md
│ │ │ │ ├── askForTalawaApiUrl/
│ │ │ │ │ └── askForTalawaApiUrl/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── askForTalawaApiUrl.md
│ │ │ │ ├── backupEnvFile/
│ │ │ │ │ └── backupEnvFile/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── backupEnvFile.md
│ │ │ │ ├── checkConnection/
│ │ │ │ │ └── checkConnection/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── checkConnection.md
│ │ │ │ ├── checkEnvFile/
│ │ │ │ │ └── checkEnvFile/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── checkEnvFile.md
│ │ │ │ │ └── modifyEnvFile.md
│ │ │ │ ├── setup/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── askAndSetLogErrors.md
│ │ │ │ │ │ ├── askAndSetRecaptcha.md
│ │ │ │ │ │ └── main.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── ENV_KEYS.md
│ │ │ │ │ └── ENV_VALUES.md
│ │ │ │ ├── updateEnvFile/
│ │ │ │ │ └── updateEnvFile/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── updateEnvFile.md
│ │ │ │ └── validateRecaptcha/
│ │ │ │ └── validateRecaptcha/
│ │ │ │ └── functions/
│ │ │ │ └── validateRecaptcha.md
│ │ │ ├── shared-components/
│ │ │ │ ├── ActionItems/
│ │ │ │ │ ├── ActionItem.mocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── MOCKS.md
│ │ │ │ │ │ ├── MOCKS_ERROR.md
│ │ │ │ │ │ ├── actionItemCategory1.md
│ │ │ │ │ │ ├── actionItemCategory2.md
│ │ │ │ │ │ ├── actionItemCategoryListQuery.md
│ │ │ │ │ │ ├── actionItemListQuery.md
│ │ │ │ │ │ ├── actionItemListQueryError.md
│ │ │ │ │ │ ├── baseActionItem.md
│ │ │ │ │ │ ├── completeActionForInstanceMutation.md
│ │ │ │ │ │ ├── completeActionForInstanceMutationError.md
│ │ │ │ │ │ ├── deleteActionItemForInstanceMutation.md
│ │ │ │ │ │ ├── deleteActionItemForInstanceMutationError.md
│ │ │ │ │ │ ├── deleteActionItemMutation.md
│ │ │ │ │ │ ├── deleteActionItemMutationError.md
│ │ │ │ │ │ ├── itemWithEmptyAssigneeName.md
│ │ │ │ │ │ ├── itemWithUser1.md
│ │ │ │ │ │ ├── itemWithUser2.md
│ │ │ │ │ │ ├── itemWithVolunteerGroup.md
│ │ │ │ │ │ ├── itemWithoutAssignee.md
│ │ │ │ │ │ ├── itemWithoutCategory.md
│ │ │ │ │ │ ├── markActionAsPendingForInstanceMutation.md
│ │ │ │ │ │ ├── markActionAsPendingForInstanceMutationError.md
│ │ │ │ │ │ ├── markActionItemAsPendingMutation.md
│ │ │ │ │ │ ├── markActionItemAsPendingMutationError.md
│ │ │ │ │ │ ├── memberListQuery.md
│ │ │ │ │ │ └── updateActionItemMutation.md
│ │ │ │ │ ├── ActionItemDeleteModal/
│ │ │ │ │ │ └── ActionItemDeleteModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── IItemDeleteModalProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── ActionItemModal/
│ │ │ │ │ │ └── ActionItemModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── ActionItemUpdateModal/
│ │ │ │ │ │ └── ActionItemUpdateStatusModal/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── IItemUpdateStatusModalProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── ActionItemViewModal/
│ │ │ │ │ └── ActionItemViewModal/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── IViewModalProps.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── EmailField/
│ │ │ │ │ │ └── EmailField/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── EmailField.md
│ │ │ │ │ ├── FormField/
│ │ │ │ │ │ └── FormField/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── FormField.md
│ │ │ │ │ └── PasswordField/
│ │ │ │ │ └── PasswordField/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── PasswordField.md
│ │ │ │ ├── Avatar/
│ │ │ │ │ └── Avatar/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── BaseModal/
│ │ │ │ │ └── BaseModal/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── BreadcrumbsComponent/
│ │ │ │ │ ├── SafeBreadcrumbs/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── functions/
│ │ │ │ │ └── BreadcrumbsComponent.md
│ │ │ │ ├── Button/
│ │ │ │ │ ├── Button.types/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceButtonProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── ButtonIconPosition.md
│ │ │ │ │ │ ├── ButtonProps.md
│ │ │ │ │ │ ├── ButtonSize.md
│ │ │ │ │ │ └── ButtonVariant.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── Button.md
│ │ │ │ ├── CRUDModalTemplate/
│ │ │ │ │ ├── CRUDModalTemplate/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── CRUDModalTemplate.md
│ │ │ │ │ ├── CreateModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── CreateModal.md
│ │ │ │ │ ├── CreateModal.stories/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── BasicUsage.md
│ │ │ │ │ │ ├── ComplexForm.md
│ │ │ │ │ │ ├── LoadingState.md
│ │ │ │ │ │ ├── SubmitDisabled.md
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── DeleteModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── DeleteModal.md
│ │ │ │ │ ├── DeleteModal.stories/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── BasicUsage.md
│ │ │ │ │ │ ├── DeleteOrganization.md
│ │ │ │ │ │ ├── RecurringEvent.md
│ │ │ │ │ │ ├── WithWarning.md
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EditModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── EditModal.md
│ │ │ │ │ ├── EditModal.stories/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── BasicUsage.md
│ │ │ │ │ │ ├── ComplexForm.md
│ │ │ │ │ │ ├── LoadingData.md
│ │ │ │ │ │ ├── SubmitDisabled.md
│ │ │ │ │ │ ├── SubmittingState.md
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── ViewModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── ViewModal.md
│ │ │ │ │ ├── ViewModal.stories/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── BasicUsage.md
│ │ │ │ │ │ ├── LoadingState.md
│ │ │ │ │ │ ├── OrganizationDetails.md
│ │ │ │ │ │ ├── UserProfile.md
│ │ │ │ │ │ ├── WithCustomActions.md
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── hooks/
│ │ │ │ │ ├── useFormModal/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── useFormModal.md
│ │ │ │ │ ├── useModalState/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── useModalState.md
│ │ │ │ │ └── useMutationModal/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── useMutationModal.md
│ │ │ │ ├── CheckIn/
│ │ │ │ │ ├── CheckInMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── checkInMutationSuccess.md
│ │ │ │ │ │ ├── checkInMutationSuccessRecurring.md
│ │ │ │ │ │ ├── checkInMutationUnsuccess.md
│ │ │ │ │ │ └── checkInQueryMock.md
│ │ │ │ │ ├── CheckInWrapper/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── CheckInWrapper.md
│ │ │ │ │ ├── Modal/
│ │ │ │ │ │ ├── CheckInModal/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── CheckInModal.md
│ │ │ │ │ │ └── Row/
│ │ │ │ │ │ └── TableRow/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── TableRow.md
│ │ │ │ │ └── tagTemplate/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── tagTemplate.md
│ │ │ │ ├── DataGridWrapper/
│ │ │ │ │ ├── DataGridErrorOverlay/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── DataGridErrorOverlay.md
│ │ │ │ │ ├── DataGridLoadingOverlay/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── DataGridLoadingOverlay.md
│ │ │ │ │ ├── DataGridWrapper/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ ├── DataGridWrapper.md
│ │ │ │ │ │ └── convertTokenColumns.md
│ │ │ │ │ └── DataGridWrapper.stories/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── BasicUsage.md
│ │ │ │ │ ├── CompleteExample.md
│ │ │ │ │ ├── EmptyState.md
│ │ │ │ │ ├── ErrorState.md
│ │ │ │ │ ├── LoadingState.md
│ │ │ │ │ ├── SearchWithNoResults.md
│ │ │ │ │ ├── WithActionColumn.md
│ │ │ │ │ ├── WithPagination.md
│ │ │ │ │ ├── WithRowClick.md
│ │ │ │ │ ├── WithSearch.md
│ │ │ │ │ ├── WithSorting.md
│ │ │ │ │ └── default.md
│ │ │ │ ├── DataTable/
│ │ │ │ │ ├── BulkActionsBar/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── BulkActionsBar.md
│ │ │ │ │ ├── DataTable/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ ├── DataTable.md
│ │ │ │ │ │ └── defaultCompare.md
│ │ │ │ │ ├── DataTableSkeleton/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── DataTableSkeleton.md
│ │ │ │ │ ├── DataTableTable/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── DataTableTable.md
│ │ │ │ │ ├── LoadingMoreRows/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── LoadingMoreRows.md
│ │ │ │ │ ├── Pagination/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── PaginationControls.md
│ │ │ │ │ ├── SearchBar/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── SearchBar.md
│ │ │ │ │ ├── TableLoader/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── TableLoader.md
│ │ │ │ │ ├── cells/
│ │ │ │ │ │ └── ActionsCell/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── ActionsCell.md
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ ├── useDataTableFiltering/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── useDataTableFiltering.md
│ │ │ │ │ │ ├── useDataTableSelection/
│ │ │ │ │ │ │ └── functions/
│ │ │ │ │ │ │ └── useDataTableSelection.md
│ │ │ │ │ │ ├── useSimpleTableData/
│ │ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ │ └── useSimpleTableData.md
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── IUseSimpleTableDataOptions.md
│ │ │ │ │ │ │ └── IUseSimpleTableDataResult.md
│ │ │ │ │ │ └── useTableData/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── useTableData.md
│ │ │ │ │ └── utils/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── getCellValue.md
│ │ │ │ │ ├── renderCellValue.md
│ │ │ │ │ ├── renderHeader.md
│ │ │ │ │ └── toSearchableString.md
│ │ │ │ ├── DatePicker/
│ │ │ │ │ └── DatePicker/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── DateRangePicker/
│ │ │ │ │ └── DateRangePicker/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── DropDownButton/
│ │ │ │ │ ├── DropDownButton.mocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── baseProps.md
│ │ │ │ │ │ ├── basicOptions.md
│ │ │ │ │ │ ├── customLabelProps.md
│ │ │ │ │ │ ├── disabledDropdownProps.md
│ │ │ │ │ │ ├── disabledOptionProps.md
│ │ │ │ │ │ ├── dropUpProps.md
│ │ │ │ │ │ ├── mockOnSelect.md
│ │ │ │ │ │ ├── noSelectionProps.md
│ │ │ │ │ │ ├── noTestIdProps.md
│ │ │ │ │ │ ├── optionsWithDisabled.md
│ │ │ │ │ │ ├── optionsWithNonStringLabel.md
│ │ │ │ │ │ ├── searchableMinimalProps.md
│ │ │ │ │ │ ├── searchableOptionsForCoverage.md
│ │ │ │ │ │ ├── styledProps.md
│ │ │ │ │ │ ├── variantProps.md
│ │ │ │ │ │ ├── withIconProps.md
│ │ │ │ │ │ ├── withIconSearchProps.md
│ │ │ │ │ │ └── withNonStringLabelProps.md
│ │ │ │ │ ├── SearchToggle/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── DropDownButton.md
│ │ │ │ ├── EmptyState/
│ │ │ │ │ ├── EmptyState/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── EmptyStateMocks/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── emptyStateBaseForActionMock.md
│ │ │ │ │ ├── emptyStateBaseMock.md
│ │ │ │ │ ├── emptyStateWithAllPropsMock.md
│ │ │ │ │ ├── emptyStateWithCustomCSSMock.md
│ │ │ │ │ ├── emptyStateWithCustomDataTestIdMock.md
│ │ │ │ │ ├── emptyStateWithCustomIconMock.md
│ │ │ │ │ ├── emptyStateWithDescriptionMock.md
│ │ │ │ │ └── emptyStateWithIconMock.md
│ │ │ │ ├── ErrorBoundaryWrapper/
│ │ │ │ │ └── ErrorBoundaryWrapper/
│ │ │ │ │ └── classes/
│ │ │ │ │ └── ErrorBoundaryWrapper.md
│ │ │ │ ├── ErrorPanel/
│ │ │ │ │ └── ErrorPanel/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── InterfaceErrorPanelProps.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── EventForm/
│ │ │ │ │ ├── EventForm/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── formatRecurrenceForPayload.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── RecurrenceDropdown/
│ │ │ │ │ │ └── RecurrenceDropdown/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── VisibilitySelector/
│ │ │ │ │ │ └── VisibilitySelector/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── recurrenceOptions/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── buildRecurrenceOptions.md
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceRecurrenceOption.md
│ │ │ │ │ ├── timeUtils/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── timeToDayJs.md
│ │ │ │ │ └── visibilityUtils/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── getVisibilityType.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── EventVisibility.md
│ │ │ │ ├── EventListCard/
│ │ │ │ │ ├── EventListCard/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EventListCardProps.mock/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── props.md
│ │ │ │ │ └── Modal/
│ │ │ │ │ ├── Delete/
│ │ │ │ │ │ └── EventListCardDeleteModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── EventListCardMocks/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── ERROR_MOCKS.md
│ │ │ │ │ │ └── MOCKS.md
│ │ │ │ │ ├── EventListCardModals/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── Preview/
│ │ │ │ │ │ └── EventListCardPreviewModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── updateLogic/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── useUpdateEventHandler.md
│ │ │ │ ├── FormFieldGroup/
│ │ │ │ │ ├── FormCheckField/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── FormCheckField.md
│ │ │ │ │ ├── FormFieldGroup/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── FormFieldGroup.md
│ │ │ │ │ ├── FormSelectField/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── FormSelectField.md
│ │ │ │ │ └── FormTextField/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── FormTextField.md
│ │ │ │ ├── InfiniteScrollLoader/
│ │ │ │ │ └── InfiniteScrollLoader/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── LoadingState/
│ │ │ │ │ └── LoadingState/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── Navbar/
│ │ │ │ │ └── Navbar/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── NotificationToast/
│ │ │ │ │ └── NotificationToast/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── NotificationToastContainer.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── NotificationToast.md
│ │ │ │ ├── OrganizationCard/
│ │ │ │ │ └── OrganizationCard/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceOrganizationCardPropsPG.md
│ │ │ │ ├── PaginationList/
│ │ │ │ │ └── PaginationList/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── PeopleTabNavbar/
│ │ │ │ │ └── PeopleTabNavbar/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── PeopleTabNavbarButton/
│ │ │ │ │ └── PeopleTabNavbarButton/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── PeopleTabUserEvents/
│ │ │ │ │ └── PeopleTabUserEvents/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── PeopleTabUserOrganization/
│ │ │ │ │ └── PeopleTabUserOrganizations/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── PostViewModal/
│ │ │ │ │ └── PostViewModal/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── ProfileAvatarDisplay/
│ │ │ │ │ └── ProfileAvatarDisplay/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── ProfileAvatarDisplay.md
│ │ │ │ ├── Recurrence/
│ │ │ │ │ ├── CustomRecurrenceModal/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── RecurrenceEndOptionsSection/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── RecurrenceEndOptionsSection.md
│ │ │ │ │ ├── RecurrenceFrequencySection/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── RecurrenceFrequencySection.md
│ │ │ │ │ ├── RecurrenceMonthlySection/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── RecurrenceMonthlySection.md
│ │ │ │ │ ├── RecurrenceWeeklySection/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── RecurrenceWeeklySection.md
│ │ │ │ │ └── RecurrenceYearlySection/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── RecurrenceYearlySection.md
│ │ │ │ ├── ReportingTable/
│ │ │ │ │ └── ReportingTable/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ └── adjustColumnsForCompactMode.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SearchBar/
│ │ │ │ │ └── SearchBar/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SearchFilterBar/
│ │ │ │ │ └── SearchFilterBar/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SidebarBase/
│ │ │ │ │ └── SidebarBase/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SidebarNavItem/
│ │ │ │ │ └── SidebarNavItem/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SidebarOrgSection/
│ │ │ │ │ └── SidebarOrgSection/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SidebarPluginSection/
│ │ │ │ │ └── SidebarPluginSection/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── SortingButton/
│ │ │ │ │ └── SortingButton/
│ │ │ │ │ ├── namespaces/
│ │ │ │ │ │ └── default/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── propTypes.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── StatusBadge/
│ │ │ │ │ └── StatusBadge/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── TableLoader/
│ │ │ │ │ └── TableLoader/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── TimePicker/
│ │ │ │ │ └── TimePicker/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── TruncatedText/
│ │ │ │ │ └── TruncatedText/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── VolunteerGroupViewModal/
│ │ │ │ │ └── VolunteerGroupViewModal/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── pinnedPosts/
│ │ │ │ │ ├── pinnedPostCard/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── pinnedPostsLayout/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ ├── postCard/
│ │ │ │ │ └── PostCard/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── posts/
│ │ │ │ │ ├── createPostModal/
│ │ │ │ │ │ └── createPostModal/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── helperFunctions/
│ │ │ │ │ │ └── functions/
│ │ │ │ │ │ └── formatPostForCard.md
│ │ │ │ │ └── posts/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ └── useDebounce/
│ │ │ │ └── useDebounce/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── state/
│ │ │ │ ├── action-creators/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── updateTargets.md
│ │ │ │ ├── helpers/
│ │ │ │ │ └── Action/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceAction.md
│ │ │ │ ├── hooks/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── useAppDispatch.md
│ │ │ │ ├── reducers/
│ │ │ │ │ ├── routesReducer/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ ├── default.md
│ │ │ │ │ │ │ └── generateRoutes.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── ComponentType.md
│ │ │ │ │ │ ├── SubTargetType.md
│ │ │ │ │ │ └── TargetsType.md
│ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ └── RootState.md
│ │ │ │ │ ├── userRoutesReducer/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── ComponentType.md
│ │ │ │ │ │ ├── SubTargetType.md
│ │ │ │ │ │ └── TargetsType.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── reducers.md
│ │ │ │ └── store/
│ │ │ │ ├── type-aliases/
│ │ │ │ │ └── AppDispatch.md
│ │ │ │ └── variables/
│ │ │ │ └── store.md
│ │ │ ├── test-utils/
│ │ │ │ ├── AsyncComponent/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── ComplexLoader/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── CustomDashboardLoader/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── CustomLoader/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── I18nextProviderMock/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── I18nextProvider.md
│ │ │ │ ├── MockBrowserRouter/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── default.md
│ │ │ │ ├── TestErrorBoundary/
│ │ │ │ │ └── classes/
│ │ │ │ │ └── TestErrorBoundary.md
│ │ │ │ ├── TestWrapper/
│ │ │ │ │ └── functions/
│ │ │ │ │ └── TestWrapper.md
│ │ │ │ ├── check-i18n/
│ │ │ │ │ └── check-i18n.test-utils/
│ │ │ │ │ ├── functions/
│ │ │ │ │ │ ├── cleanupTempDirs.md
│ │ │ │ │ │ ├── makeTempDir.md
│ │ │ │ │ │ ├── runScript.md
│ │ │ │ │ │ └── writeTempFile.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── fixturesDir.md
│ │ │ │ │ └── scriptPath.md
│ │ │ │ ├── localStorageMock/
│ │ │ │ │ └── functions/
│ │ │ │ │ ├── createLocalStorageMock.md
│ │ │ │ │ └── setupLocalStorageMock.md
│ │ │ │ └── mocks/
│ │ │ │ └── react-bootstrap/
│ │ │ │ ├── Dropdown/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── Dropdown.md
│ │ │ │ ├── components/
│ │ │ │ │ ├── DropdownBase/
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ └── DivProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── DropdownItem/
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ └── BtnProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ ├── DropdownMenu/
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ └── DivProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── DropdownToggle/
│ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ └── BtnProps.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── default.md
│ │ │ │ └── types/
│ │ │ │ ├── interfaces/
│ │ │ │ │ └── InterfaceDropdown.md
│ │ │ │ └── type-aliases/
│ │ │ │ ├── BtnProps.md
│ │ │ │ └── DivProps.md
│ │ │ ├── types/
│ │ │ │ ├── AdminPortal/
│ │ │ │ │ ├── Advertisement/
│ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── InterfaceAddOnEntryProps.md
│ │ │ │ │ │ │ ├── InterfaceAddOnRegisterProps.md
│ │ │ │ │ │ │ └── InterfaceFormStateTypes.md
│ │ │ │ │ │ └── type/
│ │ │ │ │ │ ├── enumerations/
│ │ │ │ │ │ │ └── AdvertisementType.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── Advertisement.md
│ │ │ │ │ │ ├── AdvertisementAttachment.md
│ │ │ │ │ │ ├── AdvertisementEdge.md
│ │ │ │ │ │ ├── AdvertisementsConnection.md
│ │ │ │ │ │ ├── CreateAdvertisementInput.md
│ │ │ │ │ │ └── CreateAdvertisementPayload.md
│ │ │ │ │ ├── Agenda/
│ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── InterfaceAgendaDragAndDropProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderCreateFormStateType.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderCreateModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderDeleteModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderInfo.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderList.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderUpdateFormStateType.md
│ │ │ │ │ │ │ ├── InterfaceAgendaFolderUpdateModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemCategoryInfo.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemCategoryList.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemInfo.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemsCreateModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemsDeleteModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemsPreviewModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAgendaItemsUpdateModalProps.md
│ │ │ │ │ │ │ ├── InterfaceAttachment.md
│ │ │ │ │ │ │ ├── InterfaceCreateFormStateType.md
│ │ │ │ │ │ │ ├── InterfaceFormStateType.md
│ │ │ │ │ │ │ ├── InterfaceItemFormStateType.md
│ │ │ │ │ │ │ └── InterfaceUseAgendaMutationsProps.md
│ │ │ │ │ │ └── type/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── AgendaCategory.md
│ │ │ │ │ ├── ApplyToSelector/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceApplyToSelectorProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── ApplyToType.md
│ │ │ │ │ ├── AssignmentTypeSelector/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceAssignmentTypeSelectorProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── AssignmentType.md
│ │ │ │ │ ├── Contribution/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceContriStatsProps.md
│ │ │ │ │ │ └── InterfaceOrgContriCardsProps.md
│ │ │ │ │ ├── EventRegistrantsModal/
│ │ │ │ │ │ ├── AddOnSpot/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── InterfaceAddOnSpotAttendeeProps.md
│ │ │ │ │ │ │ └── InterfaceFormData.md
│ │ │ │ │ │ ├── InviteByEmail/
│ │ │ │ │ │ │ └── interface/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ └── InterfaceInviteByEmailModalProps.md
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceAutocompleteMockProps.md
│ │ │ │ │ │ ├── InterfaceBaseModalProps.md
│ │ │ │ │ │ └── InterfaceEventRegistrantsModalProps.md
│ │ │ │ │ ├── EventRegistrantsWrapper/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceEventRegistrantsWrapperProps.md
│ │ │ │ │ ├── MemberDetail/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── InterfaceAddressFieldConfig.md
│ │ │ │ │ │ │ ├── InterfacePhoneFieldConfig.md
│ │ │ │ │ │ │ └── InterfaceResolveAvatarFileParams.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── InterfaceMemberDetailProps.md
│ │ │ │ │ ├── OrgUpdate/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceMutationUpdateOrganizationInput.md
│ │ │ │ │ │ ├── InterfaceOrgUpdateProps.md
│ │ │ │ │ │ └── InterfaceOrganization.md
│ │ │ │ │ ├── Organization/
│ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── InterfaceOrgPeopleListCardProps.md
│ │ │ │ │ │ │ └── InterfaceOrgPostCardProps.md
│ │ │ │ │ │ └── type/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── Organization.md
│ │ │ │ │ │ ├── OrganizationCustomField.md
│ │ │ │ │ │ └── OrganizationInput.md
│ │ │ │ │ ├── OrganizationDashCards/
│ │ │ │ │ │ └── CardItem/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceCardItem.md
│ │ │ │ │ ├── OrganizationPeople/
│ │ │ │ │ │ └── addMember/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceAddMemberProps.md
│ │ │ │ │ ├── PluginStore/
│ │ │ │ │ │ └── UninstallConfirmationModal/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── IUninstallConfirmationModalProps.md
│ │ │ │ │ ├── Tag/
│ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── InterfaceAddPeopleToTagProps.md
│ │ │ │ │ │ │ ├── InterfaceBaseFetchMoreOptions.md
│ │ │ │ │ │ │ ├── InterfaceBaseQueryResult.md
│ │ │ │ │ │ │ ├── InterfaceMemberData.md
│ │ │ │ │ │ │ ├── InterfacePaginationVariables.md
│ │ │ │ │ │ │ ├── InterfaceQueryUserTagsMembersToAssignTo.md
│ │ │ │ │ │ │ ├── InterfaceTagMembersData.md
│ │ │ │ │ │ │ └── InterfaceTagUsersToAssignToQuery.md
│ │ │ │ │ │ └── utils/
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── TAGS_QUERY_DATA_CHUNK_SIZE.md
│ │ │ │ │ │ └── dataGridStyle.md
│ │ │ │ │ ├── TagActions/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceTagActionsProps.md
│ │ │ │ │ ├── UpdateSession/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceUpdateSessionProps.md
│ │ │ │ │ ├── UserDetails/
│ │ │ │ │ │ ├── UserEvent/
│ │ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ │ ├── InterfaceGQLEventLite.md
│ │ │ │ │ │ │ │ │ ├── InterfaceGQLOrganization.md
│ │ │ │ │ │ │ │ │ ├── InterfaceGQLUser.md
│ │ │ │ │ │ │ │ │ ├── InterfaceGetUserEventsData.md
│ │ │ │ │ │ │ │ │ ├── InterfaceUserEvent.md
│ │ │ │ │ │ │ │ │ └── InterfaceUserEventsGQL.md
│ │ │ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ │ │ └── ParticipationFilter.md
│ │ │ │ │ │ │ └── type/
│ │ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ │ └── PeopleTabUserEventsProps.md
│ │ │ │ │ │ ├── UserOrganization/
│ │ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ │ ├── InterfaceJoinedOrgEdge.md
│ │ │ │ │ │ │ │ └── InterfaceJoinedOrganizationsData.md
│ │ │ │ │ │ │ └── type/
│ │ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ │ ├── InterfaceOrgRelationType.md
│ │ │ │ │ │ │ ├── InterfaceUserOrg.md
│ │ │ │ │ │ │ └── InterfaceUserOrganizationsProps.md
│ │ │ │ │ │ └── UserTags/
│ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ │ ├── InterfaceGetUserTagsData.md
│ │ │ │ │ │ │ ├── InterfaceUserTag.md
│ │ │ │ │ │ │ └── InterfaceUserTagGQL.md
│ │ │ │ │ │ └── type/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── InterfaceUserTagsProps.md
│ │ │ │ │ ├── UserTableRow/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── InterfaceActionButton.md
│ │ │ │ │ │ │ ├── InterfaceUserInfo.md
│ │ │ │ │ │ │ └── InterfaceUserTableRowProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── InterfaceActionVariant.md
│ │ │ │ │ ├── VolunteerDeleteModal/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceVolunteerDeleteModalProps.md
│ │ │ │ │ ├── VolunteerViewModal/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceVolunteerViewModalProps.md
│ │ │ │ │ ├── actionItem/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── ActionItem.md
│ │ │ │ │ │ ├── ActionItemCategory.md
│ │ │ │ │ │ ├── CreateActionItemInput.md
│ │ │ │ │ │ └── UpdateActionItemInput.md
│ │ │ │ │ ├── address/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── Address.md
│ │ │ │ │ │ └── AddressInput.md
│ │ │ │ │ ├── membership/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── MembershipRequest.md
│ │ │ │ │ ├── pagination/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── DefaultConnectionPageInfo.md
│ │ │ │ │ └── venue/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── EditVenueInput.md
│ │ │ │ │ ├── Venue.md
│ │ │ │ │ └── VenueInput.md
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── LoginForm/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceLoginFormData.md
│ │ │ │ │ │ ├── InterfaceLoginFormProps.md
│ │ │ │ │ │ └── InterfaceSignInResult.md
│ │ │ │ │ ├── OrgSelector/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceOrgOption.md
│ │ │ │ │ │ └── InterfaceOrgSelectorProps.md
│ │ │ │ │ ├── PasswordStrengthIndicator/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfacePasswordStrengthIndicatorProps.md
│ │ │ │ │ ├── RegistrationForm/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── IRegistrationFormData.md
│ │ │ │ │ │ └── IRegistrationFormProps.md
│ │ │ │ │ ├── ValidationInterfaces/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfacePasswordRequirements.md
│ │ │ │ │ │ └── InterfaceValidationResult.md
│ │ │ │ │ ├── auth/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── IOAuthProviderConfig.md
│ │ │ │ │ │ │ ├── InterfaceAuthenticationPayload.md
│ │ │ │ │ │ │ ├── InterfaceOAuthAccount.md
│ │ │ │ │ │ │ ├── InterfaceOAuthLinkResponse.md
│ │ │ │ │ │ │ └── InterfaceOAuthLoginInput.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── OAuthProviderKey.md
│ │ │ │ │ ├── useFieldValidation/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── IUseFieldValidationReturn.md
│ │ │ │ │ │ │ └── IValidationResult.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── ValidationTrigger.md
│ │ │ │ │ ├── useLogin/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── ILoginCredentials.md
│ │ │ │ │ │ └── IUseLoginOptions.md
│ │ │ │ │ └── usePasswordVisibility/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── IUsePasswordVisibilityReturn.md
│ │ │ │ ├── Comment/
│ │ │ │ │ └── type/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── Comment.md
│ │ │ │ │ └── CommentInput.md
│ │ │ │ ├── CursorPagination/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── InterfaceConnectionData.md
│ │ │ │ │ │ ├── InterfaceCursorPaginationManagerProps.md
│ │ │ │ │ │ └── InterfaceCursorPaginationManagerRef.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── PaginationVariables.md
│ │ │ │ ├── DataGridWrapper/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── InterfaceDataGridWrapperProps.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── TokenAwareGridColDef.md
│ │ │ │ ├── DropDown/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceCollapsibleDropdown.md
│ │ │ │ │ └── InterfaceDropDownProps.md
│ │ │ │ ├── Event/
│ │ │ │ │ ├── interface/
│ │ │ │ │ │ ├── enumerations/
│ │ │ │ │ │ │ └── UserRole.md
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── IAttendanceStatisticsModalProps.md
│ │ │ │ │ │ │ ├── ICalendarProps.md
│ │ │ │ │ │ │ ├── ICreateEventInput.md
│ │ │ │ │ │ │ ├── IDeleteEventModalProps.md
│ │ │ │ │ │ │ ├── IEvent.md
│ │ │ │ │ │ │ ├── IEventEdge.md
│ │ │ │ │ │ │ ├── IEventHeaderProps.md
│ │ │ │ │ │ │ ├── IEventListCard.md
│ │ │ │ │ │ │ ├── IMember.md
│ │ │ │ │ │ │ ├── IOrgList.md
│ │ │ │ │ │ │ ├── IPreviewEventModalProps.md
│ │ │ │ │ │ │ ├── IStatsModal.md
│ │ │ │ │ │ │ └── IUpdateEventModalProps.md
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ ├── InterfaceAttendanceStatisticsModalProps.md
│ │ │ │ │ │ │ ├── InterfaceCalendarProps.md
│ │ │ │ │ │ │ ├── InterfaceDeleteEventModalProps.md
│ │ │ │ │ │ │ ├── InterfaceEvent.md
│ │ │ │ │ │ │ ├── InterfaceEventEdge.md
│ │ │ │ │ │ │ ├── InterfaceEventHeaderProps.md
│ │ │ │ │ │ │ ├── InterfaceIOrgList.md
│ │ │ │ │ │ │ ├── InterfaceMember.md
│ │ │ │ │ │ │ ├── InterfacePreviewEventModalProps.md
│ │ │ │ │ │ │ ├── InterfaceStatsModal.md
│ │ │ │ │ │ │ └── InterfaceUpdateEventModalProps.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ └── FilterPeriod.md
│ │ │ │ │ ├── type/
│ │ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ │ ├── Event.md
│ │ │ │ │ │ │ ├── EventAttendeeInput.md
│ │ │ │ │ │ │ ├── EventInput.md
│ │ │ │ │ │ │ ├── EventOrderByInput.md
│ │ │ │ │ │ │ ├── EventVolunteer.md
│ │ │ │ │ │ │ ├── EventVolunteerInput.md
│ │ │ │ │ │ │ ├── EventVolunteerResponse.md
│ │ │ │ │ │ │ ├── EventWhereInput.md
│ │ │ │ │ │ │ ├── Feedback.md
│ │ │ │ │ │ │ ├── FeedbackInput.md
│ │ │ │ │ │ │ ├── UpdateEventVolunteerInput.md
│ │ │ │ │ │ │ └── User.md
│ │ │ │ │ │ └── variables/
│ │ │ │ │ │ ├── EventOrderByInputEnum.md
│ │ │ │ │ │ └── EventVolunteerResponseEnum.md
│ │ │ │ │ └── utils/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── InterfaceHoliday.md
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── holidays.md
│ │ │ │ │ └── weekdays.md
│ │ │ │ ├── EventForm/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── IEventFormProps.md
│ │ │ │ │ ├── IEventFormSubmitPayload.md
│ │ │ │ │ └── IEventFormValues.md
│ │ │ │ ├── FormFieldGroup/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── IFormTextFieldProps.md
│ │ │ │ │ └── InterfaceFormFieldGroupProps.md
│ │ │ │ ├── OrganizationCard/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceOrganizationCardProps.md
│ │ │ │ ├── PeopleTab/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfacePageHeaderProps.md
│ │ │ │ │ ├── InterfacePeopleTab.md
│ │ │ │ │ ├── InterfacePeopleTabNavbar.md
│ │ │ │ │ ├── InterfacePeopleTabNavbarProps.md
│ │ │ │ │ ├── InterfacePeopleTabUserOrganizationProps.md
│ │ │ │ │ └── InterfacePeopletabUserEventsProps.md
│ │ │ │ ├── Post/
│ │ │ │ │ ├── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── ICreatePostModalProps.md
│ │ │ │ │ │ ├── InterfaceAttachment.md
│ │ │ │ │ │ ├── InterfaceCreator.md
│ │ │ │ │ │ ├── InterfaceMutationCreatePostInput.md
│ │ │ │ │ │ ├── InterfaceOrganization.md
│ │ │ │ │ │ ├── InterfaceOrganizationPostListData.md
│ │ │ │ │ │ ├── InterfacePageInfo.md
│ │ │ │ │ │ ├── InterfacePinnedPostCardProps.md
│ │ │ │ │ │ ├── InterfacePinnedPostsLayoutProps.md
│ │ │ │ │ │ ├── InterfacePost.md
│ │ │ │ │ │ ├── InterfacePostCard.md
│ │ │ │ │ │ ├── InterfacePostConnection.md
│ │ │ │ │ │ ├── InterfacePostCreator.md
│ │ │ │ │ │ ├── InterfacePostEdge.md
│ │ │ │ │ │ └── InterfacePostNode.md
│ │ │ │ │ └── type/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── ICreatePostData.md
│ │ │ │ │ │ ├── ICreatePostInput.md
│ │ │ │ │ │ └── IFileMetadataInput.md
│ │ │ │ │ ├── type-aliases/
│ │ │ │ │ │ ├── Post.md
│ │ │ │ │ │ ├── PostComments.md
│ │ │ │ │ │ ├── PostInput.md
│ │ │ │ │ │ ├── PostLikes.md
│ │ │ │ │ │ ├── PostNode.md
│ │ │ │ │ │ ├── PostOrderByInput.md
│ │ │ │ │ │ ├── PostUpdateInput.md
│ │ │ │ │ │ └── PostWhereInput.md
│ │ │ │ │ └── variables/
│ │ │ │ │ └── PostOrderByInputEnum.md
│ │ │ │ ├── Recurrence/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceCustomRecurrenceModalProps.md
│ │ │ │ ├── ReportingTable/
│ │ │ │ │ ├── interface/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── InfiniteScrollProps.md
│ │ │ │ │ │ ├── ReportingRow.md
│ │ │ │ │ │ ├── ReportingTableColumn.md
│ │ │ │ │ │ ├── ReportingTableGridProps.md
│ │ │ │ │ │ └── ReportingTableProps.md
│ │ │ │ │ └── utils/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── PAGE_SIZE.md
│ │ │ │ │ ├── ROW_HEIGHT.md
│ │ │ │ │ └── dataGridStyle.md
│ │ │ │ ├── SearchBar/
│ │ │ │ │ ├── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceSearchBarProps.md
│ │ │ │ │ │ ├── InterfaceSearchBarRef.md
│ │ │ │ │ │ └── InterfaceSearchMeta.md
│ │ │ │ │ └── type/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── SearchBarSize.md
│ │ │ │ │ ├── SearchBarTrigger.md
│ │ │ │ │ └── SearchBarVariant.md
│ │ │ │ ├── SidebarBase/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── ISidebarBaseProps.md
│ │ │ │ ├── SidebarNavItem/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── ISidebarNavItemProps.md
│ │ │ │ ├── SidebarPluginSection/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── ISidebarPluginSectionProps.md
│ │ │ │ ├── UseUserProfile/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceUseUserProfileReturn.md
│ │ │ │ ├── UserPortal/
│ │ │ │ │ ├── Chat/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── InterfaceChatUser.md
│ │ │ │ │ │ │ ├── InterfaceContactCardProps.md
│ │ │ │ │ │ │ ├── InterfaceGroupChatDetailsProps.md
│ │ │ │ │ │ │ ├── InterfaceMockMessage.md
│ │ │ │ │ │ │ └── InterfaceOrganizationMember.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── Chat.md
│ │ │ │ │ ├── CommentCard/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceCommentCardProps.md
│ │ │ │ │ ├── CreateDirectChat/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ └── InterfaceCreateDirectChatProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── ChatsListRefetch.md
│ │ │ │ │ │ ├── CreateChatMembershipMutation.md
│ │ │ │ │ │ └── CreateChatMutation.md
│ │ │ │ │ ├── Donation/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceDonation.md
│ │ │ │ │ │ └── InterfaceDonationCardProps.md
│ │ │ │ │ ├── EmptyChatState/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceEmptyChatStateProps.md
│ │ │ │ │ ├── EventCard/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceEventCardProps.md
│ │ │ │ │ ├── GroupModal/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceGroupModalProps.md
│ │ │ │ │ ├── RecurringEventVolunteerModal/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceRecurringEventVolunteerModalProps.md
│ │ │ │ │ ├── UserPortalCard/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceUserPortalCardProps.md
│ │ │ │ │ ├── UserPortalNavigationBar/
│ │ │ │ │ │ ├── interface/
│ │ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ │ ├── InterfaceLanguageSelectorProps.md
│ │ │ │ │ │ │ │ ├── InterfaceUserDropdownProps.md
│ │ │ │ │ │ │ │ └── InterfaceUserPortalNavbarProps.md
│ │ │ │ │ │ │ └── variables/
│ │ │ │ │ │ │ ├── DEFAULT_ORGANIZATION_MODE_PROPS.md
│ │ │ │ │ │ │ └── DEFAULT_USER_MODE_PROPS.md
│ │ │ │ │ │ └── types/
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── BrandingConfig.md
│ │ │ │ │ │ ├── Language.md
│ │ │ │ │ │ ├── NavigationLink.md
│ │ │ │ │ │ ├── OrganizationData.md
│ │ │ │ │ │ ├── OrganizationListQueryResponse.md
│ │ │ │ │ │ ├── UserPortalNavbarState.md
│ │ │ │ │ │ └── UserProfileMenuItem.md
│ │ │ │ │ └── UserProfile/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── InterfaceUserProfileProps.md
│ │ │ │ ├── Volunteer/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceCreateVolunteerGroupData.md
│ │ │ │ │ ├── InterfaceEventEdge.md
│ │ │ │ │ ├── InterfaceEventVolunteerInfo.md
│ │ │ │ │ ├── InterfaceMappedEvent.md
│ │ │ │ │ ├── InterfaceVolunteerData.md
│ │ │ │ │ ├── InterfaceVolunteerGroupData.md
│ │ │ │ │ ├── InterfaceVolunteerMembership.md
│ │ │ │ │ └── InterfaceVolunteerStatus.md
│ │ │ │ ├── docker/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── DockerMode.md
│ │ │ │ ├── jsx/
│ │ │ │ │ └── namespaces/
│ │ │ │ │ └── JSX/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── Element.md
│ │ │ │ │ ├── ElementAttributesProperty.md
│ │ │ │ │ ├── ElementChildrenAttribute.md
│ │ │ │ │ ├── ElementClass.md
│ │ │ │ │ ├── IntrinsicAttributes.md
│ │ │ │ │ ├── IntrinsicClassAttributes.md
│ │ │ │ │ ├── IntrinsicElements.md
│ │ │ │ │ └── LibraryManagedAttributes.md
│ │ │ │ └── shared-components/
│ │ │ │ ├── ActionItems/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── IActionItemCategoryInfo.md
│ │ │ │ │ ├── IActionItemCategoryList.md
│ │ │ │ │ ├── IActionItemInfo.md
│ │ │ │ │ ├── IActionItemList.md
│ │ │ │ │ ├── ICreateActionItemInput.md
│ │ │ │ │ ├── ICreateActionItemVariables.md
│ │ │ │ │ ├── IDeleteActionItemInput.md
│ │ │ │ │ ├── IEventVolunteerGroup.md
│ │ │ │ │ ├── IFormStateType.md
│ │ │ │ │ ├── IItemModalProps.md
│ │ │ │ │ ├── IMarkActionItemAsPendingInput.md
│ │ │ │ │ ├── IUpdateActionForInstanceInput.md
│ │ │ │ │ ├── IUpdateActionItemForInstanceInput.md
│ │ │ │ │ ├── IUpdateActionItemForInstanceVariables.md
│ │ │ │ │ └── IUpdateActionItemInput.md
│ │ │ │ ├── ActionsCell/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceActionsCellProps.md
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── EmailField/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceEmailFieldProps.md
│ │ │ │ │ ├── FormField/
│ │ │ │ │ │ └── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── InterfaceFormFieldProps.md
│ │ │ │ │ └── PasswordField/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePasswordFieldProps.md
│ │ │ │ ├── Avatar/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceAvatarProps.md
│ │ │ │ ├── BaseModal/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── IBaseModalProps.md
│ │ │ │ ├── BreadcrumbsComponent/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── IBreadcrumbItem.md
│ │ │ │ │ └── IBreadcrumbsComponentProps.md
│ │ │ │ ├── BulkActionsBar/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceBulkActionsBarProps.md
│ │ │ │ ├── CRUDModalTemplate/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── InterfaceCRUDModalTemplateProps.md
│ │ │ │ │ │ ├── InterfaceCreateModalProps.md
│ │ │ │ │ │ ├── InterfaceCrudModalBaseProps.md
│ │ │ │ │ │ ├── InterfaceDeleteModalProps.md
│ │ │ │ │ │ ├── InterfaceEditModalProps.md
│ │ │ │ │ │ ├── InterfaceModalFormState.md
│ │ │ │ │ │ ├── InterfaceRecurringEventProps.md
│ │ │ │ │ │ ├── InterfaceUseFormModalReturn.md
│ │ │ │ │ │ ├── InterfaceUseModalStateReturn.md
│ │ │ │ │ │ ├── InterfaceUseMutationModalReturn.md
│ │ │ │ │ │ └── InterfaceViewModalProps.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── ModalSize.md
│ │ │ │ ├── CheckIn/
│ │ │ │ │ ├── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceAttendeeCheckIn.md
│ │ │ │ │ │ ├── InterfaceAttendeeQueryResponse.md
│ │ │ │ │ │ ├── InterfaceModalProp.md
│ │ │ │ │ │ ├── InterfaceTableCheckIn.md
│ │ │ │ │ │ ├── InterfaceTableData.md
│ │ │ │ │ │ └── InterfaceUser.md
│ │ │ │ │ └── type/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── CheckIn.md
│ │ │ │ │ ├── CheckInInput.md
│ │ │ │ │ └── CheckInStatus.md
│ │ │ │ ├── CheckInWrapper/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceCheckInWrapperProps.md
│ │ │ │ ├── DataTable/
│ │ │ │ │ ├── column/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ └── IColumnDef.md
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── IBulkAction.md
│ │ │ │ │ │ ├── IRowAction.md
│ │ │ │ │ │ ├── IUseDataTableFilteringOptions.md
│ │ │ │ │ │ ├── IUseDataTableSelectionOptions.md
│ │ │ │ │ │ ├── IUseTableDataOptions.md
│ │ │ │ │ │ └── IUseTableDataResult.md
│ │ │ │ │ ├── pagination/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── InterfacePageInfo.md
│ │ │ │ │ │ │ └── InterfacePaginationControlsProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ ├── Connection.md
│ │ │ │ │ │ ├── Edge.md
│ │ │ │ │ │ └── PageInfo.md
│ │ │ │ │ ├── props/
│ │ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ │ ├── InterfaceBaseDataTableProps.md
│ │ │ │ │ │ │ ├── InterfaceDataTableSkeletonProps.md
│ │ │ │ │ │ │ ├── InterfaceDataTableTableProps.md
│ │ │ │ │ │ │ ├── InterfaceLoadingMoreRowsProps.md
│ │ │ │ │ │ │ ├── InterfaceSearchBarProps.md
│ │ │ │ │ │ │ └── InterfaceTableLoaderProps.md
│ │ │ │ │ │ └── type-aliases/
│ │ │ │ │ │ └── InterfaceDataTableProps.md
│ │ │ │ │ └── types/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── IFilterState.md
│ │ │ │ │ │ ├── ISortChangeEvent.md
│ │ │ │ │ │ ├── ISortState.md
│ │ │ │ │ │ └── ITableState.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── Accessor.md
│ │ │ │ │ ├── HeaderRender.md
│ │ │ │ │ ├── Key.md
│ │ │ │ │ └── SortDirection.md
│ │ │ │ ├── DatePicker/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceDatePickerProps.md
│ │ │ │ ├── DateRangePicker/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── IDateRangePreset.md
│ │ │ │ │ │ ├── IDateRangeValue.md
│ │ │ │ │ │ └── InterfaceDateRangePickerProps.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── DateOrNull.md
│ │ │ │ ├── DropDownButton/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceDropDownButtonProps.md
│ │ │ │ │ ├── InterfaceDropDownOption.md
│ │ │ │ │ ├── InterfaceDropDownProps.md
│ │ │ │ │ └── InterfaceSearchToggleProps.md
│ │ │ │ ├── EmptyState/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceEmptyStateProps.md
│ │ │ │ ├── ErrorBoundaryWrapper/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceErrorBoundaryWrapperProps.md
│ │ │ │ │ ├── InterfaceErrorBoundaryWrapperState.md
│ │ │ │ │ └── InterfaceErrorFallbackProps.md
│ │ │ │ ├── EventListCard/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceEventListCard.md
│ │ │ │ │ ├── InterfaceEventListCardModalsProps.md
│ │ │ │ │ ├── InterfaceEventUpdateInput.md
│ │ │ │ │ ├── InterfaceFormState.md
│ │ │ │ │ └── InterfaceUpdateEventHandlerProps.md
│ │ │ │ ├── FormFieldGroup/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceFormCheckFieldProps.md
│ │ │ │ │ └── InterfaceFormSelectFieldProps.md
│ │ │ │ ├── LoadingState/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── InterfaceLoadingStateProps.md
│ │ │ │ ├── Navbar/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePageHeaderProps.md
│ │ │ │ ├── NotificationToast/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── InterfaceNotificationToastHelpers.md
│ │ │ │ │ │ ├── InterfaceNotificationToastI18nMessage.md
│ │ │ │ │ │ └── InterfacePromiseMessages.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── NotificationToastContainerProps.md
│ │ │ │ │ ├── NotificationToastMessage.md
│ │ │ │ │ ├── NotificationToastNamespace.md
│ │ │ │ │ └── PromiseFunction.md
│ │ │ │ ├── PaginationList/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePaginationListProps.md
│ │ │ │ ├── PeopleTabNavbar/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePeopleTabNavbarProps.md
│ │ │ │ ├── PluginRouteRenderer/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePluginRouteRendererProps.md
│ │ │ │ ├── PluginRoutes/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePluginRoutesProps.md
│ │ │ │ ├── PostViewModal/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfacePostViewModalProps.md
│ │ │ │ ├── ProfileAvatarDisplay/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceProfileAvatarDisplayProps.md
│ │ │ │ ├── ProfileCard/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceProfileCardProps.md
│ │ │ │ ├── ProfileDropdown/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceProfileDropdownProps.md
│ │ │ │ ├── Recurrence/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceRecurrenceEndOptionsSectionProps.md
│ │ │ │ │ ├── InterfaceRecurrenceFrequencySectionProps.md
│ │ │ │ │ └── InterfaceRecurrenceMonthlySectionProps.md
│ │ │ │ ├── RecurrenceDropdown/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceRecurrenceDropdownProps.md
│ │ │ │ ├── SearchFilterBar/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ ├── InterfaceDropdownConfig.md
│ │ │ │ │ │ ├── InterfaceSearchFilterBarAdvanced.md
│ │ │ │ │ │ ├── InterfaceSearchFilterBarSimple.md
│ │ │ │ │ │ ├── InterfaceSearchFilterBarTranslations.md
│ │ │ │ │ │ └── InterfaceSortingOption.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── InterfaceSearchFilterBarProps.md
│ │ │ │ ├── SidebarOrgSection/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── IOrganizationData.md
│ │ │ │ │ └── ISidebarOrgSectionProps.md
│ │ │ │ ├── SortingButton/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ ├── InterfaceSortingButtonProps.md
│ │ │ │ │ └── InterfaceSortingOption.md
│ │ │ │ ├── StatusBadge/
│ │ │ │ │ └── interface/
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── InterfaceStatusBadgeProps.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── SemanticVariant.md
│ │ │ │ │ ├── StatusSize.md
│ │ │ │ │ └── StatusVariant.md
│ │ │ │ ├── TableLoader/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceTableLoaderProps.md
│ │ │ │ ├── TimePicker/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceTimePickerProps.md
│ │ │ │ ├── TruncatedText/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceTruncatedTextProps.md
│ │ │ │ ├── User/
│ │ │ │ │ ├── interface/
│ │ │ │ │ │ └── interfaces/
│ │ │ │ │ │ ├── InterfaceUser.md
│ │ │ │ │ │ └── InterfaceUserAttendee.md
│ │ │ │ │ └── type/
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ ├── Address.md
│ │ │ │ │ ├── AppUserProfile.md
│ │ │ │ │ ├── CreateUserFamilyInput.md
│ │ │ │ │ ├── User.md
│ │ │ │ │ ├── UserInput.md
│ │ │ │ │ └── UserPhone.md
│ │ │ │ ├── VisibilitySelector/
│ │ │ │ │ └── interface/
│ │ │ │ │ └── interfaces/
│ │ │ │ │ └── InterfaceVisibilitySelectorProps.md
│ │ │ │ └── VolunteerGroupViewModal/
│ │ │ │ └── interface/
│ │ │ │ └── interfaces/
│ │ │ │ └── InterfaceVolunteerGroupViewModalProps.md
│ │ │ └── utils/
│ │ │ ├── MinioDownload/
│ │ │ │ └── functions/
│ │ │ │ └── useMinioDownload.md
│ │ │ ├── MinioUpload/
│ │ │ │ └── functions/
│ │ │ │ └── useMinioUpload.md
│ │ │ ├── SanitizeInput/
│ │ │ │ └── functions/
│ │ │ │ └── sanitizeInput.md
│ │ │ ├── StaticMockLink/
│ │ │ │ ├── classes/
│ │ │ │ │ └── StaticMockLink.md
│ │ │ │ ├── functions/
│ │ │ │ │ └── mockSingleLink.md
│ │ │ │ └── interfaces/
│ │ │ │ └── InterfaceMockApolloLink.md
│ │ │ ├── adminPluginInstaller/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── getInstalledAdminPlugins.md
│ │ │ │ │ ├── installAdminPluginFromZip.md
│ │ │ │ │ ├── removeAdminPlugin.md
│ │ │ │ │ ├── validateAdminPluginStructure.md
│ │ │ │ │ └── validateAdminPluginZip.md
│ │ │ │ └── interfaces/
│ │ │ │ ├── IAdminPluginInstallationOptions.md
│ │ │ │ ├── IAdminPluginInstallationResult.md
│ │ │ │ ├── IAdminPluginManifest.md
│ │ │ │ └── IAdminPluginZipStructure.md
│ │ │ ├── autocompleteHelpers/
│ │ │ │ └── functions/
│ │ │ │ ├── areOptionsEqual.md
│ │ │ │ └── getMemberLabel.md
│ │ │ ├── chartToPdf/
│ │ │ │ └── functions/
│ │ │ │ ├── exportDemographicsToCSV.md
│ │ │ │ ├── exportToCSV.md
│ │ │ │ └── exportTrendsToCSV.md
│ │ │ ├── currency/
│ │ │ │ └── variables/
│ │ │ │ ├── currencyOptions.md
│ │ │ │ └── currencySymbols.md
│ │ │ ├── dateFormatter/
│ │ │ │ └── functions/
│ │ │ │ └── formatDate.md
│ │ │ ├── errorHandler/
│ │ │ │ └── functions/
│ │ │ │ └── errorHandler.md
│ │ │ ├── fieldTypes/
│ │ │ │ └── variables/
│ │ │ │ └── default.md
│ │ │ ├── fileValidation/
│ │ │ │ └── functions/
│ │ │ │ └── validateFile.md
│ │ │ ├── filehash/
│ │ │ │ └── functions/
│ │ │ │ └── calculateFileHash.md
│ │ │ ├── formEnumFields/
│ │ │ │ └── variables/
│ │ │ │ ├── countryOptions.md
│ │ │ │ ├── educationGradeEnum.md
│ │ │ │ ├── employmentStatusEnum.md
│ │ │ │ ├── genderEnum.md
│ │ │ │ └── maritalStatusEnum.md
│ │ │ ├── getRefreshToken/
│ │ │ │ └── functions/
│ │ │ │ ├── handleTokenRefresh.md
│ │ │ │ └── refreshToken.md
│ │ │ ├── interfaces/
│ │ │ │ ├── enumerations/
│ │ │ │ │ ├── AdvertisementTypePg.md
│ │ │ │ │ ├── Iso3166Alpha2CountryCode.md
│ │ │ │ │ ├── UserEducationGrade.md
│ │ │ │ │ ├── UserEmploymentStatus.md
│ │ │ │ │ ├── UserMaritalStatus.md
│ │ │ │ │ ├── UserNatalSex.md
│ │ │ │ │ └── UserRole.md
│ │ │ │ ├── interfaces/
│ │ │ │ │ ├── IEvent.md
│ │ │ │ │ ├── InterfaceAddress.md
│ │ │ │ │ ├── InterfaceAdvertisementAttachmentPg.md
│ │ │ │ │ ├── InterfaceAdvertisementPg.md
│ │ │ │ │ ├── InterfaceBaseEvent.md
│ │ │ │ │ ├── InterfaceCampaignInfo.md
│ │ │ │ │ ├── InterfaceCampaignInfoPG.md
│ │ │ │ │ ├── InterfaceChatMessagePg.md
│ │ │ │ │ ├── InterfaceChatPg.md
│ │ │ │ │ ├── InterfaceComment.md
│ │ │ │ │ ├── InterfaceCommentEdge.md
│ │ │ │ │ ├── InterfaceCreateFund.md
│ │ │ │ │ ├── InterfaceCreatePledge.md
│ │ │ │ │ ├── InterfaceCreateVolunteerGroup.md
│ │ │ │ │ ├── InterfaceCurrentUserTypePG.md
│ │ │ │ │ ├── InterfaceCustomFieldData.md
│ │ │ │ │ ├── InterfaceEventAttachmentPg.md
│ │ │ │ │ ├── InterfaceEventVolunteerInfo.md
│ │ │ │ │ ├── InterfaceFundInfo.md
│ │ │ │ │ ├── InterfaceFundPg.md
│ │ │ │ │ ├── InterfaceMapType.md
│ │ │ │ │ ├── InterfaceMemberInfo.md
│ │ │ │ │ ├── InterfaceMembersList.md
│ │ │ │ │ ├── InterfaceOrgConnectionInfoType.md
│ │ │ │ │ ├── InterfaceOrgConnectionInfoTypePG.md
│ │ │ │ │ ├── InterfaceOrgInfoTypePG.md
│ │ │ │ │ ├── InterfaceOrganizationAdvertisementsConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationAdvertisementsConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationBlockedUsersConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationBlockedUsersConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationEventsConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationEventsConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationFundsConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationFundsConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationMembersConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationMembersConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationPg.md
│ │ │ │ │ ├── InterfaceOrganizationPinnedPostsConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationPinnedPostsConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationPostsConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationPostsConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationTagFoldersConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationTagFoldersConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationTagsConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationTagsConnectionPg.md
│ │ │ │ │ ├── InterfaceOrganizationVenuesConnectionEdgePg.md
│ │ │ │ │ ├── InterfaceOrganizationVenuesConnectionPg.md
│ │ │ │ │ ├── InterfacePageInfoPg.md
│ │ │ │ │ ├── InterfacePaginationArgs.md
│ │ │ │ │ ├── InterfacePledgeInfo.md
│ │ │ │ │ ├── InterfacePledgeInfoPG.md
│ │ │ │ │ ├── InterfacePostCard.md
│ │ │ │ │ ├── InterfacePostForm.md
│ │ │ │ │ ├── InterfacePostPg.md
│ │ │ │ │ ├── InterfaceQueryBlockPageMemberListItem.md
│ │ │ │ │ ├── InterfaceQueryFundCampaignsPledges.md
│ │ │ │ │ ├── InterfaceQueryMembershipRequestsListItem.md
│ │ │ │ │ ├── InterfaceQueryOrganizationAdvertisementListItem.md
│ │ │ │ │ ├── InterfaceQueryOrganizationEventListItem.md
│ │ │ │ │ ├── InterfaceQueryOrganizationFundCampaigns.md
│ │ │ │ │ ├── InterfaceQueryOrganizationListObject.md
│ │ │ │ │ ├── InterfaceQueryOrganizationPostListItem.md
│ │ │ │ │ ├── InterfaceQueryOrganizationUserTags.md
│ │ │ │ │ ├── InterfaceQueryOrganizationUserTagsPG.md
│ │ │ │ │ ├── InterfaceQueryOrganizationsListObject.md
│ │ │ │ │ ├── InterfaceQueryUserListItem.md
│ │ │ │ │ ├── InterfaceQueryUserListItemForAdmin.md
│ │ │ │ │ ├── InterfaceQueryUserTagChildTags.md
│ │ │ │ │ ├── InterfaceQueryUserTagsAssignedMembers.md
│ │ │ │ │ ├── InterfaceQueryUserTagsMembersToAssignTo.md
│ │ │ │ │ ├── InterfaceQueryVenueListItem.md
│ │ │ │ │ ├── InterfaceTagData.md
│ │ │ │ │ ├── InterfaceTagDataPG.md
│ │ │ │ │ ├── InterfaceTagFolderPg.md
│ │ │ │ │ ├── InterfaceTagPg.md
│ │ │ │ │ ├── InterfaceUserCampaign.md
│ │ │ │ │ ├── InterfaceUserEvents.md
│ │ │ │ │ ├── InterfaceUserInfo.md
│ │ │ │ │ ├── InterfaceUserInfoPG.md
│ │ │ │ │ ├── InterfaceUserListQueryResponse.md
│ │ │ │ │ ├── InterfaceUserPg.md
│ │ │ │ │ ├── InterfaceUserType.md
│ │ │ │ │ ├── InterfaceUserTypePG.md
│ │ │ │ │ ├── InterfaceVenuePg.md
│ │ │ │ │ ├── InterfaceVolunteerGroupInfo.md
│ │ │ │ │ ├── InterfaceVolunteerMembership.md
│ │ │ │ │ └── InterfaceVolunteerRank.md
│ │ │ │ └── type-aliases/
│ │ │ │ ├── VoteState.md
│ │ │ │ └── VoteType.md
│ │ │ ├── languages/
│ │ │ │ └── variables/
│ │ │ │ ├── languageArray.md
│ │ │ │ └── languages.md
│ │ │ ├── linkValidator/
│ │ │ │ └── functions/
│ │ │ │ └── isValidLink.md
│ │ │ ├── oauth/
│ │ │ │ └── oauthFlowHandler/
│ │ │ │ └── functions/
│ │ │ │ ├── handleOAuthLink.md
│ │ │ │ └── handleOAuthLogin.md
│ │ │ ├── organizationTagsUtils/
│ │ │ │ ├── interfaces/
│ │ │ │ │ ├── InterfaceOrganizationSubTagsQuery.md
│ │ │ │ │ ├── InterfaceOrganizationTagsQuery.md
│ │ │ │ │ ├── InterfaceOrganizationTagsQueryPG.md
│ │ │ │ │ ├── InterfaceTagAssignedMembersQuery.md
│ │ │ │ │ └── InterfaceTagUsersToAssignToQuery.md
│ │ │ │ ├── type-aliases/
│ │ │ │ │ ├── SortedByType.md
│ │ │ │ │ └── TagActionType.md
│ │ │ │ └── variables/
│ │ │ │ ├── TAGS_QUERY_DATA_CHUNK_SIZE.md
│ │ │ │ └── dataGridStyle.md
│ │ │ ├── passwordValidator/
│ │ │ │ └── functions/
│ │ │ │ └── validatePassword.md
│ │ │ ├── profileNavigation/
│ │ │ │ ├── functions/
│ │ │ │ │ └── resolveProfileNavigation.md
│ │ │ │ ├── interfaces/
│ │ │ │ │ └── InterfaceProfileNavigationOptions.md
│ │ │ │ └── type-aliases/
│ │ │ │ └── ProfilePortal.md
│ │ │ ├── recaptcha/
│ │ │ │ └── functions/
│ │ │ │ ├── getRecaptchaToken.md
│ │ │ │ └── loadRecaptchaScript.md
│ │ │ ├── recurrenceUtils/
│ │ │ │ ├── recurrenceConstants/
│ │ │ │ │ └── variables/
│ │ │ │ │ ├── Days.md
│ │ │ │ │ ├── dayNames.md
│ │ │ │ │ ├── daysOptions.md
│ │ │ │ │ ├── endsAfter.md
│ │ │ │ │ ├── endsNever.md
│ │ │ │ │ ├── endsOn.md
│ │ │ │ │ ├── frequencies.md
│ │ │ │ │ ├── monthNames.md
│ │ │ │ │ └── recurrenceEndOptions.md
│ │ │ │ ├── recurrenceTypes/
│ │ │ │ │ ├── enumerations/
│ │ │ │ │ │ ├── Frequency.md
│ │ │ │ │ │ ├── RecurrenceEndOption.md
│ │ │ │ │ │ └── WeekDays.md
│ │ │ │ │ ├── interfaces/
│ │ │ │ │ │ └── InterfaceRecurrenceRule.md
│ │ │ │ │ └── type-aliases/
│ │ │ │ │ └── RecurrenceEndOptionType.md
│ │ │ │ └── recurrenceUtilityFunctions/
│ │ │ │ └── functions/
│ │ │ │ ├── areRecurrenceRulesEqual.md
│ │ │ │ ├── createDefaultRecurrenceRule.md
│ │ │ │ ├── formatRecurrenceForApi.md
│ │ │ │ ├── getDayName.md
│ │ │ │ ├── getEndTypeFromRecurrence.md
│ │ │ │ ├── getMonthlyOptions.md
│ │ │ │ ├── getOrdinalString.md
│ │ │ │ ├── getOrdinalSuffix.md
│ │ │ │ ├── getRecurrenceRuleText.md
│ │ │ │ ├── getWeekOfMonth.md
│ │ │ │ └── validateRecurrenceInput.md
│ │ │ ├── sanitizeAvatar/
│ │ │ │ └── functions/
│ │ │ │ ├── sanitizeAvatarURL.md
│ │ │ │ └── sanitizeAvatars.md
│ │ │ ├── testConstants/
│ │ │ │ └── variables/
│ │ │ │ └── SIDEBAR_TEST_BG_COLOR.md
│ │ │ ├── timezoneUtils/
│ │ │ │ ├── dateTimeConfig/
│ │ │ │ │ └── variables/
│ │ │ │ │ └── dateTimeFields.md
│ │ │ │ └── dateTimeMiddleware/
│ │ │ │ └── variables/
│ │ │ │ ├── requestMiddleware.md
│ │ │ │ └── responseMiddleware.md
│ │ │ ├── tokenValues/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── getSpacingValue.md
│ │ │ │ │ └── isSpacingToken.md
│ │ │ │ ├── type-aliases/
│ │ │ │ │ └── SpacingToken.md
│ │ │ │ └── variables/
│ │ │ │ └── spacingTokens.md
│ │ │ ├── urlToFile/
│ │ │ │ └── functions/
│ │ │ │ └── urlToFile.md
│ │ │ ├── useLocalstorage/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── clearAllItems.md
│ │ │ │ │ ├── getItem.md
│ │ │ │ │ ├── getStorageKey.md
│ │ │ │ │ ├── removeItem.md
│ │ │ │ │ ├── setItem.md
│ │ │ │ │ └── useLocalStorage.md
│ │ │ │ └── variables/
│ │ │ │ └── PREFIX.md
│ │ │ ├── useSession/
│ │ │ │ └── functions/
│ │ │ │ └── default.md
│ │ │ ├── userUpdateUtils/
│ │ │ │ └── functions/
│ │ │ │ ├── removeEmptyFields.md
│ │ │ │ └── validateImageFile.md
│ │ │ ├── validators/
│ │ │ │ └── authValidators/
│ │ │ │ ├── functions/
│ │ │ │ │ ├── getPasswordRequirements.md
│ │ │ │ │ ├── validateEmail.md
│ │ │ │ │ ├── validateName.md
│ │ │ │ │ ├── validatePassword.md
│ │ │ │ │ └── validatePasswordConfirmation.md
│ │ │ │ └── variables/
│ │ │ │ └── PASSWORD_REGEX.md
│ │ │ └── volunteerStatusMapper/
│ │ │ └── functions/
│ │ │ └── mapVolunteerStatusToVariant.md
│ │ └── docs/
│ │ ├── developer-resources/
│ │ │ ├── actionitems-components.md
│ │ │ ├── contributing.md
│ │ │ ├── crud-modal-template.md
│ │ │ ├── data-grid-wrapper.md
│ │ │ ├── design-token-system.md
│ │ │ ├── dropdown-button-api.md
│ │ │ ├── e2e-testing.md
│ │ │ ├── empty-state-migration.md
│ │ │ ├── installation.md
│ │ │ ├── introduction.md
│ │ │ ├── linting.md
│ │ │ ├── minio.md
│ │ │ ├── operation.md
│ │ │ ├── plugin-graphql.md
│ │ │ ├── plugin.md
│ │ │ ├── reusable-components.md
│ │ │ ├── security.md
│ │ │ ├── tables.md
│ │ │ ├── testing.md
│ │ │ └── troubleshooting.md
│ │ ├── getting-started/
│ │ │ ├── configuration.md
│ │ │ ├── installation.md
│ │ │ ├── login.md
│ │ │ ├── operation.md
│ │ │ └── webserver.md
│ │ ├── introduction.md
│ │ └── plugins/
│ │ ├── implementing-plugins-example.md
│ │ ├── implementing-plugins.md
│ │ └── plugin-architecture.md
│ ├── docusaurus.config.ts
│ ├── package.json
│ ├── sidebars.ts
│ ├── src/
│ │ ├── components/
│ │ │ └── layout/
│ │ │ └── HeaderHero.tsx
│ │ ├── css/
│ │ │ └── custom.css
│ │ ├── pages/
│ │ │ └── index.tsx
│ │ └── utils/
│ │ ├── ActionButton.tsx
│ │ └── HomeCallToAction.tsx
│ └── static/
│ ├── .nojekyll
│ └── CNAME
├── eslint.config.js
├── index.html
├── knip.deps.json
├── knip.json
├── package.json
├── public/
│ ├── locales/
│ │ ├── en/
│ │ │ ├── common.json
│ │ │ ├── errors.json
│ │ │ └── translation.json
│ │ ├── es/
│ │ │ ├── common.json
│ │ │ ├── errors.json
│ │ │ └── translation.json
│ │ ├── fr/
│ │ │ ├── common.json
│ │ │ ├── errors.json
│ │ │ └── translation.json
│ │ ├── hi/
│ │ │ ├── common.json
│ │ │ ├── errors.json
│ │ │ └── translation.json
│ │ └── zh/
│ │ ├── common.json
│ │ ├── errors.json
│ │ └── translation.json
│ ├── manifest.json
│ └── robots.txt
├── pyproject.toml
├── schema.graphql
├── scripts/
│ ├── __fixtures__/
│ │ ├── correct.tsx
│ │ ├── edge-cases.tsx
│ │ ├── false-positives.tsx
│ │ └── violations.tsx
│ ├── __mocks__/
│ │ ├── @dicebear/
│ │ │ ├── collection.ts
│ │ │ └── core.ts
│ │ ├── @pdfme/
│ │ │ ├── generator.spec.ts
│ │ │ └── generator.ts
│ │ └── fileMock.js
│ ├── check-css-imports.js
│ ├── check-i18n.js
│ ├── cypress/
│ │ └── run-with-coverage-report.cjs
│ ├── delete-readmes.js
│ ├── docker/
│ │ ├── resolve-docker-host.sh
│ │ └── test/
│ │ └── resolve-docker-host.spec.sh
│ ├── docs/
│ │ ├── fix-readme-links.js
│ │ └── fix-repo-url.js
│ ├── eslint/
│ │ ├── README.md
│ │ ├── config/
│ │ │ ├── base.js
│ │ │ ├── cypress.js
│ │ │ ├── exemptions.js
│ │ │ ├── prefer-crud-modal-template.js
│ │ │ ├── special.js
│ │ │ └── tests.js
│ │ ├── index.js
│ │ ├── index.spec.js
│ │ ├── plugins/
│ │ │ └── eslint-plugin-vitest-isolation/
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── package.json
│ │ │ ├── require-aftereach-cleanup.js
│ │ │ └── require-aftereach-cleanup.spec.ts
│ │ ├── rules/
│ │ │ ├── imports.js
│ │ │ ├── modal-state.js
│ │ │ ├── native-button.js
│ │ │ ├── prefer-crud-modal-template.js
│ │ │ ├── prefer-crud-modal-template.spec.js
│ │ │ ├── rules.js
│ │ │ ├── rules.spec.js
│ │ │ ├── search-input.js
│ │ │ └── security.js
│ │ └── tsconfig.json
│ ├── githooks/
│ │ ├── check-localstorage-usage.ts
│ │ ├── check-mock-cleanup.sh
│ │ ├── check-route-prefix.ts
│ │ ├── check_pom.js
│ │ └── update-toc.js
│ ├── install/
│ │ ├── install.sh
│ │ ├── install.spec.sh
│ │ └── lib/
│ │ ├── common.sh
│ │ ├── docker-detect.sh
│ │ ├── docker-detect.spec.sh
│ │ ├── node-install.sh
│ │ ├── node-install.spec.sh
│ │ ├── os-detect.sh
│ │ └── os-detect.spec.sh
│ ├── install.ps1
│ ├── install.sh
│ ├── run-shard.js
│ ├── start-server.js
│ └── validate-tokens.ts
├── src/
│ ├── App.spec.tsx
│ ├── App.tsx
│ ├── Constant/
│ │ ├── common.spec.ts
│ │ ├── common.ts
│ │ ├── constant.spec.ts
│ │ ├── constant.ts
│ │ └── fileUpload.ts
│ ├── GraphQl/
│ │ ├── Mutations/
│ │ │ ├── ActionItemCategoryMutations.ts
│ │ │ ├── ActionItemMutations.ts
│ │ │ ├── AdvertisementMutations.ts
│ │ │ ├── AgendaFolderMutations.ts
│ │ │ ├── AgendaItemMutations.ts
│ │ │ ├── CampaignMutation.ts
│ │ │ ├── CommentMutations.ts
│ │ │ ├── EventAttendeeMutations.ts
│ │ │ ├── EventMutations.ts
│ │ │ ├── EventVolunteerMutation.ts
│ │ │ ├── FundMutation.ts
│ │ │ ├── OrganizationMutations.ts
│ │ │ ├── PledgeMutation.ts
│ │ │ ├── PluginMutations.ts
│ │ │ ├── TagMutations.ts
│ │ │ ├── VenueMutations.ts
│ │ │ └── mutations.ts
│ │ └── Queries/
│ │ ├── ActionItemCategoryQueries.ts
│ │ ├── ActionItemQueries.ts
│ │ ├── AdvertisementQueries.ts
│ │ ├── AgendaCategoryQueries.ts
│ │ ├── AgendaFolderQueries.ts
│ │ ├── CommentQueries.ts
│ │ ├── EventVolunteerQueries.ts
│ │ ├── NotificationQueries.ts
│ │ ├── OrganizationQueries.ts
│ │ ├── PlugInQueries.ts
│ │ ├── Queries.ts
│ │ ├── VenueQueries.spec.ts
│ │ ├── fundQueries.ts
│ │ └── userTagQueries.ts
│ ├── assets/
│ │ ├── css/
│ │ │ ├── app.css
│ │ │ └── scrollStyles.css
│ │ ├── scss/
│ │ │ ├── _colors.scss
│ │ │ ├── _general.scss
│ │ │ ├── _talawa.scss
│ │ │ ├── _utilities.scss
│ │ │ ├── _variables.scss
│ │ │ ├── app.scss
│ │ │ ├── components/
│ │ │ │ ├── _accordion.scss
│ │ │ │ ├── _alert.scss
│ │ │ │ ├── _badge.scss
│ │ │ │ ├── _breadcrumb.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _card.scss
│ │ │ │ ├── _carousel.scss
│ │ │ │ ├── _close.scss
│ │ │ │ ├── _dropdown.scss
│ │ │ │ ├── _list-group.scss
│ │ │ │ ├── _modal.scss
│ │ │ │ ├── _nav.scss
│ │ │ │ ├── _navbar.scss
│ │ │ │ ├── _offcanvas.scss
│ │ │ │ ├── _pagination.scss
│ │ │ │ ├── _placeholder.scss
│ │ │ │ ├── _progress.scss
│ │ │ │ └── _spinners.scss
│ │ │ ├── content/
│ │ │ │ ├── _table.scss
│ │ │ │ └── _typography.scss
│ │ │ └── forms/
│ │ │ ├── _check-radios.scss
│ │ │ ├── _floating-label.scss
│ │ │ ├── _form-control.scss
│ │ │ ├── _input-group.scss
│ │ │ ├── _range.scss
│ │ │ ├── _select.scss
│ │ │ └── _validation.scss
│ │ └── svgs/
│ │ └── social-icons/
│ │ └── index.tsx
│ ├── components/
│ │ ├── AdminPortal/
│ │ │ ├── AddPeopleToTag/
│ │ │ │ ├── AddPeopleToTag.module.css
│ │ │ │ ├── AddPeopleToTag.spec.tsx
│ │ │ │ ├── AddPeopleToTag.tsx
│ │ │ │ └── AddPeopleToTagsMocks.ts
│ │ │ ├── Advertisements/
│ │ │ │ ├── Advertisements.spec.tsx
│ │ │ │ ├── Advertisements.tsx
│ │ │ │ ├── AdvertisementsMocks.ts
│ │ │ │ ├── core/
│ │ │ │ │ ├── AdvertisementEntry/
│ │ │ │ │ │ ├── AdvertisementEntry.module.css
│ │ │ │ │ │ ├── AdvertisementEntry.spec.tsx
│ │ │ │ │ │ └── AdvertisementEntry.tsx
│ │ │ │ │ └── AdvertisementRegister/
│ │ │ │ │ ├── AdvertisementRegister.module.css
│ │ │ │ │ ├── AdvertisementRegister.spec.tsx
│ │ │ │ │ ├── AdvertisementRegister.tsx
│ │ │ │ │ └── AdvertisementRegisterMocks.ts
│ │ │ │ └── skeleton/
│ │ │ │ ├── AdvertisementSkeleton.spec.tsx
│ │ │ │ └── AdvertisementSkeleton.tsx
│ │ │ ├── AgendaFolder/
│ │ │ │ ├── AgendaFolderContainer.spec.tsx
│ │ │ │ ├── AgendaFolderContainer.tsx
│ │ │ │ ├── Create/
│ │ │ │ │ ├── AgendaFolderCreateModal.module.css
│ │ │ │ │ ├── AgendaFolderCreateModal.spec.tsx
│ │ │ │ │ └── AgendaFolderCreateModal.tsx
│ │ │ │ ├── Delete/
│ │ │ │ │ ├── AgendaFolderDeleteModal.module.css
│ │ │ │ │ ├── AgendaFolderDeleteModal.spec.tsx
│ │ │ │ │ └── AgendaFolderDeleteModal.tsx
│ │ │ │ ├── DragAndDrop/
│ │ │ │ │ ├── AgendaDragAndDrop.module.css
│ │ │ │ │ ├── AgendaDragAndDrop.spec.tsx
│ │ │ │ │ └── AgendaDragAndDrop.tsx
│ │ │ │ └── Update/
│ │ │ │ ├── AgendaFolderUpdateModal.module.css
│ │ │ │ ├── AgendaFolderUpdateModal.spec.tsx
│ │ │ │ └── AgendaFolderUpdateModal.tsx
│ │ │ ├── AgendaItems/
│ │ │ │ ├── Create/
│ │ │ │ │ ├── AgendaItemsCreateModal.module.css
│ │ │ │ │ ├── AgendaItemsCreateModal.spec.tsx
│ │ │ │ │ └── AgendaItemsCreateModal.tsx
│ │ │ │ ├── Delete/
│ │ │ │ │ ├── AgendaItemsDeleteModal.module.css
│ │ │ │ │ ├── AgendaItemsDeleteModal.spec.tsx
│ │ │ │ │ └── AgendaItemsDeleteModal.tsx
│ │ │ │ ├── Preview/
│ │ │ │ │ ├── AgendaItemsPreviewModal.module.css
│ │ │ │ │ ├── AgendaItemsPreviewModal.spec.tsx
│ │ │ │ │ └── AgendaItemsPreviewModal.tsx
│ │ │ │ └── Update/
│ │ │ │ ├── AgendaItemsUpdateModal.module.css
│ │ │ │ ├── AgendaItemsUpdateModal.spec.tsx
│ │ │ │ └── AgendaItemsUpdateModal.tsx
│ │ │ ├── ApplyToSelector/
│ │ │ │ ├── ApplyToSelector.spec.tsx
│ │ │ │ └── ApplyToSelector.tsx
│ │ │ ├── AssignmentTypeSelector/
│ │ │ │ ├── AssignmentTypeSelector.spec.tsx
│ │ │ │ └── AssignmentTypeSelector.tsx
│ │ │ ├── ContriStats/
│ │ │ │ ├── ContriStats.spec.tsx
│ │ │ │ └── ContriStats.tsx
│ │ │ ├── EventManagement/
│ │ │ │ ├── Dashboard/
│ │ │ │ │ ├── EventDashboard.mocks.ts
│ │ │ │ │ ├── EventDashboard.module.css
│ │ │ │ │ ├── EventDashboard.spec.tsx
│ │ │ │ │ └── EventDashboard.tsx
│ │ │ │ ├── EventActionItems/
│ │ │ │ │ ├── EventActionItems.module.css
│ │ │ │ │ ├── EventActionItems.spec.tsx
│ │ │ │ │ └── EventActionItems.tsx
│ │ │ │ ├── EventAgenda/
│ │ │ │ │ ├── EventAgenda.module.css
│ │ │ │ │ ├── EventAgenda.spec.tsx
│ │ │ │ │ └── EventAgenda.tsx
│ │ │ │ ├── EventAttendance/
│ │ │ │ │ ├── Attendance/
│ │ │ │ │ │ ├── EventAttendance.module.css
│ │ │ │ │ │ ├── EventAttendance.spec.tsx
│ │ │ │ │ │ └── EventAttendance.tsx
│ │ │ │ │ ├── AttendanceList/
│ │ │ │ │ │ ├── AttendedEventList.spec.tsx
│ │ │ │ │ │ └── AttendedEventList.tsx
│ │ │ │ │ ├── EventAttendanceMocks.ts
│ │ │ │ │ └── Statistics/
│ │ │ │ │ ├── EventStatistics.module.css
│ │ │ │ │ ├── EventStatistics.spec.tsx
│ │ │ │ │ └── EventStatistics.tsx
│ │ │ │ └── EventRegistrant/
│ │ │ │ ├── EventRegistrants.spec.tsx
│ │ │ │ ├── EventRegistrants.tsx
│ │ │ │ └── Registrations.mocks.ts
│ │ │ ├── EventRegistrantsModal/
│ │ │ │ ├── EventRegistrants.module.css
│ │ │ │ ├── EventRegistrantsWrapper.module.css
│ │ │ │ ├── EventRegistrantsWrapper.spec.tsx
│ │ │ │ ├── EventRegistrantsWrapper.tsx
│ │ │ │ └── Modal/
│ │ │ │ ├── AddOnSpot/
│ │ │ │ │ ├── AddOnSpotAttendee.module.css
│ │ │ │ │ ├── AddOnSpotAttendee.spec.tsx
│ │ │ │ │ └── AddOnSpotAttendee.tsx
│ │ │ │ ├── EventRegistrantsModal.module.css
│ │ │ │ ├── EventRegistrantsModal.spec.tsx
│ │ │ │ ├── EventRegistrantsModal.tsx
│ │ │ │ └── InviteByEmail/
│ │ │ │ ├── InviteByEmail.module.css
│ │ │ │ ├── InviteByEmailModal.module.css
│ │ │ │ ├── InviteByEmailModal.spec.tsx
│ │ │ │ └── InviteByEmailModal.tsx
│ │ │ ├── LeftDrawer/
│ │ │ │ ├── LeftDrawer.module.css
│ │ │ │ ├── LeftDrawer.spec.tsx
│ │ │ │ └── LeftDrawer.tsx
│ │ │ ├── OrgContriCards/
│ │ │ │ ├── OrgContriCards.spec.tsx
│ │ │ │ └── OrgContriCards.tsx
│ │ │ ├── OrgPeopleListCard/
│ │ │ │ ├── OrgPeopleListCard.module.css
│ │ │ │ ├── OrgPeopleListCard.spec.tsx
│ │ │ │ └── OrgPeopleListCard.tsx
│ │ │ ├── OrgSettings/
│ │ │ │ ├── ActionItemCategories/
│ │ │ │ │ ├── Modal/
│ │ │ │ │ │ ├── ActionItemCategoryModal.module.css
│ │ │ │ │ │ ├── ActionItemCategoryModal.spec.tsx
│ │ │ │ │ │ ├── ActionItemCategoryModal.tsx
│ │ │ │ │ │ ├── ActionItemCategoryViewModal.spec.tsx
│ │ │ │ │ │ └── ActionItemCategoryViewModal.tsx
│ │ │ │ │ ├── OrgActionItemCategories.module.css
│ │ │ │ │ ├── OrgActionItemCategories.spec.tsx
│ │ │ │ │ ├── OrgActionItemCategories.tsx
│ │ │ │ │ └── OrgActionItemCategoryMocks.ts
│ │ │ │ ├── AgendaItemCategories/
│ │ │ │ │ └── OrganizationAgendaCategory.module.css
│ │ │ │ └── General/
│ │ │ │ ├── DeleteOrg/
│ │ │ │ │ ├── DeleteOrg.module.css
│ │ │ │ │ ├── DeleteOrg.spec.tsx
│ │ │ │ │ └── DeleteOrg.tsx
│ │ │ │ ├── GeneralSettings.spec.tsx
│ │ │ │ ├── GeneralSettings.tsx
│ │ │ │ └── OrgUpdate/
│ │ │ │ ├── OrgUpdate.module.css
│ │ │ │ ├── OrgUpdate.spec.tsx
│ │ │ │ ├── OrgUpdate.tsx
│ │ │ │ └── OrgUpdateMocks.ts
│ │ │ ├── OrganizationDashCards/
│ │ │ │ ├── CardItem/
│ │ │ │ │ ├── CardItem.module.css
│ │ │ │ │ ├── CardItem.spec.tsx
│ │ │ │ │ ├── CardItem.tsx
│ │ │ │ │ └── Loader/
│ │ │ │ │ ├── CardItemLoading.module.css
│ │ │ │ │ ├── CardItemLoading.spec.tsx
│ │ │ │ │ └── CardItemLoading.tsx
│ │ │ │ ├── DashboardCard.module.css
│ │ │ │ ├── DashboardCard.spec.tsx
│ │ │ │ ├── DashboardCard.tsx
│ │ │ │ └── Loader/
│ │ │ │ ├── DashboardCardLoading.module.css
│ │ │ │ ├── DashboardCardLoading.spec.tsx
│ │ │ │ └── DashboardCardLoading.tsx
│ │ │ ├── OrganizationScreen/
│ │ │ │ ├── OrganizationScreen.module.css
│ │ │ │ ├── OrganizationScreen.spec.tsx
│ │ │ │ └── OrganizationScreen.tsx
│ │ │ ├── README.md
│ │ │ ├── SecuredRoute/
│ │ │ │ ├── SecuredRoute.tsx
│ │ │ │ └── securedRoute.spec.tsx
│ │ │ ├── SuperAdminScreen/
│ │ │ │ ├── SuperAdminScreen.module.css
│ │ │ │ ├── SuperAdminScreen.spec.tsx
│ │ │ │ └── SuperAdminScreen.tsx
│ │ │ ├── TagActions/
│ │ │ │ ├── Node/
│ │ │ │ │ ├── TagNode.module.css
│ │ │ │ │ ├── TagNode.spec.tsx
│ │ │ │ │ ├── TagNode.tsx
│ │ │ │ │ └── TagNodeMocks.ts
│ │ │ │ ├── TagAction.module.css
│ │ │ │ ├── TagActions.module.css
│ │ │ │ ├── TagActions.spec.tsx
│ │ │ │ ├── TagActions.tsx
│ │ │ │ └── TagActionsMocks.ts
│ │ │ ├── UpdateSession/
│ │ │ │ ├── UpdateSession.module.css
│ │ │ │ ├── UpdateSession.spec.tsx
│ │ │ │ └── UpdateSession.tsx
│ │ │ ├── UserTableRow/
│ │ │ │ ├── UserTableRow.module.css
│ │ │ │ ├── UserTableRow.spec.tsx
│ │ │ │ └── UserTableRow.tsx
│ │ │ └── Venues/
│ │ │ ├── Modal/
│ │ │ │ ├── VenueModal.module.css
│ │ │ │ ├── VenueModal.spec.tsx
│ │ │ │ └── VenueModal.tsx
│ │ │ ├── VenueCard.module.css
│ │ │ ├── VenueCard.spec.tsx
│ │ │ ├── VenueCard.tsx
│ │ │ └── VenueCardMocks.ts
│ │ ├── Auth/
│ │ │ ├── LoginForm/
│ │ │ │ ├── LoginForm.module.css
│ │ │ │ ├── LoginForm.spec.tsx
│ │ │ │ └── LoginForm.tsx
│ │ │ ├── OAuthButton/
│ │ │ │ ├── OAuthButton.module.css
│ │ │ │ ├── OAuthButton.spec.tsx
│ │ │ │ └── OAuthButton.tsx
│ │ │ ├── OrgSelector/
│ │ │ │ ├── OrgSelector.spec.tsx
│ │ │ │ └── OrgSelector.tsx
│ │ │ ├── PasswordStrengthIndicator/
│ │ │ │ ├── PasswordStrengthIndicator.spec.tsx
│ │ │ │ ├── PasswordStrengthIndicator.tsx
│ │ │ │ └── RequirementRow.tsx
│ │ │ ├── RegistrationForm/
│ │ │ │ ├── RegistrationForm.module.css
│ │ │ │ ├── RegistrationForm.spec.tsx
│ │ │ │ └── RegistrationForm.tsx
│ │ │ └── theme/
│ │ │ ├── oauthBrand.module.css
│ │ │ ├── oauthBrand.spec.tsx
│ │ │ └── oauthBrand.tsx
│ │ ├── ChangeLanguageDropdown/
│ │ │ ├── ChangeLanguageDropDown.module.css
│ │ │ ├── ChangeLanguageDropDown.spec.tsx
│ │ │ └── ChangeLanguageDropDown.tsx
│ │ ├── CollapsibleDropdown/
│ │ │ ├── CollapsibleDropdown.module.css
│ │ │ ├── CollapsibleDropdown.spec.tsx
│ │ │ └── CollapsibleDropdown.tsx
│ │ ├── CursorPaginationManager/
│ │ │ ├── CursorPaginationManager.module.css
│ │ │ ├── CursorPaginationManager.spec.tsx
│ │ │ └── CursorPaginationManager.tsx
│ │ ├── EventCalender/
│ │ │ ├── EventCalenderMocks.ts
│ │ │ ├── Header/
│ │ │ │ ├── EventHeader.module.css
│ │ │ │ ├── EventHeader.spec.tsx
│ │ │ │ └── EventHeader.tsx
│ │ │ ├── Monthly/
│ │ │ │ ├── EventCalendar.spec.tsx
│ │ │ │ ├── EventCalender.module.css
│ │ │ │ └── EventCalender.tsx
│ │ │ └── Yearly/
│ │ │ ├── YearlyEventCalender.module.css
│ │ │ ├── YearlyEventCalender.spec.tsx
│ │ │ └── YearlyEventCalender.tsx
│ │ ├── EventDashboardScreen/
│ │ │ ├── EventDashboardScreen.module.css
│ │ │ ├── EventDashboardScreen.spec.tsx
│ │ │ ├── EventDashboardScreen.tsx
│ │ │ └── EventDashboardScreenMocks.ts
│ │ ├── EventStats/
│ │ │ ├── EventStatsMocks.ts
│ │ │ ├── Statistics/
│ │ │ │ ├── AverageRating/
│ │ │ │ │ ├── AverageRating.module.css
│ │ │ │ │ ├── AverageRating.spec.tsx
│ │ │ │ │ └── AverageRating.tsx
│ │ │ │ ├── EventStats.module.css
│ │ │ │ ├── EventStats.spec.tsx
│ │ │ │ ├── EventStats.tsx
│ │ │ │ ├── Feedback/
│ │ │ │ │ ├── Feedback.module.css
│ │ │ │ │ ├── Feedback.spec.tsx
│ │ │ │ │ └── Feedback.tsx
│ │ │ │ └── Review/
│ │ │ │ ├── Review.module.css
│ │ │ │ ├── Review.spec.tsx
│ │ │ │ └── Review.tsx
│ │ │ └── css/
│ │ │ ├── EventStats.module.css
│ │ │ └── Loader.module.css
│ │ ├── HolidayCards/
│ │ │ ├── HolidayCard.module.css
│ │ │ ├── HolidayCard.spec.tsx
│ │ │ └── HolidayCard.tsx
│ │ ├── IconComponent/
│ │ │ ├── IconComponent.spec.tsx
│ │ │ └── IconComponent.tsx
│ │ ├── LeftDrawerOrg/
│ │ │ ├── LeftDrawerOrg.module.css
│ │ │ ├── LeftDrawerOrg.spec.tsx
│ │ │ └── LeftDrawerOrg.tsx
│ │ ├── NotificationIcon/
│ │ │ ├── NotificationIcon.module.css
│ │ │ ├── NotificationIcon.spec.tsx
│ │ │ └── NotificationIcon.tsx
│ │ ├── NotificationToast/
│ │ │ └── NotificationToast.tsx
│ │ ├── Pagination/
│ │ │ └── Navigator/
│ │ │ ├── Pagination.module.css
│ │ │ ├── Pagination.spec.tsx
│ │ │ └── Pagination.tsx
│ │ ├── ProfileCard/
│ │ │ ├── ProfileCard.module.css
│ │ │ ├── ProfileCard.spec.tsx
│ │ │ └── ProfileCard.tsx
│ │ ├── ProfileDropdown/
│ │ │ ├── ProfileDropdown.module.css
│ │ │ ├── ProfileDropdown.spec.tsx
│ │ │ └── ProfileDropdown.tsx
│ │ ├── SignOut/
│ │ │ ├── SignOut.spec.tsx
│ │ │ └── SignOut.tsx
│ │ ├── UserDetails/
│ │ │ ├── UserEvents.module.css
│ │ │ ├── UserEvents.spec.tsx
│ │ │ ├── UserEvents.tsx
│ │ │ ├── UserOrganizations.module.css
│ │ │ ├── UserOrganizations.spec.tsx
│ │ │ ├── UserOrganizations.tsx
│ │ │ ├── UserTags.module.css
│ │ │ ├── UserTags.spec.tsx
│ │ │ └── UserTags.tsx
│ │ ├── UserPortal/
│ │ │ ├── ChatRoom/
│ │ │ │ ├── ChatHeader.module.css
│ │ │ │ ├── ChatHeader.tsx
│ │ │ │ ├── ChatRoom.module.css
│ │ │ │ ├── ChatRoom.spec.tsx
│ │ │ │ ├── ChatRoom.tsx
│ │ │ │ ├── EmptyChatState.module.css
│ │ │ │ ├── EmptyChatState.spec.tsx
│ │ │ │ ├── EmptyChatState.tsx
│ │ │ │ ├── MessageImage.module.css
│ │ │ │ ├── MessageImage.tsx
│ │ │ │ ├── MessageInput.module.css
│ │ │ │ ├── MessageInput.tsx
│ │ │ │ ├── MessageItem.module.css
│ │ │ │ ├── MessageItem.tsx
│ │ │ │ └── types.ts
│ │ │ ├── CommentCard/
│ │ │ │ ├── CommentCard.module.css
│ │ │ │ ├── CommentCard.spec.tsx
│ │ │ │ └── CommentCard.tsx
│ │ │ ├── ContactCard/
│ │ │ │ ├── ContactCard.module.css
│ │ │ │ ├── ContactCard.spec.tsx
│ │ │ │ └── ContactCard.tsx
│ │ │ ├── CreateDirectChat/
│ │ │ │ ├── CreateDirectChat.module.css
│ │ │ │ ├── CreateDirectChat.spec.tsx
│ │ │ │ └── CreateDirectChat.tsx
│ │ │ ├── CreateGroupChat/
│ │ │ │ ├── CreateGroupChat.module.css
│ │ │ │ ├── CreateGroupChat.spec.tsx
│ │ │ │ └── CreateGroupChat.tsx
│ │ │ ├── DonationCard/
│ │ │ │ ├── DonationCard.module.css
│ │ │ │ ├── DonationCard.spec.tsx
│ │ │ │ └── DonationCard.tsx
│ │ │ ├── EventCard/
│ │ │ │ ├── EventCard.module.css
│ │ │ │ ├── EventCard.spec.tsx
│ │ │ │ └── EventCard.tsx
│ │ │ ├── GroupChatDetails/
│ │ │ │ ├── GroupChatDetails.module.css
│ │ │ │ ├── GroupChatDetails.spec.tsx
│ │ │ │ ├── GroupChatDetails.tsx
│ │ │ │ └── GroupChatDetailsMocks.tsx
│ │ │ ├── OrganizationSidebar/
│ │ │ │ ├── OrganizationSidebar.module.css
│ │ │ │ ├── OrganizationSidebar.spec.tsx
│ │ │ │ └── OrganizationSidebar.tsx
│ │ │ ├── SecuredRouteForUser/
│ │ │ │ ├── SecuredRouteForUser.spec.tsx
│ │ │ │ └── SecuredRouteForUser.tsx
│ │ │ ├── UserNavbar/
│ │ │ │ ├── UserNavbar.module.css
│ │ │ │ ├── UserNavbar.spec.tsx
│ │ │ │ └── UserNavbar.tsx
│ │ │ ├── UserPortalCard/
│ │ │ │ ├── UserPortalCard.module.css
│ │ │ │ ├── UserPortalCard.spec.tsx
│ │ │ │ └── UserPortalCard.tsx
│ │ │ ├── UserPortalNavigationBar/
│ │ │ │ ├── LanguageSelector.module.css
│ │ │ │ ├── LanguageSelector.tsx
│ │ │ │ ├── UserDropdown.tsx
│ │ │ │ ├── UserPortalNavigationBar.module.css
│ │ │ │ ├── UserPortalNavigationBar.spec.tsx
│ │ │ │ ├── UserPortalNavigationBar.tsx
│ │ │ │ └── UserPortalNavigationBarMocks.ts
│ │ │ ├── UserProfileSettings/
│ │ │ │ ├── UserProfile.module.css
│ │ │ │ ├── UserProfile.spec.tsx
│ │ │ │ └── UserProfile.tsx
│ │ │ ├── UserSidebar/
│ │ │ │ ├── UserSidebar.module.css
│ │ │ │ ├── UserSidebar.spec.tsx
│ │ │ │ └── UserSidebar.tsx
│ │ │ └── UserSidebarOrg/
│ │ │ ├── UserSidebarOrg.module.css
│ │ │ ├── UserSidebarOrg.spec.tsx
│ │ │ └── UserSidebarOrg.tsx
│ │ └── UsersTableItem/
│ │ ├── UserTableItem.spec.tsx
│ │ ├── UserTableItemMocks.ts
│ │ ├── UsersTableItem.module.css
│ │ └── UsersTableItem.tsx
│ ├── config/
│ │ └── oauthProviders.ts
│ ├── constants.ts
│ ├── hooks/
│ │ ├── auth/
│ │ │ ├── useAuthNotifications.spec.ts
│ │ │ ├── useAuthNotifications.ts
│ │ │ ├── useLogin.spec.ts
│ │ │ ├── useLogin.ts
│ │ │ ├── useRegistration.spec.ts
│ │ │ └── useRegistration.ts
│ │ ├── useAvatarUpload.spec.ts
│ │ ├── useAvatarUpload.ts
│ │ ├── useFieldValidation.spec.ts
│ │ ├── useFieldValidation.ts
│ │ ├── usePasswordVisibility.spec.ts
│ │ ├── usePasswordVisibility.ts
│ │ ├── useUserProfile.spec.ts
│ │ └── useUserProfile.ts
│ ├── index.spec.tsx
│ ├── index.tsx
│ ├── install/
│ │ ├── index.spec.ts
│ │ ├── index.ts
│ │ ├── os/
│ │ │ ├── detector.spec.ts
│ │ │ ├── detector.ts
│ │ │ ├── linux.spec.ts
│ │ │ ├── linux.ts
│ │ │ ├── macos.spec.ts
│ │ │ ├── macos.ts
│ │ │ ├── windows.spec.ts
│ │ │ └── windows.ts
│ │ ├── packages/
│ │ │ ├── index.spec.ts
│ │ │ └── index.ts
│ │ ├── types.spec.ts
│ │ ├── types.ts
│ │ └── utils/
│ │ ├── checker.spec.ts
│ │ ├── checker.ts
│ │ ├── checkers/
│ │ │ ├── docker.ts
│ │ │ ├── index.ts
│ │
================================================
FILE CONTENTS
================================================
================================================
FILE: .coderabbit/ast-grep-rules/assertions-must-use-waitfor.yml
================================================
id: assertions-after-async-must-use-waitfor
language: typescript
rule:
follows:
stopBy: end
pattern: await userEvent.$METHOD($$$)
regex: "expect\\("
not:
inside:
any:
- pattern: waitFor(() => { $$$ })
- pattern: waitFor(async () => { $$$ })
- pattern: waitFor(() => $$$)
message: 'Assertion after async operation must be inside waitFor'
severity: error
================================================
FILE: .coderabbit/ast-grep-rules/hardcoded-timeout.yml
================================================
id: hardcoded-timeout-in-tests
language: typescript
rule:
any:
- pattern: setTimeout($_, $NUM)
- pattern: await wait($NUM)
- pattern: delay($NUM)
inside:
kind: function_declaration
has:
field: name
regex: '^(it|test|describe)'
message: 'Hardcoded timeout in test - use waitFor with assertions instead'
severity: error
================================================
FILE: .coderabbit/ast-grep-rules/mutation-null-guards.yml
================================================
id: mutation-null-guard-check
language: typescript
rule:
any:
- pattern: |
await $MUTATION({
variables: {
$$$
id: $VAR?.$PROP
$$$
}
})
- pattern: |
await $MUTATION({
variables: {
$$$
$KEY: $VAR?.$PROP
$$$
}
})
not:
precedes: # ← Changed from 'follows'
pattern: |
if (!$VAR?.$PROP) return;
message: 'Missing null guard for optional property in mutation variables'
severity: error
================================================
FILE: .coderabbit/ast-grep-rules/no-dynamic-timestamps-in-tests.yml
================================================
id: no-dynamic-timestamps-in-tests
language: typescript
files: '**/*.{spec,test}.{ts,tsx}'
rule:
any:
- pattern: dayjs()
- pattern: moment()
- pattern: DateTime.now()
- pattern: new Date()
- pattern: Date.now()
message: 'Non-deterministic timestamp in test - use fixed UTC string'
severity: error
================================================
FILE: .coderabbit/ast-grep-rules/no-local-timezone-in-tests.yml
================================================
id: no-local-timezone-in-tests
language: TypeScript
severity: error
message: |
Avoid using local timezone date methods in tests. Use UTC methods instead:
- Use .getUTCDate() instead of .getDate()
- Use .getUTCMonth() instead of .getMonth()
- Use .getUTCDay() instead of .getDay()
- Use .getUTCHours() instead of .getHours()
- Use .getUTCMinutes() instead of .getMinutes()
- Use .getUTCSeconds() instead of .getSeconds()
These local timezone methods cause flakiness in sharded CI environments
where machines may have different timezone configurations.
note: 'Timezone-dependent test assertion detected'
rule:
any:
- pattern: $DATE.getDate()
- pattern: $DATE.getMonth()
- pattern: $DATE.getDay()
- pattern: $DATE.getHours()
- pattern: $DATE.getMinutes()
- pattern: $DATE.getSeconds()
- pattern: $DATE.getFullYear()
files:
- '**/*.test.ts'
- '**/*.test.tsx'
- '**/*.spec.ts'
- '**/*.spec.tsx'
fix: |
# Manual fix required - replace with UTC equivalent:
# .getDate() → .getUTCDate()
# .getMonth() → .getUTCMonth()
# .getDay() → .getUTCDay()
# .getHours() → .getUTCHours()
# .getMinutes() → .getUTCMinutes()
# .getSeconds() → .getUTCSeconds()
# .getFullYear() → .getUTCFullYear()
================================================
FILE: .coderabbit/ast-grep-rules/vitest-cleanup.yml
================================================
id: enforce-restore-all-mocks
language: typescript
rule:
pattern: vi.clearAllMocks()
kind: call_expression
message: |
⚠️ INCOMPLETE CLEANUP - Use vi.restoreAllMocks() instead of vi.clearAllMocks()
vi.clearAllMocks() only clears call history but keeps mock implementations.
vi.restoreAllMocks() restores original implementations AND clears history.
Required in sharded tests to prevent cross-test contamination.
severity: error
note: 'Change to: vi.restoreAllMocks()'
fix: 'vi.restoreAllMocks()'
================================================
FILE: .coderabbit.yaml
================================================
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
# Configuration Metadata
# Version: 2.0
# Last Updated: 2026-01-08
# Purpose: Comprehensive review validation with reusable component architecture enforcement
language: 'en-US'
early_access: false
chat:
auto_reply: true
issue_enrichment:
auto_enrich:
enabled: false
# ADVISORY GUIDELINES (Guides the AI reviewer during manual reviews)
reviews:
profile: 'assertive'
poem: false
request_changes_workflow: false
high_level_summary: true
review_status: true
review_details: false
collapse_walkthrough: false
auto_apply_labels: false
suggested_labels: false
assess_linked_issues: true
auto_review:
enabled: true
drafts: false
base_branches:
- develop
- main
path_filters:
- '!**/docs/docs/**'
- '!*.html'
- '!*.md'
- '!*.svg'
tools:
ast-grep:
enabled: true
rule_dirs:
- .coderabbit/ast-grep-rules
essential_rules: true
# Keep instructions concise and scoped by file patterns to stay far under limits
path_instructions:
# 1) Tests — Vitest + RTL + sharded stability
- path: '**/*.{spec,test}.{ts,tsx}'
instructions: |
═══════════════════════════════════════════════════════════════
🚨 ANTI-PATTERNS TO FLAG IMMEDIATELY (Search for these first):
═══════════════════════════════════════════════════════════════
1. PATTERN: vi.clearAllMocks() anywhere in test file
FLAG AS: "❌ BLOCKING - Use vi.restoreAllMocks() at file:line"
WHY: Incomplete cleanup causes sharded test failures
2. PATTERN: afterEach without both cleanup() AND vi.restoreAllMocks()
FLAG AS: "❌ BLOCKING - Missing required cleanup at file:line"
3. PATTERN: setTimeout or hardcoded delays
FLAG AS: "⚠️ RACE CONDITION - Replace with waitFor at file:line"
4. PATTERN: .catch(() => {}) without re-throw or assertion
FLAG AS: "❌ SILENT ERROR - Add fallback assertion at file:line"
5. PATTERN: dayjs(), moment(), DateTime.now(), or new Date() without arguments in test data
FLAG AS: "❌ BLOCKING - Non-deterministic timestamp at file:line - Use fixed UTC string"
WHY: Captures current time, causes flakiness in sharded CI
6. PATTERN: expect(...) after await userEvent or await waitFor, not inside waitFor
FLAG AS: "❌ BLOCKING - Race condition at file:line - Move assertion inside waitFor"
WHY: State changes may not propagate before assertion runs
═══════════════════════════════════════════════════════════════
Post a single, structured comment with these sections: Issue Goals, Tests (incl. Flakiness), Components/Policy, GraphQL, i18n & a11y, Security, Action Items.
Reference exact file:line for each finding.
Issue goals (Priority `#1`):
- Parse the first PR comment for "Fixes/Closes/Resolves #<id>". Confirm every acceptance criterion is tested; list gaps with file:line.
Timezone Safety & Test Determinism (CRITICAL):
- REQUIRED: Use UTC date methods in all test assertions:
- ✅ Use: `.getUTCDate()`, `.getUTCMonth()`, `.getUTCDay()`, `.getUTCHours()`, `.getUTCMinutes()`, `.getUTCSeconds()`
- ❌ NEVER use: `.getDate()`, `.getMonth()`, `.getDay()`, `.getHours()`, `.getMinutes()`, `.getSeconds()`
- All test dates must use fixed UTC timestamps (e.g., `"2025-01-01T10:00:00Z"`)
- ❌ FORBIDDEN PATTERNS (capture current time):
- `dayjs()` without arguments (use `dayjs('2025-01-01T10:00:00Z')`)
- `moment()` without arguments (use `moment('2025-01-01T10:00:00Z')`)
- `DateTime.now()` (luxon) (use `DateTime.fromISO('2025-01-01T10:00:00Z')`)
- `new Date()` without arguments (use `new Date('2025-01-01T10:00:00.000Z')`)
- `Date.now()` (use fixed timestamp number or mock timers)
- Pattern to flag: `(dayjs|moment|DateTime\.now|new Date)\(\s*\)` in test data/mocks
- Report as "🔴 NON-DETERMINISTIC TIMESTAMP at file:line — Replace with fixed UTC string"
- Flag ANY usage of local timezone methods as CRITICAL - these cause CI flakiness in non-UTC environments
Test quality (Vitest + RTL):
- Use vi.mock; prefer accessible queries (getByRole/LabelText); use user-event.
- Cover success, error (network/GraphQL/validation), edge/empty states, loading, and user interactions.
- List uncovered line numbers in changed source files.
Flaky test guard (12 shards) — CRITICAL PATTERNS:
# MANDATORY CHECKLIST - Flag violations as BLOCKING
## 1. Cleanup (CRITICAL for sharded CI)
[ ] afterEach contains cleanup() from `@testing-library/react`
[ ] afterEach contains vi.restoreAllMocks() (NOT vi.clearAllMocks())
[ ] localStorage/sessionStorage cleared if used
[ ] window state reset if modified
⚠️ FLAG: "INCOMPLETE CLEANUP at file:line - Missing vi.restoreAllMocks()"
⚠️ FLAG: "INCORRECT CLEANUP at file:line - Uses vi.clearAllMocks() instead of vi.restoreAllMocks()"
RATIONALE: vi.clearAllMocks() only clears call history but keeps mock
implementations. vi.restoreAllMocks() restores originals AND clears history.
This prevents mock leakage between tests in parallel shards.
# ENHANCED: More specific delay detection
Hardcoded delays (ABSOLUTELY FORBIDDEN):
- ❌ NEVER use: setTimeout, setInterval, delay(), sleep(), wait() helpers with fixed durations
- ❌ Pattern to flag: "await wait(", "setTimeout(", "delay("
- ✅ ONLY use: waitFor(() => expect(...), { timeout: ... }) with explicit assertions
- Report as "🔴 HARDCODED DELAY at file:line — Replace with waitFor assertion"
- Exception: Only allow setTimeout in beforeEach/afterEach for test infrastructure setup (must have comment explaining why)
Assertion placement (MANDATORY):
- ALL assertions after async operations MUST be inside waitFor blocks.
- Patterns to flag as BLOCKING:
❌ await userEvent.type(...); expect(...).toBeInTheDocument();
❌ await waitFor(() => ...); expect(mockFn).toHaveBeenCalled();
❌ fireEvent.click(...); expect(...).toHaveAttribute(...);
✅ await userEvent.type(...); await waitFor(() => expect(...).toBeInTheDocument());
- Specific patterns to search:
* `expect\([^)]+\)\.(toHaveBeenCalled|toBeInTheDocument|toHaveAttribute)` NOT inside `waitFor\(`
* Any `expect(` within 3 lines after `await userEvent.` or `fireEvent.` that's NOT in `waitFor`
- Report as "🔴 RACE CONDITION at file:line — Assertion outside waitFor block after async operation"
- Exception: Assertions before any async operations in test case are safe.
Async patterns (NO RACE CONDITIONS):
- NO hardcoded setTimeout or fixed delays; use waitFor with explicit assertions.
- After clicking elements that open UI (dropdowns, modals, dialogs, tooltips):
MUST waitFor the container/menu itself to be visible BEFORE checking child elements.
Example: await user.click(toggle); await waitFor(() => expect(menu).toBeInTheDocument());
- After clicking elements that close UI: MUST waitFor close completion (aria-expanded="false" or element removed) BEFORE re-opening.
Example: await waitFor(() => expect(toggle).toHaveAttribute('aria-expanded', 'false'));
- In loops testing multiple UI states: re-open → wait for open → interact → wait for result → wait for close. No shortcuts.
- ALL user-event clicks/types must be awaited; check that state changes are awaited with waitFor.
Error handling (NO SILENT FAILURES):
- NO .catch() blocks that swallow errors without re-throwing or explicit fallback assertions.
- If .catch() is used, must have a comment explaining why + alternative assertion inside catch.
- Prefer try/catch with explicit expect() in catch block over silent .catch(() => {}).
Timer interactions (AVOID CONFLICTS):
- If global vi.useFakeTimers() is active (check setupTests), check for conflicts with:
* `@testing-library/user-event` async operations
* waitFor timeouts
* UI animations (dropdowns, modals, transitions)
- Consider vi.useRealTimers() in beforeEach for tests with heavy user interaction.
- Flag any test using both fake timers AND user-event without explicit timer management.
DataTable-specific testing (CRITICAL for this codebase):
- After finding datatable container (findByTestId('datatable')), MUST waitFor rows to populate:
❌ BAD: await screen.findByTestId('datatable'); const rows = getDataTableBodyRows();
✅ GOOD: await screen.findByTestId('datatable'); await waitFor(() => expect(getDataTableBodyRows()).toHaveLength(N));
- DataTable shows skeleton first, then data asynchronously — tests MUST wait for transition.
- Report as "⚠️ DATATABLE RACE CONDITION at file:line — Not waiting for rows after container".
Double network requests (AVOID):
- Flag if a handler (onClick, onChange) calls refetch() AND a useEffect also refetches with same dependency.
- Example: handleChangeRowsPerPage calls refetch(...rowsPerPage...) BUT useEffect([rowsPerPage]) also refetches.
- Report as "⚠️ DOUBLE REFETCH at file:line — Both handler and useEffect refetch on same state change".
I18n Provider Requirement:
- All component tests MUST wrap with I18nextProvider for consistent translation behavior
- ❌ Relying on key fallbacks causes brittle tests that break on i18n changes
- ✅ Wrap all renders:
```typescript
import { I18nextProvider } from 'react-i18next';
import i18nForTest from 'utils/i18nForTest';
render(
<I18nextProvider i18n={i18nForTest}>
<YourComponent />
</I18nextProvider>
);
```
- Detection: If test file imports a component that uses `useTranslation()` or `t()`, verify I18nextProvider is present
Fake Timers for Debounce/Throttle Testing:
- ❌ When testing debounced/throttled logic (search inputs, auto-save, etc.), NEVER use real waits
- ✅ REQUIRE: `vi.useFakeTimers()` + `vi.advanceTimersByTime()` pattern
- **Detection:**
- If test involves "search" or "debounce" in description/comments
- AND contains `wait()` or `setTimeout()`
- Flag: "Use fake timers to control time progression deterministically"
- Cleanup:
- Every `vi.useFakeTimers()` must have corresponding `vi.useRealTimers()` in:
* Same test block (try/finally)
* afterEach hook
* Never leave fake timers active between tests
Avoid Testing Implementation Details:
- ❌ Do not assert on internal constants, magic numbers, or implementation specifics:
```typescript
// Brittle - breaks on refactors:
expect(PAGE_SIZE).toBe(10);
expect(DEBOUNCE_MS).toBe(300);
expect(component.state.internalCounter).toBe(5);
```
- ✅ Assert observable behavior instead:
```typescript
// Robust - tests actual behavior:
expect(mockRequest.variables.first).toBeGreaterThan(0);
expect(mockRequest).toHaveBeenCalledWith(expect.objectContaining({
variables: expect.objectContaining({ first: expect.any(Number) })
}));
```
- Detection:
- Flag `expect(CONSTANT_NAME).toBe(...)` patterns
- Suggest: "Test behavior, not constants. Assert what the component does, not how."
Global State & Window/DOM Pollution:
- ❌ CRITICAL: Any modification to global objects MUST be restored in teardown:
```typescript
// These cause cross-test pollution:
window.location = { ... };
window.localStorage.setItem(...);
process.env.NODE_ENV = 'test';
global.fetch = mockFetch;
document.body.innerHTML = '...';
```
- ✅ REQUIRE: Save original and restore:
```typescript
let originalLocation: Location;
beforeEach(() => {
originalLocation = window.location;
});
afterEach(() => {
window.location = originalLocation;
});
```
- Detection Pattern:
- Search for: `window.location =`, `window.* =`, `global.* =`, `process.env.* =`
- Verify corresponding save/restore in beforeEach/afterEach
- Flag missing restoration as CRITICAL for sharded CI
Anti-Pattern: Fixed Waits/Sleeps (CRITICAL for CI Flakiness):
- ❌ CRITICAL: Flag ANY usage of fixed time delays in tests:
```typescript
// These cause flakiness in variable-latency CI:
await wait(200);
await wait(1000);
await sleep(500);
setTimeout(..., 1000);
await new Promise(resolve => setTimeout(resolve, 500));
```
- ✅ REQUIRE: Condition-based async queries instead:
```typescript
// Use findBy* (waits up to 1s by default):
const element = await screen.findByTestId('datatable');
// Or waitFor with condition:
await waitFor(() => expect(mockFn).toHaveBeenCalled());
// For debounce/throttle, use fake timers:
vi.useFakeTimers();
await userEvent.type(input, 'search');
vi.advanceTimersByTime(300); // DEBOUNCE_MS
await waitFor(() => expect(refetch).toHaveBeenCalled());
vi.useRealTimers();
```
- Detection Pattern:
- Search for: `wait(`, `sleep(`, `setTimeout(`, `new Promise.*setTimeout`
- Exceptions: `waitFor(`, `findBy`, `findAllBy` (these are good)
- Flag every fixed-time wait as HIGH PRIORITY for refactoring
- Why This Matters:
- Fixed waits assume consistent response times
- CI sharding introduces variable latency
- Root cause of most test flakiness in distributed environments
Structure:
- No it.skip/describe.skip unless commented with reason + linked issue.
- Wrap state updates in act() when needed.
REPORT FORMAT for flakiness issues:
- "⚠️ RACE CONDITION at file:line — [description]"
- "❌ SILENT ERROR SWALLOW at file:line — .catch() without fallback"
- "⏱️ TIMER CONFLICT at file:line — fake timers + user-event"
# React components/screens/pages — enforce architecture & policy
- path: 'src/{components,screens,pages}/**/*.{ts,tsx}'
instructions: |
Post a single, structured comment; reference file:line for each item.
If the file is a test (*.spec|*.test), apply the test checklist instead and skip this block.
Issue goals:
- Map changes to the linked issue’s acceptance criteria; flag unaddressed or out‑of‑scope work.
## Screen-specific: DataTable + useTableData Pattern (TableFix Migration)
**Applies only to files in src/screens/** that import DataTable:**
- All table-based screens migrating to DataTable MUST use useTableData hook:
- ❌ Do not use `useQuery` + manual `useMemo` for data transformation:
```typescript
// Incorrect:
const { data } = useQuery(QUERY);
const rows = useMemo(() => data?.items ?? [], [data]);
```
- ✅ Use useTableData wrapper:
```typescript
// Correct:
const { rows, loading, error, refetch } = useTableData<ItemType, ...>(
useQuery(QUERY, { variables }),
{ path: (data) => data?.items ?? [] }
);
```
- **Detection:**
- If file path starts with `src/screens/`
- AND imports DataTable from shared-components
- AND imports useQuery from `@apollo/client`
- BUT does NOT import useTableData
- Flag: "Screens using DataTable should integrate with useTableData hook per migration standards"
Reusable component policy (see: https://docs-admin.talawa.io/docs/developer-resources/reusable-components/):
- Placement: Admin-only → src/components/AdminPortal/** (+ src/types/AdminPortal/**);
User-only → src/components/UserPortal/** (+ src/types/UserPortal/**);
Shared → src/shared-components/** (+ src/types/shared-components/**).
- Naming: PascalCase folder/file/component; names must match.
- Props: NO inline prop interfaces; define in src/types/<Portal or shared-components>/<Component>/interface.ts (e.g., Interface<Component>Props).
- Restricted imports: use shared wrappers (DataGridWrapper, LoadingState, BaseModal, Date/Time pickers, etc.); direct imports allowed only inside wrappers.
- Brief TSDoc on exported components and interfaces.
TypeScript & React:
- No any without JSDoc justification; strong types for props/params/returns/state/GQL types.
- Hooks: proper cleanup in useEffect; avoid prop drilling (use Context/Redux).
- MUI v7: import from `@mui/material`; styling via `@emotion/react`.
i18n & a11y:
- No hardcoded UI strings; use useTranslation with keys; add new keys to all 5 locales (en, es, fr, hi, zh).
- Ensure roles/ARIA (aria-label/aria-describedby/aria-live), keyboard navigation, and semantic markup.
# NEW: Null safety in mutations
Null guard enforcement (CRITICAL for GraphQL mutations):
- When calling mutations with variables containing optional properties (fund?.id, user?.id, etc.):
MUST add null guard BEFORE the mutation call.
- Pattern to flag: "variables.*: \{\s*id: \w+\?\.\w+" without preceding "if (!...?.id) return;"
- Valid pattern:
✅ if (!fund?.id) return; await deleteFund({ variables: { id: fund.id } });
❌ await deleteFund({ variables: { id: fund?.id } });
- Report as "🔴 MISSING NULL GUARD at file:line — Add null check before mutation with optional property"
- Apply to all mutation calls: create*, update*, delete*, archive*, etc.
# GraphQL operations
- path: 'src/GraphQl/**/*.ts'
instructions: |
Post a single, structured comment; reference file:line.
Organization & typing:
- Queries in src/GraphQl/Queries/; mutations in src/GraphQl/Mutations/.
- Use gql (graphql-tag) with typed variables/results; add brief JSDoc.
Correctness & duplication:
- No duplicate or conflicting operations; watch pagination params (first/last).
- Components using these operations must handle loading and error states in UI.
Schema compliance (CRITICAL):
- For each mutation/query, verify ALL input fields in the schema are used by components.
- For each component form, verify ALL form fields are sent in the mutation variables.
- Flag any form field (input, select, checkbox) NOT present in the mutation schema.
- Report as "🔴 SCHEMA MISMATCH at file:line — Field '<name>' in form but not in mutation schema"
- Flag any mutation accepting field X but component doesn't provide it.
- Report as "⚠️ MISSING FIELD at file:line — Mutation expects '<name>' but component doesn't send it"
Query completeness (CRITICAL):
- For each GraphQL query, trace ALL components that use the query data.
- For each field accessed in component code (e.g., `event.fieldName`, `data.queryName[0].fieldName`):
MUST verify the field is fetched in the query.
- Common patterns to check:
* Object property access: `data.events.map(e => e.fieldName)`
* Destructuring: `const { fieldName } = event;`
* Optional chaining: `event?.fieldName`
- Flag if component accesses a field NOT in the query selection set.
- Report as "🔴 MISSING QUERY FIELD at file:line — Component uses 'fieldName' but query doesn't fetch it"
- Example violation:
❌ Query: `{ id name }` but Component: `event.isRecurringEventTemplate`
✅ Query: `{ id name isRecurringEventTemplate }`
- Check both direct usage and passed to child components as props.
- path: '**/*.module.css'
instructions: |
Post a single, structured comment; reference file:line.
Design token usage:
- Use CSS variables from design tokens (var(--space-*, --color-*, --radius-*, etc.))
- No hardcoded pixel values for spacing, colors, shadows, or border-radius
- Flag any hardcoded values that could be tokens
!important consistency (CRITICAL):
- If a base selector uses !important for a property, ALL state selectors (:hover, :active, :focus, :disabled) must also use !important for that property
- Pattern to flag:
❌ .btn { color: red !important; }
.btn:hover { color: blue; } /* Missing !important */
✅ .btn { color: red !important; }
.btn:hover { color: blue !important; }
- Report as "🔴 CSS SPECIFICITY BUG at file:line — :state selector missing !important when base has it"
- Check properties: color, background, background-color, border, box-shadow, opacity
BEM/Module naming:
- Use camelCase for module class names
- Keep selectors flat; avoid deep nesting
- Use :global() sparingly and document why
pre_merge_checks:
# Enforce test file updates for modified source files
custom_checks:
- name: 'Test Coverage Gate'
mode: 'error'
instructions: |
BLOCKING: Test coverage must be ≥95% for modified files.
Run: pnpm run test:coverage
Verify: coverage/coverage-summary.json shows no files below threshold.
- name: 'TypeScript Compilation'
mode: 'error'
instructions: |
BLOCKING: Zero TypeScript errors.
Run: pnpm run typecheck
Must pass without errors or warnings.
- name: 'Component Architecture Compliance'
mode: 'error'
instructions: |
BLOCKING: All components follow reusable component policy.
Verify: No inline interfaces, correct portal placement, wrapper usage.
See: https://docs-admin.talawa.io/docs/developer-resources/reusable-components/
- name: 'i18n Key Completeness'
mode: 'error'
instructions: |
BLOCKING: All translation keys must exist in ALL 5 locales.
For each t('key') or tCommon('key') usage:
1. Extract the key name
2. Verify it exists in public/locales/{en,es,fr,hi,zh}/translation.json
3. Flag if missing from ANY locale
Common patterns to check:
- t('namespace.key')
- tCommon('key')
- useTranslation hook with namespace
Report format:
- "🔴 MISSING i18n KEY at file:line — 'key' not found in locales: [es, fr]"
- "🔴 NAMESPACE MISMATCH at file:line — Using 'common.required' but should be 'validation.required'"
Must check all 5 locales:
- public/locales/{en,es,fr,hi,zh}/translation.json
- public/locales/{en,es,fr,hi,zh}/common.json
- public/locales/{en,es,fr,hi,zh}/errors.json
================================================
FILE: .dockerignore
================================================
node_modules
npm-debug.log
Dockerfile
.git
.gitignore
.env
.env.*
dist
coverage
.nyc_output
*.md
.github
tests
__tests__
*.test.*
*.spec.*
# Development files
*.log
*.lock
.DS_Store
.idea
.vscode
# Build artifacts
build
out
# Python
venv
================================================
FILE: .flake8
================================================
[flake8]
ignore = E402,E722,E203,F401,W503
max-line-length = 80
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: [palisadoes]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: PalisadoesFoundation/talawa-api
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.md
================================================
---
name: Bug Report
about: Create a report to help us improve.
title: Bug Report
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1.
2.
3.
4.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Actual behavior**
A clear and concise description of how the code performed w.r.t expectations.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional details**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: Feature Request
about: Suggest an idea for this project
title: Feature Request
labels: feature request
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is.
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Approach to be followed (optional)**
A clear and concise description of approach to be followed.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/dependabot.yaml
================================================
# Configuration for automated dependency updates using Dependabot
version: 2
updates:
# Define the target package ecosystem
- package-ecosystem: 'npm'
# Specify the root directory
directory: '/'
# Schedule automated updates
schedule:
interval: 'cron'
cronjob: '0 0 1 * *'
# Labels to apply to Dependabot PRs
labels:
- 'dependencies'
# Specify the target branch for PRs
target-branch: 'develop'
# Customize commit message prefix
commit-message:
prefix: 'chore(deps):'
================================================
FILE: .github/pull_request_template.md
================================================
<!--
This section can be deleted after reading.
We employ the following branching strategy to simplify the development process and to ensure that only stable code is pushed to the `master` branch:
- `develop`: For unstable code: New features and bug fixes.
- `master`: Where the stable production ready code lies. Only security related bugs.
NOTE!!!
ONLY SUBMIT PRS AGAINST OUR `DEVELOP` BRANCH. THE DEFAULT IS `MAIN`, SO YOU WILL HAVE TO MODIFY THIS BEFORE SUBMITTING YOUR PR FOR REVIEW. PRS MADE AGAINST `MAIN` WILL BE CLOSED.
-->
<!--
Thanks for submitting a pull request! Please provide enough information so that others can review your pull request.
-->
**What kind of change does this PR introduce?**
<!-- E.g. a bugfix, feature, refactoring, etc… -->
**Issue Number:**
<!--Add related issue number here.-->
Fixes #
**Snapshots/Videos:**
<!--Add snapshots or videos wherever possible.-->
**If relevant, did you update the documentation?**
<!--Add link to Talawa-Docs.-->
**Summary**
<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->
<!-- Try to link to an open issue for more information. -->
**Does this PR introduce a breaking change?**
<!-- If this PR introduces a breaking change, please describe the impact and a migration path for existing applications. -->
## Checklist
### CodeRabbit AI Review
- [ ] I have reviewed and addressed all critical issues flagged by CodeRabbit AI
- [ ] I have implemented or provided justification for each non-critical suggestion
- [ ] I have documented my reasoning in the PR comments where CodeRabbit AI suggestions were not implemented
### Test Coverage
- [ ] I have written tests for all new changes/features
- [ ] I have verified that test coverage meets or exceeds 95%
- [ ] I have run the test suite locally and all tests pass
**Other information**
<!--Add extra information about this PR here-->
**Have you read the [contributing guide](https://github.com/PalisadoesFoundation/talawa-admin/blob/master/CONTRIBUTING.md)?**
<!--Yes or No-->
================================================
FILE: .github/workflows/README.md
================================================
# Talawa GitHub Workflows Guidelines
Follow these guidelines when contributing to this directory.
## General
Any changes to files in this directory are flagged when pull requests are run. Make changes only on the advice of a contributor.
## YAML Workflow Files
The YAML files in this directory have very specific roles depending on the type of workflow.
Whenever possible you must ensure that:
1. The file roles below are maintained
1. The sequence of the jobs in the workflows are maintained using [GitHub Action dependencies](https://docs.github.com/en/actions/learn-github-actions/managing-complex-workflows).
### File Roles
Follow these guidelines when creating new YAML defined GitHub actions. This is done to make troubleshooting easier.
1. `Issue` Workflows:
1. Place all actions related to issues in the `issues.yml` file.
1. `issue-assigned.yml` - Removes unapproved labels when issues are assigned to contributors (exception; see “File Role Exceptions”).
1. `Pull Request` workflows to be run by:
1. Workflows to run **First Time** repo contributors:
1. Place all actions related to to this in the `pull-request-target.yml` file.
1. Workflows to be run by **ALL** repo contributors:
1. Place all actions related to pull requests in the `pull-request.yml` file.
1. `Push` workflows:
1. Place all actions related to pushes in the `push.yml` file.
#### File Role Exceptions
There are some exceptions to these rules in which jobs can be placed in dedicated separate files:
1. Jobs that require unique `cron:` schedules
1. Jobs that require unique `paths:` statements that operate only when files in a specific path are updated.
1. Jobs only work correctly if they have a dedicated file (eg. `CodeQL`)
1. Workflows isolated to specific issue activity types (e.g., `issues: [assigned]`) to avoid side effects on the unified issue workflow (e.g., `issue-assigned.yml`)
## Scripts
Follow these guidelines when creating or modifying scripts in this directory.
1. All scripts in this directory must be written in python3 for consistency.
1. The python3 scripts must follow the following coding standards. Run these commands against your scripts before submitting PRs that modify or create python3 scripts in this directory.
1. Pycodestyle
1. Pydocstyle
1. Pylint
1. Flake8
1. All scripts must run a main() function.
================================================
FILE: .github/workflows/auto-assign.yml
================================================
name: Auto Assign & Unassign (Org-wide Limit)
on:
issue_comment:
types: [created]
jobs:
handle-comment:
uses: PalisadoesFoundation/.github/.github/workflows/auto-assign.yml@main
secrets:
ORG_ACCESS_TOKEN: ${{ secrets.ORG_ACCESS_TOKEN }}
================================================
FILE: .github/workflows/auto-label.json5
================================================
{
labelsSynonyms: {
'ci/cd': ['.github', 'Workflow', 'ci/cd'],
dependencies: [
'dependabot',
'dependency',
'dependencies',
'package',
'packages',
],
security: ['security'],
'ui/ux': ['layout', 'screen', 'design', 'figma'],
},
defaultLabels: ['unapproved'],
}
================================================
FILE: .github/workflows/check-tsdoc.js
================================================
import fs from 'fs/promises'; // Import fs.promises for async operations
import path from 'path';
// List of files to skip
const filesToSkip = [
'index.tsx',
'EventActionItems.tsx',
'OrgPostCard.tsx',
'UsersTableItem.tsx',
'FundCampaignPledge.tsx'
];
// Recursively find all .tsx files, excluding files listed in filesToSkip
async function findTsxFiles(dir) {
let results = [];
try {
const list = await fs.readdir(dir);
for (const file of list) {
const filePath = path.join(dir, file);
const stat = await fs.stat(filePath);
if (stat.isDirectory()) {
results = results.concat(await findTsxFiles(filePath));
} else if (
filePath.endsWith('.tsx') &&
!filePath.endsWith('.test.tsx') &&
!filePath.endsWith('.spec.tsx') &&
!filesToSkip.includes(path.relative(dir, filePath))
) {
results.push(filePath);
}
}
} catch (err) {
console.error(`Error reading directory ${dir}: ${err.message}`);
}
return results;
}
// Check if a file contains at least one TSDoc comment
async function containsTsDocComment(filePath) {
try {
const content = await fs.readFile(filePath, 'utf8');
return /\/\*\*[\s\S]*?\*\//.test(content);
} catch (err) {
console.error(`Error reading file ${filePath}: ${err.message}`);
return false;
}
}
// Main function to run the validation
async function run() {
const dir = process.argv[2] || './src'; // Allow directory path as a command-line argument
const files = await findTsxFiles(dir);
const filesWithoutTsDoc = [];
for (const file of files) {
if (!await containsTsDocComment(file)) {
filesWithoutTsDoc.push(file);
}
}
if (filesWithoutTsDoc.length > 0) {
filesWithoutTsDoc.forEach(file => {
console.error(`No TSDoc comment found in file: ${file}`);
});
process.exit(1);
}
}
run();
================================================
FILE: .github/workflows/codeql-codescan.yml
================================================
##############################################################################
##############################################################################
#
# NOTE!
#
# Please read the README.md file in this directory that defines what should
# be placed in this file
#
##############################################################################
##############################################################################
name: codeql codescan workflow
on:
pull_request:
branches:
- '**'
push:
branches:
- '**'
jobs:
CodeQL:
if: ${{ github.actor != 'dependabot[bot]' }}
name: Analyse Code With CodeQL
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: ['javascript']
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
debug: true
- name: Autobuild
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
================================================
FILE: .github/workflows/config/check-pr-issue-skip-usernames.txt
================================================
dependabot
noman2002
palisadoes
================================================
FILE: .github/workflows/config/countline_excluded_file_list.txt
================================================
src/screens/Auth/LoginPage/LoginPage.tsx
src/GraphQl/Queries/Queries.ts
src/screens/OrgList/OrgList.tsx
src/GraphQl/Mutations/mutations.ts
src/components/EventListCard/EventListCardModals.tsx
src/components/TagActions/TagActionsMocks.tsx
src/utils/interfaces.ts
src/components/OrgPostCard/OrgPostCard.tsx
src/components/UsersTableItem/UsersTableItem.tsx
src/components/UserPortal/ChatRoom/ChatRoom.tsx
src/screens/UserPortal/Volunteer/UpcomingEvents/UpcomingEvents.tsx
src/shared-components/ActionItems/ActionItemModal/ActionItemModal.tsx
src/shared-components/postCard/PostCard.tsx
================================================
FILE: .github/workflows/config/sensitive_files.txt
================================================
.flake8$
.pydocstyle$
pyproject.toml$
.env..*$
vitest.config.js$
src/App.tsx$
^.github/.*
^.coderabbit/.*
^.husky/.*
^scripts/.*
^docker/.*
^config/.*
^cypress/.*
^src/style/.*
^src/assets/.*
schema.graphql$
package.json$
package-lock.json$
tsconfig.json$
^.gitignore$
^env.example$
.node-version$
.eslintrc.json$
.eslintignore$
.prettierrc$
.prettierignore$
vite.config.ts$
^docker/docker-compose.prod.yaml$
^docker/docker-compose.dev.yaml$
^docker/docker-compose.rootless.prod.yaml$
^docker/docker-compose.rootless.dev.yaml$
^docker/Dockerfile.dev$
^docker/Dockerfile.prod$
^docker/Dockerfile.rootless.prod$
^docker/Dockerfile.rootless.dev$
^config/docker/setup/nginx.conf$
^config/docker/setup/nginx.prod.conf$
CODEOWNERS$
LICENSE$
setup.ts$
.coderabbit.yaml$
CODE_OF_CONDUCT.md$
CODE_STYLE.md$
CONTRIBUTING.md$
DOCUMENTATION.md$
INSTALLATION.md$
ISSUE_GUIDELINES.md$
PR_GUIDELINES.md$
README.md$
index.html$
.*.pem$
.*.key$
.*.cert$
.*.password$
.*.secret$
.*.credentials$
.nojekyll$
yarn.lock$
knip.json$
knip.deps.json$
^docs/docusaurus.config.ts$
^docs/sidebar..*
CNAME$
================================================
FILE: .github/workflows/issue-assigned.yml
================================================
name: Issue Assignment Workflow
on:
issues:
types: [assigned]
jobs:
issue-assigned:
uses: PalisadoesFoundation/.github/.github/workflows/issue-assigned.yml@main
# secrets:
# ORG_ACCESS_TOKEN: ${{ secrets.ORG_ACCESS_TOKEN }}
================================================
FILE: .github/workflows/issue-unassigned.yml
================================================
name: Add Unapproved Label on Unassignment
on:
issues:
types: [unassigned]
jobs:
issue-unassigned:
uses: PalisadoesFoundation/.github/.github/workflows/issue-unassigned.yml@main
================================================
FILE: .github/workflows/issue.yml
================================================
name: Issue Workflow
on:
issues:
types: [opened]
jobs:
issue-workflow:
uses: PalisadoesFoundation/.github/.github/workflows/issue.yml@main
================================================
FILE: .github/workflows/pull-request-comment.yml
================================================
name: On PR Open - First Time Contributor Comment
on:
pull_request_target:
types: [opened]
permissions:
pull-requests: write
issues: write
jobs:
call-first-pr-comment:
uses: PalisadoesFoundation/.github/.github/workflows/pull-request-comment.yml@main
================================================
FILE: .github/workflows/pull-request-review.yml
================================================
name: Pull Request Review
on:
pull_request_review:
types: [submitted, edited, dismissed]
jobs:
Check-CodeRabbit-Approval:
uses: PalisadoesFoundation/.github/.github/workflows/pull-request-review.yml@main
================================================
FILE: .github/workflows/pull-request-target.yml
================================================
name: PR Target Workflow
on:
pull_request_target:
jobs:
PR-Greeting:
uses: PalisadoesFoundation/.github/.github/workflows/pull-request-target.yml@main
# secrets:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/pull-request.yml
================================================
##############################################################################
##############################################################################
#
# NOTE!
#
# Please read the README.md file in this directory that defines what should
# be placed in this file
#
##############################################################################
##############################################################################
name: PR Workflow
on:
pull_request:
branches:
- '**'
env:
CODECOV_UNIQUE_NAME: CODECOV_UNIQUE_NAME-${{ github.run_id }}-${{ github.run_number }}
jobs:
Code-Quality-Checks:
name: Performs linting, formatting, type-checking, unused file detection, checking for different source and target branch
runs-on: ubuntu-latest
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all branches and tags
- name: Checkout centralized CI/CD scripts
uses: actions/checkout@v4
with:
repository: PalisadoesFoundation/.github
ref: main
path: .github-central
- name: Install pnpm@10.4.1
uses: pnpm/action-setup@v4
with:
version: 10.4.1
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Count number of lines
run: |
chmod +x .github-central/.github/workflows/scripts/countline.py
.github-central/.github/workflows/scripts/countline.py \
--lines 600 \
--files ./.github/workflows/config/countline_excluded_file_list.txt
- name: Get changed TypeScript files
id: changed-files
run: |
# Get the base branch ref
BASE_SHA=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
# Get all changed files
ALL_CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA ${{ github.event.pull_request.head.sha }} | tr '\n' ' ')
echo "all_changed_files=${ALL_CHANGED_FILES}" >> $GITHUB_OUTPUT
# Count all changed files
ALL_CHANGED_FILES_COUNT=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA ${{ github.event.pull_request.head.sha }} | wc -l | tr -d ' ')
echo "all_changed_files_count=$ALL_CHANGED_FILES_COUNT" >> $GITHUB_OUTPUT
# Check if any files changed
if [ "$ALL_CHANGED_FILES_COUNT" -gt 0 ]; then
echo "any_changed=true" >> $GITHUB_OUTPUT
else
echo "any_changed=false" >> $GITHUB_OUTPUT
fi
# Set only_changed to false by default (adjust logic as needed)
echo "only_changed=false" >> $GITHUB_OUTPUT
- name: Check formatting
if: steps.changed-files.outputs.only_changed != 'true'
run: pnpm format:check
- name: Run formatting if check fails
if: failure()
run: pnpm format:fix
- name: Check for type errors
if: steps.changed-files.outputs.only_changed != 'true'
run: pnpm typecheck
- name: Check for linting errors in modified files
if: steps.changed-files.outputs.only_changed != 'true'
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: pnpm exec eslint ${CHANGED_FILES}
- name: Validate design tokens in modified files
if: steps.changed-files.outputs.any_changed == 'true'
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: pnpm exec tsx scripts/validate-tokens.ts --files $CHANGED_FILES
- name: Enforce CSS import policy
if: steps.changed-files.outputs.any_changed == 'true'
env:
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: pnpm exec tsx scripts/check-css-imports.js --files $CHANGED_FILES
- name: Check for TSDoc comments
run: pnpm check-tsdoc
- name: Check for localStorage Usage
run: pnpm exec tsx scripts/githooks/check-localstorage-usage.ts --scan-entire-repo
- name: Check for unused dependencies
run: pnpm knip --config knip.deps.json --include dependencies
- name: Compare translation files
run: |
chmod +x .github/workflows/scripts/compare_translations.py
python .github/workflows/scripts/compare_translations.py --directory public/locales
- name: Get changed source files
id: changed-src
run: |
BASE_SHA=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
CHANGED=$(git diff --name-only --diff-filter=ACMRT "$BASE_SHA" ${{ github.event.pull_request.head.sha }} \
| grep -E '^src/.*\.(ts|tsx|js|jsx)$' | tr '\n' ' ' || true)
echo "files=$CHANGED" >> $GITHUB_OUTPUT
if [ -z "$CHANGED" ]; then
echo "none=true" >> $GITHUB_OUTPUT
else
echo "none=false" >> $GITHUB_OUTPUT
fi
# Diff-only i18n check to avoid existing legacy violations in untouched lines.
- name: Check for non-internationalized text (diff only)
if: steps.changed-src.outputs.none != 'true'
run: pnpm run check-i18n -- --diff --base ${{ github.event.pull_request.base.sha }} --head ${{ github.event.pull_request.head.sha }} ${{ steps.changed-src.outputs.files }}
- name: Check if the source and target branches are different
if: ${{ github.event.pull_request.base.ref == github.event.pull_request.head.ref }}
run: |
echo "Source Branch ${{ github.event.pull_request.head.ref }}"
echo "Target Branch ${{ github.event.pull_request.base.ref }}"
echo "Error: Source and Target Branches are the same. Please ensure they are different."
echo "Error: Close this PR and try again."
exit 1
- name: Check for unused files and exports in src/ and docs/src
run: pnpm knip --include files,exports,nsExports,nsTypes
- name: Lint shell scripts (ShellCheck)
shell: bash
run: |
shopt -s globstar nullglob
candidates=(
scripts/**/*.sh
.husky/pre-commit
.husky/scripts/**/*.sh
)
files=()
for f in "${candidates[@]}"; do
[[ -f "$f" ]] && files+=("$f")
done
if [ ${#files[@]} -eq 0 ]; then
echo "No shell scripts found to lint."
else
shellcheck -S warning "${files[@]}"
fi
CSS-Policy-Check:
name: CSS Policy Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Get PR changed files
run: |
git diff --name-only --diff-filter=ACMRT \
origin/${{ github.base_ref }}...HEAD > pr_files.txt
- name: Run CSS policy enforcement
run: |
if [ -s pr_files.txt ]; then
FILTERED_FILES=$(grep -Ev '^src/(utils|types)/' pr_files.txt || true)
if [ -n "$FILTERED_FILES" ]; then
python .github/workflows/scripts/css_check.py \
--files $FILTERED_FILES
else
echo "No relevant files after exclusion"
fi
else
echo "No files changed in this PR"
fi
Check-Mock-Isolation:
name: Check for proper mock cleanup in test files
needs: [Code-Quality-Checks]
runs-on: ubuntu-latest
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
- name: Check for proper mock cleanup
run: |
chmod +x scripts/githooks/check-mock-cleanup.sh
./scripts/githooks/check-mock-cleanup.sh
Check-AutoDocs:
name: Generate and Validate Documentation
needs: [Code-Quality-Checks]
uses: PalisadoesFoundation/.github/.github/workflows/typescript-autodocs.yml@main
Check-Sensitive-Files:
if: ${{ github.actor != 'dependabot[bot]' }}
name: Checks if sensitive files have been changed without authorization
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all branches and tags
- name: Checkout centralized CI/CD scripts
uses: actions/checkout@v4
with:
repository: PalisadoesFoundation/.github
ref: main
path: .github-central
- name: Get PR labels
id: check-labels
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ -z "${{ github.event.pull_request.number }}" ]; then
echo "skip=false" >> $GITHUB_OUTPUT
exit 0
fi
LABELS="$(gh api repos/${{ github.repository }}/issues/${{ github.event.pull_request.number }}/labels --jq '.[].name' | tr '\n' ' ')"
if echo "$LABELS" | grep -qw "ignore-sensitive-files-pr"; then
echo "::notice::Skipping sensitive files check due to 'ignore-sensitive-files-pr' label."
echo "skip=true" >> $GITHUB_OUTPUT
else
echo "skip=false" >> $GITHUB_OUTPUT
fi
- name: Set up Python
if: steps.check-labels.outputs.skip != 'true'
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Get Changed Unauthorized files
if: steps.check-labels.outputs.skip != 'true'
id: changed-unauth-files
run: |
# Skip if not in PR context
if [ -z "${{ github.event.pull_request.base.sha }}" ]; then
echo "any_changed=false" >> $GITHUB_OUTPUT
exit 0
fi
# Determine base and head commits for comparison
HEAD_SHA="${{ github.event.pull_request.head.sha || github.sha }}"
BASE_SHA=$(git merge-base "${{ github.event.pull_request.base.sha }}" "$HEAD_SHA")
# Get all changed files between base and head
mapfile -d '' ALL_CHANGED_FILES < <(git diff --name-only -z --diff-filter=ACMR "$BASE_SHA" "$HEAD_SHA")
# Check for sensitive files using the python script
if [ ${#ALL_CHANGED_FILES[@]} -gt 0 ]; then
chmod +x .github-central/.github/workflows/scripts/sensitive_file_check.py
.github-central/.github/workflows/scripts/sensitive_file_check.py --config .github/workflows/config/sensitive_files.txt --files "${ALL_CHANGED_FILES[@]}"
fi
Count-Changed-Files:
uses: PalisadoesFoundation/.github/.github/workflows/count-changed-files.yml@main
Check-Disable-Statements:
name: Check for disable statements (eslint-disable, istanbul-ignore, it.skip)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Checkout centralized scripts
uses: actions/checkout@v4
with:
repository: PalisadoesFoundation/.github
path: .github-central
ref: main
- name: Get changed files
id: changed-files
run: |
echo "all_changed_files=$(git diff --name-only --diff-filter=ACMRT ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tr '\n' ' ')" >> $GITHUB_OUTPUT
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Run Disable Statements Check
run: |
python .github-central/.github/workflows/scripts/disable_statements_check.py --files ${{ steps.changed-files.outputs.all_changed_files }}
Translation-Tag-Check:
name: Translation Tag Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install dependencies
run: pip install -r .github/workflows/requirements.txt
- name: Run Translation Checker
run: |
BASE_SHA=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA ${{ github.event.pull_request.head.sha }} | grep -E '\.(ts|tsx|js|jsx)$' | grep -v "scripts/__fixtures__" || true)
if [ -n "$CHANGED_FILES" ]; then
python3 .github/workflows/scripts/translation_check.py --files $CHANGED_FILES
else
echo "No relevant files changed, skipping check."
fi
MinIO-Compliance-Check:
if: ${{ github.actor != 'dependabot[bot]' }}
name: MinIO Compliance Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed source files
id: changed-src
run: |
BASE_SHA=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
CHANGED=$(git diff --name-only --diff-filter=ACMRT "$BASE_SHA" ${{ github.event.pull_request.head.sha }} \
| grep -E '^src/.*\.(ts|tsx|js|jsx)$' | tr '\n' ' ' || true)
echo "files=$CHANGED" >> $GITHUB_OUTPUT
if [ -z "$CHANGED" ]; then
echo "none=true" >> $GITHUB_OUTPUT
else
echo "none=false" >> $GITHUB_OUTPUT
fi
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
- name: Run MinIO compliance check
if: steps.changed-src.outputs.none != 'true'
run: node .github/workflows/scripts/check-minio-compliance.cjs
Pre-Test-Checks-Pass:
name: All Pre-Testing Checks Pass
runs-on: ubuntu-latest
needs:
[
Code-Quality-Checks,
Check-AutoDocs,
Check-Disable-Statements,
Check-Route-Prefix,
Check-Mock-Isolation,
CSS-Policy-Check,
MinIO-Compliance-Check,
Python-Compliance,
Translation-Tag-Check,
]
steps:
- name: This job intentionally does nothing
run: echo "This job intentionally does nothing"
Check-Route-Prefix:
name: Check Route Prefix
needs: [Code-Quality-Checks]
runs-on: ubuntu-latest
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Run route prefix check script
env:
CI: true
run: npm run check-route-prefix -- --scan-entire-repo
Test-Application:
name: Test Application (Shard ${{ matrix.shard }})
timeout-minutes: 10
runs-on: ubuntu-latest
needs: [Pre-Test-Checks-Pass]
env:
TOTAL_SHARDS: 12
strategy:
fail-fast: false
matrix:
shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Get changed TypeScript files
id: changed-files
run: |
# Get the base branch ref
BASE_SHA=$(git merge-base ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }})
# Check if any files changed
ANY_CHANGED=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA ${{ github.event.pull_request.head.sha }} | wc -l)
if [ "$ANY_CHANGED" -gt 0 ]; then
echo "any_changed=true" >> $GITHUB_OUTPUT
else
echo "any_changed=false" >> $GITHUB_OUTPUT
fi
# Get all changed files
ALL_FILES=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA ${{ github.event.pull_request.head.sha }} | tr '\n' ' ')
echo "all_files=$ALL_FILES" >> $GITHUB_OUTPUT
# Get TypeScript files specifically
TS_FILES=$(git diff --name-only --diff-filter=ACMRT $BASE_SHA ${{ github.event.pull_request.head.sha }} | grep -E '\.tsx?$' | tr '\n' ' ')
echo "ts_files=$TS_FILES" >> $GITHUB_OUTPUT
- name: TypeScript compilation
run: pnpm exec tsc --noEmit
- name: Run Vitest Tests (Shard ${{ matrix.shard }}/${{ env.TOTAL_SHARDS }})
if: steps.changed-files.outputs.any_changed == 'true'
env:
NODE_V8_COVERAGE: './coverage/vitest'
NODE_OPTIONS: '--max-old-space-size=4096 --disable-warning=ExperimentalWarning'
SHARD_INDEX: ${{ matrix.shard }}
SHARD_COUNT: ${{ env.TOTAL_SHARDS }}
CI: true
run: pnpm test:shard:coverage
- name: Upload coverage artifact
if: always() && steps.changed-files.outputs.any_changed == 'true'
uses: actions/upload-artifact@v4
with:
name: coverage-shard-${{ matrix.shard }}
path: ./coverage/vitest/
retention-days: 1
Merge-Coverage:
name: Merge Coverage Reports
runs-on: ubuntu-latest
needs: [Test-Application]
if: success()
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for Codecov to calculate patch coverage
- name: Fetch base branch for Codecov comparison
run: |
git fetch origin ${{ github.base_ref }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Download all coverage artifacts
id: download-artifacts
continue-on-error: true
uses: actions/download-artifact@v4
with:
pattern: coverage-shard-*
path: ./coverage-shards/
merge-multiple: false
- name: Check if artifacts were downloaded
id: check-artifacts
run: |
# Check if any coverage files exist
if find coverage-shards -name "lcov.info" -type f | grep -q .; then
echo "artifacts_found=true" >> $GITHUB_OUTPUT
echo "Coverage artifacts found"
else
echo "artifacts_found=false" >> $GITHUB_OUTPUT
echo "No coverage artifacts found - tests may have been skipped"
fi
- name: Merge coverage reports
if: steps.check-artifacts.outputs.artifacts_found == 'true'
run: |
mkdir -p ./coverage/vitest
mkdir -p ./coverage/tmp
# Find all coverage directories from shards
echo "Finding coverage data from shards..."
SHARD_DIRS=$(find coverage-shards -type d -name "coverage-shard-*" 2>/dev/null || true)
if [ -z "$SHARD_DIRS" ]; then
echo "ERROR: No shard directories found!"
ls -la coverage-shards/ || true
exit 1
fi
echo "Found shard directories:"
echo "$SHARD_DIRS"
# Check if we have JSON coverage files (better for merging)
JSON_FILES=$(find coverage-shards -name "coverage-final.json" -type f 2>/dev/null || true)
if [ -n "$JSON_FILES" ]; then
echo "Using JSON coverage files for accurate merging..."
# Copy all JSON files to a temp directory for nyc merge
for shard_dir in coverage-shards/coverage-shard-*/; do
if [ -f "${shard_dir}coverage-final.json" ]; then
echo "Found JSON coverage in: $shard_dir"
cp "${shard_dir}coverage-final.json" "./coverage/tmp/coverage-shard-$(basename $shard_dir).json"
fi
done
# Validate JSON files before merging
echo "Validating JSON coverage files..."
JSON_COUNT=$(find ./coverage/tmp -name "*.json" -type f | wc -l)
echo "Found $JSON_COUNT JSON files to merge"
if [ "$JSON_COUNT" -eq 0 ]; then
echo "ERROR: No JSON coverage files found!"
exit 1
fi
# Show sample of file count in each JSON
for json_file in ./coverage/tmp/*.json; do
FILE_COUNT=$(jq 'keys | length' "$json_file" 2>/dev/null || echo "0")
echo " $(basename $json_file): $FILE_COUNT files"
done
# Merge using nyc (more accurate than lcov merge)
echo "Merging coverage with nyc..."
pnpm exec nyc merge ./coverage/tmp ./.nyc_output/coverage-final.json
# Validate merged JSON
MERGED_FILE_COUNT=$(jq 'keys | length' ./.nyc_output/coverage-final.json 2>/dev/null || echo "0")
echo "Merged coverage contains $MERGED_FILE_COUNT files"
else
echo "ERROR: No JSON coverage files found! We expect coverage-final.json from shards."
exit 1
fi
- name: Validate merged coverage integrity
if: steps.check-artifacts.outputs.artifacts_found == 'true'
run: |
echo "Validating merged coverage JSON..."
if [ ! -f ./.nyc_output/coverage-final.json ]; then
echo "ERROR: Merged coverage JSON not found at ./.nyc_output/coverage-final.json"
exit 1
fi
MERGED_FILE_COUNT=$(jq 'keys | length' ./.nyc_output/coverage-final.json 2>/dev/null || echo "0")
echo "Merged coverage contains $MERGED_FILE_COUNT files"
if [ "$MERGED_FILE_COUNT" -eq 0 ]; then
echo "ERROR: Merged coverage JSON is empty!"
exit 1
fi
# Generate lcov from merged JSON
- name: Generate lcov report
if: steps.check-artifacts.outputs.artifacts_found == 'true'
run: |
echo "Generating lcov report from merged coverage..."
pnpm exec nyc report --reporter=lcov --report-dir=./coverage/vitest
- name: Analyze lcov structure
if: steps.check-artifacts.outputs.artifacts_found == 'true'
run: |
echo "Analyzing lcov.info structure..."
LCOV_FILE="./coverage/vitest/lcov.info"
if [ ! -s "$LCOV_FILE" ]; then
echo "ERROR: lcov.info is empty or missing"
exit 1
fi
# Check source paths
echo "Checking source paths in lcov file (first 10 unique paths):"
grep "^SF:" "$LCOV_FILE" | head -10
# Check for absolute vs relative paths
if grep -q "^SF:/" "$LCOV_FILE"; then
echo "WARNING: Found absolute paths in lcov file. This might confuse Codecov."
grep "^SF:/" "$LCOV_FILE" | head -5
else
echo "Good: All source paths appear to be relative."
fi
# Count total source files
SF_COUNT=$(grep -c "^SF:" "$LCOV_FILE" || echo "0")
echo "Total source files in lcov: $SF_COUNT"
- name: Clean up individual shard coverage files
if: steps.check-artifacts.outputs.artifacts_found == 'true'
run: |
echo "Cleaning up individual shard coverage files..."
# Remove all individual coverage JSON files to prevent Codecov from finding them
# This ensures only the merged lcov.info is uploaded
find ./coverage -name "coverage-*.json" -type f -delete
find ./coverage -name "coverage-final.json" -type f -delete
rm -rf ./coverage/tmp ./.nyc_output 2>/dev/null || true
echo "Cleanup complete. Remaining coverage files:"
find ./coverage -type f \( -name "*.info" -o -name "*.json" \)
echo ""
echo "Final coverage file to upload:"
ls -lh ./coverage/vitest/lcov.info
- name: Calculate merge base for Codecov
if: steps.check-artifacts.outputs.artifacts_found == 'true'
id: get-merge-base
run: |
# Calculate the merge base
MERGE_BASE=$(git merge-base origin/${{ github.base_ref }} HEAD)
echo "Merge base commit: $MERGE_BASE"
echo "merge_base=$MERGE_BASE" >> $GITHUB_OUTPUT
# Verify the commit exists
git show -s --format=%ci $MERGE_BASE
- name: Present and upload merged coverage to Codecov
if: steps.check-artifacts.outputs.artifacts_found == 'true'
uses: codecov/codecov-action@v5
with:
name: '${{env.CODECOV_UNIQUE_NAME}}-merged'
token: ${{ secrets.CODECOV_TOKEN }}
# Using fail_ci_if_error: true to match develop branch behavior
# This is safe now because we validate the merged file is non-empty above
fail_ci_if_error: true
verbose: true
exclude: 'docs/'
gcov_ignore: 'docs/'
files: ./coverage/vitest/lcov.info
flags: vitest
commit_parent: ${{ steps.get-merge-base.outputs.merge_base }}
- name: Test acceptable level of code coverage
if: steps.check-artifacts.outputs.artifacts_found == 'true'
uses: VeryGoodOpenSource/very_good_coverage@v3
with:
path: './coverage/vitest/lcov.info'
min_coverage: 95.0
# Graphql-Inspector:
# if: ${{ github.actor != 'dependabot[bot]' }}
# name: Runs Introspection on the GitHub talawa-api repo on the schema.graphql file
# runs-on: ubuntu-latest
# steps:
# - name: Checkout the Repository
# uses: actions/checkout@v4
# - name: Set up Node.js
# uses: actions/setup-node@v4
# with:
# node-version: '24.x'
# - name: resolve dependency
# run: npm install -g @graphql-inspector/cli
# - name: Clone API Repository
# run: |
# # Retrieve the complete branch name directly from the GitHub context
# FULL_BRANCH_NAME=${{ github.base_ref }}
# echo "FULL_Branch_NAME: $FULL_BRANCH_NAME"
# # Clone the specified repository using the extracted branch name
# git clone --branch $FULL_BRANCH_NAME https://github.com/PalisadoesFoundation/talawa-api && ls -a
# - name: Validate Documents
# run: graphql-inspector validate './src/GraphQl/**/*.ts' './talawa-api/schema.graphql'
Start-App-Without-Docker:
name: Check if Talawa Admin app starts (No Docker)
runs-on: ubuntu-latest
needs: [Merge-Coverage]
if: github.actor != 'dependabot'
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Build Production App
run: pnpm run build
- name: Start Production App
run: |
pnpm run preview &
echo $! > .pidfile_prod
- name: Check if Production App is running
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4173 120
- name: Stop Production App
run: |
if [ -f .pidfile_prod ]; then
kill "$(cat .pidfile_prod)"
fi
- name: Start Development App
run: |
pnpm run serve &
echo $! > .pidfile_dev
- name: Check if Development App is running
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4321 120
- name: Stop Development App
if: always()
run: |
if [ -f .pidfile_dev ]; then
kill "$(cat .pidfile_dev)"
fi
Start-App-Using-Docker:
name: Check if Talawa Admin app starts in Docker
runs-on: ubuntu-latest
needs: [Merge-Coverage]
if: github.actor != 'dependabot[bot]'
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
- name: Generate `.env` File with Hardcoded Values
run: |
cat <<EOF > .env
PORT=4321
REACT_APP_TALAWA_URL=http://localhost:4000/graphql
REACT_APP_USE_RECAPTCHA=
REACT_APP_RECAPTCHA_SITE_KEY=
ALLOW_LOGS=NO
USE_DOCKER=YES
DOCKER_MODE=ROOTFUL
DOCKER_PORT=4321
EOF
- name: Set up Docker
uses: docker/setup-buildx-action@v3
with:
driver-opts: |
image=moby/buildkit:latest
- name: Build Docker images
run: |
set -e
export PNPM_VERSION="${PNPM_VERSION:-10.4.1}"
echo "Building Docker images..."
docker compose -f docker/docker-compose.prod.yaml build
docker compose -f docker/docker-compose.dev.yaml build
echo "Docker images built successfully"
- name: Run Docker Containers (Production)
run: |
set -e
echo "Starting Docker container for production..."
docker compose -f docker/docker-compose.prod.yaml up -d
echo "Production Docker container started successfully"
- name: Check if Talawa Admin App is running (Production)
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4321 120 true
- name: Stop prod Docker Containers
if: always()
run: |
docker compose -f docker/docker-compose.prod.yaml down
echo "Prod Docker container stopped and removed"
- name: Run Docker Containers (Development)
run: |
set -e
echo "Starting Docker container for development..."
docker compose -f docker/docker-compose.dev.yaml up -d
echo "Development Docker container started successfully"
- name: Check if Talawa Admin App is running (Development)
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4321 120 true
- name: Stop dev Docker Containers
if: always()
run: |
docker compose -f docker/docker-compose.dev.yaml down
echo "Dev Docker containers stopped and removed"
Start-App-Using-Docker-Rootless:
name: Check if Talawa Admin app starts in Docker (Rootless)
runs-on: ubuntu-latest
needs: [Merge-Coverage]
if: github.actor != 'dependabot[bot]'
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
- name: Generate `.env` File with Hardcoded Values
run: |
cat > .env <<'EOF'
PORT=4321
REACT_APP_TALAWA_URL=http://localhost:4000/graphql
REACT_APP_USE_RECAPTCHA=
REACT_APP_RECAPTCHA_SITE_KEY=
ALLOW_LOGS=NO
USE_DOCKER=YES
DOCKER_MODE=ROOTLESS
DOCKER_PORT=4321
EOF
- name: Install rootless prerequisites
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y uidmap dbus-user-session slirp4netns fuse-overlayfs ca-certificates curl gnupg
if ! command -v dockerd-rootless-setuptool.sh >/dev/null 2>&1; then
sudo install -m 0755 -d /etc/apt/keyrings
if [ ! -f /etc/apt/keyrings/docker.gpg ]; then
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
fi
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce-rootless-extras
fi
- name: Start rootless Docker daemon
run: |
set -euxo pipefail
export XDG_RUNTIME_DIR="/run/user/$UID"
sudo mkdir -p "$XDG_RUNTIME_DIR"
sudo chown "$USER":"$USER" "$XDG_RUNTIME_DIR"
if [ ! -f "$HOME/.config/systemd/user/docker.service" ]; then
dockerd-rootless-setuptool.sh install --force
fi
systemctl --user daemon-reload || true
systemctl --user start docker || true
if ! systemctl --user --no-pager status docker >/dev/null 2>&1; then
nohup dockerd-rootless.sh > "$RUNNER_TEMP/dockerd-rootless.log" 2>&1 &
fi
chmod +x scripts/docker/resolve-docker-host.sh
eval "$(./scripts/docker/resolve-docker-host.sh --mode rootless --emit-export --warn-if-docker-group)"
echo "DOCKER_HOST=$DOCKER_HOST" >> "$GITHUB_ENV"
echo "XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR" >> "$GITHUB_ENV"
echo "$HOME/bin" >> "$GITHUB_PATH"
- name: Verify rootless daemon
run: |
set -euxo pipefail
chmod +x scripts/docker/resolve-docker-host.sh
eval "$(./scripts/docker/resolve-docker-host.sh --mode rootless --emit-export --warn-if-docker-group)"
TIMEOUT=60
until docker info >/dev/null 2>&1 || [ "$TIMEOUT" -le 0 ]; do
sleep 2
TIMEOUT=$((TIMEOUT - 2))
done
if ! docker info >/dev/null 2>&1; then
echo "Rootless Docker daemon did not start in time."
if [ -f "$RUNNER_TEMP/dockerd-rootless.log" ]; then
tail -n 200 "$RUNNER_TEMP/dockerd-rootless.log"
fi
exit 1
fi
docker info
docker info --format '{{json .SecurityOptions}}' | tee "$RUNNER_TEMP/rootless-security-options.json"
grep -qi rootless "$RUNNER_TEMP/rootless-security-options.json"
- name: Build Docker images (Rootless)
run: |
set -e
export PNPM_VERSION="${PNPM_VERSION:-10.4.1}"
export UID
export GID="$(id -g)"
echo "Building rootless Docker images..."
docker compose -f docker/docker-compose.rootless.prod.yaml build
docker compose -f docker/docker-compose.rootless.dev.yaml build
echo "Rootless Docker images built successfully"
- name: Run Docker Containers (Rootless Production)
run: |
set -e
export UID
export GID="$(id -g)"
echo "Starting rootless Docker container for production..."
docker compose -f docker/docker-compose.rootless.prod.yaml up -d
echo "Rootless production Docker container started successfully"
- name: Check if Talawa Admin App is running (Rootless Production)
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4321 120 true
- name: Stop rootless prod Docker Containers
if: always()
run: |
export UID
export GID="$(id -g)"
docker compose -f docker/docker-compose.rootless.prod.yaml down
echo "Rootless prod Docker container stopped and removed"
- name: Run Docker Containers (Rootless Development)
run: |
set -e
export UID
export GID="$(id -g)"
echo "Starting rootless Docker container for development..."
docker compose -f docker/docker-compose.rootless.dev.yaml up -d
echo "Rootless development Docker container started successfully"
- name: Check if Talawa Admin App is running (Rootless Development)
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4321 120 true
- name: Stop rootless dev Docker Containers
if: always()
run: |
export UID
export GID="$(id -g)"
docker compose -f docker/docker-compose.rootless.dev.yaml down
echo "Rootless dev Docker containers stopped and removed"
- name: Print rootless daemon logs on failure
if: failure()
run: |
if [ -f "$RUNNER_TEMP/dockerd-rootless.log" ]; then
tail -n 200 "$RUNNER_TEMP/dockerd-rootless.log"
fi
Test-Docusaurus-Deployment:
name: Test Deployment to https://docs-admin.talawa.io
runs-on: ubuntu-latest
needs: [Merge-Coverage]
# Run only if the develop branch and not dependabot
if: ${{ github.actor != 'dependabot[bot]' && github.event.pull_request.base.ref == 'develop' }}
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
working-directory: ./docs
run: |
if [ -f pnpm-lock.yaml ]; then
echo "pnpm-lock.yaml found — running pnpm fetch"
pnpm fetch
else
echo "No pnpm-lock.yaml found — running pnpm install to generate it"
pnpm install --frozen-lockfile=false
fi
- name: Install dependencies (allow lockfile creation)
working-directory: ./docs
run: |
if [ -f pnpm-lock.yaml ]; then
pnpm install --frozen-lockfile --prefer-offline
else
echo "pnpm-lock.yaml not found — installing without --frozen-lockfile"
pnpm install --prefer-offline
fi
- name: Test building the website
working-directory: ./docs
run: pnpm run build
Check-Target-Branch:
if: ${{ github.actor != 'dependabot[bot]' }}
name: Check Target Branch
runs-on: ubuntu-latest
steps:
- name: Check if the target branch is develop
if: github.event.pull_request.base.ref != 'develop'
run: |
echo "Error: Pull request target branch must be 'develop'. Please refer PR_GUIDELINES.md"
echo "Error: Close this PR and try again."
exit 1
Python-Compliance:
name: Check Python Code Style
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Checkout centralized CI/CD scripts
uses: actions/checkout@v4
with:
repository: PalisadoesFoundation/.github
ref: main
path: .github-central
- name: Set up Python 3.11
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Cache pip packages
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python3 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
pip install -r .github/workflows/requirements.txt
- name: Run Python tests for scripts
run: |
source venv/bin/activate
pytest .github/workflows/scripts/test
- name: Run Black Formatter Check
run: |
source venv/bin/activate
black --check .
- name: Run Flake8 Linter
run: |
source venv/bin/activate
flake8 --docstring-convention google --ignore E402,E722,E203,F401,W503 .github
- name: Run pydocstyle
run: |
source venv/bin/activate
pydocstyle --convention=google --add-ignore=D415,D205 .github
- name: Run docstring compliance check
run: |
source venv/bin/activate
python .github-central/.github/workflows/scripts/check_docstrings.py \
--directories .github
Test-Application-E2E:
timeout-minutes: 35
runs-on: ubuntu-latest
needs: [Merge-Coverage]
env:
REACT_APP_TALAWA_URL: http://127.0.0.1:4000/graphql
steps:
- name: Checkout Backend
uses: actions/checkout@v4
with:
repository: palisadoesFoundation/talawa-api
ref: develop
- name: Setup Devcontainer
run: |
npm install -g @devcontainers/cli
cp envFiles/.env.devcontainer .env
devcontainer up --workspace-folder . --config .devcontainer/default/devcontainer.json
echo "Devcontainer started"
- name: Wait for Postgres in devcontainer before migrations
run: |
set -euo pipefail
POSTGRES_USER=postgres
echo "Waiting for Postgres service via compose..."
TIMEOUT=90
until docker compose exec -T postgres pg_isready -h localhost -p 5432 -U "$POSTGRES_USER" >/dev/null 2>&1 || [ "$TIMEOUT" -le 0 ]; do
echo "Postgres not ready ($TIMEOUT s left)"
sleep 1
TIMEOUT=$((TIMEOUT - 1))
done
if [ "$TIMEOUT" -le 0 ]; then
echo "Error: Postgres failed to start"
docker compose ps
docker compose logs postgres --tail 100
exit 1
fi
- name: Apply Database Migrations
run: |
docker exec talawa-api-1 /bin/bash -c 'pnpm apply_drizzle_migrations'
- name: Start Backend Server
run: |
docker exec -d talawa-api-1 /bin/bash -c 'pnpm run start_development_server'
- name: Wait for backend to be ready
run: |
set -euo pipefail
echo "Waiting for backend at http://localhost:4000/healthcheck"
TIMEOUT=60
INTERVAL=3
ELAPSED=0
until docker exec talawa-api-1 curl -sf http://localhost:4000/healthcheck > /dev/null; do
if [ "$ELAPSED" -ge "$TIMEOUT" ]; then
echo "Backend failed to start within ${TIMEOUT}s"
echo "=== Backend container logs ==="
docker logs talawa-api-1 --tail 100
exit 1
fi
echo "Backend not ready yet... (waited ${ELAPSED}s)"
sleep $INTERVAL
ELAPSED=$((ELAPSED + INTERVAL))
done
echo "Backend is up and responding"
- name: Wait for GraphQL endpoint to be ready
if: success()
run: |
set -euo pipefail
echo "Waiting for GraphQL endpoint at http://localhost:4000/graphql"
TIMEOUT=60
INTERVAL=3
ELAPSED=0
until docker exec talawa-api-1 curl -sf -X POST \
http://localhost:4000/graphql \
-H "Content-Type: application/json" \
-d '{"query":"{ __typename }"}' | grep -q "__typename"; do
if [ "$ELAPSED" -ge "$TIMEOUT" ]; then
echo "GraphQL endpoint failed to become ready within ${TIMEOUT}s"
echo "=== Backend container logs ==="
docker logs talawa-api-1 --tail 100
exit 1
fi
echo "GraphQL endpoint not ready yet... (waited ${ELAPSED}s)"
sleep $INTERVAL
ELAPSED=$((ELAPSED + INTERVAL))
done
echo "GraphQL endpoint is up and responding"
- name: Seed Sample Data
run: |
echo "=== Seeding Sample Data ==="
if docker exec talawa-api-1 /bin/bash -c 'set -a; source ./.env; set +a; pnpm run add:sample_data'; then
echo "Seeding completed successfully"
else
echo "Seeding failed - Debug Information:"
echo "Container status:"
docker ps | grep talawa
echo "Recent container logs:"
docker logs talawa-api-1 --tail 50
echo "=== Users table contents ==="
docker exec talawa-postgres-1 psql -U talawa -d talawa \
-c "SELECT id, email_address, name, role FROM users;" 2>/dev/null || echo "Could not query users"
exit 1
fi
- name: Checkout Frontend
uses: actions/checkout@v4
with:
path: frontend
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
working-directory: frontend
run: pnpm fetch
- name: Install Frontend Dependencies (frozen)
working-directory: frontend
run: pnpm install --frozen-lockfile --prefer-offline
- name: Ensure Cypress binary is installed
working-directory: frontend
run: pnpm exec cypress install
- name: Setup .env
working-directory: frontend
run: |
pwd && cp .env.example .env
echo $REACT_APP_TALAWA_URL
curl -s -X POST http://127.0.0.1:4000/graphql \
-H "Content-Type: application/json" \
-d '{"query":"{__typename}"}' 2>/dev/null
- name: Run Cypress Tests with Dev Server
uses: cypress-io/github-action@v6
with:
working-directory: frontend
start: pnpm run serve
wait-on: 'http://localhost:4321'
wait-on-timeout: 120
config-file: cypress.config.ts
install: false
env:
CYPRESS_BASE_URL: http://localhost:4321
CYPRESS_API_URL: http://127.0.0.1:4000/graphql
# Best-effort artifact upload: continue even if upload fails due to
# transient GitHub Actions infrastructure issues. The test result
# should not be affected by artifact upload service hiccups.
- name: Upload cypress screenshots on failure
id: upload-screenshots
uses: actions/upload-artifact@v4
if: failure()
continue-on-error: true
with:
name: cypress-screenshots
path: frontend/cypress/screenshots
compression-level: 9
retention-days: 7
- name: Log artifact upload status
if: always() && steps.upload-screenshots.outcome == 'failure'
run: |
echo "⚠️ Warning: Screenshot upload failed due to infrastructure issue"
echo "This does not indicate a test failure - check test results above"
ZAP-Security-Scan:
name: ZAP Security Scan
runs-on: ubuntu-latest
needs:
[
Test-Application,
Test-Application-E2E,
Start-App-Without-Docker,
Start-App-Using-Docker,
Start-App-Using-Docker-Rootless,
]
permissions:
contents: read
steps:
- name: Checkout the Repository
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install Dependencies (frozen)
run: pnpm install --frozen-lockfile --prefer-offline
- name: Start Application
run: |
pnpm run serve &
echo $! > .pidfile_dev
- name: Check if Development App is running
run: |
chmod +x .github/workflows/scripts/app_health_check.sh
.github/workflows/scripts/app_health_check.sh 4321 120
- name: ZAP Scan
uses: zaproxy/action-full-scan@v0.12.0
with:
target: 'http://localhost:4321'
allow_issue_writing: false
- name: Upload ZAP Report
if: always()
uses: actions/upload-artifact@v4
with:
name: zap-scan-report
path: report_html.html
- name: Stop Development App
if: always()
run: |
if [ -f .pidfile_dev ]; then
kill "$(cat .pidfile_dev)"
fi
================================================
FILE: .github/workflows/push-deploy-website.yml
================================================
##############################################################################
##############################################################################
#
# NOTE!
#
# Please read the README.md file in this directory that defines what should
# be placed in this file
#
##############################################################################
##############################################################################
name: PUSH Workflow - Website Deployment
on:
push:
branches:
- 'develop'
paths:
- docs/**
env:
CODECOV_UNIQUE_NAME: CODECOV_UNIQUE_NAME-${{ github.run_id }}-${{ github.run_number }}
jobs:
Deploy-Docusaurus:
name: Deploy https://docs-admin.talawa.io website
runs-on: ubuntu-latest
# Run only if the develop branch and not dependabot
if: ${{ github.actor != 'dependabot[bot]' }}
environment:
# This "name" has to be the repos' branch that contains
# the current active website. There must be an entry for
# the same branch in the PalisadoesFoundation's
# "Code and automation > Environments > github-pages"
# menu. The branch "name" must match the branch in the
# "on.push.branches" section at the top of this file
name: develop
url: https://docs-admin.talawa.io
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '24.x'
- uses: pnpm/action-setup@v4
with:
version: 10.4.1
- name: Cache pnpm store
uses: actions/cache@v4
id: pnpm-cache
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.DEPLOY_GITHUB_PAGES }}
- name: Deploy to GitHub Pages
env:
USE_SSH: true
GIT_USER: git
working-directory: ./docs
run: |
git config --global user.email "actions@github.com"
git config --global user.name "gh-actions"
pnpm install
pnpm run deploy
================================================
FILE: .github/workflows/push.yml
================================================
##############################################################################
##############################################################################
#
# NOTE!
#
# Please read the README.md file in this directory that defines what should
# be placed in this file
#
##############################################################################
##############################################################################
name: PUSH Workflow - All Branches
on:
push:
branches:
- '**'
env:
CODECOV_UNIQUE_NAME: CODECOV_UNIQUE_NAME-${{ github.run_id }}-${{ github.run_number }}
jobs:
Merge-Conflict-Check:
runs-on: ubuntu-latest
name: Find merge conflicts
steps:
- uses: actions/checkout@v4
- name: Merge conflict finder
uses: olivernybroe/action-conflict-finder@v4.1
Check-Route-Prefix:
name: Check Route Prefix
needs: [Merge-Conflict-Check]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10.4.1
run_install: false
- uses: actions/setup-node@v4
with:
node-version: '24.x'
cache: 'pnpm'
- name: Prepare dependency store
run: pnpm fetch
- name: Install dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Run route prefix check
env:
CI: true
run: npm run check-route-prefix -- --scan-entire-repo
Code-Coverage:
if: ${{ github.actor != 'dependabot[bot]' }}
name: Test and Calculate Code Coverage
needs: [Merge-Conflict-Check, Check-Route-Prefix]
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [24.x]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- uses: pnpm/action-setup@v4
with:
version: 10.4.1
- name: Cache pnpm store
uses: actions/cache@v4
id: pnpm-cache
with:
path: ~/.pnpm-store
key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-
- name: Install dependencies
run: pnpm install
- name: Run Vitest Tests
env:
NODE_V8_COVERAGE: './coverage/vitest'
run: |
pnpm run test:coverage
#######################################################################
# DO NOT DELETE ANY references to env.CODECOV_UNIQUE_NAME in this
# section. They are required for accurate calculations
#######################################################################
- name: Present and upload coverage to Codecov as ${{env.CODECOV_UNIQUE_NAME}}
uses: codecov/codecov-action@v5
with:
name: '${{env.CODECOV_UNIQUE_NAME}}'
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true
exclude: 'docs/'
gcov_ignore: 'docs/'
files: ./coverage/vitest/lcov.info
================================================
FILE: .github/workflows/requirements.txt
================================================
##############################################################################
# Python Dependencies for Shared Workflow Scripts
##############################################################################
#
# Required for GitHub Actions workflow Python checks
# Standardized across all Talawa repositories (api, admin, mobile, plugin)
#
# Based on cross-repository analysis (2026-01-03):
# - All repos use: black, pydocstyle, flake8, flake8-docstrings, docstring_parser
# - Configuration files: pyproject.toml, .flake8, .pydocstyle
#
##############################################################################
# Code Formatting
black==26.1.0
# Docstring Checking
pydocstyle
docstring_parser
# Linting
flake8
flake8-docstrings
# Testing
pytest
================================================
FILE: .github/workflows/scripts/app_health_check.sh
================================================
#!/bin/bash
# This script performs a health check to ensure an application is running on a specified port.
# The script uses netcat (nc) to check if the port is open, with a configurable timeout.
# It also includes optional logic to fetch Docker container logs if the health check fails during a Docker-based test.
# Variables:
# port="$1" - The port to check (passed as the first argument to the script).
# timeout="${2:-120}" - The maximum time in seconds to wait for the application to start. Defaults to 120 seconds if not provided.
# is_docker_test="${3:-false}" - A flag to indicate whether the script is being run in a Docker-based test. Defaults to false.
# Logic:
# 1. Print a message indicating the start of the health check.
# 2. Enter a loop to repeatedly check if the port is open using `nc -z localhost "${port}"`.
# - If the port is not open and the timeout has not expired, sleep for 1 second and decrement the timeout.
# - Print a status message every 10 seconds with the remaining time.
# 3. If the timeout expires, print an error message and, if in Docker test mode, fetch Docker logs for debugging.
# 4. If the port is detected as open, print a success message and exit.
# Script:
port="$1"
timeout="${2:-120}"
is_docker_test="${3:-false}"
# Validate required port parameter
if [ -z "${port}" ] || ! [[ "${port}" =~ ^[0-9]+$ ]] || [ "${port}" -lt 1 ] || [ "${port}" -gt 65535 ]; then
echo "Error: Invalid or missing port number. Must be between 1-65535"
exit 1
fi
# Validate timeout parameter
if ! [[ "${timeout}" =~ ^[0-9]+$ ]] || [ "${timeout}" -lt 1 ]; then
echo "Error: Invalid timeout value. Must be a positive integer"
exit 1
fi
# Validate is_docker_test parameter
if [ "${is_docker_test}" != "true" ] && [ "${is_docker_test}" != "false" ]; then
echo "Error: is_docker_test must be either 'true' or 'false'"
exit 1
fi
echo "Starting health check with ${timeout}s timeout"
while [ "${timeout}" -gt 0 ]; do
if nc -z localhost "${port}" 2>/dev/null; then
break
elif [ $? -ne 1 ]; then
echo "Error: Failed to check port ${port} (nc command failed)"
exit 1
fi
sleep 1
timeout=$((timeout-1))
if [ $((timeout % 10)) -eq 0 ]; then
echo "Waiting for app to start on port ${port}... ${timeout}s remaining"
# Try to get more information about the port status
netstat -an | grep "${port}" || true
fi
done
if [ "${timeout}" -eq 0 ]; then
echo "Error: Timeout waiting for application to start on port ${port}"
echo "System port status:"
netstat -an | grep "${port}" || true
if [ "${is_docker_test}" = "true" ]; then
echo "Fetching Docker container logs..."
if ! docker logs talawa-admin-app-container; then
echo "Error: Failed to fetch logs from container talawa-admin-app-container"
fi
fi
exit 1
fi
echo "App started successfully on port ${port}"
================================================
FILE: .github/workflows/scripts/check-minio-compliance.cjs
================================================
/**
* MinIO Compliance Enforcement Script
*
* Purpose:
* Enforce the documented MinIO presigned URL file upload approach by
* preventing legacy or unsupported upload patterns from being introduced.
*
* Enforced Rules:
* - Disallow Base64-based uploads (convertToBase64)
* - Disallow apollo-upload-client imports
* - Disallow createUploadLink usage
*
* Behavior:
* - Existing known violations are temporarily exempted via LEGACY_EXCEPTIONS
* - Any NEW violations will cause the script to exit non-zero
*
* Related Issue:
* Standardize MinIO File Management - All operations (MVP) #3966
*/
const fs = require('fs');
const path = require('path');
/**
* Files with known legacy violations.
* These will be removed incrementally as migrations land.
*/
const LEGACY_EXCEPTIONS = new Set([
// Only index.tsx files remain - they use apollo-upload-client for Upload scalar support
// These will be removed once all components migrate to presigned URLs
'src/index.tsx',
'src/index.spec.tsx',
]);
/**
* Explicit forbidden imports.
* Maintainer requirement: lint for apollo-upload-client imports.
* Uses regex patterns to avoid false positives from comments and strings.
*/
const FORBIDDEN_IMPORT_PATTERNS = [
/from\s+["']apollo-upload-client["']/,
/require\s*\(\s*["']apollo-upload-client["']\s*\)/,
];
/**
* Forbidden identifiers/usages.
* Uses word boundaries to match whole identifiers only.
*/
const FORBIDDEN_IDENTIFIERS = [/\bconvertToBase64\b/, /\bcreateUploadLink\b/];
const ROOT_DIR = path.join(process.cwd(), 'src');
const violations = [];
function scanFile(filePath) {
const relativePath = path
.relative(process.cwd(), filePath)
.replace(/\\/g, '/');
let content;
try {
content = fs.readFileSync(filePath, 'utf8');
} catch (error) {
console.warn(`Warning: Could not read ${relativePath}: ${error.message}`);
return;
}
// Check forbidden imports
FORBIDDEN_IMPORT_PATTERNS.forEach((pattern) => {
if (pattern.test(content)) {
if (!LEGACY_EXCEPTIONS.has(relativePath)) {
violations.push({
file: relativePath,
reason: 'apollo-upload-client import detected',
});
}
}
});
// Check forbidden identifiers
FORBIDDEN_IDENTIFIERS.forEach((identifier) => {
if (identifier.test(content)) {
if (!LEGACY_EXCEPTIONS.has(relativePath)) {
const match = content.match(identifier);
violations.push({
file: relativePath,
reason: `forbidden identifier used: ${match[0]}`,
});
}
}
});
}
const EXCLUDED_DIRS = new Set([
'node_modules',
'dist',
'build',
'__mocks__',
'coverage',
]);
const visitedPaths = new Set();
function walk(dir) {
// Protect against symlink loops
let realPath;
try {
realPath = fs.realpathSync(dir);
} catch (error) {
console.warn(`Warning: Could not resolve ${dir}: ${error.message}`);
return;
}
if (visitedPaths.has(realPath)) {
return;
}
visitedPaths.add(realPath);
let entries;
try {
entries = fs.readdirSync(dir, { withFileTypes: true });
} catch (error) {
console.warn(`Warning: Could not read directory ${dir}: ${error.message}`);
return;
}
for (const entry of entries) {
// Skip common build/dependency directories
if (entry.isDirectory() && EXCLUDED_DIRS.has(entry.name)) {
continue;
}
const fullPath = path.join(dir, entry.name);
if (entry.isDirectory() && !entry.isSymbolicLink()) {
walk(fullPath);
} else if (
(fullPath.endsWith('.ts') || fullPath.endsWith('.tsx')) &&
!entry.isSymbolicLink()
) {
scanFile(fullPath);
}
}
}
try {
walk(ROOT_DIR);
} catch (error) {
console.error(`\nMinIO compliance check failed with error: ${error.message}`);
process.exit(2); // Exit with different code to distinguish from violations
}
if (violations.length > 0) {
console.error('\nMinIO compliance violations found:\n');
violations.forEach((v) => {
console.error(`- ${v.file}: ${v.reason}`);
});
process.exit(1);
}
console.log('MinIO compliance check passed');
================================================
FILE: .github/workflows/scripts/compare_translations.py
================================================
"""Script to encourage more efficient coding practices.
Methodology:
Utility for comparing translations between default and other languages.
This module defines a function to compare two translations
and print any missing keys in the other language's translation.
Attributes:
FileTranslation : Named tuple to represent a combination
of file and missing translations.
Fields:
- file (str): The file name.
- missing_translations (list): List of missing translations.
Functions:
compare_translations(default_translation, other_translation):
Compare two translations and print missing keys.
load_translation(filepath):
Load translation from a file.
check_translations():
Load the default translation and compare it with other translations.
main():
The main function to run the script.
Parses command-line arguments, checks for the
existence of the specified directory, and then
calls check_translations with the provided or default directory.
Usage:
This script can be executed to check and print missing
translations in other languages based on the default English translation.
Example:
python compare_translations.py
Note:
This script complies with our python3 coding and documentation standards
and should be used as a reference guide. It complies with:
1) Pylint
2) Pydocstyle
3) Pycodestyle
4) Flake8
"""
# standard imports
import argparse
import json
import os
import sys
import re
from collections import namedtuple
# Named tuple for file and missing
# translations combination
FileTranslation = namedtuple(
"FileTranslation", ["file", "missing_translations"]
)
def compare_translations(
default_translation, other_translation, default_file, other_file
):
"""Compare two translations for missing and/or mismatched keys.
Args:
default_translation (dict): The default translation (en.json).
other_translation (dict): The other language translation.
default_file (str): The name of the default translation file.
other_file (str): The name of the other
translation file.
Returns:
list: A list of detailed error messages for each missing/mismatched key.
"""
errors = []
# Extract and match interpolation vars (ex: {{name}})
def _extract_interpolation_vars(text):
"""Extract interpolation variables like {{variable}} from text.
Args:
text (str): The text to extract variables from.
Returns:
set: A set of variable names found in the text.
"""
return set(re.findall(r"\{\{(\w+)\}\}", text))
def _check_interpolation_match(default_val, other_val, key):
"""Check if interpolation variables match between translations.
Args:
default_val (str): The default translation value.
other_val (str): The other translation value.
key (str): The translation key being checked.
Returns:
None: Modifies the errors list in outer scope.
"""
default_vars = _extract_interpolation_vars(default_val)
other_vars = _extract_interpolation_vars(other_val)
if default_vars != other_vars:
missing_vars = default_vars - other_vars
extra_vars = other_vars - default_vars
if missing_vars:
errors.append(
f"Missing interpolation variables in key '{key}' in "
f"'{other_file}': "
f"{', '.join('{{' + var + '}}' for var in missing_vars)}"
)
if extra_vars:
errors.append(
f"Extra interpolation variables in key '{key}' in "
f"'{other_file}': "
f"{', '.join('{{' + var + '}}' for var in extra_vars)}"
)
# Get all unique keys from both translations
all_keys = set(default_translation.keys()) | set(other_translation.keys())
for key in all_keys:
# Check if key is missing in other_translation
if key not in other_translation:
error_msg = f"""\
Missing Key: '{key}' - This key from '{default_file}' \
is missing in '{other_file}'."""
errors.append(error_msg)
continue
# Check for missing keys in default_translation
if key not in default_translation:
error_msg = f"""\
Error Key: '{key}' - This key in '{other_file}' \
does not match any key in '{default_file}'."""
errors.append(error_msg)
continue
# Check for empty/null values
if default_translation[key] == "" or default_translation[key] is None:
error_msg = f"""\
Empty value: '{key}' - This key in '{default_file}' \
has incorrect value."""
errors.append(error_msg)
if other_translation[key] == "" or other_translation[key] is None:
error_msg = f"""\
Empty value: '{key}' - This key in '{other_file}' \
has incorrect value."""
errors.append(error_msg)
# Check interpolation match
if (
isinstance(default_translation[key], str)
and default_translation[key]
and isinstance(other_translation[key], str)
and other_translation[key]
):
_check_interpolation_match(
default_translation[key], other_translation[key], key
)
return errors
def flatten_json(nested_json, parent_key=""):
"""Flattens a nested JSON, concatenating keys to represent the hierarchy.
Args:
nested_json (dict): The JSON object to flatten.
parent_key (str): The base key for recursion to track key hierarchy.
Returns:
dict: A flattened dictionary with concatenated keys.
"""
flat_dict = {}
for key, value in nested_json.items():
# Create the new key by concatenating parent and current key
new_key = f"{parent_key}.{key}" if parent_key else key
if isinstance(value, dict):
# Recursively flatten the nested dictionary
flat_dict.update(flatten_json(value, new_key))
else:
# Assign the value to the flattened key
flat_dict[new_key] = value
return flat_dict
def load_translation(filepath):
"""Load translation from a file.
Args:
filepath: Path to the translation file
Returns:
translation: Loaded translation
"""
try:
with open(filepath, "r", encoding="utf-8") as file:
content = file.read()
if not content.strip():
raise ValueError(f"File {filepath} is empty.")
translation = json.loads(content)
flattened_translation = flatten_json(translation)
return flattened_translation
except json.JSONDecodeError as e:
raise ValueError(f"Error decoding JSON from file {filepath}: {e}")
def check_translations(directory):
"""Load default translation and compare with other translations.
Args:
directory (str): The directory containing translation files.
Returns:
None
"""
default_language_dir = os.path.join(directory, "en")
default_files = ["common.json", "errors.json", "translation.json"]
default_translations = {}
for file in default_files:
file_path = os.path.join(default_language_dir, file)
default_translations[file] = load_translation(file_path)
languages = os.listdir(directory)
languages.remove("en") # Exclude default language directory
error_found = False
for language in languages:
language_dir = os.path.join(directory, language)
for file in default_files:
default_translation = default_translations[file]
other_file_path = os.path.join(language_dir, file)
other_translation = load_translation(other_file_path)
# Compare translations and get detailed error messages
errors = compare_translations(
default_translation,
other_translation,
f"en/{file}",
f"{language}/{file}",
)
if errors:
error_found = True
print(f"File {language}/{file} has missing translations for:")
for error in errors:
print(f" - {error}")
if error_found:
sys.exit(1) # Exit with an error status code
else:
print("All translations are present with correct interpolations.")
sys.exit(0)
def main():
"""Compare translations.
Parse command-line arguments, check for the existence of the specified
directory and call check_translations with the provided or default
directory.
Args:
None
Returns:
None
"""
# Initialize key variables
parser = argparse.ArgumentParser(description="""\
Check and print missing translations for all non-default languages.""")
parser.add_argument(
"--directory",
type=str,
nargs="?",
default=os.path.join(os.getcwd(), "public/locales"),
help="""\
Directory containing translation files(relative to the root directory).""",
)
args = parser.parse_args()
if not os.path.exists(args.directory):
print(
f"Error: The specified directory '{args.directory}' does not exist."
)
sys.exit(1)
check_translations(args.directory)
if __name__ == "__main__":
main()
================================================
FILE: .github/workflows/scripts/css_check.py
================================================
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""Check TypeScript files for CSS violations and embedded CSS."""
import argparse
import os
import re
import sys
from collections import namedtuple
# Define namedtuple for storing detailed violations
DetailedViolation = namedtuple(
"DetailedViolation",
[
"file_path",
"line_number",
"violation_type",
"code_snippet",
"description",
],
)
CSSCheckResult = namedtuple("CSSCheckResult", ["violations"])
def check_embedded_styles(
content: str, file_path: str
) -> list[DetailedViolation]:
"""Check for embedded CSS and style violations in the content.
Args:
content: The content of the file to check.
file_path: Path to the file being checked.
Returns:
list: A list of DetailedViolation objects found.
"""
violations = []
lines = content.splitlines()
# Pattern definitions
patterns = {
"hex_color": {
"regex": r"#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b",
"description": """Hex color code found.
Use CSS variables from stylesheet instead.""",
},
"rgb_color": {
"regex": (
r"\brgba?\s*\(\s*"
r"\d+\s*,\s*"
r"\d+\s*,\s*"
r"\d+\s*"
r"(?:,\s*[\d.]+\s*)?"
r"\)"
),
"description": """RGB/RGBA color code found.
Use CSS variables from stylesheet instead.""",
},
"hsl_color": {
"regex": (
r"\bhsla?\s*\(\s*"
r"\d+\s*,\s*"
r"\d+%\s*,\s*"
r"\d+%\s*"
r"(?:,\s*[\d.]+\s*)?"
r"\)"
),
"description": """HSL/HSLA color code found.
Use CSS variables from stylesheet instead.""",
},
"inline_style_object": {
"regex": r"style\s*=\s*\{\{",
"description": """Inline style object found.
Move styles to CSS file and use className instead.""",
},
"inline_style_string": {
"regex": r'style\s*=\s*["\']',
"description": """Inline style string found.
Move styles to CSS file and use className instead.""",
},
"camelcase_css_property": {
"regex": (
r"\b(?:"
r"backgroundColor|fontSize|fontFamily|fontWeight|lineHeight|"
r"marginTop|marginBottom|marginLeft|marginRight|"
r"paddingTop|paddingBottom|paddingLeft|paddingRight|"
r"borderRadius|boxShadow|textAlign|textDecoration|"
r"zIndex|maxWidth|minWidth|maxHeight|minHeight"
r")\s*[:=]"
),
"description": """Camelcase CSS property found.
Move styles to CSS file and use className instead.""",
},
"pixel_value": {
"regex": (
r":\s*"
r"['\"]?"
r"\d+(?:px|em|rem|vh|vw|%)"
r"['\"]?"
r"(?=\s*[,}])"
),
"description": """Direct size value assignment found.
Move styles to CSS file and use className instead.""",
},
}
in_block_comment = False
for line_number, line in enumerate(lines, start=1):
# Skip comments and import statements
stripped_line = line.strip()
if stripped_line.startswith(("import ", "import{", "import(")):
continue
result = ""
i = 0
while i < len(line):
if in_block_comment:
if line[i : i + 2] == "*/":
in_block_comment = False
i += 2
else:
i += 1
else:
if line[i : i + 2] == "/*":
in_block_comment = True
i += 2
elif line[i : i + 2] == "//":
break
else:
result += line[i]
i += 1
code_line = result
if not code_line.strip():
continue
# Check for URL references (skip these as they're not style violations)
if (
"url(" in code_line.lower()
or "href=" in code_line.lower()
or "src=" in code_line.lower()
):
# Skip hex codes in URLs
continue
for violation_type, pattern_info in patterns.items():
matches = re.finditer(pattern_info["regex"], code_line)
for match in matches:
if violation_type == "camelcase_css_property":
# Check if it's actually in a style context
preceding_text = code_line[: match.start()].strip()
if not any(
keyword in preceding_text
for keyword in ["style", "css", "Style", "CSS"]
):
if "{" not in code_line[: match.start()]:
continue
if violation_type == "pixel_value":
# Look for style-related keywords nearby
context_window = code_line[
max(0, match.start() - 30) : min(
len(code_line), match.end() + 30
)
]
if not any(
keyword in context_window
for keyword in [
"style",
"Style",
"width",
"height",
"size",
"margin",
"padding",
]
):
continue
violations.append(
DetailedViolation(
file_path=file_path,
line_number=line_number,
violation_type=violation_type,
code_snippet=match.group(0),
description=pattern_info["description"],
)
)
return violations
def process_typescript_file(
file_path: str, all_violations: list[DetailedViolation]
) -> None:
"""Process a TypeScript file for CSS violations.
Args:
file_path: Path to the TypeScript file to process.
all_violations: List to store violations found.
Returns:
None: This function modifies the provided list.
"""
try:
with open(file_path, encoding="utf-8") as f:
content = f.read()
except (OSError, UnicodeDecodeError) as e:
print(f"Error reading file {file_path}: {e}", file=sys.stderr)
return
# Check for embedded styles
violations = check_embedded_styles(content, file_path)
all_violations.extend(violations)
def check_files(
directories: list,
files: list,
exclude_files: list,
exclude_directories: list,
) -> CSSCheckResult:
"""Scan directories and specific files for TS files and their violations.
Args:
directories: List of directories to scan for TypeScript files.
files: List of specific files to check.
exclude_files: List of file paths to exclude from the scan.
exclude_directories: List of directories to exclude from the scan.
Returns:
CSSCheckResult: A result object containing violations found.
"""
all_violations = []
exclude_files = set(os.path.abspath(file) for file in exclude_files)
exclude_directories = set(
os.path.abspath(dir) for dir in exclude_directories
)
for directory in directories:
directory = os.path.abspath(directory)
for root, _, files_in_dir in os.walk(directory):
root_dirname = os.path.basename(root)
if root_dirname in {"__tests__", "test", "tests"} or any(
root.startswith(exclude_dir)
for exclude_dir in exclude_directories
):
continue
for file in files_in_dir:
file_path = os.path.abspath(os.path.join(root, file))
if file_path in exclude_files:
continue
if file.endswith((".ts", ".tsx")) and not any(
pattern in file for pattern in [".test.", ".spec."]
):
process_typescript_file(file_path, all_violations)
# Process individual files explicitly listed
for file_path in files:
file_path = os.path.abspath(file_path)
file_name = os.path.basename(file_path)
if (
file_path not in exclude_files
and file_path.endswith((".ts", ".tsx"))
and not any(
pattern in file_name for pattern in [".test.", ".spec."]
)
):
process_typescript_file(file_path, all_violations)
return CSSCheckResult(violations=all_violations)
def validate_directories_input(input_directories: list[str]) -> list[str]:
"""Validate that the --directories input is correctly formatted.
Args:
input_directories: A list of file or directory paths to validate.
Returns:
validated_dirs: A list containing validated directory paths.
If the input is a file, its parent directory is added to the list.
Raises:
ValueError: If a path is neither a valid file nor a directory.
"""
validated_dirs = []
for path in input_directories:
if os.path.isdir(path):
validated_dirs.append(path)
elif os.path.isfile(path):
validated_dirs.append(os.path.dirname(path))
else:
raise ValueError(
f"Invalid path: {path}. Must be an existing file or directory."
)
return validated_dirs
def format_violation_output(violations: list[DetailedViolation]) -> str:
"""Format violations for human-readable output.
Args:
violations: List of violations to format.
Returns:
output: A formatted string containing all violations and a summary.
"""
if not violations:
return ""
output_lines = ["=" * 80]
output_lines.append("EMBEDDED CSS VIOLATIONS FOUND")
output_lines.append("=" * 80)
output_lines.append("")
# Group violations by file
violations_by_file = {}
for violation in violations:
if violation.file_path not in violations_by_file:
violations_by_file[violation.file_path] = []
violations_by_file[violation.file_path].append(violation)
# Sort files for consistent output
for file_path in sorted(violations_by_file.keys()):
file_violations = violations_by_file[file_path]
output_lines.append(f"File: {file_path}")
output_lines.append("-" * 80)
# Sort violations by line number
for violation in sorted(file_violations, key=lambda v: v.line_number):
output_lines.append(
f" Line {violation.line_number}: [{violation.violation_type}]"
)
output_lines.append(f" Code: {violation.code_snippet}")
output_lines.append(f" Issue: {violation.description}")
output_lines.append("")
output_lines.append("")
output_lines.append("=" * 80)
output_lines.append("SUMMARY")
output_lines.append("=" * 80)
output_lines.append(f"Total violations: {len(violations)}")
output_lines.append(f"Files affected: {len(violations_by_file)}")
output_lines.append("")
output_lines.append("Please address these violations by:")
output_lines.append("1. Moving all styles to CSS files")
output_lines.append("2. Using className instead of inline styles")
output_lines.append("3. Defining colors and sizes as CSS variables")
output_lines.append("4. Importing and using CSS modules properly")
output_lines.append("")
return "\n".join(output_lines)
def main():
"""Run the CSS check.
Args:
None
Returns:
None
"""
parser = argparse.ArgumentParser(description="""Check for embedded CSS and
style violations in TypeScript files.""")
parser.add_argument(
"--directories",
nargs="+",
required=False,
help="List of directories to check for CSS violations.",
)
parser.add_argument(
"--files",
nargs="*",
default=[],
help="Specific files to check for CSS violations.",
)
parser.add_argument(
"--exclude_files",
nargs="*",
default=[],
help="Specific files to exclude from analysis.",
)
parser.add_argument(
"--exclude_directories",
nargs="*",
default=[],
help="Directories to exclude from analysis.",
)
args = parser.parse_args()
if not args.directories and not args.files:
parser.error(
"At least one of --directories or --files must be provided."
)
try:
directories = (
validate_directories_input(args.directories)
if args.directories
else []
)
except ValueError as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
result = check_files(
directories=directories,
files=args.files,
exclude_files=args.exclude_files,
exclude_directories=args.exclude_directories,
)
if result.violations:
print(format_violation_output(result.violations))
sys.exit(1)
else:
print("✓ No embedded CSS violations found.")
sys.exit(0)
if __name__ == "__main__":
main()
================================================
FILE: .github/workflows/scripts/test/README.md
================================================
## Place test code in this directory
================================================
FILE: .github/workflows/scripts/test/test_css_check.py
================================================
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""Comprehensive unit tests for css_check.py with 100% code coverage."""
import unittest
import tempfile
import os
import sys
from unittest.mock import patch
from io import StringIO
import shutil
sys.path.insert(
0, os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
)
from css_check import (
check_embedded_styles,
process_typescript_file,
check_files,
validate_directories_input,
format_violation_output,
DetailedViolation,
CSSCheckResult,
main,
)
class TestCheckEmbeddedStyles(unittest.TestCase):
"""Test suite for check_embedded_styles function."""
def test_detects_hex_color(self):
"""Test detection of 6-digit hex color codes."""
content = "const bgColor = '#ff0000';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "hex_color")
self.assertEqual(violations[0].code_snippet, "#ff0000")
def test_detects_multiple_hex_colors(self):
"""Test detection of multiple hex colors in one line."""
content = (
"const colors = { primary: '#ff0000', secondary: '#00ff00' };"
)
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 2)
self.assertTrue(
all(v.violation_type == "hex_color" for v in violations)
)
def test_detects_rgb_color(self):
"""Test detection of RGB color codes."""
content = "const color = 'rgb(255, 0, 0)';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "rgb_color")
def test_detects_rgba_color(self):
"""Test detection of RGBA color codes."""
content = "const color = 'rgba(255, 0, 0, 0.5)';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "rgb_color")
def test_detects_hsl_color(self):
"""Test detection of HSL color codes."""
content = "const color = 'hsl(120, 100%, 50%)';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "hsl_color")
def test_detects_inline_style_object(self):
"""Test detection of inline style objects."""
content = "<div style={{ color: 'red' }}>Hello</div>"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "inline_style_object")
def test_detects_inline_style_string_double_quotes(self):
"""Test detection of inline style strings with double quotes."""
content = '<div style="color: red;">Hello</div>'
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "inline_style_string")
def test_detects_inline_style_string_single_quotes(self):
"""Test detection of inline style strings with single quotes."""
content = "<div style='color: red;'>Hello</div>"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "inline_style_string")
def test_detects_camelcase_font_size(self):
"""Test detection of camelCase CSS property fontSize."""
content = "const styles = { fontSize: '16px' };"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 2)
self.assertEqual(
violations[0].violation_type, "camelcase_css_property"
)
def test_detects_camelcase_margin_top(self):
"""Test detection of camelCase CSS property marginTop."""
content = "const styles = { marginTop: '10px' };"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 2)
self.assertEqual(
violations[0].violation_type, "camelcase_css_property"
)
def test_detects_camelcase_padding_left(self):
"""Test detection of camelCase CSS property paddingLeft."""
content = "const styles = { paddingLeft: '5px' };"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 2)
self.assertEqual(
violations[0].violation_type, "camelcase_css_property"
)
def test_detects_pixel_value(self):
"""Test detection of pixel values in style context."""
content = "const style = { width: '100px' };"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "pixel_value")
def test_detects_rem_value(self):
"""Test detection of rem values in style context."""
content = "const style = { margin: '1rem' };"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].violation_type, "pixel_value")
def test_ignores_single_line_comment_with_hex(self):
"""Test that hex colors in single-line comments are ignored."""
content = "// const color = '#ff0000';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_ignores_block_comment_with_styles(self):
"""Test that styles in block comments are ignored."""
content = "/* const color = '#ff0000'; */"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_ignores_multiline_block_comment(self):
"""Test that multiline block comments with styles are ignored."""
content = """/*
const color = '#ff0000';
const bg = 'rgb(255, 0, 0)';
*/"""
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_handles_block_comment_spanning_lines(self):
"""Test proper handling of block comments spanning multiple lines."""
content = """const valid = 'test';
/* comment with #ff0000 */
const color = '#00ff00';"""
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].code_snippet, "#00ff00")
self.assertEqual(violations[0].line_number, 3)
def test_ignores_import_statements(self):
"""Test that import statements are ignored."""
content = "import { colors } from './colors';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_ignores_dynamic_import(self):
"""Test that dynamic import() statements are ignored."""
content = "const module = import('./module');"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_ignores_hex_in_url(self):
"""Test that hex codes in URLs are ignored."""
content = "const imageUrl = 'url(#ff0000)';"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_ignores_hex_in_href(self):
"""Test that hex codes in href attributes are ignored."""
content = '<a href="/page#ff0000">Link</a>'
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_ignores_hex_in_src(self):
"""Test that hex codes in src attributes are ignored."""
content = '<img src="/image#ff0000.png" />'
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_whitespace_only_content(self):
"""Test handling of whitespace-only content."""
content = " \n \t \n "
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 0)
def test_camelcase_requires_style_context(self):
"""Test that camelCase properties need style context to be flagged."""
content = "const backgroundColor = 'someValue';"
violations = check_embedded_styles(content, "test.tsx")
# Should not flag variable names, only in style objects
camelcase_violations = [
v
for v in violations
if v.violation_type == "camelcase_css_property"
]
self.assertEqual(len(camelcase_violations), 0)
def test_camelcase_in_object_with_brace(self):
"""Test camelCase detection in object context."""
content = "{ backgroundColor: 'red' }"
violations = check_embedded_styles(content, "test.tsx")
self.assertEqual(len(violations), 1)
self.assertEqual(
violations[0].violation_type, "camelcase_css_property"
)
def test_pixel_value_without_style_context_ignored(self):
"""Test that pixel values without style context are ignored."""
content = "const version = '100px';"
violations = check_embedded_styles(content, "test.tsx")
# Should not flag without style context
pixel_violations = [
v for v in violations if v.violation_type == "pixel_value"
]
self.assertEqual(len(pixel_violations), 0)
def test_pixel_value_with_width_keyword(self):
"""Test pixel value detection with 'width' keyword."""
content = "const width: '100px',"
violations = check_embedded_styles(content, "test.tsx")
self.assertGreaterEqual(len(violations), 1)
def test_multiple_violation_types_in_one_line(self):
"""Test detection of multiple violation types in a single line."""
content = (
"const style = { backgroundColor: '#ff0000', fontSize: '16px' };"
)
violations = check_embedded_styles(content, "test.tsx")
self.assertGreaterEqual(len(violations), 3) # hex, camelcase, pixel
violation_types = {v.violation_type for v in violations}
self.assertIn("hex_color", violation_types)
self.assertIn("camelcase_css_property", violation_types)
class TestProcessTypescriptFile(unittest.TestCase):
"""Test suite for process_typescript_file function."""
def setUp(self):
"""Create temporary directory for test files."""
self.test_dir = tempfile.mkdtemp()
def tearDown(self):
"""Clean up temporary directory."""
shutil.rmtree(self.test_dir)
def test_processes_valid_file(self):
"""Test processing of a valid TypeScript file."""
file_path = os.path.join(self.test_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
violations = []
process_typescript_file(file_path, violations)
self.assertEqual(len(violations), 1)
self.assertEqual(violations[0].file_path, file_path)
def test_processes_empty_file(self):
"""Test processing of an empty file."""
file_path = os.path.join(self.test_dir, "empty.tsx")
with open(file_path, "w") as f:
f.write("")
violations = []
process_typescript_file(file_path, violations)
self.assertEqual(len(violations), 0)
def test_processes_file_with_no_violations(self):
"""Test processing of a file with no violations."""
file_path = os.path.join(self.test_dir, "clean.tsx")
with open(file_path, "w") as f:
f.write("const name = 'test';\nimport React from 'react';")
violations = []
process_typescript_file(file_path, violations)
self.assertEqual(len(violations), 0)
def test_handles_file_not_found(self):
"""Test handling of non-existent file."""
file_path = os.path.join(self.test_dir, "nonexistent.tsx")
violations = []
with patch("sys.stderr", new_callable=StringIO) as mock_stderr:
process_typescript_file(file_path, violations)
self.assertIn("Error reading file", mock_stderr.getvalue())
self.assertEqual(len(violations), 0)
def test_handles_unicode_decode_error(self):
"""Test handling of files with encoding issues."""
file_path = os.path.join(self.test_dir, "bad_encoding.tsx")
# Create a file with invalid UTF-8
with open(file_path, "wb") as f:
f.write(b"\xff\xfe")
violations = []
with patch("sys.stderr", new_callable=StringIO) as mock_stderr:
process_typescript_file(file_path, violations)
output = mock_stderr.getvalue()
self.assertIn("Error reading file", output)
self.assertEqual(len(violations), 0)
def test_appends_to_existing_violations_list(self):
"""Test that violations are appended to existing list."""
file_path = os.path.join(self.test_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
existing_violation = DetailedViolation(
file_path="other.tsx",
line_number=1,
violation_type="test",
code_snippet="test",
description="test",
)
violations = [existing_violation]
process_typescript_file(file_path, violations)
self.assertEqual(len(violations), 2)
self.assertEqual(violations[0], existing_violation)
class TestCheckFiles(unittest.TestCase):
"""Test suite for check_files function."""
def setUp(self):
"""Create temporary directory structure for tests."""
self.test_dir = tempfile.mkdtemp()
self.subdir = os.path.join(self.test_dir, "subdir")
os.makedirs(self.subdir)
def tearDown(self):
"""Clean up temporary directory."""
shutil.rmtree(self.test_dir)
def test_scans_directory_for_tsx_files(self):
"""Test scanning directory for .tsx files."""
file_path = os.path.join(self.test_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 1)
def test_scans_directory_for_ts_files(self):
"""Test scanning directory for .ts files."""
file_path = os.path.join(self.test_dir, "test.ts")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 1)
def test_scans_nested_directories(self):
"""Test scanning nested directories."""
file_path = os.path.join(self.subdir, "nested.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 1)
def test_excludes_test_files_with_test_in_name(self):
"""Test that .test. files are excluded."""
file_path = os.path.join(self.test_dir, "component.test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 0)
def test_excludes_tests_directory(self):
"""Test that files in tests/ directory are excluded."""
tests_dir = os.path.join(self.test_dir, "tests")
os.makedirs(tests_dir)
file_path = os.path.join(tests_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 0)
def test_excludes_test_directory(self):
"""Test that files in test/ directory are excluded."""
test_dir = os.path.join(self.test_dir, "test")
os.makedirs(test_dir)
file_path = os.path.join(test_dir, "component.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 0)
def test_processes_explicit_file_list(self):
"""Test processing explicit list of files."""
file_path = os.path.join(self.test_dir, "explicit.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
result = check_files([], [file_path], [], [])
self.assertEqual(len(result.violations), 1)
def test_excludes_specific_files(self):
"""Test excluding specific files."""
file1 = os.path.join(self.test_dir, "include.tsx")
file2 = os.path.join(self.test_dir, "exclude.tsx")
with open(file1, "w") as f:
f.write("const color = '#ff0000';")
with open(file2, "w") as f:
f.write("const color = '#00ff00';")
result = check_files([self.test_dir], [], [file2], [])
self.assertEqual(len(result.violations), 1)
self.assertIn("include.tsx", result.violations[0].file_path)
def test_excludes_directories(self):
"""Test excluding entire directories."""
exclude_dir = os.path.join(self.test_dir, "exclude")
os.makedirs(exclude_dir)
file1 = os.path.join(self.test_dir, "include.tsx")
file2 = os.path.join(exclude_dir, "exclude.tsx")
with open(file1, "w") as f:
f.write("const color = '#ff0000';")
with open(file2, "w") as f:
f.write("const color = '#00ff00';")
result = check_files([self.test_dir], [], [], [exclude_dir])
self.assertEqual(len(result.violations), 1)
self.assertIn("include.tsx", result.violations[0].file_path)
def test_ignores_non_typescript_files(self):
"""Test that non-TypeScript files are ignored."""
js_file = os.path.join(self.test_dir, "test.js")
py_file = os.path.join(self.test_dir, "test.py")
with open(js_file, "w") as f:
f.write("const color = '#ff0000';")
with open(py_file, "w") as f:
f.write("color = '#00ff00'")
result = check_files([self.test_dir], [], [], [])
self.assertEqual(len(result.violations), 0)
def test_combines_directory_and_file_results(self):
"""Test combining results from directories and explicit files."""
dir_file = os.path.join(self.test_dir, "dir.tsx")
explicit_file = os.path.join(self.test_dir, "explicit.tsx")
with open(dir_file, "w") as f:
f.write("const color = '#ff0000';")
with open(explicit_file, "w") as f:
f.write("const bg = '#00ff00';")
result = check_files([self.test_dir], [explicit_file], [], [])
self.assertGreaterEqual(len(result.violations), 2)
def test_returns_css_check_result(self):
"""Test that function returns CSSCheckResult object."""
result = check_files([self.test_dir], [], [], [])
self.assertIsInstance(result, CSSCheckResult)
self.assertIsInstance(result.violations, list)
def test_handles_absolute_paths(self):
"""Test that function handles absolute paths correctly."""
file_path = os.path.join(self.test_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
abs_path = os.path.abspath(file_path)
result = check_files([], [abs_path], [], [])
self.assertEqual(len(result.violations), 1)
class TestValidateDirectoriesInput(unittest.TestCase):
"""Test suite for validate_directories_input function."""
def setUp(self):
"""Create temporary directory and file for tests."""
self.test_dir = tempfile.mkdtemp()
self.test_file = os.path.join(self.test_dir, "test.tsx")
with open(self.test_file, "w") as f:
f.write("test")
def tearDown(self):
"""Clean up temporary directory."""
shutil.rmtree(self.test_dir)
def test_validates_existing_directory(self):
"""Test validation of existing directory."""
result = validate_directories_input([self.test_dir])
self.assertEqual(len(result), 1)
self.assertEqual(result[0], self.test_dir)
class TestFormatViolationOutput(unittest.TestCase):
"""Test suite for format_violation_output function."""
def test_empty_violations_returns_empty_string(self):
"""Test that empty violations list returns empty string."""
result = format_violation_output([])
self.assertEqual(result, "")
def test_single_violation_output_format(self):
"""Test output format for single violation."""
violation = DetailedViolation(
file_path="/path/to/file.tsx",
line_number=10,
violation_type="hex_color",
code_snippet="#ff0000",
description="Hex color found",
)
result = format_violation_output([violation])
self.assertIn("EMBEDDED CSS VIOLATIONS FOUND", result)
self.assertIn("/path/to/file.tsx", result)
self.assertIn("Line 10", result)
self.assertIn("[hex_color]", result)
self.assertIn("#ff0000", result)
self.assertIn("Hex color found", result)
self.assertIn("Total violations: 1", result)
self.assertIn("Files affected: 1", result)
def test_multiple_violations_same_file(self):
"""Test output format for multiple violations in same file."""
violations = [
DetailedViolation(
file_path="/path/to/file.tsx",
line_number=5,
violation_type="hex_color",
code_snippet="#ff0000",
description="Hex color found",
),
DetailedViolation(
file_path="/path/to/file.tsx",
line_number=10,
violation_type="rgb_color",
code_snippet="rgb(255,0,0)",
description="RGB color found",
),
]
result = format_violation_output(violations)
self.assertIn("Total violations: 2", result)
self.assertIn("Files affected: 1", result)
self.assertIn("Line 5", result)
self.assertIn("Line 10", result)
def test_multiple_violations_different_files(self):
"""Test output format for violations across multiple files."""
violations = [
DetailedViolation(
file_path="/path/to/file1.tsx",
line_number=5,
violation_type="hex_color",
code_snippet="#ff0000",
description="Hex color found",
),
DetailedViolation(
file_path="/path/to/file2.tsx",
line_number=10,
violation_type="rgb_color",
code_snippet="rgb(255,0,0)",
description="RGB color found",
),
]
result = format_violation_output(violations)
self.assertIn("Total violations: 2", result)
self.assertIn("Files affected: 2", result)
self.assertIn("file1.tsx", result)
self.assertIn("file2.tsx", result)
class TestMain(unittest.TestCase):
"""Test suite for main function."""
def setUp(self):
"""Set up test directory."""
self.test_dir = tempfile.mkdtemp()
def tearDown(self):
"""Clean up test directory."""
shutil.rmtree(self.test_dir)
def test_exits_with_code_0_when_no_violations(self):
"""Test that main exits with code 0 when no violations found."""
file_path = os.path.join(self.test_dir, "clean.tsx")
with open(file_path, "w") as f:
f.write("const name = 'test';")
test_args = ["css_check.py", "--directories", self.test_dir]
with patch("sys.argv", test_args):
with patch("sys.stdout", new_callable=StringIO) as mock_stdout:
with self.assertRaises(SystemExit) as cm:
main()
self.assertEqual(cm.exception.code, 0)
self.assertIn(
"No embedded CSS violations found", mock_stdout.getvalue()
)
def test_exits_with_code_1_when_violations_found(self):
"""Test that main exits with code 1 when violations found."""
file_path = os.path.join(self.test_dir, "violation.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
test_args = ["css_check.py", "--directories", self.test_dir]
with patch("sys.argv", test_args):
with patch("sys.stdout", new_callable=StringIO) as mock_stdout:
with self.assertRaises(SystemExit) as cm:
main()
self.assertEqual(cm.exception.code, 1)
output = mock_stdout.getvalue()
self.assertIn("EMBEDDED CSS VIOLATIONS FOUND", output)
def test_requires_directories_or_files_argument(self):
"""Test that main requires at least one of --directories or --files."""
test_args = ["css_check.py"]
with patch("sys.argv", test_args):
with patch("sys.stderr", new_callable=StringIO):
with self.assertRaises(SystemExit) as cm:
main()
self.assertEqual(cm.exception.code, 2)
def test_accepts_files_argument(self):
"""Test that main accepts --files argument."""
file_path = os.path.join(self.test_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
test_args = ["css_check.py", "--files", file_path]
with patch("sys.argv", test_args):
with patch("sys.stdout", new_callable=StringIO):
with self.assertRaises(SystemExit) as cm:
main()
self.assertEqual(cm.exception.code, 1)
def test_handles_invalid_directory_input(self):
"""Test that main handles invalid directory input."""
invalid_dir = os.path.join(self.test_dir, "nonexistent")
test_args = ["css_check.py", "--directories", invalid_dir]
with patch("sys.argv", test_args):
with patch("sys.stderr", new_callable=StringIO) as mock_stderr:
with self.assertRaises(SystemExit) as cm:
main()
self.assertEqual(cm.exception.code, 1)
self.assertIn("Error", mock_stderr.getvalue())
def test_prints_formatted_output(self):
"""Test that main prints formatted violation output."""
file_path = os.path.join(self.test_dir, "test.tsx")
with open(file_path, "w") as f:
f.write("const color = '#ff0000';")
test_args = ["css_check.py", "--directories", self.test_dir]
with patch("sys.argv", test_args):
with patch("sys.stdout", new_callable=StringIO) as mock_stdout:
with self.assertRaises(SystemExit):
main()
output = mock_stdout.getvalue()
self.assertIn("EMBEDDED CSS VIOLATIONS FOUND", output)
self.assertIn("Total violations:", output)
self.assertIn("Files affected:", output)
class TestNamedTuples(unittest.TestCase):
"""Test suite for namedtuple definitions."""
def test_detailed_violation_creation(self):
"""Test DetailedViolation namedtuple creation."""
violation = DetailedViolation(
file_path="/test.tsx",
line_number=10,
violation_type="hex_color",
code_snippet="#ff0000",
description="Test description",
)
self.assertEqual(violation.file_path, "/test.tsx")
self.assertEqual(violation.line_number, 10)
self.assertEqual(violation.violation_type, "hex_color")
self.assertEqual(violation.code_snippet, "#ff0000")
self.assertEqual(violation.description, "Test description")
def test_css_check_result_creation(self):
"""Test CSSCheckResult namedtuple creation."""
violations = [
DetailedViolation(
file_path="/test.tsx",
line_number=10,
violation_type="hex_color",
code_snippet="#ff0000",
description="Test",
)
]
result = CSSCheckResult(violations=violations)
self.assertEqual(len(result.violations), 1)
self.assertEqual(result.violations[0].file_path, "/test.tsx")
if __name__ == "__main__":
unittest.main()
================================================
FILE: .github/workflows/scripts/test/test_translation_check.py
================================================
"""Tests for the translation_check module."""
import unittest
import os
import sys
import json
import shutil
import tempfile
import subprocess
import importlib.util
from pathlib import Path
from unittest.mock import patch
SCRIPT_DIR = Path(__file__).resolve().parents[1]
SPEC = importlib.util.spec_from_file_location(
"translation_check",
SCRIPT_DIR / "translation_check.py",
)
translation_check = importlib.util.module_from_spec(SPEC)
SPEC.loader.exec_module(translation_check)
class TestTranslationCheck(unittest.TestCase):
"""Unit test suite for i18n tag validation logic."""
def setUp(self):
"""Initialize temporary environment for tests."""
self.test_dir = tempfile.mkdtemp()
self.locales_dir = os.path.join(self.test_dir, "locales")
os.makedirs(self.locales_dir)
self.en_dir = os.path.join(self.locales_dir, "en")
os.makedirs(self.en_dir)
self.common_json = os.path.join(self.en_dir, "common.json")
with open(self.common_json, "w", encoding="utf-8") as f:
json.dump({"login": "Login", "auth": {"signup": "Sign Up"}}, f)
def tearDown(self):
"""Cleanup temporary environment."""
shutil.rmtree(self.test_dir)
def test_get_keys_recursion(self):
"""Verify recursive extraction of nested keys."""
self.assertEqual(
translation_check.get_translation_keys({"a": {"b": "c"}}),
{"a.b"},
)
def test_load_locales_success(self):
"""Verify successful loading of valid locale keys."""
keys = translation_check.load_locale_keys(self.en_dir)
self.assertIn("login", keys)
def test_load_locales_malformed(self):
"""Verify handling of malformed JSON."""
with open(os.path.join(self.en_dir, "translation.json"), "w") as f:
f.write("{invalid}")
self.assertIn("login", translation_check.load_locale_keys(self.en_dir))
def test_load_locales_not_found(self):
"""Verify exception on invalid locale path."""
with self.assertRaises(FileNotFoundError):
translation_check.load_locale_keys("/invalid/path")
def test_find_tags_string(self):
"""Verify tag extraction from string."""
self.assertEqual(
translation_check.find_translation_tags("t('key')"),
{"key"},
)
def test_find_tags_path(self):
"""Verify tag extraction from file path."""
p = Path(self.test_dir) / "t.tsx"
p.write_text("t('key')", encoding="utf-8")
self.assertEqual(
translation_check.find_translation_tags(p),
{"key"},
)
def test_find_tags_namespace(self):
"""Verify extraction of namespaced keys."""
self.assertEqual(
translation_check.find_translation_tags("t('common:key')"),
{"key"},
)
def test_find_tags_io_error(self):
"""Verify handling of inaccessible files."""
tags = translation_check.find_translation_tags(Path(self.test_dir))
self.assertEqual(len(tags), 0)
def test_find_tags_dynamic_ignored(self):
"""Verify dynamic variables are ignored."""
self.assertEqual(
len(translation_check.find_translation_tags("t(var)")),
0,
)
def test_get_files_directory(self):
"""Verify directory scanning."""
src = Path(self.test_dir) / "src"
src.mkdir()
(src / "app.tsx").touch()
self.assertEqual(
len(
translation_check.get_target_files(None, [str(src)], [".tsx"])
),
0,
)
def test_get_files_exclude_spec(self):
"""Verify spec/test file exclusion."""
src = Path(self.test_dir) / "src"
src.mkdir(exist_ok=True)
(src / "app.spec.tsx").touch()
self.assertEqual(
len(
translation_check.get_target_files(None, [str(src)], [".tsx"])
),
0,
)
def test_get_files_explicit(self):
"""Verify explicit file selection."""
f = os.path.join(self.test_dir, "f.ts")
Path(f).touch()
self.assertEqual(
len(translation_check.get_target_files([f], None, [".ts"])),
0,
)
def test_main_success_flow(self):
"""Verify exit code 0 on successful validation."""
with patch(
"sys.argv",
[
"translation_check.py",
"--locales-dir",
self.en_dir,
"--directories",
self.test_dir,
],
):
with self.assertRaises(SystemExit) as cm:
translation_check.main()
self.assertEqual(cm.exception.code, 0)
def test_main_missing_flow(self):
"""Verify exit code 1 when missing keys are found."""
p = Path(self.test_dir) / "e.tsx"
p.write_text("t('missing')", encoding="utf-8")
with patch(
"sys.argv",
[
"translation_check.py",
"--locales-dir",
self.en_dir,
"--files",
str(p),
],
):
with self.assertRaises(SystemExit) as cm:
translation_check.main()
self.assertEqual(cm.exception.code, 1)
def test_main_error_flow(self):
"""Verify exit code 2 on configuration error."""
with patch(
"sys.argv",
["translation_check.py", "--locales-dir", "/invalid"],
):
with self.assertRaises(SystemExit) as cm:
translation_check.main()
self.assertEqual(cm.exception.code, 2)
def test_entry_point_subprocess(self):
"""Verify the actual __main__ entry point using a subprocess."""
script_path = SCRIPT_DIR / "translation_check.py"
result = subprocess.run(
[
sys.executable,
str(script_path),
"--locales-dir",
self.en_dir,
"--directories",
self.test_dir,
],
capture_output=True,
text=True,
check=False,
)
self.assertEqual(result.returncode, 0)
self.assertIn(
"All translation tags validated successfully",
result.stdout,
)
if __name__ == "__main__":
unittest.main()
================================================
FILE: .github/workflows/scripts/translation_check.py
================================================
"""Validates i18n translation tags against locale JSON files."""
from __future__ import annotations
import argparse
import json
import re
import sys
from pathlib import Path
def get_keys(data: dict, prefix: str = "") -> set[str]:
"""Flatten nested translation JSON into dot-notation keys.
Args:
data: Parsed JSON dictionary containing translation keys.
prefix: Prefix used for nested key traversal.
Returns:
keys: A set of flattened translation keys.
"""
keys: set[str] = set()
for key, value in data.items():
if isinstance(value, dict):
keys.update(get_keys(value, f"{prefix}{key}."))
else:
keys.add(f"{prefix}{key}")
return keys
def get_translation_keys(data: dict) -> set[str]:
"""Extract translation keys from parsed locale JSON.
Args:
data: Parsed JSON dictionary.
Returns:
translation_keys: A set of translation keys.
"""
return get_keys(data)
def load_locale_keys(locales_dir: str | Path) -> set[str]:
"""Load all valid translation keys from locale JSON files.
Args:
locales_dir: Path to the locale directory.
Returns:
keys: A set of all valid translation keys.
Raises:
FileNotFoundError: If the locale directory does not exist.
"""
base = Path(locales_dir)
if not base.exists():
raise FileNotFoundError(locales_dir)
keys: set[str] = set()
for name in ("common.json", "translation.json", "errors.json"):
path = base / name
if path.exists():
try:
keys.update(
get_keys(json.loads(path.read_text(encoding="utf-8")))
)
except (json.JSONDecodeError, OSError) as exc:
print(
f"Warning: Failed to parse {path}: {exc}",
file=sys.stderr,
)
if not keys:
print(
f"Warning: No translation keys found in {base}",
file=sys.stderr,
)
return keys
def find_translation_tags(source: str | Path) -> set[str]:
"""Find all translation tags used inside a source file or string.
Handles keyPrefix option in useTranslation calls by prefixing
the extracted keys with the keyPrefix value.
For components that receive `t` as a prop (not using useTranslation
directly), add a comment like:
// translation-check-keyPrefix: organizationEvents
to specify the keyPrefix used by the parent component.
Note:
This function assumes a single keyPrefix per file. If multiple
keyPrefixes are found (from useTranslation calls or comment
directives), only the first one is used for all translation tags.
A warning is emitted to stderr when this occurs.
Args:
source: File path or raw source string.
Returns:
found_tags: A set of detected translation keys.
"""
if isinstance(source, Path):
try:
content = source.read_text(encoding="utf-8")
except (OSError, UnicodeDecodeError):
return set()
else:
content = source
# Find keyPrefix from useTranslation calls
# Matches: useTranslation('translation', { keyPrefix: 'namespace' })
key_prefix_pattern = (
r"useTranslation\s*\([^)]*keyPrefix\s*:\s*['\"]([^'\"]+)['\"]"
)
key_prefixes = re.findall(key_prefix_pattern, content)
# Also check for explicit keyPrefix comment directive
# Matches: // translation-check-keyPrefix: namespace
comment_prefix_pattern = (
r"(?://|/\*)\s*translation-check-keyPrefix:\s*(\S+)"
)
comment_prefixes = re.findall(comment_prefix_pattern, content)
# Combine prefixes from useTranslation and comments
all_prefixes = key_prefixes + comment_prefixes
# Get the primary keyPrefix (if multiple, use the first one found)
# Note: This assumes single keyPrefix per file. Files with multiple
# components using different keyPrefixes may have inaccurate results.
if len(all_prefixes) > 1:
file_name = str(source) if isinstance(source, Path) else "source"
print(
f"Warning: Multiple keyPrefixes found in {file_name}. "
f"Using first: '{all_prefixes[0]}'. Found: {all_prefixes}",
file=sys.stderr,
)
primary_prefix = all_prefixes[0] if all_prefixes else None
# Find all t('key') calls
tags = re.findall(
r"(?:(?:\bi18n)\.)?\bt\(\s*['\"]([^'\" \n]+)['\"]",
content,
)
result = set()
for tag in tags:
# Remove namespace prefix if present (e.g., "translation:key" -> "key")
clean_tag = tag.split(":")[-1]
# If the tag already contains a dot (full path), use it as-is
# Otherwise, prefix it with the keyPrefix if one exists
if "." in clean_tag or primary_prefix is None:
result.add(clean_tag)
else:
result.add(f"{primary_prefix}.{clean_tag}")
return result
def get_target_files(
files: list[str] | None = None,
directories: list[str] | None = None,
exclude: list[str] | None = None,
) -> list[Path]:
"""Resolve target source files for translation validation.
Args:
files: Explicit list of files to scan.
directories: Directories to recursively scan.
exclude: Filename patterns to exclude.
Returns:
target_files: A list of source file paths.
Raises:
FileNotFoundError: If the default src directory is missing.
"""
exclude = exclude or []
targets: list[Path] = []
if files:
for file_path in files:
path = Path(file_path)
if path.exists() and path.is_file():
targets.append(path)
else:
print(
f"Warning: File not found: {file_path}",
file=sys.stderr,
)
if directories:
for directory in directories:
dir_path = Path(directory)
if dir_path.exists() and dir_path.is_dir():
targets.extend(dir_path.rglob("*"))
else:
print(
f"Warning: Directory not found: {directory}",
file=sys.stderr,
)
if not files and not directories:
src_path = Path("src")
if not src_path.exists() or not src_path.is_dir():
raise FileNotFoundError("Default 'src' directory not found")
targets = list(src_path.rglob("*"))
return [
path
for path in targets
if path.suffix in {".ts", ".tsx", ".js", ".jsx"}
and not any(path.name.endswith(x) or x in path.parts for x in exclude)
and ".spec." not in path.name
and ".test." not in path.name
]
def check_file(path: Path, valid_keys: set[str]) -> list[str]:
"""Check a file for missing translation keys.
Args:
path: File path to check.
valid_keys: Set of valid translation keys.
Returns:
missing_keys: A sorted list of missing translation keys.
"""
return sorted(
tag for tag in find_translation_tags(path) if tag not in valid_keys
)
def main() -> None:
"""CLI entry point for translation validation.
This function parses command-line arguments, loads translation keys,
validates translation tag usage across source files, and exits with
appropriate status codes based on the results.
Args:
None
Returns:
None
Raises:
SystemExit: Exits with status code 0 on success, 1 if missing
translation keys are found, or 2 for configuration errors.
"""
parser = argparse.ArgumentParser()
parser.add_argument("--files", nargs="*", default=[])
parser.add_argument("--directories", nargs="*", default=[])
parser.add_argument("--locales-dir", default="public/locales/en")
args = parser.parse_args()
try:
valid_keys = load_locale_keys(args.locales_dir)
except FileNotFoundError as exc:
print(
f"Error: Locale directory not found: {exc}",
file=sys.stderr,
)
sys.exit(2)
try:
targets = get_target_files(args.files, args.directories)
except FileNotFoundError as exc:
print(f"Error: {exc}", file=sys.stderr)
sys.exit(2)
errors: dict[str, list[str]] = {}
for path in targets:
missing = check_file(path, valid_keys)
if missing:
errors[str(path)] = missing
if errors:
for file, tags in errors.items():
print(
f"File: {file}\n"
+ "\n".join(f" - Missing: {tag}" for tag in tags)
)
sys.exit(1)
print("All translation tags validated successfully")
sys.exit(0)
if __name__ == "__main__":
main()
================================================
FILE: .github/workflows/stale.yml
================================================
name: Mark stale issues and pull requests
on:
schedule:
- cron: '*/20 0 * * *'
jobs:
stale:
uses: PalisadoesFoundation/.github/.github/workflows/stale.yml@main
================================================
FILE: .gitignore
================================================
# Docusaurus related
.docusaurus
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# lockfiles from other package managers (YARN, npm)
yarn.lock
package-lock.json
# dependencies
/node_modules
/.pnp
.pnp.js
.node-version
.nvmrc
# testing
coverage/
coverage-shards/
codecov
# production
/build
# misc
.DS_Store
# Config files
!/.env.sample
/.env
/.env-*
/.env_*
/.env.*
.backup/
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# express setup
debug.log
# No editor related files
.idea
.vscode
*.swp
# Plugin related
/src/plugin/available/*
!/src/plugin/available/readme.md
# Cypress related
cypress/videos
cypress/screenshots
.nyc_output
# Redis related
dump.rdb
# Ignore log files in the root directory
/*.log
config/node_modules/
**/.vite/
# GitHub Actions
.github-central
################################################################
# Python related
################################################################
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[codz]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
!scripts/install/lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py.cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
# Pipfile.lock
# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# uv.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
# poetry.lock
# poetry.toml
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
# pdm.lock
# pdm.toml
.pdm-python
.pdm-build/
# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
# pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# Redis
*.rdb
*.aof
*.pid
# RabbitMQ
mnesia/
rabbitmq/
rabbitmq-data/
# ActiveMQ
activemq-data/
# SageMath parsed files
*.sage.py
# Environments
.env
.envrc
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
# .idea/
# Abstra
# Abstra is an AI-powered process automation framework.
# Ignore directories containing user credentials, local state, and settings.
# Learn more at https://abstra.io/docs
.abstra/
# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
# Ruff stuff:
.ruff_cache/
# PyPI configuration file
.pypirc
# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/
# Streamlit
.streamlit/secrets.toml
# ESLint plugin build output
scripts/eslint/dist/
================================================
FILE: .graphqlrc.yml
================================================
schema: 'schema.graphql'
================================================
FILE: .husky/commit-msg
================================================
# !/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npx --no-install commitlint --edit "$1"
================================================
FILE: .husky/post-merge
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
git diff HEAD^ HEAD --exit-code -- ./package.json || pnpm install
================================================
FILE: .husky/pre-commit
================================================
#!/usr/bin/env bash
#
# =============================================================================
# Talawa Admin – Git Pre-Commit Hook
# =============================================================================
#
# This is the main entry point for all pre-commit checks.
# It determines which files are staged, prepares temporary file lists,
# and delegates language-specific checks to dedicated scripts.
#
# Responsibilities:
# - Verify required tools are installed
# - Identify staged source files safely (null-delimited)
# - Run Node.js and Python pre-commit checks conditionally
# - Re-stage modified files after formatting
#
# Design Notes:
# - Uses temporary files instead of variables to safely handle filenames
# - Exits early if no files are staged to improve performance
# - Delegates logic to smaller scripts for maintainability
#
# =============================================================================
# If running under sh/dash (from Husky sourcing), re-execute with bash
if [ -z "$BASH_VERSION" ]; then
exec bash "$0" "$@"
fi
set -euo pipefail
. .husky/scripts/staged-files.sh
.husky/scripts/check-tools.sh
STAGED_SRC_FILE=$(mktemp)
STAGED_ALL_FILE=$(mktemp)
trap 'rm -f "$STAGED_SRC_FILE" "$STAGED_ALL_FILE"; cleanup_staged_cache 2>/dev/null || true' EXIT
get_staged_files '^(src|scripts)/.*\.(ts|tsx|js|jsx)$' > "$STAGED_SRC_FILE"
get_staged_files > "$STAGED_ALL_FILE"
# Early exit if nothing staged
[ ! -s "$STAGED_ALL_FILE" ] && {
echo "No staged files to check..."
exit 0
}
# Design token validation (runs for any staged files so .css/.scss/.sass are checked even when no .ts/.tsx staged)
echo "Running design token validation..."
pnpm exec tsx scripts/validate-tokens.ts --staged --all || exit 1
if [ -s "$STAGED_SRC_FILE" ]; then
.husky/scripts/precommit-node.sh "$STAGED_SRC_FILE"
fi
.husky/scripts/precommit-python.sh "$STAGED_SRC_FILE"
xargs -0 git add -- < "$STAGED_ALL_FILE"
================================================
FILE: .husky/scripts/check-tools.sh
================================================
#!/usr/bin/env bash
#
# =============================================================================
# Pre-Commit Tool Availability Check
# =============================================================================
#
# This script ensures all required tools are available before running
# any pre-commit checks. Failing early avoids confusing errors later
# in the commit process.
#
# Checked Tools:
# - Core: git, node, pnpm, npx
# - Download tools: curl or wget (at least one required)
# - Checksum tools: shasum or sha256sum
# - Python: python3 or python (used via virtual environment)
#
# Design Notes:
# - Fails fast with actionable error messages
# - Supports multiple equivalent tools for portability
# - Improves cross-platform developer experience
#
# =============================================================================
set -euo pipefail
echo "Checking required tools..."
check_tool() {
if ! command -v "$1" >/dev/null 2>&1; then
echo "Error: Required tool '$1' is not installed."
echo "Please install '$1' and try again."
exit 1
fi
}
# Core tools
check_tool git
check_tool node
check_tool pnpm
check_tool npx
check_tool "perl"
# Download tools (at least one required)
if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then
echo "Error: Neither 'curl' nor 'wget' is installed."
echo "Please install one of them to continue."
exit 1
fi
# Checksum tools (required by precommit-python.sh)
if ! command -v shasum >/dev/null 2>&1 && ! command -v sha256sum >/dev/null 2>&1; then
echo "Error: Neither 'shasum' nor 'sha256sum' is installed."
echo "Please install one of them to continue."
exit 1
fi
# Python (used via venv)
if ! command -v python3 >/dev/null 2>&1 && ! command -v python >/dev/null 2>&1; then
echo "Error: Neither 'python3' nor 'python' is installed."
echo "Please install Python and try again."
exit 1
fi
echo "All required tools are available."
================================================
FILE: .husky/scripts/fetch-verified.sh
================================================
#!/usr/bin/env bash
#
# =============================================================================
# Talawa Admin – Fetch & Verify Remote Scripts
# =============================================================================
#
# Thin helper to securely fetch and cache external CI/CD scripts.
#
# Responsibilities:
# - Download remote scripts from a trusted source
# - Verify integrity using a pinned SHA-256 checksum
# - Cache verified scripts locally for reuse
#
# Design Notes:
# - Intentionally minimal to avoid scope creep
# - Fails fast on download or verification errors
# - Shared by Husky pre-commit hooks and CI tooling
#
# =============================================================================
set -euo pipefail
if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then
echo "Error: curl or wget is required to fetch remote scripts." >&2
exit 1
fi
if ! command -v sha256sum >/dev/null 2>&1 && ! command -v shasum >/dev/null 2>&1; then
echo "Error: sha256sum or shasum is required for checksum verification." >&2
exit 1
fi
fetch_and_verify() {
local url="$1"
local dest="$2"
local expected_sha="$3"
local cache_hours="${4:-24}"
if [ -z "$url" ] || [ -z "$dest" ] || [ -z "$expected_sha" ]; then
echo "Error: fetch_and_verify requires url, dest, and expected_sha" >&2
exit 1
fi
mkdir -p "$(dirname "$dest")"
local NEEDS_DOWNLOAD=true
local FILE_MOD_TIME=""
local OS_TYPE
OS_TYPE="$(uname -s)"
if [ -f "$dest" ]; then
case "$OS_TYPE" in
Darwin*)
FILE_MOD_TIME=$(stat -f %m "$dest" 2>/dev/null || true)
;;
Linux*)
FILE_MOD_TIME=$(stat -c %Y "$dest" 2>/dev/null || true)
;;
MINGW*|MSYS*|CYGWIN*)
if command -v powershell.exe >/dev/null 2>&1; then
local win_path
win_path=$(cygpath -w "$dest" 2>/dev/null \
|| echo "$dest" | sed 's|^/\([a-z]\)/|\U\1:/|')
FILE_MOD_TIME=$(powershell.exe -NoProfile -Command \
"([DateTimeOffset](Get-Item -LiteralPath \"${win_path}\").LastWriteTimeUtc).ToUnixTimeSeconds()" \
2>/dev/null | tr -d '\r' || true)
fi
;;
*)
echo "Warning: Unsupported OS ($OS_TYPE); caching disabled. Script will be downloaded on every run." >&2
FILE_MOD_TIME=""
;;
esac
if [ -n "$FILE_MOD_TIME" ]; then
local now
now=$(date +%s 2>/dev/null || python3 -c 'import time; print(int(time.time()))' 2>/dev/null || python -c 'import time; print(int(time.time()))')
local age_hours=$(( (now - FILE_MOD_TIME) / 3600 ))
if [ "$age_hours" -lt "$cache_hours" ]; then
NEEDS_DOWNLOAD=false
fi
fi
fi
if [ "$NEEDS_DOWNLOAD" = false ]; then
local cached_sha
if command -v sha256sum >/dev/null 2>&1; then
cached_sha=$(sha256sum "$dest" | awk '{print $1}')
elif command -v shasum >/dev/null 2>&1; then
cached_sha=$(shasum -a 256 "$dest" | awk '{print $1}')
else
echo "Error: sha256sum or shasum is required" >&2
exit 1
fi
if [ "$cached_sha" != "$expected_sha" ]; then
echo "Warning: cached checksum mismatch; re-downloading" >&2
NEEDS_DOWNLOAD=true
fi
fi
if [ "$NEEDS_DOWNLOAD" = true ]; then
echo "Fetching $(basename "$dest")..."
local tmp
tmp="$(mktemp -t fetch.XXXXXX)"
trap 'rm -f "$tmp"' RETURN
if command -v curl >/dev/null 2>&1; then
curl -sSfL "$url" -o "$tmp"
elif command -v wget >/dev/null 2>&1; then
wget -q -O "$tmp" "$url"
else
echo "Error: curl or wget is required" >&2
exit 1
fi
local actual_sha
if command -v sha256sum >/dev/null 2>&1; then
actual_sha=$(sha256sum "$tmp" | awk '{print $1}')
elif command -v shasum >/dev/null 2>&1; then
actual_sha=$(shasum -a 256 "$tmp" | awk '{print $1}')
else
echo "Error: sha256sum or shasum is required" >&2
rm -f "$tmp"
exit 1
fi
if [ "$actual_sha" != "$expected_sha" ]; then
echo "Security error: checksum mismatch for $dest" >&2
echo "Expected: $expected_sha" >&2
echo "Actual: $actual_sha" >&2
rm -f "$tmp"
exit 1
fi
mv "$tmp" "$dest"
chmod +x "$dest"
fi
}
================================================
FILE: .husky/scripts/precommit-node.sh
================================================
#!/usr/bin/env bash
#
# =============================================================================
# Pre-Commit Node.js Checks
# =============================================================================
#
# Runs all Node.js-related validations on staged files to ensure
# code quality and CI parity before commits are created.
#
# Checks include:
# - Documentation generation and ToC updates
# - Code formatting and linting
# - TypeScript type checking
# - i18n validation on staged files
# - Dependency and dead-code analysis (Knip)
# - Policy checks (MinIO, mocks, localStorage usage)
#
# Design Notes:
# - Exits early if no staged source files are provided
# - Uses pnpm for consistency with project tooling
# - Keeps behavior aligned with CI to avoid surprises
#
# =============================================================================
set -euo pipefail
PIDS=()
cleanup_bg() {
for pid in "${PIDS[@]:-}"; do
kill "$pid" 2>/dev/null || true
done
}
trap cleanup_bg EXIT
STAGED_SRC_FILE="$1"
[ ! -s "$STAGED_SRC_FILE" ] && {
echo "Skipping Node.js checks (no staged source files)..."
exit 0
}
echo "Running Node.js pre-commit checks..."
pnpm run generate-docs &
PID_DOCS=$!
PIDS+=("$PID_DOCS")
pnpm run format:fix || exit 1
pnpm run lint-staged || exit 1
pnpm run typecheck &
PID_TYPECHECK=$!
PIDS+=("$PID_TYPECHECK")
wait "$PID_DOCS"; STATUS_DOCS=$?
wait "$PID_TYPECHECK"; STATUS_TYPECHECK=$?
if [ "$STATUS_DOCS" -ne 0 ] || [ "$STATUS_TYPECHECK" -ne 0 ]; then
echo "Background task failure"
exit 1
fi
xargs -0 pnpm run check-i18n -- --staged < "$STAGED_SRC_FILE"
# MinIO compliance check (prevent unsupported upload patterns)
echo "Running MinIO compliance check (policy enforcement)..."
node .github/workflows/scripts/check-minio-compliance.cjs || exit 1
pnpm run update:toc || exit 1
pnpm run check:pom || exit 1
npx knip --include files,exports,nsExports,nsTypes &
PID_KNIP1=$!
PIDS+=("$PID_KNIP1")
npx knip --config knip.deps.json --include dependencies &
PID_KNIP2=$!
PIDS+=("$PID_KNIP2")
wait "$PID_KNIP1"; STATUS_KNIP1=$?
wait "$PID_KNIP2"; STATUS_KNIP2=$?
if [ "$STATUS_KNIP1" -ne 0 ] || [ "$STATUS_KNIP2" -ne 0 ]; then
echo "Background task failure"
exit 1
fi
pnpm run check-mock-cleanup || exit 1
pnpm run check-route-prefix || exit 1
pnpm run check-localstorage || exit 1
git add docs/docs/auto-docs
echo "Node.js checks completed successfully."
================================================
FILE: .husky/scripts/precommit-python.sh
================================================
#!/usr/bin/env bash
#
# =============================================================================
# Pre-Commit Python Checks
# =============================================================================
#
# Initializes a Python virtual environment and runs all Python-based
# validation and policy checks used by CI.
#
# Checks include:
# - Formatting and linting (black, flake8, pydocstyle)
# - Documentation and translation validation
# - File complexity limits
# - Security checks via external, checksum-verified scripts
# - CSS policy checks on staged files
#
# External Script Caching:
# - Centralized scripts are downloaded from PalisadoesFoundation/.github
# - Cached locally to reduce network dependency
# - SHA256 verification ensures script integrity
#
# Design Notes:
# - Supports Windows via cmd.exe execution
# - Uses null-delimited file lists for safety
# - Falls back gracefully when no staged files are present
#
# =============================================================================
set -euo pipefail
. "$(git rev-parse --show-toplevel)/.husky/scripts/staged-files.sh"
. "$(git rev-parse --show-toplevel)/.husky/scripts/fetch-verified.sh"
cleanup() {
[ -n "${CSS_TMP:-}" ] && rm -f "$CSS_TMP"
cleanup_staged_cache 2>/dev/null || true
}
trap cleanup EXIT
# =============================================================================
# Configuration constants
# =============================================================================
# Maximum allowed lines per file before triggering complexity warnings.
# This helps prevent large, hard-to-maintain files from being committed.
MAX_FILE_LINES=600
# Cache duration (in hours) for externally downloaded scripts.
# Reduces network dependency while ensuring periodic updates.
SCRIPT_CACHE_HOURS=24
STAGED_SRC_FILE="${1:-}"
if [ -z "$STAGED_SRC_FILE" ]; then
echo "Error: staged file list path is required." >&2
exit 1
fi
echo "Initializing Python virtual environment..."
VENV_BIN=$(./.husky/scripts/venv.sh) || exit 1
UNAME_OUT=$(uname -s 2>/dev/null || echo "")
if echo "$UNAME_OUT" | grep -qiE 'mingw|msys|cygwin'; then
set -- cmd.exe //c "$VENV_BIN"
else
set -- "$VENV_BIN"
fi
echo "Running Python formatting and lint checks..."
"$@" -m black --check .github
"$@" -m pydocstyle .github
"$@" -m flake8 .github
echo "Running Python CI parity checks..."
"$@" .github/workflows/scripts/compare_translations.py --directory public/locales
if [ ! -s "$STAGED_SRC_FILE" ]; then
echo "No staged source files detected. Skipping file-based Python checks."
exit 0
fi
echo "Running translation checks on staged files..."
xargs -0 "$@" .github/workflows/scripts/translation_check.py --files < "$STAGED_SRC_FILE"
echo "Running centralized Python policy checks..."
# =============================================================================
# We are using SHAs pinned to specific commits to ensure script integrity
# and avoid executing unverified code.
# Kindly update the SHAs if upstream scripts are modified.
#==============================================================================
# Centralized scripts directory
CENTRAL_SCRIPTS_DIR=".github-central/.github/workflows/scripts"
echo "Running disable statements check..."
DISABLE_STATEMENTS_URL="https://raw.githubusercontent.com/PalisadoesFoundation/.github/main/.github/workflows/scripts/disable_statements_check.py"
DISABLE_STATEMENTS_PATH="$CENTRAL_SCRIPTS_DIR/disable_statements_check.py"
DISABLE_STATEMENTS_SHA="9acbc75c02413607c2f15eb3babc3484bb7dbd53c5d27f611d6cd26cc89c55ec"
fetch_and_verify \
"$DISABLE_STATEMENTS_URL" \
"$DISABLE_STATEMENTS_PATH" \
"$DISABLE_STATEMENTS_SHA" \
"$SCRIPT_CACHE_HOURS"
xargs -0 "$@" "$DISABLE_STATEMENTS_PATH" --files < "$STAGED_SRC_FILE"
echo "Running docstring compliance check..."
CHECK_DOCSTRINGS_URL="https://raw.githubusercontent.com/PalisadoesFoundation/.github/main/.github/workflows/scripts/check_docstrings.py"
CHECK_DOCSTRINGS_PATH="$CENTRAL_SCRIPTS_DIR/check_docstrings.py"
CHECK_DOCSTRINGS_SHA="f9a2efbb8cad49241f3e72e65637f5cdde98980c30a09c8ba0acf3e98494fee7"
fetch_and_verify \
"$CHECK_DOCSTRINGS_URL" \
"$CHECK_DOCSTRINGS_PATH" \
"$CHECK_DOCSTRINGS_SHA" \
"$SCRIPT_CACHE_HOURS"
"$@" "$CHECK_DOCSTRINGS_PATH" --directories .github
echo "Running line count enforcement check..."
COUNTLINE_URL="https://raw.githubusercontent.com/PalisadoesFoundation/.github/main/.github/workflows/scripts/countline.py"
COUNTLINE_PATH="$CENTRAL_SCRIPTS_DIR/countline.py"
COUNTLINE_SHA="482928bed829894d1a77b656d26de1d65fa9a69cda38cd8002136903307a6a08"
fetch_and_verify \
"$COUNTLINE_URL" \
"$COUNTLINE_PATH" \
"$COUNTLINE_SHA" \
"$SCRIPT_CACHE_HOURS"
"$@" "$COUNTLINE_PATH" \
--lines "$MAX_FILE_LINES" \
--files ./.github/workflows/config/countline_excluded_file_list.txt
echo "Running CSS policy checks..."
# CSS Policy Check
# Exclude src/utils/ (utility/helper functions) and src/types/ (type definitions)
# as they cannot contain UI styling code
CSS_TMP=$(mktemp)
get_staged_files '' '^src/utils/|^src/types/' > "$CS
Showing preview only (327K chars total). Download the full file or copy to clipboard to get everything.
gitextract_7oxmh0tn/ ├── .coderabbit/ │ └── ast-grep-rules/ │ ├── assertions-must-use-waitfor.yml │ ├── hardcoded-timeout.yml │ ├── mutation-null-guards.yml │ ├── no-dynamic-timestamps-in-tests.yml │ ├── no-local-timezone-in-tests.yml │ └── vitest-cleanup.yml ├── .coderabbit.yaml ├── .dockerignore ├── .flake8 ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ └── feature-request.md │ ├── dependabot.yaml │ ├── pull_request_template.md │ └── workflows/ │ ├── README.md │ ├── auto-assign.yml │ ├── auto-label.json5 │ ├── check-tsdoc.js │ ├── codeql-codescan.yml │ ├── config/ │ │ ├── check-pr-issue-skip-usernames.txt │ │ ├── countline_excluded_file_list.txt │ │ └── sensitive_files.txt │ ├── issue-assigned.yml │ ├── issue-unassigned.yml │ ├── issue.yml │ ├── pull-request-comment.yml │ ├── pull-request-review.yml │ ├── pull-request-target.yml │ ├── pull-request.yml │ ├── push-deploy-website.yml │ ├── push.yml │ ├── requirements.txt │ ├── scripts/ │ │ ├── app_health_check.sh │ │ ├── check-minio-compliance.cjs │ │ ├── compare_translations.py │ │ ├── css_check.py │ │ ├── test/ │ │ │ ├── README.md │ │ │ ├── test_css_check.py │ │ │ └── test_translation_check.py │ │ └── translation_check.py │ └── stale.yml ├── .gitignore ├── .graphqlrc.yml ├── .husky/ │ ├── commit-msg │ ├── post-merge │ ├── pre-commit │ └── scripts/ │ ├── check-tools.sh │ ├── fetch-verified.sh │ ├── precommit-node.sh │ ├── precommit-python.sh │ ├── staged-files.sh │ └── venv.sh ├── .lintstagedrc.json ├── .nojekyll ├── .prettierignore ├── .prettierrc ├── .pydocstyle ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CODE_STYLE.md ├── CONTRIBUTING.md ├── DOCUMENTATION.md ├── INSTALLATION.md ├── ISSUE_GUIDELINES.md ├── LICENSE ├── PR_GUIDELINES.md ├── README.md ├── commitlint.config.js ├── config/ │ ├── babel.config.cjs │ ├── docker/ │ │ └── setup/ │ │ ├── apache.conf │ │ ├── nginx.conf │ │ └── nginx.rootless.conf.template │ ├── vite.config.spec.ts │ └── vite.config.ts ├── cypress/ │ ├── README.md │ ├── e2e/ │ │ ├── Accessibility/ │ │ │ └── .gitkeep │ │ ├── AdminPortal/ │ │ │ ├── ActionItems/ │ │ │ │ ├── .gitkeep │ │ │ │ └── ActionItems.cy.ts │ │ │ ├── Advertisements/ │ │ │ │ ├── .gitkeep │ │ │ │ └── Advertisements.cy.ts │ │ │ ├── Dashboard/ │ │ │ │ ├── .gitkeep │ │ │ │ └── AdminDashboard.cy.ts │ │ │ ├── Events/ │ │ │ │ ├── .gitkeep │ │ │ │ └── EventLifecycle.cy.ts │ │ │ ├── Organizations/ │ │ │ │ ├── .gitkeep │ │ │ │ └── OrganizationSetup.cy.ts │ │ │ ├── People/ │ │ │ │ ├── .gitkeep │ │ │ │ └── ManageMembers.cy.ts │ │ │ ├── Posts/ │ │ │ │ ├── .gitkeep │ │ │ │ └── Posts.cy.ts │ │ │ ├── Tags/ │ │ │ │ └── .gitkeep │ │ │ └── Venues/ │ │ │ └── .gitkeep │ │ ├── Auth/ │ │ │ ├── .gitkeep │ │ │ └── Login.cy.ts │ │ ├── CascadingEffects/ │ │ │ └── .gitkeep │ │ ├── E2EFlows/ │ │ │ └── .gitkeep │ │ ├── ErrorScenarios/ │ │ │ └── .gitkeep │ │ ├── MultiOrganization/ │ │ │ └── .gitkeep │ │ ├── SharedComponents/ │ │ │ ├── .gitkeep │ │ │ ├── GraphQLUtilities.cy.ts │ │ │ └── Navigation.cy.ts │ │ └── UserPortal/ │ │ ├── Dashboard/ │ │ │ ├── .gitkeep │ │ │ └── UserDashboard.cy.ts │ │ ├── EventDiscovery/ │ │ │ └── .gitkeep │ │ ├── OrganizationDiscovery/ │ │ │ └── .gitkeep │ │ ├── Posts/ │ │ │ └── .gitkeep │ │ ├── Profile/ │ │ │ └── .gitkeep │ │ ├── Transactions/ │ │ │ └── .gitkeep │ │ └── VolunteerSignup/ │ │ └── .gitkeep │ ├── fixtures/ │ │ ├── admin/ │ │ │ ├── actionItems.json │ │ │ ├── advertisements.json │ │ │ ├── events.json │ │ │ ├── organizations.json │ │ │ ├── people.json │ │ │ ├── tags.json │ │ │ └── venues.json │ │ ├── api/ │ │ │ └── graphql/ │ │ │ ├── createOrganization.error.conflict.json │ │ │ ├── createOrganization.success.json │ │ │ ├── getOrganizationEvents.error.notFound.json │ │ │ ├── getOrganizationEvents.success.json │ │ │ ├── getOrganizationMembers.error.notFound.json │ │ │ ├── getOrganizationMembers.success.json │ │ │ └── organizations.success.json │ │ ├── auth/ │ │ │ ├── credentials.json │ │ │ └── users.json │ │ └── user/ │ │ ├── campaigns.json │ │ ├── donations.json │ │ ├── posts.json │ │ └── volunteers.json │ ├── pageObjects/ │ │ ├── AdminPortal/ │ │ │ ├── ActionItemPage.ts │ │ │ ├── AdminDashboard.ts │ │ │ ├── AdminEventPage.ts │ │ │ ├── AdvertisementPage.ts │ │ │ ├── EventAttendancePage.ts │ │ │ ├── LeftDrawer.ts │ │ │ ├── MemberManagementPage.ts │ │ │ ├── OrganizationSettingsPage.ts │ │ │ ├── PeoplePage.ts │ │ │ ├── PostPage.ts │ │ │ └── VolunteerManagementPage.ts │ │ ├── UserPortal/ │ │ │ └── UserDashboard.ts │ │ ├── auth/ │ │ │ └── LoginPage.ts │ │ ├── base/ │ │ │ └── BasePage.ts │ │ └── shared/ │ │ ├── ModalActions.ts │ │ ├── TableActions.ts │ │ └── types.ts │ └── support/ │ ├── commands.ts │ ├── e2e.ts │ └── graphql-utils.ts ├── cypress.config.ts ├── docker/ │ ├── Dockerfile.deploy │ ├── Dockerfile.dev │ ├── Dockerfile.prod │ ├── Dockerfile.rootless.dev │ ├── Dockerfile.rootless.prod │ ├── docker-compose.deploy.yaml │ ├── docker-compose.dev.yaml │ ├── docker-compose.prod.yaml │ ├── docker-compose.rootless.dev.yaml │ └── docker-compose.rootless.prod.yaml ├── docs/ │ ├── .gitignore │ ├── CNAME │ ├── README.md │ ├── docs/ │ │ ├── auto-docs/ │ │ │ ├── App/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── Constant/ │ │ │ │ ├── common/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── FILE_NAME_TEMPLATE_BACKUP_ENV.md │ │ │ │ │ │ ├── ROUTE_USER.md │ │ │ │ │ │ ├── ROUTE_USER_ORG.md │ │ │ │ │ │ ├── TEST_ID_DELETE_EVENT_MODAL.md │ │ │ │ │ │ ├── TEST_ID_PEOPLE_CARD.md │ │ │ │ │ │ ├── TEST_ID_PEOPLE_EMAIL.md │ │ │ │ │ │ ├── TEST_ID_PEOPLE_IMAGE.md │ │ │ │ │ │ ├── TEST_ID_PEOPLE_NAME.md │ │ │ │ │ │ ├── TEST_ID_PEOPLE_ROLE.md │ │ │ │ │ │ ├── TEST_ID_PEOPLE_SNO.md │ │ │ │ │ │ └── TEST_ID_UPDATE_EVENT_MODAL.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── DATE_FORMAT.md │ │ │ │ │ ├── DATE_FORMAT_ISO_DATE.md │ │ │ │ │ ├── DATE_TIME_SEPARATOR.md │ │ │ │ │ ├── DUMMY_DATE_TIME_PREFIX.md │ │ │ │ │ ├── IDENTIFIER_ID.md │ │ │ │ │ ├── IDENTIFIER_USER_ID.md │ │ │ │ │ └── MAX_NAME_LENGTH.md │ │ │ │ ├── constant/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── deriveBackendWebsocketUrl.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── AUTH_TOKEN.md │ │ │ │ │ ├── BACKEND_URL.md │ │ │ │ │ ├── BACKEND_WEBSOCKET_URL.md │ │ │ │ │ ├── REACT_APP_USE_RECAPTCHA.md │ │ │ │ │ └── RECAPTCHA_SITE_KEY.md │ │ │ │ └── fileUpload/ │ │ │ │ └── variables/ │ │ │ │ ├── AGENDA_ITEM_ALLOWED_MIME_TYPES.md │ │ │ │ ├── AGENDA_ITEM_MIME_TYPE.md │ │ │ │ ├── FILE_UPLOAD_ALLOWED_TYPES.md │ │ │ │ └── FILE_UPLOAD_MAX_SIZE_MB.md │ │ │ ├── GraphQl/ │ │ │ │ ├── Mutations/ │ │ │ │ │ ├── ActionItemCategoryMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_ACTION_ITEM_CATEGORY_MUTATION.md │ │ │ │ │ │ ├── DELETE_ACTION_ITEM_CATEGORY_MUTATION.md │ │ │ │ │ │ └── UPDATE_ACTION_ITEM_CATEGORY_MUTATION.md │ │ │ │ │ ├── ActionItemMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── COMPLETE_ACTION_ITEM_FOR_INSTANCE.md │ │ │ │ │ │ ├── CREATE_ACTION_ITEM_MUTATION.md │ │ │ │ │ │ ├── DELETE_ACTION_ITEM_FOR_INSTANCE.md │ │ │ │ │ │ ├── DELETE_ACTION_ITEM_MUTATION.md │ │ │ │ │ │ ├── MARK_ACTION_ITEM_AS_PENDING_FOR_INSTANCE.md │ │ │ │ │ │ ├── MARK_ACTION_ITEM_AS_PENDING_MUTATION.md │ │ │ │ │ │ ├── UPDATE_ACTION_ITEM_FOR_INSTANCE.md │ │ │ │ │ │ └── UPDATE_ACTION_ITEM_MUTATION.md │ │ │ │ │ ├── AdvertisementMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── ADD_ADVERTISEMENT_MUTATION.md │ │ │ │ │ │ ├── DELETE_ADVERTISEMENT_MUTATION.md │ │ │ │ │ │ └── UPDATE_ADVERTISEMENT_MUTATION.md │ │ │ │ │ ├── AgendaFolderMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_AGENDA_FOLDER_MUTATION.md │ │ │ │ │ │ ├── DELETE_AGENDA_FOLDER_MUTATION.md │ │ │ │ │ │ └── UPDATE_AGENDA_FOLDER_MUTATION.md │ │ │ │ │ ├── AgendaItemMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_AGENDA_ITEM_MUTATION.md │ │ │ │ │ │ ├── DELETE_AGENDA_ITEM_MUTATION.md │ │ │ │ │ │ ├── UPDATE_AGENDA_ITEM_MUTATION.md │ │ │ │ │ │ └── UPDATE_AGENDA_ITEM_SEQUENCE_MUTATION.md │ │ │ │ │ ├── CampaignMutation/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_CAMPAIGN_MUTATION.md │ │ │ │ │ │ └── UPDATE_CAMPAIGN_MUTATION.md │ │ │ │ │ ├── CommentMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_COMMENT_POST.md │ │ │ │ │ │ ├── DELETE_COMMENT.md │ │ │ │ │ │ ├── LIKE_COMMENT.md │ │ │ │ │ │ ├── UNLIKE_COMMENT.md │ │ │ │ │ │ └── UPDATE_COMMENT.md │ │ │ │ │ ├── EventAttendeeMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── ADD_EVENT_ATTENDEE.md │ │ │ │ │ │ ├── MARK_CHECKIN.md │ │ │ │ │ │ └── REMOVE_EVENT_ATTENDEE.md │ │ │ │ │ ├── EventMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_EVENT_MUTATION.md │ │ │ │ │ │ ├── DELETE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION.md │ │ │ │ │ │ ├── DELETE_SINGLE_EVENT_INSTANCE_MUTATION.md │ │ │ │ │ │ ├── DELETE_STANDALONE_EVENT_MUTATION.md │ │ │ │ │ │ ├── DELETE_THIS_AND_FOLLOWING_EVENTS_MUTATION.md │ │ │ │ │ │ ├── REGISTER_EVENT.md │ │ │ │ │ │ ├── UPDATE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION.md │ │ │ │ │ │ ├── UPDATE_EVENT_MUTATION.md │ │ │ │ │ │ ├── UPDATE_SINGLE_RECURRING_EVENT_INSTANCE_MUTATION.md │ │ │ │ │ │ └── UPDATE_THIS_AND_FOLLOWING_EVENTS_MUTATION.md │ │ │ │ │ ├── EventVolunteerMutation/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── ADD_VOLUNTEER.md │ │ │ │ │ │ ├── CREATE_VOLUNTEER_GROUP.md │ │ │ │ │ │ ├── DELETE_VOLUNTEER.md │ │ │ │ │ │ ├── DELETE_VOLUNTEER_FOR_INSTANCE.md │ │ │ │ │ │ ├── DELETE_VOLUNTEER_GROUP.md │ │ │ │ │ │ ├── DELETE_VOLUNTEER_GROUP_FOR_INSTANCE.md │ │ │ │ │ │ ├── UPDATE_VOLUNTEER_GROUP.md │ │ │ │ │ │ └── UPDATE_VOLUNTEER_MEMBERSHIP.md │ │ │ │ │ ├── FundMutation/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_FUND_MUTATION.md │ │ │ │ │ │ └── UPDATE_FUND_MUTATION.md │ │ │ │ │ ├── OrganizationMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CANCEL_MEMBERSHIP_REQUEST.md │ │ │ │ │ │ ├── CREATE_CHAT.md │ │ │ │ │ │ ├── CREATE_CHAT_MEMBERSHIP.md │ │ │ │ │ │ ├── CREATE_SAMPLE_ORGANIZATION_MUTATION.md │ │ │ │ │ │ ├── DELETE_CHAT.md │ │ │ │ │ │ ├── DELETE_CHAT_MEMBERSHIP.md │ │ │ │ │ │ ├── DELETE_CHAT_MESSAGE.md │ │ │ │ │ │ ├── EDIT_CHAT_MESSAGE.md │ │ │ │ │ │ ├── JOIN_PUBLIC_ORGANIZATION.md │ │ │ │ │ │ ├── MARK_CHAT_MESSAGES_AS_READ.md │ │ │ │ │ │ ├── MESSAGE_SENT_TO_CHAT.md │ │ │ │ │ │ ├── REMOVE_SAMPLE_ORGANIZATION_MUTATION.md │ │ │ │ │ │ ├── SEND_MEMBERSHIP_REQUEST.md │ │ │ │ │ │ ├── SEND_MESSAGE_TO_CHAT.md │ │ │ │ │ │ ├── TOGGLE_PINNED_POST.md │ │ │ │ │ │ ├── UPDATE_CHAT.md │ │ │ │ │ │ ├── UPDATE_CHAT_MEMBERSHIP.md │ │ │ │ │ │ └── UPDATE_USER_ROLE_IN_ORG_MUTATION.md │ │ │ │ │ ├── PledgeMutation/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_PLEDGE.md │ │ │ │ │ │ ├── DELETE_PLEDGE.md │ │ │ │ │ │ └── UPDATE_PLEDGE.md │ │ │ │ │ ├── PluginMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_PLUGIN_MUTATION.md │ │ │ │ │ │ ├── DELETE_PLUGIN_MUTATION.md │ │ │ │ │ │ ├── INSTALL_PLUGIN_MUTATION.md │ │ │ │ │ │ ├── UPDATE_PLUGIN_MUTATION.md │ │ │ │ │ │ └── UPLOAD_PLUGIN_ZIP_MUTATION.md │ │ │ │ │ ├── TagMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── ADD_PEOPLE_TO_TAG.md │ │ │ │ │ │ ├── ASSIGN_TO_TAGS.md │ │ │ │ │ │ ├── CREATE_USER_TAG.md │ │ │ │ │ │ ├── REMOVE_FROM_TAGS.md │ │ │ │ │ │ ├── REMOVE_USER_TAG.md │ │ │ │ │ │ ├── UNASSIGN_USER_TAG.md │ │ │ │ │ │ └── UPDATE_USER_TAG.md │ │ │ │ │ ├── VenueMutations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── CREATE_VENUE_MUTATION.md │ │ │ │ │ │ ├── DELETE_VENUE_MUTATION.md │ │ │ │ │ │ └── UPDATE_VENUE_MUTATION.md │ │ │ │ │ └── mutations/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── ACCEPT_EVENT_INVITATION.md │ │ │ │ │ ├── ACCEPT_ORGANIZATION_REQUEST_MUTATION.md │ │ │ │ │ ├── BLOCK_USER_MUTATION_PG.md │ │ │ │ │ ├── CREATE_MEMBER_PG.md │ │ │ │ │ ├── CREATE_ORGANIZATION_MEMBERSHIP_MUTATION_PG.md │ │ │ │ │ ├── CREATE_ORGANIZATION_MUTATION.md │ │ │ │ │ ├── CREATE_ORGANIZATION_MUTATION_PG.md │ │ │ │ │ ├── CREATE_POST_MUTATION.md │ │ │ │ │ ├── DELETE_ORGANIZATION_MUTATION.md │ │ │ │ │ ├── DELETE_POST_MUTATION.md │ │ │ │ │ ├── DONATE_TO_ORGANIZATION.md │ │ │ │ │ ├── FORGOT_PASSWORD_MUTATION.md │ │ │ │ │ ├── GENERATE_OTP_MUTATION.md │ │ │ │ │ ├── GET_FILE_PRESIGNEDURL.md │ │ │ │ │ ├── LINK_OAUTH_ACCOUNT.md │ │ │ │ │ ├── LOGOUT_MUTATION.md │ │ │ │ │ ├── PRESIGNED_URL.md │ │ │ │ │ ├── REFRESH_TOKEN_MUTATION.md │ │ │ │ │ ├── REJECT_ORGANIZATION_REQUEST_MUTATION.md │ │ │ │ │ ├── REMOVE_MEMBER_MUTATION.md │ │ │ │ │ ├── REMOVE_MEMBER_MUTATION_PG.md │ │ │ │ │ ├── RESEND_VERIFICATION_EMAIL_MUTATION.md │ │ │ │ │ ├── RESET_COMMUNITY.md │ │ │ │ │ ├── REVOKE_REFRESH_TOKEN.md │ │ │ │ │ ├── SEND_EVENT_INVITATIONS.md │ │ │ │ │ ├── SIGNUP_MUTATION.md │ │ │ │ │ ├── SIGN_IN_WITH_OAUTH.md │ │ │ │ │ ├── UNBLOCK_USER_MUTATION_PG.md │ │ │ │ │ ├── UNLINK_OAUTH_ACCOUNT.md │ │ │ │ │ ├── UPDATE_COMMUNITY_PG.md │ │ │ │ │ ├── UPDATE_CURRENT_USER_MUTATION.md │ │ │ │ │ ├── UPDATE_EVENT_MUTATION.md │ │ │ │ │ ├── UPDATE_ORGANIZATION_MUTATION.md │ │ │ │ │ ├── UPDATE_POST_MUTATION.md │ │ │ │ │ ├── UPDATE_POST_VOTE.md │ │ │ │ │ ├── UPDATE_SESSION_TIMEOUT_PG.md │ │ │ │ │ ├── UPDATE_USER_MUTATION.md │ │ │ │ │ ├── VERIFY_EMAIL_MUTATION.md │ │ │ │ │ └── VERIFY_EVENT_INVITATION.md │ │ │ │ └── Queries/ │ │ │ │ ├── ActionItemCategoryQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── ACTION_ITEM_CATEGORY_LIST.md │ │ │ │ │ └── GET_ACTION_ITEM_CATEGORY.md │ │ │ │ ├── ActionItemQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── ACTION_ITEM_LIST.md │ │ │ │ │ └── GET_EVENT_ACTION_ITEMS.md │ │ │ │ ├── AdvertisementQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── ORGANIZATION_ADVERTISEMENT_LIST.md │ │ │ │ ├── AgendaCategoryQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── AGENDA_ITEM_CATEGORY_LIST.md │ │ │ │ ├── AgendaFolderQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── AGENDA_FOLDER_LIST.md │ │ │ │ ├── CommentQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── GET_POST_COMMENTS.md │ │ │ │ ├── EventVolunteerQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── EVENT_VOLUNTEER_GROUP_LIST.md │ │ │ │ │ ├── GET_EVENT_VOLUNTEERS.md │ │ │ │ │ ├── GET_EVENT_VOLUNTEER_GROUPS.md │ │ │ │ │ ├── USER_EVENTS_VOLUNTEER.md │ │ │ │ │ ├── USER_VOLUNTEER_MEMBERSHIP.md │ │ │ │ │ └── VOLUNTEER_RANKING.md │ │ │ │ ├── NotificationQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── GET_USER_NOTIFICATIONS.md │ │ │ │ │ └── MARK_NOTIFICATION_AS_READ.md │ │ │ │ ├── OrganizationQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── ORGANIZATION_MEMBERS.md │ │ │ │ │ ├── ORGANIZATION_PINNED_POST_LIST.md │ │ │ │ │ ├── ORGANIZATION_POST_BY_ID.md │ │ │ │ │ ├── ORGANIZATION_POST_LIST_WITH_VOTES.md │ │ │ │ │ ├── ORGANIZATION_USER_TAGS_LIST.md │ │ │ │ │ ├── ORGANIZATION_USER_TAGS_LIST_PG.md │ │ │ │ │ ├── USER_CREATED_ORGANIZATIONS.md │ │ │ │ │ ├── USER_JOINED_ORGANIZATIONS_PG.md │ │ │ │ │ └── VENUE_LIST.md │ │ │ │ ├── PlugInQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── CHATS_LIST.md │ │ │ │ │ ├── CHAT_BY_ID.md │ │ │ │ │ ├── GET_ALL_PLUGINS.md │ │ │ │ │ ├── IS_SAMPLE_ORGANIZATION_QUERY.md │ │ │ │ │ └── UNREAD_CHATS.md │ │ │ │ ├── Queries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── ALL_ORGANIZATIONS_PG.md │ │ │ │ │ ├── CURRENT_USER.md │ │ │ │ │ ├── EVENT_ATTENDEES.md │ │ │ │ │ ├── EVENT_CHECKINS.md │ │ │ │ │ ├── EVENT_DETAILS.md │ │ │ │ │ ├── EVENT_FEEDBACKS.md │ │ │ │ │ ├── EVENT_REGISTRANTS.md │ │ │ │ │ ├── GET_COMMUNITY_DATA_PG.md │ │ │ │ │ ├── GET_COMMUNITY_SESSION_TIMEOUT_DATA_PG.md │ │ │ │ │ ├── GET_EVENTS_BY_ORGANIZATION_ID.md │ │ │ │ │ ├── GET_ORGANIZATION_BASIC_DATA.md │ │ │ │ │ ├── GET_ORGANIZATION_BLOCKED_USERS_COUNT.md │ │ │ │ │ ├── GET_ORGANIZATION_BLOCKED_USERS_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_DATA_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_EVENTS_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_EVENTS_USER_PORTAL_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_MEMBERS_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_POSTS_COUNT_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_POSTS_PG.md │ │ │ │ │ ├── GET_ORGANIZATION_VENUES_COUNT.md │ │ │ │ │ ├── GET_ORGANIZATION_VENUES_PG.md │ │ │ │ │ ├── GET_USER_BY_ID.md │ │ │ │ │ ├── GET_USER_TAGS.md │ │ │ │ │ ├── MEMBERSHIP_REQUEST_PG.md │ │ │ │ │ ├── MEMBERS_LIST.md │ │ │ │ │ ├── MEMBERS_LIST_PG.md │ │ │ │ │ ├── MEMBERS_LIST_WITH_DETAILS.md │ │ │ │ │ ├── ORGANIZATIONS_LIST.md │ │ │ │ │ ├── ORGANIZATIONS_LIST_BASIC.md │ │ │ │ │ ├── ORGANIZATIONS_MEMBER_CONNECTION_LIST.md │ │ │ │ │ ├── ORGANIZATION_DONATION_CONNECTION_LIST.md │ │ │ │ │ ├── ORGANIZATION_EVENT_CONNECTION_LIST.md │ │ │ │ │ ├── ORGANIZATION_FIELDS.md │ │ │ │ │ ├── ORGANIZATION_FILTER_LIST.md │ │ │ │ │ ├── ORGANIZATION_LIST.md │ │ │ │ │ ├── ORGANIZATION_LIST_NO_MEMBERS.md │ │ │ │ │ ├── ORGANIZATION_MEMBER_ADMIN_COUNT.md │ │ │ │ │ ├── RECURRING_EVENTS.md │ │ │ │ │ ├── SIGNIN_QUERY.md │ │ │ │ │ ├── USERS_CONNECTION_LIST.md │ │ │ │ │ ├── USER_DETAILS.md │ │ │ │ │ ├── USER_JOINED_ORGANIZATIONS_NO_MEMBERS.md │ │ │ │ │ ├── USER_LIST.md │ │ │ │ │ ├── USER_LIST_FOR_ADMIN.md │ │ │ │ │ ├── USER_LIST_FOR_TABLE.md │ │ │ │ │ └── USER_ORGANIZATION_LIST.md │ │ │ │ ├── fundQueries/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── FUND_CAMPAIGN.md │ │ │ │ │ ├── FUND_CAMPAIGN_PLEDGE.md │ │ │ │ │ ├── FUND_LIST.md │ │ │ │ │ ├── USER_FUND_CAMPAIGNS.md │ │ │ │ │ └── USER_PLEDGES.md │ │ │ │ └── userTagQueries/ │ │ │ │ └── variables/ │ │ │ │ ├── USER_TAGS_ASSIGNED_MEMBERS.md │ │ │ │ ├── USER_TAGS_MEMBERS_TO_ASSIGN_TO.md │ │ │ │ └── USER_TAG_SUB_TAGS.md │ │ │ ├── components/ │ │ │ │ ├── AdminPortal/ │ │ │ │ │ ├── AddPeopleToTag/ │ │ │ │ │ │ ├── AddPeopleToTag/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── AddPeopleToTagsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_ERROR.md │ │ │ │ │ │ ├── MOCK_EMPTY.md │ │ │ │ │ │ └── MOCK_NON_ERROR.md │ │ │ │ │ ├── Advertisements/ │ │ │ │ │ │ ├── Advertisements/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── AdvertisementsMocks/ │ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ │ └── wait.md │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── client.md │ │ │ │ │ │ │ ├── createAdvertisement.md │ │ │ │ │ │ │ ├── createAdvertisementError.md │ │ │ │ │ │ │ ├── createAdvertisementWithEndDateBeforeStart.md │ │ │ │ │ │ │ ├── createAdvertisementWithoutName.md │ │ │ │ │ │ │ ├── createDates.md │ │ │ │ │ │ │ ├── dateConstants.md │ │ │ │ │ │ │ ├── deleteAdvertisementMocks.md │ │ │ │ │ │ │ ├── emptyMocks.md │ │ │ │ │ │ │ ├── fetchErrorMocks.md │ │ │ │ │ │ │ ├── filterActiveAdvertisementData.md │ │ │ │ │ │ │ ├── filterCompletedAdvertisementData.md │ │ │ │ │ │ │ ├── getActiveAdvertisementMocks.md │ │ │ │ │ │ │ ├── getCompletedAdvertisementMocks.md │ │ │ │ │ │ │ ├── initialActiveData.md │ │ │ │ │ │ │ ├── initialArchivedData.md │ │ │ │ │ │ │ ├── link.md │ │ │ │ │ │ │ ├── updateAdMocks.md │ │ │ │ │ │ │ └── updateDates.md │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ ├── AdvertisementEntry/ │ │ │ │ │ │ │ │ └── AdvertisementEntry/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── AdvertisementRegister/ │ │ │ │ │ │ │ ├── AdvertisementRegister/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── AdvertisementRegisterMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── createAdFailMock.md │ │ │ │ │ │ │ ├── createAdvertisement.md │ │ │ │ │ │ │ ├── dateConstants.md │ │ │ │ │ │ │ ├── mockBigFile.md │ │ │ │ │ │ │ ├── mockFile.md │ │ │ │ │ │ │ └── updateAdFailMock.md │ │ │ │ │ │ └── skeleton/ │ │ │ │ │ │ └── AdvertisementSkeleton/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── AdvertisementSkeleton.md │ │ │ │ │ ├── AgendaFolder/ │ │ │ │ │ │ ├── AgendaFolderContainer/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── Create/ │ │ │ │ │ │ │ └── AgendaFolderCreateModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── Delete/ │ │ │ │ │ │ │ └── AgendaFolderDeleteModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── DragAndDrop/ │ │ │ │ │ │ │ └── AgendaDragAndDrop/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── Update/ │ │ │ │ │ │ └── AgendaFolderUpdateModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── AgendaItems/ │ │ │ │ │ │ ├── Create/ │ │ │ │ │ │ │ └── AgendaItemsCreateModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── Delete/ │ │ │ │ │ │ │ └── AgendaItemsDeleteModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── Preview/ │ │ │ │ │ │ │ └── AgendaItemsPreviewModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── Update/ │ │ │ │ │ │ └── AgendaItemsUpdateModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── ApplyToSelector/ │ │ │ │ │ │ └── ApplyToSelector/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── AssignmentTypeSelector/ │ │ │ │ │ │ └── AssignmentTypeSelector/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── ContriStats/ │ │ │ │ │ │ └── ContriStats/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EventManagement/ │ │ │ │ │ │ ├── Dashboard/ │ │ │ │ │ │ │ ├── EventDashboard/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── EventDashboard.mocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS_EMPTY_DATE_STRINGS.md │ │ │ │ │ │ │ ├── MOCKS_INVALID_DATETIME.md │ │ │ │ │ │ │ ├── MOCKS_MISSING_DATA.md │ │ │ │ │ │ │ ├── MOCKS_NO_EVENT.md │ │ │ │ │ │ │ ├── MOCKS_NO_LOCATION.md │ │ │ │ │ │ │ ├── MOCKS_UNDEFINED_INVITE_ONLY.md │ │ │ │ │ │ │ ├── MOCKS_WITHOUT_TIME.md │ │ │ │ │ │ │ └── MOCKS_WITH_TIME.md │ │ │ │ │ │ ├── EventActionItems/ │ │ │ │ │ │ │ └── EventActionItems/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── EventAgenda/ │ │ │ │ │ │ │ └── EventAgenda/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── EventAttendance/ │ │ │ │ │ │ │ ├── Attendance/ │ │ │ │ │ │ │ │ └── EventAttendance/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ ├── AttendanceList/ │ │ │ │ │ │ │ │ └── AttendedEventList/ │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ ├── EventAttendanceMocks/ │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ ├── MOCKDETAIL.md │ │ │ │ │ │ │ │ ├── MOCKEVENT.md │ │ │ │ │ │ │ │ └── MOCKS.md │ │ │ │ │ │ │ └── Statistics/ │ │ │ │ │ │ │ └── EventStatistics/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── AttendanceStatisticsModal.md │ │ │ │ │ │ └── EventRegistrant/ │ │ │ │ │ │ ├── EventRegistrants/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── Registrations.mocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── COMBINED_MOCKS.md │ │ │ │ │ │ ├── EMPTY_EVENT_CHECKINS_MOCK.md │ │ │ │ │ │ ├── EMPTY_REGISTRANTS_MOCK.md │ │ │ │ │ │ ├── EMPTY_STATE_MOCKS.md │ │ │ │ │ │ ├── ERROR_DELETION_MOCKS.md │ │ │ │ │ │ ├── EVENT_CHECKINS_MOCK.md │ │ │ │ │ │ ├── EVENT_DETAILS_MOCK.md │ │ │ │ │ │ ├── MISSING_DATE_MOCKS.md │ │ │ │ │ │ ├── MISSING_NAME_MOCKS.md │ │ │ │ │ │ ├── RECURRING_EVENT_DETAILS_MOCK.md │ │ │ │ │ │ ├── RECURRING_EVENT_MOCKS.md │ │ │ │ │ │ ├── RECURRING_EVENT_REGISTRANTS_MOCK.md │ │ │ │ │ │ ├── REGISTRANTS_ERROR_USER_MOCK.md │ │ │ │ │ │ ├── REGISTRANTS_MISSING_DATE_MOCK.md │ │ │ │ │ │ ├── REGISTRANTS_MISSING_NAME_MOCK.md │ │ │ │ │ │ ├── REGISTRANTS_MOCK.md │ │ │ │ │ │ ├── REMOVE_ATTENDEE_ERROR_MOCK.md │ │ │ │ │ │ └── REMOVE_ATTENDEE_SUCCESS_MOCK.md │ │ │ │ │ ├── EventRegistrantsModal/ │ │ │ │ │ │ ├── EventRegistrantsWrapper/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── EventRegistrantsWrapper.md │ │ │ │ │ │ └── Modal/ │ │ │ │ │ │ ├── AddOnSpot/ │ │ │ │ │ │ │ └── AddOnSpotAttendee/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── EventRegistrantsModal/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── EventRegistrantsModal.md │ │ │ │ │ │ └── InviteByEmail/ │ │ │ │ │ │ └── InviteByEmailModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── LeftDrawer/ │ │ │ │ │ │ └── LeftDrawer/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── ILeftDrawerProps.md │ │ │ │ │ ├── OrgContriCards/ │ │ │ │ │ │ └── OrgContriCards/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrgPeopleListCard/ │ │ │ │ │ │ └── OrgPeopleListCard/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrgSettings/ │ │ │ │ │ │ ├── ActionItemCategories/ │ │ │ │ │ │ │ ├── Modal/ │ │ │ │ │ │ │ │ ├── ActionItemCategoryModal/ │ │ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ │ │ └── IActionItemCategoryModal.md │ │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ │ └── ActionItemCategoryViewModal/ │ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ │ └── ICategoryViewModalProps.md │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ ├── OrgActionItemCategories/ │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── OrgActionItemCategoryMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_EMPTY.md │ │ │ │ │ │ │ └── MOCKS_ERROR.md │ │ │ │ │ │ └── General/ │ │ │ │ │ │ ├── DeleteOrg/ │ │ │ │ │ │ │ └── DeleteOrg/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── GeneralSettings/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── OrgUpdate/ │ │ │ │ │ │ ├── OrgUpdate/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── OrgUpdateMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── FIXED_UTC_TIMESTAMP.md │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_QUERY_ERROR.md │ │ │ │ │ │ ├── MOCKS_QUERY_ERROR_FETCH.md │ │ │ │ │ │ ├── MOCKS_UPDATE_ERROR.md │ │ │ │ │ │ ├── mockOrgData.md │ │ │ │ │ │ ├── mockOrgDataWithEmptyFields.md │ │ │ │ │ │ ├── mockOrgDataWithNullUserReg.md │ │ │ │ │ │ └── mockUpdateOrgResponse.md │ │ │ │ │ ├── OrganizationDashCards/ │ │ │ │ │ │ ├── CardItem/ │ │ │ │ │ │ │ ├── CardItem/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── Loader/ │ │ │ │ │ │ │ └── CardItemLoading/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── DashboardCard/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── Loader/ │ │ │ │ │ │ └── DashboardCardLoading/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrganizationScreen/ │ │ │ │ │ │ └── OrganizationScreen/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── translationKeyMap.md │ │ │ │ │ ├── SecuredRoute/ │ │ │ │ │ │ └── SecuredRoute/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── SuperAdminScreen/ │ │ │ │ │ │ └── SuperAdminScreen/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── TagActions/ │ │ │ │ │ │ ├── Node/ │ │ │ │ │ │ │ ├── TagNode/ │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── TagNodeMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS1.md │ │ │ │ │ │ │ └── MOCKS_ERROR_SUBTAGS_QUERY1.md │ │ │ │ │ │ ├── TagActions/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── TagActionsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_ERROR_ASSIGN_OR_REMOVAL_TAGS.md │ │ │ │ │ │ └── MOCKS_ERROR_SUBTAGS_QUERY.md │ │ │ │ │ ├── UpdateSession/ │ │ │ │ │ │ └── UpdateSession/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UserTableRow/ │ │ │ │ │ │ └── UserTableRow/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── UserTableRow.md │ │ │ │ │ └── Venues/ │ │ │ │ │ ├── Modal/ │ │ │ │ │ │ └── VenueModal/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceVenueModalProps.md │ │ │ │ │ ├── VenueCard/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── VenueCardMocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── MOCK_VENUE_ITEM.md │ │ │ │ │ ├── MOCK_VENUE_ITEM_LONG_TEXT.md │ │ │ │ │ └── MOCK_VENUE_ITEM_WITH_IMAGE.md │ │ │ │ ├── Auth/ │ │ │ │ │ ├── LoginForm/ │ │ │ │ │ │ └── LoginForm/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── LoginForm.md │ │ │ │ │ ├── OAuthButton/ │ │ │ │ │ │ └── OAuthButton/ │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ ├── OAuthMode.md │ │ │ │ │ │ │ └── OAuthSize.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── OAuthButton.md │ │ │ │ │ ├── OrgSelector/ │ │ │ │ │ │ └── OrgSelector/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── OrgSelector.md │ │ │ │ │ ├── PasswordStrengthIndicator/ │ │ │ │ │ │ ├── PasswordStrengthIndicator/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── PasswordStrengthIndicator.md │ │ │ │ │ │ └── RequirementRow/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── RequirementRow.md │ │ │ │ │ ├── RegistrationForm/ │ │ │ │ │ │ └── RegistrationForm/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── RegistrationForm.md │ │ │ │ │ └── theme/ │ │ │ │ │ └── oauthBrand/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── brandForProvider.md │ │ │ │ ├── ChangeLanguageDropdown/ │ │ │ │ │ └── ChangeLanguageDropDown/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── CollapsibleDropdown/ │ │ │ │ │ └── CollapsibleDropdown/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── CursorPaginationManager/ │ │ │ │ │ └── CursorPaginationManager/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── CursorPaginationManager.md │ │ │ │ ├── EventCalender/ │ │ │ │ │ ├── EventCalenderMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ └── eventData.md │ │ │ │ │ ├── Header/ │ │ │ │ │ │ └── EventHeader/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── Monthly/ │ │ │ │ │ │ └── EventCalender/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── Yearly/ │ │ │ │ │ └── YearlyEventCalender/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── EventDashboardScreen/ │ │ │ │ │ ├── EventDashboardScreen/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── EventDashboardScreenMocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── MOCKS.md │ │ │ │ ├── EventStats/ │ │ │ │ │ ├── EventStatsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── diverseRatingsProps.md │ │ │ │ │ │ ├── emptyProps.md │ │ │ │ │ │ ├── mockData.md │ │ │ │ │ │ └── nonEmptyProps.md │ │ │ │ │ └── Statistics/ │ │ │ │ │ ├── AverageRating/ │ │ │ │ │ │ └── AverageRating/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── AverageRating.md │ │ │ │ │ ├── EventStats/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── EventStats.md │ │ │ │ │ ├── Feedback/ │ │ │ │ │ │ └── Feedback/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── FeedbackStats.md │ │ │ │ │ └── Review/ │ │ │ │ │ └── Review/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── ReviewStats.md │ │ │ │ ├── HolidayCards/ │ │ │ │ │ └── HolidayCard/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── IconComponent/ │ │ │ │ │ └── IconComponent/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── IIconComponent.md │ │ │ │ ├── LeftDrawerOrg/ │ │ │ │ │ └── LeftDrawerOrg/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── ILeftDrawerProps.md │ │ │ │ ├── NotificationIcon/ │ │ │ │ │ └── NotificationIcon/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── Pagination/ │ │ │ │ │ └── Navigator/ │ │ │ │ │ └── Pagination/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── ProfileCard/ │ │ │ │ │ └── ProfileCard/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── ProfileDropdown/ │ │ │ │ │ └── ProfileDropdown/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── SignOut/ │ │ │ │ │ └── SignOut/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── UserDetails/ │ │ │ │ │ ├── UserEvents/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UserOrganizations/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── UserTags/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── UserPortal/ │ │ │ │ │ ├── ChatRoom/ │ │ │ │ │ │ ├── ChatHeader/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── ChatRoom/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── EmptyChatState/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── MessageImage/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── MessageInput/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── MessageItem/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── types/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── INewChat.md │ │ │ │ │ │ └── InterfaceChatHeaderProps.md │ │ │ │ │ ├── CommentCard/ │ │ │ │ │ │ └── CommentCard/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── ContactCard/ │ │ │ │ │ │ └── ContactCard/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── CreateDirectChat/ │ │ │ │ │ │ └── CreateDirectChat/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── CreateGroupChat/ │ │ │ │ │ │ └── CreateGroupChat/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── DonationCard/ │ │ │ │ │ │ └── DonationCard/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EventCard/ │ │ │ │ │ │ └── EventCard/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── GroupChatDetails/ │ │ │ │ │ │ ├── GroupChatDetails/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── GroupChatDetailsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── delayedMocks.md │ │ │ │ │ │ ├── failingMocks.md │ │ │ │ │ │ ├── filledMockChat.md │ │ │ │ │ │ ├── incompleteMockChat.md │ │ │ │ │ │ └── mocks.md │ │ │ │ │ ├── OrganizationSidebar/ │ │ │ │ │ │ └── OrganizationSidebar/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── SecuredRouteForUser/ │ │ │ │ │ │ └── SecuredRouteForUser/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UserNavbar/ │ │ │ │ │ │ └── UserNavbar/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UserPortalCard/ │ │ │ │ │ │ └── UserPortalCard/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UserPortalNavigationBar/ │ │ │ │ │ │ ├── LanguageSelector/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── UserDropdown/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── UserPortalNavigationBar/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── UserPortalNavigationBar.md │ │ │ │ │ │ └── UserPortalNavigationBarMocks/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── getMockIcon.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── logoutErrorMock.md │ │ │ │ │ │ ├── logoutMock.md │ │ │ │ │ │ ├── logoutNetworkErrorMock.md │ │ │ │ │ │ ├── mockNavigationLinksBase.md │ │ │ │ │ │ ├── mockOrganizationId.md │ │ │ │ │ │ ├── mockOrganizationName.md │ │ │ │ │ │ ├── mockUserId.md │ │ │ │ │ │ ├── mockUserName.md │ │ │ │ │ │ ├── organizationDataErrorMock.md │ │ │ │ │ │ ├── organizationDataMock.md │ │ │ │ │ │ └── organizationDataNullMock.md │ │ │ │ │ ├── UserProfileSettings/ │ │ │ │ │ │ └── UserProfile/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UserSidebar/ │ │ │ │ │ │ └── UserSidebar/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceUserSidebarProps.md │ │ │ │ │ └── UserSidebarOrg/ │ │ │ │ │ └── UserSidebarOrg/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceUserSidebarOrgProps.md │ │ │ │ └── UsersTableItem/ │ │ │ │ ├── UserTableItemMocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ ├── MOCKS2.md │ │ │ │ │ └── MOCKS_UPDATE.md │ │ │ │ └── UsersTableItem/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── config/ │ │ │ │ └── oauthProviders/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── getEnabledProviders.md │ │ │ │ │ └── getProviderConfig.md │ │ │ │ └── variables/ │ │ │ │ └── OAUTH_PROVIDERS.md │ │ │ ├── constants/ │ │ │ │ └── variables/ │ │ │ │ └── socialMediaLinks.md │ │ │ ├── hooks/ │ │ │ │ ├── auth/ │ │ │ │ │ ├── useAuthNotifications/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── useAuthNotifications.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceToastConfig.md │ │ │ │ │ ├── useLogin/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── useLogin.md │ │ │ │ │ └── useRegistration/ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ └── RegistrationError.md │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── useRegistration.md │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── IRegisterInput.md │ │ │ │ │ │ └── IRegistrationSuccessResult.md │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ └── RegistrationErrorCodeType.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── RegistrationErrorCode.md │ │ │ │ ├── useAvatarUpload/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── useAvatarUpload.md │ │ │ │ ├── useFieldValidation/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── useFieldValidation.md │ │ │ │ ├── usePasswordVisibility/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── usePasswordVisibility.md │ │ │ │ └── useUserProfile/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── index/ │ │ │ │ └── variables/ │ │ │ │ └── client.md │ │ │ ├── install/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── handleDirectExecutionError.md │ │ │ │ │ ├── main.md │ │ │ │ │ └── runIfDirectExecution.md │ │ │ │ ├── os/ │ │ │ │ │ ├── detector/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ ├── detectOS.md │ │ │ │ │ │ └── isRunningInWsl.md │ │ │ │ │ ├── linux/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ ├── installDocker.md │ │ │ │ │ │ └── installTypeScript.md │ │ │ │ │ ├── macos/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ ├── installDocker.md │ │ │ │ │ │ └── installTypeScript.md │ │ │ │ │ └── windows/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── installDocker.md │ │ │ │ │ └── installTypeScript.md │ │ │ │ ├── packages/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── installPackage.md │ │ │ │ ├── types/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── IOSInfo.md │ │ │ │ │ │ └── IPackageStatus.md │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ ├── LinuxDistro.md │ │ │ │ │ │ ├── OS.md │ │ │ │ │ │ └── PackageName.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── PACKAGE_NAMES.md │ │ │ │ └── utils/ │ │ │ │ ├── checker/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── checkInstalledPackages.md │ │ │ │ │ └── checkPackage.md │ │ │ │ ├── checkers/ │ │ │ │ │ ├── docker/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── checkDocker.md │ │ │ │ │ └── typescript/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── checkTypeScript.md │ │ │ │ ├── exec/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── checkVersion.md │ │ │ │ │ │ ├── commandExists.md │ │ │ │ │ │ └── execCommand.md │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── IExecOptions.md │ │ │ │ │ │ └── IExecResult.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── deps.md │ │ │ │ └── logger/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── createSpinner.md │ │ │ │ │ ├── logError.md │ │ │ │ │ ├── logInfo.md │ │ │ │ │ ├── logStep.md │ │ │ │ │ ├── logSuccess.md │ │ │ │ │ └── logWarning.md │ │ │ │ └── interfaces/ │ │ │ │ └── ISpinner.md │ │ │ ├── plugin/ │ │ │ │ ├── graphql-service/ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ └── PluginGraphQLService.md │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── useCreatePlugin.md │ │ │ │ │ │ ├── useDeletePlugin.md │ │ │ │ │ │ ├── useGetAllPlugins.md │ │ │ │ │ │ ├── useInstallPlugin.md │ │ │ │ │ │ └── useUpdatePlugin.md │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── ICreatePluginInput.md │ │ │ │ │ ├── IDeletePluginInput.md │ │ │ │ │ ├── IInstallPluginInput.md │ │ │ │ │ ├── IPlugin.md │ │ │ │ │ └── IUpdatePluginInput.md │ │ │ │ ├── hooks/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── useLoadedPlugins.md │ │ │ │ │ ├── usePluginDrawerItems.md │ │ │ │ │ ├── usePluginInjectors.md │ │ │ │ │ └── usePluginRoutes.md │ │ │ │ ├── manager/ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ └── PluginManager.md │ │ │ │ │ └── functions/ │ │ │ │ │ ├── getPluginManager.md │ │ │ │ │ └── resetPluginManager.md │ │ │ │ ├── managers/ │ │ │ │ │ ├── discovery/ │ │ │ │ │ │ └── classes/ │ │ │ │ │ │ └── DiscoveryManager.md │ │ │ │ │ ├── event-manager/ │ │ │ │ │ │ └── classes/ │ │ │ │ │ │ └── EventManager.md │ │ │ │ │ ├── extension-registry/ │ │ │ │ │ │ └── classes/ │ │ │ │ │ │ └── ExtensionRegistryManager.md │ │ │ │ │ └── lifecycle/ │ │ │ │ │ └── classes/ │ │ │ │ │ └── LifecycleManager.md │ │ │ │ ├── registry/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── createErrorComponent.md │ │ │ │ │ │ ├── createLazyPluginComponent.md │ │ │ │ │ │ ├── discoverAndRegisterAllPlugins.md │ │ │ │ │ │ ├── extractComponentNames.md │ │ │ │ │ │ ├── getPluginComponent.md │ │ │ │ │ │ ├── getPluginComponents.md │ │ │ │ │ │ ├── getPluginManifest.md │ │ │ │ │ │ ├── initializePluginSystem.md │ │ │ │ │ │ ├── isPluginRegistered.md │ │ │ │ │ │ └── registerPluginDynamically.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── manifestCache.md │ │ │ │ │ └── pluginRegistry.md │ │ │ │ ├── services/ │ │ │ │ │ ├── AdminPluginFileService/ │ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ │ └── AdminPluginFileService.md │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── IInstalledPlugin.md │ │ │ │ │ │ │ ├── IPluginFileValidationResult.md │ │ │ │ │ │ │ └── IPluginInstallationResult.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── adminPluginFileService.md │ │ │ │ │ └── InternalFileWriter/ │ │ │ │ │ ├── classes/ │ │ │ │ │ │ └── InternalFileWriter.md │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── IFileOperationResult.md │ │ │ │ │ │ └── IFileWriteResult.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── internalFileWriter.md │ │ │ │ ├── types/ │ │ │ │ │ ├── enumerations/ │ │ │ │ │ │ ├── ExtensionPointType.md │ │ │ │ │ │ └── PluginStatus.md │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IDrawerExtension.md │ │ │ │ │ ├── IExtensionPoints.md │ │ │ │ │ ├── IExtensionRegistry.md │ │ │ │ │ ├── IInjectorExtension.md │ │ │ │ │ ├── IInstalledPlugin.md │ │ │ │ │ ├── ILoadedPlugin.md │ │ │ │ │ ├── IPluginDetails.md │ │ │ │ │ ├── IPluginDrawerItemsProps.md │ │ │ │ │ ├── IPluginInfo.md │ │ │ │ │ ├── IPluginLifecycle.md │ │ │ │ │ ├── IPluginManifest.md │ │ │ │ │ ├── IPluginMeta.md │ │ │ │ │ ├── IPluginModalProps.md │ │ │ │ │ ├── IPluginRouterProps.md │ │ │ │ │ ├── IPluginStoreProps.md │ │ │ │ │ └── IRouteExtension.md │ │ │ │ ├── utils/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── filterByPermissions.md │ │ │ │ │ ├── generatePluginId.md │ │ │ │ │ ├── sortDrawerItems.md │ │ │ │ │ └── validatePluginManifest.md │ │ │ │ ├── variables/ │ │ │ │ │ ├── PluginInjector.md │ │ │ │ │ ├── PluginRouteRenderer.md │ │ │ │ │ └── PluginRoutes.md │ │ │ │ └── vite/ │ │ │ │ └── internalFileWriterPlugin/ │ │ │ │ ├── functions/ │ │ │ │ │ └── createInternalFileWriterPlugin.md │ │ │ │ └── interfaces/ │ │ │ │ └── IInternalFileWriterPluginOptions.md │ │ │ ├── reportWebVitals/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── screens/ │ │ │ │ ├── AdminPortal/ │ │ │ │ │ ├── BlockUser/ │ │ │ │ │ │ └── BlockUser/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── CommunityProfile/ │ │ │ │ │ │ └── CommunityProfile/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EventManagement/ │ │ │ │ │ │ └── EventManagement/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EventVolunteers/ │ │ │ │ │ │ ├── Requests/ │ │ │ │ │ │ │ ├── Requests/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── Requests.mocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ │ │ ├── ERROR_MOCKS.md │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_WITH_FILTER_DATA.md │ │ │ │ │ │ │ └── UPDATE_ERROR_MOCKS.md │ │ │ │ │ │ ├── VolunteerContainer/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── VolunteerGroups/ │ │ │ │ │ │ │ ├── VolunteerGroups/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ ├── deleteModal/ │ │ │ │ │ │ │ │ └── VolunteerGroupDeleteModal/ │ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ │ └── InterfaceDeleteVolunteerGroupModal.md │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── modal/ │ │ │ │ │ │ │ ├── VolunteerGroupModal/ │ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ │ └── InterfaceVolunteerGroupModal.md │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── VolunteerGroups.mocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_EMPTY.md │ │ │ │ │ │ │ └── MOCKS_ERROR.md │ │ │ │ │ │ └── Volunteers/ │ │ │ │ │ │ ├── Volunteers/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── Volunteers.mocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_EMPTY.md │ │ │ │ │ │ │ └── MOCKS_ERROR.md │ │ │ │ │ │ ├── createModal/ │ │ │ │ │ │ │ └── VolunteerCreateModal/ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ └── InterfaceVolunteerCreateModal.md │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── deleteModal/ │ │ │ │ │ │ │ └── VolunteerDeleteModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── viewModal/ │ │ │ │ │ │ └── VolunteerViewModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── FundCampaignPledge/ │ │ │ │ │ │ ├── FundCampaignPledge/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── PledgeColumns/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── getPledgeColumns.md │ │ │ │ │ │ ├── Pledges.mocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_DELETE_PLEDGE_ERROR.md │ │ │ │ │ │ │ ├── MOCKS_FUND_CAMPAIGN_PLEDGE_ERROR.md │ │ │ │ │ │ │ ├── PLEDGE_MODAL_ERROR_MOCKS.md │ │ │ │ │ │ │ └── PLEDGE_MODAL_MOCKS.md │ │ │ │ │ │ ├── deleteModal/ │ │ │ │ │ │ │ └── PledgeDeleteModal/ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ └── InterfaceDeletePledgeModal.md │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── modal/ │ │ │ │ │ │ └── PledgeModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfacePledgeModal.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── Leaderboard/ │ │ │ │ │ │ ├── Leaderboard/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── Leaderboard.mocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ │ ├── ERROR_MOCKS.md │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ └── SEARCH_EMPTY_MOCKS.md │ │ │ │ │ ├── ManageTag/ │ │ │ │ │ │ ├── ManageTag/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ ├── default.md │ │ │ │ │ │ │ └── getManageTagErrorMessage.md │ │ │ │ │ │ ├── ManageTagMockComponents/ │ │ │ │ │ │ │ ├── MockAddPeopleToTag/ │ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── MockTagActions/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── ManageTagMockUtils/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── buildAssignedUsers.md │ │ │ │ │ │ ├── ManageTagMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ └── MOCKS_ERROR_ASSIGNED_MEMBERS.md │ │ │ │ │ │ ├── ManageTagNonErrorMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS_ERROR_OBJECT.md │ │ │ │ │ │ │ ├── MOCKS_INFINITE_SCROLL_NULL_EDGES.md │ │ │ │ │ │ │ ├── MOCKS_INFINITE_SCROLL_NULL_FETCH_RESULT.md │ │ │ │ │ │ │ ├── MOCKS_INFINITE_SCROLL_PAGINATION.md │ │ │ │ │ │ │ ├── MOCKS_SUCCESS_REMOVE_USER_TAG.md │ │ │ │ │ │ │ ├── MOCKS_SUCCESS_UNASSIGN_USER_TAG.md │ │ │ │ │ │ │ ├── MOCKS_SUCCESS_UPDATE_USER_TAG.md │ │ │ │ │ │ │ └── MOCKS_WITH_ANCESTOR_TAGS.md │ │ │ │ │ │ ├── ManageTagNullFalsyMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS_EMPTY_ASSIGNED_MEMBERS_ARRAY.md │ │ │ │ │ │ │ ├── MOCKS_EMPTY_EDGES_ARRAY.md │ │ │ │ │ │ │ ├── MOCKS_EMPTY_PAGE_INFO.md │ │ │ │ │ │ │ ├── MOCKS_ERROR_REMOVE_USER_TAG.md │ │ │ │ │ │ │ ├── MOCKS_ERROR_UNASSIGN_USER_TAG.md │ │ │ │ │ │ │ ├── MOCKS_ERROR_UPDATE_USER_TAG.md │ │ │ │ │ │ │ ├── MOCKS_NULL_ANCESTOR_TAGS.md │ │ │ │ │ │ │ ├── MOCKS_NULL_DATA.md │ │ │ │ │ │ │ ├── MOCKS_NULL_USERS_ASSIGNED_TO.md │ │ │ │ │ │ │ └── MOCKS_UNDEFINED_DATA.md │ │ │ │ │ │ ├── editModal/ │ │ │ │ │ │ │ └── EditUserTagModal/ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ └── InterfaceEditUserTagModalProps.md │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── removeModal/ │ │ │ │ │ │ │ └── RemoveUserTagModal/ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ └── InterfaceRemoveUserTagModalProps.md │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── unassignModal/ │ │ │ │ │ │ └── UnassignUserTagModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceUnassignUserTagModalProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── MemberDetail/ │ │ │ │ │ │ ├── MemberDetail/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── UserContactDetails/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── fieldConfigs/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── addressFieldConfigs.md │ │ │ │ │ │ │ └── phoneFieldConfigs.md │ │ │ │ │ │ └── resolveAvatarFile/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── resolveAvatarFile.md │ │ │ │ │ ├── Notification/ │ │ │ │ │ │ └── Notification/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrgContribution/ │ │ │ │ │ │ └── OrgContribution/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrgList/ │ │ │ │ │ │ ├── OrgList/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── OrgListMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_ADMIN.md │ │ │ │ │ │ │ └── MOCKS_EMPTY.md │ │ │ │ │ │ └── modal/ │ │ │ │ │ │ └── OrganizationModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceOrganizationModalProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrgSettings/ │ │ │ │ │ │ ├── OrgSettings/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── OrgSettings.mocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── MOCKS.md │ │ │ │ │ ├── OrganizationDashboard/ │ │ │ │ │ │ ├── OrganizationDashboard/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── OrganizationDashboardMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ │ │ ├── ERROR_MOCKS.md │ │ │ │ │ │ │ └── MOCKS.md │ │ │ │ │ │ ├── OrganizationDashboardSecondaryMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── MOCKS_ORG2.md │ │ │ │ │ │ └── components/ │ │ │ │ │ │ ├── DashboardStats/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── UpcomingEventsCard/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrganizationEvents/ │ │ │ │ │ │ ├── CreateEventModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── OrganizationEvents/ │ │ │ │ │ │ │ ├── enumerations/ │ │ │ │ │ │ │ │ └── ViewType.md │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── OrganizationEventsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── MOCKS.md │ │ │ │ │ ├── OrganizationFundCampaign/ │ │ │ │ │ │ ├── OrganizationFundCampaignMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ └── MOCK_ERROR.md │ │ │ │ │ │ ├── OrganizationFundCampaigns/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── modal/ │ │ │ │ │ │ ├── CampaignModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── types/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── IDateRangeValue.md │ │ │ │ │ │ └── InterfaceCampaignModal.md │ │ │ │ │ ├── OrganizationFunds/ │ │ │ │ │ │ ├── OrganizationFunds/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── OrganizationFundsMocks/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ │ ├── MOCKS_ERROR.md │ │ │ │ │ │ │ └── NO_FUNDS.md │ │ │ │ │ │ └── modal/ │ │ │ │ │ │ └── FundModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceFundModal.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrganizationPeople/ │ │ │ │ │ │ ├── OrganizationPeople/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── addMember/ │ │ │ │ │ │ ├── AddMember/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── types/ │ │ │ │ │ │ ├── enumerations/ │ │ │ │ │ │ │ └── OrganizationMembershipRole.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── IEdge.md │ │ │ │ │ │ ├── IQueryVariable.md │ │ │ │ │ │ └── IUserDetails.md │ │ │ │ │ ├── OrganizationTags/ │ │ │ │ │ │ ├── OrganizationTags/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── OrganizationTagsMocks/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ ├── makeTagEdge.md │ │ │ │ │ │ │ └── makeUserTags.md │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ └── TagEdge.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_ASCENDING_NO_SEARCH.md │ │ │ │ │ │ ├── MOCKS_EMPTY.md │ │ │ │ │ │ ├── MOCKS_ERROR.md │ │ │ │ │ │ ├── MOCKS_ERROR_ERROR_TAG.md │ │ │ │ │ │ ├── MOCKS_FETCHMORE_UNDEFINED.md │ │ │ │ │ │ ├── MOCKS_NO_MORE_PAGES.md │ │ │ │ │ │ ├── MOCKS_NULL_END_CURSOR.md │ │ │ │ │ │ ├── MOCKS_UNDEFINED_USER_TAGS.md │ │ │ │ │ │ └── MOCK_RESPONSES.md │ │ │ │ │ ├── OrganizationTransactions/ │ │ │ │ │ │ └── OrganizationTransactions/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── OrganizationVenues/ │ │ │ │ │ │ └── OrganizationVenues/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── PluginStore/ │ │ │ │ │ │ ├── PluginModal/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── PluginStore/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── UploadPluginModal/ │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── PluginCard/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ ├── PluginList/ │ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ └── UninstallConfirmationModal/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── hooks/ │ │ │ │ │ │ ├── useInstallTimer/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── useInstallTimer.md │ │ │ │ │ │ ├── usePluginActions/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── usePluginActions.md │ │ │ │ │ │ └── usePluginFilters/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── usePluginFilters.md │ │ │ │ │ ├── Requests/ │ │ │ │ │ │ ├── Requests/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── RequestsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ │ ├── EMPTY_REQUEST_MOCKS.md │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS4.md │ │ │ │ │ │ ├── MOCKS_WITH_ERROR.md │ │ │ │ │ │ └── UPDATED_MOCKS.md │ │ │ │ │ ├── SubTags/ │ │ │ │ │ │ ├── SubTags/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── SubTagsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_CREATE_TAG_ERROR.md │ │ │ │ │ │ ├── MOCKS_ERROR_SUB_TAGS.md │ │ │ │ │ │ └── emptyMocks.md │ │ │ │ │ └── Users/ │ │ │ │ │ ├── Organization.mocks/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── generateMockUser.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCK_USERS.md │ │ │ │ │ │ ├── createAddress.md │ │ │ │ │ │ └── createCreator.md │ │ │ │ │ ├── User.mocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ └── MOCKS2.md │ │ │ │ │ ├── Users/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ ├── default.md │ │ │ │ │ │ ├── isValidFilteringOption.md │ │ │ │ │ │ └── isValidSortingOption.md │ │ │ │ │ └── UsersMocks.mocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ ├── MOCKS_NEW.md │ │ │ │ │ ├── MOCKS_NEW_2.md │ │ │ │ │ └── USER_UNDEFINED_MOCK.md │ │ │ │ ├── Auth/ │ │ │ │ │ ├── ForgotPassword/ │ │ │ │ │ │ └── ForgotPassword/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── LoginPage/ │ │ │ │ │ │ └── LoginPage/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── VerifyEmail/ │ │ │ │ │ └── VerifyEmail/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── Public/ │ │ │ │ │ ├── Invitation/ │ │ │ │ │ │ └── AcceptInvitation/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── PageNotFound/ │ │ │ │ │ └── PageNotFound/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ └── UserPortal/ │ │ │ │ ├── Campaigns/ │ │ │ │ │ ├── Campaigns/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── CampaignWithStatus.md │ │ │ │ │ ├── CampaignsMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_WITH_FUND_NO_CAMPAIGNS.md │ │ │ │ │ │ ├── MOCKS_WITH_NO_FUNDS.md │ │ │ │ │ │ ├── MOCKS_WITH_NULL_ORGANIZATION.md │ │ │ │ │ │ ├── MOCKS_WITH_PENDING_CAMPAIGN.md │ │ │ │ │ │ ├── MOCKS_WITH_UNDEFINED_CAMPAIGNS.md │ │ │ │ │ │ └── USER_FUND_CAMPAIGNS_ERROR.md │ │ │ │ │ └── PledgeModal/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── areOptionsEqual.md │ │ │ │ │ │ └── getMemberLabel.md │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── InterfacePledgeModal.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── Chat/ │ │ │ │ │ └── Chat/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── Donate/ │ │ │ │ │ └── Donate/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── Events/ │ │ │ │ │ └── Events/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── computeCalendarFromStartDate.md │ │ │ │ │ └── default.md │ │ │ │ ├── LeaveOrganization/ │ │ │ │ │ └── LeaveOrganization/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── userEmail.md │ │ │ │ │ └── userId.md │ │ │ │ ├── Organizations/ │ │ │ │ │ └── Organizations/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── People/ │ │ │ │ │ └── People/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── Pledges/ │ │ │ │ │ ├── Pledges/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── PledgesMocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── MOCKS.md │ │ │ │ ├── Transactions/ │ │ │ │ │ └── Transactions/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── UserGlobalScreen/ │ │ │ │ │ └── UserGlobalScreen/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── UserScreen/ │ │ │ │ │ └── UserScreen/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ └── Volunteer/ │ │ │ │ ├── Actions/ │ │ │ │ │ ├── Actions/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── Actions.mocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ ├── ERROR_MOCKS.md │ │ │ │ │ └── MOCKS.md │ │ │ │ ├── Groups/ │ │ │ │ │ ├── GroupModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceGroupModal.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── Groups/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── Groups.mocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ └── UPDATE_ERROR_MOCKS.md │ │ │ │ ├── Invitations/ │ │ │ │ │ └── Invitations/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── UpcomingEvents/ │ │ │ │ │ ├── RecurringEventVolunteerModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── UpcomingEvents/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── getStatusBadgeProps.md │ │ │ │ │ ├── UpcomingEvents.mockEvents/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── baseRecurringEvent.md │ │ │ │ │ │ ├── duplicateInstanceEvent.md │ │ │ │ │ │ ├── event1.md │ │ │ │ │ │ ├── event2.md │ │ │ │ │ │ ├── event3.md │ │ │ │ │ │ ├── nullVolunteerGroups.md │ │ │ │ │ │ ├── pastEvent.md │ │ │ │ │ │ └── recurringInstanceEvent.md │ │ │ │ │ ├── UpcomingEvents.mockHelpers/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ ├── createEventVolunteer.md │ │ │ │ │ │ │ └── createMembershipRecord.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceEventVolunteerOverride.md │ │ │ │ │ │ └── InterfaceMembershipOptions.md │ │ │ │ │ └── UpcomingEvents.mocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── EMPTY_MOCKS.md │ │ │ │ │ ├── ERROR_MOCKS.md │ │ │ │ │ ├── MEMBERSHIP_LOOKUP_MOCKS.md │ │ │ │ │ └── MOCKS.md │ │ │ │ └── VolunteerManagement/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── setup/ │ │ │ │ ├── askAndSetDockerOption/ │ │ │ │ │ └── askAndSetDockerOption/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── askAndUpdatePort/ │ │ │ │ │ └── askAndUpdatePort/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── askForCustomPort/ │ │ │ │ │ └── askForCustomPort/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── askForCustomPort.md │ │ │ │ │ ├── reservedPortWarning.md │ │ │ │ │ └── validatePort.md │ │ │ │ ├── askForDocker/ │ │ │ │ │ └── askForDocker/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── askAndUpdateTalawaApiUrl.md │ │ │ │ │ └── askForDocker.md │ │ │ │ ├── askForTalawaApiUrl/ │ │ │ │ │ └── askForTalawaApiUrl/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── askForTalawaApiUrl.md │ │ │ │ ├── backupEnvFile/ │ │ │ │ │ └── backupEnvFile/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── backupEnvFile.md │ │ │ │ ├── checkConnection/ │ │ │ │ │ └── checkConnection/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── checkConnection.md │ │ │ │ ├── checkEnvFile/ │ │ │ │ │ └── checkEnvFile/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── checkEnvFile.md │ │ │ │ │ └── modifyEnvFile.md │ │ │ │ ├── setup/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── askAndSetLogErrors.md │ │ │ │ │ │ ├── askAndSetRecaptcha.md │ │ │ │ │ │ └── main.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── ENV_KEYS.md │ │ │ │ │ └── ENV_VALUES.md │ │ │ │ ├── updateEnvFile/ │ │ │ │ │ └── updateEnvFile/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── updateEnvFile.md │ │ │ │ └── validateRecaptcha/ │ │ │ │ └── validateRecaptcha/ │ │ │ │ └── functions/ │ │ │ │ └── validateRecaptcha.md │ │ │ ├── shared-components/ │ │ │ │ ├── ActionItems/ │ │ │ │ │ ├── ActionItem.mocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── MOCKS.md │ │ │ │ │ │ ├── MOCKS_ERROR.md │ │ │ │ │ │ ├── actionItemCategory1.md │ │ │ │ │ │ ├── actionItemCategory2.md │ │ │ │ │ │ ├── actionItemCategoryListQuery.md │ │ │ │ │ │ ├── actionItemListQuery.md │ │ │ │ │ │ ├── actionItemListQueryError.md │ │ │ │ │ │ ├── baseActionItem.md │ │ │ │ │ │ ├── completeActionForInstanceMutation.md │ │ │ │ │ │ ├── completeActionForInstanceMutationError.md │ │ │ │ │ │ ├── deleteActionItemForInstanceMutation.md │ │ │ │ │ │ ├── deleteActionItemForInstanceMutationError.md │ │ │ │ │ │ ├── deleteActionItemMutation.md │ │ │ │ │ │ ├── deleteActionItemMutationError.md │ │ │ │ │ │ ├── itemWithEmptyAssigneeName.md │ │ │ │ │ │ ├── itemWithUser1.md │ │ │ │ │ │ ├── itemWithUser2.md │ │ │ │ │ │ ├── itemWithVolunteerGroup.md │ │ │ │ │ │ ├── itemWithoutAssignee.md │ │ │ │ │ │ ├── itemWithoutCategory.md │ │ │ │ │ │ ├── markActionAsPendingForInstanceMutation.md │ │ │ │ │ │ ├── markActionAsPendingForInstanceMutationError.md │ │ │ │ │ │ ├── markActionItemAsPendingMutation.md │ │ │ │ │ │ ├── markActionItemAsPendingMutationError.md │ │ │ │ │ │ ├── memberListQuery.md │ │ │ │ │ │ └── updateActionItemMutation.md │ │ │ │ │ ├── ActionItemDeleteModal/ │ │ │ │ │ │ └── ActionItemDeleteModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── IItemDeleteModalProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── ActionItemModal/ │ │ │ │ │ │ └── ActionItemModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── ActionItemUpdateModal/ │ │ │ │ │ │ └── ActionItemUpdateStatusModal/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── IItemUpdateStatusModalProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── ActionItemViewModal/ │ │ │ │ │ └── ActionItemViewModal/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── IViewModalProps.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── Auth/ │ │ │ │ │ ├── EmailField/ │ │ │ │ │ │ └── EmailField/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── EmailField.md │ │ │ │ │ ├── FormField/ │ │ │ │ │ │ └── FormField/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── FormField.md │ │ │ │ │ └── PasswordField/ │ │ │ │ │ └── PasswordField/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── PasswordField.md │ │ │ │ ├── Avatar/ │ │ │ │ │ └── Avatar/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── BaseModal/ │ │ │ │ │ └── BaseModal/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── BreadcrumbsComponent/ │ │ │ │ │ ├── SafeBreadcrumbs/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── functions/ │ │ │ │ │ └── BreadcrumbsComponent.md │ │ │ │ ├── Button/ │ │ │ │ │ ├── Button.types/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceButtonProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── ButtonIconPosition.md │ │ │ │ │ │ ├── ButtonProps.md │ │ │ │ │ │ ├── ButtonSize.md │ │ │ │ │ │ └── ButtonVariant.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── Button.md │ │ │ │ ├── CRUDModalTemplate/ │ │ │ │ │ ├── CRUDModalTemplate/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── CRUDModalTemplate.md │ │ │ │ │ ├── CreateModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── CreateModal.md │ │ │ │ │ ├── CreateModal.stories/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── BasicUsage.md │ │ │ │ │ │ ├── ComplexForm.md │ │ │ │ │ │ ├── LoadingState.md │ │ │ │ │ │ ├── SubmitDisabled.md │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── DeleteModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── DeleteModal.md │ │ │ │ │ ├── DeleteModal.stories/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── BasicUsage.md │ │ │ │ │ │ ├── DeleteOrganization.md │ │ │ │ │ │ ├── RecurringEvent.md │ │ │ │ │ │ ├── WithWarning.md │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EditModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── EditModal.md │ │ │ │ │ ├── EditModal.stories/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── BasicUsage.md │ │ │ │ │ │ ├── ComplexForm.md │ │ │ │ │ │ ├── LoadingData.md │ │ │ │ │ │ ├── SubmitDisabled.md │ │ │ │ │ │ ├── SubmittingState.md │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── ViewModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── ViewModal.md │ │ │ │ │ ├── ViewModal.stories/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── BasicUsage.md │ │ │ │ │ │ ├── LoadingState.md │ │ │ │ │ │ ├── OrganizationDetails.md │ │ │ │ │ │ ├── UserProfile.md │ │ │ │ │ │ ├── WithCustomActions.md │ │ │ │ │ │ └── default.md │ │ │ │ │ └── hooks/ │ │ │ │ │ ├── useFormModal/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── useFormModal.md │ │ │ │ │ ├── useModalState/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── useModalState.md │ │ │ │ │ └── useMutationModal/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── useMutationModal.md │ │ │ │ ├── CheckIn/ │ │ │ │ │ ├── CheckInMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── checkInMutationSuccess.md │ │ │ │ │ │ ├── checkInMutationSuccessRecurring.md │ │ │ │ │ │ ├── checkInMutationUnsuccess.md │ │ │ │ │ │ └── checkInQueryMock.md │ │ │ │ │ ├── CheckInWrapper/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── CheckInWrapper.md │ │ │ │ │ ├── Modal/ │ │ │ │ │ │ ├── CheckInModal/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── CheckInModal.md │ │ │ │ │ │ └── Row/ │ │ │ │ │ │ └── TableRow/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── TableRow.md │ │ │ │ │ └── tagTemplate/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── tagTemplate.md │ │ │ │ ├── DataGridWrapper/ │ │ │ │ │ ├── DataGridErrorOverlay/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── DataGridErrorOverlay.md │ │ │ │ │ ├── DataGridLoadingOverlay/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── DataGridLoadingOverlay.md │ │ │ │ │ ├── DataGridWrapper/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ ├── DataGridWrapper.md │ │ │ │ │ │ └── convertTokenColumns.md │ │ │ │ │ └── DataGridWrapper.stories/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── BasicUsage.md │ │ │ │ │ ├── CompleteExample.md │ │ │ │ │ ├── EmptyState.md │ │ │ │ │ ├── ErrorState.md │ │ │ │ │ ├── LoadingState.md │ │ │ │ │ ├── SearchWithNoResults.md │ │ │ │ │ ├── WithActionColumn.md │ │ │ │ │ ├── WithPagination.md │ │ │ │ │ ├── WithRowClick.md │ │ │ │ │ ├── WithSearch.md │ │ │ │ │ ├── WithSorting.md │ │ │ │ │ └── default.md │ │ │ │ ├── DataTable/ │ │ │ │ │ ├── BulkActionsBar/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── BulkActionsBar.md │ │ │ │ │ ├── DataTable/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ ├── DataTable.md │ │ │ │ │ │ └── defaultCompare.md │ │ │ │ │ ├── DataTableSkeleton/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── DataTableSkeleton.md │ │ │ │ │ ├── DataTableTable/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── DataTableTable.md │ │ │ │ │ ├── LoadingMoreRows/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── LoadingMoreRows.md │ │ │ │ │ ├── Pagination/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── PaginationControls.md │ │ │ │ │ ├── SearchBar/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── SearchBar.md │ │ │ │ │ ├── TableLoader/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── TableLoader.md │ │ │ │ │ ├── cells/ │ │ │ │ │ │ └── ActionsCell/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── ActionsCell.md │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── useDataTableFiltering/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── useDataTableFiltering.md │ │ │ │ │ │ ├── useDataTableSelection/ │ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ │ └── useDataTableSelection.md │ │ │ │ │ │ ├── useSimpleTableData/ │ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ │ └── useSimpleTableData.md │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── IUseSimpleTableDataOptions.md │ │ │ │ │ │ │ └── IUseSimpleTableDataResult.md │ │ │ │ │ │ └── useTableData/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── useTableData.md │ │ │ │ │ └── utils/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── getCellValue.md │ │ │ │ │ ├── renderCellValue.md │ │ │ │ │ ├── renderHeader.md │ │ │ │ │ └── toSearchableString.md │ │ │ │ ├── DatePicker/ │ │ │ │ │ └── DatePicker/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── DateRangePicker/ │ │ │ │ │ └── DateRangePicker/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── DropDownButton/ │ │ │ │ │ ├── DropDownButton.mocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── baseProps.md │ │ │ │ │ │ ├── basicOptions.md │ │ │ │ │ │ ├── customLabelProps.md │ │ │ │ │ │ ├── disabledDropdownProps.md │ │ │ │ │ │ ├── disabledOptionProps.md │ │ │ │ │ │ ├── dropUpProps.md │ │ │ │ │ │ ├── mockOnSelect.md │ │ │ │ │ │ ├── noSelectionProps.md │ │ │ │ │ │ ├── noTestIdProps.md │ │ │ │ │ │ ├── optionsWithDisabled.md │ │ │ │ │ │ ├── optionsWithNonStringLabel.md │ │ │ │ │ │ ├── searchableMinimalProps.md │ │ │ │ │ │ ├── searchableOptionsForCoverage.md │ │ │ │ │ │ ├── styledProps.md │ │ │ │ │ │ ├── variantProps.md │ │ │ │ │ │ ├── withIconProps.md │ │ │ │ │ │ ├── withIconSearchProps.md │ │ │ │ │ │ └── withNonStringLabelProps.md │ │ │ │ │ ├── SearchToggle/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── DropDownButton.md │ │ │ │ ├── EmptyState/ │ │ │ │ │ ├── EmptyState/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── EmptyStateMocks/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── emptyStateBaseForActionMock.md │ │ │ │ │ ├── emptyStateBaseMock.md │ │ │ │ │ ├── emptyStateWithAllPropsMock.md │ │ │ │ │ ├── emptyStateWithCustomCSSMock.md │ │ │ │ │ ├── emptyStateWithCustomDataTestIdMock.md │ │ │ │ │ ├── emptyStateWithCustomIconMock.md │ │ │ │ │ ├── emptyStateWithDescriptionMock.md │ │ │ │ │ └── emptyStateWithIconMock.md │ │ │ │ ├── ErrorBoundaryWrapper/ │ │ │ │ │ └── ErrorBoundaryWrapper/ │ │ │ │ │ └── classes/ │ │ │ │ │ └── ErrorBoundaryWrapper.md │ │ │ │ ├── ErrorPanel/ │ │ │ │ │ └── ErrorPanel/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── InterfaceErrorPanelProps.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── EventForm/ │ │ │ │ │ ├── EventForm/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── formatRecurrenceForPayload.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── RecurrenceDropdown/ │ │ │ │ │ │ └── RecurrenceDropdown/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── VisibilitySelector/ │ │ │ │ │ │ └── VisibilitySelector/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── utils/ │ │ │ │ │ ├── recurrenceOptions/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── buildRecurrenceOptions.md │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceRecurrenceOption.md │ │ │ │ │ ├── timeUtils/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── timeToDayJs.md │ │ │ │ │ └── visibilityUtils/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── getVisibilityType.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── EventVisibility.md │ │ │ │ ├── EventListCard/ │ │ │ │ │ ├── EventListCard/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EventListCardProps.mock/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── props.md │ │ │ │ │ └── Modal/ │ │ │ │ │ ├── Delete/ │ │ │ │ │ │ └── EventListCardDeleteModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── EventListCardMocks/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── ERROR_MOCKS.md │ │ │ │ │ │ └── MOCKS.md │ │ │ │ │ ├── EventListCardModals/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── Preview/ │ │ │ │ │ │ └── EventListCardPreviewModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── updateLogic/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── useUpdateEventHandler.md │ │ │ │ ├── FormFieldGroup/ │ │ │ │ │ ├── FormCheckField/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── FormCheckField.md │ │ │ │ │ ├── FormFieldGroup/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── FormFieldGroup.md │ │ │ │ │ ├── FormSelectField/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── FormSelectField.md │ │ │ │ │ └── FormTextField/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── FormTextField.md │ │ │ │ ├── InfiniteScrollLoader/ │ │ │ │ │ └── InfiniteScrollLoader/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── LoadingState/ │ │ │ │ │ └── LoadingState/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── Navbar/ │ │ │ │ │ └── Navbar/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── NotificationToast/ │ │ │ │ │ └── NotificationToast/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── NotificationToastContainer.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── NotificationToast.md │ │ │ │ ├── OrganizationCard/ │ │ │ │ │ └── OrganizationCard/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceOrganizationCardPropsPG.md │ │ │ │ ├── PaginationList/ │ │ │ │ │ └── PaginationList/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── PeopleTabNavbar/ │ │ │ │ │ └── PeopleTabNavbar/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── PeopleTabNavbarButton/ │ │ │ │ │ └── PeopleTabNavbarButton/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── PeopleTabUserEvents/ │ │ │ │ │ └── PeopleTabUserEvents/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── PeopleTabUserOrganization/ │ │ │ │ │ └── PeopleTabUserOrganizations/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── PostViewModal/ │ │ │ │ │ └── PostViewModal/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── ProfileAvatarDisplay/ │ │ │ │ │ └── ProfileAvatarDisplay/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── ProfileAvatarDisplay.md │ │ │ │ ├── Recurrence/ │ │ │ │ │ ├── CustomRecurrenceModal/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── RecurrenceEndOptionsSection/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── RecurrenceEndOptionsSection.md │ │ │ │ │ ├── RecurrenceFrequencySection/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── RecurrenceFrequencySection.md │ │ │ │ │ ├── RecurrenceMonthlySection/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── RecurrenceMonthlySection.md │ │ │ │ │ ├── RecurrenceWeeklySection/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── RecurrenceWeeklySection.md │ │ │ │ │ └── RecurrenceYearlySection/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── RecurrenceYearlySection.md │ │ │ │ ├── ReportingTable/ │ │ │ │ │ └── ReportingTable/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ └── adjustColumnsForCompactMode.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── SearchBar/ │ │ │ │ │ └── SearchBar/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── SearchFilterBar/ │ │ │ │ │ └── SearchFilterBar/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── SidebarBase/ │ │ │ │ │ └── SidebarBase/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── SidebarNavItem/ │ │ │ │ │ └── SidebarNavItem/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── SidebarOrgSection/ │ │ │ │ │ └── SidebarOrgSection/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── SidebarPluginSection/ │ │ │ │ │ └── SidebarPluginSection/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── SortingButton/ │ │ │ │ │ └── SortingButton/ │ │ │ │ │ ├── namespaces/ │ │ │ │ │ │ └── default/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── propTypes.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── StatusBadge/ │ │ │ │ │ └── StatusBadge/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── TableLoader/ │ │ │ │ │ └── TableLoader/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── TimePicker/ │ │ │ │ │ └── TimePicker/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── TruncatedText/ │ │ │ │ │ └── TruncatedText/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── VolunteerGroupViewModal/ │ │ │ │ │ └── VolunteerGroupViewModal/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── pinnedPosts/ │ │ │ │ │ ├── pinnedPostCard/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── pinnedPostsLayout/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ ├── postCard/ │ │ │ │ │ └── PostCard/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── posts/ │ │ │ │ │ ├── createPostModal/ │ │ │ │ │ │ └── createPostModal/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── helperFunctions/ │ │ │ │ │ │ └── functions/ │ │ │ │ │ │ └── formatPostForCard.md │ │ │ │ │ └── posts/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ └── useDebounce/ │ │ │ │ └── useDebounce/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── state/ │ │ │ │ ├── action-creators/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── updateTargets.md │ │ │ │ ├── helpers/ │ │ │ │ │ └── Action/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceAction.md │ │ │ │ ├── hooks/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── useAppDispatch.md │ │ │ │ ├── reducers/ │ │ │ │ │ ├── routesReducer/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ ├── default.md │ │ │ │ │ │ │ └── generateRoutes.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── ComponentType.md │ │ │ │ │ │ ├── SubTargetType.md │ │ │ │ │ │ └── TargetsType.md │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ └── RootState.md │ │ │ │ │ ├── userRoutesReducer/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── ComponentType.md │ │ │ │ │ │ ├── SubTargetType.md │ │ │ │ │ │ └── TargetsType.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── reducers.md │ │ │ │ └── store/ │ │ │ │ ├── type-aliases/ │ │ │ │ │ └── AppDispatch.md │ │ │ │ └── variables/ │ │ │ │ └── store.md │ │ │ ├── test-utils/ │ │ │ │ ├── AsyncComponent/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── ComplexLoader/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── CustomDashboardLoader/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── CustomLoader/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── I18nextProviderMock/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── I18nextProvider.md │ │ │ │ ├── MockBrowserRouter/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── default.md │ │ │ │ ├── TestErrorBoundary/ │ │ │ │ │ └── classes/ │ │ │ │ │ └── TestErrorBoundary.md │ │ │ │ ├── TestWrapper/ │ │ │ │ │ └── functions/ │ │ │ │ │ └── TestWrapper.md │ │ │ │ ├── check-i18n/ │ │ │ │ │ └── check-i18n.test-utils/ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── cleanupTempDirs.md │ │ │ │ │ │ ├── makeTempDir.md │ │ │ │ │ │ ├── runScript.md │ │ │ │ │ │ └── writeTempFile.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── fixturesDir.md │ │ │ │ │ └── scriptPath.md │ │ │ │ ├── localStorageMock/ │ │ │ │ │ └── functions/ │ │ │ │ │ ├── createLocalStorageMock.md │ │ │ │ │ └── setupLocalStorageMock.md │ │ │ │ └── mocks/ │ │ │ │ └── react-bootstrap/ │ │ │ │ ├── Dropdown/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── Dropdown.md │ │ │ │ ├── components/ │ │ │ │ │ ├── DropdownBase/ │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ └── DivProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── DropdownItem/ │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ └── BtnProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ ├── DropdownMenu/ │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ └── DivProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── DropdownToggle/ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ └── BtnProps.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── default.md │ │ │ │ └── types/ │ │ │ │ ├── interfaces/ │ │ │ │ │ └── InterfaceDropdown.md │ │ │ │ └── type-aliases/ │ │ │ │ ├── BtnProps.md │ │ │ │ └── DivProps.md │ │ │ ├── types/ │ │ │ │ ├── AdminPortal/ │ │ │ │ │ ├── Advertisement/ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── InterfaceAddOnEntryProps.md │ │ │ │ │ │ │ ├── InterfaceAddOnRegisterProps.md │ │ │ │ │ │ │ └── InterfaceFormStateTypes.md │ │ │ │ │ │ └── type/ │ │ │ │ │ │ ├── enumerations/ │ │ │ │ │ │ │ └── AdvertisementType.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── Advertisement.md │ │ │ │ │ │ ├── AdvertisementAttachment.md │ │ │ │ │ │ ├── AdvertisementEdge.md │ │ │ │ │ │ ├── AdvertisementsConnection.md │ │ │ │ │ │ ├── CreateAdvertisementInput.md │ │ │ │ │ │ └── CreateAdvertisementPayload.md │ │ │ │ │ ├── Agenda/ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── InterfaceAgendaDragAndDropProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderCreateFormStateType.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderCreateModalProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderDeleteModalProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderInfo.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderList.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderUpdateFormStateType.md │ │ │ │ │ │ │ ├── InterfaceAgendaFolderUpdateModalProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemCategoryInfo.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemCategoryList.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemInfo.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemsCreateModalProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemsDeleteModalProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemsPreviewModalProps.md │ │ │ │ │ │ │ ├── InterfaceAgendaItemsUpdateModalProps.md │ │ │ │ │ │ │ ├── InterfaceAttachment.md │ │ │ │ │ │ │ ├── InterfaceCreateFormStateType.md │ │ │ │ │ │ │ ├── InterfaceFormStateType.md │ │ │ │ │ │ │ ├── InterfaceItemFormStateType.md │ │ │ │ │ │ │ └── InterfaceUseAgendaMutationsProps.md │ │ │ │ │ │ └── type/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── AgendaCategory.md │ │ │ │ │ ├── ApplyToSelector/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceApplyToSelectorProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── ApplyToType.md │ │ │ │ │ ├── AssignmentTypeSelector/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceAssignmentTypeSelectorProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── AssignmentType.md │ │ │ │ │ ├── Contribution/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceContriStatsProps.md │ │ │ │ │ │ └── InterfaceOrgContriCardsProps.md │ │ │ │ │ ├── EventRegistrantsModal/ │ │ │ │ │ │ ├── AddOnSpot/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── InterfaceAddOnSpotAttendeeProps.md │ │ │ │ │ │ │ └── InterfaceFormData.md │ │ │ │ │ │ ├── InviteByEmail/ │ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ └── InterfaceInviteByEmailModalProps.md │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceAutocompleteMockProps.md │ │ │ │ │ │ ├── InterfaceBaseModalProps.md │ │ │ │ │ │ └── InterfaceEventRegistrantsModalProps.md │ │ │ │ │ ├── EventRegistrantsWrapper/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceEventRegistrantsWrapperProps.md │ │ │ │ │ ├── MemberDetail/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── InterfaceAddressFieldConfig.md │ │ │ │ │ │ │ ├── InterfacePhoneFieldConfig.md │ │ │ │ │ │ │ └── InterfaceResolveAvatarFileParams.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── InterfaceMemberDetailProps.md │ │ │ │ │ ├── OrgUpdate/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceMutationUpdateOrganizationInput.md │ │ │ │ │ │ ├── InterfaceOrgUpdateProps.md │ │ │ │ │ │ └── InterfaceOrganization.md │ │ │ │ │ ├── Organization/ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── InterfaceOrgPeopleListCardProps.md │ │ │ │ │ │ │ └── InterfaceOrgPostCardProps.md │ │ │ │ │ │ └── type/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── Organization.md │ │ │ │ │ │ ├── OrganizationCustomField.md │ │ │ │ │ │ └── OrganizationInput.md │ │ │ │ │ ├── OrganizationDashCards/ │ │ │ │ │ │ └── CardItem/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceCardItem.md │ │ │ │ │ ├── OrganizationPeople/ │ │ │ │ │ │ └── addMember/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceAddMemberProps.md │ │ │ │ │ ├── PluginStore/ │ │ │ │ │ │ └── UninstallConfirmationModal/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── IUninstallConfirmationModalProps.md │ │ │ │ │ ├── Tag/ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── InterfaceAddPeopleToTagProps.md │ │ │ │ │ │ │ ├── InterfaceBaseFetchMoreOptions.md │ │ │ │ │ │ │ ├── InterfaceBaseQueryResult.md │ │ │ │ │ │ │ ├── InterfaceMemberData.md │ │ │ │ │ │ │ ├── InterfacePaginationVariables.md │ │ │ │ │ │ │ ├── InterfaceQueryUserTagsMembersToAssignTo.md │ │ │ │ │ │ │ ├── InterfaceTagMembersData.md │ │ │ │ │ │ │ └── InterfaceTagUsersToAssignToQuery.md │ │ │ │ │ │ └── utils/ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── TAGS_QUERY_DATA_CHUNK_SIZE.md │ │ │ │ │ │ └── dataGridStyle.md │ │ │ │ │ ├── TagActions/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceTagActionsProps.md │ │ │ │ │ ├── UpdateSession/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceUpdateSessionProps.md │ │ │ │ │ ├── UserDetails/ │ │ │ │ │ │ ├── UserEvent/ │ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ │ ├── InterfaceGQLEventLite.md │ │ │ │ │ │ │ │ │ ├── InterfaceGQLOrganization.md │ │ │ │ │ │ │ │ │ ├── InterfaceGQLUser.md │ │ │ │ │ │ │ │ │ ├── InterfaceGetUserEventsData.md │ │ │ │ │ │ │ │ │ ├── InterfaceUserEvent.md │ │ │ │ │ │ │ │ │ └── InterfaceUserEventsGQL.md │ │ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ │ │ └── ParticipationFilter.md │ │ │ │ │ │ │ └── type/ │ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ │ └── PeopleTabUserEventsProps.md │ │ │ │ │ │ ├── UserOrganization/ │ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ │ ├── InterfaceJoinedOrgEdge.md │ │ │ │ │ │ │ │ └── InterfaceJoinedOrganizationsData.md │ │ │ │ │ │ │ └── type/ │ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ │ ├── InterfaceOrgRelationType.md │ │ │ │ │ │ │ ├── InterfaceUserOrg.md │ │ │ │ │ │ │ └── InterfaceUserOrganizationsProps.md │ │ │ │ │ │ └── UserTags/ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ │ ├── InterfaceGetUserTagsData.md │ │ │ │ │ │ │ ├── InterfaceUserTag.md │ │ │ │ │ │ │ └── InterfaceUserTagGQL.md │ │ │ │ │ │ └── type/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── InterfaceUserTagsProps.md │ │ │ │ │ ├── UserTableRow/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── InterfaceActionButton.md │ │ │ │ │ │ │ ├── InterfaceUserInfo.md │ │ │ │ │ │ │ └── InterfaceUserTableRowProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── InterfaceActionVariant.md │ │ │ │ │ ├── VolunteerDeleteModal/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceVolunteerDeleteModalProps.md │ │ │ │ │ ├── VolunteerViewModal/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceVolunteerViewModalProps.md │ │ │ │ │ ├── actionItem/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── ActionItem.md │ │ │ │ │ │ ├── ActionItemCategory.md │ │ │ │ │ │ ├── CreateActionItemInput.md │ │ │ │ │ │ └── UpdateActionItemInput.md │ │ │ │ │ ├── address/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── Address.md │ │ │ │ │ │ └── AddressInput.md │ │ │ │ │ ├── membership/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── MembershipRequest.md │ │ │ │ │ ├── pagination/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── DefaultConnectionPageInfo.md │ │ │ │ │ └── venue/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── EditVenueInput.md │ │ │ │ │ ├── Venue.md │ │ │ │ │ └── VenueInput.md │ │ │ │ ├── Auth/ │ │ │ │ │ ├── LoginForm/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceLoginFormData.md │ │ │ │ │ │ ├── InterfaceLoginFormProps.md │ │ │ │ │ │ └── InterfaceSignInResult.md │ │ │ │ │ ├── OrgSelector/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceOrgOption.md │ │ │ │ │ │ └── InterfaceOrgSelectorProps.md │ │ │ │ │ ├── PasswordStrengthIndicator/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfacePasswordStrengthIndicatorProps.md │ │ │ │ │ ├── RegistrationForm/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── IRegistrationFormData.md │ │ │ │ │ │ └── IRegistrationFormProps.md │ │ │ │ │ ├── ValidationInterfaces/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfacePasswordRequirements.md │ │ │ │ │ │ └── InterfaceValidationResult.md │ │ │ │ │ ├── auth/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── IOAuthProviderConfig.md │ │ │ │ │ │ │ ├── InterfaceAuthenticationPayload.md │ │ │ │ │ │ │ ├── InterfaceOAuthAccount.md │ │ │ │ │ │ │ ├── InterfaceOAuthLinkResponse.md │ │ │ │ │ │ │ └── InterfaceOAuthLoginInput.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── OAuthProviderKey.md │ │ │ │ │ ├── useFieldValidation/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── IUseFieldValidationReturn.md │ │ │ │ │ │ │ └── IValidationResult.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── ValidationTrigger.md │ │ │ │ │ ├── useLogin/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── ILoginCredentials.md │ │ │ │ │ │ └── IUseLoginOptions.md │ │ │ │ │ └── usePasswordVisibility/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── IUsePasswordVisibilityReturn.md │ │ │ │ ├── Comment/ │ │ │ │ │ └── type/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── Comment.md │ │ │ │ │ └── CommentInput.md │ │ │ │ ├── CursorPagination/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── InterfaceConnectionData.md │ │ │ │ │ │ ├── InterfaceCursorPaginationManagerProps.md │ │ │ │ │ │ └── InterfaceCursorPaginationManagerRef.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── PaginationVariables.md │ │ │ │ ├── DataGridWrapper/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── InterfaceDataGridWrapperProps.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── TokenAwareGridColDef.md │ │ │ │ ├── DropDown/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceCollapsibleDropdown.md │ │ │ │ │ └── InterfaceDropDownProps.md │ │ │ │ ├── Event/ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ ├── enumerations/ │ │ │ │ │ │ │ └── UserRole.md │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── IAttendanceStatisticsModalProps.md │ │ │ │ │ │ │ ├── ICalendarProps.md │ │ │ │ │ │ │ ├── ICreateEventInput.md │ │ │ │ │ │ │ ├── IDeleteEventModalProps.md │ │ │ │ │ │ │ ├── IEvent.md │ │ │ │ │ │ │ ├── IEventEdge.md │ │ │ │ │ │ │ ├── IEventHeaderProps.md │ │ │ │ │ │ │ ├── IEventListCard.md │ │ │ │ │ │ │ ├── IMember.md │ │ │ │ │ │ │ ├── IOrgList.md │ │ │ │ │ │ │ ├── IPreviewEventModalProps.md │ │ │ │ │ │ │ ├── IStatsModal.md │ │ │ │ │ │ │ └── IUpdateEventModalProps.md │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ ├── InterfaceAttendanceStatisticsModalProps.md │ │ │ │ │ │ │ ├── InterfaceCalendarProps.md │ │ │ │ │ │ │ ├── InterfaceDeleteEventModalProps.md │ │ │ │ │ │ │ ├── InterfaceEvent.md │ │ │ │ │ │ │ ├── InterfaceEventEdge.md │ │ │ │ │ │ │ ├── InterfaceEventHeaderProps.md │ │ │ │ │ │ │ ├── InterfaceIOrgList.md │ │ │ │ │ │ │ ├── InterfaceMember.md │ │ │ │ │ │ │ ├── InterfacePreviewEventModalProps.md │ │ │ │ │ │ │ ├── InterfaceStatsModal.md │ │ │ │ │ │ │ └── InterfaceUpdateEventModalProps.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ └── FilterPeriod.md │ │ │ │ │ ├── type/ │ │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ │ ├── Event.md │ │ │ │ │ │ │ ├── EventAttendeeInput.md │ │ │ │ │ │ │ ├── EventInput.md │ │ │ │ │ │ │ ├── EventOrderByInput.md │ │ │ │ │ │ │ ├── EventVolunteer.md │ │ │ │ │ │ │ ├── EventVolunteerInput.md │ │ │ │ │ │ │ ├── EventVolunteerResponse.md │ │ │ │ │ │ │ ├── EventWhereInput.md │ │ │ │ │ │ │ ├── Feedback.md │ │ │ │ │ │ │ ├── FeedbackInput.md │ │ │ │ │ │ │ ├── UpdateEventVolunteerInput.md │ │ │ │ │ │ │ └── User.md │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ ├── EventOrderByInputEnum.md │ │ │ │ │ │ └── EventVolunteerResponseEnum.md │ │ │ │ │ └── utils/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── InterfaceHoliday.md │ │ │ │ │ └── variables/ │ │ │ │ │ ├── holidays.md │ │ │ │ │ └── weekdays.md │ │ │ │ ├── EventForm/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IEventFormProps.md │ │ │ │ │ ├── IEventFormSubmitPayload.md │ │ │ │ │ └── IEventFormValues.md │ │ │ │ ├── FormFieldGroup/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IFormTextFieldProps.md │ │ │ │ │ └── InterfaceFormFieldGroupProps.md │ │ │ │ ├── OrganizationCard/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceOrganizationCardProps.md │ │ │ │ ├── PeopleTab/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfacePageHeaderProps.md │ │ │ │ │ ├── InterfacePeopleTab.md │ │ │ │ │ ├── InterfacePeopleTabNavbar.md │ │ │ │ │ ├── InterfacePeopleTabNavbarProps.md │ │ │ │ │ ├── InterfacePeopleTabUserOrganizationProps.md │ │ │ │ │ └── InterfacePeopletabUserEventsProps.md │ │ │ │ ├── Post/ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── ICreatePostModalProps.md │ │ │ │ │ │ ├── InterfaceAttachment.md │ │ │ │ │ │ ├── InterfaceCreator.md │ │ │ │ │ │ ├── InterfaceMutationCreatePostInput.md │ │ │ │ │ │ ├── InterfaceOrganization.md │ │ │ │ │ │ ├── InterfaceOrganizationPostListData.md │ │ │ │ │ │ ├── InterfacePageInfo.md │ │ │ │ │ │ ├── InterfacePinnedPostCardProps.md │ │ │ │ │ │ ├── InterfacePinnedPostsLayoutProps.md │ │ │ │ │ │ ├── InterfacePost.md │ │ │ │ │ │ ├── InterfacePostCard.md │ │ │ │ │ │ ├── InterfacePostConnection.md │ │ │ │ │ │ ├── InterfacePostCreator.md │ │ │ │ │ │ ├── InterfacePostEdge.md │ │ │ │ │ │ └── InterfacePostNode.md │ │ │ │ │ └── type/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── ICreatePostData.md │ │ │ │ │ │ ├── ICreatePostInput.md │ │ │ │ │ │ └── IFileMetadataInput.md │ │ │ │ │ ├── type-aliases/ │ │ │ │ │ │ ├── Post.md │ │ │ │ │ │ ├── PostComments.md │ │ │ │ │ │ ├── PostInput.md │ │ │ │ │ │ ├── PostLikes.md │ │ │ │ │ │ ├── PostNode.md │ │ │ │ │ │ ├── PostOrderByInput.md │ │ │ │ │ │ ├── PostUpdateInput.md │ │ │ │ │ │ └── PostWhereInput.md │ │ │ │ │ └── variables/ │ │ │ │ │ └── PostOrderByInputEnum.md │ │ │ │ ├── Recurrence/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceCustomRecurrenceModalProps.md │ │ │ │ ├── ReportingTable/ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── InfiniteScrollProps.md │ │ │ │ │ │ ├── ReportingRow.md │ │ │ │ │ │ ├── ReportingTableColumn.md │ │ │ │ │ │ ├── ReportingTableGridProps.md │ │ │ │ │ │ └── ReportingTableProps.md │ │ │ │ │ └── utils/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── PAGE_SIZE.md │ │ │ │ │ ├── ROW_HEIGHT.md │ │ │ │ │ └── dataGridStyle.md │ │ │ │ ├── SearchBar/ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceSearchBarProps.md │ │ │ │ │ │ ├── InterfaceSearchBarRef.md │ │ │ │ │ │ └── InterfaceSearchMeta.md │ │ │ │ │ └── type/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── SearchBarSize.md │ │ │ │ │ ├── SearchBarTrigger.md │ │ │ │ │ └── SearchBarVariant.md │ │ │ │ ├── SidebarBase/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── ISidebarBaseProps.md │ │ │ │ ├── SidebarNavItem/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── ISidebarNavItemProps.md │ │ │ │ ├── SidebarPluginSection/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── ISidebarPluginSectionProps.md │ │ │ │ ├── UseUserProfile/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceUseUserProfileReturn.md │ │ │ │ ├── UserPortal/ │ │ │ │ │ ├── Chat/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── InterfaceChatUser.md │ │ │ │ │ │ │ ├── InterfaceContactCardProps.md │ │ │ │ │ │ │ ├── InterfaceGroupChatDetailsProps.md │ │ │ │ │ │ │ ├── InterfaceMockMessage.md │ │ │ │ │ │ │ └── InterfaceOrganizationMember.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── Chat.md │ │ │ │ │ ├── CommentCard/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceCommentCardProps.md │ │ │ │ │ ├── CreateDirectChat/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ └── InterfaceCreateDirectChatProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── ChatsListRefetch.md │ │ │ │ │ │ ├── CreateChatMembershipMutation.md │ │ │ │ │ │ └── CreateChatMutation.md │ │ │ │ │ ├── Donation/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceDonation.md │ │ │ │ │ │ └── InterfaceDonationCardProps.md │ │ │ │ │ ├── EmptyChatState/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceEmptyChatStateProps.md │ │ │ │ │ ├── EventCard/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceEventCardProps.md │ │ │ │ │ ├── GroupModal/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceGroupModalProps.md │ │ │ │ │ ├── RecurringEventVolunteerModal/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceRecurringEventVolunteerModalProps.md │ │ │ │ │ ├── UserPortalCard/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceUserPortalCardProps.md │ │ │ │ │ ├── UserPortalNavigationBar/ │ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ │ ├── InterfaceLanguageSelectorProps.md │ │ │ │ │ │ │ │ ├── InterfaceUserDropdownProps.md │ │ │ │ │ │ │ │ └── InterfaceUserPortalNavbarProps.md │ │ │ │ │ │ │ └── variables/ │ │ │ │ │ │ │ ├── DEFAULT_ORGANIZATION_MODE_PROPS.md │ │ │ │ │ │ │ └── DEFAULT_USER_MODE_PROPS.md │ │ │ │ │ │ └── types/ │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── BrandingConfig.md │ │ │ │ │ │ ├── Language.md │ │ │ │ │ │ ├── NavigationLink.md │ │ │ │ │ │ ├── OrganizationData.md │ │ │ │ │ │ ├── OrganizationListQueryResponse.md │ │ │ │ │ │ ├── UserPortalNavbarState.md │ │ │ │ │ │ └── UserProfileMenuItem.md │ │ │ │ │ └── UserProfile/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── InterfaceUserProfileProps.md │ │ │ │ ├── Volunteer/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceCreateVolunteerGroupData.md │ │ │ │ │ ├── InterfaceEventEdge.md │ │ │ │ │ ├── InterfaceEventVolunteerInfo.md │ │ │ │ │ ├── InterfaceMappedEvent.md │ │ │ │ │ ├── InterfaceVolunteerData.md │ │ │ │ │ ├── InterfaceVolunteerGroupData.md │ │ │ │ │ ├── InterfaceVolunteerMembership.md │ │ │ │ │ └── InterfaceVolunteerStatus.md │ │ │ │ ├── docker/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── DockerMode.md │ │ │ │ ├── jsx/ │ │ │ │ │ └── namespaces/ │ │ │ │ │ └── JSX/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── Element.md │ │ │ │ │ ├── ElementAttributesProperty.md │ │ │ │ │ ├── ElementChildrenAttribute.md │ │ │ │ │ ├── ElementClass.md │ │ │ │ │ ├── IntrinsicAttributes.md │ │ │ │ │ ├── IntrinsicClassAttributes.md │ │ │ │ │ ├── IntrinsicElements.md │ │ │ │ │ └── LibraryManagedAttributes.md │ │ │ │ └── shared-components/ │ │ │ │ ├── ActionItems/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IActionItemCategoryInfo.md │ │ │ │ │ ├── IActionItemCategoryList.md │ │ │ │ │ ├── IActionItemInfo.md │ │ │ │ │ ├── IActionItemList.md │ │ │ │ │ ├── ICreateActionItemInput.md │ │ │ │ │ ├── ICreateActionItemVariables.md │ │ │ │ │ ├── IDeleteActionItemInput.md │ │ │ │ │ ├── IEventVolunteerGroup.md │ │ │ │ │ ├── IFormStateType.md │ │ │ │ │ ├── IItemModalProps.md │ │ │ │ │ ├── IMarkActionItemAsPendingInput.md │ │ │ │ │ ├── IUpdateActionForInstanceInput.md │ │ │ │ │ ├── IUpdateActionItemForInstanceInput.md │ │ │ │ │ ├── IUpdateActionItemForInstanceVariables.md │ │ │ │ │ └── IUpdateActionItemInput.md │ │ │ │ ├── ActionsCell/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceActionsCellProps.md │ │ │ │ ├── Auth/ │ │ │ │ │ ├── EmailField/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceEmailFieldProps.md │ │ │ │ │ ├── FormField/ │ │ │ │ │ │ └── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── InterfaceFormFieldProps.md │ │ │ │ │ └── PasswordField/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePasswordFieldProps.md │ │ │ │ ├── Avatar/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceAvatarProps.md │ │ │ │ ├── BaseModal/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── IBaseModalProps.md │ │ │ │ ├── BreadcrumbsComponent/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IBreadcrumbItem.md │ │ │ │ │ └── IBreadcrumbsComponentProps.md │ │ │ │ ├── BulkActionsBar/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceBulkActionsBarProps.md │ │ │ │ ├── CRUDModalTemplate/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── InterfaceCRUDModalTemplateProps.md │ │ │ │ │ │ ├── InterfaceCreateModalProps.md │ │ │ │ │ │ ├── InterfaceCrudModalBaseProps.md │ │ │ │ │ │ ├── InterfaceDeleteModalProps.md │ │ │ │ │ │ ├── InterfaceEditModalProps.md │ │ │ │ │ │ ├── InterfaceModalFormState.md │ │ │ │ │ │ ├── InterfaceRecurringEventProps.md │ │ │ │ │ │ ├── InterfaceUseFormModalReturn.md │ │ │ │ │ │ ├── InterfaceUseModalStateReturn.md │ │ │ │ │ │ ├── InterfaceUseMutationModalReturn.md │ │ │ │ │ │ └── InterfaceViewModalProps.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── ModalSize.md │ │ │ │ ├── CheckIn/ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceAttendeeCheckIn.md │ │ │ │ │ │ ├── InterfaceAttendeeQueryResponse.md │ │ │ │ │ │ ├── InterfaceModalProp.md │ │ │ │ │ │ ├── InterfaceTableCheckIn.md │ │ │ │ │ │ ├── InterfaceTableData.md │ │ │ │ │ │ └── InterfaceUser.md │ │ │ │ │ └── type/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── CheckIn.md │ │ │ │ │ ├── CheckInInput.md │ │ │ │ │ └── CheckInStatus.md │ │ │ │ ├── CheckInWrapper/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceCheckInWrapperProps.md │ │ │ │ ├── DataTable/ │ │ │ │ │ ├── column/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ └── IColumnDef.md │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── IBulkAction.md │ │ │ │ │ │ ├── IRowAction.md │ │ │ │ │ │ ├── IUseDataTableFilteringOptions.md │ │ │ │ │ │ ├── IUseDataTableSelectionOptions.md │ │ │ │ │ │ ├── IUseTableDataOptions.md │ │ │ │ │ │ └── IUseTableDataResult.md │ │ │ │ │ ├── pagination/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── InterfacePageInfo.md │ │ │ │ │ │ │ └── InterfacePaginationControlsProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ ├── Connection.md │ │ │ │ │ │ ├── Edge.md │ │ │ │ │ │ └── PageInfo.md │ │ │ │ │ ├── props/ │ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ │ ├── InterfaceBaseDataTableProps.md │ │ │ │ │ │ │ ├── InterfaceDataTableSkeletonProps.md │ │ │ │ │ │ │ ├── InterfaceDataTableTableProps.md │ │ │ │ │ │ │ ├── InterfaceLoadingMoreRowsProps.md │ │ │ │ │ │ │ ├── InterfaceSearchBarProps.md │ │ │ │ │ │ │ └── InterfaceTableLoaderProps.md │ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ │ └── InterfaceDataTableProps.md │ │ │ │ │ └── types/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── IFilterState.md │ │ │ │ │ │ ├── ISortChangeEvent.md │ │ │ │ │ │ ├── ISortState.md │ │ │ │ │ │ └── ITableState.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── Accessor.md │ │ │ │ │ ├── HeaderRender.md │ │ │ │ │ ├── Key.md │ │ │ │ │ └── SortDirection.md │ │ │ │ ├── DatePicker/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceDatePickerProps.md │ │ │ │ ├── DateRangePicker/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── IDateRangePreset.md │ │ │ │ │ │ ├── IDateRangeValue.md │ │ │ │ │ │ └── InterfaceDateRangePickerProps.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── DateOrNull.md │ │ │ │ ├── DropDownButton/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceDropDownButtonProps.md │ │ │ │ │ ├── InterfaceDropDownOption.md │ │ │ │ │ ├── InterfaceDropDownProps.md │ │ │ │ │ └── InterfaceSearchToggleProps.md │ │ │ │ ├── EmptyState/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceEmptyStateProps.md │ │ │ │ ├── ErrorBoundaryWrapper/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceErrorBoundaryWrapperProps.md │ │ │ │ │ ├── InterfaceErrorBoundaryWrapperState.md │ │ │ │ │ └── InterfaceErrorFallbackProps.md │ │ │ │ ├── EventListCard/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceEventListCard.md │ │ │ │ │ ├── InterfaceEventListCardModalsProps.md │ │ │ │ │ ├── InterfaceEventUpdateInput.md │ │ │ │ │ ├── InterfaceFormState.md │ │ │ │ │ └── InterfaceUpdateEventHandlerProps.md │ │ │ │ ├── FormFieldGroup/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceFormCheckFieldProps.md │ │ │ │ │ └── InterfaceFormSelectFieldProps.md │ │ │ │ ├── LoadingState/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── InterfaceLoadingStateProps.md │ │ │ │ ├── Navbar/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePageHeaderProps.md │ │ │ │ ├── NotificationToast/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── InterfaceNotificationToastHelpers.md │ │ │ │ │ │ ├── InterfaceNotificationToastI18nMessage.md │ │ │ │ │ │ └── InterfacePromiseMessages.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── NotificationToastContainerProps.md │ │ │ │ │ ├── NotificationToastMessage.md │ │ │ │ │ ├── NotificationToastNamespace.md │ │ │ │ │ └── PromiseFunction.md │ │ │ │ ├── PaginationList/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePaginationListProps.md │ │ │ │ ├── PeopleTabNavbar/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePeopleTabNavbarProps.md │ │ │ │ ├── PluginRouteRenderer/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePluginRouteRendererProps.md │ │ │ │ ├── PluginRoutes/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePluginRoutesProps.md │ │ │ │ ├── PostViewModal/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfacePostViewModalProps.md │ │ │ │ ├── ProfileAvatarDisplay/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceProfileAvatarDisplayProps.md │ │ │ │ ├── ProfileCard/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceProfileCardProps.md │ │ │ │ ├── ProfileDropdown/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceProfileDropdownProps.md │ │ │ │ ├── Recurrence/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceRecurrenceEndOptionsSectionProps.md │ │ │ │ │ ├── InterfaceRecurrenceFrequencySectionProps.md │ │ │ │ │ └── InterfaceRecurrenceMonthlySectionProps.md │ │ │ │ ├── RecurrenceDropdown/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceRecurrenceDropdownProps.md │ │ │ │ ├── SearchFilterBar/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── InterfaceDropdownConfig.md │ │ │ │ │ │ ├── InterfaceSearchFilterBarAdvanced.md │ │ │ │ │ │ ├── InterfaceSearchFilterBarSimple.md │ │ │ │ │ │ ├── InterfaceSearchFilterBarTranslations.md │ │ │ │ │ │ └── InterfaceSortingOption.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── InterfaceSearchFilterBarProps.md │ │ │ │ ├── SidebarOrgSection/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IOrganizationData.md │ │ │ │ │ └── ISidebarOrgSectionProps.md │ │ │ │ ├── SortingButton/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── InterfaceSortingButtonProps.md │ │ │ │ │ └── InterfaceSortingOption.md │ │ │ │ ├── StatusBadge/ │ │ │ │ │ └── interface/ │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── InterfaceStatusBadgeProps.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── SemanticVariant.md │ │ │ │ │ ├── StatusSize.md │ │ │ │ │ └── StatusVariant.md │ │ │ │ ├── TableLoader/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceTableLoaderProps.md │ │ │ │ ├── TimePicker/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceTimePickerProps.md │ │ │ │ ├── TruncatedText/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceTruncatedTextProps.md │ │ │ │ ├── User/ │ │ │ │ │ ├── interface/ │ │ │ │ │ │ └── interfaces/ │ │ │ │ │ │ ├── InterfaceUser.md │ │ │ │ │ │ └── InterfaceUserAttendee.md │ │ │ │ │ └── type/ │ │ │ │ │ └── type-aliases/ │ │ │ │ │ ├── Address.md │ │ │ │ │ ├── AppUserProfile.md │ │ │ │ │ ├── CreateUserFamilyInput.md │ │ │ │ │ ├── User.md │ │ │ │ │ ├── UserInput.md │ │ │ │ │ └── UserPhone.md │ │ │ │ ├── VisibilitySelector/ │ │ │ │ │ └── interface/ │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── InterfaceVisibilitySelectorProps.md │ │ │ │ └── VolunteerGroupViewModal/ │ │ │ │ └── interface/ │ │ │ │ └── interfaces/ │ │ │ │ └── InterfaceVolunteerGroupViewModalProps.md │ │ │ └── utils/ │ │ │ ├── MinioDownload/ │ │ │ │ └── functions/ │ │ │ │ └── useMinioDownload.md │ │ │ ├── MinioUpload/ │ │ │ │ └── functions/ │ │ │ │ └── useMinioUpload.md │ │ │ ├── SanitizeInput/ │ │ │ │ └── functions/ │ │ │ │ └── sanitizeInput.md │ │ │ ├── StaticMockLink/ │ │ │ │ ├── classes/ │ │ │ │ │ └── StaticMockLink.md │ │ │ │ ├── functions/ │ │ │ │ │ └── mockSingleLink.md │ │ │ │ └── interfaces/ │ │ │ │ └── InterfaceMockApolloLink.md │ │ │ ├── adminPluginInstaller/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── getInstalledAdminPlugins.md │ │ │ │ │ ├── installAdminPluginFromZip.md │ │ │ │ │ ├── removeAdminPlugin.md │ │ │ │ │ ├── validateAdminPluginStructure.md │ │ │ │ │ └── validateAdminPluginZip.md │ │ │ │ └── interfaces/ │ │ │ │ ├── IAdminPluginInstallationOptions.md │ │ │ │ ├── IAdminPluginInstallationResult.md │ │ │ │ ├── IAdminPluginManifest.md │ │ │ │ └── IAdminPluginZipStructure.md │ │ │ ├── autocompleteHelpers/ │ │ │ │ └── functions/ │ │ │ │ ├── areOptionsEqual.md │ │ │ │ └── getMemberLabel.md │ │ │ ├── chartToPdf/ │ │ │ │ └── functions/ │ │ │ │ ├── exportDemographicsToCSV.md │ │ │ │ ├── exportToCSV.md │ │ │ │ └── exportTrendsToCSV.md │ │ │ ├── currency/ │ │ │ │ └── variables/ │ │ │ │ ├── currencyOptions.md │ │ │ │ └── currencySymbols.md │ │ │ ├── dateFormatter/ │ │ │ │ └── functions/ │ │ │ │ └── formatDate.md │ │ │ ├── errorHandler/ │ │ │ │ └── functions/ │ │ │ │ └── errorHandler.md │ │ │ ├── fieldTypes/ │ │ │ │ └── variables/ │ │ │ │ └── default.md │ │ │ ├── fileValidation/ │ │ │ │ └── functions/ │ │ │ │ └── validateFile.md │ │ │ ├── filehash/ │ │ │ │ └── functions/ │ │ │ │ └── calculateFileHash.md │ │ │ ├── formEnumFields/ │ │ │ │ └── variables/ │ │ │ │ ├── countryOptions.md │ │ │ │ ├── educationGradeEnum.md │ │ │ │ ├── employmentStatusEnum.md │ │ │ │ ├── genderEnum.md │ │ │ │ └── maritalStatusEnum.md │ │ │ ├── getRefreshToken/ │ │ │ │ └── functions/ │ │ │ │ ├── handleTokenRefresh.md │ │ │ │ └── refreshToken.md │ │ │ ├── interfaces/ │ │ │ │ ├── enumerations/ │ │ │ │ │ ├── AdvertisementTypePg.md │ │ │ │ │ ├── Iso3166Alpha2CountryCode.md │ │ │ │ │ ├── UserEducationGrade.md │ │ │ │ │ ├── UserEmploymentStatus.md │ │ │ │ │ ├── UserMaritalStatus.md │ │ │ │ │ ├── UserNatalSex.md │ │ │ │ │ └── UserRole.md │ │ │ │ ├── interfaces/ │ │ │ │ │ ├── IEvent.md │ │ │ │ │ ├── InterfaceAddress.md │ │ │ │ │ ├── InterfaceAdvertisementAttachmentPg.md │ │ │ │ │ ├── InterfaceAdvertisementPg.md │ │ │ │ │ ├── InterfaceBaseEvent.md │ │ │ │ │ ├── InterfaceCampaignInfo.md │ │ │ │ │ ├── InterfaceCampaignInfoPG.md │ │ │ │ │ ├── InterfaceChatMessagePg.md │ │ │ │ │ ├── InterfaceChatPg.md │ │ │ │ │ ├── InterfaceComment.md │ │ │ │ │ ├── InterfaceCommentEdge.md │ │ │ │ │ ├── InterfaceCreateFund.md │ │ │ │ │ ├── InterfaceCreatePledge.md │ │ │ │ │ ├── InterfaceCreateVolunteerGroup.md │ │ │ │ │ ├── InterfaceCurrentUserTypePG.md │ │ │ │ │ ├── InterfaceCustomFieldData.md │ │ │ │ │ ├── InterfaceEventAttachmentPg.md │ │ │ │ │ ├── InterfaceEventVolunteerInfo.md │ │ │ │ │ ├── InterfaceFundInfo.md │ │ │ │ │ ├── InterfaceFundPg.md │ │ │ │ │ ├── InterfaceMapType.md │ │ │ │ │ ├── InterfaceMemberInfo.md │ │ │ │ │ ├── InterfaceMembersList.md │ │ │ │ │ ├── InterfaceOrgConnectionInfoType.md │ │ │ │ │ ├── InterfaceOrgConnectionInfoTypePG.md │ │ │ │ │ ├── InterfaceOrgInfoTypePG.md │ │ │ │ │ ├── InterfaceOrganizationAdvertisementsConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationAdvertisementsConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationBlockedUsersConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationBlockedUsersConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationEventsConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationEventsConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationFundsConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationFundsConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationMembersConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationMembersConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationPg.md │ │ │ │ │ ├── InterfaceOrganizationPinnedPostsConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationPinnedPostsConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationPostsConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationPostsConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationTagFoldersConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationTagFoldersConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationTagsConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationTagsConnectionPg.md │ │ │ │ │ ├── InterfaceOrganizationVenuesConnectionEdgePg.md │ │ │ │ │ ├── InterfaceOrganizationVenuesConnectionPg.md │ │ │ │ │ ├── InterfacePageInfoPg.md │ │ │ │ │ ├── InterfacePaginationArgs.md │ │ │ │ │ ├── InterfacePledgeInfo.md │ │ │ │ │ ├── InterfacePledgeInfoPG.md │ │ │ │ │ ├── InterfacePostCard.md │ │ │ │ │ ├── InterfacePostForm.md │ │ │ │ │ ├── InterfacePostPg.md │ │ │ │ │ ├── InterfaceQueryBlockPageMemberListItem.md │ │ │ │ │ ├── InterfaceQueryFundCampaignsPledges.md │ │ │ │ │ ├── InterfaceQueryMembershipRequestsListItem.md │ │ │ │ │ ├── InterfaceQueryOrganizationAdvertisementListItem.md │ │ │ │ │ ├── InterfaceQueryOrganizationEventListItem.md │ │ │ │ │ ├── InterfaceQueryOrganizationFundCampaigns.md │ │ │ │ │ ├── InterfaceQueryOrganizationListObject.md │ │ │ │ │ ├── InterfaceQueryOrganizationPostListItem.md │ │ │ │ │ ├── InterfaceQueryOrganizationUserTags.md │ │ │ │ │ ├── InterfaceQueryOrganizationUserTagsPG.md │ │ │ │ │ ├── InterfaceQueryOrganizationsListObject.md │ │ │ │ │ ├── InterfaceQueryUserListItem.md │ │ │ │ │ ├── InterfaceQueryUserListItemForAdmin.md │ │ │ │ │ ├── InterfaceQueryUserTagChildTags.md │ │ │ │ │ ├── InterfaceQueryUserTagsAssignedMembers.md │ │ │ │ │ ├── InterfaceQueryUserTagsMembersToAssignTo.md │ │ │ │ │ ├── InterfaceQueryVenueListItem.md │ │ │ │ │ ├── InterfaceTagData.md │ │ │ │ │ ├── InterfaceTagDataPG.md │ │ │ │ │ ├── InterfaceTagFolderPg.md │ │ │ │ │ ├── InterfaceTagPg.md │ │ │ │ │ ├── InterfaceUserCampaign.md │ │ │ │ │ ├── InterfaceUserEvents.md │ │ │ │ │ ├── InterfaceUserInfo.md │ │ │ │ │ ├── InterfaceUserInfoPG.md │ │ │ │ │ ├── InterfaceUserListQueryResponse.md │ │ │ │ │ ├── InterfaceUserPg.md │ │ │ │ │ ├── InterfaceUserType.md │ │ │ │ │ ├── InterfaceUserTypePG.md │ │ │ │ │ ├── InterfaceVenuePg.md │ │ │ │ │ ├── InterfaceVolunteerGroupInfo.md │ │ │ │ │ ├── InterfaceVolunteerMembership.md │ │ │ │ │ └── InterfaceVolunteerRank.md │ │ │ │ └── type-aliases/ │ │ │ │ ├── VoteState.md │ │ │ │ └── VoteType.md │ │ │ ├── languages/ │ │ │ │ └── variables/ │ │ │ │ ├── languageArray.md │ │ │ │ └── languages.md │ │ │ ├── linkValidator/ │ │ │ │ └── functions/ │ │ │ │ └── isValidLink.md │ │ │ ├── oauth/ │ │ │ │ └── oauthFlowHandler/ │ │ │ │ └── functions/ │ │ │ │ ├── handleOAuthLink.md │ │ │ │ └── handleOAuthLogin.md │ │ │ ├── organizationTagsUtils/ │ │ │ │ ├── interfaces/ │ │ │ │ │ ├── InterfaceOrganizationSubTagsQuery.md │ │ │ │ │ ├── InterfaceOrganizationTagsQuery.md │ │ │ │ │ ├── InterfaceOrganizationTagsQueryPG.md │ │ │ │ │ ├── InterfaceTagAssignedMembersQuery.md │ │ │ │ │ └── InterfaceTagUsersToAssignToQuery.md │ │ │ │ ├── type-aliases/ │ │ │ │ │ ├── SortedByType.md │ │ │ │ │ └── TagActionType.md │ │ │ │ └── variables/ │ │ │ │ ├── TAGS_QUERY_DATA_CHUNK_SIZE.md │ │ │ │ └── dataGridStyle.md │ │ │ ├── passwordValidator/ │ │ │ │ └── functions/ │ │ │ │ └── validatePassword.md │ │ │ ├── profileNavigation/ │ │ │ │ ├── functions/ │ │ │ │ │ └── resolveProfileNavigation.md │ │ │ │ ├── interfaces/ │ │ │ │ │ └── InterfaceProfileNavigationOptions.md │ │ │ │ └── type-aliases/ │ │ │ │ └── ProfilePortal.md │ │ │ ├── recaptcha/ │ │ │ │ └── functions/ │ │ │ │ ├── getRecaptchaToken.md │ │ │ │ └── loadRecaptchaScript.md │ │ │ ├── recurrenceUtils/ │ │ │ │ ├── recurrenceConstants/ │ │ │ │ │ └── variables/ │ │ │ │ │ ├── Days.md │ │ │ │ │ ├── dayNames.md │ │ │ │ │ ├── daysOptions.md │ │ │ │ │ ├── endsAfter.md │ │ │ │ │ ├── endsNever.md │ │ │ │ │ ├── endsOn.md │ │ │ │ │ ├── frequencies.md │ │ │ │ │ ├── monthNames.md │ │ │ │ │ └── recurrenceEndOptions.md │ │ │ │ ├── recurrenceTypes/ │ │ │ │ │ ├── enumerations/ │ │ │ │ │ │ ├── Frequency.md │ │ │ │ │ │ ├── RecurrenceEndOption.md │ │ │ │ │ │ └── WeekDays.md │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ └── InterfaceRecurrenceRule.md │ │ │ │ │ └── type-aliases/ │ │ │ │ │ └── RecurrenceEndOptionType.md │ │ │ │ └── recurrenceUtilityFunctions/ │ │ │ │ └── functions/ │ │ │ │ ├── areRecurrenceRulesEqual.md │ │ │ │ ├── createDefaultRecurrenceRule.md │ │ │ │ ├── formatRecurrenceForApi.md │ │ │ │ ├── getDayName.md │ │ │ │ ├── getEndTypeFromRecurrence.md │ │ │ │ ├── getMonthlyOptions.md │ │ │ │ ├── getOrdinalString.md │ │ │ │ ├── getOrdinalSuffix.md │ │ │ │ ├── getRecurrenceRuleText.md │ │ │ │ ├── getWeekOfMonth.md │ │ │ │ └── validateRecurrenceInput.md │ │ │ ├── sanitizeAvatar/ │ │ │ │ └── functions/ │ │ │ │ ├── sanitizeAvatarURL.md │ │ │ │ └── sanitizeAvatars.md │ │ │ ├── testConstants/ │ │ │ │ └── variables/ │ │ │ │ └── SIDEBAR_TEST_BG_COLOR.md │ │ │ ├── timezoneUtils/ │ │ │ │ ├── dateTimeConfig/ │ │ │ │ │ └── variables/ │ │ │ │ │ └── dateTimeFields.md │ │ │ │ └── dateTimeMiddleware/ │ │ │ │ └── variables/ │ │ │ │ ├── requestMiddleware.md │ │ │ │ └── responseMiddleware.md │ │ │ ├── tokenValues/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── getSpacingValue.md │ │ │ │ │ └── isSpacingToken.md │ │ │ │ ├── type-aliases/ │ │ │ │ │ └── SpacingToken.md │ │ │ │ └── variables/ │ │ │ │ └── spacingTokens.md │ │ │ ├── urlToFile/ │ │ │ │ └── functions/ │ │ │ │ └── urlToFile.md │ │ │ ├── useLocalstorage/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── clearAllItems.md │ │ │ │ │ ├── getItem.md │ │ │ │ │ ├── getStorageKey.md │ │ │ │ │ ├── removeItem.md │ │ │ │ │ ├── setItem.md │ │ │ │ │ └── useLocalStorage.md │ │ │ │ └── variables/ │ │ │ │ └── PREFIX.md │ │ │ ├── useSession/ │ │ │ │ └── functions/ │ │ │ │ └── default.md │ │ │ ├── userUpdateUtils/ │ │ │ │ └── functions/ │ │ │ │ ├── removeEmptyFields.md │ │ │ │ └── validateImageFile.md │ │ │ ├── validators/ │ │ │ │ └── authValidators/ │ │ │ │ ├── functions/ │ │ │ │ │ ├── getPasswordRequirements.md │ │ │ │ │ ├── validateEmail.md │ │ │ │ │ ├── validateName.md │ │ │ │ │ ├── validatePassword.md │ │ │ │ │ └── validatePasswordConfirmation.md │ │ │ │ └── variables/ │ │ │ │ └── PASSWORD_REGEX.md │ │ │ └── volunteerStatusMapper/ │ │ │ └── functions/ │ │ │ └── mapVolunteerStatusToVariant.md │ │ └── docs/ │ │ ├── developer-resources/ │ │ │ ├── actionitems-components.md │ │ │ ├── contributing.md │ │ │ ├── crud-modal-template.md │ │ │ ├── data-grid-wrapper.md │ │ │ ├── design-token-system.md │ │ │ ├── dropdown-button-api.md │ │ │ ├── e2e-testing.md │ │ │ ├── empty-state-migration.md │ │ │ ├── installation.md │ │ │ ├── introduction.md │ │ │ ├── linting.md │ │ │ ├── minio.md │ │ │ ├── operation.md │ │ │ ├── plugin-graphql.md │ │ │ ├── plugin.md │ │ │ ├── reusable-components.md │ │ │ ├── security.md │ │ │ ├── tables.md │ │ │ ├── testing.md │ │ │ └── troubleshooting.md │ │ ├── getting-started/ │ │ │ ├── configuration.md │ │ │ ├── installation.md │ │ │ ├── login.md │ │ │ ├── operation.md │ │ │ └── webserver.md │ │ ├── introduction.md │ │ └── plugins/ │ │ ├── implementing-plugins-example.md │ │ ├── implementing-plugins.md │ │ └── plugin-architecture.md │ ├── docusaurus.config.ts │ ├── package.json │ ├── sidebars.ts │ ├── src/ │ │ ├── components/ │ │ │ └── layout/ │ │ │ └── HeaderHero.tsx │ │ ├── css/ │ │ │ └── custom.css │ │ ├── pages/ │ │ │ └── index.tsx │ │ └── utils/ │ │ ├── ActionButton.tsx │ │ └── HomeCallToAction.tsx │ └── static/ │ ├── .nojekyll │ └── CNAME ├── eslint.config.js ├── index.html ├── knip.deps.json ├── knip.json ├── package.json ├── public/ │ ├── locales/ │ │ ├── en/ │ │ │ ├── common.json │ │ │ ├── errors.json │ │ │ └── translation.json │ │ ├── es/ │ │ │ ├── common.json │ │ │ ├── errors.json │ │ │ └── translation.json │ │ ├── fr/ │ │ │ ├── common.json │ │ │ ├── errors.json │ │ │ └── translation.json │ │ ├── hi/ │ │ │ ├── common.json │ │ │ ├── errors.json │ │ │ └── translation.json │ │ └── zh/ │ │ ├── common.json │ │ ├── errors.json │ │ └── translation.json │ ├── manifest.json │ └── robots.txt ├── pyproject.toml ├── schema.graphql ├── scripts/ │ ├── __fixtures__/ │ │ ├── correct.tsx │ │ ├── edge-cases.tsx │ │ ├── false-positives.tsx │ │ └── violations.tsx │ ├── __mocks__/ │ │ ├── @dicebear/ │ │ │ ├── collection.ts │ │ │ └── core.ts │ │ ├── @pdfme/ │ │ │ ├── generator.spec.ts │ │ │ └── generator.ts │ │ └── fileMock.js │ ├── check-css-imports.js │ ├── check-i18n.js │ ├── cypress/ │ │ └── run-with-coverage-report.cjs │ ├── delete-readmes.js │ ├── docker/ │ │ ├── resolve-docker-host.sh │ │ └── test/ │ │ └── resolve-docker-host.spec.sh │ ├── docs/ │ │ ├── fix-readme-links.js │ │ └── fix-repo-url.js │ ├── eslint/ │ │ ├── README.md │ │ ├── config/ │ │ │ ├── base.js │ │ │ ├── cypress.js │ │ │ ├── exemptions.js │ │ │ ├── prefer-crud-modal-template.js │ │ │ ├── special.js │ │ │ └── tests.js │ │ ├── index.js │ │ ├── index.spec.js │ │ ├── plugins/ │ │ │ └── eslint-plugin-vitest-isolation/ │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ ├── require-aftereach-cleanup.js │ │ │ └── require-aftereach-cleanup.spec.ts │ │ ├── rules/ │ │ │ ├── imports.js │ │ │ ├── modal-state.js │ │ │ ├── native-button.js │ │ │ ├── prefer-crud-modal-template.js │ │ │ ├── prefer-crud-modal-template.spec.js │ │ │ ├── rules.js │ │ │ ├── rules.spec.js │ │ │ ├── search-input.js │ │ │ └── security.js │ │ └── tsconfig.json │ ├── githooks/ │ │ ├── check-localstorage-usage.ts │ │ ├── check-mock-cleanup.sh │ │ ├── check-route-prefix.ts │ │ ├── check_pom.js │ │ └── update-toc.js │ ├── install/ │ │ ├── install.sh │ │ ├── install.spec.sh │ │ └── lib/ │ │ ├── common.sh │ │ ├── docker-detect.sh │ │ ├── docker-detect.spec.sh │ │ ├── node-install.sh │ │ ├── node-install.spec.sh │ │ ├── os-detect.sh │ │ └── os-detect.spec.sh │ ├── install.ps1 │ ├── install.sh │ ├── run-shard.js │ ├── start-server.js │ └── validate-tokens.ts ├── src/ │ ├── App.spec.tsx │ ├── App.tsx │ ├── Constant/ │ │ ├── common.spec.ts │ │ ├── common.ts │ │ ├── constant.spec.ts │ │ ├── constant.ts │ │ └── fileUpload.ts │ ├── GraphQl/ │ │ ├── Mutations/ │ │ │ ├── ActionItemCategoryMutations.ts │ │ │ ├── ActionItemMutations.ts │ │ │ ├── AdvertisementMutations.ts │ │ │ ├── AgendaFolderMutations.ts │ │ │ ├── AgendaItemMutations.ts │ │ │ ├── CampaignMutation.ts │ │ │ ├── CommentMutations.ts │ │ │ ├── EventAttendeeMutations.ts │ │ │ ├── EventMutations.ts │ │ │ ├── EventVolunteerMutation.ts │ │ │ ├── FundMutation.ts │ │ │ ├── OrganizationMutations.ts │ │ │ ├── PledgeMutation.ts │ │ │ ├── PluginMutations.ts │ │ │ ├── TagMutations.ts │ │ │ ├── VenueMutations.ts │ │ │ └── mutations.ts │ │ └── Queries/ │ │ ├── ActionItemCategoryQueries.ts │ │ ├── ActionItemQueries.ts │ │ ├── AdvertisementQueries.ts │ │ ├── AgendaCategoryQueries.ts │ │ ├── AgendaFolderQueries.ts │ │ ├── CommentQueries.ts │ │ ├── EventVolunteerQueries.ts │ │ ├── NotificationQueries.ts │ │ ├── OrganizationQueries.ts │ │ ├── PlugInQueries.ts │ │ ├── Queries.ts │ │ ├── VenueQueries.spec.ts │ │ ├── fundQueries.ts │ │ └── userTagQueries.ts │ ├── assets/ │ │ ├── css/ │ │ │ ├── app.css │ │ │ └── scrollStyles.css │ │ ├── scss/ │ │ │ ├── _colors.scss │ │ │ ├── _general.scss │ │ │ ├── _talawa.scss │ │ │ ├── _utilities.scss │ │ │ ├── _variables.scss │ │ │ ├── app.scss │ │ │ ├── components/ │ │ │ │ ├── _accordion.scss │ │ │ │ ├── _alert.scss │ │ │ │ ├── _badge.scss │ │ │ │ ├── _breadcrumb.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _card.scss │ │ │ │ ├── _carousel.scss │ │ │ │ ├── _close.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _list-group.scss │ │ │ │ ├── _modal.scss │ │ │ │ ├── _nav.scss │ │ │ │ ├── _navbar.scss │ │ │ │ ├── _offcanvas.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _placeholder.scss │ │ │ │ ├── _progress.scss │ │ │ │ └── _spinners.scss │ │ │ ├── content/ │ │ │ │ ├── _table.scss │ │ │ │ └── _typography.scss │ │ │ └── forms/ │ │ │ ├── _check-radios.scss │ │ │ ├── _floating-label.scss │ │ │ ├── _form-control.scss │ │ │ ├── _input-group.scss │ │ │ ├── _range.scss │ │ │ ├── _select.scss │ │ │ └── _validation.scss │ │ └── svgs/ │ │ └── social-icons/ │ │ └── index.tsx │ ├── components/ │ │ ├── AdminPortal/ │ │ │ ├── AddPeopleToTag/ │ │ │ │ ├── AddPeopleToTag.module.css │ │ │ │ ├── AddPeopleToTag.spec.tsx │ │ │ │ ├── AddPeopleToTag.tsx │ │ │ │ └── AddPeopleToTagsMocks.ts │ │ │ ├── Advertisements/ │ │ │ │ ├── Advertisements.spec.tsx │ │ │ │ ├── Advertisements.tsx │ │ │ │ ├── AdvertisementsMocks.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── AdvertisementEntry/ │ │ │ │ │ │ ├── AdvertisementEntry.module.css │ │ │ │ │ │ ├── AdvertisementEntry.spec.tsx │ │ │ │ │ │ └── AdvertisementEntry.tsx │ │ │ │ │ └── AdvertisementRegister/ │ │ │ │ │ ├── AdvertisementRegister.module.css │ │ │ │ │ ├── AdvertisementRegister.spec.tsx │ │ │ │ │ ├── AdvertisementRegister.tsx │ │ │ │ │ └── AdvertisementRegisterMocks.ts │ │ │ │ └── skeleton/ │ │ │ │ ├── AdvertisementSkeleton.spec.tsx │ │ │ │ └── AdvertisementSkeleton.tsx │ │ │ ├── AgendaFolder/ │ │ │ │ ├── AgendaFolderContainer.spec.tsx │ │ │ │ ├── AgendaFolderContainer.tsx │ │ │ │ ├── Create/ │ │ │ │ │ ├── AgendaFolderCreateModal.module.css │ │ │ │ │ ├── AgendaFolderCreateModal.spec.tsx │ │ │ │ │ └── AgendaFolderCreateModal.tsx │ │ │ │ ├── Delete/ │ │ │ │ │ ├── AgendaFolderDeleteModal.module.css │ │ │ │ │ ├── AgendaFolderDeleteModal.spec.tsx │ │ │ │ │ └── AgendaFolderDeleteModal.tsx │ │ │ │ ├── DragAndDrop/ │ │ │ │ │ ├── AgendaDragAndDrop.module.css │ │ │ │ │ ├── AgendaDragAndDrop.spec.tsx │ │ │ │ │ └── AgendaDragAndDrop.tsx │ │ │ │ └── Update/ │ │ │ │ ├── AgendaFolderUpdateModal.module.css │ │ │ │ ├── AgendaFolderUpdateModal.spec.tsx │ │ │ │ └── AgendaFolderUpdateModal.tsx │ │ │ ├── AgendaItems/ │ │ │ │ ├── Create/ │ │ │ │ │ ├── AgendaItemsCreateModal.module.css │ │ │ │ │ ├── AgendaItemsCreateModal.spec.tsx │ │ │ │ │ └── AgendaItemsCreateModal.tsx │ │ │ │ ├── Delete/ │ │ │ │ │ ├── AgendaItemsDeleteModal.module.css │ │ │ │ │ ├── AgendaItemsDeleteModal.spec.tsx │ │ │ │ │ └── AgendaItemsDeleteModal.tsx │ │ │ │ ├── Preview/ │ │ │ │ │ ├── AgendaItemsPreviewModal.module.css │ │ │ │ │ ├── AgendaItemsPreviewModal.spec.tsx │ │ │ │ │ └── AgendaItemsPreviewModal.tsx │ │ │ │ └── Update/ │ │ │ │ ├── AgendaItemsUpdateModal.module.css │ │ │ │ ├── AgendaItemsUpdateModal.spec.tsx │ │ │ │ └── AgendaItemsUpdateModal.tsx │ │ │ ├── ApplyToSelector/ │ │ │ │ ├── ApplyToSelector.spec.tsx │ │ │ │ └── ApplyToSelector.tsx │ │ │ ├── AssignmentTypeSelector/ │ │ │ │ ├── AssignmentTypeSelector.spec.tsx │ │ │ │ └── AssignmentTypeSelector.tsx │ │ │ ├── ContriStats/ │ │ │ │ ├── ContriStats.spec.tsx │ │ │ │ └── ContriStats.tsx │ │ │ ├── EventManagement/ │ │ │ │ ├── Dashboard/ │ │ │ │ │ ├── EventDashboard.mocks.ts │ │ │ │ │ ├── EventDashboard.module.css │ │ │ │ │ ├── EventDashboard.spec.tsx │ │ │ │ │ └── EventDashboard.tsx │ │ │ │ ├── EventActionItems/ │ │ │ │ │ ├── EventActionItems.module.css │ │ │ │ │ ├── EventActionItems.spec.tsx │ │ │ │ │ └── EventActionItems.tsx │ │ │ │ ├── EventAgenda/ │ │ │ │ │ ├── EventAgenda.module.css │ │ │ │ │ ├── EventAgenda.spec.tsx │ │ │ │ │ └── EventAgenda.tsx │ │ │ │ ├── EventAttendance/ │ │ │ │ │ ├── Attendance/ │ │ │ │ │ │ ├── EventAttendance.module.css │ │ │ │ │ │ ├── EventAttendance.spec.tsx │ │ │ │ │ │ └── EventAttendance.tsx │ │ │ │ │ ├── AttendanceList/ │ │ │ │ │ │ ├── AttendedEventList.spec.tsx │ │ │ │ │ │ └── AttendedEventList.tsx │ │ │ │ │ ├── EventAttendanceMocks.ts │ │ │ │ │ └── Statistics/ │ │ │ │ │ ├── EventStatistics.module.css │ │ │ │ │ ├── EventStatistics.spec.tsx │ │ │ │ │ └── EventStatistics.tsx │ │ │ │ └── EventRegistrant/ │ │ │ │ ├── EventRegistrants.spec.tsx │ │ │ │ ├── EventRegistrants.tsx │ │ │ │ └── Registrations.mocks.ts │ │ │ ├── EventRegistrantsModal/ │ │ │ │ ├── EventRegistrants.module.css │ │ │ │ ├── EventRegistrantsWrapper.module.css │ │ │ │ ├── EventRegistrantsWrapper.spec.tsx │ │ │ │ ├── EventRegistrantsWrapper.tsx │ │ │ │ └── Modal/ │ │ │ │ ├── AddOnSpot/ │ │ │ │ │ ├── AddOnSpotAttendee.module.css │ │ │ │ │ ├── AddOnSpotAttendee.spec.tsx │ │ │ │ │ └── AddOnSpotAttendee.tsx │ │ │ │ ├── EventRegistrantsModal.module.css │ │ │ │ ├── EventRegistrantsModal.spec.tsx │ │ │ │ ├── EventRegistrantsModal.tsx │ │ │ │ └── InviteByEmail/ │ │ │ │ ├── InviteByEmail.module.css │ │ │ │ ├── InviteByEmailModal.module.css │ │ │ │ ├── InviteByEmailModal.spec.tsx │ │ │ │ └── InviteByEmailModal.tsx │ │ │ ├── LeftDrawer/ │ │ │ │ ├── LeftDrawer.module.css │ │ │ │ ├── LeftDrawer.spec.tsx │ │ │ │ └── LeftDrawer.tsx │ │ │ ├── OrgContriCards/ │ │ │ │ ├── OrgContriCards.spec.tsx │ │ │ │ └── OrgContriCards.tsx │ │ │ ├── OrgPeopleListCard/ │ │ │ │ ├── OrgPeopleListCard.module.css │ │ │ │ ├── OrgPeopleListCard.spec.tsx │ │ │ │ └── OrgPeopleListCard.tsx │ │ │ ├── OrgSettings/ │ │ │ │ ├── ActionItemCategories/ │ │ │ │ │ ├── Modal/ │ │ │ │ │ │ ├── ActionItemCategoryModal.module.css │ │ │ │ │ │ ├── ActionItemCategoryModal.spec.tsx │ │ │ │ │ │ ├── ActionItemCategoryModal.tsx │ │ │ │ │ │ ├── ActionItemCategoryViewModal.spec.tsx │ │ │ │ │ │ └── ActionItemCategoryViewModal.tsx │ │ │ │ │ ├── OrgActionItemCategories.module.css │ │ │ │ │ ├── OrgActionItemCategories.spec.tsx │ │ │ │ │ ├── OrgActionItemCategories.tsx │ │ │ │ │ └── OrgActionItemCategoryMocks.ts │ │ │ │ ├── AgendaItemCategories/ │ │ │ │ │ └── OrganizationAgendaCategory.module.css │ │ │ │ └── General/ │ │ │ │ ├── DeleteOrg/ │ │ │ │ │ ├── DeleteOrg.module.css │ │ │ │ │ ├── DeleteOrg.spec.tsx │ │ │ │ │ └── DeleteOrg.tsx │ │ │ │ ├── GeneralSettings.spec.tsx │ │ │ │ ├── GeneralSettings.tsx │ │ │ │ └── OrgUpdate/ │ │ │ │ ├── OrgUpdate.module.css │ │ │ │ ├── OrgUpdate.spec.tsx │ │ │ │ ├── OrgUpdate.tsx │ │ │ │ └── OrgUpdateMocks.ts │ │ │ ├── OrganizationDashCards/ │ │ │ │ ├── CardItem/ │ │ │ │ │ ├── CardItem.module.css │ │ │ │ │ ├── CardItem.spec.tsx │ │ │ │ │ ├── CardItem.tsx │ │ │ │ │ └── Loader/ │ │ │ │ │ ├── CardItemLoading.module.css │ │ │ │ │ ├── CardItemLoading.spec.tsx │ │ │ │ │ └── CardItemLoading.tsx │ │ │ │ ├── DashboardCard.module.css │ │ │ │ ├── DashboardCard.spec.tsx │ │ │ │ ├── DashboardCard.tsx │ │ │ │ └── Loader/ │ │ │ │ ├── DashboardCardLoading.module.css │ │ │ │ ├── DashboardCardLoading.spec.tsx │ │ │ │ └── DashboardCardLoading.tsx │ │ │ ├── OrganizationScreen/ │ │ │ │ ├── OrganizationScreen.module.css │ │ │ │ ├── OrganizationScreen.spec.tsx │ │ │ │ └── OrganizationScreen.tsx │ │ │ ├── README.md │ │ │ ├── SecuredRoute/ │ │ │ │ ├── SecuredRoute.tsx │ │ │ │ └── securedRoute.spec.tsx │ │ │ ├── SuperAdminScreen/ │ │ │ │ ├── SuperAdminScreen.module.css │ │ │ │ ├── SuperAdminScreen.spec.tsx │ │ │ │ └── SuperAdminScreen.tsx │ │ │ ├── TagActions/ │ │ │ │ ├── Node/ │ │ │ │ │ ├── TagNode.module.css │ │ │ │ │ ├── TagNode.spec.tsx │ │ │ │ │ ├── TagNode.tsx │ │ │ │ │ └── TagNodeMocks.ts │ │ │ │ ├── TagAction.module.css │ │ │ │ ├── TagActions.module.css │ │ │ │ ├── TagActions.spec.tsx │ │ │ │ ├── TagActions.tsx │ │ │ │ └── TagActionsMocks.ts │ │ │ ├── UpdateSession/ │ │ │ │ ├── UpdateSession.module.css │ │ │ │ ├── UpdateSession.spec.tsx │ │ │ │ └── UpdateSession.tsx │ │ │ ├── UserTableRow/ │ │ │ │ ├── UserTableRow.module.css │ │ │ │ ├── UserTableRow.spec.tsx │ │ │ │ └── UserTableRow.tsx │ │ │ └── Venues/ │ │ │ ├── Modal/ │ │ │ │ ├── VenueModal.module.css │ │ │ │ ├── VenueModal.spec.tsx │ │ │ │ └── VenueModal.tsx │ │ │ ├── VenueCard.module.css │ │ │ ├── VenueCard.spec.tsx │ │ │ ├── VenueCard.tsx │ │ │ └── VenueCardMocks.ts │ │ ├── Auth/ │ │ │ ├── LoginForm/ │ │ │ │ ├── LoginForm.module.css │ │ │ │ ├── LoginForm.spec.tsx │ │ │ │ └── LoginForm.tsx │ │ │ ├── OAuthButton/ │ │ │ │ ├── OAuthButton.module.css │ │ │ │ ├── OAuthButton.spec.tsx │ │ │ │ └── OAuthButton.tsx │ │ │ ├── OrgSelector/ │ │ │ │ ├── OrgSelector.spec.tsx │ │ │ │ └── OrgSelector.tsx │ │ │ ├── PasswordStrengthIndicator/ │ │ │ │ ├── PasswordStrengthIndicator.spec.tsx │ │ │ │ ├── PasswordStrengthIndicator.tsx │ │ │ │ └── RequirementRow.tsx │ │ │ ├── RegistrationForm/ │ │ │ │ ├── RegistrationForm.module.css │ │ │ │ ├── RegistrationForm.spec.tsx │ │ │ │ └── RegistrationForm.tsx │ │ │ └── theme/ │ │ │ ├── oauthBrand.module.css │ │ │ ├── oauthBrand.spec.tsx │ │ │ └── oauthBrand.tsx │ │ ├── ChangeLanguageDropdown/ │ │ │ ├── ChangeLanguageDropDown.module.css │ │ │ ├── ChangeLanguageDropDown.spec.tsx │ │ │ └── ChangeLanguageDropDown.tsx │ │ ├── CollapsibleDropdown/ │ │ │ ├── CollapsibleDropdown.module.css │ │ │ ├── CollapsibleDropdown.spec.tsx │ │ │ └── CollapsibleDropdown.tsx │ │ ├── CursorPaginationManager/ │ │ │ ├── CursorPaginationManager.module.css │ │ │ ├── CursorPaginationManager.spec.tsx │ │ │ └── CursorPaginationManager.tsx │ │ ├── EventCalender/ │ │ │ ├── EventCalenderMocks.ts │ │ │ ├── Header/ │ │ │ │ ├── EventHeader.module.css │ │ │ │ ├── EventHeader.spec.tsx │ │ │ │ └── EventHeader.tsx │ │ │ ├── Monthly/ │ │ │ │ ├── EventCalendar.spec.tsx │ │ │ │ ├── EventCalender.module.css │ │ │ │ └── EventCalender.tsx │ │ │ └── Yearly/ │ │ │ ├── YearlyEventCalender.module.css │ │ │ ├── YearlyEventCalender.spec.tsx │ │ │ └── YearlyEventCalender.tsx │ │ ├── EventDashboardScreen/ │ │ │ ├── EventDashboardScreen.module.css │ │ │ ├── EventDashboardScreen.spec.tsx │ │ │ ├── EventDashboardScreen.tsx │ │ │ └── EventDashboardScreenMocks.ts │ │ ├── EventStats/ │ │ │ ├── EventStatsMocks.ts │ │ │ ├── Statistics/ │ │ │ │ ├── AverageRating/ │ │ │ │ │ ├── AverageRating.module.css │ │ │ │ │ ├── AverageRating.spec.tsx │ │ │ │ │ └── AverageRating.tsx │ │ │ │ ├── EventStats.module.css │ │ │ │ ├── EventStats.spec.tsx │ │ │ │ ├── EventStats.tsx │ │ │ │ ├── Feedback/ │ │ │ │ │ ├── Feedback.module.css │ │ │ │ │ ├── Feedback.spec.tsx │ │ │ │ │ └── Feedback.tsx │ │ │ │ └── Review/ │ │ │ │ ├── Review.module.css │ │ │ │ ├── Review.spec.tsx │ │ │ │ └── Review.tsx │ │ │ └── css/ │ │ │ ├── EventStats.module.css │ │ │ └── Loader.module.css │ │ ├── HolidayCards/ │ │ │ ├── HolidayCard.module.css │ │ │ ├── HolidayCard.spec.tsx │ │ │ └── HolidayCard.tsx │ │ ├── IconComponent/ │ │ │ ├── IconComponent.spec.tsx │ │ │ └── IconComponent.tsx │ │ ├── LeftDrawerOrg/ │ │ │ ├── LeftDrawerOrg.module.css │ │ │ ├── LeftDrawerOrg.spec.tsx │ │ │ └── LeftDrawerOrg.tsx │ │ ├── NotificationIcon/ │ │ │ ├── NotificationIcon.module.css │ │ │ ├── NotificationIcon.spec.tsx │ │ │ └── NotificationIcon.tsx │ │ ├── NotificationToast/ │ │ │ └── NotificationToast.tsx │ │ ├── Pagination/ │ │ │ └── Navigator/ │ │ │ ├── Pagination.module.css │ │ │ ├── Pagination.spec.tsx │ │ │ └── Pagination.tsx │ │ ├── ProfileCard/ │ │ │ ├── ProfileCard.module.css │ │ │ ├── ProfileCard.spec.tsx │ │ │ └── ProfileCard.tsx │ │ ├── ProfileDropdown/ │ │ │ ├── ProfileDropdown.module.css │ │ │ ├── ProfileDropdown.spec.tsx │ │ │ └── ProfileDropdown.tsx │ │ ├── SignOut/ │ │ │ ├── SignOut.spec.tsx │ │ │ └── SignOut.tsx │ │ ├── UserDetails/ │ │ │ ├── UserEvents.module.css │ │ │ ├── UserEvents.spec.tsx │ │ │ ├── UserEvents.tsx │ │ │ ├── UserOrganizations.module.css │ │ │ ├── UserOrganizations.spec.tsx │ │ │ ├── UserOrganizations.tsx │ │ │ ├── UserTags.module.css │ │ │ ├── UserTags.spec.tsx │ │ │ └── UserTags.tsx │ │ ├── UserPortal/ │ │ │ ├── ChatRoom/ │ │ │ │ ├── ChatHeader.module.css │ │ │ │ ├── ChatHeader.tsx │ │ │ │ ├── ChatRoom.module.css │ │ │ │ ├── ChatRoom.spec.tsx │ │ │ │ ├── ChatRoom.tsx │ │ │ │ ├── EmptyChatState.module.css │ │ │ │ ├── EmptyChatState.spec.tsx │ │ │ │ ├── EmptyChatState.tsx │ │ │ │ ├── MessageImage.module.css │ │ │ │ ├── MessageImage.tsx │ │ │ │ ├── MessageInput.module.css │ │ │ │ ├── MessageInput.tsx │ │ │ │ ├── MessageItem.module.css │ │ │ │ ├── MessageItem.tsx │ │ │ │ └── types.ts │ │ │ ├── CommentCard/ │ │ │ │ ├── CommentCard.module.css │ │ │ │ ├── CommentCard.spec.tsx │ │ │ │ └── CommentCard.tsx │ │ │ ├── ContactCard/ │ │ │ │ ├── ContactCard.module.css │ │ │ │ ├── ContactCard.spec.tsx │ │ │ │ └── ContactCard.tsx │ │ │ ├── CreateDirectChat/ │ │ │ │ ├── CreateDirectChat.module.css │ │ │ │ ├── CreateDirectChat.spec.tsx │ │ │ │ └── CreateDirectChat.tsx │ │ │ ├── CreateGroupChat/ │ │ │ │ ├── CreateGroupChat.module.css │ │ │ │ ├── CreateGroupChat.spec.tsx │ │ │ │ └── CreateGroupChat.tsx │ │ │ ├── DonationCard/ │ │ │ │ ├── DonationCard.module.css │ │ │ │ ├── DonationCard.spec.tsx │ │ │ │ └── DonationCard.tsx │ │ │ ├── EventCard/ │ │ │ │ ├── EventCard.module.css │ │ │ │ ├── EventCard.spec.tsx │ │ │ │ └── EventCard.tsx │ │ │ ├── GroupChatDetails/ │ │ │ │ ├── GroupChatDetails.module.css │ │ │ │ ├── GroupChatDetails.spec.tsx │ │ │ │ ├── GroupChatDetails.tsx │ │ │ │ └── GroupChatDetailsMocks.tsx │ │ │ ├── OrganizationSidebar/ │ │ │ │ ├── OrganizationSidebar.module.css │ │ │ │ ├── OrganizationSidebar.spec.tsx │ │ │ │ └── OrganizationSidebar.tsx │ │ │ ├── SecuredRouteForUser/ │ │ │ │ ├── SecuredRouteForUser.spec.tsx │ │ │ │ └── SecuredRouteForUser.tsx │ │ │ ├── UserNavbar/ │ │ │ │ ├── UserNavbar.module.css │ │ │ │ ├── UserNavbar.spec.tsx │ │ │ │ └── UserNavbar.tsx │ │ │ ├── UserPortalCard/ │ │ │ │ ├── UserPortalCard.module.css │ │ │ │ ├── UserPortalCard.spec.tsx │ │ │ │ └── UserPortalCard.tsx │ │ │ ├── UserPortalNavigationBar/ │ │ │ │ ├── LanguageSelector.module.css │ │ │ │ ├── LanguageSelector.tsx │ │ │ │ ├── UserDropdown.tsx │ │ │ │ ├── UserPortalNavigationBar.module.css │ │ │ │ ├── UserPortalNavigationBar.spec.tsx │ │ │ │ ├── UserPortalNavigationBar.tsx │ │ │ │ └── UserPortalNavigationBarMocks.ts │ │ │ ├── UserProfileSettings/ │ │ │ │ ├── UserProfile.module.css │ │ │ │ ├── UserProfile.spec.tsx │ │ │ │ └── UserProfile.tsx │ │ │ ├── UserSidebar/ │ │ │ │ ├── UserSidebar.module.css │ │ │ │ ├── UserSidebar.spec.tsx │ │ │ │ └── UserSidebar.tsx │ │ │ └── UserSidebarOrg/ │ │ │ ├── UserSidebarOrg.module.css │ │ │ ├── UserSidebarOrg.spec.tsx │ │ │ └── UserSidebarOrg.tsx │ │ └── UsersTableItem/ │ │ ├── UserTableItem.spec.tsx │ │ ├── UserTableItemMocks.ts │ │ ├── UsersTableItem.module.css │ │ └── UsersTableItem.tsx │ ├── config/ │ │ └── oauthProviders.ts │ ├── constants.ts │ ├── hooks/ │ │ ├── auth/ │ │ │ ├── useAuthNotifications.spec.ts │ │ │ ├── useAuthNotifications.ts │ │ │ ├── useLogin.spec.ts │ │ │ ├── useLogin.ts │ │ │ ├── useRegistration.spec.ts │ │ │ └── useRegistration.ts │ │ ├── useAvatarUpload.spec.ts │ │ ├── useAvatarUpload.ts │ │ ├── useFieldValidation.spec.ts │ │ ├── useFieldValidation.ts │ │ ├── usePasswordVisibility.spec.ts │ │ ├── usePasswordVisibility.ts │ │ ├── useUserProfile.spec.ts │ │ └── useUserProfile.ts │ ├── index.spec.tsx │ ├── index.tsx │ ├── install/ │ │ ├── index.spec.ts │ │ ├── index.ts │ │ ├── os/ │ │ │ ├── detector.spec.ts │ │ │ ├── detector.ts │ │ │ ├── linux.spec.ts │ │ │ ├── linux.ts │ │ │ ├── macos.spec.ts │ │ │ ├── macos.ts │ │ │ ├── windows.spec.ts │ │ │ └── windows.ts │ │ ├── packages/ │ │ │ ├── index.spec.ts │ │ │ └── index.ts │ │ ├── types.spec.ts │ │ ├── types.ts │ │ └── utils/ │ │ ├── checker.spec.ts │ │ ├── checker.ts │ │ ├── checkers/ │ │ │ ├── docker.ts │ │ │ ├── index.ts │ │ │ └── typescript.ts │ │ ├── exec.spec.ts │ │ ├── exec.ts │ │ ├── logger.spec.ts │ │ └── logger.t
Showing preview only (225K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2373 symbols across 632 files)
FILE: .github/workflows/check-tsdoc.js
function findTsxFiles (line 14) | async function findTsxFiles(dir) {
function containsTsDocComment (line 39) | async function containsTsDocComment(filePath) {
function run (line 50) | async function run() {
FILE: .github/workflows/scripts/check-minio-compliance.cjs
constant LEGACY_EXCEPTIONS (line 28) | const LEGACY_EXCEPTIONS = new Set([
constant FORBIDDEN_IMPORT_PATTERNS (line 40) | const FORBIDDEN_IMPORT_PATTERNS = [
constant FORBIDDEN_IDENTIFIERS (line 49) | const FORBIDDEN_IDENTIFIERS = [/\bconvertToBase64\b/, /\bcreateUploadLin...
constant ROOT_DIR (line 51) | const ROOT_DIR = path.join(process.cwd(), 'src');
function scanFile (line 54) | function scanFile(filePath) {
constant EXCLUDED_DIRS (line 93) | const EXCLUDED_DIRS = new Set([
function walk (line 102) | function walk(dir) {
FILE: .github/workflows/scripts/compare_translations.py
function compare_translations (line 68) | def compare_translations(
function flatten_json (line 175) | def flatten_json(nested_json, parent_key=""):
function load_translation (line 201) | def load_translation(filepath):
function check_translations (line 222) | def check_translations(directory):
function main (line 270) | def main():
FILE: .github/workflows/scripts/css_check.py
function check_embedded_styles (line 25) | def check_embedded_styles(
function process_typescript_file (line 193) | def process_typescript_file(
function check_files (line 217) | def check_files(
function validate_directories_input (line 279) | def validate_directories_input(input_directories: list[str]) -> list[str]:
function format_violation_output (line 305) | def format_violation_output(violations: list[DetailedViolation]) -> str:
function main (line 362) | def main():
FILE: .github/workflows/scripts/test/test_css_check.py
class TestCheckEmbeddedStyles (line 29) | class TestCheckEmbeddedStyles(unittest.TestCase):
method test_detects_hex_color (line 32) | def test_detects_hex_color(self):
method test_detects_multiple_hex_colors (line 40) | def test_detects_multiple_hex_colors(self):
method test_detects_rgb_color (line 51) | def test_detects_rgb_color(self):
method test_detects_rgba_color (line 58) | def test_detects_rgba_color(self):
method test_detects_hsl_color (line 65) | def test_detects_hsl_color(self):
method test_detects_inline_style_object (line 72) | def test_detects_inline_style_object(self):
method test_detects_inline_style_string_double_quotes (line 79) | def test_detects_inline_style_string_double_quotes(self):
method test_detects_inline_style_string_single_quotes (line 86) | def test_detects_inline_style_string_single_quotes(self):
method test_detects_camelcase_font_size (line 93) | def test_detects_camelcase_font_size(self):
method test_detects_camelcase_margin_top (line 102) | def test_detects_camelcase_margin_top(self):
method test_detects_camelcase_padding_left (line 111) | def test_detects_camelcase_padding_left(self):
method test_detects_pixel_value (line 120) | def test_detects_pixel_value(self):
method test_detects_rem_value (line 127) | def test_detects_rem_value(self):
method test_ignores_single_line_comment_with_hex (line 134) | def test_ignores_single_line_comment_with_hex(self):
method test_ignores_block_comment_with_styles (line 140) | def test_ignores_block_comment_with_styles(self):
method test_ignores_multiline_block_comment (line 146) | def test_ignores_multiline_block_comment(self):
method test_handles_block_comment_spanning_lines (line 155) | def test_handles_block_comment_spanning_lines(self):
method test_ignores_import_statements (line 165) | def test_ignores_import_statements(self):
method test_ignores_dynamic_import (line 171) | def test_ignores_dynamic_import(self):
method test_ignores_hex_in_url (line 177) | def test_ignores_hex_in_url(self):
method test_ignores_hex_in_href (line 183) | def test_ignores_hex_in_href(self):
method test_ignores_hex_in_src (line 189) | def test_ignores_hex_in_src(self):
method test_whitespace_only_content (line 195) | def test_whitespace_only_content(self):
method test_camelcase_requires_style_context (line 201) | def test_camelcase_requires_style_context(self):
method test_camelcase_in_object_with_brace (line 213) | def test_camelcase_in_object_with_brace(self):
method test_pixel_value_without_style_context_ignored (line 222) | def test_pixel_value_without_style_context_ignored(self):
method test_pixel_value_with_width_keyword (line 232) | def test_pixel_value_with_width_keyword(self):
method test_multiple_violation_types_in_one_line (line 238) | def test_multiple_violation_types_in_one_line(self):
class TestProcessTypescriptFile (line 250) | class TestProcessTypescriptFile(unittest.TestCase):
method setUp (line 253) | def setUp(self):
method tearDown (line 257) | def tearDown(self):
method test_processes_valid_file (line 261) | def test_processes_valid_file(self):
method test_processes_empty_file (line 272) | def test_processes_empty_file(self):
method test_processes_file_with_no_violations (line 282) | def test_processes_file_with_no_violations(self):
method test_handles_file_not_found (line 292) | def test_handles_file_not_found(self):
method test_handles_unicode_decode_error (line 303) | def test_handles_unicode_decode_error(self):
method test_appends_to_existing_violations_list (line 318) | def test_appends_to_existing_violations_list(self):
class TestCheckFiles (line 338) | class TestCheckFiles(unittest.TestCase):
method setUp (line 341) | def setUp(self):
method tearDown (line 347) | def tearDown(self):
method test_scans_directory_for_tsx_files (line 351) | def test_scans_directory_for_tsx_files(self):
method test_scans_directory_for_ts_files (line 360) | def test_scans_directory_for_ts_files(self):
method test_scans_nested_directories (line 369) | def test_scans_nested_directories(self):
method test_excludes_test_files_with_test_in_name (line 378) | def test_excludes_test_files_with_test_in_name(self):
method test_excludes_tests_directory (line 387) | def test_excludes_tests_directory(self):
method test_excludes_test_directory (line 398) | def test_excludes_test_directory(self):
method test_processes_explicit_file_list (line 409) | def test_processes_explicit_file_list(self):
method test_excludes_specific_files (line 418) | def test_excludes_specific_files(self):
method test_excludes_directories (line 432) | def test_excludes_directories(self):
method test_ignores_non_typescript_files (line 449) | def test_ignores_non_typescript_files(self):
method test_combines_directory_and_file_results (line 462) | def test_combines_directory_and_file_results(self):
method test_returns_css_check_result (line 475) | def test_returns_css_check_result(self):
method test_handles_absolute_paths (line 481) | def test_handles_absolute_paths(self):
class TestValidateDirectoriesInput (line 492) | class TestValidateDirectoriesInput(unittest.TestCase):
method setUp (line 495) | def setUp(self):
method tearDown (line 502) | def tearDown(self):
method test_validates_existing_directory (line 506) | def test_validates_existing_directory(self):
class TestFormatViolationOutput (line 513) | class TestFormatViolationOutput(unittest.TestCase):
method test_empty_violations_returns_empty_string (line 516) | def test_empty_violations_returns_empty_string(self):
method test_single_violation_output_format (line 521) | def test_single_violation_output_format(self):
method test_multiple_violations_same_file (line 541) | def test_multiple_violations_same_file(self):
method test_multiple_violations_different_files (line 566) | def test_multiple_violations_different_files(self):
class TestMain (line 592) | class TestMain(unittest.TestCase):
method setUp (line 595) | def setUp(self):
method tearDown (line 599) | def tearDown(self):
method test_exits_with_code_0_when_no_violations (line 603) | def test_exits_with_code_0_when_no_violations(self):
method test_exits_with_code_1_when_violations_found (line 620) | def test_exits_with_code_1_when_violations_found(self):
method test_requires_directories_or_files_argument (line 636) | def test_requires_directories_or_files_argument(self):
method test_accepts_files_argument (line 646) | def test_accepts_files_argument(self):
method test_handles_invalid_directory_input (line 660) | def test_handles_invalid_directory_input(self):
method test_prints_formatted_output (line 672) | def test_prints_formatted_output(self):
class TestNamedTuples (line 690) | class TestNamedTuples(unittest.TestCase):
method test_detailed_violation_creation (line 693) | def test_detailed_violation_creation(self):
method test_css_check_result_creation (line 709) | def test_css_check_result_creation(self):
FILE: .github/workflows/scripts/test/test_translation_check.py
class TestTranslationCheck (line 23) | class TestTranslationCheck(unittest.TestCase):
method setUp (line 26) | def setUp(self):
method tearDown (line 38) | def tearDown(self):
method test_get_keys_recursion (line 42) | def test_get_keys_recursion(self):
method test_load_locales_success (line 49) | def test_load_locales_success(self):
method test_load_locales_malformed (line 54) | def test_load_locales_malformed(self):
method test_load_locales_not_found (line 60) | def test_load_locales_not_found(self):
method test_find_tags_string (line 65) | def test_find_tags_string(self):
method test_find_tags_path (line 72) | def test_find_tags_path(self):
method test_find_tags_namespace (line 81) | def test_find_tags_namespace(self):
method test_find_tags_io_error (line 88) | def test_find_tags_io_error(self):
method test_find_tags_dynamic_ignored (line 93) | def test_find_tags_dynamic_ignored(self):
method test_get_files_directory (line 100) | def test_get_files_directory(self):
method test_get_files_exclude_spec (line 112) | def test_get_files_exclude_spec(self):
method test_get_files_explicit (line 124) | def test_get_files_explicit(self):
method test_main_success_flow (line 133) | def test_main_success_flow(self):
method test_main_missing_flow (line 149) | def test_main_missing_flow(self):
method test_main_error_flow (line 168) | def test_main_error_flow(self):
method test_entry_point_subprocess (line 178) | def test_entry_point_subprocess(self):
FILE: .github/workflows/scripts/translation_check.py
function get_keys (line 12) | def get_keys(data: dict, prefix: str = "") -> set[str]:
function get_translation_keys (line 31) | def get_translation_keys(data: dict) -> set[str]:
function load_locale_keys (line 43) | def load_locale_keys(locales_dir: str | Path) -> set[str]:
function find_translation_tags (line 83) | def find_translation_tags(source: str | Path) -> set[str]:
function get_target_files (line 164) | def get_target_files(
function check_file (line 223) | def check_file(path: Path, valid_keys: set[str]) -> list[str]:
function main (line 238) | def main() -> None:
FILE: cypress.config.ts
constant PORT (line 8) | const PORT = process.env.PORT || '4321';
constant DEFAULT_API_URL (line 9) | const DEFAULT_API_URL = 'http://localhost:4000/graphql';
type GraphQLError (line 11) | type GraphQLError = { message: string; extensions?: Record<string, unkno...
type GraphQLResponse (line 12) | type GraphQLResponse<T> = { data?: T; errors?: GraphQLError[] };
constant SIGN_IN_QUERY (line 104) | const SIGN_IN_QUERY = `
constant CREATE_ORGANIZATION_MUTATION (line 118) | const CREATE_ORGANIZATION_MUTATION = `
constant CREATE_ORGANIZATION_MEMBERSHIP_MUTATION (line 126) | const CREATE_ORGANIZATION_MEMBERSHIP_MUTATION = `
constant CREATE_EVENT_MUTATION (line 136) | const CREATE_EVENT_MUTATION = `
constant CREATE_USER_MUTATION (line 144) | const CREATE_USER_MUTATION = `
constant CREATE_VOLUNTEER_MUTATION (line 153) | const CREATE_VOLUNTEER_MUTATION = `
constant CREATE_POST_MUTATION (line 161) | const CREATE_POST_MUTATION = `
constant CREATE_PLUGIN_MUTATION (line 169) | const CREATE_PLUGIN_MUTATION = `
constant INSTALL_PLUGIN_MUTATION (line 180) | const INSTALL_PLUGIN_MUTATION = `
constant CREATE_ACTION_ITEM_CATEGORY_MUTATION (line 191) | const CREATE_ACTION_ITEM_CATEGORY_MUTATION = `
constant DELETE_ORGANIZATION_MUTATION (line 200) | const DELETE_ORGANIZATION_MUTATION = `
constant DELETE_USER_MUTATION (line 208) | const DELETE_USER_MUTATION = `
method setupNodeEvents (line 261) | setupNodeEvents(on, config) {
FILE: cypress/e2e/AdminPortal/Advertisements/Advertisements.cy.ts
type InterfaceAdvertisementData (line 3) | interface InterfaceAdvertisementData {
FILE: cypress/e2e/AdminPortal/People/ManageMembers.cy.ts
type SeededUser (line 3) | type SeededUser = { name: string; userId?: string };
FILE: cypress/e2e/SharedComponents/GraphQLUtilities.cy.ts
type GraphQLError (line 1) | type GraphQLError = { message: string };
FILE: cypress/pageObjects/AdminPortal/ActionItemPage.ts
class ActionItemPage (line 1) | class ActionItemPage {
method visitActionItemsTab (line 28) | visitActionItemsTab() {
method visitEventsPage (line 36) | visitEventsPage() {
method selectFirstEvent (line 42) | selectFirstEvent() {
method clickShowEventDashboard (line 47) | clickShowEventDashboard() {
method navigateToEventActionItemsTab (line 52) | navigateToEventActionItemsTab() {
method visitEventActionItems (line 58) | visitEventActionItems(orgId?: string, eventId?: string) {
method createActionItem (line 75) | createActionItem(category: string, member: string) {
method createActionItemWithVolunteer (line 86) | createActionItemWithVolunteer(category: string, volunteerName?: string) {
method sortByNewest (line 101) | sortByNewest() {
method editFirstActionItem (line 107) | editFirstActionItem(newNotes: string) {
method viewFirstActionItemAndCloseModal (line 115) | viewFirstActionItemAndCloseModal() {
method markFirstActionItemAsComplete (line 121) | markFirstActionItemAsComplete(completionNotes: string) {
method deleteFirstActionItem (line 129) | deleteFirstActionItem() {
FILE: cypress/pageObjects/AdminPortal/AdminDashboard.ts
class AdminDashboardPage (line 1) | class AdminDashboardPage {
method visit (line 20) | visit() {
method verifyOnDashboard (line 25) | verifyOnDashboard(timeout = 20000) {
method openFirstOrganization (line 37) | openFirstOrganization(timeout = 20000) {
method verifyLeftDrawerOptions (line 46) | verifyLeftDrawerOptions(timeout = 40000) {
method logout (line 55) | logout(timeout = 20000) {
FILE: cypress/pageObjects/AdminPortal/AdminEventPage.ts
class AdminEventPage (line 1) | class AdminEventPage {
method visitEventPage (line 10) | visitEventPage(): void {
method createEvent (line 15) | createEvent(title: string, description: string, location: string): this {
method findEventCard (line 80) | findEventCard(eventName: string): Cypress.Chainable {
method openEventDetails (line 86) | openEventDetails(eventName: string): this {
method updateEvent (line 91) | updateEvent(
method deleteEvent (line 125) | deleteEvent(eventName: string): this {
method verifyEventNotInList (line 142) | verifyEventNotInList(eventTitle: string, timeout = 40000): this {
FILE: cypress/pageObjects/AdminPortal/AdvertisementPage.ts
class AdvertisementPage (line 1) | class AdvertisementPage {
method visitAdvertisementPage (line 17) | visitAdvertisementPage() {
method createAdvertisement (line 23) | createAdvertisement(name: string, description: string, type: string) {
method verifyAndEditAdvertisement (line 33) | verifyAndEditAdvertisement(oldName: string, newName: string) {
method verifyAndDeleteAdvertisement (line 44) | verifyAndDeleteAdvertisement(adName: string) {
FILE: cypress/pageObjects/AdminPortal/EventAttendancePage.ts
type AttendanceSortOrder (line 3) | type AttendanceSortOrder = 'ascending' | 'descending';
type AttendanceFilterPeriod (line 4) | type AttendanceFilterPeriod = 'This Month' | 'This Year' | 'All';
class EventAttendancePage (line 6) | class EventAttendancePage extends BasePage<EventAttendancePage> {
method self (line 19) | protected self(): EventAttendancePage {
method visitPage (line 23) | visitPage(orgId: string, eventId: string, timeout = 30000): this {
method openAttendanceTab (line 29) | openAttendanceTab(timeout = 10000): this {
method searchMemberByName (line 37) | searchMemberByName(name: string, timeout = 10000): this {
method clearSearch (line 46) | clearSearch(timeout = 10000): this {
method setSortOrder (line 52) | setSortOrder(order: AttendanceSortOrder, timeout = 10000): this {
method setFilterPeriod (line 60) | setFilterPeriod(period: AttendanceFilterPeriod, timeout = 10000): this {
method openStatisticsModal (line 72) | openStatisticsModal(timeout = 10000): this {
method closeStatisticsModal (line 78) | closeStatisticsModal(timeout = 10000): this {
method verifyAttendeeInList (line 85) | verifyAttendeeInList(name: string, timeout = 10000): this {
FILE: cypress/pageObjects/AdminPortal/LeftDrawer.ts
class LeftDrawer (line 1) | class LeftDrawer {
method checkBreakpoint (line 2) | checkBreakpoint(orgId: string): void {
method checkRowViewport (line 12) | checkRowViewport(): void {
method checkProfileContainerStyling (line 24) | checkProfileContainerStyling(): void {
FILE: cypress/pageObjects/AdminPortal/MemberManagementPage.ts
class MemberManagementPage (line 3) | class MemberManagementPage extends BasePage<MemberManagementPage> {
method self (line 19) | protected self(): MemberManagementPage {
method openFromDrawer (line 23) | openFromDrawer(timeout = 40000): this {
method visitPage (line 29) | visitPage(orgId: string, timeout = 40000): this {
method searchMemberByName (line 35) | searchMemberByName(name: string, timeout = 40000): this {
method verifyMemberInList (line 44) | verifyMemberInList(name: string, timeout = 40000): this {
method clickAddExistingMember (line 49) | clickAddExistingMember(timeout = 40000): this {
method searchAndSelectUser (line 57) | searchAndSelectUser(name: string, timeout = 40000): this {
method confirmAddUser (line 69) | confirmAddUser(name: string, timeout = 100000): this {
method deleteMember (line 75) | deleteMember(name: string, timeout = 40000): this {
method resetSearch (line 96) | resetSearch(timeout = 40000): this {
method getAlert (line 102) | getAlert(timeout = 40000): Cypress.Chainable<JQuery<HTMLElement>> {
method verifyMinRows (line 106) | verifyMinRows(minRows: number, timeout = 40000): this {
FILE: cypress/pageObjects/AdminPortal/OrganizationSettingsPage.ts
class OrganizationSettingsPage (line 3) | class OrganizationSettingsPage extends BasePage<OrganizationSettingsPage> {
method self (line 20) | protected self(): OrganizationSettingsPage {
method openFromDrawer (line 24) | openFromDrawer(timeout = 30000): this {
method visitPage (line 32) | visitPage(orgId: string, timeout = 30000): this {
method openGeneralTab (line 38) | openGeneralTab(timeout = 10000): this {
method openActionItemCategoriesTab (line 46) | openActionItemCategoriesTab(timeout = 10000): this {
method updateOrganizationName (line 54) | updateOrganizationName(name: string, timeout = 10000): this {
method updateOrganizationDescription (line 62) | updateOrganizationDescription(description: string, timeout = 10000): t...
method updateOrganizationLocation (line 70) | updateOrganizationLocation(location: string, timeout = 10000): this {
method toggleIsPublic (line 78) | toggleIsPublic(timeout = 10000): this {
method saveChanges (line 83) | saveChanges(timeout = 10000): this {
method openDeleteOrganizationModal (line 88) | openDeleteOrganizationModal(timeout = 10000): this {
method closeDeleteOrganizationModal (line 96) | closeDeleteOrganizationModal(timeout = 10000): this {
method confirmDeleteOrganization (line 103) | confirmDeleteOrganization(timeout = 10000): this {
FILE: cypress/pageObjects/AdminPortal/PeoplePage.ts
class PeoplePage (line 5) | class PeoplePage {
method visitPeoplePage (line 21) | visitPeoplePage(): void {
method searchMemberByName (line 26) | searchMemberByName(name: string, timeout = 40000) {
method verifyMemberInList (line 35) | verifyMemberInList(name: string, timeout = 40000) {
method clickAddExistingMember (line 40) | clickAddExistingMember(timeout = 40000) {
method searchAndSelectUser (line 48) | searchAndSelectUser(name: string, timeout = 40000) {
method confirmAddUser (line 58) | confirmAddUser(name: string, timeout = 100000) {
method deleteMember (line 69) | deleteMember(name: string, timeout = 40000) {
method resetSearch (line 90) | resetSearch(timeout = 40000) {
method verifyMinRows (line 96) | verifyMinRows(minRows: number, timeout = 40000) {
FILE: cypress/pageObjects/AdminPortal/PostPage.ts
class PostsPage (line 1) | class PostsPage {
method visitPostsPage (line 15) | visitPostsPage() {
method createPost (line 21) | createPost(title: string, description: string) {
method sortPostsByNewest (line 34) | sortPostsByNewest() {
method editFirstPost (line 40) | editFirstPost(newTitle: string) {
method deleteFirstPost (line 50) | deleteFirstPost() {
FILE: cypress/pageObjects/AdminPortal/VolunteerManagementPage.ts
class VolunteerManagementPage (line 3) | class VolunteerManagementPage extends BasePage<VolunteerManagementPage> {
method self (line 12) | protected self(): VolunteerManagementPage {
method visitPage (line 16) | visitPage(orgId: string, eventId: string, timeout = 30000): this {
method openVolunteersTab (line 22) | openVolunteersTab(timeout = 10000): this {
method showIndividuals (line 30) | showIndividuals(timeout = 10000): this {
method showGroups (line 35) | showGroups(timeout = 10000): this {
method showRequests (line 40) | showRequests(timeout = 10000): this {
method openAddVolunteerModal (line 45) | openAddVolunteerModal(timeout = 10000): this {
method openCreateGroupModal (line 53) | openCreateGroupModal(timeout = 10000): this {
FILE: cypress/pageObjects/UserPortal/UserDashboard.ts
class UserDashboardPage (line 1) | class UserDashboardPage {
method visit (line 5) | visit() {
method verifyOnDashboard (line 10) | verifyOnDashboard(timeout = 10000) {
method openFirstOrganization (line 16) | openFirstOrganization(timeout = 10000) {
FILE: cypress/pageObjects/auth/LoginPage.ts
class LoginPage (line 5) | class LoginPage {
method verifyLoginPage (line 10) | verifyLoginPage(timeout = 10000) {
method login (line 17) | login(email: string, password: string, timeout = 10000) {
method verifyToastVisible (line 30) | verifyToastVisible(expectedMessage?: string, timeout = 10000) {
method verifyErrorToast (line 38) | verifyErrorToast(timeout = 10000) {
FILE: cypress/pageObjects/base/BasePage.ts
method byTestId (line 7) | protected byTestId(
method byDataCy (line 14) | protected byDataCy(
method tableActions (line 21) | protected tableActions(tableSelector = '.MuiDataGrid-root'): TableActions {
method modalActions (line 25) | protected modalActions(rootSelector = '[role="dialog"]'): ModalActions {
method assertUrlIncludes (line 29) | protected assertUrlIncludes(path: string, timeout = 10000): TSelf {
method assertUrlMatch (line 34) | protected assertUrlMatch(pattern: RegExp, timeout = 10000): TSelf {
method visit (line 39) | visit(path: string): TSelf {
FILE: cypress/pageObjects/shared/ModalActions.ts
class ModalActions (line 3) | class ModalActions {
method constructor (line 4) | constructor(private readonly rootSelector = '[role="dialog"]') {}
method root (line 6) | private root(timeout = 10000): Cypress.Chainable<JQuery<HTMLElement>> {
method waitVisible (line 10) | waitVisible(timeout = 10000): this {
method clickByTestId (line 15) | clickByTestId(
method clickBySelector (line 26) | clickBySelector(
method submit (line 35) | submit(testId = 'modal-submit-btn', options?: ClickOptions): this {
method cancel (line 39) | cancel(testId = 'modal-cancel-btn', options?: ClickOptions): this {
method close (line 43) | close(testId = 'modalCloseBtn', options?: ClickOptions): this {
method hasTitle (line 47) | hasTitle(title: string, timeout = 10000): this {
FILE: cypress/pageObjects/shared/TableActions.ts
class TableActions (line 3) | class TableActions {
method constructor (line 4) | constructor(private readonly tableSelector = '.MuiDataGrid-root') {}
method escapeRegex (line 6) | private escapeRegex(text: string): string {
method root (line 10) | private root(timeout = 10000): Cypress.Chainable<JQuery<HTMLElement>> {
method waitVisible (line 14) | waitVisible(timeout = 10000): this {
method findRowByText (line 19) | findRowByText(
method clickRowActionByText (line 54) | clickRowActionByText(
method sortBy (line 69) | sortBy(
method filterBy (line 79) | filterBy(inputSelector: string, value: string, timeout = 10000): this {
method expectMinRows (line 84) | expectMinRows(minRows: number, timeout = 10000): this {
method cell (line 92) | cell(
FILE: cypress/pageObjects/shared/types.ts
type ClickOptions (line 1) | type ClickOptions = Partial<Cypress.ClickOptions>;
type TestIdClickConfig (line 3) | interface TestIdClickConfig {
FILE: cypress/support/commands.ts
type AuthRole (line 6) | type AuthRole = 'superAdmin' | 'admin' | 'user';
type AuthOptions (line 8) | type AuthOptions = {
type SetupTestEnvironmentOptions (line 18) | type SetupTestEnvironmentOptions = {
type CreateTestOrganizationPayload (line 24) | type CreateTestOrganizationPayload = {
type CreateOrganizationMembershipOptions (line 37) | type CreateOrganizationMembershipOptions = {
type SeedEventPayload (line 44) | type SeedEventPayload = {
type SeedUserDetails (line 56) | type SeedUserDetails = {
type SeedUserPayload (line 64) | type SeedUserPayload = SeedUserDetails & {
type SeedVolunteerPayload (line 68) | type SeedVolunteerPayload = {
type SeedPostPayload (line 78) | type SeedPostPayload = {
type SeedActionItemCategoryPayload (line 86) | type SeedActionItemCategoryPayload = {
type CleanupTestOrganizationOptions (line 94) | type CleanupTestOrganizationOptions = {
type CreateTestUserPayload (line 100) | type CreateTestUserPayload = {
type SignInTaskResult (line 109) | type SignInTaskResult = { token: string; userId: string };
type AuthSession (line 110) | type AuthSession = { token: string; userId?: string };
type CreateOrganizationTaskResult (line 111) | type CreateOrganizationTaskResult = { orgId: string };
type CreateEventTaskResult (line 112) | type CreateEventTaskResult = { eventId: string };
type CreateUserTaskResult (line 113) | type CreateUserTaskResult = {
type CreateVolunteerTaskResult (line 117) | type CreateVolunteerTaskResult = { volunteerId: string };
type CreatePostTaskResult (line 118) | type CreatePostTaskResult = { postId: string };
type CredentialRecord (line 120) | type CredentialRecord = { email: string; password: string };
type CredentialFixture (line 121) | type CredentialFixture = Record<AuthRole, CredentialRecord>;
constant DEFAULT_TEST_PASSWORD (line 123) | const DEFAULT_TEST_PASSWORD = 'Pass@123';
type Chainable (line 241) | interface Chainable<Subject> {
method onBeforeLoad (line 360) | onBeforeLoad(win) {
FILE: cypress/support/graphql-utils.ts
type GqlResponder (line 11) | type GqlResponder =
type GqlErrorExtensions (line 20) | type GqlErrorExtensions = Record<string, unknown>;
type GqlOperationOptions (line 26) | type GqlOperationOptions = Partial<Cypress.StaticResponse>;
type GqlOperationConfig (line 28) | type GqlOperationConfig = GqlOperationOptions & {
type Chainable (line 143) | interface Chainable<Subject> {
FILE: docs/src/components/layout/HeaderHero.tsx
function HeaderHero (line 4) | function HeaderHero() {
FILE: docs/src/utils/ActionButton.tsx
type ActionButtonProps (line 3) | interface ActionButtonProps {
function ActionButton (line 12) | function ActionButton({
FILE: scripts/__fixtures__/correct.tsx
function CorrectFixture (line 7) | function CorrectFixture() {
FILE: scripts/__fixtures__/edge-cases.tsx
function EdgeCasesFixture (line 4) | function EdgeCasesFixture() {
FILE: scripts/__fixtures__/false-positives.tsx
function FalsePositivesFixture (line 8) | function FalsePositivesFixture() {
FILE: scripts/__fixtures__/violations.tsx
function ViolationsFixture (line 6) | function ViolationsFixture() {
FILE: scripts/check-css-imports.js
constant CSS_EXTENSION_REGEX (line 9) | const CSS_EXTENSION_REGEX = /\.css$/;
constant TS_EXTENSION_REGEX (line 10) | const TS_EXTENSION_REGEX = /\.(ts|tsx)$/i;
constant CSS_MODULE_REGEX (line 11) | const CSS_MODULE_REGEX = /\.module\.css$/i;
constant EXEMPT_TS_FILES (line 13) | const EXEMPT_TS_FILES = [path.resolve('src/index.tsx')];
constant EXEMPT_CSS_FILES (line 14) | const EXEMPT_CSS_FILES = new Set([
constant EXEMPT_CSS_DIR_PREFIXES (line 17) | const EXEMPT_CSS_DIR_PREFIXES = [
FILE: scripts/check-i18n.js
constant SRC_DIR (line 12) | const SRC_DIR = path.join(process.cwd(), 'src');
constant FILE_EXTENSIONS (line 14) | const FILE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx'];
constant TEST_PATTERNS (line 15) | const TEST_PATTERNS = [
constant USER_VISIBLE_ATTRS (line 23) | const USER_VISIBLE_ATTRS = [
constant NON_USER_VISIBLE_ATTRS (line 35) | const NON_USER_VISIBLE_ATTRS = [
constant POSIX_SEP (line 107) | const POSIX_SEP = path.posix.sep;
FILE: scripts/delete-readmes.js
function deleteReadmeFiles (line 7) | function deleteReadmeFiles(dir) {
FILE: scripts/docs/fix-readme-links.js
function replaceLinks (line 6) | function replaceLinks(dir) {
FILE: scripts/docs/fix-repo-url.js
function replaceRepoUrl (line 8) | function replaceRepoUrl(dir) {
FILE: scripts/eslint/plugins/eslint-plugin-vitest-isolation/index.d.ts
type InterfaceVitestIsolationPlugin (line 6) | interface InterfaceVitestIsolationPlugin {
FILE: scripts/eslint/plugins/eslint-plugin-vitest-isolation/require-aftereach-cleanup.js
method create (line 29) | create(context) {
FILE: scripts/eslint/rules/prefer-crud-modal-template.js
constant DEFAULT_KEYWORDS (line 12) | const DEFAULT_KEYWORDS = ['onSubmit', 'onConfirm', 'onPrimary', 'onSave'];
constant DEFAULT_VARIANTS (line 13) | const DEFAULT_VARIANTS = ['BaseModal'];
constant CRUD_IMPORT_PATH (line 14) | const CRUD_IMPORT_PATH =
method create (line 105) | create(context) {
FILE: scripts/githooks/check-route-prefix.ts
constant DEFAULT_ALLOWED_PREFIXES (line 7) | const DEFAULT_ALLOWED_PREFIXES = ['/admin', '/user', '/auth'];
constant DEFAULT_ALLOWED_EXACT (line 8) | const DEFAULT_ALLOWED_EXACT = [
constant DEFAULT_ALLOWED_PATTERNS (line 14) | const DEFAULT_ALLOWED_PATTERNS = ['^/event/invitation(?:/|$)'];
constant DEFAULT_ROUTE_COMPONENTS (line 15) | const DEFAULT_ROUTE_COMPONENTS = ['Route'];
constant DEFAULT_NAV_COMPONENTS (line 16) | const DEFAULT_NAV_COMPONENTS = [
constant DEFAULT_NAVIGATE_FUNCTIONS (line 22) | const DEFAULT_NAVIGATE_FUNCTIONS = ['navigate'];
constant DEFAULT_LOCATION_METHODS (line 23) | const DEFAULT_LOCATION_METHODS = ['assign', 'replace'];
type Violation (line 210) | type Violation = {
FILE: scripts/start-server.js
constant PORT (line 8) | const PORT = !isNaN(parsed) && parsed >= 1024 && parsed <= 65535 ? parse...
FILE: scripts/validate-tokens.ts
type ValidationResultType (line 60) | type ValidationResultType =
type IValidationResult (line 82) | interface IValidationResult {
constant CSS_PATTERNS (line 96) | const CSS_PATTERNS = {
constant TSX_PATTERNS (line 146) | const TSX_PATTERNS = {
constant ALLOWLIST_PATTERNS (line 182) | const ALLOWLIST_PATTERNS = [
function validateFiles (line 786) | async function validateFiles(
function main (line 847) | async function main() {
FILE: src/App.spec.tsx
constant MOCKS (line 282) | const MOCKS = [
constant ADMIN_MOCKS (line 307) | const ADMIN_MOCKS = [
constant ERROR_MOCKS (line 323) | const ERROR_MOCKS = [
FILE: src/App.tsx
function App (line 140) | function App(): React.ReactElement {
FILE: src/Constant/common.ts
constant DATE_FORMAT (line 9) | const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ssZ';
constant DATE_TIME_SEPARATOR (line 14) | const DATE_TIME_SEPARATOR = 'T';
constant DUMMY_DATE_TIME_PREFIX (line 19) | const DUMMY_DATE_TIME_PREFIX = '2015-03-04T';
constant DATE_FORMAT_ISO_DATE (line 54) | const DATE_FORMAT_ISO_DATE = 'YYYY-MM-DD';
constant IDENTIFIER_USER_ID (line 97) | const IDENTIFIER_USER_ID = 'userId';
constant IDENTIFIER_ID (line 102) | const IDENTIFIER_ID = 'id';
constant MAX_NAME_LENGTH (line 137) | const MAX_NAME_LENGTH = 20;
FILE: src/Constant/constant.ts
constant AUTH_TOKEN (line 1) | const AUTH_TOKEN = '';
constant BACKEND_URL (line 2) | const BACKEND_URL = process.env.REACT_APP_TALAWA_URL;
constant RECAPTCHA_SITE_KEY (line 3) | const RECAPTCHA_SITE_KEY = process.env.REACT_APP_RECAPTCHA_SITE_KEY;
constant REACT_APP_USE_RECAPTCHA (line 4) | const REACT_APP_USE_RECAPTCHA = process.env.REACT_APP_USE_RECAPTCHA;
constant BACKEND_WEBSOCKET_URL (line 25) | const BACKEND_WEBSOCKET_URL = deriveBackendWebsocketUrl(BACKEND_URL);
FILE: src/Constant/fileUpload.ts
constant FILE_UPLOAD_MAX_SIZE_MB (line 4) | const FILE_UPLOAD_MAX_SIZE_MB =
constant FILE_UPLOAD_ALLOWED_TYPES (line 7) | const FILE_UPLOAD_ALLOWED_TYPES = [
constant AGENDA_ITEM_MIME_TYPE (line 17) | const AGENDA_ITEM_MIME_TYPE: Record<string, string> = {
constant AGENDA_ITEM_ALLOWED_MIME_TYPES (line 30) | const AGENDA_ITEM_ALLOWED_MIME_TYPES = [
FILE: src/GraphQl/Mutations/ActionItemCategoryMutations.ts
constant CREATE_ACTION_ITEM_CATEGORY_MUTATION (line 11) | const CREATE_ACTION_ITEM_CATEGORY_MUTATION = gql`
constant UPDATE_ACTION_ITEM_CATEGORY_MUTATION (line 41) | const UPDATE_ACTION_ITEM_CATEGORY_MUTATION = gql`
constant DELETE_ACTION_ITEM_CATEGORY_MUTATION (line 65) | const DELETE_ACTION_ITEM_CATEGORY_MUTATION = gql`
FILE: src/GraphQl/Mutations/ActionItemMutations.ts
constant CREATE_ACTION_ITEM_MUTATION (line 7) | const CREATE_ACTION_ITEM_MUTATION = gql`
constant UPDATE_ACTION_ITEM_MUTATION (line 68) | const UPDATE_ACTION_ITEM_MUTATION = gql`
constant DELETE_ACTION_ITEM_MUTATION (line 129) | const DELETE_ACTION_ITEM_MUTATION = gql`
constant MARK_ACTION_ITEM_AS_PENDING_MUTATION (line 141) | const MARK_ACTION_ITEM_AS_PENDING_MUTATION = gql`
constant COMPLETE_ACTION_ITEM_FOR_INSTANCE (line 149) | const COMPLETE_ACTION_ITEM_FOR_INSTANCE = gql`
constant MARK_ACTION_ITEM_AS_PENDING_FOR_INSTANCE (line 158) | const MARK_ACTION_ITEM_AS_PENDING_FOR_INSTANCE = gql`
constant UPDATE_ACTION_ITEM_FOR_INSTANCE (line 167) | const UPDATE_ACTION_ITEM_FOR_INSTANCE = gql`
constant DELETE_ACTION_ITEM_FOR_INSTANCE (line 177) | const DELETE_ACTION_ITEM_FOR_INSTANCE = gql`
FILE: src/GraphQl/Mutations/AdvertisementMutations.ts
constant ADD_ADVERTISEMENT_MUTATION (line 14) | const ADD_ADVERTISEMENT_MUTATION = gql`
constant UPDATE_ADVERTISEMENT_MUTATION (line 50) | const UPDATE_ADVERTISEMENT_MUTATION = gql`
constant DELETE_ADVERTISEMENT_MUTATION (line 80) | const DELETE_ADVERTISEMENT_MUTATION = gql`
FILE: src/GraphQl/Mutations/AgendaFolderMutations.ts
constant CREATE_AGENDA_FOLDER_MUTATION (line 9) | const CREATE_AGENDA_FOLDER_MUTATION = gql`
constant UPDATE_AGENDA_FOLDER_MUTATION (line 34) | const UPDATE_AGENDA_FOLDER_MUTATION = gql`
constant DELETE_AGENDA_FOLDER_MUTATION (line 50) | const DELETE_AGENDA_FOLDER_MUTATION = gql`
FILE: src/GraphQl/Mutations/AgendaItemMutations.ts
constant CREATE_AGENDA_ITEM_MUTATION (line 9) | const CREATE_AGENDA_ITEM_MUTATION = gql`
constant DELETE_AGENDA_ITEM_MUTATION (line 44) | const DELETE_AGENDA_ITEM_MUTATION = gql`
constant UPDATE_AGENDA_ITEM_SEQUENCE_MUTATION (line 58) | const UPDATE_AGENDA_ITEM_SEQUENCE_MUTATION = gql`
constant UPDATE_AGENDA_ITEM_MUTATION (line 75) | const UPDATE_AGENDA_ITEM_MUTATION = gql`
FILE: src/GraphQl/Mutations/CampaignMutation.ts
constant CREATE_CAMPAIGN_MUTATION (line 15) | const CREATE_CAMPAIGN_MUTATION = gql`
constant UPDATE_CAMPAIGN_MUTATION (line 51) | const UPDATE_CAMPAIGN_MUTATION = gql`
FILE: src/GraphQl/Mutations/CommentMutations.ts
constant CREATE_COMMENT_POST (line 11) | const CREATE_COMMENT_POST = gql`
constant LIKE_COMMENT (line 39) | const LIKE_COMMENT = gql`
constant UNLIKE_COMMENT (line 54) | const UNLIKE_COMMENT = gql`
constant DELETE_COMMENT (line 61) | const DELETE_COMMENT = gql`
constant UPDATE_COMMENT (line 69) | const UPDATE_COMMENT = gql`
FILE: src/GraphQl/Mutations/EventAttendeeMutations.ts
constant ADD_EVENT_ATTENDEE (line 11) | const ADD_EVENT_ATTENDEE = gql`
constant REMOVE_EVENT_ATTENDEE (line 39) | const REMOVE_EVENT_ATTENDEE = gql`
constant MARK_CHECKIN (line 108) | const MARK_CHECKIN = gql`
FILE: src/GraphQl/Mutations/EventMutations.ts
constant CREATE_EVENT_MUTATION (line 5) | const CREATE_EVENT_MUTATION = gql`
constant UPDATE_EVENT_MUTATION (line 50) | const UPDATE_EVENT_MUTATION = gql`
constant DELETE_STANDALONE_EVENT_MUTATION (line 75) | const DELETE_STANDALONE_EVENT_MUTATION = gql`
constant DELETE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION (line 83) | const DELETE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION = gql`
constant DELETE_SINGLE_EVENT_INSTANCE_MUTATION (line 94) | const DELETE_SINGLE_EVENT_INSTANCE_MUTATION = gql`
constant DELETE_THIS_AND_FOLLOWING_EVENTS_MUTATION (line 105) | const DELETE_THIS_AND_FOLLOWING_EVENTS_MUTATION = gql`
constant UPDATE_SINGLE_RECURRING_EVENT_INSTANCE_MUTATION (line 116) | const UPDATE_SINGLE_RECURRING_EVENT_INSTANCE_MUTATION = gql`
constant UPDATE_THIS_AND_FOLLOWING_EVENTS_MUTATION (line 138) | const UPDATE_THIS_AND_FOLLOWING_EVENTS_MUTATION = gql`
constant UPDATE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION (line 160) | const UPDATE_ENTIRE_RECURRING_EVENT_SERIES_MUTATION = gql`
constant REGISTER_EVENT (line 172) | const REGISTER_EVENT = gql`
FILE: src/GraphQl/Mutations/EventVolunteerMutation.ts
constant ADD_VOLUNTEER (line 11) | const ADD_VOLUNTEER = gql`
constant DELETE_VOLUNTEER (line 39) | const DELETE_VOLUNTEER = gql`
constant CREATE_VOLUNTEER_GROUP (line 69) | const CREATE_VOLUNTEER_GROUP = gql`
constant UPDATE_VOLUNTEER_GROUP (line 85) | const UPDATE_VOLUNTEER_GROUP = gql`
constant DELETE_VOLUNTEER_GROUP (line 103) | const DELETE_VOLUNTEER_GROUP = gql`
constant DELETE_VOLUNTEER_FOR_INSTANCE (line 117) | const DELETE_VOLUNTEER_FOR_INSTANCE = gql`
constant DELETE_VOLUNTEER_GROUP_FOR_INSTANCE (line 141) | const DELETE_VOLUNTEER_GROUP_FOR_INSTANCE = gql`
constant UPDATE_VOLUNTEER_MEMBERSHIP (line 172) | const UPDATE_VOLUNTEER_MEMBERSHIP = gql`
FILE: src/GraphQl/Mutations/FundMutation.ts
constant CREATE_FUND_MUTATION (line 11) | const CREATE_FUND_MUTATION = gql`
constant UPDATE_FUND_MUTATION (line 37) | const UPDATE_FUND_MUTATION = gql`
FILE: src/GraphQl/Mutations/OrganizationMutations.ts
constant UPDATE_USER_ROLE_IN_ORG_MUTATION (line 12) | const UPDATE_USER_ROLE_IN_ORG_MUTATION = gql`
constant DELETE_CHAT_MESSAGE (line 28) | const DELETE_CHAT_MESSAGE = gql`
constant CREATE_SAMPLE_ORGANIZATION_MUTATION (line 43) | const CREATE_SAMPLE_ORGANIZATION_MUTATION = gql`
constant REMOVE_SAMPLE_ORGANIZATION_MUTATION (line 55) | const REMOVE_SAMPLE_ORGANIZATION_MUTATION = gql`
constant CREATE_CHAT (line 69) | const CREATE_CHAT = gql`
constant CREATE_CHAT_MEMBERSHIP (line 83) | const CREATE_CHAT_MEMBERSHIP = gql`
constant UPDATE_CHAT (line 110) | const UPDATE_CHAT = gql`
constant EDIT_CHAT_MESSAGE (line 123) | const EDIT_CHAT_MESSAGE = gql`
constant SEND_MESSAGE_TO_CHAT (line 149) | const SEND_MESSAGE_TO_CHAT = gql`
constant MESSAGE_SENT_TO_CHAT (line 175) | const MESSAGE_SENT_TO_CHAT = gql`
constant MARK_CHAT_MESSAGES_AS_READ (line 204) | const MARK_CHAT_MESSAGES_AS_READ = gql`
constant TOGGLE_PINNED_POST (line 217) | const TOGGLE_PINNED_POST = gql`
constant SEND_MEMBERSHIP_REQUEST (line 241) | const SEND_MEMBERSHIP_REQUEST = gql`
constant JOIN_PUBLIC_ORGANIZATION (line 256) | const JOIN_PUBLIC_ORGANIZATION = gql`
constant CANCEL_MEMBERSHIP_REQUEST (line 266) | const CANCEL_MEMBERSHIP_REQUEST = gql`
constant UPDATE_CHAT_MEMBERSHIP (line 274) | const UPDATE_CHAT_MEMBERSHIP = gql`
constant DELETE_CHAT (line 284) | const DELETE_CHAT = gql`
constant DELETE_CHAT_MEMBERSHIP (line 315) | const DELETE_CHAT_MEMBERSHIP = gql`
FILE: src/GraphQl/Mutations/PledgeMutation.ts
constant CREATE_PLEDGE (line 12) | const CREATE_PLEDGE = gql`
constant UPDATE_PLEDGE (line 51) | const UPDATE_PLEDGE = gql`
constant DELETE_PLEDGE (line 77) | const DELETE_PLEDGE = gql`
FILE: src/GraphQl/Mutations/PluginMutations.ts
constant CREATE_PLUGIN_MUTATION (line 9) | const CREATE_PLUGIN_MUTATION = gql`
constant INSTALL_PLUGIN_MUTATION (line 29) | const INSTALL_PLUGIN_MUTATION = gql`
constant UPDATE_PLUGIN_MUTATION (line 52) | const UPDATE_PLUGIN_MUTATION = gql`
constant DELETE_PLUGIN_MUTATION (line 72) | const DELETE_PLUGIN_MUTATION = gql`
constant UPLOAD_PLUGIN_ZIP_MUTATION (line 81) | const UPLOAD_PLUGIN_ZIP_MUTATION = gql`
FILE: src/GraphQl/Mutations/TagMutations.ts
constant CREATE_USER_TAG (line 11) | const CREATE_USER_TAG = gql`
constant UNASSIGN_USER_TAG (line 32) | const UNASSIGN_USER_TAG = gql`
constant UPDATE_USER_TAG (line 47) | const UPDATE_USER_TAG = gql`
constant REMOVE_USER_TAG (line 61) | const REMOVE_USER_TAG = gql`
constant ADD_PEOPLE_TO_TAG (line 76) | const ADD_PEOPLE_TO_TAG = gql`
constant ASSIGN_TO_TAGS (line 91) | const ASSIGN_TO_TAGS = gql`
constant REMOVE_FROM_TAGS (line 108) | const REMOVE_FROM_TAGS = gql`
FILE: src/GraphQl/Mutations/VenueMutations.ts
constant CREATE_VENUE_MUTATION (line 13) | const CREATE_VENUE_MUTATION = gql`
constant UPDATE_VENUE_MUTATION (line 44) | const UPDATE_VENUE_MUTATION = gql`
constant DELETE_VENUE_MUTATION (line 74) | const DELETE_VENUE_MUTATION = gql`
FILE: src/GraphQl/Mutations/mutations.ts
constant BLOCK_USER_MUTATION_PG (line 5) | const BLOCK_USER_MUTATION_PG = gql`
constant UNBLOCK_USER_MUTATION_PG (line 11) | const UNBLOCK_USER_MUTATION_PG = gql`
constant REJECT_ORGANIZATION_REQUEST_MUTATION (line 19) | const REJECT_ORGANIZATION_REQUEST_MUTATION = gql`
constant ACCEPT_ORGANIZATION_REQUEST_MUTATION (line 32) | const ACCEPT_ORGANIZATION_REQUEST_MUTATION = gql`
constant UPDATE_ORGANIZATION_MUTATION (line 45) | const UPDATE_ORGANIZATION_MUTATION = gql`
constant UPDATE_CURRENT_USER_MUTATION (line 66) | const UPDATE_CURRENT_USER_MUTATION = gql`
constant UPDATE_USER_MUTATION (line 98) | const UPDATE_USER_MUTATION = gql`
constant SIGNUP_MUTATION (line 131) | const SIGNUP_MUTATION = gql`
constant SEND_EVENT_INVITATIONS (line 158) | const SEND_EVENT_INVITATIONS = gql`
constant VERIFY_EVENT_INVITATION (line 180) | const VERIFY_EVENT_INVITATION = gql`
constant ACCEPT_EVENT_INVITATION (line 196) | const ACCEPT_EVENT_INVITATION = gql`
constant CREATE_MEMBER_PG (line 218) | const CREATE_MEMBER_PG = gql`
constant VERIFY_EMAIL_MUTATION (line 252) | const VERIFY_EMAIL_MUTATION = gql`
constant RESEND_VERIFICATION_EMAIL_MUTATION (line 272) | const RESEND_VERIFICATION_EMAIL_MUTATION = gql`
constant REFRESH_TOKEN_MUTATION (line 286) | const REFRESH_TOKEN_MUTATION = gql`
constant LOGOUT_MUTATION (line 298) | const LOGOUT_MUTATION = gql`
constant REVOKE_REFRESH_TOKEN (line 310) | const REVOKE_REFRESH_TOKEN = gql`
constant CREATE_ORGANIZATION_MUTATION (line 318) | const CREATE_ORGANIZATION_MUTATION = gql`
constant CREATE_ORGANIZATION_MUTATION_PG (line 342) | const CREATE_ORGANIZATION_MUTATION_PG = gql`
constant CREATE_ORGANIZATION_MEMBERSHIP_MUTATION_PG (line 374) | const CREATE_ORGANIZATION_MEMBERSHIP_MUTATION_PG = gql`
constant DELETE_ORGANIZATION_MUTATION (line 394) | const DELETE_ORGANIZATION_MUTATION = gql`
constant REMOVE_MEMBER_MUTATION (line 404) | const REMOVE_MEMBER_MUTATION = gql`
constant REMOVE_MEMBER_MUTATION_PG (line 415) | const REMOVE_MEMBER_MUTATION_PG = gql`
constant CREATE_POST_MUTATION (line 425) | const CREATE_POST_MUTATION = gql`
constant DELETE_POST_MUTATION (line 437) | const DELETE_POST_MUTATION = gql`
constant GENERATE_OTP_MUTATION (line 445) | const GENERATE_OTP_MUTATION = gql`
constant FORGOT_PASSWORD_MUTATION (line 453) | const FORGOT_PASSWORD_MUTATION = gql`
constant UPDATE_POST_MUTATION (line 469) | const UPDATE_POST_MUTATION = gql`
constant UPDATE_EVENT_MUTATION (line 485) | const UPDATE_EVENT_MUTATION = gql`
constant UPDATE_POST_VOTE (line 515) | const UPDATE_POST_VOTE = gql`
constant UPDATE_COMMUNITY_PG (line 548) | const UPDATE_COMMUNITY_PG = gql`
constant UPDATE_SESSION_TIMEOUT_PG (line 586) | const UPDATE_SESSION_TIMEOUT_PG = gql`
constant RESET_COMMUNITY (line 596) | const RESET_COMMUNITY = gql`
constant DONATE_TO_ORGANIZATION (line 602) | const DONATE_TO_ORGANIZATION = gql`
constant PRESIGNED_URL (line 698) | const PRESIGNED_URL = gql`
constant GET_FILE_PRESIGNEDURL (line 708) | const GET_FILE_PRESIGNEDURL = gql`
constant LINK_OAUTH_ACCOUNT (line 717) | const LINK_OAUTH_ACCOUNT = gql`
constant UNLINK_OAUTH_ACCOUNT (line 736) | const UNLINK_OAUTH_ACCOUNT = gql`
constant SIGN_IN_WITH_OAUTH (line 752) | const SIGN_IN_WITH_OAUTH = gql`
FILE: src/GraphQl/Queries/ActionItemCategoryQueries.ts
constant ACTION_ITEM_CATEGORY_LIST (line 7) | const ACTION_ITEM_CATEGORY_LIST = gql`
constant GET_ACTION_ITEM_CATEGORY (line 29) | const GET_ACTION_ITEM_CATEGORY = gql`
FILE: src/GraphQl/Queries/ActionItemQueries.ts
constant ACTION_ITEM_LIST (line 14) | const ACTION_ITEM_LIST = gql`
constant GET_EVENT_ACTION_ITEMS (line 85) | const GET_EVENT_ACTION_ITEMS = gql`
FILE: src/GraphQl/Queries/AdvertisementQueries.ts
constant ORGANIZATION_ADVERTISEMENT_LIST (line 15) | const ORGANIZATION_ADVERTISEMENT_LIST = gql`
FILE: src/GraphQl/Queries/AgendaCategoryQueries.ts
constant AGENDA_ITEM_CATEGORY_LIST (line 10) | const AGENDA_ITEM_CATEGORY_LIST = gql`
FILE: src/GraphQl/Queries/AgendaFolderQueries.ts
constant AGENDA_FOLDER_LIST (line 10) | const AGENDA_FOLDER_LIST = gql`
FILE: src/GraphQl/Queries/CommentQueries.ts
constant GET_POST_COMMENTS (line 14) | const GET_POST_COMMENTS = gql`
FILE: src/GraphQl/Queries/EventVolunteerQueries.ts
constant GET_EVENT_VOLUNTEERS (line 12) | const GET_EVENT_VOLUNTEERS = gql`
constant EVENT_VOLUNTEER_GROUP_LIST (line 65) | const EVENT_VOLUNTEER_GROUP_LIST = gql`
constant GET_EVENT_VOLUNTEER_GROUPS (line 102) | const GET_EVENT_VOLUNTEER_GROUPS = gql`
constant USER_VOLUNTEER_MEMBERSHIP (line 147) | const USER_VOLUNTEER_MEMBERSHIP = gql`
constant USER_EVENTS_VOLUNTEER (line 193) | const USER_EVENTS_VOLUNTEER = gql`
constant VOLUNTEER_RANKING (line 251) | const VOLUNTEER_RANKING = gql`
FILE: src/GraphQl/Queries/NotificationQueries.ts
constant GET_USER_NOTIFICATIONS (line 3) | const GET_USER_NOTIFICATIONS = gql`
constant MARK_NOTIFICATION_AS_READ (line 22) | const MARK_NOTIFICATION_AS_READ = gql`
FILE: src/GraphQl/Queries/OrganizationQueries.ts
constant ORGANIZATION_PINNED_POST_LIST (line 16) | const ORGANIZATION_PINNED_POST_LIST = gql`
constant ORGANIZATION_POST_LIST_WITH_VOTES (line 65) | const ORGANIZATION_POST_LIST_WITH_VOTES = gql`
constant ORGANIZATION_POST_BY_ID (line 122) | const ORGANIZATION_POST_BY_ID = gql`
constant USER_JOINED_ORGANIZATIONS_PG (line 151) | const USER_JOINED_ORGANIZATIONS_PG = gql`
constant ORGANIZATION_USER_TAGS_LIST (line 194) | const ORGANIZATION_USER_TAGS_LIST = gql`
constant ORGANIZATION_USER_TAGS_LIST_PG (line 245) | const ORGANIZATION_USER_TAGS_LIST_PG = gql`
constant USER_CREATED_ORGANIZATIONS (line 291) | const USER_CREATED_ORGANIZATIONS = gql`
constant VENUE_LIST (line 330) | const VENUE_LIST = gql`
constant ORGANIZATION_MEMBERS (line 368) | const ORGANIZATION_MEMBERS = gql`
FILE: src/GraphQl/Queries/PlugInQueries.ts
constant GET_ALL_PLUGINS (line 8) | const GET_ALL_PLUGINS = gql`
constant CHAT_BY_ID (line 54) | const CHAT_BY_ID = gql`
constant CHATS_LIST (line 240) | const CHATS_LIST = gql`
constant UNREAD_CHATS (line 297) | const UNREAD_CHATS = gql`
constant IS_SAMPLE_ORGANIZATION_QUERY (line 359) | const IS_SAMPLE_ORGANIZATION_QUERY = gql`
FILE: src/GraphQl/Queries/Queries.ts
constant CURRENT_USER (line 4) | const CURRENT_USER = gql`
constant ORG_FIELDS (line 40) | const ORG_FIELDS = gql`
constant ORGANIZATION_LIST (line 54) | const ORGANIZATION_LIST = gql`
constant ORGANIZATION_FILTER_LIST (line 73) | const ORGANIZATION_FILTER_LIST = gql`
constant ORGANIZATION_LIST_NO_MEMBERS (line 84) | const ORGANIZATION_LIST_NO_MEMBERS = gql`
constant ORGANIZATION_MEMBER_ADMIN_COUNT (line 94) | const ORGANIZATION_MEMBER_ADMIN_COUNT = gql`
constant USER_JOINED_ORGANIZATIONS_NO_MEMBERS (line 104) | const USER_JOINED_ORGANIZATIONS_NO_MEMBERS = gql`
constant ALL_ORGANIZATIONS_PG (line 122) | const ALL_ORGANIZATIONS_PG = gql`
constant USER_LIST (line 142) | const USER_LIST = gql`
constant USER_LIST_FOR_TABLE (line 182) | const USER_LIST_FOR_TABLE = gql`
constant USER_LIST_FOR_ADMIN (line 217) | const USER_LIST_FOR_ADMIN = gql`
constant EVENT_DETAILS (line 294) | const EVENT_DETAILS = gql`
constant RECURRING_EVENTS (line 334) | const RECURRING_EVENTS = gql`
constant EVENT_ATTENDEES (line 348) | const EVENT_ATTENDEES = gql`
constant EVENT_REGISTRANTS (line 368) | const EVENT_REGISTRANTS = gql`
constant EVENT_CHECKINS (line 391) | const EVENT_CHECKINS = gql`
constant EVENT_FEEDBACKS (line 411) | const EVENT_FEEDBACKS = gql`
constant GET_ORGANIZATION_POSTS_COUNT_PG (line 427) | const GET_ORGANIZATION_POSTS_COUNT_PG = gql`
constant GET_USER_BY_ID (line 436) | const GET_USER_BY_ID = gql`
constant GET_ORGANIZATION_MEMBERS_PG (line 463) | const GET_ORGANIZATION_MEMBERS_PG = gql`
constant GET_ORGANIZATION_BLOCKED_USERS_PG (line 485) | const GET_ORGANIZATION_BLOCKED_USERS_PG = gql`
constant GET_ORGANIZATION_BLOCKED_USERS_COUNT (line 507) | const GET_ORGANIZATION_BLOCKED_USERS_COUNT = gql`
constant GET_ORGANIZATION_VENUES_COUNT (line 516) | const GET_ORGANIZATION_VENUES_COUNT = gql`
constant GET_ORGANIZATION_EVENTS_PG (line 525) | const GET_ORGANIZATION_EVENTS_PG = gql`
constant GET_ORGANIZATION_EVENTS_USER_PORTAL_PG (line 612) | const GET_ORGANIZATION_EVENTS_USER_PORTAL_PG = gql`
constant GET_ORGANIZATION_POSTS_PG (line 694) | const GET_ORGANIZATION_POSTS_PG = gql`
constant ORGANIZATION_BASIC_FIELDS (line 715) | const ORGANIZATION_BASIC_FIELDS = gql`
constant ORGANIZATION_DETAILED_FIELDS (line 732) | const ORGANIZATION_DETAILED_FIELDS = gql`
constant GET_ORGANIZATION_BASIC_DATA (line 750) | const GET_ORGANIZATION_BASIC_DATA = gql`
constant GET_ORGANIZATION_DATA_PG (line 760) | const GET_ORGANIZATION_DATA_PG = gql`
constant ORGANIZATION_FIELDS (line 785) | const ORGANIZATION_FIELDS = gql`
constant ORGANIZATIONS_LIST (line 801) | const ORGANIZATIONS_LIST = gql`
constant ORGANIZATIONS_LIST_BASIC (line 823) | const ORGANIZATIONS_LIST_BASIC = gql`
constant MEMBERS_LIST_PG (line 832) | const MEMBERS_LIST_PG = gql`
constant MEMBERS_LIST (line 851) | const MEMBERS_LIST = gql`
constant MEMBERS_LIST_WITH_DETAILS (line 865) | const MEMBERS_LIST_WITH_DETAILS = gql`
constant ORGANIZATIONS_MEMBER_CONNECTION_LIST (line 882) | const ORGANIZATIONS_MEMBER_CONNECTION_LIST = gql`
constant USER_ORGANIZATION_LIST (line 922) | const USER_ORGANIZATION_LIST = gql`
constant USER_DETAILS (line 936) | const USER_DETAILS = gql`
constant ORGANIZATION_EVENT_CONNECTION_LIST (line 988) | const ORGANIZATION_EVENT_CONNECTION_LIST = gql`
constant ORGANIZATION_DONATION_CONNECTION_LIST (line 1044) | const ORGANIZATION_DONATION_CONNECTION_LIST = gql`
constant MEMBERSHIP_REQUEST_PG (line 1065) | const MEMBERSHIP_REQUEST_PG = gql`
constant USERS_CONNECTION_LIST (line 1094) | const USERS_CONNECTION_LIST = gql`
constant GET_COMMUNITY_DATA_PG (line 1183) | const GET_COMMUNITY_DATA_PG = gql`
constant SIGNIN_QUERY (line 1206) | const SIGNIN_QUERY = gql`
constant GET_COMMUNITY_SESSION_TIMEOUT_DATA_PG (line 1234) | const GET_COMMUNITY_SESSION_TIMEOUT_DATA_PG = gql`
constant GET_ORGANIZATION_VENUES_PG (line 1242) | const GET_ORGANIZATION_VENUES_PG = gql`
constant GET_USER_TAGS (line 1271) | const GET_USER_TAGS = gql`
constant GET_EVENTS_BY_ORGANIZATION_ID (line 1296) | const GET_EVENTS_BY_ORGANIZATION_ID = gql`
FILE: src/GraphQl/Queries/fundQueries.ts
constant FUND_LIST (line 13) | const FUND_LIST = gql`
constant FUND_CAMPAIGN (line 51) | const FUND_CAMPAIGN = gql`
constant FUND_CAMPAIGN_PLEDGE (line 72) | const FUND_CAMPAIGN_PLEDGE = gql`
constant USER_FUND_CAMPAIGNS (line 108) | const USER_FUND_CAMPAIGNS = gql`
constant USER_PLEDGES (line 133) | const USER_PLEDGES = gql`
FILE: src/GraphQl/Queries/userTagQueries.ts
constant USER_TAGS_ASSIGNED_MEMBERS (line 10) | const USER_TAGS_ASSIGNED_MEMBERS = gql`
constant USER_TAG_SUB_TAGS (line 60) | const USER_TAG_SUB_TAGS = gql`
constant USER_TAGS_MEMBERS_TO_ASSIGN_TO (line 119) | const USER_TAGS_MEMBERS_TO_ASSIGN_TO = gql`
FILE: src/components/AdminPortal/AddPeopleToTag/AddPeopleToTag.spec.tsx
function wait (line 28) | async function wait(): Promise<void> {
method merge (line 86) | merge(existing = {}, incoming) {
FILE: src/components/AdminPortal/AddPeopleToTag/AddPeopleToTag.tsx
constant GRID_COLUMN_MIN_WIDTH (line 74) | const GRID_COLUMN_MIN_WIDTH = 100;
FILE: src/components/AdminPortal/AddPeopleToTag/AddPeopleToTagsMocks.ts
constant MOCKS (line 5) | const MOCKS = [
constant MOCKS_ERROR (line 277) | const MOCKS_ERROR = [
constant MOCK_EMPTY (line 294) | const MOCK_EMPTY = [
constant MOCK_NON_ERROR (line 322) | const MOCK_NON_ERROR = [
FILE: src/components/AdminPortal/Advertisements/Advertisements.tsx
function Advertisements (line 51) | function Advertisements(): JSX.Element {
FILE: src/components/AdminPortal/Advertisements/AdvertisementsMocks.ts
type AdvertisementType (line 45) | type AdvertisementType = 'banner' | 'pop_up' | 'menu';
type IAttachment (line 47) | interface IAttachment {
type IAdvertisementNode (line 52) | interface IAdvertisementNode {
type IPageInfo (line 66) | interface IPageInfo {
type IEdge (line 73) | interface IEdge {
type IAdvertisementListMock (line 77) | interface IAdvertisementListMock {
type IAdvertisementNodeParams (line 101) | interface IAdvertisementNodeParams {
type IAdvertisementListParams (line 113) | interface IAdvertisementListParams {
type IBaseMutationMock (line 125) | interface IBaseMutationMock<T = unknown> {
function wait (line 199) | async function wait(ms = 100): Promise<void> {
FILE: src/components/AdminPortal/Advertisements/core/AdvertisementEntry/AdvertisementEntry.tsx
function AdvertisementEntry (line 55) | function AdvertisementEntry({
FILE: src/components/AdminPortal/Advertisements/core/AdvertisementRegister/AdvertisementRegister.tsx
function AdvertisementRegister (line 74) | function AdvertisementRegister({
FILE: src/components/AdminPortal/Advertisements/core/AdvertisementRegister/AdvertisementRegisterMocks.ts
type IPageInfo (line 8) | interface IPageInfo {
type IAdvertisementEdge (line 89) | interface IAdvertisementEdge {
FILE: src/components/AdminPortal/Advertisements/skeleton/AdvertisementSkeleton.tsx
function AdvertisementSkeleton (line 23) | function AdvertisementSkeleton() {
FILE: src/components/AdminPortal/AgendaFolder/AgendaFolderContainer.tsx
function AgendaFolderContainer (line 49) | function AgendaFolderContainer({
FILE: src/components/AdminPortal/AgendaFolder/Delete/AgendaFolderDeleteModal.spec.tsx
constant MOCKS_SUCCESS (line 29) | const MOCKS_SUCCESS: MockedResponse[] = [
constant MOCKS_ERROR (line 47) | const MOCKS_ERROR: MockedResponse[] = [
constant MOCKS_GRAPHQL_ERROR (line 59) | const MOCKS_GRAPHQL_ERROR: MockedResponse[] = [
FILE: src/components/AdminPortal/AgendaFolder/DragAndDrop/AgendaDragAndDrop.spec.tsx
constant MOCKS_SUCCESS_ITEM_SEQUENCE (line 190) | const MOCKS_SUCCESS_ITEM_SEQUENCE: MockedResponse[] = [
constant MOCKS_SUCCESS_FOLDER_SEQUENCE (line 231) | const MOCKS_SUCCESS_FOLDER_SEQUENCE: MockedResponse[] = [
constant MOCKS_ERROR_ITEM_SEQUENCE (line 274) | const MOCKS_ERROR_ITEM_SEQUENCE: MockedResponse[] = [
constant MOCKS_ERROR_FOLDER_SEQUENCE (line 308) | const MOCKS_ERROR_FOLDER_SEQUENCE: MockedResponse[] = [
FILE: src/components/AdminPortal/AgendaFolder/DragAndDrop/AgendaDragAndDrop.tsx
function AgendaDragAndDrop (line 42) | function AgendaDragAndDrop({
FILE: src/components/AdminPortal/AgendaFolder/Update/AgendaFolderUpdateModal.spec.tsx
constant MOCKS_SUCCESS (line 39) | const MOCKS_SUCCESS: MockedResponse[] = [
constant MOCKS_SUCCESS_TRIMMED (line 63) | const MOCKS_SUCCESS_TRIMMED: MockedResponse[] = [
constant MOCKS_SUCCESS_EMPTY_DESCRIPTION (line 87) | const MOCKS_SUCCESS_EMPTY_DESCRIPTION: MockedResponse[] = [
constant MOCKS_ERROR (line 111) | const MOCKS_ERROR: MockedResponse[] = [
FILE: src/components/AdminPortal/AgendaItems/Delete/AgendaItemsDeleteModal.spec.tsx
constant MOCK_AGENDA_ITEM_ID (line 25) | const MOCK_AGENDA_ITEM_ID = 'item123';
constant MOCKS_SUCCESS (line 27) | const MOCKS_SUCCESS: MockedResponse[] = [
constant MOCKS_ERROR (line 47) | const MOCKS_ERROR: MockedResponse[] = [
FILE: src/components/AdminPortal/ContriStats/ContriStats.tsx
function ContriStats (line 32) | function ContriStats({
FILE: src/components/AdminPortal/EventManagement/Dashboard/EventDashboard.mocks.ts
constant MOCKS_WITH_TIME (line 34) | const MOCKS_WITH_TIME = [
constant MOCKS_WITHOUT_TIME (line 73) | const MOCKS_WITHOUT_TIME = [
constant MOCKS_NO_EVENT (line 100) | const MOCKS_NO_EVENT = [
constant MOCKS_MISSING_DATA (line 114) | const MOCKS_MISSING_DATA = [
constant MOCKS_NO_LOCATION (line 126) | const MOCKS_NO_LOCATION = [
constant MOCKS_INVALID_DATETIME (line 165) | const MOCKS_INVALID_DATETIME = [
constant MOCKS_UNDEFINED_INVITE_ONLY (line 204) | const MOCKS_UNDEFINED_INVITE_ONLY = [
constant MOCKS_EMPTY_DATE_STRINGS (line 231) | const MOCKS_EMPTY_DATE_STRINGS = [
FILE: src/components/AdminPortal/EventManagement/Dashboard/EventDashboard.spec.tsx
function wait (line 84) | async function wait(ms = 500): Promise<void> {
FILE: src/components/AdminPortal/EventManagement/EventActionItems/EventActionItems.spec.tsx
type SortingButtonMock (line 101) | type SortingButtonMock = React.FC<{
constant MOCKS (line 373) | const MOCKS = [
constant MOCKS_RECURRING (line 389) | const MOCKS_RECURRING = [
constant MOCKS_LOADING (line 405) | const MOCKS_LOADING = [
constant MOCKS_ERROR (line 422) | const MOCKS_ERROR = [
type SortingButtonMock (line 461) | type SortingButtonMock = { resetFilterCount: () => void };
FILE: src/components/AdminPortal/EventManagement/EventActionItems/EventActionItems.tsx
type ItemStatus (line 56) | enum ItemStatus {
type ModalState (line 62) | enum ModalState {
type InterfaceEventActionItemsProps (line 69) | interface InterfaceEventActionItemsProps {
constant ROW_HEIGHT (line 74) | const ROW_HEIGHT = 65;
FILE: src/components/AdminPortal/EventManagement/EventAgenda/EventAgenda.spec.tsx
constant MOCKS_SUCCESS (line 90) | const MOCKS_SUCCESS: MockedResponse[] = [
constant MOCKS_LOADING (line 111) | const MOCKS_LOADING: MockedResponse[] = [
constant MOCKS_ERROR (line 130) | const MOCKS_ERROR: MockedResponse[] = [
FILE: src/components/AdminPortal/EventManagement/EventAgenda/EventAgenda.tsx
function EventAgenda (line 55) | function EventAgenda(props: { eventId: string }): JSX.Element {
FILE: src/components/AdminPortal/EventManagement/EventAttendance/Attendance/EventAttendance.spec.tsx
function mockLazyQuery (line 53) | function mockLazyQuery(returned: {
FILE: src/components/AdminPortal/EventManagement/EventAttendance/Attendance/EventAttendance.tsx
function EventAttendance (line 53) | function EventAttendance(): JSX.Element {
FILE: src/components/AdminPortal/EventManagement/EventAttendance/EventAttendanceMocks.ts
constant MOCKEVENT (line 3) | const MOCKEVENT = {
constant MOCKDETAIL (line 34) | const MOCKDETAIL = [
constant MOCKS (line 48) | const MOCKS = [
FILE: src/components/AdminPortal/EventManagement/EventAttendance/Statistics/EventStatistics.spec.tsx
type MockAttendee (line 81) | type MockAttendee = {
FILE: src/components/AdminPortal/EventManagement/EventAttendance/Statistics/EventStatistics.tsx
constant MIN_ADULT_AGE (line 84) | const MIN_ADULT_AGE = 18;
constant MAX_YOUNG_ADULT_AGE (line 85) | const MAX_YOUNG_ADULT_AGE = 40;
constant DESIGN_TOKEN (line 86) | const DESIGN_TOKEN = {
FILE: src/components/AdminPortal/EventManagement/EventRegistrant/EventRegistrants.tsx
function EventRegistrants (line 56) | function EventRegistrants(): JSX.Element {
FILE: src/components/AdminPortal/EventManagement/EventRegistrant/Registrations.mocks.ts
constant EVENT_DETAILS_MOCK (line 13) | const EVENT_DETAILS_MOCK: MockedResponse = {
constant RECURRING_EVENT_DETAILS_MOCK (line 29) | const RECURRING_EVENT_DETAILS_MOCK: MockedResponse = {
constant EVENT_CHECKINS_MOCK (line 46) | const EVENT_CHECKINS_MOCK: MockedResponse = {
constant EMPTY_EVENT_CHECKINS_MOCK (line 69) | const EMPTY_EVENT_CHECKINS_MOCK: MockedResponse = {
constant REGISTRANTS_MOCK (line 84) | const REGISTRANTS_MOCK: MockedResponse = {
constant EMPTY_REGISTRANTS_MOCK (line 117) | const EMPTY_REGISTRANTS_MOCK: MockedResponse = {
constant RECURRING_EVENT_REGISTRANTS_MOCK (line 129) | const RECURRING_EVENT_REGISTRANTS_MOCK: MockedResponse = {
constant REGISTRANTS_MISSING_DATE_MOCK (line 141) | const REGISTRANTS_MISSING_DATE_MOCK: MockedResponse = {
constant REGISTRANTS_MISSING_NAME_MOCK (line 164) | const REGISTRANTS_MISSING_NAME_MOCK: MockedResponse = {
constant REGISTRANTS_ERROR_USER_MOCK (line 187) | const REGISTRANTS_ERROR_USER_MOCK: MockedResponse = {
constant REMOVE_ATTENDEE_SUCCESS_MOCK (line 211) | const REMOVE_ATTENDEE_SUCCESS_MOCK: MockedResponse = {
constant REMOVE_ATTENDEE_ERROR_MOCK (line 225) | const REMOVE_ATTENDEE_ERROR_MOCK: MockedResponse = {
constant COMBINED_MOCKS (line 234) | const COMBINED_MOCKS: MockedResponse[] = [
constant EMPTY_STATE_MOCKS (line 242) | const EMPTY_STATE_MOCKS: MockedResponse[] = [
constant RECURRING_EVENT_MOCKS (line 248) | const RECURRING_EVENT_MOCKS: MockedResponse[] = [
constant MISSING_DATE_MOCKS (line 254) | const MISSING_DATE_MOCKS: MockedResponse[] = [
constant MISSING_NAME_MOCKS (line 260) | const MISSING_NAME_MOCKS: MockedResponse[] = [
constant ERROR_DELETION_MOCKS (line 266) | const ERROR_DELETION_MOCKS: MockedResponse[] = [
FILE: src/components/AdminPortal/EventRegistrantsModal/EventRegistrantsWrapper.spec.tsx
type RenderComponentProps (line 61) | type RenderComponentProps = React.ComponentProps<
FILE: src/components/AdminPortal/EventRegistrantsModal/Modal/AddOnSpot/AddOnSpotAttendee.spec.tsx
constant MOCKS (line 41) | const MOCKS = [
constant ERROR_MOCKS (line 67) | const ERROR_MOCKS = [
FILE: src/components/AdminPortal/EventRegistrantsModal/Modal/EventRegistrantsModal.spec.tsx
type ApolloMock (line 206) | type ApolloMock = MockedResponse<Record<string, unknown>>;
FILE: src/components/AdminPortal/LeftDrawer/LeftDrawer.tsx
type ILeftDrawerProps (line 31) | interface ILeftDrawerProps {
FILE: src/components/AdminPortal/OrgContriCards/OrgContriCards.tsx
function orgContriCards (line 37) | function orgContriCards(props: InterfaceOrgContriCardsProps): JSX.Element {
FILE: src/components/AdminPortal/OrgPeopleListCard/OrgPeopleListCard.spec.tsx
constant MOCKS (line 36) | const MOCKS = [
constant ERROR_MOCKS (line 56) | const ERROR_MOCKS = [
FILE: src/components/AdminPortal/OrgPeopleListCard/OrgPeopleListCard.tsx
function orgPeopleListCard (line 45) | function orgPeopleListCard(
FILE: src/components/AdminPortal/OrgSettings/ActionItemCategories/Modal/ActionItemCategoryModal.tsx
type IActionItemCategoryModal (line 18) | interface IActionItemCategoryModal {
FILE: src/components/AdminPortal/OrgSettings/ActionItemCategories/Modal/ActionItemCategoryViewModal.tsx
type ICategoryViewModalProps (line 16) | interface ICategoryViewModalProps {
FILE: src/components/AdminPortal/OrgSettings/ActionItemCategories/OrgActionItemCategories.tsx
type ModalState (line 53) | enum ModalState {
type CategoryStatus (line 60) | enum CategoryStatus {
type IActionItemCategoryProps (line 66) | interface IActionItemCategoryProps {
FILE: src/components/AdminPortal/OrgSettings/ActionItemCategories/OrgActionItemCategoryMocks.ts
constant MOCKS (line 14) | const MOCKS = [
constant MOCKS_EMPTY (line 359) | const MOCKS_EMPTY = [
constant MOCKS_ERROR (line 377) | const MOCKS_ERROR = [
FILE: src/components/AdminPortal/OrgSettings/General/DeleteOrg/DeleteOrg.tsx
function DeleteOrg (line 25) | function DeleteOrg(): JSX.Element {
FILE: src/components/AdminPortal/OrgSettings/General/GeneralSettings.spec.tsx
type InterfaceOrgUpdateProps (line 11) | interface InterfaceOrgUpdateProps {
FILE: src/components/AdminPortal/OrgSettings/General/GeneralSettings.tsx
type InterfaceGeneralSettingsProps (line 12) | interface InterfaceGeneralSettingsProps {
FILE: src/components/AdminPortal/OrgSettings/General/OrgUpdate/OrgUpdate.tsx
function OrgUpdate (line 37) | function OrgUpdate(props: InterfaceOrgUpdateProps): JSX.Element {
FILE: src/components/AdminPortal/OrgSettings/General/OrgUpdate/OrgUpdateMocks.ts
constant FIXED_UTC_TIMESTAMP (line 5) | const FIXED_UTC_TIMESTAMP = '2025-01-01T10:00:00.000Z';
constant MOCKS (line 66) | const MOCKS = [
constant MOCKS_QUERY_ERROR (line 95) | const MOCKS_QUERY_ERROR = [
constant MOCKS_QUERY_ERROR_FETCH (line 106) | const MOCKS_QUERY_ERROR_FETCH = [
constant MOCKS_UPDATE_ERROR (line 116) | const MOCKS_UPDATE_ERROR = [
FILE: src/components/AdminPortal/OrganizationScreen/OrganizationScreen.spec.tsx
constant MOCKS (line 94) | const MOCKS = [
FILE: src/components/AdminPortal/TagActions/Node/TagNode.tsx
type InterfaceTagNodeProps (line 46) | interface InterfaceTagNodeProps {
FILE: src/components/AdminPortal/TagActions/Node/TagNodeMocks.ts
constant MOCKS1 (line 3) | const MOCKS1 = [
constant MOCKS_ERROR_SUBTAGS_QUERY1 (line 64) | const MOCKS_ERROR_SUBTAGS_QUERY1 = [
FILE: src/components/AdminPortal/TagActions/TagActions.spec.tsx
function wait (line 28) | async function wait(ms = 500): Promise<void> {
FILE: src/components/AdminPortal/TagActions/TagActions.tsx
type InterfaceUserTagsAncestorData (line 55) | interface InterfaceUserTagsAncestorData {
FILE: src/components/AdminPortal/TagActions/TagActionsMocks.ts
function createEdge (line 9) | function createEdge(
constant MOCKS (line 116) | const MOCKS = [
constant MOCKS_ERROR_SUBTAGS_QUERY (line 359) | const MOCKS_ERROR_SUBTAGS_QUERY = [
constant MOCKS_ERROR_ASSIGN_OR_REMOVAL_TAGS (line 406) | const MOCKS_ERROR_ASSIGN_OR_REMOVAL_TAGS = [
FILE: src/components/AdminPortal/UpdateSession/UpdateSession.spec.tsx
constant MOCKS (line 31) | const MOCKS = [
FILE: src/components/AdminPortal/UpdateSession/UpdateSession.tsx
type TimeoutDataType (line 65) | type TimeoutDataType = { inactivityTimeoutDuration: number };
FILE: src/components/AdminPortal/Venues/Modal/VenueModal.spec.tsx
constant MOCKS (line 25) | const MOCKS = [
function wait (line 250) | async function wait(ms = 100): Promise<void> {
method constructor (line 2142) | constructor() {
FILE: src/components/AdminPortal/Venues/Modal/VenueModal.tsx
type InterfaceVenueModalProps (line 50) | interface InterfaceVenueModalProps {
type InterfaceVenueFormState (line 58) | interface InterfaceVenueFormState {
FILE: src/components/AdminPortal/Venues/VenueCard.tsx
type InterfaceVenueCardProps (line 40) | interface InterfaceVenueCardProps {
FILE: src/components/AdminPortal/Venues/VenueCardMocks.ts
constant MOCK_VENUE_ITEM (line 1) | const MOCK_VENUE_ITEM = {
constant MOCK_VENUE_ITEM_WITH_IMAGE (line 11) | const MOCK_VENUE_ITEM_WITH_IMAGE = {
constant MOCK_VENUE_ITEM_LONG_TEXT (line 26) | const MOCK_VENUE_ITEM_LONG_TEXT = {
FILE: src/components/Auth/OAuthButton/OAuthButton.tsx
type OAuthMode (line 10) | type OAuthMode = 'login' | 'register' | 'link';
type OAuthSize (line 15) | type OAuthSize = 'sm' | 'md' | 'lg';
type Props (line 20) | type Props = {
FILE: src/components/Auth/PasswordStrengthIndicator/RequirementRow.tsx
type InterfaceRequirementRowProps (line 6) | interface InterfaceRequirementRowProps {
FILE: src/components/Auth/theme/oauthBrand.tsx
type InterfaceProviderBrand (line 10) | interface InterfaceProviderBrand {
method icon (line 22) | get icon(): ReactElement {
method icon (line 29) | get icon(): ReactElement {
function brandForProvider (line 49) | function brandForProvider(
FILE: src/components/CursorPaginationManager/CursorPaginationManager.spec.tsx
type InterfaceCursorPaginationManagerHandle (line 13) | interface InterfaceCursorPaginationManagerHandle<T> {
constant MOCK_QUERY (line 24) | const MOCK_QUERY = gql`
constant MOCK_NESTED_QUERY (line 46) | const MOCK_NESTED_QUERY = gql`
type User (line 70) | type User = {
type Member (line 76) | type Member = {
FILE: src/components/CursorPaginationManager/CursorPaginationManager.tsx
function extractDataFromPath (line 22) | function extractDataFromPath<TNode>(
function extractNodes (line 55) | function extractNodes<TNode>(
function CursorPaginationManager (line 128) | function CursorPaginationManager<
FILE: src/components/EventCalender/EventCalenderMocks.ts
constant MOCKS (line 77) | const MOCKS = [
FILE: src/components/EventCalender/Header/EventHeader.tsx
function EventHeader (line 40) | function EventHeader({
FILE: src/components/EventCalender/Monthly/EventCalendar.spec.tsx
method holidays (line 49) | get holidays() {
function wait (line 55) | async function wait(ms = 200): Promise<void> {
function MockDate (line 663) | function MockDate(...args: unknown[]) {
function MockDate (line 716) | function MockDate(...args: unknown[]) {
function MockDate (line 769) | function MockDate(...args: unknown[]) {
FILE: src/components/EventCalender/Monthly/EventCalender.tsx
function handleResize (line 84) | function handleResize(): void {
FILE: src/components/EventCalender/Yearly/YearlyEventCalender.spec.tsx
function getToggleButtonForDate (line 15) | function getToggleButtonForDate(
function clickExpandForDate (line 58) | async function clickExpandForDate(
type CalendarEventItem (line 78) | type CalendarEventItem = NonNullable<
FILE: src/components/EventDashboardScreen/EventDashboardScreenMocks.ts
constant MOCKS (line 3) | const MOCKS = [
FILE: src/components/EventStats/Statistics/EventStats.tsx
type ModalPropType (line 44) | type ModalPropType = {
FILE: src/components/EventStats/Statistics/Feedback/Feedback.spec.tsx
type InterfacePieChartProps (line 18) | interface InterfacePieChartProps {
FILE: src/components/HolidayCards/HolidayCard.tsx
type InterfaceHolidayList (line 21) | interface InterfaceHolidayList {
FILE: src/components/IconComponent/IconComponent.tsx
type IIconComponent (line 59) | interface IIconComponent {
FILE: src/components/LeftDrawerOrg/LeftDrawerOrg.spec.tsx
type IMockedResponse (line 71) | interface IMockedResponse {
FILE: src/components/LeftDrawerOrg/LeftDrawerOrg.tsx
type ILeftDrawerProps (line 50) | interface ILeftDrawerProps {
FILE: src/components/NotificationIcon/NotificationIcon.spec.tsx
type InterfaceNotification (line 40) | interface InterfaceNotification {
FILE: src/components/NotificationIcon/NotificationIcon.tsx
type InterfaceNotification (line 22) | interface InterfaceNotification {
FILE: src/components/Pagination/Navigator/Pagination.tsx
type InterfaceTablePaginationActionsProps (line 39) | interface InterfaceTablePaginationActionsProps {
function Pagination (line 49) | function Pagination(props: InterfaceTablePaginationActionsProps): JSX.El...
FILE: src/components/ProfileCard/ProfileCard.spec.tsx
constant MOCKS (line 27) | const MOCKS = [
FILE: src/components/ProfileDropdown/ProfileDropdown.spec.tsx
constant MOCKS (line 32) | const MOCKS = [
FILE: src/components/SignOut/SignOut.tsx
type ISignOutProps (line 47) | interface ISignOutProps {
FILE: src/components/UserDetails/UserEvents.spec.tsx
function createMockQueryResult (line 97) | function createMockQueryResult(
FILE: src/components/UserDetails/UserOrganizations.spec.tsx
constant USER_ID (line 45) | const USER_ID = 'user-1';
type InterfaceUserDetailsVariables (line 175) | interface InterfaceUserDetailsVariables {
type InterfaceJoinedOrgsVariables (line 181) | interface InterfaceJoinedOrgsVariables {
FILE: src/components/UserPortal/ChatRoom/ChatHeader.tsx
function ChatHeader (line 30) | function ChatHeader({
FILE: src/components/UserPortal/ChatRoom/ChatRoom.spec.tsx
constant CHAT_BY_ID_MOCK (line 210) | const CHAT_BY_ID_MOCK = {
constant CHAT_BY_ID_GROUP_MOCK (line 227) | const CHAT_BY_ID_GROUP_MOCK = {
constant UNREAD_CHATS_MOCK (line 244) | const UNREAD_CHATS_MOCK = {
constant SEND_MESSAGE_MOCK (line 256) | const SEND_MESSAGE_MOCK = {
constant SEND_MESSAGE_UPLOADED_MOCK (line 288) | const SEND_MESSAGE_UPLOADED_MOCK = {
constant EDIT_MESSAGE_MOCK (line 320) | const EDIT_MESSAGE_MOCK = {
constant DELETE_MESSAGE_MOCK (line 351) | const DELETE_MESSAGE_MOCK = {
constant MARK_READ_MOCK (line 372) | const MARK_READ_MOCK = {
constant MARK_READ_NEWMSG_MOCK (line 389) | const MARK_READ_NEWMSG_MOCK = {
constant MARK_READ_SUBMSG_MOCK (line 406) | const MARK_READ_SUBMSG_MOCK = {
constant MESSAGE_SENT_SUBSCRIPTION_MOCK (line 423) | const MESSAGE_SENT_SUBSCRIPTION_MOCK = {
constant LOAD_MORE_MESSAGES_MOCK (line 457) | const LOAD_MORE_MESSAGES_MOCK = {
constant CHAT_BY_ID_AFTER_SEND_MOCK (line 504) | const CHAT_BY_ID_AFTER_SEND_MOCK = {
constant CHAT_BY_ID_AFTER_EDIT_MOCK (line 545) | const CHAT_BY_ID_AFTER_EDIT_MOCK = {
constant CHAT_BY_ID_AFTER_DELETE_MOCK (line 585) | const CHAT_BY_ID_AFTER_DELETE_MOCK = {
constant CHAT_BY_ID_ERROR_MOCK (line 628) | const CHAT_BY_ID_ERROR_MOCK = {
constant SEND_MESSAGE_ERROR_MOCK (line 641) | const SEND_MESSAGE_ERROR_MOCK = {
constant CHAT_WITH_PARENT_MESSAGE_MOCK (line 656) | const CHAT_WITH_PARENT_MESSAGE_MOCK = {
FILE: src/components/UserPortal/ChatRoom/ChatRoom.tsx
type IChatRoomProps (line 44) | interface IChatRoomProps {
function chatRoom (line 55) | function chatRoom(props: IChatRoomProps): JSX.Element {
FILE: src/components/UserPortal/ChatRoom/EmptyChatState.tsx
function EmptyChatState (line 17) | function EmptyChatState({
FILE: src/components/UserPortal/ChatRoom/MessageImage.tsx
type InterfaceMessageImageProps (line 29) | interface InterfaceMessageImageProps {
FILE: src/components/UserPortal/ChatRoom/MessageInput.tsx
type IMessageInputProps (line 46) | interface IMessageInputProps {
function MessageInput (line 60) | function MessageInput({
FILE: src/components/UserPortal/ChatRoom/MessageItem.tsx
type IMessageItemProps (line 41) | interface IMessageItemProps {
function MessageItem (line 56) | function MessageItem({
FILE: src/components/UserPortal/ChatRoom/types.ts
type INewChat (line 26) | interface INewChat {
type InterfaceChatHeaderProps (line 100) | interface InterfaceChatHeaderProps {
FILE: src/components/UserPortal/CommentCard/CommentCard.spec.tsx
type InterfaceGraphQLErrorWithCode (line 34) | interface InterfaceGraphQLErrorWithCode extends Error {
constant MOCKS (line 47) | const MOCKS = [
constant DELETE_COMMENT_MOCK (line 86) | const DELETE_COMMENT_MOCK = {
constant UPDATE_COMMENT_MOCK (line 104) | const UPDATE_COMMENT_MOCK = {
constant DELETE_COMMENT_MOCK_ERROR (line 124) | const DELETE_COMMENT_MOCK_ERROR = {
constant UPDATE_COMMENT_MOCK_ERROR (line 136) | const UPDATE_COMMENT_MOCK_ERROR = {
FILE: src/components/UserPortal/CommentCard/CommentCard.tsx
function CommentCard (line 72) | function CommentCard({
FILE: src/components/UserPortal/ContactCard/ContactCard.spec.tsx
function wait (line 52) | async function wait(ms = 50): Promise<void> {
FILE: src/components/UserPortal/CreateDirectChat/CreateDirectChat.spec.tsx
constant ORGANIZATION_MEMBERS_MOCK (line 74) | const ORGANIZATION_MEMBERS_MOCK = {
constant ORGANIZATION_MEMBERS_SEARCH_MOCK (line 104) | const ORGANIZATION_MEMBERS_SEARCH_MOCK = {
constant CREATE_CHAT_MOCK (line 134) | const CREATE_CHAT_MOCK = {
constant CREATE_CHAT_MEMBERSHIP_MOCK_1 (line 156) | const CREATE_CHAT_MEMBERSHIP_MOCK_1 = {
constant CREATE_CHAT_MEMBERSHIP_MOCK_2 (line 170) | const CREATE_CHAT_MEMBERSHIP_MOCK_2 = {
FILE: src/components/UserPortal/CreateDirectChat/CreateDirectChat.tsx
function createDirectChatModal (line 137) | function createDirectChatModal({
FILE: src/components/UserPortal/CreateGroupChat/CreateGroupChat.spec.tsx
constant ORGANIZATION_MEMBERS_MOCK (line 77) | const ORGANIZATION_MEMBERS_MOCK = {
constant ORGANIZATION_MEMBERS_SEARCH_MOCK (line 131) | const ORGANIZATION_MEMBERS_SEARCH_MOCK = {
constant CREATE_CHAT_MOCK (line 173) | const CREATE_CHAT_MOCK = {
constant CREATE_CHAT_MOCK_NO_AVATAR (line 202) | const CREATE_CHAT_MOCK_NO_AVATAR = {
constant CREATE_CHAT_MEMBERSHIP_ADMIN_MOCK (line 231) | const CREATE_CHAT_MEMBERSHIP_ADMIN_MOCK = {
constant CREATE_CHAT_MEMBERSHIP_MEMBER_MOCK (line 254) | const CREATE_CHAT_MEMBERSHIP_MEMBER_MOCK = {
constant CREATE_CHAT_MEMBERSHIP_ADMIN_MOCK_NO_AVATAR (line 277) | const CREATE_CHAT_MEMBERSHIP_ADMIN_MOCK_NO_AVATAR = {
FILE: src/components/UserPortal/CreateGroupChat/CreateGroupChat.tsx
type InterfaceCreateGroupChatProps (line 72) | interface InterfaceCreateGroupChatProps {
function CreateGroupChat (line 82) | function CreateGroupChat({
FILE: src/components/UserPortal/DonationCard/DonationCard.spec.tsx
function wait (line 23) | async function wait(ms = 50): Promise<void> {
FILE: src/components/UserPortal/EventCard/EventCard.spec.tsx
constant MOCKS (line 34) | const MOCKS = [
FILE: src/components/UserPortal/EventCard/EventCard.tsx
function EventCard (line 72) | function EventCard({
FILE: src/components/UserPortal/GroupChatDetails/GroupChatDetails.spec.tsx
type MaybeChat (line 143) | type MaybeChat = Partial<ChatType>;
FILE: src/components/UserPortal/GroupChatDetails/GroupChatDetails.tsx
function GroupChatDetails (line 85) | function GroupChatDetails({
FILE: src/components/UserPortal/GroupChatDetails/GroupChatDetailsMocks.tsx
function createUser (line 75) | function createUser(
function createMessage (line 90) | function createMessage(
FILE: src/components/UserPortal/OrganizationSidebar/OrganizationSidebar.spec.tsx
constant MOCKS (line 38) | const MOCKS = [
function wait (line 143) | async function wait(ms = 100): Promise<void> {
FILE: src/components/UserPortal/OrganizationSidebar/OrganizationSidebar.tsx
function OrganizationSidebar (line 45) | function OrganizationSidebar(): JSX.Element {
FILE: src/components/UserPortal/UserNavbar/UserNavbar.spec.tsx
function wait (line 79) | async function wait(ms = 100): Promise<void> {
constant MOCKS (line 87) | const MOCKS = [
FILE: src/components/UserPortal/UserNavbar/UserNavbar.tsx
function userNavbar (line 63) | function userNavbar(): JSX.Element {
FILE: src/components/UserPortal/UserSidebar/UserSidebar.spec.tsx
type DrawerItems (line 111) | type DrawerItems = import('plugin/types').IDrawerExtension
FILE: src/components/UserPortal/UserSidebar/UserSidebar.tsx
type InterfaceUserSidebarProps (line 23) | interface InterfaceUserSidebarProps {
FILE: src/components/UserPortal/UserSidebarOrg/UserSidebarOrg.spec.tsx
constant CURRENT_USER_REGULAR_MOCK (line 111) | const CURRENT_USER_REGULAR_MOCK = createCurrentUserMock('regular');
constant CURRENT_USER_ADMIN_MOCK (line 112) | const CURRENT_USER_ADMIN_MOCK = createCurrentUserMock('administrator');
constant MOCKS (line 114) | const MOCKS = [
constant MOCKS_WITH_IMAGE (line 180) | const MOCKS_WITH_IMAGE = [
constant MOCKS_ADMIN (line 247) | const MOCKS_ADMIN = [CURRENT_USER_ADMIN_MOCK, ...MOCKS.slice(1)];
function wait (line 265) | async function wait(ms = 100): Promise<void> {
FILE: src/components/UserPortal/UserSidebarOrg/UserSidebarOrg.tsx
type InterfaceUserSidebarOrgProps (line 29) | interface InterfaceUserSidebarOrgProps {
FILE: src/components/UsersTableItem/UserTableItem.spec.tsx
function wait (line 24) | async function wait(ms = 100): Promise<void> {
FILE: src/components/UsersTableItem/UserTableItemMocks.ts
constant MOCKS (line 7) | const MOCKS = [
constant MOCKS2 (line 57) | const MOCKS2 = [
constant MOCKS_UPDATE (line 91) | const MOCKS_UPDATE = [
FILE: src/components/UsersTableItem/UsersTableItem.tsx
type Props (line 27) | type Props = {
function goToOrg (line 124) | function goToOrg(_id: string): void {
function handleCreator (line 129) | function handleCreator(): void {
function onHideRemoveUserModal (line 157) | function onHideRemoveUserModal(): void {
function onHideBlockUserModal (line 164) | function onHideBlockUserModal(): void {
FILE: src/config/oauthProviders.ts
constant OAUTH_PROVIDERS (line 13) | const OAUTH_PROVIDERS: Record<OAuthProviderKey, IOAuthProviderConfig> = {
FILE: src/hooks/auth/useAuthNotifications.ts
constant MAX_AUTH_ERROR_SUFFIX_LENGTH (line 4) | const MAX_AUTH_ERROR_SUFFIX_LENGTH = 120;
type InterfaceToastConfig (line 42) | interface InterfaceToastConfig {
function useAuthNotifications (line 58) | function useAuthNotifications(
FILE: src/hooks/auth/useRegistration.spec.ts
constant SUCCESS_MOCK (line 28) | const SUCCESS_MOCK: MockedResponse[] = [
constant ERROR_MOCK (line 51) | const ERROR_MOCK: MockedResponse[] = [
FILE: src/hooks/auth/useRegistration.ts
type RegistrationErrorCodeType (line 13) | type RegistrationErrorCodeType =
class RegistrationError (line 20) | class RegistrationError extends Error {
method constructor (line 21) | constructor(
type IRegistrationSuccessResult (line 34) | interface IRegistrationSuccessResult {
type IUseRegistrationProps (line 43) | interface IUseRegistrationProps {
type IRegisterInput (line 53) | interface IRegisterInput {
FILE: src/hooks/useAvatarUpload.ts
function useAvatarUpload (line 23) | function useAvatarUpload(initialUrl?: string): {
FILE: src/hooks/useFieldValidation.ts
function useFieldValidation (line 16) | function useFieldValidation<T>(
FILE: src/hooks/usePasswordVisibility.ts
function usePasswordVisibility (line 10) | function usePasswordVisibility(
FILE: src/index.spec.tsx
type InterfaceNotificationToastMock (line 33) | interface InterfaceNotificationToastMock {
type InterfaceLocalStorageMock (line 37) | interface InterfaceLocalStorageMock {
type InterfaceHeaders (line 41) | interface InterfaceHeaders {
type InterfaceErrorCallbackParams (line 46) | interface InterfaceErrorCallbackParams {
FILE: src/index.tsx
constant BEARER_PREFIX (line 53) | const BEARER_PREFIX = 'Bearer ';
method merge (line 225) | merge(existing, incoming) {
method merge (line 240) | merge(_existing, incoming) {
FILE: src/install/index.ts
function main (line 14) | async function main(): Promise<void> {
function promptDockerChoice (line 73) | async function promptDockerChoice(): Promise<boolean> {
function promptDockerModeChoice (line 89) | async function promptDockerModeChoice(): Promise<DockerMode> {
function showRootlessDockerGuidance (line 112) | function showRootlessDockerGuidance(): void {
function checkRootlessPrerequisites (line 122) | async function checkRootlessPrerequisites(
function promptPackagesToInstall (line 193) | async function promptPackagesToInstall(
function displaySuccessMessage (line 223) | function displaySuccessMessage(packagesInstalled: string[]): void {
function handleDirectExecutionError (line 245) | function handleDirectExecutionError(error: unknown): void {
function runIfDirectExecution (line 259) | function runIfDirectExecution(
FILE: src/install/os/detector.ts
function isRunningInWsl (line 7) | function isRunningInWsl(): boolean {
function detectOS (line 29) | function detectOS(): IOSInfo {
FILE: src/install/os/linux.ts
function installTypeScript (line 5) | async function installTypeScript(): Promise<void> {
function installDocker (line 21) | async function installDocker(os: IOSInfo): Promise<void> {
FILE: src/install/os/macos.ts
function installTypeScript (line 4) | async function installTypeScript(): Promise<void> {
function installDocker (line 20) | async function installDocker(): Promise<void> {
FILE: src/install/os/windows.ts
function installTypeScript (line 4) | async function installTypeScript(): Promise<void> {
function installDocker (line 45) | async function installDocker(): Promise<void> {
FILE: src/install/packages/index.ts
function installPackage (line 9) | async function installPackage(
function installWindowsPackage (line 25) | async function installWindowsPackage(pkg: PackageName): Promise<void> {
function installLinuxPackage (line 36) | async function installLinuxPackage(
function installMacOSPackage (line 50) | async function installMacOSPackage(pkg: PackageName): Promise<void> {
FILE: src/install/types.ts
type OS (line 1) | type OS = 'windows' | 'linux' | 'macos';
type LinuxDistro (line 2) | type LinuxDistro = 'ubuntu' | 'debian' | 'other';
type IOSInfo (line 4) | interface IOSInfo {
type IPackageStatus (line 11) | interface IPackageStatus {
constant PACKAGE_NAMES (line 17) | const PACKAGE_NAMES = ['typescript', 'docker'] as const;
type PackageName (line 19) | type PackageName = (typeof PACKAGE_NAMES)[number];
FILE: src/install/utils/checker.ts
function checkInstalledPackages (line 5) | async function checkInstalledPackages(
function checkPackage (line 44) | async function checkPackage(pkg: PackageName): Promise<IPackageStatus> {
FILE: src/install/utils/checkers/docker.ts
function checkDocker (line 4) | async function checkDocker(): Promise<IPackageStatus> {
FILE: src/install/utils/checkers/typescript.ts
function checkTypeScript (line 4) | async function checkTypeScript(): Promise<IPackageStatus> {
FILE: src/install/utils/exec.ts
type ExecFunction (line 7) | type ExecFunction = typeof promisifiedExec;
type IExecOptions (line 9) | interface IExecOptions {
type IExecResult (line 15) | interface IExecResult {
function execCommand (line 25) | async function execCommand(
function commandExists (line 64) | async function commandExists(command: string): Promise<boolean> {
function checkVersion (line 77) | async function checkVersion(
FILE: src/install/utils/logger.ts
function logSuccess (line 6) | function logSuccess(message: string): void {
function logError (line 10) | function logError(message: string): void {
function logWarning (line 14) | function logWarning(message: string): void {
function logInfo (line 18) | function logInfo(message: string): void {
function logStep (line 22) | function logStep(message: string): void {
type ISpinner (line 26) | interface ISpinner {
function createSpinner (line 37) | function createSpinner(message: string): ISpinner {
FILE: src/plugin/components/PluginInjector.tsx
type IPluginInjectorProps (line 9) | interface IPluginInjectorProps {
FILE: src/plugin/graphql-service.ts
type IPlugin (line 20) | interface IPlugin {
type ICreatePluginInput (line 30) | interface ICreatePluginInput {
type IInstallPluginInput (line 34) | interface IInstallPluginInput {
type IUpdatePluginInput (line 38) | interface IUpdatePluginInput {
type IDeletePluginInput (line 45) | interface IDeletePluginInput {
class PluginGraphQLService (line 82) | class PluginGraphQLService {
method constructor (line 85) | constructor(apolloClient: ApolloClient<unknown>) {
method getAllPlugins (line 89) | async getAllPlugins(): Promise<IPlugin[]> {
method createPlugin (line 102) | async createPlugin(input: ICreatePluginInput): Promise<IPlugin | null> {
method installPlugin (line 116) | async installPlugin(input: IInstallPluginInput): Promise<IPlugin | nul...
method updatePlugin (line 130) | async updatePlugin(input: IUpdatePluginInput): Promise<IPlugin | null> {
method deletePlugin (line 144) | async deletePlugin(
FILE: src/plugin/hooks.ts
function usePluginDrawerItems (line 9) | function usePluginDrawerItems(
function usePluginRoutes (line 69) | function usePluginRoutes(
function useLoadedPlugins (line 129) | function useLoadedPlugins() {
function usePluginInjectors (line 155) | function usePluginInjectors(
FILE: src/plugin/manager.ts
class PluginManager (line 15) | class PluginManager {
method constructor (line 22) | constructor(apolloClient?: ApolloClient<unknown>) {
method setApolloClient (line 43) | setApolloClient(apolloClient: ApolloClient<unknown>): void {
method initializePlugins (line 51) | private async initializePlugins(): Promise<void> {
method markAsInitialized (line 81) | private markAsInitialized(): void {
method loadPlugin (line 87) | async loadPlugin(pluginId: string): Promise<boolean> {
method unloadPlugin (line 91) | async unloadPlugin(pluginId: string): Promise<boolean> {
method installPlugin (line 95) | async installPlugin(pluginId: string): Promise<boolean> {
method uninstallPlugin (line 99) | async uninstallPlugin(pluginId: string): Promise<boolean> {
method activatePlugin (line 103) | async activatePlugin(pluginId: string): Promise<boolean> {
method deactivatePlugin (line 107) | async deactivatePlugin(pluginId: string): Promise<boolean> {
method togglePluginStatus (line 111) | async togglePluginStatus(
method refreshPluginDiscovery (line 119) | async refreshPluginDiscovery(): Promise<void> {
method getLoadedPlugins (line 124) | getLoadedPlugins(): ILoadedPlugin[] {
method getLoadedPlugin (line 128) | getLoadedPlugin(pluginId: string): ILoadedPlugin | undefined {
method getPluginComponent (line 132) | getPluginComponent(
method getPluginCount (line 139) | getPluginCount(): number {
method getActivePluginCount (line 143) | getActivePluginCount(): number {
method getExtensionPoints (line 148) | getExtensionPoints<T extends keyof IExtensionRegistry>(
method on (line 155) | on(event: string, callback: (...args: unknown[]) => void): void {
method off (line 159) | off(event: string, callback: (...args: unknown[]) => void): void {
method initializePluginSystem (line 164) | async initializePluginSystem(): Promise<void> {
method isSystemInitialized (line 173) | isSystemInitialized(): boolean {
function getPluginManager (line 181) | function getPluginManager(
function resetPluginManager (line 192) | function resetPluginManager(): void {
FILE: src/plugin/managers/discovery.ts
class DiscoveryManager (line 11) | class DiscoveryManager {
method constructor (line 15) | constructor(graphqlService?: PluginGraphQLService) {
method setGraphQLService (line 19) | setGraphQLService(service: PluginGraphQLService): void {
method getPluginIndex (line 23) | getPluginIndex(): IPlugin[] {
method setPluginIndex (line 27) | setPluginIndex(index: IPlugin[]): void {
method findPluginInIndex (line 31) | findPluginInIndex(pluginId: string): IPlugin | undefined {
method isPluginActivated (line 35) | isPluginActivated(pluginId: string): boolean {
method isPluginInstalled (line 40) | isPluginInstalled(pluginId: string): boolean {
method loadPluginIndexFromGraphQL (line 45) | async loadPluginIndexFromGraphQL(): Promise<void> {
method discoverPlugins (line 56) | async discoverPlugins(): Promise<string[]> {
method loadPluginManifest (line 79) | async loadPluginManifest(pluginId: string): Promise<IPluginManifest> {
method importPluginModule (line 110) | private async importPluginModule(
method loadPluginComponents (line 116) | async loadPluginComponents(
method normalizeMainFile (line 139) | private normalizeMainFile(mainFile: string): string {
method syncPluginWithGraphQL (line 146) | async syncPluginWithGraphQL(pluginId: string): Promise<void> {
method removePluginFromGraphQL (line 160) | async removePluginFromGraphQL(pluginId: string): Promise<void> {
method updatePluginStatusInGraphQL (line 177) | async updatePluginStatusInGraphQL(
FILE: src/plugin/managers/event-manager.ts
class EventManager (line 6) | class EventManager {
method on (line 10) | on(event: string, callback: (...args: unknown[]) => void): void {
method off (line 27) | off(event: string, callback: (...args: unknown[]) => void): void {
method emit (line 45) | emit(event: string, ...args: unknown[]): void {
method removeAllListeners (line 63) | removeAllListeners(event?: string): void {
method getListenerCount (line 71) | getListenerCount(event: string): number {
method getEvents (line 76) | getEvents(): string[] {
FILE: src/plugin/managers/extension-registry.ts
class ExtensionRegistryManager (line 12) | class ExtensionRegistryManager {
method getExtensionRegistry (line 30) | getExtensionRegistry(): IExtensionRegistry {
method registerExtensionPoints (line 34) | registerExtensionPoints(pluginId: string, manifest: IPluginManifest): ...
method clearRouteExtensions (line 45) | private clearRouteExtensions(pluginId: string): void {
method registerRouteExtensions (line 63) | private registerRouteExtensions(
method clearDrawerExtensions (line 114) | private clearDrawerExtensions(pluginId: string): void {
method registerDrawerExtensions (line 132) | private registerDrawerExtensions(
method clearInjectorExtensions (line 183) | private clearInjectorExtensions(pluginId: string): void {
method registerInjectorExtensions (line 198) | private registerInjectorExtensions(
method unregisterExtensionPoints (line 239) | unregisterExtensionPoints(pluginId: string): void {
method getExtensionPoints (line 245) | getExtensionPoints<T extends keyof IExtensionRegistry>(
FILE: src/plugin/managers/lifecycle.spec.ts
constant VALID_PLUGIN_ID (line 16) | const VALID_PLUGIN_ID = 'TestPlugin_1';
constant INVALID_PLUGIN_ID (line 17) | const INVALID_PLUGIN_ID = 'test-plugin';
constant UNINSTALLED_PLUGIN_ID (line 18) | const UNINSTALLED_PLUGIN_ID = 'NewPlugin';
function createManager (line 39) | function createManager() {
FILE: src/plugin/managers/lifecycle.ts
type IPluginLifecycleHooks (line 13) | interface IPluginLifecycleHooks {
class LifecycleManager (line 20) | class LifecycleManager {
method constructor (line 23) | constructor(
method getLoadedPlugins (line 29) | getLoadedPlugins(): ILoadedPlugin[] {
method getLoadedPlugin (line 33) | getLoadedPlugin(pluginId: string): ILoadedPlugin | undefined {
method getPluginComponent (line 40) | getPluginComponent(
method getPluginCount (line 56) | getPluginCount(): number {
method getActivePluginCount (line 60) | getActivePluginCount(): number {
method loadPlugin (line 66) | async loadPlugin(pluginId: string): Promise<boolean> {
method unloadPlugin (line 110) | async unloadPlugin(pluginId: string): Promise<boolean> {
method togglePluginStatus (line 138) | async togglePluginStatus(
method activatePlugin (line 149) | async activatePlugin(pluginId: string): Promise<boolean> {
method deactivatePlugin (line 185) | async deactivatePlugin(pluginId: string): Promise<boolean> {
method installPlugin (line 221) | async installPlugin(pluginId: string): Promise<boolean> {
method uninstallPlugin (line 275) | async uninstallPlugin(pluginId: string): Promise<boolean> {
method isValidPluginId (line 302) | private isValidPluginId(pluginId: string): boolean {
method determineInitialPluginStatus (line 314) | private determineInitialPluginStatus(pluginId: string): PluginStatus {
method handlePluginLoadError (line 325) | private handlePluginLoadError(pluginId: string, error: unknown): void {
method updateLocalPluginStatus (line 349) | private updateLocalPluginStatus(
method updateExtensionPoints (line 359) | private async updateExtensionPoints(
method attemptPluginDirectoryDeletion (line 382) | private async attemptPluginDirectoryDeletion(
method callOnInstallHook (line 403) | private async callOnInstallHook(
method callOnActivateHook (line 434) | private async callOnActivateHook(
method callOnDeactivateHook (line 465) | private async callOnDeactivateHook(
method callOnUninstallHook (line 496) | private async callOnUninstallHook(
FILE: src/plugin/registry.tsx
function createErrorComponent (line 34) | function createErrorComponent(
function createLazyPluginComponent (line 69) | function createLazyPluginComponent(
function getPluginManifest (line 105) | async function getPluginManifest(
function extractComponentNames (line 131) | function extractComponentNames(manifest: IPluginManifest): Set<string> {
function registerPluginDynamically (line 177) | async function registerPluginDynamically(
function discoverAndRegisterAllPlugins (line 211) | async function discoverAndRegisterAllPlugins(): Promise<void> {
function isPluginRegistered (line 235) | function isPluginRegistered(pluginId: string): boolean {
function getPluginComponents (line 242) | function getPluginComponents(
function getPluginComponent (line 251) | function getPluginComponent(
function initializePluginSystem (line 268) | async function initializePluginSystem(): Promise<void> {
FILE: src/plugin/routes/PluginRoutes.spec.tsx
function createStubComponent (line 17) | function createStubComponent(testId: string, label: string) {
function createRouteRenderer (line 24) | function createRouteRenderer() {
FILE: src/plugin/services/AdminPluginFileService.ts
type IPluginFileValidationResult (line 19) | interface IPluginFileValidationResult {
type IPluginInstallationResult (line 25) | interface IPluginInstallationResult {
type IInstalledPlugin (line 35) | interface IInstalledPlugin {
class AdminPluginFileService (line 46) | class AdminPluginFileService {
method constructor (line 49) | private constructor() {}
method getInstance (line 54) | static getInstance(): AdminPluginFileService {
method validatePluginFiles (line 64) | validatePluginFiles(
method validatePluginId (line 143) | validatePluginId(pluginId: string): { valid: boolean; error?: string } {
method installPlugin (line 173) | async installPlugin(
method writeFilesToFilesystem (line 272) | private async writeFilesToFilesystem(
method getInstalledPlugins (line 300) | async getInstalledPlugins(): Promise<IInstalledPlugin[]> {
method getPlugin (line 325) | async getPlugin(pluginId: string): Promise<IInstalledPlugin | null> {
method removePlugin (line 348) | async removePlugin(pluginId: string): Promise<boolean> {
method healthCheck (line 361) | async healthCheck(): Promise<{
method getPluginDetails (line 383) | static async getPluginDetails(
FILE: src/plugin/services/InternalFileWriter.ts
type IFileWriteResult (line 11) | interface IFileWriteResult {
type IFileOperationResult (line 19) | interface IFileOperationResult {
type IVitePluginResponse (line 25) | interface IVitePluginResponse<T> {
class InternalFileWriter (line 35) | class InternalFileWriter {
method constructor (line 42) | private constructor() {
method getInstance (line 49) | static getInstance(): InternalFileWriter {
method getPluginBasePath (line 59) | private async getPluginBasePath(): Promise<string> {
method getFsModule (line 72) | private async getFsModule(): Promise<typeof import('node:fs/promises')> {
method getPathModule (line 82) | private async getPathModule(): Promise<typeof import('node:path')> {
method initialize (line 92) | async initialize(): Promise<void> {
method writePluginFiles (line 111) | async writePluginFiles(
method readPluginFiles (line 164) | async readPluginFiles(pluginId: string): Promise<{
method listInstalledPlugins (line 209) | async listInstalledPlugins(): Promise<{
method removePlugin (line 255) | async removePlugin(pluginId: string): Promise<IFileOperationResult> {
method ensureDirectoryExists (line 285) | private async ensureDirectoryExists(dirPath: string): Promise<void> {
method writeFile (line 299) | private async writeFile(filePath: string, content: string): Promise<vo...
method readFile (line 323) | private async readFile(filePath: string): Promise<string> {
method pathExists (line 336) | private async pathExists(path: string): Promise<boolean> {
method listDirectories (line 354) | private async listDirectories(path: string): Promise<string[]> {
method readDirectoryRecursive (line 369) | private async readDirectoryRecursive(
method removeDirectory (line 408) | private async removeDirectory(path: string): Promise<void> {
method getDirectoryPath (line 422) | private async getDirectoryPath(filePath: string): Promise<string> {
method callVitePlugin (line 435) | private async callVitePlugin<T>(method: string, params: unknown): Prom...
FILE: src/plugin/tests/services/InternalFileWriter.spec.ts
function createMockResponse (line 70) | function createMockResponse(data: unknown, ok = true): Response {
FILE: src/plugin/tests/utils.spec.ts
type TestItem (line 256) | type TestItem = {
FILE: src/plugin/tests/vite/internalFileWriterPlugin.spec.ts
type IMockDirent (line 46) | interface IMockDirent {
type IMockServer (line 51) | interface IMockServer {
type IMockResponse (line 57) | interface IMockResponse {
type IMockRequest (line 63) | interface IMockRequest {
type MiddlewareFunction (line 68) | type MiddlewareFunction = (
FILE: src/plugin/types.ts
type IPluginManifest (line 8) | interface IPluginManifest {
type IPluginInfo (line 23) | interface IPluginInfo {
type IExtensionPoints (line 44) | interface IExtensionPoints {
type IRouteExtension (line 64) | interface IRouteExtension {
type IDrawerExtension (line 72) | interface IDrawerExtension {
type IInjectorExtension (line 81) | interface IInjectorExtension {
type IPluginMeta (line 90) | interface IPluginMeta {
type IPluginDetails (line 98) | interface IPluginDetails extends IPluginMeta {
type IInstalledPlugin (line 114) | interface IInstalledPlugin extends IPluginDetails {
type ILoadedPlugin (line 119) | interface ILoadedPlugin {
type IExtensionRegistry (line 129) | interface IExtensionRegistry {
type PluginStatus (line 150) | enum PluginStatus {
type ExtensionPointType (line 156) | enum ExtensionPointType {
type IPluginStoreProps (line 162) | interface IPluginStoreProps {
type IPluginModalProps (line 167) | interface IPluginModalProps {
type IPluginDrawerItemsProps (line 183) | interface IPluginDrawerItemsProps {
type IPluginRouterProps (line 192) | interface IPluginRouterProps {
type IPluginLifecycle (line 198) | interface IPluginLifecycle {
FILE: src/plugin/utils.ts
function validatePluginManifest (line 7) | function validatePluginManifest(manifest: unknown): boolean {
function generatePluginId (line 74) | function generatePluginId(manifest: IPluginManifest): string {
function sortDrawerItems (line 78) | function sortDrawerItems(items: IDrawerExtension[]): IDrawerExtension[] {
function filterByPermissions (line 82) | function filterByPermissions<
FILE: src/plugin/vite/internalFileWriterPlugin.ts
type IInternalFileWriterPluginOptions (line 12) | interface IInternalFileWriterPluginOptions {
function createInternalFileWriterPlugin (line 32) | function createInternalFileWriterPlugin(
function handleFileOperation (line 166) | async function handleFileOperation(
function ensureDirectory (line 208) | async function ensureDirectory(
function writeFile (line 227) | async function writeFile(
function readFile (line 254) | async function readFile(path: string, basePath: string): Promise<string> {
function pathExists (line 265) | async function pathExists(
function listDirectories (line 289) | async function listDirectories(
function readDirectoryRecursive (line 306) | async function readDirectoryRecursive(
function removeDirectory (line 343) | async function removeDirectory(path: string, basePath: string): Promise<...
FILE: src/reportWebVitals.spec.ts
type WebVitalsCallback (line 5) | type WebVitalsCallback = (metric: MetricType) => void;
FILE: src/screens/AdminPortal/BlockUser/BlockUser.spec.tsx
type InterfaceMockOptions (line 57) | interface InterfaceMockOptions {
type InterfaceGraphQLVariables (line 68) | interface InterfaceGraphQLVariables {
type InterfaceGraphQLRequest (line 76) | interface InterfaceGraphQLRequest {
type InterfaceGraphQLMock (line 81) | interface InterfaceGraphQLMock {
FILE: src/screens/AdminPortal/BlockUser/BlockUser.tsx
type BlockUserRow (line 71) | type BlockUserRow = {
FILE: src/screens/AdminPortal/CommunityProfile/CommunityProfile.spec.tsx
constant MOCKS1 (line 42) | const MOCKS1 = [
constant MOCKS2 (line 81) | const MOCKS2 = [
constant MOCKS3 (line 125) | const MOCKS3 = [
constant LOADING_MOCK (line 173) | const LOADING_MOCK = [
constant ERROR_MOCK (line 187) | const ERROR_MOCK = [
constant RESET_ERROR_MOCK (line 220) | const RESET_ERROR_MOCK = [
constant UPDATE_SUCCESS_MOCKS (line 257) | const UPDATE_SUCCESS_MOCKS = [
function wait (line 323) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/AdminPortal/CommunityProfile/CommunityProfile.tsx
type PreLoginImageryDataType (line 79) | type PreLoginImageryDataType = {
FILE: src/screens/AdminPortal/EventManagement/EventManagement.spec.tsx
constant MOCKS_WITH_FIXED_TIME (line 46) | const MOCKS_WITH_FIXED_TIME = JSON.parse(JSON.stringify(MOCKS_WITH_TIME));
FILE: src/screens/AdminPortal/EventManagement/EventManagement.tsx
type TabOptions (line 63) | type TabOptions =
type InterfaceTabConfig (line 72) | interface InterfaceTabConfig {
FILE: src/screens/AdminPortal/EventVolunteers/Requests/Requests.mocks.ts
constant MOCKS (line 131) | const MOCKS = [
constant MOCKS_WITH_FILTER_DATA (line 235) | const MOCKS_WITH_FILTER_DATA = [
constant EMPTY_MOCKS (line 305) | const EMPTY_MOCKS = [
constant ERROR_MOCKS (line 324) | const ERROR_MOCKS = [
constant UPDATE_ERROR_MOCKS (line 351) | const UPDATE_ERROR_MOCKS = [
FILE: src/screens/AdminPortal/EventVolunteers/Requests/Requests.tsx
function Requests (line 62) | function Requests(): JSX.Element {
FILE: src/screens/AdminPortal/EventVolunteers/VolunteerContainer.tsx
function VolunteerContainer (line 23) | function VolunteerContainer(): JSX.Element {
FILE: src/screens/AdminPortal/EventVolunteers/VolunteerGroups/VolunteerGroups.tsx
type ModalState (line 43) | enum ModalState {
function VolunteerGroups (line 64) | function VolunteerGroups(): JSX.Element {
FILE: src/screens/AdminPortal/EventVolunteers/VolunteerGroups/deleteModal/VolunteerGroupDeleteModal.tsx
type InterfaceDeleteVolunteerGroupModal (line 23) | interface InterfaceDeleteVolunteerGroupModal {
FILE: src/screens/AdminPortal/EventVolunteers/VolunteerGroups/modal/VolunteerGroupModal.spec.tsx
function wait (line 42) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/AdminPortal/EventVolunteers/VolunteerGroups/modal/VolunteerGroupModal.tsx
type InterfaceVolunteerGroupModal (line 28) | interface InterfaceVolunteerGroupModal {
FILE: src/screens/AdminPortal/EventVolunteers/VolunteerGroups/modal/VolunteerGroups.mocks.ts
constant MOCKS (line 108) | const MOCKS = [
constant MOCKS_EMPTY (line 318) | const MOCKS_EMPTY = [
constant MOCKS_ERROR (line 339) | const MOCKS_ERROR = [
FILE: src/screens/AdminPortal/EventVolunteers/Volunteers/Volunteers.mocks.ts
constant MOCKS (line 118) | const MOCKS = [
constant MOCKS_ERROR (line 356) | const MOCKS_ERROR = [
constant MOCKS_EMPTY (line 420) | const MOCKS_EMPTY = [
FILE: src/screens/AdminPortal/EventVolunteers/Volunteers/Volunteers.tsx
type VolunteerStatus (line 72) | enum VolunteerStatus {
type ModalState (line 79) | enum ModalState {
function Volunteers (line 100) | function Volunteers(): JSX.Element {
FILE: src/screens/AdminPortal/EventVolunteers/Volunteers/createModal/VolunteerCreateModal.spec.tsx
function wait (line 43) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/AdminPortal/EventVolunteers/Volunteers/createModal/VolunteerCreateModal.tsx
type InterfaceAddVolunteerData (line 45) | interface InterfaceAddVolunteerData {
type InterfaceVolunteerCreateModal (line 52) | interface InterfaceVolunteerCreateModal {
FILE: src/screens/AdminPortal/FundCampaignPledge/FundCampaignPledge.spec.tsx
constant EMPTY_MOCK (line 110) | const EMPTY_MOCK = {
constant FUTURE_CAMPAIGN_MOCK (line 229) | const FUTURE_CAMPAIGN_MOCK = {
constant ACTIVE_CAMPAIGN_MOCK (line 255) | const ACTIVE_CAMPAIGN_MOCK = {
FILE: src/screens/AdminPortal/FundCampaignPledge/FundCampaignPledge.tsx
type ModalState (line 28) | enum ModalState {
FILE: src/screens/AdminPortal/FundCampaignPledge/PledgeColumns.tsx
type InterfacePledgeColumnsProps (line 20) | interface InterfacePledgeColumnsProps {
FILE: src/screens/AdminPortal/FundCampaignPledge/Pledges.mocks.ts
constant MOCKS (line 76) | const MOCKS = [
constant MOCKS_FUND_CAMPAIGN_PLEDGE_ERROR (line 303) | const MOCKS_FUND_CAMPAIGN_PLEDGE_ERROR = [
constant MOCKS_DELETE_PLEDGE_ERROR (line 319) | const MOCKS_DELETE_PLEDGE_ERROR = [
constant PLEDGE_MODAL_MOCKS (line 332) | const PLEDGE_MODAL_MOCKS = [
constant PLEDGE_MODAL_ERROR_MOCKS (line 473) | const PLEDGE_MODAL_ERROR_MOCKS = [
FILE: src/screens/AdminPortal/FundCampaignPledge/deleteModal/PledgeDeleteModal.tsx
type InterfaceDeletePledgeModal (line 29) | interface InterfaceDeletePledgeModal {
FILE: src/screens/AdminPortal/FundCampaignPledge/modal/PledgeModal.spec.tsx
constant FIXED_CREATED_AT (line 136) | const FIXED_CREATED_AT = dayjs.utc().subtract(10, 'day').toISOString();
constant FIXED_UPDATED_AT (line 137) | const FIXED_UPDATED_AT = dayjs.utc().subtract(1, 'day').toISOString();
constant MOCK_PLEDGE_DATA (line 200) | const MOCK_PLEDGE_DATA = {
constant MOCK_PLEDGE_DATA_DELAYED (line 230) | const MOCK_PLEDGE_DATA_DELAYED = {
constant MOCK_UPDATE_PLEDGE_DATA (line 235) | const MOCK_UPDATE_PLEDGE_DATA = {
constant MEMBERS_MOCK (line 255) | const MEMBERS_MOCK = {
constant NO_CHANGE_MOCK (line 291) | const NO_CHANGE_MOCK = {
FILE: src/screens/AdminPortal/FundCampaignPledge/modal/PledgeModal.tsx
type InterfacePledgeModal (line 51) | interface InterfacePledgeModal {
FILE: src/screens/AdminPortal/Leaderboard/Leaderboard.mocks.ts
constant MOCKS (line 59) | const MOCKS = [
constant EMPTY_MOCKS (line 170) | const EMPTY_MOCKS = [
constant ERROR_MOCKS (line 191) | const ERROR_MOCKS = [
constant SEARCH_EMPTY_MOCKS (line 208) | const SEARCH_EMPTY_MOCKS = [
FILE: src/screens/AdminPortal/Leaderboard/Leaderboard.tsx
type TimeFrame (line 72) | enum TimeFrame {
function Leaderboard (line 79) | function Leaderboard(): JSX.Element {
FILE: src/screens/AdminPortal/ManageTag/ManageTag.spec.tsx
function wait (line 95) | async function wait(ms = 500): Promise<void> {
FILE: src/screens/AdminPortal/ManageTag/ManageTag.tsx
function ManageTag (line 107) | function ManageTag(): JSX.Element {
FILE: src/screens/AdminPortal/ManageTag/ManageTagMockComponents/MockAddPeopleToTag.tsx
constant TEST_IDS (line 34) | const TEST_IDS = {
FILE: src/screens/AdminPortal/ManageTag/ManageTagMocks.ts
constant MOCKS (line 10) | const MOCKS = [
constant MOCKS_ERROR_ASSIGNED_MEMBERS (line 391) | const MOCKS_ERROR_ASSIGNED_MEMBERS = [
FILE: src/screens/AdminPortal/ManageTag/ManageTagNonErrorMocks.ts
constant MOCKS_SUCCESS_UNASSIGN_USER_TAG (line 10) | const MOCKS_SUCCESS_UNASSIGN_USER_TAG = [
constant MOCKS_SUCCESS_UPDATE_USER_TAG (line 49) | const MOCKS_SUCCESS_UPDATE_USER_TAG = [
constant MOCKS_SUCCESS_REMOVE_USER_TAG (line 88) | const MOCKS_SUCCESS_REMOVE_USER_TAG = [
constant MOCKS_WITH_ANCESTOR_TAGS (line 126) | const MOCKS_WITH_ANCESTOR_TAGS = [
constant MOCKS_INFINITE_SCROLL_PAGINATION (line 153) | const MOCKS_INFINITE_SCROLL_PAGINATION = [
constant MOCKS_INFINITE_SCROLL_NULL_EDGES (line 251) | const MOCKS_INFINITE_SCROLL_NULL_EDGES = [
constant MOCKS_INFINITE_SCROLL_NULL_FETCH_RESULT (line 325) | const MOCKS_INFINITE_SCROLL_NULL_FETCH_RESULT = [
constant MOCKS_ERROR_OBJECT (line 395) | const MOCKS_ERROR_OBJECT = [
FILE: src/screens/AdminPortal/ManageTag/ManageTagNullFalsyMocks.ts
constant MOCKS_NULL_USERS_ASSIGNED_TO (line 10) | const MOCKS_NULL_USERS_ASSIGNED_TO = [
constant MOCKS_EMPTY_ASSIGNED_MEMBERS_ARRAY (line 37) | const MOCKS_EMPTY_ASSIGNED_MEMBERS_ARRAY = [
constant MOCKS_EMPTY_EDGES_ARRAY (line 71) | const MOCKS_EMPTY_EDGES_ARRAY = MOCKS_EMPTY_ASSIGNED_MEMBERS_ARRAY;
constant MOCKS_EMPTY_PAGE_INFO (line 73) | const MOCKS_EMPTY_PAGE_INFO = [
constant MOCKS_NULL_ANCESTOR_TAGS (line 106) | const MOCKS_NULL_ANCESTOR_TAGS = [
constant MOCKS_UNDEFINED_DATA (line 130) | const MOCKS_UNDEFINED_DATA = [
constant MOCKS_NULL_DATA (line 157) | const MOCKS_NULL_DATA = [
constant MOCKS_ERROR_UNASSIGN_USER_TAG (line 177) | const MOCKS_ERROR_UNASSIGN_USER_TAG = [
constant MOCKS_ERROR_UPDATE_USER_TAG (line 209) | const MOCKS_ERROR_UPDATE_USER_TAG = [
constant MOCKS_ERROR_REMOVE_USER_TAG (line 241) | const MOCKS_ERROR_REMOVE_USER_TAG = [
FILE: src/screens/AdminPortal/ManageTag/editModal/EditUserTagModal.spec.tsx
function Wrapper (line 79) | function Wrapper() {
FILE: src/screens/AdminPortal/ManageTag/editModal/EditUserTagModal.tsx
type InterfaceEditUserTagModalProps (line 35) | interface InterfaceEditUserTagModalProps {
FILE: src/screens/AdminPortal/ManageTag/removeModal/RemoveUserTagModal.tsx
type InterfaceRemoveUserTagModalProps (line 26) | interface InterfaceRemoveUserTagModalProps {
FILE: src/screens/AdminPortal/ManageTag/unassignModal/UnassignUserTagModal.tsx
type InterfaceUnassignUserTagModalProps (line 27) | interface InterfaceUnassignUserTagModalProps {
FILE: src/screens/AdminPortal/MemberDetail/UserContactDetails.spec.tsx
constant MOCK_FILE (line 27) | const MOCK_FILE = [
constant MOCKS1 (line 92) | const MOCKS1 = [
constant MOCKS2 (line 308) | const MOCKS2 = [
constant UPDATE_USER_ERROR_MOCKS (line 449) | const UPDATE_USER_ERROR_MOCKS = [
constant UPDATE_MOCK (line 520) | const UPDATE_MOCK = [
FILE: src/screens/AdminPortal/Notification/Notification.spec.tsx
type InterfaceNotification (line 32) | interface InterfaceNotification {
FILE: src/screens/AdminPortal/Notification/Notification.tsx
type InterfaceNotification (line 26) | interface InterfaceNotification {
FILE: src/screens/AdminPortal/OrgContribution/OrgContribution.spec.tsx
function wait (line 13) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/AdminPortal/OrgContribution/OrgContribution.tsx
function OrgContribution (line 39) | function OrgContribution(): JSX.Element {
FILE: src/screens/AdminPortal/OrgList/OrgList.spec.tsx
type LSApi (line 57) | type LSApi = ReturnType<typeof useLocalStorage>;
FILE: src/screens/AdminPortal/OrgList/OrgList.tsx
type InterfaceCurrentUserType (line 18) | interface InterfaceCurrentUserType {
type InterfaceFormStateType (line 48) | interface InterfaceFormStateType {
function OrgList (line 66) | function OrgList(): JSX.Element {
FILE: src/screens/AdminPortal/OrgList/OrgListMocks.ts
constant MOCKS (line 100) | const MOCKS = [
constant MOCKS_EMPTY (line 262) | const MOCKS_EMPTY = [
constant MOCKS_ADMIN (line 319) | const MOCKS_ADMIN = [
FILE: src/screens/AdminPortal/OrgList/modal/OrganizationModal.tsx
type InterfaceFormStateType (line 53) | interface InterfaceFormStateType {
type InterfaceOrganizationModalProps (line 68) | interface InterfaceOrganizationModalProps {
FILE: src/screens/AdminPortal/OrgSettings/OrgSettings.mocks.ts
constant MOCKS (line 9) | const MOCKS = [
FILE: src/screens/AdminPortal/OrgSettings/OrgSettings.tsx
type SettingType (line 35) | type SettingType = 'general' | 'actionItemCategories';
function OrgSettings (line 39) | function OrgSettings(): JSX.Element {
FILE: src/screens/AdminPortal/OrganizationDashboard/OrganizationDashboard.spec.tsx
type InterfaceRenderOptions (line 62) | interface InterfaceRenderOptions {
function renderWithProviders (line 68) | function renderWithProviders({
FILE: src/screens/AdminPortal/OrganizationDashboard/OrganizationDashboard.tsx
function OrganizationDashboard (line 60) | function OrganizationDashboard(): JSX.Element {
FILE: src/screens/AdminPortal/OrganizationDashboard/OrganizationDashboardMocks.ts
constant MOCKS (line 15) | const MOCKS = [
constant EMPTY_MOCKS (line 270) | const EMPTY_MOCKS = [
constant ERROR_MOCKS (line 402) | const ERROR_MOCKS = [
FILE: src/screens/AdminPortal/OrganizationDashboard/OrganizationDashboardSecondaryMocks.ts
constant MOCKS_ORG2 (line 12) | const MOCKS_ORG2 = [
FILE: src/screens/AdminPortal/OrganizationDashboard/components/DashboardStats.tsx
type InterfaceDashboardStatsProps (line 69) | interface InterfaceDashboardStatsProps {
FILE: src/screens/AdminPortal/OrganizationDashboard/components/UpcomingEventsCard.spec.tsx
type TestInterfaceUser (line 10) | interface TestInterfaceUser {
type TestInterfaceOrganization (line 15) | interface TestInterfaceOrganization {
type TestInterfaceEventNode (line 20) | interface TestInterfaceEventNode {
type TestInterfaceEvent (line 34) | interface TestInterfaceEvent {
type TestInterfaceUpcomingEventsCardProps (line 39) | interface TestInterfaceUpcomingEventsCardProps {
FILE: src/screens/AdminPortal/OrganizationDashboard/components/UpcomingEventsCard.tsx
type InterfaceUpcomingEventsCardProps (line 55) | interface InterfaceUpcomingEventsCardProps {
FILE: src/screens/AdminPortal/OrganizationEvents/CreateEventModal.tsx
type ICreateEventModalProps (line 17) | interface ICreateEventModalProps {
FILE: src/screens/AdminPortal/OrganizationEvents/OrganizationEvents.spec.tsx
function wait (line 86) | async function wait(ms = 0): Promise<void> {
constant ERROR_MOCK (line 976) | const ERROR_MOCK = [
FILE: src/screens/AdminPortal/OrganizationEvents/OrganizationEvents.tsx
type IEventEdge (line 44) | interface IEventEdge {
type ViewType (line 87) | enum ViewType {
function organizationEvents (line 93) | function organizationEvents(): JSX.Element {
FILE: src/screens/AdminPortal/OrganizationEvents/OrganizationEventsMocks.ts
function buildEventsVariables (line 11) | function buildEventsVariables() {
function buildOrgVariables (line 25) | function buildOrgVariables() {
function buildCreateEventVariables (line 33) | function buildCreateEventVariables() {
constant MOCKS (line 57) | const MOCKS = [
FILE: src/screens/AdminPortal/OrganizationFundCampaign/OrganizationFundCampaignMocks.ts
constant BASE_DATE_UTC (line 12) | const BASE_DATE_UTC = dayjs.utc('2025-01-01T00:00:00.000Z');
constant MOCKS (line 14) | const MOCKS = [
constant MOCK_ERROR (line 195) | const MOCK_ERROR = [
constant EMPTY_MOCKS (line 247) | const EMPTY_MOCKS = [
FILE: src/screens/AdminPortal/OrganizationFundCampaign/modal/CampaignModal.spec.tsx
type DateRangeValue (line 93) | type DateRangeValue = {
type DateRangePickerProps (line 101) | type DateRangePickerProps = {
constant UPDATE_NAME_ONLY_MOCK (line 290) | const UPDATE_NAME_ONLY_MOCK = [
constant UPDATE_ALL_FIELDS_MOCK (line 311) | const UPDATE_ALL_FIELDS_MOCK = [
constant UPDATE_NO_FIELDS_MOCK (line 363) | const UPDATE_NO_FIELDS_MOCK = [
constant UPDATE_CURRENCY_ONLY_MOCK (line 384) | const UPDATE_CURRENCY_ONLY_MOCK = [
constant UPDATE_AUTO_ADJUST_END_DATE_MOCK (line 406) | const UPDATE_AUTO_ADJUST_END_DATE_MOCK = [
type MutationObserver (line 748) | type MutationObserver = {
FILE: src/screens/AdminPortal/OrganizationFundCampaign/modal/types.ts
type InterfaceCampaignModal (line 14) | interface InterfaceCampaignModal {
type IDateRangeValue (line 24) | interface IDateRangeValue {
FILE: src/screens/AdminPortal/OrganizationFunds/OrganizationFunds.spec.tsx
function wait (line 21) | async function wait(ms = 500): Promise<void> {
FILE: src/screens/AdminPortal/OrganizationFunds/OrganizationFundsMocks.ts
constant MOCKS (line 11) | const MOCKS = [
constant NO_FUNDS (line 164) | const NO_FUNDS = [
constant MOCKS_ERROR (line 184) | const MOCKS_ERROR = [
FILE: src/screens/AdminPortal/OrganizationFunds/modal/FundModal.tsx
type InterfaceFundModal (line 16) | interface InterfaceFundModal {
FILE: src/screens/AdminPortal/OrganizationPeople/OrganizationPeople.spec.tsx
type MemberConnectionVariables (line 103) | type MemberConnectionVariables = {
type MemberEdge (line 112) | type MemberEdge = {
type MemberConnectionOverrides (line 124) | type MemberConnectionOverrides = {
type UserListVariables (line 208) | type UserListVariables = {
type UserEdge (line 216) | type UserEdge = {
type UserListOverrides (line 228) | type UserListOverrides = {
FILE: src/screens/AdminPortal/OrganizationPeople/OrganizationPeople.tsx
constant STATE_TO_OPTION (line 64) | const STATE_TO_OPTION: Record<number, string> = {
constant OPTION_TO_STATE (line 86) | const OPTION_TO_STATE: Record<string, number> = {
type IProcessedRow (line 92) | interface IProcessedRow {
type IEdges (line 101) | interface IEdges {
type IQueryVariable (line 113) | interface IQueryVariable {
function OrganizationPeople (line 122) | function OrganizationPeople(): JSX.Element {
FILE: src/screens/AdminPortal/OrganizationPeople/addMember/AddMember.spec.tsx
type InterfaceMockFormTextFieldProps (line 42) | interface InterfaceMockFormTextFieldProps {
type MemberEdge (line 383) | type MemberEdge = (typeof defaultData.organization.members.edges)[number];
type RenderConfig (line 413) | type RenderConfig = {
constant DEFAULT_ROUTE (line 424) | const DEFAULT_ROUTE = '/admin/orgpeople/org123';
function getDataTableBodyRows (line 456) | function getDataTableBodyRows(): HTMLElement[] {
FILE: src/screens/AdminPortal/OrganizationPeople/addMember/AddMember.tsx
function AddMember (line 57) | function AddMember({
FILE: src/screens/AdminPortal/OrganizationPeople/addMember/types.ts
type IEdge (line 1) | interface IEdge {
type IUserDetails (line 13) | interface IUserDetails {
type IQueryVariable (line 20) | interface IQueryVariable {
type OrganizationMembershipRole (line 33) | enum OrganizationMembershipRole {
FILE: src/screens/AdminPortal/OrganizationTags/OrganizationTags.spec.tsx
type InterfaceInfiniteScrollMockProps (line 35) | interface InterfaceInfiniteScrollMockProps {
function wait (line 85) | async function wait(ms = 500): Promise<void> {
type TestInterfaceMockSearch (line 262) | interface TestInterfaceMockSearch {
type TestInterfaceTestInterfaceMockSortingOption (line 269) | interface TestInterfaceTestInterfaceMockSortingOption {
type TestInterfaceMockSorting (line 274) | interface TestInterfaceMockSorting {
FILE: src/screens/AdminPortal/OrganizationTags/OrganizationTags.tsx
function OrganizationTags (line 53) | function OrganizationTags(): JSX.Element {
FILE: src/screens/AdminPortal/OrganizationTags/OrganizationTagsMocks.ts
type TagAncestor (line 7) | type TagAncestor = { id: string; name: string };
type TagEdge (line 9) | type TagEdge = {
type PageInfo (line 21) | type PageInfo = {
type UserTags (line 28) | type UserTags = {
type ListMock (line 34) | type ListMock = {
type ErrorMock (line 42) | type ErrorMock = {
constant MOCK_RESPONSES (line 107) | const MOCK_RESPONSES = {
constant MOCKS (line 311) | const MOCKS = MOCK_RESPONSES.DEFAULT;
constant MOCKS_ERROR (line 312) | const MOCKS_ERROR = MOCK_RESPONSES.ERROR_ORG;
constant MOCKS_ERROR_ERROR_TAG (line 313) | const MOCKS_ERROR_ERROR_TAG = MOCK_RESPONSES.ERROR_CREATE_TAG;
constant MOCKS_EMPTY (line 314) | const MOCKS_EMPTY = MOCK_RESPONSES.EMPTY;
constant MOCKS_UNDEFINED_USER_TAGS (line 315) | const MOCKS_UNDEFINED_USER_TAGS = MOCK_RESPONSES.UNDEFINED_USER_TAGS;
constant MOCKS_NULL_END_CURSOR (line 316) | const MOCKS_NULL_END_CURSOR = MOCK_RESPONSES.NULL_END_CURSOR;
constant MOCKS_NO_MORE_PAGES (line 317) | const MOCKS_NO_MORE_PAGES = MOCK_RESPONSES.DEFAULT;
constant MOCKS_ASCENDING_NO_SEARCH (line 318) | const MOCKS_ASCENDING_NO_SEARCH = MOCK_RESPONSES.ASCENDING_NO_SEARCH;
constant MOCKS_FETCHMORE_UNDEFINED (line 319) | const MOCKS_FETCHMORE_UNDEFINED = MOCK_RESPONSES.FETCHMORE_UNDEFINED;
FILE: src/screens/AdminPortal/OrganizationTransactions/OrganizationTransactions.tsx
function OrganizationTransactions (line 21) | function OrganizationTransactions(): JSX.Element {
FILE: src/screens/AdminPortal/OrganizationVenues/OrganizationVenues.spec.tsx
constant MOCKS (line 32) | const MOCKS = [
constant SEARCH_DEBOUNCE_MS (line 126) | const SEARCH_DEBOUNCE_MS = 300;
function wait (line 130) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/AdminPortal/OrganizationVenues/OrganizationVenues.tsx
function organizationVenues (line 64) | function organizationVenues(): JSX.Element {
FILE: src/screens/AdminPortal/PluginStore/PluginModal.tsx
constant TABS (line 24) | const TABS = ['details', 'features', 'changelog'] as const;
type TabType (line 25) | type TabType = (typeof TABS)[number];
FILE: src/screens/AdminPortal/PluginStore/PluginStore.tsx
function PluginStore (line 20) | function PluginStore() {
FILE: src/screens/AdminPortal/PluginStore/UploadPluginModal.tsx
type IUploadPluginModalProps (line 24) | interface IUploadPluginModalProps {
FILE: src/screens/AdminPortal/PluginStore/components/PluginCard.tsx
type IPluginCardProps (line 10) | interface IPluginCardProps {
function PluginCard (line 15) | function PluginCard({ plugin, onManage }: IPluginCardProps) {
FILE: src/screens/AdminPortal/PluginStore/components/PluginList.tsx
type IPluginListProps (line 12) | interface IPluginListProps {
function PluginList (line 19) | function PluginList({
FILE: src/screens/AdminPortal/PluginStore/components/UninstallConfirmationModal.tsx
function UninstallConfirmationModal (line 13) | function UninstallConfirmationModal({
FILE: src/screens/AdminPortal/PluginStore/hooks/useInstallTimer.ts
function useInstallTimer (line 8) | function useInstallTimer(loading: boolean): string {
FILE: src/screens/AdminPortal/PluginStore/hooks/usePluginActions.ts
type IUsePluginActionsProps (line 12) | interface IUsePluginActionsProps {
function usePluginActions (line 17) | function usePluginActions({
FILE: src/screens/AdminPortal/PluginStore/hooks/usePluginFilters.ts
type IUsePluginFiltersProps (line 12) | interface IUsePluginFiltersProps {
function usePluginFilters (line 16) | function usePluginFilters({ pluginData }: IUsePluginFiltersProps) {
FILE: src/screens/AdminPortal/Requests/Requests.spec.tsx
method href (line 97) | get href() {
method href (line 100) | set href(value: string) {
constant NULL_RESPONSE_MOCKS (line 130) | const NULL_RESPONSE_MOCKS = [
constant INFINITE_SCROLL_MOCKS (line 155) | const INFINITE_SCROLL_MOCKS = [
FILE: src/screens/AdminPortal/Requests/Requests.tsx
type InterfaceRequestsListItem (line 52) | interface InterfaceRequestsListItem {
type InterfaceMembershipRequestsQueryData (line 64) | interface InterfaceMembershipRequestsQueryData {
FILE: src/screens/AdminPortal/Requests/RequestsMocks.ts
constant EMPTY_REQUEST_MOCKS (line 48) | const EMPTY_REQUEST_MOCKS = [
constant MOCKS (line 66) | const MOCKS = [
constant MOCKS4 (line 110) | const MOCKS4 = [
constant UPDATED_MOCKS (line 188) | const UPDATED_MOCKS = [
constant EMPTY_MOCKS (line 261) | const EMPTY_MOCKS = [
constant MOCKS_WITH_ERROR (line 293) | const MOCKS_WITH_ERROR = [
FILE: src/screens/AdminPortal/SubTags/SubTags.spec.tsx
type InterfaceInfiniteScrollMockProps (line 25) | interface InterfaceInfiniteScrollMockProps {
function wait (line 54) | async function wait(ms = 500): Promise<void> {
method merge (line 76) | merge(existing = {}, incoming) {
FILE: src/screens/AdminPortal/SubTags/SubTags.tsx
function SubTags (line 44) | function SubTags(): JSX.Element {
FILE: src/screens/AdminPortal/SubTags/SubTagsMocks.ts
constant ANCESTOR_TAG_1 (line 25) | const ANCESTOR_TAG_1 = [{ _id: '1', name: 'userTag 1' }];
constant MOCKS (line 27) | const MOCKS = [
constant MOCKS_ERROR_SUB_TAGS (line 252) | const MOCKS_ERROR_SUB_TAGS = [
constant MOCKS_CREATE_TAG_ERROR (line 297) | const MOCKS_CREATE_TAG_ERROR = [
FILE: src/screens/AdminPortal/Users/Organization.mocks.ts
type InterfaceAddress (line 1) | interface InterfaceAddress {
type InterfaceCreator (line 12) | interface InterfaceCreator {
type InterfaceOrganization (line 21) | interface InterfaceOrganization {
type InterfaceUser (line 30) | interface InterfaceUser {
type InterfaceAppUserProfile (line 43) | interface InterfaceAppUserProfile {
type InterfaceMockUser (line 52) | interface InterfaceMockUser {
constant MOCK_USERS (line 77) | const MOCK_USERS = [
FILE: src/screens/AdminPortal/Users/User.mocks.ts
constant MOCKS (line 7) | const MOCKS = [
constant MOCKS2 (line 242) | const MOCKS2 = [
FILE: src/screens/AdminPortal/Users/Users.spec.tsx
type IUserData (line 485) | interface IUserData {
type InterfaceTestComponentProps (line 886) | interface InterfaceTestComponentProps {
function TestComponent (line 892) | function TestComponent({
FILE: src/screens/AdminPortal/Users/Users.tsx
type SortingOption (line 27) | type SortingOption = 'newest' | 'oldest';
type FilteringOption (line 28) | type FilteringOption = 'admin' | 'user' | 'cancel';
constant USER_ROLES (line 31) | const USER_ROLES = {
FILE: src/screens/AdminPortal/Users/UsersMocks.mocks.ts
constant EMPTY_MOCKS (line 30) | const EMPTY_MOCKS = [
constant USER_UNDEFINED_MOCK (line 109) | const USER_UNDEFINED_MOCK = [
constant MOCKS_NEW_2 (line 166) | const MOCKS_NEW_2 = [
constant MOCKS_NEW (line 202) | const MOCKS_NEW = [
FILE: src/screens/Auth/ForgotPassword/ForgotPassword.spec.tsx
constant MOCKS (line 42) | const MOCKS = [
constant MOCKS_INTERNET_UNAVAILABLE (line 86) | const MOCKS_INTERNET_UNAVAILABLE = [
function wait (line 105) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/Auth/LoginPage/LoginPage.spec.tsx
type InterfaceStorageHelper (line 36) | interface InterfaceStorageHelper {
type InterfaceCommunity (line 44) | interface InterfaceCommunity {
type InterfaceOrganization (line 64) | interface InterfaceOrganization {
method href (line 1210) | get href() {
method href (line 1213) | set href(v: string) {
method href (line 1267) | get href() {
method href (line 1270) | set href(v: string) {
function getLoginPageWithRecaptchaOff (line 2631) | async function getLoginPageWithRecaptchaOff(): Promise<typeof LoginPage> {
function getLoginPageWithRecaptchaOff (line 3518) | async function getLoginPageWithRecaptchaOff(): Promise<typeof LoginPage> {
FILE: src/screens/Auth/LoginPage/LoginPage.tsx
function loadResource (line 121) | async function loadResource(): Promise<void> {
FILE: src/screens/Auth/VerifyEmail/VerifyEmail.tsx
type VerificationState (line 36) | type VerificationState = 'loading' | 'success' | 'error';
FILE: src/screens/Public/Invitation/AcceptInvitation.tsx
constant STORAGE_KEY (line 18) | const STORAGE_KEY = 'pendingInvitationToken';
constant AUTH_TOKEN_KEY (line 19) | const AUTH_TOKEN_KEY = 'token';
constant EMAIL_KEY (line 20) | const EMAIL_KEY = 'email';
type InviteMetadata (line 35) | type InviteMetadata = {
FILE: src/screens/UserPortal/Campaigns/Campaigns.tsx
type CampaignWithStatus (line 21) | type CampaignWithStatus = InterfaceUserCampaign & {
FILE: src/screens/UserPortal/Campaigns/CampaignsMocks.ts
constant MOCKS (line 63) | const MOCKS = [
constant MOCKS_WITH_NO_FUNDS (line 113) | const MOCKS_WITH_NO_FUNDS = [
constant MOCKS_WITH_FUND_NO_CAMPAIGNS (line 134) | const MOCKS_WITH_FUND_NO_CAMPAIGNS = [
constant MOCKS_WITH_NULL_ORGANIZATION (line 163) | const MOCKS_WITH_NULL_ORGANIZATION = [
constant MOCKS_WITH_UNDEFINED_CAMPAIGNS (line 180) | const MOCKS_WITH_UNDEFINED_CAMPAIGNS = [
constant USER_FUND_CAMPAIGNS_ERROR (line 207) | const USER_FUND_CAMPAIGNS_ERROR = [
constant MOCKS_WITH_PENDING_CAMPAIGN (line 220) | const MOCKS_WITH_PENDING_CAMPAIGN = [
FILE: src/screens/UserPortal/Campaigns/PledgeModal.spec.tsx
type InterfaceMockDatePickerProps (line 57) | interface InterfaceMockDatePickerProps {
constant USER_DETAILS_MOCK (line 142) | const USER_DETAILS_MOCK = {
constant USER_DETAILS_ADMIN_MOCK (line 184) | const USER_DETAILS_ADMIN_MOCK = {
constant BASE_PLEDGE_MODAL_MOCKS (line 202) | const BASE_PLEDGE_MODAL_MOCKS = [USER_DETAILS_MOCK];
constant BASE_PLEDGE_MODAL_ADMIN_MOCKS (line 203) | const BASE_PLEDGE_MODAL_ADMIN_MOCKS = [USER_DETAILS_ADMIN_MOCK];
constant PLEDGE_MODAL_MOCKS (line 274) | const PLEDGE_MODAL_MOCKS = [
FILE: src/screens/UserPortal/Campaigns/PledgeModal.tsx
type InterfacePledgeModal (line 23) | interface InterfacePledgeModal {
FILE: src/screens/UserPortal/Chat/Chat.spec.tsx
type MockType (line 26) | type MockType = {
FILE: src/screens/UserPortal/Chat/Chat.tsx
function Chat (line 48) | function Chat(): JSX.Element {
FILE: src/screens/UserPortal/Donate/Donate.spec.tsx
constant MOCK_DATE (line 22) | const MOCK_DATE = `${DUMMY_DATE_TIME_PREFIX}00:00:00.000Z`;
type InterfaceSearchFilterBarMockProps (line 74) | interface InterfaceSearchFilterBarMockProps {
type InterfaceFormTextFieldMockProps (line 99) | interface InterfaceFormTextFieldMockProps {
constant MOCKS (line 172) | const MOCKS = [
constant MULTIPLE_DONATIONS_MOCKS (line 258) | const MULTIPLE_DONATIONS_MOCKS = [
constant EMPTY_DONATIONS_MOCK (line 284) | const EMPTY_DONATIONS_MOCK = [
constant DONATION_ERROR_MOCK (line 302) | const DONATION_ERROR_MOCK = [
constant BOUNDARY_MOCKS (line 367) | const BOUNDARY_MOCKS = [
FILE: src/screens/UserPortal/Donate/Donate.tsx
function Donate (line 41) | function Donate(): JSX.Element {
FILE: src/screens/UserPortal/Events/Events.spec.tsx
constant TEST_DATE (line 227) | const TEST_DATE = dayjs()
constant MOCKS (line 249) | const MOCKS = [
constant ERROR_MOCKS (line 563) | const ERROR_MOCKS = [
constant RATE_LIMIT_MOCKS (line 592) | const RATE_LIMIT_MOCKS = [
constant CREATE_EVENT_ERROR_MOCKS (line 621) | const CREATE_EVENT_ERROR_MOCKS = [
constant CREATE_EVENT_NULL_MOCKS (line 646) | const CREATE_EVENT_NULL_MOCKS = [
constant CREATE_EVENT_WITH_GRAPHQL_ERRORS_MOCKS (line 671) | const CREATE_EVENT_WITH_GRAPHQL_ERRORS_MOCKS = [
constant REFETCH_FAILURE_MOCKS (line 698) | const REFETCH_FAILURE_MOCKS = [
constant CREATOR_NULL_MOCKS (line 750) | const CREATOR_NULL_MOCKS = [
function wait (line 811) | async function wait(ms = 500): Promise<void> {
FILE: src/screens/UserPortal/Events/Events.tsx
function computeCalendarFromStartDate (line 83) | function computeCalendarFromStartDate(
function Events (line 105) | function Events(): JSX.Element {
FILE: src/screens/UserPortal/Organizations/Organizations.spec.tsx
constant TEST_USER_ID (line 150) | const TEST_USER_ID = '01958985-600e-7cde-94a2-b3fc1ce66cf3';
constant CURRENT_USER_VERIFIED_MOCK (line 209) | const CURRENT_USER_VERIFIED_MOCK = {
constant CURRENT_USER_UNVERIFIED_MOCK (line 225) | const CURRENT_USER_UNVERIFIED_MOCK = {
constant CURRENT_USER_NULL_MOCK (line 241) | const CURRENT_USER_NULL_MOCK = {
constant RESEND_SUCCESS_MOCK (line 253) | const RESEND_SUCCESS_MOCK = {
constant RESEND_FAILURE_MOCK (line 269) | const RESEND_FAILURE_MOCK = {
constant COMMUNITY_TIMEOUT_MOCK (line 285) | const COMMUNITY_TIMEOUT_MOCK = {
constant ORGANIZATION_FILTER_LIST_MOCK (line 298) | const ORGANIZATION_FILTER_LIST_MOCK = {
constant MOCKS (line 323) | const MOCKS = [
constant EMPTY_MOCKS (line 407) | const EMPTY_MOCKS = [
constant ERROR_MOCKS (line 452) | const ERROR_MOCKS = [
FILE: src/screens/UserPortal/Organizations/Organizations.tsx
type IOrganizationCardProps (line 58) | type IOrganizationCardProps = InterfaceOrganizationCardProps;
type InterfaceMemberNode (line 60) | interface InterfaceMemberNode {
type InterfaceMemberEdge (line 63) | interface InterfaceMemberEdge {
type InterfaceMembersConnection (line 66) | interface InterfaceMembersConnection {
type IOrganization (line 72) | interface IOrganization {
type IOrgData (line 100) | interface IOrgData {
function Organizations (line 122) | function Organizations(): React.JSX.Element {
FILE: src/screens/UserPortal/People/People.spec.tsx
constant DEFAULT_ORG_ID (line 30) | const DEFAULT_ORG_ID = '';
constant DEFAULT_SEARCH (line 31) | const DEFAULT_SEARCH = '';
constant DEFAULT_FIRST (line 32) | const DEFAULT_FIRST = 5;
type InterfaceMemberEdgeProps (line 35) | interface InterfaceMemberEdgeProps {
constant SEARCH_DEBOUNCE_MS (line 310) | const SEARCH_DEBOUNCE_MS = 300;
function wait (line 312) | async function wait(ms = 100): Promise<void> {
FILE: src/screens/UserPortal/People/People.tsx
type IMemberNode (line 62) | interface IMemberNode {
type IMemberEdge (line 71) | interface IMemberEdge {
type IMemberWithUserType (line 76) | interface IMemberWithUserType extends IMemberEdge {
type IPeopleTableRow (line 81) | interface IPeopleTableRow {
function People (line 90) | function People(): React.JSX.Element {
FILE: src/screens/UserPortal/Pledges/Pledges.spec.tsx
type MockStorage (line 26) | type MockStorage = Storage & { resetStore: () => void };
method length (line 49) | get length() {
constant MOCKS_WITH_MISSING_CAMPAIGN (line 67) | const MOCKS_WITH_MISSING_CAMPAIGN = [
constant MOCKS_WITH_INVALID_DATE (line 104) | const MOCKS_WITH_INVALID_DATE = [
constant MOCKS_WITH_MORE_USERS (line 149) | const MOCKS_WITH_MORE_USERS = [
constant MOCKS_WITH_SINGLE_PLEDGER (line 280) | const MOCKS_WITH_SINGLE_PLEDGER = [
constant MOCKS_WITH_DIFFERENT_CURRENCIES (line 325) | const MOCKS_WITH_DIFFERENT_CURRENCIES = [
constant MOCKS_WITH_ZERO_GOAL (line 370) | const MOCKS_WITH_ZERO_GOAL = [
constant EMPTY_MOCKS (line 415) | const EMPTY_MOCKS = [
constant USER_PLEDGES_ERROR (line 475) | const USER_PLEDGES_ERROR = [
constant USER_PLEDGES_NO_ASSOCIATED_RESOURCES_ERROR (line 489) | const USER_PLEDGES_NO_ASSOCIATED_RESOURCES_ERROR = [
FILE: src/screens/UserPortal/Pledges/Pledges.tsx
type PledgeQueryResult (line 60) | type PledgeQueryResult = ApolloQueryResult<{
type IPledgeRefetchFn (line 63) | interface IPledgeRefetchFn {
FILE: src/screens/UserPortal/Pledges/PledgesMocks.ts
constant MOCKS (line 52) | const MOCKS = [
FILE: src/screens/UserPortal/Transactions/Transactions.tsx
function Transactions (line 23) | function Transactions(): JSX.Element {
FILE: src/screens/UserPortal/UserScreen/UserScreen.spec.tsx
constant MOCKS (line 135) | const MOCKS = [
FILE: src/screens/UserPortal/Volunteer/Actions/Actions.mocks.ts
constant MOCKS (line 160) | const MOCKS: MockedResponse[] = [
constant EMPTY_MOCKS (line 178) | const EMPTY_MOCKS: MockedResponse[] = [
constant ERROR_MOCKS (line 196) | const ERROR_MOCKS: MockedResponse[] = [
FILE: src/screens/UserPortal/Volunteer/Actions/Actions.tsx
function Actions (line 31) | function Actions(): JSX.Element {
FILE: src/screens/UserPortal/Volunteer/Groups/GroupModal.tsx
type InterfaceGroupModal (line 37) | interface InterfaceGroupModal {
FILE: src/screens/UserPortal/Volunteer/Groups/Groups.mocks.ts
constant MOCKS (line 75) | const MOCKS = [
constant UPDATE_ERROR_MOCKS (line 212) | const UPDATE_ERROR_MOCKS = [
FILE: src/screens/UserPortal/Volunteer/Groups/Groups.spec.tsx
constant CUSTOM_MOCKS (line 162) | const CUSTOM_MOCKS = [
constant CUSTOM_EMPTY_MOCKS (line 255) | const CUSTOM_EMPTY_MOCKS = [
constant CUSTOM_ERROR_MOCKS (line 275) | const CUSTOM_ERROR_MOCKS = [
FILE: src/screens/UserPortal/Volunteer/Groups/Groups.tsx
function Groups (line 64) | function Groups(): JSX.Element {
FILE: src/screens/UserPortal/Volunteer/Invitations/Invitations.spec.tsx
constant MOCKS (line 203) | const MOCKS = [
constant EMPTY_MOCKS (line 302) | const EMPTY_MOCKS = [
constant ERROR_MOCKS (line 322) | const ERROR_MOCKS = [
constant UPDATE_ERROR_MOCKS (line 338) | const UPDATE_ERROR_MOCKS = [
constant GROUP_RECURRING_MOCKS (line 368) | const GROUP_RECURRING_MOCKS = [
constant GROUP_NON_RECURRING_MOCKS (line 388) | const GROUP_NON_RECURRING_MOCKS = [
constant INDIVIDUAL_RECURRING_MOCKS (line 408) | const INDIVIDUAL_RECURRING_MOCKS = [
constant INDIVIDUAL_NON_RECURRING_MOCKS (line 428) | const INDIVIDUAL_NON_RECURRING_MOCKS = [
FILE: src/screens/UserPortal/Volunteer/Invitations/Invitations.tsx
type ItemFilter (line 60) | enum ItemFilter {
FILE: src/screens/UserPortal/Volunteer/UpcomingEvents/UpcomingEvents.mockHelpers.ts
type VolunteerStatus (line 3) | type VolunteerStatus =
type InterfaceEventVolunteerOverride (line 10) | interface InterfaceEventVolunteerOverride {
type InterfaceMembershipOptions (line 17) | interface InterfaceMembershipOptions {
FILE: src/screens/UserPortal/Volunteer/UpcomingEvents/UpcomingEvents.mocks.ts
constant MOCKS (line 33) | const MOCKS = [
constant MEMBERSHIP_LOOKUP_MOCKS (line 71) | const MEMBERSHIP_LOOKUP_MOCKS = [
constant EMPTY_MOCKS (line 104) | const EMPTY_MOCKS = [
constant ERROR_MOCKS (line 115) | const ERROR_MOCKS = [
FILE: src/screens/UserPortal/Volunteer/VolunteerManagement.tsx
type TabOptions (line 67) | type TabOptions = 'upcomingEvents' | 'invitations' | 'actions' | 'groups';
FILE: src/setup/askAndUpdatePort/askAndUpdatePort.ts
constant DEFAULT_PORT (line 6) | const DEFAULT_PORT = 4321;
FILE: src/setup/askForCustomPort/askForCustomPort.ts
constant DEFAULT_PORT (line 3) | const DEFAULT_PORT = 4321;
constant MAX_RETRY_ATTEMPTS (line 4) | const MAX_RETRY_ATTEMPTS = 5;
function validatePort (line 6) | function validatePort(input: string): string | boolean {
function reservedPortWarning (line 19) | async function reservedPortWarning(port: number): Promise<boolean> {
function askForCustomPort (line 32) | async function askForCustomPort(): Promise<number> {
FILE: src/setup/askForDocker/askForDocker.spec.ts
method toString (line 284) | toString(): string {
method toString (line 315) | toString(): string {
FILE: src/setup/askForDocker/askForDocker.ts
constant DEFAULT_PORT (line 4) | const DEFAULT_PORT = 4321;
FILE: src/setup/askForTalawaApiUrl/askForTalawaApiUrl.ts
function askForTalawaApiUrl (line 3) | async function askForTalawaApiUrl(useDocker = false): Promise<string> {
FILE: src/setup/checkConnection/checkConnection.ts
function checkConnection (line 1) | async function checkConnection(url: string): Promise<boolean> {
FILE: src/setup/checkEnvFile/checkEnvFile.ts
function checkEnvFile (line 7) | function checkEnvFile(): boolean {
function modifyEnvFile (line 19) | function modifyEnvFile(): void {
FILE: src/setup/setup.ts
constant ENV_VALUES (line 16) | const ENV_VALUES = {
constant ENV_KEYS (line 24) | const ENV_KEYS = {
function main (line 159) | async function main(): Promise<void> {
FILE: src/setup/updateEnvFile/updateEnvFile.ts
constant ENV_PATH (line 4) | const ENV_PATH = path.resolve(process.cwd(), '.env');
constant PARAM_DESCRIPTIONS (line 6) | const PARAM_DESCRIPTIONS: Record<string, string> = {
FILE: src/setup/validateRecaptcha/validateRecaptcha.ts
function validateRecaptcha (line 1) | function validateRecaptcha(string: string): boolean {
FILE: src/setupTests.spec.ts
constant STORAGE_KEY (line 3) | const STORAGE_KEY = 'localStorage';
FILE: src/shared-components/ActionItems/ActionItem.mocks.ts
constant MOCKS (line 521) | const MOCKS = [
constant MOCKS_ERROR (line 533) | const MOCKS_ERROR = [
FILE: src/shared-components/ActionItems/ActionItemDeleteModal/ActionItemDeleteModal.tsx
type IItemDeleteModalProps (line 41) | interface IItemDeleteModalProps {
FILE: src/shared-components/ActionItems/ActionItemUpdateModal/ActionItemUpdateStatusModal.tsx
type IItemUpdateStatusModalProps (line 50) | interface IItemUpdateStatusModalProps {
FILE: src/shared-components/ActionItems/ActionItemViewModal/ActionItemViewModal.spec.tsx
constant MOCKS (line 127) | const MOCKS = [
FILE: src/shared-components/ActionItems/ActionItemViewModal/ActionItemViewModal.tsx
type IViewModalProps (line 37) | interface IViewModalProps {
FILE: src/shared-components/BaseModal/BaseModal.tsx
function BaseModal (line 29) | function BaseModal({
FILE: src/shared-components/Button/Button.tsx
constant BOOTSTRAP_VARIANTS (line 27) | const BOOTSTRAP_VARIANTS = new Set([
FILE: src/shared-components/Button/Button.types.ts
type ButtonSize (line 10) | type ButtonSize = 'sm' | 'md' | 'lg' | 'xl';
type ButtonIconPosition (line 13) | type ButtonIconPosition = 'start' | 'end';
type ButtonVariant (line 19) | type ButtonVariant =
type InterfaceButtonProps (line 31) | interface InterfaceButtonProps
type ButtonProps (line 50) | type ButtonProps = InterfaceButtonProps;
FILE: src/shared-components/CRUDModalTemplate/CRUDModalTemplate.spec.tsx
type InterfaceTestData (line 1248) | interface InterfaceTestData {
type InterfaceTestData (line 1322) | interface InterfaceTestData {
type InterfaceTestResult (line 1327) | interface InterfaceTestResult {
FILE: src/shared-components/CRUDModalTemplate/CreateModal.stories.tsx
constant DEMO_LABELS (line 6) | const DEMO_LABELS = {
type Story (line 65) | type Story = StoryObj<typeof CreateModal>;
FILE: src/shared-components/CRUDModalTemplate/DeleteModal.stories.tsx
constant DEMO_TEXT (line 6) | const DEMO_TEXT = {
type Story (line 58) | type Story = StoryObj<typeof DeleteModal>;
FILE: src/shared-components/CRUDModalTemplate/EditModal.stories.tsx
constant DEMO_LABELS (line 6) | const DEMO_LABELS = {
type Story (line 67) | type Story = StoryObj<typeof EditModal>;
FILE: src/shared-components/CRUDModalTemplate/ViewModal.stories.tsx
constant DEMO_TEXT (line 7) | const DEMO_TEXT = {
type Story (line 88) | type Story = StoryObj<typeof ViewModal>;
FILE: src/shared-components/CRUDModalTemplate/hooks/useFormModal.spec.ts
type InterfaceTestFormData (line 5) | interface InterfaceTestFormData {
FILE: src/shared-components/CRUDModalTemplate/hooks/useFormModal.ts
function useFormModal (line 50) | function useFormModal<T>(
FILE: src/shared-components/CRUDModalTemplate/hooks/useModalState.ts
function useModalState (line 27) | function useModalState(
FILE: src/shared-components/CRUDModalTemplate/hooks/useMutationModal.spec.ts
type InterfaceTestFormData (line 5) | interface InterfaceTestFormData {
type InterfaceTestResult (line 11) | interface InterfaceTestResult {
FILE: src/shared-components/CRUDModalTemplate/hooks/useMutationModal.ts
function useMutationModal (line 57) | function useMutationModal<TData, TResult = unknown>(
FILE: src/shared-components/DataGridWrapper/DataGridErrorOverlay.tsx
type InterfaceDataGridErrorOverlayProps (line 14) | interface InterfaceDataGridErrorOverlayProps {
function DataGridErrorOverlay (line 27) | function DataGridErrorOverlay({
FILE: src/shared-components/DataGridWrapper/DataGridWrapper.spec.tsx
type IRenderCellCall (line 15) | interface IRenderCellCall {
type TestRow (line 295) | type TestRow = {
FILE: src/shared-components/DataGridWrapper/DataGridWrapper.stories.tsx
type User (line 10) | type User = {
type Story (line 130) | type Story = StoryObj<InterfaceDataGridWrapperProps<User>>;
FILE: src/shared-components/DataGridWrapper/DataGridWrapper.tsx
function convertTokenColumns (line 46) | function convertTokenColumns(
function DataGridWrapper (line 121) | function DataGridWrapper<T extends { id: string | number }>(
FILE: src/shared-components/DataTable/BulkActionsBar.tsx
function BulkActionsBar (line 18) | function BulkActionsBar({
FILE: src/shared-components/DataTable/DataTable.pagination.spec.tsx
type ITestUser (line 7) | interface ITestUser {
FILE: src/shared-components/DataTable/DataTable.spec.tsx
type IRow (line 507) | interface IRow {
type IColumnDef (line 511) | interface IColumnDef {
type Row (line 598) | type Row = { value: number };
type Row (line 609) | type Row = { flag: boolean; name: string };
type Row (line 630) | type Row = { id?: number | null; value: string };
type Row (line 715) | type Row = { id: string; name: string };
type TestRow (line 958) | type TestRow = { a: string; b: string };
type TestRow (line 981) | type TestRow = { a: string };
type Row (line 1008) | type Row = { id: string; name: string };
type Row (line 1031) | type Row = { id: string; name: string };
type Row (line 1064) | type Row = { id: string; name: string };
type Row (line 1090) | type Row = { id: string; name: string };
type Row (line 1113) | type Row = { id: string; name: string };
type Row (line 1148) | type Row = { id: string; name: string };
type Row (line 1178) | type Row = { id: string; name: string };
type Row (line 1199) | type Row = { id: string; name: string };
type Row (line 1222) | type Row = { id: string; name: string };
type Row (line 1260) | type Row = { id: string; name: string };
type Row (line 1299) | type Row = { id: string; name: string };
type Row (line 1341) | type Row = { id: string; name: string };
type Row (line 1380) | type Row = { id: string; name: string };
type Row (line 1627) | type Row = { id: string; name: string };
type Row (line 1661) | type Row = { id: string; name: string };
type Row (line 1981) | type Row = {
type Row (line 2219) | type Row = { id: string; priority: string };
type Row (line 2273) | type Row = { id: string; score: number | null };
type Row (line 2318) | type Row = { id: string; name: string };
type Row (line 2364) | type Row = { id: string; name: string; status: string };
type Row (line 2406) | type Row = { id: string; name: string; group: string };
type Row (line 2452) | type Row = { id: string; value: number };
type Row (line 2486) | type Row = { id: string; name: string; age: number };
type Row (line 2534) | type Row = { id: string; name: string };
type Row (line 2578) | type Row = { id: string; active: boolean };
type Row (line 2622) | type Row = { id: string; name: string };
type Row (line 2664) | type Row = { id: string; value: string | null | undefined };
type Row (line 2708) | type Row = { id: string; name: string };
FILE: src/shared-components/DataTable/DataTable.tsx
constant DEFAULT_SKELETON_ROWS (line 46) | const DEFAULT_SKELETON_ROWS: number = 5;
function defaultCompare (line 52) | function defaultCompare(a: unknown, b: unknown): number {
function DataTable (line 75) | function DataTable<T>(props: IDataTableProps<T>) {
FILE: src/shared-components/DataTable/DataTableSkeleton.tsx
function DataTableSkeleton (line 32) | function DataTableSkeleton<T>({
FILE: src/shared-components/DataTable/DataTableTable.spec.tsx
type Row (line 14) | type Row = { id: string; name: string; value?: number };
function defaultProps (line 22) | function defaultProps(
FILE: src/shared-components/DataTable/DataTableTable.tsx
function renderCell (line 30) | function renderCell<T>(
function DataTableTable (line 60) | function DataTableTable<T>({
FILE: src/shared-components/DataTable/LoadingMoreRows.spec.tsx
type Row (line 137) | type Row = { id: string; name: string };
type Row (line 207) | type Row = { id: string; name: string };
type Row (line 230) | type Row = { id: string; name: string };
type Row (line 275) | type Row = { id: string; name: string };
type Row (line 321) | type Row = { id: string; name: string };
type Row (line 345) | type Row = { id: string; name: string };
type RowWithId (line 478) | type RowWithId = { id?: string };
type Row (line 637) | type Row = { id: string; name: string };
type Row (line 661) | type Row = { id: string; name: string };
FILE: src/shared-components/DataTable/LoadingMoreRows.tsx
function LoadingMoreRows (line 29) | function LoadingMoreRows<T>({
FILE: src/shared-components/DataTable/Pagination.tsx
function PaginationControls (line 24) | function PaginationControls({
FILE: src/shared-components/DataTable/SearchBar.tsx
function SearchBar (line 12) | function SearchBar(props: InterfaceSearchBarProps) {
FILE: src/shared-components/DataTable/TableLoader.tsx
function TableLoaderComponent (line 16) | function TableLoaderComponent<T>({
FILE: src/shared-components/DataTable/cells/ActionsCell.spec.tsx
type Row (line 7) | type Row = { id: string; name: string };
FILE: src/shared-components/DataTable/cells/ActionsCell.tsx
function ActionsCell (line 13) | function ActionsCell<T>(
FILE: src/shared-components/DataTable/hooks/useDataTableFiltering.ts
function useDataTableFiltering (line 42) | function useDataTableFiltering<T>(
FILE: src/shared-components/DataTable/hooks/useDataTableSelection.spec.tsx
type TestRow (line 6) | type TestRow = { id: string };
FILE: src/shared-components/DataTable/hooks/useDataTableSelection.ts
function useDataTableSelection (line 17) | function useDataTableSelection<T>(
FILE: src/shared-components/DataTable/hooks/useSimpleTableData.spec.tsx
type Item (line 15) | type Item = { id: string; name: string };
type MockQueryResultFn (line 17) | type MockQueryResultFn<T = unknown> = () => Promise<QueryResult<T>>;
type IItemsData (line 19) | interface IItemsData {
function makeResult (line 23) | function makeResult<TData>(
function Consumer (line 55) | function Consumer<TRow, TData>({
type INestedData (line 447) | interface INestedData {
FILE: src/shared-components/DataTable/hooks/useSimpleTableData.ts
type IUseSimpleTableDataOptions (line 7) | interface IUseSimpleTableDataOptions<TRow, TData> {
type IUseSimpleTableDataResult (line 18) | interface IUseSimpleTableDataResult<TRow, TData> {
function useSimpleTableData (line 67) | function useSimpleTableData<TRow = unknown, TData = unknown>(
FILE: src/shared-components/DataTable/hooks/useTableData.spec.tsx
type Node (line 9) | type Node = { id: string; name: string };
type Row (line 10) | type Row = { key: string; label: string };
type MockQueryResultFn (line 16) | type MockQueryResultFn<T = unknown> = () => Promise<QueryResult<T>>;
type IItemsData (line 23) | interface IItemsData {
type IDatasetsData (line 39) | interface IDatasetsData {
function Consumer (line 51) | function Consumer<TData = unknown, TNode = Node, TRow = Row>({
type ComplexNode (line 1484) | type ComplexNode = {
type ComplexRow (line 1491) | type ComplexRow = {
type TestData (line 1776) | type TestData = { users?: Connection<{ id: string }> };
type TestData (line 1795) | type TestData = { users: Connection<{ id: string }> | null };
type TestData (line 1814) | type TestData = { users: string };
type TestData (line 1832) | type TestData = { count: number };
type TestData (line 1850) | type TestData = {
type TestData (line 1870) | type TestData = { users: { edges: string } };
type TestData (line 1888) | type TestData = { users: Connection<{ id: string }> | null };
type TestData (line 1906) | type TestData = {
type TestData (line 1927) | type TestData = {
type TestData (line 1952) | type TestData = {
FILE: src/shared-components/DataTable/hooks/useTableData.ts
function useTableData (line 12) | function useTableData<TNode = unknown, TRow = TNode, TData = unknown>(
FILE: src/shared-components/DataTable/types.spec.ts
type IUser (line 14) | interface IUser {
FILE: src/shared-components/DataTable/utils.spec.ts
type ITestRow (line 123) | interface ITestRow {
FILE: src/shared-components/DataTable/utils.ts
function renderHeader (line 12) | function renderHeader(header: HeaderRender) {
function renderCellValue (line 22) | function renderCellValue(value: unknown) {
function getCellValue (line 41) | function getCellValue<T, TValue = unknown>(
function toSearchableString (line 56) | function toSearchableString(v: unknown): string {
FILE: src/shared-components/DateRangePicker/DateRangePicker.spec.tsx
function renderComponent (line 84) | function renderComponent(
FILE: src/shared-components/DateRangePicker/DateRangePicker.tsx
function isDayjsLike (line 39) | function isDayjsLike(value: unknown): value is { toDate: () => Date } {
function normalizeToDate (line 48) | function normalizeToDate(value: unknown): Date | null {
function toDayjs (line 63) | function toDayjs(value: Date | null): Dayjs | null {
function normalizeRange (line 67) | function normalizeRange(partial: Partial<IDateRangeValue>): IDateRangeVa...
function DateRangePicker (line 74) | function DateRangePicker({
FILE: src/shared-components/ErrorBoundaryWrapper/ErrorBoundaryWrapper.spec.tsx
type IComponent (line 20) | interface IComponent {
FILE: src/shared-components/ErrorBoundaryWrapper/ErrorBoundaryWrapper.tsx
class ErrorBoundaryWrapper (line 58) | class ErrorBoundaryWrapper extends React.Component<
method constructor (line 63) | constructor(props: InterfaceErrorBoundaryWrapperProps) {
method getDerivedStateFromError (line 76) | static getDerivedStateFromError(
method componentDidCatch (line 90) | componentDidCatch(error: Error, errorInfo: ErrorInfo): void {
method render (line 136) | render(): ReactNode {
FILE: src/shared-components/ErrorPanel/ErrorPanel.tsx
constant ERROR_MESSAGE_MAX_LENGTH (line 21) | const ERROR_MESSAGE_MAX_LENGTH = 200;
constant SENSITIVE_PATTERNS (line 22) | const SENSITIVE_PATTERNS = [
function sanitizeErrorMessage (line 35) | function sanitizeErrorMessage(errorMessage: string): string {
type InterfaceErrorPanelProps (line 53) | interface InterfaceErrorPanelProps {
FILE: src/shared-components/EventForm/utils/recurrenceOptions.ts
type InterfaceRecurrenceOption (line 15) | interface InterfaceRecurrenceOption {
FILE: src/shared-components/EventForm/utils/visibilityUtils.ts
type EventVisibility (line 11) | type EventVisibility = 'PUBLIC' | 'ORGANIZATION' | 'INVITE_ONLY';
FILE: src/shared-components/EventListCard/EventListCard.spec.tsx
function wait (line 54) | async function wait(ms = 100): Promise<void> {
FILE: src/shared-components/EventListCard/EventListCard.tsx
function EventListCard (line 40) | function EventListCard(props: IEventListCard): JSX.Element {
FILE: src/shared-components/EventListCard/EventListCardProps.mock.ts
type IEventListCardProps (line 4) | interface IEventListCardProps extends InterfaceEvent {
FILE: src/shared-components/EventListCard/Modal/EventListCardMocks.ts
constant MOCKS (line 8) | const MOCKS = [
constant ERROR_MOCKS (line 295) | const ERROR_MOCKS = [
FILE: src/shared-components/EventListCard/Modal/EventListCardModals.spec.tsx
type MockEventListCardProps (line 77) | type MockEventListCardProps = InterfaceEvent & {
FILE: src/shared-components/EventListCard/Modal/EventListCardModals.tsx
function EventListCardModals (line 54) | function EventListCardModals({
FILE: src/shared-components/EventListCard/Modal/updateLogic.spec.ts
type MockEventListCardProps (line 49) | type MockEventListCardProps = InterfaceEvent;
type HandlerArgs (line 94) | type HandlerArgs = Parameters<
type HandlerOverrides (line 98) | type HandlerOverrides = Partial<HandlerArgs>;
FILE: src/shared-components/Navbar/Navbar.tsx
function PageHeader (line 56) | function PageHeader({
FILE: src/shared-components/NotificationToast/NotificationToast.tsx
constant DEFAULT_NAMESPACE (line 16) | const DEFAULT_NAMESPACE: NotificationToastNamespace = 'common';
constant SHARED_DEFAULTS (line 18) | const SHARED_DEFAULTS = {
constant DEFAULT_TOAST_OPTIONS (line 25) | const DEFAULT_TOAST_OPTIONS: ToastOptions = {
constant DEFAULT_CONTAINER_PROPS (line 30) | const DEFAULT_CONTAINER_PROPS: ToastContainerProps = {
function resolveNotificationToastMessage (line 47) | function resolveNotificationToastMessage(
function showToast (line 69) | function showToast(
function showPromise (line 87) | function showPromise<T = void>(
function NotificationToastContainer (line 148) | function NotificationToastContainer(
FILE: src/shared-components/OrganizationCard/OrganizationCard.tsx
type InterfaceOrganizationCardPropsPG (line 60) | interface InterfaceOrganizationCardPropsPG {
function OrganizationCard (line 64) | function OrganizationCard({
FILE: src/shared-components/PeopleTabNavbar/PeopleTabNavbar.spec.tsx
type SearchBarProps (line 9) | type SearchBarProps = {
FILE: src/shared-components/PeopleTabNavbar/PeopleTabNavbar.tsx
function PeopleTabNavbar (line 53) | function PeopleTabNavbar({
FILE: src/shared-components/Recurrence/RecurrenceWeeklySection.tsx
type InterfaceRecurrenceWeeklySectionProps (line 10) | interface InterfaceRecurrenceWeeklySectionProps {
FILE: src/shared-components/Recurrence/RecurrenceYearlySection.tsx
type InterfaceRecurrenceYearlySectionProps (line 4) | interface InterfaceRecurrenceYearlySectionProps {
FILE: src/shared-components/ReportingTable/ReportingTable.spec.tsx
constant COL_MIN_WIDTH (line 13) | const COL_MIN_WIDTH = 'minWidth' as const;
FILE: src/shared-components/SidebarNavItem/SidebarNavItem.tsx
constant ICON_SIZE (line 41) | const ICON_SIZE = 25;
FILE: src/shared-components/TableLoader/TableLoader.spec.tsx
type IMockColumn (line 20) | interface IMockColumn {
FILE: src/shared-components/pinnedPosts/pinnedPostsLayout.spec.tsx
constant TOGGLE_PINNED_POST_MOCK (line 96) | const TOGGLE_PINNED_POST_MOCK = {
constant DELETE_POST_MOCK (line 119) | const DELETE_POST_MOCK = {
FILE: src/shared-components/postCard/PostCard.tsx
function PostCard (line 61) | function PostCard({ ...props }: InterfacePostCard): JSX.Element {
FILE: src/shared-components/posts/createPostModal/createPostModal.spec.tsx
method get (line 216) | get() {
method set (line 219) | set(value) {
FILE: src/shared-components/posts/createPostModal/createPostModal.tsx
function CreatePostModal (line 33) | function CreatePostModal({
FILE: src/shared-components/posts/posts.spec.tsx
constant FIXED_TIMESTAMP (line 259) | const FIXED_TIMESTAMP = dayjs().subtract(14, 'days').toISOString();
FILE: src/shared-components/posts/posts.tsx
function PostsPage (line 74) | function PostsPage() {
FILE: src/shared-components/useDebounce/useDebounce.tsx
function useDebounce (line 21) | function useDebounce<T extends (...args: unknown[]) => void>(
FILE: src/state/helpers/Action.ts
type InterfaceAction (line 1) | interface InterfaceAction<T = unknown> {
FILE: src/state/reducers/index.ts
type RootState (line 10) | type RootState = ReturnType<typeof reducers>;
FILE: src/state/reducers/routesReducer.ts
type TargetsType (line 3) | type TargetsType = {
type SubTargetType (line 9) | type SubTargetType = {
type ComponentType (line 34) | type ComponentType = {
constant INITIAL_STATE (line 101) | const INITIAL_STATE = {
FILE: src/state/reducers/userRoutesReducer.ts
type TargetsType (line 4) | type TargetsType = {
type SubTargetType (line 10) | type SubTargetType = {
type ComponentType (line 33) | type ComponentType = {
constant INITIAL_USER_STATE (line 97) | const INITIAL_USER_STATE = {
FILE: src/state/store.ts
type AppDispatch (line 8) | type AppDispatch = typeof store.dispatch;
FILE: src/test-utils/I18nextProviderMock.tsx
function I18nextProvider (line 14) | function I18nextProvider({
FILE: src/test-utils/TestErrorBoundary.tsx
type TestInterfaceErrorBoundaryProps (line 13) | interface TestInterfaceErrorBoundaryProps {
type TestInterfaceErrorBoundaryState (line 17) | interface TestInterfaceErrorBoundaryState {
class TestErrorBoundary (line 22) | class TestErrorBoundary extends React.Component<
method constructor (line 26) | constructor(props: TestInterfaceErrorBoundaryProps) {
method getDerivedStateFromError (line 34) | static getDerivedStateFromError(
method render (line 43) | render(): React.ReactNode {
FILE: src/test-utils/TestWrapper.tsx
type InterfaceTestWrapperProps (line 44) | interface InterfaceTestWrapperProps {
FILE: src/test-utils/check-i18n/check-i18n-diff.test.js
class ExitError (line 31) | class ExitError extends Error {
method constructor (line 32) | constructor(code) {
FILE: src/test-utils/localStorageMock.ts
method length (line 27) | get length(): number {
FILE: src/test-utils/mocks/react-bootstrap/components/DropdownBase.tsx
type DivProps (line 8) | type DivProps = React.PropsWithChildren<
FILE: src/test-utils/mocks/react-bootstrap/components/DropdownItem.tsx
type BtnProps (line 7) | type BtnProps = React.PropsWithChildren<
FILE: src/test-utils/mocks/react-bootstrap/components/DropdownMenu.tsx
type DivProps (line 7) | type DivProps = React.PropsWithChildren<
FILE: src/test-utils/mocks/react-bootstrap/components/DropdownToggle.tsx
type BtnProps (line 8) | type BtnProps = React.PropsWithChildren<
FILE: src/test-utils/mocks/react-bootstrap/types.ts
type DivProps (line 3) | type DivProps = React.PropsWithChildren<
type BtnProps (line 6) | type BtnProps = React.PropsWithChildren<
type InterfaceDropdown (line 10) | interface InterfaceDropdown extends React.FC<DivProps> {
FILE: src/types/AdminPortal/Advertisement/interface.ts
type InterfaceAddOnRegisterProps (line 3) | interface InterfaceAddOnRegisterProps {
type InterfaceFormStateTypes (line 21) | interface InterfaceFormStateTypes {
type InterfaceAddOnEntryProps (line 32) | interface InterfaceAddOnEntryProps {
FILE: src/types/AdminPortal/Advertisement/type.ts
type AdvertisementType (line 5) | enum AdvertisementType {
type Advertisement (line 12) | type Advertisement = {
type AdvertisementAttachment (line 30) | type AdvertisementAttachment = {
type AdvertisementEdge (line 35) | type AdvertisementEdge = {
type AdvertisementsConnection (line 40) | type AdvertisementsConnection = {
type CreateAdvertisementInput (line 46) | type CreateAdvertisementInput = {
type CreateAdvertisementPayload (line 56) | type CreateAdvertisementPayload = {
FILE: src/types/AdminPortal/Agenda/interface.ts
type InterfaceAgendaItemCategoryInfo (line 6) | interface InterfaceAgendaItemCategoryInfo {
type InterfaceAgendaItemCategoryList (line 19) | interface InterfaceAgendaItemCategoryList {
type InterfaceAgendaItemInfo (line 26) | interface InterfaceAgendaItemInfo {
type InterfaceAgendaFolderInfo (line 68) | interface InterfaceAgendaFolderInfo {
type InterfaceAgendaFolderList (line 120) | interface InterfaceAgendaFolderList {
type InterfaceAttachment (line 127) | interface InterfaceAttachment {
type InterfaceCreateFormStateType (line 138) | interface InterfaceCreateFormStateType {
type InterfaceFormStateType (line 156) | interface InterfaceFormStateType {
type InterfaceAgendaItemsCreateModalProps (line 171) | interface InterfaceAgendaItemsCreateModalProps {
type InterfaceAgendaItemsUpdateModalProps (line 184) | interface InterfaceAgendaItemsUpdateModalProps {
type InterfaceAgendaItemsDeleteModalProps (line 201) | interface InterfaceAgendaItemsDeleteModalProps {
type InterfaceAgendaFolderDeleteModalProps (line 213) | interface InterfaceAgendaFolderDeleteModalProps {
type InterfaceAgendaFolderCreateFormStateType (line 222) | interface InterfaceAgendaFolderCreateFormStateType {
type InterfaceAgendaFolderCreateModalProps (line 231) | interface InterfaceAgendaFolderCreateModalProps {
type InterfaceAgendaFolderUpdateFormStateType (line 240) | interface InterfaceAgendaFolderUpdateFormStateType {
type InterfaceAgendaFolderUpdateModalProps (line 250) | interface InterfaceAgendaFolderUpdateModalProps {
type InterfaceItemFormStateType (line 262) | interface InterfaceItemFormStateType {
type InterfaceAgendaItemsPreviewModalProps (line 290) | interface InterfaceAgendaItemsPreviewModalProps {
type InterfaceAgendaDragAndDropProps (line 304) | interface InterfaceAgendaDragAndDropProps {
type InterfaceUseAgendaMutationsProps (line 322) | interface InterfaceUseAgendaMutationsProps {
FILE: src/types/AdminPortal/Agenda/type.ts
type AgendaCategory (line 4) | type AgendaCategory = {
FILE: src/types/AdminPortal/ApplyToSelector/interface.ts
type ApplyToType (line 6) | type ApplyToType = 'series' | 'instance';
type InterfaceApplyToSelectorProps (line 11) | interface InterfaceApplyToSelectorProps {
FILE: src/types/AdminPortal/AssignmentTypeSelector/interface.ts
type AssignmentType (line 4) | type AssignmentType = 'volunteer' | 'volunteerGroup';
type InterfaceAssignmentTypeSelectorProps (line 9) | interface InterfaceAssignmentTypeSelectorProps {
FILE: src/types/AdminPortal/Contribution/interface.ts
type InterfaceContriStatsProps (line 1) | interface InterfaceContriStatsProps {
type InterfaceOrgContriCardsProps (line 8) | interface InterfaceOrgContriCardsProps {
FILE: src/types/AdminPortal/EventRegistrantsModal/AddOnSpot.ts
type InterfaceAddOnSpotAttendeeProps (line 4) | interface InterfaceAddOnSpotAttendeeProps {
type InterfaceFormData (line 13) | interface InterfaceFormData {
FILE: src/types/AdminPortal/EventRegistrantsModal/InviteByEmail/interface.ts
type InterfaceInviteByEmailModalProps (line 4) | interface InterfaceInviteByEmailModalProps {
FILE: src/types/AdminPortal/EventRegistrantsModal/interface.ts
type InterfaceEventRegistrantsModalProps (line 5) | interface InterfaceEventRegistrantsModalProps {
type InterfaceBaseModalProps (line 15) | interface InterfaceBaseModalProps {
type InterfaceAutocompleteMockProps (line 27) | interface InterfaceAutocompleteMockProps {
FILE: src/types/AdminPortal/EventRegistrantsWrapper/interface.ts
type InterfaceEventRegistrantsWrapperProps (line 4) | interface InterfaceEventRegistrantsWrapperProps {
FILE: src/types/AdminPortal/MemberDetail/interface.ts
type InterfaceResolveAvatarFileParams (line 4) | interface InterfaceResolveAvatarFileParams {
type InterfacePhoneFieldConfig (line 15) | interface InterfacePhoneFieldConfig {
type InterfaceAddressFieldConfig (line 26) | interface InterfaceAddressFieldConfig {
type InterfaceMemberDetailProps (line 37) | type InterfaceMemberDetailProps = { id?: string };
FILE: src/types/AdminPortal/OrgUpdate/interface.ts
type InterfaceOrgUpdateProps (line 4) | interface InterfaceOrgUpdateProps {
type InterfaceOrganization (line 12) | interface InterfaceOrganization {
type InterfaceMutationUpdateOrganizationInput (line 40) | interface InterfaceMutationUpdateOrganizationInput {
FILE: src/types/AdminPortal/Organization/interface.ts
type InterfaceOrgPeopleListCardProps (line 1) | interface InterfaceOrgPeopleListCardProps {
type InterfaceOrgPostCardProps (line 6) | interface InterfaceOrgPostCardProps {
FILE: src/types/AdminPortal/Organization/type.ts
type Organization (line 24) | type Organization = {
type OrganizationCustomField (line 47) | type OrganizationCustomField = {
type OrganizationInput (line 54) | type OrganizationInput = {
FILE: src/types/AdminPortal/OrganizationDashCards/CardItem/interface.ts
type InterfaceCardItem (line 1) | interface InterfaceCardItem {
FILE: src/types/AdminPortal/OrganizationPeople/addMember/interface.ts
type InterfaceAddMemberProps (line 5) | interface InterfaceAddMemberProps {
FILE: src/types/AdminPortal/PluginStore/UninstallConfirmationModal/interface.ts
type IUninstallConfirmationModalProps (line 11) | interface IUninstallConfirmationModalProps {
FILE: src/types/AdminPortal/Tag/interface.ts
type InterfaceMemberData (line 4) | interface InterfaceMemberData {
type InterfaceTagMembersData (line 10) | interface InterfaceTagMembersData {
type InterfaceAddPeopleToTagProps (line 27) | interface InterfaceAddPeopleToTagProps {
type InterfacePaginationVariables (line 35) | interface InterfacePaginationVariables {
type InterfaceBaseQueryResult (line 39) | interface InterfaceBaseQueryResult {
type InterfaceBaseFetchMoreOptions (line 45) | interface InterfaceBaseFetchMoreOptions<T> {
type InterfaceQueryUserTagsMembersToAssignTo (line 50) | interface InterfaceQueryUserTagsMembersToAssignTo {
type InterfaceTagUsersToAssignToQuery (line 55) | interface InterfaceTagUsersToAssignToQuery
FILE: src/types/AdminPortal/Tag/utils.ts
constant TAGS_QUERY_DATA_CHUNK_SIZE (line 1) | const TAGS_QUERY_DATA_CHUNK_SIZE = 10;
FILE: src/types/AdminPortal/TagActions/interface.ts
type InterfaceTagActionsProps (line 4) | interface InterfaceTagActionsProps {
FILE: src/types/AdminPortal/UpdateSession/interface.ts
type InterfaceUpdateSessionProps (line 4) | interface InterfaceUpdateSessionProps {
FILE: src/types/AdminPortal/UserDetails/UserEvent/interface.ts
type InterfaceUserEvent (line 5) | interface InterfaceUserEvent {
type InterfaceGQLUser (line 19) | interface InterfaceGQLUser {
type InterfaceGQLEventLite (line 27) | interface InterfaceGQLEventLite {
type InterfaceGQLOrganization (line 34) | interface InterfaceGQLOrganization {
type InterfaceGetUserEventsData (line 42) | interface InterfaceGetUserEventsData {
type InterfaceUserEventsGQL (line 49) | interface InterfaceUserEventsGQL {
type ParticipationFilter (line 72) | type ParticipationFilter = 'ALL' | 'ADMIN_CREATOR';
FILE: src/types/AdminPortal/UserDetails/UserEvent/type.ts
type PeopleTabUserEventsProps (line 2) | type PeopleTabUserEventsProps = { orgId?: string; userId?: string };
FILE: src/types/AdminPortal/UserDetails/UserOrganization/interface.ts
type InterfaceJoinedOrgEdge (line 1) | interface InterfaceJoinedOrgEdge {
type InterfaceJoinedOrganizationsData (line 12) | interface InterfaceJoinedOrganizationsData {
FILE: src/types/AdminPortal/UserDetails/UserOrganization/type.ts
type InterfaceUserOrganizationsProps (line 1) | type InterfaceUserOrganizationsProps = { id?: string };
type InterfaceOrgRelationType (line 2) | type InterfaceOrgRelationType = 'CREATED' | 'BELONG_TO' | 'JOINED';
type InterfaceUserOrg (line 4) | type InterfaceUserOrg = {
FILE: src/types/AdminPortal/UserDetails/UserTags/interface.ts
type InterfaceUserTag (line 2) | interface InterfaceUserTag {
type InterfaceGetUserTagsData (line 11) | interface InterfaceGetUserTagsData {
type InterfaceUserTagGQL (line 15) | interface InterfaceUserTagGQL {
FILE: src/types/AdminPortal/UserDetails/UserTags/type.ts
type InterfaceUserTagsProps (line 2) | type InterfaceUserTagsProps = { id?: string };
FILE: src/types/AdminPortal/UserTableRow/interface.ts
type InterfaceUserInfo (line 6) | interface InterfaceUserInfo {
type InterfaceActionVariant (line 17) | type InterfaceActionVariant =
type InterfaceActionButton (line 26) | interface InterfaceActionButton {
type InterfaceUserTableRowProps (line 39) | interface InterfaceUserTableRowProps {
FILE: src/types/AdminPortal/VolunteerDeleteModal/interface.ts
type InterfaceVolunteerDeleteModalProps (line 6) | interface InterfaceVolunteerDeleteModalProps {
FILE: src/types/AdminPortal/VolunteerViewModal/interface.ts
type InterfaceVolunteerViewModalProps (line 6) | interface InterfaceVolunteerViewModalProps {
FILE: src/types/AdminPortal/actionItem.ts
type ActionItem (line 5) | type ActionItem = {
type ActionItemCategory (line 22) | type ActionItemCategory = {
type CreateActionItemInput (line 32) | type CreateActionItemInput = {
type UpdateActionItemInput (line 39) | type UpdateActionItemInput = {
FILE: src/types/AdminPortal/address.ts
type Address (line 1) | type Address = {
type AddressInput (line 12) | type AddressInput = {
FILE: src/types/AdminPortal/membership.ts
type MembershipRequest (line 4) | type MembershipRequest = {
FILE: src/types/AdminPortal/pagination.ts
type DefaultConnectionPageInfo (line 1) | type DefaultConnectionPageInfo = {
FILE: src/types/AdminPortal/venue.ts
type Venue (line 3) | type Venue = {
type VenueInput (line 12) | type VenueInput = {
type EditVenueInput (line 20) | type EditVenueInput = {
FILE: src/types/Auth/LoginForm/interface.ts
type InterfaceLoginFormData (line 4) | interface InterfaceLoginFormData {
type InterfaceSignInResult (line 15) | interface InterfaceSignInResult {
type InterfaceLoginFormProps (line 36) | interface InterfaceLoginFormProps {
FILE: src/types/Auth/OrgSelector/interface.ts
type InterfaceOrgOption (line 4) | interface InterfaceOrgOption {
type InterfaceOrgSelectorProps (line 19) | interface InterfaceOrgSelectorProps {
FILE: src/types/Auth/PasswordStrengthIndicator/interface.ts
type InterfacePasswordStrengthIndicatorProps (line 7) | interface InterfacePasswordStrengthIndicatorProps {
FILE: src/types/Auth/RegistrationForm/interface.ts
type IRegistrationFormData (line 7) | interface IRegistrationFormData {
type IRegistrationFormProps (line 18) | interface IRegistrationFormProps {
FILE: src/types/Auth/ValidationInterfaces.ts
type InterfaceValidationResult (line 4) | interface InterfaceValidationResult {
type InterfacePasswordRequirements (line 14) | interface InterfacePasswordRequirements {
FILE: src/types/Auth/auth.ts
type InterfaceAuthUser (line 6) | interface InterfaceAuthUser {
type OAuthProviderKey (line 19) | type OAuthProviderKey = 'GOOGLE' | 'GITHUB';
type InterfaceOAuthLoginInput (line 24) | interface InterfaceOAuthLoginInput {
type InterfaceAuthenticationPayload (line 36) | interface InterfaceAuthenticationPayload {
type InterfaceOAuthAccount (line 48) | interface InterfaceOAuthAccount {
type InterfaceOAuthLinkResponse (line 62) | interface InterfaceOAuthLinkResponse {
type IOAuthProviderConfig (line 77) | interface IOAuthProviderConfig {
FILE: src/types/Auth/useFieldValidation.ts
type IValidationResult (line 1) | interface IValidationResult {
type ValidationTrigger (line 6) | type ValidationTrigger = 'onChange' | 'onBlur' | 'manual';
type IUseFieldValidationReturn (line 8) | interface IUseFieldValidationReturn {
FILE: src/types/Auth/useLogin/interface.ts
type ILoginCredentials (line 6) | interface ILoginCredentials {
type IUseLoginOptions (line 15) | interface IUseLoginOptions {
FILE: src/types/Auth/usePasswordVisibility.ts
type IUsePasswordVisibilityReturn (line 4) | interface IUsePasswordVisibilityReturn {
FILE: src/types/Comment/type.ts
type Comment (line 4) | type Comment = {
type CommentInput (line 14) | type CommentInput = {
FILE: src/types/CursorPagination/interface.ts
type PaginationVariables (line 7) | type PaginationVariables<T extends Record<string, unknown>> = T & {
type InterfaceConnectionData (line 26) | interface InterfaceConnectionData<TNode> {
type InterfaceCursorPaginationManagerProps (line 40) | interface InterfaceCursorPaginationManagerProps<
type InterfaceCursorPaginationManagerRef (line 185) | interface InterfaceCursorPaginationManagerRef<TNode> {
FILE: src/types/DataGridWrapper/interface.ts
type TokenAwareGridColDef (line 24) | type TokenAwareGridColDef<
type InterfaceDataGridWrapperProps (line 46) | interface InterfaceDataGridWrapperProps<
FILE: src/types/DropDown/interface.ts
type InterfaceDropDownProps (line 2) | interface InterfaceDropDownProps {
type InterfaceCollapsibleDropdown (line 8) | interface InterfaceCollapsibleDropdown {
FILE: src/types/Event/interface.ts
type UserRole (line 7) | enum UserRole {
type IMember (line 18) | interface IMember {
type IEvent (line 40) | interface IEvent {
type IOrgList (line 82) | interface IOrgList {
type IStatsModal (line 101) | interface IStatsModal {
type ICalendarProps (line 111) | interface ICalendarProps {
type IEventHeaderProps (line 123) | interface IEventHeaderProps {
type IEventListCard (line 134) | interface IEventListCard extends IEvent {
type IDeleteEventModalProps (line 139) | interface IDeleteEventModalProps {
type IPreviewEventModalProps (line 150) | interface IPreviewEventModalProps {
type IUpdateEventModalProps (line 194) | interface IUpdateEventModalProps {
type IAttendanceStatisticsModalProps (line 203) | interface IAttendanceStatisticsModalProps {
type IEventEdge (line 215) | interface IEventEdge {
type ICreateEventInput (line 267) | interface ICreateEventInput {
type InterfaceMember (line 290) | type InterfaceMember = IMember;
type InterfaceEvent (line 291) | type InterfaceEvent = IEvent;
type InterfaceIOrgList (line 292) | type InterfaceIOrgList = IOrgList;
type InterfaceStatsModal (line 293) | type InterfaceStatsModal = IStatsModal;
type InterfaceCalendarProps (line 294) | type InterfaceCalendarProps = ICalendarProps;
type InterfaceEventHeaderProps (line 295) | type InterfaceEventHeaderProps = IEventHeaderProps;
type InterfaceDeleteEventModalProps (line 296) | type InterfaceDeleteEventModalProps = IDeleteEventModalProps;
type InterfacePreviewEventModalProps (line 297) | type InterfacePreviewEventModalProps = IPreviewEventModalProps;
type InterfaceEventEdge (line 298) | type InterfaceEventEdge = IEventEdge;
type InterfaceUpdateEventModalProps (line 299) | type InterfaceUpdateEventModalProps = IUpdateEventModalProps;
type InterfaceAttendanceStatisticsModalProps (line 300) | type InterfaceAttendanceStatisticsModalProps =
FILE: src/types/Event/type.ts
type User (line 5) | type User = {
type Event (line 16) | type Event = {
type Feedback (line 45) | type Feedback = {
type FeedbackInput (line 54) | type FeedbackInput = {
type EventInput (line 60) | type EventInput = {
type EventAttendeeInput (line 78) | type EventAttendeeInput = {
type EventVolunteer (line 83) | type EventVolunteer = {
type EventVolunteerInput (line 96) | type EventVolunteerInput = {
type UpdateEventVolunteerInput (line 102) | type UpdateEventVolunteerInput = {
type EventVolunteerResponse (line 113) | type EventVolunteerResponse =
type EventOrderByInput (line 138) | type EventOrderByInput =
type EventWhereInput (line 141) | type EventWhereInput = {
FILE: src/types/Event/utils.ts
type InterfaceHoliday (line 1) | interface InterfaceHoliday {
FILE: src/types/EventForm/interface.ts
type IEventFormBase (line 7) | interface IEventFormBase {
type IEventFormValues (line 32) | interface IEventFormValues extends IEventFormBase {
type IEventFormSubmitPayload (line 43) | interface IEventFormSubmitPayload extends IEventFormBase {
type IEventFormProps (line 68) | interface IEventFormProps {
FILE: src/types/FormFieldGroup/interface.ts
type InterfaceFormFieldGroupProps (line 6) | interface InterfaceFormFieldGroupProps {
type IFormTextFieldProps (line 22) | interface IFormTextFieldProps extends InterfaceFormFieldGroupProps {
FILE: src/types/OrganizationCard/interface.ts
type InterfaceOrganizationCardProps (line 1) | interface InterfaceOrganizationCardProps {
FILE: src/types/PeopleTab/interface.ts
type InterfacePageHeaderProps (line 4) | interface InterfacePageHeaderProps {
type InterfacePeopleTabNavbarProps (line 24) | interface InterfacePeopleTabNavbarProps {
type InterfacePeopleTab (line 45) | interface InterfacePeopleTab {
type InterfacePeopleTabNavbar (line 53) | interface InterfacePeopleTabNavbar {
type InterfacePeopletabUserEventsProps (line 62) | interface InterfacePeopletabUserEventsProps {
type InterfacePeopleTabUserOrganizationProps (line 74) | interface InterfacePeopleTabUserOrganizationProps {
FILE: src/types/Post/interface.ts
type InterfacePostCard (line 3) | interface InterfacePostCard {
type InterfacePostCreator (line 17) | interface InterfacePostCreator {
type InterfacePostNode (line 23) | interface InterfacePostNode {
type InterfacePostEdge (line 34) | interface InterfacePostEdge {
type InterfacePageInfo (line 38) | interface InterfacePageInfo {
type InterfacePostConnection (line 45) | interface InterfacePostConnection {
type InterfaceOrganization (line 50) | interface InterfaceOrganization {
type InterfaceOrganizationPostListData (line 64) | interface InterfaceOrganizationPostListData {
type InterfaceMutationCreatePostInput (line 69) | interface InterfaceMutationCreatePostInput {
type InterfaceAttachment (line 76) | interface InterfaceAttachment {
type InterfaceCreator (line 80) | interface InterfaceCreator {
type InterfacePost (line 87) | interface InterfacePost {
type InterfacePinnedPostsLayoutProps (line 106) | interface InterfacePinnedPostsLayoutProps {
type InterfacePinnedPostCardProps (line 112) | interface InterfacePinnedPostCardProps {
type ICreatePostModalProps (line 118) | interface ICreatePostModalProps {
FILE: src/types/Post/type.ts
type Post (line 6) | type Post = {
type PostInput (line 22) | type PostInput = {
type PostOrderByInput (line 51) | type PostOrderByInput =
type PostUpdateInput (line 54) | type PostUpdateInput = {
type PostWhereInput (line 61) | type PostWhereInput = {
type PostComments (line 83) | type PostComments = {
type PostLikes (line 96) | type PostLikes = {
type PostNode (line 101) | type PostNode = {
type ICreatePostData (line 156) | interface ICreatePostData {
type ICreatePostInput (line 170) | interface ICreatePostInput {
type IFileMetadataInput (line 178) | interface IFileMetadataInput {
FILE: src/types/Recurrence/interface.ts
type InterfaceCustomRecurrenceModalProps (line 7) | interface InterfaceCustomRecurrenceModalProps {
FILE: src/types/ReportingTable/interface.ts
type ReportingRow (line 8) | type ReportingRow = Record<string, unknown>;
type ReportingCellParams (line 9) | type ReportingCellParams = GridCellParams<ReportingRow, ReportingRow, st...
type ReportingTableColumn (line 16) | type ReportingTableColumn = Partial<
type InfiniteScrollProps (line 55) | type InfiniteScrollProps = {
type ReportingTableGridProps (line 64) | type ReportingTableGridProps = {
type ReportingTableProps (line 76) | type ReportingTableProps = {
FILE: src/types/ReportingTable/utils.ts
constant ROW_HEIGHT (line 2) | const ROW_HEIGHT: number = 60;
constant PAGE_SIZE (line 3) | const PAGE_SIZE: number = 10;
FILE: src/types/SearchBar/interface.ts
type InterfaceSearchMeta (line 11) | interface InterfaceSearchMeta {
type InterfaceSearchBarRef (line 21) | interface InterfaceSearchBarRef {
type InterfaceSearchBarProps (line 33) | interface InterfaceSearchBarProps
FILE: src/types/SearchBar/type.ts
type SearchBarSize (line 1) | type SearchBarSize = 'sm' | 'md' | 'lg';
type SearchBarVariant (line 2) | type SearchBarVariant = 'outline' | 'filled' | 'ghost';
type SearchBarTrigger (line 3) | type SearchBarTrigger = 'button' | 'enter' | 'clear';
FILE: src/types/SidebarBase/interface.ts
type ISidebarBaseProps (line 4) | interface ISidebarBaseProps {
FILE: src/types/SidebarNavItem/interface.ts
type ISidebarNavItemProps (line 7) | interface ISidebarNavItemProps {
FILE: src/types/SidebarPluginSection/interface.ts
type ISidebarPluginSectionProps (line 6) | interface ISidebarPluginSectionProps {
FILE: src/types/UseUserProfile.ts
type InterfaceUseUserProfileReturn (line 13) | interface InterfaceUseUserProfileReturn {
FILE: src/types/UserPortal/Chat/interface.ts
type Chat (line 3) | type Chat = {
type InterfaceGroupChatDetailsProps (line 99) | interface InterfaceGroupChatDetailsProps {
type InterfaceContactCardProps (line 119) | interface InterfaceContactCardProps {
type InterfaceOrganizationMember (line 133) | interface InterfaceOrganizationMember {
type InterfaceChatUser (line 144) | interface InterfaceChatUser {
type InterfaceMockMessage (line 156) | interface InterfaceMockMessage {
FILE: src/types/UserPortal/CommentCard/interface.ts
type InterfaceCommentCardProps (line 6) | interface InterfaceCommentCardProps {
FILE: src/types/UserPortal/CreateDirectChat/interface.ts
type ChatsListRefetch (line 11) | type ChatsListRefetch = (
type CreateChatMutation (line 15) | type CreateChatMutation = (
type CreateChatMembershipMutation (line 26) | type CreateChatMembershipMutation = (
type InterfaceCreateDirectChatProps (line 40) | interface InterfaceCreateDirectChatProps {
FILE: src/types/UserPortal/Donation/interface.ts
type InterfaceDonation (line 1) | interface InterfaceDonation {
type InterfaceDonationCardProps (line 10) | interface InterfaceDonationCardProps {
FILE: src/types/UserPortal/EmptyChatState/interface.ts
type InterfaceEmptyChatStateProps (line 4) | interface InterfaceEmptyChatStateProps {
FILE: src/types/UserPortal/EventCard/interface.ts
type InterfaceEventCardProps (line 6) | interface InterfaceEventCardProps {
FILE: src/types/UserPortal/GroupModal/interface.ts
type InterfaceGroupModalProps (line 7) | interface InterfaceGroupModalProps {
FILE: src/types/UserPortal/RecurringEventVolunteerModal/interface.ts
type InterfaceRecurringEventVolunteerModalProps (line 4) | interface InterfaceRecurringEventVolunteerModalProps {
FILE: src/types/UserPortal/UserPortalCard/interface.ts
type InterfaceUserPortalCardProps (line 12) | interface InterfaceUserPortalCardProps {
FILE: src/types/UserPortal/UserPortalNavigationBar/interface.ts
type InterfaceUserPortalNavbarProps (line 54) | interface InterfaceUserPortalNavbarProps {
type InterfaceLanguageSelectorProps (line 173) | interface InterfaceLanguageSelectorProps {
type InterfaceUserDropdownProps (line 203) | interface InterfaceUserDropdownProps {
constant DEFAULT_USER_MODE_PROPS (line 252) | const DEFAULT_USER_MODE_PROPS: Partial<InterfaceUserPortalNavbarProps> =
constant DEFAULT_ORGANIZATION_MODE_PROPS (line 267) | const DEFAULT_ORGANIZATION_MODE_PROPS: Partial<InterfaceUserPortalNavbar...
FILE: src/types/UserPortal/UserPortalNavigationBar/types.ts
type UserProfileMenuItem (line 26) | type UserProfileMenuItem = {
type Language (line 66) | type Language = {
type BrandingConfig (line 74) | type BrandingConfig = {
type NavigationLink (line 103) | type NavigationLink = {
type OrganizationListQueryResponse (line 149) | type OrganizationListQueryResponse = {
type UserPortalNavbarState (line 156) | type UserPortalNavbarState = {
type OrganizationData (line 181) | type OrganizationData = {
FILE: src/types/UserPortal/UserProfile/interface.ts
type InterfaceUserProfileProps (line 6) | type InterfaceUserProfileProps = Partial<InterfaceUser>;
FILE: src/types/Volunteer/interface.ts
type InterfaceVolunteerData (line 4) | interface InterfaceVolunteerData {
type InterfaceVolunteerGroupData (line 22) | interface InterfaceVolunteerGroupData {
type InterfaceEventEdge (line 44) | interface InterfaceEventEdge {
type InterfaceMappedEvent (line 93) | interface InterfaceMappedEvent {
type InterfaceVolunteerStatus (line 154) | interface InterfaceVolunteerStatus {
type InterfaceVolunteerMembership (line 174) | interface InterfaceVolunteerMembership {
type InterfaceEventVolunteerInfo (line 243) | interface InterfaceEventVolunteerInfo {
type InterfaceCreateVolunteerGroupData (line 312) | interface InterfaceCreateVolunteerGroupData {
FILE: src/types/docker.ts
type DockerMode (line 4) | type DockerMode = 'ROOTFUL' | 'ROOTLESS';
FILE: src/types/jsx.d.ts
type Element (line 9) | type Element = ReactSource.Element;
type ElementClass (line 10) | type ElementClass = ReactSource.ElementClass;
type ElementAttributesProperty (line 11) | type ElementAttributesProperty = ReactSource.ElementAttributesProperty;
type ElementChildrenAttribute (line 12) | type ElementChildrenAttribute = ReactSource.ElementChildrenAttribute;
type IntrinsicAttributes (line 13) | type IntrinsicAttributes = ReactSource.IntrinsicAttributes;
type IntrinsicClassAttributes (line 15) | type IntrinsicClassAttributes<T> =
type IntrinsicElements (line 17) | type IntrinsicElements = ReactSource.IntrinsicElements;
type LibraryManagedAttributes (line 18) | type LibraryManagedAttributes<TComponent, TProps> =
FILE: src/types/shared-components/ActionItems/interface.ts
type IActionItemCategoryInfo (line 3) | interface IActionItemCategoryInfo {
type IActionItemCategoryList (line 14) | interface IActionItemCategoryList {
type IActionUserInfo (line 18) | interface IActionUserInfo {
type IActionItemInfo (line 25) | interface IActionItemInfo {
type IActionItemList (line 83) | interface IActionItemList {
type ICreateActionItemInput (line 87) | interface ICreateActionItemInput {
type ICreateActionItemVariables (line 99) | interface ICreateActionItemVariables {
type IUpdateActionItemInput (line 103) | interface IUpdateActionItemInput {
type IDeleteActionItemInput (line 113) | interface IDeleteActionItemInput {
type IMarkActionItemAsPendingInput (line 117) | interface IMarkActionItemAsPendingInput {
type IFormStateType (line 121) | interface IFormStateType {
type IItemModalProps (line 132) | interface IItemModalProps {
type IUpdateActionItemForInstanceInput (line 145) | interface IUpdateActionItemForInstanceInput {
type IUpdateActionItemForInstanceVariables (line 157) | interface IUpdateActionItemForInstanceVariables {
type IUpdateActionForInstanceInput (line 161) | interface IUpdateActionForInstanceInput {
type IEventVolunteerGroup (line 171) | interface IEventVolunteerGroup {
FILE: src/types/shared-components/ActionsCell/interface.ts
type InterfaceActionsCellProps (line 9) | interface InterfaceActionsCellProps<T> {
FILE: src/types/shared-components/Auth/EmailField/interface.ts
type InterfaceEmailFieldProps (line 10) | interface InterfaceEmailFieldProps {
FILE: src/types/shared-components/Auth/FormField/interface.ts
type InterfaceFormFieldProps (line 9) | interface InterfaceFormFieldProps {
FILE: src/types/shared-components/Auth/PasswordField/interface.ts
type InterfacePasswordFieldProps (line 7) | interface InterfacePasswordFieldProps {
FILE: src/types/shared-components/Avatar/interface.ts
type InterfaceAvatarProps (line 1) | interface InterfaceAvatarProps {
FILE: src/types/shared-components/BaseModal/interface.ts
type IBaseModalProps (line 30) | interface IBaseModalProps {
FILE: src/types/shared-components/BreadcrumbsComponent/interface.ts
type IBreadcrumbItem (line 7) | interface IBreadcrumbItem {
type IBreadcrumbsComponentProps (line 42) | interface IBreadcrumbsComponentProps {
FILE: src/types/shared-components/BulkActionsBar/interface.ts
type InterfaceBulkActionsBarProps (line 8) | interface InterfaceBulkActionsBarProps {
FILE: src/types/shared-components/CRUDModalTemplate/interface.ts
type ModalSize (line 14) | type ModalSize = 'sm' | 'lg' | 'xl';
type InterfaceCrudModalBaseProps (line 22) | interface InterfaceCrudModalBaseProps {
type InterfaceCRUDModalTemplateProps (line 92) | interface InterfaceCRUDModalTemplateProps
type InterfaceCreateModalProps (line 142) | interface InterfaceCreateModalProps extends InterfaceCrudModalBaseProps {
type InterfaceEditModalProps (line 168) | interface InterfaceEditModalProps extends InterfaceCrudModalBaseProps {
type InterfaceDeleteModalProps (line 199) | interface InterfaceDeleteModalProps extends InterfaceCrudModalBaseProps {
type InterfaceViewModalProps (line 237) | interface InterfaceViewModalProps extends InterfaceCrudModalBaseProps {
type InterfaceModalFormState (line 261) | interface InterfaceModalFormState {
type InterfaceRecurringEventProps (line 283) | interface InterfaceRecurringEventProps {
type InterfaceUseModalStateReturn (line 308) | interface InterfaceUseModalStateReturn {
type InterfaceUseFormModalReturn (line 322) | interface InterfaceUseFormModalReturn<T>
type InterfaceUseMutationModalReturn (line 339) | interface InterfaceUseMutationModalReturn<
FILE: src/types/shared-components/CheckIn/interface.ts
type InterfaceUser (line 1) | interface InterfaceUser {
type InterfaceAttendeeCheckIn (line 7) | interface InterfaceAttendeeCheckIn {
type InterfaceAttendeeQueryResponse (line 16) | interface InterfaceAttendeeQueryResponse {
type InterfaceModalProp (line 23) | interface InterfaceModalProp {
type InterfaceTableCheckIn (line 30) | interface InterfaceTableCheckIn {
type InterfaceTableData (line 42) | interface InterfaceTableData {
FILE: src/types/shared-components/CheckIn/type.ts
type CheckIn (line 4) | type CheckIn = {
type CheckInInput (line 16) | type CheckInInput = {
type CheckInStatus (line 23) | type CheckInStatus = {
FILE: src/types/shared-components/CheckInWrapper/interface.ts
type InterfaceCheckInWrapperProps (line 4) | interface InterfaceCheckInWrapperProps {
FILE: src/types/shared-components/DataTable/column.ts
type IColumnDef (line 13) | interface IColumnDef<T, TValue = unknown> {
FILE: src/types/shared-components/DataTable/hooks.ts
type ConnectionResolver (line 7) | type ConnectionResolver<TNode, TData> = (data: TData) =>
type DataPath (line 18) | type DataPath<TNode, TData> =
type IUseTableDataOptions (line 32) | interface IUseTableDataOptions<TNode, TRow, TData = unknown> {
type IUseTableDataResult (line 59) | interface IUseTableDataResult<TRow, TData = unknown> {
type IUseDataTableFilteringOptions (line 96) | interface IUseDataTableFilteringOptions<T> {
type IRowAction (line 129) | interface IRowAction<T> {
type IBulkAction (line 157) | interface IBulkAction<T> {
type IUseDataTableSelectionOptions (line 190) | interface IUseDataTableSelectionOptions<T> {
FILE: src/types/shared-components/DataTable/pagination.ts
type InterfacePageInfo (line 7) | interface InterfacePageInfo {
type PageInfo (line 18) | type PageInfo = InterfacePageInfo;
type Edge (line 28) | type Edge<TNode> = { node: TNode | null } | null;
type Connection (line 48) | type Connection<TNode> =
type InterfacePaginationControlsProps (line 64) | interface InterfacePaginationControlsProps {
FILE: src/types/shared-components/DataTable/props.ts
type InterfaceBaseDataTableProps (line 17) | interface InterfaceBaseDataTableProps<T> {
type InterfaceTableLoaderProps (line 42) | interface InterfaceTableLoaderProps<T> {
type InterfaceSearchBarProps (line 69) | interface InterfaceSearchBarProps {
type InterfaceDataTableProps (line 101) | type InterfaceDataTableProps<T> = {
type InterfaceDataTableTableProps (line 198) | interface InterfaceDataTableTableProps<T> {
type InterfaceDataTableSkeletonProps (line 261) | interface InterfaceDataTableSkeletonProps<T> {
type InterfaceLoadingMoreRowsProps (line 284) | interface InterfaceLoadingMoreRowsProps<T> {
FILE: src/types/shared-components/DataTable/types.ts
type SortDirection (line 4) | type SortDirection = 'asc' | 'desc';
type HeaderRender (line 6) | type HeaderRender = string | ReactNode | (() => ReactNode);
type Accessor (line 8) | type Accessor<T, TValue = unknown> = keyof T | ((row: T) => TValue);
type Key (line 10) | type Key = string | number;
type ISortState (line 17) | interface ISortState {
type IFilterState (line 29) | interface IFilterState {
type ITableState (line 41) | interface ITableState {
type ISortChangeEvent (line 60) | interface ISortChangeEvent<T> {
FILE: src/types/shared-components/DatePicker/interface.ts
type InterfaceDatePickerProps (line 7) | interface InterfaceDatePickerProps {
FILE: src/types/shared-components/DateRangePicker/interface.ts
type DateOrNull (line 20) | type DateOrNull = Date | null;
type IDateRangeValue (line 27) | interface IDateRangeValue {
type IDateRangePreset (line 52) | interface IDateRangePreset {
type InterfaceDateRangePickerProps (line 63) | interface InterfaceDateRangePickerProps {
FILE: src/types/shared-components/DropDownButton/interface.ts
type InterfaceDropDownO
Copy disabled (too large)
Download .json
Condensed preview — 3311 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (15,368K chars).
[
{
"path": ".coderabbit/ast-grep-rules/assertions-must-use-waitfor.yml",
"chars": 401,
"preview": "id: assertions-after-async-must-use-waitfor\nlanguage: typescript\nrule:\n follows:\n stopBy: end\n pattern: await use"
},
{
"path": ".coderabbit/ast-grep-rules/hardcoded-timeout.yml",
"chars": 354,
"preview": "id: hardcoded-timeout-in-tests\nlanguage: typescript\nrule:\n any:\n - pattern: setTimeout($_, $NUM)\n - pattern: awai"
},
{
"path": ".coderabbit/ast-grep-rules/mutation-null-guards.yml",
"chars": 553,
"preview": "id: mutation-null-guard-check\nlanguage: typescript\nrule:\n any:\n - pattern: |\n await $MUTATION({\n var"
},
{
"path": ".coderabbit/ast-grep-rules/no-dynamic-timestamps-in-tests.yml",
"chars": 319,
"preview": "id: no-dynamic-timestamps-in-tests\nlanguage: typescript\nfiles: '**/*.{spec,test}.{ts,tsx}'\nrule:\n any:\n - pattern: d"
},
{
"path": ".coderabbit/ast-grep-rules/no-local-timezone-in-tests.yml",
"chars": 1252,
"preview": "id: no-local-timezone-in-tests\nlanguage: TypeScript\nseverity: error\nmessage: |\n Avoid using local timezone date methods"
},
{
"path": ".coderabbit/ast-grep-rules/vitest-cleanup.yml",
"chars": 509,
"preview": "id: enforce-restore-all-mocks\nlanguage: typescript\nrule:\n pattern: vi.clearAllMocks()\n kind: call_expression\nmessage: "
},
{
"path": ".coderabbit.yaml",
"chars": 23656,
"preview": "# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json\n\n# Configuration Metadata\n# Version: 2"
},
{
"path": ".dockerignore",
"chars": 238,
"preview": "node_modules\nnpm-debug.log\nDockerfile\n.git\n.gitignore\n.env\n.env.*\ndist\ncoverage\n.nyc_output\n*.md\n.github\ntests\n__tests__"
},
{
"path": ".flake8",
"chars": 64,
"preview": "[flake8]\nignore = E402,E722,E203,F401,W503\nmax-line-length = 80\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 635,
"preview": "# These are supported funding model platforms\n\ngithub: [palisadoes]\npatreon: # Replace with a single Patreon username\nop"
},
{
"path": ".github/ISSUE_TEMPLATE/bug-report.md",
"chars": 608,
"preview": "---\nname: Bug Report\nabout: Create a report to help us improve.\ntitle: Bug Report\nlabels: bug\nassignees: ''\n\n---\n\n**Desc"
},
{
"path": ".github/ISSUE_TEMPLATE/feature-request.md",
"chars": 684,
"preview": "---\nname: Feature Request\nabout: Suggest an idea for this project\ntitle: Feature Request\nlabels: feature request\nassigne"
},
{
"path": ".github/dependabot.yaml",
"chars": 535,
"preview": "# Configuration for automated dependency updates using Dependabot\nversion: 2\nupdates:\n # Define the target package ecos"
},
{
"path": ".github/pull_request_template.md",
"chars": 2078,
"preview": "\n<!--\nThis section can be deleted after reading.\n\nWe employ the following branching strategy to simplify the development"
},
{
"path": ".github/workflows/README.md",
"chars": 2374,
"preview": "# Talawa GitHub Workflows Guidelines\n\nFollow these guidelines when contributing to this directory.\n\n## General\n\nAny chan"
},
{
"path": ".github/workflows/auto-assign.yml",
"chars": 261,
"preview": "name: Auto Assign & Unassign (Org-wide Limit)\n\non:\n issue_comment:\n types: [created]\n\njobs:\n handle-comment:\n us"
},
{
"path": ".github/workflows/auto-label.json5",
"chars": 330,
"preview": "{\r\n labelsSynonyms: {\r\n 'ci/cd': ['.github', 'Workflow', 'ci/cd'],\r\n dependencies: [\r\n 'dependabot',\r\n "
},
{
"path": ".github/workflows/check-tsdoc.js",
"chars": 1898,
"preview": "import fs from 'fs/promises'; // Import fs.promises for async operations\nimport path from 'path';\n\n// List of files to s"
},
{
"path": ".github/workflows/codeql-codescan.yml",
"chars": 1150,
"preview": "##############################################################################\n#########################################"
},
{
"path": ".github/workflows/config/check-pr-issue-skip-usernames.txt",
"chars": 32,
"preview": "dependabot\nnoman2002\npalisadoes\n"
},
{
"path": ".github/workflows/config/countline_excluded_file_list.txt",
"chars": 582,
"preview": "src/screens/Auth/LoginPage/LoginPage.tsx\nsrc/GraphQl/Queries/Queries.ts\nsrc/screens/OrgList/OrgList.tsx\nsrc/GraphQl/Muta"
},
{
"path": ".github/workflows/config/sensitive_files.txt",
"chars": 1078,
"preview": ".flake8$\n.pydocstyle$\npyproject.toml$\n.env..*$\nvitest.config.js$\nsrc/App.tsx$\n^.github/.*\n^.coderabbit/.*\n^.husky/.*\n^sc"
},
{
"path": ".github/workflows/issue-assigned.yml",
"chars": 248,
"preview": "name: Issue Assignment Workflow\n\non:\n issues:\n types: [assigned]\n\njobs:\n issue-assigned:\n uses: PalisadoesFounda"
},
{
"path": ".github/workflows/issue-unassigned.yml",
"chars": 192,
"preview": "name: Add Unapproved Label on Unassignment\n\non:\n issues:\n types: [unassigned]\n\njobs:\n issue-unassigned:\n uses: P"
},
{
"path": ".github/workflows/issue.yml",
"chars": 153,
"preview": "name: Issue Workflow\n\non:\n issues:\n types: [opened]\n\njobs:\n issue-workflow:\n uses: PalisadoesFoundation/.github/"
},
{
"path": ".github/workflows/pull-request-comment.yml",
"chars": 270,
"preview": "name: On PR Open - First Time Contributor Comment\n\non:\n pull_request_target:\n types: [opened]\n\npermissions:\n pull-r"
},
{
"path": ".github/workflows/pull-request-review.yml",
"chars": 218,
"preview": "name: Pull Request Review\n\non:\n pull_request_review:\n types: [submitted, edited, dismissed]\n\njobs:\n Check-CodeRabbi"
},
{
"path": ".github/workflows/pull-request-target.yml",
"chars": 226,
"preview": "name: PR Target Workflow\n\non:\n pull_request_target:\n\njobs:\n PR-Greeting:\n uses: PalisadoesFoundation/.github/.githu"
},
{
"path": ".github/workflows/pull-request.yml",
"chars": 49402,
"preview": "##############################################################################\n#########################################"
},
{
"path": ".github/workflows/push-deploy-website.yml",
"chars": 2188,
"preview": "##############################################################################\n#########################################"
},
{
"path": ".github/workflows/push.yml",
"chars": 3107,
"preview": "##############################################################################\n#########################################"
},
{
"path": ".github/workflows/requirements.txt",
"chars": 753,
"preview": "##############################################################################\n# Python Dependencies for Shared Workflow"
},
{
"path": ".github/workflows/scripts/app_health_check.sh",
"chars": 2865,
"preview": "#!/bin/bash\n\n# This script performs a health check to ensure an application is running on a specified port.\n# The script"
},
{
"path": ".github/workflows/scripts/check-minio-compliance.cjs",
"chars": 4121,
"preview": "/**\n * MinIO Compliance Enforcement Script\n *\n * Purpose:\n * Enforce the documented MinIO presigned URL file upload appr"
},
{
"path": ".github/workflows/scripts/compare_translations.py",
"chars": 9658,
"preview": "\"\"\"Script to encourage more efficient coding practices.\n\nMethodology:\n\n Utility for comparing translations between de"
},
{
"path": ".github/workflows/scripts/css_check.py",
"chars": 13832,
"preview": "#!/usr/bin/env python3\n# -*- coding: UTF-8 -*-\n\"\"\"Check TypeScript files for CSS violations and embedded CSS.\"\"\"\n\nimport"
},
{
"path": ".github/workflows/scripts/test/README.md",
"chars": 37,
"preview": "## Place test code in this directory\n"
},
{
"path": ".github/workflows/scripts/test/test_css_check.py",
"chars": 28975,
"preview": "#!/usr/bin/env python3\n# -*- coding: UTF-8 -*-\n\"\"\"Comprehensive unit tests for css_check.py with 100% code coverage.\"\"\"\n"
},
{
"path": ".github/workflows/scripts/test/test_translation_check.py",
"chars": 6470,
"preview": "\"\"\"Tests for the translation_check module.\"\"\"\n\nimport unittest\nimport os\nimport sys\nimport json\nimport shutil\nimport tem"
},
{
"path": ".github/workflows/scripts/translation_check.py",
"chars": 8881,
"preview": "\"\"\"Validates i18n translation tags against locale JSON files.\"\"\"\n\nfrom __future__ import annotations\n\nimport argparse\nim"
},
{
"path": ".github/workflows/stale.yml",
"chars": 173,
"preview": "name: Mark stale issues and pull requests\n\non:\n schedule:\n - cron: '*/20 0 * * *'\njobs:\n stale:\n uses: Palisadoe"
},
{
"path": ".gitignore",
"chars": 5620,
"preview": "# Docusaurus related\n.docusaurus\n\n# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n"
},
{
"path": ".graphqlrc.yml",
"chars": 25,
"preview": "schema: 'schema.graphql'\n"
},
{
"path": ".husky/commit-msg",
"chars": 94,
"preview": "# !/usr/bin/env sh\n. \"$(dirname -- \"$0\")/_/husky.sh\"\n\nnpx --no-install commitlint --edit \"$1\"\n"
},
{
"path": ".husky/post-merge",
"chars": 107,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\ngit diff HEAD^ HEAD --exit-code -- ./package.json || pnpm install"
},
{
"path": ".husky/pre-commit",
"chars": 1936,
"preview": "#!/usr/bin/env bash\n#\n# =============================================================================\n# Talawa Admin – G"
},
{
"path": ".husky/scripts/check-tools.sh",
"chars": 1944,
"preview": "#!/usr/bin/env bash\n#\n# =============================================================================\n# Pre-Commit Tool "
},
{
"path": ".husky/scripts/fetch-verified.sh",
"chars": 4296,
"preview": "#!/usr/bin/env bash\n#\n# =============================================================================\n# Talawa Admin – F"
},
{
"path": ".husky/scripts/precommit-node.sh",
"chars": 2409,
"preview": "#!/usr/bin/env bash\n#\n# =============================================================================\n# Pre-Commit Node."
},
{
"path": ".husky/scripts/precommit-python.sh",
"chars": 5222,
"preview": "#!/usr/bin/env bash\n#\n# =============================================================================\n# Pre-Commit Pytho"
},
{
"path": ".husky/scripts/staged-files.sh",
"chars": 1230,
"preview": "#!/usr/bin/env bash\n#\n# Shared helpers for staged file detection and filtering.\n# Used by pre-commit hooks to ensure con"
},
{
"path": ".husky/scripts/venv.sh",
"chars": 1808,
"preview": "#!/usr/bin/env bash\n#\n# =============================================================================\n# Python Virtual E"
},
{
"path": ".lintstagedrc.json",
"chars": 259,
"preview": "{\n \"**/*.{ts,tsx,yml}\": [\"eslint --fix\"],\n \"**/*.{ts,tsx,json,scss,css,yml}\": [\"prettier --write\"],\n \"**/*.{ts,tsx}\":"
},
{
"path": ".nojekyll",
"chars": 0,
"preview": ""
},
{
"path": ".prettierignore",
"chars": 196,
"preview": "node_modules\n# Contains the PDF file of the Tag as JSON string, thus does not need to be formatted\nsrc/shared-components"
},
{
"path": ".prettierrc",
"chars": 52,
"preview": "{\n \"singleQuote\": true,\n \"endOfLine\": \"auto\"\n}"
},
{
"path": ".pydocstyle",
"chars": 51,
"preview": "[pydocstyle]\nconvention=google\nadd-ignore=D415,D205"
},
{
"path": "CODEOWNERS",
"chars": 47,
"preview": "/.github/ @palisadoes\n# CODEOWNERS @palisadoes\n"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 184,
"preview": "# Contributor Covenant Code of Conduct\n\nPlease read our Organization's [Contributor Covenant Code of Conduct](https://de"
},
{
"path": "CODE_STYLE.md",
"chars": 12466,
"preview": "# Talawa Admin Code Style\n\nFor Talawa Admin, most of the rules for the code style have been enforced with ESLint, but th"
},
{
"path": "CONTRIBUTING.md",
"chars": 5114,
"preview": "# Contributing to Talawa-Admin\n\nThank you for your interest in contributing to Talawa Admin. Regardless of the size of t"
},
{
"path": "DOCUMENTATION.md",
"chars": 2157,
"preview": "# Documentation\nWelcome to our documentation guide. Here are some useful tips you need to know!\n\n# Table of Contents\n\n<!"
},
{
"path": "INSTALLATION.md",
"chars": 280,
"preview": "# Talawa-Admin Installation\n\nInstallation documentation can be found at either:\n\n1. Online at https://docs-admin.talawa."
},
{
"path": "ISSUE_GUIDELINES.md",
"chars": 155,
"preview": "# Issue Reporting Guidelines\n\nPlease read our Organization's [Issue Reporting Guidelines](https://developer.palisadoes.o"
},
{
"path": "LICENSE",
"chars": 35149,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "PR_GUIDELINES.md",
"chars": 144,
"preview": "# Pull Request Guidelines\n\nPlease read our [General PR Guidelines](https://developer.palisadoes.org/docs/contributor-gui"
},
{
"path": "README.md",
"chars": 3900,
"preview": "# Talawa Admin\n\n💬 Join our [community forum](https://community.talawa.io/) to meet others using and improving Talawa!\n\n!"
},
{
"path": "commitlint.config.js",
"chars": 65,
"preview": "export default { extends: ['@commitlint/config-conventional'] };\n"
},
{
"path": "config/babel.config.cjs",
"chars": 262,
"preview": "module.exports = {\n presets: [\n '@babel/preset-env', // Transforms modern JavaScript\n '@babel/preset-typescript',"
},
{
"path": "config/docker/setup/apache.conf",
"chars": 896,
"preview": "<VirtualHost *:80>\n # CHANGE THIS: Update 'localhost' to your real domain name in production\n ServerName localhost"
},
{
"path": "config/docker/setup/nginx.conf",
"chars": 1060,
"preview": "server {\n listen 80;\n server_name admin-demo.talawa.io;\n \n root /usr/share/nginx/html;\n index index.html;"
},
{
"path": "config/docker/setup/nginx.rootless.conf.template",
"chars": 1059,
"preview": "server {\n listen ${NGINX_PORT};\n server_name admin-demo.talawa.io;\n\n root /usr/share/nginx/html;\n index inde"
},
{
"path": "config/vite.config.spec.ts",
"chars": 5588,
"preview": "import { describe, test, expect } from 'vitest';\n\n// Final working solution: Inline functions (tested logic works but ca"
},
{
"path": "config/vite.config.ts",
"chars": 8438,
"preview": "import { defineConfig, loadEnv } from 'vite';\nimport react from '@vitejs/plugin-react';\nimport viteTsconfigPaths from 'v"
},
{
"path": "cypress/README.md",
"chars": 268,
"preview": "# Cypress End-to-End Testing\n\nUse the single source of truth for Cypress E2E documentation:\n\n- Local docs: `docs/docs/do"
},
{
"path": "cypress/e2e/Accessibility/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/ActionItems/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/ActionItems/ActionItems.cy.ts",
"chars": 2312,
"preview": "import { ActionItemPage } from '../../../pageObjects/AdminPortal/ActionItemPage';\n\ndescribe('Admin Event Action Items Ta"
},
{
"path": "cypress/e2e/AdminPortal/Advertisements/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/Advertisements/Advertisements.cy.ts",
"chars": 1806,
"preview": "import { AdvertisementPage } from '../../../pageObjects/AdminPortal/AdvertisementPage';\n\ninterface InterfaceAdvertisemen"
},
{
"path": "cypress/e2e/AdminPortal/Dashboard/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/Dashboard/AdminDashboard.cy.ts",
"chars": 984,
"preview": "import { AdminDashboardPage } from '../../../pageObjects/AdminPortal/AdminDashboard';\n\ndescribe('Admin Dashboard', () =>"
},
{
"path": "cypress/e2e/AdminPortal/Events/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/Events/EventLifecycle.cy.ts",
"chars": 1225,
"preview": "import { AdminEventPage } from '../../../pageObjects/AdminPortal/AdminEventPage';\n\ndescribe('Admin Event Tab', () => {\n "
},
{
"path": "cypress/e2e/AdminPortal/Organizations/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/Organizations/OrganizationSetup.cy.ts",
"chars": 1212,
"preview": "describe('Organization test data setup', () => {\n let orgId = '';\n const userIds: string[] = [];\n\n before(() => {\n "
},
{
"path": "cypress/e2e/AdminPortal/People/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/People/ManageMembers.cy.ts",
"chars": 2756,
"preview": "import { MemberManagementPage } from '../../../pageObjects/AdminPortal/MemberManagementPage';\n\ntype SeededUser = { name:"
},
{
"path": "cypress/e2e/AdminPortal/Posts/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/Posts/Posts.cy.ts",
"chars": 1006,
"preview": "// SKIP_LOCALSTORAGE_CHECK\nimport { PostsPage } from '../../../pageObjects/AdminPortal/PostPage';\n\ndescribe('Testing Pos"
},
{
"path": "cypress/e2e/AdminPortal/Tags/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/AdminPortal/Venues/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/Auth/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/Auth/Login.cy.ts",
"chars": 2236,
"preview": "// SKIP_LOCALSTORAGE_CHECK\nimport { LoginPage } from '../../pageObjects/auth/LoginPage';\n\ndescribe('Admin Login Function"
},
{
"path": "cypress/e2e/CascadingEffects/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/E2EFlows/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/ErrorScenarios/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/MultiOrganization/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/SharedComponents/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/SharedComponents/GraphQLUtilities.cy.ts",
"chars": 5147,
"preview": "type GraphQLError = { message: string };\n\nconst requestTimeoutMs = 5000;\nconst windowTimeoutMs = 10000;\n\nconst triggerGr"
},
{
"path": "cypress/e2e/SharedComponents/Navigation.cy.ts",
"chars": 928,
"preview": "/// <reference types=\"cypress\" />\n\nimport { LeftDrawer } from '../../pageObjects/AdminPortal/LeftDrawer';\n\ndescribe('Lef"
},
{
"path": "cypress/e2e/UserPortal/Dashboard/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/UserPortal/Dashboard/UserDashboard.cy.ts",
"chars": 503,
"preview": "import { UserDashboardPage } from '../../../pageObjects/UserPortal/UserDashboard';\n\ndescribe('User Dashboard', () => {\n "
},
{
"path": "cypress/e2e/UserPortal/EventDiscovery/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/UserPortal/OrganizationDiscovery/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/UserPortal/Posts/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/UserPortal/Profile/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/UserPortal/Transactions/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/e2e/UserPortal/VolunteerSignup/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "cypress/fixtures/admin/actionItems.json",
"chars": 401,
"preview": "{\n \"actionItems\": [\n {\n \"id\": \"action_001\",\n \"title\": \"Prepare agenda\",\n \"status\": \"OPEN\",\n \"ass"
},
{
"path": "cypress/fixtures/admin/advertisements.json",
"chars": 586,
"preview": "{\n \"advertisements\": [\n {\n \"id\": \"ad_001\",\n \"name\": \"Advertisement 1\",\n \"description\": \"This is a tes"
},
{
"path": "cypress/fixtures/admin/events.json",
"chars": 568,
"preview": "{\n \"events\": [\n {\n \"id\": \"event_001\",\n \"name\": \"Example Event\",\n \"description\": \"Primary event\",\n "
},
{
"path": "cypress/fixtures/admin/organizations.json",
"chars": 381,
"preview": "{\n \"organizations\": [\n {\n \"id\": \"org_001\",\n \"name\": \"Example Org\",\n \"description\": \"Primary for tests"
},
{
"path": "cypress/fixtures/admin/people.json",
"chars": 423,
"preview": "{\n \"people\": [\n {\n \"id\": \"person_001\",\n \"name\": \"Alex Example\",\n \"emailAddress\": \"alex@example.org\",\n"
},
{
"path": "cypress/fixtures/admin/tags.json",
"chars": 163,
"preview": "{\n \"tags\": [\n {\n \"id\": \"tag_001\",\n \"name\": \"Urgent\"\n },\n {\n \"id\": \"tag_002\",\n \"name\": \"Lon"
},
{
"path": "cypress/fixtures/admin/venues.json",
"chars": 379,
"preview": "{\n \"venues\": [\n {\n \"id\": \"venue_001\",\n \"name\": \"Main Hall\",\n \"address\": \"100 Example St\",\n \"city"
},
{
"path": "cypress/fixtures/api/graphql/createOrganization.error.conflict.json",
"chars": 144,
"preview": "{\n \"errors\": [\n {\n \"message\": \"Organization name already exists\",\n \"extensions\": {\n \"code\": \"CONFLI"
},
{
"path": "cypress/fixtures/api/graphql/createOrganization.success.json",
"chars": 100,
"preview": "{\n \"data\": {\n \"createOrganization\": {\n \"id\": \"org_003\",\n \"_id\": \"org_003\"\n }\n }\n}\n"
},
{
"path": "cypress/fixtures/api/graphql/getOrganizationEvents.error.notFound.json",
"chars": 135,
"preview": "{\n \"errors\": [\n {\n \"message\": \"Organization not found\",\n \"extensions\": {\n \"code\": \"NOT_FOUND\"\n "
},
{
"path": "cypress/fixtures/api/graphql/getOrganizationEvents.success.json",
"chars": 902,
"preview": "{\n \"data\": {\n \"organization\": {\n \"events\": {\n \"edges\": [\n {\n \"node\": {\n "
},
{
"path": "cypress/fixtures/api/graphql/getOrganizationMembers.error.notFound.json",
"chars": 130,
"preview": "{\n \"errors\": [\n {\n \"message\": \"Members not found\",\n \"extensions\": {\n \"code\": \"NOT_FOUND\"\n }\n "
},
{
"path": "cypress/fixtures/api/graphql/getOrganizationMembers.success.json",
"chars": 719,
"preview": "{\n \"data\": {\n \"organization\": {\n \"members\": {\n \"edges\": [\n {\n \"node\": {\n "
},
{
"path": "cypress/fixtures/api/graphql/organizations.success.json",
"chars": 293,
"preview": "{\n \"data\": {\n \"organizations\": [\n {\n \"id\": \"org-1\",\n \"name\": \"Example Org\",\n \"addressLine1"
},
{
"path": "cypress/fixtures/auth/credentials.json",
"chars": 262,
"preview": "{\n \"superAdmin\": {\n \"email\": \"testsuperadmin@example.com\",\n \"password\": \"Pass@123\"\n },\n \"admin\": {\n \"email\":"
},
{
"path": "cypress/fixtures/auth/users.json",
"chars": 403,
"preview": "{\n \"superAdmin\": {\n \"id\": \"user_0001\",\n \"name\": \"Super Admin\",\n \"email\": \"testsuperadmin@example.com\",\n \"ro"
},
{
"path": "cypress/fixtures/user/campaigns.json",
"chars": 389,
"preview": "{\n \"campaigns\": [\n {\n \"id\": \"camp_001\",\n \"name\": \"Community Drive\",\n \"goalAmount\": 5000,\n \"raise"
},
{
"path": "cypress/fixtures/user/donations.json",
"chars": 388,
"preview": "{\n \"donations\": [\n {\n \"id\": \"don_001\",\n \"amount\": 50,\n \"donorName\": \"Example Donor\",\n \"donatedAt"
},
{
"path": "cypress/fixtures/user/posts.json",
"chars": 434,
"preview": "{\n \"posts\": [\n {\n \"id\": \"post_001\",\n \"title\": \"Welcome post\",\n \"body\": \"Welcome to the community.\",\n "
},
{
"path": "cypress/fixtures/user/volunteers.json",
"chars": 320,
"preview": "{\n \"volunteers\": [\n {\n \"id\": \"vol_001\",\n \"name\": \"Alex Example\",\n \"role\": \"lead\",\n \"joinedAt\": \""
},
{
"path": "cypress/pageObjects/AdminPortal/ActionItemPage.ts",
"chars": 5132,
"preview": "export class ActionItemPage {\n private readonly createActionItemBtn = '[data-cy=\"createActionItemBtn\"]';\n private read"
},
{
"path": "cypress/pageObjects/AdminPortal/AdminDashboard.ts",
"chars": 2387,
"preview": "export class AdminDashboardPage {\n private readonly _orgcardContainer: string = '[data-cy=\"orgCardContainer\"]';\n priva"
},
{
"path": "cypress/pageObjects/AdminPortal/AdminEventPage.ts",
"chars": 5322,
"preview": "export class AdminEventPage {\n private readonly _eventsTabButton = '[data-cy=\"leftDrawerButton-Events\"]';\n private rea"
},
{
"path": "cypress/pageObjects/AdminPortal/AdvertisementPage.ts",
"chars": 2504,
"preview": "export class AdvertisementPage {\n private readonly _createAdBtn = '[data-testid=\"createAdvertisement\"]';\n private read"
},
{
"path": "cypress/pageObjects/AdminPortal/EventAttendancePage.ts",
"chars": 2999,
"preview": "import { BasePage } from '../base/BasePage';\n\nexport type AttendanceSortOrder = 'ascending' | 'descending';\nexport type "
},
{
"path": "cypress/pageObjects/AdminPortal/LeftDrawer.ts",
"chars": 1123,
"preview": "export class LeftDrawer {\n checkBreakpoint(orgId: string): void {\n // Ensure we're inside the <1280px breakpoint whe"
},
{
"path": "cypress/pageObjects/AdminPortal/MemberManagementPage.ts",
"chars": 3500,
"preview": "import { BasePage } from '../base/BasePage';\n\nexport class MemberManagementPage extends BasePage<MemberManagementPage> {"
},
{
"path": "cypress/pageObjects/AdminPortal/OrganizationSettingsPage.ts",
"chars": 3561,
"preview": "import { BasePage } from '../base/BasePage';\n\nexport class OrganizationSettingsPage extends BasePage<OrganizationSetting"
},
{
"path": "cypress/pageObjects/AdminPortal/PeoplePage.ts",
"chars": 3416,
"preview": "/// <reference types=\"cypress\" />\nimport { ModalActions } from '../shared/ModalActions';\nimport { TableActions } from '."
},
{
"path": "cypress/pageObjects/AdminPortal/PostPage.ts",
"chars": 2266,
"preview": "export class PostsPage {\n private readonly _postsTabButton = '[data-cy=\"leftDrawerButton-Posts\"]';\n private readonly _"
},
{
"path": "cypress/pageObjects/AdminPortal/VolunteerManagementPage.ts",
"chars": 1877,
"preview": "import { BasePage } from '../base/BasePage';\n\nexport class VolunteerManagementPage extends BasePage<VolunteerManagementP"
},
{
"path": "cypress/pageObjects/UserPortal/UserDashboard.ts",
"chars": 668,
"preview": "export class UserDashboardPage {\n private readonly _orgCard: string = '[data-cy=\"orgCard\"]';\n private readonly _manage"
},
{
"path": "cypress/pageObjects/auth/LoginPage.ts",
"chars": 1322,
"preview": "/**\n * Page Object Model for the Login Page.\n * Contains selectors and methods for interacting with the login page.\n */\n"
},
{
"path": "cypress/pageObjects/base/BasePage.ts",
"chars": 1184,
"preview": "import { ModalActions } from '../shared/ModalActions';\nimport { TableActions } from '../shared/TableActions';\n\nexport ab"
},
{
"path": "cypress/pageObjects/shared/ModalActions.ts",
"chars": 1436,
"preview": "import type { ClickOptions, TestIdClickConfig } from './types';\n\nexport class ModalActions {\n constructor(private reado"
},
{
"path": "cypress/pageObjects/shared/TableActions.ts",
"chars": 2772,
"preview": "import type { ClickOptions } from './types';\n\nexport class TableActions {\n constructor(private readonly tableSelector ="
},
{
"path": "cypress/pageObjects/shared/types.ts",
"chars": 144,
"preview": "export type ClickOptions = Partial<Cypress.ClickOptions>;\n\nexport interface TestIdClickConfig {\n options?: ClickOptions"
},
{
"path": "cypress/support/commands.ts",
"chars": 23053,
"preview": "/// <reference types=\"cypress\" />\nimport { getApiPattern } from './graphql-utils';\n\nexport {};\n\ntype AuthRole = 'superAd"
},
{
"path": "cypress/support/e2e.ts",
"chars": 702,
"preview": "// *********************\n// This example support/e2e.ts is processed and\n// loaded automatically before your test files."
},
{
"path": "cypress/support/graphql-utils.ts",
"chars": 4961,
"preview": "/// <reference types=\"cypress\" />\nimport type { CyHttpMessages } from 'cypress/types/net-stubbing';\n\nexport {};\n\n/**\n * "
},
{
"path": "cypress.config.ts",
"chars": 22427,
"preview": "import { defineConfig } from 'cypress';\nimport fs from 'node:fs';\nimport { URL } from 'node:url';\nimport codeCoverageTas"
},
{
"path": "docker/Dockerfile.deploy",
"chars": 589,
"preview": "###############################################################################\n#\n# DO NOT EDIT!!!\n#\n# This file is used"
},
{
"path": "docker/Dockerfile.dev",
"chars": 324,
"preview": "FROM node:24-slim AS build\n\nARG PORT=4321\nARG PNPM_VERSION=10.4.1\nENV PORT=${PORT}\n\nWORKDIR /usr/src/app\n\nRUN corepack e"
},
{
"path": "docker/Dockerfile.prod",
"chars": 557,
"preview": "# Step 1: Build Stage\nFROM node:24-slim AS builder\nWORKDIR /talawa-admin\n\nARG PNPM_VERSION=10.4.1\nRUN corepack enable &&"
},
{
"path": "docker/Dockerfile.rootless.dev",
"chars": 1393,
"preview": "FROM node:24-slim\nSHELL [\"/bin/bash\", \"-o\", \"pipefail\", \"-c\"]\n\nARG PORT=4321\nARG PNPM_VERSION=10.4.1\nARG WGET_VERSION=1."
},
{
"path": "docker/Dockerfile.rootless.prod",
"chars": 1150,
"preview": "# Step 1: Build Stage\nFROM node:24-slim AS builder\nWORKDIR /talawa-admin\n\nARG PNPM_VERSION=10.4.1\nRUN corepack enable &&"
},
{
"path": "docker/docker-compose.deploy.yaml",
"chars": 643,
"preview": "###############################################################################\n#\n# DO NOT EDIT!!!\n#\n# This file is used"
},
{
"path": "docker/docker-compose.dev.yaml",
"chars": 701,
"preview": "services:\n app:\n build:\n context: ..\n dockerfile: docker/Dockerfile.dev\n args:\n PNPM_VERSION: "
},
{
"path": "docker/docker-compose.prod.yaml",
"chars": 597,
"preview": "services:\n app:\n build:\n context: ..\n dockerfile: docker/Dockerfile.prod\n args:\n PNPM_VERSION:"
},
{
"path": "docker/docker-compose.rootless.dev.yaml",
"chars": 776,
"preview": "# Rootless compose requires UID/GID exported for USER_UID/USER_GID mapping.\n# Local setup example:\n# export UID=\"$(id "
},
{
"path": "docker/docker-compose.rootless.prod.yaml",
"chars": 417,
"preview": "services:\n app:\n build:\n context: ..\n dockerfile: docker/Dockerfile.rootless.prod\n args:\n PNPM"
},
{
"path": "docs/.gitignore",
"chars": 280,
"preview": "# Dependencies\n/node_modules\n\n# Production\n/build\n\n# Generated files\n.docusaurus\n.cache-loader\n.package-lock.json\npackag"
},
{
"path": "docs/CNAME",
"chars": 21,
"preview": "docs-admin.talawa.io\n"
},
{
"path": "docs/README.md",
"chars": 2798,
"preview": "# Talawa Admin Documentation Website\n\n[](https://github.com/PalisadoesFound"
},
{
"path": "docs/docs/auto-docs/App/functions/default.md",
"chars": 1151,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: default()\n\n> **default**(): `ReactElement`\n\nDefined in: [src/App.tsx:138](https://gith"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/FILE_NAME_TEMPLATE_BACKUP_ENV.md",
"chars": 413,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: FILE\\_NAME\\_TEMPLATE\\_BACKUP\\_ENV()\n\n> **FILE\\_NAME\\_TEMPLATE\\_BACKUP\\_ENV**(`timestam"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/ROUTE_USER.md",
"chars": 411,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: ROUTE\\_USER()\n\n> **ROUTE\\_USER**(`compId`): `string`\n\nDefined in: [src/Constant/common"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/ROUTE_USER_ORG.md",
"chars": 496,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: ROUTE\\_USER\\_ORG()\n\n> **ROUTE\\_USER\\_ORG**(`compId`, `orgId`): `string`\n\nDefined in: ["
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_DELETE_EVENT_MODAL.md",
"chars": 413,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_DELETE\\_EVENT\\_MODAL()\n\n> **TEST\\_ID\\_DELETE\\_EVENT\\_MODAL**(`id`): `string`"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_PEOPLE_CARD.md",
"chars": 391,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_PEOPLE\\_CARD()\n\n> **TEST\\_ID\\_PEOPLE\\_CARD**(`id`): `string`\n\nDefined in: [s"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_PEOPLE_EMAIL.md",
"chars": 396,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_PEOPLE\\_EMAIL()\n\n> **TEST\\_ID\\_PEOPLE\\_EMAIL**(`id`): `string`\n\nDefined in: "
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_PEOPLE_IMAGE.md",
"chars": 396,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_PEOPLE\\_IMAGE()\n\n> **TEST\\_ID\\_PEOPLE\\_IMAGE**(`id`): `string`\n\nDefined in: "
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_PEOPLE_NAME.md",
"chars": 393,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_PEOPLE\\_NAME()\n\n> **TEST\\_ID\\_PEOPLE\\_NAME**(`id`): `string`\n\nDefined in: [s"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_PEOPLE_ROLE.md",
"chars": 393,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_PEOPLE\\_ROLE()\n\n> **TEST\\_ID\\_PEOPLE\\_ROLE**(`id`): `string`\n\nDefined in: [s"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_PEOPLE_SNO.md",
"chars": 394,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_PEOPLE\\_SNO()\n\n> **TEST\\_ID\\_PEOPLE\\_SNO**(`id`): `string`\n\nDefined in: [src"
},
{
"path": "docs/docs/auto-docs/Constant/common/functions/TEST_ID_UPDATE_EVENT_MODAL.md",
"chars": 413,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: TEST\\_ID\\_UPDATE\\_EVENT\\_MODAL()\n\n> **TEST\\_ID\\_UPDATE\\_EVENT\\_MODAL**(`id`): `string`"
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/DATE_FORMAT.md",
"chars": 298,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DATE\\_FORMAT\n\n> `const` **DATE\\_FORMAT**: `\"YYYY-MM-DDTHH:mm:ssZ\"` = `'YYYY-MM-DDTHH:m"
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/DATE_FORMAT_ISO_DATE.md",
"chars": 309,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DATE\\_FORMAT\\_ISO\\_DATE\n\n> `const` **DATE\\_FORMAT\\_ISO\\_DATE**: `\"YYYY-MM-DD\"` = `'YYY"
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/DATE_TIME_SEPARATOR.md",
"chars": 278,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DATE\\_TIME\\_SEPARATOR\n\n> `const` **DATE\\_TIME\\_SEPARATOR**: `\"T\"` = `'T'`\n\nDefined in:"
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/DUMMY_DATE_TIME_PREFIX.md",
"chars": 315,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DUMMY\\_DATE\\_TIME\\_PREFIX\n\n> `const` **DUMMY\\_DATE\\_TIME\\_PREFIX**: `\"2015-03-04T\"` = "
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/IDENTIFIER_ID.md",
"chars": 259,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: IDENTIFIER\\_ID\n\n> `const` **IDENTIFIER\\_ID**: `\"id\"` = `'id'`\n\nDefined in: [src/Consta"
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/IDENTIFIER_USER_ID.md",
"chars": 282,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: IDENTIFIER\\_USER\\_ID\n\n> `const` **IDENTIFIER\\_USER\\_ID**: `\"userId\"` = `'userId'`\n\nDef"
},
{
"path": "docs/docs/auto-docs/Constant/common/variables/MAX_NAME_LENGTH.md",
"chars": 295,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: MAX\\_NAME\\_LENGTH\n\n> `const` **MAX\\_NAME\\_LENGTH**: `20` = `20`\n\nDefined in: [src/Cons"
},
{
"path": "docs/docs/auto-docs/Constant/constant/functions/deriveBackendWebsocketUrl.md",
"chars": 310,
"preview": "[Admin Docs](/)\n\n***\n\n# Function: deriveBackendWebsocketUrl()\n\n> **deriveBackendWebsocketUrl**(`httpUrl`): `string`\n\nDef"
},
{
"path": "docs/docs/auto-docs/Constant/constant/variables/AUTH_TOKEN.md",
"chars": 220,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: AUTH\\_TOKEN\n\n> `const` **AUTH\\_TOKEN**: `\"\"` = `''`\n\nDefined in: [src/Constant/constan"
},
{
"path": "docs/docs/auto-docs/Constant/constant/variables/BACKEND_URL.md",
"chars": 256,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: BACKEND\\_URL\n\n> `const` **BACKEND\\_URL**: `string` = `process.env.REACT_APP_TALAWA_URL"
},
{
"path": "docs/docs/auto-docs/Constant/constant/variables/BACKEND_WEBSOCKET_URL.md",
"chars": 243,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: BACKEND\\_WEBSOCKET\\_URL\n\n> `const` **BACKEND\\_WEBSOCKET\\_URL**: `string`\n\nDefined in: "
},
{
"path": "docs/docs/auto-docs/Constant/constant/variables/REACT_APP_USE_RECAPTCHA.md",
"chars": 287,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: REACT\\_APP\\_USE\\_RECAPTCHA\n\n> `const` **REACT\\_APP\\_USE\\_RECAPTCHA**: `string` = `proc"
},
{
"path": "docs/docs/auto-docs/Constant/constant/variables/RECAPTCHA_SITE_KEY.md",
"chars": 280,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: RECAPTCHA\\_SITE\\_KEY\n\n> `const` **RECAPTCHA\\_SITE\\_KEY**: `string` = `process.env.REAC"
},
{
"path": "docs/docs/auto-docs/Constant/fileUpload/variables/AGENDA_ITEM_ALLOWED_MIME_TYPES.md",
"chars": 360,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: AGENDA\\_ITEM\\_ALLOWED\\_MIME\\_TYPES\n\n> `const` **AGENDA\\_ITEM\\_ALLOWED\\_MIME\\_TYPES**: "
},
{
"path": "docs/docs/auto-docs/Constant/fileUpload/variables/AGENDA_ITEM_MIME_TYPE.md",
"chars": 379,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: AGENDA\\_ITEM\\_MIME\\_TYPE\n\n> `const` **AGENDA\\_ITEM\\_MIME\\_TYPE**: `Record`\\<`string`, "
},
{
"path": "docs/docs/auto-docs/Constant/fileUpload/variables/FILE_UPLOAD_ALLOWED_TYPES.md",
"chars": 257,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: FILE\\_UPLOAD\\_ALLOWED\\_TYPES\n\n> `const` **FILE\\_UPLOAD\\_ALLOWED\\_TYPES**: `string`[]\n\n"
},
{
"path": "docs/docs/auto-docs/Constant/fileUpload/variables/FILE_UPLOAD_MAX_SIZE_MB.md",
"chars": 253,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: FILE\\_UPLOAD\\_MAX\\_SIZE\\_MB\n\n> `const` **FILE\\_UPLOAD\\_MAX\\_SIZE\\_MB**: `number`\n\nDefi"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemCategoryMutations/variables/CREATE_ACTION_ITEM_CATEGORY_MUTATION.md",
"chars": 669,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: CREATE\\_ACTION\\_ITEM\\_CATEGORY\\_MUTATION\n\n> `const` **CREATE\\_ACTION\\_ITEM\\_CATEGORY\\_"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemCategoryMutations/variables/DELETE_ACTION_ITEM_CATEGORY_MUTATION.md",
"chars": 695,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DELETE\\_ACTION\\_ITEM\\_CATEGORY\\_MUTATION\n\n> `const` **DELETE\\_ACTION\\_ITEM\\_CATEGORY\\_"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemCategoryMutations/variables/UPDATE_ACTION_ITEM_CATEGORY_MUTATION.md",
"chars": 652,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: UPDATE\\_ACTION\\_ITEM\\_CATEGORY\\_MUTATION\n\n> `const` **UPDATE\\_ACTION\\_ITEM\\_CATEGORY\\_"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemMutations/variables/COMPLETE_ACTION_ITEM_FOR_INSTANCE.md",
"chars": 319,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: COMPLETE\\_ACTION\\_ITEM\\_FOR\\_INSTANCE\n\n> `const` **COMPLETE\\_ACTION\\_ITEM\\_FOR\\_INSTAN"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemMutations/variables/CREATE_ACTION_ITEM_MUTATION.md",
"chars": 400,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: CREATE\\_ACTION\\_ITEM\\_MUTATION\n\n> `const` **CREATE\\_ACTION\\_ITEM\\_MUTATION**: `Documen"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemMutations/variables/DELETE_ACTION_ITEM_FOR_INSTANCE.md",
"chars": 315,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DELETE\\_ACTION\\_ITEM\\_FOR\\_INSTANCE\n\n> `const` **DELETE\\_ACTION\\_ITEM\\_FOR\\_INSTANCE**"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemMutations/variables/DELETE_ACTION_ITEM_MUTATION.md",
"chars": 388,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: DELETE\\_ACTION\\_ITEM\\_MUTATION\n\n> `const` **DELETE\\_ACTION\\_ITEM\\_MUTATION**: `Documen"
},
{
"path": "docs/docs/auto-docs/GraphQl/Mutations/ActionItemMutations/variables/MARK_ACTION_ITEM_AS_PENDING_FOR_INSTANCE.md",
"chars": 337,
"preview": "[Admin Docs](/)\n\n***\n\n# Variable: MARK\\_ACTION\\_ITEM\\_AS\\_PENDING\\_FOR\\_INSTANCE\n\n> `const` **MARK\\_ACTION\\_ITEM\\_AS\\_PE"
}
]
// ... and 3111 more files (download for full content)
About this extraction
This page contains the full source code of the PalisadoesFoundation/talawa-admin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3311 files (13.6 MB), approximately 3.8M tokens, and a symbol index with 2373 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.