Skip to content

Commit 4fa3162

Browse files
authored
feat(ui): better styling and guidance for custom library (#3440)
* feat(ui): better styling and guidance for custom library * fix typo * fix typo
1 parent 9bac303 commit 4fa3162

3 files changed

Lines changed: 40 additions & 8 deletions

File tree

frontend/messages/en.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,8 +526,10 @@
526526
"evidencesBiaHelpText": "Evidences specific to resiliency implementation or testing",
527527
"scopedAsset": "Usually a primary asset / business process to focus on for this entry",
528528
"copyright": "Copyright",
529+
"customExternalLibrary": "Custom/external library",
529530
"addYourLibrary": "Add your own library",
530-
"libraryFileInYamlOrXlsx": "Library file in .yaml or .xlsx format",
531+
"libraryFileInYamlOrXlsx": "Supported formats: .yaml or .xlsx",
532+
"libraryAddHelpText": "You can import your library defined in CISO Assistant format or external ones like CIS or CCM. Libraries can be directly imported as Excel file or converted using the external toolbox.",
531533
"importBackup": "Import backup",
532534
"exportBackup": "Export backup",
533535
"confirmImportBackup": "Are you sure you want to import this backup? This will overwrite all existing data inlcuding your actual credentials.",

frontend/messages/fr.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,8 +483,10 @@
483483
"evidencesBiaHelpText": "Des preuves liées à l'implémentation ou les tests de résilience",
484484
"scopedAsset": "Typiquement un actif primaire / fonction métier qui sera le focus de cette entrée",
485485
"copyright": "Copyright",
486+
"customExternalLibrary": "Bibliothèque personnalisée/externe",
486487
"addYourLibrary": "Ajouter votre propre bibliothèque",
487-
"libraryFileInYamlOrXlsx": "Fichier de librairie en format YAML ou XLSX",
488+
"libraryFileInYamlOrXlsx": "Formats supportés : .yaml ou .xlsx",
489+
"libraryAddHelpText": "Vous pouvez importer vos bibliothèques définies dans le format CISO Assistant ou d'autres externes comme le CIS ou CCM. Les bibliothèques peuvent être en format Excel ou converties avec la boîte à outils externe.",
488490
"importBackup": "Importer une sauvegarde",
489491
"exportBackup": "Exporter une sauvegarde",
490492
"confirmImportBackup": "Êtes-vous sûr de vouloir importer cette sauvegarde ? Cela écrasera toutes les données existantes avec tous les utilisateurs et leur mot de passe",

frontend/src/lib/components/Modals/UploadLibraryModal.svelte

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,44 @@
88
import { superValidate } from 'sveltekit-superforms';
99
import { zod } from 'sveltekit-superforms/adapters';
1010
import { tableHandlers } from '$lib/utils/stores';
11+
import { getModalStore } from './stores';
12+
13+
const modalStore = getModalStore();
1114
1215
let fileResetSignal = $state(false);
1316
1417
let { parent } = $props();
1518
</script>
1619

1720
{#if page.data.user.is_admin}
18-
<div class="card bg-white p-4 mt-4 shadow-sm">
21+
<div class="card bg-white p-6 w-full max-w-lg shadow-xl space-y-4 rounded-xl">
22+
<div class="flex items-center justify-between">
23+
<header class="flex items-center gap-3">
24+
<div
25+
class="flex items-center justify-center w-10 h-10 rounded-lg bg-primary-100 text-primary-600"
26+
>
27+
<i class="fa-solid fa-file-circle-plus text-lg"></i>
28+
</div>
29+
<h3 class="text-xl font-bold text-gray-800">
30+
{m.customExternalLibrary()}
31+
</h3>
32+
</header>
33+
<button
34+
type="button"
35+
class="flex items-center justify-center w-8 h-8 rounded-md text-gray-400 hover:text-gray-600 hover:bg-gray-100 transition-colors"
36+
onclick={parent.onClose}
37+
aria-label="Close"
38+
>
39+
<i class="fa-solid fa-xmark"></i>
40+
</button>
41+
</div>
42+
<p class="text-sm text-gray-500">{m.libraryAddHelpText()}</p>
43+
<hr class="border-gray-200" />
1944
{#await superValidate(zod(LibraryUploadSchema))}
20-
<h1>{m.loadingLibraryUploadButton()}...</h1>
45+
<p class="text-gray-500">{m.loadingLibraryUploadButton()}...</p>
2146
{:then form}
2247
<SuperForm
23-
class="flex flex-col space-y-3"
48+
class="flex flex-col space-y-4"
2449
dataType="form"
2550
enctype="multipart/form-data"
2651
data={form}
@@ -51,14 +76,17 @@
5176
allowedExtensions={['yaml', 'yml', 'xlsx']}
5277
/>
5378
<button
54-
class="btn preset-filled-primary-500 font-semibold w-full"
79+
class="btn preset-filled-primary-500 font-semibold w-full rounded-lg py-2.5"
5580
data-testid="save-button"
56-
type="submit">{m.add()}</button
81+
type="submit"
5782
>
83+
<i class="fa-solid fa-upload mr-2"></i>
84+
{m.add()}
85+
</button>
5886
{/snippet}
5987
</SuperForm>
6088
{:catch err}
61-
<h1>{m.errorOccurredWhileLoadingLibrary()}: {err}</h1>
89+
<p class="text-red-600">{m.errorOccurredWhileLoadingLibrary()}: {err}</p>
6290
{/await}
6391
</div>
6492
{/if}

0 commit comments

Comments
 (0)