diff --git a/packages/vue-component-library/package.json b/packages/vue-component-library/package.json
index 33c413781..342ac3a6b 100644
--- a/packages/vue-component-library/package.json
+++ b/packages/vue-component-library/package.json
@@ -107,4 +107,4 @@
"engines": {
"pnpm": "^9.12.1"
}
-}
+}
\ No newline at end of file
diff --git a/packages/vue-component-library/src/lib-components/EffectSlideToggle.vue b/packages/vue-component-library/src/lib-components/EffectSlideToggle.vue
new file mode 100644
index 000000000..c619b63a4
--- /dev/null
+++ b/packages/vue-component-library/src/lib-components/EffectSlideToggle.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/vue-component-library/src/lib-components/ExcerptPod.vue b/packages/vue-component-library/src/lib-components/ExcerptPod.vue
new file mode 100644
index 000000000..1134e0442
--- /dev/null
+++ b/packages/vue-component-library/src/lib-components/ExcerptPod.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/vue-component-library/src/stories/ExcerptPod.spec.js b/packages/vue-component-library/src/stories/ExcerptPod.spec.js
new file mode 100644
index 000000000..acc284149
--- /dev/null
+++ b/packages/vue-component-library/src/stories/ExcerptPod.spec.js
@@ -0,0 +1,20 @@
+describe('Funkhaus / ExcerptPod', () => {
+ it('Default', () => {
+ cy.visit(
+ '/iframe.html?id=funkhaus-excerptpod--default&args=&viewMode=story'
+ )
+ cy.get('.excerpt-pod').should('exist')
+ cy.get('.excerpt-pod .title').should('exist')
+ cy.get('.excerpt-pod .subtitle').should('exist')
+ cy.get('.excerpt-pod .text').should('exist')
+ cy.percySnapshot('Funkhaus / ExcerptPod: Default')
+ })
+
+ it('Renders NotesAccordion when accordions are present', () => {
+ cy.visit(
+ '/iframe.html?id=funkhaus-excerptpod--more-sections&args=&viewMode=story'
+ )
+ cy.get('.excerpt-pod .notes-accordion').should('exist')
+ cy.get('.notes-accordion .btn').should('exist')
+ })
+})
diff --git a/packages/vue-component-library/src/stories/ExcerptPod.stories.js b/packages/vue-component-library/src/stories/ExcerptPod.stories.js
new file mode 100644
index 000000000..35985bed7
--- /dev/null
+++ b/packages/vue-component-library/src/stories/ExcerptPod.stories.js
@@ -0,0 +1,65 @@
+import { computed } from 'vue'
+import ExcerptPod from '@/lib-components/ExcerptPod.vue'
+
+export default {
+ title: 'Funkhaus / ExcerptPod',
+ component: ExcerptPod,
+ argTypes: {
+ title: {
+ control: 'text',
+ description: 'Accordion title (HTML allowed)',
+ },
+ text: {
+ control: 'text',
+ description: 'Accordion content (HTML allowed)',
+ },
+ labelOpen: { control: 'text', description: 'Label when open' },
+ labelClose: { control: 'text', description: 'Label when closed' },
+ },
+}
+
+function Template(args) {
+ return {
+ components: { ExcerptPod },
+ provide() {
+ return {
+ theme: computed(() => 'dlc'),
+ }
+ },
+ setup() {
+ return { args }
+ },
+ template: `
+
+ `,
+ }
+}
+
+export const Default = Template.bind({})
+Default.args = {
+ title: 'Notes',
+ subtitle: 'Subtitle goes hereeee',
+ text: 'This digital collection is comprised of selected digitized photographic negatives from the analog photographic archive. Digitization and description of this collection is ongoing. The analog collection consists of photonegatives documenting events and people in Southern California and photographic prints documenting events and people in Southern California, the U.S., and the world. The material originates from the Los Angeles Times newspaper and includes glass negatives (ca. 1918-1932), nitrate negatives (ca. 1925-45), and safety negatives (ca. 1935-present). Also includes prints and negatives from the Los Angeles Times Orange County and San Diego bureaus.',
+ labelOpen: 'Show Less',
+ labelClose: 'Show More',
+ sentenceSplitCount: 1,
+}
+export const EmptyProps = Template.bind({})
+EmptyProps.args = {
+ ...Default.args,
+}
+
+export const MoreSections = Template.bind({})
+MoreSections.args = {
+ ...Default.args,
+ sentenceSplitCount: 1,
+ labelOpen: 'Collapse',
+ labelClose: 'Expand',
+}
diff --git a/packages/vue-component-library/src/stories/FooterMain.stories.js b/packages/vue-component-library/src/stories/FooterMain.stories.js
index a214038c2..472bb7248 100644
--- a/packages/vue-component-library/src/stories/FooterMain.stories.js
+++ b/packages/vue-component-library/src/stories/FooterMain.stories.js
@@ -10,39 +10,39 @@ export default {
const mockFTVAFooterPrimary = {
socialItems: [
{
- id: "4343807",
- name: "Facebook",
- to: "https://www.facebook.com/UCLAFTVArchive/",
+ id: '4343807',
+ name: 'Facebook',
+ to: 'https://www.facebook.com/UCLAFTVArchive/',
classes: null,
- target: "1"
+ target: '1'
},
{
- id: "4343808",
- name: "Instagram",
- to: "https://www.instagram.com/uclaftvarchive/",
+ id: '4343808',
+ name: 'Instagram',
+ to: 'https://www.instagram.com/uclaftvarchive/',
classes: null,
- target: "1"
+ target: '1'
},
{
- id: "4343809",
- name: "Bluesky",
- to: "https://bsky.app/profile/uclaftvarchive.bsky.social",
+ id: '4343809',
+ name: 'Bluesky',
+ to: 'https://bsky.app/profile/uclaftvarchive.bsky.social',
classes: null,
- target: "1"
+ target: '1'
},
{
- id: "4343810",
- name: "YouTube",
- to: "https://www.youtube.com/channel/UCKwx-Ugwnha7SvfyiHBV9iQ",
- classes: "",
- target: "1"
+ id: '4343810',
+ name: 'YouTube',
+ to: 'https://www.youtube.com/channel/UCKwx-Ugwnha7SvfyiHBV9iQ',
+ classes: '',
+ target: '1'
},
{
- id: "4343811",
- name: "Letterboxd",
- to: "https://letterboxd.com/uclaftvarchive/",
+ id: '4343811',
+ name: 'Letterboxd',
+ to: 'https://letterboxd.com/uclaftvarchive/',
classes: null,
- target: "1"
+ target: '1'
},
],
diff --git a/packages/vue-component-library/src/stories/FooterPrimary.stories.js b/packages/vue-component-library/src/stories/FooterPrimary.stories.js
index 2f1f267c1..fe70f5bd6 100644
--- a/packages/vue-component-library/src/stories/FooterPrimary.stories.js
+++ b/packages/vue-component-library/src/stories/FooterPrimary.stories.js
@@ -61,39 +61,39 @@ const mock = {
const mockFTVAFooterPrimary = {
socialItems: [
{
- id: "4343807",
- name: "Facebook",
- to: "https://www.facebook.com/UCLAFTVArchive/",
+ id: '4343807',
+ name: 'Facebook',
+ to: 'https://www.facebook.com/UCLAFTVArchive/',
classes: null,
- target: "1"
+ target: '1'
},
{
- id: "4343808",
- name: "Instagram",
- to: "https://www.instagram.com/uclaftvarchive/",
+ id: '4343808',
+ name: 'Instagram',
+ to: 'https://www.instagram.com/uclaftvarchive/',
classes: null,
- target: "1"
+ target: '1'
},
{
- id: "4343809",
- name: "Bluesky",
- to: "https://bsky.app/profile/uclaftvarchive.bsky.social",
+ id: '4343809',
+ name: 'Bluesky',
+ to: 'https://bsky.app/profile/uclaftvarchive.bsky.social',
classes: null,
- target: "1"
+ target: '1'
},
{
- id: "4343810",
- name: "YouTube",
- to: "https://www.youtube.com/channel/UCKwx-Ugwnha7SvfyiHBV9iQ",
- classes: "",
- target: "1"
+ id: '4343810',
+ name: 'YouTube',
+ to: 'https://www.youtube.com/channel/UCKwx-Ugwnha7SvfyiHBV9iQ',
+ classes: '',
+ target: '1'
},
{
- id: "4343811",
- name: "Letterboxd",
- to: "https://letterboxd.com/uclaftvarchive/",
+ id: '4343811',
+ name: 'Letterboxd',
+ to: 'https://letterboxd.com/uclaftvarchive/',
classes: null,
- target: "1"
+ target: '1'
},
],
diff --git a/packages/vue-component-library/src/styles/dlc/_excerpt-pod.scss b/packages/vue-component-library/src/styles/dlc/_excerpt-pod.scss
new file mode 100644
index 000000000..9753b6000
--- /dev/null
+++ b/packages/vue-component-library/src/styles/dlc/_excerpt-pod.scss
@@ -0,0 +1,93 @@
+.excerpt-pod,
+.excerpt-pod.dlc {
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+
+ .info {
+ display: flex;
+ gap: 10vw;
+ }
+
+ .title {
+ margin: 0;
+
+ @include ftva-card-title-2;
+ }
+
+ .subtitle {
+ min-width: 200px;
+ margin: 0;
+
+ font-family: var(--font-secondary);
+ font-size: 16px;
+ font-weight: 400;
+ line-height: 160%; /* 25.6px */
+ letter-spacing: 0.16px;
+ }
+
+ .text-excerpt {
+ display: flex;
+ flex-direction: column;
+ gap: 5px;
+ width: 100%;
+ }
+
+ .text {
+ @include ftva-body-2;
+
+ .summary-content {
+ // display: flex;
+ // flex-direction: column;
+ // gap: 5px;
+ }
+ }
+
+ .btn {
+ padding: 5px 5px 5px 0;
+ box-sizing: border-box;
+
+ font-size: 18px;
+ font-weight: 400;
+ line-height: normal;
+
+ display: flex;
+ align-items: center;
+ }
+
+ .caret-icon {
+ @include animate-normal;
+ }
+
+ &.is-open {
+ // .wrapper {
+ // margin-bottom: 25px;
+ // }
+ .caret-icon {
+ transform: rotate(180deg);
+ translate: 0 3px;
+ }
+ }
+
+ // Breakpoints
+ @media #{$small} {
+ .info {
+ flex-direction: column;
+ gap: 16px;
+ }
+ }
+
+ // Transitions
+ .fade-label-enter-active,
+ .fade-label-leave-active {
+ transition: opacity 0.1s ease-in-out;
+ }
+ .fade-label-enter-from,
+ .fade-label-leave-to {
+ opacity: 0;
+ }
+ .fade-label-enter-to,
+ .fade-label-leave-from {
+ opacity: 1;
+ }
+}