@qwickapps/react-framework 1.4.7 → 1.4.9
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.
- package/QUICK_START_GUIDE.md +1 -1
- package/README.md +14 -4
- package/dist/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +255 -54
- package/dist/index.js +249 -48
- package/dist/src/components/Logo.d.ts.map +1 -1
- package/dist/src/components/ResponsiveMenu.d.ts.map +1 -1
- package/dist/src/components/SafeSpan.d.ts.map +1 -1
- package/dist/src/components/Scaffold.d.ts.map +1 -1
- package/dist/src/components/blocks/Article.d.ts.map +1 -1
- package/dist/src/components/blocks/Footer.d.ts.map +1 -1
- package/dist/src/components/blocks/Text.d.ts.map +1 -1
- package/dist/src/components/buttons/Button.d.ts +26 -10
- package/dist/src/components/buttons/Button.d.ts.map +1 -1
- package/dist/src/components/menu/MenuItem.d.ts +2 -2
- package/dist/src/components/menu/MenuItem.d.ts.map +1 -1
- package/dist/src/schemas/ButtonSchema.d.ts +3 -0
- package/dist/src/schemas/ButtonSchema.d.ts.map +1 -1
- package/dist/src/schemas/transformers/ComponentTransformer.d.ts.map +1 -1
- package/dist/src/schemas/transformers/ReactNodeTransformer.d.ts.map +1 -1
- package/package.json +9 -1
- package/scripts/create-qwickapps-project.js +4 -2
- package/src/components/Html.tsx +1 -1
- package/src/components/Logo.tsx +2 -4
- package/src/components/QwickApp.css +19 -13
- package/src/components/ResponsiveMenu.tsx +12 -1
- package/src/components/SafeSpan.tsx +0 -1
- package/src/components/Scaffold.css +14 -0
- package/src/components/Scaffold.tsx +16 -2
- package/src/components/blocks/Article.tsx +78 -7
- package/src/components/blocks/CoverImageHeader.tsx +1 -1
- package/src/components/blocks/Footer.tsx +23 -23
- package/src/components/blocks/PageBannerHeader.tsx +1 -1
- package/src/components/blocks/Text.tsx +7 -4
- package/src/components/buttons/Button.tsx +189 -15
- package/src/components/menu/MenuItem.tsx +2 -2
- package/src/contexts/ThemeContext.tsx +1 -1
- package/src/schemas/ButtonSchema.ts +33 -0
- package/src/schemas/ViewSchema.ts +1 -1
- package/src/schemas/transformers/ComponentTransformer.ts +2 -8
- package/src/schemas/transformers/ReactNodeTransformer.ts +1 -2
- package/src/stories/Article.stories.tsx +1 -1
- package/src/stories/ChoiceInputField.stories.tsx +2 -2
package/dist/index.js
CHANGED
|
@@ -1545,7 +1545,7 @@ const ThemeProvider = ({
|
|
|
1545
1545
|
const backgroundMain = getCSSCustomProperty('--theme-background') || (isDark ? '#121212' : '#ffffff');
|
|
1546
1546
|
const surfaceMain = getCSSCustomProperty('--theme-surface') || (isDark ? '#1e1e1e' : '#ffffff');
|
|
1547
1547
|
const textPrimary = getCSSCustomProperty('--theme-text-primary') || (isDark ? '#ffffff' : '#000000');
|
|
1548
|
-
const textSecondary = getCSSCustomProperty('--theme-text-secondary') || (isDark ? '
|
|
1548
|
+
const textSecondary = getCSSCustomProperty('--theme-text-secondary') || (isDark ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.6)');
|
|
1549
1549
|
const textDisabled = getCSSCustomProperty('--theme-on-disabled') || (isDark ? 'rgba(255, 255, 255, 0.38)' : 'rgba(0, 0, 0, 0.38)');
|
|
1550
1550
|
return styles.createTheme({
|
|
1551
1551
|
palette: {
|
|
@@ -2650,11 +2650,64 @@ Code.transformCodeHighlight = element => {
|
|
|
2650
2650
|
};
|
|
2651
2651
|
};
|
|
2652
2652
|
|
|
2653
|
+
/**
|
|
2654
|
+
* Icon name to Material-UI icon component mapping
|
|
2655
|
+
* Used by finalize function to transform icon string names to React components
|
|
2656
|
+
*/
|
|
2657
|
+
const iconRegistry = {
|
|
2658
|
+
home: iconsMaterial.Home,
|
|
2659
|
+
download: iconsMaterial.Download,
|
|
2660
|
+
clouddownload: iconsMaterial.CloudDownload,
|
|
2661
|
+
cloudupload: iconsMaterial.CloudUpload,
|
|
2662
|
+
settings: iconsMaterial.Settings,
|
|
2663
|
+
dashboard: iconsMaterial.Dashboard,
|
|
2664
|
+
info: iconsMaterial.Info,
|
|
2665
|
+
help: iconsMaterial.Help,
|
|
2666
|
+
add: iconsMaterial.Add,
|
|
2667
|
+
edit: iconsMaterial.Edit,
|
|
2668
|
+
delete: iconsMaterial.Delete,
|
|
2669
|
+
check: iconsMaterial.Check,
|
|
2670
|
+
close: iconsMaterial.Close,
|
|
2671
|
+
arrowforward: iconsMaterial.ArrowForward,
|
|
2672
|
+
arrowback: iconsMaterial.ArrowBack,
|
|
2673
|
+
menu: iconsMaterial.Menu,
|
|
2674
|
+
search: iconsMaterial.Search,
|
|
2675
|
+
favorite: iconsMaterial.Favorite,
|
|
2676
|
+
star: iconsMaterial.Star,
|
|
2677
|
+
share: iconsMaterial.Share,
|
|
2678
|
+
save: iconsMaterial.Save,
|
|
2679
|
+
send: iconsMaterial.Send,
|
|
2680
|
+
email: iconsMaterial.Email,
|
|
2681
|
+
phone: iconsMaterial.Phone,
|
|
2682
|
+
person: iconsMaterial.Person,
|
|
2683
|
+
group: iconsMaterial.Group,
|
|
2684
|
+
business: iconsMaterial.Business,
|
|
2685
|
+
shoppingcart: iconsMaterial.ShoppingCart,
|
|
2686
|
+
attachmoney: iconsMaterial.AttachMoney,
|
|
2687
|
+
lock: iconsMaterial.Lock,
|
|
2688
|
+
lockopen: iconsMaterial.LockOpen,
|
|
2689
|
+
visibility: iconsMaterial.Visibility,
|
|
2690
|
+
visibilityoff: iconsMaterial.VisibilityOff
|
|
2691
|
+
};
|
|
2692
|
+
/**
|
|
2693
|
+
* Get icon component from icon name string
|
|
2694
|
+
* Exported for use by other components (Scaffold, ResponsiveMenu, etc.)
|
|
2695
|
+
*/
|
|
2696
|
+
function getIconComponent(iconName) {
|
|
2697
|
+
if (!iconName) return null;
|
|
2698
|
+
const IconComponent = iconRegistry[iconName.toLowerCase()];
|
|
2699
|
+
if (!IconComponent) {
|
|
2700
|
+
console.warn(`[Button] Icon "${iconName}" not found in registry`);
|
|
2701
|
+
return null;
|
|
2702
|
+
}
|
|
2703
|
+
return jsxRuntime.jsx(IconComponent, {});
|
|
2704
|
+
}
|
|
2653
2705
|
// View component - handles the actual rendering
|
|
2654
2706
|
const ButtonView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
2655
2707
|
const {
|
|
2656
2708
|
label,
|
|
2657
2709
|
variant = 'primary',
|
|
2710
|
+
color,
|
|
2658
2711
|
buttonSize = 'medium',
|
|
2659
2712
|
icon,
|
|
2660
2713
|
endIcon,
|
|
@@ -2685,8 +2738,13 @@ const ButtonView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
2685
2738
|
return 'contained';
|
|
2686
2739
|
}
|
|
2687
2740
|
};
|
|
2688
|
-
//
|
|
2689
|
-
const
|
|
2741
|
+
// Get theme color name - prioritize explicit color prop over variant-derived color
|
|
2742
|
+
const getThemeColorName = () => {
|
|
2743
|
+
// If color prop is explicitly provided, use it
|
|
2744
|
+
if (color) {
|
|
2745
|
+
return color;
|
|
2746
|
+
}
|
|
2747
|
+
// Otherwise derive from variant
|
|
2690
2748
|
switch (variant) {
|
|
2691
2749
|
case 'primary':
|
|
2692
2750
|
return 'primary';
|
|
@@ -2702,6 +2760,50 @@ const ButtonView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
2702
2760
|
return 'primary';
|
|
2703
2761
|
}
|
|
2704
2762
|
};
|
|
2763
|
+
// Get CSS theme variable styles based on variant and color
|
|
2764
|
+
const getColorStyles = () => {
|
|
2765
|
+
const muiVariant = getMuiVariant();
|
|
2766
|
+
const colorName = getThemeColorName();
|
|
2767
|
+
// For contained buttons: use solid background
|
|
2768
|
+
if (muiVariant === 'contained') {
|
|
2769
|
+
return {
|
|
2770
|
+
backgroundColor: `var(--theme-${colorName})`,
|
|
2771
|
+
color: `var(--theme-on-${colorName})`,
|
|
2772
|
+
'&:hover': {
|
|
2773
|
+
backgroundColor: `var(--theme-${colorName}-dark)`
|
|
2774
|
+
},
|
|
2775
|
+
'&.Mui-disabled': {
|
|
2776
|
+
backgroundColor: 'var(--theme-text-disabled)',
|
|
2777
|
+
color: 'var(--theme-on-surface)'
|
|
2778
|
+
}
|
|
2779
|
+
};
|
|
2780
|
+
}
|
|
2781
|
+
// For outlined buttons: border and text color
|
|
2782
|
+
if (muiVariant === 'outlined') {
|
|
2783
|
+
return {
|
|
2784
|
+
borderColor: `var(--theme-${colorName})`,
|
|
2785
|
+
color: `var(--theme-${colorName})`,
|
|
2786
|
+
'&:hover': {
|
|
2787
|
+
borderColor: `var(--theme-${colorName}-dark)`,
|
|
2788
|
+
backgroundColor: `var(--theme-${colorName}-light)`
|
|
2789
|
+
},
|
|
2790
|
+
'&.Mui-disabled': {
|
|
2791
|
+
borderColor: 'var(--theme-border-main)',
|
|
2792
|
+
color: 'var(--theme-text-disabled)'
|
|
2793
|
+
}
|
|
2794
|
+
};
|
|
2795
|
+
}
|
|
2796
|
+
// For text buttons: just text color
|
|
2797
|
+
return {
|
|
2798
|
+
color: `var(--theme-${colorName})`,
|
|
2799
|
+
'&:hover': {
|
|
2800
|
+
backgroundColor: `var(--theme-${colorName}-light)`
|
|
2801
|
+
},
|
|
2802
|
+
'&.Mui-disabled': {
|
|
2803
|
+
color: 'var(--theme-text-disabled)'
|
|
2804
|
+
}
|
|
2805
|
+
};
|
|
2806
|
+
};
|
|
2705
2807
|
// Handle action serialization pattern for onClick
|
|
2706
2808
|
const handleActionClick = React.useCallback(event => {
|
|
2707
2809
|
if (action) {
|
|
@@ -2758,12 +2860,13 @@ const ButtonView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
2758
2860
|
// Base button props
|
|
2759
2861
|
const baseProps = {
|
|
2760
2862
|
variant: getMuiVariant(),
|
|
2761
|
-
color: getMuiColor(),
|
|
2762
2863
|
size: buttonSize,
|
|
2763
2864
|
disabled: disabled || loading,
|
|
2764
2865
|
fullWidth,
|
|
2765
2866
|
...restProps,
|
|
2766
2867
|
sx: {
|
|
2868
|
+
// Apply CSS theme variable colors
|
|
2869
|
+
...getColorStyles(),
|
|
2767
2870
|
// Ensure consistent text transform
|
|
2768
2871
|
textTransform: 'none',
|
|
2769
2872
|
// Loading state adjustments
|
|
@@ -2772,6 +2875,7 @@ const ButtonView = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
|
2772
2875
|
marginRight: 1
|
|
2773
2876
|
}
|
|
2774
2877
|
}),
|
|
2878
|
+
// Merge user-provided sx prop last to allow overrides
|
|
2775
2879
|
...(restProps.sx || {})
|
|
2776
2880
|
},
|
|
2777
2881
|
startIcon: loading ? jsxRuntime.jsx(material.CircularProgress, {
|
|
@@ -2814,8 +2918,27 @@ const Button = createSerializableView({
|
|
|
2814
2918
|
tagName: 'Button',
|
|
2815
2919
|
version: '1.0.0',
|
|
2816
2920
|
role: 'view',
|
|
2817
|
-
View: ButtonView
|
|
2921
|
+
View: ButtonView,
|
|
2818
2922
|
// Button component uses default react-children strategy for potential child content
|
|
2923
|
+
finalize: props => {
|
|
2924
|
+
// Transform icon string names to React icon components
|
|
2925
|
+
const transformedProps = {
|
|
2926
|
+
...props
|
|
2927
|
+
};
|
|
2928
|
+
if (typeof props.icon === 'string') {
|
|
2929
|
+
const iconComponent = getIconComponent(props.icon);
|
|
2930
|
+
if (iconComponent) {
|
|
2931
|
+
transformedProps.icon = iconComponent;
|
|
2932
|
+
}
|
|
2933
|
+
}
|
|
2934
|
+
if (typeof props.endIcon === 'string') {
|
|
2935
|
+
const endIconComponent = getIconComponent(props.endIcon);
|
|
2936
|
+
if (endIconComponent) {
|
|
2937
|
+
transformedProps.endIcon = endIconComponent;
|
|
2938
|
+
}
|
|
2939
|
+
}
|
|
2940
|
+
return transformedProps;
|
|
2941
|
+
}
|
|
2819
2942
|
});
|
|
2820
2943
|
// Register HTML patterns that Button component can handle
|
|
2821
2944
|
Button.registerPatternHandlers = registry => {
|
|
@@ -3548,7 +3671,8 @@ Text$1.registerPatternHandlers = registry => {
|
|
|
3548
3671
|
Text$1.transformParagraph = element => {
|
|
3549
3672
|
return {
|
|
3550
3673
|
tagName: 'Text',
|
|
3551
|
-
|
|
3674
|
+
version: '1.0.0',
|
|
3675
|
+
data: {
|
|
3552
3676
|
variant: 'body1',
|
|
3553
3677
|
component: 'p',
|
|
3554
3678
|
content: element.textContent || ''
|
|
@@ -3567,7 +3691,8 @@ Text$1.transformHeading = (element, tagName) => {
|
|
|
3567
3691
|
};
|
|
3568
3692
|
return {
|
|
3569
3693
|
tagName: 'Text',
|
|
3570
|
-
|
|
3694
|
+
version: '1.0.0',
|
|
3695
|
+
data: {
|
|
3571
3696
|
variant: variantMap[tagName] || 'h4',
|
|
3572
3697
|
component: tagName,
|
|
3573
3698
|
content: element.textContent || ''
|
|
@@ -3578,7 +3703,8 @@ Text$1.transformHeading = (element, tagName) => {
|
|
|
3578
3703
|
Text$1.transformSpan = element => {
|
|
3579
3704
|
return {
|
|
3580
3705
|
tagName: 'Text',
|
|
3581
|
-
|
|
3706
|
+
version: '1.0.0',
|
|
3707
|
+
data: {
|
|
3582
3708
|
variant: 'body2',
|
|
3583
3709
|
component: 'span',
|
|
3584
3710
|
content: element.textContent || ''
|
|
@@ -3856,7 +3982,7 @@ __decorate([schema.Field(), schema.Editor({
|
|
|
3856
3982
|
field_type: schema.FieldType.TEXTAREA,
|
|
3857
3983
|
label: 'Click Handler',
|
|
3858
3984
|
description: 'JavaScript function for click events',
|
|
3859
|
-
placeholder: 'function(event) { console.
|
|
3985
|
+
placeholder: 'function(event) { console.debug("clicked"); }'
|
|
3860
3986
|
}), classValidator.IsOptional(), classValidator.IsString(), __metadata("design:type", Function)], exports.ViewSchema.prototype, "onClick", void 0);
|
|
3861
3987
|
__decorate([schema.Field(), schema.Editor({
|
|
3862
3988
|
field_type: schema.FieldType.TEXTAREA,
|
|
@@ -4524,7 +4650,7 @@ function CoverImageHeader(props) {
|
|
|
4524
4650
|
const convertedActions = modelActions ? modelActions.filter(action => typeof action.id === 'string' && !!action.id).map(action => ({
|
|
4525
4651
|
...action,
|
|
4526
4652
|
id: action.id,
|
|
4527
|
-
onClick: () => console.
|
|
4653
|
+
onClick: () => console.debug(`Action clicked: ${action.id}`) // Default handler for data-driven actions
|
|
4528
4654
|
})) : [];
|
|
4529
4655
|
return jsxRuntime.jsx(CoverImageHeaderView, {
|
|
4530
4656
|
...viewProps,
|
|
@@ -5081,6 +5207,11 @@ function LogoView({
|
|
|
5081
5207
|
// If image is a React node, render it directly
|
|
5082
5208
|
return jsxRuntime.jsx("div", {
|
|
5083
5209
|
className: "logo-image-container",
|
|
5210
|
+
style: {
|
|
5211
|
+
display: 'flex',
|
|
5212
|
+
alignItems: 'center',
|
|
5213
|
+
justifyContent: 'center'
|
|
5214
|
+
},
|
|
5084
5215
|
children: image
|
|
5085
5216
|
});
|
|
5086
5217
|
};
|
|
@@ -5094,7 +5225,8 @@ function LogoView({
|
|
|
5094
5225
|
xmlns: "http://www.w3.org/2000/svg",
|
|
5095
5226
|
className: `logo-svg dynamic-logo ${sizeClass} ${variantClass}`.trim(),
|
|
5096
5227
|
style: {
|
|
5097
|
-
height: `${height}px
|
|
5228
|
+
height: `${height}px`,
|
|
5229
|
+
...style
|
|
5098
5230
|
},
|
|
5099
5231
|
role: "img",
|
|
5100
5232
|
"aria-label": ariaLabel,
|
|
@@ -5204,7 +5336,6 @@ function Logo(props) {
|
|
|
5204
5336
|
}
|
|
5205
5337
|
// Show error state
|
|
5206
5338
|
if (error) {
|
|
5207
|
-
console.error('Error loading logo:', error);
|
|
5208
5339
|
return jsxRuntime.jsxs("div", {
|
|
5209
5340
|
style: {
|
|
5210
5341
|
color: 'red',
|
|
@@ -5214,7 +5345,6 @@ function Logo(props) {
|
|
|
5214
5345
|
children: ["Error loading logo: ", error.message]
|
|
5215
5346
|
});
|
|
5216
5347
|
}
|
|
5217
|
-
console.log('Resolved props for Logo:', logoProps);
|
|
5218
5348
|
return jsxRuntime.jsx(LogoView, {
|
|
5219
5349
|
...logoProps
|
|
5220
5350
|
});
|
|
@@ -16526,7 +16656,6 @@ function SafeSpanWithDataBinding(props) {
|
|
|
16526
16656
|
});
|
|
16527
16657
|
}
|
|
16528
16658
|
}
|
|
16529
|
-
console.log('Resolved props for SafeSpan:', safeSpanProps);
|
|
16530
16659
|
return jsxRuntime.jsx(SafeSpanView, {
|
|
16531
16660
|
...safeSpanProps
|
|
16532
16661
|
});
|
|
@@ -17444,7 +17573,6 @@ class Html extends ModelView {
|
|
|
17444
17573
|
if (version !== Html.version) {
|
|
17445
17574
|
console.warn(`Version mismatch: Expected ${Html.version} but got ${version}`);
|
|
17446
17575
|
}
|
|
17447
|
-
console.log(`TEST: Creating ${tagName} - ${version} from JSON:`, jsonData);
|
|
17448
17576
|
const {
|
|
17449
17577
|
children,
|
|
17450
17578
|
...props
|
|
@@ -17613,7 +17741,6 @@ class ReactNodeTransformer {
|
|
|
17613
17741
|
// Handle React elements
|
|
17614
17742
|
if (/*#__PURE__*/React.isValidElement(node)) {
|
|
17615
17743
|
const element = node;
|
|
17616
|
-
console.log(`TEST: isValidElement:`, element);
|
|
17617
17744
|
const comp = element.type;
|
|
17618
17745
|
const rawName = typeof comp === 'string' ? comp : comp?.render?.name || comp?.name || comp?.muiName || comp?.displayName || 'Anonymous';
|
|
17619
17746
|
// Normalize wrapper names like ForwardRef(Typography), Styled(Typography)
|
|
@@ -17726,7 +17853,6 @@ class ReactNodeTransformer {
|
|
|
17726
17853
|
// Handle HTML elements
|
|
17727
17854
|
if (typeof elementType === 'string') {
|
|
17728
17855
|
const deserializedProps = ReactNodeTransformer.deserializeProps(props);
|
|
17729
|
-
console.log(`TEST: Create Element:`, elementType, deserializedProps);
|
|
17730
17856
|
return /*#__PURE__*/React.createElement(elementType, {
|
|
17731
17857
|
key,
|
|
17732
17858
|
...deserializedProps
|
|
@@ -17853,7 +17979,6 @@ class ComponentTransformer {
|
|
|
17853
17979
|
if (componentRegistry.has(tagName)) {
|
|
17854
17980
|
console.warn(`Component '${tagName}' is already registered. Overwriting existing registration.`);
|
|
17855
17981
|
}
|
|
17856
|
-
console.log(`TEST: Registering component: ${tagName} (version ${version})`);
|
|
17857
17982
|
componentRegistry.set(tagName, componentClass);
|
|
17858
17983
|
// Register HTML patterns if component supports them
|
|
17859
17984
|
if (typeof componentClass.registerPatternHandlers === 'function') {
|
|
@@ -17967,13 +18092,9 @@ class ComponentTransformer {
|
|
|
17967
18092
|
if (typeof componentType === 'function') {
|
|
17968
18093
|
const tagName = ComponentTransformer.findTagNameForComponent(componentType);
|
|
17969
18094
|
if (tagName) {
|
|
17970
|
-
console.log(`TEST: Serializing component instance of ${tagName}:`, element.props);
|
|
17971
18095
|
const componentClass = componentRegistry.get(tagName);
|
|
17972
18096
|
let serializedData = null;
|
|
17973
|
-
console.log(`TEST: Element type:`, typeof element.toJson);
|
|
17974
|
-
console.log(`TEST: Component type:`, typeof componentClass.toJson);
|
|
17975
18097
|
if (typeof componentClass.toJson === 'function') {
|
|
17976
|
-
console.log(`TEST: Serializing via component toJson method ${tagName}:`, element.props);
|
|
17977
18098
|
serializedData = componentClass.toJson(element.props);
|
|
17978
18099
|
}
|
|
17979
18100
|
if (serializedData !== null) {
|
|
@@ -17985,7 +18106,6 @@ class ComponentTransformer {
|
|
|
17985
18106
|
...key,
|
|
17986
18107
|
...serializedData
|
|
17987
18108
|
};
|
|
17988
|
-
console.log(`TEST: Serialized component ${tagName}:`, result);
|
|
17989
18109
|
return result;
|
|
17990
18110
|
}
|
|
17991
18111
|
} else if (strictMode) {
|
|
@@ -18003,8 +18123,6 @@ class ComponentTransformer {
|
|
|
18003
18123
|
version: FALLBACK_VERSION,
|
|
18004
18124
|
data: ReactNodeTransformer.serialize(node)
|
|
18005
18125
|
};
|
|
18006
|
-
console.log(`TEST: Serialized unregistered node as ${FALLBACK_TAG}:`, result, node);
|
|
18007
|
-
console.log(`TEST: Component Registry:`, componentRegistry);
|
|
18008
18126
|
return result;
|
|
18009
18127
|
}
|
|
18010
18128
|
/**
|
|
@@ -18268,11 +18386,13 @@ function ArticleView({
|
|
|
18268
18386
|
// Ensure proper width constraints for article content
|
|
18269
18387
|
maxWidth: '800px',
|
|
18270
18388
|
mx: 'auto',
|
|
18389
|
+
p: 3,
|
|
18271
18390
|
// Header styling when headers are present
|
|
18272
18391
|
'& h1, & h2, & h3, & h4, & h5, & h6': {
|
|
18273
18392
|
maxWidth: '100%',
|
|
18274
|
-
mb:
|
|
18275
|
-
mt:
|
|
18393
|
+
mb: 2,
|
|
18394
|
+
mt: 3,
|
|
18395
|
+
color: 'var(--theme-text-primary)',
|
|
18276
18396
|
'&:first-of-type': {
|
|
18277
18397
|
mt: 0
|
|
18278
18398
|
}
|
|
@@ -18292,15 +18412,85 @@ function ArticleView({
|
|
|
18292
18412
|
fontWeight: 600,
|
|
18293
18413
|
lineHeight: 1.4
|
|
18294
18414
|
},
|
|
18415
|
+
'& h4': {
|
|
18416
|
+
fontSize: '1.25rem',
|
|
18417
|
+
fontWeight: 600,
|
|
18418
|
+
lineHeight: 1.4,
|
|
18419
|
+
mt: 2.5,
|
|
18420
|
+
mb: 1.5
|
|
18421
|
+
},
|
|
18295
18422
|
// Ensure paragraphs have proper spacing
|
|
18296
18423
|
'& p': {
|
|
18297
|
-
mb:
|
|
18298
|
-
lineHeight: 1.
|
|
18424
|
+
mb: 2,
|
|
18425
|
+
lineHeight: 1.8,
|
|
18426
|
+
fontSize: '1.1rem',
|
|
18427
|
+
color: 'var(--theme-text-primary)'
|
|
18299
18428
|
},
|
|
18300
18429
|
// Ensure lists have proper spacing
|
|
18301
18430
|
'& ul, & ol': {
|
|
18302
|
-
mb:
|
|
18303
|
-
pl:
|
|
18431
|
+
mb: 2.5,
|
|
18432
|
+
pl: 4,
|
|
18433
|
+
'& li': {
|
|
18434
|
+
mb: 1,
|
|
18435
|
+
lineHeight: 1.8,
|
|
18436
|
+
fontSize: '1.05rem',
|
|
18437
|
+
color: 'var(--theme-text-primary)'
|
|
18438
|
+
}
|
|
18439
|
+
},
|
|
18440
|
+
// Blockquote styling
|
|
18441
|
+
'& blockquote': {
|
|
18442
|
+
borderLeft: '4px solid var(--theme-primary)',
|
|
18443
|
+
pl: 3,
|
|
18444
|
+
pr: 2,
|
|
18445
|
+
py: 2,
|
|
18446
|
+
my: 3,
|
|
18447
|
+
ml: 0,
|
|
18448
|
+
mr: 0,
|
|
18449
|
+
background: 'var(--theme-surface)',
|
|
18450
|
+
borderRadius: '8px',
|
|
18451
|
+
'& p': {
|
|
18452
|
+
fontSize: '1.15rem',
|
|
18453
|
+
fontStyle: 'italic',
|
|
18454
|
+
lineHeight: 1.7,
|
|
18455
|
+
mb: 1,
|
|
18456
|
+
color: 'var(--theme-text-primary)'
|
|
18457
|
+
},
|
|
18458
|
+
'& cite': {
|
|
18459
|
+
display: 'block',
|
|
18460
|
+
fontSize: '0.95rem',
|
|
18461
|
+
fontStyle: 'normal',
|
|
18462
|
+
fontWeight: 600,
|
|
18463
|
+
color: 'var(--theme-text-secondary)',
|
|
18464
|
+
mt: 1
|
|
18465
|
+
}
|
|
18466
|
+
},
|
|
18467
|
+
// Strong/bold text
|
|
18468
|
+
'& strong': {
|
|
18469
|
+
fontWeight: 600,
|
|
18470
|
+
color: 'var(--theme-text-primary)'
|
|
18471
|
+
},
|
|
18472
|
+
// Emphasis/italic text
|
|
18473
|
+
'& em': {
|
|
18474
|
+
fontStyle: 'italic',
|
|
18475
|
+
color: 'var(--theme-text-primary)'
|
|
18476
|
+
},
|
|
18477
|
+
// Links
|
|
18478
|
+
'& a': {
|
|
18479
|
+
color: 'var(--theme-primary)',
|
|
18480
|
+
textDecoration: 'none',
|
|
18481
|
+
fontWeight: 500,
|
|
18482
|
+
'&:hover': {
|
|
18483
|
+
textDecoration: 'underline'
|
|
18484
|
+
}
|
|
18485
|
+
},
|
|
18486
|
+
// Images and figures
|
|
18487
|
+
'& figure': {
|
|
18488
|
+
margin: '2rem 0',
|
|
18489
|
+
'& img': {
|
|
18490
|
+
maxWidth: '100%',
|
|
18491
|
+
height: 'auto',
|
|
18492
|
+
borderRadius: '8px'
|
|
18493
|
+
}
|
|
18304
18494
|
},
|
|
18305
18495
|
...styleProps.sx,
|
|
18306
18496
|
children: html
|
|
@@ -18416,7 +18606,6 @@ function ArticleWithDataBinding(props) {
|
|
|
18416
18606
|
});
|
|
18417
18607
|
}
|
|
18418
18608
|
}
|
|
18419
|
-
console.log('Resolved props for Article:', articleProps);
|
|
18420
18609
|
return jsxRuntime.jsx(ArticleView, {
|
|
18421
18610
|
...articleProps
|
|
18422
18611
|
});
|
|
@@ -19347,7 +19536,7 @@ function PageBannerHeader(props) {
|
|
|
19347
19536
|
destructive: action.destructive,
|
|
19348
19537
|
priority: action.priority,
|
|
19349
19538
|
onClick: () => {
|
|
19350
|
-
console.
|
|
19539
|
+
console.debug(`Action clicked: ${action.id} - ${action.label}`);
|
|
19351
19540
|
// In a real app, this would dispatch events or call configured handlers
|
|
19352
19541
|
}
|
|
19353
19542
|
}));
|
|
@@ -20824,9 +21013,9 @@ function FooterView({
|
|
|
20824
21013
|
// Force vertical on mobile for better usability
|
|
20825
21014
|
const effectiveOrientation = isMobile ? 'vertical' : orientation;
|
|
20826
21015
|
const renderFooterItem = item => {
|
|
20827
|
-
const content = jsxRuntime.jsx(
|
|
21016
|
+
const content = jsxRuntime.jsx(Text$1, {
|
|
20828
21017
|
variant: "body2",
|
|
20829
|
-
|
|
21018
|
+
customColor: "var(--theme-text-secondary)",
|
|
20830
21019
|
sx: {
|
|
20831
21020
|
textDecoration: item.href ? 'none' : 'inherit',
|
|
20832
21021
|
'&:hover': item.href ? {
|
|
@@ -20862,14 +21051,14 @@ function FooterView({
|
|
|
20862
21051
|
sx: {
|
|
20863
21052
|
minWidth: 0
|
|
20864
21053
|
},
|
|
20865
|
-
children: [section.title && jsxRuntime.jsx(
|
|
21054
|
+
children: [section.title && jsxRuntime.jsx(Text$1, {
|
|
20866
21055
|
variant: "subtitle2",
|
|
20867
21056
|
component: "h3",
|
|
20868
21057
|
sx: {
|
|
20869
21058
|
fontWeight: 600,
|
|
20870
|
-
mb: 1.5
|
|
20871
|
-
color: 'text.primary'
|
|
21059
|
+
mb: 1.5
|
|
20872
21060
|
},
|
|
21061
|
+
customColor: "var(--theme-text-primary)",
|
|
20873
21062
|
children: section.title
|
|
20874
21063
|
}), jsxRuntime.jsx(material.Box, {
|
|
20875
21064
|
children: section.items.map(item => renderFooterItem(item))
|
|
@@ -20985,13 +21174,13 @@ function FooterView({
|
|
|
20985
21174
|
},
|
|
20986
21175
|
gap: 1
|
|
20987
21176
|
},
|
|
20988
|
-
children: [copyright && jsxRuntime.jsx(
|
|
21177
|
+
children: [copyright && jsxRuntime.jsx(Text$1, {
|
|
20989
21178
|
variant: "caption",
|
|
20990
|
-
|
|
21179
|
+
customColor: 'var(--theme-text-secondary)',
|
|
20991
21180
|
children: copyright
|
|
20992
|
-
}), legalText && jsxRuntime.jsx(
|
|
21181
|
+
}), legalText && jsxRuntime.jsx(Text$1, {
|
|
20993
21182
|
variant: "caption",
|
|
20994
|
-
|
|
21183
|
+
customColor: "var(--theme-text-secondary)",
|
|
20995
21184
|
children: legalText
|
|
20996
21185
|
})]
|
|
20997
21186
|
})
|
|
@@ -21037,9 +21226,9 @@ function Footer(props) {
|
|
|
21037
21226
|
},
|
|
21038
21227
|
textAlign: 'center'
|
|
21039
21228
|
},
|
|
21040
|
-
children: jsxRuntime.jsx(
|
|
21229
|
+
children: jsxRuntime.jsx(Text$1, {
|
|
21041
21230
|
variant: "body2",
|
|
21042
|
-
|
|
21231
|
+
customColor: "var(--theme-text-secondary)",
|
|
21043
21232
|
children: "Loading Footer..."
|
|
21044
21233
|
})
|
|
21045
21234
|
});
|
|
@@ -21058,9 +21247,9 @@ function Footer(props) {
|
|
|
21058
21247
|
},
|
|
21059
21248
|
textAlign: 'center'
|
|
21060
21249
|
},
|
|
21061
|
-
children: jsxRuntime.jsxs(
|
|
21250
|
+
children: jsxRuntime.jsxs(Text$1, {
|
|
21062
21251
|
variant: "body2",
|
|
21063
|
-
|
|
21252
|
+
customColor: 'var(--theme-error)',
|
|
21064
21253
|
children: ["Error Loading Footer: ", error.message]
|
|
21065
21254
|
})
|
|
21066
21255
|
});
|
|
@@ -23140,9 +23329,21 @@ const Scaffold = ({
|
|
|
23140
23329
|
}
|
|
23141
23330
|
}
|
|
23142
23331
|
};
|
|
23143
|
-
//
|
|
23332
|
+
// Transform icon string to component, or use provided ReactNode, or fallback to DefaultIcon
|
|
23144
23333
|
const needsIcon = variant !== 'drawer';
|
|
23145
|
-
|
|
23334
|
+
let displayIcon = null;
|
|
23335
|
+
if (item.icon) {
|
|
23336
|
+
// If icon is a string, transform it to component
|
|
23337
|
+
if (typeof item.icon === 'string') {
|
|
23338
|
+
displayIcon = getIconComponent(item.icon) || (needsIcon ? jsxRuntime.jsx(iconsMaterial.RadioButtonUnchecked, {}) : null);
|
|
23339
|
+
} else {
|
|
23340
|
+
// If icon is already a React component, use it
|
|
23341
|
+
displayIcon = item.icon;
|
|
23342
|
+
}
|
|
23343
|
+
} else if (needsIcon) {
|
|
23344
|
+
// No icon provided, use default for primary navigation
|
|
23345
|
+
displayIcon = jsxRuntime.jsx(iconsMaterial.RadioButtonUnchecked, {});
|
|
23346
|
+
}
|
|
23146
23347
|
const content = jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
23147
23348
|
children: [displayIcon && jsxRuntime.jsx("span", {
|
|
23148
23349
|
className: `menu-item-icon menu-item-icon-${variant}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logo.d.ts","sourceRoot":"","sources":["../../../src/components/Logo.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzG,OAAO,YAAY,CAAC;AAEpB,KAAK,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG;IAC5C,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,IAAI,CAAC;IAC5E,+BAA+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,UAAU,SAAU,SAAQ,aAAa,EAAE,eAAe;CAAG;AAgX7D,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Logo.d.ts","sourceRoot":"","sources":["../../../src/components/Logo.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzG,OAAO,YAAY,CAAC;AAEpB,KAAK,aAAa,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG;IAC5C,iCAAiC;IACjC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,GAAG,cAAc,CAAC,KAAK,IAAI,CAAC;IAC5E,+BAA+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,UAAU,SAAU,SAAQ,aAAa,EAAE,eAAe;CAAG;AAgX7D,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,2CAmC7B;AAMD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACjF,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AAEzC,eAAe,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponsiveMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ResponsiveMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,aAAa,EAAoC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ResponsiveMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ResponsiveMenu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,aAAa,EAAoC,MAAM,uBAAuB,CAAC;AAIxF,OAAO,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,qCAAqC;IACrC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3C,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAID,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+QjD,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SafeSpan.d.ts","sourceRoot":"","sources":["../../../src/components/SafeSpan.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,KAAK,iBAAiB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;AACpD,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,eAAe;CAAG;AA6E5E,qBAAa,QAAS,SAAQ,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEnE,MAAM,CAAC,QAAQ,CAAC,OAAO,cAAc;IACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAQ1C,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;IAKrD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAanD,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAWjC;
|
|
1
|
+
{"version":3,"file":"SafeSpan.d.ts","sourceRoot":"","sources":["../../../src/components/SafeSpan.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGjE,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,KAAK,iBAAiB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;AACpD,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,eAAe;CAAG;AA6E5E,qBAAa,QAAS,SAAQ,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAEnE,MAAM,CAAC,QAAQ,CAAC,OAAO,cAAc;IACrC,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAQ1C,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;IAKrD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAanD,OAAO,CAAC,MAAM,CAAC,iBAAiB;CAWjC;AA8BD,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scaffold.d.ts","sourceRoot":"","sources":["../../../src/components/Scaffold.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Scaffold.d.ts","sourceRoot":"","sources":["../../../src/components/Scaffold.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAOnD,OAAO,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+BAA+B;IAC/B,eAAe,EAAE,QAAQ,EAAE,CAAC;IAC5B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAWD,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAuYrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Article.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/Article.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAuB,MAAM,OAAO,CAAC;AAE5C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,KAAK,gBAAgB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAElD,MAAM,WAAW,YAAa,SAAQ,gBAAgB,EAAE,eAAe;CACtE;
|
|
1
|
+
{"version":3,"file":"Article.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/Article.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAuB,MAAM,OAAO,CAAC;AAE5C,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,KAAK,gBAAgB,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;AAElD,MAAM,WAAW,YAAa,SAAQ,gBAAgB,EAAE,eAAe;CACtE;AAwKD,qBAAa,OAAQ,SAAQ,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC;IAEhE,MAAM,CAAC,QAAQ,CAAC,OAAO,aAAa;IACpC,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAGlC,SAAS,CAAC,yBAAyB,IAAI,GAAG;IAQ1C,SAAS,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY;IAM1C,SAAS,CAAC,qBAAqB,IAAI,KAAK,CAAC,YAAY;IAKrD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAQnD,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAWhC;AA4DD,eAAe,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/Footer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/Footer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoD,aAAa,EAAE,MAAM,aAAa,CAAC;AAI9F,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,eAAgB,SAAQ,aAAa;IAC7C,sBAAsB;IACtB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,wCAAwC;IACxC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,yBAAyB;IACzB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAC/C,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe,EAAE,eAAe;CAAI;AAwNzE,iBAAS,MAAM,CAAC,KAAK,EAAE,WAAW,kDAsEjC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,OAAO,UAAU,CAAC,CAAC;AA6EnE;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAMhD,CAAC;
|
|
1
|
+
{"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/components/blocks/Text.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC,OAAO,UAAU,CAAC,CAAC;AA6EnE;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAMhD,CAAC;AAuEH;;GAEG;AACH,eAAe,IAAI,CAAC"}
|
|
@@ -14,8 +14,24 @@
|
|
|
14
14
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
15
15
|
*/
|
|
16
16
|
import React from 'react';
|
|
17
|
+
import ButtonModel from '../../schemas/ButtonSchema';
|
|
17
18
|
import { SerializableComponent } from '../shared/createSerializableView';
|
|
18
19
|
import { ViewProps } from '../shared/viewProps';
|
|
20
|
+
import type { SchemaProps } from '@qwickapps/schema/src/types/ModelProps';
|
|
21
|
+
/**
|
|
22
|
+
* Icon name to Material-UI icon component mapping
|
|
23
|
+
* Used by finalize function to transform icon string names to React components
|
|
24
|
+
*/
|
|
25
|
+
declare const iconRegistry: Record<string, React.ComponentType>;
|
|
26
|
+
/**
|
|
27
|
+
* Get icon component from icon name string
|
|
28
|
+
* Exported for use by other components (Scaffold, ResponsiveMenu, etc.)
|
|
29
|
+
*/
|
|
30
|
+
export declare function getIconComponent(iconName: string | undefined): React.ReactElement | null;
|
|
31
|
+
/**
|
|
32
|
+
* Export icon registry for extension by applications
|
|
33
|
+
*/
|
|
34
|
+
export { iconRegistry };
|
|
19
35
|
export interface ButtonAction {
|
|
20
36
|
type: 'navigate' | 'submit' | 'custom' | 'external';
|
|
21
37
|
url?: string;
|
|
@@ -23,19 +39,19 @@ export interface ButtonAction {
|
|
|
23
39
|
form?: string;
|
|
24
40
|
customHandler?: string;
|
|
25
41
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Props interface for Button component
|
|
44
|
+
* Uses SchemaProps<typeof ButtonSchema> for schema-driven typing
|
|
45
|
+
* Icons are transformed from strings to React components by finalize function
|
|
46
|
+
*
|
|
47
|
+
* Note: We omit 'icon' and 'endIcon' from schema props because they are strings in the schema
|
|
48
|
+
* but get transformed to ReactElements by the finalize function.
|
|
49
|
+
*/
|
|
50
|
+
export type ButtonProps = ViewProps & Omit<SchemaProps<typeof ButtonModel>, 'icon' | 'endIcon'> & {
|
|
35
51
|
icon?: React.ReactNode;
|
|
36
52
|
endIcon?: React.ReactNode;
|
|
37
53
|
action?: ButtonAction;
|
|
38
|
-
}
|
|
54
|
+
};
|
|
39
55
|
export declare const Button: SerializableComponent<ButtonProps>;
|
|
40
56
|
export default Button;
|
|
41
57
|
//# sourceMappingURL=Button.d.ts.map
|