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.44.tar.gz (47.4 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.44-py3-none-any.whl (103.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pulse_mantine-0.1.44.tar.gz
  • Upload date:
  • Size: 47.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.44.tar.gz
Algorithm Hash digest
SHA256 70f635c2e0b3789660e82182dfe49b1f5ff59c840ada7d86a9512661623c3424
MD5 6a4ffaa427ac9a97ba8b80daf90b26af
BLAKE2b-256 d80102b573d67d565da413dad021a6d341c1b2922dc85dc28e9ea45d812a9343

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pulse_mantine-0.1.44-py3-none-any.whl
  • Upload date:
  • Size: 103.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.44-py3-none-any.whl
Algorithm Hash digest
SHA256 c4d1a92c968024da82f8f30bc9ebd1065f581977332d9da7205237a5e7027035
MD5 e27147676f5daa127a5e596c4122a5c4
BLAKE2b-256 1bb4a72825b032805c519b3ec4f326785ef0198834758eb7a6f911d49b219042

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