fh-matui 0.9.2__py3-none-any.whl → 0.9.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fh_matui/__init__.py +1 -1
- fh_matui/_modidx.py +19 -18
- fh_matui/datatable.py +4 -4
- fh_matui/web_pages.py +75 -2
- {fh_matui-0.9.2.dist-info → fh_matui-0.9.3.dist-info}/METADATA +7 -7
- fh_matui-0.9.3.dist-info/RECORD +14 -0
- fh_matui-0.9.2.dist-info/RECORD +0 -14
- {fh_matui-0.9.2.dist-info → fh_matui-0.9.3.dist-info}/WHEEL +0 -0
- {fh_matui-0.9.2.dist-info → fh_matui-0.9.3.dist-info}/entry_points.txt +0 -0
- {fh_matui-0.9.2.dist-info → fh_matui-0.9.3.dist-info}/licenses/LICENSE +0 -0
- {fh_matui-0.9.2.dist-info → fh_matui-0.9.3.dist-info}/top_level.txt +0 -0
fh_matui/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.9.
|
|
1
|
+
__version__ = "0.9.3"
|
fh_matui/_modidx.py
CHANGED
|
@@ -128,35 +128,35 @@ d = { 'settings': { 'branch': 'master',
|
|
|
128
128
|
'fh_matui.core._ThemeNamespace.violet': ('core.html#_themenamespace.violet', 'fh_matui/core.py'),
|
|
129
129
|
'fh_matui.core._ThemeNamespace.yellow': ('core.html#_themenamespace.yellow', 'fh_matui/core.py'),
|
|
130
130
|
'fh_matui.core._ThemeNamespace.zinc': ('core.html#_themenamespace.zinc', 'fh_matui/core.py')},
|
|
131
|
-
'fh_matui.datatable': { 'fh_matui.datatable.DataTable': ('
|
|
132
|
-
'fh_matui.datatable.DataTableResource': ('
|
|
133
|
-
'fh_matui.datatable.DataTableResource.__init__': ( '
|
|
131
|
+
'fh_matui.datatable': { 'fh_matui.datatable.DataTable': ('datatable.html#datatable', 'fh_matui/datatable.py'),
|
|
132
|
+
'fh_matui.datatable.DataTableResource': ('datatable.html#datatableresource', 'fh_matui/datatable.py'),
|
|
133
|
+
'fh_matui.datatable.DataTableResource.__init__': ( 'datatable.html#datatableresource.__init__',
|
|
134
134
|
'fh_matui/datatable.py'),
|
|
135
|
-
'fh_matui.datatable.DataTableResource._error_toast': ( '
|
|
135
|
+
'fh_matui.datatable.DataTableResource._error_toast': ( 'datatable.html#datatableresource._error_toast',
|
|
136
136
|
'fh_matui/datatable.py'),
|
|
137
|
-
'fh_matui.datatable.DataTableResource._filter_by_search': ( '
|
|
137
|
+
'fh_matui.datatable.DataTableResource._filter_by_search': ( 'datatable.html#datatableresource._filter_by_search',
|
|
138
138
|
'fh_matui/datatable.py'),
|
|
139
|
-
'fh_matui.datatable.DataTableResource._get_filtered_data': ( '
|
|
139
|
+
'fh_matui.datatable.DataTableResource._get_filtered_data': ( 'datatable.html#datatableresource._get_filtered_data',
|
|
140
140
|
'fh_matui/datatable.py'),
|
|
141
|
-
'fh_matui.datatable.DataTableResource._handle_action': ( '
|
|
141
|
+
'fh_matui.datatable.DataTableResource._handle_action': ( 'datatable.html#datatableresource._handle_action',
|
|
142
142
|
'fh_matui/datatable.py'),
|
|
143
|
-
'fh_matui.datatable.DataTableResource._handle_save': ( '
|
|
143
|
+
'fh_matui.datatable.DataTableResource._handle_save': ( 'datatable.html#datatableresource._handle_save',
|
|
144
144
|
'fh_matui/datatable.py'),
|
|
145
|
-
'fh_matui.datatable.DataTableResource._handle_table': ( '
|
|
145
|
+
'fh_matui.datatable.DataTableResource._handle_table': ( 'datatable.html#datatableresource._handle_table',
|
|
146
146
|
'fh_matui/datatable.py'),
|
|
147
|
-
'fh_matui.datatable.DataTableResource._paginate': ( '
|
|
147
|
+
'fh_matui.datatable.DataTableResource._paginate': ( 'datatable.html#datatableresource._paginate',
|
|
148
148
|
'fh_matui/datatable.py'),
|
|
149
|
-
'fh_matui.datatable.DataTableResource._register_routes': ( '
|
|
149
|
+
'fh_matui.datatable.DataTableResource._register_routes': ( 'datatable.html#datatableresource._register_routes',
|
|
150
150
|
'fh_matui/datatable.py'),
|
|
151
|
-
'fh_matui.datatable.DataTableResource._success_toast': ( '
|
|
151
|
+
'fh_matui.datatable.DataTableResource._success_toast': ( 'datatable.html#datatableresource._success_toast',
|
|
152
152
|
'fh_matui/datatable.py'),
|
|
153
|
-
'fh_matui.datatable.DataTableResource._wrap_modal': ( '
|
|
153
|
+
'fh_matui.datatable.DataTableResource._wrap_modal': ( 'datatable.html#datatableresource._wrap_modal',
|
|
154
154
|
'fh_matui/datatable.py'),
|
|
155
|
-
'fh_matui.datatable._action_menu': ('
|
|
156
|
-
'fh_matui.datatable._page_size_select': ('
|
|
157
|
-
'fh_matui.datatable._safe_int': ('
|
|
158
|
-
'fh_matui.datatable._to_dict': ('
|
|
159
|
-
'fh_matui.datatable.table_state_from_request': ( '
|
|
155
|
+
'fh_matui.datatable._action_menu': ('datatable.html#_action_menu', 'fh_matui/datatable.py'),
|
|
156
|
+
'fh_matui.datatable._page_size_select': ('datatable.html#_page_size_select', 'fh_matui/datatable.py'),
|
|
157
|
+
'fh_matui.datatable._safe_int': ('datatable.html#_safe_int', 'fh_matui/datatable.py'),
|
|
158
|
+
'fh_matui.datatable._to_dict': ('datatable.html#_to_dict', 'fh_matui/datatable.py'),
|
|
159
|
+
'fh_matui.datatable.table_state_from_request': ( 'datatable.html#table_state_from_request',
|
|
160
160
|
'fh_matui/datatable.py')},
|
|
161
161
|
'fh_matui.foundations': { 'fh_matui.foundations.VEnum': ('foundations.html#venum', 'fh_matui/foundations.py'),
|
|
162
162
|
'fh_matui.foundations.VEnum.__add__': ('foundations.html#venum.__add__', 'fh_matui/foundations.py'),
|
|
@@ -171,6 +171,7 @@ d = { 'settings': { 'branch': 'master',
|
|
|
171
171
|
'fh_matui.web_pages.FAQSection': ('web_pages.html#faqsection', 'fh_matui/web_pages.py'),
|
|
172
172
|
'fh_matui.web_pages.FeatureShowcase': ('web_pages.html#featureshowcase', 'fh_matui/web_pages.py'),
|
|
173
173
|
'fh_matui.web_pages.FeaturesGrid': ('web_pages.html#featuresgrid', 'fh_matui/web_pages.py'),
|
|
174
|
+
'fh_matui.web_pages.HeroSection': ('web_pages.html#herosection', 'fh_matui/web_pages.py'),
|
|
174
175
|
'fh_matui.web_pages.LandingNavBar': ('web_pages.html#landingnavbar', 'fh_matui/web_pages.py'),
|
|
175
176
|
'fh_matui.web_pages.LandingPageSimple': ('web_pages.html#landingpagesimple', 'fh_matui/web_pages.py'),
|
|
176
177
|
'fh_matui.web_pages.MarkdownSection': ('web_pages.html#markdownsection', 'fh_matui/web_pages.py'),
|
fh_matui/datatable.py
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"""Data table with pagination, search, sorting, and inline actions"""
|
|
2
2
|
|
|
3
|
-
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/
|
|
3
|
+
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/05_datatable.ipynb.
|
|
4
4
|
|
|
5
5
|
# %% auto 0
|
|
6
6
|
__all__ = ['PAGE_SIZES', 'table_state_from_request', 'DataTable', 'DataTableResource']
|
|
7
7
|
|
|
8
|
-
# %% ../nbs/
|
|
8
|
+
# %% ../nbs/05_datatable.ipynb 2
|
|
9
9
|
from fastcore.utils import *
|
|
10
10
|
from fasthtml.common import *
|
|
11
11
|
from fasthtml.jupyter import *
|
|
@@ -17,7 +17,7 @@ from .core import *
|
|
|
17
17
|
from nbdev.showdoc import show_doc
|
|
18
18
|
from .components import *
|
|
19
19
|
|
|
20
|
-
# %% ../nbs/
|
|
20
|
+
# %% ../nbs/05_datatable.ipynb 6
|
|
21
21
|
#| code-fold: true
|
|
22
22
|
from math import ceil
|
|
23
23
|
from urllib.parse import urlencode
|
|
@@ -288,7 +288,7 @@ def DataTable(
|
|
|
288
288
|
|
|
289
289
|
return Div(card, Div(id=feedback_id), id=container_id)
|
|
290
290
|
|
|
291
|
-
# %% ../nbs/
|
|
291
|
+
# %% ../nbs/05_datatable.ipynb 8
|
|
292
292
|
from typing import Callable, Optional, Any, Union
|
|
293
293
|
from dataclasses import asdict, is_dataclass
|
|
294
294
|
from datetime import datetime
|
fh_matui/web_pages.py
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/04_web_pages.ipynb.
|
|
4
4
|
|
|
5
5
|
# %% auto 0
|
|
6
|
-
__all__ = ['SECTION_STYLE', 'SECTION_MARGIN', 'STANDARD_FOOTER_COLUMNS', '
|
|
7
|
-
'FAQSection', 'PageFooter', 'LandingNavBar', 'LandingPageSimple', 'MarkdownSection',
|
|
6
|
+
__all__ = ['SECTION_STYLE', 'SECTION_MARGIN', 'STANDARD_FOOTER_COLUMNS', 'HeroSection', 'FeatureShowcase', 'FeaturesGrid',
|
|
7
|
+
'PricingSection', 'FAQSection', 'PageFooter', 'LandingNavBar', 'LandingPageSimple', 'MarkdownSection',
|
|
8
|
+
'ContentPage']
|
|
8
9
|
|
|
9
10
|
# %% ../nbs/04_web_pages.ipynb 3
|
|
10
11
|
import importlib
|
|
@@ -22,6 +23,78 @@ import fasthtml.components as fc
|
|
|
22
23
|
from fasthtml.common import A, Button as FhButton, I, Span
|
|
23
24
|
|
|
24
25
|
|
|
26
|
+
# %% ../nbs/04_web_pages.ipynb 6
|
|
27
|
+
def HeroSection(
|
|
28
|
+
title: str, # Main hero title
|
|
29
|
+
subtitle: str, # Hero subtitle/description
|
|
30
|
+
primary_cta_text: str, # Primary CTA button text
|
|
31
|
+
primary_cta_href: str, # Primary CTA button href
|
|
32
|
+
secondary_cta_text: str = None, # Secondary CTA button text (optional)
|
|
33
|
+
secondary_cta_href: str = None, # Secondary CTA button href (optional)
|
|
34
|
+
background: str = "primary-container", # BeerCSS background class (without bg- prefix)
|
|
35
|
+
cls: str = "", # Additional classes
|
|
36
|
+
extra_css: str | None = None, # Optional custom CSS (minimal; opt-in)
|
|
37
|
+
extra_js: str | None = None, # Optional custom JS (minimal; opt-in)
|
|
38
|
+
):
|
|
39
|
+
"""Hero section with title, subtitle, and CTA buttons.
|
|
40
|
+
|
|
41
|
+
BeerCSS-first styling. Takes up 75vh by default with gradient overlay.
|
|
42
|
+
Designed for full-width layout - background extends edge-to-edge naturally.
|
|
43
|
+
Content is centered using responsive class internally.
|
|
44
|
+
"""
|
|
45
|
+
# Hero styling: 75vh height + gradient overlay
|
|
46
|
+
# No width hacks needed - parent layout uses "max" for full-width
|
|
47
|
+
hero_css = """
|
|
48
|
+
.hero-section {
|
|
49
|
+
min-height: 75vh;
|
|
50
|
+
display: flex;
|
|
51
|
+
align-items: center;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
position: relative;
|
|
54
|
+
background: linear-gradient(135deg,
|
|
55
|
+
var(--primary-container) 0%,
|
|
56
|
+
var(--surface-container) 50%,
|
|
57
|
+
var(--secondary-container) 100%);
|
|
58
|
+
}
|
|
59
|
+
.hero-section::before {
|
|
60
|
+
content: '';
|
|
61
|
+
position: absolute;
|
|
62
|
+
inset: 0;
|
|
63
|
+
background: radial-gradient(circle at 20% 80%, var(--primary) 0%, transparent 50%),
|
|
64
|
+
radial-gradient(circle at 80% 20%, var(--secondary) 0%, transparent 50%);
|
|
65
|
+
opacity: 0.1;
|
|
66
|
+
pointer-events: none;
|
|
67
|
+
}
|
|
68
|
+
.hero-content {
|
|
69
|
+
position: relative;
|
|
70
|
+
z-index: 1;
|
|
71
|
+
}
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
hooks = [Style(hero_css)]
|
|
75
|
+
if extra_css:
|
|
76
|
+
hooks.append(Style(extra_css))
|
|
77
|
+
if extra_js:
|
|
78
|
+
hooks.append(Script(extra_js))
|
|
79
|
+
|
|
80
|
+
ctas = [Button(primary_cta_text, href=primary_cta_href, variant="raised")]
|
|
81
|
+
if secondary_cta_text and secondary_cta_href:
|
|
82
|
+
ctas.append(Button(secondary_cta_text, href=secondary_cta_href, variant="outlined"))
|
|
83
|
+
|
|
84
|
+
stack = DivVStacked(
|
|
85
|
+
H1(title, cls="no-margin"),
|
|
86
|
+
P(subtitle, cls="secondary-text large-text"),
|
|
87
|
+
Div(*ctas, cls="row middle-align center-align small-space"),
|
|
88
|
+
cls="center-align large-padding hero-content",
|
|
89
|
+
)
|
|
90
|
+
# Content centered with responsive class
|
|
91
|
+
content = Div(stack, cls="responsive")
|
|
92
|
+
return Section(
|
|
93
|
+
*hooks,
|
|
94
|
+
content,
|
|
95
|
+
cls=f"hero-section {cls}".strip(),
|
|
96
|
+
)
|
|
97
|
+
|
|
25
98
|
# %% ../nbs/04_web_pages.ipynb 10
|
|
26
99
|
def FeatureShowcase(
|
|
27
100
|
features: list, # List of dicts: {title, description, image_src?, icon?, image_alt?}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fh-matui
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.3
|
|
4
4
|
Summary: material-ui for fasthtml
|
|
5
5
|
Home-page: https://github.com/abhisheksreesaila/fh-matui
|
|
6
6
|
Author: abhishek sreesaila
|
|
@@ -144,12 +144,12 @@ fh-matui automatically includes:
|
|
|
144
144
|
|
|
145
145
|
| Module | Description | Key Components |
|
|
146
146
|
|--------|-------------|----------------|
|
|
147
|
-
| [Foundations](foundations.html) | Base utilities and helper functions | `BeerHeaders`, `display`, styling helpers |
|
|
148
|
-
| [Core](core.html) | Theme system and styling | `MatTheme`, color presets, theme configuration |
|
|
149
|
-
| [Components](components.html) | UI component library | `Button`,
|
|
150
|
-
| [App Pages](app_pages.html) | Application layouts | Navigation, sidebars, full-page layouts |
|
|
151
|
-
| [Data Tables](
|
|
152
|
-
| [Web Pages](web_pages.html) | Marketing/landing pages | Hero sections, feature grids, testimonials |
|
|
147
|
+
| [Foundations](https://abhisheksreesaila.github.io/fh-matui/foundations.html) | Base utilities and helper functions | `BeerHeaders`, `display`, styling helpers |
|
|
148
|
+
| [Core](https://abhisheksreesaila.github.io/fh-matui/core.html) | Theme system and styling | `MatTheme`, color presets, theme configuration |
|
|
149
|
+
| [Components](https://abhisheksreesaila.github.io/fh-matui/components.html) | UI component library | `Button`, `Card`, `FormField`, `FormModal`, `Grid` |
|
|
150
|
+
| [App Pages](https://abhisheksreesaila.github.io/fh-matui/app_pages.html) | Application layouts | Navigation, sidebars, full-page layouts |
|
|
151
|
+
| [Data Tables](https://abhisheksreesaila.github.io/fh-matui/datatable.html) | Data management components | `DataTable`, `DataTableResource`, CRUD operations |
|
|
152
|
+
| [Web Pages](https://abhisheksreesaila.github.io/fh-matui/web_pages.html) | Marketing/landing pages | Hero sections, feature grids, testimonials |
|
|
153
153
|
|
|
154
154
|
## 🛠️ Development
|
|
155
155
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
fh_matui/__init__.py,sha256=5uBZ3sUaocnyIWuJeW9M94Z77vA1kKmwKxiblrnbKlc,23
|
|
2
|
+
fh_matui/_modidx.py,sha256=hLZ_V7aRsAvavJ82m02XyvImfzYB5_DnOce8eKRD3xU,22865
|
|
3
|
+
fh_matui/app_pages.py,sha256=Sn9-tgBpaPNbR-0nZtPLoSCmAWLOGB4UQ88IkFvzBRY,10361
|
|
4
|
+
fh_matui/components.py,sha256=KjdTHzWRXpVWBEIGskW1HfhjPpzRYzi6UA_yRjZyMWM,48254
|
|
5
|
+
fh_matui/core.py,sha256=xtVBN8CtC50ZJ4Iu7o-mUhaA87tWdnz8gBfKRk63Zhs,10680
|
|
6
|
+
fh_matui/datatable.py,sha256=MAEibyjRwYlBLMD9dIIocufuWn84jTvrgRt1XKFAN9U,25506
|
|
7
|
+
fh_matui/foundations.py,sha256=b7PnObJpKN8ZAU9NzCm9xpfnHzFjjAROU7E2YvA_tj4,1820
|
|
8
|
+
fh_matui/web_pages.py,sha256=4mF-jpfVcZTVepfQ-aMGgIUp-nBp0YCkvcdsWhUYeaA,34879
|
|
9
|
+
fh_matui-0.9.3.dist-info/licenses/LICENSE,sha256=xV8xoN4VOL0uw9X8RSs2IMuD_Ss_a9yAbtGNeBWZwnw,11337
|
|
10
|
+
fh_matui-0.9.3.dist-info/METADATA,sha256=KX2VQz5wOPRHaSwtc86l3-p3TTjn-08pjuS7kAHbta8,8431
|
|
11
|
+
fh_matui-0.9.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
12
|
+
fh_matui-0.9.3.dist-info/entry_points.txt,sha256=zn4CR4gNTiAAxbFsCxHAf2tQhtW29_YOffjbUTgeoWI,38
|
|
13
|
+
fh_matui-0.9.3.dist-info/top_level.txt,sha256=l80d5eoA2ZjqtPYwAorLMS5PiHxUxz3zKzxMJ41Xoso,9
|
|
14
|
+
fh_matui-0.9.3.dist-info/RECORD,,
|
fh_matui-0.9.2.dist-info/RECORD
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
fh_matui/__init__.py,sha256=I3ASgj0LYAmGGQhqxkAYEEiiLOpQ1UAZGOd0bJAXSRw,23
|
|
2
|
-
fh_matui/_modidx.py,sha256=GqigyZE6TkLMfflOcgGzo1CjBiSxIY5ez_DyO6qApjQ,22665
|
|
3
|
-
fh_matui/app_pages.py,sha256=Sn9-tgBpaPNbR-0nZtPLoSCmAWLOGB4UQ88IkFvzBRY,10361
|
|
4
|
-
fh_matui/components.py,sha256=KjdTHzWRXpVWBEIGskW1HfhjPpzRYzi6UA_yRjZyMWM,48254
|
|
5
|
-
fh_matui/core.py,sha256=xtVBN8CtC50ZJ4Iu7o-mUhaA87tWdnz8gBfKRk63Zhs,10680
|
|
6
|
-
fh_matui/datatable.py,sha256=G7Gmkj5nNWbcWqZvJtWGUSKQSs8AQAcs57qEpMt1ijo,25490
|
|
7
|
-
fh_matui/foundations.py,sha256=b7PnObJpKN8ZAU9NzCm9xpfnHzFjjAROU7E2YvA_tj4,1820
|
|
8
|
-
fh_matui/web_pages.py,sha256=9YkzgTcBuIG3SKVzAVyDRqmttINAu5bySOkCpPg-e18,32077
|
|
9
|
-
fh_matui-0.9.2.dist-info/licenses/LICENSE,sha256=xV8xoN4VOL0uw9X8RSs2IMuD_Ss_a9yAbtGNeBWZwnw,11337
|
|
10
|
-
fh_matui-0.9.2.dist-info/METADATA,sha256=kcJvlvnrzx8bqaKD1yjuvU8OjNc9nF_zWYuW3LZXNjE,8592
|
|
11
|
-
fh_matui-0.9.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
12
|
-
fh_matui-0.9.2.dist-info/entry_points.txt,sha256=zn4CR4gNTiAAxbFsCxHAf2tQhtW29_YOffjbUTgeoWI,38
|
|
13
|
-
fh_matui-0.9.2.dist-info/top_level.txt,sha256=l80d5eoA2ZjqtPYwAorLMS5PiHxUxz3zKzxMJ41Xoso,9
|
|
14
|
-
fh_matui-0.9.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|