gitextract_j12gn_f4/ ├── .claude/ │ └── skills/ │ └── use-ui-kit/ │ └── SKILL.md ├── .cursor/ │ └── rules/ │ └── use-ui-kit.mdc ├── .github/ │ ├── actions/ │ │ └── authorize-pr/ │ │ └── action.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── ci-pr.yml │ ├── ci-push.yml │ └── ci-reusable.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .npmrc ├── .nvmrc ├── AGENTS.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── LICENSE.md ├── NOTICE.md ├── README.md ├── SECURITY.md ├── app.electron.tsx ├── appling/ │ ├── README.md │ ├── app.cjs │ ├── app.dev.cjs │ ├── app.staging.cjs │ ├── entitlements.plist │ ├── lib/ │ │ ├── install.cjs │ │ ├── preflight.cjs │ │ ├── progress.cjs │ │ ├── utils.cjs │ │ ├── view.html.cjs │ │ └── worker.cjs │ └── package.json ├── assets/ │ ├── animations/ │ │ ├── category.riv │ │ ├── form_credit_card.riv │ │ ├── pearpass_password.riv │ │ └── sync_without_the_cloud_animation.riv │ ├── fonts/ │ │ └── humbleNostalgia/ │ │ └── HumbleNostalgia.otf │ ├── rive/ │ │ └── rive_webgl2.wasm │ └── video/ │ ├── onboarding_lock_loop.webm │ └── onboarding_lock_start.webm ├── babel.config.cjs ├── babel.strict-dom.cjs ├── build-assets/ │ └── win/ │ └── AppxManifest.xml ├── docs/ │ └── Electron-Packaging-And-Runtime.md ├── e2e/ │ ├── .gitignore │ ├── components/ │ │ ├── CreateOrEditPage.js │ │ ├── DetailsPage.js │ │ ├── LoginPage.js │ │ ├── MainPage.js │ │ ├── SettingsPage.js │ │ ├── SideMenuPage.js │ │ ├── Utilities.js │ │ └── index.js │ ├── fixtures/ │ │ ├── app.runner.js │ │ └── test-data.js │ ├── package.json │ ├── playwright.config.js │ ├── scripts/ │ │ └── explore.js │ └── specs/ │ ├── 01-Login/ │ │ ├── creatingLoginItem.test.js │ │ ├── creatingLoginItemPassword.test.js │ │ └── editingDeletingLoginItem.test.js │ ├── 02-CreditCard/ │ │ ├── creatingCreditCardItem.test.js │ │ └── editingDeleteCreditCardItem.test.js │ ├── 03-WiFi/ │ │ ├── creatingWiFiItem.test.js │ │ └── editingDeletingWiFiItem.test.js │ ├── 04-Identity/ │ │ ├── creatingIdentityItem.test.js │ │ └── editingDeletingIdentityItem.test.js │ ├── 05-PassPhrase/ │ │ ├── creatingPassPhraseItem.test.js │ │ └── editingDeletingPassPhraseItem.test.js │ ├── 06-Note/ │ │ ├── creatingNoteItem.test.js │ │ └── editingDeleteNoteItem.test.js │ ├── 07-CustomField/ │ │ ├── creatingCustomFieldItem.test.js │ │ └── editingDeleteCustomFieldItem.test.js │ ├── 08-MultipleSelection/ │ │ └── multipleSelection.test.js │ ├── 09-SortingAndFiltering/ │ │ └── sorting.test.js │ └── 10-Settings/ │ └── settings.test.js ├── electron/ │ ├── clipboardCleanup.cjs │ ├── clipboardCleanup.test.js │ ├── clipboardCleanup.windows.ps1 │ ├── clipboardCleanupHelper.cjs │ ├── clipboardCleanupHelper.test.js │ ├── flatpak-paths.cjs │ ├── flatpak-paths.test.js │ ├── linuxWaylandClipboard.cjs │ ├── linuxWaylandClipboardFallback.cjs │ ├── linuxX11Clipboard.cjs │ ├── linuxX11ClipboardFallback.cjs │ ├── main.cjs │ ├── preload.cjs │ ├── preload.test.js │ └── runtime-config.cjs ├── electron-builder.linux.json ├── electron-builder.mac.json ├── eslint.config.js ├── flatpak/ │ ├── appimage/ │ │ └── .gitkeep │ ├── com.pears.pass.desktop │ ├── com.pears.pass.metainfo.xml │ └── com.pears.pass.yaml ├── forge.config.cjs ├── index.html ├── index.js ├── jest.config.js ├── lingui.config.js ├── package.json ├── resources/ │ └── bin/ │ ├── wl-copy-arm64 │ ├── wl-copy-x86_64 │ ├── wl-paste-arm64 │ ├── wl-paste-x86_64 │ ├── xsel-arm64 │ └── xsel-x86_64 ├── scripts/ │ ├── afterPack.cjs │ ├── apply-flavor.mjs │ ├── build-flatpak.sh │ ├── build-snap.sh │ ├── build.worklet.mjs │ ├── bundle-bridge.mjs │ ├── bundle-renderer.mjs │ ├── create-linux-tarball.sh │ ├── notarize.cjs │ └── patch-electron-dock-name.mjs ├── snap/ │ └── snapcraft.yaml ├── src/ │ ├── app/ │ │ ├── App/ │ │ │ ├── appConfig.js │ │ │ ├── hooks/ │ │ │ │ ├── useInactivity.js │ │ │ │ ├── useInactivity.test.js │ │ │ │ ├── useOnExtension.test.js │ │ │ │ ├── useOnExtensionExit.js │ │ │ │ ├── useOnExtensionLockOut.js │ │ │ │ ├── useOnExtensionLockOut.test.js │ │ │ │ ├── useRedirect.js │ │ │ │ └── useRedirect.test.js │ │ │ ├── index.js │ │ │ └── styles.js │ │ └── Routes/ │ │ └── index.js │ ├── components/ │ │ ├── AlertBox/ │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── AppHeaderV2/ │ │ │ ├── AppHeaderV2.styles.ts │ │ │ ├── AppHeaderV2.test.js │ │ │ ├── AppHeaderV2.tsx │ │ │ └── index.ts │ │ ├── BackgroundWithGradient.tsx │ │ ├── BadgeTextItem/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── BannerBox/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── ButtonPlusCreateNew/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── CardSingleSetting/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── CopyButton/ │ │ │ └── index.tsx │ │ ├── CreateCustomField/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── CreateNewCategoryPopupContent/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── DropdownSwapVault/ │ │ │ ├── index.test.js │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── EditFolderPopupContent/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── EmptyCollectionView/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── FileDropArea/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── FileUploadContent/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── FolderDropdown/ │ │ │ ├── FolderDropdownV2.tsx │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── FormGroup/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── FormModalHeaderWrapper/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── FormWrapper/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── ImportDataOption/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── InitialPageWrapper/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── InputFieldNote/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── InputPearpassPassword/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── InputSearch/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── ListItem/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── LoadingOverlay/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── MenuDropdown/ │ │ │ ├── MenuDropdownItem/ │ │ │ │ ├── index.js │ │ │ │ └── index.test.js │ │ │ ├── MenuDropdownLabel/ │ │ │ │ ├── index.js │ │ │ │ └── index.test.js │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── NoticeContainer/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── OnboardingShell/ │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── OtpCodeField/ │ │ │ ├── index.test.js │ │ │ ├── index.ts │ │ │ └── utils.ts │ │ ├── OtpCodeFieldV2/ │ │ │ ├── index.test.tsx │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── Overlay/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── PasswordFieldStrengthIndicator/ │ │ │ ├── index.test.tsx │ │ │ └── index.tsx │ │ ├── PopupMenu/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ ├── styles.js │ │ │ └── utils/ │ │ │ ├── getHorizontal.js │ │ │ ├── getHorizontal.test.js │ │ │ ├── getVertical.js │ │ │ └── getVertical.test.js │ │ ├── RadioSelect/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── Record/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── RecordActionsPopupContent/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── RecordAvatar/ │ │ │ ├── index.test.js │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── RecordItemIcon/ │ │ │ ├── RecordItemIcon.styles.ts │ │ │ ├── RecordItemIcon.tsx │ │ │ └── index.ts │ │ ├── RecordSortActionsPopupContent/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── RecordTypeMenu/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── Select/ │ │ │ ├── SelectItem/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── SelectLabel/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── SidebarCategory/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── SidebarFolder/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── SidebarSearch/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── SwitchWithLabel/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ ├── TimerBar/ │ │ │ ├── index.test.js │ │ │ ├── index.ts │ │ │ └── styles.ts │ │ ├── TimerCircle/ │ │ │ ├── index.test.js │ │ │ ├── index.ts │ │ │ └── styles.ts │ │ ├── TitleBar/ │ │ │ └── index.js │ │ ├── Toasts/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.js │ │ └── WebsiteButton/ │ │ └── index.tsx │ ├── constants/ │ │ ├── appConstants.js │ │ ├── feedback.js │ │ ├── formFields.js │ │ ├── layout.ts │ │ ├── localStorage.js │ │ ├── meta.js │ │ ├── navigation.js │ │ ├── pairing.js │ │ ├── password.ts │ │ ├── pearpassLinks.js │ │ ├── recordActions.js │ │ ├── recordColorByType.js │ │ ├── recordIconByType.js │ │ ├── securityErrors.js │ │ ├── services.js │ │ ├── sortOptions.ts │ │ ├── timeConstants.js │ │ └── transitions.js │ ├── containers/ │ │ ├── AppHeaderContainer/ │ │ │ ├── AppHeaderContainer.test.js │ │ │ ├── AppHeaderContainer.tsx │ │ │ └── index.ts │ │ ├── AttachmentField/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── AuthenticationCard/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── BaseInitialPage/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── CustomFields/ │ │ │ └── index.tsx │ │ ├── EmptyCollectionViewV2/ │ │ │ ├── EmptyCollectionViewV2.styles.ts │ │ │ ├── EmptyCollectionViewV2.tsx │ │ │ └── index.ts │ │ ├── EmptyResultsViewV2/ │ │ │ ├── EmptyResultsViewV2.styles.ts │ │ │ ├── EmptyResultsViewV2.tsx │ │ │ └── index.ts │ │ ├── ImagesField/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── LayoutWithSidebar/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── MainViewHeader/ │ │ │ ├── MainViewHeader.styles.ts │ │ │ ├── MainViewHeader.test.tsx │ │ │ └── MainViewHeader.tsx │ │ ├── Modal/ │ │ │ ├── AddDeviceModalContent/ │ │ │ │ ├── ScanQRExpireTimer.tsx │ │ │ │ ├── index.ts │ │ │ │ └── styles.ts │ │ │ ├── AddDeviceModalContentV2/ │ │ │ │ ├── AddDeviceModalContentV2.styles.ts │ │ │ │ └── AddDeviceModalContentV2.tsx │ │ │ ├── AuthenticationModalContentV2/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── BlindPeersModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── BrowserExtensionDialogV2/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ConfirmationModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── CreateFileEncryptionPassword/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── CreateFolderModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── CreateFolderModalContentV2/ │ │ │ │ ├── CreateFolderModalContentV2.styles.ts │ │ │ │ └── CreateFolderModalContentV2.tsx │ │ │ ├── CreateOrEditCategoryWrapper/ │ │ │ │ ├── CreateOrEditAuthenticatorModalContent/ │ │ │ │ │ ├── CreateOrEditAuthenticatorModalContent.styles.ts │ │ │ │ │ └── CreateOrEditAuthenticatorModalContent.tsx │ │ │ │ ├── CreateOrEditCreditCardModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditCreditCardModalContentV2/ │ │ │ │ │ ├── CreateOrEditCreditCardModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditCreditCardModalContentV2.tsx │ │ │ │ ├── CreateOrEditCustomModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditCustomModalContentV2/ │ │ │ │ │ ├── CreateOrEditCustomModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditCustomModalContentV2.tsx │ │ │ │ ├── CreateOrEditIdentityModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditIdentityModalContentV2/ │ │ │ │ │ ├── CreateOrEditIdentityModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditIdentityModalContentV2.tsx │ │ │ │ ├── CreateOrEditLoginModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditLoginModalContentV2/ │ │ │ │ │ ├── CreateOrEditLoginModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditLoginModalContentV2.tsx │ │ │ │ ├── CreateOrEditNoteModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditNoteModalContentV2/ │ │ │ │ │ ├── CreateOrEditNoteModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditNoteModalContentV2.tsx │ │ │ │ ├── CreateOrEditPassPhraseModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditPassPhraseModalContentV2/ │ │ │ │ │ ├── CreateOrEditPassPhraseModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditPassPhraseModalContentV2.tsx │ │ │ │ ├── CreateOrEditWifiModalContent/ │ │ │ │ │ └── index.js │ │ │ │ ├── CreateOrEditWifiModalContentV2/ │ │ │ │ │ ├── CreateOrEditWifiModalContentV2.styles.ts │ │ │ │ │ └── CreateOrEditWifiModalContentV2.tsx │ │ │ │ └── index.js │ │ │ ├── CreateOrEditVaultModalContentV2/ │ │ │ │ ├── CreateOrEditVaultModalContentV2.styles.ts │ │ │ │ └── CreateOrEditVaultModalContentV2.tsx │ │ │ ├── CreateVaultModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── DecryptFilePassword/ │ │ │ │ └── index.tsx │ │ │ ├── DeleteFolderModalContentV2/ │ │ │ │ ├── DeleteFolderModalContentV2.styles.ts │ │ │ │ └── DeleteFolderModalContentV2.tsx │ │ │ ├── DeleteRecordsModalContentV2/ │ │ │ │ ├── DeleteRecordsModalContentV2.styles.ts │ │ │ │ ├── DeleteRecordsModalContentV2.tsx │ │ │ │ └── index.ts │ │ │ ├── DeleteVaultModalContent/ │ │ │ │ ├── DeviceList.tsx │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── DeleteVaultModalContent.test.tsx │ │ │ │ │ └── DeviceList.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── styles.ts │ │ │ │ └── types.ts │ │ │ ├── DisplayPictureModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── DisplayPictureModalContentV2/ │ │ │ │ ├── DisplayPictureModalContentV2.styles.ts │ │ │ │ └── DisplayPictureModalContentV2.tsx │ │ │ ├── ExtensionPairingModalContent/ │ │ │ │ ├── ExtensionPairingModalContentV2.styles.ts │ │ │ │ ├── ExtensionPairingModalContentV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── GeneratePasswordModalContentV2/ │ │ │ │ ├── GeneratePasswordModalContentV2.styles.ts │ │ │ │ └── GeneratePasswordModalContentV2.tsx │ │ │ ├── GeneratePasswordSideDrawerContent/ │ │ │ │ ├── PassphraseChecker/ │ │ │ │ │ └── index.js │ │ │ │ ├── PassphraseGenerator/ │ │ │ │ │ └── index..js │ │ │ │ ├── PasswordChecker/ │ │ │ │ │ └── index.js │ │ │ │ ├── PasswordGenerator/ │ │ │ │ │ └── index.js │ │ │ │ ├── RuleSelector/ │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── ImportItemOrVaultModalContentV2/ │ │ │ │ ├── ImportItemOrVaultModalContentV2.styles.ts │ │ │ │ └── index.tsx │ │ │ ├── ImportVaultPreviewModalContent/ │ │ │ │ ├── ImportVaultPreviewModalContent.styles.ts │ │ │ │ └── index.tsx │ │ │ ├── ModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── ModalHeader/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── ModifyMasterVaultModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── ModifyVaultModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── MoveFolderModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── MoveFolderModalContentV2/ │ │ │ │ ├── MoveFolderModalContentV2.styles.ts │ │ │ │ └── MoveFolderModalContentV2.tsx │ │ │ ├── PairedDevicesModalContent/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── SideDrawer/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── UnsavedChangesModalContent/ │ │ │ │ ├── UnsavedChangesModalContent.tsx │ │ │ │ └── index.ts │ │ │ ├── UpdateRequiredModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── UpdateRequiredModalContentV2/ │ │ │ │ ├── UpdateRequiredModalContentV2.styles.ts │ │ │ │ └── UpdateRequiredModalContentV2.tsx │ │ │ ├── UploadFilesModalContentV2/ │ │ │ │ ├── UploadFilesModalContentV2.styles.ts │ │ │ │ ├── UploadFilesModalContentV2.tsx │ │ │ │ └── index.ts │ │ │ ├── UploadImageModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── VaultPasswordFormModalContent/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── MultiSelectActionsBar/ │ │ │ ├── MultiSelectActionsBar.styles.ts │ │ │ ├── MultiSelectActionsBar.test.tsx │ │ │ ├── MultiSelectActionsBar.tsx │ │ │ └── index.ts │ │ ├── PassPhrase/ │ │ │ ├── PassPhraseSettings.js │ │ │ ├── PassPhraseV2.styles.ts │ │ │ ├── PassPhraseV2.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── PassPhrase.test.js │ │ │ │ └── PassPhraseSettings.test.js │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── RecordDetails/ │ │ │ ├── CreditCardDetailsForm/ │ │ │ │ ├── CreditCardDetailsFormV2.styles.ts │ │ │ │ ├── CreditCardDetailsFormV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── utils.ts │ │ │ ├── CustomDetailsForm/ │ │ │ │ ├── CustomDetailsFormV2.styles.ts │ │ │ │ ├── CustomDetailsFormV2.tsx │ │ │ │ └── index.js │ │ │ ├── IdentityDetailsForm/ │ │ │ │ ├── IdentityDetailsFormV2.styles.ts │ │ │ │ ├── IdentityDetailsFormV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── utils.ts │ │ │ ├── LoginRecordDetailsForm/ │ │ │ │ ├── LoginRecordDetailsFormV2.styles.ts │ │ │ │ ├── LoginRecordDetailsFormV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── utils.ts │ │ │ ├── NoteDetailsForm/ │ │ │ │ ├── NoteDetailsFormV2.styles.ts │ │ │ │ ├── NoteDetailsFormV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── utils.ts │ │ │ ├── PassPhraseDetailsForm/ │ │ │ │ ├── PassPhraseDetailsFormV2.styles.ts │ │ │ │ ├── PassPhraseDetailsFormV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── utils.ts │ │ │ ├── RecordDetailsContent/ │ │ │ │ └── index.js │ │ │ ├── RecordDetailsV2.styles.ts │ │ │ ├── RecordDetailsV2.tsx │ │ │ ├── WifiDetailsForm/ │ │ │ │ ├── WifiDetailsFormV2.styles.ts │ │ │ │ ├── WifiDetailsFormV2.tsx │ │ │ │ ├── index.js │ │ │ │ └── utils.ts │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── RecordListView/ │ │ │ ├── RecordListViewV2.styles.ts │ │ │ ├── RecordListViewV2.test.tsx │ │ │ ├── RecordListViewV2.tsx │ │ │ ├── RecordRowContextMenuV2.styles.ts │ │ │ ├── RecordRowContextMenuV2.tsx │ │ │ ├── index.tsx │ │ │ ├── styles.js │ │ │ └── utils.js │ │ ├── Sidebar/ │ │ │ ├── SidebarCategories/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── SidebarV2.styles.ts │ │ │ ├── SidebarV2.test.tsx │ │ │ ├── SidebarV2.tsx │ │ │ ├── VaultSelector/ │ │ │ │ ├── VaultSelector.styles.ts │ │ │ │ └── VaultSelector.tsx │ │ │ ├── index.js │ │ │ └── styles.js │ │ └── WifiPasswordQRCode/ │ │ ├── WifiPasswordQRCodeV2.tsx │ │ ├── index.js │ │ └── styles.js │ ├── context/ │ │ ├── AppHeaderContext.test.js │ │ ├── AppHeaderContext.tsx │ │ ├── BannerContext.js │ │ ├── LoadingContext.js │ │ ├── LoadingContext.test.js │ │ ├── ModalContext.js │ │ ├── ModalContext.test.js │ │ ├── RouterContext.d.ts │ │ ├── RouterContext.js │ │ ├── RouterContext.test.js │ │ ├── ToastContext.js │ │ ├── ToastContext.test.js │ │ └── UnsavedChangesContext.tsx │ ├── electron/ │ │ ├── index.js │ │ ├── vaultClientProxy.js │ │ └── vaultClientProxy.test.js │ ├── hooks/ │ │ ├── __tests__/ │ │ │ └── useTranslation.test.js │ │ ├── useAnimatedVisibility.js │ │ ├── useAnimatedVisibility.test.js │ │ ├── useAutoLockPreferences.test.js │ │ ├── useAutoLockPreferences.ts │ │ ├── useConnectExtension.js │ │ ├── useConnectExtension.test.js │ │ ├── useCopyToClipboard.electron.js │ │ ├── useCopyToClipboard.electron.test.js │ │ ├── useCreateOrEditRecord.d.ts │ │ ├── useCreateOrEditRecord.js │ │ ├── useCreateOrEditRecord.test.js │ │ ├── useCustomFields.js │ │ ├── useCustomFields.test.js │ │ ├── useGetMultipleFiles.js │ │ ├── useGetMultipleFiles.test.js │ │ ├── useLanguageOptions.js │ │ ├── useLanguageOptions.test.js │ │ ├── useOutsideClick.js │ │ ├── useOutsideClick.test.js │ │ ├── usePasteFromClipboard.js │ │ ├── usePasteFromClipboard.test.js │ │ ├── usePearUpdate.js │ │ ├── usePearUpdate.test.js │ │ ├── useRecordActionItems.d.ts │ │ ├── useRecordActionItems.js │ │ ├── useRecordActionItems.test.js │ │ ├── useRecordMenuItems.js │ │ ├── useRecordMenuItems.test.js │ │ ├── useRecordMenuItemsV2.test.ts │ │ ├── useRecordMenuItemsV2.ts │ │ ├── useRiveWithRetry.ts │ │ ├── useScrollOverflow.test.js │ │ ├── useScrollOverflow.ts │ │ ├── useSimulatedLoading.js │ │ ├── useSimulatedLoading.test.js │ │ ├── useTranslation.ts │ │ ├── useVaultSwitch.test.tsx │ │ ├── useVaultSwitch.tsx │ │ ├── useWindowResize.js │ │ └── useWindowResize.test.js │ ├── lib-react-components/ │ │ ├── components/ │ │ │ ├── ButtonCreate/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonFilter/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonFolder/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonLittle/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonPrimary/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonRadio/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonRoundIcon/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonSecondary/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonSingleInput/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── ButtonThin/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── CompoundField/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── HighlightString/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── InputField/ │ │ │ │ ├── index.test.js │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── NoticeText/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── PasswordField/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── PearPassInputField/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── PearPassPasswordField/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── PearPassPasswordFieldV2/ │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── styles.ts │ │ │ │ └── types.ts │ │ │ ├── Slider/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── Switch/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── TextArea/ │ │ │ │ ├── index.test.js │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ └── TooltipWrapper/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── icons/ │ │ │ ├── AboutIcon/ │ │ │ │ └── index.js │ │ │ ├── AppearanceIcon/ │ │ │ │ └── index.js │ │ │ ├── ArrowDownIcon/ │ │ │ │ └── index.js │ │ │ ├── ArrowLeftIcon/ │ │ │ │ └── index.js │ │ │ ├── ArrowRightIcon/ │ │ │ │ └── index.js │ │ │ ├── ArrowUpAndDown/ │ │ │ │ └── index.js │ │ │ ├── ArrowUpIcon/ │ │ │ │ └── index.js │ │ │ ├── AutoFillIcon/ │ │ │ │ └── index.js │ │ │ ├── BackIcon/ │ │ │ │ └── index.js │ │ │ ├── BrushIcon/ │ │ │ │ └── index.js │ │ │ ├── CalendarIcon/ │ │ │ │ └── index.js │ │ │ ├── CheckIcon/ │ │ │ │ └── index.js │ │ │ ├── CollapseIcon/ │ │ │ │ └── index.js │ │ │ ├── CommonFileIcon/ │ │ │ │ └── index.js │ │ │ ├── ComputerIcon/ │ │ │ │ └── index.js │ │ │ ├── CopyIcon/ │ │ │ │ └── index.js │ │ │ ├── CreditCardIcon/ │ │ │ │ └── index.js │ │ │ ├── CubeIcon/ │ │ │ │ └── index.js │ │ │ ├── DeleteIcon/ │ │ │ │ └── index.js │ │ │ ├── EmailIcon/ │ │ │ │ └── index.js │ │ │ ├── ErrorIcon/ │ │ │ │ └── index.js │ │ │ ├── ExitIcon/ │ │ │ │ └── index.js │ │ │ ├── EyeClosedIcon/ │ │ │ │ └── index.js │ │ │ ├── EyeIcon/ │ │ │ │ └── index.js │ │ │ ├── FolderIcon/ │ │ │ │ └── index.js │ │ │ ├── FullBodyIcon/ │ │ │ │ └── index.js │ │ │ ├── GenderIcon/ │ │ │ │ └── index.js │ │ │ ├── GroupIcon/ │ │ │ │ └── index.js │ │ │ ├── ImageIcon/ │ │ │ │ └── index.js │ │ │ ├── InfoIcon/ │ │ │ │ └── index.js │ │ │ ├── KebabMenuIcon/ │ │ │ │ └── index.js │ │ │ ├── KeyIcon/ │ │ │ │ └── index.js │ │ │ ├── LockCircleIcon/ │ │ │ │ └── index.js │ │ │ ├── LockIcon/ │ │ │ │ └── index.js │ │ │ ├── MoveToIcon/ │ │ │ │ └── index.js │ │ │ ├── MultiSelectionIcon/ │ │ │ │ └── index.js │ │ │ ├── NationalityIcon/ │ │ │ │ └── index.js │ │ │ ├── NewFolderIcon/ │ │ │ │ └── index.js │ │ │ ├── NineDotsIcon/ │ │ │ │ └── index.js │ │ │ ├── NoteIcon/ │ │ │ │ └── index.js │ │ │ ├── OkayIcon/ │ │ │ │ └── index.js │ │ │ ├── OutsideLinkIcon/ │ │ │ │ └── index.js │ │ │ ├── PassPhraseIcon/ │ │ │ │ └── index.js │ │ │ ├── PasswordIcon/ │ │ │ │ └── index.js │ │ │ ├── PasteIcon/ │ │ │ │ └── index.js │ │ │ ├── PhoneIcon/ │ │ │ │ └── index.js │ │ │ ├── PinIcon/ │ │ │ │ └── index.js │ │ │ ├── PlusIcon/ │ │ │ │ └── index.js │ │ │ ├── SaveIcon/ │ │ │ │ └── index.js │ │ │ ├── SearchIcon/ │ │ │ │ └── index.js │ │ │ ├── SecurityIcon/ │ │ │ │ └── index.js │ │ │ ├── SettingsIcon/ │ │ │ │ └── index.js │ │ │ ├── ShareIcon/ │ │ │ │ └── index.js │ │ │ ├── SmallArrowIcon/ │ │ │ │ └── index.js │ │ │ ├── StarIcon/ │ │ │ │ └── index.js │ │ │ ├── SyncingIcon/ │ │ │ │ └── index.js │ │ │ ├── TimeIcon/ │ │ │ │ └── index.js │ │ │ ├── UserIcon/ │ │ │ │ └── index.js │ │ │ ├── UserSecurityIcon/ │ │ │ │ └── index.js │ │ │ ├── VaultIcon/ │ │ │ │ └── index.js │ │ │ ├── WifiIcon/ │ │ │ │ └── index.js │ │ │ ├── WorldIcon/ │ │ │ │ └── index.js │ │ │ ├── XIcon/ │ │ │ │ └── index.js │ │ │ ├── YellowErrorIcon/ │ │ │ │ └── index.js │ │ │ └── icons.test.js │ │ ├── illustrations/ │ │ │ └── AuthenticatorIllustration/ │ │ │ └── index.js │ │ ├── index.js │ │ └── utils/ │ │ ├── getIconProps.js │ │ └── getIconProps.test.js │ ├── pages/ │ │ ├── AuthenticatorView/ │ │ │ ├── index.js │ │ │ ├── index.test.js │ │ │ └── styles.ts │ │ ├── InitialPage/ │ │ │ └── index.js │ │ ├── Intro/ │ │ │ ├── CategoryAnimation/ │ │ │ │ └── index.tsx │ │ │ ├── CreditCardAnimation/ │ │ │ │ └── index.tsx │ │ │ ├── GradientContainer/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── IntroV2.tsx │ │ │ ├── IntroV2Styles.ts │ │ │ ├── OnboardingLockVideo/ │ │ │ │ └── index.tsx │ │ │ ├── PasswordFillAnimation/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.js │ │ │ ├── SyncWithoutCloudAnimation/ │ │ │ │ └── index.tsx │ │ │ ├── TutorialContainer/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── WelcomeToPearpass/ │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── LoadingPage/ │ │ │ ├── LoadingPageV2.tsx │ │ │ ├── LoadingPageV2Styles.ts │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── MainView/ │ │ │ ├── MainViewV2.styles.ts │ │ │ ├── MainViewV2.tsx │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── SettingsView/ │ │ │ ├── AboutContent/ │ │ │ │ ├── index.js │ │ │ │ └── index.test.js │ │ │ ├── AppearanceContent/ │ │ │ │ └── index.js │ │ │ ├── ExportTab/ │ │ │ │ ├── index.js │ │ │ │ ├── styles.js │ │ │ │ └── utils/ │ │ │ │ ├── downloadFile.js │ │ │ │ ├── downloadFile.test.js │ │ │ │ ├── downloadZip.js │ │ │ │ ├── downloadZip.test.js │ │ │ │ ├── exportCsvPerVault.js │ │ │ │ └── exportJsonPerVault.js │ │ │ ├── ImportTab/ │ │ │ │ ├── index.js │ │ │ │ ├── styles.js │ │ │ │ └── utils/ │ │ │ │ ├── readFileContent.js │ │ │ │ └── readFileContent.test.js │ │ │ ├── SecurityContent/ │ │ │ │ └── index.js │ │ │ ├── SettingsAdvancedTab/ │ │ │ │ ├── SettingsAutoLockConfiguration/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.ts │ │ │ │ ├── SettingsBlindPeersSection/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.test.js │ │ │ │ │ └── styles.js │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── SettingsTab/ │ │ │ │ ├── SettingsDevicesSection/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.test.js │ │ │ │ │ └── styles.js │ │ │ │ ├── SettingsLanguageSection/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.test.js │ │ │ │ │ └── styles.js │ │ │ │ ├── SettingsPasswordsSection/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── styles.js │ │ │ │ ├── SettingsReportSection/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index.test.js │ │ │ │ │ └── styles.js │ │ │ │ ├── index.js │ │ │ │ └── styles.js │ │ │ ├── SettingsVaultsTab/ │ │ │ │ ├── index.js │ │ │ │ ├── index.test.js │ │ │ │ └── styles.js │ │ │ ├── SyncingContent/ │ │ │ │ └── index.js │ │ │ ├── VaultContent/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── SettingsViewV2/ │ │ │ ├── SettingsViewV2.styles.ts │ │ │ ├── SettingsViewV2.tsx │ │ │ └── content/ │ │ │ ├── AppPreferencesContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── AppVersionContent/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── BlindPeersContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── DiagnosticsContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ExportItemsContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ImportCodesContent/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ImportItemsContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── LanguageContent/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── MasterPasswordContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── ReportAProblemContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── YourDevicesContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ ├── YourVaultsContent/ │ │ │ │ ├── index.test.tsx │ │ │ │ ├── index.tsx │ │ │ │ └── styles.ts │ │ │ └── index.ts │ │ └── WelcomePage/ │ │ ├── CardCreateMasterPassword/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── CardCreateMasterPasswordV2/ │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── CardLoadVault/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── CardNewVaultCredentials/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── CardUnlockPearPass/ │ │ │ └── index.tsx │ │ ├── CardUnlockPearPassV2/ │ │ │ ├── index.tsx │ │ │ └── styles.ts │ │ ├── CardUnlockVault/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── CardUploadBackupFile/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── CardVaultSelect/ │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── LockedScreen/ │ │ │ ├── Timer.js │ │ │ ├── index.js │ │ │ └── styles.js │ │ ├── LockedScreenV2/ │ │ │ ├── LockedScreenV2.styles.ts │ │ │ ├── LockedScreenV2.test.tsx │ │ │ └── LockedScreenV2.tsx │ │ ├── index.js │ │ └── styles.js │ ├── services/ │ │ ├── createOrGetPearpassClient.js │ │ ├── createOrGetPearpassClient.test.js │ │ ├── createOrGetPipe.js │ │ ├── createOrGetPipe.test.js │ │ ├── handlers/ │ │ │ ├── EncryptionHandlers.js │ │ │ ├── EncryptionHandlers.test.js │ │ │ ├── SecureRequestHandler.js │ │ │ ├── SecureRequestHandler.test.js │ │ │ ├── SecurityHandlers.js │ │ │ ├── SecurityHandlers.test.js │ │ │ └── VaultHandlers.js │ │ ├── ipc/ │ │ │ ├── MethodRegistry.js │ │ │ ├── MethodRegistry.test.js │ │ │ ├── SocketManager.js │ │ │ └── SocketManager.test.js │ │ ├── nativeMessagingIPCServer.js │ │ ├── nativeMessagingIPCServer.test.js │ │ ├── nativeMessagingPreferences.js │ │ ├── nativeMessagingPreferences.test.js │ │ └── security/ │ │ ├── appIdentity.js │ │ ├── appIdentity.test.js │ │ ├── protocolConstants.js │ │ ├── sessionManager.js │ │ ├── sessionManager.test.js │ │ └── sessionStore.js │ ├── shared/ │ │ ├── commandDefinitions.js │ │ └── types.ts │ ├── strict.css │ ├── svgs/ │ │ ├── ItemCardIllustration/ │ │ │ ├── ItemCardIllustration.tsx │ │ │ └── index.ts │ │ ├── LogoLock/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── OnboardingLock/ │ │ │ └── index.js │ │ ├── PearLogo/ │ │ │ └── index.js │ │ ├── PearpassLogo/ │ │ │ └── index.js │ │ ├── ProtonPass/ │ │ │ └── index.js │ │ ├── SpotlightLeft/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ ├── SpotlightMiddle/ │ │ │ ├── index.js │ │ │ └── index.test.js │ │ └── SpotlightRight/ │ │ ├── index.js │ │ └── index.test.js │ ├── types/ │ │ ├── css.d.ts │ │ ├── electron.d.ts │ │ ├── jest-globals.d.ts │ │ ├── modules.d.ts │ │ └── styled.d.ts │ └── utils/ │ ├── addHttps.js │ ├── addHttps.test.js │ ├── applyGlobalStyles.js │ ├── applyGlobalStyles.test.js │ ├── autoLock.js │ ├── autoLock.test.js │ ├── breakpoints.js │ ├── breakpoints.test.js │ ├── createErrorWithCode.js │ ├── createErrorWithCode.test.js │ ├── designVersion.js │ ├── devicePreferences.cjs │ ├── devicePreferences.test.js │ ├── envGetter.js │ ├── envGetter.test.js │ ├── extractDomainName.js │ ├── extractDomainName.test.js │ ├── formatPasskeyDate.js │ ├── getDeviceName.js │ ├── getDeviceName.test.js │ ├── getFilteredAttachmentsById.js │ ├── getFilteredAttachmentsById.test.js │ ├── getPasswordStrengthInfo.test.ts │ ├── getPasswordStrengthInfo.ts │ ├── getRecordSubtitle.test.ts │ ├── getRecordSubtitle.ts │ ├── groupRecordsByTimePeriod.test.ts │ ├── groupRecordsByTimePeriod.ts │ ├── handleFileSelect.js │ ├── handleFileSelect.test.js │ ├── isFavorite.js │ ├── isFavorite.test.js │ ├── isOnline.js │ ├── isPasswordChangeReminderDisabled.js │ ├── isPasswordChangeReminderDisabled.test.js │ ├── logHelper.cjs │ ├── logHelper.test.js │ ├── logger.js │ ├── logger.test.js │ ├── nativeMessagingSetup.js │ ├── nativeMessagingSetup.test.js │ ├── sortByName.js │ ├── sortByName.test.js │ ├── toSentenceCase.js │ ├── toSentenceCase.test.js │ ├── vaultCreated.js │ ├── vaultCreated.test.js │ ├── withAlpha.test.js │ └── withAlpha.ts ├── styles.js └── tsconfig.json