@maggioli-design-system/magma-react 2.3.0 → 2.4.1
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/AGENTS.md +1 -1
- package/CHANGELOG.md +250 -0
- package/agents/anti-patterns.md +7 -4
- package/agents/color.md +2 -2
- package/agents/components.md +2 -1
- package/agents/conventions.md +16 -0
- package/agents/install.md +6 -1
- package/dist/components.js +1 -0
- package/dist/components.server.js +1 -0
- package/dist/mds-table-footer.server.js +1 -1
- package/dist/mds-toast-region.js +12 -0
- package/dist/mds-toast-region.server.js +15 -0
- package/dist/mds-toast.server.js +2 -1
- package/dist/types/components.d.ts +1 -0
- package/dist/types/components.server.d.ts +1 -0
- package/dist/types/mds-toast-region.d.ts +9 -0
- package/dist/types/mds-toast-region.server.d.ts +11 -0
- package/dist/types/mds-toast.d.ts +2 -2
- package/dist/types/mds-toast.server.d.ts +2 -2
- package/package.json +4 -3
package/AGENTS.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
-->
|
|
6
6
|
# @maggioli-design-system/magma-react - agent install guide
|
|
7
7
|
|
|
8
|
-
> Version 2.
|
|
8
|
+
> Version 2.4.1. You (the agent) are installing Magma into THIS project. Do not
|
|
9
9
|
> assume the setup - detect it from the project, then ask the user only for what you
|
|
10
10
|
> cannot infer. The detailed steps live in [`agents/install.md`](agents/install.md)
|
|
11
11
|
> (this target) and [`agents/assets.md`](agents/assets.md) (shared styles, fonts,
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,256 @@ package.
|
|
|
7
7
|
It is released together with `magma`, at the same version: the sections are the
|
|
8
8
|
releases of `magma`.
|
|
9
9
|
|
|
10
|
+
## [magma@2.4.1] - 2026-10-21
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- *(mds-emoji)* Read CSS custom properties once the emoji has a computed style
|
|
15
|
+
- *(mds-emoji)* Keep hearing the pointer when the host is moved
|
|
16
|
+
- *(mds-tree-item)* Count the first and the last child among the items
|
|
17
|
+
- *(mds-input-switch)* Keep the page still when clicked in a scrolled box
|
|
18
|
+
|
|
19
|
+
### Documentation
|
|
20
|
+
|
|
21
|
+
- *(magma)* Describe the single trunk main and the manual release
|
|
22
|
+
|
|
23
|
+
## [magma@2.4.0] - 2026-10-20
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- *(mds-accordion-timer,mds-accordion-timer-item)* Announce each selection once, keep the open one
|
|
28
|
+
- *(mds-accordion)* Announce every change of the open items, and only those
|
|
29
|
+
- *(mds-pref-mode,mds-pref-animation,mds-pref-consumption,mds-pref-contrast)* Announce a pick once
|
|
30
|
+
- *(mds-pref-theme)* Announce a theme or a corner shape once, not on every render
|
|
31
|
+
- *(mds-pref-language)* Select the item of a language set from code
|
|
32
|
+
- *(mds-toast)* Emit mdsToastClose once per dismissal and stop the countdown on hide
|
|
33
|
+
- *(mds-push-notification-item)* Send the id the close event declares
|
|
34
|
+
- *(mds-header)* Type the visibility detail as the string it carries
|
|
35
|
+
- *(mds-file)* Send the description the card shows
|
|
36
|
+
- *(mds-breadcrumb)* Name the item the back arrow selects as the caller
|
|
37
|
+
- *(mds-details)* Write the user's toggle into opened
|
|
38
|
+
- *(mds-calendar)* Put a backwards range in order
|
|
39
|
+
- *(mds-table,mds-table-row)* Follow a selection made from code, remove the scroll listener
|
|
40
|
+
- *(mds-notification)* Stop following the target when the badge leaves the page
|
|
41
|
+
- *(mds-label)* Wrap at the width the label is given with truncate none or all
|
|
42
|
+
- *(design-tokens,styles,magma)* The shadow ink stays dark in dark mode, no more light halo
|
|
43
|
+
- *(mds-dropdown)* A second click on the caller closes the panel
|
|
44
|
+
- *(mds-button-dropdown)* The link and the initial focus belong to the primary action
|
|
45
|
+
- *(mds-emoji)* The gaze follows the direction of the pointer, at any size
|
|
46
|
+
- *(mds-table)* Call setActions only on a header that has it
|
|
47
|
+
- *(mds-modal)* Open the dialog after the render that reflects position and animation
|
|
48
|
+
- *(mds-text)* Keep the accents of a truncated label or option text visible
|
|
49
|
+
- *(mds-chip)* Paint the ground with surface-overlay, not the grey wash
|
|
50
|
+
- *(mds-banner)* Paint the neutral ground with surface-overlay, not the card's surface-raised
|
|
51
|
+
- *(mds-input-otp,mds-pref-theme-item,mds-stepper-bar-item,stencil)* Import the FOUC sheets
|
|
52
|
+
- *(mds-text)* Import the animation preference sheet
|
|
53
|
+
- *(mds-tooltip)* Import the dark high-contrast shadow sheet
|
|
54
|
+
- *(mds-avatar,mds-avatar-stack)* Spell the pill on the corner axis
|
|
55
|
+
- *(mds-entity)* Take the radii and the shape of the corner axis
|
|
56
|
+
- *(mds-chip,mds-mention)* Spell the pills on the corner axis
|
|
57
|
+
- *(mds-hr,mds-separator)* Spell the rounded rule on the corner axis
|
|
58
|
+
- *(mds-input-switch,mds-input)* Spell the switch and the password dots as pills
|
|
59
|
+
- *(mds-notification,mds-radial-progress)* Spell the circles on the corner axis
|
|
60
|
+
- *(mds-paginator,mds-paginator-item)* Spell the pills on the corner axis
|
|
61
|
+
- *(mds-horizontal-scroll)* Spell the dots and the arrows as pills
|
|
62
|
+
- *(mds-breadcrumb-item)* Spell the pill of the button on the corner axis
|
|
63
|
+
- *(mds-filter,mds-filter-item)* Spell the pills on the corner axis
|
|
64
|
+
- *(mds-badge)* Spell the pill on the corner axis
|
|
65
|
+
- *(mds-stepper-bar-item)* Take the radii of the corner axis
|
|
66
|
+
- *(mds-push-notification-item)* Take the radii of the corner axis
|
|
67
|
+
- *(mds-tooltip,mds-text,mds-note)* Take the smallest step of the corner axis
|
|
68
|
+
- *(mds-accordion-item,mds-accordion-timer-item,mds-details)* Cap the corner of the header
|
|
69
|
+
- *(mds-bibliography)* Spell the pill of the link on the corner axis
|
|
70
|
+
- *(mds-price-table-list,mds-zero,mds-usage)* Take the radii of the corner axis
|
|
71
|
+
- *(mds-toast,mds-status-bar)* Take the radii of the corner axis
|
|
72
|
+
- *(mds-header)* Round the inline bar on the corner axis
|
|
73
|
+
- *(mds-policy-ai)* Take the radii of the corner axis
|
|
74
|
+
- *(mds-table-row)* Round the actions panel on the corner axis
|
|
75
|
+
- *(mds-url-view)* Round the window on the corner axis
|
|
76
|
+
- *(mds-tree,mds-tree-item)* Take the radii of the corner axis
|
|
77
|
+
- *(mds-button-dropdown)* Round the corners as mds-button does, on the corner axis
|
|
78
|
+
- *(mds-calendar,mds-calendar-cell)* Take the radii of the corner axis
|
|
79
|
+
- *(mds-input-select,mds-input-tip-item,mds-input-range,mds-input-upload)* Take the corner axis
|
|
80
|
+
- *(mds-keyboard,mds-keyboard-key)* Paint the keyboard with the washes of the active theme
|
|
81
|
+
- *(mds-pref-theme-item)* Take the wash of the active theme and the pill radius
|
|
82
|
+
- *(mds-input-select)* Take the radius of mds-input, on the host
|
|
83
|
+
- *(mds-accordion)* Keep the ids of the items
|
|
84
|
+
- *(mds-breadcrumb)* Keep the ids of the items
|
|
85
|
+
- *(mds-filter)* Keep the ids of the items
|
|
86
|
+
- *(mds-tab-bar)* Keep the ids of the items
|
|
87
|
+
- *(mds-tree,mds-tree-item)* The toggle takes its expanded colours and its gap
|
|
88
|
+
- *(mds-tab,mds-tab-item)* The items take the default and the hover shadow
|
|
89
|
+
- *(mds-progress,mds-stepper-bar-item)* --mds-progress-radius rounds the bar again
|
|
90
|
+
- *(mds-dropdown)* The backdrop takes the z-index and the duration set on the dropdown
|
|
91
|
+
- *(mds-label)* Name the delete button in Spanish
|
|
92
|
+
- *(mds-label)* Load a deletable label without an error
|
|
93
|
+
- *(mds-tab)* Leave a content panel past the last item hidden
|
|
94
|
+
- *(mds-pref-animation,mds-pref-consumption,mds-pref-contrast)* Ignore a mode outside the union
|
|
95
|
+
- *(mds-pref-language,mds-pref-language-item)* Take three-letter codes, ignore invalid ones
|
|
96
|
+
- *(mds-pref-theme,mds-pref-theme-item)* Ignore an invalid theme name, scheme or corner shape
|
|
97
|
+
- *(mds-emoji)* Ignore a name outside the dictionary
|
|
98
|
+
- *(mds-input-otp)* Submit a paste that fills the last cell instead of throwing
|
|
99
|
+
- *(mds-icon)* Decode a base64 icon with its padding, draw a saved SVG file inline
|
|
100
|
+
- *(mds-img)* Skip a srcset-consumption entry without its level
|
|
101
|
+
- *(mds-bibliography)* Describe author as a string, read an array per entry
|
|
102
|
+
- *(mds-avatar)* Give every pair of initials a variant
|
|
103
|
+
- *(mds-horizontal-scroll)* Measure the slotted elements, not the text between them
|
|
104
|
+
- *(mds-notification)* Describe the element the badge sits on with its count
|
|
105
|
+
- *(mds-kpi-item)* Build the accessible name from the parts that are there
|
|
106
|
+
- *(mds-price-table-list,mds-usage)* Drop the main landmark and the document-edit roles
|
|
107
|
+
- *(mds-progress,mds-benchmark-bar)* Keep the progressbar values valid and follow aria-hidden
|
|
108
|
+
- *(mds-toast)* Announce the toast as a status message
|
|
109
|
+
- *(mds-spinner,mds-video-wall,mds-emoji)* Follow the Magma animation preference
|
|
110
|
+
- *(mds-tree,mds-tree-item)* Give the tree a structure and the branches their state
|
|
111
|
+
- *(mds-button,mds-filter-item)* Click on Enter and Space as the pointer does, never while busy
|
|
112
|
+
- *(mds-input-otp)* Leave Tab, Backspace and the shortcuts to the keyboard
|
|
113
|
+
- *(mds-details)* Toggle on Space, and keep the closed content out of the tab order
|
|
114
|
+
- *(mds-file,mds-file-preview)* Make the download cards buttons the keyboard activates
|
|
115
|
+
- *(mds-tooltip,mds-help)* Show the tooltip on focus as on hover
|
|
116
|
+
- *(mds-tab-bar-item)* Reach and activate the items from the keyboard
|
|
117
|
+
- *(mds-paginator,mds-paginator-item)* Take the disabled arrows out of the tab order
|
|
118
|
+
- *(mds-breadcrumb,mds-breadcrumb-item)* Keep the current page selected under the keyboard
|
|
119
|
+
- *(mds-modal,mds-status-bar)* Let strict veto the swipe, and keep the status bar non-modal
|
|
120
|
+
- *(mds-radial-menu)* Close the open menu on an outside click and on Escape
|
|
121
|
+
- *(mds-details)* Keep an open details hidden inside a closed one
|
|
122
|
+
- *(mds-calendar,mds-calendar-cell)* The cell properties reach the cells, the day colour paints
|
|
123
|
+
- *(mds-price-table-list-item)* The supported icon takes its hover colour
|
|
124
|
+
- *(mds-table-cell,mds-table-row,mds-table)* The -alt colours paint the sorted column
|
|
125
|
+
- *(mds-header,mds-header-bar)* The icon colours of the header reach the hamburger
|
|
126
|
+
- *(mds-price-table-features,mds-price-table-features-cell)* The border colour reaches the cells
|
|
127
|
+
- *(mds-toast)* MdsToastClose waits for the exit transition, not for 1000 ms
|
|
128
|
+
- *(mds-tree-item)* MdsTreeItemCollapse waits for the branch transition, not for 1000 ms
|
|
129
|
+
- *(mds-keyboard-key)* The space key is wide again
|
|
130
|
+
- *(mds-paginator,mds-paginator-item)* The item properties reach the items from the paginator
|
|
131
|
+
- *(mds-push-notification-item)* Style only the tones its type accepts
|
|
132
|
+
- *(mds-card)* Read the layout from the slots, again when the content changes
|
|
133
|
+
- *(mds-table)* Show the batch bar for buttons added after load
|
|
134
|
+
- *(mds-price-table-list)* Show the items rendered after load
|
|
135
|
+
- *(mds-tree,mds-tree-item)* Open on load, hand the props to the items that arrive later
|
|
136
|
+
- *(mds-calendar)* Show the preselection area for the content of its slot
|
|
137
|
+
- *(mds-pref,mds-pref-language,mds-pref-theme)* Size on load, follow the items added later
|
|
138
|
+
- *(mds-avatar-stack)* Count the avatars added after load
|
|
139
|
+
- *(mds-img)* Follow the consumption preference the page applies
|
|
140
|
+
- *(storybook)* Turn off the boolean controls of the form-associated components
|
|
141
|
+
- *(mds-tree-item)* Round the corners of the folder toggle again
|
|
142
|
+
- *(mds-input-switch)* Round the focus ring of the checkbox and radio again
|
|
143
|
+
- *(mds-avatar)* Show the sources in one order, never an empty avatar
|
|
144
|
+
- *(mds-bibliography)* Keep every first name, link the title only with a url
|
|
145
|
+
- *(mds-button-dropdown)* Pass truncate to the label of the primary action
|
|
146
|
+
- *(mds-calendar-cell)* Paint selection none as no selection, deprecate weekend
|
|
147
|
+
- *(mds-input-date-range-preselection)* Keep the author's slot, let the click through
|
|
148
|
+
- *(mds-dropdown,mds-tooltip,mds-help)* Keep the placement while it has room
|
|
149
|
+
- *(mds-emoji)* Keep the mouse tracking off once stopFollowMouse is called
|
|
150
|
+
- *(mds-file,mds-file-preview)* Show no extension for a filename without one
|
|
151
|
+
- *(mds-header)* Hide the hamburger of the bar without a menu slot
|
|
152
|
+
- *(mds-header-bar)* Open and close the menu of the header with setOpened
|
|
153
|
+
- *(mds-notification)* Hide a dismissed badge with the disabled strategy too
|
|
154
|
+
- *(mds-pref)* Show the reload notice in the visible panel
|
|
155
|
+
- *(mds-pref-theme)* Keep a name, scheme or corner shape set after load
|
|
156
|
+
- *(mds-pref-contrast)* Stop querying the contrast of the system on each pick
|
|
157
|
+
- *(mds-push-notification)* Hide once the last item goes, label the clear button
|
|
158
|
+
- *(mds-stepper-bar)* Hide the other panels with the hidden attribute
|
|
159
|
+
- *(mds-keyboard)* Accept the keys of a shortcut in any order
|
|
160
|
+
- *(mds-note)* Turn Enter into a click only while the note is deletable
|
|
161
|
+
- *(mds-calendar-cell)* Let the start and end of a selection keep their colours
|
|
162
|
+
- *(mds-pref-mode)* Stop forcing Safari to light mode
|
|
163
|
+
- *(magma)* Export CHANGELOG.md from magma, magma-react and magma-angular
|
|
164
|
+
- *(mds-benchmark-bar)* Announce the value as shown when there is no alias
|
|
165
|
+
- *(mds-input-switch)* Cast the shadow of the knob again
|
|
166
|
+
- *(mds-file,mds-filter-item,mds-input-range,mds-input-switch,mds-input-upload)* Use magma eases
|
|
167
|
+
- *(magma)* Fix: .claude to .gitignore
|
|
168
|
+
- *(mds-table-header)* Paint the select-all cell with the header colour
|
|
169
|
+
- *(mds-table)* Paint every row with a full colour, and the scroll area with the sunken surface
|
|
170
|
+
- *(mds-table)* Draw the frame with border-muted, like the grid
|
|
171
|
+
- *(mds-modal)* Slide the window in when its content has a focusable element
|
|
172
|
+
|
|
173
|
+
### Build
|
|
174
|
+
|
|
175
|
+
- *(magma)* Drop the unused changelog scripts and the deprecated conventional-changelog-cli
|
|
176
|
+
- *(magma)* Print the BREAKING CHANGE footer under breaking entries
|
|
177
|
+
|
|
178
|
+
### Documentation
|
|
179
|
+
|
|
180
|
+
- *(magma)* Merge every pull request into dev through the merge queue
|
|
181
|
+
- *(styles,magma)* A pill that casts a shadow takes surface-overlay, not a wash
|
|
182
|
+
- *(mds-accordion-timer-item)* Describe progress as the 0 to 1 the timer writes
|
|
183
|
+
- *(mds-breadcrumb-item)* Describe the button part
|
|
184
|
+
- *(mds-button)* Describe the label part
|
|
185
|
+
- *(mds-button-dropdown)* Describe the dropdown part
|
|
186
|
+
- *(mds-card-media)* Describe the content part
|
|
187
|
+
- *(mds-details)* Name the slots the content part wraps
|
|
188
|
+
- *(mds-emoji)* Put the description of the methods before their tags
|
|
189
|
+
- *(mds-file-preview)* Describe the card part
|
|
190
|
+
- *(mds-header-bar)* Describe the content part
|
|
191
|
+
- *(mds-help)* Describe the icon part
|
|
192
|
+
- *(mds-horizontal-scroll)* Describe the content part
|
|
193
|
+
- *(mds-img)* Describe the media part
|
|
194
|
+
- *(mds-input)* Attach the part docs to the class, put the icon on the left
|
|
195
|
+
- *(mds-input-date)* Describe the input-date part
|
|
196
|
+
- *(mds-input-date-range-preselection)* Say the slot takes the label text
|
|
197
|
+
- *(mds-input-field)* Name the controls the field validates, describe the content part
|
|
198
|
+
- *(mds-input-tip)* Say active moves the tip, not the items
|
|
199
|
+
- *(mds-input-tip-item)* List all ten variants in the Storybook controls
|
|
200
|
+
- *(mds-label)* Drop the doc of a slot the label does not render
|
|
201
|
+
- *(mds-list-item)* Describe the icon and text parts
|
|
202
|
+
- *(mds-mention)* Give size its own description
|
|
203
|
+
- *(mds-modal)* Say mdsModalOpen emits on open, describe the dialog part
|
|
204
|
+
- *(mds-notification)* Say a value of 0 shows an empty dot
|
|
205
|
+
- *(mds-pref)* List mds-pref-theme among the children
|
|
206
|
+
- *(mds-price-table-list-item)* Describe the icon part
|
|
207
|
+
- *(mds-push-notification)* Describe behavior as shipped
|
|
208
|
+
- *(mds-radial-menu)* Describe the radial-menu part
|
|
209
|
+
- *(mds-stepper-bar)* Describe itemsDone by what it sets, fix the slot tag name
|
|
210
|
+
- *(mds-stepper-bar-item)* Describe value without an event that does not exist
|
|
211
|
+
- *(mds-tab-item)* Describe the button part
|
|
212
|
+
- *(mds-table)* Say what mdsTableSelectionChange emits, describe the batch bar part
|
|
213
|
+
- *(mds-table-footer)* Say the footer takes cells
|
|
214
|
+
- *(mds-table-header)* Say the header takes header cells, describe the actions part
|
|
215
|
+
- *(mds-table-header-cell)* Describe the action and label parts
|
|
216
|
+
- *(mds-toast)* Say when mdsToastClose emits
|
|
217
|
+
- *(mds-tooltip)* Describe the text part
|
|
218
|
+
- *(mds-tree-item)* Describe async and the two events by what they do
|
|
219
|
+
- *(mds-url-view)* Give icon its own description
|
|
220
|
+
- *(mds-usage)* Describe the header, icon and label parts
|
|
221
|
+
- *(mds-button,mds-button-dropdown,mds-input-date)* Deprecate three properties nothing reads
|
|
222
|
+
- *(mds-button,mds-input,mds-input-field)* Three custom property descriptions match the code
|
|
223
|
+
- *(magma)* Explain that "false" turns on the booleans of form-associated components
|
|
224
|
+
- *(magma)* Describe when the preferences announce a change, and the hidden step panels
|
|
225
|
+
- *(magma)* Ask breaking commits to say what to change in their footer
|
|
226
|
+
- *(stencil)* Give an @example to the props whose value has a format
|
|
227
|
+
- *(magma)* List mds-toast-region and count 115 components
|
|
228
|
+
- *(magma)* Document the icons package and fix the scope lists
|
|
229
|
+
|
|
230
|
+
### Features
|
|
231
|
+
|
|
232
|
+
- *(mds-stepper-bar,mds-stepper-bar-item)* Let the user ask to go back to a done step
|
|
233
|
+
- *(mds-button)* --mds-button-label-transform keeps a label as written
|
|
234
|
+
- *(mds-table,mds-table-header,mds-table-row)* The Actions column follows rows added after load
|
|
235
|
+
- *(mds-policy-ai)* Part chip selects the chip, the wrapper gets part chip-wrapper
|
|
236
|
+
- *(mds-push-notification-item)* Document the avatar part, drop the icon part
|
|
237
|
+
- *(mds-tree)* Deprecate async, which the tree never reads
|
|
238
|
+
- *(mds-img)* Let an empty alt mark the image as decorative
|
|
239
|
+
- *(mds-chip)* Reflect disabled, which now blocks the keyboard as well as the pointer
|
|
240
|
+
- *(mds-breadcrumb)* The selected colours and the disabled back button take their properties
|
|
241
|
+
- *(mds-modal)* --mds-modal-transition-timing-function, the misspelled name kept as an alias
|
|
242
|
+
- *(mds-radial-progress,mds-pref-mode,mds-accordion,mds-note)* Document the properties they read
|
|
243
|
+
- *(mds-card)* --mds-card-background paints the card too
|
|
244
|
+
- *(mds-radial-menu)* A stylesheet can set the radius and the angles
|
|
245
|
+
- *(mds-img)* Set crossorigin and referrerpolicy on the image, with no default
|
|
246
|
+
- *(mds-table-footer,mds-table)* Line the footer cells up with the rows
|
|
247
|
+
- *(mds-usage)* Reflect variant, which the styles read from the host attribute
|
|
248
|
+
- *(mds-table)* Draw the lines inside the table with their own separator colour
|
|
249
|
+
- *(mds-toast)* Add a hide arrow and hold the countdown while the toast is in use
|
|
250
|
+
- *(mds-toast,mds-toast-region)* Line up the toasts shown at once in a region
|
|
251
|
+
|
|
252
|
+
### Refactor
|
|
253
|
+
|
|
254
|
+
- *(mds-mention)* Drop the .badge rules, which match no element
|
|
255
|
+
|
|
256
|
+
### Styling
|
|
257
|
+
|
|
258
|
+
- *(mds-dropdown)* A deeper drop shadow in dark, three times the light alphas
|
|
259
|
+
|
|
10
260
|
## [magma@2.3.0] - 2026-10-15
|
|
11
261
|
|
|
12
262
|
### Bug Fixes
|
package/agents/anti-patterns.md
CHANGED
|
@@ -19,10 +19,13 @@
|
|
|
19
19
|
properties and, for a deep customisation, the parts listed in the component's
|
|
20
20
|
`AGENTS.md` (see [`conventions.md`](conventions.md)).
|
|
21
21
|
- Setting boolean attributes to the string `"false"` (e.g. `disabled="false"`,
|
|
22
|
-
`await="false"`).
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
the attribute
|
|
22
|
+
`await="false"`). On a form-associated component (`mds-button`, `mds-button-dropdown`
|
|
23
|
+
and the form inputs, listed in [`conventions.md`](conventions.md)) it turns the prop
|
|
24
|
+
**on**, as on a native control. On the others Stencil reads `"false"` as `false`, but
|
|
25
|
+
the attribute stays in the DOM on a prop that is not reflected (and until the first
|
|
26
|
+
render on one that is), so `[disabled]` selectors and scripts reading the attribute
|
|
27
|
+
still see it set. **Remove the attribute** to turn it off; from React or Angular, pass
|
|
28
|
+
`false` to the property, as [`conventions.md`](conventions.md) shows.
|
|
26
29
|
- Embedding nested HTML in a default slot when the component documents a `label` prop.
|
|
27
30
|
- Using raw Tailwind colour utilities (`bg-white`, `text-gray-700`) on or inside Magma
|
|
28
31
|
components - use the semantic role classes (`bg-surface-default`, `text-fg-muted`),
|
package/agents/color.md
CHANGED
|
@@ -72,10 +72,10 @@ named theme retints all of it at once.
|
|
|
72
72
|
| --- | --- | --- |
|
|
73
73
|
| `surface-default` | `bg-surface-default` | the page canvas (the `body` already has it) |
|
|
74
74
|
| `surface-raised` | `bg-surface-raised` | cards, panels, sticky headers |
|
|
75
|
-
| `surface-overlay` | `bg-surface-overlay` | modal, dropdown, popover, sheet |
|
|
75
|
+
| `surface-overlay` | `bg-surface-overlay` | modal, dropdown, popover, sheet, and anything lifted with a shadow |
|
|
76
76
|
| `surface-sunken` | `bg-surface-sunken` | wells, insets, code blocks, tracks |
|
|
77
77
|
| `surface-muted` | `bg-surface-muted` | same-plane grouping: zebra rows, a subtle section |
|
|
78
|
-
| `wash-soft` / `wash-base` / `wash-strong` | `bg-wash-*` | a neutral pill or chip, by how marked it is |
|
|
78
|
+
| `wash-soft` / `wash-base` / `wash-strong` | `bg-wash-*` | a flat neutral pill or chip (no shadow), by how marked it is |
|
|
79
79
|
| `surface-inverse` / `surface-inverse-muted` | `bg-surface-inverse*` | the chip that flips with the mode (dark on a light UI) |
|
|
80
80
|
| `on-inverse` | `text-on-inverse` | text and icons on either inverse level |
|
|
81
81
|
| `text-default` | `text-fg-default` | body text, titles, primary data |
|
package/agents/components.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Source of truth: docs/agents/ in the magma monorepo.
|
|
4
4
|
Regenerate with: npm run sync.agent-docs (from the stencil package).
|
|
5
5
|
-->
|
|
6
|
-
# Magma components catalogue (
|
|
6
|
+
# Magma components catalogue (115 components)
|
|
7
7
|
|
|
8
8
|
> Generated from each component's usage description. Each tag links the component's
|
|
9
9
|
> own `AGENTS.md` (its API, with `pattern.md` and `antipattern.md` beside it) in
|
|
@@ -120,6 +120,7 @@
|
|
|
120
120
|
| [`mds-table-row`](../../magma/dist/collection/components/mds-table-row/AGENTS.md) | The `<mds-table-row>` web component represents a single data row inside a `<mds-table>` (slotted through `mds-table-body`; `mds-table-header` and `mds-table-footer` are rows themselves) |
|
|
121
121
|
| [`mds-text`](../../magma/dist/collection/components/mds-text/AGENTS.md) | The `<mds-text>` web component is the foundational typography primitive of the Magma Design System |
|
|
122
122
|
| [`mds-toast`](../../magma/dist/collection/components/mds-toast/AGENTS.md) | The `<mds-toast>` web component is the transient notification surface of the Magma Design System, used to surface brief, non-blocking feedback messages that appear over the viewport and auto-dismiss after a timeout |
|
|
123
|
+
| [`mds-toast-region`](../../magma/dist/collection/components/mds-toast-region/AGENTS.md) | The `<mds-toast-region>` web component is the place where an application shows its toasts: placed once in the application shell, at an edge of the viewport, it lines up the `<mds-toast>` elements visible at the same time, each one readable, and announces them to assistive technologies |
|
|
123
124
|
| [`mds-tooltip`](../../magma/dist/collection/components/mds-tooltip/AGENTS.md) | The `<mds-tooltip>` web component is the floating contextual hint of the Magma Design System |
|
|
124
125
|
| [`mds-tree`](../../magma/dist/collection/components/mds-tree/AGENTS.md) | The `<mds-tree>` web component is the root container of the Magma Design System tree view, organizing a hierarchy of slotted `<mds-tree-item>` nodes into an expandable/collapsible structure |
|
|
125
126
|
| [`mds-tree-item`](../../magma/dist/collection/components/mds-tree-item/AGENTS.md) | The `<mds-tree-item>` web component is the node primitive of the Magma Design System tree view: it represents a single labeled, expandable/collapsible entry inside an `<mds-tree>` and is also the recursive container for its own descendants |
|
package/agents/conventions.md
CHANGED
|
@@ -28,11 +28,27 @@
|
|
|
28
28
|
|
|
29
29
|
- Boolean props default to `false`/`undefined`. Prefer removing the attribute over
|
|
30
30
|
setting it to `false`.
|
|
31
|
+
- A boolean attribute turns its prop on by being present. On the form-associated
|
|
32
|
+
components (`mds-button`, `mds-button-dropdown`, `mds-input`, `mds-input-date`,
|
|
33
|
+
`mds-input-date-range`, `mds-input-field`, `mds-input-otp`, `mds-input-range`,
|
|
34
|
+
`mds-input-select`, `mds-input-switch`, `mds-input-upload`) any value turns it on,
|
|
35
|
+
`"false"` included, as on a native control.
|
|
31
36
|
- Disabled: `<mds-button disabled>`. Never `disabled="false"` - remove it instead. Set
|
|
32
37
|
`disabled` on the component, not on a wrapper: disabled components are removed from
|
|
33
38
|
the tab order automatically.
|
|
34
39
|
- Async: `<mds-button await>` shows a spinner and blocks interaction; remove `await`
|
|
35
40
|
(set `undefined`) when done.
|
|
41
|
+
- From a framework, pass a real boolean to the property, not a string to the attribute:
|
|
42
|
+
- React with `magma-react`: `<MdsButton disabled={isDisabled} />` sets the property,
|
|
43
|
+
so `false` turns the prop off; the `.server` variants leave a `false` out of the
|
|
44
|
+
markup. A bare `mds-*` tag in React 18 JSX is different: React 18 writes
|
|
45
|
+
`disabled={false}` as the attribute `"false"`, which turns a form-associated component
|
|
46
|
+
on, so pass `undefined` there. React 19 sets the property and turns it off.
|
|
47
|
+
- Angular with `magma-angular`: bind the input, `[disabled]="isDisabled"`. The proxy
|
|
48
|
+
sets the property, so `false` turns the prop off. A static `disabled="false"` or an
|
|
49
|
+
attribute binding (`[attr.disabled]="false"`) writes the attribute instead, and turns
|
|
50
|
+
a form-associated component on; `[attr.disabled]="null"` removes it. Reactive Forms
|
|
51
|
+
`disable()` / `enable()` set the property through the value accessor.
|
|
36
52
|
|
|
37
53
|
## Sizing
|
|
38
54
|
|
package/agents/install.md
CHANGED
|
@@ -165,7 +165,7 @@ SSR notes:
|
|
|
165
165
|
- Icons render empty server-side (the box is reserved, no layout shift) and the
|
|
166
166
|
default theme is rendered - see the SSR section in
|
|
167
167
|
[`install.md`](install.md).
|
|
168
|
-
- The hydrate module (`magma/hydrate`) bundles all
|
|
168
|
+
- The hydrate module (`magma/hydrate`) bundles all 115 components (~3 MB,
|
|
169
169
|
server-only). It is imported lazily behind a `typeof window` check and must
|
|
170
170
|
never end up in a client bundle.
|
|
171
171
|
|
|
@@ -209,6 +209,11 @@ With React Router the handler is `(href) => navigate(href)` from `useNavigate()`
|
|
|
209
209
|
on the client - use the `.server` variants (section 5) to get real SSR markup.
|
|
210
210
|
- Keep `magma` and `magma-react` on the exact same version; the wrapper is generated
|
|
211
211
|
against a specific `magma` build.
|
|
212
|
+
- Pass booleans as booleans: `<MdsButton disabled={false} />` sets the property and turns
|
|
213
|
+
the prop off, and the `.server` variants leave a `false` out of the markup. Render the
|
|
214
|
+
wrapper, not the bare `mds-*` tag: in React 18 JSX `<mds-button disabled={false}>`
|
|
215
|
+
writes the attribute `"false"`, which turns a form-associated component on (see
|
|
216
|
+
[`conventions.md`](conventions.md)).
|
|
212
217
|
|
|
213
218
|
## See also
|
|
214
219
|
|
package/dist/components.js
CHANGED
|
@@ -109,6 +109,7 @@ export { MdsTableHeader } from "./mds-table-header.js";
|
|
|
109
109
|
export { MdsTableRow } from "./mds-table-row.js";
|
|
110
110
|
export { MdsTable } from "./mds-table.js";
|
|
111
111
|
export { MdsText } from "./mds-text.js";
|
|
112
|
+
export { MdsToastRegion } from "./mds-toast-region.js";
|
|
112
113
|
export { MdsToast } from "./mds-toast.js";
|
|
113
114
|
export { MdsTooltip } from "./mds-tooltip.js";
|
|
114
115
|
export { MdsTreeItem } from "./mds-tree-item.js";
|
|
@@ -109,6 +109,7 @@ export { MdsTableHeader } from "./mds-table-header.server.js";
|
|
|
109
109
|
export { MdsTableRow } from "./mds-table-row.server.js";
|
|
110
110
|
export { MdsTable } from "./mds-table.server.js";
|
|
111
111
|
export { MdsText } from "./mds-text.server.js";
|
|
112
|
+
export { MdsToastRegion } from "./mds-toast-region.server.js";
|
|
112
113
|
export { MdsToast } from "./mds-toast.server.js";
|
|
113
114
|
export { MdsTooltip } from "./mds-tooltip.server.js";
|
|
114
115
|
export { MdsTreeItem } from "./mds-tree-item.server.js";
|
|
@@ -5,7 +5,7 @@ import * as clientComponents from "@maggioli-design-system/magma-react";
|
|
|
5
5
|
export const serializeShadowRoot = "declarative-shadow-dom";
|
|
6
6
|
export const MdsTableFooter = /*@__PURE__*/ createComponent({
|
|
7
7
|
tagName: 'mds-table-footer',
|
|
8
|
-
properties: {},
|
|
8
|
+
properties: { selectable: 'selectable' },
|
|
9
9
|
hydrateModule: typeof window === 'undefined' ? import('@maggioli-design-system/magma/hydrate') : undefined,
|
|
10
10
|
clientModule: clientComponents.MdsTableFooter,
|
|
11
11
|
serializeShadowRoot
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { MdsToastRegion as MdsToastRegionElement, defineCustomElement as defineMdsToastRegion } from "@maggioli-design-system/magma/dist/components/mds-toast-region.js";
|
|
5
|
+
export const MdsToastRegion = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'mds-toast-region',
|
|
7
|
+
elementClass: MdsToastRegionElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineMdsToastRegion
|
|
12
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/ssr';
|
|
3
|
+
// @ts-ignore - ignore potential type issues as the project is importing itself
|
|
4
|
+
import * as clientComponents from "@maggioli-design-system/magma-react";
|
|
5
|
+
export const serializeShadowRoot = "declarative-shadow-dom";
|
|
6
|
+
export const MdsToastRegion = /*@__PURE__*/ createComponent({
|
|
7
|
+
tagName: 'mds-toast-region',
|
|
8
|
+
properties: {
|
|
9
|
+
position: 'position',
|
|
10
|
+
max: 'max'
|
|
11
|
+
},
|
|
12
|
+
hydrateModule: typeof window === 'undefined' ? import('@maggioli-design-system/magma/hydrate') : undefined,
|
|
13
|
+
clientModule: clientComponents.MdsToastRegion,
|
|
14
|
+
serializeShadowRoot
|
|
15
|
+
});
|
package/dist/mds-toast.server.js
CHANGED
|
@@ -10,7 +10,8 @@ export const MdsToast = /*@__PURE__*/ createComponent({
|
|
|
10
10
|
visible: 'visible',
|
|
11
11
|
variant: 'variant',
|
|
12
12
|
tone: 'tone',
|
|
13
|
-
position: 'position'
|
|
13
|
+
position: 'position',
|
|
14
|
+
deletable: 'deletable'
|
|
14
15
|
},
|
|
15
16
|
hydrateModule: typeof window === 'undefined' ? import('@maggioli-design-system/magma/hydrate') : undefined,
|
|
16
17
|
clientModule: clientComponents.MdsToast,
|
|
@@ -108,6 +108,7 @@ export { MdsTableHeader } from "./mds-table-header.js";
|
|
|
108
108
|
export { MdsTableRow } from "./mds-table-row.js";
|
|
109
109
|
export { MdsTable } from "./mds-table.js";
|
|
110
110
|
export { MdsText } from "./mds-text.js";
|
|
111
|
+
export { MdsToastRegion } from "./mds-toast-region.js";
|
|
111
112
|
export { MdsToast } from "./mds-toast.js";
|
|
112
113
|
export { MdsTooltip } from "./mds-tooltip.js";
|
|
113
114
|
export { MdsTreeItem } from "./mds-tree-item.js";
|
|
@@ -110,6 +110,7 @@ export { MdsTableHeader } from "./mds-table-header.server.js";
|
|
|
110
110
|
export { MdsTableRow } from "./mds-table-row.server.js";
|
|
111
111
|
export { MdsTable } from "./mds-table.server.js";
|
|
112
112
|
export { MdsText } from "./mds-text.server.js";
|
|
113
|
+
export { MdsToastRegion } from "./mds-toast-region.server.js";
|
|
113
114
|
export { MdsToast } from "./mds-toast.server.js";
|
|
114
115
|
export { MdsTooltip } from "./mds-tooltip.server.js";
|
|
115
116
|
export { MdsTreeItem } from "./mds-tree-item.server.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@maggioli-design-system/magma/dist/components";
|
|
7
|
+
import { MdsToastRegion as MdsToastRegionElement } from "@maggioli-design-system/magma/dist/components/mds-toast-region.js";
|
|
8
|
+
export type MdsToastRegionEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const MdsToastRegion: StencilReactComponent<MdsToastRegionElement, MdsToastRegionEvents, Components.MdsToastRegion>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import { type SerializeShadowRootOptions } from '@stencil/react-output-target/ssr';
|
|
7
|
+
import type { Components } from "@maggioli-design-system/magma/dist/components";
|
|
8
|
+
import { MdsToastRegion as MdsToastRegionElement } from "@maggioli-design-system/magma/dist/components/mds-toast-region.js";
|
|
9
|
+
export declare const serializeShadowRoot: SerializeShadowRootOptions;
|
|
10
|
+
export type MdsToastRegionEvents = NonNullable<unknown>;
|
|
11
|
+
export declare const MdsToastRegion: StencilReactComponent<MdsToastRegionElement, MdsToastRegionEvents, Components.MdsToastRegion>;
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
4
|
*/
|
|
5
5
|
import type { EventName, StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
-
import { type MdsToastCustomEvent } from "@maggioli-design-system/magma";
|
|
6
|
+
import { type MdsToastCloseEventDetail, type MdsToastCustomEvent } from "@maggioli-design-system/magma";
|
|
7
7
|
import type { Components } from "@maggioli-design-system/magma/dist/components";
|
|
8
8
|
import { MdsToast as MdsToastElement } from "@maggioli-design-system/magma/dist/components/mds-toast.js";
|
|
9
9
|
export type MdsToastEvents = {
|
|
10
|
-
onMdsToastClose: EventName<MdsToastCustomEvent<
|
|
10
|
+
onMdsToastClose: EventName<MdsToastCustomEvent<MdsToastCloseEventDetail>>;
|
|
11
11
|
};
|
|
12
12
|
export declare const MdsToast: StencilReactComponent<MdsToastElement, MdsToastEvents, Components.MdsToast>;
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { EventName, StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
6
|
import { type SerializeShadowRootOptions } from '@stencil/react-output-target/ssr';
|
|
7
|
-
import { type MdsToastCustomEvent } from "@maggioli-design-system/magma";
|
|
7
|
+
import { type MdsToastCloseEventDetail, type MdsToastCustomEvent } from "@maggioli-design-system/magma";
|
|
8
8
|
import type { Components } from "@maggioli-design-system/magma/dist/components";
|
|
9
9
|
import { MdsToast as MdsToastElement } from "@maggioli-design-system/magma/dist/components/mds-toast.js";
|
|
10
10
|
export declare const serializeShadowRoot: SerializeShadowRootOptions;
|
|
11
11
|
export type MdsToastEvents = {
|
|
12
|
-
onMdsToastClose: EventName<MdsToastCustomEvent<
|
|
12
|
+
onMdsToastClose: EventName<MdsToastCustomEvent<MdsToastCloseEventDetail>>;
|
|
13
13
|
};
|
|
14
14
|
export declare const MdsToast: StencilReactComponent<MdsToastElement, MdsToastEvents, Components.MdsToast>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maggioli-design-system/magma-react",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.1",
|
|
4
4
|
"main": "dist/components.js",
|
|
5
5
|
"module": "dist/components.js",
|
|
6
6
|
"types": "dist/types/components.d.ts",
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"types": "./dist/types/*.d.ts",
|
|
15
15
|
"import": "./dist/*.js"
|
|
16
16
|
},
|
|
17
|
+
"./CHANGELOG.md": "./CHANGELOG.md",
|
|
17
18
|
"./package.json": "./package.json"
|
|
18
19
|
},
|
|
19
20
|
"sideEffects": false,
|
|
@@ -33,8 +34,8 @@
|
|
|
33
34
|
"access": "public"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"@maggioli-design-system/magma": "2.
|
|
37
|
-
"@stencil/react-output-target": "1.6.
|
|
37
|
+
"@maggioli-design-system/magma": "2.4.1",
|
|
38
|
+
"@stencil/react-output-target": "1.6.5"
|
|
38
39
|
},
|
|
39
40
|
"repository": {
|
|
40
41
|
"type": "git",
|