Skip to main content

Streamlit Swipecards allow you to add interactive swipeable cards to your app. Supports both image cards and table row swiping with cell highlighting.

Project description

🃏 Streamlit Swipe Cards

PyPI version Python 3.7+ Streamlit

A modern, interactive card-swiping component for Streamlit applications. Build interfaces with smooth animations for both image cards and data table rows.

✨ Features

  • Stacked Card Interface: Card stacking with smooth animations
  • Dual Display Modes: Support for both image cards and interactive data tables
  • Touch & Mouse Support: Works seamlessly on desktop and mobile devices
  • Responsive Views: Choose mobile or desktop layouts for card width
  • Interactive Actions: Like 💚, pass ❌, and undo ↶ functionality
  • Advanced Table Features: Cell, row, and column highlighting with AG-Grid integration
  • Performance Optimized: Automatic dataset caching for improved loading times
  • Return Values: Get detailed feedback on user interactions and swipe patterns

📦 Installation

pip install streamlit-swipecards

🚀 Quick Start

import streamlit as st
from streamlit_swipecards import streamlit_swipecards

st.title("My Swipe App")

# Image cards example
cards = [
    {
        "name": "Alice",
        "description": "Loves hiking and photography",
        "image": "https://images.unsplash.com/photo-1544005313-94ddf0286df2?w=400"
    },
    {
        "name": "Bob", 
        "description": "Chef and food enthusiast",
        "image": "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=400"
    }
]

result = streamlit_swipecards(
    cards=cards,
    display_mode="cards",
    show_border=False,
    view="desktop",
    last_card_message="This is the last page. You can add your own text here",
    key="my_swipe_cards"
)

if result:
    st.json(result)

📋 API Reference

streamlit_swipecards()

Parameter Type Description
cards list[dict] List of card dictionaries (image or table cards)
display_mode str Display mode: "cards" or "table"
dataset_path str | None Legacy single-dataset mode (deprecated)
highlight_cells list[dict] | None Cell highlighting configuration
highlight_rows list[dict] | None Row highlighting configuration
highlight_columns list[dict] | None Column highlighting configuration
center_table_row int | None Row to center in table view
center_table_column str | None Column to center in table view
view str Layout: "mobile" (default) or "desktop" for wider cards
show_border bool Show border around cards (default True)
last_card_message str | None Message shown after all cards are swiped
key str | None Unique component key

Returns: dict | None - Interaction data including swiped cards, last action, and statistics

🎨 Card Types

🖼️ Image Cards

  • Custom Styling: Flexible card layouts with names, descriptions, and images
  • Smooth Animations: Swipe gestures and visual feedback
{
    "name": "Alice Johnson",              # required
    "description": "Software Engineer",   # required  
    "image": "https://example.com/alice.jpg",  # required - URL or base64
    "pills": ["Python", "React", "AI"]   # optional - skill tags
}

📊 Table Cards

  • Data Row Swiping: Transform spreadsheet rows into swipeable cards
  • Smart Highlighting: Emphasize specific cells, rows, or columns
  • Automatic Centering: Center on important data points
{
    "dataset_path": "employees.csv",      # required - path to CSV/Excel
    "row_index": 0,                       # required - row to display
    "name": "Alice Johnson",              # optional - card title
    "description": "Engineering Team",    # optional - card subtitle
    "pills": ["Senior", "Remote"],        # optional - status tags
    "highlight_cells": [                  # optional - cell highlighting
        {"row": 0, "column": "Salary", "color": "#FFB6C1"}
    ],
    "highlight_rows": [                   # optional - row highlighting
        {"row": 0, "color": "#E3F2FD"}
    ],
    "highlight_columns": [                # optional - column highlighting
        {"column": "Performance", "color": "#E8F5E8"}
    ],
    "center_table_row": 0,                # optional - center row
    "center_table_column": "Salary"       # optional - center column
}

🚦 Return Values

The component returns detailed interaction data:

{
    "swipedCards": [
        {"index": 0, "action": "right"},   # Liked first card
        {"index": 1, "action": "left"}     # Passed second card
    ],
    "lastAction": {
        "cardIndex": 1, 
        "action": "left"
    },
    "totalSwiped": 2,      # Total cards swiped
    "remainingCards": 8    # Cards left in stack
}

🚀 Example App

A comprehensive example showcasing all features is provided in example.py:

streamlit run example.py

🛠️ Development

Local Development

# Clone the repository
git clone https://github.com/lejuliennn/streamlit-swipecards.git
cd streamlit-swipecards

# Install dependencies
pip install -r requirements.txt

# Run the example
streamlit run example.py

Building

# Build the package
python setup.py sdist bdist_wheel

# Install locally for testing
pip install -e .

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

📞 Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streamlit_swipecards-0.3.2.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streamlit_swipecards-0.3.2-py3-none-any.whl (27.1 kB view details)

Uploaded Python 3

File details

Details for the file streamlit_swipecards-0.3.2.tar.gz.

File metadata

  • Download URL: streamlit_swipecards-0.3.2.tar.gz
  • Upload date:
  • Size: 28.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for streamlit_swipecards-0.3.2.tar.gz
Algorithm Hash digest
SHA256 6b1cfcaa15d9312562873832fe976c9bd85e663cbde724ed69e5ecdee26eacdf
MD5 9ae8a29193af98b64d23c3d0fa313298
BLAKE2b-256 53b1abfbf026440d6e7ae27b6062ba9e826d7dfd7976eb60729b9704f7e4e5a5

See more details on using hashes here.

File details

Details for the file streamlit_swipecards-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for streamlit_swipecards-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 53a431395a7523bc975a252bdb7bd8dd1dbda32dcb5c9ebebcd2492d9144b6dc
MD5 4c192451a35af555c30b772495778585
BLAKE2b-256 fea9c51d528cb6f8d559902afb357967531191b771d2569bab9977e41a6addeb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page