@lmfaole/basics 0.1.1 → 0.3.0
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/README.md +296 -6
- package/components/basic-accordion/index.d.ts +50 -0
- package/components/basic-accordion/index.js +387 -0
- package/components/basic-accordion/register.d.ts +1 -0
- package/components/basic-accordion/register.js +3 -0
- package/components/basic-dialog/index.d.ts +36 -0
- package/components/basic-dialog/index.js +292 -0
- package/components/basic-dialog/register.d.ts +1 -0
- package/components/basic-dialog/register.js +3 -0
- package/components/basic-popover/index.d.ts +70 -0
- package/components/basic-popover/index.js +460 -0
- package/components/basic-popover/register.d.ts +1 -0
- package/components/basic-popover/register.js +3 -0
- package/components/basic-summary-table/index.d.ts +69 -0
- package/components/basic-summary-table/index.js +390 -0
- package/components/basic-summary-table/register.d.ts +1 -0
- package/components/basic-summary-table/register.js +3 -0
- package/components/basic-table/index.d.ts +75 -0
- package/components/basic-table/index.js +554 -0
- package/components/basic-table/register.d.ts +1 -0
- package/components/basic-table/register.js +3 -0
- package/components/basic-tabs/index.d.ts +2 -3
- package/components/basic-tabs/index.js +16 -38
- package/index.d.ts +5 -0
- package/index.js +5 -0
- package/package.json +138 -81
- package/readme.mdx +1 -1
package/README.md
CHANGED
|
@@ -31,12 +31,167 @@ Storybook Test coverage is enabled through the Vitest addon. In the Storybook UI
|
|
|
31
31
|
|
|
32
32
|
The Visual Tests panel is provided by `@chromatic-com/storybook`. To run cloud visual checks, connect the addon to a Chromatic project from the Storybook UI.
|
|
33
33
|
|
|
34
|
+
GitHub Actions now splits Storybook automation by purpose:
|
|
35
|
+
|
|
36
|
+
- `CI` runs the browser-backed Storybook test suite on pull requests and pushes to `main`.
|
|
37
|
+
- `Storybook Preview` builds Storybook for pull requests and uploads `storybook-static` as an artifact.
|
|
38
|
+
- `Storybook Pages` deploys the built Storybook from `main` to GitHub Pages.
|
|
39
|
+
- `Chromatic` publishes Storybook builds on branch pushes when the `CHROMATIC_PROJECT_TOKEN` repository secret is configured.
|
|
40
|
+
|
|
41
|
+
## Changesets
|
|
42
|
+
|
|
43
|
+
For changes that affect the published package, run:
|
|
44
|
+
|
|
45
|
+
```sh
|
|
46
|
+
pnpm changeset
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Commit the generated Markdown file under `.changeset/` with the rest of your work. If a change is repo-only and does not affect the published package, no changeset file is needed.
|
|
50
|
+
|
|
34
51
|
## Releasing
|
|
35
52
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
53
|
+
Merging changesets into `main` causes the `Release` workflow to open or update a `chore: release` pull request. Merging that release pull request will:
|
|
54
|
+
|
|
55
|
+
1. run `pnpm release`
|
|
56
|
+
2. publish the package to npm with trusted publishing from GitHub Actions
|
|
57
|
+
3. create the matching `vX.Y.Z` git tag and GitHub Release
|
|
58
|
+
4. attach the packed tarball to the GitHub Release
|
|
59
|
+
|
|
60
|
+
Trusted publishing must be configured on npm for `@lmfaole/basics` against the GitHub Actions workflow file `.github/workflows/release.yml` in the `lmfaole/basics` repository. No `NPM_TOKEN` repository secret is needed once trusted publishing is active.
|
|
61
|
+
|
|
62
|
+
If a release needs to be retried after the workflow changes land, use the `Release` workflow's `publish_current_version` manual input to publish the current `package.json` version from `main` when it is still unpublished.
|
|
63
|
+
|
|
64
|
+
## Commits
|
|
65
|
+
|
|
66
|
+
Use Conventional Commits for commit messages and pull request titles. The GitHub workflow accepts `build`, `chore`, `ci`, `docs`, `feat`, `fix`, `perf`, `refactor`, `revert`, `style`, and `test`, with an optional scope such as `feat(tabs): add keyboard support`.
|
|
67
|
+
|
|
68
|
+
## Basic Popover
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<basic-popover data-label="Filtre" data-anchor-trigger data-position-area="bottom">
|
|
72
|
+
<button type="button" data-popover-open>Toggle popover</button>
|
|
73
|
+
|
|
74
|
+
<section data-popover-panel>
|
|
75
|
+
<h2 data-popover-title>Filtre</h2>
|
|
76
|
+
<p>Popover body.</p>
|
|
77
|
+
<button type="button" data-popover-close>Close</button>
|
|
78
|
+
</section>
|
|
79
|
+
</basic-popover>
|
|
80
|
+
|
|
81
|
+
<script type="module">
|
|
82
|
+
import "@lmfaole/basics/components/basic-popover/register";
|
|
83
|
+
</script>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The element upgrades popover trigger-and-panel markup into an accessible non-modal overlay without adding any styles of its own.
|
|
87
|
+
|
|
88
|
+
### Attributes
|
|
89
|
+
|
|
90
|
+
- `data-label`: fallback accessible name when the popover has no `aria-label`, `aria-labelledby`, or `[data-popover-title]`.
|
|
91
|
+
- `data-anchor-trigger`: uses the opener as the popover's implicit anchor so consumer CSS can position the panel relative to the trigger.
|
|
92
|
+
- `data-position-area`: sets the CSS anchor-positioning area used when `data-anchor-trigger` is enabled. Defaults to `bottom`.
|
|
93
|
+
- `data-position-try-fallbacks`: optional comma-separated fallback list used when the default anchored placement would overflow. By default the component derives a sensible sequence from `data-position-area`.
|
|
94
|
+
|
|
95
|
+
### Behavior
|
|
96
|
+
|
|
97
|
+
- Uses the native Popover API in auto mode for outside-click and `Esc` dismissal.
|
|
98
|
+
- Syncs `aria-expanded`, `aria-controls`, and `data-open` between the trigger and panel.
|
|
99
|
+
- Restores focus to the opener when dismissal should return to it, while preserving focus on an outside control the user explicitly clicked.
|
|
100
|
+
- When `data-anchor-trigger` is set, opening the popover passes the trigger as the Popover API `source`, establishes the panel's implicit anchor, and applies the configured `position-area`.
|
|
101
|
+
- When `data-anchor-trigger` is set and `data-position-try-fallbacks` is not provided, the component derives a fallback sequence from the default placement:
|
|
102
|
+
`bottom` or `top` start with `flip-block`, while `left` or `right` start with `flip-inline`.
|
|
103
|
+
- `[data-popover-close]` controls can dismiss the panel from inside the overlay.
|
|
104
|
+
|
|
105
|
+
### Markup Contract
|
|
106
|
+
|
|
107
|
+
- Provide one descendant `[data-popover-panel]`.
|
|
108
|
+
- Use `[data-popover-open]` on buttons that should toggle the panel.
|
|
109
|
+
- Use `[data-popover-title]` for the popover heading when you want it to become the accessible name.
|
|
110
|
+
- If you set `data-anchor-trigger`, you can tune the default anchored placement with `data-position-area` and optionally override its overflow fallbacks with `data-position-try-fallbacks`.
|
|
111
|
+
- Keep layout and styling outside the package; the component only manages semantics and open or close behavior.
|
|
112
|
+
|
|
113
|
+
## Basic Dialog
|
|
114
|
+
|
|
115
|
+
```html
|
|
116
|
+
<basic-dialog data-label="Bekreft handling" data-backdrop-close>
|
|
117
|
+
<button type="button" data-dialog-open>Open dialog</button>
|
|
118
|
+
|
|
119
|
+
<dialog data-dialog-panel>
|
|
120
|
+
<h2 data-dialog-title>Bekreft handling</h2>
|
|
121
|
+
<p>Dialog body.</p>
|
|
122
|
+
<button type="button" data-dialog-close>Cancel</button>
|
|
123
|
+
<button type="button" data-dialog-close data-dialog-close-value="confirmed">
|
|
124
|
+
Confirm
|
|
125
|
+
</button>
|
|
126
|
+
</dialog>
|
|
127
|
+
</basic-dialog>
|
|
128
|
+
|
|
129
|
+
<script type="module">
|
|
130
|
+
import "@lmfaole/basics/components/basic-dialog/register";
|
|
131
|
+
</script>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
The element upgrades native `<dialog>` markup into an accessible modal flow without adding any styles of its own.
|
|
135
|
+
|
|
136
|
+
### Attributes
|
|
137
|
+
|
|
138
|
+
- `data-label`: fallback accessible name when the dialog has no `aria-label`, `aria-labelledby`, or `[data-dialog-title]`.
|
|
139
|
+
- `data-backdrop-close`: allows clicks on the dialog backdrop to close the modal.
|
|
140
|
+
|
|
141
|
+
### Behavior
|
|
142
|
+
|
|
143
|
+
- Uses the native dialog element's modal behavior via `showModal()`.
|
|
144
|
+
- Restores focus to the element that opened the dialog when the modal closes.
|
|
145
|
+
- `Esc` closes the modal through the platform's dialog behavior.
|
|
146
|
+
- `[data-dialog-close]` controls can optionally set `data-dialog-close-value` to pass a close value.
|
|
147
|
+
|
|
148
|
+
### Markup Contract
|
|
149
|
+
|
|
150
|
+
- Provide one descendant `<dialog data-dialog-panel>`.
|
|
151
|
+
- Use `[data-dialog-open]` on buttons that should open the modal.
|
|
152
|
+
- Use `[data-dialog-title]` for the dialog heading when you want it to become the accessible name.
|
|
153
|
+
- Keep layout and styling outside the package; the component only manages semantics and open or close behavior.
|
|
154
|
+
|
|
155
|
+
## Basic Accordion
|
|
156
|
+
|
|
157
|
+
```html
|
|
158
|
+
<basic-accordion>
|
|
159
|
+
<h3><button type="button" data-accordion-trigger>Oversikt</button></h3>
|
|
160
|
+
<section data-accordion-panel>
|
|
161
|
+
<p>Viser en kort oppsummering.</p>
|
|
162
|
+
</section>
|
|
163
|
+
|
|
164
|
+
<h3><button type="button" data-accordion-trigger>Implementasjon</button></h3>
|
|
165
|
+
<section data-accordion-panel>
|
|
166
|
+
<p>Viser implementasjonsdetaljer.</p>
|
|
167
|
+
</section>
|
|
168
|
+
</basic-accordion>
|
|
169
|
+
|
|
170
|
+
<script type="module">
|
|
171
|
+
import "@lmfaole/basics/components/basic-accordion/register";
|
|
172
|
+
</script>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The element upgrades existing trigger-and-panel markup into an accessible accordion without adding any styles of its own.
|
|
176
|
+
|
|
177
|
+
### Attributes
|
|
178
|
+
|
|
179
|
+
- `data-multiple`: allows multiple panels to stay open at the same time.
|
|
180
|
+
- `data-collapsible`: allows the last open panel in single mode to close.
|
|
181
|
+
|
|
182
|
+
### Behavior
|
|
183
|
+
|
|
184
|
+
- Missing trigger and panel ids are generated automatically.
|
|
185
|
+
- `aria-expanded`, `aria-controls`, `aria-labelledby`, `hidden`, and `data-open` stay in sync with the current state.
|
|
186
|
+
- `ArrowUp`, `ArrowDown`, `Home`, and `End` move focus between enabled triggers.
|
|
187
|
+
- `Enter` and `Space` toggle the focused item.
|
|
188
|
+
- Disabled triggers are skipped during keyboard navigation.
|
|
189
|
+
|
|
190
|
+
### Markup Contract
|
|
191
|
+
|
|
192
|
+
- Provide matching counts of `[data-accordion-trigger]` and `[data-accordion-panel]` descendants in the same order.
|
|
193
|
+
- Prefer `<button>` elements for triggers, usually inside your own heading elements.
|
|
194
|
+
- Keep layout and styling outside the package; the component only manages semantics, state, and keyboard behavior.
|
|
40
195
|
|
|
41
196
|
## Basic Tabs
|
|
42
197
|
|
|
@@ -69,7 +224,6 @@ The element upgrades existing markup into an accessible tab interface without ad
|
|
|
69
224
|
### Attributes
|
|
70
225
|
|
|
71
226
|
- `data-label`: sets the generated tablist's accessible name when the tablist does not already have `aria-label` or `aria-labelledby`. Defaults to `Faner`.
|
|
72
|
-
- `data-orientation`: sets arrow-key behavior and mirrors `aria-orientation` on the tablist. Supported values are `horizontal` and `vertical`.
|
|
73
227
|
- `data-activation`: chooses whether arrow-key focus changes also activate the panel. Supported values are `automatic` and `manual`.
|
|
74
228
|
- `data-selected-index`: sets the initially selected tab by zero-based index. Defaults to the first enabled tab.
|
|
75
229
|
|
|
@@ -77,7 +231,7 @@ The element upgrades existing markup into an accessible tab interface without ad
|
|
|
77
231
|
|
|
78
232
|
- Missing tab and panel ids are generated automatically.
|
|
79
233
|
- `aria-selected`, `aria-controls`, `aria-labelledby`, `hidden`, and `data-selected` stay in sync with the active tab.
|
|
80
|
-
- Click, `
|
|
234
|
+
- Click, `ArrowLeft`, `ArrowRight`, `Home`, and `End` move between tabs.
|
|
81
235
|
- Disabled tabs are skipped during keyboard navigation.
|
|
82
236
|
- In `manual` mode, arrow keys move focus and `Enter` or `Space` activates the focused tab.
|
|
83
237
|
|
|
@@ -88,6 +242,142 @@ The element upgrades existing markup into an accessible tab interface without ad
|
|
|
88
242
|
- Prefer `<button>` elements for tabs so click and keyboard activation stay native.
|
|
89
243
|
- Keep layout and styling outside the package; the component only manages semantics, state, and keyboard behavior.
|
|
90
244
|
|
|
245
|
+
## Basic Table
|
|
246
|
+
|
|
247
|
+
```html
|
|
248
|
+
<basic-table
|
|
249
|
+
data-caption="Bemanning per sprint"
|
|
250
|
+
data-description="Viser team, lokasjon og ledig kapasitet per sprint."
|
|
251
|
+
data-row-headers
|
|
252
|
+
data-row-header-column="2"
|
|
253
|
+
>
|
|
254
|
+
<table>
|
|
255
|
+
<thead>
|
|
256
|
+
<tr>
|
|
257
|
+
<th>Statuskode</th>
|
|
258
|
+
<th>Team</th>
|
|
259
|
+
<th>Lokasjon</th>
|
|
260
|
+
<th>Ledige timer</th>
|
|
261
|
+
</tr>
|
|
262
|
+
</thead>
|
|
263
|
+
<tbody>
|
|
264
|
+
<tr>
|
|
265
|
+
<td>A1</td>
|
|
266
|
+
<td>Plattform</td>
|
|
267
|
+
<td>Oslo</td>
|
|
268
|
+
<td>18</td>
|
|
269
|
+
</tr>
|
|
270
|
+
<tr>
|
|
271
|
+
<td>B4</td>
|
|
272
|
+
<td>Designsystem</td>
|
|
273
|
+
<td>Trondheim</td>
|
|
274
|
+
<td>10</td>
|
|
275
|
+
</tr>
|
|
276
|
+
</tbody>
|
|
277
|
+
</table>
|
|
278
|
+
</basic-table>
|
|
279
|
+
|
|
280
|
+
<script type="module">
|
|
281
|
+
import "@lmfaole/basics/components/basic-table/register";
|
|
282
|
+
</script>
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
The element upgrades a regular table with stronger accessible naming and header associations without imposing any styles.
|
|
286
|
+
|
|
287
|
+
### Attributes
|
|
288
|
+
|
|
289
|
+
- `data-caption`: generates a visible `<caption>` when the wrapped table does not already define one.
|
|
290
|
+
- `data-column-headers`: promotes the first row to column headers when the author provides a plain table without a header row.
|
|
291
|
+
- `data-description`: generates a hidden description and connects it with `aria-describedby`.
|
|
292
|
+
- `data-label`: sets a fallback accessible name when the table has no caption, `aria-label`, or `aria-labelledby`. Defaults to `Tabell`.
|
|
293
|
+
- `data-row-header-column`: sets which one-based body column should become the generated row header. Defaults to `1`.
|
|
294
|
+
- `data-row-headers`: enables generated row headers in body rows. If `data-row-header-column` is present, row-header mode is enabled automatically.
|
|
295
|
+
|
|
296
|
+
### Behavior
|
|
297
|
+
|
|
298
|
+
- Preserves author-provided captions and only generates one when needed.
|
|
299
|
+
- Can generate hidden helper text for extra context without requiring a separate authored description element.
|
|
300
|
+
- Can promote a plain first row to column headers when consumers start from simple body-only markup.
|
|
301
|
+
- Infers common `scope` values for header cells and assigns missing header ids.
|
|
302
|
+
- Populates each data cell's `headers` attribute from the matching row and column headers.
|
|
303
|
+
- Re-runs automatically when the wrapped table changes.
|
|
304
|
+
|
|
305
|
+
### Markup Contract
|
|
306
|
+
|
|
307
|
+
- Provide one descendant `<table>` inside the custom element.
|
|
308
|
+
- Use real table sections and header cells where possible; the component strengthens semantics but does not replace the HTML table model.
|
|
309
|
+
- Add `data-row-headers` when one body column identifies each row, and use `data-row-header-column` when that column is not the first one.
|
|
310
|
+
- Add `data-column-headers` when you want the component to promote a plain first row instead of authoring a header row yourself.
|
|
311
|
+
- Keep layout and styling outside the package; the component only manages semantics and accessibility metadata.
|
|
312
|
+
|
|
313
|
+
## Basic Summary Table
|
|
314
|
+
|
|
315
|
+
```html
|
|
316
|
+
<basic-summary-table
|
|
317
|
+
data-caption="Prosjektsammendrag"
|
|
318
|
+
data-description="Viser timer og total kostnad for prosjektets leveranser."
|
|
319
|
+
data-row-headers
|
|
320
|
+
data-summary-columns="2,4"
|
|
321
|
+
data-total-label="Totalt"
|
|
322
|
+
>
|
|
323
|
+
<table>
|
|
324
|
+
<thead>
|
|
325
|
+
<tr>
|
|
326
|
+
<th>Post</th>
|
|
327
|
+
<th>Timer</th>
|
|
328
|
+
<th>Sats</th>
|
|
329
|
+
<th>Kostnad</th>
|
|
330
|
+
</tr>
|
|
331
|
+
</thead>
|
|
332
|
+
<tbody>
|
|
333
|
+
<tr>
|
|
334
|
+
<td>Analyse</td>
|
|
335
|
+
<td>8</td>
|
|
336
|
+
<td>100</td>
|
|
337
|
+
<td>800</td>
|
|
338
|
+
</tr>
|
|
339
|
+
<tr>
|
|
340
|
+
<td>Implementasjon</td>
|
|
341
|
+
<td>12</td>
|
|
342
|
+
<td>120</td>
|
|
343
|
+
<td>1440</td>
|
|
344
|
+
</tr>
|
|
345
|
+
</tbody>
|
|
346
|
+
</table>
|
|
347
|
+
</basic-summary-table>
|
|
348
|
+
|
|
349
|
+
<script type="module">
|
|
350
|
+
import "@lmfaole/basics/components/basic-summary-table/register";
|
|
351
|
+
</script>
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
The element upgrades a calculation-heavy table with an automatically maintained totals row in `<tfoot>`.
|
|
355
|
+
|
|
356
|
+
### Attributes
|
|
357
|
+
|
|
358
|
+
- `data-caption`: generates a visible `<caption>` when the wrapped table does not already define one.
|
|
359
|
+
- `data-description`: generates hidden helper text and connects it with `aria-describedby`.
|
|
360
|
+
- `data-label`: sets a fallback accessible name when the table has no caption, `aria-label`, or `aria-labelledby`. Defaults to `Tabell`.
|
|
361
|
+
- `data-row-headers`: enables generated row headers in body rows.
|
|
362
|
+
- `data-row-header-column`: sets which one-based body column should become the generated row header. Defaults to `1`.
|
|
363
|
+
- `data-summary-columns`: chooses which one-based columns should be totalled in the generated footer row. If omitted, numeric body columns are inferred automatically.
|
|
364
|
+
- `data-total-label`: sets the footer row label. Defaults to `Totalt`.
|
|
365
|
+
- `data-locale`: passes a locale through to `Intl.NumberFormat` for generated footer totals.
|
|
366
|
+
|
|
367
|
+
### Behavior
|
|
368
|
+
|
|
369
|
+
- Inherits caption, description, row-header, and `headers` association behavior from `basic-table`.
|
|
370
|
+
- Parses numbers from cell text and supports raw calculation values through `data-value` on individual body cells.
|
|
371
|
+
- Generates or updates a totals row in `<tfoot>` without requiring consumers to author the footer manually.
|
|
372
|
+
- Recalculates totals automatically when body rows or `data-value` attributes change.
|
|
373
|
+
|
|
374
|
+
### Markup Contract
|
|
375
|
+
|
|
376
|
+
- Provide one descendant `<table>` with line items in `<tbody>`.
|
|
377
|
+
- Prefer a label column such as `Post` or `Kategori` and enable `data-row-headers` so each line item remains easy to navigate.
|
|
378
|
+
- Use `data-value` on cells when the displayed text is formatted differently from the numeric value you want summed.
|
|
379
|
+
- Keep layout and styling outside the package; the component only manages semantics, totals, and footer structure.
|
|
380
|
+
|
|
91
381
|
## Basic Toc
|
|
92
382
|
|
|
93
383
|
```html
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface AccordionItemState {
|
|
2
|
+
disabled: boolean;
|
|
3
|
+
open?: boolean;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Public tag name registered by `defineAccordion`.
|
|
8
|
+
*/
|
|
9
|
+
export const ACCORDION_TAG_NAME: "basic-accordion";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Returns the initially open accordion item indexes based on explicit state and
|
|
13
|
+
* the root element's single-open or collapsible behavior.
|
|
14
|
+
*/
|
|
15
|
+
export function getInitialOpenAccordionIndexes(
|
|
16
|
+
itemStates: AccordionItemState[],
|
|
17
|
+
options?: {
|
|
18
|
+
multiple?: boolean;
|
|
19
|
+
collapsible?: boolean;
|
|
20
|
+
},
|
|
21
|
+
): number[];
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Returns the next enabled accordion trigger index, wrapping around the list
|
|
25
|
+
* when needed.
|
|
26
|
+
*/
|
|
27
|
+
export function findNextEnabledAccordionIndex(
|
|
28
|
+
itemStates: AccordionItemState[],
|
|
29
|
+
startIndex: number,
|
|
30
|
+
direction: number,
|
|
31
|
+
): number;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Custom element that upgrades existing trigger-and-panel markup into an
|
|
35
|
+
* accessible accordion interface.
|
|
36
|
+
*
|
|
37
|
+
* Attributes:
|
|
38
|
+
* - `data-multiple`: allows multiple panels to stay open
|
|
39
|
+
* - `data-collapsible`: allows the last open panel in single mode to close
|
|
40
|
+
*/
|
|
41
|
+
export class AccordionElement extends HTMLElement {
|
|
42
|
+
static observedAttributes: string[];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Registers the `basic-accordion` custom element if it is not already defined.
|
|
47
|
+
*/
|
|
48
|
+
export function defineAccordion(
|
|
49
|
+
registry?: CustomElementRegistry,
|
|
50
|
+
): typeof AccordionElement;
|