This is an automated email from the ASF dual-hosted git repository.

lahirujayathilake pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airavata-portals.git


The following commit(s) were added to refs/heads/main by this push:
     new f2b9d014b add events page for allen workshop (#29)
f2b9d014b is described below

commit f2b9d014b80ebe3d30d7d6728801198dfa40a0eb
Author: Ganning Xu <[email protected]>
AuthorDate: Fri Jul 25 13:54:59 2025 -0700

    add events page for allen workshop (#29)
    
    * add events page for allen workshop
    
    * update instructions
---
 .../src/components/events/Jul28AllenWorkshop.tsx   | 28 ++++++++++++
 .../src/components/events/index.tsx                | 50 +++++++++++----------
 .../src/components/typography/KeyPair.tsx          | 51 +++++++++++-----------
 3 files changed, 82 insertions(+), 47 deletions(-)

diff --git 
a/airavata-research-portal/src/components/events/Jul28AllenWorkshop.tsx 
b/airavata-research-portal/src/components/events/Jul28AllenWorkshop.tsx
new file mode 100644
index 000000000..05c52f75a
--- /dev/null
+++ b/airavata-research-portal/src/components/events/Jul28AllenWorkshop.tsx
@@ -0,0 +1,28 @@
+import {Heading, VStack} from "@chakra-ui/react";
+import {KeyPair} from "../typography/KeyPair";
+
+export const Jul28AllenWorkshop = () => {
+  return (
+      <>
+        <Heading fontSize="3xl" lineHeight={1.2}>
+          2025 Allen Institute Modeling Software Workshop (July 28-30, 2025)
+        </Heading>
+        <VStack gap={1} align="start" mt={2}>
+          <KeyPair
+              keyStr="Workshop Details"
+              
valueStr="https://alleninstitute.org/events/2025-modeling-software-workshop";
+          />
+          <KeyPair
+              keyStr="User Instructions"
+              valueStr="Cybershuttle Instructions for Allen Workshop.pdf"
+              
href="https://drive.google.com/file/d/1kwf6TwAysGFl55svrsI-NPOoX_hBHaQJ/view?usp=sharing";
+          />
+          <KeyPair
+              keyStr="FAQ"
+              valueStr="Common Cybershuttle FAQ.pdf"
+              
href="https://drive.google.com/file/d/119Xhc9_yvm20DKulaFEU6k8PNwnWcPow/view?usp=sharing";
+          />
+        </VStack>
+      </>
+  );
+};
diff --git a/airavata-research-portal/src/components/events/index.tsx 
b/airavata-research-portal/src/components/events/index.tsx
index 728c2f916..bc1973afc 100644
--- a/airavata-research-portal/src/components/events/index.tsx
+++ b/airavata-research-portal/src/components/events/index.tsx
@@ -1,32 +1,38 @@
-import { Container, Accordion, Spacer, Span } from "@chakra-ui/react";
-import { Apr11Workshop } from "./Apr11Workshop";
-import { May7Workshop } from "./May7Workshop";
+import {Accordion, Container, Spacer, Span} from "@chakra-ui/react";
+import {Apr11Workshop} from "./Apr11Workshop";
+import {May7Workshop} from "./May7Workshop";
+import {Jul28AllenWorkshop} from "@/components/events/Jul28AllenWorkshop.tsx";
 
 export const Events = () => {
   return (
-    <Container maxW="breakpoint-lg" my={8}>
-      <Accordion.Root multiple defaultValue={["May 7, 2025"]}>
-        {events.map((event) => (
-          <Accordion.Item key={event.id} value={event.id} mb={8}>
-            <Accordion.ItemTrigger>
-              {event.name} <Spacer />
-              <Span color="gray.400" fontSize="sm">
-                {event.id}
-              </Span>
-              <Accordion.ItemIndicator />
-            </Accordion.ItemTrigger>
+      <Container maxW="breakpoint-lg" my={8}>
+        <Accordion.Root multiple defaultValue={[events[0].id]}>
+          {events.map((event) => (
+              <Accordion.Item key={event.id} value={event.id} mb={8}>
+                <Accordion.ItemTrigger>
+                  {event.name} <Spacer/>
+                  <Span color="gray.400" fontSize="sm">
+                    {event.id}
+                  </Span>
+                  <Accordion.ItemIndicator/>
+                </Accordion.ItemTrigger>
 
-            <Accordion.ItemContent>
-              <Accordion.ItemBody>{event.component()}</Accordion.ItemBody>
-            </Accordion.ItemContent>
-          </Accordion.Item>
-        ))}
-      </Accordion.Root>
-    </Container>
+                <Accordion.ItemContent>
+                  <Accordion.ItemBody>{event.component()}</Accordion.ItemBody>
+                </Accordion.ItemContent>
+              </Accordion.Item>
+          ))}
+        </Accordion.Root>
+      </Container>
   );
 };
 
 const events = [
+  {
+    id: "July 28-30, 2025",
+    name: "2025 Allen Institute Modeling Software Workshop (28-30 July 2025)",
+    component: Jul28AllenWorkshop
+  },
   {
     id: "May 7, 2025",
     name: "Cyberinfrastructure and Services for Science & Engineering 
Workshop",
@@ -36,5 +42,5 @@ const events = [
     id: "April 11, 2025",
     name: "Data-Driven and Large-Scale Modeling in Neuroscience",
     component: Apr11Workshop,
-  },
+  }
 ];
diff --git a/airavata-research-portal/src/components/typography/KeyPair.tsx 
b/airavata-research-portal/src/components/typography/KeyPair.tsx
index 5bab6ab0e..e365b53df 100644
--- a/airavata-research-portal/src/components/typography/KeyPair.tsx
+++ b/airavata-research-portal/src/components/typography/KeyPair.tsx
@@ -1,34 +1,35 @@
-import { Text } from "@chakra-ui/react";
-import { Link } from "@chakra-ui/react";
+import {Link, Text} from "@chakra-ui/react";
 
 export const KeyPair = ({
-  keyStr,
-  valueStr,
-}: {
+                          keyStr,
+                          valueStr,
+                          href
+                        }: {
   keyStr: string;
   valueStr: string;
+  href?: string;
 }) => {
-  const isLink = valueStr.startsWith("http");
+  const isLink = valueStr.startsWith("http") || (href != null);
   return (
-    <Text>
-      <Text as="span" fontWeight="bold">
-        {keyStr}:{" "}
-      </Text>
-
-      {isLink ? (
-        <Link
-          href={valueStr}
-          target="_blank"
-          color="blue.600"
-          fontWeight="normal"
-        >
-          {valueStr}
-        </Link>
-      ) : (
-        <Text as="span" fontWeight="normal">
-          {valueStr}
+      <Text>
+        <Text as="span" fontWeight="bold">
+          {keyStr}:{" "}
         </Text>
-      )}
-    </Text>
+
+        {isLink ? (
+            <Link
+                href={href}
+                target="_blank"
+                color="blue.600"
+                fontWeight="normal"
+            >
+              {valueStr}
+            </Link>
+        ) : (
+            <Text as="span" fontWeight="normal">
+              {valueStr}
+            </Text>
+        )}
+      </Text>
   );
 };

Reply via email to