diff --git a/assets/scss/theme.scss b/assets/scss/theme.scss index 5f0a14f..ae0a9d4 100644 --- a/assets/scss/theme.scss +++ b/assets/scss/theme.scss @@ -4,6 +4,8 @@ $border-radius: 0.15rem; $card-height: 100%; $primary: #32006e; +$primary-hover: #421178; +$primary-soft: #f1eeff; $secondary: #5f647a; $btn-font-weight: 600; @@ -22,8 +24,36 @@ $tdei-cyan: #59c3c8; $purple-background-light: #f4f0fb; $purple-background-dark: #ddd2ee; $purple-background-medium: #ebe4f6; -$text-navy: #1A1E3D; -$text-secondary: #5A607B; +$text-navy: #1a1e3d; +$text-secondary: #5a607b; +$text-disabled: #8a91ab; +$surface-card: #ffffff; +$surface-subtle: #fbfcff; +$border-card: #e5e7f0; +$border-subtle: #dfe2ef; +$progress-border: #d9ddf0; +$progress-track: #ebedf6; +$progress-fill: #4e5fe0; +$link-text: #5578d9; +$hero-gradient-start: #eeeaff; +$hero-gradient-end: #f9f4ff; +$header-shadow: 0 0.1875rem 0.375rem rgba($black, 0.16); +$status-warning-text: #8a6300; +$status-warning-surface: #fffaf0; +$status-warning-border: #ead9ad; +$task-ready-mapping: #fde9aa; +$task-ready-validation: #a8d8f8; +$task-remap: #f8be90; +$task-completed: #aae8cd; +$status-completed-surface: #f6fcfa; +$status-completed-border: #d4e4dd; +$status-completed-text: #067a57; +$status-in-progress-surface: #f4fbff; +$status-in-progress-border: #c8e0ee; +$status-in-progress-text: #1a74a8; +$status-draft-surface: #fffcf5; +$status-draft-border: #e9e1d3; +$status-draft-text: #8f6c1a; $dropdown-active-bg: #e2f0f8; $danger-red: #c7393a; diff --git a/components/AppPage.vue b/components/AppPage.vue index 6aa4a25..5c93e6c 100644 --- a/components/AppPage.vue +++ b/components/AppPage.vue @@ -5,15 +5,20 @@ + + diff --git a/components/project-wizard/RichTextEditor.vue b/components/project-wizard/RichTextEditor.vue index 8e3b9eb..ddaee89 100644 --- a/components/project-wizard/RichTextEditor.vue +++ b/components/project-wizard/RichTextEditor.vue @@ -9,7 +9,7 @@ v-for="tool in tools" :key="tool.id" class="btn btn-link project-wizard-rich-text-editor-tool" - :class="{ 'project-wizard-rich-text-editor-tool-active': isToolActive(tool.id) }" + :class="{ 'project-wizard-rich-text-editor-tool-active': tool.active }" type="button" :aria-label="tool.label" @mousedown.prevent @@ -31,9 +31,9 @@ @@ -136,7 +148,7 @@ function formatRole(role: WorkspaceRole) { .project-wizard-review-group { display: grid; - gap: 25px; + gap: 1.5625rem; } .project-wizard-review-item { @@ -159,7 +171,7 @@ function formatRole(role: WorkspaceRole) { .project-wizard-review-item p { margin: 0; text-align: left; - font-family: Lato, var(--primary-font-family), sans-serif; + font-family: var(--primary-font-family); font-size: 1rem; font-style: normal; font-weight: 400; @@ -174,13 +186,13 @@ function formatRole(role: WorkspaceRole) { align-items: center; gap: 0.35rem; text-align: left; - font-family: Lato, var(--primary-font-family), sans-serif; + font-family: var(--primary-font-family); font-size: 1.125rem; font-style: normal; font-weight: 400; line-height: 1.625rem; letter-spacing: 0; - color: #5a607b; + color: $text-secondary; opacity: 1; } @@ -198,8 +210,8 @@ function formatRole(role: WorkspaceRole) { align-items: center; flex-wrap: wrap; gap: 0.55rem; - color: #5a607b; - font-family: Lato, var(--primary-font-family), sans-serif; + color: $text-secondary; + font-family: var(--primary-font-family); font-size: 1.125rem; font-style: normal; font-weight: 400; diff --git a/components/project-wizard/steps/SettingsStep.vue b/components/project-wizard/steps/SettingsStep.vue index 2fd21ab..00f976c 100644 --- a/components/project-wizard/steps/SettingsStep.vue +++ b/components/project-wizard/steps/SettingsStep.vue @@ -9,7 +9,7 @@

Lock Timeout

-

Project will be locked for specific hours

+

Unlock tasks after the specified number of hours pass

@@ -25,10 +25,10 @@ > hours @@ -81,8 +81,7 @@ @@ -107,7 +106,7 @@ interface Props { workspaceUsersLoading: boolean; } -defineProps(); +const props = defineProps(); const emit = defineEmits<{ 'add:validator': [user: ProjectWizardWorkspaceUser]; 'remove:validator': [userId: string]; @@ -119,7 +118,18 @@ const emit = defineEmits<{ }>(); const lockTimeoutId = 'project-wizard-settings-lock-timeout'; -const hourOptions = Array.from({ length: 24 }, (_, index) => index + 1); +const hourOptions = Array.from({ length: 24 }, (_, index) => { + const value = index + 1; + + return { + label: String(value).padStart(2, '0'), + value + }; +}); +const instructionsModel = computed({ + get: () => props.instructions, + set: value => emit('update:instructions', value) +}); function onLockTimeoutChange(event: Event) { emit('update:lock-timeout-hours', Number((event.target as HTMLSelectElement).value)); @@ -135,7 +145,7 @@ function onReviewRequiredChange(event: Event) { .project-wizard-step-settings { display: grid; - gap: 30px; + gap: 1.875rem; } .project-wizard-step-header, diff --git a/components/task-editor/MappingPanel.vue b/components/task-editor/MappingPanel.vue new file mode 100644 index 0000000..4c46323 --- /dev/null +++ b/components/task-editor/MappingPanel.vue @@ -0,0 +1,36 @@ + + + diff --git a/components/task-editor/ReviewPanel.vue b/components/task-editor/ReviewPanel.vue new file mode 100644 index 0000000..7a8ee27 --- /dev/null +++ b/components/task-editor/ReviewPanel.vue @@ -0,0 +1,213 @@ +