Skip to main content

Add your description here

Project description

Pulse Mantine (Python)

Python bindings for Mantine UI components. Provides typed component wrappers for use in Pulse applications.

Architecture

Auto-generated Python wrappers around Mantine React components. Components are lazy-loaded and rendered to VDOM, which syncs to the JS client.

Python Component Call → VDOM Node → WebSocket → React Mantine Component

Folder Structure

src/pulse_mantine/
├── __init__.py           # Auto-generated exports (lazy loading)
├── version.py            # Package version
│
├── core/                 # Core Mantine components
│   ├── base.py           # MantineComponentProps base
│   ├── box.py            # Box, Mod
│   ├── provider.py       # MantineProvider, theme context
│   ├── theme.py          # MantineTheme, colors, spacing
│   ├── styles.py         # CSSVariables, StyleProp
│   ├── types.py          # MantineSize, MantineColor, etc.
│   │
│   ├── buttons/          # Button, ActionIcon, CloseButton, etc.
│   ├── inputs/           # TextInput, Checkbox, Select, Slider, etc.
│   ├── combobox/         # Autocomplete, MultiSelect, TagsInput, etc.
│   ├── layout/           # AppShell, Container, Flex, Grid, Stack, etc.
│   ├── data_display/     # Accordion, Avatar, Badge, Card, Image, etc.
│   ├── overlays/         # Modal, Drawer, Menu, Popover, Tooltip, etc.
│   ├── navigation/       # Anchor, Breadcrumbs, Pagination, Tabs, etc.
│   ├── feedback/         # Alert, Loader, Progress, Notifications, etc.
│   ├── typography/       # Text, Title, Code, List, Table, etc.
│   └── misc/             # Divider, Paper, ScrollArea, Collapse, etc.
│
├── charts/               # Mantine Charts (Recharts-based)
│   ├── area_chart.py     # AreaChart
│   ├── bar_chart.py      # BarChart
│   ├── line_chart.py     # LineChart
│   ├── pie_chart.py      # PieChart, DonutChart
│   ├── radar_chart.py    # RadarChart
│   ├── scatter_chart.py  # ScatterChart
│   ├── sparkline.py      # Sparkline
│   ├── heatmap.py        # Heatmap
│   └── ...
│
├── dates/                # Date/time components
│   ├── calendar.py       # Calendar
│   ├── date_picker.py    # DatePicker, DatePickerInput
│   ├── date_time_picker.py
│   ├── time_input.py     # TimeInput
│   ├── time_picker.py    # TimePicker
│   └── ...
│
└── form/                 # Form state management
    ├── form.py           # MantineForm - client-side form state
    ├── validators.py     # Built-in validators
    └── internal.py       # Form internals

Key Concepts

Components

All Mantine components are available as Python functions:

from pulse_mantine import Button, TextInput, Stack

def my_form():
    return Stack([
        TextInput(label="Name", placeholder="Enter name"),
        Button("Submit", color="blue"),
    ])

MantineProvider

Required wrapper for theming:

from pulse_mantine import MantineProvider

def layout(children):
    return MantineProvider(
        theme={"primaryColor": "blue"},
        children=children,
    )

Forms

Client-side form state with validation:

from pulse_mantine import MantineForm, TextInput, IsEmail, IsNotEmpty

form = MantineForm(
    initial_values={"email": "", "name": ""},
    validation={
        "email": IsEmail(),
        "name": IsNotEmpty(),
    },
)

def contact_form():
    return form(
        TextInput(label="Email", **form.field("email")),
        TextInput(label="Name", **form.field("name")),
        Button("Submit", type="submit"),
    )

Charts

Mantine Charts built on Recharts:

from pulse_mantine import LineChart

data = [
    {"date": "Jan", "value": 100},
    {"date": "Feb", "value": 200},
]

def chart():
    return LineChart(data=data, dataKey="date", series=[{"name": "value"}])

Validators

Built-in validators for forms:

  • IsEmail(), IsNotEmpty(), IsNumber(), IsInteger()
  • HasLength(min, max), Matches(regex)
  • IsInRange(min, max), IsDate(), IsBefore(), IsAfter()
  • IsUrl(), IsUUID(), IsULID(), IsJSONString()
  • StartsWith(), EndsWith(), MatchesField(field)
  • MinItems(), MaxItems(), AllowedFileTypes(), MaxFileSize()
  • RequiredWhen(), RequiredUnless()

Main Exports

Layout: AppShell, Container, Flex, Grid, Stack, Group, Center

Inputs: TextInput, Textarea, NumberInput, Select, MultiSelect, Checkbox, Switch, Slider, DatePicker, ColorInput

Buttons: Button, ActionIcon, CloseButton

Display: Card, Badge, Avatar, Image, Table, Accordion, Timeline

Overlays: Modal, Drawer, Menu, Popover, Tooltip, HoverCard

Feedback: Alert, Loader, Progress, Notification, Skeleton

Navigation: Tabs, Breadcrumbs, Pagination, NavLink, Stepper

Charts: LineChart, BarChart, AreaChart, PieChart, RadarChart

Form: MantineForm + validators

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

pulse_mantine-0.1.34.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

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

pulse_mantine-0.1.34-py3-none-any.whl (103.9 kB view details)

Uploaded Python 3

File details

Details for the file pulse_mantine-0.1.34.tar.gz.

File metadata

  • Download URL: pulse_mantine-0.1.34.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pulse_mantine-0.1.34.tar.gz
Algorithm Hash digest
SHA256 27c9e709eef4f7cd8de218a4ed58936cb4ea53ef88e383f0417a30371eca568d
MD5 9a99babc6b84ff3e2836efa396a694da
BLAKE2b-256 c1fed1f8f35e86be1f1e19b604cf7cc78cbf63d29efc1a1f90493235546ccc3d

See more details on using hashes here.

File details

Details for the file pulse_mantine-0.1.34-py3-none-any.whl.

File metadata

  • Download URL: pulse_mantine-0.1.34-py3-none-any.whl
  • Upload date:
  • Size: 103.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pulse_mantine-0.1.34-py3-none-any.whl
Algorithm Hash digest
SHA256 9d8d220e74147644e62ed471ebef599015a8b0e2200321fbd3f866f10f9f9126
MD5 88c620ac2241e58e97846b72abe36100
BLAKE2b-256 e644b11902250bcdcf0cf3313fa27972e53d0fd60700bc3afa885a15fb962508

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