---
title: "Flexible and Elastic Card Layouts with r2resize"
author: "R Packager"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Flexible and Elastic Card Layouts with r2resize}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  warning = FALSE,
  message = FALSE
)
library(r2resize)
library(shiny)
library(htmltools)
```

This vignette explores the `flexCard()` and `elastiCard()` functions from the `r2resize` package, which provide dynamic and interactive card layouts for displaying images, navigation items, or general content.

## Flexible Card - `flexCard()`

The `flexCard()` function creates an expandable flexible card holder, ideal for a list of items like images or navigation links that expand on hover or click.

```{r flexcard-example, eval=FALSE}
# Basic flex card with two items
r2resize::flexCard(
  item1 = c(
    bg = "https://r2resize.obi.obianom.com/m/image1.jpg",
    icon = "home",
    title = "Welcome Home",
    subtitle = "Your personalized dashboard"
  ),
  item2 = c(
    bg = "https://r2resize.obi.obianom.com/m/image2.jpg",
    icon = "info",
    title = "About Us",
    subtitle = "Learn more about our services",
    icon.color = "blue",
    text.color = "white"
  )
)

# Flex card with custom dimensions and active panel
r2resize::flexCard(
  itemA = c(
    bg = "https://r2resize.obi.obianom.com/m/1b.jpg",
    icon = "chart-line",
    title = "Analytics",
    subtitle = "View your data insights"
  ),
  itemB = c(
    bg = "https://r2resize.obi.obianom.com/m/1.jpg",
    icon = "envelope",
    title = "Messages",
    subtitle = "Check your inbox",
    icon.color = "red",
    text.color = "lightgray"
  ),
  height.px = 300,
  width.px = 800,
  border.color = "darkgray",
  border.width.px = 2,
  active.panel = 2 # Make the second item active by default
)

# Example within a Shiny app
if (interactive()) {
  shinyApp(
    ui = fluidPage(
      h2("Flex Cards in Shiny"),
      flexCard(
        item1 = c(
          bg = "https://r2resize.obi.obianom.com/m/image1.jpg",
          icon = "lightbulb",
          title = "Idea Generation",
          subtitle = "Brainstorm new concepts"
        ),
        item2 = c(
          bg = "https://r2resize.obi.obianom.com/m/image2.jpg",
          icon = "code",
          title = "Development",
          subtitle = "Build your next project",
          icon.color = "green"
        )
      )
    ),
    server = function(input, output) {}
  )
}
```

## Hover Elastic Card - `elastiCard()`

The `elastiCard()` function creates an automatic elastic card holder, where cards expand and contract dynamically on hover, providing an engaging user experience.

```{r elasticard-example, eval=FALSE}
# Elasti card with text content
r2resize::elastiCard(
  item1 = c(
    title = "Product Features",
    subtitle = "Innovative and user-friendly",
    desc = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
    text.color = "lightgreen"
  ),
  item2 = c(
    title = "Our Vision",
    subtitle = "Pioneering the future",
    desc = "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
    text.color = "orange"
  )
)

# Elasti card with background images and text
r2resize::elastiCard(
  item1 = c(
    bg = "https://r2resize.obi.obianom.com/m/1b.jpg",
    title = "Scenic Landscapes",
    subtitle = "Explore breathtaking views",
    desc = "A collection of stunning natural beauty from around the world."
  ),
  item2 = c(
    bg = "https://r2resize.obi.obianom.com/m/1.jpg",
    title = "Urban Exploration",
    subtitle = "Discover city life",
    desc = "Dive into the vibrant and dynamic atmosphere of metropolitan areas."
  ),
  height.px = 350,
  width.px = 900,
  border.color = "gray",
  border.width.px = 3
)

# Example within a Shiny app
if (interactive()) {
  shinyApp(
    ui = fluidPage(
      h2("Elastic Cards in Shiny"),
      elastiCard(
        item1 = c(
          bg = "https://r2resize.obi.obianom.com/m/image1.jpg",
          title = "Project Alpha",
          subtitle = "Phase 1 Complete",
          desc = "Successfully concluded the initial development phase with excellent results."
        ),
        item2 = c(
          bg = "https://r2resize.obi.obianom.com/m/image2.jpg",
          title = "Project Beta",
          subtitle = "Upcoming Milestones",
          desc = "Preparing for the next stage of development and feature integration."
        )
      )
    ),
    server = function(input, output) {}
  )
}
```
