@aglyn/plugins-mui 1.0.0-beta.143
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/LICENSE +201 -0
- package/README.md +22 -0
- package/package.json +47 -0
- package/src/index.d.ts +21 -0
- package/src/index.js +22 -0
- package/src/index.js.map +1 -0
- package/src/lib/components/accordion.d.ts +96 -0
- package/src/lib/components/accordion.js +392 -0
- package/src/lib/components/accordion.js.map +1 -0
- package/src/lib/components/app-bar.d.ts +32 -0
- package/src/lib/components/app-bar.js +86 -0
- package/src/lib/components/app-bar.js.map +1 -0
- package/src/lib/components/blocks.d.ts +46 -0
- package/src/lib/components/blocks.js +1007 -0
- package/src/lib/components/blocks.js.map +1 -0
- package/src/lib/components/box.d.ts +47 -0
- package/src/lib/components/box.js +125 -0
- package/src/lib/components/box.js.map +1 -0
- package/src/lib/components/breadcrumbs.d.ts +44 -0
- package/src/lib/components/breadcrumbs.js +172 -0
- package/src/lib/components/breadcrumbs.js.map +1 -0
- package/src/lib/components/button.d.ts +89 -0
- package/src/lib/components/button.js +272 -0
- package/src/lib/components/button.js.map +1 -0
- package/src/lib/components/card.d.ts +61 -0
- package/src/lib/components/card.js +336 -0
- package/src/lib/components/card.js.map +1 -0
- package/src/lib/components/collection.d.ts +514 -0
- package/src/lib/components/collection.js +2999 -0
- package/src/lib/components/collection.js.map +1 -0
- package/src/lib/components/container.d.ts +42 -0
- package/src/lib/components/container.js +169 -0
- package/src/lib/components/container.js.map +1 -0
- package/src/lib/components/custom-html.d.ts +78 -0
- package/src/lib/components/custom-html.js +219 -0
- package/src/lib/components/custom-html.js.map +1 -0
- package/src/lib/components/data-table.d.ts +57 -0
- package/src/lib/components/data-table.js +216 -0
- package/src/lib/components/data-table.js.map +1 -0
- package/src/lib/components/document-root.d.ts +77 -0
- package/src/lib/components/document-root.js +118 -0
- package/src/lib/components/document-root.js.map +1 -0
- package/src/lib/components/drawer.d.ts +93 -0
- package/src/lib/components/drawer.js +566 -0
- package/src/lib/components/drawer.js.map +1 -0
- package/src/lib/components/function-controls.d.ts +66 -0
- package/src/lib/components/function-controls.js +207 -0
- package/src/lib/components/function-controls.js.map +1 -0
- package/src/lib/components/function-scope.d.ts +110 -0
- package/src/lib/components/function-scope.js +478 -0
- package/src/lib/components/function-scope.js.map +1 -0
- package/src/lib/components/function-widget.d.ts +75 -0
- package/src/lib/components/function-widget.js +307 -0
- package/src/lib/components/function-widget.js.map +1 -0
- package/src/lib/components/grid.d.ts +91 -0
- package/src/lib/components/grid.js +322 -0
- package/src/lib/components/grid.js.map +1 -0
- package/src/lib/components/icon.d.ts +54 -0
- package/src/lib/components/icon.js +163 -0
- package/src/lib/components/icon.js.map +1 -0
- package/src/lib/components/image-list.d.ts +58 -0
- package/src/lib/components/image-list.js +336 -0
- package/src/lib/components/image-list.js.map +1 -0
- package/src/lib/components/image.d.ts +154 -0
- package/src/lib/components/image.js +451 -0
- package/src/lib/components/image.js.map +1 -0
- package/src/lib/components/inline-text.d.ts +74 -0
- package/src/lib/components/inline-text.js +407 -0
- package/src/lib/components/inline-text.js.map +1 -0
- package/src/lib/components/language-switcher.d.ts +35 -0
- package/src/lib/components/language-switcher.js +179 -0
- package/src/lib/components/language-switcher.js.map +1 -0
- package/src/lib/components/layout-slot.d.ts +68 -0
- package/src/lib/components/layout-slot.js +192 -0
- package/src/lib/components/layout-slot.js.map +1 -0
- package/src/lib/components/link-box-accessible-name.d.ts +79 -0
- package/src/lib/components/link-box-accessible-name.js +158 -0
- package/src/lib/components/link-box-accessible-name.js.map +1 -0
- package/src/lib/components/link-box.d.ts +66 -0
- package/src/lib/components/link-box.js +212 -0
- package/src/lib/components/link-box.js.map +1 -0
- package/src/lib/components/list-item-text.d.ts +22 -0
- package/src/lib/components/list-item-text.js +86 -0
- package/src/lib/components/list-item-text.js.map +1 -0
- package/src/lib/components/list-item.d.ts +32 -0
- package/src/lib/components/list-item.js +127 -0
- package/src/lib/components/list-item.js.map +1 -0
- package/src/lib/components/list.d.ts +34 -0
- package/src/lib/components/list.js +108 -0
- package/src/lib/components/list.js.map +1 -0
- package/src/lib/components/markdown.d.ts +129 -0
- package/src/lib/components/markdown.js +853 -0
- package/src/lib/components/markdown.js.map +1 -0
- package/src/lib/components/nav-menu.d.ts +68 -0
- package/src/lib/components/nav-menu.js +683 -0
- package/src/lib/components/nav-menu.js.map +1 -0
- package/src/lib/components/pagination.d.ts +59 -0
- package/src/lib/components/pagination.js +243 -0
- package/src/lib/components/pagination.js.map +1 -0
- package/src/lib/components/paper.d.ts +47 -0
- package/src/lib/components/paper.js +202 -0
- package/src/lib/components/paper.js.map +1 -0
- package/src/lib/components/plugin-frame.d.ts +64 -0
- package/src/lib/components/plugin-frame.js +335 -0
- package/src/lib/components/plugin-frame.js.map +1 -0
- package/src/lib/components/plugin.d.ts +95 -0
- package/src/lib/components/plugin.js +304 -0
- package/src/lib/components/plugin.js.map +1 -0
- package/src/lib/components/product.d.ts +40 -0
- package/src/lib/components/product.js +287 -0
- package/src/lib/components/product.js.map +1 -0
- package/src/lib/components/reusable-instance.d.ts +57 -0
- package/src/lib/components/reusable-instance.js +126 -0
- package/src/lib/components/reusable-instance.js.map +1 -0
- package/src/lib/components/screen-link.d.ts +85 -0
- package/src/lib/components/screen-link.js +324 -0
- package/src/lib/components/screen-link.js.map +1 -0
- package/src/lib/components/search-box.d.ts +41 -0
- package/src/lib/components/search-box.js +125 -0
- package/src/lib/components/search-box.js.map +1 -0
- package/src/lib/components/section.d.ts +56 -0
- package/src/lib/components/section.js +132 -0
- package/src/lib/components/section.js.map +1 -0
- package/src/lib/components/stack.d.ts +55 -0
- package/src/lib/components/stack.js +309 -0
- package/src/lib/components/stack.js.map +1 -0
- package/src/lib/components/tabs.d.ts +288 -0
- package/src/lib/components/tabs.js +788 -0
- package/src/lib/components/tabs.js.map +1 -0
- package/src/lib/components/theme-mode-switcher.d.ts +38 -0
- package/src/lib/components/theme-mode-switcher.js +168 -0
- package/src/lib/components/theme-mode-switcher.js.map +1 -0
- package/src/lib/components/toolbar.d.ts +37 -0
- package/src/lib/components/toolbar.js +117 -0
- package/src/lib/components/toolbar.js.map +1 -0
- package/src/lib/components/typography.d.ts +33 -0
- package/src/lib/components/typography.js +433 -0
- package/src/lib/components/typography.js.map +1 -0
- package/src/lib/components/video-lightbox-controls.d.ts +131 -0
- package/src/lib/components/video-lightbox-controls.js +536 -0
- package/src/lib/components/video-lightbox-controls.js.map +1 -0
- package/src/lib/components/video-lightbox.d.ts +60 -0
- package/src/lib/components/video-lightbox.js +247 -0
- package/src/lib/components/video-lightbox.js.map +1 -0
- package/src/lib/components/video-playback-beacon.d.ts +80 -0
- package/src/lib/components/video-playback-beacon.js +128 -0
- package/src/lib/components/video-playback-beacon.js.map +1 -0
- package/src/lib/components/video-player-frame.d.ts +58 -0
- package/src/lib/components/video-player-frame.js +51 -0
- package/src/lib/components/video-player-frame.js.map +1 -0
- package/src/lib/components/video.d.ts +220 -0
- package/src/lib/components/video.js +874 -0
- package/src/lib/components/video.js.map +1 -0
- package/src/lib/constants/bundle-common.d.ts +17 -0
- package/src/lib/constants/bundle-common.js +18 -0
- package/src/lib/constants/bundle-common.js.map +1 -0
- package/src/lib/constants/field-presets.d.ts +93 -0
- package/src/lib/constants/field-presets.js +248 -0
- package/src/lib/constants/field-presets.js.map +1 -0
- package/src/lib/plugin.d.ts +80 -0
- package/src/lib/plugin.js +599 -0
- package/src/lib/plugin.js.map +1 -0
- package/src/lib/utils/author-html-label.d.ts +73 -0
- package/src/lib/utils/author-html-label.js +89 -0
- package/src/lib/utils/author-html-label.js.map +1 -0
- package/src/lib/utils/drop-cleared-props.d.ts +18 -0
- package/src/lib/utils/drop-cleared-props.js +74 -0
- package/src/lib/utils/drop-cleared-props.js.map +1 -0
- package/src/lib/utils/element-picker.d.ts +99 -0
- package/src/lib/utils/element-picker.js +140 -0
- package/src/lib/utils/element-picker.js.map +1 -0
- package/src/lib/utils/generate-preset-id.d.ts +19 -0
- package/src/lib/utils/generate-preset-id.js +25 -0
- package/src/lib/utils/generate-preset-id.js.map +1 -0
- package/src/lib/utils/link-target-props.d.ts +53 -0
- package/src/lib/utils/link-target-props.js +53 -0
- package/src/lib/utils/link-target-props.js.map +1 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
/**
|
|
5
|
+
* @license
|
|
6
|
+
* Copyright 2026 Aglyn LLC
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
9
|
+
* you may not use this file except in compliance with the License.
|
|
10
|
+
* You may obtain a copy of the License at
|
|
11
|
+
*
|
|
12
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
*
|
|
14
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
15
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
16
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
17
|
+
* See the License for the specific language governing permissions and
|
|
18
|
+
* limitations under the License.
|
|
19
|
+
*/ import * as Aglyn from "@aglyn/aglyn";
|
|
20
|
+
import { mdiCardOutline, mdiCardText, mdiGestureTap } from "@aglyn/shared-data-mdi";
|
|
21
|
+
import MuiCard from "@mui/material/Card";
|
|
22
|
+
import MuiCardActions from "@mui/material/CardActions";
|
|
23
|
+
import MuiCardContent from "@mui/material/CardContent";
|
|
24
|
+
import MuiCardHeader from "@mui/material/CardHeader";
|
|
25
|
+
import { forwardRef } from "react";
|
|
26
|
+
import { applySemanticElement, semanticElementAttribute, semanticElementLabelAttribute } from "../utils/element-picker.js";
|
|
27
|
+
import { BUNDLE_ID } from "../constants/bundle-common.js";
|
|
28
|
+
import { dropClearedProps } from "../utils/drop-cleared-props.js";
|
|
29
|
+
import { generatePresetId } from "../utils/generate-preset-id.js";
|
|
30
|
+
import { toElevation } from "./paper.js";
|
|
31
|
+
// Component ids are persisted in screen documents; never rename.
|
|
32
|
+
export const CARD_ID = 'muiCard';
|
|
33
|
+
export const CARD_HEADER_ID = 'muiCardHeader';
|
|
34
|
+
export const CARD_CONTENT_ID = 'muiCardContent';
|
|
35
|
+
export const CARD_ACTIONS_ID = 'muiCardActions';
|
|
36
|
+
/**
|
|
37
|
+
* Card (https://mui.com/material-ui/react-card/) — a Paper with card
|
|
38
|
+
* padding conventions. Composed from separate Header/Content/Actions
|
|
39
|
+
* elements rather than a single element with a dozen text props, so the
|
|
40
|
+
* pieces are individually selectable, stylable and reorderable on the
|
|
41
|
+
* canvas like everything else.
|
|
42
|
+
*/ const CardElement = /*#__PURE__*/ forwardRef((rawProps, ref)=>{
|
|
43
|
+
// See PaperElement: cleared props are dropped before anything reads
|
|
44
|
+
// them, so `rest` cannot carry a `null` into MUI (AGL-1451).
|
|
45
|
+
const props = dropClearedProps(rawProps);
|
|
46
|
+
const { variant, elevation, children } = props, rest = _object_without_properties_loose(props, [
|
|
47
|
+
"variant",
|
|
48
|
+
"elevation",
|
|
49
|
+
"children"
|
|
50
|
+
]);
|
|
51
|
+
const outlined = variant === 'outlined';
|
|
52
|
+
return /*#__PURE__*/ _jsx(MuiCard, _extends({
|
|
53
|
+
ref: ref,
|
|
54
|
+
variant: outlined ? 'outlined' : 'elevation',
|
|
55
|
+
// Same trap as Paper: a string elevation indexes MUI's shadow
|
|
56
|
+
// array and yields a completely flat card.
|
|
57
|
+
elevation: outlined ? undefined : toElevation(elevation)
|
|
58
|
+
}, applySemanticElement(rest), {
|
|
59
|
+
children: children
|
|
60
|
+
}));
|
|
61
|
+
});
|
|
62
|
+
CardElement.displayName = 'AglynCard';
|
|
63
|
+
/**
|
|
64
|
+
* Card header. `title`/`subheader` are plain strings: MUI wraps each in
|
|
65
|
+
* its own Typography, and passing children instead would drop the
|
|
66
|
+
* heading/subheading type scale a card header exists to provide.
|
|
67
|
+
*/ export const CardHeaderElement = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
68
|
+
const { title, subheader } = props, rest = _object_without_properties_loose(props, [
|
|
69
|
+
"title",
|
|
70
|
+
"subheader"
|
|
71
|
+
]);
|
|
72
|
+
// A header with neither string is invisible and unselectable on the
|
|
73
|
+
// canvas; a placeholder keeps the node reachable.
|
|
74
|
+
delete rest.children;
|
|
75
|
+
return /*#__PURE__*/ _jsx(MuiCardHeader, _extends({
|
|
76
|
+
ref: ref,
|
|
77
|
+
title: title || (subheader ? undefined : 'Card title'),
|
|
78
|
+
subheader: subheader || undefined
|
|
79
|
+
}, rest));
|
|
80
|
+
});
|
|
81
|
+
CardHeaderElement.displayName = 'AglynCardHeader';
|
|
82
|
+
export const CardContentElement = /*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ _jsx(MuiCardContent, _extends({
|
|
83
|
+
ref: ref
|
|
84
|
+
}, props)));
|
|
85
|
+
CardContentElement.displayName = 'AglynCardContent';
|
|
86
|
+
export const CardActionsElement = /*#__PURE__*/ forwardRef((props, ref)=>/*#__PURE__*/ _jsx(MuiCardActions, _extends({
|
|
87
|
+
ref: ref
|
|
88
|
+
}, props)));
|
|
89
|
+
CardActionsElement.displayName = 'AglynCardActions';
|
|
90
|
+
/** Elevation only means anything on the (default) `elevation` variant. */ const ELEVATION_ONLY = {
|
|
91
|
+
when: 'variant',
|
|
92
|
+
is: 'outlined',
|
|
93
|
+
notMatch: true
|
|
94
|
+
};
|
|
95
|
+
export const cardSchema = {
|
|
96
|
+
$id: CARD_ID,
|
|
97
|
+
pluginId: BUNDLE_ID,
|
|
98
|
+
displayName: 'Card',
|
|
99
|
+
description: 'Surface that groups a header, content and actions about one subject.',
|
|
100
|
+
category: Aglyn.ComponentCategory.SURFACE,
|
|
101
|
+
icon: {
|
|
102
|
+
path: mdiCardOutline.path,
|
|
103
|
+
sx: {
|
|
104
|
+
color: '#2196f3'
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
attributes: [
|
|
108
|
+
semanticElementAttribute('this card'),
|
|
109
|
+
semanticElementLabelAttribute(),
|
|
110
|
+
{
|
|
111
|
+
name: 'variant',
|
|
112
|
+
label: 'Variant',
|
|
113
|
+
description: 'Elevation raises the card with a shadow; outlined draws a border ' + 'instead and has no shadow.',
|
|
114
|
+
component: Aglyn.FieldComponentType.SELECT,
|
|
115
|
+
// Same call as Paper (AGL-1451): a real sentinel, because `elevation`
|
|
116
|
+
// is MUI's own value for the other half of this two-way choice and is
|
|
117
|
+
// what the Elevation control is conditioned on. `''` could not
|
|
118
|
+
// persist (AGL-1191).
|
|
119
|
+
options: [
|
|
120
|
+
{
|
|
121
|
+
value: 'elevation',
|
|
122
|
+
label: 'Elevation (default)'
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
value: 'outlined',
|
|
126
|
+
label: 'Outlined'
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'elevation',
|
|
132
|
+
label: 'Elevation',
|
|
133
|
+
description: 'Shadow depth from 0 (flat) to 24.',
|
|
134
|
+
component: Aglyn.FieldComponentType.TEXT_FIELD,
|
|
135
|
+
type: 'number',
|
|
136
|
+
condition: ELEVATION_ONLY
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
};
|
|
140
|
+
export const cardHeaderSchema = {
|
|
141
|
+
$id: CARD_HEADER_ID,
|
|
142
|
+
pluginId: BUNDLE_ID,
|
|
143
|
+
displayName: 'Card Header',
|
|
144
|
+
description: 'The title and subheader at the top of a card.',
|
|
145
|
+
category: Aglyn.ComponentCategory.SURFACE,
|
|
146
|
+
icon: {
|
|
147
|
+
path: mdiCardText.path,
|
|
148
|
+
sx: {
|
|
149
|
+
color: '#2196f3'
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
flags: {
|
|
153
|
+
selfClosing: Aglyn.FEATURE_FLAG.ENABLED
|
|
154
|
+
},
|
|
155
|
+
attributes: [
|
|
156
|
+
{
|
|
157
|
+
name: 'title',
|
|
158
|
+
label: 'Title',
|
|
159
|
+
description: 'The card heading.',
|
|
160
|
+
component: Aglyn.FieldComponentType.TEXT_FIELD
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: 'subheader',
|
|
164
|
+
label: 'Subheader',
|
|
165
|
+
description: 'Secondary line under the title.',
|
|
166
|
+
component: Aglyn.FieldComponentType.TEXT_FIELD
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
};
|
|
170
|
+
export const cardContentSchema = {
|
|
171
|
+
$id: CARD_CONTENT_ID,
|
|
172
|
+
pluginId: BUNDLE_ID,
|
|
173
|
+
displayName: 'Card Content',
|
|
174
|
+
description: 'The padded body region of a card.',
|
|
175
|
+
category: Aglyn.ComponentCategory.SURFACE,
|
|
176
|
+
icon: {
|
|
177
|
+
path: mdiCardText.path,
|
|
178
|
+
sx: {
|
|
179
|
+
color: '#2196f3'
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
export const cardActionsSchema = {
|
|
184
|
+
$id: CARD_ACTIONS_ID,
|
|
185
|
+
pluginId: BUNDLE_ID,
|
|
186
|
+
displayName: 'Card Actions',
|
|
187
|
+
description: 'The button row at the bottom of a card.',
|
|
188
|
+
category: Aglyn.ComponentCategory.SURFACE,
|
|
189
|
+
icon: {
|
|
190
|
+
path: mdiGestureTap.path,
|
|
191
|
+
sx: {
|
|
192
|
+
color: '#2196f3'
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
attributes: [
|
|
196
|
+
{
|
|
197
|
+
name: 'disableSpacing',
|
|
198
|
+
label: 'Disable spacing?',
|
|
199
|
+
description: 'If true, the gap between action buttons is removed.',
|
|
200
|
+
component: Aglyn.FieldComponentType.SWITCH
|
|
201
|
+
}
|
|
202
|
+
]
|
|
203
|
+
};
|
|
204
|
+
export const cardPresets = [
|
|
205
|
+
{
|
|
206
|
+
$id: generatePresetId(CARD_ID),
|
|
207
|
+
type: Aglyn.NodeType.PRESET,
|
|
208
|
+
displayName: 'Card',
|
|
209
|
+
pluginId: BUNDLE_ID,
|
|
210
|
+
description: 'Image, heading, body text and an action button',
|
|
211
|
+
category: Aglyn.ComponentCategory.SURFACE,
|
|
212
|
+
icon: cardSchema.icon,
|
|
213
|
+
data: {
|
|
214
|
+
$id: null,
|
|
215
|
+
componentId: CARD_ID,
|
|
216
|
+
pluginId: BUNDLE_ID,
|
|
217
|
+
props: {},
|
|
218
|
+
// Node-level sx (AGL-1346) — the record the Styles panel edits.
|
|
219
|
+
sx: {
|
|
220
|
+
maxWidth: 360
|
|
221
|
+
},
|
|
222
|
+
nodes: [
|
|
223
|
+
// The existing Image element rather than MUI's CardMedia: it
|
|
224
|
+
// already carries the media-CDN srcSet, the lazy loading and the
|
|
225
|
+
// empty-source placeholder (AGL-74/175), none of which is worth
|
|
226
|
+
// re-implementing for a card.
|
|
227
|
+
{
|
|
228
|
+
$id: null,
|
|
229
|
+
componentId: 'image',
|
|
230
|
+
pluginId: BUNDLE_ID,
|
|
231
|
+
props: {
|
|
232
|
+
alt: '',
|
|
233
|
+
height: '160px',
|
|
234
|
+
objectFit: 'cover'
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
$id: null,
|
|
239
|
+
componentId: CARD_HEADER_ID,
|
|
240
|
+
pluginId: BUNDLE_ID,
|
|
241
|
+
props: {
|
|
242
|
+
title: 'Card title',
|
|
243
|
+
subheader: 'Supporting line'
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
$id: null,
|
|
248
|
+
componentId: CARD_CONTENT_ID,
|
|
249
|
+
pluginId: BUNDLE_ID,
|
|
250
|
+
nodes: [
|
|
251
|
+
{
|
|
252
|
+
$id: null,
|
|
253
|
+
componentId: 'muiTypography',
|
|
254
|
+
pluginId: BUNDLE_ID,
|
|
255
|
+
props: {
|
|
256
|
+
variant: 'body2',
|
|
257
|
+
children: 'A short description of whatever this card is about.'
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
]
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
$id: null,
|
|
264
|
+
componentId: CARD_ACTIONS_ID,
|
|
265
|
+
pluginId: BUNDLE_ID,
|
|
266
|
+
nodes: [
|
|
267
|
+
{
|
|
268
|
+
$id: null,
|
|
269
|
+
componentId: 'muiScreenLink',
|
|
270
|
+
pluginId: BUNDLE_ID,
|
|
271
|
+
// `'button'`, not `''` (AGL-1453). This preset was MINTING the
|
|
272
|
+
// unpersistable value: every card dropped on a canvas planted a
|
|
273
|
+
// `renderAs: ''` that no longer matches any option. Renders
|
|
274
|
+
// identically — both take the non-link branch.
|
|
275
|
+
props: {
|
|
276
|
+
children: 'Learn more',
|
|
277
|
+
renderAs: 'button',
|
|
278
|
+
size: 'small'
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
]
|
|
282
|
+
}
|
|
283
|
+
]
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
$id: generatePresetId(CARD_ID, 'outlined'),
|
|
288
|
+
type: Aglyn.NodeType.PRESET,
|
|
289
|
+
displayName: 'Card Outlined',
|
|
290
|
+
pluginId: BUNDLE_ID,
|
|
291
|
+
description: 'Text-only card with a border instead of a shadow',
|
|
292
|
+
category: Aglyn.ComponentCategory.SURFACE,
|
|
293
|
+
icon: cardSchema.icon,
|
|
294
|
+
data: {
|
|
295
|
+
$id: null,
|
|
296
|
+
componentId: CARD_ID,
|
|
297
|
+
pluginId: BUNDLE_ID,
|
|
298
|
+
props: {
|
|
299
|
+
variant: 'outlined'
|
|
300
|
+
},
|
|
301
|
+
sx: {
|
|
302
|
+
maxWidth: 360
|
|
303
|
+
},
|
|
304
|
+
nodes: [
|
|
305
|
+
{
|
|
306
|
+
$id: null,
|
|
307
|
+
componentId: CARD_CONTENT_ID,
|
|
308
|
+
pluginId: BUNDLE_ID,
|
|
309
|
+
nodes: [
|
|
310
|
+
{
|
|
311
|
+
$id: null,
|
|
312
|
+
componentId: 'muiTypography',
|
|
313
|
+
pluginId: BUNDLE_ID,
|
|
314
|
+
props: {
|
|
315
|
+
variant: 'h6',
|
|
316
|
+
children: 'Card title'
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
$id: null,
|
|
321
|
+
componentId: 'muiTypography',
|
|
322
|
+
pluginId: BUNDLE_ID,
|
|
323
|
+
props: {
|
|
324
|
+
variant: 'body2',
|
|
325
|
+
children: 'A short description of this card.'
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
]
|
|
329
|
+
}
|
|
330
|
+
]
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
];
|
|
334
|
+
export default CardElement;
|
|
335
|
+
|
|
336
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/mui/src/lib/components/card.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as Aglyn from '@aglyn/aglyn'\nimport { mdiCardOutline, mdiCardText, mdiGestureTap } from '@aglyn/shared-data-mdi'\nimport MuiCard from '@mui/material/Card'\nimport MuiCardActions from '@mui/material/CardActions'\nimport MuiCardContent from '@mui/material/CardContent'\nimport MuiCardHeader from '@mui/material/CardHeader'\nimport { forwardRef, type ReactNode } from 'react'\nimport {\n applySemanticElement,\n semanticElementAttribute,\n semanticElementLabelAttribute,\n} from '../utils/element-picker'\nimport { BUNDLE_ID } from '../constants/bundle-common'\nimport { dropClearedProps } from '../utils/drop-cleared-props'\nimport { generatePresetId } from '../utils/generate-preset-id'\nimport { toElevation } from './paper'\n\n// Component ids are persisted in screen documents; never rename.\nexport const CARD_ID: Aglyn.ComponentId = 'muiCard'\nexport const CARD_HEADER_ID: Aglyn.ComponentId = 'muiCardHeader'\nexport const CARD_CONTENT_ID: Aglyn.ComponentId = 'muiCardContent'\nexport const CARD_ACTIONS_ID: Aglyn.ComponentId = 'muiCardActions'\n\nexport interface CardElementProps {\n variant?: 'elevation' | 'outlined'\n /** Shadow depth, 0–24; ignored on the outlined variant. */\n elevation?: number | string\n children?: ReactNode\n}\n\nexport interface CardHeaderElementProps {\n title?: string\n subheader?: string\n}\n\nexport interface CardActionsElementProps {\n /** If true, the 8px gap between action buttons is removed. */\n disableSpacing?: boolean\n children?: ReactNode\n}\n\n/**\n * Card (https://mui.com/material-ui/react-card/) — a Paper with card\n * padding conventions. Composed from separate Header/Content/Actions\n * elements rather than a single element with a dozen text props, so the\n * pieces are individually selectable, stylable and reorderable on the\n * canvas like everything else.\n */\nconst CardElement = forwardRef<HTMLDivElement, CardElementProps>(\n (rawProps, ref) => {\n // See PaperElement: cleared props are dropped before anything reads\n // them, so `rest` cannot carry a `null` into MUI (AGL-1451).\n const props = dropClearedProps(rawProps)\n const { variant, elevation, children, ...rest } = props\n const outlined = variant === 'outlined'\n return (\n <MuiCard\n ref={ref}\n variant={outlined ? 'outlined' : 'elevation'}\n // Same trap as Paper: a string elevation indexes MUI's shadow\n // array and yields a completely flat card.\n elevation={outlined ? undefined : toElevation(elevation)}\n {...applySemanticElement(rest as Record<string, unknown>)}\n >\n {children}\n </MuiCard>\n )\n },\n)\nCardElement.displayName = 'AglynCard'\n\n/**\n * Card header. `title`/`subheader` are plain strings: MUI wraps each in\n * its own Typography, and passing children instead would drop the\n * heading/subheading type scale a card header exists to provide.\n */\nexport const CardHeaderElement = forwardRef<\n HTMLDivElement,\n CardHeaderElementProps\n>((props, ref) => {\n const { title, subheader, ...rest } = props as CardHeaderElementProps & {\n children?: unknown\n }\n // A header with neither string is invisible and unselectable on the\n // canvas; a placeholder keeps the node reachable.\n delete (rest as { children?: unknown }).children\n return (\n <MuiCardHeader\n ref={ref}\n title={title || (subheader ? undefined : 'Card title')}\n subheader={subheader || undefined}\n {...rest}\n />\n )\n})\nCardHeaderElement.displayName = 'AglynCardHeader'\n\nexport const CardContentElement = forwardRef<\n HTMLDivElement,\n { children?: ReactNode }\n>((props, ref) => <MuiCardContent ref={ref} {...props} />)\nCardContentElement.displayName = 'AglynCardContent'\n\nexport const CardActionsElement = forwardRef<\n HTMLDivElement,\n CardActionsElementProps\n>((props, ref) => <MuiCardActions ref={ref} {...props} />)\nCardActionsElement.displayName = 'AglynCardActions'\n\n/** Elevation only means anything on the (default) `elevation` variant. */\nconst ELEVATION_ONLY = { when: 'variant', is: 'outlined', notMatch: true }\n\nexport const cardSchema: Aglyn.ComponentSchema<CardElementProps> = {\n $id: CARD_ID,\n pluginId: BUNDLE_ID,\n displayName: 'Card',\n description:\n 'Surface that groups a header, content and actions about one subject.',\n category: Aglyn.ComponentCategory.SURFACE,\n icon: { path: mdiCardOutline.path, sx: { color: '#2196f3' } },\n attributes: [\n semanticElementAttribute('this card'),\n semanticElementLabelAttribute(),\n {\n name: 'variant',\n label: 'Variant',\n description:\n 'Elevation raises the card with a shadow; outlined draws a border ' +\n 'instead and has no shadow.',\n component: Aglyn.FieldComponentType.SELECT,\n // Same call as Paper (AGL-1451): a real sentinel, because `elevation`\n // is MUI's own value for the other half of this two-way choice and is\n // what the Elevation control is conditioned on. `''` could not\n // persist (AGL-1191).\n options: [\n { value: 'elevation', label: 'Elevation (default)' },\n { value: 'outlined', label: 'Outlined' },\n ],\n },\n {\n name: 'elevation',\n label: 'Elevation',\n description: 'Shadow depth from 0 (flat) to 24.',\n component: Aglyn.FieldComponentType.TEXT_FIELD,\n type: 'number',\n condition: ELEVATION_ONLY,\n },\n ],\n}\n\nexport const cardHeaderSchema: Aglyn.ComponentSchema<CardHeaderElementProps> = {\n $id: CARD_HEADER_ID,\n pluginId: BUNDLE_ID,\n displayName: 'Card Header',\n description: 'The title and subheader at the top of a card.',\n category: Aglyn.ComponentCategory.SURFACE,\n icon: { path: mdiCardText.path, sx: { color: '#2196f3' } },\n flags: { selfClosing: Aglyn.FEATURE_FLAG.ENABLED },\n attributes: [\n {\n name: 'title',\n label: 'Title',\n description: 'The card heading.',\n component: Aglyn.FieldComponentType.TEXT_FIELD,\n },\n {\n name: 'subheader',\n label: 'Subheader',\n description: 'Secondary line under the title.',\n component: Aglyn.FieldComponentType.TEXT_FIELD,\n },\n ],\n}\n\nexport const cardContentSchema: Aglyn.ComponentSchema = {\n $id: CARD_CONTENT_ID,\n pluginId: BUNDLE_ID,\n displayName: 'Card Content',\n description: 'The padded body region of a card.',\n category: Aglyn.ComponentCategory.SURFACE,\n icon: { path: mdiCardText.path, sx: { color: '#2196f3' } },\n}\n\nexport const cardActionsSchema: Aglyn.ComponentSchema<CardActionsElementProps> =\n {\n $id: CARD_ACTIONS_ID,\n pluginId: BUNDLE_ID,\n displayName: 'Card Actions',\n description: 'The button row at the bottom of a card.',\n category: Aglyn.ComponentCategory.SURFACE,\n icon: { path: mdiGestureTap.path, sx: { color: '#2196f3' } },\n attributes: [\n {\n name: 'disableSpacing',\n label: 'Disable spacing?',\n description: 'If true, the gap between action buttons is removed.',\n component: Aglyn.FieldComponentType.SWITCH,\n },\n ],\n }\n\nexport const cardPresets: Aglyn.PresetSchema[] = [\n {\n $id: generatePresetId(CARD_ID),\n type: Aglyn.NodeType.PRESET,\n displayName: 'Card',\n pluginId: BUNDLE_ID,\n description: 'Image, heading, body text and an action button',\n category: Aglyn.ComponentCategory.SURFACE,\n icon: cardSchema.icon,\n data: {\n $id: null,\n componentId: CARD_ID,\n pluginId: BUNDLE_ID,\n props: {},\n // Node-level sx (AGL-1346) — the record the Styles panel edits.\n sx: { maxWidth: 360 },\n nodes: [\n // The existing Image element rather than MUI's CardMedia: it\n // already carries the media-CDN srcSet, the lazy loading and the\n // empty-source placeholder (AGL-74/175), none of which is worth\n // re-implementing for a card.\n {\n $id: null,\n componentId: 'image',\n pluginId: BUNDLE_ID,\n props: { alt: '', height: '160px', objectFit: 'cover' },\n },\n {\n $id: null,\n componentId: CARD_HEADER_ID,\n pluginId: BUNDLE_ID,\n props: { title: 'Card title', subheader: 'Supporting line' },\n },\n {\n $id: null,\n componentId: CARD_CONTENT_ID,\n pluginId: BUNDLE_ID,\n nodes: [\n {\n $id: null,\n componentId: 'muiTypography',\n pluginId: BUNDLE_ID,\n props: {\n variant: 'body2',\n children:\n 'A short description of whatever this card is about.',\n },\n },\n ],\n },\n {\n $id: null,\n componentId: CARD_ACTIONS_ID,\n pluginId: BUNDLE_ID,\n nodes: [\n {\n $id: null,\n componentId: 'muiScreenLink',\n pluginId: BUNDLE_ID,\n // `'button'`, not `''` (AGL-1453). This preset was MINTING the\n // unpersistable value: every card dropped on a canvas planted a\n // `renderAs: ''` that no longer matches any option. Renders\n // identically — both take the non-link branch.\n props: {\n children: 'Learn more',\n renderAs: 'button',\n size: 'small',\n },\n },\n ],\n },\n ],\n },\n },\n {\n $id: generatePresetId(CARD_ID, 'outlined'),\n type: Aglyn.NodeType.PRESET,\n displayName: 'Card Outlined',\n pluginId: BUNDLE_ID,\n description: 'Text-only card with a border instead of a shadow',\n category: Aglyn.ComponentCategory.SURFACE,\n icon: cardSchema.icon,\n data: {\n $id: null,\n componentId: CARD_ID,\n pluginId: BUNDLE_ID,\n props: { variant: 'outlined' },\n sx: { maxWidth: 360 },\n nodes: [\n {\n $id: null,\n componentId: CARD_CONTENT_ID,\n pluginId: BUNDLE_ID,\n nodes: [\n {\n $id: null,\n componentId: 'muiTypography',\n pluginId: BUNDLE_ID,\n props: { variant: 'h6', children: 'Card title' },\n },\n {\n $id: null,\n componentId: 'muiTypography',\n pluginId: BUNDLE_ID,\n props: {\n variant: 'body2',\n children: 'A short description of this card.',\n },\n },\n ],\n },\n ],\n },\n },\n]\n\nexport default CardElement\n"],"names":["Aglyn","mdiCardOutline","mdiCardText","mdiGestureTap","MuiCard","MuiCardActions","MuiCardContent","MuiCardHeader","forwardRef","applySemanticElement","semanticElementAttribute","semanticElementLabelAttribute","BUNDLE_ID","dropClearedProps","generatePresetId","toElevation","CARD_ID","CARD_HEADER_ID","CARD_CONTENT_ID","CARD_ACTIONS_ID","CardElement","rawProps","ref","props","variant","elevation","children","rest","outlined","undefined","displayName","CardHeaderElement","title","subheader","CardContentElement","CardActionsElement","ELEVATION_ONLY","when","is","notMatch","cardSchema","$id","pluginId","description","category","ComponentCategory","SURFACE","icon","path","sx","color","attributes","name","label","component","FieldComponentType","SELECT","options","value","TEXT_FIELD","type","condition","cardHeaderSchema","flags","selfClosing","FEATURE_FLAG","ENABLED","cardContentSchema","cardActionsSchema","SWITCH","cardPresets","NodeType","PRESET","data","componentId","maxWidth","nodes","alt","height","objectFit","renderAs","size"],"mappings":"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"}
|