|
@@ -0,0 +1,827 @@
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.chat-view {
|
|
|
+ display: flex;
|
|
|
+ height: 100vh;
|
|
|
+ background-color: grey;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar {
|
|
|
+ width: 250px;
|
|
|
+ background-color: #08002E;
|
|
|
+ color: white;
|
|
|
+ padding: 20px;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .title {
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item {
|
|
|
+ cursor: pointer;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ transition: background-color 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item:hover {
|
|
|
+ background-color: #1f1f1f;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new {
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button {
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content {
|
|
|
+ flex-grow: 1;
|
|
|
+ padding: 20px;
|
|
|
+ background-color: #f0f0f0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .greeting {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label {
|
|
|
+ display: inline-block;
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list {
|
|
|
+ list-style-type: none;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li {
|
|
|
+ background-color: white;
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ transition: box-shadow 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li:hover {
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .filename {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button {
|
|
|
+ background-color: #ff4d4d;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 5px 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button:hover {
|
|
|
+ background-color: #d42f2f;
|
|
|
+}
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.chat-view {
|
|
|
+ display: flex;
|
|
|
+ height: 100vh;
|
|
|
+ background-color: grey;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar {
|
|
|
+ width: 250px;
|
|
|
+ background-color: #08002E;
|
|
|
+ color: white;
|
|
|
+ padding: 20px;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .title {
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item {
|
|
|
+ cursor: pointer;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ transition: background-color 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item:hover {
|
|
|
+ background-color: #1f1f1f;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new {
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button {
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content {
|
|
|
+ flex-grow: 1;
|
|
|
+ padding: 20px;
|
|
|
+ background-color: #f0f0f0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .greeting {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label {
|
|
|
+ display: inline-block;
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list {
|
|
|
+ list-style-type: none;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li {
|
|
|
+ background-color: white;
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ transition: box-shadow 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li:hover {
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .filename {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button {
|
|
|
+ background-color: #ff4d4d;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 5px 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button:hover {
|
|
|
+ background-color: #d42f2f;
|
|
|
+}
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.chat-view {
|
|
|
+ display: flex;
|
|
|
+ height: 100vh;
|
|
|
+ background-color: grey;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar {
|
|
|
+ width: 250px;
|
|
|
+ background-color: #08002E;
|
|
|
+ color: white;
|
|
|
+ padding: 20px;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .title {
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item {
|
|
|
+ cursor: pointer;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ transition: background-color 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item:hover {
|
|
|
+ background-color: #1f1f1f;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new {
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button {
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content {
|
|
|
+ flex-grow: 1;
|
|
|
+ padding: 20px;
|
|
|
+ background-color: #f0f0f0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .greeting {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label {
|
|
|
+ display: inline-block;
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list {
|
|
|
+ list-style-type: none;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li {
|
|
|
+ background-color: white;
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ transition: box-shadow 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li:hover {
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .filename {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button {
|
|
|
+ background-color: #ff4d4d;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 5px 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button:hover {
|
|
|
+ background-color: #d42f2f;
|
|
|
+}
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.chat-view {
|
|
|
+ display: flex;
|
|
|
+ height: 100vh;
|
|
|
+ background-color: grey;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar {
|
|
|
+ width: 250px;
|
|
|
+ background-color: #08002E;
|
|
|
+ color: white;
|
|
|
+ padding: 20px;
|
|
|
+ overflow-y: auto;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .title {
|
|
|
+ font-weight: bold;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item {
|
|
|
+ cursor: pointer;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ transition: background-color 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .item:hover {
|
|
|
+ background-color: #1f1f1f;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new {
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button {
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.sidebar .add-new button:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content {
|
|
|
+ flex-grow: 1;
|
|
|
+ padding: 20px;
|
|
|
+ background-color: #f0f0f0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .greeting {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area {
|
|
|
+ margin-bottom: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label {
|
|
|
+ display: inline-block;
|
|
|
+ background-color: #007bff;
|
|
|
+ color: white;
|
|
|
+ padding: 10px 20px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .upload-area label:hover {
|
|
|
+ background-color: #0056b3;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list {
|
|
|
+ list-style-type: none;
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li {
|
|
|
+ background-color: white;
|
|
|
+ border: 1px solid #ddd;
|
|
|
+ padding: 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ transition: box-shadow 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li:hover {
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .filename {
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button {
|
|
|
+ background-color: #ff4d4d;
|
|
|
+ color: white;
|
|
|
+ border: none;
|
|
|
+ padding: 5px 10px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.main-content .document-list li .actions .delete-button:hover {
|
|
|
+ background-color: #d42f2f;
|
|
|
+}
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+<template>
|
|
|
+ <div class="chat-view">
|
|
|
+ <Sidebar :fixedRequirements="fixedRequirements" :addNewRequirement="addNewRequirement" @requirementSelected="handleRequirementSelected"></Sidebar>
|
|
|
+ <MainContent :documents="documents" :selectedRequirement="selectedRequirement" @documentUploaded="handleDocumentUploaded"></MainContent>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import Sidebar from './Sidebar.vue';
|
|
|
+import MainContent from './MainContent.vue';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ Sidebar,
|
|
|
+ MainContent,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ fixedRequirements: [
|
|
|
+ // Fixed requirement items
|
|
|
+ ],
|
|
|
+ documents: [],
|
|
|
+ selectedRequirement: null,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addNewRequirement() {
|
|
|
+ // Logic for adding a new requirement
|
|
|
+ },
|
|
|
+ handleRequirementSelected(requirement) {
|
|
|
+ this.selectedRequirement = requirement;
|
|
|
+ },
|
|
|
+ handleDocumentUploaded(document) {
|
|
|
+ this.documents.push(document);
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+.chat-view {
|
|
|
+ display: flex;
|
|
|
+ height: 100vh;
|
|
|
+}
|
|
|
+
|
|
|
+/* Styles for Sidebar and MainContent will be added based on the design */
|
|
|
+</style>
|
|
|
+</template>
|