diff --git a/apps/app/.vscode/settings.json b/apps/app/.vscode/settings.json new file mode 100644 index 0000000000..d1c021de4e --- /dev/null +++ b/apps/app/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "editor.defaultFormatter": "biomejs.biome", + "editor.codeActionsOnSave": { + "quickfix.biome": "explicit" + }, + "recommendations": [ + "biomejs.biome" + ] + } \ No newline at end of file diff --git a/apps/app/languine.lock b/apps/app/languine.lock index e89520d163..d687ca41bb 100644 --- a/apps/app/languine.lock +++ b/apps/app/languine.lock @@ -510,1687 +510,27 @@ files: editor.ai_selector.replace: 05fdc089c4c320832588a69475ff5e79 editor.ai_selector.insert: 3005820694a4944d91c4c4e8b8a016d3 editor.ai_selector.discard: d94b42030b9785fd754d5c1754961269 - evidence.title: 63b1eb1a39194d82271ec937fba19714 - evidence.description: c8fcd9bc15a38dcd7f6d0cbdeb65f33c - evidence.dashboard: 2938c7f7e560ed972f8a4f68e80ff834 + evidence.title: c7b2a4d55fbea4d044644cf5b2b45d29 evidence.list: ed2c6e00de11f3eb621cd348bb8f5806 - src/locales/es.ts: - language.title: c88b33a3250b4e28f34e1ececba69206 - language.description: b74d060770289b75ba34d38ea1e05251 - language.placeholder: c90ff5580c52057484a4002000bccd8a - languages.en: 216df59d4dca0cc05c7678221afc6c97 - languages.no: 8d6a8cdf9b2e593aab0592557e3386ab - languages.es: de92bbe05815c4eb756acb5897baa99c - languages.fr: 75357f6288b1eb7180e56d572a16a0cd - languages.pt: d84f5f223e29a650c524f38dfc137165 - common.actions.save: d3270bdb8d2c1caaca4178dbe19be03a - common.actions.edit: ef485eb67ac89238a4fede745a0ae94c - common.actions.delete: 5b5c9f9dc839dcc858b3c4371b014930 - common.actions.cancel: 847607d75e504090b5aff16a6e6c8351 - common.actions.clear: 476e7d19b5be911bd99a3de6c31771d1 - common.actions.create: 4f74549a5b17e88d7dd15b2fd7789a59 - common.actions.send: 30cc00aea30ec70b7c1292b6458181c0 - common.actions.return: e52ece59a8a5b16a2c9fe070ac32c3fe - common.actions.success: 560650554df187b9bf972d95229b8b15 - common.actions.error: 902b0d55fddef6f8d651fe1035b7d4bd - common.actions.next: 1ffed09a945050b91aa1f46c7dd45087 - common.actions.complete: 8d7c2bd0727190e37da6f27a86205b2b - common.assignee.label: c6bed77956f79c7a9657a15f010a773f - common.assignee.placeholder: e262b3b4d20573cbdcb5b3adef9660de - common.date.pick: bd29a1cd952610bfeeb0b02ca164aebd - common.date.due_date: 1cbb3bd12a8661902fe6eb8983e9bb6b - common.status.open: 12ec8f316bcb560d33dd087ecfa68fc0 - common.status.pending: 17fd638337290609a7ae308115a63611 - common.status.closed: 4e2af90d29d253ccbcff2ce2b459c9ae - common.status.archived: 1d0d86348d657b60e5f8cc3cc3bc37f3 - common.status.compliant: 447b6bc7e7847f0abe61d2869edf9015 - common.status.non_compliant: 6875f1e57c0dabd95fd3a872414e3e4a - common.status.not_started: a9b06b1d4b6cd8b230a54306a318fd42 - common.status.in_progress: 5af8d2e40ce41d4dcbe8306a9a1c9c6e - common.status.published: 1f10a7861d15aaf098ad564a7d8a9506 - common.status.needs_review: 906a777038d2ebda5738cd53a71e74ae - common.status.draft: a1c7b53d72d9db871a2f3ea94d06f113 - common.status.not_assessed: 873ff59465c27a78413d843b190a5919 - common.status.assessed: 3a752f70d3615e5edc52168cb4819e49 - common.status.active: ca49d6ff0b13ddea1e094ce3420b279d - common.status.inactive: 5b6532a325ae02229cfaeab843a2a682 - common.filters.clear: af85d57c83ad1d84bce2c9b15c24f23f - common.filters.search: 7ae8b43332fae10e1930f45401046425 - common.filters.status: 3397e69cce37e37c8605f57b367d6b33 - common.filters.department: 8295f968e1676d62158d33a57b26963b - common.filters.owner.label: c6bed77956f79c7a9657a15f010a773f - common.filters.owner.placeholder: 7c3c087d24211c351e870e9b836aa166 - common.table.title: 09b79d379db0c82b4615d749b22475f0 - common.table.status: 3397e69cce37e37c8605f57b367d6b33 - common.table.assigned_to: c6bed77956f79c7a9657a15f010a773f - common.table.due_date: 1cbb3bd12a8661902fe6eb8983e9bb6b - common.table.last_updated: fd2c12148186034e9751abd48f2819d1 - common.table.no_results: 3fcc064a645e61dd3d642ff1e52b3754 - common.empty_states.no_results.title: 08cc2aa4ba9453e2c51af3d4d621e3f5 - common.empty_states.no_results.title_tasks: 51160346497dd7744ce81258b3c405c7 - common.empty_states.no_results.title_risks: 62e0e8d16ec115a0731c00d6ad229541 - common.empty_states.no_results.description: 96e17a898f418a572561fef5284fd7c8 - common.empty_states.no_results.description_filters: 96e17a898f418a572561fef5284fd7c8 - common.empty_states.no_results.description_no_tasks: c55852211c6ff8a81e27eef485055c59 - common.empty_states.no_results.description_no_risks: d2a2fdeed9b560c7e88edc3796bc1609 - common.empty_states.no_items.title: 75993eb72edfb39dd53a38a56e92f678 - common.empty_states.no_items.description: e0591e3b836afdf0de7a705061610bc9 - common.pagination.of: 5f02f0889301fd7be1ac972c11bf3e7d - common.pagination.items_per_page: 4e2c07359b02a88b897029fc23506a5b - common.pagination.rows_per_page: 0cdfc20f48b9b095456ddcf01c9145aa - common.pagination.page_x_of_y: c18a6102c5d20acaa6d56e0cd4117fc3 - common.pagination.go_to_first_page: e67449d2dad15f8463d934da8ba59c19 - common.pagination.go_to_previous_page: 47393a1a90500772329cce74b628d948 - common.pagination.go_to_next_page: 83fc9e8dae730acca1538378cc9b09dd - common.pagination.go_to_last_page: 1bbcb7318f62d1a2289d6d71879901de - common.comments.title: 30045922163d87daf194d9bcb2aa8ac4 - common.comments.description: b4084b5d4e3c36531dfa9e770b202ffe - common.comments.add: d7c0f6427402512c742347babca1f0c2 - common.comments.new: 1cedf59ff856d0c6293af4e8bee06b8b - common.comments.save: d136cf0668d2d020699fe6aa3bdebb25 - common.comments.success: b175901ef041b80825390b2f1a8180ae - common.comments.error: 4f4397e6e8c1f7bbec46ef41e91d3195 - common.comments.placeholder: 9351a1212cd1b53e72b6a31769fffe44 - common.comments.empty.title: 98a81265d2761078a38b37e7d2cda68f - common.comments.empty.description: c5d9c882ed4c78ea628afd9db3146b30 - common.attachments.title: 3c675ef97f2e8c747c72f7e29e75ca03 - common.attachments.description: edc822d92ea10ec0c78724263095e13a - common.attachments.upload: 66faa15820a6155e9c4cb66df196a86d - common.attachments.upload_description: 0b405ecac1cebf12c53fb1a94ac63f5f - common.attachments.drop: c7792783b2de81d23da293c491c72be6 - common.attachments.drop_description: ee8213173b9a1fd5b98545b83491bfd9 - common.attachments.drop_files_description: fb3233c4709b6030f89321be024f0c80 - common.attachments.empty.title: 2e5ced3a75e0ff843189c6f835c5625b - common.attachments.empty.description: edc822d92ea10ec0c78724263095e13a - common.attachments.toasts.error: 361a117ad725951e608753f81ef12e5b - common.attachments.toasts.error_uploading_files: 2616b5cda9937ffd56c82c2cd8cbfea0 - common.attachments.toasts.error_uploading_files_multiple: 45c6c9461240d67ddafd31b03097ce6e - common.attachments.toasts.error_no_files_selected: fd5d1d03cb1f3ead611bcf5b0f91fd4e - common.attachments.toasts.error_file_rejected: 35b81afa54e5590dcf5d69e5e086edfd - common.attachments.toasts.error_failed_to_upload_files: 76374981ca7701a93226d3647db20f5e - common.attachments.toasts.error_failed_to_upload_files_multiple: 76374981ca7701a93226d3647db20f5e - common.attachments.toasts.error_failed_to_upload_files_single: 1114768d410514b0fcdb14f27948fdd7 - common.attachments.toasts.success_uploading_files: d3ff7960a885465625c95198731ab5ee - common.attachments.toasts.success_uploading_files_multiple: d3ff7960a885465625c95198731ab5ee - common.attachments.toasts.success_uploading_files_single: 89cf650484c02f327f925bc1c573f33a - common.attachments.toasts.success_uploading_files_target: ae773c93e2011f8c9b7856cc8eea060d - common.attachments.toasts.uploading_files: 150272cacb23559b293696a7d6fc3ec3 - common.attachments.toasts.remove_file: b586f93a2f8ee26c7fbe0276475aa277 - header.discord.button: bb1d159e917b3b1f930b1a94546e284e - header.feedback.button: 30045922163d87daf194d9bcb2aa8ac4 - header.feedback.title: 655af1f75ab10f676b65f8eb1ab9f500 - header.feedback.description: 72eeffe43e7bb9c2d60a9696767c9c35 - header.feedback.placeholder: 8c97d3fd1885ff7d2ace81ff70cb051a - header.feedback.success: 655af1f75ab10f676b65f8eb1ab9f500 - header.feedback.error: 71cf23dcb04bfc5d324f0e482e046ca3 - header.feedback.send: 3ad5963e1a2d72cb72bdb3ab3110ff1a - not_found.title: d51c5646e3ecaecea876a931be98d0a6 - not_found.description: 76296f2db5b7725bf728b49b5ab61f6b - not_found.return: 5cee76a8c096296dfb17f29e248dc6b1 - theme.options.light: abfd24adfebef98d653b605aa62baf2f - theme.options.dark: e453a886a3295deb0ede87645ede5646 - theme.options.system: b431d1485aa37ae09fa4bfa7883356ca - sidebar.overview: 8332fbec31ac4a3cd9d819230e7a6087 - sidebar.policies: 4baeafc5b98154e818683d92ca8db26e - sidebar.risk: 3620a2f5d04be0ef2ecd685297baf1d3 - sidebar.vendors: 915a50509a5b968903bdb788f448639e - sidebar.integrations: adcecead84f6cfdbff4dcbf48f3042f8 - sidebar.settings: 4d3c4eb9f350e268f00f8097de526194 - sidebar.evidence: 2588e6aa8938f60682e23b2f6fb0d4ee - sidebar.people: d4e50a9ea2253c9f06bc6bd451fb3a2c - auth.title: 5fc2b1a1eed0a1823159ab106f2aed7e - auth.description: 6a082bb3b49331c16f102861ff2ab31d - auth.options: ef4e58e8acedb82c35fed30955ca137c - auth.google: 81e754bba3423b76f625af09bb1fcf2c - auth.email.description: 1ffb6589352c18ddd6fc586036f2e7b2 - auth.email.placeholder: ef2fc7b5a10529a04fa8f06b3f5b9581 - auth.email.button: b717acee66cb275bea78b19c5c6133b7 - auth.email.magic_link_sent: b53dd0e981aa51e21b23ede8579a03be - auth.email.magic_link_description: b6e4cc34ca6d3fa8ad455ed567717032 - auth.email.magic_link_try_again: 0186c3c01b4329be8b889c2b85c564a0 - auth.email.success: 4b79b5012aab181d9a3e4f0eb7a34ba5 - auth.email.error: b438025bbb832d1ae0e569d74fe8aa2d - auth.terms: c0cbd618f8f3bfaa7c895c1a6bd05945 - onboarding.title: 0661b25bd7c77c70e4d7b0a930aee5b8 - onboarding.setup: 1a0150117e807caf279cde8bdf66f406 - onboarding.description: 8bc7d119900568c15836bfa5dfc80a8e - onboarding.fields.name.label: f57583eb2f3841ce79b704a8e945a8ac - onboarding.fields.name.placeholder: 7f68a09fe2691b6ed382f6dff70d906d - onboarding.fields.website.label: 4a4cb60dc8cd226c68ffffe713aa9fe3 - onboarding.fields.website.placeholder: 82d35d943316a67baaf429734ff1528c - onboarding.fields.subdomain.label: 37f422f005adc2b354663ab77139561b - onboarding.fields.subdomain.placeholder: 2f1767dc31e7a8dc68b2c21bf07984ff - onboarding.success: f754711017865b6d8cd17ac78bf990b7 - onboarding.error: 361a117ad725951e608753f81ef12e5b - onboarding.unavailable: 7bc7a7ebde216139b8194a75ed8f298a - overview.title: 8332fbec31ac4a3cd9d819230e7a6087 - overview.framework_chart.title: 28ab94749a075e5c0485994bf71de1ae - overview.requirement_chart.title: 81ebb7d71c25f790c417c8c8c1f9bffe - policies.dashboard.title: b8da6df14bf06283cbf588df6998722e - policies.dashboard.all: 0357f080f91c24ea0f233561ef828c40 - policies.dashboard.policy_status: 298f1b71d8b4fcce6f3e3c01c29fe63f - policies.dashboard.policies_by_assignee: 75943a8ff82717510e319689202ceba1 - policies.dashboard.policies_by_framework: 8c3cb8aef0c46f5eb836ebc877372811 - policies.table.name: c44a478ab23a921aac17d69e34bcba6d - policies.table.statuses.draft: a1c7b53d72d9db871a2f3ea94d06f113 - policies.table.statuses.published: 1f10a7861d15aaf098ad564a7d8a9506 - policies.table.filters.owner.label: 14c125d88444bd12e79ddb959d69c14e - policies.table.filters.owner.placeholder: 7c3c087d24211c351e870e9b836aa166 - policies.filters.search: 3214ab7f38a0af1eb4474df80c652d9f - policies.filters.all: 0357f080f91c24ea0f233561ef828c40 - policies.status.draft: a1c7b53d72d9db871a2f3ea94d06f113 - policies.status.published: 1f10a7861d15aaf098ad564a7d8a9506 - policies.status.needs_review: 906a777038d2ebda5738cd53a71e74ae - policies.policies: b1dc11822e33e5f1ecb29739878bb048 - evidence_tasks.evidence_tasks: 2588e6aa8938f60682e23b2f6fb0d4ee - evidence_tasks.overview: 8332fbec31ac4a3cd9d819230e7a6087 - risk.risks: 3624933eae9a60f077f9f2954c813828 - risk.overview: 8332fbec31ac4a3cd9d819230e7a6087 - risk.create: f1fc49a78264b7beca09b3932c6b9df6 - risk.vendor.title: 2986d415899d6faed8ad189f31a432aa - risk.vendor.dashboard.title: 9c03a54994928ce527a3599fe438a2c4 - risk.vendor.dashboard.overview: b5c8e712154fbd4d85ea2da1d22e57cf - risk.vendor.dashboard.vendor_status: 4045c50fafbf976963b2abe2ff758864 - risk.vendor.dashboard.vendor_category: b6bac422c578f759975cdccf39de2401 - risk.vendor.dashboard.vendors_by_assignee: 5a661e089c7124696f959a6b0cc29606 - risk.vendor.dashboard.inherent_risk_description: 2551381346d2c58885e11d2b8b988301 - risk.vendor.dashboard.residual_risk_description: b3df7c33bb9576f3e99f490c3ceac25f - risk.vendor.register.title: 5ff135435abe7b7a293282727d1d0248 - risk.vendor.register.table.name: 4777bbaaa0aebe104606b77947d0e22d - risk.vendor.register.table.category: 624c6b241d2d14bbd285596ffcf2a9e7 - risk.vendor.register.table.status: 3397e69cce37e37c8605f57b367d6b33 - risk.vendor.register.table.owner: 5f4d7cc1e658cea56da01b8945cec7d4 - risk.vendor.assessment.title: 7a104cdaf33ccdf2565b1856d2e39749 - risk.vendor.assessment.update_success: 63b1bd53b84ea7522e3e0462079ad004 - risk.vendor.assessment.update_error: f2453d2c74e4afe1a3dd461b67e554e1 - risk.vendor.assessment.inherent_risk: 841ad642101241bfb5a8e178d505d45a - risk.vendor.assessment.residual_risk: f3f3dd8b7ec390eb4b092758e8511269 - risk.vendor.form.vendor_details: a6493f216f4fccd070e4283ea652aa7a - risk.vendor.form.vendor_name: 4777bbaaa0aebe104606b77947d0e22d - risk.vendor.form.vendor_name_placeholder: f9724e7045086b3ba9b4579232b8c657 - risk.vendor.form.vendor_website: 4a4cb60dc8cd226c68ffffe713aa9fe3 - risk.vendor.form.vendor_website_placeholder: 7850594aa937003e92139bd06c21396a - risk.vendor.form.vendor_description: ef918abfb53ea5bc4fde3764e4c199de - risk.vendor.form.vendor_description_placeholder: 4f0a6bc526ccf5985a69f595752b9f4e - risk.vendor.form.vendor_category: 624c6b241d2d14bbd285596ffcf2a9e7 - risk.vendor.form.vendor_category_placeholder: 9d74ee624d873cf13b64ee6aaed38bd8 - risk.vendor.form.vendor_status: 3397e69cce37e37c8605f57b367d6b33 - risk.vendor.form.vendor_status_placeholder: 4b432aae41faef3522bb0e16fa153e13 - risk.vendor.form.create_vendor_success: a225a3cf6ff8391735995a65c1b21542 - risk.vendor.form.create_vendor_error: d12b23040e2ce06fa6e97f31c0525a5b - risk.vendor.form.update_vendor: af068734645c7aa74b0659036246140a - risk.vendor.form.update_vendor_success: 4041caa00cdc188548d38d48be182f46 - risk.vendor.form.update_vendor_error: be1d7970075b921eda0e874aef2b5504 - risk.vendor.form.add_comment: d7c0f6427402512c742347babca1f0c2 - risk.vendor.table.name: 4777bbaaa0aebe104606b77947d0e22d - risk.vendor.table.category: 624c6b241d2d14bbd285596ffcf2a9e7 - risk.vendor.table.status: 3397e69cce37e37c8605f57b367d6b33 - risk.vendor.table.owner: 5f4d7cc1e658cea56da01b8945cec7d4 - risk.vendor.filters.search_placeholder: adefd23455f549bc301539d1f53941f8 - risk.vendor.filters.status_placeholder: b2d2be0f8cb7837bb5071ca1aac2e7dd - risk.vendor.filters.category_placeholder: fa395f277d79168d098cddebc1571864 - risk.vendor.filters.owner_placeholder: 5dcb2b8638fb2a00d999196414631ddd - risk.vendor.empty_states.no_vendors.title: dc57302b77376ef37fe5a5d3f116d2bb - risk.vendor.empty_states.no_vendors.description: c2303c495a5f1108062ae465394612c2 - risk.vendor.empty_states.no_results.title: 3fcc064a645e61dd3d642ff1e52b3754 - risk.vendor.empty_states.no_results.description: 5d3f1d31cec631239093a8da2e0c67aa - risk.vendor.empty_states.no_results.description_with_filters: b8662468f89ba12988a84dfbe186d959 - risk.vendor.actions.create: d0d6becbf94f98e981cc47b89b0ab1d6 - risk.vendor.status.not_assessed: 873ff59465c27a78413d843b190a5919 - risk.vendor.status.in_progress: 5af8d2e40ce41d4dcbe8306a9a1c9c6e - risk.vendor.status.assessed: 3a752f70d3615e5edc52168cb4819e49 - risk.vendor.category.cloud: 5c34769796428a071fefe395e879ead6 - risk.vendor.category.infrastructure: 4d1cdbb44a7d5e92555c45767478ba8c - risk.vendor.category.software_as_a_service: bd72a2b5c79769563d8bda8ef0482592 - risk.vendor.category.finance: c989712e880443a42d6e891e9ac1e5e8 - risk.vendor.category.marketing: 7cb15e416d62919b1b40298324fbe30b - risk.vendor.category.sales: adcc30327981bffd4f2f27d482e52e78 - risk.vendor.category.hr: 904ccf096c781e601bd74b5fbe5eb4fd - risk.vendor.category.other: c2295235a535ea3e85b7a0e5ab85afb0 - risk.vendor.risk_level.low: c3f5d0c1c069ca6c9090620a1ff3c938 - risk.vendor.risk_level.medium: d8e1f99f9ac1c9d7a6110c79daf2d7db - risk.vendor.risk_level.high: f615e2d9443eaa282c99891152c16584 - risk.vendor.risk_level.unknown: da71ed9cc9993f503aea4d64f2c5c9e2 - risk.dashboard.title: 629e199d421911b329a2909925beeb50 - risk.dashboard.overview: 26e76fbba4a3399549740e2eca1dce49 - risk.dashboard.risk_status: 0a627f8ea427c0e25dfc78522d5643c5 - risk.dashboard.risks_by_department: 7888a04699015e06cc29af328d5e423b - risk.dashboard.risks_by_assignee: 1ec19bb7b98e694f8948089e6f812a20 - risk.dashboard.inherent_risk_description: c9613e10af2a68cb4da908a7adc423a3 - risk.dashboard.residual_risk_description: dbcd670168c184733609234c23b2bd85 - risk.dashboard.risk_assessment_description: 30b8f812ab145f121995deb91193d4b2 - risk.register.title: 61d643869401b0def6f6e0e6e7933999 - risk.register.table.risk: 3620a2f5d04be0ef2ecd685297baf1d3 - risk.register.empty.no_risks.title: d2a2fdeed9b560c7e88edc3796bc1609 - risk.register.empty.no_risks.description: 59d96a7ae35a64898efbfb3d30c9bdf3 - risk.register.empty.create_risk: 4f2f6f3ae82433fa8e43c10678f5f762 - risk.metrics.probability: d3d5c9b1993c4b0dae7f8ee8d3e1d82e - risk.metrics.impact: 5c5a54a8bb5bb610beec1345cd62c2e9 - risk.metrics.inherentRisk: 841ad642101241bfb5a8e178d505d45a - risk.metrics.residualRisk: f3f3dd8b7ec390eb4b092758e8511269 - risk.form.update_inherent_risk: 6b8ae77751a43bceac1d9201c0f0aa94 - risk.form.update_inherent_risk_description: f8f2af5157c0a2e0ce0e0fc0cb057ff8 - risk.form.update_inherent_risk_success: be5b549489af3cf7e015eb51b03d6c34 - risk.form.update_inherent_risk_error: 809c88f1edb97468645362e9c55fd653 - risk.form.update_residual_risk: 9dac278cbcaf9fff450e1e2157dbe782 - risk.form.update_residual_risk_description: a061274d1986daf93fa530284a09d62d - risk.form.update_residual_risk_success: 3992b5db1b63cd9b708bcdfc77d0a86e - risk.form.update_residual_risk_error: 142f02264a202188b9d651f915a48ab3 - risk.form.update_risk: c3658c7b3b0c7ac09af1467c9fdda1ed - risk.form.update_risk_description: b2fa15881df6f8ccc32e11323f729a12 - risk.form.update_risk_success: 73cfa7fd713a79aa930d491e5708cd2c - risk.form.update_risk_error: 9abbfda76af7e4b8afc13f1b49de6fee - risk.form.create_risk_success: 3756811ec25fdaf619da644b06c6d8c7 - risk.form.create_risk_error: 2c8ec008bca99e96ec51ceba662c9dc2 - risk.form.risk_details: da8a061c175d7b3c716341be73d7423c - risk.form.risk_title: ce4c388c597e87c042bc75f127ead96d - risk.form.risk_title_description: 84c263a458392d15c99684919f1e2f20 - risk.form.risk_description: ef918abfb53ea5bc4fde3764e4c199de - risk.form.risk_description_description: 8876f07dfe8e3b9e917a2a5172118336 - risk.form.risk_category: 624c6b241d2d14bbd285596ffcf2a9e7 - risk.form.risk_category_placeholder: eef1eb3f6044522aa46e11ae63e25f31 - risk.form.risk_department: 8295f968e1676d62158d33a57b26963b - risk.form.risk_department_placeholder: 311cb58c4ec975e8a66ad3022298e64a - risk.form.risk_status: 0a627f8ea427c0e25dfc78522d5643c5 - risk.form.risk_status_placeholder: fd5662cabcd09101dfd36df3e755a2ab - risk.tasks.title: 8fa33a1f2be10005d07ff40ad5c07833 - risk.tasks.attachments: 3c675ef97f2e8c747c72f7e29e75ca03 - risk.tasks.overview: c97c3679892cd9f277a87e31f8f81de7 - risk.tasks.form.title: 061b8973c59e51c470b3f8fb43dc0a6c - risk.tasks.form.task_title: 45f740f8a769209786f678a35f304c7a - risk.tasks.form.status: 5dc811f6c15e1ee3b53a1eed289b9716 - risk.tasks.form.status_placeholder: 67782de260e8eadd7542c52ebc585bca - risk.tasks.form.task_title_description: 46d004214a5b4dcf6ba7d2f13f270940 - risk.tasks.form.description: ef918abfb53ea5bc4fde3764e4c199de - risk.tasks.form.description_description: cf292bd94791296e7a6915ed78270503 - risk.tasks.form.due_date: d152e4af87d6a196851755fc80feb3b9 - risk.tasks.form.due_date_description: b17c1659af2df64d0dd98662782581ae - risk.tasks.form.success: 3e28bb124bf2e69e269ba1a526396090 - risk.tasks.form.error: 99e1f2738e21436abda28e4b86b6cca6 - risk.tasks.sheet.title: ee9156ca95ea9a72b86b19e25aa1fb5f - risk.tasks.sheet.update: fdae7b5bb7c0a34bb97e38552ed1d98b - risk.tasks.sheet.update_description: 45a7233f773abc244687691805ec419c - risk.tasks.empty.description_create: 6923bda5bdb36b1850fb0cb3fb964f2a - settings.general.title: 0db377921f4ce762c62526131097968f - settings.general.org_name: 478342a6b4ea7f7168b7b8d581ec21c1 - settings.general.org_name_description: 80d33dac21009d44ea1176d249ff97d3 - settings.general.org_name_tip: 3733ffc1871bfb2f144c900911a72a94 - settings.general.org_website: b3b8b0a9b77a6d8af2d9dc6ec8ed07aa - settings.general.org_website_description: 131506a8e1a4e993487e88db9f113aae - settings.general.org_website_tip: 50c0b81452541b6f33e1aab8d504bf9e - settings.general.org_website_error: 5db8285329a18a7f31c52124b3812692 - settings.general.org_website_updated: 1a351c5a044de9fd4b45b64d38c29b9b - settings.general.org_delete: 673c9473e892eef78b5f527de5802443 - settings.general.org_delete_description: 951f64e6d3fbf0f2677c29087e5a164e - settings.general.org_delete_alert_title: 23c2131e46eaf5d4aeffb21da318d7d7 - settings.general.org_delete_alert_description: 956f7ffbf0ac76293bf3fab0e5aba1e1 - settings.general.org_delete_error: 40ab06fb663838d078976dac34d6d490 - settings.general.org_delete_success: 4a9d9e89698322c279786fdaa161d126 - settings.general.org_name_updated: ebeb359367b2c914c37360f4179b5062 - settings.general.org_name_error: f9a3a64b93b513032e60c0160aec55ef - settings.general.save_button: d3270bdb8d2c1caaca4178dbe19be03a - settings.general.delete_button: 5b5c9f9dc839dcc858b3c4371b014930 - settings.general.delete_confirm: 5b346a8cc9dcda80d2877a1978b31a42 - settings.general.delete_confirm_tip: 664270af44585897f9a0b40e7d9fa307 - settings.general.cancel_button: 847607d75e504090b5aff16a6e6c8351 - settings.members.title: 9ea156a3d5841bad7dc6c133f02900c6 - settings.billing.title: 8982385e6e341d53c9a2dd9ab05dd687 - user_menu.theme: f055088fba41cb53e3806e55a9f6896e - user_menu.language: d62a3259ece127d00905fbe37f1b5cea - user_menu.sign_out: 0daed4d43928c4a72d4eabff46d766fe - user_menu.account: d1ef184f21c6a19615f873478fe03462 - user_menu.support: 54532bac0cc2df67791b1e6c2c172b32 - user_menu.settings: 4d3c4eb9f350e268f00f8097de526194 - user_menu.teams: 4b511bad2c32b63ff2afb991137d1d32 - frameworks.title: dfefdb66581190514404f57cdf74a8eb - frameworks.controls.title: 26beed84513191c01e2574d317c239d0 - frameworks.controls.description: c66fb3f4f466340d913817703755fe06 - frameworks.controls.table.status: 3397e69cce37e37c8605f57b367d6b33 - frameworks.controls.table.control: a1595abbb4c3a326636dd178757cd6c1 - frameworks.controls.table.artifacts: 669da5aa8d89fb83aea89a92341f1f4f - frameworks.controls.table.actions: a6f0cb2b955bb2e7116afe7a52e40092 - frameworks.controls.statuses.not_started: 085cdbd670e41e8db6c3523e31ae29f8 - frameworks.controls.statuses.compliant: d47dc6e6227796be6bb0e78f77644f13 - frameworks.controls.statuses.non_compliant: 947a679a4f62277537c4fb0e1f73b5fe - vendor.title: 629e199d421911b329a2909925beeb50 - vendor.register_title: 5ce1a6ffb5e88d09fef032c3e8a28c24 - vendor.dashboard.title: 629e199d421911b329a2909925beeb50 - vendor.dashboard.overview: f3067058fb1f7b2557690ad96d828e16 - vendor.dashboard.vendor_status: 872a23023e0e8519b9243dd39f26b5b2 - vendor.dashboard.vendor_category: dcc913af0597d229d2e30439291e9f0d - vendor.dashboard.vendors_by_assignee: 8931f9a8092c319c41199fa735ef6f93 - vendor.dashboard.inherent_risk_description: 2551381346d2c58885e11d2b8b988301 - vendor.dashboard.residual_risk_description: b3df7c33bb9576f3e99f490c3ceac25f - vendor.register.title: 01c64987b47ee2ed893a989b5b1b2aa9 - vendor.register.table.name: 4777bbaaa0aebe104606b77947d0e22d - vendor.register.table.category: 624c6b241d2d14bbd285596ffcf2a9e7 - vendor.register.table.status: 3397e69cce37e37c8605f57b367d6b33 - vendor.register.table.owner: 5f4d7cc1e658cea56da01b8945cec7d4 - vendor.category.cloud: 5c34769796428a071fefe395e879ead6 - vendor.category.infrastructure: 4d1cdbb44a7d5e92555c45767478ba8c - vendor.category.software_as_a_service: b0ca9e41d61885345eef09f928c9ea58 - vendor.category.finance: c989712e880443a42d6e891e9ac1e5e8 - vendor.category.marketing: 7cb15e416d62919b1b40298324fbe30b - vendor.category.sales: adcc30327981bffd4f2f27d482e52e78 - vendor.category.hr: 904ccf096c781e601bd74b5fbe5eb4fd - vendor.category.other: c2295235a535ea3e85b7a0e5ab85afb0 - vendor.vendors: 8de6d4c46d616eb4c358ba6f63bb54dc - vendor.form.vendor_details: a83c56d1fb7a07d6a42bd518710821ae - vendor.form.vendor_name: 4777bbaaa0aebe104606b77947d0e22d - vendor.form.vendor_name_placeholder: f9724e7045086b3ba9b4579232b8c657 - vendor.form.vendor_website: 4a4cb60dc8cd226c68ffffe713aa9fe3 - vendor.form.vendor_website_placeholder: 7850594aa937003e92139bd06c21396a - vendor.form.vendor_description: ef918abfb53ea5bc4fde3764e4c199de - vendor.form.vendor_description_placeholder: 4f0a6bc526ccf5985a69f595752b9f4e - vendor.form.vendor_category: 624c6b241d2d14bbd285596ffcf2a9e7 - vendor.form.vendor_category_placeholder: 9d74ee624d873cf13b64ee6aaed38bd8 - vendor.form.vendor_status: 3397e69cce37e37c8605f57b367d6b33 - vendor.form.vendor_status_placeholder: 4b432aae41faef3522bb0e16fa153e13 - vendor.form.create_vendor_success: a225a3cf6ff8391735995a65c1b21542 - vendor.form.create_vendor_error: d12b23040e2ce06fa6e97f31c0525a5b - vendor.form.update_vendor_success: 4041caa00cdc188548d38d48be182f46 - vendor.form.update_vendor_error: be1d7970075b921eda0e874aef2b5504 - vendor.form.contacts: 1561016df889501b9f81d66980057904 - vendor.form.contact_name: 7ff12886818a3171be16929855c25f79 - vendor.form.contact_email: c78d63f5dd66fcbebee54239bed70af4 - vendor.form.contact_role: e81f4b49bcb5e9bd84a750d57746d15e - vendor.form.add_contact: 1c18151e2bc992ce6346630c477b11ed - vendor.form.new_contact: 02c00537619bd598542714092e1538f3 - vendor.form.min_one_contact_required: 8b223d20058218bd5e6404469451f357 - vendor.empty_states.no_vendors.title: dc57302b77376ef37fe5a5d3f116d2bb - vendor.empty_states.no_vendors.description: c2303c495a5f1108062ae465394612c2 - vendor.empty_states.no_results.title: 3fcc064a645e61dd3d642ff1e52b3754 - vendor.empty_states.no_results.description: 5d3f1d31cec631239093a8da2e0c67aa - vendor.empty_states.no_results.description_with_filters: b8662468f89ba12988a84dfbe186d959 - people.title: d4e50a9ea2253c9f06bc6bd451fb3a2c - people.details.taskProgress: 81905e40b816572e1d218a616ae4fb48 - people.details.tasks: 8fa33a1f2be10005d07ff40ad5c07833 - people.details.noTasks: 67b0ecfdfae8700dc31823a6d8d436d7 - people.description: 796c2736dca73a8857bb6c500a7a05a0 - people.filters.search: 2b8dfea5416a9f1dc0394116fcb4d8c8 - people.filters.role: 1d7524a32f2cdd7a4df73f44d73582db - people.actions.invite: d96c8afc504dd5d0d96ff29adae2481d - people.actions.clear: af85d57c83ad1d84bce2c9b15c24f23f - people.table.name: 4777bbaaa0aebe104606b77947d0e22d - people.table.email: f04c54105510249e49af8b509e3f7a42 - people.table.department: 8295f968e1676d62158d33a57b26963b - people.table.externalId: 14988ff2367a22226ec1919c356a8aaf - people.empty.no_employees.title: e18d1f56154b4ce21b2bae2635bbf0a3 - people.empty.no_employees.description: 73ab164c7f2f753c4d091d2aa4f34e09 - people.empty.no_results.title: 3fcc064a645e61dd3d642ff1e52b3754 - people.empty.no_results.description: 6922b396db0c34d86471c54bae62dc63 - people.empty.no_results.description_with_filters: b8662468f89ba12988a84dfbe186d959 - people.invite.title: d96c8afc504dd5d0d96ff29adae2481d - people.invite.description: 62c0fd69dd40592a593c9ff5229c36f8 - people.invite.email.label: c16fbc6d64f825e71e9357ade2b299d2 - people.invite.email.placeholder: ef2fc7b5a10529a04fa8f06b3f5b9581 - people.invite.role.label: e5640a09d8faad21ce298743fe237a47 - people.invite.role.placeholder: 87cd703ed52e051f85cbbbddbfa70f42 - people.invite.name.label: 4777bbaaa0aebe104606b77947d0e22d - people.invite.name.placeholder: c8c5122a4991b298bc8bfc6f6191510e - people.invite.department.label: 8295f968e1676d62158d33a57b26963b - people.invite.department.placeholder: 311cb58c4ec975e8a66ad3022298e64a - people.invite.submit: d96c8afc504dd5d0d96ff29adae2481d - people.invite.success: 11ea1ddd721785d60778118157be18dd - people.invite.error: 6b6b9938ed912ecccb74c0871cc0394a - errors.unexpected: 9935609876f05892e8e58ddd3c34f6d4 - src/locales/pt.ts: - languages.es: 4c00162f37c68542a6ff4928b0a54ddc - languages.fr: 2f327580fa61447b4ef7af6b0ecdd2d1 - languages.no: 87ea6257a5a39f7e5f498221f15c4484 - languages.pt: 10fef620608967668bce27dc9ab6fe8e - languages.en: 4ef88329965d99db469751ad439dc7c9 - language.title: c88b33a3250b4e28f34e1ececba69206 - language.description: 9955d9bfa3362cc30a28320e9b693a70 - language.placeholder: 888cde41cf10b9387ccb49e6b3382cb0 - common.actions.save: eb7a0fed691fc71db1ac92407ca5430a - common.actions.edit: ef485eb67ac89238a4fede745a0ae94c - common.actions.delete: 856c379026c86863c3669fee546a1478 - common.actions.cancel: 847607d75e504090b5aff16a6e6c8351 - common.actions.clear: 8ae0d2d4dd7fecb4726c027b80e9d8ad - common.actions.create: 75b1629abe8e883f24abf751d7390879 - common.actions.send: 30cc00aea30ec70b7c1292b6458181c0 - common.actions.return: b6c74a4632a10a2370352564a9836765 - common.actions.success: 5297e8a08974bbcefbdb16bbc34459b0 - common.actions.error: 6112d49c7fa285c90030ad22946aa6bc - common.actions.next: f3ee1fd23d48a9ff460b32332eed5e06 - common.actions.complete: ab5aff5eaadd748bafc75f91339225ea - common.assignee.label: 42e17d509c98db2d608023fd35845109 - common.assignee.placeholder: 5310ccd08269aa38a92a86a42df163c6 - common.date.pick: d148dedebe042cdc389b640cf76c43df - common.date.due_date: cb1fc9039c600277139f70bb49a33e2b - common.status.open: b4925f97ad1407b533eb0afb37925646 - common.status.pending: ec51ded1eadec8cf7f8521794fe22deb - common.status.closed: 61f2afba43804815c397a4a961fc2bdc - common.status.archived: 2016bdc4864542b865d3bc7bca54ac15 - common.status.compliant: 324646500393a11e761356c6a0771cfd - common.status.non_compliant: 680dc7e2c72ac15e6785794cfc625110 - common.status.not_started: 05e327f5143017912e95c92a537bff01 - common.status.in_progress: c61e4c72b6da9e8ed715f8c653f1cad5 - common.status.published: 1f10a7861d15aaf098ad564a7d8a9506 - common.status.needs_review: 4ddbd0600f9836c0dae1983c4f4a3e5e - common.status.draft: 81a9e7726e3797ca8f1a076902ec64c5 - common.status.not_assessed: ffe6161b109bfbc579ecce68a9c9a001 - common.status.assessed: ce82d3d58e2a2d97fb99ba6c837caec9 - common.status.active: 4f9d837801726854629e6441618a5248 - common.status.inactive: ea1ccb9c709d9d0ac2557a9c0d7c2dce - common.filters.clear: 1c871b2ed3b78632ff9abf1831140a31 - common.filters.search: 45190492f54b2de49468bc1969319a00 - common.filters.status: ec53a8c4f07baed5d8825072c89799be - common.filters.department: 8295f968e1676d62158d33a57b26963b - common.filters.owner.label: 42e17d509c98db2d608023fd35845109 - common.filters.owner.placeholder: ea01cc33ecd9b3f7f9f5fd60c8a64171 - common.table.title: 09b79d379db0c82b4615d749b22475f0 - common.table.status: ec53a8c4f07baed5d8825072c89799be - common.table.assigned_to: 3b6d823dea1e47255b1681445f4b7007 - common.table.due_date: cb1fc9039c600277139f70bb49a33e2b - common.table.last_updated: 028e36b73abbde40da7eb0fbed8cab47 - common.table.no_results: 862b1847e091e28b1f598fb563d2886d - common.empty_states.no_results.title: ff5cfeac7ccb04f0964a795a3a9ce249 - common.empty_states.no_results.title_tasks: a3de37b791a40750b277aa705e8ad832 - common.empty_states.no_results.title_risks: f9a2b45fde00af075a484dfd3c19ef37 - common.empty_states.no_results.description: 3b2e713c5c1ff15b83595179f37c5f3d - common.empty_states.no_results.description_filters: 3b2e713c5c1ff15b83595179f37c5f3d - common.empty_states.no_results.description_no_tasks: 64ae635723b8c447884413ab2f45d738 - common.empty_states.no_results.description_no_risks: 325ee4d8a2c1df3c74b2f7318f20cf97 - common.empty_states.no_items.title: bdcb31be9a643883a28b08f48ee1fdb4 - common.empty_states.no_items.description: 80a7ebab020a79b79b066782463f57d5 - common.pagination.of: 5f02f0889301fd7be1ac972c11bf3e7d - common.pagination.items_per_page: 4278372fa919d874c10ac7a5c8f8c195 - common.pagination.rows_per_page: 10d68f351edf6bef4e66bd0653b45d35 - common.pagination.page_x_of_y: c18a6102c5d20acaa6d56e0cd4117fc3 - common.pagination.go_to_first_page: 6f0b4e4f5c835c282df6075c23b1a012 - common.pagination.go_to_previous_page: 357b948b8b788fea74d9085e48bad39b - common.pagination.go_to_next_page: 4ac38251032c8fd32c0f8eee0905e703 - common.pagination.go_to_last_page: 45577af48b903ab7e5df3fe3112999ed - common.comments.title: 5597584f522c61bb31c582e80106645a - common.comments.description: cafb8b600d1ae73c9dd2e67d6ce98971 - common.comments.add: 926b7564d52b75632dc6f385fbc7699e - common.comments.new: 90d4b6f5fcc3c131f67e34851de58342 - common.comments.save: 30c553cada2dd05ad0466c0d13f2884f - common.comments.success: 7a344c2f1a922094959e53d653cccf91 - common.comments.error: c751fed8efe63672f8ccd26bf7fd5db1 - common.comments.placeholder: 5da194254007c00ccb74a20fbb7c375e - common.comments.empty.title: 22d855bb0a191f689bef40b2f7c450ac - common.comments.empty.description: 694cd59e8a6a04af1926c4d892ed4b0b - common.attachments.title: 270774c2dc685cc979a7d7a2426bf193 - common.attachments.description: 272867e7e9ee50c8632e60934733e97b - common.attachments.upload: 28686e8efadb180216b27d20424b5bd4 - common.attachments.upload_description: 457a5ac0995f69b9692f7a2916a77041 - common.attachments.drop: fdebed8eb8723cab5c1ea83ab596419b - common.attachments.drop_description: d2c708b154d306fa050140cc6b37c4bd - common.attachments.drop_files_description: ed7ceed3975376362e27564de1f49140 - common.attachments.empty.title: 1ae9eaae2591681ef7244bbd2878b416 - common.attachments.empty.description: 272867e7e9ee50c8632e60934733e97b - common.attachments.toasts.error: 2d6168312ef0924cb02dca314a930a27 - common.attachments.toasts.error_uploading_files: d281049da2d4b1dc7faf78eb6e2b5f22 - common.attachments.toasts.error_uploading_files_multiple: c733b5b7b9e709d603e6960e36ac42e2 - common.attachments.toasts.error_no_files_selected: cdc282d2e79705fffce31b555d40df17 - common.attachments.toasts.error_file_rejected: 65e08daccaf03158ba8931d354ce8264 - common.attachments.toasts.error_failed_to_upload_files: 429aa5b87b2921e7a8388be1c2849671 - common.attachments.toasts.error_failed_to_upload_files_multiple: 429aa5b87b2921e7a8388be1c2849671 - common.attachments.toasts.error_failed_to_upload_files_single: 69e8f5c12266730db60b3f543bf2dcd7 - common.attachments.toasts.success_uploading_files: f6c0ccbf6c83c916a91f717aacf5df1c - common.attachments.toasts.success_uploading_files_multiple: f6c0ccbf6c83c916a91f717aacf5df1c - common.attachments.toasts.success_uploading_files_single: f2b05f8b144b6483afac907725615f7e - common.attachments.toasts.success_uploading_files_target: 4f4f854b846e0cf5835652f02fcc4202 - common.attachments.toasts.uploading_files: 1ea227e4762ecd399142642631946026 - common.attachments.toasts.remove_file: 9f50ec6fa949d3a61a8b2f4d1d9647ab - header.discord.button: 3e097932ea7b044d3ee86e4466da5be3 - header.feedback.button: bea4c2c8eb82d05891ddd71584881b56 - header.feedback.title: 807a2189c2d4b05e7b3f9ed644af350a - header.feedback.description: 0042be326af8c0a31139eb94c34e4adb - header.feedback.placeholder: 2c4545d251bcc2e7a5e6b6e46c2bce85 - header.feedback.success: 807a2189c2d4b05e7b3f9ed644af350a - header.feedback.error: 684a84e252a5955032434be76f4e252b - header.feedback.send: 05e0c6e79a7616e75690a1940e77c8dd - not_found.title: 28c595576890f8fac581ab66bd47a8ff - not_found.description: 5b03bd3a1e1f0c56f21f0070d1b2141e - not_found.return: 2e69b282e6b87d393ddd0f63fad2ac5e - theme.options.light: abfd24adfebef98d653b605aa62baf2f - theme.options.dark: ae89b1e92ad911530a418a02d22ce2be - theme.options.system: b431d1485aa37ae09fa4bfa7883356ca - sidebar.overview: cd28583cdbf0f1c34b19e9d0873507a1 - sidebar.policies: 4baeafc5b98154e818683d92ca8db26e - sidebar.risk: 89e67233324f6bf6482a163efbda2369 - sidebar.vendors: c49681b875095566ed81d8c9455e6a29 - sidebar.integrations: 6ea79a8a769fc5a36cec1433f739cce6 - sidebar.settings: 2571dd516a1452eb3b5a17d007c5bac8 - sidebar.evidence: 79659c6536da5576e799c8963d424989 - sidebar.people: de14276d9e07d3296ba1bce76ad662c9 - auth.title: d3dee5288f72e4006f7b387b33e8b0fd - auth.description: 44d8091282bf87cc8b02cb7b50fbc272 - auth.options: 9febeddd5826cda96b734eff7e15c2f6 - auth.google: e2f4aa3b734883b594e9bc1a9c64f6ed - auth.email.description: 361997457f147f9501938a657bba07d3 - auth.email.placeholder: f030b88f98efc5be67a08c28be0e1263 - auth.email.button: a28904929e7a3da701df543b1d7e4e3a - auth.email.magic_link_sent: e8c3531a07bd180b5ad59a57441bfa62 - auth.email.magic_link_description: 097f805fee9ac18297eb468667ab8a6e - auth.email.magic_link_try_again: c395014b79d95b611745a4c317cdb4d4 - auth.email.success: acd0ae4bd3549336a010fcf989da3f1c - auth.email.error: 805f95100697eecdb8cef96fb15d10cd - auth.terms: 41a8f1fa81e9b287091995bd22be1f17 - onboarding.title: 5d6c3337b9384c5301f2354348702016 - onboarding.setup: 55d582fb4f8b2f2ec10923e0fc8c9443 - onboarding.description: 2a53dba72fc5a88f7d1404131041fcad - onboarding.fields.name.label: c284797ea69dae13341c890c9bae42cb - onboarding.fields.name.placeholder: c7fdda77b1c21c452a28665395b85bdd - onboarding.fields.website.label: 15bbb9d0bbf25e8d2978de1168c749dc - onboarding.fields.website.placeholder: d81cdec86f715b8622cf347dc4973016 - onboarding.fields.subdomain.label: dabf829b1d3442c8badfc2a3d4e430cf - onboarding.fields.subdomain.placeholder: 8eb90ec152bd30f4a53f15bf805783dc - onboarding.success: f169b0588571a64267de3cbf9db7b33e - onboarding.error: 2d6168312ef0924cb02dca314a930a27 - onboarding.unavailable: 188e7af993bcd42736645153c43cdcb7 - overview.title: cd28583cdbf0f1c34b19e9d0873507a1 - overview.framework_chart.title: 96e7fa45ec20d87983cbf574d0dd6764 - overview.requirement_chart.title: 8b0319e7fc9a6f7c87280fa4fd4196a1 - policies.dashboard.title: 96a7b5490bcd3652a0c2bf36c1ffce2b - policies.dashboard.all: c5baae8efe552d4e76e37f708bf42b55 - policies.dashboard.policy_status: 60d2b66ef83e5571dab65baaf6770ebc - policies.dashboard.policies_by_assignee: 0bbc93363ac5efef606d89761cbe5119 - policies.dashboard.policies_by_framework: 6c295c5e4d8d4df08d474f4868c275c2 - policies.table.name: 8334ac9c9adf7b5d08fbce9ffbaf2b71 - policies.table.statuses.draft: 81a9e7726e3797ca8f1a076902ec64c5 - policies.table.statuses.published: 1f10a7861d15aaf098ad564a7d8a9506 - policies.table.filters.owner.label: 42e17d509c98db2d608023fd35845109 - policies.table.filters.owner.placeholder: ea01cc33ecd9b3f7f9f5fd60c8a64171 - policies.filters.search: 53ea9ad8d3da19ff64cd290e649de0b0 - policies.filters.all: c5baae8efe552d4e76e37f708bf42b55 - policies.status.draft: 81a9e7726e3797ca8f1a076902ec64c5 - policies.status.published: 1f10a7861d15aaf098ad564a7d8a9506 - policies.status.needs_review: 4ddbd0600f9836c0dae1983c4f4a3e5e - policies.policies: b1dc11822e33e5f1ecb29739878bb048 - evidence_tasks.evidence_tasks: 79659c6536da5576e799c8963d424989 - evidence_tasks.overview: cd28583cdbf0f1c34b19e9d0873507a1 - risk.risks: 1a3cfae873932512f8de83d0e8460230 - risk.overview: cd28583cdbf0f1c34b19e9d0873507a1 - risk.create: aa66bfbc1954619721cc70562df00658 - risk.vendor.title: ce8b8497c0273fa2f2ef89813324a694 - risk.vendor.dashboard.title: 5ab98eaf54ba7f97b14e9a8d33911774 - risk.vendor.dashboard.overview: 86d10b5fa129cb56914ea9bdd36f54d6 - risk.vendor.dashboard.vendor_status: 91730c68a5fed0e1346dafe2ae32a2b4 - risk.vendor.dashboard.vendor_category: a81f5288b74e8d16de1e446fec13bd7c - risk.vendor.dashboard.vendors_by_assignee: aec30b4652068d4ef3745d04c01bda25 - risk.vendor.dashboard.inherent_risk_description: f965942278a201c2aa1d0d8f7a008afa - risk.vendor.dashboard.residual_risk_description: 2440cac623c600164a04f3b05f78c373 - risk.vendor.register.title: f6e06a1f3c90f935e2b5bca7d0788382 - risk.vendor.register.table.name: c0289e98897ab58f231c168b19a67b2e - risk.vendor.register.table.category: 70c4fe802624c6daef688eced9f59cbc - risk.vendor.register.table.status: ec53a8c4f07baed5d8825072c89799be - risk.vendor.register.table.owner: 42e17d509c98db2d608023fd35845109 - risk.vendor.assessment.title: 414a4f3056cd69c64403f45c03bb93ee - risk.vendor.assessment.update_success: 73bc563946eded7e955e572b295f62b6 - risk.vendor.assessment.update_error: 553c38f3cfed038e66e41577cb56a828 - risk.vendor.assessment.inherent_risk: 697112dd2beccbf5dc87c4c638558164 - risk.vendor.assessment.residual_risk: aac9a2ffa7686712343487e079deed94 - risk.vendor.form.vendor_details: a3298588bcf6866cec770faaa9d06798 - risk.vendor.form.vendor_name: c0289e98897ab58f231c168b19a67b2e - risk.vendor.form.vendor_name_placeholder: bd3ad8123533e654111d5f5581869b2d - risk.vendor.form.vendor_website: 15bbb9d0bbf25e8d2978de1168c749dc - risk.vendor.form.vendor_website_placeholder: c218ac76e32ab77bd9d0f269f1207e4a - risk.vendor.form.vendor_description: c1c2501bcc9382417cb275c94f29fc48 - risk.vendor.form.vendor_description_placeholder: a5ed5cc3d50b95e31bc9520ba51ab91e - risk.vendor.form.vendor_category: 70c4fe802624c6daef688eced9f59cbc - risk.vendor.form.vendor_category_placeholder: 17d2a3856c291ffea6eda334f4424027 - risk.vendor.form.vendor_status: ec53a8c4f07baed5d8825072c89799be - risk.vendor.form.vendor_status_placeholder: 10e68e59fac1690037f17f8c88fec65a - risk.vendor.form.create_vendor_success: 0879e68cdb20b8323da83f4c580ea560 - risk.vendor.form.create_vendor_error: 76facd664848f7497dd394c2ad887c92 - risk.vendor.form.update_vendor: b2385eb375e485f29467d82a87f5ed69 - risk.vendor.form.update_vendor_success: 2f1a758fe63847632dd896077c6d3831 - risk.vendor.form.update_vendor_error: af47bf45ba564e753c0077e36a3c0bcb - risk.vendor.form.add_comment: 926b7564d52b75632dc6f385fbc7699e - risk.vendor.table.name: c0289e98897ab58f231c168b19a67b2e - risk.vendor.table.category: 70c4fe802624c6daef688eced9f59cbc - risk.vendor.table.status: ec53a8c4f07baed5d8825072c89799be - risk.vendor.table.owner: e61f95fd2a8da8531a4052e6d619d03d - risk.vendor.filters.search_placeholder: 526ab1f4258f972d442accfbf7d628a0 - risk.vendor.filters.status_placeholder: 0a37cd71955558ebceb296071b5771e5 - risk.vendor.filters.category_placeholder: e56a33cc92809bf48100557efe063f4d - risk.vendor.filters.owner_placeholder: dd71b7bc9e24213f4dbc1098a57ac73f - risk.vendor.empty_states.no_vendors.title: 744210194114cc4a2fd31524e50eba40 - risk.vendor.empty_states.no_vendors.description: 3e90762081ce5f2740438c6ff481038d - risk.vendor.empty_states.no_results.title: 862b1847e091e28b1f598fb563d2886d - risk.vendor.empty_states.no_results.description: b174c45c623da80e3354e959e25b4455 - risk.vendor.empty_states.no_results.description_with_filters: 7a2e20b527b82016631de60b987185df - risk.vendor.actions.create: c6d7f1949919661ec78783c0cf87de58 - risk.vendor.status.not_assessed: ffe6161b109bfbc579ecce68a9c9a001 - risk.vendor.status.in_progress: c61e4c72b6da9e8ed715f8c653f1cad5 - risk.vendor.status.assessed: ce82d3d58e2a2d97fb99ba6c837caec9 - risk.vendor.category.cloud: d8f1ac63ebc38eb42b842e37f6c00f7b - risk.vendor.category.infrastructure: 76f1e8b834b9e58d9e0115e9f36c6cb0 - risk.vendor.category.software_as_a_service: 4819a83a9f40aa0eb8fc3445495cad06 - risk.vendor.category.finance: f9a72aba65a7c21dbfca9aafa4b6dc82 - risk.vendor.category.marketing: 7cb15e416d62919b1b40298324fbe30b - risk.vendor.category.sales: 385d3cdb883bdeba854341141b694a56 - risk.vendor.category.hr: 9508a19d7801e07ee7b7628c31bfdd47 - risk.vendor.category.other: 21e6facb2210089479e2aa9c41762ca0 - risk.vendor.risk_level.low: ce02913c9941fd9da1fee0451594bf6b - risk.vendor.risk_level.medium: ba2d1a289288d5ee48035071ee912bd1 - risk.vendor.risk_level.high: 639fdfd4c0a6887e608aeeb00f035f42 - risk.vendor.risk_level.unknown: 58801ed4ae2e727c89431a8bdd4c58ab - risk.dashboard.title: 96a7b5490bcd3652a0c2bf36c1ffce2b - risk.dashboard.overview: 7820022e25f8b03293664c9bede3468b - risk.dashboard.risk_status: 3944857c84689246f44b9bc2ffba4af3 - risk.dashboard.risks_by_department: 36636303b0a6c1af8bdf3973982352c7 - risk.dashboard.risks_by_assignee: a17cb075856bc875840221cc7c410996 - risk.dashboard.inherent_risk_description: 2fcf43599608f68e47a6365a5c534480 - risk.dashboard.residual_risk_description: a70e0df117fcf0eed62933ecd7f347d2 - risk.dashboard.risk_assessment_description: 9e0bb9f710e60d4d7b25d6c7ddaad681 - risk.register.title: 4b11e02c643bb840fa72e66bb9452118 - risk.register.table.risk: 89e67233324f6bf6482a163efbda2369 - risk.register.empty.no_risks.title: 325ee4d8a2c1df3c74b2f7318f20cf97 - risk.register.empty.no_risks.description: 15f3d07d22c396f1ab2b62bc6369b377 - risk.register.empty.create_risk: c1f81c1f811a92eab56e1bfaf5d2e405 - risk.metrics.probability: 3132a67fc5e91b7b3cd37e5ea3d1cb80 - risk.metrics.impact: 5c5a54a8bb5bb610beec1345cd62c2e9 - risk.metrics.inherentRisk: 697112dd2beccbf5dc87c4c638558164 - risk.metrics.residualRisk: aac9a2ffa7686712343487e079deed94 - risk.form.update_inherent_risk: 95662fbf36edb0c79750f6d1bb18a2a3 - risk.form.update_inherent_risk_description: 22643f16bdd9c99e1ca59690edf126d1 - risk.form.update_inherent_risk_success: d4d1a21e86933491685d88524bbfcca2 - risk.form.update_inherent_risk_error: 742a1fe4187bd5101566965f11bb01f0 - risk.form.update_residual_risk: b9a8bfbd96b2a67eb4c4ff0d6ab07d3a - risk.form.update_residual_risk_description: 3f238ba2256a467093240a17504d4495 - risk.form.update_residual_risk_success: b4ae56729bf7b1fbd0edacd80e7e0cd2 - risk.form.update_residual_risk_error: 00d0a73df2969cd72130d1dc42decaf7 - risk.form.update_risk: 77aa997939ee70c49c8983cc8b337414 - risk.form.update_risk_description: a23dc78d61ec199e35c9ef20c6b03b5a - risk.form.update_risk_success: eb383ceadb5acb8e4c5a8c67b26b2794 - risk.form.update_risk_error: 5519353863c4d53f79d5e1c628cec293 - risk.form.create_risk_success: 2087e3af5f33076a7bf1abee8aacf4f3 - risk.form.create_risk_error: 3cd55fed30677567cb4b350bdc8fbe67 - risk.form.risk_details: 83aec7283c39c233747d587584953af7 - risk.form.risk_title: 68652ef8c5e1e00cec64b5a4edba7d83 - risk.form.risk_title_description: dbdad73e6af7ec2848ff4862bfddcbd0 - risk.form.risk_description: c1c2501bcc9382417cb275c94f29fc48 - risk.form.risk_description_description: dedf417f4b4d7ce71ee2c48cb70fc877 - risk.form.risk_category: 70c4fe802624c6daef688eced9f59cbc - risk.form.risk_category_placeholder: 65fc9322f796e9e58ed1487dcca329ab - risk.form.risk_department: 8295f968e1676d62158d33a57b26963b - risk.form.risk_department_placeholder: 3645419486d6418952e3a03c3ec6667b - risk.form.risk_status: 3944857c84689246f44b9bc2ffba4af3 - risk.form.risk_status_placeholder: 840270830540663cdbd9b5a39c7f700b - risk.tasks.title: b3cbbfcad6f3e417a9806b2aef4bc1e7 - risk.tasks.attachments: 270774c2dc685cc979a7d7a2426bf193 - risk.tasks.overview: 7461c318975f1e8a62eae97c76fc30d0 - risk.tasks.form.title: 325957719cdade998c839f8f3cb6dc03 - risk.tasks.form.task_title: 8268ad91fb6ddfdd262e3fa550b0dcc4 - risk.tasks.form.status: dc2c81cba8d9027d9b6a980d1daa7de4 - risk.tasks.form.status_placeholder: cadec19150249777b87de5c742fab360 - risk.tasks.form.task_title_description: e9211721622d13836564fd13f87f4552 - risk.tasks.form.description: c1c2501bcc9382417cb275c94f29fc48 - risk.tasks.form.description_description: 88a401fc067062292a0c7979fb0ecbde - risk.tasks.form.due_date: cb1fc9039c600277139f70bb49a33e2b - risk.tasks.form.due_date_description: fe5f76727449a9d858ec1f609f176372 - risk.tasks.form.success: d75b32b4a0df4a9035b59ca005c8ecdd - risk.tasks.form.error: b4fea2ec922c17684a0c0972ad97ccb2 - risk.tasks.sheet.title: 4190961de70fa6de3c4a5fee5663229c - risk.tasks.sheet.update: 0615b088bc762ba3091315168d1598c1 - risk.tasks.sheet.update_description: 4b4d1e0696989b23e585bbe1106a8726 - risk.tasks.empty.description_create: 6486acace7656babb2158c1ba50507a2 - settings.general.title: 42238015090fc2146650bd7f9d58906b - settings.general.org_name: c284797ea69dae13341c890c9bae42cb - settings.general.org_name_description: 9ce71182dd9e5e85a2f62b56f8a691f2 - settings.general.org_name_tip: 7b8522878ea20a58b8c520d9e1db95f5 - settings.general.org_website: 1bebecedcdca28f65a6061ad9b224733 - settings.general.org_website_description: c75b8827b23ca3cb1149fbf33d526e59 - settings.general.org_website_tip: 28df9ff1b1948735dc9459625998327b - settings.general.org_website_error: 218e614be93028229c3b1fe86075f1d7 - settings.general.org_website_updated: c89da6ad5dbe9ec8800c1343178e2fbd - settings.general.org_delete: db3ad60a9ae7246527ef1cef12b63988 - settings.general.org_delete_description: 61d5665062c698eeac4ef7f72ab9ba25 - settings.general.org_delete_alert_title: da782681d68eb314ddd0d6943e4b71ed - settings.general.org_delete_alert_description: 0e261b16beb44a8be4439e9a40de324a - settings.general.org_delete_error: 3692b96ecb1f66c9f68f0398d71cf27b - settings.general.org_delete_success: c0efc9cf51a6b8b5df766e8807ec45f9 - settings.general.org_name_updated: 6630dec5903ae536758c507841c821bf - settings.general.org_name_error: 9cfe63f246f0632c24b05628a8758ee1 - settings.general.save_button: eb7a0fed691fc71db1ac92407ca5430a - settings.general.delete_button: 856c379026c86863c3669fee546a1478 - settings.general.delete_confirm: 88c696cdd318ec057f03d1117070caa1 - settings.general.delete_confirm_tip: 716577e83795c92f3b36b6586ce5af39 - settings.general.cancel_button: 847607d75e504090b5aff16a6e6c8351 - settings.members.title: 0a32c571a23ff25825a98355c504e644 - settings.billing.title: 4cef1eb01568374a2f344dc7ab04d5de - user_menu.theme: f055088fba41cb53e3806e55a9f6896e - user_menu.language: d62a3259ece127d00905fbe37f1b5cea - user_menu.sign_out: 790ed91ff5545849d3b4cb2e88c750e4 - user_menu.account: 8192dbe80e3401ebe872e0aed980daa1 - user_menu.support: 76420e3e2ec10bca79d6bfcc6356354c - user_menu.settings: 2571dd516a1452eb3b5a17d007c5bac8 - user_menu.teams: efd4f70e8bf06861f8037d6e3ce93ea9 - frameworks.title: e9a26954f3386e69508ceb81f858cc21 - frameworks.controls.title: 26beed84513191c01e2574d317c239d0 - frameworks.controls.description: c1e880d8b3d944000e8945d03adfd389 - frameworks.controls.table.status: ec53a8c4f07baed5d8825072c89799be - frameworks.controls.table.control: 35c43f0e9257f550812716f62519b08c - frameworks.controls.table.artifacts: 6a755bbcf3e0bfd53426ff65a839caae - frameworks.controls.table.actions: fc5f5e82d59c64157e30b122567488f9 - frameworks.controls.statuses.not_started: 05e327f5143017912e95c92a537bff01 - frameworks.controls.statuses.compliant: 324646500393a11e761356c6a0771cfd - frameworks.controls.statuses.non_compliant: 680dc7e2c72ac15e6785794cfc625110 - vendor.title: 96a7b5490bcd3652a0c2bf36c1ffce2b - vendor.register_title: e9688c6f464f67883d1e0698e11353db - vendor.dashboard.title: 96a7b5490bcd3652a0c2bf36c1ffce2b - vendor.dashboard.overview: 2e36d54666859c9fea4b575c8dee0263 - vendor.dashboard.vendor_status: 91730c68a5fed0e1346dafe2ae32a2b4 - vendor.dashboard.vendor_category: a81f5288b74e8d16de1e446fec13bd7c - vendor.dashboard.vendors_by_assignee: aec30b4652068d4ef3745d04c01bda25 - vendor.dashboard.inherent_risk_description: f0d48ce192ae0b005e7ec35ca57cb7b3 - vendor.dashboard.residual_risk_description: 2440cac623c600164a04f3b05f78c373 - vendor.register.title: f6e06a1f3c90f935e2b5bca7d0788382 - vendor.register.table.name: c0289e98897ab58f231c168b19a67b2e - vendor.register.table.category: 70c4fe802624c6daef688eced9f59cbc - vendor.register.table.status: ec53a8c4f07baed5d8825072c89799be - vendor.register.table.owner: e61f95fd2a8da8531a4052e6d619d03d - vendor.category.cloud: d8f1ac63ebc38eb42b842e37f6c00f7b - vendor.category.infrastructure: 76f1e8b834b9e58d9e0115e9f36c6cb0 - vendor.category.software_as_a_service: b0ca9e41d61885345eef09f928c9ea58 - vendor.category.finance: f9a72aba65a7c21dbfca9aafa4b6dc82 - vendor.category.marketing: 7cb15e416d62919b1b40298324fbe30b - vendor.category.sales: 385d3cdb883bdeba854341141b694a56 - vendor.category.hr: 9508a19d7801e07ee7b7628c31bfdd47 - vendor.category.other: 21e6facb2210089479e2aa9c41762ca0 - vendor.vendors: d05a1e8f4af4f67d1bb53699a0620305 - vendor.form.vendor_details: a3298588bcf6866cec770faaa9d06798 - vendor.form.vendor_name: c0289e98897ab58f231c168b19a67b2e - vendor.form.vendor_name_placeholder: 6b87b3ced79ecdf4ca122a481b2f3135 - vendor.form.vendor_website: 15bbb9d0bbf25e8d2978de1168c749dc - vendor.form.vendor_website_placeholder: de95e6e14146096c4c57e03646c9a334 - vendor.form.vendor_description: c1c2501bcc9382417cb275c94f29fc48 - vendor.form.vendor_description_placeholder: 5a3f3ccac15e3c49e1cc1067b4edac68 - vendor.form.vendor_category: 70c4fe802624c6daef688eced9f59cbc - vendor.form.vendor_category_placeholder: 17d2a3856c291ffea6eda334f4424027 - vendor.form.vendor_status: ec53a8c4f07baed5d8825072c89799be - vendor.form.vendor_status_placeholder: 10e68e59fac1690037f17f8c88fec65a - vendor.form.create_vendor_success: 0879e68cdb20b8323da83f4c580ea560 - vendor.form.create_vendor_error: 76facd664848f7497dd394c2ad887c92 - vendor.form.update_vendor_success: 2f1a758fe63847632dd896077c6d3831 - vendor.form.update_vendor_error: af47bf45ba564e753c0077e36a3c0bcb - vendor.form.contacts: 4602565d6d53416500329655da650db3 - vendor.form.contact_name: 9b00db010cd829a3173d211bd98d679c - vendor.form.contact_email: 3c7b2715d2b837f53b1602e5b8d73fb6 - vendor.form.contact_role: 2dfe3611c32274fd06c09fbda97baf13 - vendor.form.add_contact: 16dea9930657f69a7200ef8107b606eb - vendor.form.new_contact: 208c272dcf48ebf096b583bb702523e6 - vendor.form.min_one_contact_required: 2da7ac3bc73f4654a10387012cdbabff - vendor.empty_states.no_vendors.title: 744210194114cc4a2fd31524e50eba40 - vendor.empty_states.no_vendors.description: 3e90762081ce5f2740438c6ff481038d - vendor.empty_states.no_results.title: 862b1847e091e28b1f598fb563d2886d - vendor.empty_states.no_results.description: b174c45c623da80e3354e959e25b4455 - vendor.empty_states.no_results.description_with_filters: 7a2e20b527b82016631de60b987185df - people.title: de14276d9e07d3296ba1bce76ad662c9 - people.details.taskProgress: 99f91ad5736e6e0e28293ea4666f9325 - people.details.tasks: b3cbbfcad6f3e417a9806b2aef4bc1e7 - people.details.noTasks: 017f0c642dbadc67ef139bed5b105d3f - people.description: 3324626e8ebf65a5a59c0126d0648e45 - people.filters.search: 105ab8ef319a09e18284b3884a270d22 - people.filters.role: cf21f9ec1502cab0cde92f9ef4f23671 - people.actions.invite: ad7d5f0640b499c20262396d52c0ad7e - people.actions.clear: 1c871b2ed3b78632ff9abf1831140a31 - people.table.name: c0289e98897ab58f231c168b19a67b2e - people.table.email: ce8ae9da5b7cd6c3df2929543a9af92d - people.table.department: 8295f968e1676d62158d33a57b26963b - people.table.externalId: 5631db58ab63e92ccbb9af8f04256a98 - people.empty.no_employees.title: 3da7656577f669e120508a55a3227874 - people.empty.no_employees.description: fb799e2f9e0aab131101641b3b1bb1d2 - people.empty.no_results.title: 862b1847e091e28b1f598fb563d2886d - people.empty.no_results.description: 0732b0b799782fa2fc2abf93e5847c05 - people.empty.no_results.description_with_filters: 7a2e20b527b82016631de60b987185df - people.invite.title: ad7d5f0640b499c20262396d52c0ad7e - people.invite.description: 0b0a1c58aa1e24551cee8f736a8811dc - people.invite.email.label: 1967607bee452269643095c8444907cf - people.invite.email.placeholder: 6d30afa49e14951befc0a3cb5e7ad0cc - people.invite.role.label: 8dd5e244a5bb391135b671b9a0b1ba67 - people.invite.role.placeholder: 3a30ffd4e9ccb21876bfa08fea6e2eac - people.invite.name.label: c0289e98897ab58f231c168b19a67b2e - people.invite.name.placeholder: fada62ea46d5b3f957f2ecc64032c1dd - people.invite.department.label: 8295f968e1676d62158d33a57b26963b - people.invite.department.placeholder: 3645419486d6418952e3a03c3ec6667b - people.invite.submit: ad7d5f0640b499c20262396d52c0ad7e - people.invite.success: e67fc65e2c44a2a2f88e0b3a60e33f23 - people.invite.error: 769ce470a83583ec5d5c4da7ab509604 - errors.unexpected: a52e3b2219bb8c8a7bac3f1b3f625f88 - src/locales/fr.ts: - languages.es: 6a77de34cb21ce61732b71a27825c63a - languages.fr: e0545693906575b04aa1650abd60faba - languages.no: 1aca30cfbbaac249bf033d480f8e2b73 - languages.pt: 292fba65c6fd3610931fb93fd1b012e8 - languages.en: b82673617c50d2c2b79893656315994a - language.title: 1ea21417b4fc870a18d6a244983be72b - language.description: d070e9c230541b0ea87e9535f819f63c - language.placeholder: b884345f1cf7b083cbb162cbb91b21a1 - common.actions.save: aed88202e2432ee2a613f9120ef7486b - common.actions.edit: 898c079d2e62a4b1971dfbad9d860838 - common.actions.delete: ccfd9851b50aaa671513b50d158ed579 - common.actions.cancel: d12c3b0dcf75614dafb2ac6bdaa77a26 - common.actions.clear: 1e9a49ea1dfc342c61fe75a9eb9e7b23 - common.actions.create: 205be9be7dda08c4608df07c0295340b - common.actions.send: 770a1a1e17972d73a5f39914e0d5c6b1 - common.actions.return: 9ce5c3f80eb821b677c66063a6861d07 - common.actions.success: f3ca514e91e895424f467c94b204d32f - common.actions.error: fe7d2cb7d4db59ae3c13b1d29aa2515e - common.actions.next: 257a7b4c17035553819990bc73114989 - common.actions.complete: a2824b0e3feba7627a4fa3cbc0e52857 - common.assignee.label: ff63fdc126b306fc67c01e481a93eda9 - common.assignee.placeholder: 2c8be12ef0c2e4bfdf2984c75a6dee61 - common.date.pick: c9baf91d28972545488f147e10b713c9 - common.date.due_date: de9507035b945d2715634ac4c1baa402 - common.status.open: b19a0a5407807fe32f57d10a3f53ce2f - common.status.pending: 439149be8bfe2e2ff0c156e35bfd5894 - common.status.closed: e7cd586e50130b30c68e169d2cfe9368 - common.status.archived: 9fd0976b1c14abf3cd2dcfa25083daec - common.status.compliant: 324646500393a11e761356c6a0771cfd - common.status.non_compliant: e43c8d536e0e1b5419b7704893374be8 - common.status.not_started: 97a8462abdccd0463ba462fb9ee0833a - common.status.in_progress: 7202b8ffa44d203b76371de10e54d0b8 - common.status.published: daaf3c6e6a7579155c08ff51243512c6 - common.status.needs_review: 38ba5b4ca898f3bac2201694b48bebc9 - common.status.draft: 540e360892172e34f1d10ba632cebb01 - common.status.not_assessed: 121637ecde942b30505a7b7192065ae9 - common.status.assessed: 241639d85e1ad7d3ebd95b273adc743a - common.status.active: a9f35372e5f038fe5244dc297166e30e - common.status.inactive: f620242d11962f68a10edf059eac2242 - common.filters.clear: 180c6431db153b1503b8623e96c2e710 - common.filters.search: da21962e48634867f8aec7b5e6488bf4 - common.filters.status: 87a831bc99060c55b50dbe91c6aab6e9 - common.filters.department: df393600825b049c6ee18c9980aaf28a - common.filters.owner.label: ff63fdc126b306fc67c01e481a93eda9 - common.filters.owner.placeholder: 09950ebe6f41d2edf4fd543f6afea6f9 - common.table.title: 99fb48ddce014d8ad24810eeb3bfde68 - common.table.status: 87a831bc99060c55b50dbe91c6aab6e9 - common.table.assigned_to: ff63fdc126b306fc67c01e481a93eda9 - common.table.due_date: de9507035b945d2715634ac4c1baa402 - common.table.last_updated: 2849ca53fc1e67155cf0492d958c2a3c - common.table.no_results: 5bb69fe3b7a4d5220a445c029fb02c19 - common.empty_states.no_results.title: 17e6abcc4dedc0279075ef696d7015f8 - common.empty_states.no_results.title_tasks: b12536be908db1d99be1fe81caf8a797 - common.empty_states.no_results.title_risks: 0cf054bd1e2bbbcf4520b78a8afb94c1 - common.empty_states.no_results.description: 253e55c16cbdf08574a69fd77ee1369c - common.empty_states.no_results.description_filters: 253e55c16cbdf08574a69fd77ee1369c - common.empty_states.no_results.description_no_tasks: 589b3766f524e9cf302309ca0c6b6bc8 - common.empty_states.no_results.description_no_risks: afe3d187294fb343c64c78892f7a60d6 - common.empty_states.no_items.title: a2aa17abe12b80a0d67da4e866462c3c - common.empty_states.no_items.description: 219188375ccd9447b4cae0683522d15b - common.pagination.of: 5f02f0889301fd7be1ac972c11bf3e7d - common.pagination.items_per_page: 8d980ee75cfdeda7d522597b829b9fbc - common.pagination.rows_per_page: eec799c82ad6fa8aa71025a60d139546 - common.pagination.page_x_of_y: a67de57207aa54765439caee7fd5a443 - common.pagination.go_to_first_page: 135f878d3f8dcd0c0b41e3c50c226fe9 - common.pagination.go_to_previous_page: 292138d3fdbb1e4481eec9afe25e926f - common.pagination.go_to_next_page: a5ac391d5bff89b404ba2dcfa30bf0f3 - common.pagination.go_to_last_page: 1a4f7f54745a0be5fc64177cf2a612fc - common.comments.title: 5c24fbbfb392e568825bb135061ba191 - common.comments.description: 6f740138d70543ed65d133c81ac7dede - common.comments.add: 04979267671e33bcd261434689879386 - common.comments.new: d2524d2d1778e4d9fa845eb2196ac14b - common.comments.save: 3d98c13645056d1dbb602b7fd5c41b23 - common.comments.success: 1c0e3d2ff72596c36a7251ec434a283e - common.comments.error: 46a5adfdacd82ded622f4f44e9aeee99 - common.comments.placeholder: 1ce0f77b60460f31ac0d8737f4c55d20 - common.comments.empty.title: b0571496f7eabcb36a9e88bdafc77752 - common.comments.empty.description: 45befd23701b8333276482d157dd096d - common.attachments.title: 7517e49d3a1f76eda505075e22139876 - common.attachments.description: 07e4e32a76a7ca28ad8d55130e8798da - common.attachments.upload: 84ee1b7210866cf40ecd985f355864c9 - common.attachments.upload_description: 0b8f185d25b8584a6d514cdfc4d46cc0 - common.attachments.drop: a622b08f62d1e86d8f2624f6f583e3d7 - common.attachments.drop_description: 5425dcc731eac557b7ff621205d04e17 - common.attachments.drop_files_description: f80b7f937fe32459859ca9744578f231 - common.attachments.empty.title: 274d7e6eb96b1f13f5afec3e17f8de50 - common.attachments.empty.description: 07e4e32a76a7ca28ad8d55130e8798da - common.attachments.toasts.error: 34056dd5780c5ce0db55bbbe40ed7908 - common.attachments.toasts.error_uploading_files: 4ef4e08b2e5117a1199cac1627922442 - common.attachments.toasts.error_uploading_files_multiple: 9f0fe47189c3a38b3213fecf6454c9d2 - common.attachments.toasts.error_no_files_selected: 674a8934ec879aee45b7bca6510086ef - common.attachments.toasts.error_file_rejected: d850819e566556f064525a1d2c9a3b16 - common.attachments.toasts.error_failed_to_upload_files: 1f62656efb4499f26706973bc258076e - common.attachments.toasts.error_failed_to_upload_files_multiple: 1f62656efb4499f26706973bc258076e - common.attachments.toasts.error_failed_to_upload_files_single: fcdfd5cf6cfc086848fa495ee3dd6ea1 - common.attachments.toasts.success_uploading_files: 716c2d42220f747f34db9c25425c32cf - common.attachments.toasts.success_uploading_files_multiple: 716c2d42220f747f34db9c25425c32cf - common.attachments.toasts.success_uploading_files_single: a4d1651fe8f1c236be76d2f12c97d990 - common.attachments.toasts.success_uploading_files_target: e13e03d9b5e6742e78594531f1b82b73 - common.attachments.toasts.uploading_files: 86bbec742ccec94af0dbf327e7c16c4d - common.attachments.toasts.remove_file: 207436b9083d98b60132bf2d835053f9 - header.discord.button: 323331b0d9775db6561544fefa3aa793 - header.feedback.button: 19d8c9f2c75b15539dd3168a41d85ba1 - header.feedback.title: fa8254ef84a9eff403cf44b4babbaf25 - header.feedback.description: ebeeae5e45bcd0d10936e1c60b8226ad - header.feedback.placeholder: 3d33a19a5f33da89cab0678e2f7285a5 - header.feedback.success: fa8254ef84a9eff403cf44b4babbaf25 - header.feedback.error: 8bec949efd475a5e9e481e2a90325964 - header.feedback.send: 9356894a834f01c9c761606799ad6e33 - not_found.title: 5c44cae06137d5abc98833d14009e91f - not_found.description: d4ea72f060fea4b7be9f293620babb7f - not_found.return: f27714bfa8734faaa1621bed3a939d93 - theme.options.light: c7e206a03eb924b8cf6f15e8c70f1f07 - theme.options.dark: 19bdcdffdcb06cb2f0a62af523ec7fea - theme.options.system: b222ce1d25f19d7b8ca005440c794baf - sidebar.overview: 39909e63e1c7c5c0be8caab4e5e04b70 - sidebar.policies: c1fe3cce74c4745582c235364d9b8412 - sidebar.risk: 508428a451143207631e5bbd5d88e4d5 - sidebar.vendors: 20a50f9498efd294c6c653d2804c0827 - sidebar.integrations: 4c772dc39d61569ecea19082f498b8e6 - sidebar.settings: e7785de91330713fc2d12404bb6bd556 - sidebar.evidence: d45cf3774e592d0684d86c7e054949ff - sidebar.people: 5557260365f759ca82cf108b3d8bef8f - auth.title: ebdfba346dd9e4711096c80e9e9c2e87 - auth.description: 3aee5e88dd1aaaee41469153656b49bd - auth.options: 46b0e6460135122c2066d3a59fc99a7c - auth.google: b21b990297dd2872b27b79827f0c4d41 - auth.email.description: e1ba2101ca538a7c06b7c296b8990a51 - auth.email.placeholder: 5a6940a4d212e6c6fd224ae8c9744232 - auth.email.button: 9ba2458f84fd2145422c83643921dbc6 - auth.email.magic_link_sent: 2c8df655d6a6c44b95a6249bc565f938 - auth.email.magic_link_description: 8120a9c352bc3fed0399ac19907832c0 - auth.email.magic_link_try_again: 7391a7f1fe944d3e1adde8a6d03eb8ad - auth.email.success: 5226f9acf605ea0bf2708f92c4d85a74 - auth.email.error: bbe96386040cf929f3016bdd22885d17 - auth.terms: 121af8bef59e82f7d546fe020a7eb717 - onboarding.title: 94bc46a0fe49ed676d3c28c0be6c5d01 - onboarding.setup: 254f642527b45bc260048e30704edb39 - onboarding.description: c50fec9a9bd2275d0dbc56d68cf8be2d - onboarding.fields.name.label: a4cd2eb4b24cfd61f366e642e6a05186 - onboarding.fields.name.placeholder: 008dcd606c353e78aa6406768db89870 - onboarding.fields.website.label: ca09410963c66f80a9bd39bdc8ae95cf - onboarding.fields.website.placeholder: d0db696a804edd4fd8dda2c727dc3539 - onboarding.fields.subdomain.label: f6a31676af3d50ed039c99b52565a3fb - onboarding.fields.subdomain.placeholder: 771f5924706521c73464341fc48afb05 - onboarding.success: 8c85b7115a0125bcdee80439d80a897d - onboarding.error: 34056dd5780c5ce0db55bbbe40ed7908 - onboarding.unavailable: 1e3a8dc8a682114a6494f0086f174ad0 - overview.title: 39909e63e1c7c5c0be8caab4e5e04b70 - overview.framework_chart.title: c854a940f23a125f6284b589155184f3 - overview.requirement_chart.title: f2b3b5556d4c3bef00fd5eabb5078d28 - policies.dashboard.title: 4a37efc27391cc18714c72981d59c072 - policies.dashboard.all: 88f396f7dfc148c975e87eae138752a5 - policies.dashboard.policy_status: e920d82fba73ed51d5276bf69030b2cb - policies.dashboard.policies_by_assignee: a9e4d167fe7ed9733c0247b0ec565911 - policies.dashboard.policies_by_framework: 77c8d6f367e8cdf9dd716fab866a1025 - policies.table.name: c00be24152065be8946cbfb9ea8680b3 - policies.table.statuses.draft: 540e360892172e34f1d10ba632cebb01 - policies.table.statuses.published: daaf3c6e6a7579155c08ff51243512c6 - policies.table.filters.owner.label: d7c40c83e9f9d6509c9bc4326c6b122d - policies.table.filters.owner.placeholder: 2159fb1a6c2a7408629642faa64d218d - policies.filters.search: add69877c7aaf3ce79382a81ba94acf7 - policies.filters.all: 88f396f7dfc148c975e87eae138752a5 - policies.status.draft: 540e360892172e34f1d10ba632cebb01 - policies.status.published: daaf3c6e6a7579155c08ff51243512c6 - policies.status.needs_review: 7b6b03f2f1c7eb07108ee383dd0cdd1b - policies.policies: 301a659b98579990507bb5fd0c87aacb - evidence_tasks.evidence_tasks: d45cf3774e592d0684d86c7e054949ff - evidence_tasks.overview: 39909e63e1c7c5c0be8caab4e5e04b70 - risk.risks: 653844d548b2148728f6fb70ee8263f7 - risk.overview: 39909e63e1c7c5c0be8caab4e5e04b70 - risk.create: 8a3449d840bc2e83e264c5b72dd7ae3a - risk.vendor.title: d329c47d548a0b3361120bbf4fd8078c - risk.vendor.dashboard.title: fbf3e31e131c3418d0634807c7439c5c - risk.vendor.dashboard.overview: 4aa84eb88453f8e042500f2869ab4158 - risk.vendor.dashboard.vendor_status: f7575b36883502afd77ff2bce285f15b - risk.vendor.dashboard.vendor_category: 682dfd2d7c6c78fc44e6e161c4b7f3be - risk.vendor.dashboard.vendors_by_assignee: 5bb86b827c40ab9f69c2b26e6d24668d - risk.vendor.dashboard.inherent_risk_description: d9e71f7212a9487e2e2b3509774eff72 - risk.vendor.dashboard.residual_risk_description: f6650c5de31a483d483fd9b36337a963 - risk.vendor.register.title: 0f9930d48eca11656701168f119d050d - risk.vendor.register.table.name: d4700b697a54fbd43a1a613d32694e7f - risk.vendor.register.table.category: 8c6b7f206708b567f49f36edb123c060 - risk.vendor.register.table.status: 87a831bc99060c55b50dbe91c6aab6e9 - risk.vendor.register.table.owner: 79115f7790c58d35dd8ca592f8fc7540 - risk.vendor.assessment.title: 1e9051147a298718e743803c2e85156c - risk.vendor.assessment.update_success: e38ad4046bb8dc7baa3fb84672cc61a7 - risk.vendor.assessment.update_error: 54e23257ca5c1e96e7aa1cf381588992 - risk.vendor.assessment.inherent_risk: d0f6eef6f70a0f4460ff7f23e2521173 - risk.vendor.assessment.residual_risk: c7ae88c7793fd7dac31fe5da239d25e5 - risk.vendor.form.vendor_details: 1bb4aeaae548a238511f99d518238478 - risk.vendor.form.vendor_name: d4700b697a54fbd43a1a613d32694e7f - risk.vendor.form.vendor_name_placeholder: cd2aa7cd16fb54955e164de2b43b8fb9 - risk.vendor.form.vendor_website: ca09410963c66f80a9bd39bdc8ae95cf - risk.vendor.form.vendor_website_placeholder: e638609e6b476e4afc5c0c5acf5e4a3f - risk.vendor.form.vendor_description: b5a7adde1af5c87d7fd797b6245c2a39 - risk.vendor.form.vendor_description_placeholder: be93ad19bb1bc1ea3d35f4696bb461c2 - risk.vendor.form.vendor_category: 8c6b7f206708b567f49f36edb123c060 - risk.vendor.form.vendor_category_placeholder: ba77a55f2b2d0042a894b0ba568716e6 - risk.vendor.form.vendor_status: 87a831bc99060c55b50dbe91c6aab6e9 - risk.vendor.form.vendor_status_placeholder: 374dfef4c4c0a7491740b2f7331b5406 - risk.vendor.form.create_vendor_success: 63c2cb7f1cfab5fff3da2cebb0ebc830 - risk.vendor.form.create_vendor_error: 2afbd110bb32876e75f4926cee33a773 - risk.vendor.form.update_vendor: af5047e83fb1724263d1d0ebfb2629e0 - risk.vendor.form.update_vendor_success: 45ae9b8988aeb3a9e7c2543023f81a3f - risk.vendor.form.update_vendor_error: 0172d1b03b3209f32668261a5996b8c8 - risk.vendor.form.add_comment: 04979267671e33bcd261434689879386 - risk.vendor.table.name: d4700b697a54fbd43a1a613d32694e7f - risk.vendor.table.category: 8c6b7f206708b567f49f36edb123c060 - risk.vendor.table.status: 87a831bc99060c55b50dbe91c6aab6e9 - risk.vendor.table.owner: 79115f7790c58d35dd8ca592f8fc7540 - risk.vendor.filters.search_placeholder: 5ba5bf2d06160d5065ab748f8c3ab837 - risk.vendor.filters.status_placeholder: 48b9a4856edd97f109ddf552db80a161 - risk.vendor.filters.category_placeholder: 3f51cb58d60b967cc9da370484cfc201 - risk.vendor.filters.owner_placeholder: 2fef97a44fea321219b376c274c61444 - risk.vendor.empty_states.no_vendors.title: 606073a51edd78da1425c242ddb2f7ed - risk.vendor.empty_states.no_vendors.description: 4067f9154a8581c979ef6b890aea8dd1 - risk.vendor.empty_states.no_results.title: 5bb69fe3b7a4d5220a445c029fb02c19 - risk.vendor.empty_states.no_results.description: 272e8ffa88987801e1ce4df4610db9ea - risk.vendor.empty_states.no_results.description_with_filters: 85a145167c2b86ce831cbed8aa8ad9da - risk.vendor.actions.create: 7621068f66100474a766c19ce607cfa1 - risk.vendor.status.not_assessed: 121637ecde942b30505a7b7192065ae9 - risk.vendor.status.in_progress: 7202b8ffa44d203b76371de10e54d0b8 - risk.vendor.status.assessed: 241639d85e1ad7d3ebd95b273adc743a - risk.vendor.category.cloud: c8e2277ecfb1427838c488c217f99466 - risk.vendor.category.infrastructure: cba4f4cee5c6a3e6d8be8da68fa1234e - risk.vendor.category.software_as_a_service: 4a06db299715fa31d9d9c47f85e39d65 - risk.vendor.category.finance: c482980d384a9d0e7bc39e1140270870 - risk.vendor.category.marketing: 7cb15e416d62919b1b40298324fbe30b - risk.vendor.category.sales: 02e2b4ea2fa8f1802d2bb66fbdcb7089 - risk.vendor.category.hr: efd7bbf7b102a4e4b8f32e9ecd963a66 - risk.vendor.category.other: 977a7223997e10d4daa2ce0d309fafc6 - risk.vendor.risk_level.low: afc59091c7492858b2e5e57a735a3104 - risk.vendor.risk_level.medium: 8078e37eb5b3a24260e97d949640db1f - risk.vendor.risk_level.high: d2ca4a42f73e121b83a980d7b2803916 - risk.vendor.risk_level.unknown: dc48ecb8404ae3ab468675d916ca2042 - risk.dashboard.title: 4a37efc27391cc18714c72981d59c072 - risk.dashboard.overview: 90dc8fea58d739c70d03ef33aedc0895 - risk.dashboard.risk_status: db714059827d4c1b15d2cb01c9d628e0 - risk.dashboard.risks_by_department: 42371964a1687b83d38ab6800164bf45 - risk.dashboard.risks_by_assignee: f1844d10a7d3434c8446782169198a6b - risk.dashboard.inherent_risk_description: d6abeb8e8d53383dbfca9de0518187b6 - risk.dashboard.residual_risk_description: c1bef4f6d1b6b4dc4555105c56bc264a - risk.dashboard.risk_assessment_description: 83dab77a32f5eb23bbc74a6a514cad2e - risk.register.title: b71a48800257700e97a6d80e00764e38 - risk.register.table.risk: 508428a451143207631e5bbd5d88e4d5 - risk.register.empty.no_risks.title: afe3d187294fb343c64c78892f7a60d6 - risk.register.empty.no_risks.description: f4059eab05090c769c968bc47d06e1e5 - risk.register.empty.create_risk: 1974b648b6f3c54cebb3aa9b0e3a6a8c - risk.metrics.probability: ec7d137de973ceb6b9dde7dca67775f5 - risk.metrics.impact: 21f59b54f62b5b8b4bc0f63f0f617fc1 - risk.metrics.inherentRisk: d0f6eef6f70a0f4460ff7f23e2521173 - risk.metrics.residualRisk: c7ae88c7793fd7dac31fe5da239d25e5 - risk.form.update_inherent_risk: 179a98c3fbd8287c68b5accd4a46bbbe - risk.form.update_inherent_risk_description: 6cc90d6d4161ede7385d9b146dd62ff6 - risk.form.update_inherent_risk_success: 044b069647b121465ab413db136e98ab - risk.form.update_inherent_risk_error: 0c3bf80ed4fb6e9a8899a655f2c9e37f - risk.form.update_residual_risk: 5729da992f06cf7e5a50fa065a755072 - risk.form.update_residual_risk_description: 9d3008937a441babb184c82ba7bf7574 - risk.form.update_residual_risk_success: 607f04ebbc5f9237d0d157707cf37320 - risk.form.update_residual_risk_error: bfd971908edc0764c1abb494c77f0d69 - risk.form.update_risk: af545b421aea216f5a54d5f2edf2c6f8 - risk.form.update_risk_description: 1c59d3eae2538af10d6cb7a5ba68237b - risk.form.update_risk_success: 2d92a27e195c17c8782c7edb9b833de6 - risk.form.update_risk_error: 7be0c206936eec9c64a725392b5080e5 - risk.form.create_risk_success: d24add5516b958aff0932d64cd2d2f0d - risk.form.create_risk_error: 11a3e521fbbfaca0887cd680018ebcd2 - risk.form.risk_details: 4702d4bf414618c33f38768c6208ba5c - risk.form.risk_title: 138c003d49fee33b2e7a7aac3fc5bfdd - risk.form.risk_title_description: 440eaccaddc59e9abb6757b2108779a1 - risk.form.risk_description: b5a7adde1af5c87d7fd797b6245c2a39 - risk.form.risk_description_description: e9e5eefa1ea134a6fd5eaafa5191bc36 - risk.form.risk_category: 8c6b7f206708b567f49f36edb123c060 - risk.form.risk_category_placeholder: ba77a55f2b2d0042a894b0ba568716e6 - risk.form.risk_department: df393600825b049c6ee18c9980aaf28a - risk.form.risk_department_placeholder: 1a42316ebebde77b62ac6930e67c739f - risk.form.risk_status: 553e988e41718a14ca8842c2639b354b - risk.form.risk_status_placeholder: 8c2155a2870153cec76c0be23b292b8b - risk.tasks.title: 1c309074b8348cf83eef81c27d4e5e97 - risk.tasks.attachments: 7517e49d3a1f76eda505075e22139876 - risk.tasks.overview: 2ebd2cc1c9fdbd5f7e67cd3e6f644785 - risk.tasks.form.title: 30a650651b387c9393fe44128e51bbd2 - risk.tasks.form.task_title: 7e43dbe779e6fd5664ab69208299a875 - risk.tasks.form.status: a9629a0e07fd720db9961cff7fac1185 - risk.tasks.form.status_placeholder: 89d26edf359c91d18d847d9e3aad9def - risk.tasks.form.task_title_description: add5856346445eececa98f697b428894 - risk.tasks.form.description: b5a7adde1af5c87d7fd797b6245c2a39 - risk.tasks.form.description_description: a66f60c7a94b790afeb4fe8d0966147e - risk.tasks.form.due_date: de9507035b945d2715634ac4c1baa402 - risk.tasks.form.due_date_description: 3646562d3d00448319128870b2ac0828 - risk.tasks.form.success: 7ba9a97209ee59e7764a4a4e25713db0 - risk.tasks.form.error: 299ad6b4dbf762b2fe83942b837bfd87 - risk.tasks.sheet.title: 62eca27b8ceec030ca201df371221438 - risk.tasks.sheet.update: 98563374b52f32c0eb1c01190d309639 - risk.tasks.sheet.update_description: e39c8c82c6f171d3e8d283d81a6e84a0 - risk.tasks.empty.description_create: e6af67c7415ff61de82b4dc75797d50a - settings.general.title: cbf5d231135412fb14429e086c09a722 - settings.general.org_name: a4cd2eb4b24cfd61f366e642e6a05186 - settings.general.org_name_description: b07616ecf1de337807310db01f2fbbe0 - settings.general.org_name_tip: 5a927b41121a0e11406517374044713f - settings.general.org_website: ed5531a245693e022188fed5d2223154 - settings.general.org_website_description: 864a5f3b2aae67461a5ec67439277bc4 - settings.general.org_website_tip: f5709a2d62e3a5a61bfe489a25362b6a - settings.general.org_website_error: 3f29010229d70705c4faebc5074052a9 - settings.general.org_website_updated: 5a665fd851d34d4e9c932b5ca10f79ff - settings.general.org_delete: c6f33d653b62ccbfef5bfe13daf0cc61 - settings.general.org_delete_description: 0852031d9ecf38fc602d78eb4fc3b317 - settings.general.org_delete_alert_title: 71ca62b605390d06886fada52e020d1f - settings.general.org_delete_alert_description: abb6f206e997df56c39afc67447ac370 - settings.general.org_delete_error: 5c0f0a41659ebc25df85b0dc5dcb77b1 - settings.general.org_delete_success: 764468db490b487edb22f18b87078bbf - settings.general.org_name_updated: 782e0d23006d8fccab95422b33d8175d - settings.general.org_name_error: 5ed941c3c8b182934ec062d2dd71f3e3 - settings.general.save_button: aed88202e2432ee2a613f9120ef7486b - settings.general.delete_button: ccfd9851b50aaa671513b50d158ed579 - settings.general.delete_confirm: 52d60adc57156360329f47a3c9920fc5 - settings.general.delete_confirm_tip: 086302f9b59e2dc918293b6cdfb1f43f - settings.general.cancel_button: d12c3b0dcf75614dafb2ac6bdaa77a26 - settings.members.title: 3cd8733d1f3de18707f83b720d6fd17e - settings.billing.title: ad04f7da0d0ebf71e846914e95a0a697 - user_menu.theme: d45db514d9389d60dc5c229eaf7edbdf - user_menu.language: e7733389c419c59c3243e719055f83da - user_menu.sign_out: dca4963c5966650520f3b5b8859591cb - user_menu.account: 4cd05effefac83d92a4cbd939beac4ef - user_menu.support: db5eb84117d06047c97c9a0191b5fffe - user_menu.settings: e7785de91330713fc2d12404bb6bd556 - user_menu.teams: c37fc91290e82268088a586b315ccf9b - frameworks.title: eba1e38e54facdb539a6fcc1efc6aa9e - frameworks.controls.title: 1594471bda8bc4125956d82cc963f13c - frameworks.controls.description: 3f401ca56e69e6e088beef09ef2ae519 - frameworks.controls.table.status: 87a831bc99060c55b50dbe91c6aab6e9 - frameworks.controls.table.control: 0eea7c40f68977378fdb8e7386626647 - frameworks.controls.table.artifacts: 08004d9d4c599f44814a861568d200cb - frameworks.controls.table.actions: 06df33001c1d7187fdd81ea1f5b277aa - frameworks.controls.statuses.not_started: 97a8462abdccd0463ba462fb9ee0833a - frameworks.controls.statuses.compliant: 324646500393a11e761356c6a0771cfd - frameworks.controls.statuses.non_compliant: e43c8d536e0e1b5419b7704893374be8 - vendor.title: 4a37efc27391cc18714c72981d59c072 - vendor.register_title: d329c47d548a0b3361120bbf4fd8078c - vendor.dashboard.title: 4a37efc27391cc18714c72981d59c072 - vendor.dashboard.overview: 4aa84eb88453f8e042500f2869ab4158 - vendor.dashboard.vendor_status: 4e863e715f7ef7ec95c440a5ca4c0344 - vendor.dashboard.vendor_category: 682dfd2d7c6c78fc44e6e161c4b7f3be - vendor.dashboard.vendors_by_assignee: 5bb86b827c40ab9f69c2b26e6d24668d - vendor.dashboard.inherent_risk_description: d9e71f7212a9487e2e2b3509774eff72 - vendor.dashboard.residual_risk_description: f6650c5de31a483d483fd9b36337a963 - vendor.register.title: 0f9930d48eca11656701168f119d050d - vendor.register.table.name: d4700b697a54fbd43a1a613d32694e7f - vendor.register.table.category: 8c6b7f206708b567f49f36edb123c060 - vendor.register.table.status: 87a831bc99060c55b50dbe91c6aab6e9 - vendor.register.table.owner: 79115f7790c58d35dd8ca592f8fc7540 - vendor.category.cloud: c8e2277ecfb1427838c488c217f99466 - vendor.category.infrastructure: cba4f4cee5c6a3e6d8be8da68fa1234e - vendor.category.software_as_a_service: b0ca9e41d61885345eef09f928c9ea58 - vendor.category.finance: c482980d384a9d0e7bc39e1140270870 - vendor.category.marketing: 7cb15e416d62919b1b40298324fbe30b - vendor.category.sales: 02e2b4ea2fa8f1802d2bb66fbdcb7089 - vendor.category.hr: 9508a19d7801e07ee7b7628c31bfdd47 - vendor.category.other: 977a7223997e10d4daa2ce0d309fafc6 - vendor.vendors: 9d0fa032c588081b09041bb15862764a - vendor.form.vendor_details: 1bb4aeaae548a238511f99d518238478 - vendor.form.vendor_name: d4700b697a54fbd43a1a613d32694e7f - vendor.form.vendor_name_placeholder: cd2aa7cd16fb54955e164de2b43b8fb9 - vendor.form.vendor_website: ca09410963c66f80a9bd39bdc8ae95cf - vendor.form.vendor_website_placeholder: e638609e6b476e4afc5c0c5acf5e4a3f - vendor.form.vendor_description: b5a7adde1af5c87d7fd797b6245c2a39 - vendor.form.vendor_description_placeholder: be93ad19bb1bc1ea3d35f4696bb461c2 - vendor.form.vendor_category: 8c6b7f206708b567f49f36edb123c060 - vendor.form.vendor_category_placeholder: ba77a55f2b2d0042a894b0ba568716e6 - vendor.form.vendor_status: 87a831bc99060c55b50dbe91c6aab6e9 - vendor.form.vendor_status_placeholder: 374dfef4c4c0a7491740b2f7331b5406 - vendor.form.create_vendor_success: 63c2cb7f1cfab5fff3da2cebb0ebc830 - vendor.form.create_vendor_error: 2afbd110bb32876e75f4926cee33a773 - vendor.form.update_vendor_success: 45ae9b8988aeb3a9e7c2543023f81a3f - vendor.form.update_vendor_error: 0172d1b03b3209f32668261a5996b8c8 - vendor.form.contacts: ff02db12038f147550c2687ee4d6a5ee - vendor.form.contact_name: bfa04556e3fe0369bdbfb759bcee7306 - vendor.form.contact_email: 7a73b8ac54508f36f1739e45b969b643 - vendor.form.contact_role: 23a3045b1103fc412e8db9090e23bf6d - vendor.form.add_contact: b95a1f3ac003992336e117277d6e3083 - vendor.form.new_contact: d22a6b31fb3b4b6206ff1e3243aa4b3b - vendor.form.min_one_contact_required: 5db2db62acd3124d08688425d17d079f - vendor.empty_states.no_vendors.title: 606073a51edd78da1425c242ddb2f7ed - vendor.empty_states.no_vendors.description: 4067f9154a8581c979ef6b890aea8dd1 - vendor.empty_states.no_results.title: 5bb69fe3b7a4d5220a445c029fb02c19 - vendor.empty_states.no_results.description: 272e8ffa88987801e1ce4df4610db9ea - vendor.empty_states.no_results.description_with_filters: 85a145167c2b86ce831cbed8aa8ad9da - people.title: 5557260365f759ca82cf108b3d8bef8f - people.details.taskProgress: 3cb06e12073d38f3f21997f827281a23 - people.details.tasks: 1c309074b8348cf83eef81c27d4e5e97 - people.details.noTasks: d888c934668143d74bd2b16d4759092d - people.description: 6605f724e235a56bfec58d3e9b4c8848 - people.filters.search: 73644c4eb55d832abf7004b551a68365 - people.filters.role: fc7996777084d85145881ce61b277ada - people.actions.invite: 0377e2862a56907572c6253feb96ac1e - people.actions.clear: 180c6431db153b1503b8623e96c2e710 - people.table.name: d4700b697a54fbd43a1a613d32694e7f - people.table.email: ce8ae9da5b7cd6c3df2929543a9af92d - people.table.department: df393600825b049c6ee18c9980aaf28a - people.table.externalId: 28b88162773d6ffc266f49bf77306459 - people.empty.no_employees.title: f475b60fd85a800c0f74551c13f5468f - people.empty.no_employees.description: 5bbf430992e8ad2f48acf17b3ee47abf - people.empty.no_results.title: 5bb69fe3b7a4d5220a445c029fb02c19 - people.empty.no_results.description: 50e9c7be9c0414116fd2d7dec40bffe3 - people.empty.no_results.description_with_filters: 85a145167c2b86ce831cbed8aa8ad9da - people.invite.title: 0377e2862a56907572c6253feb96ac1e - people.invite.description: 0d1501eb5ca25a88675a1b67505c6371 - people.invite.email.label: e920754fa88b7c38cdd1bcc259bac5d0 - people.invite.email.placeholder: 5a6940a4d212e6c6fd224ae8c9744232 - people.invite.role.label: 19772a94ff8636c21be02e839fbc9a09 - people.invite.role.placeholder: 86c306c23929c264d9fe1637bab1b2eb - people.invite.name.label: d4700b697a54fbd43a1a613d32694e7f - people.invite.name.placeholder: 7fc5abf04fa882ceace7754ec99d70e8 - people.invite.department.label: df393600825b049c6ee18c9980aaf28a - people.invite.department.placeholder: 1a42316ebebde77b62ac6930e67c739f - people.invite.submit: 0377e2862a56907572c6253feb96ac1e - people.invite.success: 83dd88a7224d8a74ca74127613a347a0 - people.invite.error: 4cca4a705d84aa6194c1788cb1b1b5ca - errors.unexpected: 18105319b34e382d1e0ed2e165f4d960 - src/locales/no.ts: - languages.es: b980859f1670214519fd5cd3942dddf8 - languages.fr: 939843e67f5fd5de8870aed96875c98e - languages.no: 64435a0abd1ab6bcf0375f5c918b43b3 - languages.pt: d1fcbbcfff8016c8e8193b1009a2f0c9 - languages.en: 2cf6d7f4e34ede86abc5a7b3091a959d - language.title: c2bd871e40a477404d746ca7b6e5a377 - language.description: fd49b803ed37c59214bb26e2795f1679 - language.placeholder: d44825bb4a3981426357c8b2588a8890 - common.actions.save: fe9e85aad2e6e67bf18e246f33f176b5 - common.actions.edit: 4879221911b456dfa72873487686c9e2 - common.actions.delete: f0142486dccb8d28a5d7af2e5d7ce8ac - common.actions.cancel: edfc4be89515f79e98fcb523d67c0513 - common.actions.clear: 9fa2c728a443e032dfc4309e6e39f536 - common.actions.create: 9f966b16b69b8b0237b0f9ce40009a1a - common.actions.send: 94966d90747b97d1f0f206c98a8b1ac3 - common.actions.return: c6fd448a3b36eb1b223e5aabb5bb5636 - common.actions.success: 12d61cc2eee0a4732e3af043518aa96d - common.actions.error: 37b36affedd2dfffae538585fcd42a8d - common.actions.next: f312b12ad707c26fd9a096e06eafcbcd - common.actions.complete: 2e2224769089d0373b5d63f0a2e67a8d - common.assignee.label: 70df1818e94ce2c3e785396a057e79f1 - common.assignee.placeholder: 2818c8a8601c1ebfcf87489b9ab5fbfd - common.date.pick: ae1fa045065769e1a3315192d477c91b - common.date.due_date: 8f3787566b41a9f94ca8f2fe0deaf4c7 - common.status.open: 231541b4dddf5f3156a391c6a0064f83 - common.status.pending: 8a02ac12947e6ea465c54e580ccd4234 - common.status.closed: c8e65a1761beace0612b3e060723d4f9 - common.status.archived: 4d3c61e248204d279c0cb0ddc28cc1f5 - common.status.compliant: 4a89f1f84dcc4f6200247a826f3ce895 - common.status.non_compliant: 4ad91f27c8831896c11a989c421773e7 - common.status.not_started: 7dbd6504ae0b5c2f8e085eafb34357d7 - common.status.in_progress: 57d6a98183069a501704325d2d4a59e2 - common.status.published: 0b6fd91ab02b565b70b08f08fe5513ff - common.status.needs_review: 624b773af82bf224be675b95e0d3b51e - common.status.draft: abfde03cf0ca2e57e306b6c72a9be650 - common.status.not_assessed: 1354bd740ef68d84a4f275a3b64f01f3 - common.status.assessed: df6410132c5eb02a8f490cc29eaeaca5 - common.status.active: c44e07cffb5cd991f28e866e8854b548 - common.status.inactive: 2aaad1e130dd23b7195ed5235483cef4 - common.filters.clear: 96bd86f3df0455cf1ede53f7a86a84c5 - common.filters.search: 1d052b8f61911e14861c8108d01ef467 - common.filters.status: ec53a8c4f07baed5d8825072c89799be - common.filters.department: 6aa4e6545f4382dacc5dc92afa154494 - common.filters.owner.label: 70df1818e94ce2c3e785396a057e79f1 - common.filters.owner.placeholder: 1bb8d5220eafc054f40609639545d20b - common.table.title: d256d9e23b555adf22ebc4f1422911d0 - common.table.status: ec53a8c4f07baed5d8825072c89799be - common.table.assigned_to: ed55363ce86199141979b80ab29a99a0 - common.table.due_date: 8f3787566b41a9f94ca8f2fe0deaf4c7 - common.table.last_updated: c7ae112fec49ffb145e6e5f0bdf3c3dc - common.table.no_results: 3c22fe33782fde4bb60715cfba3c18b5 - common.empty_states.no_results.title: 092c6f9e6516d410a4a803c3b40ed2a7 - common.empty_states.no_results.title_tasks: 39282d48f4e245630e8357faae99f7af - common.empty_states.no_results.title_risks: f4c8ffefa5c604168cd50486f2294ccd - common.empty_states.no_results.description: ec15e4042d993eed15217582b8b15b59 - common.empty_states.no_results.description_filters: ec15e4042d993eed15217582b8b15b59 - common.empty_states.no_results.description_no_tasks: 2752c7e502096fa14ff15d91c004fa53 - common.empty_states.no_results.description_no_risks: 69f58dd05fc7f78c2db9b5648aaa04a6 - common.empty_states.no_items.title: 829c44ea1f4926b6280cdccfa1edcaf1 - common.empty_states.no_items.description: f33f76a576d7c4a119eaeb384d8a0d77 - common.pagination.of: aac1259dfa2c6c5ead508f34e52bb990 - common.pagination.items_per_page: fd2c5210bc13e223cf6e4968e9653a22 - common.pagination.rows_per_page: 22a4a8d4bc06c6fd33c6d0f08f92720b - common.pagination.page_x_of_y: 8a80659d9d29a1d270641c3126405d35 - common.pagination.go_to_first_page: a6e20c58c5ebfd5dbed360b89ab772c0 - common.pagination.go_to_previous_page: f807b7c2b7e92c3741acf485a0efd5c8 - common.pagination.go_to_next_page: 41ff0bea252d9e270286e5caf9a03e96 - common.pagination.go_to_last_page: d49bca86843bc91676b14f6308c5370d - common.comments.title: 10c77cffbed1efe93c1c2d687ce12bb0 - common.comments.description: 6a590fdafd73add34acc58795207f30b - common.comments.add: 01121e35f9097773e7d599beeaf25dc8 - common.comments.new: 009ff67e816ac63d9859c8dfd0a42dd7 - common.comments.save: 4a8944cf4b5f8acecd8b793a99003cc1 - common.comments.success: 564affe04f0e91c941bc210f8207287d - common.comments.error: a2f7f10d50f1610fe99206bf97e8a086 - common.comments.placeholder: 95313c918ac9d75cbc8aad4391c747d8 - common.comments.empty.title: 7eb83860456820b0d27e53d10611dbcf - common.comments.empty.description: 1b02f2c160cf04905bced30cfbc059e3 - common.attachments.title: 302a01ac24f797a7597958a1f8ef4a58 - common.attachments.description: dfee743b01ed29b11e99aa8ce167daa0 - common.attachments.upload: 4d283866e4b09dcf9f7b09edd83b4f6d - common.attachments.upload_description: 34fde22ac10a23a279f37648f054f880 - common.attachments.drop: deca645c2d8fede398c7ea76e02699a4 - common.attachments.drop_description: 0e487657dd2fb7af4c2ed75dc568f421 - common.attachments.drop_files_description: d81e09c3dbe2038a49a7fa9f490bfb8a - common.attachments.empty.title: aefbdf351f88810d21c45733816fa2f9 - common.attachments.empty.description: dfee743b01ed29b11e99aa8ce167daa0 - common.attachments.toasts.error: 9883526e2173eaf1752a19d871ced330 - common.attachments.toasts.error_uploading_files: e07d19a54dbf46ec69179d7a9ee15619 - common.attachments.toasts.error_uploading_files_multiple: 1c07b9eac911fda3d80ff8b5defa7a56 - common.attachments.toasts.error_no_files_selected: e5c72f3febc70185afa2c123146c9558 - common.attachments.toasts.error_file_rejected: 360c5764530fb55d93648676aec146dc - common.attachments.toasts.error_failed_to_upload_files: d5d5614ccb37530707f7796029a457c8 - common.attachments.toasts.error_failed_to_upload_files_multiple: d5d5614ccb37530707f7796029a457c8 - common.attachments.toasts.error_failed_to_upload_files_single: 183389aa5a0bc48118b3a0e9b595da16 - common.attachments.toasts.success_uploading_files: d453995a3e3a88f4ddc98fb6c5b9d725 - common.attachments.toasts.success_uploading_files_multiple: d453995a3e3a88f4ddc98fb6c5b9d725 - common.attachments.toasts.success_uploading_files_single: 817db6fd2165189934af18b077c9da29 - common.attachments.toasts.success_uploading_files_target: d453995a3e3a88f4ddc98fb6c5b9d725 - common.attachments.toasts.uploading_files: 6734dda6fa7cef8cc1dd0a9bab57879f - common.attachments.toasts.remove_file: f5bdd59d552b6313d06416df199e4790 - header.discord.button: eca90714006c502f796e70f1f40d2f0f - header.feedback.button: e10032b5be380e387e9ba747850fbefd - header.feedback.title: 5207d2e0d8ad08de13c3565be04b70db - header.feedback.description: 5dc84642f3ced692d500e37cb3eb663a - header.feedback.placeholder: 8f6978e80b4e64fba36ab0a677f052b7 - header.feedback.success: 5207d2e0d8ad08de13c3565be04b70db - header.feedback.error: 33d6eadd01633cf0ecea7ba3d257bc20 - header.feedback.send: 7c0b657754697e4aaeda7832df9ce445 - not_found.title: 56dfbbed261a89fc7959b1f5a10d73dc - not_found.description: 90241036bbe7b7e262aa2aad45d90594 - not_found.return: 570c33e07d133b138852af03003eab2b - theme.options.light: 84e8b4db17288b8890eccfba74b1d534 - theme.options.dark: 89ba50ed6483d8cc8069772e4c5b3a6f - theme.options.system: a45da96d0bf6575970f2d27af22be28a - sidebar.overview: a0d7e99227de0ca1ed7eba299cbb329c - sidebar.policies: b012eceb18ce860363f3813a33b90b48 - sidebar.risk: 33d37f9288ad443f3861e5ce991f23f1 - sidebar.vendors: 512e556ddabdc392de3bcf7b41373efd - sidebar.integrations: 5a68d939af838db8152ed6d9578aa26d - sidebar.settings: c049758877fff5326b89af831719c191 - sidebar.evidence: 905fbb72b445394a3e752b6ddd1a2c23 - sidebar.people: 57e876a07af4ab8a4ebcf862d4dd5a27 - auth.title: b6ec3d7a6754a230e89a097b3d1c2297 - auth.description: 7afbd5d2815f3bbabf2df979be6c3424 - auth.options: eadbdc1841301752c51cbd7036d50909 - auth.google: 342ef2110ceb391b7127aa75a5674c67 - auth.email.description: 207024b504448f08ee7b62f4195e7388 - auth.email.placeholder: ab3db257d633aad4d9159503c7cdbdad - auth.email.button: a9cbcaa90120f7c1fc292458cc25a9cb - auth.email.magic_link_sent: 312827cd0632a2198d4a88c0e748f8bd - auth.email.magic_link_description: e6e6152a4b28928195127abadf7ccead - auth.email.magic_link_try_again: d5f5800d65f156529584a0f4f2d67183 - auth.email.success: 43c1db17bc1dbd285f07315a1d00a7d2 - auth.email.error: 1f7e05f0deb084ffc6cc9c32057e37ae - auth.terms: 16581f4c1316b9d3fd9a11a6cede8ef2 - onboarding.title: 807c42791de59302a9b622605f01373f - onboarding.setup: 9b456b22410183503e1725e6dc10e1a0 - onboarding.description: 95365ed8cdb94af34d488efff80294ad - onboarding.fields.name.label: ad98ea7d155525c139fd76ee8449f241 - onboarding.fields.name.placeholder: 85e1c7bc60f7713d031144033d44a8fe - onboarding.fields.website.label: e94da4372d39f6cd24a3bd48330172aa - onboarding.fields.website.placeholder: 7f6652f3495ed883f844102075807d85 - onboarding.fields.subdomain.label: 2be9ecfaa5dcafdb580023c7eb47068c - onboarding.fields.subdomain.placeholder: ada0af40e7425494e070e7024ad987d3 - onboarding.success: 6302ce973c31767ec3960672d19980f0 - onboarding.error: 9883526e2173eaf1752a19d871ced330 - onboarding.unavailable: c345109963764f6a095dd5ca242686f4 - overview.title: a0d7e99227de0ca1ed7eba299cbb329c - overview.framework_chart.title: a982893125a0818af19d3d3e02d6a5ba - overview.requirement_chart.title: 8c0cc6e516853b1d41b278d894255486 - policies.dashboard.title: 5967ab15ec405a77b8db5dcdb885d6c6 - policies.dashboard.all: 9f02efc5bbf283daeeedc9d41d434dba - policies.dashboard.policy_status: a2aa64d6afb64400381c70945935c8e6 - policies.dashboard.policies_by_assignee: 60e1dfe04babd956d8f0ada98ea8d821 - policies.dashboard.policies_by_framework: f4061b1feec3ead2742463ae97a430f1 - policies.table.name: b3b7e66ba2a94dc62e75e956e6f09f3c - policies.table.statuses.draft: abfde03cf0ca2e57e306b6c72a9be650 - policies.table.statuses.published: 0b6fd91ab02b565b70b08f08fe5513ff - policies.table.filters.owner.label: 70df1818e94ce2c3e785396a057e79f1 - policies.table.filters.owner.placeholder: 1bb8d5220eafc054f40609639545d20b - policies.filters.search: 34b19a0e3864bda69bb63176ba8891bd - policies.filters.all: 9f02efc5bbf283daeeedc9d41d434dba - policies.status.draft: abfde03cf0ca2e57e306b6c72a9be650 - policies.status.published: 0b6fd91ab02b565b70b08f08fe5513ff - policies.status.needs_review: 03b0c7909be559aa6fe26cdc0d39ed80 - policies.policies: 9c26d93d3f140ca69a3cef63e72916b3 - evidence_tasks.evidence_tasks: 905fbb72b445394a3e752b6ddd1a2c23 - evidence_tasks.overview: a0d7e99227de0ca1ed7eba299cbb329c - risk.risks: 7ad52774933cd98cab80a32956a2004d - risk.overview: a0d7e99227de0ca1ed7eba299cbb329c - risk.create: 25bf0fff8c9a046dc7399522def19630 - risk.vendor.title: b9a2b4aa2cf65b26cd6ae81c13510609 - risk.vendor.dashboard.title: b9fc9d911bf90c2edcc10f615dad432d - risk.vendor.dashboard.overview: 6dd1c0ce1dc8cd66be5b885c4ae31350 - risk.vendor.dashboard.vendor_status: 2a4d7e041e4848f784a1fb71b4956388 - risk.vendor.dashboard.vendor_category: b14cf27d5255aeba0337de69bd06dbe2 - risk.vendor.dashboard.vendors_by_assignee: ad9ca4e599f9624d738a849288c5c902 - risk.vendor.dashboard.inherent_risk_description: 45abc445f611bd3718c356b59f160c0e - risk.vendor.dashboard.residual_risk_description: df00319a2f508cd6fb3d631585b705ee - risk.vendor.register.title: 12fbcb22d19496fc82e821711db878fd - risk.vendor.register.table.name: 3ffcaf33f0c7f7a222bdff749d3d48a4 - risk.vendor.register.table.category: 21a0269431d5e6ba1eebf25827cadeba - risk.vendor.register.table.status: ec53a8c4f07baed5d8825072c89799be - risk.vendor.register.table.owner: 087deef1a4032da761fa539a6dab8435 - risk.vendor.assessment.title: c68280e303c3c84fcfbbcde1c0772dd9 - risk.vendor.assessment.update_success: 4c8b118e3f8a3ead1897233e504d7d2c - risk.vendor.assessment.update_error: 4f7d9289eef697c1bf4e4ba92e754a79 - risk.vendor.assessment.inherent_risk: ebeb800cea23f9bdb9351397f255471a - risk.vendor.assessment.residual_risk: fca8b654cd31477d05212b045f810d31 - risk.vendor.form.vendor_details: 7975806fd497b6a6fe1a82beca89b540 - risk.vendor.form.vendor_name: 3ffcaf33f0c7f7a222bdff749d3d48a4 - risk.vendor.form.vendor_name_placeholder: 8bec3408fe198dea51a31316cb386896 - risk.vendor.form.vendor_website: e94da4372d39f6cd24a3bd48330172aa - risk.vendor.form.vendor_website_placeholder: d411635d010c8782a5e9e0c7abd1870a - risk.vendor.form.vendor_description: 59869029490390f1fc4943085f8e08bb - risk.vendor.form.vendor_description_placeholder: 3178d56056e36d3013963c3110a4b86d - risk.vendor.form.vendor_category: 21a0269431d5e6ba1eebf25827cadeba - risk.vendor.form.vendor_category_placeholder: a87a4179a6dccc6d36b5ae0fb3b89c09 - risk.vendor.form.vendor_status: ec53a8c4f07baed5d8825072c89799be - risk.vendor.form.vendor_status_placeholder: 72ce53e5caf4c43fba49352b71378968 - risk.vendor.form.create_vendor_success: df6e4b976bdafb8bb510ea5bfca35e82 - risk.vendor.form.create_vendor_error: 28eb3c7da59123eb74980cfc5a51b108 - risk.vendor.form.update_vendor: ea05096345cc5439bdb51047b7dff5a6 - risk.vendor.form.update_vendor_success: de1cbdb65ca00cc0a0c1dc228a572f0e - risk.vendor.form.update_vendor_error: 32573ca330db2ace4eb6e4f176443714 - risk.vendor.form.add_comment: 9bcbc9d0a1d75326277586befe6e5a3f - risk.vendor.table.name: 3ffcaf33f0c7f7a222bdff749d3d48a4 - risk.vendor.table.category: 21a0269431d5e6ba1eebf25827cadeba - risk.vendor.table.status: ec53a8c4f07baed5d8825072c89799be - risk.vendor.table.owner: 087deef1a4032da761fa539a6dab8435 - risk.vendor.filters.search_placeholder: 7b85b08f9623e98d31c5a094de46eb03 - risk.vendor.filters.status_placeholder: 35d51f02278f103015a5264d39b44980 - risk.vendor.filters.category_placeholder: 404144333eb5fedd33f9243554fb1b67 - risk.vendor.filters.owner_placeholder: 31bfe5fb16b482977a1b0689fa36128f - risk.vendor.empty_states.no_vendors.title: e8a9538b069b592bda0f6c405123e6c2 - risk.vendor.empty_states.no_vendors.description: 6e69538c9cda2e6d2badf016b9d55885 - risk.vendor.empty_states.no_results.title: 3c22fe33782fde4bb60715cfba3c18b5 - risk.vendor.empty_states.no_results.description: a72b67b1eda315e9ba64841737db162f - risk.vendor.empty_states.no_results.description_with_filters: 6675ce8f4b11d67226042fd01dcee422 - risk.vendor.actions.create: 84a73ff941e3416297f07171c5bf530d - risk.vendor.status.not_assessed: 444dfd899cc9fbfdf0158b61e3fd31ae - risk.vendor.status.in_progress: 99ac75396490fa878f622e311f7a1d11 - risk.vendor.status.assessed: df6410132c5eb02a8f490cc29eaeaca5 - risk.vendor.category.cloud: 03462a41aec357b74c89eb8d272532f7 - risk.vendor.category.infrastructure: 555b6edf52d9fda65d141d7bba972f45 - risk.vendor.category.software_as_a_service: 84fde0bec68d395cf70da59e4c45cd00 - risk.vendor.category.finance: 5999a773cd1e8f482778926f4666f152 - risk.vendor.category.marketing: 913ca6cf2b6df9a4dd2bdff7bfbde3b4 - risk.vendor.category.sales: 9c04f49a10b7f08fd66c28ef73ce6293 - risk.vendor.category.hr: fd4c638da5f85d025963f99fe90b1b1a - risk.vendor.category.other: ec56ec1646b8b5163ea5455385d6c016 - risk.vendor.risk_level.low: 5b19c2e26db7f72ab6079aea9f9d216a - risk.vendor.risk_level.medium: d8c994d8fa7ee584e8f4fc017d56f5b5 - risk.vendor.risk_level.high: d778a39f67247b3782739849fc70078b - risk.vendor.risk_level.unknown: c968a8e299ba16db050ecafc7518384c - risk.dashboard.title: 5967ab15ec405a77b8db5dcdb885d6c6 - risk.dashboard.overview: c6b910bd1da16aa119d9371f43d5c5de - risk.dashboard.risk_status: cc668db25736d5f07de2e8905167e873 - risk.dashboard.risks_by_department: acfcacbdb05fd0e6ca58916bdf8f41f0 - risk.dashboard.risks_by_assignee: 87a5c70685dea39094b83082e2585887 - risk.dashboard.inherent_risk_description: f3d3dffa59354153dce56ff83b48939a - risk.dashboard.residual_risk_description: 6d09af7428c85094c3e98b910ed3b655 - risk.dashboard.risk_assessment_description: b09917a6480e6e8f023fa08f26c313c1 - risk.register.title: 852e03af9adf456a284af6fb605e1fd6 - risk.register.table.risk: 33d37f9288ad443f3861e5ce991f23f1 - risk.register.empty.no_risks.title: 69f58dd05fc7f78c2db9b5648aaa04a6 - risk.register.empty.no_risks.description: 0e6f54b2eaf2782f1540587be785a261 - risk.register.empty.create_risk: 7f5a9aae7bb10b20c7c452538144d6d0 - risk.metrics.probability: 82b9c969f45e983725f58f2738efed1f - risk.metrics.impact: fb5af28f02b70e35f56126da295ff956 - risk.metrics.inherentRisk: 7b6224c6f170f3317c31453ffb0b2687 - risk.metrics.residualRisk: 89b09d808513840bdad57114b82c9e83 - risk.form.update_inherent_risk: b0d99b156ee80ca5890d56bc2b46da32 - risk.form.update_inherent_risk_description: 5d93c2d955cc5538be98319d6aab08cb - risk.form.update_inherent_risk_success: 99798521b546f029efc82b581c37ab50 - risk.form.update_inherent_risk_error: c535e2d625b7ff39da544e54fa16cec8 - risk.form.update_residual_risk: 2e1cd6be7671ad8ea4c3a4975ba2f3f7 - risk.form.update_residual_risk_description: 2b7721040569e6a85050eae0a2130728 - risk.form.update_residual_risk_success: deea9345ed9058774d5b94e891b4a460 - risk.form.update_residual_risk_error: 128e8230b5915be48ee2025a59b6d704 - risk.form.update_risk: b03a8bb3efc718e4e85bf7fc843f8951 - risk.form.update_risk_description: a71071ec63e5f68387535e800568d008 - risk.form.update_risk_success: d7d4d38b82644dc9092c0846b6e5b9ce - risk.form.update_risk_error: 5e022203fa27addde9c0d126f3aa50ca - risk.form.create_risk_success: 67dd75a055ba3ea196ffac0216f1e0eb - risk.form.create_risk_error: 6c5284d17c8e50860f5c9e63312aaa23 - risk.form.risk_details: 67e029f15edaea66fbc83d344e7bfebe - risk.form.risk_title: 2a6820651706cf5fbb406d1ac6c3fc87 - risk.form.risk_title_description: b2e8fe1fee5adb1e27cac79fef44a5d2 - risk.form.risk_description: 59869029490390f1fc4943085f8e08bb - risk.form.risk_description_description: 2dec2c48afdfc3baa26ebacdb564f3f5 - risk.form.risk_category: 21a0269431d5e6ba1eebf25827cadeba - risk.form.risk_category_placeholder: 94ace2a9e405df2178c6936d8cbfde80 - risk.form.risk_department: 6aa4e6545f4382dacc5dc92afa154494 - risk.form.risk_department_placeholder: f17b6366c86ebceb7c12b4f81a2417f3 - risk.form.risk_status: cc668db25736d5f07de2e8905167e873 - risk.form.risk_status_placeholder: b7566c9295e0cb655e290213238ac0fa - risk.tasks.title: 11f2d40053448dfc357a23fada3d2130 - risk.tasks.attachments: 302a01ac24f797a7597958a1f8ef4a58 - risk.tasks.overview: d45e699e336e33398934eb23ae44b7c0 - risk.tasks.form.title: d532d940b70df86fa502b5d2c61bfc9b - risk.tasks.form.task_title: fba51f3e94e6458c96d35ca036d24b6e - risk.tasks.form.status: a09877d1ca9d81884641a41392505bdb - risk.tasks.form.status_placeholder: a8de2d77b56de6df29926e3fcd6e2c04 - risk.tasks.form.task_title_description: 699f09812cd95c3bd5554fe97bcd3be3 - risk.tasks.form.description: 59869029490390f1fc4943085f8e08bb - risk.tasks.form.description_description: 51523980d67910f35bc242dc9a150eab - risk.tasks.form.due_date: 8f3787566b41a9f94ca8f2fe0deaf4c7 - risk.tasks.form.due_date_description: 28b58558d733ef7e34a778662acd5ba8 - risk.tasks.form.success: 2be9cf9fe0b95a001f56f1d43d24519f - risk.tasks.form.error: a3db672d6e4f09620076b714d34cb989 - risk.tasks.sheet.title: 7bc38b246dfbc678df009ec511a37a7f - risk.tasks.sheet.update: 8fab9b71f562163e6d8183ebf9475230 - risk.tasks.sheet.update_description: 52c43fc3885953a8227f554bd826b345 - risk.tasks.empty.description_create: 3bedf7b927e56cf72bcec34b9f45d29a - settings.general.title: a3f43d574940dccc8643842769e48fd4 - settings.general.org_name: ad98ea7d155525c139fd76ee8449f241 - settings.general.org_name_description: f816e289306aead6e86f11ce20df123b - settings.general.org_name_tip: d67ab36fb0cb52a2c0ec8d18ccab83e3 - settings.general.org_website: 2afa3b90ad5edb80e331a01312bf2f71 - settings.general.org_website_description: 9e13af26c62c865e9e2060363684617c - settings.general.org_website_tip: 003f6177401607c0a97fbe4df22e53ff - settings.general.org_website_error: 9df88c469148c58d613481074d803ec6 - settings.general.org_website_updated: bba518754e4ac5379b8df2d460866a63 - settings.general.org_delete: eefaac2f1d2c89aa35586f30fdfea891 - settings.general.org_delete_description: 421c9ce555e53bb5901f236ef85566fc - settings.general.org_delete_alert_title: 170543bdda8321f62b9b238b09fb4bb7 - settings.general.org_delete_alert_description: b54aa40ee6730901940d7a483b32dad4 - settings.general.org_delete_error: ee2fc465207ed530bcad83a9adc0c553 - settings.general.org_delete_success: 60ba3663293e8692f2f33bf3f38fd794 - settings.general.org_name_updated: d577a4798e824ac332a68283a772aa18 - settings.general.org_name_error: e6ba5043b2677d49a80ff3d4258ecee5 - settings.general.save_button: fe9e85aad2e6e67bf18e246f33f176b5 - settings.general.delete_button: f0142486dccb8d28a5d7af2e5d7ce8ac - settings.general.delete_confirm: f62caac35c3c729d6eca06b96a403fab - settings.general.delete_confirm_tip: 2289b8c7b1fb404b5e41f87462254980 - settings.general.cancel_button: edfc4be89515f79e98fcb523d67c0513 - settings.members.title: c1ced8b91fbd958c70c0b7d119f81c29 - settings.billing.title: 809c896e05a39d3b9df97b6e5d66ffa7 - user_menu.theme: f055088fba41cb53e3806e55a9f6896e - user_menu.language: c2bd871e40a477404d746ca7b6e5a377 - user_menu.sign_out: eca541d61ed771af71e52c39f00907f0 - user_menu.account: 8ef1b2ce0360df8af6e52bfdab6e6e9e - user_menu.support: 895cc6b3d812c01b304d5dd06a2be816 - user_menu.settings: c049758877fff5326b89af831719c191 - user_menu.teams: ac848fa228f49ba2b8a5fbd76596817d - frameworks.title: 21e683e741607c45ef400c7dbf6e8798 - frameworks.controls.title: 2ca21079513381553a995babdfef91bf - frameworks.controls.description: 1b4bffb0093416c8a6477e1f666f6a63 - frameworks.controls.table.status: ec53a8c4f07baed5d8825072c89799be - frameworks.controls.table.control: ec25fac07d54a790dc31af1f6b77045e - frameworks.controls.table.artifacts: 4940c8f25276c5117930e1f6cbac1a9b - frameworks.controls.table.actions: 96d4ad2ff651e9bb4ff2408afe0a123f - frameworks.controls.statuses.not_started: 7dbd6504ae0b5c2f8e085eafb34357d7 - frameworks.controls.statuses.compliant: 6794126adda846768777e380f3261fb8 - frameworks.controls.statuses.non_compliant: d4ec60b0fb306838ce1935d2383aadf9 - vendor.title: 5967ab15ec405a77b8db5dcdb885d6c6 - vendor.register_title: b9a2b4aa2cf65b26cd6ae81c13510609 - vendor.dashboard.title: 5967ab15ec405a77b8db5dcdb885d6c6 - vendor.dashboard.overview: 6dd1c0ce1dc8cd66be5b885c4ae31350 - vendor.dashboard.vendor_status: 2a4d7e041e4848f784a1fb71b4956388 - vendor.dashboard.vendor_category: b14cf27d5255aeba0337de69bd06dbe2 - vendor.dashboard.vendors_by_assignee: ad9ca4e599f9624d738a849288c5c902 - vendor.dashboard.inherent_risk_description: 45abc445f611bd3718c356b59f160c0e - vendor.dashboard.residual_risk_description: df00319a2f508cd6fb3d631585b705ee - vendor.register.title: 12fbcb22d19496fc82e821711db878fd - vendor.register.table.name: 3ffcaf33f0c7f7a222bdff749d3d48a4 - vendor.register.table.category: 21a0269431d5e6ba1eebf25827cadeba - vendor.register.table.status: ec53a8c4f07baed5d8825072c89799be - vendor.register.table.owner: 087deef1a4032da761fa539a6dab8435 - vendor.category.cloud: 03462a41aec357b74c89eb8d272532f7 - vendor.category.infrastructure: 555b6edf52d9fda65d141d7bba972f45 - vendor.category.software_as_a_service: b0ca9e41d61885345eef09f928c9ea58 - vendor.category.finance: 5999a773cd1e8f482778926f4666f152 - vendor.category.marketing: 913ca6cf2b6df9a4dd2bdff7bfbde3b4 - vendor.category.sales: 9c04f49a10b7f08fd66c28ef73ce6293 - vendor.category.hr: fd4c638da5f85d025963f99fe90b1b1a - vendor.category.other: ec56ec1646b8b5163ea5455385d6c016 - vendor.vendors: 11c109b95b4f159cf3e4cf767435f6d7 - vendor.form.vendor_details: 7975806fd497b6a6fe1a82beca89b540 - vendor.form.vendor_name: 3ffcaf33f0c7f7a222bdff749d3d48a4 - vendor.form.vendor_name_placeholder: 8bec3408fe198dea51a31316cb386896 - vendor.form.vendor_website: e94da4372d39f6cd24a3bd48330172aa - vendor.form.vendor_website_placeholder: d411635d010c8782a5e9e0c7abd1870a - vendor.form.vendor_description: 59869029490390f1fc4943085f8e08bb - vendor.form.vendor_description_placeholder: 3178d56056e36d3013963c3110a4b86d - vendor.form.vendor_category: 21a0269431d5e6ba1eebf25827cadeba - vendor.form.vendor_category_placeholder: a87a4179a6dccc6d36b5ae0fb3b89c09 - vendor.form.vendor_status: ec53a8c4f07baed5d8825072c89799be - vendor.form.vendor_status_placeholder: 72ce53e5caf4c43fba49352b71378968 - vendor.form.create_vendor_success: 71b14513b7176035227d3faef318cb44 - vendor.form.create_vendor_error: 923686330ce1ef7c1c5592ce43d69a30 - vendor.form.update_vendor_success: de1cbdb65ca00cc0a0c1dc228a572f0e - vendor.form.update_vendor_error: 32573ca330db2ace4eb6e4f176443714 - vendor.form.contacts: b6303e3ce1e97c541b2a8c87f67e9102 - vendor.form.contact_name: 576e829681f05a3ae8e7305f1ab85144 - vendor.form.contact_email: 622881fa45db8af48bdaa6168fdcf799 - vendor.form.contact_role: 1eabc34be8786645573ce7dd7803d885 - vendor.form.add_contact: 156ee98c09a38359c14640316eac062f - vendor.form.new_contact: cb18c05c7a9f9ae944a7c0da2dbba5be - vendor.form.min_one_contact_required: d27f3482238aeb9af604a346b901e416 - vendor.empty_states.no_vendors.title: e8a9538b069b592bda0f6c405123e6c2 - vendor.empty_states.no_vendors.description: 6e69538c9cda2e6d2badf016b9d55885 - vendor.empty_states.no_results.title: 3c22fe33782fde4bb60715cfba3c18b5 - vendor.empty_states.no_results.description: 1e9b36605d59f796996b61f3311f91c9 - vendor.empty_states.no_results.description_with_filters: 6675ce8f4b11d67226042fd01dcee422 - people.title: 57e876a07af4ab8a4ebcf862d4dd5a27 - people.details.taskProgress: 997fd2d3bb0f6f02d416828712f0a2ec - people.details.tasks: 11f2d40053448dfc357a23fada3d2130 - people.details.noTasks: 4c9f41882ac15524da29d87d298d96de - people.description: 2eba0390b6febbaee197811e6b7db571 - people.filters.search: 36655c069b2b9fe980b7653017979bb5 - people.filters.role: a92d3c0b5f9d41b68c2671a528e00c66 - people.actions.invite: 37c4a5450b50726eee1d78a367c993a0 - people.actions.clear: 6042d93be36dfd7c3de692d0dfd93848 - people.table.name: 3ffcaf33f0c7f7a222bdff749d3d48a4 - people.table.email: 3d4125cf83f671c7e93e7ad2fabc73f3 - people.table.department: 6aa4e6545f4382dacc5dc92afa154494 - people.table.externalId: 44c32c6817870f12f7ee46612ebc9c2e - people.empty.no_employees.title: 8a4eec0bee427d3110e1b5771bf029ee - people.empty.no_employees.description: 019f8a12ee03ca63b2dae49b4e6062fa - people.empty.no_results.title: 3c22fe33782fde4bb60715cfba3c18b5 - people.empty.no_results.description: db933a220e91b4066964552244bf3f1f - people.empty.no_results.description_with_filters: 6675ce8f4b11d67226042fd01dcee422 - people.invite.title: 37c4a5450b50726eee1d78a367c993a0 - people.invite.description: 5ba68a4bab6f11aad27335338838b80d - people.invite.email.label: 38c5197eaa551733bd6493ec960d2d0b - people.invite.email.placeholder: ab3db257d633aad4d9159503c7cdbdad - people.invite.role.label: e897f3e6021c38043df9faf67a822f9d - people.invite.role.placeholder: 3db326bf79052f7a39167f76fea6eb74 - people.invite.name.label: 3ffcaf33f0c7f7a222bdff749d3d48a4 - people.invite.name.placeholder: e74fefb3e8bdb0a991064f1a85160480 - people.invite.department.label: 6aa4e6545f4382dacc5dc92afa154494 - people.invite.department.placeholder: f17b6366c86ebceb7c12b4f81a2417f3 - people.invite.submit: 37c4a5450b50726eee1d78a367c993a0 - people.invite.success: 935b6980e030df518e8197b96f087ca1 - people.invite.error: ceb8416eedbe080470864058cd64b494 - errors.unexpected: 2a8556e4045893123086934cbcc5487b + evidence.overview: 376eeb70e956ecef2611d88a28269c5b + evidence.edit: 25f314af9636c15fee70586fda83e696 + evidence.dashboard.layout: 2938c7f7e560ed972f8a4f68e80ff834 + evidence.dashboard.layout_back_button: 0557fa923dcee4d0f86b1409f5c2167f + evidence.dashboard.title: 7d19de8ddf0362f6be1af76f0c02b0ad + evidence.dashboard.by_department: 553fa2baad73c2ec6b8d971c56a9a7d7 + evidence.dashboard.by_assignee: e2653e1b505990acb762b672b67225ec + evidence.dashboard.by_framework: fc4ded0c76857f808b406cf1f3a3f004 + evidence.items: 691d502cfd0e0626cd3b058e5682ad1c + evidence.status.up_to_date: e519a1ecd0afa6828cea3c07f7d09b4a + evidence.status.needs_review: 994f197b212a0f4dc844cc3534e889c2 + evidence.status.draft: f03ab16cd58372c77ba45a3d9a5a1cb9 + evidence.status.empty: ce2c8aed9c2fa0cfbed56cbda4d8bf07 + evidence.departments.none: 0d015d96f63a8c12d96b8399482b593f + evidence.departments.admin: 7258e7251413465e0a3eb58094430bde + evidence.departments.gov: 5a935787d6f091fc760443ab4c491465 + evidence.departments.hr: d19092ef5301d9548911f87a817f8c44 + evidence.departments.it: 73595e157019f972a82f2fea61332a73 + evidence.departments.itsm: 1856585762a862d699c7538b61d6fa8b + evidence.departments.qms: 3b88c0772d938028236e5098c096b2d5 + evidence.details.review_section: 659514b42799e5982d28793d9e003ae3 + evidence.details.content: 393ae95538cd395eb8d1f7521f652b10 diff --git a/apps/app/package.json b/apps/app/package.json index 1a74d9c295..57e439a843 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -6,7 +6,7 @@ "dev": "NODE_OPTIONS='--inspect' next dev --turbopack --turbo -p 3001", "build": "next build", "start": "next start", - "lint": "next lint", + "lint": "biome lint ./src", "clean-react": "rm -rf node_modules/react; rm -rf node_modules/react-dom" }, "dependencies": { @@ -96,4 +96,4 @@ "@types/react": "19.0.10", "@types/react-dom": "19.0.4" } -} \ No newline at end of file +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/EvidenceDetails.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/EvidenceDetails.tsx deleted file mode 100644 index 7d03350b8c..0000000000 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/EvidenceDetails.tsx +++ /dev/null @@ -1,151 +0,0 @@ -"use client"; - -import { Button } from "@bubba/ui/button"; -import { Card, CardContent, CardHeader } from "@bubba/ui/card"; -import { Skeleton } from "@bubba/ui/skeleton"; -import { ArrowLeft, CheckCircle2, XCircle } from "lucide-react"; -import { useAction } from "next-safe-action/hooks"; -import { useRouter } from "next/navigation"; -import { useEffect } from "react"; -import { toast } from "sonner"; -import { publishEvidence } from "../Actions/publishEvidence"; -import { useOrganizationEvidence } from "../hooks/useOrganizationEvidence"; -import type { EvidenceDetailsProps } from "../types"; -import { FileSection } from "./FileSection"; -import { ReviewSection } from "./ReviewSection"; -import { UrlSection } from "./UrlSection"; - -export function EvidenceDetails({ id }: EvidenceDetailsProps) { - const router = useRouter(); - const { data, isLoading, error, mutate } = useOrganizationEvidence({ id }); - - const { execute: publishAction, isExecuting } = useAction(publishEvidence, { - onSuccess: () => { - toast.success("Evidence published successfully"); - handleMutate(); - }, - onError: () => { - toast.error("Failed to publish evidence, please try again."); - }, - }); - - useEffect(() => { - if (error) { - router.push("/evidence"); - } - }, [error, router]); - - const handleMutate = async () => { - await mutate(); - }; - - if (isLoading) { - return ( -
-
-
- - -
- -
- - - - - - - - - -
- ); - } - - if (!data?.data) return null; - - const evidence = data.data; - - return ( -
-
-
- -

{evidence.name}

-
-
-
- {evidence.published ? ( - <> - - Published - - ) : ( - <> - - Draft - - )} -
- {!evidence.published && ( - - )} -
-
- - {evidence.isNotRelevant && ( -
- This evidence has been marked as not relevant and will not be included - in compliance reports. -
- )} - - - - - -
{evidence.evidence.name}
-
- - {evidence.description && ( -

{evidence.description}

- )} - - - - -
-
-
- ); -} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/assignEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/assignEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/assignEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/assignEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/deleteEvidenceFile.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/deleteEvidenceFile.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/deleteEvidenceFile.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/deleteEvidenceFile.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/getEvidenceFileUrl.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/getEvidenceFileUrl.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/getEvidenceFileUrl.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/getEvidenceFileUrl.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/publishEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/publishEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/publishEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/publishEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/toggleRelevance.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/toggleRelevance.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/toggleRelevance.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/toggleRelevance.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/updateEvidenceDepartment.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/updateEvidenceDepartment.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/updateEvidenceDepartment.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/updateEvidenceDepartment.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/updateEvidenceFrequency.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/updateEvidenceFrequency.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/updateEvidenceFrequency.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/updateEvidenceFrequency.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/updateEvidenceUrls.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/updateEvidenceUrls.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/updateEvidenceUrls.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/updateEvidenceUrls.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/uploadEvidenceFile.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/uploadEvidenceFile.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Actions/uploadEvidenceFile.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/actions/uploadEvidenceFile.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/AssigneeSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/AssigneeSection.tsx similarity index 97% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/AssigneeSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/AssigneeSection.tsx index 567eb0f821..b83f66ddba 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/AssigneeSection.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/AssigneeSection.tsx @@ -11,7 +11,7 @@ import { import { Avatar, AvatarFallback, AvatarImage } from "@bubba/ui/avatar"; import { useAction } from "next-safe-action/hooks"; import { toast } from "sonner"; -import { assignEvidence } from "../Actions/assignEvidence"; +import { assignEvidence } from "../actions/assignEvidence"; import { useOrganizationAdmins } from "../hooks/useOrganizationAdmins"; import type { Admin } from "../hooks/useOrganizationAdmins"; @@ -27,7 +27,7 @@ export function AssigneeSection({ onSuccess, }: AssigneeSectionProps) { const [assigneeId, setAssigneeId] = useState( - currentAssigneeId || null, + currentAssigneeId || null ); const { data: admins, isLoading, error } = useOrganizationAdmins(); const [selectedAdmin, setSelectedAdmin] = useState(null); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/DepartmentSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/DepartmentSection.tsx similarity index 93% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/DepartmentSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/DepartmentSection.tsx index 9dc09a29e5..86d3df9ae4 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/DepartmentSection.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/DepartmentSection.tsx @@ -11,7 +11,7 @@ import { import { useAction } from "next-safe-action/hooks"; import { toast } from "sonner"; import { Departments } from "@bubba/db"; -import { updateEvidenceDepartment } from "../Actions/updateEvidenceDepartment"; +import { updateEvidenceDepartment } from "../actions/updateEvidenceDepartment"; interface DepartmentSectionProps { evidenceId: string; @@ -25,7 +25,7 @@ export function DepartmentSection({ onSuccess, }: DepartmentSectionProps) { const [department, setDepartment] = useState( - currentDepartment || null, + currentDepartment || null ); const { execute: updateDepartment, isExecuting } = useAction( @@ -39,7 +39,7 @@ export function DepartmentSection({ console.error("Error updating department:", error); toast.error("Failed to update department"); }, - }, + } ); useEffect(() => { @@ -53,7 +53,7 @@ export function DepartmentSection({ }; const departmentOptions = Object.values(Departments).filter( - (dept) => dept !== "none", + (dept) => dept !== "none" ); return ( diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/EvidenceDetails.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/EvidenceDetails.tsx new file mode 100644 index 0000000000..224321b079 --- /dev/null +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/EvidenceDetails.tsx @@ -0,0 +1,78 @@ +"use client"; + +import { Alert, AlertDescription, AlertTitle } from "@bubba/ui/alert"; +import { Skeleton } from "@bubba/ui/skeleton"; +import { CheckCircle2, FileIcon, XCircle } from "lucide-react"; +import { useOrganizationEvidence } from "../hooks/useOrganizationEvidence"; +import type { EvidenceDetailsProps } from "../types"; +import { ReviewSection } from "./ReviewSection"; + +export function EvidenceDetails({ id }: EvidenceDetailsProps) { + const { data, isLoading, error, mutate } = useOrganizationEvidence({ id }); + + if (isLoading) { + return ( +
+ + + +
+ ); + } + + if (!data?.data) return null; + + const evidence = data.data; + + const handleMutate = async () => { + await mutate(); + }; + + return ( +
+ {/* Alert with evidence info and status */} + + + +
+ {evidence.evidence.name} Evidence +
+ {evidence.published ? ( +
+ + Published +
+ ) : ( +
+ + Draft +
+ )} +
+
+
+ + {evidence.description || "No description provided."} + + {evidence.isNotRelevant && ( +
+ This evidence has been marked as not relevant and will not be + included in compliance reports. +
+ )} +
+
+ + +
+ ); +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileCard.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileCard.tsx similarity index 98% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileCard.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileCard.tsx index 22a2114868..2d00f1e094 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileCard.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileCard.tsx @@ -1,14 +1,5 @@ "use client"; -import { useEffect, useState } from "react"; -import { Button } from "@bubba/ui/button"; -import { Card, CardContent, CardFooter } from "@bubba/ui/card"; -import { - Dialog, - DialogContent, - DialogTrigger, - DialogTitle, -} from "@bubba/ui/dialog"; import { AlertDialog, AlertDialogAction, @@ -20,16 +11,24 @@ import { AlertDialogTitle, AlertDialogTrigger, } from "@bubba/ui/alert-dialog"; +import { Button } from "@bubba/ui/button"; +import { Card, CardContent, CardFooter } from "@bubba/ui/card"; +import { + Dialog, + DialogContent, + DialogTitle, + DialogTrigger, +} from "@bubba/ui/dialog"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@bubba/ui/tooltip"; -import { ExternalLink, Loader2, Trash, Maximize2 } from "lucide-react"; +import { ExternalLink, Loader2, Maximize2, Trash } from "lucide-react"; import Image from "next/image"; +import { useEffect, useState } from "react"; import { FileIcon } from "./FileIcon"; -import { VisuallyHidden } from "@radix-ui/react-visually-hidden"; interface FilePreviewState { url: string | null; diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileIcon.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileIcon.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileIcon.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileIcon.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileSection.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileSection.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileUpload.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileUpload.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FileUpload.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FileUpload.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FrequencySection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FrequencySection.tsx similarity index 95% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FrequencySection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FrequencySection.tsx index aee8b6087d..4a895ffe7a 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/FrequencySection.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/FrequencySection.tsx @@ -10,7 +10,7 @@ import { } from "@bubba/ui/select"; import { useAction } from "next-safe-action/hooks"; import { toast } from "sonner"; -import { updateEvidenceFrequency } from "../Actions/updateEvidenceFrequency"; +import { updateEvidenceFrequency } from "../actions/updateEvidenceFrequency"; import type { Frequency } from "@bubba/db"; interface FrequencySectionProps { @@ -25,7 +25,7 @@ export function FrequencySection({ onSuccess, }: FrequencySectionProps) { const [frequency, setFrequency] = useState( - currentFrequency || null, + currentFrequency || null ); const { execute: updateFrequency, isExecuting } = useAction( @@ -38,7 +38,7 @@ export function FrequencySection({ onError: () => { toast.error("Failed to update review frequency"); }, - }, + } ); useEffect(() => { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/ReviewDateCard.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/ReviewDateCard.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/ReviewDateCard.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/ReviewDateCard.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/ReviewSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/ReviewSection.tsx similarity index 67% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/ReviewSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/ReviewSection.tsx index ea4d524d70..83ef3a4a79 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/ReviewSection.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/ReviewSection.tsx @@ -1,24 +1,19 @@ "use client"; -import type { OrganizationEvidence, Frequency } from "@bubba/db"; -import { - Card, - CardHeader, - CardTitle, - CardContent, - CardDescription, -} from "@bubba/ui/card"; -import { CalendarClock, Pencil, RefreshCw, Building, User } from "lucide-react"; import { calculateNextReview } from "@/lib/utils/calculate-next-review"; -import { format } from "date-fns"; -import { FrequencySection } from "./FrequencySection"; -import { DepartmentSection } from "./DepartmentSection"; -import { AssigneeSection } from "./AssigneeSection"; +import type { Frequency, OrganizationEvidence } from "@bubba/db"; import { Button } from "@bubba/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@bubba/ui/card"; +import { format } from "date-fns"; +import { Building, CalendarClock, RefreshCw, User } from "lucide-react"; import { useAction } from "next-safe-action/hooks"; -import { toggleRelevance } from "../Actions/toggleRelevance"; import { toast } from "sonner"; +import { publishEvidence } from "../actions/publishEvidence"; +import { toggleRelevance } from "../actions/toggleRelevance"; import { useOrganizationEvidence } from "../hooks/useOrganizationEvidence"; +import { AssigneeSection } from "./AssigneeSection"; +import { DepartmentSection } from "./DepartmentSection"; +import { FrequencySection } from "./FrequencySection"; interface ReviewSectionProps { evidence: OrganizationEvidence; @@ -55,11 +50,27 @@ export function ReviewSection({ }, }); + const { execute: publishAction, isExecuting } = useAction(publishEvidence, { + onSuccess: () => { + toast.success("Evidence published successfully"); + mutate(); + }, + onError: () => { + toast.error("Failed to publish evidence, please try again."); + }, + }); + return ( - - - Evidence Details + + +
+

Evidence Overview

+

+ Manage review frequency, department assignment, and track upcoming + review dates +

+
+ )}
); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/UrlSection.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/UrlSection.tsx similarity index 98% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/UrlSection.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/UrlSection.tsx index 2ccf6ecad5..047c58a815 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/Components/UrlSection.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/components/UrlSection.tsx @@ -1,17 +1,16 @@ "use client"; +import { Badge } from "@bubba/ui/badge"; import { Button } from "@bubba/ui/button"; import { Input } from "@bubba/ui/input"; -import { Card, CardContent } from "@bubba/ui/card"; -import { Plus, Trash, Save, Link, ExternalLink, Copy } from "lucide-react"; -import { useUrlManagement } from "../hooks/useUrlManagement"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@bubba/ui/tooltip"; -import { Badge } from "@bubba/ui/badge"; +import { Copy, ExternalLink, Link, Plus, Save, Trash } from "lucide-react"; +import { useUrlManagement } from "../hooks/useUrlManagement"; interface UrlSectionProps { evidenceId: string; diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/edit/components/EditEvidenceForm.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/edit/components/EditEvidenceForm.tsx new file mode 100644 index 0000000000..224acffc7d --- /dev/null +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/edit/components/EditEvidenceForm.tsx @@ -0,0 +1,62 @@ +"use client"; + +import { Card, CardContent, CardHeader, CardTitle } from "@bubba/ui/card"; +import { Skeleton } from "@bubba/ui/skeleton"; +import { useI18n } from "@/locales/client"; +import { useParams } from "next/navigation"; +import { useOrganizationEvidence } from "../../hooks/useOrganizationEvidence"; +import { FileSection } from "../../components/FileSection"; +import { UrlSection } from "../../components/UrlSection"; + +export function EditEvidenceForm() { + const { id } = useParams<{ id: string }>(); + const { data, isLoading, error, mutate } = useOrganizationEvidence({ id }); + const t = useI18n(); + + if (isLoading) { + return ( +
+ + + +
+ ); + } + + if (error) { + return
Error
; + } + + const handleMutate = async () => { + await mutate(); + }; + + if (!data?.data) return null; + + const evidence = data.data; + + return ( + + + +
+ {t("evidence.details.content")} +
+
+
+ + + + + +
+ ); +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/edit/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/edit/page.tsx new file mode 100644 index 0000000000..bc9adfb586 --- /dev/null +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/edit/page.tsx @@ -0,0 +1,5 @@ +import { EditEvidenceForm } from "./components/EditEvidenceForm"; + +export default async function EditEvidencePage() { + return ; +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileDelete.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileDelete.ts index 0765c11eab..70b645cfd3 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileDelete.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileDelete.ts @@ -2,7 +2,7 @@ import { useCallback } from "react"; import { useToast } from "@bubba/ui/use-toast"; -import { deleteEvidenceFile } from "../Actions/deleteEvidenceFile"; +import { deleteEvidenceFile } from "../actions/deleteEvidenceFile"; interface UseFileDeleteProps { evidenceId: string; @@ -43,7 +43,7 @@ export function useFileDelete({ evidenceId, onSuccess }: UseFileDeleteProps) { }); } }, - [evidenceId, onSuccess, toast], + [evidenceId, onSuccess, toast] ); return { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFilePreview.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFilePreview.ts index a82523711d..6ba6a9102e 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFilePreview.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFilePreview.ts @@ -2,7 +2,7 @@ import { useCallback, useState } from "react"; import { useToast } from "@bubba/ui/use-toast"; -import { getEvidenceFileUrl } from "../Actions/getEvidenceFileUrl"; +import { getEvidenceFileUrl } from "../actions/getEvidenceFileUrl"; interface UseFilePreviewProps { evidenceId: string; @@ -60,7 +60,7 @@ export function useFilePreview({ setIsLoading(false); } }, - [evidenceId, toast], + [evidenceId, toast] ); return { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileUpload.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileUpload.ts index c57995e42e..4bc7722e10 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileUpload.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useFileUpload.ts @@ -2,7 +2,7 @@ import { useCallback, useState } from "react"; import { useToast } from "@bubba/ui/use-toast"; -import { getUploadUrl } from "../Actions/uploadEvidenceFile"; +import { getUploadUrl } from "../actions/uploadEvidenceFile"; import axios, { type AxiosProgressEvent } from "axios"; interface UploadUrlResponse { @@ -71,7 +71,7 @@ export function useFileUpload({ onUploadProgress: (progressEvent: AxiosProgressEvent): void => { if (progressEvent.total) { const percentCompleted = Math.round( - (progressEvent.loaded * 100) / progressEvent.total, + (progressEvent.loaded * 100) / progressEvent.total ); console.debug(`Upload progress: ${percentCompleted}%`); } @@ -104,7 +104,7 @@ export function useFileUpload({ setIsUploading(false); } }, - [evidenceId, onSuccess, toast], + [evidenceId, onSuccess, toast] ); return { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationAdmins.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationAdmins.ts index fc366cd679..66d94fbc7a 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationAdmins.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationAdmins.ts @@ -1,7 +1,7 @@ "use client"; import useSWR from "swr"; -import { getOrganizationAdmins } from "../../Actions/getOrganizationAdmins"; +import { getOrganizationAdmins } from "../../actions/getOrganizationAdmins"; export interface Admin { id: string; diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationEvidence.ts index 17a1c175d5..4754cb514b 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationEvidence.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useOrganizationEvidence.ts @@ -1,7 +1,7 @@ "use client"; import useSWR from "swr"; -import { getOrganizationEvidenceById } from "../../Actions/getOrganizationEvidence"; +import { getOrganizationEvidenceById } from "../../actions/getOrganizationEvidence"; interface UseOrganizationEvidenceProps { id: string; @@ -14,7 +14,7 @@ async function fetchOrganizationEvidence({ id }: UseOrganizationEvidenceProps) { throw new Error( typeof result?.error === "string" ? result.error - : "Failed to fetch organization evidence", + : "Failed to fetch organization evidence" ); } @@ -28,6 +28,6 @@ export function useOrganizationEvidence({ id }: UseOrganizationEvidenceProps) { { revalidateOnFocus: false, revalidateOnReconnect: false, - }, + } ); } diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useUrlManagement.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useUrlManagement.ts index e53a635654..e051e2191e 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useUrlManagement.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/hooks/useUrlManagement.ts @@ -2,7 +2,7 @@ import { useState, useCallback } from "react"; import { useToast } from "@bubba/ui/use-toast"; -import { updateEvidenceUrls } from "../Actions/updateEvidenceUrls"; +import { updateEvidenceUrls } from "../actions/updateEvidenceUrls"; import type { ActionResponse } from "@/actions/types"; interface DraftUrl { @@ -62,7 +62,7 @@ export function useUrlManagement({ const handleUpdateDraft = useCallback((id: string, url: string) => { setDraftUrls((prev) => - prev.map((draft) => (draft.id === id ? { ...draft, url } : draft)), + prev.map((draft) => (draft.id === id ? { ...draft, url } : draft)) ); }, []); @@ -151,7 +151,7 @@ export function useUrlManagement({ }); } }, - [currentUrls, evidenceId, onSuccess, toast], + [currentUrls, evidenceId, onSuccess, toast] ); return { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/layout.tsx new file mode 100644 index 0000000000..1e0bf26c89 --- /dev/null +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/layout.tsx @@ -0,0 +1,39 @@ +import { getI18n } from "@/locales/server"; +import { SecondaryMenu } from "@bubba/ui/secondary-menu"; +import { headers } from "next/headers"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + const t = await getI18n(); + const headersList = await headers(); + const pathname = headersList.get("x-pathname") || ""; + const isEvidenceDetails = /\/evidence\/[a-z0-9]+/.test(pathname); + const pathParts = pathname.split("/"); + const evidenceIndex = pathParts.findIndex((part) => part === "evidence"); + const id = + evidenceIndex >= 0 && pathParts.length > evidenceIndex + 1 + ? pathParts[evidenceIndex + 1] + : ""; + + return ( +
+ + +
{children}
+
+ ); +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/page.tsx index 8402abb4f4..1e1b3aac38 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/[id]/page.tsx @@ -1,4 +1,4 @@ -import { EvidenceDetails } from "./Components/EvidenceDetails"; +import { EvidenceDetails } from "./components/EvidenceDetails"; interface EvidencePageProps { params: Promise<{ diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getAllOrganizationControlRequirements.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getAllOrganizationControlRequirements.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getAllOrganizationControlRequirements.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getAllOrganizationControlRequirements.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getEvidenceTasksStats.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getEvidenceTasksStats.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getEvidenceTasksStats.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getEvidenceTasksStats.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationAdmins.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationAdmins.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationAdmins.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationAdmins.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationEmployees.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationEmployees.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationEmployees.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationEmployees.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationEvidence.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationEvidence.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationEvidence.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationEvidence.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationEvidenceTasks.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationEvidenceTasks.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Actions/getOrganizationEvidenceTasks.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/actions/getOrganizationEvidenceTasks.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/ActiveFilterBadges.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/ActiveFilterBadges.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/ActiveFilterBadges.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/ActiveFilterBadges.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/FilterDropdown.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/FilterDropdown.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/FilterDropdown.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/FilterDropdown.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/PaginationControls.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/PaginationControls.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/PaginationControls.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/PaginationControls.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/SearchInput.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/SearchInput.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/SearchInput.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/SearchInput.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/index.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/index.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceFilters/index.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceFilters/index.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceList.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceList.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceList.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceList.tsx index 47e1182eea..bf7707ab42 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceList.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceList.tsx @@ -1,15 +1,15 @@ "use client"; -import { DataTable } from "./data-table/EvidenceListTable"; import { useI18n } from "@/locales/client"; -import { SkeletonTable } from "./SkeletonTable"; +import { useEvidenceTable } from "../hooks/useEvidenceTableContext"; +import { DataTable } from "./data-table/EvidenceListTable"; import { - FilterDropdown, ActiveFilterBadges, + FilterDropdown, PaginationControls, SearchInput, } from "./EvidenceFilters"; -import { useEvidenceTable } from "../hooks/useEvidenceTableContext"; +import { SkeletonTable } from "./SkeletonTable"; import { EvidenceSummaryCards } from "./EvidenceSummaryCards"; export function EvidenceList() { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceSummaryCards.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceSummaryCards.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/EvidenceSummaryCards.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/EvidenceSummaryCards.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/SkeletonTable.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/SkeletonTable.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/SkeletonTable.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/SkeletonTable.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/EvidenceListTable.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/EvidenceListTable.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/EvidenceListTable.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/EvidenceListTable.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/columns.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/columns.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/columns.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/columns.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/data-table-header.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/data-table-header.tsx similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/data-table-header.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/data-table-header.tsx diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/index.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/index.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/index.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/index.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/types.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/types.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/data-table/types.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/data-table/types.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/index.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/index.ts similarity index 100% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/Components/index.ts rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/components/index.ts diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTableContext.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTableContext.tsx index fad65db559..1243b9e8a4 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTableContext.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTableContext.tsx @@ -3,212 +3,212 @@ import { createContext, useContext, useMemo, type ReactNode } from "react"; import { useQueryState } from "nuqs"; import { useOrganizationEvidenceTasks } from "./useEvidenceTasks"; -import type { EvidenceTaskRow } from "../Components/data-table/types"; +import type { EvidenceTaskRow } from "../components/data-table/types"; import { ALL_DEPARTMENTS, ALL_FREQUENCIES } from "../constants"; import type { Frequency, Departments } from "@bubba/db"; interface Assignee { - id: string; - name: string | null; - image: string | null; + id: string; + name: string | null; + image: string | null; } interface EvidenceTableContextType { - // State - search: string | null; - status: string | null; - frequency: string | null; - department: string | null; - assigneeId: string | null; - relevance: string | null; - page: string; - pageSize: string; - - // Setters - setSearch: (value: string | null) => void; - setStatus: (value: string | null) => void; - setFrequency: (value: string | null) => void; - setDepartment: (value: string | null) => void; - setAssigneeId: (value: string | null) => void; - setRelevance: (value: string | null) => void; - setPage: (value: string) => void; - setPageSize: (value: string) => void; - mutate: () => void; - - // Data - evidenceTasks: EvidenceTaskRow[] | undefined; - pagination: - | { - totalCount: number; - totalPages: number; - hasNextPage: boolean; - hasPreviousPage: boolean; - } - | undefined; - isLoading: boolean; - error: Error | undefined; - - // Derived data - frequencies: Frequency[]; - departments: Departments[]; - assignees: Assignee[]; - hasActiveFilters: boolean; - - // Actions - clearFilters: () => void; + // State + search: string | null; + status: string | null; + frequency: string | null; + department: string | null; + assigneeId: string | null; + relevance: string | null; + page: string; + pageSize: string; + + // Setters + setSearch: (value: string | null) => void; + setStatus: (value: string | null) => void; + setFrequency: (value: string | null) => void; + setDepartment: (value: string | null) => void; + setAssigneeId: (value: string | null) => void; + setRelevance: (value: string | null) => void; + setPage: (value: string) => void; + setPageSize: (value: string) => void; + mutate: () => void; + + // Data + evidenceTasks: EvidenceTaskRow[] | undefined; + pagination: + | { + totalCount: number; + totalPages: number; + hasNextPage: boolean; + hasPreviousPage: boolean; + } + | undefined; + isLoading: boolean; + error: Error | undefined; + + // Derived data + frequencies: Frequency[]; + departments: Departments[]; + assignees: Assignee[]; + hasActiveFilters: boolean; + + // Actions + clearFilters: () => void; } const EvidenceTableContext = createContext< - EvidenceTableContextType | undefined + EvidenceTableContextType | undefined >(undefined); export function EvidenceTableProvider({ children }: { children: ReactNode }) { - // Query state - const [search, setSearch] = useQueryState("search"); - const [status, setStatus] = useQueryState("status"); - const [frequency, setFrequency] = useQueryState("frequency"); - const [department, setDepartment] = useQueryState("department"); - const [assigneeId, setAssigneeId] = useQueryState("assigneeId"); - const [relevance, setRelevance] = useQueryState("relevance"); - const [page, setPage] = useQueryState("page", { defaultValue: "1" }); - const [pageSize, setPageSize] = useQueryState("pageSize", { - defaultValue: "10", - }); - - const currentPage = Number.parseInt(page, 10); - const currentPageSize = Number.parseInt(pageSize, 10); - - // Fetch data - const { - data: rawEvidenceTasks, - pagination, - isLoading, - error, - mutate, - } = useOrganizationEvidenceTasks({ - search, - status: status as "published" | "draft" | null, - frequency: frequency as any, - department: department as any, - assigneeId, - relevance: relevance as "relevant" | "not-relevant" | null, - page: currentPage, - pageSize: currentPageSize, - }); - - // Format data for the table - const evidenceTasks = useMemo(() => { - return rawEvidenceTasks?.map((task) => ({ - ...task, - evidence: { - name: task.name, - }, - })) as EvidenceTaskRow[] | undefined; - }, [rawEvidenceTasks]); - - // Predefined frequencies and departments - const frequencies = useMemo(() => ALL_FREQUENCIES, []); - const departments = useMemo(() => ALL_DEPARTMENTS, []); - - // Get unique assignees for the dropdown - const assignees = useMemo(() => { - if (!evidenceTasks) return []; - - const uniqueAssignees = new Map< - string, - { id: string; name: string | null; image: string | null } - >(); - - for (const task of evidenceTasks) { - if (task.assignee) { - uniqueAssignees.set(task.assignee.id, { - id: task.assignee.id, - name: task.assignee.name, - image: task.assignee.image, - }); - } - } - - return Array.from(uniqueAssignees.values()).sort((a, b) => { - return (a.name || "").localeCompare(b.name || ""); - }); - }, [evidenceTasks]); - - // Check if any filters are active - const hasActiveFilters = useMemo(() => { - return ( - status !== null || - frequency !== null || - department !== null || - assigneeId !== null || - relevance !== null - ); - }, [status, frequency, department, assigneeId, relevance]); - - // Clear all filters - const clearFilters = () => { - setStatus(null); - setFrequency(null); - setDepartment(null); - setAssigneeId(null); - setRelevance(null); - setPage("1"); // Reset to first page when clearing filters - }; - - // Create context value - const contextValue = { - // State - search, - status, - frequency, - department, - assigneeId, - relevance, - page, - pageSize, - - // Setters - setSearch, - setStatus, - setFrequency, - setDepartment, - setAssigneeId, - setRelevance, - setPage, - setPageSize, - mutate, - - // Data - evidenceTasks, - pagination, - isLoading, - error, - - // Derived data - frequencies, - departments, - assignees, - hasActiveFilters, - - // Actions - clearFilters, - }; - - return ( - - {children} - - ); + // Query state + const [search, setSearch] = useQueryState("search"); + const [status, setStatus] = useQueryState("status"); + const [frequency, setFrequency] = useQueryState("frequency"); + const [department, setDepartment] = useQueryState("department"); + const [assigneeId, setAssigneeId] = useQueryState("assigneeId"); + const [relevance, setRelevance] = useQueryState("relevance"); + const [page, setPage] = useQueryState("page", { defaultValue: "1" }); + const [pageSize, setPageSize] = useQueryState("pageSize", { + defaultValue: "10", + }); + + const currentPage = Number.parseInt(page, 10); + const currentPageSize = Number.parseInt(pageSize, 10); + + // Fetch data + const { + data: rawEvidenceTasks, + pagination, + isLoading, + error, + mutate, + } = useOrganizationEvidenceTasks({ + search, + status: status as "published" | "draft" | null, + frequency: frequency as any, + department: department as any, + assigneeId, + relevance: relevance as "relevant" | "not-relevant" | null, + page: currentPage, + pageSize: currentPageSize, + }); + + // Format data for the table + const evidenceTasks = useMemo(() => { + return rawEvidenceTasks?.map((task) => ({ + ...task, + evidence: { + name: task.name, + }, + })) as EvidenceTaskRow[] | undefined; + }, [rawEvidenceTasks]); + + // Predefined frequencies and departments + const frequencies = useMemo(() => ALL_FREQUENCIES, []); + const departments = useMemo(() => ALL_DEPARTMENTS, []); + + // Get unique assignees for the dropdown + const assignees = useMemo(() => { + if (!evidenceTasks) return []; + + const uniqueAssignees = new Map< + string, + { id: string; name: string | null; image: string | null } + >(); + + for (const task of evidenceTasks) { + if (task.assignee) { + uniqueAssignees.set(task.assignee.id, { + id: task.assignee.id, + name: task.assignee.name, + image: task.assignee.image, + }); + } + } + + return Array.from(uniqueAssignees.values()).sort((a, b) => { + return (a.name || "").localeCompare(b.name || ""); + }); + }, [evidenceTasks]); + + // Check if any filters are active + const hasActiveFilters = useMemo(() => { + return ( + status !== null || + frequency !== null || + department !== null || + assigneeId !== null || + relevance !== null + ); + }, [status, frequency, department, assigneeId, relevance]); + + // Clear all filters + const clearFilters = () => { + setStatus(null); + setFrequency(null); + setDepartment(null); + setAssigneeId(null); + setRelevance(null); + setPage("1"); // Reset to first page when clearing filters + }; + + // Create context value + const contextValue = { + // State + search, + status, + frequency, + department, + assigneeId, + relevance, + page, + pageSize, + + // Setters + setSearch, + setStatus, + setFrequency, + setDepartment, + setAssigneeId, + setRelevance, + setPage, + setPageSize, + mutate, + + // Data + evidenceTasks, + pagination, + isLoading, + error, + + // Derived data + frequencies, + departments, + assignees, + hasActiveFilters, + + // Actions + clearFilters, + }; + + return ( + + {children} + + ); } export function useEvidenceTable() { - const context = useContext(EvidenceTableContext); + const context = useContext(EvidenceTableContext); - if (context === undefined) { - throw new Error( - "useEvidenceTable must be used within an EvidenceTableProvider", - ); - } + if (context === undefined) { + throw new Error( + "useEvidenceTable must be used within an EvidenceTableProvider", + ); + } - return context; + return context; } diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasks.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasks.ts index e6d30ef9f0..835e225b64 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasks.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasks.ts @@ -1,8 +1,8 @@ "use client"; import useSWR from "swr"; -import { getOrganizationEvidenceTasks } from "../Actions/getOrganizationEvidenceTasks"; -import type { PaginationMetadata } from "../Actions/getOrganizationEvidenceTasks"; +import { getOrganizationEvidenceTasks } from "../actions/getOrganizationEvidenceTasks"; +import type { PaginationMetadata } from "../actions/getOrganizationEvidenceTasks"; import type { Frequency, OrganizationEvidence, Departments } from "@bubba/db"; // Define the props interface with clear types @@ -42,7 +42,7 @@ async function fetchEvidenceTasks(props: UseOrganizationEvidenceTasksProps) { if (result.validationErrors) { throw new Error( - result.validationErrors._errors?.join(", ") ?? "Unknown error", + result.validationErrors._errors?.join(", ") ?? "Unknown error" ); } @@ -58,7 +58,7 @@ async function fetchEvidenceTasks(props: UseOrganizationEvidenceTasksProps) { } export function useOrganizationEvidenceTasks( - props: UseOrganizationEvidenceTasksProps = {}, + props: UseOrganizationEvidenceTasksProps = {} ): UseOrganizationEvidenceTasksResult { const { search, @@ -93,7 +93,7 @@ export function useOrganizationEvidenceTasks( relevance, page, pageSize, - }), + }) ); console.log("useOrganizationEvidenceTasks data:", data); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasksStats.ts b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasksStats.ts index 847c7f4e1e..abae25586b 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasksStats.ts +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/hooks/useEvidenceTasksStats.ts @@ -1,8 +1,7 @@ "use client"; import useSWR from "swr"; -import { getEvidenceTasksStats } from "../Actions/getEvidenceTasksStats"; -import type { EvidenceTasksStats } from "../Actions/getEvidenceTasksStats"; +import { getEvidenceTasksStats } from "../actions/getEvidenceTasksStats"; // Define a simpler fetcher function async function fetchEvidenceTasksStats() { @@ -19,7 +18,7 @@ async function fetchEvidenceTasksStats() { if (result.validationErrors) { throw new Error( - result.validationErrors._errors?.join(", ") ?? "Unknown error", + result.validationErrors._errors?.join(", ") ?? "Unknown error" ); } @@ -37,7 +36,7 @@ export function useEvidenceTasksStats() { { revalidateOnFocus: false, revalidateOnReconnect: false, - }, + } ); return { diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/layout.tsx similarity index 85% rename from apps/app/src/app/[locale]/(app)/(dashboard)/evidence/layout.tsx rename to apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/layout.tsx index 6a6f897fa5..063655d889 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/layout.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/layout.tsx @@ -6,7 +6,6 @@ export default async function Layout({ }: { children: React.ReactNode; }) { - // TODO: Implement i18n, build was failing. const t = await getI18n(); return ( @@ -15,7 +14,7 @@ export default async function Layout({ items={[ { path: "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/evidence/overview", - label: t("evidence.dashboard"), + label: t("evidence.dashboard.layout"), }, { path: "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/evidence/list", label: t("evidence.list") }, ]} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/page.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/page.tsx index bc459bbf25..3c25a83bd7 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/page.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/list/page.tsx @@ -1,10 +1,10 @@ -import { EvidenceList } from "../Components/EvidenceList"; +import { EvidenceList } from "../components/EvidenceList"; import { EvidenceTableProvider } from "../hooks/useEvidenceTableContext"; export default function EvidencePage() { - return ( - - - - ); + return ( + + + + ); } diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/AssigneeBarChart.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/AssigneeBarChart.tsx index e40c598348..ba710270cc 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/AssigneeBarChart.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/AssigneeBarChart.tsx @@ -4,18 +4,19 @@ import React, { useEffect, useRef, useState } from "react"; import { HorizontalBarChart, type ChartDataItem } from "./HorizontalBarChart"; import type { EvidenceWithStatus } from "../actions/getEvidenceDashboard"; import { ChevronDown, ChevronUp } from "lucide-react"; +import { useI18n } from "@/locales/client"; interface AssigneeBarChartProps { byAssignee?: Record; unassigned?: EvidenceWithStatus[]; } -// Status colors matching the EvidenceSummaryCards +// Status colors using CSS variables to match policies-by-assignee.tsx const STATUS_COLORS = { - empty: "#6b7280", // Gray for empty - draft: "#f59e0b", // Amber for draft - needsReview: "#ef4444", // Red for needs review - upToDate: "#10b981", // Green for up to date + upToDate: "bg-primary", + draft: "bg-[var(--chart-open)]", + needsReview: "bg-[hsl(var(--destructive))]", + empty: "bg-[var(--chart-pending)]", }; // Status priority order for display (determines the order in the bar) @@ -26,6 +27,7 @@ export function AssigneeBarChart({ byAssignee, unassigned = [], }: AssigneeBarChartProps) { + const t = useI18n(); const containerRef = useRef(null); const [canScrollDown, setCanScrollDown] = useState(false); const [canScrollUp, setCanScrollUp] = useState(false); @@ -74,7 +76,7 @@ export function AssigneeBarChart({ if (firstAssignee && firstAssignee.length > 0) { console.log( "First assignee's first item status:", - firstAssignee[0].status, + firstAssignee[0].status ); } } @@ -110,7 +112,7 @@ export function AssigneeBarChart({ items, statusCounts, }; - }, + } ); // Add unassigned items if any @@ -156,14 +158,9 @@ export function AssigneeBarChart({ if (assignee.statusCounts[status] > 0) { chartData.push({ key: status, - label: - status === "upToDate" - ? "Up to Date" - : status === "needsReview" - ? "Needs Review" - : status.charAt(0).toUpperCase() + status.slice(1), + label: getStatusLabel(status, t), value: assignee.statusCounts[status], - color: STATUS_COLORS[status], + color: getStatusColor(status), }); } } @@ -173,7 +170,7 @@ export function AssigneeBarChart({

{assignee.name}

- {assignee.totalItems} items + {assignee.totalItems} {t("evidence.items")}
@@ -184,6 +181,24 @@ export function AssigneeBarChart({ valueFormatter={(value) => `${value}`} height={12} /> + + {/* Legend - similar to policies-by-assignee.tsx */} +
+ {STATUS_PRIORITY.map((status) => { + if (assignee.statusCounts[status] > 0) { + return ( +
+
+ + {getStatusLabel(status, t)} ( + {assignee.statusCounts[status]}) + +
+ ); + } + return null; + })} +
); })} @@ -206,3 +221,35 @@ export function AssigneeBarChart({ ); } + +// Helper function to get status label +function getStatusLabel(status: StatusType, t: any): string { + switch (status) { + case "upToDate": + return t("evidence.status.up_to_date"); + case "needsReview": + return t("evidence.status.needs_review"); + case "draft": + return t("evidence.status.draft"); + case "empty": + return t("evidence.status.empty"); + default: + return status; + } +} + +// Helper function to get status color +function getStatusColor(status: StatusType): string { + switch (status) { + case "upToDate": + return "#10b981"; // Green + case "draft": + return "#f59e0b"; // Amber + case "needsReview": + return "#ef4444"; // Red + case "empty": + return "#6b7280"; // Gray + default: + return "#6b7280"; // Default gray + } +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/DepartmentBarChart.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/DepartmentBarChart.tsx index 2ef003e84a..0cf07a9742 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/DepartmentBarChart.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/DepartmentBarChart.tsx @@ -5,17 +5,18 @@ import { HorizontalBarChart, type ChartDataItem } from "./HorizontalBarChart"; import type { Departments } from "@prisma/client"; import type { EvidenceWithStatus } from "../actions/getEvidenceDashboard"; import { ChevronDown, ChevronUp } from "lucide-react"; +import { useI18n } from "@/locales/client"; interface DepartmentBarChartProps { byDepartment?: Record; } -// Status colors matching the EvidenceSummaryCards +// Status colors using CSS variables to match policies-by-assignee.tsx const STATUS_COLORS = { - empty: "#6b7280", // Gray for empty - draft: "#f59e0b", // Amber for draft - needsReview: "#ef4444", // Red for needs review - upToDate: "#10b981", // Green for up to date + upToDate: "bg-primary", + draft: "bg-[var(--chart-open)]", + needsReview: "bg-[hsl(var(--destructive))]", + empty: "bg-[var(--chart-pending)]", }; // Status priority order for display (determines the order in the bar) @@ -34,6 +35,7 @@ const DEPARTMENT_NAMES: Record = { }; export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) { + const t = useI18n(); const containerRef = useRef(null); const [canScrollDown, setCanScrollDown] = useState(false); const [canScrollUp, setCanScrollUp] = useState(false); @@ -81,7 +83,7 @@ export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) { if (firstDepartment && firstDepartment.length > 0) { console.log( "First department's first item status:", - firstDepartment[0].status, + firstDepartment[0].status ); } } @@ -115,7 +117,9 @@ export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) { return { id: department, - name: DEPARTMENT_NAMES[department] || "Unknown", + name: + DEPARTMENT_NAMES[department] || + t(`evidence.departments.${department}`), totalItems: items.length, items, statusCounts, @@ -138,14 +142,9 @@ export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) { if (department.statusCounts[status] > 0) { chartData.push({ key: status, - label: - status === "upToDate" - ? "Up to Date" - : status === "needsReview" - ? "Needs Review" - : status.charAt(0).toUpperCase() + status.slice(1), + label: getStatusLabel(status, t), value: department.statusCounts[status], - color: STATUS_COLORS[status], + color: getStatusColor(status), }); } } @@ -155,7 +154,7 @@ export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) {

{department.name}

- {department.totalItems} items + {department.totalItems} {t("evidence.items")}
@@ -166,6 +165,24 @@ export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) { valueFormatter={(value) => `${value}`} height={12} /> + + {/* Legend - similar to policies-by-assignee.tsx */} +
+ {STATUS_PRIORITY.map((status) => { + if (department.statusCounts[status] > 0) { + return ( +
+
+ + {getStatusLabel(status, t)} ( + {department.statusCounts[status]}) + +
+ ); + } + return null; + })} +
); })} @@ -188,3 +205,35 @@ export function DepartmentBarChart({ byDepartment }: DepartmentBarChartProps) { ); } + +// Helper function to get status label +function getStatusLabel(status: StatusType, t: any): string { + switch (status) { + case "upToDate": + return t("evidence.status.up_to_date"); + case "needsReview": + return t("evidence.status.needs_review"); + case "draft": + return t("evidence.status.draft"); + case "empty": + return t("evidence.status.empty"); + default: + return status; + } +} + +// Helper function to get status color +function getStatusColor(status: StatusType): string { + switch (status) { + case "upToDate": + return "#10b981"; // Green + case "draft": + return "#f59e0b"; // Amber + case "needsReview": + return "#ef4444"; // Red + case "empty": + return "#6b7280"; // Gray + default: + return "#6b7280"; // Default gray + } +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/EvidenceOverview.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/EvidenceOverview.tsx index be2973ca92..39805e7bd7 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/EvidenceOverview.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/EvidenceOverview.tsx @@ -5,9 +5,12 @@ import { useEvidenceDashboard } from "../hooks/useEvidenceDashboard"; import { DepartmentBarChart } from "./DepartmentBarChart"; import { AssigneeBarChart } from "./AssigneeBarChart"; import { FrameworkBarChart } from "./FrameworkBarChart"; +import { Card, CardContent, CardHeader, CardTitle } from "@bubba/ui/card"; +import { useI18n } from "@/locales/client"; export const EvidenceOverview = () => { const { data, isLoading, error } = useEvidenceDashboard(); + const t = useI18n(); if (isLoading) { return
Loading...
; @@ -23,39 +26,41 @@ export const EvidenceOverview = () => { return (
-

Evidence Dashboard

+

+ {t("evidence.dashboard.title")} +

{/* Charts */}
-
-
-

By Department

-
- -
-
-
- -
-
-

By Assignee

-
- -
-
-
- -
-
-

By Framework

-
- -
-
-
+ + + {t("evidence.dashboard.by_department")} + + + + + + + + + {t("evidence.dashboard.by_assignee")} + + + + + + + + + {t("evidence.dashboard.by_framework")} + + + + +
); diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/FrameworkBarChart.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/FrameworkBarChart.tsx index 3ab4892ac9..2b8d20b2cc 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/FrameworkBarChart.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/FrameworkBarChart.tsx @@ -4,17 +4,18 @@ import React, { useEffect, useRef, useState } from "react"; import { HorizontalBarChart, type ChartDataItem } from "./HorizontalBarChart"; import type { EvidenceWithStatus } from "../actions/getEvidenceDashboard"; import { ChevronDown, ChevronUp } from "lucide-react"; +import { useI18n } from "@/locales/client"; interface FrameworkBarChartProps { byFramework?: Record; } -// Status colors matching the EvidenceSummaryCards +// Status colors using CSS variables to match policies-by-assignee.tsx const STATUS_COLORS = { - empty: "#6b7280", // Gray for empty - draft: "#f59e0b", // Amber for draft - needsReview: "#ef4444", // Red for needs review - upToDate: "#10b981", // Green for up to date + upToDate: "bg-primary", + draft: "bg-[var(--chart-open)]", + needsReview: "bg-[hsl(var(--destructive))]", + empty: "bg-[var(--chart-pending)]", }; // Status priority order for display (determines the order in the bar) @@ -22,6 +23,7 @@ const STATUS_PRIORITY = ["upToDate", "draft", "needsReview", "empty"] as const; type StatusType = (typeof STATUS_PRIORITY)[number]; export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) { + const t = useI18n(); const containerRef = useRef(null); const [canScrollDown, setCanScrollDown] = useState(false); const [canScrollUp, setCanScrollUp] = useState(false); @@ -69,7 +71,7 @@ export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) { if (firstFramework && firstFramework.length > 0) { console.log( "First framework's first item status:", - firstFramework[0].status, + firstFramework[0].status ); } } @@ -100,12 +102,12 @@ export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) { return { id: frameworkId, - name: `${frameworkId}`, + name: frameworkId, totalItems: items.length, items, statusCounts, }; - }, + } ); // Sort by count in descending order @@ -124,14 +126,9 @@ export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) { if (framework.statusCounts[status] > 0) { chartData.push({ key: status, - label: - status === "upToDate" - ? "Up to Date" - : status === "needsReview" - ? "Needs Review" - : status.charAt(0).toUpperCase() + status.slice(1), + label: getStatusLabel(status, t), value: framework.statusCounts[status], - color: STATUS_COLORS[status], + color: getStatusColor(status), }); } } @@ -141,7 +138,7 @@ export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) {

{framework.name}

- {framework.totalItems} items + {framework.totalItems} {t("evidence.items")}
@@ -152,20 +149,37 @@ export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) { valueFormatter={(value) => `${value}`} height={12} /> + + {/* Legend - similar to policies-by-assignee.tsx */} +
+ {STATUS_PRIORITY.map((status) => { + if (framework.statusCounts[status] > 0) { + return ( +
+
+ + {getStatusLabel(status, t)} ( + {framework.statusCounts[status]}) + +
+ ); + } + return null; + })} +
); })} - {/* Scroll up indicator */} + {/* Scroll indicators */} {canScrollUp && (
)} - {/* Scroll down indicator */} {canScrollDown && (
@@ -174,3 +188,35 @@ export function FrameworkBarChart({ byFramework }: FrameworkBarChartProps) {
); } + +// Helper function to get status label +function getStatusLabel(status: StatusType, t: any): string { + switch (status) { + case "upToDate": + return t("evidence.status.up_to_date"); + case "needsReview": + return t("evidence.status.needs_review"); + case "draft": + return t("evidence.status.draft"); + case "empty": + return t("evidence.status.empty"); + default: + return status; + } +} + +// Helper function to get status color +function getStatusColor(status: StatusType): string { + switch (status) { + case "upToDate": + return "#10b981"; // Green + case "draft": + return "#f59e0b"; // Amber + case "needsReview": + return "#ef4444"; // Red + case "empty": + return "#6b7280"; // Gray + default: + return "#6b7280"; // Default gray + } +} diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/HorizontalBarChart.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/HorizontalBarChart.tsx index f08133b5cf..38ddd14b1f 100644 --- a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/HorizontalBarChart.tsx +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/components/HorizontalBarChart.tsx @@ -17,6 +17,7 @@ interface HorizontalBarChartProps { showZeroValues?: boolean; colors?: string[]; valueFormatter?: (value: number) => string; + showLegend?: boolean; } // Default array of colors using Tailwind's HSL color palette @@ -35,6 +36,7 @@ export function HorizontalBarChart({ showZeroValues = true, colors = defaultColors, valueFormatter = (value) => `${value}`, + showLegend = false, }: HorizontalBarChartProps) { // Debug: Log the incoming data useEffect(() => { @@ -77,7 +79,9 @@ export function HorizontalBarChart({ } const barHeight = height; - let cumulativePercentage = 0; + const gap = 0.3; // Add gap between segments like in policies-by-assignee + const totalWidth = totalValue + gap * (filteredData.length - 1); + let cumulativeWidth = 0; const cornerRadius = 0; // No rounded corners in the policies-by-assignee chart return ( @@ -104,27 +108,29 @@ export function HorizontalBarChart({ translate-y-[var(--marginTop)] overflow-visible" > - {filteredData.map((d) => { - const percentage = (d.value / totalValue) * 100; - const xPosition = cumulativePercentage; - cumulativePercentage += percentage; + {filteredData.map((d, index) => { + const barWidth = (d.value / totalWidth) * 100; + const xPosition = cumulativeWidth; + cumulativeWidth += barWidth + gap; return (
@@ -135,19 +141,21 @@ export function HorizontalBarChart({
{/* Legend */} -
- {filteredData.map((item) => ( -
-
- - {item.label} ({valueFormatter(item.value)}) - -
- ))} -
+ {showLegend && ( +
+ {filteredData.map((item) => ( +
+
+ + {item.label} ({valueFormatter(item.value)}) + +
+ ))} +
+ )}
); } diff --git a/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/layout.tsx b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/layout.tsx new file mode 100644 index 0000000000..063655d889 --- /dev/null +++ b/apps/app/src/app/[locale]/(app)/(dashboard)/evidence/overview/layout.tsx @@ -0,0 +1,26 @@ +import { getI18n } from "@/locales/server"; +import { SecondaryMenu } from "@bubba/ui/secondary-menu"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + const t = await getI18n(); + + return ( +
+ + +
{children}
+
+ ); +} diff --git a/apps/app/src/locales/en.ts b/apps/app/src/locales/en.ts index 6fc4dd296b..b511c47dbd 100644 --- a/apps/app/src/locales/en.ts +++ b/apps/app/src/locales/en.ts @@ -788,10 +788,37 @@ export default { }, }, evidence: { - title: "Evidence Tasks", - description: - "Manage and track evidence tasks for your compliance requirements.", - dashboard: "Dashboard", + title: "Evidence", list: "All Evidence", + overview: "Evidence Overview", + edit: "Edit Evidence", + dashboard: { + layout: "Dashboard", + layout_back_button: "Back", + title: "Evidence Dashboard", + by_department: "By Department", + by_assignee: "By Assignee", + by_framework: "By Framework", + }, + items: "items", + status: { + up_to_date: "Up to Date", + needs_review: "Needs Review", + draft: "Draft", + empty: "Empty", + }, + departments: { + none: "Uncategorized", + admin: "Administration", + gov: "Governance", + hr: "Human Resources", + it: "Information Technology", + itsm: "IT Service Management", + qms: "Quality Management", + }, + details: { + review_section: "Review Information", + content: "Evidence Content", + }, }, } as const; diff --git a/apps/app/src/locales/es.ts b/apps/app/src/locales/es.ts index 0fb3b35e3f..33ea1d54a1 100644 --- a/apps/app/src/locales/es.ts +++ b/apps/app/src/locales/es.ts @@ -2,56 +2,56 @@ export default { language: { title: "Idiomas", description: "Cambia el idioma utilizado en la interfaz de usuario.", - placeholder: "Seleccionar idioma", + placeholder: "Seleccionar idioma" }, languages: { en: "Inglés", no: "Noruego", es: "Español", fr: "Francés", - pt: "Portugués", + pt: "Portugués" }, common: { actions: { save: "Guardar", edit: "Editar", - delete: "Eliminar", + "delete": "Eliminar", cancel: "Cancelar", clear: "Limpiar", create: "Crear", send: "Enviar", - return: "Regresar", + "return": "Regresar", success: "Éxito", error: "Error", next: "Siguiente", complete: "Completar", - addNew: "Agregar Nuevo", + addNew: "Agregar nuevo" }, assignee: { - label: "Asignado a", - placeholder: "Seleccionar asignado", + label: "Asignado", + placeholder: "Seleccionar asignado" }, date: { - pick: "Seleccionar una fecha", - due_date: "Fecha de vencimiento", + pick: "Elegir una fecha", + due_date: "Fecha de vencimiento" }, status: { open: "Abierto", pending: "Pendiente", closed: "Cerrado", archived: "Archivado", - compliant: "Cumplido", - non_compliant: "No Cumplido", - not_started: "No Iniciado", - in_progress: "En Progreso", + compliant: "Cumplidor", + non_compliant: "No cumplidor", + not_started: "No iniciado", + in_progress: "En progreso", published: "Publicado", - needs_review: "Necesita Revisión", + needs_review: "Necesita revisión", draft: "Borrador", - not_assessed: "No Evaluado", + not_assessed: "No evaluado", assessed: "Evaluado", active: "Activo", inactive: "Inactivo", - title: "Estado", + title: "Estado" }, filters: { clear: "Limpiar filtros", @@ -59,9 +59,9 @@ export default { status: "Estado", department: "Departamento", owner: { - label: "Asignado a", - placeholder: "Filtrar por asignado", - }, + label: "Asignado", + placeholder: "Filtrar por asignado" + } }, table: { title: "Título", @@ -69,7 +69,7 @@ export default { assigned_to: "Asignado a", due_date: "Fecha de vencimiento", last_updated: "Última actualización", - no_results: "No se encontraron resultados", + no_results: "No se encontraron resultados" }, empty_states: { no_results: { @@ -79,12 +79,12 @@ export default { description: "Intenta otra búsqueda o ajusta los filtros", description_filters: "Intenta otra búsqueda o ajusta los filtros", description_no_tasks: "Crea una tarea para comenzar", - description_no_risks: "Crea un riesgo para comenzar", + description_no_risks: "Crea un riesgo para comenzar" }, no_items: { title: "No se encontraron elementos", - description: "Intenta ajustar tu búsqueda o filtros", - }, + description: "Intenta ajustar tu búsqueda o filtros" + } }, pagination: { of: "de", @@ -94,42 +94,39 @@ export default { go_to_first_page: "Ir a la primera página", go_to_previous_page: "Ir a la página anterior", go_to_next_page: "Ir a la siguiente página", - go_to_last_page: "Ir a la última página", + go_to_last_page: "Ir a la última página" }, comments: { title: "Comentarios", - description: - "Agrega un comentario utilizando el formulario a continuación.", + description: "Agrega un comentario utilizando el formulario a continuación.", add: "Nuevo comentario", - new: "Nuevo Comentario", - save: "Guardar Comentario", + "new": "Nuevo comentario", + save: "Guardar comentario", success: "Comentario agregado con éxito", error: "Error al agregar comentario", placeholder: "Escribe tu comentario aquí...", empty: { - title: "Sin comentarios aún", - description: "Sé el primero en agregar un comentario", - }, + title: "No hay comentarios aún", + description: "Sé el primero en agregar un comentario" + } }, attachments: { title: "Adjuntos", - description: "Agrega un archivo haciendo clic en 'Agregar Adjunto'.", - upload: "Subir archivo adjunto", - upload_description: - "Sube un adjunto o agrega un enlace a un recurso externo.", + description: "Agrega un archivo haciendo clic en 'Agregar adjunto'.", + upload: "Subir adjunto", + upload_description: "Sube un adjunto o agrega un enlace a un recurso externo.", drop: "Suelta los archivos aquí", - drop_description: - "Suelta archivos aquí o haz clic para elegir archivos de tu dispositivo.", - drop_files_description: "Los archivos pueden tener un tamaño de hasta ", + drop_description: "Suelta archivos aquí o haz clic para elegir archivos de tu dispositivo.", + drop_files_description: "Los archivos pueden ser de hasta ", empty: { - title: "Sin adjuntos", - description: "Agrega un archivo haciendo clic en 'Agregar Adjunto'.", + title: "No hay adjuntos", + description: "Agrega un archivo haciendo clic en 'Agregar adjunto'." }, toasts: { error: "Algo salió mal, por favor intenta de nuevo.", error_uploading_files: "No se puede subir más de 1 archivo a la vez", error_uploading_files_multiple: "No se pueden subir más de 10 archivos", - error_no_files_selected: "No se seleccionaron archivos", + error_no_files_selected: "No se han seleccionado archivos", error_file_rejected: "El archivo {file} fue rechazado", error_failed_to_upload_files: "Error al subir archivos", error_failed_to_upload_files_multiple: "Error al subir archivos", @@ -139,18 +136,18 @@ export default { success_uploading_files_single: "Archivo subido con éxito", success_uploading_files_target: "Archivos subidos", uploading_files: "Subiendo {target}...", - remove_file: "Eliminar archivo", - }, + remove_file: "Eliminar archivo" + } }, notifications: { inbox: "Bandeja de entrada", archive: "Archivo", archive_all: "Archivar todo", - no_notifications: "No hay nuevas notificaciones", + no_notifications: "No hay nuevas notificaciones" }, edit: "Editar", errors: { - unexpected_error: "Ocurrió un error inesperado", + unexpected_error: "Ocurrió un error inesperado" }, description: "Descripción", last_updated: "Última actualización", @@ -159,35 +156,34 @@ export default { weekly: "Semanal", monthly: "Mensual", quarterly: "Trimestral", - yearly: "Anual", - }, + yearly: "Anual" + } }, header: { discord: { - button: "Únete a nosotros en Discord", + button: "Únete a nosotros en Discord" }, feedback: { button: "Comentarios", title: "¡Gracias por tus comentarios!", description: "Volveremos contigo lo antes posible", - placeholder: - "Ideas para mejorar esta página o problemas que estás experimentando.", + placeholder: "Ideas para mejorar esta página o problemas que estás experimentando.", success: "¡Gracias por tus comentarios!", error: "Error al enviar comentarios - ¿intentar de nuevo?", - send: "Enviar Comentarios", - }, + send: "Enviar comentarios" + } }, not_found: { title: "404 - Página no encontrada", description: "La página que buscas no existe.", - return: "Regresar al panel", + "return": "Volver al panel de control" }, theme: { options: { light: "Claro", dark: "Oscuro", - system: "Sistema", - }, + system: "Sistema" + } }, sidebar: { overview: "Resumen", @@ -197,12 +193,11 @@ export default { integrations: "Integraciones", settings: "Configuraciones", evidence: "Tareas de Evidencia", - people: "Personas", + people: "Personas" }, auth: { title: "Automatiza el cumplimiento de SOC 2, ISO 27001 y GDPR con IA.", - description: - "Crea una cuenta gratuita o inicia sesión con una cuenta existente para continuar.", + description: "Crea una cuenta gratuita o inicia sesión con una cuenta existente para continuar.", options: "Más opciones", google: "Continuar con Google", email: { @@ -210,14 +205,12 @@ export default { placeholder: "Ingresa la dirección de correo electrónico", button: "Continuar con correo electrónico", magic_link_sent: "Enlace mágico enviado", - magic_link_description: - "Revisa tu bandeja de entrada para un enlace mágico.", + magic_link_description: "Revisa tu bandeja de entrada para un enlace mágico.", magic_link_try_again: "Intenta de nuevo.", success: "Correo enviado - ¡revisa tu bandeja de entrada!", - error: "Error al enviar el correo - ¿intentar de nuevo?", + error: "Error al enviar el correo - ¿intentar de nuevo?" }, - terms: - "Al hacer clic en continuar, reconoces que has leído y aceptas los Términos de Servicio y la Política de Privacidad.", + terms: "Al hacer clic en continuar, reconoces que has leído y aceptas los Términos de Servicio y la Política de Privacidad." }, onboarding: { title: "Crear una organización", @@ -226,71 +219,71 @@ export default { fields: { name: { label: "Nombre de la Organización", - placeholder: "El nombre de tu organización", + placeholder: "El nombre de tu organización" }, website: { label: "Sitio web", - placeholder: "El sitio web de tu organización", + placeholder: "El sitio web de tu organización" }, subdomain: { label: "Subdominio", - placeholder: "ejemplo", + placeholder: "ejemplo" }, fullName: { label: "Tu Nombre", - placeholder: "Tu nombre completo", - }, + placeholder: "Tu nombre completo" + } }, success: "¡Gracias, estás listo!", error: "Algo salió mal, por favor intenta de nuevo.", unavailable: "No disponible", check_availability: "Verificando disponibilidad", - available: "Disponible", + available: "Disponible" }, overview: { title: "Resumen", framework_chart: { - title: "Progreso del Marco", + title: "Progreso del Marco" }, requirement_chart: { - title: "Estado de Cumplimiento", - }, + title: "Estado de Cumplimiento" + } }, policies: { dashboard: { - title: "Panel", + title: "Panel de Control", all: "Todas las Políticas", policy_status: "Política por Estado", policies_by_assignee: "Políticas por Asignado", policies_by_framework: "Políticas por Marco", sub_pages: { - overview: "Descripción general", - edit_policy: "Editar política", - }, + overview: "Resumen", + edit_policy: "Editar Política" + } }, table: { - name: "Nombre de la Política", + name: "Nombre de la política", statuses: { draft: "Borrador", published: "Publicado", - archived: "Archivado", + archived: "Archivado" }, filters: { owner: { - label: "Asignado", - placeholder: "Filtrar por asignado", - }, - }, + label: "Responsable", + placeholder: "Filtrar por responsable" + } + } }, filters: { search: "Buscar políticas...", - all: "Todas las Políticas", + all: "Todas las políticas" }, status: { draft: "Borrador", published: "Publicado", - needs_review: "Necesita Revisión", - archived: "Archivado", + needs_review: "Necesita revisión", + archived: "Archivado" }, policies: "políticas", title: "Políticas", @@ -311,171 +304,159 @@ export default { title: "Resumen de la Política", form: { update_policy: "Actualizar Política", - update_policy_description: - "Actualice el título o la descripción de la política.", + update_policy_description: "Actualiza el título o la descripción de la política.", update_policy_success: "Política actualizada con éxito", update_policy_error: "Error al actualizar la política", update_policy_title: "Nombre de la Política", review_frequency: "Frecuencia de Revisión", - review_frequency_placeholder: "Seleccione una frecuencia de revisión", - review_date: "Fecha de Revisión", - review_date_placeholder: "Seleccione una fecha de revisión", - }, - }, + review_frequency_placeholder: "Selecciona una frecuencia de revisión", + review_date: "Fecha de revisión", + review_date_placeholder: "Seleccionar una fecha de revisión" + } + } }, evidence_tasks: { - evidence_tasks: "Tareas de Evidencia", - overview: "Resumen", + evidence_tasks: "Tareas de evidencia", + overview: "Resumen" }, risk: { risks: "riesgos", overview: "Resumen", - create: "Crear Nuevo Riesgo", + create: "Crear nuevo riesgo", vendor: { - title: "Gestión de Proveedores", + title: "Gestión de proveedores", dashboard: { - title: "Panel de Proveedores", - overview: "Resumen de Proveedores", - vendor_status: "Estado del Proveedor", - vendor_category: "Categorías de Proveedores", - vendors_by_assignee: "Proveedores por Asignado", - inherent_risk_description: - "Nivel de riesgo inicial antes de aplicar controles", - residual_risk_description: - "Nivel de riesgo restante después de aplicar controles", + title: "Tablero de proveedores", + overview: "Resumen del proveedor", + vendor_status: "Estado del proveedor", + vendor_category: "Categorías de proveedores", + vendors_by_assignee: "Proveedores por responsable", + inherent_risk_description: "Nivel de riesgo inicial antes de aplicar controles", + residual_risk_description: "Nivel de riesgo restante después de aplicar controles" }, register: { - title: "Registro de Proveedores", + title: "Registro de proveedores", table: { name: "Nombre", category: "Categoría", status: "Estado", - owner: "Propietario", - }, + owner: "Propietario" + } }, assessment: { - title: "Evaluación de Proveedores", - update_success: - "Evaluación de riesgo del proveedor actualizada con éxito", - update_error: - "Error al actualizar la evaluación de riesgo del proveedor", - inherent_risk: "Riesgo Inherente", - residual_risk: "Riesgo Residual", + title: "Evaluación del proveedor", + update_success: "Evaluación de riesgo del proveedor actualizada con éxito", + update_error: "Error al actualizar la evaluación de riesgo del proveedor", + inherent_risk: "Riesgo inherente", + residual_risk: "Riesgo residual" }, form: { - vendor_details: "Detalles del Proveedor", + vendor_details: "Detalles del proveedor", vendor_name: "Nombre", - vendor_name_placeholder: "Ingresa el nombre del proveedor", + vendor_name_placeholder: "Ingrese el nombre del proveedor", vendor_website: "Sitio web", - vendor_website_placeholder: "Ingresa el sitio web del proveedor", + vendor_website_placeholder: "Ingrese el sitio web del proveedor", vendor_description: "Descripción", - vendor_description_placeholder: "Ingresa la descripción del proveedor", + vendor_description_placeholder: "Ingrese la descripción del proveedor", vendor_category: "Categoría", - vendor_category_placeholder: "Selecciona categoría", + vendor_category_placeholder: "Seleccionar categoría", vendor_status: "Estado", - vendor_status_placeholder: "Selecciona estado", + vendor_status_placeholder: "Seleccionar estado", create_vendor_success: "Proveedor creado con éxito", create_vendor_error: "Error al crear el proveedor", - update_vendor: "Actualizar Proveedor", + update_vendor: "Actualizar proveedor", update_vendor_success: "Proveedor actualizado con éxito", update_vendor_error: "Error al actualizar el proveedor", - add_comment: "Agregar Comentario", + add_comment: "Agregar comentario" }, table: { name: "Nombre", category: "Categoría", status: "Estado", - owner: "Propietario", + owner: "Propietario" }, filters: { search_placeholder: "Buscar proveedores...", status_placeholder: "Filtrar por estado", category_placeholder: "Filtrar por categoría", - owner_placeholder: "Filtrar por propietario", + owner_placeholder: "Filtrar por propietario" }, empty_states: { no_vendors: { - title: "Aún no hay proveedores", - description: "Comienza creando tu primer proveedor", + title: "No hay proveedores aún", + description: "Comienza creando tu primer proveedor" }, no_results: { title: "No se encontraron resultados", description: "No hay proveedores que coincidan con tu búsqueda", - description_with_filters: "Intenta ajustar tus filtros", - }, + description_with_filters: "Intenta ajustar tus filtros" + } }, actions: { - create: "Crear Proveedor", + create: "Crear proveedor" }, status: { - not_assessed: "No Evaluado", - in_progress: "En Progreso", - assessed: "Evaluado", + not_assessed: "No evaluado", + in_progress: "En progreso", + assessed: "Evaluado" }, category: { cloud: "Nube", infrastructure: "Infraestructura", - software_as_a_service: "Software como Servicio", + software_as_a_service: "Software como servicio", finance: "Finanzas", marketing: "Marketing", sales: "Ventas", hr: "RRHH", - other: "Otro", + other: "Otro" }, risk_level: { - low: "Bajo Riesgo", - medium: "Riesgo Medio", - high: "Alto Riesgo", - unknown: "Riesgo Desconocido", - }, + low: "Riesgo bajo", + medium: "Riesgo medio", + high: "Riesgo alto", + unknown: "Riesgo desconocido" + } }, dashboard: { title: "Tablero", - overview: "Resumen de Riesgos", + overview: "Resumen de riesgos", risk_status: "Estado del Riesgo", risks_by_department: "Riesgos por Departamento", risks_by_assignee: "Riesgos por Asignado", - inherent_risk_description: - "El riesgo inherente se calcula como probabilidad * impacto. Calculado antes de aplicar cualquier control.", - residual_risk_description: - "El riesgo residual se calcula como probabilidad * impacto. Este es el nivel de riesgo después de aplicar controles.", - risk_assessment_description: - "Compara los niveles de riesgo inherente y residual", + inherent_risk_description: "El riesgo inherente se calcula como probabilidad * impacto. Calculado antes de que se apliquen controles.", + residual_risk_description: "El riesgo residual se calcula como probabilidad * impacto. Este es el nivel de riesgo después de que se aplican controles.", + risk_assessment_description: "Comparar los niveles de riesgo inherente y residual" }, register: { title: "Registro de Riesgos", table: { - risk: "Riesgo", + risk: "Riesgo" }, empty: { no_risks: { title: "Crea un riesgo para comenzar", - description: - "Rastrea y puntúa riesgos, crea y asigna tareas de mitigación para tu equipo, y gestiona tu registro de riesgos todo en una interfaz simple.", + description: "Rastrea y puntúa riesgos, crea y asigna tareas de mitigación para tu equipo, y gestiona tu registro de riesgos todo en una interfaz simple." }, - create_risk: "Crear un riesgo", - }, + create_risk: "Crear un riesgo" + } }, metrics: { probability: "Probabilidad", impact: "Impacto", inherentRisk: "Riesgo Inherente", - residualRisk: "Riesgo Residual", + residualRisk: "Riesgo Residual" }, form: { update_inherent_risk: "Guardar Riesgo Inherente", - update_inherent_risk_description: - "Actualiza el riesgo inherente del riesgo. Este es el nivel de riesgo antes de aplicar cualquier control.", + update_inherent_risk_description: "Actualiza el riesgo inherente del riesgo. Este es el nivel de riesgo antes de que se apliquen controles.", update_inherent_risk_success: "Riesgo inherente actualizado con éxito", update_inherent_risk_error: "Error al actualizar el riesgo inherente", update_residual_risk: "Guardar Riesgo Residual", - update_residual_risk_description: - "Actualiza el riesgo residual del riesgo. Este es el nivel de riesgo después de aplicar controles.", + update_residual_risk_description: "Actualiza el riesgo residual del riesgo. Este es el nivel de riesgo después de que se aplican controles.", update_residual_risk_success: "Riesgo residual actualizado con éxito", update_residual_risk_error: "Error al actualizar el riesgo residual", update_risk: "Actualizar Riesgo", - update_risk_description: - "Actualiza el título o la descripción del riesgo.", + update_risk_description: "Actualiza el título o la descripción del riesgo.", update_risk_success: "Riesgo actualizado con éxito", update_risk_error: "Error al actualizar el riesgo", create_risk_success: "Riesgo creado con éxito", @@ -490,7 +471,7 @@ export default { risk_department: "Departamento", risk_department_placeholder: "Selecciona un departamento", risk_status: "Estado del Riesgo", - risk_status_placeholder: "Selecciona un estado de riesgo", + risk_status_placeholder: "Selecciona un estado de riesgo" }, tasks: { title: "Tareas", @@ -505,41 +486,35 @@ export default { description: "Descripción", description_description: "Ingresa una descripción para la tarea", due_date: "Fecha de Vencimiento", - due_date_description: - "Selecciona la fecha de vencimiento para la tarea", + due_date_description: "Selecciona la fecha de vencimiento para la tarea", success: "Tarea creada con éxito", - error: "Error al crear la tarea", + error: "Error al crear la tarea" }, sheet: { title: "Crear Tarea", update: "Actualizar Tarea", - update_description: "Actualiza el título o la descripción de la tarea.", + update_description: "Actualiza el título o la descripción de la tarea." }, empty: { - description_create: - "Crea una tarea de mitigación para este riesgo, agrega un plan de tratamiento y asígnala a un miembro del equipo.", - }, - }, + description_create: "Crea una tarea de mitigación para este riesgo, añade un plan de tratamiento y asígnalo a un miembro del equipo." + } + } }, settings: { general: { title: "General", org_name: "Nombre de la organización", - org_name_description: - "Este es el nombre visible de tu organización. Debes usar el nombre legal de tu organización.", + org_name_description: "Este es el nombre visible de tu organización. Debes usar el nombre legal de tu organización.", org_name_tip: "Por favor, usa un máximo de 32 caracteres.", - org_website: "Sitio web de la organización", - org_website_description: - "Esta es la URL oficial del sitio web de tu organización. Asegúrate de incluir la URL completa con https://.", + org_website: "Sitio Web de la Organización", + org_website_description: "Esta es la URL del sitio web oficial de tu organización. Asegúrate de incluir la URL completa con https://.", org_website_tip: "Por favor, ingresa una URL válida incluyendo https://", org_website_error: "Error al actualizar el sitio web de la organización", org_website_updated: "Sitio web de la organización actualizado", org_delete: "Eliminar organización", - org_delete_description: - "Elimina permanentemente tu organización y todo su contenido de la plataforma Comp AI. Esta acción no es reversible - por favor, continúa con precaución.", + org_delete_description: "Elimina permanentemente tu organización y todo su contenido de la plataforma Comp AI. Esta acción no es reversible - por favor, continúa con precaución.", org_delete_alert_title: "¿Estás absolutamente seguro?", - org_delete_alert_description: - "Esta acción no se puede deshacer. Esto eliminará permanentemente tu organización y eliminará tus datos de nuestros servidores.", + org_delete_alert_description: "Esta acción no se puede deshacer. Esto eliminará permanentemente tu organización y eliminará tus datos de nuestros servidores.", org_delete_error: "Error al eliminar la organización", org_delete_success: "Organización eliminada", org_name_updated: "Nombre de la organización actualizado", @@ -548,14 +523,14 @@ export default { delete_button: "Eliminar", delete_confirm: "ELIMINAR", delete_confirm_tip: "Escribe ELIMINAR para confirmar.", - cancel_button: "Cancelar", + cancel_button: "Cancelar" }, members: { - title: "Miembros", + title: "Miembros" }, billing: { - title: "Facturación", - }, + title: "Facturación" + } }, user_menu: { theme: "Tema", @@ -564,81 +539,75 @@ export default { account: "Cuenta", support: "Soporte", settings: "Configuraciones", - teams: "Equipos", + teams: "Equipos" }, frameworks: { title: "Marcos", controls: { title: "Controles", - description: "Revisa y gestiona los controles de cumplimiento", + description: "Revisar y gestionar controles de cumplimiento", table: { status: "Estado", control: "Control", artifacts: "Artefactos", - actions: "Acciones", + actions: "Acciones" }, statuses: { - not_started: "No iniciado", - compliant: "Cumple", - non_compliant: "No cumple", + not_started: "No Comenzado", completed: "Completado", - in_progress: "En Progreso", - }, + in_progress: "En Progreso" + } }, overview: { - error: "Error al cargar los marcos", + error: "Error al cargar marcos", loading: "Cargando marcos...", empty: { title: "No se han seleccionado marcos", - description: "Seleccione marcos para comenzar su viaje de cumplimiento", + description: "Selecciona marcos para comenzar tu viaje de cumplimiento" }, progress: { - title: "Progreso del marco", + title: "Progreso del Marco", empty: { title: "Aún no hay marcos", - description: - "Comience agregando un marco de cumplimiento para rastrear su progreso", - action: "Agregar marco", - }, + description: "Comienza agregando un marco de cumplimiento para rastrear tu progreso", + action: "Agregar Marco" + } }, grid: { welcome: { title: "Bienvenido a Comp AI", - description: - "Comience seleccionando los marcos de cumplimiento que le gustaría implementar. Le ayudaremos a gestionar y rastrear su viaje de cumplimiento a través de múltiples estándares.", - action: "Comenzar", + description: "Comienza seleccionando los marcos de cumplimiento que te gustaría implementar. Te ayudaremos a gestionar y rastrear tu viaje de cumplimiento a través de múltiples estándares.", + action: "Comenzar" }, - title: "Seleccionar marcos", + title: "Seleccionar Marcos", version: "Versión", actions: { clear: "Borrar", - confirm: "Confirmar selección", - }, - }, - }, + confirm: "Confirmar Selección" + } + } + } }, vendor: { title: "Tablero", - register_title: "Gestión de proveedores", + register_title: "Gestión de Proveedores", dashboard: { title: "Tablero", - overview: "Resumen del proveedor", - vendor_status: "Estado del proveedor", - vendor_category: "Categorías de proveedores", - vendors_by_assignee: "Proveedores por asignado", - inherent_risk_description: - "Nivel de riesgo inicial antes de aplicar controles", - residual_risk_description: - "Nivel de riesgo restante después de aplicar controles", + overview: "Resumen del Proveedor", + vendor_status: "Estado del Proveedor", + vendor_category: "Categorías de Proveedores", + vendors_by_assignee: "Proveedores por Asignado", + inherent_risk_description: "Nivel de riesgo inicial antes de aplicar controles", + residual_risk_description: "Nivel de riesgo restante después de aplicar controles" }, register: { - title: "Registro de proveedores", + title: "Registro de Proveedores", table: { name: "Nombre", category: "Categoría", status: "Estado", - owner: "Propietario", - }, + owner: "Propietario" + } }, category: { cloud: "Nube", @@ -648,11 +617,11 @@ export default { marketing: "Marketing", sales: "Ventas", hr: "RRHH", - other: "Otro", + other: "Otro" }, vendors: "proveedores", form: { - vendor_details: "Detalles del proveedor", + vendor_details: "Detalles del Proveedor", vendor_name: "Nombre", vendor_name_placeholder: "Ingresa el nombre del proveedor", vendor_website: "Sitio web", @@ -660,92 +629,92 @@ export default { vendor_description: "Descripción", vendor_description_placeholder: "Ingresa la descripción del proveedor", vendor_category: "Categoría", - vendor_category_placeholder: "Selecciona categoría", + vendor_category_placeholder: "Seleccionar categoría", vendor_status: "Estado", - vendor_status_placeholder: "Selecciona estado", + vendor_status_placeholder: "Seleccionar estado", create_vendor_success: "Proveedor creado con éxito", create_vendor_error: "Error al crear el proveedor", update_vendor_success: "Proveedor actualizado con éxito", update_vendor_error: "Error al actualizar el proveedor", - contacts: "Contactos del proveedor", - contact_name: "Nombre del contacto", - contact_email: "Correo electrónico del contacto", - contact_role: "Rol del contacto", - add_contact: "Agregar contacto", - new_contact: "Nuevo contacto", - min_one_contact_required: "Un proveedor debe tener al menos un contacto", + contacts: "Contactos del Proveedor", + contact_name: "Nombre del Contacto", + contact_email: "Correo Electrónico del Contacto", + contact_role: "Rol del Contacto", + add_contact: "Agregar Contacto", + new_contact: "Nuevo Contacto", + min_one_contact_required: "Un proveedor debe tener al menos un contacto" }, empty_states: { no_vendors: { title: "Aún no hay proveedores", - description: "Comienza creando tu primer proveedor", + description: "Comienza creando tu primer proveedor" }, no_results: { title: "No se encontraron resultados", - description: "No hay proveedores que coincidan con tu búsqueda", - description_with_filters: "Intenta ajustar tus filtros", - }, - }, + description: "Ningún proveedor coincide con tu búsqueda", + description_with_filters: "Intenta ajustar tus filtros" + } + } }, people: { title: "Personas", details: { taskProgress: "Progreso de la Tarea", tasks: "Tareas", - noTasks: "Aún no hay tareas asignadas", + noTasks: "No hay tareas asignadas aún" }, description: "Gestiona a los miembros de tu equipo y sus roles.", filters: { search: "Buscar personas...", - role: "Filtrar por rol", + role: "Filtrar por rol" }, actions: { - invite: "Agregar empleado", - clear: "Limpiar filtros", + invite: "Agregar Empleado", + clear: "Limpiar filtros" }, table: { name: "Nombre", - email: "Correo electrónico", + email: "Correo Electrónico", department: "Departamento", - externalId: "ID externo", + externalId: "ID Externo" }, empty: { no_employees: { - title: "Aún no hay empleados", - description: "Comienza invitando a tu primer miembro del equipo.", + title: "No hay empleados aún", + description: "Comienza invitando a tu primer miembro del equipo." }, no_results: { title: "No se encontraron resultados", description: "No hay empleados que coincidan con tu búsqueda", - description_with_filters: "Intenta ajustar tus filtros", - }, + description_with_filters: "Intenta ajustar tus filtros" + } }, invite: { - title: "Agregar empleado", + title: "Agregar Empleado", description: "Agrega un empleado a tu organización.", email: { label: "Dirección de correo electrónico", - placeholder: "Ingresa la dirección de correo electrónico", + placeholder: "Ingresa la dirección de correo electrónico" }, role: { label: "Rol", - placeholder: "Selecciona un rol", + placeholder: "Selecciona un rol" }, name: { label: "Nombre", - placeholder: "Ingresa el nombre", + placeholder: "Ingresa el nombre" }, department: { label: "Departamento", - placeholder: "Selecciona un departamento", + placeholder: "Selecciona un departamento" }, - submit: "Agregar empleado", + submit: "Agregar Empleado", success: "Empleado agregado con éxito", - error: "Error al agregar empleado", - }, + error: "Error al agregar empleado" + } }, errors: { - unexpected: "Algo salió mal, por favor intenta de nuevo", + unexpected: "Algo salió mal, por favor intenta de nuevo" }, sub_pages: { risk: { @@ -754,29 +723,29 @@ export default { risk_overview: "Resumen de Riesgos", risk_comments: "Comentarios sobre Riesgos", tasks: { - task_overview: "Resumen de Tareas", - }, + task_overview: "Resumen de Tareas" + } }, policies: { all: "Todas las Políticas", editor: "Editor de Políticas", - policy_details: "Detalles de la política", + policy_details: "Detalles de la Política" }, people: { all: "Personas", - employee_details: "Detalles del Empleado", + employee_details: "Detalles del Empleado" }, settings: { - members: "Miembros del Equipo", + members: "Miembros del Equipo" }, frameworks: { - overview: "Marcos", + overview: "Marcos" }, evidence: { title: "Evidencia", - list: "Lista de Evidencias", - overview: "Resumen de Evidencias", - }, + list: "Lista de Evidencia", + overview: "Resumen de Evidencia" + } }, editor: { ai: { @@ -784,25 +753,51 @@ export default { thinking_spinner: "La IA está pensando", edit_or_generate: "Editar o generar...", tell_ai_what_to_do_next: "Dile a la IA qué hacer a continuación", - request_limit_reached: - "Has alcanzado tu límite de solicitudes para el día.", + request_limit_reached: "Ha alcanzado su límite de solicitudes para el día." }, ai_selector: { improve: "Mejorar la redacción", fix: "Corregir la gramática", shorter: "Hacer más corto", longer: "Hacer más largo", - continue: "Continuar escribiendo", + "continue": "Continuar escribiendo", replace: "Reemplazar selección", insert: "Insertar abajo", - discard: "Descartar", - }, + discard: "Descartar" + } }, evidence: { - title: "Tareas de Evidencia", - description: - "Gestiona y rastrea las tareas de evidencia para tus requisitos de cumplimiento.", - dashboard: "Tablero", - list: "Todas las Evidencias", - }, + title: "Evidencia", + list: "Toda la Evidencia", + overview: "Resumen de Evidencia", + edit: "Editar Evidencia", + dashboard: { + layout: "Tablero", + layout_back_button: "Atrás", + title: "Tablero de Evidencia", + by_department: "Por Departamento", + by_assignee: "Por Asignado", + by_framework: "Por Marco" + }, + items: "elementos", + status: { + up_to_date: "Actualizado", + needs_review: "Necesita Revisión", + draft: "Borrador", + empty: "Vacío" + }, + departments: { + none: "Sin Categorizar", + admin: "Administración", + gov: "Gobernanza", + hr: "Recursos Humanos", + it: "Tecnologías de la Información", + itsm: "Gestión de Servicios de TI", + qms: "Gestión de Calidad" + }, + details: { + review_section: "Revisar Información", + content: "Contenido de Evidencia" + } + } } as const; diff --git a/apps/app/src/locales/fr.ts b/apps/app/src/locales/fr.ts index 556324dd6c..5ca6b636f3 100644 --- a/apps/app/src/locales/fr.ts +++ b/apps/app/src/locales/fr.ts @@ -4,36 +4,36 @@ export default { fr: "Français", no: "Norvégien", pt: "Portugais", - en: "Anglais", + en: "Anglais" }, language: { title: "Langues", - description: "Changez la langue utilisée dans l'interface utilisateur.", - placeholder: "Sélectionner la langue", + description: "Changer la langue utilisée dans l'interface utilisateur.", + placeholder: "Sélectionner la langue" }, common: { actions: { save: "Enregistrer", edit: "Modifier", - delete: "Supprimer", + "delete": "Supprimer", cancel: "Annuler", clear: "Effacer", create: "Créer", send: "Envoyer", - return: "Retourner", + "return": "Retourner", success: "Succès", error: "Erreur", next: "Suivant", - complete: "Terminer", - addNew: "Ajouter Nouveau", + complete: "Compléter", + addNew: "Ajouter nouveau" }, assignee: { - label: "Assigné à", - placeholder: "Sélectionner l'assigné", + label: "Assigné", + placeholder: "Sélectionner l'assigné" }, date: { pick: "Choisir une date", - due_date: "Date d'échéance", + due_date: "Date d'échéance" }, status: { open: "Ouvert", @@ -51,17 +51,17 @@ export default { assessed: "Évalué", active: "Actif", inactive: "Inactif", - title: "Statut", + title: "Statut" }, filters: { clear: "Effacer les filtres", - search: "Rechercher...", + search: "Recherche...", status: "Statut", department: "Département", owner: { - label: "Assigné à", - placeholder: "Filtrer par assigné", - }, + label: "Assigné", + placeholder: "Filtrer par assigné" + } }, table: { title: "Titre", @@ -69,7 +69,7 @@ export default { assigned_to: "Assigné à", due_date: "Date d'échéance", last_updated: "Dernière mise à jour", - no_results: "Aucun résultat trouvé", + no_results: "Aucun résultat trouvé" }, empty_states: { no_results: { @@ -77,15 +77,14 @@ export default { title_tasks: "Aucune tâche trouvée", title_risks: "Aucun risque trouvé", description: "Essayez une autre recherche ou ajustez les filtres", - description_filters: - "Essayez une autre recherche ou ajustez les filtres", + description_filters: "Essayez une autre recherche ou ajustez les filtres", description_no_tasks: "Créez une tâche pour commencer", - description_no_risks: "Créez un risque pour commencer", + description_no_risks: "Créez un risque pour commencer" }, no_items: { title: "Aucun élément trouvé", - description: "Essayez d'ajuster votre recherche ou vos filtres", - }, + description: "Essayez d'ajuster votre recherche ou vos filtres" + } }, pagination: { of: "de", @@ -95,69 +94,60 @@ export default { go_to_first_page: "Aller à la première page", go_to_previous_page: "Aller à la page précédente", go_to_next_page: "Aller à la page suivante", - go_to_last_page: "Aller à la dernière page", + go_to_last_page: "Aller à la dernière page" }, comments: { title: "Commentaires", - description: - "Ajoutez un commentaire en utilisant le formulaire ci-dessous.", + description: "Ajoutez un commentaire en utilisant le formulaire ci-dessous.", add: "Nouveau commentaire", - new: "Nouveau commentaire", + "new": "Nouveau commentaire", save: "Enregistrer le commentaire", success: "Commentaire ajouté avec succès", error: "Échec de l'ajout du commentaire", placeholder: "Écrivez votre commentaire ici...", empty: { title: "Aucun commentaire pour le moment", - description: "Soyez le premier à ajouter un commentaire", - }, + description: "Soyez le premier à ajouter un commentaire" + } }, attachments: { title: "Pièces jointes", - description: - "Ajoutez un fichier en cliquant sur 'Ajouter une pièce jointe'.", - upload: "Télécharger une pièce jointe", - upload_description: - "Téléchargez une pièce jointe ou ajoutez un lien vers une ressource externe.", + description: "Ajoutez un fichier en cliquant sur 'Ajouter une pièce jointe'.", + upload: "Télécharger la pièce jointe", + upload_description: "Téléchargez une pièce jointe ou ajoutez un lien vers une ressource externe.", drop: "Déposez les fichiers ici", - drop_description: - "Déposez des fichiers ici ou cliquez pour choisir des fichiers sur votre appareil.", - drop_files_description: "Les fichiers peuvent aller jusqu'à ", + drop_description: "Déposez des fichiers ici ou cliquez pour choisir des fichiers depuis votre appareil.", + drop_files_description: "Les fichiers peuvent faire jusqu'à ", empty: { title: "Aucune pièce jointe", - description: - "Ajoutez un fichier en cliquant sur 'Ajouter une pièce jointe'.", + description: "Ajoutez un fichier en cliquant sur 'Ajouter une pièce jointe'." }, toasts: { - error: "Une erreur s'est produite, veuillez réessayer.", - error_uploading_files: - "Impossible de télécharger plus d'un fichier à la fois", - error_uploading_files_multiple: - "Impossible de télécharger plus de 10 fichiers", + error: "Quelque chose a mal tourné, veuillez réessayer.", + error_uploading_files: "Impossible de télécharger plus d'un fichier à la fois", + error_uploading_files_multiple: "Impossible de télécharger plus de 10 fichiers", error_no_files_selected: "Aucun fichier sélectionné", error_file_rejected: "Le fichier {file} a été rejeté", error_failed_to_upload_files: "Échec du téléchargement des fichiers", - error_failed_to_upload_files_multiple: - "Échec du téléchargement des fichiers", - error_failed_to_upload_files_single: - "Échec du téléchargement du fichier", + error_failed_to_upload_files_multiple: "Échec du téléchargement des fichiers", + error_failed_to_upload_files_single: "Échec du téléchargement du fichier", success_uploading_files: "Fichiers téléchargés avec succès", success_uploading_files_multiple: "Fichiers téléchargés avec succès", success_uploading_files_single: "Fichier téléchargé avec succès", success_uploading_files_target: "Fichiers téléchargés", uploading_files: "Téléchargement de {target}...", - remove_file: "Supprimer le fichier", - }, + remove_file: "Supprimer le fichier" + } }, notifications: { inbox: "Boîte de réception", archive: "Archive", archive_all: "Archiver tout", - no_notifications: "Aucune nouvelle notification", + no_notifications: "Aucune nouvelle notification" }, edit: "Modifier", errors: { - unexpected_error: "Une erreur inattendue est survenue", + unexpected_error: "Une erreur inattendue est survenue" }, description: "Description", last_updated: "Dernière mise à jour", @@ -166,65 +156,61 @@ export default { weekly: "Hebdomadaire", monthly: "Mensuel", quarterly: "Trimestriel", - yearly: "Annuel", - }, + yearly: "Annuel" + } }, header: { discord: { - button: "Rejoignez-nous sur Discord", + button: "Rejoignez-nous sur Discord" }, feedback: { button: "Retour d'information", title: "Merci pour vos retours !", description: "Nous reviendrons vers vous dès que possible", - placeholder: - "Idées pour améliorer cette page ou problèmes que vous rencontrez.", + placeholder: "Idées pour améliorer cette page ou problèmes que vous rencontrez.", success: "Merci pour vos retours !", - error: "Erreur lors de l'envoi du retour - réessayer ?", - send: "Envoyer un retour", - }, + error: "Erreur lors de l'envoi des retours - réessayer ?", + send: "Envoyer des retours" + } }, not_found: { title: "404 - Page non trouvée", description: "La page que vous recherchez n'existe pas.", - return: "Retour au tableau de bord", + "return": "Retour au tableau de bord" }, theme: { options: { light: "Clair", dark: "Sombre", - system: "Système", - }, + system: "Système" + } }, sidebar: { overview: "Aperçu", policies: "Politiques", - risk: "Gestion des Risques", + risk: "Gestion des risques", vendors: "Fournisseurs", integrations: "Intégrations", settings: "Paramètres", evidence: "Tâches de preuve", - people: "Personnes", + people: "Personnes" }, auth: { title: "Automatisez la conformité SOC 2, ISO 27001 et RGPD avec l'IA.", - description: - "Créez un compte gratuit ou connectez-vous avec un compte existant pour continuer.", + description: "Créez un compte gratuit ou connectez-vous avec un compte existant pour continuer.", options: "Plus d'options", google: "Continuer avec Google", email: { description: "Entrez votre adresse e-mail pour continuer.", - placeholder: "Entrez l'adresse e-mail", + placeholder: "Entrer l'adresse e-mail", button: "Continuer avec l'e-mail", magic_link_sent: "Lien magique envoyé", - magic_link_description: - "Vérifiez votre boîte de réception pour un lien magique.", + magic_link_description: "Vérifiez votre boîte de réception pour un lien magique.", magic_link_try_again: "Réessayer.", success: "E-mail envoyé - vérifiez votre boîte de réception !", - error: "Erreur lors de l'envoi de l'e-mail - réessayer ?", + error: "Erreur lors de l'envoi de l'e-mail - réessayer ?" }, - terms: - "En cliquant sur continuer, vous reconnaissez avoir lu et accepté les Conditions d'utilisation et la Politique de confidentialité.", + terms: "En cliquant sur continuer, vous reconnaissez avoir lu et accepté les Conditions d'utilisation et la Politique de confidentialité." }, onboarding: { title: "Créer une organisation", @@ -233,71 +219,71 @@ export default { fields: { name: { label: "Nom de l'organisation", - placeholder: "Le nom de votre organisation", + placeholder: "Le nom de votre organisation" }, website: { - label: "Site Web", - placeholder: "Le site Web de votre organisation", + label: "Site web", + placeholder: "Le site web de votre organisation" }, subdomain: { label: "Sous-domaine", - placeholder: "exemple", + placeholder: "exemple" }, fullName: { - label: "Votre Nom", - placeholder: "Votre nom complet", - }, + label: "Votre nom", + placeholder: "Votre nom complet" + } }, success: "Merci, vous êtes prêt !", - error: "Une erreur s'est produite, veuillez réessayer.", + error: "Quelque chose s'est mal passé, veuillez réessayer.", unavailable: "Indisponible", check_availability: "Vérification de la disponibilité", - available: "Disponible", + available: "Disponible" }, overview: { title: "Aperçu", framework_chart: { - title: "Progrès du cadre", + title: "Progrès du cadre" }, requirement_chart: { - title: "État de conformité", - }, + title: "Statut de conformité" + } }, policies: { dashboard: { title: "Tableau de bord", all: "Toutes les politiques", - policy_status: "Politique par Statut", + policy_status: "Politique par statut", policies_by_assignee: "Politiques par responsable", policies_by_framework: "Politiques par cadre", sub_pages: { overview: "Aperçu", - edit_policy: "Modifier la politique", - }, + edit_policy: "Modifier la politique" + } }, table: { name: "Nom de la politique", statuses: { draft: "Brouillon", published: "Publié", - archived: "Archivé", + archived: "Archivé" }, filters: { owner: { label: "Responsable", - placeholder: "Filtrer par responsable", - }, - }, + placeholder: "Filtrer par responsable" + } + } }, filters: { search: "Rechercher des politiques...", - all: "Toutes les politiques", + all: "Toutes les politiques" }, status: { draft: "Brouillon", published: "Publié", - needs_review: "Nécessite une révision", - archived: "Archivé", + needs_review: "Besoin de révision", + archived: "Archivé" }, policies: "politiques", title: "Politiques", @@ -310,29 +296,28 @@ export default { create_first: "Créer la première politique", no_description: "Aucune description fournie", last_updated: "Dernière mise à jour : {{date}}", - save: "Sauvegarder", - saving: "Sauvegarde en cours...", - saved_success: "Politique sauvegardée avec succès", - saved_error: "Échec de la sauvegarde de la politique", + save: "Enregistrer", + saving: "Enregistrement...", + saved_success: "Politique enregistrée avec succès", + saved_error: "Échec de l'enregistrement de la politique", overview: { - title: "Aperçu de la Politique", + title: "Aperçu de la politique", form: { - update_policy: "Mettre à jour la Politique", - update_policy_description: - "Mettez à jour le titre ou la description de la politique.", + update_policy: "Mettre à jour la politique", + update_policy_description: "Mettez à jour le titre ou la description de la politique.", update_policy_success: "Politique mise à jour avec succès", update_policy_error: "Échec de la mise à jour de la politique", - update_policy_title: "Nom de la Politique", - review_frequency: "Fréquence de Révision", + update_policy_title: "Nom de la politique", + review_frequency: "Fréquence de révision", review_frequency_placeholder: "Sélectionnez une fréquence de révision", - review_date: "Date de Révision", - review_date_placeholder: "Sélectionnez une date de révision", - }, - }, + review_date: "Date de révision", + review_date_placeholder: "Sélectionnez une date de révision" + } + } }, evidence_tasks: { evidence_tasks: "Tâches de preuve", - overview: "Aperçu", + overview: "Aperçu" }, risk: { risks: "risques", @@ -343,13 +328,11 @@ export default { dashboard: { title: "Tableau de bord des fournisseurs", overview: "Aperçu des fournisseurs", - vendor_status: "État du fournisseur", + vendor_status: "Statut du fournisseur", vendor_category: "Catégories de fournisseurs", vendors_by_assignee: "Fournisseurs par responsable", - inherent_risk_description: - "Niveau de risque initial avant l'application de tout contrôle", - residual_risk_description: - "Niveau de risque restant après l'application des contrôles", + inherent_risk_description: "Niveau de risque initial avant l'application de tout contrôle", + residual_risk_description: "Niveau de risque restant après l'application des contrôles" }, register: { title: "Registre des fournisseurs", @@ -357,67 +340,65 @@ export default { name: "Nom", category: "Catégorie", status: "Statut", - owner: "Propriétaire", - }, + owner: "Propriétaire" + } }, assessment: { title: "Évaluation des fournisseurs", - update_success: - "Évaluation du risque fournisseur mise à jour avec succès", - update_error: - "Échec de la mise à jour de l'évaluation du risque fournisseur", + update_success: "Évaluation du risque fournisseur mise à jour avec succès", + update_error: "Échec de la mise à jour de l'évaluation du risque fournisseur", inherent_risk: "Risque inhérent", - residual_risk: "Risque résiduel", + residual_risk: "Risque résiduel" }, form: { vendor_details: "Détails du fournisseur", vendor_name: "Nom", vendor_name_placeholder: "Entrez le nom du fournisseur", - vendor_website: "Site Web", - vendor_website_placeholder: "Entrez le site Web du fournisseur", + vendor_website: "Site web", + vendor_website_placeholder: "Entrez le site web du fournisseur", vendor_description: "Description", vendor_description_placeholder: "Entrez la description du fournisseur", vendor_category: "Catégorie", - vendor_category_placeholder: "Sélectionnez une catégorie", + vendor_category_placeholder: "Sélectionner une catégorie", vendor_status: "Statut", - vendor_status_placeholder: "Sélectionnez un statut", + vendor_status_placeholder: "Sélectionner un statut", create_vendor_success: "Fournisseur créé avec succès", create_vendor_error: "Échec de la création du fournisseur", update_vendor: "Mettre à jour le fournisseur", update_vendor_success: "Fournisseur mis à jour avec succès", update_vendor_error: "Échec de la mise à jour du fournisseur", - add_comment: "Ajouter un commentaire", + add_comment: "Ajouter un commentaire" }, table: { name: "Nom", category: "Catégorie", status: "Statut", - owner: "Propriétaire", + owner: "Propriétaire" }, filters: { search_placeholder: "Rechercher des fournisseurs...", status_placeholder: "Filtrer par statut", category_placeholder: "Filtrer par catégorie", - owner_placeholder: "Filtrer par propriétaire", + owner_placeholder: "Filtrer par propriétaire" }, empty_states: { no_vendors: { title: "Aucun fournisseur pour le moment", - description: "Commencez par créer votre premier fournisseur", + description: "Commencez par créer votre premier fournisseur" }, no_results: { title: "Aucun résultat trouvé", description: "Aucun fournisseur ne correspond à votre recherche", - description_with_filters: "Essayez d'ajuster vos filtres", - }, + description_with_filters: "Essayez d'ajuster vos filtres" + } }, actions: { - create: "Créer un fournisseur", + create: "Créer un fournisseur" }, status: { not_assessed: "Non évalué", in_progress: "En cours", - assessed: "Évalué", + assessed: "Évalué" }, category: { cloud: "Cloud", @@ -427,62 +408,55 @@ export default { marketing: "Marketing", sales: "Ventes", hr: "Ressources humaines", - other: "Autre", + other: "Autre" }, risk_level: { low: "Risque faible", medium: "Risque moyen", high: "Risque élevé", - unknown: "Risque inconnu", - }, + unknown: "Risque inconnu" + } }, dashboard: { title: "Tableau de bord", overview: "Aperçu des risques", - risk_status: "Statut des risques", + risk_status: "Statut du risque", risks_by_department: "Risques par département", - risks_by_assignee: "Risques par responsable", - inherent_risk_description: - "Le risque inhérent est calculé comme probabilité * impact. Calculé avant l'application de tout contrôle.", - residual_risk_description: - "Le risque résiduel est calculé comme probabilité * impact. C'est le niveau de risque après l'application des contrôles.", - risk_assessment_description: - "Comparer les niveaux de risque inhérent et résiduel", + risks_by_assignee: "Risques par assigné", + inherent_risk_description: "Le risque inhérent est calculé comme probabilité * impact. Calculé avant l'application de tout contrôle.", + residual_risk_description: "Le risque résiduel est calculé comme probabilité * impact. C'est le niveau de risque après l'application des contrôles.", + risk_assessment_description: "Comparer les niveaux de risque inhérent et résiduel" }, register: { title: "Registre des risques", table: { - risk: "Risque", + risk: "Risque" }, empty: { no_risks: { title: "Créez un risque pour commencer", - description: - "Suivez et évaluez les risques, créez et assignez des tâches d'atténuation à votre équipe, et gérez votre registre des risques dans une interface simple.", + description: "Suivez et évaluez les risques, créez et assignez des tâches d'atténuation pour votre équipe, et gérez votre registre des risques dans une interface simple." }, - create_risk: "Créer un risque", - }, + create_risk: "Créer un risque" + } }, metrics: { probability: "Probabilité", impact: "Impact", inherentRisk: "Risque inhérent", - residualRisk: "Risque résiduel", + residualRisk: "Risque résiduel" }, form: { update_inherent_risk: "Enregistrer le risque inhérent", - update_inherent_risk_description: - "Mettez à jour le risque inhérent du risque. C'est le niveau de risque avant l'application de tout contrôle.", + update_inherent_risk_description: "Mettez à jour le risque inhérent du risque. C'est le niveau de risque avant l'application de tout contrôle.", update_inherent_risk_success: "Risque inhérent mis à jour avec succès", update_inherent_risk_error: "Échec de la mise à jour du risque inhérent", update_residual_risk: "Enregistrer le risque résiduel", - update_residual_risk_description: - "Mettez à jour le risque résiduel du risque. C'est le niveau de risque après l'application des contrôles.", + update_residual_risk_description: "Mettez à jour le risque résiduel du risque. C'est le niveau de risque après l'application des contrôles.", update_residual_risk_success: "Risque résiduel mis à jour avec succès", update_residual_risk_error: "Échec de la mise à jour du risque résiduel", update_risk: "Mettre à jour le risque", - update_risk_description: - "Mettez à jour le titre ou la description du risque.", + update_risk_description: "Mettez à jour le titre ou la description du risque.", update_risk_success: "Risque mis à jour avec succès", update_risk_error: "Échec de la mise à jour du risque", create_risk_success: "Risque créé avec succès", @@ -497,7 +471,7 @@ export default { risk_department: "Département", risk_department_placeholder: "Sélectionnez un département", risk_status: "Statut du risque", - risk_status_placeholder: "Sélectionnez un statut de risque", + risk_status_placeholder: "Sélectionnez un statut de risque" }, tasks: { title: "Tâches", @@ -514,40 +488,33 @@ export default { due_date: "Date d'échéance", due_date_description: "Sélectionnez la date d'échéance pour la tâche", success: "Tâche créée avec succès", - error: "Échec de la création de la tâche", + error: "Échec de la création de la tâche" }, sheet: { title: "Créer une tâche", update: "Mettre à jour la tâche", - update_description: - "Mettez à jour le titre ou la description de la tâche.", + update_description: "Mettez à jour le titre ou la description de la tâche." }, empty: { - description_create: - "Créez une tâche d'atténuation pour ce risque, ajoutez un plan de traitement et assignez-le à un membre de l'équipe.", - }, - }, + description_create: "Créez une tâche d'atténuation pour ce risque, ajoutez un plan de traitement et assignez-le à un membre de l'équipe." + } + } }, settings: { general: { title: "Général", org_name: "Nom de l'organisation", - org_name_description: - "Ceci est le nom visible de votre organisation. Vous devez utiliser le nom légal de votre organisation.", + org_name_description: "C'est le nom visible de votre organisation. Vous devez utiliser le nom légal de votre organisation.", org_name_tip: "Veuillez utiliser un maximum de 32 caractères.", org_website: "Site Web de l'organisation", - org_website_description: - "Ceci est l'URL du site Web officiel de votre organisation. Assurez-vous d'inclure l'URL complète avec https://.", + org_website_description: "C'est l'URL du site Web officiel de votre organisation. Assurez-vous d'inclure l'URL complète avec https://.", org_website_tip: "Veuillez entrer une URL valide incluant https://", - org_website_error: - "Erreur lors de la mise à jour du site Web de l'organisation", + org_website_error: "Erreur lors de la mise à jour du site Web de l'organisation", org_website_updated: "Site Web de l'organisation mis à jour", org_delete: "Supprimer l'organisation", - org_delete_description: - "Supprimez définitivement votre organisation et tout son contenu de la plateforme Comp AI. Cette action n'est pas réversible - veuillez continuer avec prudence.", + org_delete_description: "Supprimez définitivement votre organisation et tout son contenu de la plateforme Comp AI. Cette action n'est pas réversible - veuillez continuer avec prudence.", org_delete_alert_title: "Êtes-vous absolument sûr ?", - org_delete_alert_description: - "Cette action ne peut pas être annulée. Cela supprimera définitivement votre organisation et retirera vos données de nos serveurs.", + org_delete_alert_description: "Cette action ne peut pas être annulée. Cela supprimera définitivement votre organisation et retirera vos données de nos serveurs.", org_delete_error: "Erreur lors de la suppression de l'organisation", org_delete_success: "Organisation supprimée", org_name_updated: "Nom de l'organisation mis à jour", @@ -556,75 +523,70 @@ export default { delete_button: "Supprimer", delete_confirm: "SUPPRIMER", delete_confirm_tip: "Tapez SUPPRIMER pour confirmer.", - cancel_button: "Annuler", + cancel_button: "Annuler" }, members: { - title: "Membres", + title: "Membres" }, billing: { - title: "Facturation", - }, + title: "Facturation" + } }, user_menu: { theme: "Thème", language: "Langue", sign_out: "Se déconnecter", account: "Compte", - support: "Support", + support: "Assistance", settings: "Paramètres", - teams: "Équipes", + teams: "Équipes" }, frameworks: { title: "Cadres", controls: { title: "Contrôles", - description: "Examinez et gérez les contrôles de conformité", + description: "Examiner et gérer les contrôles de conformité", table: { status: "Statut", control: "Contrôle", artifacts: "Artifacts", - actions: "Actions", + actions: "Actions" }, statuses: { not_started: "Non commencé", - compliant: "Conforme", - non_compliant: "Non conforme", completed: "Terminé", - in_progress: "En cours", - }, + in_progress: "En cours" + } }, overview: { error: "Échec du chargement des cadres", loading: "Chargement des cadres...", empty: { title: "Aucun cadre sélectionné", - description: - "Sélectionnez des cadres pour commencer votre parcours de conformité", + description: "Sélectionnez des cadres pour commencer votre parcours de conformité" }, progress: { title: "Progression du cadre", empty: { - title: "Aucun cadre pour le moment", - description: - "Commencez par ajouter un cadre de conformité pour suivre vos progrès", - action: "Ajouter un cadre", - }, + title: "Pas encore de cadres", + description: "Commencez par ajouter un cadre de conformité pour suivre vos progrès", + action: "Ajouter un cadre" + } }, grid: { welcome: { title: "Bienvenue dans Comp AI", - description: - "Commencez par sélectionner les cadres de conformité que vous souhaitez mettre en œuvre. Nous vous aiderons à gérer et à suivre votre parcours de conformité à travers plusieurs normes.", - action: "Commencer", + description: "Commencez par sélectionner les cadres de conformité que vous souhaitez mettre en œuvre. Nous vous aiderons à gérer et à suivre votre parcours de conformité à travers plusieurs normes.", + action: "Commencer" }, title: "Sélectionner des cadres", version: "Version", actions: { clear: "Effacer", - confirm: "Confirmer la sélection", - }, - }, - }, + confirm: "Confirmer la sélection" + } + } + } }, vendor: { title: "Tableau de bord", @@ -632,13 +594,11 @@ export default { dashboard: { title: "Tableau de bord", overview: "Aperçu des fournisseurs", - vendor_status: "Statut des fournisseurs", + vendor_status: "Statut du fournisseur", vendor_category: "Catégories de fournisseurs", vendors_by_assignee: "Fournisseurs par responsable", - inherent_risk_description: - "Niveau de risque initial avant l'application de tout contrôle", - residual_risk_description: - "Niveau de risque restant après l'application des contrôles", + inherent_risk_description: "Niveau de risque initial avant l'application de tout contrôle", + residual_risk_description: "Niveau de risque restant après l'application des contrôles" }, register: { title: "Registre des fournisseurs", @@ -646,8 +606,8 @@ export default { name: "Nom", category: "Catégorie", status: "Statut", - owner: "Propriétaire", - }, + owner: "Propriétaire" + } }, category: { cloud: "Cloud", @@ -656,22 +616,22 @@ export default { finance: "Finance", marketing: "Marketing", sales: "Ventes", - hr: "RH", - other: "Autre", + hr: "Ressources humaines", + other: "Autre" }, vendors: "fournisseurs", form: { vendor_details: "Détails du fournisseur", vendor_name: "Nom", vendor_name_placeholder: "Entrez le nom du fournisseur", - vendor_website: "Site Web", - vendor_website_placeholder: "Entrez le site Web du fournisseur", + vendor_website: "Site web", + vendor_website_placeholder: "Entrez le site web du fournisseur", vendor_description: "Description", vendor_description_placeholder: "Entrez la description du fournisseur", vendor_category: "Catégorie", - vendor_category_placeholder: "Sélectionnez une catégorie", + vendor_category_placeholder: "Sélectionner une catégorie", vendor_status: "Statut", - vendor_status_placeholder: "Sélectionnez un statut", + vendor_status_placeholder: "Sélectionner un statut", create_vendor_success: "Fournisseur créé avec succès", create_vendor_error: "Échec de la création du fournisseur", update_vendor_success: "Fournisseur mis à jour avec succès", @@ -682,110 +642,110 @@ export default { contact_role: "Rôle du contact", add_contact: "Ajouter un contact", new_contact: "Nouveau contact", - min_one_contact_required: "Un fournisseur doit avoir au moins un contact", + min_one_contact_required: "Un fournisseur doit avoir au moins un contact" }, empty_states: { no_vendors: { - title: "Aucun fournisseur pour le moment", - description: "Commencez par créer votre premier fournisseur", + title: "Pas encore de fournisseurs", + description: "Commencez par créer votre premier fournisseur" }, no_results: { title: "Aucun résultat trouvé", description: "Aucun fournisseur ne correspond à votre recherche", - description_with_filters: "Essayez d'ajuster vos filtres", - }, - }, + description_with_filters: "Essayez d'ajuster vos filtres" + } + } }, people: { title: "Personnes", details: { - taskProgress: "Progression des tâches", + taskProgress: "Progression de la tâche", tasks: "Tâches", - noTasks: "Aucune tâche assignée pour le moment", + noTasks: "Aucune tâche assignée pour le moment" }, description: "Gérez vos membres d'équipe et leurs rôles.", filters: { search: "Rechercher des personnes...", - role: "Filtrer par rôle", + role: "Filtrer par rôle" }, actions: { invite: "Ajouter un employé", - clear: "Effacer les filtres", + clear: "Effacer les filtres" }, table: { name: "Nom", email: "Email", department: "Département", - externalId: "ID externe", + externalId: "ID externe" }, empty: { no_employees: { title: "Aucun employé pour le moment", - description: "Commencez par inviter votre premier membre d'équipe.", + description: "Commencez par inviter votre premier membre d'équipe." }, no_results: { title: "Aucun résultat trouvé", description: "Aucun employé ne correspond à votre recherche", - description_with_filters: "Essayez d'ajuster vos filtres", - }, + description_with_filters: "Essayez d'ajuster vos filtres" + } }, invite: { title: "Ajouter un employé", description: "Ajoutez un employé à votre organisation.", email: { label: "Adresse e-mail", - placeholder: "Entrez l'adresse e-mail", + placeholder: "Entrez l'adresse e-mail" }, role: { label: "Rôle", - placeholder: "Sélectionnez un rôle", + placeholder: "Sélectionnez un rôle" }, name: { label: "Nom", - placeholder: "Entrez le nom", + placeholder: "Entrez le nom" }, department: { label: "Département", - placeholder: "Sélectionnez un département", + placeholder: "Sélectionnez un département" }, submit: "Ajouter un employé", success: "Employé ajouté avec succès", - error: "Échec de l'ajout de l'employé", - }, + error: "Échec de l'ajout de l'employé" + } }, errors: { - unexpected: "Une erreur s'est produite, veuillez réessayer", + unexpected: "Quelque chose s'est mal passé, veuillez réessayer" }, sub_pages: { risk: { - overview: "Gestion des Risques", - register: "Registre des Risques", - risk_overview: "Aperçu des Risques", - risk_comments: "Commentaires sur les Risques", + overview: "Gestion des risques", + register: "Registre des risques", + risk_overview: "Aperçu des risques", + risk_comments: "Commentaires sur les risques", tasks: { - task_overview: "Aperçu des Tâches", - }, + task_overview: "Aperçu des tâches" + } }, policies: { - all: "Toutes les Politiques", - editor: "Éditeur de Politique", - policy_details: "Détails de la politique", + all: "Toutes les politiques", + editor: "Éditeur de politique", + policy_details: "Détails de la politique" }, people: { all: "Personnes", - employee_details: "Détails de l'Employé", + employee_details: "Détails de l'employé" }, settings: { - members: "Membres de l'Équipe", + members: "Membres de l'équipe" }, frameworks: { - overview: "Cadres", + overview: "Cadres" }, evidence: { title: "Preuve", list: "Liste des preuves", - overview: "Aperçu des preuves", - }, + overview: "Aperçu des preuves" + } }, editor: { ai: { @@ -793,25 +753,51 @@ export default { thinking_spinner: "L'IA réfléchit", edit_or_generate: "Modifier ou générer...", tell_ai_what_to_do_next: "Dites à l'IA quoi faire ensuite", - request_limit_reached: - "Vous avez atteint votre limite de demandes pour la journée.", + request_limit_reached: "Vous avez atteint votre limite de demandes pour la journée." }, ai_selector: { improve: "Améliorer l'écriture", fix: "Corriger la grammaire", - shorter: "Rendre plus court", - longer: "Rendre plus long", - continue: "Continuer à écrire", + shorter: "Raccourcir", + longer: "Allonger", + "continue": "Continuer l'écriture", replace: "Remplacer la sélection", insert: "Insérer ci-dessous", - discard: "Jeter", - }, + discard: "Jeter" + } }, evidence: { - title: "Tâches de preuve", - description: - "Gérez et suivez les tâches de preuve pour vos exigences de conformité.", - dashboard: "Tableau de bord", + title: "Preuve", list: "Toutes les preuves", - }, + overview: "Aperçu des preuves", + edit: "Modifier la preuve", + dashboard: { + layout: "Tableau de bord", + layout_back_button: "Retour", + title: "Tableau de bord des preuves", + by_department: "Par département", + by_assignee: "Par responsable", + by_framework: "Par cadre" + }, + items: "articles", + status: { + up_to_date: "À jour", + needs_review: "Nécessite une révision", + draft: "Brouillon", + empty: "Vide" + }, + departments: { + none: "Non classé", + admin: "Administration", + gov: "Gouvernance", + hr: "Ressources humaines", + it: "Technologies de l'information", + itsm: "Gestion des services informatiques", + qms: "Gestion de la qualité" + }, + details: { + review_section: "Informations de révision", + content: "Contenu de la preuve" + } + } } as const; diff --git a/apps/app/src/locales/no.ts b/apps/app/src/locales/no.ts index 2bbb791d8d..6cd8d175b9 100644 --- a/apps/app/src/locales/no.ts +++ b/apps/app/src/locales/no.ts @@ -4,36 +4,36 @@ export default { fr: "Fransk", no: "Norsk", pt: "Portugisisk", - en: "Engelsk", + en: "Engelsk" }, language: { title: "Språk", description: "Endre språket som brukes i brukergrensesnittet.", - placeholder: "Velg språk", + placeholder: "Velg språk" }, common: { actions: { save: "Lagre", edit: "Rediger", - delete: "Slett", + "delete": "Slett", cancel: "Avbryt", clear: "Tøm", create: "Opprett", send: "Send", - return: "Tilbake", + "return": "Tilbake", success: "Suksess", error: "Feil", next: "Neste", - complete: "Fullfør", - addNew: "Legg til ny", + complete: "Fullført", + addNew: "Legg til ny" }, assignee: { label: "Tildelt", - placeholder: "Velg tildelt", + placeholder: "Velg tildelt" }, date: { pick: "Velg en dato", - due_date: "Forfallsdato", + due_date: "Forfallsdato" }, status: { open: "Åpen", @@ -45,13 +45,13 @@ export default { not_started: "Ikke startet", in_progress: "Pågår", published: "Publisert", - needs_review: "Trenger vurdering", + needs_review: "Trenger gjennomgang", draft: "Utkast", not_assessed: "Ikke vurdert", assessed: "Vurdert", active: "Aktiv", inactive: "Inaktiv", - title: "Status", + title: "Status" }, filters: { clear: "Tøm filtre", @@ -60,16 +60,16 @@ export default { department: "Avdeling", owner: { label: "Tildelt", - placeholder: "Filtrer etter tildelt", - }, + placeholder: "Filtrer etter tildelt" + } }, table: { title: "Tittel", status: "Status", - assigned_to: "Tildelt Til", + assigned_to: "Tildelt til", due_date: "Forfallsdato", last_updated: "Sist oppdatert", - no_results: "Ingen resultater funnet", + no_results: "Ingen resultater funnet" }, empty_states: { no_results: { @@ -79,12 +79,12 @@ export default { description: "Prøv et annet søk, eller juster filtrene", description_filters: "Prøv et annet søk, eller juster filtrene", description_no_tasks: "Opprett en oppgave for å komme i gang", - description_no_risks: "Opprett en risiko for å komme i gang", + description_no_risks: "Opprett en risiko for å komme i gang" }, no_items: { title: "Ingen elementer funnet", - description: "Prøv å justere søket eller filtrene", - }, + description: "Prøv å justere søket ditt eller filtrene" + } }, pagination: { of: "av", @@ -94,35 +94,33 @@ export default { go_to_first_page: "Gå til første side", go_to_previous_page: "Gå til forrige side", go_to_next_page: "Gå til neste side", - go_to_last_page: "Gå til siste side", + go_to_last_page: "Gå til siste side" }, comments: { title: "Kommentarer", description: "Legg til en kommentar ved å bruke skjemaet nedenfor.", add: "Ny kommentar", - new: "Ny kommentar", + "new": "Ny kommentar", save: "Lagre kommentar", - success: "Kommentar lagt til", + success: "Kommentar lagt til med suksess", error: "Kunne ikke legge til kommentar", - placeholder: "Skriv din kommentar her...", + placeholder: "Skriv kommentaren din her...", empty: { title: "Ingen kommentarer ennå", - description: "Vær den første til å legge til en kommentar", - }, + description: "Vær den første til å legge til en kommentar" + } }, attachments: { title: "Vedlegg", description: "Legg til en fil ved å klikke på 'Legg til vedlegg'.", upload: "Last opp vedlegg", - upload_description: - "Last opp et vedlegg eller legg til en lenke til en ekstern ressurs.", + upload_description: "Last opp et vedlegg eller legg til en lenke til en ekstern ressurs.", drop: "Slipp filene her", - drop_description: - "Slipp filer her eller klikk for å velge filer fra enheten din.", + drop_description: "Slipp filer her eller klikk for å velge filer fra enheten din.", drop_files_description: "Filer kan være opptil ", empty: { title: "Ingen vedlegg", - description: "Legg til en fil ved å klikke på 'Legg til vedlegg'.", + description: "Legg til en fil ved å klikke på 'Legg til vedlegg'." }, toasts: { error: "Noe gikk galt, vennligst prøv igjen.", @@ -130,26 +128,26 @@ export default { error_uploading_files_multiple: "Kan ikke laste opp mer enn 10 filer", error_no_files_selected: "Ingen filer valgt", error_file_rejected: "Fil {file} ble avvist", - error_failed_to_upload_files: "Kunne ikke laste opp filer", - error_failed_to_upload_files_multiple: "Kunne ikke laste opp filer", - error_failed_to_upload_files_single: "Kunne ikke laste opp fil", - success_uploading_files: "Filer lastet opp", - success_uploading_files_multiple: "Filer lastet opp", - success_uploading_files_single: "Fil lastet opp", + error_failed_to_upload_files: "Feil ved opplasting av filer", + error_failed_to_upload_files_multiple: "Feil ved opplasting av filer", + error_failed_to_upload_files_single: "Feil ved opplasting av fil", + success_uploading_files: "Filer lastet opp med suksess", + success_uploading_files_multiple: "Filer lastet opp med suksess", + success_uploading_files_single: "Fil lastet opp med suksess", success_uploading_files_target: "Filer lastet opp", uploading_files: "Laster opp {target}...", - remove_file: "Fjern fil", - }, + remove_file: "Fjern fil" + } }, notifications: { inbox: "Innboks", archive: "Arkiv", archive_all: "Arkiver alt", - no_notifications: "Ingen nye varsler", + no_notifications: "Ingen nye varsler" }, edit: "Rediger", errors: { - unexpected_error: "En uventet feil oppstod", + unexpected_error: "En uventet feil oppstod" }, description: "Beskrivelse", last_updated: "Sist oppdatert", @@ -158,35 +156,34 @@ export default { weekly: "Ukentlig", monthly: "Månedlig", quarterly: "Kvartalsvis", - yearly: "Årlig", - }, + yearly: "Årlig" + } }, header: { discord: { - button: "Bli med oss på Discord", + button: "Bli med oss på Discord" }, feedback: { button: "Tilbakemelding", title: "Takk for tilbakemeldingen!", - description: "Vi kommer tilbake til deg så snart som mulig", - placeholder: - "Ideer for å forbedre denne siden eller problemer du opplever.", + description: "Vi vil komme tilbake til deg så snart som mulig", + placeholder: "Ideer for å forbedre denne siden eller problemer du opplever.", success: "Takk for tilbakemeldingen!", error: "Feil ved sending av tilbakemelding - prøv igjen?", - send: "Send tilbakemelding", - }, + send: "Send tilbakemelding" + } }, not_found: { title: "404 - Siden ble ikke funnet", description: "Siden du leter etter eksisterer ikke.", - return: "Gå tilbake til dashbordet", + "return": "Gå tilbake til dashbordet" }, theme: { options: { light: "Lys", dark: "Mørk", - system: "System", - }, + system: "System" + } }, sidebar: { overview: "Oversikt", @@ -196,12 +193,11 @@ export default { integrations: "Integrasjoner", settings: "Innstillinger", evidence: "Bevisoppgaver", - people: "Personer", + people: "Personer" }, auth: { title: "Automatiser SOC 2, ISO 27001 og GDPR-overholdelse med AI.", - description: - "Opprett en gratis konto eller logg inn med en eksisterende konto for å fortsette.", + description: "Opprett en gratis konto eller logg inn med en eksisterende konto for å fortsette.", options: "Flere alternativer", google: "Fortsett med Google", email: { @@ -212,10 +208,9 @@ export default { magic_link_description: "Sjekk innboksen din for en magisk lenke.", magic_link_try_again: "Prøv igjen.", success: "E-post sendt - sjekk innboksen din!", - error: "Feil ved sending av e-post - prøv igjen?", + error: "Feil ved sending av e-post - prøv igjen?" }, - terms: - "Ved å klikke på fortsett, bekrefter du at du har lest og godtar vilkårene for bruk og personvernerklæringen.", + terms: "Ved å klikke på fortsett, bekrefter du at du har lest og godtar vilkårene for tjenesten og personvernerklæringen." }, onboarding: { title: "Opprett en organisasjon", @@ -224,112 +219,110 @@ export default { fields: { name: { label: "Organisasjonsnavn", - placeholder: "Ditt organisasjonsnavn", + placeholder: "Ditt organisasjonsnavn" }, website: { label: "Nettsted", - placeholder: "Ditt organisasjonsnettsted", + placeholder: "Ditt organisasjonsnettsted" }, subdomain: { label: "Underdomene", - placeholder: "eksempel", + placeholder: "eksempel" }, fullName: { label: "Ditt navn", - placeholder: "Ditt fulle navn", - }, + placeholder: "Ditt fulle navn" + } }, success: "Takk, du er klar!", error: "Noe gikk galt, vennligst prøv igjen.", unavailable: "Ikke tilgjengelig", check_availability: "Sjekker tilgjengelighet", - available: "Tilgjengelig", + available: "Tilgjengelig" }, overview: { title: "Oversikt", framework_chart: { - title: "Rammeverk Fremdrift", + title: "Fremdrift i rammeverket" }, requirement_chart: { - title: "Overholdelsesstatus", - }, + title: "Overholdelsesstatus" + } }, policies: { dashboard: { title: "Dashbord", all: "Alle retningslinjer", - policy_status: "Policy etter status", + policy_status: "Retningslinje etter status", policies_by_assignee: "Retningslinjer etter tildelt", policies_by_framework: "Retningslinjer etter rammeverk", sub_pages: { overview: "Oversikt", - edit_policy: "Rediger policy", - }, + edit_policy: "Rediger retningslinje" + } }, table: { - name: "Retningslinjenavn", + name: "Policy Navn", statuses: { draft: "Utkast", published: "Publisert", - archived: "Arkivert", + archived: "Arkivert" }, filters: { owner: { label: "Tildelt", - placeholder: "Filtrer etter tildelt", - }, - }, + placeholder: "Filtrer etter tildelt" + } + } }, filters: { - search: "Søk etter retningslinjer...", - all: "Alle retningslinjer", + search: "Søk etter policyer...", + all: "Alle Policyer" }, status: { draft: "Utkast", published: "Publisert", - needs_review: "Trenger gjennomgang", - archived: "Arkivert", + needs_review: "Trenger Gjennomgang", + archived: "Arkivert" }, - policies: "retningslinjer", - title: "Retningslinjer", - create_new: "Opprett ny retningslinje", - search_placeholder: "Søk etter retningslinjer...", + policies: "policyer", + title: "Policyer", + create_new: "Opprett Ny Policy", + search_placeholder: "Søk etter policyer...", status_filter: "Filtrer etter status", all_statuses: "Alle statuser", - no_policies_title: "Ingen retningslinjer ennå", - no_policies_description: - "Kom i gang med å opprette din første retningslinje", - create_first: "Opprett første retningslinje", + no_policies_title: "Ingen policyer ennå", + no_policies_description: "Kom i gang med å opprette din første policy", + create_first: "Opprett første policy", no_description: "Ingen beskrivelse gitt", last_updated: "Sist oppdatert: {{date}}", save: "Lagre", saving: "Lagrer...", - saved_success: "Retningslinje lagret", - saved_error: "Kunne ikke lagre retningslinje", + saved_success: "Policy lagret vellykket", + saved_error: "Feil ved lagring av policy", overview: { - title: "Oversikt over policy", + title: "Retningslinjeoversikt", form: { - update_policy: "Oppdater policy", - update_policy_description: - "Oppdater policyens tittel eller beskrivelse.", - update_policy_success: "Policy oppdatert vellykket", - update_policy_error: "Feil ved oppdatering av policy", - update_policy_title: "Policy navn", + update_policy: "Oppdater retningslinje", + update_policy_description: "Oppdater retningslinjetittelen eller beskrivelsen.", + update_policy_success: "Retningslinje oppdatert med suksess", + update_policy_error: "Feil ved oppdatering av retningslinje", + update_policy_title: "Retningslinjenavn", review_frequency: "Gjennomgangsfrekvens", review_frequency_placeholder: "Velg en gjennomgangsfrekvens", review_date: "Gjennomgangsdato", - review_date_placeholder: "Velg en gjennomgangsdato", - }, - }, + review_date_placeholder: "Velg en gjennomgangsdato" + } + } }, evidence_tasks: { evidence_tasks: "Bevisoppgaver", - overview: "Oversikt", + overview: "Oversikt" }, risk: { risks: "risikoer", overview: "Oversikt", - create: "Opprett ny risiko", + create: "Opprett Ny Risiko", vendor: { title: "Leverandøradministrasjon", dashboard: { @@ -337,11 +330,9 @@ export default { overview: "Leverandøroversikt", vendor_status: "Leverandørstatus", vendor_category: "Leverandørkategorier", - vendors_by_assignee: "Leverandører etter tildelt", - inherent_risk_description: - "Innledende risikonivå før noen kontroller er anvendt", - residual_risk_description: - "Gjenstående risikonivå etter at kontroller er anvendt", + vendors_by_assignee: "Leverandører etter Tildelt", + inherent_risk_description: "Innledende risikonivå før noen kontroller er anvendt", + residual_risk_description: "Gjenstående risikonivå etter at kontroller er anvendt" }, register: { title: "Leverandørregister", @@ -349,22 +340,22 @@ export default { name: "Navn", category: "Kategori", status: "Status", - owner: "Eier", - }, + owner: "Eier" + } }, assessment: { title: "Leverandørvurdering", - update_success: "Leverandørvurdering oppdatert vellykket", - update_error: "Feil ved oppdatering av leverandørvurdering", - inherent_risk: "Inherent risiko", - residual_risk: "Gjenstående risiko", + update_success: "Leverandørens risikovurdering oppdatert vellykket", + update_error: "Feil ved oppdatering av leverandørens risikovurdering", + inherent_risk: "Inherent Risiko", + residual_risk: "Residual Risiko" }, form: { vendor_details: "Leverandørdetaljer", vendor_name: "Navn", vendor_name_placeholder: "Skriv inn leverandørnavn", vendor_website: "Nettsted", - vendor_website_placeholder: "Skriv inn leverandørnettsted", + vendor_website_placeholder: "Skriv inn leverandørens nettsted", vendor_description: "Beskrivelse", vendor_description_placeholder: "Skriv inn leverandørbeskrivelse", vendor_category: "Kategori", @@ -374,57 +365,57 @@ export default { create_vendor_success: "Leverandør opprettet vellykket", create_vendor_error: "Feil ved oppretting av leverandør", update_vendor: "Oppdater Leverandør", - update_vendor_success: "Leverandør oppdatert", - update_vendor_error: "Kunne ikke oppdatere leverandør", - add_comment: "Legg til Kommentar", + update_vendor_success: "Leverandør oppdatert vellykket", + update_vendor_error: "Feil ved oppdatering av leverandør", + add_comment: "Legg til Kommentar" }, table: { name: "Navn", category: "Kategori", status: "Status", - owner: "Eier", + owner: "Eier" }, filters: { search_placeholder: "Søk etter leverandører...", status_placeholder: "Filtrer etter status", category_placeholder: "Filtrer etter kategori", - owner_placeholder: "Filtrer etter eier", + owner_placeholder: "Filtrer etter eier" }, empty_states: { no_vendors: { title: "Ingen leverandører ennå", - description: "Kom i gang med å opprette din første leverandør", + description: "Kom i gang med å opprette din første leverandør" }, no_results: { title: "Ingen resultater funnet", - description: "Ingen leverandører matcher søket ditt", - description_with_filters: "Prøv å justere filtrene dine", - }, + description: "Ingen leverandører samsvarer med søket ditt", + description_with_filters: "Prøv å justere filtrene dine" + } }, actions: { - create: "Opprett Leverandør", + create: "Opprett Leverandør" }, status: { not_assessed: "Ikke Vurdert", - in_progress: "Under Behandling", - assessed: "Vurdert", + in_progress: "Pågår", + assessed: "Vurdert" }, category: { cloud: "Sky", infrastructure: "Infrastruktur", software_as_a_service: "Programvare som en Tjeneste", - finance: "Finans", + finance: "Økonomi", marketing: "Markedsføring", sales: "Salg", hr: "HR", - other: "Annet", + other: "Annet" }, risk_level: { low: "Lav Risiko", medium: "Moderat Risiko", high: "Høy Risiko", - unknown: "Ukjent Risiko", - }, + unknown: "Ukjent Risiko" + } }, dashboard: { title: "Dashbord", @@ -432,49 +423,43 @@ export default { risk_status: "Risiko Status", risks_by_department: "Risikoer etter Avdeling", risks_by_assignee: "Risikoer etter Tildelt", - inherent_risk_description: - "Inherent risiko beregnes som sannsynlighet * påvirkning. Beregnet før noen kontroller er anvendt.", - residual_risk_description: - "Residual risiko beregnes som sannsynlighet * påvirkning. Dette er risikonivået etter at kontroller er anvendt.", - risk_assessment_description: - "Sammenlign inherent og residual risikonivåer", + inherent_risk_description: "Inherent risiko beregnes som sannsynlighet * påvirkning. Beregnet før noen kontroller er anvendt.", + residual_risk_description: "Residual risiko beregnes som sannsynlighet * påvirkning. Dette er risikonivået etter at kontroller er anvendt.", + risk_assessment_description: "Sammenlign inherent og residual risikonivåer" }, register: { title: "Risiko Register", table: { - risk: "Risiko", + risk: "Risiko" }, empty: { no_risks: { title: "Opprett en risiko for å komme i gang", - description: - "Følg med på og vurder risikoer, opprett og tildel tiltak for teamet ditt, og administrer risiko registeret ditt i ett enkelt grensesnitt.", + description: "Spor og vurder risikoer, opprett og tildel tiltak for teamet ditt, og administrer risikoregisteret ditt alt i ett enkelt grensesnitt." }, - create_risk: "Opprett en risiko", - }, + create_risk: "Opprett en risiko" + } }, metrics: { probability: "Sannsynlighet", impact: "Påvirkning", inherentRisk: "Inherent Risiko", - residualRisk: "Residual Risiko", + residualRisk: "Residual Risiko" }, form: { update_inherent_risk: "Lagre Inherent Risiko", - update_inherent_risk_description: - "Oppdater den inherent risikoen for risikoen. Dette er risikonivået før noen kontroller er anvendt.", - update_inherent_risk_success: "Inherent risiko oppdatert", + update_inherent_risk_description: "Oppdater den inherente risikoen for risikoen. Dette er risikonivået før noen kontroller er anvendt.", + update_inherent_risk_success: "Inherent risiko oppdatert vellykket", update_inherent_risk_error: "Kunne ikke oppdatere inherent risiko", update_residual_risk: "Lagre Residual Risiko", - update_residual_risk_description: - "Oppdater den residual risikoen for risikoen. Dette er risikonivået etter at kontroller er anvendt.", - update_residual_risk_success: "Residual risiko oppdatert", + update_residual_risk_description: "Oppdater den residuale risikoen for risikoen. Dette er risikonivået etter at kontroller er anvendt.", + update_residual_risk_success: "Residual risiko oppdatert vellykket", update_residual_risk_error: "Kunne ikke oppdatere residual risiko", update_risk: "Oppdater Risiko", update_risk_description: "Oppdater risikotittelen eller beskrivelsen.", - update_risk_success: "Risiko oppdatert", + update_risk_success: "Risiko oppdatert vellykket", update_risk_error: "Kunne ikke oppdatere risiko", - create_risk_success: "Risiko opprettet", + create_risk_success: "Risiko opprettet vellykket", create_risk_error: "Kunne ikke opprette risiko", risk_details: "Risiko Detaljer", risk_title: "Risiko Tittel", @@ -486,12 +471,12 @@ export default { risk_department: "Avdeling", risk_department_placeholder: "Velg en avdeling", risk_status: "Risiko Status", - risk_status_placeholder: "Velg en risikostatus", + risk_status_placeholder: "Velg en risikostatus" }, tasks: { title: "Oppgaver", attachments: "Vedlegg", - overview: "Oppgaveoversikt", + overview: "Oppgave Oversikt", form: { title: "Oppgave Detaljer", task_title: "Oppgave Tittel", @@ -502,55 +487,50 @@ export default { description_description: "Skriv inn en beskrivelse for oppgaven", due_date: "Forfallsdato", due_date_description: "Velg forfallsdato for oppgaven", - success: "Oppgave opprettet", - error: "Kunne ikke opprette oppgave", + success: "Oppgave opprettet vellykket", + error: "Kunne ikke opprette oppgave" }, sheet: { title: "Opprett Oppgave", update: "Oppdater Oppgave", - update_description: "Oppdater oppgavetittelen eller beskrivelsen.", + update_description: "Oppdater oppgavetittelen eller beskrivelsen." }, empty: { - description_create: - "Opprett en tiltakoppgave for denne risikoen, legg til en behandlingsplan, og tildel den til et teammedlem.", - }, - }, + description_create: "Opprett en tiltakoppgave for denne risikoen, legg til en behandlingsplan, og tildel den til et teammedlem." + } + } }, settings: { general: { title: "Generelt", org_name: "Organisasjonsnavn", - org_name_description: - "Dette er organisasjonens synlige navn. Du bør bruke det juridiske navnet på organisasjonen din.", - org_name_tip: "Vennligst bruk maks 32 tegn.", - org_website: "Organisasjonsnettsted", - org_website_description: - "Dette er organisasjonens offisielle nettsted-URL. Sørg for å inkludere hele URL-en med https://.", + org_name_description: "Dette er organisasjonens synlige navn. Du bør bruke det juridiske navnet på organisasjonen din.", + org_name_tip: "Vennligst bruk maksimalt 32 tegn.", + org_website: "Organisasjonens Nettsted", + org_website_description: "Dette er organisasjonens offisielle nettsted-URL. Sørg for å inkludere den fullstendige URL-en med https://.", org_website_tip: "Vennligst skriv inn en gyldig URL inkludert https://", - org_website_error: "Feil ved oppdatering av organisasjonsnettsted", - org_website_updated: "Organisasjonsnettsted oppdatert", + org_website_error: "Feil ved oppdatering av organisasjonens nettsted", + org_website_updated: "Organisasjonens nettsted oppdatert", org_delete: "Slett organisasjon", - org_delete_description: - "Fjern organisasjonen din og alt innhold permanent fra Comp AI-plattformen. Denne handlingen kan ikke angres - vennligst fortsett med forsiktighet.", + org_delete_description: "Fjern permanent organisasjonen din og alt innholdet fra Comp AI-plattformen. Denne handlingen kan ikke angres - vennligst fortsett med forsiktighet.", org_delete_alert_title: "Er du helt sikker?", - org_delete_alert_description: - "Denne handlingen kan ikke angres. Dette vil permanent slette organisasjonen din og fjerne dataene dine fra våre servere.", + org_delete_alert_description: "Denne handlingen kan ikke angres. Dette vil permanent slette organisasjonen din og fjerne dataene dine fra serverne våre.", org_delete_error: "Feil ved sletting av organisasjon", - org_delete_success: "Organisasjon slettet", + org_delete_success: "Organisasjonen er slettet", org_name_updated: "Organisasjonsnavn oppdatert", org_name_error: "Feil ved oppdatering av organisasjonsnavn", save_button: "Lagre", delete_button: "Slett", delete_confirm: "SLETT", delete_confirm_tip: "Skriv SLETT for å bekrefte.", - cancel_button: "Avbryt", + cancel_button: "Avbryt" }, members: { - title: "Medlemmer", + title: "Medlemmer" }, billing: { - title: "Fakturering", - }, + title: "Fakturering" + } }, user_menu: { theme: "Tema", @@ -559,7 +539,7 @@ export default { account: "Konto", support: "Støtte", settings: "Innstillinger", - teams: "Team", + teams: "Team" }, frameworks: { title: "Rammeverk", @@ -570,47 +550,43 @@ export default { status: "Status", control: "Kontroll", artifacts: "Artefakter", - actions: "Handlinger", + actions: "Handlinger" }, statuses: { not_started: "Ikke startet", - compliant: "Samsvarende", - non_compliant: "Ikke samsvarende", completed: "Fullført", - in_progress: "Pågår", - }, + in_progress: "Pågår" + } }, overview: { error: "Kunne ikke laste rammeverk", loading: "Laster rammeverk...", empty: { title: "Ingen rammeverk valgt", - description: "Velg rammeverk for å komme i gang med din samsvarsreise", + description: "Velg rammeverk for å komme i gang med din samsvarsreise" }, progress: { title: "Rammeverksprogresjon", empty: { title: "Ingen rammeverk ennå", - description: - "Kom i gang ved å legge til et samsvarsrammeverk for å spore fremgangen din", - action: "Legg til rammeverk", - }, + description: "Kom i gang med å legge til et samsvarsrammeverk for å spore fremdriften din", + action: "Legg til rammeverk" + } }, grid: { welcome: { title: "Velkommen til Comp AI", - description: - "Kom i gang ved å velge samsvarsrammeverkene du ønsker å implementere. Vi hjelper deg med å administrere og spore samsvarsreisen din på tvers av flere standarder.", - action: "Kom i gang", + description: "Kom i gang med å velge samsvarsrammeverkene du ønsker å implementere. Vi hjelper deg med å administrere og spore samsvarsreisen din på tvers av flere standarder.", + action: "Kom i gang" }, title: "Velg rammeverk", version: "Versjon", actions: { clear: "Tøm", - confirm: "Bekreft valg", - }, - }, - }, + confirm: "Bekreft valg" + } + } + } }, vendor: { title: "Dashbord", @@ -620,11 +596,9 @@ export default { overview: "Leverandøroversikt", vendor_status: "Leverandørstatus", vendor_category: "Leverandørkategorier", - vendors_by_assignee: "Leverandører etter tildelt", - inherent_risk_description: - "Innledende risikonivå før noen kontroller er anvendt", - residual_risk_description: - "Gjenstående risikonivå etter at kontroller er anvendt", + vendors_by_assignee: "Leverandører etter ansvarlig", + inherent_risk_description: "Innledende risikonivå før noen kontroller er anvendt", + residual_risk_description: "Gjenstående risikonivå etter at kontroller er anvendt" }, register: { title: "Leverandørregister", @@ -632,8 +606,8 @@ export default { name: "Navn", category: "Kategori", status: "Status", - owner: "Eier", - }, + owner: "Eier" + } }, category: { cloud: "Sky", @@ -643,7 +617,7 @@ export default { marketing: "Markedsføring", sales: "Salg", hr: "HR", - other: "Annet", + other: "Annet" }, vendors: "leverandører", form: { @@ -658,89 +632,89 @@ export default { vendor_category_placeholder: "Velg kategori", vendor_status: "Status", vendor_status_placeholder: "Velg status", - create_vendor_success: "Leverandør opprettet", + create_vendor_success: "Leverandør opprettet med suksess", create_vendor_error: "Kunne ikke opprette leverandør", - update_vendor_success: "Leverandør oppdatert", + update_vendor_success: "Leverandør oppdatert med suksess", update_vendor_error: "Kunne ikke oppdatere leverandør", contacts: "Leverandørkontakter", - contact_name: "Kontaktpersonens navn", - contact_email: "Kontaktpersonens e-post", - contact_role: "Kontaktpersonens rolle", + contact_name: "Kontaktperson", + contact_email: "Kontakt-e-post", + contact_role: "Kontaktrolle", add_contact: "Legg til kontakt", new_contact: "Ny kontakt", - min_one_contact_required: "En leverandør må ha minst én kontakt", + min_one_contact_required: "En leverandør må ha minst én kontakt" }, empty_states: { no_vendors: { title: "Ingen leverandører ennå", - description: "Kom i gang med å opprette din første leverandør", + description: "Kom i gang med å opprette din første leverandør" }, no_results: { title: "Ingen resultater funnet", description: "Ingen leverandører samsvarer med søket ditt", - description_with_filters: "Prøv å justere filtrene dine", - }, - }, + description_with_filters: "Prøv å justere filtrene dine" + } + } }, people: { title: "Personer", details: { - taskProgress: "Oppgavefremdrift", + taskProgress: "Oppgave Fremdrift", tasks: "Oppgaver", - noTasks: "Ingen oppgaver tildelt ennå", + noTasks: "Ingen oppgaver tildelt ennå" }, description: "Administrer teammedlemmene dine og deres roller.", filters: { search: "Søk etter personer...", - role: "Filtrer etter rolle", + role: "Filtrer etter rolle" }, actions: { - invite: "Legg til ansatt", - clear: "Fjern filtre", + invite: "Legg til Ansatt", + clear: "Fjern filtre" }, table: { name: "Navn", email: "E-post", department: "Avdeling", - externalId: "Ekstern ID", + externalId: "Ekstern ID" }, empty: { no_employees: { title: "Ingen ansatte ennå", - description: "Kom i gang med å invitere ditt første teammedlem.", + description: "Kom i gang med å invitere ditt første teammedlem." }, no_results: { title: "Ingen resultater funnet", description: "Ingen ansatte samsvarer med søket ditt", - description_with_filters: "Prøv å justere filtrene dine", - }, + description_with_filters: "Prøv å justere filtrene dine" + } }, invite: { - title: "Legg til ansatt", + title: "Legg til Ansatt", description: "Legg til en ansatt i organisasjonen din.", email: { label: "E-postadresse", - placeholder: "Skriv inn e-postadresse", + placeholder: "Skriv inn e-postadresse" }, role: { label: "Rolle", - placeholder: "Velg en rolle", + placeholder: "Velg en rolle" }, name: { label: "Navn", - placeholder: "Skriv inn navn", + placeholder: "Skriv inn navn" }, department: { label: "Avdeling", - placeholder: "Velg en avdeling", + placeholder: "Velg en avdeling" }, - submit: "Legg til ansatt", - success: "Ansatt lagt til", - error: "Kunne ikke legge til ansatt", - }, + submit: "Legg til Ansatt", + success: "Ansatt lagt til vellykket", + error: "Kunne ikke legge til ansatt" + } }, errors: { - unexpected: "Noe gikk galt, vennligst prøv igjen", + unexpected: "Noe gikk galt, vennligst prøv igjen" }, sub_pages: { risk: { @@ -749,53 +723,81 @@ export default { risk_overview: "Risikooversikt", risk_comments: "Risiko-kommentarer", tasks: { - task_overview: "Oppgaveoversikt", - }, + task_overview: "Oppgaveoversikt" + } }, policies: { all: "Alle retningslinjer", editor: "Retningslinje-redigerer", - policy_details: "Policy Detaljer", + policy_details: "Retningslinjedetaljer" }, people: { all: "Personer", - employee_details: "Ansattdetaljer", + employee_details: "Ansatt-detaljer" }, settings: { - members: "Teammedlemmer", + members: "Teammedlemmer" }, frameworks: { - overview: "Rammeverk", + overview: "Rammer" }, evidence: { title: "Bevis", list: "Bevisliste", - overview: "Oversikt over Bevis", - }, + overview: "Bevisoversikt" + } }, editor: { ai: { thinking: "AI tenker", thinking_spinner: "AI tenker", edit_or_generate: "Rediger eller generer...", - tell_ai_what_to_do_next: "Fortell AI hva den skal gjøre neste gang", - request_limit_reached: "Du har nådd forespørselgrensen for dagen.", + tell_ai_what_to_do_next: "Fortell AI hva den skal gjøre neste", + request_limit_reached: "Du har nådd forespørselgrensen for dagen." }, ai_selector: { improve: "Forbedre skriving", fix: "Rett grammatikk", shorter: "Gjør kortere", longer: "Gjør lengre", - continue: "Fortsett å skrive", + "continue": "Fortsett å skrive", replace: "Erstatt valg", insert: "Sett inn under", - discard: "Forkast", - }, + discard: "Forkast" + } }, evidence: { - title: "Bevisoppgaver", - description: "Administrer og spor bevisoppgaver for dine samsvarsbehov.", - dashboard: "Dashbord", + title: "Bevis", list: "Alle Bevis", - }, + overview: "Oversikt over Bevis", + edit: "Rediger Bevis", + dashboard: { + layout: "Dashbord", + layout_back_button: "Tilbake", + title: "Bevis Dashbord", + by_department: "Etter Avdeling", + by_assignee: "Etter Tildelt", + by_framework: "Etter Rammeverk" + }, + items: "elementer", + status: { + up_to_date: "Oppdatert", + needs_review: "Trenger Gjennomgang", + draft: "Utkast", + empty: "Tom" + }, + departments: { + none: "Uklassifisert", + admin: "Administrasjon", + gov: "Styring", + hr: "Personal", + it: "Informasjonsteknologi", + itsm: "IT-tjenesteforvaltning", + qms: "Kvalitetsforvaltning" + }, + details: { + review_section: "Gjennomgå Informasjon", + content: "Bevisinnhold" + } + } } as const; diff --git a/apps/app/src/locales/pt.ts b/apps/app/src/locales/pt.ts index 2f6a6f2fe5..3cf1805245 100644 --- a/apps/app/src/locales/pt.ts +++ b/apps/app/src/locales/pt.ts @@ -4,36 +4,36 @@ export default { fr: "Francês", no: "Norueguês", pt: "Português", - en: "Inglês", + en: "Inglês" }, language: { title: "Idiomas", description: "Altere o idioma usado na interface do usuário.", - placeholder: "Selecione o idioma", + placeholder: "Selecione o idioma" }, common: { actions: { save: "Salvar", edit: "Editar", - delete: "Excluir", + "delete": "Excluir", cancel: "Cancelar", clear: "Limpar", create: "Criar", send: "Enviar", - return: "Retornar", + "return": "Retornar", success: "Sucesso", error: "Erro", next: "Próximo", complete: "Completo", - addNew: "Adicionar Novo", + addNew: "Adicionar Novo" }, assignee: { label: "Responsável", - placeholder: "Selecione o responsável", + placeholder: "Selecione o responsável" }, date: { pick: "Escolher uma data", - due_date: "Data de Vencimento", + due_date: "Data de Vencimento" }, status: { open: "Aberto", @@ -51,7 +51,7 @@ export default { assessed: "Avaliado", active: "Ativo", inactive: "Inativo", - title: "Status", + title: "Status" }, filters: { clear: "Limpar filtros", @@ -60,8 +60,8 @@ export default { department: "Departamento", owner: { label: "Responsável", - placeholder: "Filtrar por responsável", - }, + placeholder: "Filtrar por responsável" + } }, table: { title: "Título", @@ -69,7 +69,7 @@ export default { assigned_to: "Atribuído A", due_date: "Data de Vencimento", last_updated: "Última Atualização", - no_results: "Nenhum resultado encontrado", + no_results: "Nenhum resultado encontrado" }, empty_states: { no_results: { @@ -79,12 +79,12 @@ export default { description: "Tente outra pesquisa ou ajuste os filtros", description_filters: "Tente outra pesquisa ou ajuste os filtros", description_no_tasks: "Crie uma tarefa para começar", - description_no_risks: "Crie um risco para começar", + description_no_risks: "Crie um risco para começar" }, no_items: { title: "Nenhum item encontrado", - description: "Tente ajustar sua pesquisa ou filtros", - }, + description: "Tente ajustar sua pesquisa ou filtros" + } }, pagination: { of: "de", @@ -94,42 +94,38 @@ export default { go_to_first_page: "Ir para a primeira página", go_to_previous_page: "Ir para a página anterior", go_to_next_page: "Ir para a próxima página", - go_to_last_page: "Ir para a última página", + go_to_last_page: "Ir para a última página" }, comments: { title: "Comentários", description: "Adicione um comentário usando o formulário abaixo.", add: "Novo Comentário", - new: "Novo Comentário", + "new": "Novo Comentário", save: "Salvar Comentário", success: "Comentário adicionado com sucesso", error: "Falha ao adicionar comentário", placeholder: "Escreva seu comentário aqui...", empty: { title: "Nenhum comentário ainda", - description: "Seja o primeiro a adicionar um comentário", - }, + description: "Seja o primeiro a adicionar um comentário" + } }, attachments: { title: "Anexos", description: "Adicione um arquivo clicando em 'Adicionar Anexo'.", upload: "Enviar anexo", - upload_description: - "Carregue um anexo ou adicione um link para um recurso externo.", + upload_description: "Carregue um anexo ou adicione um link para um recurso externo.", drop: "Solte os arquivos aqui", - drop_description: - "Solte arquivos aqui ou clique para escolher arquivos do seu dispositivo.", + drop_description: "Solte arquivos aqui ou clique para escolher arquivos do seu dispositivo.", drop_files_description: "Os arquivos podem ter até ", empty: { title: "Nenhum anexo", - description: "Adicione um arquivo clicando em 'Adicionar Anexo'.", + description: "Adicione um arquivo clicando em 'Adicionar Anexo'." }, toasts: { error: "Algo deu errado, por favor tente novamente.", - error_uploading_files: - "Não é possível carregar mais de 1 arquivo por vez", - error_uploading_files_multiple: - "Não é possível carregar mais de 10 arquivos", + error_uploading_files: "Não é possível carregar mais de 1 arquivo por vez", + error_uploading_files_multiple: "Não é possível carregar mais de 10 arquivos", error_no_files_selected: "Nenhum arquivo selecionado", error_file_rejected: "Arquivo {file} foi rejeitado", error_failed_to_upload_files: "Falha ao carregar arquivos", @@ -140,18 +136,18 @@ export default { success_uploading_files_single: "Arquivo carregado com sucesso", success_uploading_files_target: "Arquivos carregados", uploading_files: "Carregando {target}...", - remove_file: "Remover arquivo", - }, + remove_file: "Remover arquivo" + } }, notifications: { inbox: "Caixa de entrada", archive: "Arquivo", archive_all: "Arquivar tudo", - no_notifications: "Sem novas notificações", + no_notifications: "Sem novas notificações" }, edit: "Editar", errors: { - unexpected_error: "Ocorreu um erro inesperado", + unexpected_error: "Ocorreu um erro inesperado" }, description: "Descrição", last_updated: "Última atualização", @@ -160,35 +156,34 @@ export default { weekly: "Semanal", monthly: "Mensal", quarterly: "Trimestral", - yearly: "Anual", - }, + yearly: "Anual" + } }, header: { discord: { - button: "Junte-se a nós no Discord", + button: "Junte-se a nós no Discord" }, feedback: { button: "Feedback", title: "Obrigado pelo seu feedback!", description: "Voltaremos a você assim que possível", - placeholder: - "Ideias para melhorar esta página ou problemas que você está enfrentando.", + placeholder: "Ideias para melhorar esta página ou problemas que você está enfrentando.", success: "Obrigado pelo seu feedback!", error: "Erro ao enviar feedback - tentar novamente?", - send: "Enviar Feedback", - }, + send: "Enviar Feedback" + } }, not_found: { title: "404 - Página não encontrada", description: "A página que você está procurando não existe.", - return: "Retornar ao painel", + "return": "Retornar ao painel" }, theme: { options: { light: "Claro", dark: "Escuro", - system: "Sistema", - }, + system: "Sistema" + } }, sidebar: { overview: "Visão Geral", @@ -198,12 +193,11 @@ export default { integrations: "Integrações", settings: "Configurações", evidence: "Tarefas de Evidência", - people: "Pessoas", + people: "Pessoas" }, auth: { title: "Automatize a conformidade com SOC 2, ISO 27001 e GDPR com IA.", - description: - "Crie uma conta gratuita ou faça login com uma conta existente para continuar.", + description: "Crie uma conta gratuita ou faça login com uma conta existente para continuar.", options: "Mais opções", google: "Continuar com o Google", email: { @@ -211,14 +205,12 @@ export default { placeholder: "Insira o endereço de e-mail", button: "Continuar com e-mail", magic_link_sent: "Link mágico enviado", - magic_link_description: - "Verifique sua caixa de entrada para um link mágico.", + magic_link_description: "Verifique sua caixa de entrada para um link mágico.", magic_link_try_again: "Tente novamente.", success: "E-mail enviado - verifique sua caixa de entrada!", - error: "Erro ao enviar e-mail - tentar novamente?", + error: "Erro ao enviar e-mail - tentar novamente?" }, - terms: - "Ao clicar em continuar, você reconhece que leu e concorda com os Termos de Serviço e a Política de Privacidade.", + terms: "Ao clicar em continuar, você reconhece que leu e concorda com os Termos de Serviço e a Política de Privacidade." }, onboarding: { title: "Criar uma organização", @@ -227,35 +219,35 @@ export default { fields: { name: { label: "Nome da Organização", - placeholder: "O nome da sua organização", + placeholder: "O nome da sua organização" }, website: { label: "Website", - placeholder: "O website da sua organização", + placeholder: "O website da sua organização" }, subdomain: { label: "Subdomínio", - placeholder: "exemplo", + placeholder: "exemplo" }, fullName: { label: "Seu Nome", - placeholder: "Seu nome completo", - }, + placeholder: "Seu nome completo" + } }, success: "Obrigado, tudo pronto!", error: "Algo deu errado, por favor tente novamente.", unavailable: "Indisponível", check_availability: "Verificando disponibilidade", - available: "Disponível", + available: "Disponível" }, overview: { title: "Visão Geral", framework_chart: { - title: "Progresso do Framework", + title: "Progresso do Framework" }, requirement_chart: { - title: "Status de Conformidade", - }, + title: "Status de Conformidade" + } }, policies: { dashboard: { @@ -266,32 +258,32 @@ export default { policies_by_framework: "Políticas por Framework", sub_pages: { overview: "Visão Geral", - edit_policy: "Editar Política", - }, + edit_policy: "Editar Política" + } }, table: { name: "Nome da Política", statuses: { draft: "Rascunho", published: "Publicado", - archived: "Arquivado", + archived: "Arquivado" }, filters: { owner: { label: "Responsável", - placeholder: "Filtrar por responsável", - }, - }, + placeholder: "Filtrar por responsável" + } + } }, filters: { search: "Pesquisar políticas...", - all: "Todas as Políticas", + all: "Todas as Políticas" }, status: { draft: "Rascunho", published: "Publicado", needs_review: "Necessita Revisão", - archived: "Arquivado", + archived: "Arquivado" }, policies: "políticas", title: "Políticas", @@ -312,21 +304,20 @@ export default { title: "Visão Geral da Política", form: { update_policy: "Atualizar Política", - update_policy_description: - "Atualize o título ou a descrição da política.", + update_policy_description: "Atualize o título ou a descrição da política.", update_policy_success: "Política atualizada com sucesso", update_policy_error: "Falha ao atualizar a política", update_policy_title: "Nome da Política", review_frequency: "Frequência de Revisão", review_frequency_placeholder: "Selecione uma frequência de revisão", review_date: "Data da Revisão", - review_date_placeholder: "Selecione uma data de revisão", - }, - }, + review_date_placeholder: "Selecione uma data de revisão" + } + } }, evidence_tasks: { evidence_tasks: "Tarefas de Evidência", - overview: "Visão Geral", + overview: "Visão Geral" }, risk: { risks: "riscos", @@ -340,10 +331,8 @@ export default { vendor_status: "Status do Fornecedor", vendor_category: "Categorias de Fornecedor", vendors_by_assignee: "Fornecedores por Responsável", - inherent_risk_description: - "Nível de risco inicial antes da aplicação de quaisquer controles", - residual_risk_description: - "Nível de risco restante após a aplicação de controles", + inherent_risk_description: "Nível de risco inicial antes da aplicação de quaisquer controles", + residual_risk_description: "Nível de risco restante após a aplicação de controles" }, register: { title: "Registro de Fornecedor", @@ -351,16 +340,15 @@ export default { name: "Nome", category: "Categoria", status: "Status", - owner: "Responsável", - }, + owner: "Responsável" + } }, assessment: { title: "Avaliação de Fornecedor", - update_success: - "Avaliação de risco do fornecedor atualizada com sucesso", + update_success: "Avaliação de risco do fornecedor atualizada com sucesso", update_error: "Falha ao atualizar a avaliação de risco do fornecedor", inherent_risk: "Risco Inerente", - residual_risk: "Risco Residual", + residual_risk: "Risco Residual" }, form: { vendor_details: "Detalhes do Fornecedor", @@ -379,38 +367,38 @@ export default { update_vendor: "Atualizar Fornecedor", update_vendor_success: "Fornecedor atualizado com sucesso", update_vendor_error: "Falha ao atualizar fornecedor", - add_comment: "Adicionar Comentário", + add_comment: "Adicionar Comentário" }, table: { name: "Nome", category: "Categoria", status: "Status", - owner: "Proprietário", + owner: "Proprietário" }, filters: { search_placeholder: "Pesquisar fornecedores...", status_placeholder: "Filtrar por status", category_placeholder: "Filtrar por categoria", - owner_placeholder: "Filtrar por proprietário", + owner_placeholder: "Filtrar por proprietário" }, empty_states: { no_vendors: { title: "Nenhum fornecedor ainda", - description: "Comece criando seu primeiro fornecedor", + description: "Comece criando seu primeiro fornecedor" }, no_results: { title: "Nenhum resultado encontrado", description: "Nenhum fornecedor corresponde à sua pesquisa", - description_with_filters: "Tente ajustar seus filtros", - }, + description_with_filters: "Tente ajustar seus filtros" + } }, actions: { - create: "Criar Fornecedor", + create: "Criar Fornecedor" }, status: { not_assessed: "Não Avaliado", in_progress: "Em Andamento", - assessed: "Avaliado", + assessed: "Avaliado" }, category: { cloud: "Nuvem", @@ -420,14 +408,14 @@ export default { marketing: "Marketing", sales: "Vendas", hr: "RH", - other: "Outro", + other: "Outro" }, risk_level: { low: "Baixo Risco", medium: "Risco Médio", high: "Alto Risco", - unknown: "Risco Desconhecido", - }, + unknown: "Risco Desconhecido" + } }, dashboard: { title: "Painel", @@ -435,42 +423,36 @@ export default { risk_status: "Status do Risco", risks_by_department: "Riscos por Departamento", risks_by_assignee: "Riscos por Responsável", - inherent_risk_description: - "O risco inerente é calculado como probabilidade * impacto. Calculado antes de qualquer controle ser aplicado.", - residual_risk_description: - "O risco residual é calculado como probabilidade * impacto. Este é o nível de risco após a aplicação de controles.", - risk_assessment_description: - "Compare os níveis de risco inerente e residual", + inherent_risk_description: "O risco inerente é calculado como probabilidade * impacto. Calculado antes de qualquer controle ser aplicado.", + residual_risk_description: "O risco residual é calculado como probabilidade * impacto. Este é o nível de risco após a aplicação de controles.", + risk_assessment_description: "Compare os níveis de risco inerente e residual" }, register: { title: "Registro de Risco", table: { - risk: "Risco", + risk: "Risco" }, empty: { no_risks: { title: "Crie um risco para começar", - description: - "Acompanhe e classifique riscos, crie e atribua tarefas de mitigação para sua equipe e gerencie seu registro de risco tudo em uma interface simples.", + description: "Acompanhe e classifique riscos, crie e atribua tarefas de mitigação para sua equipe e gerencie seu registro de risco tudo em uma interface simples." }, - create_risk: "Criar um risco", - }, + create_risk: "Criar um risco" + } }, metrics: { probability: "Probabilidade", impact: "Impacto", inherentRisk: "Risco Inerente", - residualRisk: "Risco Residual", + residualRisk: "Risco Residual" }, form: { update_inherent_risk: "Salvar Risco Inerente", - update_inherent_risk_description: - "Atualize o risco inerente do risco. Este é o nível de risco antes de qualquer controle ser aplicado.", + update_inherent_risk_description: "Atualize o risco inerente do risco. Este é o nível de risco antes de qualquer controle ser aplicado.", update_inherent_risk_success: "Risco inerente atualizado com sucesso", update_inherent_risk_error: "Falha ao atualizar risco inerente", update_residual_risk: "Salvar Risco Residual", - update_residual_risk_description: - "Atualize o risco residual do risco. Este é o nível de risco após a aplicação de controles.", + update_residual_risk_description: "Atualize o risco residual do risco. Este é o nível de risco após a aplicação de controles.", update_residual_risk_success: "Risco residual atualizado com sucesso", update_residual_risk_error: "Falha ao atualizar risco residual", update_risk: "Atualizar Risco", @@ -489,7 +471,7 @@ export default { risk_department: "Departamento", risk_department_placeholder: "Selecione um departamento", risk_status: "Status do Risco", - risk_status_placeholder: "Selecione um status de risco", + risk_status_placeholder: "Selecione um status de risco" }, tasks: { title: "Tarefas", @@ -506,38 +488,33 @@ export default { due_date: "Data de Vencimento", due_date_description: "Selecione a data de vencimento para a tarefa", success: "Tarefa criada com sucesso", - error: "Falha ao criar tarefa", + error: "Falha ao criar tarefa" }, sheet: { title: "Criar Tarefa", update: "Atualizar Tarefa", - update_description: "Atualize o título ou a descrição da tarefa.", + update_description: "Atualize o título ou a descrição da tarefa." }, empty: { - description_create: - "Crie uma tarefa de mitigação para este risco, adicione um plano de tratamento e atribua a um membro da equipe.", - }, - }, + description_create: "Crie uma tarefa de mitigação para este risco, adicione um plano de tratamento e atribua a um membro da equipe." + } + } }, settings: { general: { title: "Geral", org_name: "Nome da Organização", - org_name_description: - "Este é o nome visível da sua organização. Você deve usar o nome legal da sua organização.", + org_name_description: "Este é o nome visível da sua organização. Você deve usar o nome legal da sua organização.", org_name_tip: "Por favor, use no máximo 32 caracteres.", org_website: "Website da Organização", - org_website_description: - "Este é o URL do website oficial da sua organização. Certifique-se de incluir o URL completo com https://.", + org_website_description: "Este é o URL do website oficial da sua organização. Certifique-se de incluir o URL completo com https://.", org_website_tip: "Por favor, insira um URL válido incluindo https://", org_website_error: "Erro ao atualizar o website da organização", org_website_updated: "Website da organização atualizado", org_delete: "Excluir organização", - org_delete_description: - "Remova permanentemente sua organização e todo o seu conteúdo da plataforma Comp AI. Esta ação não é reversível - continue com cautela.", + org_delete_description: "Remova permanentemente sua organização e todo o seu conteúdo da plataforma Comp AI. Esta ação não é reversível - continue com cautela.", org_delete_alert_title: "Você tem certeza absoluta?", - org_delete_alert_description: - "Esta ação não pode ser desfeita. Isso excluirá permanentemente sua organização e removerá seus dados de nossos servidores.", + org_delete_alert_description: "Esta ação não pode ser desfeita. Isso excluirá permanentemente sua organização e removerá seus dados de nossos servidores.", org_delete_error: "Erro ao excluir organização", org_delete_success: "Organização excluída", org_name_updated: "Nome da organização atualizado", @@ -546,14 +523,14 @@ export default { delete_button: "Excluir", delete_confirm: "EXCLUIR", delete_confirm_tip: "Digite EXCLUIR para confirmar.", - cancel_button: "Cancelar", + cancel_button: "Cancelar" }, members: { - title: "Membros", + title: "Membros" }, billing: { - title: "Faturamento", - }, + title: "Faturamento" + } }, user_menu: { theme: "Tema", @@ -562,7 +539,7 @@ export default { account: "Conta", support: "Suporte", settings: "Configurações", - teams: "Equipes", + teams: "Equipes" }, frameworks: { title: "Estruturas", @@ -573,48 +550,43 @@ export default { status: "Status", control: "Controle", artifacts: "Artefatos", - actions: "Ações", + actions: "Ações" }, statuses: { not_started: "Não Iniciado", - compliant: "Conforme", - non_compliant: "Não Conforme", completed: "Concluído", - in_progress: "Em Andamento", - }, + in_progress: "Em Andamento" + } }, overview: { error: "Falha ao carregar frameworks", loading: "Carregando frameworks...", empty: { title: "Nenhum framework selecionado", - description: - "Selecione frameworks para começar sua jornada de conformidade", + description: "Selecione frameworks para começar sua jornada de conformidade" }, progress: { title: "Progresso do Framework", empty: { title: "Nenhum framework ainda", - description: - "Comece adicionando um framework de conformidade para acompanhar seu progresso", - action: "Adicionar Framework", - }, + description: "Comece adicionando um framework de conformidade para acompanhar seu progresso", + action: "Adicionar Framework" + } }, grid: { welcome: { title: "Bem-vindo ao Comp AI", - description: - "Comece selecionando os frameworks de conformidade que você gostaria de implementar. Nós o ajudaremos a gerenciar e acompanhar sua jornada de conformidade em múltiplos padrões.", - action: "Começar", + description: "Comece selecionando os frameworks de conformidade que você gostaria de implementar. Nós o ajudaremos a gerenciar e acompanhar sua jornada de conformidade em múltiplos padrões.", + action: "Começar" }, title: "Selecionar Frameworks", version: "Versão", actions: { clear: "Limpar", - confirm: "Confirmar Seleção", - }, - }, - }, + confirm: "Confirmar Seleção" + } + } + } }, vendor: { title: "Painel", @@ -625,10 +597,8 @@ export default { vendor_status: "Status do Fornecedor", vendor_category: "Categorias de Fornecedor", vendors_by_assignee: "Fornecedores por Responsável", - inherent_risk_description: - "Nível de risco inicial antes que quaisquer controles sejam aplicados", - residual_risk_description: - "Nível de risco restante após a aplicação de controles", + inherent_risk_description: "Nível de risco inicial antes que quaisquer controles sejam aplicados", + residual_risk_description: "Nível de risco restante após a aplicação de controles" }, register: { title: "Registro de Fornecedor", @@ -636,8 +606,8 @@ export default { name: "Nome", category: "Categoria", status: "Status", - owner: "Proprietário", - }, + owner: "Proprietário" + } }, category: { cloud: "Nuvem", @@ -647,7 +617,7 @@ export default { marketing: "Marketing", sales: "Vendas", hr: "RH", - other: "Outro", + other: "Outro" }, vendors: "fornecedores", form: { @@ -672,79 +642,79 @@ export default { contact_role: "Função do Contato", add_contact: "Adicionar Contato", new_contact: "Novo Contato", - min_one_contact_required: "Um fornecedor deve ter pelo menos um contato", + min_one_contact_required: "Um fornecedor deve ter pelo menos um contato" }, empty_states: { no_vendors: { title: "Nenhum fornecedor ainda", - description: "Comece criando seu primeiro fornecedor", + description: "Comece criando seu primeiro fornecedor" }, no_results: { title: "Nenhum resultado encontrado", description: "Nenhum fornecedor corresponde à sua pesquisa", - description_with_filters: "Tente ajustar seus filtros", - }, - }, + description_with_filters: "Tente ajustar seus filtros" + } + } }, people: { title: "Pessoas", details: { taskProgress: "Progresso da Tarefa", tasks: "Tarefas", - noTasks: "Nenhuma tarefa atribuída ainda", + noTasks: "Nenhuma tarefa atribuída ainda" }, description: "Gerencie os membros da sua equipe e seus papéis.", filters: { search: "Pesquisar pessoas...", - role: "Filtrar por papel", + role: "Filtrar por papel" }, actions: { invite: "Adicionar Funcionário", - clear: "Limpar filtros", + clear: "Limpar filtros" }, table: { name: "Nome", email: "Email", department: "Departamento", - externalId: "ID Externo", + externalId: "ID Externo" }, empty: { no_employees: { title: "Nenhum funcionário ainda", - description: "Comece convidando seu primeiro membro da equipe.", + description: "Comece convidando seu primeiro membro da equipe." }, no_results: { title: "Nenhum resultado encontrado", description: "Nenhum funcionário corresponde à sua pesquisa", - description_with_filters: "Tente ajustar seus filtros", - }, + description_with_filters: "Tente ajustar seus filtros" + } }, invite: { title: "Adicionar Funcionário", description: "Adicione um funcionário à sua organização.", email: { label: "Endereço de email", - placeholder: "Digite o endereço de email", + placeholder: "Digite o endereço de email" }, role: { label: "Função", - placeholder: "Selecione uma função", + placeholder: "Selecione uma função" }, name: { label: "Nome", - placeholder: "Digite o nome", + placeholder: "Digite o nome" }, department: { label: "Departamento", - placeholder: "Selecione um departamento", + placeholder: "Selecione um departamento" }, submit: "Adicionar Funcionário", success: "Funcionário adicionado com sucesso", - error: "Falha ao adicionar funcionário", - }, + error: "Falha ao adicionar funcionário" + } }, errors: { - unexpected: "Algo deu errado, por favor tente novamente", + unexpected: "Algo deu errado, por favor tente novamente" }, sub_pages: { risk: { @@ -753,29 +723,29 @@ export default { risk_overview: "Visão Geral dos Riscos", risk_comments: "Comentários sobre Riscos", tasks: { - task_overview: "Visão Geral da Tarefa", - }, + task_overview: "Visão Geral da Tarefa" + } }, policies: { all: "Todas as Políticas", editor: "Editor de Políticas", - policy_details: "Detalhes da política", + policy_details: "Detalhes da política" }, people: { all: "Pessoas", - employee_details: "Detalhes do Funcionário", + employee_details: "Detalhes do Funcionário" }, settings: { - members: "Membros da Equipe", + members: "Membros da Equipe" }, frameworks: { - overview: "Estruturas", + overview: "Estruturas" }, evidence: { title: "Evidência", list: "Lista de Evidências", - overview: "Visão Geral das Evidências", - }, + overview: "Visão Geral das Evidências" + } }, editor: { ai: { @@ -783,25 +753,21 @@ export default { thinking_spinner: "A IA está pensando", edit_or_generate: "Editar ou gerar...", tell_ai_what_to_do_next: "Diga à IA o que fazer a seguir", - request_limit_reached: - "Você atingiu seu limite de solicitações para o dia.", + request_limit_reached: "Você atingiu seu limite de solicitações para o dia." }, ai_selector: { improve: "Melhorar a escrita", fix: "Corrigir gramática", shorter: "Tornar mais curto", longer: "Tornar mais longo", - continue: "Continuar escrevendo", + "continue": "Continuar escrevendo", replace: "Substituir seleção", insert: "Inserir abaixo", - discard: "Descartar", - }, + discard: "Descartar" + } }, evidence: { title: "Tarefas de Evidência", - description: - "Gerencie e acompanhe as tarefas de evidência para seus requisitos de conformidade.", - dashboard: "Painel", - list: "Todas as Evidências", - }, + list: "Todas as Evidências" + } } as const; diff --git a/apps/app/src/middleware.ts b/apps/app/src/middleware.ts index 93cac4d067..930f353579 100644 --- a/apps/app/src/middleware.ts +++ b/apps/app/src/middleware.ts @@ -10,7 +10,6 @@ const I18nMiddleware = createI18nMiddleware({ export async function middleware(request: NextRequest) { const session = await authMiddleware(); - const response = await I18nMiddleware(request); const nextUrl = request.nextUrl; const pathnameLocale = nextUrl.pathname.split("/", 2)?.[1]; @@ -37,6 +36,9 @@ export async function middleware(request: NextRequest) { return NextResponse.redirect(url); } + const response = I18nMiddleware(request); + response.headers.set("x-pathname", request.nextUrl.pathname); + return response; } diff --git a/bun.lockb b/bun.lockb index a3c5b2deaa..86297218f8 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/yarn.lock b/yarn.lock index 80bcb9c995..9a22322718 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,6 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 -# bun ./bun.lockb --hash: 0000000000000000-0000000000000000-0000000000000000-0000000000000000 +# bun ./bun.lockb --hash: 50623A634CC2F293-14aceb406a225af0-07BFE7641E0AC22A-fda6ee1dd8e24450 "@ai-sdk/openai@^0.0.66": @@ -45,20 +45,20 @@ resolved "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-1.0.20.tgz" integrity sha512-ngg/RGpnA00eNOWEtXHenpX1MsM2QshQh4QJFjUfwcqHpM5kTfG7je7Rc3HcEDP+OkRVv2GF+X4fC1Vfcnl8Ow== dependencies: - "@ai-sdk/provider" "0.0.24" - eventsource-parser "1.1.2" nanoid "3.3.6" + "@ai-sdk/provider" "0.0.24" secure-json-parse "2.7.0" + eventsource-parser "1.1.2" "@ai-sdk/provider-utils@1.0.22": version "1.0.22" resolved "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-1.0.22.tgz" integrity sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ== dependencies: - "@ai-sdk/provider" "0.0.26" - eventsource-parser "^1.1.2" nanoid "^3.3.7" + "@ai-sdk/provider" "0.0.26" secure-json-parse "^2.7.0" + eventsource-parser "^1.1.2" "@ai-sdk/provider-utils@2.1.8": version "2.1.8" @@ -75,10 +75,10 @@ resolved "https://registry.npmjs.org/@ai-sdk/react/-/react-0.0.70.tgz" integrity sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ== dependencies: - "@ai-sdk/provider-utils" "1.0.22" - "@ai-sdk/ui-utils" "0.0.50" swr "^2.2.5" throttleit "2.1.0" + "@ai-sdk/ui-utils" "0.0.50" + "@ai-sdk/provider-utils" "1.0.22" "@ai-sdk/react@1.1.16": version "1.1.16" @@ -95,28 +95,28 @@ resolved "https://registry.npmjs.org/@ai-sdk/solid/-/solid-0.0.54.tgz" integrity sha512-96KWTVK+opdFeRubqrgaJXoNiDP89gNxFRWUp0PJOotZW816AbhUf4EnDjBjXTLjXL1n0h8tGSE9sZsRkj9wQQ== dependencies: - "@ai-sdk/provider-utils" "1.0.22" "@ai-sdk/ui-utils" "0.0.50" + "@ai-sdk/provider-utils" "1.0.22" "@ai-sdk/svelte@0.0.57": version "0.0.57" resolved "https://registry.npmjs.org/@ai-sdk/svelte/-/svelte-0.0.57.tgz" integrity sha512-SyF9ItIR9ALP9yDNAD+2/5Vl1IT6kchgyDH8xkmhysfJI6WrvJbtO1wdQ0nylvPLcsPoYu+cAlz1krU4lFHcYw== dependencies: - "@ai-sdk/provider-utils" "1.0.22" - "@ai-sdk/ui-utils" "0.0.50" sswr "^2.1.0" + "@ai-sdk/ui-utils" "0.0.50" + "@ai-sdk/provider-utils" "1.0.22" "@ai-sdk/ui-utils@0.0.50": version "0.0.50" resolved "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-0.0.50.tgz" integrity sha512-Z5QYJVW+5XpSaJ4jYCCAVG7zIAuKOOdikhgpksneNmKvx61ACFaf98pmOd+xnjahl0pIlc/QIe6O4yVaJ1sEaw== dependencies: - "@ai-sdk/provider" "0.0.26" - "@ai-sdk/provider-utils" "1.0.22" json-schema "^0.4.0" + "@ai-sdk/provider" "0.0.26" secure-json-parse "^2.7.0" zod-to-json-schema "^3.23.3" + "@ai-sdk/provider-utils" "1.0.22" "@ai-sdk/ui-utils@1.1.14": version "1.1.14" @@ -132,9 +132,9 @@ resolved "https://registry.npmjs.org/@ai-sdk/vue/-/vue-0.0.59.tgz" integrity sha512-+ofYlnqdc8c4F6tM0IKF0+7NagZRAiqBJpGDJ+6EYhDW8FHLUP/JFBgu32SjxSxC6IKFZxEnl68ZoP/Z38EMlw== dependencies: - "@ai-sdk/provider-utils" "1.0.22" - "@ai-sdk/ui-utils" "0.0.50" swrv "^1.0.4" + "@ai-sdk/ui-utils" "0.0.50" + "@ai-sdk/provider-utils" "1.0.22" "@alloc/quick-lru@^5.2.0": version "5.2.0" @@ -154,23 +154,23 @@ resolved "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-2.8.3.tgz" integrity sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw== dependencies: + lru-cache "^10.4.3" "@csstools/css-calc" "^2.1.1" + "@csstools/css-tokenizer" "^3.0.3" "@csstools/css-color-parser" "^3.0.7" "@csstools/css-parser-algorithms" "^3.0.4" - "@csstools/css-tokenizer" "^3.0.3" - lru-cache "^10.4.3" "@auth/core@0.37.2": version "0.37.2" resolved "https://registry.npmjs.org/@auth/core/-/core-0.37.2.tgz" integrity sha512-kUvzyvkcd6h1vpeMAojK2y7+PAV5H+0Cc9+ZlKYDFhDY31AlvsB+GW5vNO4qE3Y07KeQgvNO9U0QUx/fN62kBw== dependencies: - "@panva/hkdf" "^1.2.1" - "@types/cookie" "0.6.0" - cookie "0.7.1" jose "^5.9.3" - oauth4webapi "^3.0.0" + cookie "0.7.1" preact "10.11.3" + "@panva/hkdf" "^1.2.1" + oauth4webapi "^3.0.0" + "@types/cookie" "0.6.0" preact-render-to-string "5.2.3" "@auth/core@0.37.4": @@ -776,9 +776,9 @@ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" js-tokens "^4.0.0" picocolors "^1.0.0" + "@babel/helper-validator-identifier" "^7.25.9" "@babel/compat-data@^7.26.5": version "7.26.8" @@ -790,60 +790,60 @@ resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz" integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" + debug "^4.1.0" + json5 "^2.2.3" + semver "^6.3.1" + gensync "^1.0.0-beta.2" + "@babel/types" "^7.24.5" "@babel/parser" "^7.24.5" + "@babel/helpers" "^7.24.5" "@babel/template" "^7.24.0" "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/generator" "^7.24.5" + "@babel/code-frame" "^7.24.2" convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" + "@ampproject/remapping" "^2.2.0" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" "@babel/generator@^7.24.5", "@babel/generator@^7.26.9": version "7.26.9" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz" integrity sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg== dependencies: - "@babel/parser" "^7.26.9" + jsesc "^3.0.2" "@babel/types" "^7.26.9" + "@babel/parser" "^7.26.9" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" "@babel/helper-compilation-targets@^7.23.6": version "7.26.5" resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz" integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== dependencies: + semver "^6.3.1" + lru-cache "^5.1.1" + browserslist "^4.24.0" "@babel/compat-data" "^7.26.5" "@babel/helper-validator-option" "^7.25.9" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" "@babel/helper-module-imports@^7.25.9": version "7.25.9" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz" integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== dependencies: - "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/helper-module-transforms@^7.24.5": version "7.26.0" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz" integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== dependencies: + "@babel/traverse" "^7.25.9" "@babel/helper-module-imports" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" "@babel/helper-string-parser@^7.25.9": version "7.25.9" @@ -865,8 +865,8 @@ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz" integrity sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA== dependencies: - "@babel/template" "^7.26.9" "@babel/types" "^7.26.9" + "@babel/template" "^7.26.9" "@babel/parser@7.24.5", "@babel/parser@^7.24.5": version "7.24.5" @@ -892,22 +892,22 @@ resolved "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz" integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" "@babel/types" "^7.26.9" + "@babel/parser" "^7.26.9" + "@babel/code-frame" "^7.26.2" "@babel/traverse@^7.24.5", "@babel/traverse@^7.25.9": version "7.26.9" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz" integrity sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg== dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.9" - "@babel/parser" "^7.26.9" - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.9" debug "^4.3.1" globals "^11.1.0" + "@babel/types" "^7.26.9" + "@babel/parser" "^7.26.9" + "@babel/template" "^7.26.9" + "@babel/generator" "^7.26.9" + "@babel/code-frame" "^7.26.2" "@babel/types@^7.24.5", "@babel/types@^7.25.9", "@babel/types@^7.26.9": version "7.26.9" @@ -934,14 +934,14 @@ resolved "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz" integrity sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog== optionalDependencies: - "@biomejs/cli-darwin-arm64" "1.9.4" + "@biomejs/cli-linux-x64" "1.9.4" + "@biomejs/cli-win32-x64" "1.9.4" "@biomejs/cli-darwin-x64" "1.9.4" "@biomejs/cli-linux-arm64" "1.9.4" - "@biomejs/cli-linux-arm64-musl" "1.9.4" - "@biomejs/cli-linux-x64" "1.9.4" - "@biomejs/cli-linux-x64-musl" "1.9.4" "@biomejs/cli-win32-arm64" "1.9.4" - "@biomejs/cli-win32-x64" "1.9.4" + "@biomejs/cli-darwin-arm64" "1.9.4" + "@biomejs/cli-linux-x64-musl" "1.9.4" + "@biomejs/cli-linux-arm64-musl" "1.9.4" "@biomejs/cli-darwin-arm64@1.9.4": version "1.9.4" @@ -996,19 +996,18 @@ formdata-node "^4.3.2" node-fetch "^2.6.7" -"@bubba/analytics@packages/analytics", "@bubba/analytics@workspace:*": +"@bubba/analytics@packages/analytics": version "workspace:packages/analytics" resolved "workspace:packages/analytics" dependencies: posthog-js "^1.215.3" posthog-node "^4.4.1" -"@bubba/db@packages/db", "@bubba/db@workspace:*": +"@bubba/db@packages/db": version "workspace:packages/db" resolved "workspace:packages/db" devDependencies: - "@bubba/tsconfig" "workspace:*" - devDependencies: + "@bubba/tsconfig" "packages/tsconfig" typescript "^5.7.3" dependencies: "@auth/prisma-adapter" "^2.7.4" @@ -1026,9 +1025,8 @@ "@types/react-dom" "^19.0.0" typescript "^5.7.2" dependencies: - "@bubba/ui" "workspace:*" - "@bubba/utils" "workspace:*" - dependencies: + "@bubba/ui" "packages/ui" + "@bubba/utils" "packages/utils" "@react-email/components" "0.0.31" "@react-email/render" "0.0.10" "@react-email/tailwind" "1.0.4" @@ -1059,7 +1057,7 @@ "@upstash/redis" "^1.34.2" server-only "^0.0.1" -"@bubba/notifications@packages/notifications", "@bubba/notifications@workspace:*": +"@bubba/notifications@packages/notifications": version "workspace:packages/notifications" resolved "workspace:packages/notifications" devDependencies: @@ -1068,11 +1066,11 @@ "@novu/node" "^2.0.1" nanoid "^5.0.7" -"@bubba/tsconfig@packages/tsconfig", "@bubba/tsconfig@workspace:*": +"@bubba/tsconfig@packages/tsconfig": version "workspace:packages/tsconfig" resolved "workspace:packages/tsconfig" -"@bubba/ui@packages/ui", "@bubba/ui@workspace:*": +"@bubba/ui@packages/ui": version "workspace:packages/ui" resolved "workspace:packages/ui" devDependencies: @@ -1136,7 +1134,7 @@ use-callback-ref "^1.3.3" vaul "^1.0.0" -"@bubba/utils@packages/utils", "@bubba/utils@workspace:*": +"@bubba/utils@packages/utils": version "workspace:packages/utils" resolved "workspace:packages/utils" devDependencies: @@ -1162,9 +1160,9 @@ resolved "https://registry.npmjs.org/@clack/prompts/-/prompts-0.10.0.tgz" integrity sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ== dependencies: - "@clack/core" "0.4.1" picocolors "^1.0.0" sisteransi "^1.0.5" + "@clack/core" "0.4.1" "@csstools/color-helpers@^5.0.1": version "5.0.1" @@ -1209,8 +1207,8 @@ resolved "https://registry.npmjs.org/@effect/platform/-/platform-0.72.0.tgz" integrity sha512-uHsW2hlo6AiIW3zpLAVAoNvJngS/JwCZBAM4RSRllm8JTgjjCraef78FJBDNnSXz+2a10Xzzx4qxVsP3s8EV5Q== dependencies: - find-my-way-ts "^0.1.5" multipasta "^0.2.5" + find-my-way-ts "^0.1.5" "@egjs/agent@^2.2.1": version "2.4.4" @@ -1447,10 +1445,10 @@ resolved "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.3.tgz" integrity sha512-pJT1OkhplSmvvr6i3CWTPvC/FGC06MbN5TNBfRO6Ox62AEz90eMq+dVvtX9Bl3jxCEkS0tATzDarRZuOLw7oFg== dependencies: - "@formatjs/fast-memoize" "2.2.6" - "@formatjs/intl-localematcher" "0.6.0" decimal.js "10" tslib "2" + "@formatjs/fast-memoize" "2.2.6" + "@formatjs/intl-localematcher" "0.6.0" "@formatjs/fast-memoize@2.2.6", "@formatjs/fast-memoize@^2.2.0": version "2.2.6" @@ -1464,17 +1462,17 @@ resolved "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.1.tgz" integrity sha512-o0AhSNaOfKoic0Sn1GkFCK4MxdRsw7mPJ5/rBpIqdvcC7MIuyUSW8WChUEvrK78HhNpYOgqCQbINxCTumJLzZA== dependencies: + tslib "2" "@formatjs/ecma402-abstract" "2.3.3" "@formatjs/icu-skeleton-parser" "1.8.13" - tslib "2" "@formatjs/icu-skeleton-parser@1.8.13": version "1.8.13" resolved "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.13.tgz" integrity sha512-N/LIdTvVc1TpJmMt2jVg0Fr1F7Q1qJPdZSCs19unMskCmVQ/sa0H9L8PWt13vq+gLdLg1+pPsvBLydL1Apahjg== dependencies: - "@formatjs/ecma402-abstract" "2.3.3" tslib "2" + "@formatjs/ecma402-abstract" "2.3.3" "@formatjs/intl-localematcher@^0.5.4": version "0.5.10" @@ -1813,70 +1811,70 @@ hey-listen "^1.0.8" tslib "^2.3.1" -"@mui/core-downloads-tracker@^6.4.4": - version "6.4.4" - resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.4.tgz" - integrity sha512-r+J0EditrekkTtO2CnCBCOGpNaDYwJqz8lH4rj6o/anDcskZFJodBlG8aCJkS8DL/CF/9EHS+Gz53EbmYEnQbw== +"@mui/core-downloads-tracker@^6.4.5": + version "6.4.5" + resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.5.tgz" + integrity sha512-zoXvHU1YuoodgMlPS+epP084Pqv9V+Vg+5IGv9n/7IIFVQ2nkTngYHYxElCq8pdTTbDcgji+nNh0lxri2abWgA== "@mui/icons-material@^6.1.6": - version "6.4.4" - resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.4.tgz" - integrity sha512-uF1chGaoFmYdRUomK6f8kgJfWosk9A3HXWiVD0vQm+2mE7f25eTQ1E8RRO11LXpnUBqu8Rbv/uGlpnjT/u1Ksg== + version "6.4.5" + resolved "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.5.tgz" + integrity sha512-4A//t8Nrc+4u4pbVhGarIFU98zpuB5AV9hTNzgXx1ySZJ1tWtx+i/1SbQ8PtGJxWeXlljhwimZJNPQ3x0CiIFw== dependencies: "@babel/runtime" "^7.26.0" -"@mui/material@^6.4.4": - version "6.4.4" - resolved "https://registry.npmjs.org/@mui/material/-/material-6.4.4.tgz" - integrity sha512-ISVPrIsPQsxnwvS40C4u03AuNSPigFeS2+n1qpuEZ94hDsdMi19dQM2JcC9CHEhXecSIQjP1RTyY0mPiSpSrFQ== +"@mui/material@^6.4.5": + version "6.4.5" + resolved "https://registry.npmjs.org/@mui/material/-/material-6.4.5.tgz" + integrity sha512-5eyEgSXocIeV1JkXs8mYyJXU0aFyXZIWI5kq2g/mCnIgJe594lkOBNAKnCIaGVfQTu2T6TTEHF8/hHIqpiIRGA== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/core-downloads-tracker" "^6.4.4" - "@mui/system" "^6.4.3" - "@mui/types" "^7.2.21" - "@mui/utils" "^6.4.3" - "@popperjs/core" "^2.11.8" - "@types/react-transition-group" "^4.4.12" clsx "^2.1.1" csstype "^3.1.3" - prop-types "^15.8.1" react-is "^19.0.0" + "@mui/types" "^7.2.21" + "@mui/utils" "^6.4.3" + prop-types "^15.8.1" + "@mui/system" "^6.4.3" + "@babel/runtime" "^7.26.0" + "@popperjs/core" "^2.11.8" react-transition-group "^4.4.5" + "@mui/core-downloads-tracker" "^6.4.5" + "@types/react-transition-group" "^4.4.12" "@mui/private-theming@^6.4.3": version "6.4.3" resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.3.tgz" integrity sha512-7x9HaNwDCeoERc4BoEWLieuzKzXu5ZrhRnEM6AUcRXUScQLvF1NFkTlP59+IJfTbEMgcGg1wWHApyoqcksrBpQ== dependencies: - "@babel/runtime" "^7.26.0" "@mui/utils" "^6.4.3" prop-types "^15.8.1" + "@babel/runtime" "^7.26.0" "@mui/styled-engine@^6.4.3": version "6.4.3" resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.4.3.tgz" integrity sha512-OC402VfK+ra2+f12Gef8maY7Y9n7B6CZcoQ9u7mIkh/7PKwW/xH81xwX+yW+Ak1zBT3HYcVjh2X82k5cKMFGoQ== dependencies: + csstype "^3.1.3" + prop-types "^15.8.1" "@babel/runtime" "^7.26.0" "@emotion/cache" "^11.13.5" - "@emotion/serialize" "^1.3.3" "@emotion/sheet" "^1.4.0" - csstype "^3.1.3" - prop-types "^15.8.1" + "@emotion/serialize" "^1.3.3" "@mui/system@^6.4.3": version "6.4.3" resolved "https://registry.npmjs.org/@mui/system/-/system-6.4.3.tgz" integrity sha512-Q0iDwnH3+xoxQ0pqVbt8hFdzhq1g2XzzR4Y5pVcICTNtoCLJmpJS3vI4y/OIM1FHFmpfmiEC2IRIq7YcZ8nsmg== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/private-theming" "^6.4.3" - "@mui/styled-engine" "^6.4.3" - "@mui/types" "^7.2.21" - "@mui/utils" "^6.4.3" clsx "^2.1.1" csstype "^3.1.3" + "@mui/types" "^7.2.21" + "@mui/utils" "^6.4.3" prop-types "^15.8.1" + "@babel/runtime" "^7.26.0" + "@mui/styled-engine" "^6.4.3" + "@mui/private-theming" "^6.4.3" "@mui/types@^7.2.21": version "7.2.21" @@ -1888,27 +1886,36 @@ resolved "https://registry.npmjs.org/@mui/utils/-/utils-6.4.3.tgz" integrity sha512-jxHRHh3BqVXE9ABxDm+Tc3wlBooYz/4XPa0+4AI+iF38rV1/+btJmSUgG4shDtSWVs/I97aDn5jBCt6SF2Uq2A== dependencies: - "@babel/runtime" "^7.26.0" - "@mui/types" "^7.2.21" - "@types/prop-types" "^15.7.14" clsx "^2.1.1" - prop-types "^15.8.1" react-is "^19.0.0" + "@mui/types" "^7.2.21" + prop-types "^15.8.1" + "@babel/runtime" "^7.26.0" + "@types/prop-types" "^15.7.14" "@nangohq/frontend@^0.53.1": - version "0.53.2" - resolved "https://registry.npmjs.org/@nangohq/frontend/-/frontend-0.53.2.tgz" - integrity sha512-ZSNY9jHVuF/Qfsu8TJBK3tujsxO+Qi7dHWNFt316Mq3g4od9MwuHefTEs0EtfpUTCB18hNE05QOQWCuD8zO8Aw== + version "0.53.1" + resolved "https://registry.npmjs.org/@nangohq/frontend/-/frontend-0.53.1.tgz" + integrity sha512-NjQwktw1aKYsQ9QPGJkyABgVZhWBrYlJgi12ohyLnw1X/0jLH2XxVrGEmBG/F8ID1/1g3YHo1SxdV0Dcaw0ZPQ== dependencies: - "@nangohq/types" "0.53.2" + "@nangohq/types" "0.53.1" "@nangohq/node@^0.53.2": version "0.53.2" resolved "https://registry.npmjs.org/@nangohq/node/-/node-0.53.2.tgz" integrity sha512-QfBrtbv1dekI3RH+HX+43MGIRs36MNuWMdWS1RRFKjiCmIwKaOje6qjRj0UDjQYtokKcbt2id2sAAq8fmusjCQ== dependencies: + axios "^1.7.9" "@nangohq/types" "0.53.2" + +"@nangohq/types@0.53.1": + version "0.53.1" + resolved "https://registry.npmjs.org/@nangohq/types/-/types-0.53.1.tgz" + integrity sha512-9ZfkhoYgwEkAonYHku0sE20pYn+XlAVvD74HDqXg4b9g0Lxsdsv7eptr0VVPMaaUAt790JjfbwphrlEIvWyCag== + dependencies: axios "^1.7.9" + json-schema "0.4.0" + type-fest "4.32.0" "@nangohq/types@0.53.2": version "0.53.2" @@ -1916,8 +1923,8 @@ integrity sha512-G7oC4QsJrmLjAWQmvB7gY8hE0UMr8PofAY/pPsk/0sHIM1YWeealBI7RiPeN4UluArT7w+OoUvMQd+jtrTh9Lw== dependencies: axios "^1.7.9" - json-schema "0.4.0" type-fest "4.32.0" + json-schema "0.4.0" "@neondatabase/serverless@^0.10.4", "@neondatabase/serverless@^0.6.0 || ^0.7.0 || ^0.8.0 || ^0.9.0 || ^0.10.0": version "0.10.4" @@ -1931,6 +1938,11 @@ resolved "https://registry.npmjs.org/@next/env/-/env-15.0.4.tgz" integrity sha512-WNRvtgnRVDD4oM8gbUcRc27IAhaL4eXQ/2ovGbgLnPGUvdyDr8UdXP4Q/IBDdAdojnD2eScryIDirv0YUCjUVw== +"@next/env@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/env/-/env-15.1.7.tgz" + integrity sha512-d9jnRrkuOH7Mhi+LHav2XW91HOgTAWHxjMPkXMGBc9B2b7614P7kjt8tAplRvJpbSt4nbO1lugcT/kAaWzjlLQ== + "@next/env@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/env/-/env-15.2.0.tgz" @@ -1941,6 +1953,11 @@ resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.4.tgz" integrity sha512-QecQXPD0yRHxSXWL5Ff80nD+A56sUXZG9koUsjWJwA2Z0ZgVQfuy7gd0/otjxoOovPVHR2eVEvPMHbtZP+pf9w== +"@next/swc-darwin-arm64@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.7.tgz" + integrity sha512-hPFwzPJDpA8FGj7IKV3Yf1web3oz2YsR8du4amKw8d+jAOHfYHYFpMkoF6vgSY4W6vB29RtZEklK9ayinGiCmQ== + "@next/swc-darwin-arm64@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.0.tgz" @@ -1951,6 +1968,11 @@ resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.4.tgz" integrity sha512-pb7Bye3y1Og3PlCtnz2oO4z+/b3pH2/HSYkLbL0hbVuTGil7fPen8/3pyyLjdiTLcFJ+ymeU3bck5hd4IPFFCA== +"@next/swc-darwin-x64@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.7.tgz" + integrity sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ== + "@next/swc-darwin-x64@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.0.tgz" @@ -1961,6 +1983,11 @@ resolved "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.4.tgz" integrity sha512-12oSaBFjGpB227VHzoXF3gJoK2SlVGmFJMaBJSu5rbpaoT5OjP5OuCLuR9/jnyBF1BAWMs/boa6mLMoJPRriMA== +"@next/swc-linux-arm64-gnu@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.7.tgz" + integrity sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA== + "@next/swc-linux-arm64-gnu@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.0.tgz" @@ -1971,6 +1998,11 @@ resolved "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.4.tgz" integrity sha512-QARO88fR/a+wg+OFC3dGytJVVviiYFEyjc/Zzkjn/HevUuJ7qGUUAUYy5PGVWY1YgTzeRYz78akQrVQ8r+sMjw== +"@next/swc-linux-arm64-musl@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.7.tgz" + integrity sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w== + "@next/swc-linux-arm64-musl@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.0.tgz" @@ -1981,6 +2013,11 @@ resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.4.tgz" integrity sha512-Z50b0gvYiUU1vLzfAMiChV8Y+6u/T2mdfpXPHraqpypP7yIT2UV9YBBhcwYkxujmCvGEcRTVWOj3EP7XW/wUnw== +"@next/swc-linux-x64-gnu@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.7.tgz" + integrity sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ== + "@next/swc-linux-x64-gnu@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.0.tgz" @@ -1991,6 +2028,11 @@ resolved "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.4.tgz" integrity sha512-7H9C4FAsrTAbA/ENzvFWsVytqRYhaJYKa2B3fyQcv96TkOGVMcvyS6s+sj4jZlacxxTcn7ygaMXUPkEk7b78zw== +"@next/swc-linux-x64-musl@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.7.tgz" + integrity sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ== + "@next/swc-linux-x64-musl@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.0.tgz" @@ -2001,6 +2043,11 @@ resolved "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.4.tgz" integrity sha512-Z/v3WV5xRaeWlgJzN9r4PydWD8sXV35ywc28W63i37G2jnUgScA4OOgS8hQdiXLxE3gqfSuHTicUhr7931OXPQ== +"@next/swc-win32-arm64-msvc@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.7.tgz" + integrity sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q== + "@next/swc-win32-arm64-msvc@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.0.tgz" @@ -2011,6 +2058,11 @@ resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.4.tgz" integrity sha512-NGLchGruagh8lQpDr98bHLyWJXOBSmkEAfK980OiNBa7vNm6PsNoPvzTfstT78WyOeMRQphEQ455rggd7Eo+Dw== +"@next/swc-win32-x64-msvc@15.1.7": + version "15.1.7" + resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.7.tgz" + integrity sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ== + "@next/swc-win32-x64-msvc@15.2.0": version "15.2.0" resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.0.tgz" @@ -2051,8 +2103,8 @@ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: - "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" + "@nodelib/fs.scandir" "2.1.5" "@novu/client@2.6.5": version "2.6.5" @@ -2066,10 +2118,10 @@ resolved "https://registry.npmjs.org/@novu/headless/-/headless-2.6.5.tgz" integrity sha512-/jVFGAjobMV7d7pjAuBABggFZHUmLH6g6GslNilr79+uitPK3ZW4QWX4iQ1UPrGAbj7w6Xf4Ve3fAq7vftB1qw== dependencies: - "@novu/client" "2.6.5" - "@novu/shared" "2.6.5" "@tanstack/query-core" "^4.15.1" socket.io-client "4.7.2" + "@novu/client" "2.6.5" + "@novu/shared" "2.6.5" "@novu/js@2.6.5": version "2.6.5" @@ -2091,25 +2143,25 @@ resolved "https://registry.npmjs.org/@novu/node/-/node-2.6.5.tgz" integrity sha512-5GQI6EkjsLNbzUOXIRGbeFNsY1+bzI8sVhoeBCJfnJ9r/elFNRSMYsgVp5dCXtzLBrp7cjMfYNdLFhp1uUNaig== dependencies: - "@novu/shared" "2.6.5" axios "^1.6.8" axios-retry "^3.8.0" handlebars "^4.7.7" lodash.get "^4.4.2" lodash.merge "^4.6.2" uuid "^9.0.1" + "@novu/shared" "2.6.5" "@novu/ntfr-client@^0.0.4": version "0.0.4" resolved "https://registry.npmjs.org/@novu/ntfr-client/-/ntfr-client-0.0.4.tgz" integrity sha512-/9q+qGFHHFwMsuqoLwTADMjSx2JPagpJpm7jOZRzQZgSEDg9kwNAhADneRzVYhMyjdEXIQyjTmX/oP8ABAavFw== dependencies: + ws "^8.11.0" + zod "3.22.3" https "^1.0.0" node-fetch "^3.3.2" partysocket "^0.0.17" proxy-agent "^6.3.0" - ws "^8.11.0" - zod "3.22.3" "@novu/react@^2.6.5": version "2.6.5" @@ -2128,7 +2180,7 @@ resolved "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz" integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw== -"@opentelemetry/api@1.9.0", "@opentelemetry/api@>=1.0.0 <1.10.0", "@opentelemetry/api@>=1.3.0 <1.10.0", "@opentelemetry/api@>=1.4.0 <1.10.0", "@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.1.0", "@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.8": +"@opentelemetry/api@1.9.0", "@opentelemetry/api@>=1.0.0 <1.10.0", "@opentelemetry/api@>=1.3.0 <1.10.0", "@opentelemetry/api@>=1.4.0 <1.10.0", "@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.8": version "1.9.0" resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== @@ -2140,13 +2192,6 @@ dependencies: "@opentelemetry/api" "^1.0.0" -"@opentelemetry/api-logs@0.57.2": - version "0.57.2" - resolved "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.57.2.tgz" - integrity sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A== - dependencies: - "@opentelemetry/api" "^1.3.0" - "@opentelemetry/context-async-hooks@1.25.1": version "1.25.1" resolved "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz" @@ -2164,11 +2209,11 @@ resolved "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.52.1.tgz" integrity sha512-qKgywId2DbdowPZpOBXQKp0B8DfhfIArmSic15z13Nk/JAOccBUQdPwDjDnjsM5f0ckZFMVR2t/tijTUAqDZoA== dependencies: - "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/core" "1.25.1" - "@opentelemetry/otlp-exporter-base" "0.52.1" - "@opentelemetry/otlp-transformer" "0.52.1" + "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/sdk-logs" "0.52.1" + "@opentelemetry/otlp-transformer" "0.52.1" + "@opentelemetry/otlp-exporter-base" "0.52.1" "@opentelemetry/exporter-trace-otlp-grpc@0.52.1": version "0.52.1" @@ -2177,10 +2222,10 @@ dependencies: "@grpc/grpc-js" "^1.7.1" "@opentelemetry/core" "1.25.1" - "@opentelemetry/otlp-grpc-exporter-base" "0.52.1" - "@opentelemetry/otlp-transformer" "0.52.1" "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-trace-base" "1.25.1" + "@opentelemetry/otlp-transformer" "0.52.1" + "@opentelemetry/otlp-grpc-exporter-base" "0.52.1" "@opentelemetry/exporter-trace-otlp-http@0.52.1": version "0.52.1" @@ -2188,10 +2233,10 @@ integrity sha512-05HcNizx0BxcFKKnS5rwOV+2GevLTVIRA0tRgWYyw4yCgR53Ic/xk83toYKts7kbzcI+dswInUg/4s8oyA+tqg== dependencies: "@opentelemetry/core" "1.25.1" - "@opentelemetry/otlp-exporter-base" "0.52.1" - "@opentelemetry/otlp-transformer" "0.52.1" "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-trace-base" "1.25.1" + "@opentelemetry/otlp-transformer" "0.52.1" + "@opentelemetry/otlp-exporter-base" "0.52.1" "@opentelemetry/exporter-trace-otlp-proto@0.52.1": version "0.52.1" @@ -2199,10 +2244,10 @@ integrity sha512-pt6uX0noTQReHXNeEslQv7x311/F1gJzMnp1HD2qgypLRPbXDeMzzeTngRTUaUbP6hqWNtPxuLr4DEoZG+TcEQ== dependencies: "@opentelemetry/core" "1.25.1" - "@opentelemetry/otlp-exporter-base" "0.52.1" - "@opentelemetry/otlp-transformer" "0.52.1" "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-trace-base" "1.25.1" + "@opentelemetry/otlp-transformer" "0.52.1" + "@opentelemetry/otlp-exporter-base" "0.52.1" "@opentelemetry/exporter-zipkin@1.25.1": version "1.25.1" @@ -2214,29 +2259,17 @@ "@opentelemetry/sdk-trace-base" "1.25.1" "@opentelemetry/semantic-conventions" "1.25.1" -"@opentelemetry/instrumentation@0.52.1": +"@opentelemetry/instrumentation@0.52.1", "@opentelemetry/instrumentation@^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0": version "0.52.1" resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz" integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== dependencies: - "@opentelemetry/api-logs" "0.52.1" - "@types/shimmer" "^1.0.2" - import-in-the-middle "^1.8.1" - require-in-the-middle "^7.1.1" semver "^7.5.2" shimmer "^1.2.1" - -"@opentelemetry/instrumentation@^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0": - version "0.57.2" - resolved "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz" - integrity sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg== - dependencies: - "@opentelemetry/api-logs" "0.57.2" - "@types/shimmer" "^1.2.0" + "@types/shimmer" "^1.0.2" import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" - semver "^7.5.2" - shimmer "^1.2.1" + "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/otlp-exporter-base@0.52.1": version "0.52.1" @@ -2253,21 +2286,21 @@ dependencies: "@grpc/grpc-js" "^1.7.1" "@opentelemetry/core" "1.25.1" - "@opentelemetry/otlp-exporter-base" "0.52.1" "@opentelemetry/otlp-transformer" "0.52.1" + "@opentelemetry/otlp-exporter-base" "0.52.1" "@opentelemetry/otlp-transformer@0.52.1": version "0.52.1" resolved "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.52.1.tgz" integrity sha512-I88uCZSZZtVa0XniRqQWKbjAUm73I8tpEy/uJYPPYw5d7BRdVk0RfTBQw8kSUl01oVWEuqxLDa802222MYyWHg== dependencies: - "@opentelemetry/api-logs" "0.52.1" + protobufjs "^7.3.0" "@opentelemetry/core" "1.25.1" - "@opentelemetry/resources" "1.25.1" + "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/sdk-logs" "0.52.1" + "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-metrics" "1.25.1" "@opentelemetry/sdk-trace-base" "1.25.1" - protobufjs "^7.3.0" "@opentelemetry/propagator-b3@1.25.1": version "1.25.1" @@ -2296,8 +2329,8 @@ resolved "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.52.1.tgz" integrity sha512-MBYh+WcPPsN8YpRHRmK1Hsca9pVlyyKd4BxOC4SsgHACnl/bPp4Cri9hWhVm5+2tiQ9Zf4qSc1Jshw9tOLGWQA== dependencies: - "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/core" "1.25.1" + "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-metrics@1.25.1": @@ -2305,28 +2338,28 @@ resolved "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz" integrity sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q== dependencies: + lodash.merge "^4.6.2" "@opentelemetry/core" "1.25.1" "@opentelemetry/resources" "1.25.1" - lodash.merge "^4.6.2" "@opentelemetry/sdk-node@0.52.1": version "0.52.1" resolved "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.52.1.tgz" integrity sha512-uEG+gtEr6eKd8CVWeKMhH2olcCHM9dEK68pe0qE0be32BcCRsvYURhHaD1Srngh1SQcnQzZ4TP324euxqtBOJA== dependencies: - "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/core" "1.25.1" - "@opentelemetry/exporter-trace-otlp-grpc" "0.52.1" - "@opentelemetry/exporter-trace-otlp-http" "0.52.1" - "@opentelemetry/exporter-trace-otlp-proto" "0.52.1" - "@opentelemetry/exporter-zipkin" "1.25.1" - "@opentelemetry/instrumentation" "0.52.1" - "@opentelemetry/resources" "1.25.1" + "@opentelemetry/api-logs" "0.52.1" "@opentelemetry/sdk-logs" "0.52.1" + "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-metrics" "1.25.1" "@opentelemetry/sdk-trace-base" "1.25.1" "@opentelemetry/sdk-trace-node" "1.25.1" + "@opentelemetry/exporter-zipkin" "1.25.1" + "@opentelemetry/instrumentation" "0.52.1" "@opentelemetry/semantic-conventions" "1.25.1" + "@opentelemetry/exporter-trace-otlp-grpc" "0.52.1" + "@opentelemetry/exporter-trace-otlp-http" "0.52.1" + "@opentelemetry/exporter-trace-otlp-proto" "0.52.1" "@opentelemetry/sdk-trace-base@1.25.1": version "1.25.1" @@ -2342,13 +2375,13 @@ resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.25.1.tgz" integrity sha512-nMcjFIKxnFqoez4gUmihdBrbpsEnAX/Xj16sGvZm+guceYE0NE00vLhpDVK6f3q8Q4VFI5xG8JjlXKMB/SkTTQ== dependencies: - "@opentelemetry/context-async-hooks" "1.25.1" + semver "^7.5.2" "@opentelemetry/core" "1.25.1" "@opentelemetry/propagator-b3" "1.25.1" - "@opentelemetry/propagator-jaeger" "1.25.1" "@opentelemetry/sdk-trace-base" "1.25.1" - semver "^7.5.2" - + "@opentelemetry/propagator-jaeger" "1.25.1" + "@opentelemetry/context-async-hooks" "1.25.1" + "@opentelemetry/semantic-conventions@1.25.1": version "1.25.1" resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz" @@ -2489,9 +2522,9 @@ resolved "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz" integrity sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw== dependencies: - "@pnpm/config.env-replace" "^1.1.0" - "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" + "@pnpm/network.ca-file" "^1.0.1" + "@pnpm/config.env-replace" "^1.1.0" "@popperjs/core@^2.11.8", "@popperjs/core@^2.9.0": version "2.11.8" @@ -2499,70 +2532,70 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@prisma/adapter-neon@^6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/adapter-neon/-/adapter-neon-6.3.1.tgz" - integrity sha512-yDCeqQ0EYT/DBL6G2uh01IlVrCr9Jli6SXa1yvdl/Kq4O/Hjj1i+Oxg4FskHVStLvlo6bqNxEFtLEuFCLCXG1A== + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/adapter-neon/-/adapter-neon-6.4.0.tgz" + integrity sha512-iRaNmzESQLltEb51hv9jChNFnUDx4VbDvpcyI25kLYwh/RJJR18KjtYCrq4WX22ruFxatlXKXKGZ/XS+bOY2kQ== dependencies: - "@prisma/driver-adapter-utils" "6.3.1" postgres-array "3.0.2" + "@prisma/driver-adapter-utils" "6.4.0" "@prisma/client@>=2.26.0 || >=3 || >=4 || >=5", "@prisma/client@>=4.16.1", "@prisma/client@^6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/client/-/client-6.3.1.tgz" - integrity sha512-ARAJaPs+eBkemdky/XU3cvGRl+mIPHCN2lCXsl5Vlb0E2gV+R6IN7aCI8CisRGszEZondwIsW9Iz8EJkTdykyA== + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/client/-/client-6.4.0.tgz" + integrity sha512-48tLb+VL7iuuqJXjD4Xbqa622fuh8UtqmjTf39AKrQjlTUdNaMc9sC/c49eXQkcnrAdh9FoS1qVupmZSYiZ9TQ== -"@prisma/debug@6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/debug/-/debug-6.3.1.tgz" - integrity sha512-RrEBkd+HLZx+ydfmYT0jUj7wjLiS95wfTOSQ+8FQbvb6vHh5AeKfEPt/XUQ5+Buljj8hltEfOslEW57/wQIVeA== +"@prisma/debug@6.4.0": + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/debug/-/debug-6.4.0.tgz" + integrity sha512-zXsLpNXLypdThJjItqk0u/3uitcD9+9rNynZPPu4Xp7664yp8VbxCGTVBS696vA0e3kw0Xv/4muR+cNHkxspcw== -"@prisma/driver-adapter-utils@6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-6.3.1.tgz" - integrity sha512-Z30oSnSFYlzU/Z96lfApqd42EzSXwxj7iPD34iGdZ+fecGlOO9WaBY2tlzCdt7sdhxIxNGEL8tD1o4EHX8tLNA== +"@prisma/driver-adapter-utils@6.4.0": + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-6.4.0.tgz" + integrity sha512-lfDUpSAyhmn3JBAoxpT/FAPl5bB+8qF39hA13KvwH0mBBxTzsI7mWZ/Jv4OFnCjeXSjPtxqUJLkPAdVuSK9g1g== dependencies: - "@prisma/debug" "6.3.1" + "@prisma/debug" "6.4.0" -"@prisma/engines@6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/engines/-/engines-6.3.1.tgz" - integrity sha512-sXdqEVLyGAJ5/iUoG/Ea5AdHMN71m6PzMBWRQnLmhhOejzqAaEr8rUd623ql6OJpED4s/U4vIn4dg1qkF7vGag== +"@prisma/engines@6.4.0": + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/engines/-/engines-6.4.0.tgz" + integrity sha512-SeUigmWj0uhnSjYKWkG//Gzj4XHy6bi1TXgTZ+pPujxGELJgOvecgaA/bHmWokyHPnbYWRaoSwQDxPjihYzSZg== dependencies: - "@prisma/debug" "6.3.1" - "@prisma/engines-version" "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0" - "@prisma/fetch-engine" "6.3.1" - "@prisma/get-platform" "6.3.1" + "@prisma/engines-version" "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d" + "@prisma/debug" "6.4.0" + "@prisma/fetch-engine" "6.4.0" + "@prisma/get-platform" "6.4.0" -"@prisma/engines-version@6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0": - version "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0" - resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0.tgz" - integrity sha512-R/ZcMuaWZT2UBmgX3Ko6PAV3f8//ZzsjRIG1eKqp3f2rqEqVtCv+mtzuH2rBPUC9ujJ5kCb9wwpxeyCkLcHVyA== +"@prisma/engines-version@6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d": + version "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d" + resolved "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d.tgz" + integrity sha512-Xq54qw55vaCGrGgIJqyDwOq0TtjZPJEWsbQAHugk99hpDf2jcEeQhUcF+yzEsSqegBaDNLA4IC8Nn34sXmkiTQ== "@prisma/extension-accelerate@^1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@prisma/extension-accelerate/-/extension-accelerate-1.2.2.tgz" integrity sha512-LOlfkG6If+o8PFRzLzp26ackP/d+j2HrkTJaxuV/Wd+sdAHz/AkmzEDGbo2UpHFpxEM9hWMBe3ScSwUKYUDOXg== -"@prisma/fetch-engine@6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.3.1.tgz" - integrity sha512-HOf/0umOgt+/S2xtZze+FHKoxpVg4YpVxROr6g2YG09VsI3Ipyb+rGvD6QGbCqkq5NTWAAZoOGNL+oy7t+IhaQ== +"@prisma/fetch-engine@6.4.0": + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-6.4.0.tgz" + integrity sha512-CN/Qb/+n+15gfhN0ipeUcGu/oGw7HIwVw4DCKD11190dneVGpa+n0wxwXTFJlV0vkAeSBSkQ3y1ugKAa5s/VPg== dependencies: - "@prisma/debug" "6.3.1" - "@prisma/engines-version" "6.3.0-17.acc0b9dd43eb689cbd20c9470515d719db10d0b0" - "@prisma/get-platform" "6.3.1" + "@prisma/engines-version" "6.4.0-29.a9055b89e58b4b5bfb59600785423b1db3d0e75d" + "@prisma/debug" "6.4.0" + "@prisma/get-platform" "6.4.0" -"@prisma/get-platform@6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.3.1.tgz" - integrity sha512-AYLq6Hk9xG73JdLWJ3Ip9Wg/vlP7xPvftGBalsPzKDOHr/ImhwJ09eS8xC2vNT12DlzGxhfk8BkL0ve2OriNhQ== +"@prisma/get-platform@6.4.0": + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-6.4.0.tgz" + integrity sha512-khANH9QbCRhFWiGj3qmR0clxLTU76Cimxf4JAhjhtpsc1jdG1A9geGe0kU4WAQ1YpiKFJ10s9j2wbbE/jSP99Q== dependencies: - "@prisma/debug" "6.3.1" + "@prisma/debug" "6.4.0" "@prisma/instrumentation@^6.3.1": - version "6.3.1" - resolved "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.3.1.tgz" - integrity sha512-XETCiBQYm8p/3ouNs0sv00MqjeYYM6sge0CSgx+Oevex99cfOBPt+J6JbOPyYqYcyOd3m2j2xRlXkPUKmpuxiA== + version "6.4.0" + resolved "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.4.0.tgz" + integrity sha512-7QcoOE0DpxHaC/3Q+UTKvDCVL3Wc9C0MYHjGvMl9/LKLNI/D33CTMXJji/otWxOeRYFl6ENDB4768Og0grT9tw== dependencies: "@opentelemetry/instrumentation" "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0" @@ -2628,9 +2661,9 @@ extract-zip "^2.0.1" progress "^2.0.3" proxy-agent "^6.5.0" - semver "^7.7.0" tar-fs "^3.0.8" yargs "^17.7.2" + semver "^7.7.0" "@radix-ui/number@1.1.0": version "1.1.0" @@ -2654,14 +2687,14 @@ resolved "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.3.tgz" integrity sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A== dependencies: + "@radix-ui/react-id" "1.1.0" "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collapsible" "1.1.3" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-id" "1.1.0" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-collapsible" "1.1.3" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-alert-dialog@^1.1.2": @@ -2670,11 +2703,11 @@ integrity sha512-p4XnPqgej8sZAAReCAKgz1REYZEBLR8hU9Pg27wFnCWIMc8g1ccCs0FjBcy05V15VTu8pAePw/VDYeOm/uZ6yQ== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-dialog" "1.1.6" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-slot" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-arrow@1.1.2": version "1.1.2" @@ -2699,37 +2732,37 @@ integrity sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" + "@radix-ui/react-use-size" "1.1.0" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-previous" "1.1.0" - "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-collapsible@1.1.3", "@radix-ui/react-collapsible@^1.1.1": version "1.1.3" resolved "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.3.tgz" integrity sha512-jFSerheto1X03MUC0g6R7LedNW9EEGWdg9W1+MlpkMLwGkgkbUXLPBH/KIuWKXUoeYRVY11llqbTBDzuLg7qrw== dependencies: + "@radix-ui/react-id" "1.1.0" "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-id" "1.1.0" "@radix-ui/react-presence" "1.1.2" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-collection@1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz" integrity sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw== dependencies: - "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-context" "1.1.1" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-slot" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-compose-refs@1.0.0": version "1.0.0" @@ -2761,8 +2794,8 @@ integrity sha512-aUP99QZ3VU84NPsHeaFt4cQUNgJqFsLLOt/RbbWXszZ6MP0DpDyjkFZORr4RpAEx3sUBk+Kc8h13yGtC5Qw8dg== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-context" "1.1.1" "@radix-ui/react-menu" "2.1.6" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-primitive" "2.0.2" "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" @@ -2772,41 +2805,41 @@ resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.0.tgz" integrity sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q== dependencies: + aria-hidden "^1.1.1" "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.0" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-context" "1.0.0" - "@radix-ui/react-dismissable-layer" "1.0.0" - "@radix-ui/react-focus-guards" "1.0.0" - "@radix-ui/react-focus-scope" "1.0.0" "@radix-ui/react-id" "1.0.0" + "@radix-ui/primitive" "1.0.0" + react-remove-scroll "2.5.4" + "@radix-ui/react-slot" "1.0.0" "@radix-ui/react-portal" "1.0.0" + "@radix-ui/react-context" "1.0.0" "@radix-ui/react-presence" "1.0.0" "@radix-ui/react-primitive" "1.0.0" - "@radix-ui/react-slot" "1.0.0" + "@radix-ui/react-focus-scope" "1.0.0" + "@radix-ui/react-compose-refs" "1.0.0" + "@radix-ui/react-focus-guards" "1.0.0" + "@radix-ui/react-dismissable-layer" "1.0.0" "@radix-ui/react-use-controllable-state" "1.0.0" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.4" "@radix-ui/react-dialog@1.1.6", "@radix-ui/react-dialog@^1.1.1", "@radix-ui/react-dialog@^1.1.2": version "1.1.6" resolved "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.6.tgz" integrity sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw== dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.5" - "@radix-ui/react-focus-guards" "1.1.1" - "@radix-ui/react-focus-scope" "1.1.2" + aria-hidden "^1.2.4" "@radix-ui/react-id" "1.1.0" + "@radix-ui/primitive" "1.1.1" + react-remove-scroll "^2.6.3" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-slot" "1.1.2" + "@radix-ui/react-focus-scope" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-use-controllable-state" "1.1.0" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" "@radix-ui/react-direction@1.1.0": version "1.1.0" @@ -2820,8 +2853,8 @@ dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/primitive" "1.0.0" - "@radix-ui/react-compose-refs" "1.0.0" "@radix-ui/react-primitive" "1.0.0" + "@radix-ui/react-compose-refs" "1.0.0" "@radix-ui/react-use-callback-ref" "1.0.0" "@radix-ui/react-use-escape-keydown" "1.0.0" @@ -2831,8 +2864,8 @@ integrity sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-escape-keydown" "1.1.0" @@ -2841,12 +2874,12 @@ resolved "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.6.tgz" integrity sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA== dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" "@radix-ui/react-id" "1.1.0" + "@radix-ui/primitive" "1.1.1" "@radix-ui/react-menu" "2.1.6" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-focus-guards@1.0.0": @@ -2867,8 +2900,8 @@ integrity sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ== dependencies: "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" "@radix-ui/react-primitive" "1.0.0" + "@radix-ui/react-compose-refs" "1.0.0" "@radix-ui/react-use-callback-ref" "1.0.0" "@radix-ui/react-focus-scope@1.1.2": @@ -2876,8 +2909,8 @@ resolved "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz" integrity sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA== dependencies: - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-hover-card@^1.1.2": @@ -2886,13 +2919,13 @@ integrity sha512-E4ozl35jq0VRlrdc4dhHrNSV0JqBb4Jy73WAhBEK7JoYnQ83ED5r0Rb/XdVKw89ReAJN38N492BAPBZQ57VmqQ== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-popper" "1.2.2" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-icons@^1.3.0": @@ -2927,81 +2960,81 @@ resolved "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.6.tgz" integrity sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg== dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.5" - "@radix-ui/react-focus-guards" "1.1.1" - "@radix-ui/react-focus-scope" "1.1.2" + aria-hidden "^1.2.4" "@radix-ui/react-id" "1.1.0" + "@radix-ui/primitive" "1.1.1" + react-remove-scroll "^2.6.3" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-popper" "1.2.2" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" + "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-focus-scope" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" "@radix-ui/react-roving-focus" "1.1.2" - "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-use-callback-ref" "1.1.0" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" + "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-navigation-menu@^1.2.1": version "1.2.5" resolved "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.5.tgz" integrity sha512-myMHHQUZ3ZLTi8W381/Vu43Ia0NqakkQZ2vzynMmTUtQQ9kNkjzhOwkZC9TAM5R07OZUVIQyHC06f/9JZJpvvA== dependencies: + "@radix-ui/react-id" "1.1.0" "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.5" - "@radix-ui/react-id" "1.1.0" "@radix-ui/react-presence" "1.1.2" + "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-controllable-state" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-previous" "1.1.0" "@radix-ui/react-visually-hidden" "1.1.2" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.5" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-popover@^1.1.2": version "1.1.6" resolved "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.6.tgz" integrity sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg== dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.5" - "@radix-ui/react-focus-guards" "1.1.1" - "@radix-ui/react-focus-scope" "1.1.2" + aria-hidden "^1.2.4" "@radix-ui/react-id" "1.1.0" + "@radix-ui/primitive" "1.1.1" + react-remove-scroll "^2.6.3" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-popper" "1.2.2" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-slot" "1.1.2" + "@radix-ui/react-focus-scope" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-use-controllable-state" "1.1.0" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" "@radix-ui/react-popper@1.2.2": version "1.2.2" resolved "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.2.tgz" integrity sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA== dependencies: - "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/rect" "1.1.0" "@radix-ui/react-arrow" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" + "@floating-ui/react-dom" "^2.0.0" "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-use-rect" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-layout-effect" "1.1.0" - "@radix-ui/react-use-rect" "1.1.0" - "@radix-ui/react-use-size" "1.1.0" - "@radix-ui/rect" "1.1.0" "@radix-ui/react-portal@1.0.0": version "1.0.0" @@ -3065,28 +3098,28 @@ integrity sha512-xtCsqt8Rp09FK50ItqEqTJ7Sxanz8EM8dnkVIhJrc/wkMMomSmXHvYbhv3E7Zx4oXh98aaLt9W679SUYXg4IDA== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-presence" "1.1.2" + "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-roving-focus" "1.1.2" - "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-use-previous" "1.1.0" - "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-roving-focus@1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz" integrity sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw== dependencies: + "@radix-ui/react-id" "1.1.0" "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-id" "1.1.0" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-controllable-state" "1.1.0" @@ -3097,11 +3130,11 @@ dependencies: "@radix-ui/number" "1.1.0" "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-presence" "1.1.2" + "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-callback-ref" "1.1.0" "@radix-ui/react-use-layout-effect" "1.1.0" @@ -3110,27 +3143,27 @@ resolved "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.6.tgz" integrity sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg== dependencies: + aria-hidden "^1.2.4" "@radix-ui/number" "1.1.0" - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-dismissable-layer" "1.1.5" - "@radix-ui/react-focus-guards" "1.1.1" - "@radix-ui/react-focus-scope" "1.1.2" "@radix-ui/react-id" "1.1.0" + "@radix-ui/primitive" "1.1.1" + react-remove-scroll "^2.6.3" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-popper" "1.2.2" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-slot" "1.1.2" - "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-controllable-state" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-focus-scope" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" "@radix-ui/react-use-previous" "1.1.0" "@radix-ui/react-visually-hidden" "1.1.2" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.5" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-separator@^1.1.0": version "1.1.2" @@ -3146,15 +3179,15 @@ dependencies: "@radix-ui/number" "1.1.0" "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-use-size" "1.1.0" "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-use-controllable-state" "1.1.0" - "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-previous" "1.1.0" - "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-slot@1.0.0": version "1.0.0" @@ -3177,23 +3210,23 @@ integrity sha512-1nc+vjEOQkJVsJtWPSiISGT6OKm4SiOdjMo+/icLxo2G4vxz1GntC5MzfL4v8ey9OEfw787QCD1y3mUv0NiFEQ== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-use-size" "1.1.0" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-use-previous" "1.1.0" - "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-tabs@^1.1.1": version "1.1.3" resolved "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz" integrity sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng== dependencies: + "@radix-ui/react-id" "1.1.0" "@radix-ui/primitive" "1.1.1" "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-direction" "1.1.0" - "@radix-ui/react-id" "1.1.0" "@radix-ui/react-presence" "1.1.2" + "@radix-ui/react-direction" "1.1.0" "@radix-ui/react-primitive" "2.0.2" "@radix-ui/react-roving-focus" "1.1.2" "@radix-ui/react-use-controllable-state" "1.1.0" @@ -3204,35 +3237,35 @@ integrity sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA== dependencies: "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-collection" "1.1.2" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" "@radix-ui/react-primitive" "2.0.2" + "@radix-ui/react-collection" "1.1.2" + "@radix-ui/react-compose-refs" "1.1.1" + "@radix-ui/react-visually-hidden" "1.1.2" "@radix-ui/react-use-callback-ref" "1.1.0" - "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-use-layout-effect" "1.1.0" - "@radix-ui/react-visually-hidden" "1.1.2" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-tooltip@^1.1.3": version "1.1.8" resolved "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.8.tgz" integrity sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA== dependencies: - "@radix-ui/primitive" "1.1.1" - "@radix-ui/react-compose-refs" "1.1.1" - "@radix-ui/react-context" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.5" "@radix-ui/react-id" "1.1.0" + "@radix-ui/primitive" "1.1.1" + "@radix-ui/react-slot" "1.1.2" "@radix-ui/react-popper" "1.2.2" "@radix-ui/react-portal" "1.1.4" + "@radix-ui/react-context" "1.1.1" "@radix-ui/react-presence" "1.1.2" "@radix-ui/react-primitive" "2.0.2" - "@radix-ui/react-slot" "1.1.2" - "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.1" "@radix-ui/react-visually-hidden" "1.1.2" + "@radix-ui/react-dismissable-layer" "1.1.5" + "@radix-ui/react-use-controllable-state" "1.1.0" "@radix-ui/react-use-callback-ref@1.0.0": version "1.0.0" @@ -3351,26 +3384,26 @@ resolved "https://registry.npmjs.org/@react-email/components/-/components-0.0.31.tgz" integrity sha512-rQsTY9ajobncix9raexhBjC7O6cXUMc87eNez2gnB1FwtkUO8DqWZcktbtwOJi7GKmuAPTx0o/IOFtiBNXziKA== dependencies: + "@react-email/hr" "0.0.11" + "@react-email/img" "0.0.11" + "@react-email/row" "0.0.12" "@react-email/body" "0.0.11" - "@react-email/button" "0.0.19" - "@react-email/code-block" "0.0.11" - "@react-email/code-inline" "0.0.5" - "@react-email/column" "0.0.13" - "@react-email/container" "0.0.15" "@react-email/font" "0.0.9" "@react-email/head" "0.0.12" - "@react-email/heading" "0.0.15" - "@react-email/hr" "0.0.11" "@react-email/html" "0.0.11" - "@react-email/img" "0.0.11" "@react-email/link" "0.0.12" - "@react-email/markdown" "0.0.14" - "@react-email/preview" "0.0.12" + "@react-email/text" "0.0.11" + "@react-email/button" "0.0.19" + "@react-email/column" "0.0.13" "@react-email/render" "1.0.3" - "@react-email/row" "0.0.12" + "@react-email/heading" "0.0.15" + "@react-email/preview" "0.0.12" "@react-email/section" "0.0.16" + "@react-email/markdown" "0.0.14" "@react-email/tailwind" "1.0.4" - "@react-email/text" "0.0.11" + "@react-email/container" "0.0.15" + "@react-email/code-block" "0.0.11" + "@react-email/code-inline" "0.0.5" "@react-email/container@0.0.15": version "0.0.15" @@ -3429,18 +3462,18 @@ resolved "https://registry.npmjs.org/@react-email/render/-/render-0.0.10.tgz" integrity sha512-FdLhg/E5PH5qZU/jf9NbvRi5v5134kbX7o8zIhOJIk/TALxB18ggprnH5tQX96dGQFqlLob8OLReaRwrpEF7YA== dependencies: - html-to-text "9.0.5" - pretty "2.0.0" react "18.2.0" + pretty "2.0.0" react-dom "18.2.0" + html-to-text "9.0.5" "@react-email/render@1.0.1": version "1.0.1" resolved "https://registry.npmjs.org/@react-email/render/-/render-1.0.1.tgz" integrity sha512-W3gTrcmLOVYnG80QuUp22ReIT/xfLsVJ+n7ghSlG2BITB8evNABn1AO2rGQoXuK84zKtDAlxCdm3hRyIpZdGSA== dependencies: - html-to-text "9.0.5" js-beautify "^1.14.11" + html-to-text "9.0.5" react-promise-suspense "0.3.4" "@react-email/render@1.0.3": @@ -3448,8 +3481,8 @@ resolved "https://registry.npmjs.org/@react-email/render/-/render-1.0.3.tgz" integrity sha512-VQ8g4SuIq/jWdfBTdTjb7B8Np0jj+OoD7VebfdHhLTZzVQKesR2aigpYqE/ZXmwj4juVxDm8T2b6WIIu48rPCg== dependencies: - html-to-text "9.0.5" prettier "3.3.3" + html-to-text "9.0.5" react-promise-suspense "0.3.4" "@react-email/row@0.0.12": @@ -3478,9 +3511,9 @@ integrity sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg== "@rollup/rollup-darwin-arm64@^4.18.1": - version "4.34.7" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.7.tgz" - integrity sha512-jq87CjmgL9YIKvs8ybtIC98s/M3HdbqXhllcy9EdLV0yMg1DpxES2gr65nNy7ObNo/vZ/MrOTxt0bE5LinL6mA== + version "4.34.8" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz" + integrity sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q== "@scena/dragscroll@^1.4.0": version "1.4.0" @@ -3509,10 +3542,10 @@ resolved "https://registry.npmjs.org/@segment/analytics-core/-/analytics-core-1.4.1.tgz" integrity sha512-kV0Pf33HnthuBOVdYNani21kYyj118Fn+9757bxqoksiXoZlYvBsFq6giNdCsKcTIE1eAMqNDq3xE1VQ0cfsHA== dependencies: - "@lukeed/uuid" "^2.0.0" - "@segment/analytics-generic-utils" "1.1.1" dset "^3.1.2" tslib "^2.4.1" + "@lukeed/uuid" "^2.0.0" + "@segment/analytics-generic-utils" "1.1.1" "@segment/analytics-generic-utils@1.1.1": version "1.1.1" @@ -3526,12 +3559,12 @@ resolved "https://registry.npmjs.org/@segment/analytics-node/-/analytics-node-1.3.0.tgz" integrity sha512-lRLz1WZaDokMoUe299yP5JkInc3OgJuqNNlxb6j0q22umCiq6b5iDo2gRmFn93reirIvJxWIicQsGrHd93q8GQ== dependencies: + tslib "^2.4.1" + buffer "^6.0.3" + node-fetch "^2.6.7" "@lukeed/uuid" "^2.0.0" "@segment/analytics-core" "1.4.1" "@segment/analytics-generic-utils" "1.1.1" - buffer "^6.0.3" - node-fetch "^2.6.7" - tslib "^2.4.1" "@selderee/plugin-htmlparser2@^0.11.0": version "0.11.0" @@ -3541,12 +3574,12 @@ domhandler "^5.0.3" selderee "^0.11.0" -"@simplewebauthn/browser@^13.0.0", "@simplewebauthn/browser@^9.0.1": +"@simplewebauthn/browser@^13.0.0": version "13.1.0" resolved "https://registry.npmjs.org/@simplewebauthn/browser/-/browser-13.1.0.tgz" integrity sha512-WuHZ/PYvyPJ9nxSzgHtOEjogBhwJfC8xzYkPC+rR/+8chl/ft4ngjiK8kSU5HtRJfczupyOh33b25TjYbvwAcg== -"@simplewebauthn/server@^13.0.0", "@simplewebauthn/server@^9.0.2": +"@simplewebauthn/server@^13.0.0": version "13.1.1" resolved "https://registry.npmjs.org/@simplewebauthn/server/-/server-13.1.1.tgz" integrity sha512-1hsLpRHfSuMB9ee2aAdh0Htza/X3f4djhYISrggqGe3xopNjOcePiSDkDDoPzDYaaMCrbqGP1H2TYU7bgL9PmA== @@ -3564,20 +3597,20 @@ resolved "https://registry.npmjs.org/@slack/bolt/-/bolt-3.22.0.tgz" integrity sha512-iKDqGPEJDnrVwxSVlFW6OKTkijd7s4qLBeSufoBsTM0reTyfdp/5izIQVkxNfzjHi3o6qjdYbRXkYad5HBsBog== dependencies: - "@slack/logger" "^4.0.0" + axios "^1.7.4" + tsscmp "^1.0.6" + express "^4.21.0" + raw-body "^2.3.3" "@slack/oauth" "^2.6.3" - "@slack/socket-mode" "^1.3.6" "@slack/types" "^2.13.0" + "@slack/logger" "^4.0.0" + "@types/tsscmp" "^1.0.0" "@slack/web-api" "^6.13.0" "@types/express" "^4.16.1" - "@types/promise.allsettled" "^1.0.3" - "@types/tsscmp" "^1.0.0" - axios "^1.7.4" - express "^4.21.0" path-to-regexp "^8.1.0" + "@slack/socket-mode" "^1.3.6" promise.allsettled "^1.0.2" - raw-body "^2.3.3" - tsscmp "^1.0.6" + "@types/promise.allsettled" "^1.0.3" "@slack/logger@^3.0.0": version "3.0.0" @@ -3598,25 +3631,25 @@ resolved "https://registry.npmjs.org/@slack/oauth/-/oauth-2.6.3.tgz" integrity sha512-1amXs6xRkJpoH6zSgjVPgGEJXCibKNff9WNDijcejIuVy1HFAl1adh7lehaGNiHhTWfQkfKxBiF+BGn56kvoFw== dependencies: - "@slack/logger" "^3.0.0" - "@slack/web-api" "^6.12.1" - "@types/jsonwebtoken" "^8.3.7" "@types/node" ">=12" jsonwebtoken "^9.0.0" + "@slack/logger" "^3.0.0" + "@slack/web-api" "^6.12.1" lodash.isstring "^4.0.1" + "@types/jsonwebtoken" "^8.3.7" "@slack/socket-mode@^1.3.6": version "1.3.6" resolved "https://registry.npmjs.org/@slack/socket-mode/-/socket-mode-1.3.6.tgz" integrity sha512-G+im7OP7jVqHhiNSdHgv2VVrnN5U7KY845/5EZimZkrD4ZmtV0P3BiWkgeJhPtdLuM7C7i6+M6h6Bh+S4OOalA== dependencies: - "@slack/logger" "^3.0.0" - "@slack/web-api" "^6.12.1" - "@types/node" ">=12.0.0" + ws "^7.5.3" + finity "^0.5.4" "@types/ws" "^7.4.7" + "@types/node" ">=12.0.0" + "@slack/logger" "^3.0.0" eventemitter3 "^5" - finity "^0.5.4" - ws "^7.5.3" + "@slack/web-api" "^6.12.1" "@slack/types@^2.11.0", "@slack/types@^2.13.0", "@slack/types@^2.9.0": version "2.14.0" @@ -3628,35 +3661,35 @@ resolved "https://registry.npmjs.org/@slack/web-api/-/web-api-6.13.0.tgz" integrity sha512-dv65crIgdh9ZYHrevLU6XFHTQwTyDmNqEqzuIrV+Vqe/vgiG6w37oex5ePDU1RGm2IJ90H8iOvHFvzdEO/vB+g== dependencies: - "@slack/logger" "^3.0.0" - "@slack/types" "^2.11.0" - "@types/is-stream" "^1.1.0" - "@types/node" ">=12.0.0" axios "^1.7.4" - eventemitter3 "^3.1.0" - form-data "^2.5.0" - is-electron "2.2.2" - is-stream "^1.1.0" p-queue "^6.6.1" p-retry "^4.0.0" + form-data "^2.5.0" + is-stream "^1.1.0" + "@types/node" ">=12.0.0" + is-electron "2.2.2" + "@slack/types" "^2.11.0" + "@slack/logger" "^3.0.0" + eventemitter3 "^3.1.0" + "@types/is-stream" "^1.1.0" "@slack/web-api@^7.8.0": version "7.8.0" resolved "https://registry.npmjs.org/@slack/web-api/-/web-api-7.8.0.tgz" integrity sha512-d4SdG+6UmGdzWw38a4sN3lF/nTEzsDxhzU13wm10ejOpPehtmRoqBKnPztQUfFiWbNvSb4czkWYJD4kt+5+Fuw== dependencies: - "@slack/logger" "^4.0.0" - "@slack/types" "^2.9.0" - "@types/node" ">=18.0.0" - "@types/retry" "0.12.0" axios "^1.7.8" - eventemitter3 "^5.0.1" - form-data "^4.0.0" - is-electron "2.2.2" - is-stream "^2" + retry "^0.13.1" p-queue "^6" p-retry "^4" - retry "^0.13.1" + form-data "^4.0.0" + is-stream "^2" + "@types/node" ">=18.0.0" + is-electron "2.2.2" + "@slack/types" "^2.9.0" + "@types/retry" "0.12.0" + "@slack/logger" "^4.0.0" + eventemitter3 "^5.0.1" "@smithy/abort-controller@^4.0.1": version "4.0.1" @@ -3678,8 +3711,8 @@ resolved "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.0.0.tgz" integrity sha512-R9wM2yPmfEMsUmlMlIgSzOyICs0x9uu7UTHoccMyt7BWw8shcGM8HqB355+BZCPBcySvbTYMs62EgEQkNxz2ig== dependencies: - "@smithy/util-base64" "^4.0.0" tslib "^2.6.2" + "@smithy/util-base64" "^4.0.0" "@smithy/config-resolver@^4.0.1": version "4.0.1" @@ -4004,9 +4037,9 @@ resolved "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz" integrity sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg== dependencies: - "@smithy/util-buffer-from" "^4.0.0" - "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" + "@smithy/util-utf8" "^4.0.0" + "@smithy/util-buffer-from" "^4.0.0" "@smithy/util-body-length-browser@^4.0.0": version "4.0.0" @@ -4027,16 +4060,16 @@ resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz" integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== dependencies: - "@smithy/is-array-buffer" "^2.2.0" tslib "^2.6.2" + "@smithy/is-array-buffer" "^2.2.0" "@smithy/util-buffer-from@^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz" integrity sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug== dependencies: - "@smithy/is-array-buffer" "^4.0.0" tslib "^2.6.2" + "@smithy/is-array-buffer" "^4.0.0" "@smithy/util-config-provider@^4.0.0": version "4.0.0" @@ -4128,16 +4161,16 @@ resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz" integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== dependencies: - "@smithy/util-buffer-from" "^2.2.0" tslib "^2.6.2" + "@smithy/util-buffer-from" "^2.2.0" "@smithy/util-utf8@^4.0.0": version "4.0.0" resolved "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz" integrity sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow== dependencies: - "@smithy/util-buffer-from" "^4.0.0" tslib "^2.6.2" + "@smithy/util-buffer-from" "^4.0.0" "@smithy/util-waiter@^4.0.2": version "4.0.2" @@ -4218,9 +4251,9 @@ resolved "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz" integrity sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA== dependencies: + lodash.merge "^4.6.2" lodash.castarray "^4.4.0" lodash.isplainobject "^4.0.6" - lodash.merge "^4.6.2" postcss-selector-parser "6.0.10" "@tanstack/query-core@^4.15.1": @@ -4228,17 +4261,17 @@ resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz" integrity sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA== -"@tanstack/query-core@5.66.0": - version "5.66.0" - resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.66.0.tgz" - integrity sha512-J+JeBtthiKxrpzUu7rfIPDzhscXF2p5zE/hVdrqkACBP8Yu0M96mwJ5m/8cPPYQE9aRNvXztXHlNwIh4FEeMZw== +"@tanstack/query-core@5.66.4": + version "5.66.4" + resolved "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.66.4.tgz" + integrity sha512-skM/gzNX4shPkqmdTCSoHtJAPMTtmIJNS0hE+xwTTUVYwezArCT34NMermABmBVUg5Ls5aiUXEDXfqwR1oVkcA== "@tanstack/react-query@^5.66.0": - version "5.66.0" - resolved "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.66.0.tgz" - integrity sha512-z3sYixFQJe8hndFnXgWu7C79ctL+pI0KAelYyW+khaNJ1m22lWrhJU2QrsTcRKMuVPtoZvfBYrTStIdKo+x0Xw== + version "5.66.7" + resolved "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.66.7.tgz" + integrity sha512-qd3q/tUpF2K1xItfPZddk1k/8pSXnovg41XyCqJgPoyYEirMBtB0sVEVVQ/CsAOngzgWtBPXimVf4q4kM9uO6A== dependencies: - "@tanstack/query-core" "5.66.0" + "@tanstack/query-core" "5.66.4" "@tanstack/react-table@^8.21.2": version "8.21.2" @@ -4448,62 +4481,62 @@ resolved "https://registry.npmjs.org/@tiptap/pm/-/pm-2.11.5.tgz" integrity sha512-z9JFtqc5ZOsdQLd9vRnXfTCQ8v5ADAfRt9Nm7SqP6FUHII8E1hs38ACzf5xursmth/VonJYb5+73Pqxk1hGIPw== dependencies: - prosemirror-changeset "^2.2.1" + prosemirror-menu "^1.2.4" + prosemirror-view "^1.37.0" + prosemirror-model "^1.23.0" + prosemirror-state "^1.4.3" prosemirror-collab "^1.3.1" + prosemirror-keymap "^1.2.2" + prosemirror-tables "^1.6.3" + prosemirror-history "^1.4.1" prosemirror-commands "^1.6.2" - prosemirror-dropcursor "^1.8.1" + prosemirror-markdown "^1.13.1" + prosemirror-changeset "^2.2.1" prosemirror-gapcursor "^1.3.2" - prosemirror-history "^1.4.1" + prosemirror-transform "^1.10.2" + prosemirror-dropcursor "^1.8.1" prosemirror-inputrules "^1.4.0" - prosemirror-keymap "^1.2.2" - prosemirror-markdown "^1.13.1" - prosemirror-menu "^1.2.4" - prosemirror-model "^1.23.0" - prosemirror-schema-basic "^1.2.3" prosemirror-schema-list "^1.4.1" - prosemirror-state "^1.4.3" - prosemirror-tables "^1.6.3" + prosemirror-schema-basic "^1.2.3" prosemirror-trailing-node "^3.0.0" - prosemirror-transform "^1.10.2" - prosemirror-view "^1.37.0" "@tiptap/react@^2.11.2", "@tiptap/react@^2.11.5", "@tiptap/react@^2.9.1": version "2.11.5" resolved "https://registry.npmjs.org/@tiptap/react/-/react-2.11.5.tgz" integrity sha512-Dp8eHL1G+R/C4+QzAczyb3t1ovexEIZx9ln7SGEM+cT1KHKAw9XGPRgsp92+NQaYI+EdEb/YqoBOSzQcd18/OQ== dependencies: - "@tiptap/extension-bubble-menu" "^2.11.5" - "@tiptap/extension-floating-menu" "^2.11.5" - "@types/use-sync-external-store" "^0.0.6" fast-deep-equal "^3" use-sync-external-store "^1" + "@tiptap/extension-bubble-menu" "^2.11.5" + "@types/use-sync-external-store" "^0.0.6" + "@tiptap/extension-floating-menu" "^2.11.5" "@tiptap/starter-kit@^2.11.2", "@tiptap/starter-kit@^2.11.5", "@tiptap/starter-kit@^2.9.1": version "2.11.5" resolved "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.11.5.tgz" integrity sha512-SLI7Aj2ruU1t//6Mk8f+fqW+18uTqpdfLUJYgwu0CkqBckrkRZYZh6GVLk/02k3H2ki7QkFxiFbZrdbZdng0JA== dependencies: + "@tiptap/pm" "^2.11.5" "@tiptap/core" "^2.11.5" - "@tiptap/extension-blockquote" "^2.11.5" "@tiptap/extension-bold" "^2.11.5" - "@tiptap/extension-bullet-list" "^2.11.5" "@tiptap/extension-code" "^2.11.5" - "@tiptap/extension-code-block" "^2.11.5" - "@tiptap/extension-document" "^2.11.5" - "@tiptap/extension-dropcursor" "^2.11.5" - "@tiptap/extension-gapcursor" "^2.11.5" - "@tiptap/extension-hard-break" "^2.11.5" + "@tiptap/extension-text" "^2.11.5" + "@tiptap/extension-italic" "^2.11.5" + "@tiptap/extension-strike" "^2.11.5" "@tiptap/extension-heading" "^2.11.5" "@tiptap/extension-history" "^2.11.5" - "@tiptap/extension-horizontal-rule" "^2.11.5" - "@tiptap/extension-italic" "^2.11.5" + "@tiptap/extension-document" "^2.11.5" + "@tiptap/extension-gapcursor" "^2.11.5" "@tiptap/extension-list-item" "^2.11.5" - "@tiptap/extension-ordered-list" "^2.11.5" "@tiptap/extension-paragraph" "^2.11.5" - "@tiptap/extension-strike" "^2.11.5" - "@tiptap/extension-text" "^2.11.5" + "@tiptap/extension-blockquote" "^2.11.5" + "@tiptap/extension-code-block" "^2.11.5" + "@tiptap/extension-dropcursor" "^2.11.5" + "@tiptap/extension-hard-break" "^2.11.5" "@tiptap/extension-text-style" "^2.11.5" - "@tiptap/pm" "^2.11.5" + "@tiptap/extension-bullet-list" "^2.11.5" + "@tiptap/extension-ordered-list" "^2.11.5" + "@tiptap/extension-horizontal-rule" "^2.11.5" "@tiptap/suggestion@^2.11.2": version "2.11.5" @@ -4530,32 +4563,32 @@ resolved "https://registry.npmjs.org/@trigger.dev/core/-/core-3.3.13.tgz" integrity sha512-3VU4YMS+RVCkfVXeUKSWlkVszgFK44tIknR9sHLYgetI714L3tgH47XBXJ3+/ZV5Y9Vvv6O6pRIuV7EEhzbexg== dependencies: - "@electric-sql/client" "1.0.0-beta.1" - "@google-cloud/precise-date" "^4.0.0" + zod "3.23.8" + jose "^5.4.0" + execa "^8.0.1" + dequal "^2.0.3" + nanoid "^3.3.4" + superjson "^2.2.1" + zod-error "1.5.0" + eventsource "^3.0.5" "@jsonhero/path" "^1.0.21" + socket.io-client "4.7.5" + humanize-duration "^3.27.3" "@opentelemetry/api" "1.9.0" + eventsource-parser "^3.0.0" + "@electric-sql/client" "1.0.0-beta.1" + zod-validation-error "^1.5.0" "@opentelemetry/api-logs" "0.52.1" - "@opentelemetry/exporter-logs-otlp-http" "0.52.1" - "@opentelemetry/exporter-trace-otlp-http" "0.52.1" - "@opentelemetry/instrumentation" "0.52.1" - "@opentelemetry/resources" "1.25.1" "@opentelemetry/sdk-logs" "0.52.1" "@opentelemetry/sdk-node" "0.52.1" + "@opentelemetry/resources" "1.25.1" + "@google-cloud/precise-date" "^4.0.0" "@opentelemetry/sdk-trace-base" "1.25.1" "@opentelemetry/sdk-trace-node" "1.25.1" + "@opentelemetry/instrumentation" "0.52.1" "@opentelemetry/semantic-conventions" "1.25.1" - dequal "^2.0.3" - eventsource "^3.0.5" - eventsource-parser "^3.0.0" - execa "^8.0.1" - humanize-duration "^3.27.3" - jose "^5.4.0" - nanoid "^3.3.4" - socket.io-client "4.7.5" - superjson "^2.2.1" - zod "3.23.8" - zod-error "1.5.0" - zod-validation-error "^1.5.0" + "@opentelemetry/exporter-logs-otlp-http" "0.52.1" + "@opentelemetry/exporter-trace-otlp-http" "0.52.1" "@trigger.dev/core@3.3.16", "@trigger.dev/core@^3.3.16": version "3.3.16" @@ -4602,19 +4635,19 @@ resolved "https://registry.npmjs.org/@trigger.dev/sdk/-/sdk-3.3.13.tgz" integrity sha512-iXtHMnzvzmPfBk7+whpWOElBJt6viCoA3r8xgrrrurj8oxjIVe4UvdDiB7wbUJJ44WROWEb0wVKyQut1L/FwQQ== dependencies: - "@opentelemetry/api" "1.9.0" - "@opentelemetry/api-logs" "0.52.1" - "@opentelemetry/semantic-conventions" "1.25.1" - "@trigger.dev/core" "3.3.13" - chalk "^5.2.0" - cronstrue "^2.21.0" - debug "^4.3.4" + ws "^8.11.0" evt "^2.4.13" slug "^6.0.0" - terminal-link "^3.0.0" ulid "^2.3.0" uuid "^9.0.0" - ws "^8.11.0" + chalk "^5.2.0" + debug "^4.3.4" + cronstrue "^2.21.0" + terminal-link "^3.0.0" + "@trigger.dev/core" "3.3.13" + "@opentelemetry/api" "1.9.0" + "@opentelemetry/api-logs" "0.52.1" + "@opentelemetry/semantic-conventions" "1.25.1" "@trigger.dev/sdk@3.3.16", "@trigger.dev/sdk@^3.3.15": version "3.3.16" @@ -4651,8 +4684,8 @@ resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz" integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== dependencies: - "@types/connect" "*" "@types/node" "*" + "@types/connect" "*" "@types/connect@*": version "3.4.38" @@ -4685,36 +4718,36 @@ resolved "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz" integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== dependencies: - "@types/d3-array" "*" + "@types/d3-dsv" "*" + "@types/d3-geo" "*" "@types/d3-axis" "*" - "@types/d3-brush" "*" - "@types/d3-chord" "*" - "@types/d3-color" "*" - "@types/d3-contour" "*" - "@types/d3-delaunay" "*" - "@types/d3-dispatch" "*" "@types/d3-drag" "*" - "@types/d3-dsv" "*" "@types/d3-ease" "*" + "@types/d3-path" "*" + "@types/d3-time" "*" + "@types/d3-zoom" "*" + "@types/d3-array" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" "@types/d3-fetch" "*" "@types/d3-force" "*" + "@types/d3-scale" "*" + "@types/d3-shape" "*" + "@types/d3-timer" "*" "@types/d3-format" "*" - "@types/d3-geo" "*" - "@types/d3-hierarchy" "*" - "@types/d3-interpolate" "*" - "@types/d3-path" "*" + "@types/d3-random" "*" + "@types/d3-contour" "*" "@types/d3-polygon" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" "@types/d3-quadtree" "*" - "@types/d3-random" "*" - "@types/d3-scale" "*" - "@types/d3-scale-chromatic" "*" + "@types/d3-hierarchy" "*" "@types/d3-selection" "*" - "@types/d3-shape" "*" - "@types/d3-time" "*" - "@types/d3-time-format" "*" - "@types/d3-timer" "*" "@types/d3-transition" "*" - "@types/d3-zoom" "*" + "@types/d3-interpolate" "*" + "@types/d3-time-format" "*" + "@types/d3-scale-chromatic" "*" "@types/d3-array@*", "@types/d3-array@^3.0.3": version "3.2.1" @@ -4750,8 +4783,8 @@ resolved "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz" integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== dependencies: - "@types/d3-array" "*" "@types/geojson" "*" + "@types/d3-array" "*" "@types/d3-delaunay@*": version "6.0.4" @@ -4887,8 +4920,8 @@ resolved "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz" integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== dependencies: - "@types/d3-interpolate" "*" "@types/d3-selection" "*" + "@types/d3-interpolate" "*" "@types/debug@^4.0.0": version "4.1.12" @@ -4919,20 +4952,20 @@ resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" "@types/qs" "*" + "@types/body-parser" "*" "@types/serve-static" "*" + "@types/express-serve-static-core" "^4.17.33" "@types/express-serve-static-core@^4.17.33": version "4.19.6" resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz" integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== dependencies: - "@types/node" "*" "@types/qs" "*" - "@types/range-parser" "*" + "@types/node" "*" "@types/send" "*" + "@types/range-parser" "*" "@types/geojson@*": version "7946.0.16" @@ -4980,8 +5013,8 @@ resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz" integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog== dependencies: - "@types/linkify-it" "^5" "@types/mdurl" "^2" + "@types/linkify-it" "^5" "@types/mdast@^4.0.0": version "4.0.4" @@ -5024,17 +5057,17 @@ resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz" integrity sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA== dependencies: - "@types/node" "*" form-data "^4.0.0" + "@types/node" "*" "@types/pg@8.11.6": version "8.11.6" resolved "https://registry.npmjs.org/@types/pg/-/pg-8.11.6.tgz" integrity sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ== dependencies: + pg-types "^4.0.1" "@types/node" "*" pg-protocol "*" - pg-types "^4.0.1" "@types/promise.allsettled@^1.0.3": version "1.0.6" @@ -5056,21 +5089,14 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react@^16.8.0 || ^17.0.0 || ^18.0.0": - version "19.0.8" - resolved "https://registry.npmjs.org/@types/react/-/react-19.0.8.tgz" - integrity sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw== - dependencies: - csstype "^3.0.2" - -"@types/react@*", "@types/react@19.0.10", "@types/react@>=16.8", "@types/react@>=17.0.0", "@types/react@>=18", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^19.0.0", "@types/react@^19.0.8": +"@types/react@*", "@types/react@19.0.10", "@types/react@>=18", "@types/react@^19.0.0", "@types/react@^19.0.8": version "19.0.10" resolved "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz" integrity sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g== dependencies: csstype "^3.0.2" -"@types/react-dom@*", "@types/react-dom@19.0.4", "@types/react-dom@^19.0.0", "@types/react-dom@^19.0.3": +"@types/react-dom@19.0.4", "@types/react-dom@^19.0.0", "@types/react-dom@^19.0.3": version "19.0.4" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz" integrity sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg== @@ -5098,11 +5124,11 @@ resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz" integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== dependencies: - "@types/http-errors" "*" "@types/node" "*" "@types/send" "*" + "@types/http-errors" "*" -"@types/shimmer@^1.0.2", "@types/shimmer@^1.2.0": +"@types/shimmer@^1.0.2": version "1.2.0" resolved "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.2.0.tgz" integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== @@ -5169,17 +5195,17 @@ integrity sha512-EB0o0a4y++UJFMLqS8LDVhSQgXUllG6t5fwl5cbmOM0Uay8YY5Nc/JjFwzJ8wccdIKz4oYwQW7EOSfUyaMPbfw== "@uploadthing/react@^7.2.0": - version "7.2.1" - resolved "https://registry.npmjs.org/@uploadthing/react/-/react-7.2.1.tgz" - integrity sha512-X8iUJDOFyT9DonfZkxx3ngWvr4iz47tmXT7pC0209YT+Odfmq/sd/a0w7UcFrCiYIV1CL0xD97ynRDTN3LX48Q== + version "7.3.0" + resolved "https://registry.npmjs.org/@uploadthing/react/-/react-7.3.0.tgz" + integrity sha512-rSH9BpPy2/G7nZ3SEbZQANUFHkBCS5CwWiVzmOW9fzFNoqF+buqBvi5FDweffqMSwmr+/VS8Wpyj87/GYbV0Fw== dependencies: - "@uploadthing/shared" "7.1.6" + "@uploadthing/shared" "7.1.7" file-selector "0.6.0" -"@uploadthing/shared@7.1.6": - version "7.1.6" - resolved "https://registry.npmjs.org/@uploadthing/shared/-/shared-7.1.6.tgz" - integrity sha512-7EyTxaGiTIdyqCwNQFryo0LR4eZgyClq31igrjGrXHkxSlXnurphybjzB6AVD73UBPVGCfbtOK0lloduhsMNlg== +"@uploadthing/shared@7.1.7": + version "7.1.7" + resolved "https://registry.npmjs.org/@uploadthing/shared/-/shared-7.1.7.tgz" + integrity sha512-VDvGmyHhdwaivC+eee77yZnOVvz59mOmLVbcuYFo4SkoNvPuc3AyPORqJJMBveQivTvELdrQcjlx6IPv98JkSA== dependencies: "@uploadthing/mime-types" "0.3.4" effect "3.12.0" @@ -5212,18 +5238,18 @@ integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q== dependencies: "@babel/parser" "^7.25.3" - "@vue/shared" "3.5.13" entities "^4.5.0" estree-walker "^2.0.2" source-map-js "^1.2.0" + "@vue/shared" "3.5.13" "@vue/compiler-dom@3.5.13": version "3.5.13" resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz" integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA== dependencies: - "@vue/compiler-core" "3.5.13" "@vue/shared" "3.5.13" + "@vue/compiler-core" "3.5.13" "@vue/compiler-sfc@3.5.13": version "3.5.13" @@ -5231,22 +5257,22 @@ integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ== dependencies: "@babel/parser" "^7.25.3" - "@vue/compiler-core" "3.5.13" - "@vue/compiler-dom" "3.5.13" - "@vue/compiler-ssr" "3.5.13" - "@vue/shared" "3.5.13" estree-walker "^2.0.2" magic-string "^0.30.11" postcss "^8.4.48" source-map-js "^1.2.0" + "@vue/compiler-core" "3.5.13" + "@vue/shared" "3.5.13" + "@vue/compiler-dom" "3.5.13" + "@vue/compiler-ssr" "3.5.13" "@vue/compiler-ssr@3.5.13": version "3.5.13" resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz" integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA== dependencies: - "@vue/compiler-dom" "3.5.13" "@vue/shared" "3.5.13" + "@vue/compiler-dom" "3.5.13" "@vue/reactivity@3.5.13": version "3.5.13" @@ -5260,26 +5286,26 @@ resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz" integrity sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw== dependencies: - "@vue/reactivity" "3.5.13" "@vue/shared" "3.5.13" + "@vue/reactivity" "3.5.13" "@vue/runtime-dom@3.5.13": version "3.5.13" resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz" integrity sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog== dependencies: - "@vue/reactivity" "3.5.13" - "@vue/runtime-core" "3.5.13" - "@vue/shared" "3.5.13" csstype "^3.1.3" + "@vue/shared" "3.5.13" + "@vue/runtime-core" "3.5.13" + "@vue/reactivity" "3.5.13" "@vue/server-renderer@3.5.13": version "3.5.13" resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz" integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA== dependencies: - "@vue/compiler-ssr" "3.5.13" "@vue/shared" "3.5.13" + "@vue/compiler-ssr" "3.5.13" "@vue/shared@3.5.13": version "3.5.13" @@ -5348,19 +5374,19 @@ ai@^3.4.33: resolved "https://registry.npmjs.org/ai/-/ai-3.4.33.tgz" integrity sha512-plBlrVZKwPoRTmM8+D1sJac9Bq8eaa2jiZlHLZIWekKWI1yMWYZvCCEezY9ASPwRhULYDJB2VhKOBUUeg3S5JQ== dependencies: - "@ai-sdk/provider" "0.0.26" - "@ai-sdk/provider-utils" "1.0.22" + "@ai-sdk/vue" "0.0.59" + json-schema "^0.4.0" "@ai-sdk/react" "0.0.70" "@ai-sdk/solid" "0.0.54" + jsondiffpatch "0.6.0" "@ai-sdk/svelte" "0.0.57" + "@ai-sdk/provider" "0.0.26" "@ai-sdk/ui-utils" "0.0.50" - "@ai-sdk/vue" "0.0.59" + secure-json-parse "^2.7.0" "@opentelemetry/api" "1.9.0" eventsource-parser "1.1.2" - json-schema "^0.4.0" - jsondiffpatch "0.6.0" - secure-json-parse "^2.7.0" zod-to-json-schema "^3.23.3" + "@ai-sdk/provider-utils" "1.0.22" ai@^4.1.41: version "4.1.41" @@ -5379,10 +5405,10 @@ ajv@^6.12.3: resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: + uri-js "^4.2.2" fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + fast-json-stable-stringify "^2.0.0" ansi-escapes@^4.2.1: version "4.3.2" @@ -5435,8 +5461,8 @@ anymatch@~3.1.2: resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: - normalize-path "^3.0.0" picomatch "^2.0.4" + normalize-path "^3.0.0" aproba@^1.0.3: version "1.2.0" @@ -5615,9 +5641,9 @@ axios@^1.6.8, axios@^1.7.4, axios@^1.7.8, axios@^1.7.9: resolved "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz" integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw== dependencies: - follow-redirects "^1.15.6" form-data "^4.0.0" proxy-from-env "^1.1.0" + follow-redirects "^1.15.6" axios-retry@^3.8.0: version "3.9.1" @@ -5647,7 +5673,7 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -bare-events@*, bare-events@^2.0.0, bare-events@^2.2.0: +bare-events@^2.0.0, bare-events@^2.2.0: version "2.5.4" resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz" integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA== @@ -5707,28 +5733,28 @@ better-auth@^1.1.18: resolved "https://registry.npmjs.org/better-auth/-/better-auth-1.1.18.tgz" integrity sha512-cU/u7/qlSiR/OO1O53gh/bHvxyB53DE+5ZOw9DtpDI8IyIQUBqDnQ06MOwNtj8JwjXHcMFNSNd5u/W8DED0bJw== dependencies: - "@better-auth/utils" "0.2.3" - "@better-fetch/fetch" "1.1.12" - "@noble/ciphers" "^0.6.0" - "@noble/hashes" "^1.6.1" - "@simplewebauthn/browser" "^13.0.0" - "@simplewebauthn/server" "^13.0.0" - better-call "0.3.3" + zod "^3.24.1" defu "^6.1.4" jose "^5.9.6" kysely "^0.27.4" nanostores "^0.11.3" - zod "^3.24.1" + better-call "0.3.3" + "@noble/hashes" "^1.6.1" + "@noble/ciphers" "^0.6.0" + "@better-auth/utils" "0.2.3" + "@better-fetch/fetch" "1.1.12" + "@simplewebauthn/server" "^13.0.0" + "@simplewebauthn/browser" "^13.0.0" better-call@0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/better-call/-/better-call-0.3.3.tgz" integrity sha512-N4lDVm0NGmFfDJ0XMQ4O83Zm/3dPlvIQdxvwvgSLSkjFX5PM4GUYSVAuxNzXN27QZMHDkrJTWUqxBrm4tPC3eA== dependencies: - "@better-fetch/fetch" "^1.1.4" + zod "^3.24.1" rou3 "^0.5.1" uncrypto "^0.1.3" - zod "^3.24.1" + "@better-fetch/fetch" "^1.1.4" binary-extensions@^2.0.0: version "2.3.0" @@ -5756,18 +5782,18 @@ body-parser@1.20.3: resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: + qs "6.13.0" + depd "2.0.0" bytes "3.1.2" - content-type "~1.0.5" debug "2.6.9" - depd "2.0.0" + unpipe "1.0.0" destroy "1.2.0" - http-errors "2.0.0" + type-is "~1.6.18" + raw-body "2.5.2" iconv-lite "0.4.24" + http-errors "2.0.0" on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" + content-type "~1.0.5" bowser@^2.11.0: version "2.11.0" @@ -5842,17 +5868,17 @@ bun@^1.2.2: resolved "https://registry.npmjs.org/bun/-/bun-1.2.2.tgz" integrity sha512-RUc8uVVTw8WoASUzXaEQJR1s7mnwoHm3P871qBUIqSaoOpuwcU+bSVX151/xoqDwnyv38SjOX7yQ3oO0IeT73g== optionalDependencies: - "@oven/bun-darwin-aarch64" "1.2.2" + "@oven/bun-linux-x64" "1.2.2" "@oven/bun-darwin-x64" "1.2.2" - "@oven/bun-darwin-x64-baseline" "1.2.2" + "@oven/bun-windows-x64" "1.2.2" "@oven/bun-linux-aarch64" "1.2.2" + "@oven/bun-darwin-aarch64" "1.2.2" + "@oven/bun-linux-x64-musl" "1.2.2" "@oven/bun-linux-aarch64-musl" "1.2.2" - "@oven/bun-linux-x64" "1.2.2" "@oven/bun-linux-x64-baseline" "1.2.2" - "@oven/bun-linux-x64-musl" "1.2.2" - "@oven/bun-linux-x64-musl-baseline" "1.2.2" - "@oven/bun-windows-x64" "1.2.2" + "@oven/bun-darwin-x64-baseline" "1.2.2" "@oven/bun-windows-x64-baseline" "1.2.2" + "@oven/bun-linux-x64-musl-baseline" "1.2.2" bundle-name@^4.1.0: version "4.1.0" @@ -5905,9 +5931,9 @@ camelcase-css@^2.0.1: integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: - version "1.0.30001699" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz" - integrity sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w== + version "1.0.30001700" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz" + integrity sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ== caseless@~0.12.0: version "0.12.0" @@ -5961,16 +5987,16 @@ chokidar@^3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - optionalDependencies: - fsevents "~2.3.2" dependencies: - anymatch "~3.1.2" braces "~3.0.2" + is-glob "~4.0.1" + anymatch "~3.1.2" + readdirp "~3.6.0" glob-parent "~5.1.2" is-binary-path "~2.1.0" - is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" chokidar@^4.0.1: version "4.0.3" @@ -6026,9 +6052,9 @@ cliui@^8.0.1: resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" wrap-ansi "^7.0.0" + strip-ansi "^6.0.1" + string-width "^4.2.0" clone@^1.0.2: version "1.0.4" @@ -6067,8 +6093,8 @@ color@^4.2.3: resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz" integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== dependencies: - color-convert "^2.0.1" color-string "^1.9.0" + color-convert "^2.0.1" color-convert@^2.0.1: version "2.0.1" @@ -6136,8 +6162,7 @@ commander@11.1.0: version "workspace:apps/app" resolved "workspace:apps/app" devDependencies: - "@bubba/db" "workspace:*" - devDependencies: + "@bubba/db" "packages/db" "@trigger.dev/build" "3.3.16" "@types/node" "^22.13.2" "@types/react" "19.0.10" @@ -6151,9 +6176,7 @@ commander@11.1.0: "@aws-sdk/client-s3" "^3.758.0" "@aws-sdk/s3-request-presigner" "^3.758.0" "@browserbasehq/sdk" "^2.3.0" - dependencies: - "@bubba/notifications" "workspace:*" - dependencies: + "@bubba/notifications" "packages/notifications" "@date-fns/tz" "^1.2.0" "@hookform/resolvers" "^3.10.0" "@nangohq/frontend" "^0.53.1" @@ -6244,8 +6267,8 @@ config-chain@^1.1.11, config-chain@^1.1.13: resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz" integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== dependencies: - ini "^1.3.4" proto-list "~1.2.1" + ini "^1.3.4" configstore@^5.0.0: version "5.0.1" @@ -6253,11 +6276,11 @@ configstore@^5.0.0: integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: dot-prop "^5.2.0" - graceful-fs "^4.1.2" make-dir "^3.0.0" + graceful-fs "^4.1.2" + xdg-basedir "^4.0.0" unique-string "^2.0.0" write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -6323,8 +6346,8 @@ cors@~2.8.5: resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== dependencies: - object-assign "^4" vary "^1" + object-assign "^4" crelt@^1.0.0: version "1.0.6" @@ -6341,9 +6364,9 @@ cross-spawn@7.0.5, cross-spawn@^7.0.0, cross-spawn@^7.0.3: resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz" integrity sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug== dependencies: + which "^2.0.1" path-key "^3.1.0" shebang-command "^2.0.0" - which "^2.0.1" crypto@^1.0.1: version "1.0.1" @@ -6992,10 +7015,10 @@ editorconfig@^1.0.4: resolved "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz" integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q== dependencies: - "@one-ini/wasm" "0.1.1" + semver "^7.5.3" commander "^10.0.0" minimatch "9.0.1" - semver "^7.5.3" + "@one-ini/wasm" "0.1.1" ee-first@1.1.1: version "1.1.1" @@ -7010,9 +7033,9 @@ effect@3.12.0, effect@^3.12.0: fast-check "^3.23.1" electron-to-chromium@^1.5.73: - version "1.5.101" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz" - integrity sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA== + version "1.5.102" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz" + integrity sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q== embla-carousel@8.5.2: version "8.5.2" @@ -7052,7 +7075,7 @@ encodeurl@~2.0.0: resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== -encoding@^0.1.0, encoding@^0.1.13: +encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -7086,11 +7109,11 @@ engine.io-client@~6.5.2: resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz" integrity sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ== dependencies: - "@socket.io/component-emitter" "~3.1.0" + ws "~8.17.1" debug "~4.3.1" engine.io-parser "~5.2.1" - ws "~8.17.1" xmlhttprequest-ssl "~2.0.0" + "@socket.io/component-emitter" "~3.1.0" engine.io-parser@~5.2.1: version "5.2.3" @@ -7215,34 +7238,41 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" -esbuild@0.19.11: +esbuild@0.19.11, "esbuild@>=0.12 <1": version "0.19.11" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz" integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA== optionalDependencies: "@esbuild/aix-ppc64" "0.19.11" + "@esbuild/linux-arm" "0.19.11" + "@esbuild/linux-x64" "0.19.11" + "@esbuild/sunos-x64" "0.19.11" + "@esbuild/win32-x64" "0.19.11" + "@esbuild/darwin-x64" "0.19.11" + "@esbuild/linux-ia32" "0.19.11" + "@esbuild/netbsd-x64" "0.19.11" + "@esbuild/win32-ia32" "0.19.11" "@esbuild/android-arm" "0.19.11" - "@esbuild/android-arm64" "0.19.11" "@esbuild/android-x64" "0.19.11" - "@esbuild/darwin-arm64" "0.19.11" - "@esbuild/darwin-x64" "0.19.11" - "@esbuild/freebsd-arm64" "0.19.11" "@esbuild/freebsd-x64" "0.19.11" - "@esbuild/linux-arm" "0.19.11" "@esbuild/linux-arm64" "0.19.11" - "@esbuild/linux-ia32" "0.19.11" - "@esbuild/linux-loong64" "0.19.11" - "@esbuild/linux-mips64el" "0.19.11" "@esbuild/linux-ppc64" "0.19.11" - "@esbuild/linux-riscv64" "0.19.11" "@esbuild/linux-s390x" "0.19.11" - "@esbuild/linux-x64" "0.19.11" - "@esbuild/netbsd-x64" "0.19.11" "@esbuild/openbsd-x64" "0.19.11" - "@esbuild/sunos-x64" "0.19.11" "@esbuild/win32-arm64" "0.19.11" - "@esbuild/win32-ia32" "0.19.11" - "@esbuild/win32-x64" "0.19.11" + "@esbuild/darwin-arm64" "0.19.11" + "@esbuild/android-arm64" "0.19.11" + "@esbuild/freebsd-arm64" "0.19.11" + "@esbuild/linux-loong64" "0.19.11" + "@esbuild/linux-riscv64" "0.19.11" + "@esbuild/linux-mips64el" "0.19.11" + +esbuild-register@3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz" + integrity sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg== + dependencies: + debug "^4.3.4" escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" @@ -7273,12 +7303,12 @@ escodegen@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - optionalDependencies: - source-map "~0.6.1" dependencies: - esprima "^4.0.1" estraverse "^5.2.0" esutils "^2.0.2" + esprima "^4.0.1" + optionalDependencies: + source-map "~0.6.1" esm-env@^1.2.1: version "1.2.2" @@ -7291,9 +7321,9 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrap@^1.4.3: - version "1.4.4" - resolved "https://registry.npmjs.org/esrap/-/esrap-1.4.4.tgz" - integrity sha512-tDN6xP/r/b3WmdpWm7LybrD252hY52IokcycPnO+WHfhFF0+n5AWtcLLK7VNV6m0uYgVRhGVs8OkZwRyfC7HzQ== + version "1.4.5" + resolved "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz" + integrity sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -7378,52 +7408,52 @@ execa@^8.0.1: resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== dependencies: - cross-spawn "^7.0.3" - get-stream "^8.0.1" - human-signals "^5.0.0" + onetime "^6.0.0" is-stream "^3.0.0" + get-stream "^8.0.1" + cross-spawn "^7.0.3" + signal-exit "^4.1.0" merge-stream "^2.0.0" npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^4.1.0" + human-signals "^5.0.0" strip-final-newline "^3.0.0" -express@*, express@^4.21.0: +express@^4.21.0: version "4.21.2" resolved "https://registry.npmjs.org/express/-/express-4.21.2.tgz" integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.7.1" - cookie-signature "1.0.6" - debug "2.6.9" + qs "6.13.0" depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.3.1" + send "0.19.0" + vary "~1.1.2" + debug "2.6.9" fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" + cookie "0.7.1" + accepts "~1.3.8" methods "~1.1.2" - on-finished "2.4.1" + type-is "~1.6.18" parseurl "~1.3.3" - path-to-regexp "0.1.12" + statuses "2.0.1" + encodeurl "~2.0.0" proxy-addr "~2.0.7" - qs "6.13.0" - range-parser "~1.2.1" + body-parser "1.20.3" + escape-html "~1.0.3" + http-errors "2.0.0" + on-finished "2.4.1" safe-buffer "5.2.1" - send "0.19.0" + utils-merge "1.0.1" + content-type "~1.0.4" + finalhandler "1.3.1" + range-parser "~1.2.1" serve-static "1.16.2" + array-flatten "1.1.1" + path-to-regexp "0.1.12" setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" + cookie-signature "1.0.6" + merge-descriptors "1.0.3" + content-disposition "0.5.4" extend@^3.0.0, extend@~3.0.2: version "3.0.2" @@ -7450,12 +7480,12 @@ extract-zip@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz" integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== - optionalDependencies: - "@types/yauzl" "^2.9.1" dependencies: debug "^4.1.1" get-stream "^5.1.0" yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" @@ -7494,11 +7524,11 @@ fast-glob@3.3.1: resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" merge2 "^1.3.0" micromatch "^4.0.4" + glob-parent "^5.1.2" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" fast-glob@^3.3.2, fast-glob@^3.3.3: version "3.3.3" @@ -7524,9 +7554,9 @@ fast-xml-parser@4.4.1: strnum "^1.0.5" fast-xml-parser@^4.5.1: - version "4.5.1" - resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz" - integrity sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w== + version "4.5.2" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.2.tgz" + integrity sha512-xmnYV9o0StIz/0ArdzmWTxn9oDy0lH8Z80/8X/TD2EUQKXY4DHxoT9mYBqgGIG17DgddCJtH1M6DriMbalNsAA== dependencies: strnum "^1.0.5" @@ -7544,7 +7574,7 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -fdir@^6.4.2: +fdir@^6.4.3: version "6.4.3" resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz" integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== @@ -7596,12 +7626,12 @@ finalhandler@1.3.1: integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" + unpipe "~1.0.0" + parseurl "~1.3.3" + statuses "2.0.1" encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" find-my-way-ts@^0.1.5: version "0.1.5" @@ -7665,8 +7695,8 @@ form-data@~2.3.2: integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.6" mime-types "^2.1.12" + combined-stream "^1.0.6" form-data@^2.5.0: version "2.5.3" @@ -7674,10 +7704,10 @@ form-data@^2.5.0: integrity sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ== dependencies: asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" mime-types "^2.1.35" safe-buffer "^5.2.1" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" form-data@^4.0.0, form-data@^4.0.1: version "4.0.2" @@ -7724,18 +7754,18 @@ framer-motion@^11.18.2: resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.2.tgz" integrity sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w== dependencies: + tslib "^2.4.0" motion-dom "^11.18.1" motion-utils "^11.18.1" - tslib "^2.4.0" framer-motion@^12.4.7: version "12.4.7" resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-12.4.7.tgz" integrity sha512-VhrcbtcAMXfxlrjeHPpWVu2+mkcoR31e02aNSR7OUS/hZAciKa8q6o3YN2mA1h+jjscRsSyKvX6E1CiY/7OLMw== dependencies: + tslib "^2.4.0" motion-dom "^12.4.5" motion-utils "^12.0.0" - tslib "^2.4.0" framework-utils@^1.1.0: version "1.1.0" @@ -7762,10 +7792,10 @@ fstream@^1.0.0, fstream@^1.0.12: resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" mkdirp ">=0.5 0" rimraf "2" + inherits "~2.0.0" + graceful-fs "^4.1.2" function-bind@^1.1.2: version "1.1.2" @@ -7795,13 +7825,13 @@ gauge@~2.7.3: integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== dependencies: aproba "^1.0.3" - console-control-strings "^1.0.0" + strip-ansi "^3.0.1" + wide-align "^1.1.0" has-unicode "^2.0.0" - object-assign "^4.1.0" signal-exit "^3.0.0" string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + object-assign "^4.1.0" + console-control-strings "^1.0.0" geist@^1.3.1: version "1.3.1" @@ -7920,11 +7950,11 @@ glob@^7.0.3, glob@^7.1.3: resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: - fs.realpath "^1.0.0" + once "^1.3.0" inflight "^1.0.4" inherits "2" minimatch "^3.1.1" - once "^1.3.0" + fs.realpath "^1.0.0" path-is-absolute "^1.0.0" glob@10.3.4: @@ -7932,23 +7962,23 @@ glob@10.3.4: resolved "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz" integrity sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ== dependencies: - foreground-child "^3.1.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" jackspeak "^2.0.3" minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" + foreground-child "^3.1.0" glob@^10.3.10, glob@^10.4.2: version "10.4.5" resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: - foreground-child "^3.1.0" + minipass "^7.1.2" jackspeak "^3.1.2" minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" path-scurry "^1.11.1" + foreground-child "^3.1.0" + package-json-from-dist "^1.0.0" glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" @@ -8014,13 +8044,13 @@ handlebars@^4.7.7: version "4.7.8" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - optionalDependencies: - uglify-js "^3.1.4" dependencies: minimist "^1.2.5" neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" har-schema@^2.0.0: version "2.0.0" @@ -8149,10 +8179,10 @@ htmlparser2@^8.0.2: resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz" integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" domutils "^3.0.1" entities "^4.4.0" + domhandler "^5.0.3" + domelementtype "^2.3.0" http-errors@2.0.0: version "2.0.0" @@ -8178,9 +8208,9 @@ http-signature@~1.2.0: resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" sshpk "^1.7.0" + jsprim "^1.2.2" + assert-plus "^1.0.0" https@^1.0.0: version "1.0.0" @@ -8231,11 +8261,6 @@ ieee754@^1.1.13, ieee754@^1.2.1: resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== -immer@>=9.0.6: - version "10.1.1" - resolved "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz" - integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== - import-in-the-middle@^1.8.1: version "1.13.0" resolved "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.13.0.tgz" @@ -8284,21 +8309,21 @@ inquirer@^8.2.0: resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz" integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" ora "^5.4.1" - run-async "^2.4.0" rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" + chalk "^4.1.1" + lodash "^4.17.21" + figures "^3.0.0" through "^2.3.6" + cli-width "^3.0.0" + run-async "^2.4.0" wrap-ansi "^6.0.1" + cli-cursor "^3.1.0" + strip-ansi "^6.0.0" + mute-stream "0.0.8" + ansi-escapes "^4.2.1" + string-width "^4.1.0" + external-editor "^3.0.3" internal-slot@^1.1.0: version "1.1.0" @@ -8324,10 +8349,10 @@ intl-messageformat@^10.5.14: resolved "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.15.tgz" integrity sha512-LRyExsEsefQSBjU2p47oAheoKz+EOJxSLDdjOaEjdriajfHsMXOmV/EhMvYSg9bAgCUHasuAC+mcUBe/95PfIg== dependencies: + tslib "2" + "@formatjs/icu-messageformat-parser" "2.11.1" "@formatjs/ecma402-abstract" "2.3.3" "@formatjs/fast-memoize" "2.2.6" - "@formatjs/icu-messageformat-parser" "2.11.1" - tslib "2" ip-address@^9.0.5: version "9.0.5" @@ -8724,19 +8749,19 @@ jackspeak@^2.0.3: version "2.3.6" resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" dependencies: "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" jackspeak@^3.1.2: version "3.4.3" resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" dependencies: "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" jiti@^1.21.6: version "1.21.7" @@ -8749,9 +8774,9 @@ jju@^1.4.0: integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== jose@^5.4.0, jose@^5.9.3, jose@^5.9.6: - version "5.9.6" - resolved "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz" - integrity sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ== + version "5.10.0" + resolved "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz" + integrity sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg== jotai@^2.11.0: version "2.12.1" @@ -8874,10 +8899,10 @@ jsonfile@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - optionalDependencies: - graceful-fs "^4.1.6" dependencies: universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" jsonrepair@^3.11.2: version "3.12.0" @@ -8889,26 +8914,26 @@ jsonwebtoken@^9.0.0: resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== dependencies: + ms "^2.1.1" jws "^3.2.2" + semver "^7.5.4" + lodash.once "^4.0.0" lodash.includes "^4.3.0" + lodash.isnumber "^3.0.3" + lodash.isstring "^4.0.1" lodash.isboolean "^3.0.3" lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^7.5.4" jsprim@^1.2.2: version "1.4.2" resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: - assert-plus "1.0.0" + verror "1.10.0" extsprintf "1.3.0" + assert-plus "1.0.0" json-schema "0.4.0" - verror "1.10.0" jwa@^1.4.1: version "1.4.1" @@ -8956,9 +8981,9 @@ keycon@^1.2.0: resolved "https://registry.npmjs.org/keycon/-/keycon-1.4.0.tgz" integrity sha512-p1NAIxiRMH3jYfTeXRs2uWbVJ1WpEjpi8ktzUyBJsX7/wn2qu2VRXktneBLNtKNxJmlUYxRi9gOJt1DuthXR7A== dependencies: - "@cfcs/core" "^0.0.6" "@daybrush/utils" "^1.7.1" "@scena/event-emitter" "^1.0.2" + "@cfcs/core" "^0.0.6" keycode "^2.2.0" kind-of@^3.0.2: @@ -9142,9 +9167,9 @@ log-symbols@4.1.0, log-symbols@^4.1.0: is-unicode-supported "^0.1.0" long@^5.0.0: - version "5.3.0" - resolved "https://registry.npmjs.org/long/-/long-5.3.0.tgz" - integrity sha512-5vvY5yF1zF/kXk+L94FRiTDa1Znom46UjPCH6/XbSvS8zBKMFBHTJk8KDMqJ+2J6QezQFi7k1k8v21ClJYHPaw== + version "5.3.1" + resolved "https://registry.npmjs.org/long/-/long-5.3.1.tgz" + integrity sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng== longest-streak@^3.0.0: version "3.1.0" @@ -9532,13 +9557,13 @@ micromark-extension-gfm-footnote@^2.0.0: integrity sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw== dependencies: devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" + micromark-util-types "^2.0.0" + micromark-util-symbol "^2.0.0" micromark-factory-space "^2.0.0" micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" + micromark-core-commonmark "^2.0.0" micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" + micromark-util-normalize-identifier "^2.0.0" micromark-extension-gfm-strikethrough@^2.0.0: version "2.1.0" @@ -9672,10 +9697,10 @@ micromark-util-decode-string@^2.0.0: resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz" integrity sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ== dependencies: - decode-named-character-reference "^1.0.0" micromark-util-character "^2.0.0" micromark-util-decode-numeric-character-reference "^2.0.0" micromark-util-symbol "^2.0.0" + decode-named-character-reference "^1.0.0" micromark-util-encode@^2.0.0: version "2.0.1" @@ -9833,8 +9858,8 @@ motion@^11.18.2: resolved "https://registry.npmjs.org/motion/-/motion-11.18.2.tgz" integrity sha512-JLjvFDuFr42NFtcVoMAyC2sEjnpA8xpy6qWPyzQvCloznAyQ8FIXioxWfHiLtgYhoVpfUqSWpn1h9++skj9+Wg== dependencies: - framer-motion "^11.18.2" tslib "^2.4.0" + framer-motion "^11.18.2" motion-dom@^11.18.1: version "11.18.1" @@ -9933,47 +9958,70 @@ next@15.0.4: version "15.0.4" resolved "https://registry.npmjs.org/next/-/next-15.0.4.tgz" integrity sha512-nuy8FH6M1FG0lktGotamQDCXhh5hZ19Vo0ht1AOIQWrYJLP598TIUagKtvJrfJ5AGwB/WmDqkKaKhMpVifvGPA== + dependencies: + busboy "1.6.0" + postcss "8.4.31" + "@next/env" "15.0.4" + styled-jsx "5.1.6" + "@swc/counter" "0.1.3" + "@swc/helpers" "0.5.13" + caniuse-lite "^1.0.30001579" optionalDependencies: - "@next/swc-darwin-arm64" "15.0.4" + sharp "^0.33.5" "@next/swc-darwin-x64" "15.0.4" - "@next/swc-linux-arm64-gnu" "15.0.4" - "@next/swc-linux-arm64-musl" "15.0.4" + "@next/swc-darwin-arm64" "15.0.4" "@next/swc-linux-x64-gnu" "15.0.4" "@next/swc-linux-x64-musl" "15.0.4" - "@next/swc-win32-arm64-msvc" "15.0.4" "@next/swc-win32-x64-msvc" "15.0.4" - sharp "^0.33.5" + "@next/swc-linux-arm64-gnu" "15.0.4" + "@next/swc-linux-arm64-musl" "15.0.4" + "@next/swc-win32-arm64-msvc" "15.0.4" + +"next@>= 14.0.0", next@>=12, next@>=13.2.0, "next@^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", "next@^13.0.0 || ^14.0.0 || ^15.0.0", "next@^14.0.0-0 || ^15.0.0-0": + version "15.1.7" + resolved "https://registry.npmjs.org/next/-/next-15.1.7.tgz" + integrity sha512-GNeINPGS9c6OZKCvKypbL8GTsT5GhWPp4DM0fzkXJuXMilOO2EeFxuAY6JZbtk6XIl6Ws10ag3xRINDjSO5+wg== dependencies: - "@next/env" "15.0.4" - "@swc/counter" "0.1.3" - "@swc/helpers" "0.5.13" busboy "1.6.0" - caniuse-lite "^1.0.30001579" postcss "8.4.31" + "@next/env" "15.1.7" styled-jsx "5.1.6" - -next@*, "next@>= 14.0.0", next@>=12, next@>=13.2.0, next@>=14.2.0, "next@^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", "next@^13.0.0 || ^14.0.0 || ^15.0.0", "next@^14.0.0-0 || ^15.0.0-0", next@^15.2.0: + "@swc/counter" "0.1.3" + "@swc/helpers" "0.5.15" + caniuse-lite "^1.0.30001579" + optionalDependencies: + sharp "^0.33.5" + "@next/swc-darwin-x64" "15.1.7" + "@next/swc-darwin-arm64" "15.1.7" + "@next/swc-linux-x64-gnu" "15.1.7" + "@next/swc-linux-x64-musl" "15.1.7" + "@next/swc-win32-x64-msvc" "15.1.7" + "@next/swc-linux-arm64-gnu" "15.1.7" + "@next/swc-linux-arm64-musl" "15.1.7" + "@next/swc-win32-arm64-msvc" "15.1.7" + +next@^15.2.0: version "15.2.0" resolved "https://registry.npmjs.org/next/-/next-15.2.0.tgz" integrity sha512-VaiM7sZYX8KIAHBrRGSFytKknkrexNfGb8GlG6e93JqueCspuGte8i4ybn8z4ww1x3f2uzY4YpTaBEW4/hvsoQ== - optionalDependencies: - "@next/swc-darwin-arm64" "15.2.0" - "@next/swc-darwin-x64" "15.2.0" - "@next/swc-linux-arm64-gnu" "15.2.0" - "@next/swc-linux-arm64-musl" "15.2.0" - "@next/swc-linux-x64-gnu" "15.2.0" - "@next/swc-linux-x64-musl" "15.2.0" - "@next/swc-win32-arm64-msvc" "15.2.0" - "@next/swc-win32-x64-msvc" "15.2.0" - sharp "^0.33.5" dependencies: + busboy "1.6.0" + postcss "8.4.31" "@next/env" "15.2.0" + styled-jsx "5.1.6" "@swc/counter" "0.1.3" "@swc/helpers" "0.5.15" - busboy "1.6.0" caniuse-lite "^1.0.30001579" - postcss "8.4.31" - styled-jsx "5.1.6" + optionalDependencies: + sharp "^0.33.5" + "@next/swc-darwin-x64" "15.2.0" + "@next/swc-darwin-arm64" "15.2.0" + "@next/swc-linux-x64-gnu" "15.2.0" + "@next/swc-linux-x64-musl" "15.2.0" + "@next/swc-win32-x64-msvc" "15.2.0" + "@next/swc-linux-arm64-gnu" "15.2.0" + "@next/swc-linux-arm64-musl" "15.2.0" + "@next/swc-win32-arm64-msvc" "15.2.0" "next-auth@^5.0.0-beta.25": version "5.0.0-beta.25" @@ -9992,18 +10040,18 @@ next-international@^1.3.1: server-only "^0.0.1" next-intl@^3.26.3: - version "3.26.3" - resolved "https://registry.npmjs.org/next-intl/-/next-intl-3.26.3.tgz" - integrity sha512-6Y97ODrDsEE1J8cXKMHwg1laLdtkN66QMIqG8BzH4zennJRUNTtM8UMtBDyhfmF6uiZ+xsbWLXmHUgmUymUsfQ== + version "3.26.4" + resolved "https://registry.npmjs.org/next-intl/-/next-intl-3.26.4.tgz" + integrity sha512-/kFFR7WYJGisOR0xKoC930e6oTOOWf8rbHviQgte5zIn6OgJ6mKFvXI94RWAW3ksCZJCvE4zblIuYwHCSbbw7g== dependencies: - "@formatjs/intl-localematcher" "^0.5.4" + use-intl "^3.26.4" negotiator "^1.0.0" - use-intl "^3.26.3" + "@formatjs/intl-localematcher" "^0.5.4" next-safe-action@^7.10.3: - version "7.10.3" - resolved "https://registry.npmjs.org/next-safe-action/-/next-safe-action-7.10.3.tgz" - integrity sha512-Kn4zTnOiRkfWfQ0DH94I79Eycq6i+qS6WzhuGzxlWhVe6/yrEXHt+yU4GdqJ1O7vLyDAOWv4rXaRu+FkfVUAqQ== + version "7.10.4" + resolved "https://registry.npmjs.org/next-safe-action/-/next-safe-action-7.10.4.tgz" + integrity sha512-rZE89DTNgiTJ8oPQBOZm+jd0Uf/pLkN+GE3PndER6vWqHGYGN7HMLvhpggkbE8W4TGp+qM7CPyrXye1wCjZLVg== next-themes@^0.4.4: version "0.4.4" @@ -10046,18 +10094,18 @@ node-gyp@^3.0.3: resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz" integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== dependencies: - fstream "^1.0.0" + tar "^2.0.0" glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" osenv "0" - request "^2.87.0" + which "1" + mkdirp "^0.5.0" + npmlog "0 || 1 || 2 || 3 || 4" rimraf "2" semver "~5.3.0" - tar "^2.0.0" - which "1" + fstream "^1.0.0" + request "^2.87.0" + graceful-fs "^4.1.2" node-gyp-build@^4.8.1: version "4.8.4" @@ -10120,10 +10168,10 @@ novel@^1.0.2: "@types/node" "^22.10.6" cmdk "^1.0.4" jotai "^2.11.0" - katex "^0.16.20" react-markdown "^9.0.3" react-moveable "^0.56.0" react-tweet "^3.2.1" + katex "^0.16.20" tippy.js "^6.3.7" tiptap-extension-global-drag-handle "^0.1.16" tunnel-rat "^0.1.2" @@ -10134,28 +10182,28 @@ novu@^2.6.5: integrity sha512-2aafZqW4z24Zp5y3xlhMBfNHW+4THFAsr6p47gSEPcmE5xeiaRDi/WSrNUPcY1jFlV0Bs+E0osHoJClzfkqYUQ== dependencies: "@novu/ntfr-client" "^0.0.4" - "@novu/shared" "2.6.5" "@segment/analytics-node" "^1.1.4" - "@types/cross-spawn" "6.0.0" - async-sema "3.0.1" axios "^1.6.8" chalk "4.1.2" commander "^9.0.0" configstore "^5.0.0" - cross-spawn "7.0.5" dotenv "^16.4.5" - fast-glob "3.3.1" get-port "^5.1.1" gradient-string "^2.0.0" inquirer "^8.2.0" jwt-decode "^3.1.2" open "^8.4.0" ora "^5.4.1" - picocolors "^1.0.0" - prompts "2.4.2" uuid "^9.0.0" - validate-npm-package-name "3.0.0" ws "^8.11.0" + picocolors "^1.0.0" + validate-npm-package-name "3.0.0" + prompts "2.4.2" + "@types/cross-spawn" "6.0.0" + cross-spawn "7.0.5" + fast-glob "3.3.1" + async-sema "3.0.1" + "@novu/shared" "2.6.5" npm-run-path@^5.1.0: version "5.3.0" @@ -10169,10 +10217,10 @@ npm-run-path@^5.1.0: resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" gauge "~2.7.3" set-blocking "~2.0.0" + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" number-is-nan@^1.0.0: version "1.0.1" @@ -10180,9 +10228,9 @@ number-is-nan@^1.0.0: integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== nuqs@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/nuqs/-/nuqs-2.3.2.tgz" - integrity sha512-WeG78r8e3a30JY3P8npldvNiAZwGIk499lnpeRs3UYA3PpSvs2/PLunKGgjuF/JMw4BOowD3K2xgGEOZ3PeODA== + version "2.4.0" + resolved "https://registry.npmjs.org/nuqs/-/nuqs-2.4.0.tgz" + integrity sha512-+yOdX0q/wdYlseSYtWC8StDDt2QFcYX/zV5/E67J1cOJo3PR0mggxMx4acZGC0Hu66xFHENKQkqI2zSpH742xQ== dependencies: mitt "^3.0.1" @@ -10197,9 +10245,9 @@ oauth-sign@~0.9.0: integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== oauth4webapi@^3.0.0, oauth4webapi@^3.1.1: - version "3.1.5" - resolved "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-3.1.5.tgz" - integrity sha512-/V8tb1vgltQWIV8abvFfK1VVLhNcg5nYp8XTjwGc69eP66+rnHl0ttBLL5VrEJ/oNCrM37+JoVuHpiLNhnTdzw== + version "3.2.0" + resolved "https://registry.npmjs.org/oauth4webapi/-/oauth4webapi-3.2.0.tgz" + integrity sha512-2sYwQXuuzGKOHpnM7QL9BssDrly5gKCgJKTyrhmFIHzJRj0fFsr6GVJEdesmrX6NpMg2u63V4hJwRsZE6PUSSA== object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" @@ -10292,13 +10340,13 @@ ora@5.4.1, ora@^5.4.1: dependencies: bl "^4.1.0" chalk "^4.1.0" + wcwidth "^1.0.1" cli-cursor "^3.1.0" + strip-ansi "^6.0.0" + log-symbols "^4.1.0" cli-spinners "^2.5.0" is-interactive "^1.0.0" is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" orderedmap@^2.0.0: version "2.1.1" @@ -10320,8 +10368,8 @@ osenv@0: resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: - os-homedir "^1.0.0" os-tmpdir "^1.0.0" + os-homedir "^1.0.0" overlap-area@^1.1.0: version "1.1.0" @@ -10363,16 +10411,16 @@ p-queue@^6, p-queue@^6.6.1: resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== dependencies: - eventemitter3 "^4.0.4" p-timeout "^3.2.0" + eventemitter3 "^4.0.4" p-retry@^4: version "4.6.2" resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: - "@types/retry" "0.12.0" retry "^0.13.1" + "@types/retry" "0.12.0" p-timeout@^3.2.0: version "3.2.0" @@ -10387,9 +10435,9 @@ p-try@^2.0.0: integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== pac-proxy-agent@^7.1.0: - version "7.1.0" - resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz" - integrity sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw== + version "7.2.0" + resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz" + integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA== dependencies: "@tootallnate/quickjs-emscripten" "^0.23.0" agent-base "^7.1.2" @@ -10496,8 +10544,8 @@ path-scurry@^1.10.1, path-scurry@^1.11.1: resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== dependencies: - lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + lru-cache "^10.2.0" path-to-regexp@0.1.12: version "0.1.12" @@ -10567,7 +10615,7 @@ picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1, "picomatch@^3 || ^4": +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -10626,9 +10674,8 @@ plist@^3.1.0: version "workspace:apps/portal" resolved "workspace:apps/portal" devDependencies: - "@bubba/db" "workspace:*" - "@bubba/ui" "workspace:*" - devDependencies: + "@bubba/db" "packages/db" + "@bubba/ui" "packages/ui" "@types/node" "^22.13.2" "@types/react" "^19.0.8" "@types/react-dom" "^19.0.3" @@ -10656,7 +10703,7 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@>=8.0.9, postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.47, postcss@^8.4.48, postcss@^8.5.2: +postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.47, postcss@^8.4.48, postcss@^8.5.2: version "8.5.2" resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz" integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA== @@ -10686,8 +10733,8 @@ postcss-load-config@^4.0.2: resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz" integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - lilconfig "^3.0.0" yaml "^2.3.4" + lilconfig "^3.0.0" postcss-nested@^6.2.0: version "6.2.0" @@ -10745,9 +10792,9 @@ postgres-range@^1.1.1: integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== posthog-js@^1.215.3, posthog-js@^1.217.2: - version "1.218.2" - resolved "https://registry.npmjs.org/posthog-js/-/posthog-js-1.218.2.tgz" - integrity sha512-C3IRqrdeYdFPiUmj2wI+k+Skr56Co9vhXufv3LirNQC6kAc5FVq//VQVK1i4Xf8PlZYsaqREl0QI5M/CihU3wA== + version "1.219.3" + resolved "https://registry.npmjs.org/posthog-js/-/posthog-js-1.219.3.tgz" + integrity sha512-oKN4no9RRAptZ86R/MvMjsxQnFAe97rwU2emmTzf/q9ng+7V4nU+APM0ItzrESFtRYx1X8kKtxDUlkujNhfMvw== dependencies: core-js "^3.38.1" fflate "^0.4.8" @@ -10761,21 +10808,16 @@ posthog-node@^4.4.1, posthog-node@^4.5.2: dependencies: axios "^1.7.4" -preact@10.11.3, preact@>=10: +preact@10.11.3: version "10.11.3" resolved "https://registry.npmjs.org/preact/-/preact-10.11.3.tgz" integrity sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg== -preact@10.24.3: +preact@10.24.3, preact@>=10, preact@^10.19.3: version "10.24.3" resolved "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz" integrity sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA== -preact@>=10, preact@^10.19.3: - version "10.25.4" - resolved "https://registry.npmjs.org/preact/-/preact-10.25.4.tgz" - integrity sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA== - preact-render-to-string@5.2.3: version "5.2.3" resolved "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.2.3.tgz" @@ -10816,14 +10858,16 @@ pretty-format@^3.8.0: resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz" integrity sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew== -prisma@*, prisma@^6.3.1: - version "6.3.1" - resolved "https://registry.npmjs.org/prisma/-/prisma-6.3.1.tgz" - integrity sha512-JKCZWvBC3enxk51tY4TWzS4b5iRt4sSU1uHn2I183giZTvonXaQonzVtjLzpOHE7qu9MxY510kAtFGJwryKe3Q== +prisma@^6.3.1: + version "6.4.0" + resolved "https://registry.npmjs.org/prisma/-/prisma-6.4.0.tgz" + integrity sha512-UxEaEo1ajnEvwT9UQRyRfq0zZ9pvOmlZ6kShY8Hgu4jxgkHo1mg85IEP8yBgFRiRBA2o2OIt1nxzcllt86D4Mw== + dependencies: + esbuild ">=0.12 <1" + esbuild-register "3.6.0" + "@prisma/engines" "6.4.0" optionalDependencies: fsevents "2.3.3" - dependencies: - "@prisma/engines" "6.3.1" prismjs@1.29.0: version "1.29.0" @@ -10904,8 +10948,8 @@ prosemirror-commands@^1.0.0, prosemirror-commands@^1.6.2: integrity sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA== dependencies: prosemirror-model "^1.0.0" - prosemirror-state "^1.0.0" prosemirror-transform "^1.10.2" + prosemirror-state "^1.0.0" prosemirror-dropcursor@^1.8.1: version "1.8.1" @@ -10913,8 +10957,8 @@ prosemirror-dropcursor@^1.8.1: integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw== dependencies: prosemirror-state "^1.0.0" - prosemirror-transform "^1.1.0" prosemirror-view "^1.1.0" + prosemirror-transform "^1.1.0" prosemirror-gapcursor@^1.3.2: version "1.3.2" @@ -10949,17 +10993,17 @@ prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.2.2: resolved "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz" integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ== dependencies: - prosemirror-state "^1.0.0" w3c-keyname "^2.2.0" + prosemirror-state "^1.0.0" prosemirror-markdown@^1.13.1: version "1.13.1" resolved "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.1.tgz" integrity sha512-Sl+oMfMtAjWtlcZoj/5L/Q39MpEnVZ840Xo330WJWUvgyhNmLBLN7MsHn07s53nG/KImevWHSE6fEj4q/GihHw== dependencies: - "@types/markdown-it" "^14.0.0" markdown-it "^14.0.0" prosemirror-model "^1.20.0" + "@types/markdown-it" "^14.0.0" prosemirror-menu@^1.2.4: version "1.2.4" @@ -10967,9 +11011,9 @@ prosemirror-menu@^1.2.4: integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA== dependencies: crelt "^1.0.0" + prosemirror-state "^1.0.0" prosemirror-commands "^1.0.0" prosemirror-history "^1.0.0" - prosemirror-state "^1.0.0" prosemirror-model@^1.0.0, prosemirror-model@^1.19.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.22.1, prosemirror-model@^1.23.0, prosemirror-model@^1.24.1: version "1.24.1" @@ -10991,8 +11035,8 @@ prosemirror-schema-list@^1.4.1: integrity sha512-gg1tAfH1sqpECdhIHOA/aLg2VH3ROKBWQ4m8Qp9mBKrOxQRW61zc+gMCI8nh22gnBzd1t2u1/NPLmO3nAa3ssg== dependencies: prosemirror-model "^1.0.0" - prosemirror-state "^1.0.0" prosemirror-transform "^1.7.3" + prosemirror-state "^1.0.0" prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.4.2, prosemirror-state@^1.4.3: version "1.4.3" @@ -11100,8 +11144,8 @@ pump@^3.0.0: resolved "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz" integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== dependencies: - end-of-stream "^1.1.0" once "^1.3.1" + end-of-stream "^1.1.0" punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: version "2.3.1" @@ -11119,8 +11163,8 @@ puppeteer-core@^24.2.0: integrity sha512-bCypUh3WXzETafv1TCFAjIUnI8BiQ/d+XvEfEXDLcIMm9CAvROqnBmbt79yBjwasoDZsgfXnUmIJU7Y27AalVQ== dependencies: "@puppeteer/browsers" "2.7.1" - chromium-bidi "1.3.0" debug "^4.4.0" + chromium-bidi "1.3.0" devtools-protocol "0.0.1402036" typed-query-selector "^2.12.0" ws "^8.18.0" @@ -11182,9 +11226,9 @@ raw-body@2.5.2, raw-body@^2.3.3: integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" unpipe "1.0.0" + iconv-lite "0.4.24" + http-errors "2.0.0" rc@1.2.8: version "1.2.8" @@ -11203,7 +11247,7 @@ react@18.2.0, react@18.x, "react@^16.8 || ^17.0 || ^18.0", react@^18.0.0, react@ dependencies: loose-envify "^1.1.0" -react@*, react@19.0.0, "react@>= 16.8 || 18.0.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", "react@>= 18.0.0", "react@>= 18.2.0", react@>=16, react@>=16.6.0, react@>=16.8, "react@>=16.8.0 || ^17.0.0 || ^18", react@>=16.8.1, "react@>=16.8.6 || ^17.0.0 || ^18.0.0", react@>=17, react@>=18, "react@>=18.2.0 || ^19.0.0-0", "react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.2 || ^18.0.0 || ^19.0.0", "react@^18 || ^19", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0 || ^19.0", "react@^18.0 || ^19.0 || ^19.0.0-rc", "react@^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react@^18.2.0 || ^19.0.0-0", react@^19.0.0: +react@*, react@19.0.0, "react@>= 16.8 || 18.0.0", "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", "react@>= 18.0.0", "react@>= 18.2.0", react@>=16, react@>=16.6.0, react@>=16.8, "react@>=16.8.0 || ^17.0.0 || ^18", react@>=16.8.1, "react@>=16.8.6 || ^17.0.0 || ^18.0.0", react@>=17, react@>=18, "react@>=18.2.0 || ^19.0.0-0", "react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.2 || ^18.0.0 || ^19.0.0", "react@^18 || ^19", "react@^18 || ^19 || ^19.0.0-rc", "react@^18.0 || ^19.0", "react@^18.0 || ^19.0 || ^19.0.0-rc", "react@^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react@^18.2.0 || ^19.0.0-0", react@^19.0.0: version "19.0.0" resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz" integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== @@ -11226,10 +11270,10 @@ react-dom@18.2.0, "react-dom@^16.8 || ^17.0 || ^18.0", react-dom@^18.0.0: resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: - loose-envify "^1.1.0" scheduler "^0.23.0" + loose-envify "^1.1.0" -react-dom@19.0.0, "react-dom@>= 18.0.0", "react-dom@>= 18.2.0", react-dom@>=16, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.1, "react-dom@>=16.8.6 || ^17.0.0 || ^18.0.0", react-dom@>=17, react-dom@>=18.0.0, "react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", "react-dom@^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0", "react-dom@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react-dom@^19.0.0: +react-dom@19.0.0, "react-dom@>= 18.0.0", "react-dom@>= 18.2.0", react-dom@>=16, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.1, "react-dom@>=16.8.6 || ^17.0.0 || ^18.0.0", react-dom@>=18.0.0, "react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", "react-dom@^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0", "react-dom@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react-dom@^19.0.0: version "19.0.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz" integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ== @@ -11241,29 +11285,29 @@ react-dropzone@^14.3.5: resolved "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.5.tgz" integrity sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ== dependencies: + prop-types "^15.8.1" attr-accept "^2.2.4" file-selector "^2.1.0" - prop-types "^15.8.1" react-email@1.x, react-email@3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/react-email/-/react-email-3.0.4.tgz" integrity sha512-nXdo9P3V+qYSW6m5yN3XpFGhHb/bflX86m0EDQEqDIgayprj6InmBJoBnMSIyC5EP4tPtoAljlclJns4lJG/MQ== dependencies: - "@babel/core" "7.24.5" - "@babel/parser" "7.24.5" + ora "5.4.1" + glob "10.3.4" + next "15.0.4" chalk "4.1.2" + esbuild "0.19.11" chokidar "^4.0.1" - commander "11.1.0" debounce "2.0.0" - esbuild "0.19.11" - glob "10.3.4" - log-symbols "4.1.0" + commander "11.1.0" + socket.io "4.8.0" mime-types "2.1.35" - next "15.0.4" + "@babel/core" "7.24.5" + log-symbols "4.1.0" + "@babel/parser" "7.24.5" normalize-path "3.0.0" - ora "5.4.1" - socket.io "4.8.0" react-hook-form@^7.0.0, react-hook-form@^7.54.2: version "7.54.2" @@ -11357,11 +11401,11 @@ react-remove-scroll@2.5.4: resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz" integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA== dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" tslib "^2.1.0" - use-callback-ref "^1.3.0" use-sidecar "^1.1.2" + use-callback-ref "^1.3.0" + react-style-singleton "^2.2.1" + react-remove-scroll-bar "^2.3.3" react-remove-scroll@^2.6.3: version "2.6.3" @@ -11408,8 +11452,8 @@ react-style-singleton@^2.2.1, react-style-singleton@^2.2.2, react-style-singleto resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz" integrity sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ== dependencies: - get-nonce "^1.0.0" tslib "^2.0.0" + get-nonce "^1.0.0" react-textarea-autosize@^8.5.7: version "8.5.7" @@ -11461,13 +11505,13 @@ readable-stream@^2.0.6: resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" isarray "~1.0.0" - process-nextick-args "~2.0.0" + inherits "~2.0.3" safe-buffer "~5.1.1" + core-util-is "~1.0.0" string_decoder "~1.1.1" util-deprecate "~1.0.1" + process-nextick-args "~2.0.0" readable-stream@^3.4.0: version "3.6.2" @@ -11507,10 +11551,10 @@ recharts@^2.12.7: integrity sha512-v8PUTUlyiDe56qUj82w/EDVuzEFXwEHp9/xOowGAZwfLjB9uAy3GllQVIYMWF6nU+qibx85WF75zD7AjqoT54Q== dependencies: clsx "^2.0.0" - eventemitter3 "^4.0.1" lodash "^4.17.21" react-is "^18.3.1" react-smooth "^4.0.4" + eventemitter3 "^4.0.1" recharts-scale "^0.4.4" tiny-invariant "^1.3.1" victory-vendor "^36.6.8" @@ -11614,26 +11658,26 @@ request@^2.87.0: resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: - aws-sign2 "~0.7.0" + qs "~6.5.2" aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" + uuid "^3.3.2" extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" + caseless "~0.12.0" isstream "~0.1.2" - json-stringify-safe "~5.0.1" + aws-sign2 "~0.7.0" + form-data "~2.3.2" mime-types "~2.1.19" oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" safe-buffer "^5.1.2" tough-cookie "~2.5.0" tunnel-agent "^0.6.0" - uuid "^3.3.2" + forever-agent "~0.6.1" + har-validator "~5.1.3" + is-typedarray "~1.0.0" + http-signature "~1.2.0" + combined-stream "~1.0.6" + performance-now "^2.1.0" + json-stringify-safe "~5.0.1" require-directory@^2.1.1: version "2.1.1" @@ -11881,19 +11925,19 @@ send@0.19.0: resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: - debug "2.6.9" + ms "2.1.3" depd "2.0.0" + etag "~1.8.1" + mime "1.6.0" + debug "2.6.9" + fresh "0.5.2" destroy "1.2.0" + statuses "2.0.1" encodeurl "~1.0.2" escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" on-finished "2.4.1" range-parser "~1.2.1" - statuses "2.0.1" seroval@^1.0, seroval@^1.1.0: version "1.2.1" @@ -11965,30 +12009,30 @@ sharp@^0.33.5: version "0.33.5" resolved "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz" integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== + dependencies: + color "^4.2.3" + semver "^7.6.3" + detect-libc "^2.0.3" optionalDependencies: - "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-wasm32" "0.33.5" + "@img/sharp-linux-arm" "0.33.5" + "@img/sharp-linux-x64" "0.33.5" + "@img/sharp-win32-x64" "0.33.5" "@img/sharp-darwin-x64" "0.33.5" - "@img/sharp-libvips-darwin-arm64" "1.0.4" - "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-win32-ia32" "0.33.5" + "@img/sharp-linux-arm64" "0.33.5" + "@img/sharp-linux-s390x" "0.33.5" + "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-linuxmusl-x64" "0.33.5" + "@img/sharp-linuxmusl-arm64" "0.33.5" "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.0.4" "@img/sharp-libvips-linux-arm64" "1.0.4" "@img/sharp-libvips-linux-s390x" "1.0.4" - "@img/sharp-libvips-linux-x64" "1.0.4" - "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-darwin-arm64" "1.0.4" "@img/sharp-libvips-linuxmusl-x64" "1.0.4" - "@img/sharp-linux-arm" "0.33.5" - "@img/sharp-linux-arm64" "0.33.5" - "@img/sharp-linux-s390x" "0.33.5" - "@img/sharp-linux-x64" "0.33.5" - "@img/sharp-linuxmusl-arm64" "0.33.5" - "@img/sharp-linuxmusl-x64" "0.33.5" - "@img/sharp-wasm32" "0.33.5" - "@img/sharp-win32-ia32" "0.33.5" - "@img/sharp-win32-x64" "0.33.5" - dependencies: - color "^4.2.3" - detect-libc "^2.0.3" - semver "^7.6.3" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" shebang-command@^2.0.0: version "2.0.0" @@ -12062,9 +12106,9 @@ simple-git@^3.27.0: resolved "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz" integrity sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA== dependencies: + debug "^4.3.5" "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1" - debug "^4.3.5" simple-swizzle@^0.2.2: version "0.2.2" @@ -12093,13 +12137,13 @@ socket.io@4.8.0: resolved "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz" integrity sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA== dependencies: - accepts "~1.3.4" - base64id "~2.0.0" cors "~2.8.5" debug "~4.3.2" + accepts "~1.3.4" + base64id "~2.0.0" engine.io "~6.6.0" - socket.io-adapter "~2.5.2" socket.io-parser "~4.2.4" + socket.io-adapter "~2.5.2" socket.io-adapter@~2.5.2: version "2.5.5" @@ -12114,28 +12158,28 @@ socket.io-client@4.7.2: resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz" integrity sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w== dependencies: - "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" engine.io-client "~6.5.2" socket.io-parser "~4.2.4" + "@socket.io/component-emitter" "~3.1.0" socket.io-client@4.7.5: version "4.7.5" resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz" integrity sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ== dependencies: - "@socket.io/component-emitter" "~3.1.0" debug "~4.3.2" engine.io-client "~6.5.2" socket.io-parser "~4.2.4" + "@socket.io/component-emitter" "~3.1.0" socket.io-parser@~4.2.4: version "4.2.4" resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz" integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== dependencies: - "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" + "@socket.io/component-emitter" "~3.1.0" socks@^2.8.3: version "2.8.4" @@ -12159,7 +12203,7 @@ solid-floating-ui@^0.3.1: resolved "https://registry.npmjs.org/solid-floating-ui/-/solid-floating-ui-0.3.1.tgz" integrity sha512-o/QmGsWPS2Z3KidAxP0nDvN7alI7Kqy0kU+wd85Fz+au5SYcnYm7I6Fk3M60Za35azsPX0U+5fEtqfOuk6Ao0Q== -solid-js@^1.6.12, solid-js@^1.7.7, solid-js@^1.8, solid-js@^1.8.11: +solid-js@^1.6.12, solid-js@^1.8, solid-js@^1.8.11: version "1.9.4" resolved "https://registry.npmjs.org/solid-js/-/solid-js-1.9.4.tgz" integrity sha512-ipQl8FJ31bFUoBNScDQTG3BjN6+9Rg+Q+f10bUbnO6EOTTf5NGerJeHc7wyu5I4RMHEl/WwZwUmy/PTRgxxZ8g== @@ -12221,14 +12265,14 @@ sshpk@^1.7.0: integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" + jsbn "~0.1.0" + getpass "^0.1.1" dashdash "^1.12.0" ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" tweetnacl "~0.14.0" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + safer-buffer "^2.0.2" sswr@^2.1.0: version "2.1.0" @@ -12259,38 +12303,38 @@ streamx@^2.15.0, streamx@^2.21.0: version "2.22.0" resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz" integrity sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw== - optionalDependencies: - bare-events "^2.2.0" dependencies: fast-fifo "^1.3.2" text-decoder "^1.1.0" + optionalDependencies: + bare-events "^2.2.0" string-width@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: + strip-ansi "^3.0.0" code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3, "string-width@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: + strip-ansi "^6.0.1" emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" strip-ansi "^7.0.1" + emoji-regex "^9.2.2" + eastasianwidth "^0.2.0" string.prototype.trim@^1.2.10: version "1.2.10" @@ -12392,8 +12436,8 @@ stripe@^17.6.0: resolved "https://registry.npmjs.org/stripe/-/stripe-17.6.0.tgz" integrity sha512-+HB6+SManp0gSRB0dlPmXO+io18krlAe0uimXhhIkL/RG/VIRigkfoM3QDJPkqbuSW0XsA6uzsivNCJU1ELEDA== dependencies: - "@types/node" ">=8.1.0" qs "^6.11.0" + "@types/node" ">=8.1.0" strnum@^1.0.5: version "1.0.5" @@ -12459,10 +12503,10 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -"svelte@^3.0.0 || ^4.0.0 || ^5.0.0", "svelte@^4.0.0 || ^5.0.0-next.0": - version "5.20.1" - resolved "https://registry.npmjs.org/svelte/-/svelte-5.20.1.tgz" - integrity sha512-aCARru2WTdzJl55Ws8SK27+kvQwd8tijl4kY7NoDUXUHtTHhxMa8Lf6QNZKmU7cuPu3jjFloDO1j5HgYJNIIWg== +"svelte@^4.0.0 || ^5.0.0-next.0": + version "5.20.2" + resolved "https://registry.npmjs.org/svelte/-/svelte-5.20.2.tgz" + integrity sha512-aYXJreNUiyTob0QOzRZeBXZMGeFZDch6SrSRV8QTncZb6zj0O3BEdUzPpojuHQ1pTvk+KX7I6rZCXPUf8pTPxA== dependencies: "@ampproject/remapping" "^2.3.0" "@jridgewell/sourcemap-codec" "^1.5.0" @@ -12520,33 +12564,33 @@ tailwind-merge@^2.4.0, tailwind-merge@^2.6.0: resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz" integrity sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA== -"tailwindcss@>=3.0.0 || insiders", "tailwindcss@>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1", "tailwindcss@^3.0.0 || ^4.0.0-beta.0", tailwindcss@^3.4.13, tailwindcss@^3.4.17: +"tailwindcss@>=3.0.0 || insiders", "tailwindcss@>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1", tailwindcss@^3.4.13, tailwindcss@^3.4.17: version "3.4.17" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz" integrity sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og== dependencies: - "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" - chokidar "^3.6.0" - didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.3.2" - glob-parent "^6.0.2" - is-glob "^4.0.3" jiti "^1.21.6" + is-glob "^4.0.3" + postcss "^8.4.47" + resolve "^1.22.8" + sucrase "^3.35.0" + chokidar "^3.6.0" + fast-glob "^3.3.2" lilconfig "^3.1.3" + didyoumean "^1.2.2" micromatch "^4.0.8" - normalize-path "^3.0.0" - object-hash "^3.0.0" picocolors "^1.1.1" - postcss "^8.4.47" - postcss-import "^15.1.0" postcss-js "^4.0.1" - postcss-load-config "^4.0.2" + glob-parent "^6.0.2" + object-hash "^3.0.0" + normalize-path "^3.0.0" + postcss-import "^15.1.0" postcss-nested "^6.2.0" + "@alloc/quick-lru" "^5.2.0" + postcss-load-config "^4.0.2" postcss-selector-parser "^6.1.2" - resolve "^1.22.8" - sucrase "^3.35.0" tailwindcss-animate@^1.0.7: version "1.0.7" @@ -12558,20 +12602,20 @@ tar@^2.0.0: resolved "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz" integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== dependencies: - block-stream "*" fstream "^1.0.12" inherits "2" + block-stream "*" tar-fs@^3.0.8: version "3.0.8" resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz" integrity sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg== - optionalDependencies: - bare-fs "^4.0.1" - bare-path "^3.0.0" dependencies: pump "^3.0.0" tar-stream "^3.1.5" + optionalDependencies: + bare-fs "^4.0.1" + bare-path "^3.0.0" tar-stream@^3.1.5: version "3.1.7" @@ -12642,11 +12686,11 @@ tinyexec@^0.3.1: integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA== tinyglobby@^0.2.2: - version "0.2.10" - resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz" - integrity sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew== + version "0.2.11" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.11.tgz" + integrity sha512-32TmKeeKUahv0Go8WmQgiEp9Y21NuxjwjqiRC1nrUB51YacfSwuB44xgXD+HdIppmMRgjQNPdrHyA6vIybYZ+g== dependencies: - fdir "^6.4.2" + fdir "^6.4.3" picomatch "^4.0.2" tinygradient@^1.1.5: @@ -12654,8 +12698,8 @@ tinygradient@^1.1.5: resolved "https://registry.npmjs.org/tinygradient/-/tinygradient-1.1.5.tgz" integrity sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw== dependencies: - "@types/tinycolor2" "^1.4.0" tinycolor2 "^1.0.0" + "@types/tinycolor2" "^1.4.0" tippy.js@^6.3.7: version "6.3.7" @@ -12848,8 +12892,8 @@ type-is@~1.6.18: resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: - media-typer "0.3.0" mime-types "~2.1.24" + media-typer "0.3.0" typed-array-buffer@^1.0.3: version "1.0.3" @@ -12908,7 +12952,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@*, typescript@5.7.3, typescript@>=5.0.0, typescript@>=5.1.0, typescript@>=5.7.2, typescript@^5.0.0, typescript@^5.5.4, typescript@^5.6.3, typescript@^5.7.2, typescript@^5.7.3: +typescript@5.7.3, typescript@>=5.7.2, typescript@^5.5.4, typescript@^5.6.3, typescript@^5.7.2, typescript@^5.7.3: version "5.7.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz" integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== @@ -13035,14 +13079,14 @@ update-browserslist-db@^1.1.1: picocolors "^1.1.1" uploadthing@^7.2.0, uploadthing@^7.5.0: - version "7.5.1" - resolved "https://registry.npmjs.org/uploadthing/-/uploadthing-7.5.1.tgz" - integrity sha512-p5VxxT4i7LYLiKE+FgtMnIztvDfgZ1IptY62PF2YpgvxFccIbX/OXx8OcW/psjKCmPC7PXEt3e9d+bduYJOmDw== + version "7.5.2" + resolved "https://registry.npmjs.org/uploadthing/-/uploadthing-7.5.2.tgz" + integrity sha512-hrvsVXgu6cYYJW97UuFLd3U2+TrPGyMBtPYSkqSTVq45Orkq9qFk095qkXYIW4EA/DyvCo78VV25HfSXT3EH7w== dependencies: "@effect/platform" "0.72.0" "@standard-schema/spec" "1.0.0-beta.4" "@uploadthing/mime-types" "0.3.4" - "@uploadthing/shared" "7.1.6" + "@uploadthing/shared" "7.1.7" effect "3.12.0" uri-js@^4.2.2: @@ -13069,13 +13113,13 @@ use-debounce@^10.0.4: resolved "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.4.tgz" integrity sha512-6Cf7Yr7Wk7Kdv77nnJMf6de4HuDE4dTxKij+RqE9rufDsI6zsbjyAxcH5y2ueJCQAnfgKbzXbZHYlkFwmBlWkw== -use-intl@^3.26.3: - version "3.26.3" - resolved "https://registry.npmjs.org/use-intl/-/use-intl-3.26.3.tgz" - integrity sha512-yY0a2YseO17cKwHA9M6fcpiEJ2Uo81DEU0NOUxNTp6lJVNOuI6nULANPVVht6IFdrYFtlsMmMoc97+Eq9/Tnng== +use-intl@^3.26.4: + version "3.26.4" + resolved "https://registry.npmjs.org/use-intl/-/use-intl-3.26.4.tgz" + integrity sha512-5DhN+YfsocNO7LiLpns7/pxRcMHA4DgBZQo5Z6uw3LvX9XIZyPAdRBdFPE2eBKTAwhY77k5eBhxqDtx8wzUaBg== dependencies: - "@formatjs/fast-memoize" "^2.2.0" intl-messageformat "^10.5.14" + "@formatjs/fast-memoize" "^2.2.0" use-isomorphic-layout-effect@^1.1.1: version "1.2.0" @@ -13102,7 +13146,7 @@ use-sidecar@^1.1.2, use-sidecar@^1.1.3: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@>=1.2.0, use-sync-external-store@^1, use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: +use-sync-external-store@^1, use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz" integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== @@ -13161,9 +13205,9 @@ verror@1.10.0: resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: + extsprintf "^1.2.0" assert-plus "^1.0.0" core-util-is "1.0.2" - extsprintf "^1.2.0" vfile@^6.0.0: version "6.0.3" @@ -13186,31 +13230,31 @@ victory-vendor@^36.6.8: resolved "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz" integrity sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ== dependencies: - "@types/d3-array" "^3.0.3" - "@types/d3-ease" "^3.0.0" - "@types/d3-interpolate" "^3.0.1" - "@types/d3-scale" "^4.0.2" - "@types/d3-shape" "^3.1.0" - "@types/d3-time" "^3.0.0" - "@types/d3-timer" "^3.0.0" - d3-array "^3.1.6" d3-ease "^3.0.1" - d3-interpolate "^3.0.1" + d3-time "^3.0.0" + d3-array "^3.1.6" d3-scale "^4.0.2" d3-shape "^3.1.0" - d3-time "^3.0.0" d3-timer "^3.0.1" + "@types/d3-ease" "^3.0.0" + "@types/d3-time" "^3.0.0" + d3-interpolate "^3.0.1" + "@types/d3-array" "^3.0.3" + "@types/d3-scale" "^4.0.2" + "@types/d3-shape" "^3.1.0" + "@types/d3-timer" "^3.0.0" + "@types/d3-interpolate" "^3.0.1" -vue@3.5.13, "vue@>=3.2.26 < 4", vue@^3.3.4: +vue@3.5.13, "vue@>=3.2.26 < 4": version "3.5.13" resolved "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz" integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ== dependencies: + "@vue/shared" "3.5.13" + "@vue/runtime-dom" "3.5.13" "@vue/compiler-dom" "3.5.13" "@vue/compiler-sfc" "3.5.13" - "@vue/runtime-dom" "3.5.13" "@vue/server-renderer" "3.5.13" - "@vue/shared" "3.5.13" w3c-keyname@^2.2.0: version "2.2.8" @@ -13235,7 +13279,7 @@ wcwidth@^1.0.1: version "workspace:apps/web" resolved "workspace:apps/web" devDependencies: - "@bubba/analytics" "workspace:*" + "@bubba/analytics" "packages/analytics" "@trigger.dev/build" "^3.3.15" "@types/node" "^22.13.2" "@types/react" "^19.0.8" @@ -13451,8 +13495,8 @@ write-file-atomic@^3.0.0: integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" signal-exit "^3.0.2" + is-typedarray "^1.0.0" typedarray-to-buffer "^3.1.5" ws@^7.5.3: @@ -13542,13 +13586,13 @@ yargs@^17.7.2: resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: + y18n "^5.0.5" cliui "^8.0.1" escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" string-width "^4.2.3" - y18n "^5.0.5" yargs-parser "^21.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" yargs-parser@^21.1.1: version "21.1.1" @@ -13565,8 +13609,8 @@ yauzl@^2.10.0: resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== dependencies: - buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" + buffer-crc32 "~0.2.3" zimmerframe@^1.1.2: version "1.1.2"