frontend: add community

Change-Id: I929c21d82ddab39d8b210b229ff7559320c1d853
diff --git "a/src/app/community/community-detail/\133communityId\135/resource-community.scss" "b/src/app/community/community-detail/\133communityId\135/resource-community.scss"
new file mode 100644
index 0000000..a40ebaa
--- /dev/null
+++ "b/src/app/community/community-detail/\133communityId\135/resource-community.scss"
@@ -0,0 +1,243 @@
+@import '../../../globals.scss';
+
+.resource-community {
+  padding: 2rem;
+  position: relative;
+  max-width: 1200px;
+  margin: 0 auto;
+  padding: 0 2rem;
+
+  .community-header {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    margin-bottom: 2rem;
+
+    .title-section {
+      display: flex;
+      flex-direction: column;
+      gap: 24px;
+      align-items: flex-start;
+
+      h1 {
+        font-size: 3rem;
+        margin: 0;
+        margin-top: 32px;
+      }
+
+      .subtitle {
+        margin: 0;
+        color: #718096;
+        font-size: 1rem;
+      }
+
+      .stars {
+        font-size: 1.2rem;
+      }
+
+      .community-states {
+        display: flex;
+        gap: 2rem;
+        align-items: center;
+
+        .state-item {
+          display: flex;
+          align-items: center;
+          gap: 0.5rem;
+          color: #666;
+
+          span {
+            font-size: 0.9rem;
+          }
+        }
+      }
+    }
+
+    .input {
+      display: flex;
+      flex-direction: column;
+      justify-content: flex-end;
+      align-items: flex-end;
+
+      .p-button {
+        width: 100px;
+
+        padding: 0;
+        margin-top: 10px;
+      }
+    }
+    .p-dropdown-item p-focus{
+      background-color: rgba(182, 238, 235, 0.4) !important;
+    }
+    .p-dropdown-item p-highlight p-focus {
+      background-color: rgba(182, 238, 235, 0.4) !important;
+    }
+    .action-section {
+      display: flex;
+      align-items: center;
+
+      .communities-searchBar {
+        max-width: 100%;
+        position: relative;
+
+        .pi-search {
+          position: absolute;
+          left: 1rem;
+          top: 50%;
+          transform: translateY(-50%);
+          z-index: 1;
+        }
+
+        .search-helper {
+          width: 100%;
+          height: 3rem;
+          padding-left: 2.5rem;
+          border-radius: 10px 0px 0px 10px;
+          font-size: 1.1rem;
+          border: 1px solid #ddd;
+        }
+      }
+
+      .select-dropdown {
+        width: 100px;
+        height: 48px;
+        border-radius: 0px 10px 10px 0px;
+
+        .p-dropdown-items {
+          max-height: 20px;
+        }
+      }
+    }
+  }
+
+  .thread-list {
+    display: flex;
+    gap: 1rem;
+    flex-direction: column;
+
+    .resource-grid {
+      display: grid;
+      grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+      gap: 1rem;
+
+      .resource-card {
+        transition: transform 0.2s ease;
+        cursor: pointer;
+        box-shadow: none !important;
+
+        .p-image {
+          img {
+            border-radius: 0.5rem 0.5rem 0 0;
+            object-fit: cover;
+          }
+        }
+
+        .p-card-body {
+          padding: 0;
+        }
+
+        .p-card-content {
+          padding: 0;
+        }
+
+        &:hover {
+          transform: translateY(-4px);
+        }
+
+        .card-content {
+          display: flex;
+          flex-direction: column;
+          position: relative;
+          margin-left: 16px;
+          margin-right: 16px;
+          margin-bottom: 16px;
+
+          h3 {
+            margin: 1rem 0;
+            font-size: 1rem;
+            line-height: 1.5;
+            color: #2d3748;
+          }
+
+          .view-count {
+            position: absolute;
+            bottom: 0rem;
+            right: 0rem;
+            display: flex;
+            align-items: center;
+            gap: 0.5rem;
+            color: #718096;
+            font-size: 0.9rem;
+          }
+        }
+      }
+    }
+  }
+
+  .add-resource-button {
+    position: fixed;
+    bottom: 2rem;
+    right: 2rem;
+    width: 56px;
+    height: 56px;
+
+    .pi-plus {
+      font-size: 1.5rem;
+    }
+  }
+}
+
+// ========== 弹窗发布样式 ==========
+
+.publish-dialog {
+  width: 600px !important;
+  max-width: 90vw;
+
+  .p-dialog-header {
+    font-size: 1.5rem;
+    font-weight: bold;
+    color: $heading-color;
+    padding-bottom: 0.5rem;
+  }
+
+  .p-dialog-content {
+    padding-top: 0;
+    padding-bottom: 0;
+
+    .publish-form {
+      display: flex;
+      flex-direction: column;
+      gap: 1.5rem;
+      margin-top: 1rem;
+
+      .form-field {
+        display: flex;
+        flex-direction: column;
+        gap: 0.5rem;
+
+        label {
+          font-weight: 600;
+          color: $heading-color;
+        }
+
+        input,
+        textarea {
+          padding: 0.75rem 1rem;
+          border-radius: 8px;
+          font-size: 1rem;
+          color: #2d3748;
+        }
+
+
+        .p-fileupload {
+          .p-button {
+            width: 100%;
+            justify-content: center;
+            border: none;
+            margin-bottom: 1rem;
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file