drab 2.8.3 → 2.8.5

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.
@@ -1,11 +1,11 @@
1
- <!--
2
- @component
3
-
4
- ### Sheet
5
-
6
- Creates a sheet element based on the `position` provided. `maxSize` is set to width or height of the sheet depending on the `position` provided. The `transition` is calculated based on the `position` and `maxSize` of the sheet.
7
-
8
- @props
1
+ <!--
2
+ @component
3
+
4
+ ### Sheet
5
+
6
+ Creates a sheet element based on the `position` provided. `maxSize` is set to width or height of the sheet depending on the `position` provided. The `transition` is calculated based on the `position` and `maxSize` of the sheet.
7
+
8
+ @props
9
9
 
10
10
  - `classSheet` - sheet class - not the backdrop
11
11
  - `class`
@@ -16,48 +16,48 @@ Creates a sheet element based on the `position` provided. `maxSize` is set to wi
16
16
  - `transitionSheet` - flies the sheet, set to `false` to remove
17
17
  - `transition` - blurs the entire component, set to `false` to remove
18
18
 
19
- @slots
20
-
21
- | name | purpose | default value |
22
- | ---------- | ------------------------------- | ------------- |
23
- | `default` | content | `Content` |
24
-
25
- @example
19
+ @slots
20
+
21
+ | name | purpose | default value |
22
+ | ---------- | ------------------------------- | ------------- |
23
+ | `default` | content | `Content` |
24
+
25
+ @example
26
26
 
27
27
  ```svelte
28
- <script lang="ts">
29
- import { Sheet } from "drab";
30
-
31
- let display = false;
32
- </script>
33
-
34
- <button type="button" class="btn" on:click={() => (display = true)}>
35
- Open
36
- </button>
37
-
38
- <Sheet
39
- bind:display
40
- class="bg-neutral-50/80 backdrop-blur"
41
- classSheet="p-4 shadow bg-white"
42
- position="right"
43
- >
44
- <div class="mb-4 flex items-center justify-between">
45
- <h2 class="my-0">Sheet</h2>
46
- <button type="button" class="btn btn-s" on:click={() => (display = false)}>
47
- Close
48
- </button>
49
- </div>
50
- <div>
51
- Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
52
- tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
53
- quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
54
- consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
55
- cillum dolore eu fugiat nulla pariatur.
56
- </div>
57
- </Sheet>
28
+ <script lang="ts">
29
+ import { Sheet } from "drab";
30
+
31
+ let display = false;
32
+ </script>
33
+
34
+ <button type="button" class="btn" on:click={() => (display = true)}>
35
+ Open
36
+ </button>
37
+
38
+ <Sheet
39
+ bind:display
40
+ class="bg-neutral-50/80 backdrop-blur"
41
+ classSheet="p-4 shadow bg-white"
42
+ position="right"
43
+ >
44
+ <div class="mb-4 flex items-center justify-between">
45
+ <h2 class="my-0">Sheet</h2>
46
+ <button type="button" class="btn btn-s" on:click={() => (display = false)}>
47
+ Close
48
+ </button>
49
+ </div>
50
+ <div>
51
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
52
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
53
+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
54
+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
55
+ cillum dolore eu fugiat nulla pariatur.
56
+ </div>
57
+ </Sheet>
58
58
  ```
59
- -->
60
-
59
+ -->
60
+
61
61
  <script>import { onMount } from "svelte";
62
62
  import {
63
63
  blur,
@@ -101,56 +101,56 @@ onMount(() => {
101
101
  transitionSheet = false;
102
102
  }
103
103
  });
104
- </script>
105
-
106
- <svelte:body on:keydown={onKeyDown} />
107
-
108
- {#if display}
109
- <div
110
- transition:blur={transition ? transition : { duration: 0 }}
111
- use:focusElement
112
- class="d-backdrop {className}"
113
- class:d-backdrop-bottom={position === "bottom"}
114
- class:d-backdrop-top={position === "top"}
115
- class:d-backdrop-right={position === "right"}
116
- {id}
117
- tabindex="-1"
118
- >
119
- <div
120
- role="dialog"
121
- bind:this={sheet}
122
- transition:fly={transitionSheet ? transitionSheet : { duration: 0 }}
123
- style={position === "top" || position === "bottom"
124
- ? `max-height: ${maxSize}px;`
125
- : `max-width: ${maxSize}px`}
126
- class={classSheet}
127
- >
128
- <slot>Content</slot>
129
- </div>
130
- <button title="Close" on:click={() => (display = false)}></button>
131
- </div>
132
- {/if}
133
-
134
- <style>
135
- button {
136
- flex-grow: 1;
137
- }
138
- .d-backdrop {
139
- position: fixed;
140
- display: flex;
141
- top: 0;
142
- bottom: 0;
143
- left: 0;
144
- right: 0;
145
- overflow: hidden;
146
- }
147
- .d-backdrop-bottom {
148
- flex-direction: column-reverse;
149
- }
150
- .d-backdrop-top {
151
- flex-direction: column;
152
- }
153
- .d-backdrop-right {
154
- flex-direction: row-reverse;
155
- }
156
- </style>
104
+ </script>
105
+
106
+ <svelte:body on:keydown={onKeyDown} />
107
+
108
+ {#if display}
109
+ <div
110
+ transition:blur={transition ? transition : { duration: 0 }}
111
+ use:focusElement
112
+ class="d-backdrop {className}"
113
+ class:d-backdrop-bottom={position === "bottom"}
114
+ class:d-backdrop-top={position === "top"}
115
+ class:d-backdrop-right={position === "right"}
116
+ {id}
117
+ tabindex="-1"
118
+ >
119
+ <div
120
+ role="dialog"
121
+ bind:this={sheet}
122
+ transition:fly={transitionSheet ? transitionSheet : { duration: 0 }}
123
+ style={position === "top" || position === "bottom"
124
+ ? `max-height: ${maxSize}px;`
125
+ : `max-width: ${maxSize}px`}
126
+ class={classSheet}
127
+ >
128
+ <slot>Content</slot>
129
+ </div>
130
+ <button title="Close" on:click={() => (display = false)}></button>
131
+ </div>
132
+ {/if}
133
+
134
+ <style>
135
+ button {
136
+ flex-grow: 1;
137
+ }
138
+ .d-backdrop {
139
+ position: fixed;
140
+ display: flex;
141
+ top: 0;
142
+ bottom: 0;
143
+ left: 0;
144
+ right: 0;
145
+ overflow: hidden;
146
+ }
147
+ .d-backdrop-bottom {
148
+ flex-direction: column-reverse;
149
+ }
150
+ .d-backdrop-top {
151
+ flex-direction: column;
152
+ }
153
+ .d-backdrop-right {
154
+ flex-direction: row-reverse;
155
+ }
156
+ </style>
@@ -1,126 +1,103 @@
1
- <!--
2
- @component
1
+ <!--
2
+ @component
3
+
4
+ ### Tabs
5
+
6
+ Displays tabs and the selected tab's content.
7
+
8
+ @props
3
9
 
4
- ### Tabs
5
-
6
- Displays tabs and the selected tab's content.
7
-
8
- @props
9
-
10
- - `classNoscript` - `noscript` class
11
- - `classTabActive` - class of the active tab's `button`
12
- - `classTabInactive` - class of all the inactive tabs' `button`s
13
10
  - `classTabList` - class of the `div` that wraps the `button`s
14
- - `classTabPanel` - class of `div` that wraps the slotted content
15
- - `classTab` - class of all title `button`s
11
+ - `classTab` - class of all tab `button`s
16
12
  - `class`
17
13
  - `data` - provides the content for each tab
18
14
  - `id`
19
- - `selectedIndex` - index of selected tab, defaults to `0`
15
+ - `indexSelected` - index of selected tab, defaults to `0`
20
16
 
21
- @slots
22
-
23
- | name | purpose | default value | slot props |
24
- | ---------- | -------------------- | --------------- | ---------------------- |
25
- | `tab` | title of each tab | `item.tab` | `item`, `index`, `tab` |
26
- | `tabPanel` | selected tab's panel | `item.tabPanel` | `item`, `index` |
27
-
28
- @example
17
+ @slots
18
+
19
+ | name | purpose | default value | slot props |
20
+ | ---------- | -------------------- | --------------- | --------------------------------------- |
21
+ | `tab` | title of each tab | `item.tab` | `item`, `index`, `selectedIndex`, `tab` |
22
+ | `tabPanel` | selected tab's panel | `item.tabPanel` | `item`, `index` |
23
+
24
+ @example
29
25
 
30
26
  ```svelte
31
- <script lang="ts">
32
- import { Tabs, type TabsItem, FullscreenButton } from "drab";
33
-
34
- const data: TabsItem[] = [
35
- { tab: "Tab", tabPanel: "Content" },
36
- {
37
- tab: "Another Tab",
38
- tabPanel: "Some more content",
39
- component: FullscreenButton,
40
- },
41
- ];
42
- </script>
43
-
44
- <Tabs
45
- {data}
46
- class="mb-4"
47
- classTabList="grid grid-flow-col grid-rows-1 gap-1 rounded-md bg-neutral-200 p-1"
48
- classTab="btn btn-s p-2"
49
- classTabActive="bg-white text-neutral-950 shadow"
50
- classTabInactive="bg-neutral-200 text-neutral-600"
51
- classTabPanel="py-2"
52
- />
53
-
54
- <Tabs
55
- {data}
56
- classTabList="grid grid-flow-col grid-rows-1 gap-1 rounded-md bg-neutral-200 p-1"
57
- classTab="btn btn-s p-2"
58
- classTabActive="bg-white text-neutral-950 shadow"
59
- classTabInactive="bg-neutral-200 text-neutral-600"
60
- classTabPanel="py-2"
61
- >
62
- <svelte:fragment slot="tab" let:item let:index>
63
- {index + 1}.
64
- {item.tab}
65
- </svelte:fragment>
66
- <svelte:fragment slot="tabPanel" let:item>
67
- <div>{item.tabPanel}</div>
68
- {#if item.component}
69
- <svelte:component this={item.component} class="btn mt-2" />
70
- {/if}
71
- </svelte:fragment>
72
- </Tabs>
27
+ <script lang="ts">
28
+ import { Tabs, FullscreenButton } from "drab";
29
+ </script>
30
+
31
+ <Tabs
32
+ data={[
33
+ { tab: "Tab", tabPanel: "Content" },
34
+ {
35
+ tab: "Another Tab",
36
+ tabPanel: "Some more content",
37
+ component: FullscreenButton,
38
+ },
39
+ ]}
40
+ classTabList="grid grid-flow-col grid-rows-1 gap-1 rounded-md bg-neutral-200 p-1"
41
+ >
42
+ <svelte:fragment slot="tab" let:item let:index let:indexSelected>
43
+ <div
44
+ class="btn btn-s {index === indexSelected
45
+ ? 'bg-white text-neutral-950 shadow'
46
+ : 'bg-neutral-200 text-neutral-600'}"
47
+ >
48
+ {item.tab}
49
+ </div>
50
+ </svelte:fragment>
51
+ <svelte:fragment slot="tabPanel" let:item>
52
+ <div class="py-2">
53
+ <div>{item.tabPanel}</div>
54
+ {#if item.component}
55
+ <svelte:component this={item.component} class="btn mt-2" />
56
+ {/if}
57
+ </div>
58
+ </svelte:fragment>
59
+ </Tabs>
73
60
  ```
74
- -->
75
-
76
- <script context="module"></script>
77
-
61
+ -->
62
+
78
63
  <script>import { onMount } from "svelte";
79
- import { messageNoScript } from "../util/messages";
80
64
  let className = "";
81
65
  export { className as class };
82
66
  export let id = "";
83
67
  export let classTabList = "";
84
68
  export let classTab = "";
85
- export let classTabActive = "";
86
- export let classTabInactive = "";
87
- export let classNoscript = "";
88
- export let classTabPanel = "";
89
69
  export let data;
90
- export let selectedIndex = 0;
70
+ export let indexSelected = 0;
91
71
  let clientJs = false;
92
72
  const idPanel = "tabPanel-" + Math.random().toString().substring(2, 8);
93
73
  onMount(() => clientJs = true);
94
- </script>
95
-
96
- <div class={className} {id}>
97
- <div class={classTabList} role="tablist">
98
- {#each data as item, index}
99
- <button
100
- role="tab"
101
- tabindex={index === selectedIndex ? 0 : -1}
102
- aria-selected={index === selectedIndex}
103
- aria-controls={idPanel}
104
- disabled={!clientJs}
105
- class="{classTab} {selectedIndex === index
106
- ? classTabActive
107
- : ''} {selectedIndex !== index ? classTabInactive : ''}"
108
- on:click={() => (selectedIndex = index)}
109
- >
110
- <slot name="tab" {item} {index} tab={item.tab}>{item.tab}</slot>
111
- </button>
112
- {/each}
113
- </div>
114
- {#each data as item, index}
115
- {#if index === selectedIndex}
116
- <div class={classTabPanel} role="tabpanel" id={idPanel}>
117
- <slot name="tabPanel" {item} {index}>
118
- {item.tabPanel}
119
- </slot>
120
- </div>
121
- {/if}
122
- {/each}
123
- <noscript>
124
- <div class={classNoscript}>{messageNoScript}</div>
125
- </noscript>
126
- </div>
74
+ </script>
75
+
76
+ <div class={className} {id}>
77
+ <div class={classTabList} role="tablist">
78
+ {#each data as item, index}
79
+ <button
80
+ role="tab"
81
+ tabindex={index === indexSelected ? 0 : -1}
82
+ aria-selected={index === indexSelected}
83
+ aria-controls={idPanel}
84
+ disabled={!clientJs}
85
+ class={classTab}
86
+ on:click={() => (indexSelected = index)}
87
+ >
88
+ <slot name="tab" {item} {index} {indexSelected} tab={item.tab}>
89
+ {item.tab}
90
+ </slot>
91
+ </button>
92
+ {/each}
93
+ </div>
94
+ {#each data as item, index}
95
+ {#if index === indexSelected}
96
+ <div role="tabpanel" id={idPanel}>
97
+ <slot name="tabPanel" {item} {index}>
98
+ {item.tabPanel}
99
+ </slot>
100
+ </div>
101
+ {/if}
102
+ {/each}
103
+ </div>
@@ -1,36 +1,46 @@
1
1
  import { SvelteComponent } from "svelte";
2
- export interface TabsItem {
3
- /** tab title, displayed in `button` element */
4
- tab?: string;
5
- /** slotted content, displayed once tab is clicked */
6
- tabPanel?: string;
7
- /** any data to pass back to the parent */
8
- [key: string | number]: any;
9
- }
10
2
  declare const __propDef: {
11
3
  props: {
12
4
  class?: string | undefined;
13
5
  id?: string | undefined;
14
6
  /** class of the `div` that wraps the `button`s */ classTabList?: string | undefined;
15
- /** class of all title `button`s */ classTab?: string | undefined;
16
- /** class of the active tab's `button` */ classTabActive?: string | undefined;
17
- /** class of all the inactive tabs' `button`s */ classTabInactive?: string | undefined;
18
- /** `noscript` class */ classNoscript?: string | undefined;
19
- /** class of `div` that wraps the slotted content */ classTabPanel?: string | undefined;
20
- /** provides the content for each tab */ data: TabsItem[];
21
- /** index of selected tab, defaults to `0` */ selectedIndex?: number | undefined;
7
+ /** class of all tab `button`s */ classTab?: string | undefined;
8
+ /** provides the content for each tab */ data: {
9
+ [key: string]: any;
10
+ [key: number]: any;
11
+ /** tab title, displayed in `button` element */
12
+ tab?: string | undefined;
13
+ /** slotted content, displayed once tab is clicked */
14
+ tabPanel?: string | undefined;
15
+ }[];
16
+ /** index of selected tab, defaults to `0` */ indexSelected?: number | undefined;
22
17
  };
23
18
  events: {
24
19
  [evt: string]: CustomEvent<any>;
25
20
  };
26
21
  slots: {
27
22
  tab: {
28
- item: TabsItem;
23
+ item: {
24
+ [key: string]: any;
25
+ [key: number]: any;
26
+ /** tab title, displayed in `button` element */
27
+ tab?: string | undefined;
28
+ /** slotted content, displayed once tab is clicked */
29
+ tabPanel?: string | undefined;
30
+ };
29
31
  index: any;
32
+ indexSelected: number;
30
33
  tab: string | undefined;
31
34
  };
32
35
  tabPanel: {
33
- item: TabsItem;
36
+ item: {
37
+ [key: string]: any;
38
+ [key: number]: any;
39
+ /** tab title, displayed in `button` element */
40
+ tab?: string | undefined;
41
+ /** slotted content, displayed once tab is clicked */
42
+ tabPanel?: string | undefined;
43
+ };
34
44
  index: any;
35
45
  };
36
46
  };
@@ -45,67 +55,54 @@ export type TabsSlots = typeof __propDef.slots;
45
55
  *
46
56
  * @props
47
57
  *
48
- * - `classNoscript` - `noscript` class
49
- * - `classTabActive` - class of the active tab's `button`
50
- * - `classTabInactive` - class of all the inactive tabs' `button`s
51
58
  * - `classTabList` - class of the `div` that wraps the `button`s
52
- * - `classTabPanel` - class of `div` that wraps the slotted content
53
- * - `classTab` - class of all title `button`s
59
+ * - `classTab` - class of all tab `button`s
54
60
  * - `class`
55
61
  * - `data` - provides the content for each tab
56
62
  * - `id`
57
- * - `selectedIndex` - index of selected tab, defaults to `0`
63
+ * - `indexSelected` - index of selected tab, defaults to `0`
58
64
  *
59
65
  * @slots
60
66
  *
61
- * | name | purpose | default value | slot props |
62
- * | ---------- | -------------------- | --------------- | ---------------------- |
63
- * | `tab` | title of each tab | `item.tab` | `item`, `index`, `tab` |
64
- * | `tabPanel` | selected tab's panel | `item.tabPanel` | `item`, `index` |
67
+ * | name | purpose | default value | slot props |
68
+ * | ---------- | -------------------- | --------------- | --------------------------------------- |
69
+ * | `tab` | title of each tab | `item.tab` | `item`, `index`, `selectedIndex`, `tab` |
70
+ * | `tabPanel` | selected tab's panel | `item.tabPanel` | `item`, `index` |
65
71
  *
66
72
  * @example
67
73
  *
68
74
  * ```svelte
69
75
  * <script lang="ts">
70
- * import { Tabs, type TabsItem, FullscreenButton } from "drab";
76
+ * import { Tabs, FullscreenButton } from "drab";
77
+ * </script>
71
78
  *
72
- * const data: TabsItem[] = [
79
+ * <Tabs
80
+ * data={[
73
81
  * { tab: "Tab", tabPanel: "Content" },
74
82
  * {
75
83
  * tab: "Another Tab",
76
84
  * tabPanel: "Some more content",
77
85
  * component: FullscreenButton,
78
86
  * },
79
- * ];
80
- * </script>
81
- *
82
- * <Tabs
83
- * {data}
84
- * class="mb-4"
85
- * classTabList="grid grid-flow-col grid-rows-1 gap-1 rounded-md bg-neutral-200 p-1"
86
- * classTab="btn btn-s p-2"
87
- * classTabActive="bg-white text-neutral-950 shadow"
88
- * classTabInactive="bg-neutral-200 text-neutral-600"
89
- * classTabPanel="py-2"
90
- * />
91
- *
92
- * <Tabs
93
- * {data}
87
+ * ]}
94
88
  * classTabList="grid grid-flow-col grid-rows-1 gap-1 rounded-md bg-neutral-200 p-1"
95
- * classTab="btn btn-s p-2"
96
- * classTabActive="bg-white text-neutral-950 shadow"
97
- * classTabInactive="bg-neutral-200 text-neutral-600"
98
- * classTabPanel="py-2"
99
89
  * >
100
- * <svelte:fragment slot="tab" let:item let:index>
101
- * {index + 1}.
102
- * {item.tab}
90
+ * <svelte:fragment slot="tab" let:item let:index let:indexSelected>
91
+ * <div
92
+ * class="btn btn-s {index === indexSelected
93
+ * ? 'bg-white text-neutral-950 shadow'
94
+ * : 'bg-neutral-200 text-neutral-600'}"
95
+ * >
96
+ * {item.tab}
97
+ * </div>
103
98
  * </svelte:fragment>
104
99
  * <svelte:fragment slot="tabPanel" let:item>
105
- * <div>{item.tabPanel}</div>
106
- * {#if item.component}
107
- * <svelte:component this={item.component} class="btn mt-2" />
108
- * {/if}
100
+ * <div class="py-2">
101
+ * <div>{item.tabPanel}</div>
102
+ * {#if item.component}
103
+ * <svelte:component this={item.component} class="btn mt-2" />
104
+ * {/if}
105
+ * </div>
109
106
  * </svelte:fragment>
110
107
  * </Tabs>
111
108
  * ```
@@ -17,15 +17,15 @@ Embeds a YouTube video `iframe` into a website with the video `uid`, using [www.
17
17
  @example
18
18
 
19
19
  ```svelte
20
- <script lang="ts">
21
- import { YouTube } from "drab";
22
- </script>
23
-
24
- <YouTube
25
- class="aspect-video w-full rounded"
26
- title="Renegade - Kevin Olusola"
27
- uid="gouiY85kD2o"
28
- />
20
+ <script lang="ts">
21
+ import { YouTube } from "drab";
22
+ </script>
23
+
24
+ <YouTube
25
+ class="aspect-video w-full rounded"
26
+ title="Renegade - Kevin Olusola"
27
+ uid="gouiY85kD2o"
28
+ />
29
29
  ```
30
30
  -->
31
31
 
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import Accordion, { type AccordionItem } from "./components/Accordion.svelte";
2
1
  import Breakpoint from "./components/Breakpoint.svelte";
3
- import Chord, { type ChordNote } from "./components/Chord.svelte";
2
+ import Chord from "./components/Chord.svelte";
4
3
  import ContextMenu from "./components/ContextMenu.svelte";
5
4
  import CopyButton from "./components/CopyButton.svelte";
6
- import DataTable, { type DataTableItem } from "./components/DataTable.svelte";
7
- import Editor, { type EditorContentElement } from "./components/Editor.svelte";
5
+ import DataTable from "./components/DataTable.svelte";
6
+ import Details from "./components/Details.svelte";
7
+ import Editor from "./components/Editor.svelte";
8
8
  import FullscreenButton from "./components/FullscreenButton.svelte";
9
9
  import Popover from "./components/Popover.svelte";
10
10
  import ShareButton from "./components/ShareButton.svelte";
11
11
  import Sheet from "./components/Sheet.svelte";
12
- import Tabs, { type TabsItem } from "./components/Tabs.svelte";
12
+ import Tabs from "./components/Tabs.svelte";
13
13
  import YouTube from "./components/YouTube.svelte";
14
- export { Accordion, type AccordionItem, Breakpoint, Chord, type ChordNote, ContextMenu, CopyButton, DataTable, type DataTableItem, Editor, type EditorContentElement, FullscreenButton, Popover, ShareButton, Sheet, Tabs, type TabsItem, YouTube, };
14
+ export { Breakpoint, Chord, ContextMenu, CopyButton, DataTable, Details, Editor, FullscreenButton, Popover, ShareButton, Sheet, Tabs, YouTube, };
package/dist/index.js CHANGED
@@ -1,14 +1,14 @@
1
- import Accordion, {} from "./components/Accordion.svelte";
2
1
  import Breakpoint from "./components/Breakpoint.svelte";
3
- import Chord, {} from "./components/Chord.svelte";
2
+ import Chord from "./components/Chord.svelte";
4
3
  import ContextMenu from "./components/ContextMenu.svelte";
5
4
  import CopyButton from "./components/CopyButton.svelte";
6
- import DataTable, {} from "./components/DataTable.svelte";
7
- import Editor, {} from "./components/Editor.svelte";
5
+ import DataTable from "./components/DataTable.svelte";
6
+ import Details from "./components/Details.svelte";
7
+ import Editor from "./components/Editor.svelte";
8
8
  import FullscreenButton from "./components/FullscreenButton.svelte";
9
9
  import Popover from "./components/Popover.svelte";
10
10
  import ShareButton from "./components/ShareButton.svelte";
11
11
  import Sheet from "./components/Sheet.svelte";
12
- import Tabs, {} from "./components/Tabs.svelte";
12
+ import Tabs from "./components/Tabs.svelte";
13
13
  import YouTube from "./components/YouTube.svelte";
14
- export { Accordion, Breakpoint, Chord, ContextMenu, CopyButton, DataTable, Editor, FullscreenButton, Popover, ShareButton, Sheet, Tabs, YouTube, };
14
+ export { Breakpoint, Chord, ContextMenu, CopyButton, DataTable, Details, Editor, FullscreenButton, Popover, ShareButton, Sheet, Tabs, YouTube, };