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.
- package/README.md +67 -67
- package/dist/components/Breakpoint.svelte +9 -13
- package/dist/components/Chord.svelte +30 -32
- package/dist/components/Chord.svelte.d.ts +8 -9
- package/dist/components/ContextMenu.svelte +75 -75
- package/dist/components/CopyButton.svelte +5 -5
- package/dist/components/DataTable.svelte +133 -158
- package/dist/components/DataTable.svelte.d.ts +51 -44
- package/dist/components/Details.svelte +103 -0
- package/dist/components/Details.svelte.d.ts +69 -0
- package/dist/components/Editor.svelte +33 -44
- package/dist/components/Editor.svelte.d.ts +16 -24
- package/dist/components/FullscreenButton.svelte +14 -19
- package/dist/components/FullscreenButton.svelte.d.ts +0 -2
- package/dist/components/Popover.svelte +63 -63
- package/dist/components/ShareButton.svelte +41 -44
- package/dist/components/Sheet.svelte +100 -100
- package/dist/components/Tabs.svelte +84 -107
- package/dist/components/Tabs.svelte.d.ts +52 -55
- package/dist/components/YouTube.svelte +9 -9
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/package.json +82 -82
- package/dist/components/Accordion.svelte +0 -189
- package/dist/components/Accordion.svelte.d.ts +0 -135
- package/dist/util/messages.d.ts +0 -1
- package/dist/util/messages.js +0 -1
@@ -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
|
-
- `
|
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
|
-
- `
|
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,
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
>
|
62
|
-
|
63
|
-
|
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
|
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 ===
|
102
|
-
aria-selected={index ===
|
103
|
-
aria-controls={idPanel}
|
104
|
-
disabled={!clientJs}
|
105
|
-
class=
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
</button>
|
112
|
-
{/each}
|
113
|
-
</div>
|
114
|
-
{#each data as item, index}
|
115
|
-
{#if index ===
|
116
|
-
<div
|
117
|
-
<slot name="tabPanel" {item} {index}>
|
118
|
-
{item.tabPanel}
|
119
|
-
</slot>
|
120
|
-
</div>
|
121
|
-
{/if}
|
122
|
-
{/each}
|
123
|
-
|
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
|
16
|
-
/**
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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:
|
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:
|
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
|
-
* - `
|
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
|
-
* - `
|
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,
|
76
|
+
* import { Tabs, FullscreenButton } from "drab";
|
77
|
+
* </script>
|
71
78
|
*
|
72
|
-
*
|
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
|
-
*
|
102
|
-
*
|
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>
|
106
|
-
*
|
107
|
-
*
|
108
|
-
*
|
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
|
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
|
7
|
-
import
|
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
|
12
|
+
import Tabs from "./components/Tabs.svelte";
|
13
13
|
import YouTube from "./components/YouTube.svelte";
|
14
|
-
export {
|
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
|
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
|
7
|
-
import
|
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
|
12
|
+
import Tabs from "./components/Tabs.svelte";
|
13
13
|
import YouTube from "./components/YouTube.svelte";
|
14
|
-
export {
|
14
|
+
export { Breakpoint, Chord, ContextMenu, CopyButton, DataTable, Details, Editor, FullscreenButton, Popover, ShareButton, Sheet, Tabs, YouTube, };
|