@flightlesslabs/dodo-ui 0.17.1 → 0.18.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/dist/index.d.ts +5 -1
- package/dist/index.js +2 -0
- package/dist/stories/Home.mdx +2 -1
- package/dist/stories/components/Form/Button/Button.svelte +0 -2
- package/dist/stories/components/Form/Radio/Radio.svelte +0 -1
- package/dist/stories/components/Form/Select/Select.svelte.d.ts +2 -2
- package/dist/stories/components/Layout/Accordian/Accordian.stories.svelte +52 -0
- package/dist/stories/components/Layout/Accordian/Accordian.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Accordian/Accordian.svelte +121 -0
- package/dist/stories/components/Layout/Accordian/Accordian.svelte.d.ts +34 -0
- package/dist/stories/components/Layout/Accordian/Customize/Customize.stories.svelte +69 -0
- package/dist/stories/components/Layout/Accordian/Customize/Customize.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Layout/Accordian/Events/Events.stories.svelte +30 -0
- package/dist/stories/components/Layout/Accordian/Events/Events.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Layout/Accordian/Size/Size.stories.svelte +48 -0
- package/dist/stories/components/Layout/Accordian/Size/Size.stories.svelte.d.ts +26 -0
- package/dist/stories/developer tools/Intro.mdx +1 -0
- package/dist/stories/developer tools/customize/AutoCustomize/AutoCustomize.mdx +4 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorButton.svelte +42 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorButton.svelte.d.ts +8 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorTool.svelte +21 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorTool.svelte.d.ts +9 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/Config.svelte +144 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/Config.svelte.d.ts +18 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/Export.svelte +123 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/Export.svelte.d.ts +18 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ValueSilder/ValueSilder.svelte +32 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ValueSilder/ValueSilder.svelte.d.ts +11 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Preview/Preview.svelte +192 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Preview/Preview.svelte.d.ts +3 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Tool.stories.svelte +9 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Tool.stories.svelte.d.ts +19 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Tool.svelte +13 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/Tool.svelte.d.ts +18 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/helpers/download-file.d.ts +1 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/helpers/download-file.js +10 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/stores/config.svelte.d.ts +27 -0
- package/dist/stories/developer tools/customize/AutoCustomize/Tool/stores/config.svelte.js +70 -0
- package/dist/stories/developer tools/customize/Intro.mdx +8 -0
- package/dist/styles/_colors.css +1 -1
- package/dist/types/special.d.ts +1 -0
- package/dist/types/special.js +1 -0
- package/package.json +8 -6
- package/src/lib/index.ts +10 -5
- package/src/lib/stories/components/Form/Button/Button.svelte +0 -2
- package/src/lib/stories/components/Form/Radio/Radio.svelte +0 -1
- package/src/lib/stories/components/Form/Select/Select.svelte +2 -3
- package/src/lib/stories/components/Layout/Accordian/Accordian.svelte +195 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorButton.svelte +56 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorTool.svelte +32 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Config/Config.svelte +149 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Config/Export.svelte +172 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Config/ValueSilder/ValueSilder.svelte +47 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Preview/Preview.svelte +227 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/Tool.svelte +16 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/helpers/download-file.ts +11 -0
- package/src/lib/stories/developer tools/customize/AutoCustomize/Tool/stores/config.svelte.ts +107 -0
- package/src/lib/styles/_colors.css +1 -1
- package/src/lib/types/special.ts +1 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export type { ComponentRoundness } from './types/roundness.js';
|
|
|
3
3
|
export type { ComponentSize } from './types/size.js';
|
|
4
4
|
export type { ComponentWeight } from './types/weight.js';
|
|
5
5
|
export type { PositionY, PositionX } from './types/position.js';
|
|
6
|
+
export type { DropdownArrowPosition } from './types/special.js';
|
|
6
7
|
/** developer tools: helpers: logger */
|
|
7
8
|
export { default as createLogger } from './stories/developer tools/helpers/logger/logger.js';
|
|
8
9
|
export type { LogLevel, LoggerOptions, } from './stories/developer tools/helpers/logger/logger.js';
|
|
@@ -50,7 +51,7 @@ export { default as Message } from './stories/components/Form/Message/Message.sv
|
|
|
50
51
|
export type { MessageProps } from './stories/components/Form/Message/Message.svelte';
|
|
51
52
|
/** Form: Select */
|
|
52
53
|
export { default as Select } from './stories/components/Form/Select/Select.svelte';
|
|
53
|
-
export type { SelectOption,
|
|
54
|
+
export type { SelectOption, SelectProps } from './stories/components/Form/Select/Select.svelte';
|
|
54
55
|
/** Form: NumericInput */
|
|
55
56
|
export { default as NumericInput } from './stories/components/Form/NumericInput/NumericInput.svelte';
|
|
56
57
|
export type { NumericInputProps } from './stories/components/Form/NumericInput/NumericInput.svelte';
|
|
@@ -89,6 +90,9 @@ export { default as Row } from './stories/components/Layout/Grid/Row/Row.svelte'
|
|
|
89
90
|
export type { GridRowProps } from './stories/components/Layout/Grid/Row/Row.svelte';
|
|
90
91
|
export { default as Column } from './stories/components/Layout/Grid/Column/Column.svelte';
|
|
91
92
|
export type { GridColumnSize, GridColumnProps, } from './stories/components/Layout/Grid/Column/Column.svelte';
|
|
93
|
+
/** Layout: Accordian */
|
|
94
|
+
export { default as Accordian } from './stories/components/Layout/Accordian/Accordian.svelte';
|
|
95
|
+
export type { AccordianProps, AccordianToggleEvent, } from './stories/components/Layout/Accordian/Accordian.svelte';
|
|
92
96
|
/** Info: Calendar */
|
|
93
97
|
export { default as Calendar } from './stories/components/Info/Calendar/Calendar.svelte';
|
|
94
98
|
export type { CalendarProps, CalendarActiveSection, } from './stories/components/Info/Calendar/Calendar.svelte';
|
package/dist/index.js
CHANGED
|
@@ -55,6 +55,8 @@ export { default as DynamicMenu } from './stories/components/Layout/Menu/Dynamic
|
|
|
55
55
|
export { default as Grid } from './stories/components/Layout/Grid/Grid.svelte';
|
|
56
56
|
export { default as Row } from './stories/components/Layout/Grid/Row/Row.svelte';
|
|
57
57
|
export { default as Column } from './stories/components/Layout/Grid/Column/Column.svelte';
|
|
58
|
+
/** Layout: Accordian */
|
|
59
|
+
export { default as Accordian } from './stories/components/Layout/Accordian/Accordian.svelte';
|
|
58
60
|
/** Info: Calendar */
|
|
59
61
|
export { default as Calendar } from './stories/components/Info/Calendar/Calendar.svelte';
|
|
60
62
|
export { default as CalendarDatesChart } from './stories/components/Info/Calendar/SubComponents/CalendarDatesChart/CalendarDatesChart.svelte';
|
package/dist/stories/Home.mdx
CHANGED
|
@@ -11,7 +11,7 @@ import item from '../../../package.json?raw';
|
|
|
11
11
|
|
|
12
12
|
<h3 style={{ fontWeight: 400 }}>An open-source, opinionated UI framework for Svelte.</h3>
|
|
13
13
|
|
|
14
|
-
### [Github](https://github.com/flightlesslabs/dodo-ui) - [npm](https://www.npmjs.com/package/@flightlesslabs/dodo-ui)
|
|
14
|
+
### [Github](https://github.com/flightlesslabs/dodo-ui) - [npm](https://www.npmjs.com/package/@flightlesslabs/dodo-ui) - [Customize](?path=/docs/developer-tools-customize-autocustomize--docs)
|
|
15
15
|
|
|
16
16
|
</main>
|
|
17
17
|
|
|
@@ -68,4 +68,5 @@ import { Button } '@flightlesslabs/dodo-ui';
|
|
|
68
68
|
|
|
69
69
|
- [Dark Theme](?path=/docs/developer-tools-philosophy-themes--docs#dark-theme)
|
|
70
70
|
- [Colors](?path=/docs/developer-tools-philosophy-colors--docs)
|
|
71
|
+
- [Customize](?path=/docs/developer-tools-customize-autocustomize--docs)
|
|
71
72
|
- [Adjust Color Opacity](?path=/docs/developer-tools-philosophy-colors--docs#adjusting-opacity)
|
|
@@ -271,7 +271,6 @@ let { children, type = 'button', size = 'normal', color = 'primary', roundness =
|
|
|
271
271
|
|
|
272
272
|
.dodo-ui-Button {
|
|
273
273
|
cursor: pointer;
|
|
274
|
-
outline: none;
|
|
275
274
|
transition: all 150ms;
|
|
276
275
|
text-decoration: none;
|
|
277
276
|
margin: 0;
|
|
@@ -283,7 +282,6 @@ let { children, type = 'button', size = 'normal', color = 'primary', roundness =
|
|
|
283
282
|
border-style: solid;
|
|
284
283
|
border-width: var(--dodo-ui-element-border-width);
|
|
285
284
|
border-color: transparent;
|
|
286
|
-
outline: 0;
|
|
287
285
|
color: inherit;
|
|
288
286
|
letter-spacing: 0.3px;
|
|
289
287
|
}
|
|
@@ -239,7 +239,6 @@ let { children, size = 'normal', color = 'primary', roundness = 'full', name, id
|
|
|
239
239
|
border-style: solid;
|
|
240
240
|
border-width: calc(var(--dodo-ui-element-border-width) * 2);
|
|
241
241
|
border-color: var(--dodo-ui-Radio-border-color);
|
|
242
|
-
outline: 0;
|
|
243
242
|
letter-spacing: 0.3px;
|
|
244
243
|
border-radius: inherit;
|
|
245
244
|
position: relative;
|
|
@@ -7,7 +7,6 @@ export type SelectOption = {
|
|
|
7
7
|
label: string;
|
|
8
8
|
disabled?: boolean;
|
|
9
9
|
};
|
|
10
|
-
export type SelectDropdownArrowPosition = false | 'before' | 'after';
|
|
11
10
|
export interface SelectProps {
|
|
12
11
|
/** How large should the button be? */
|
|
13
12
|
size?: ComponentSize;
|
|
@@ -90,7 +89,7 @@ export interface SelectProps {
|
|
|
90
89
|
/** Dropdown Arrow Icon */
|
|
91
90
|
customDropdownArrowIcon?: (open: boolean) => Snippet;
|
|
92
91
|
/** Select Dropdown Arrow Position */
|
|
93
|
-
dropdownArrowPosition?:
|
|
92
|
+
dropdownArrowPosition?: DropdownArrowPosition;
|
|
94
93
|
/** Popup stick horizontally */
|
|
95
94
|
popupPositionX?: PositionX;
|
|
96
95
|
/** Popup stick vertically */
|
|
@@ -103,6 +102,7 @@ export interface SelectProps {
|
|
|
103
102
|
open?: boolean;
|
|
104
103
|
}
|
|
105
104
|
import { type MenuItemProps, type MenuProps, type PaperProps, type PopperProps, type PositionX, type PositionY } from '../../../../index.js';
|
|
105
|
+
import type { DropdownArrowPosition } from '../../../../types/special.js';
|
|
106
106
|
declare const Select: import("svelte").Component<SelectProps, {}, "ref" | "open">;
|
|
107
107
|
type Select = ReturnType<typeof Select>;
|
|
108
108
|
export default Select;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
+
import Accordian from './Accordian.svelte';
|
|
3
|
+
import { componentSizeArray } from '../../../../types/size.js';
|
|
4
|
+
export const storyAccordianArgTypes = {
|
|
5
|
+
size: {
|
|
6
|
+
control: { type: 'select' },
|
|
7
|
+
options: componentSizeArray,
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
11
|
+
const { Story } = defineMeta({
|
|
12
|
+
component: Accordian,
|
|
13
|
+
tags: ['autodocs'],
|
|
14
|
+
argTypes: storyAccordianArgTypes,
|
|
15
|
+
});
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<Story name="Default" asChild>
|
|
19
|
+
<Accordian>
|
|
20
|
+
{#snippet summary()}
|
|
21
|
+
Click me!
|
|
22
|
+
{/snippet}
|
|
23
|
+
|
|
24
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
25
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
26
|
+
at harum, explicabo et doloremque.
|
|
27
|
+
</Accordian>
|
|
28
|
+
</Story>
|
|
29
|
+
|
|
30
|
+
<Story name="Open by Default" asChild>
|
|
31
|
+
<Accordian defaultOpen={true}>
|
|
32
|
+
{#snippet summary()}
|
|
33
|
+
Click me!
|
|
34
|
+
{/snippet}
|
|
35
|
+
|
|
36
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
37
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
38
|
+
at harum, explicabo et doloremque.
|
|
39
|
+
</Accordian>
|
|
40
|
+
</Story>
|
|
41
|
+
|
|
42
|
+
<Story name="Full Width Summary" asChild>
|
|
43
|
+
<Accordian fullWidthSummary>
|
|
44
|
+
{#snippet summary()}
|
|
45
|
+
Click me!
|
|
46
|
+
{/snippet}
|
|
47
|
+
|
|
48
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
49
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
50
|
+
at harum, explicabo et doloremque.
|
|
51
|
+
</Accordian>
|
|
52
|
+
</Story>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Accordian from './Accordian.svelte';
|
|
2
|
+
import type { StoryBookArgTypes } from '../../../../storybook-types.js';
|
|
3
|
+
export declare const storyAccordianArgTypes: StoryBookArgTypes;
|
|
4
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
5
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
6
|
+
$$bindings?: Bindings;
|
|
7
|
+
} & Exports;
|
|
8
|
+
(internal: unknown, props: {
|
|
9
|
+
$$events?: Events;
|
|
10
|
+
$$slots?: Slots;
|
|
11
|
+
}): Exports & {
|
|
12
|
+
$set?: any;
|
|
13
|
+
$on?: any;
|
|
14
|
+
};
|
|
15
|
+
z_$$bindings?: Bindings;
|
|
16
|
+
}
|
|
17
|
+
declare const Accordian: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
18
|
+
[evt: string]: CustomEvent<any>;
|
|
19
|
+
}, {}, {}, string>;
|
|
20
|
+
type Accordian = InstanceType<typeof Accordian>;
|
|
21
|
+
export default Accordian;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<script lang="ts" module>import Icon from '@iconify/svelte';
|
|
2
|
+
import { onMount } from 'svelte';
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script lang="ts">"use strict";
|
|
6
|
+
let { class: className = '', ref = $bindable(), ontoggle, open = $bindable(), defaultOpen, summary, children, size = 'normal', fullWidthSummary = false, customDropdownArrowIcon: customDropdownArrowIconInternal, dropdownArrowPosition = 'before', } = $props();
|
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
8
|
+
let customDropdownArrowIconTyped = customDropdownArrowIconInternal;
|
|
9
|
+
let isUserInteraction = $state(false);
|
|
10
|
+
function ontoggleMod(e) {
|
|
11
|
+
if (isUserInteraction) {
|
|
12
|
+
if (ontoggle) {
|
|
13
|
+
ontoggle(e);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
isUserInteraction = false;
|
|
17
|
+
}
|
|
18
|
+
function onsummaryclick() {
|
|
19
|
+
isUserInteraction = true;
|
|
20
|
+
}
|
|
21
|
+
onMount(() => {
|
|
22
|
+
if (open === true) {
|
|
23
|
+
ref.open = true;
|
|
24
|
+
}
|
|
25
|
+
else if (open === false) {
|
|
26
|
+
ref.open = false;
|
|
27
|
+
}
|
|
28
|
+
else if (defaultOpen === true) {
|
|
29
|
+
ref.open = true;
|
|
30
|
+
}
|
|
31
|
+
else if (defaultOpen === false) {
|
|
32
|
+
ref.open = false;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
</script>
|
|
36
|
+
|
|
37
|
+
{#snippet dropdownArrowIcon()}
|
|
38
|
+
{#if customDropdownArrowIconTyped}
|
|
39
|
+
{@render customDropdownArrowIconTyped(open)}
|
|
40
|
+
{:else}
|
|
41
|
+
<div class="IconOpen">
|
|
42
|
+
<Icon icon="material-symbols:arrow-drop-up-rounded" width="32" height="32" />
|
|
43
|
+
</div>
|
|
44
|
+
<div class="IconClose">
|
|
45
|
+
<Icon icon="material-symbols:arrow-drop-down-rounded" width="32" height="32" />
|
|
46
|
+
</div>
|
|
47
|
+
{/if}
|
|
48
|
+
{/snippet}
|
|
49
|
+
|
|
50
|
+
<details
|
|
51
|
+
class:fullWidthSummary
|
|
52
|
+
class={['dodo-ui-Accordian', `size--${size}`, className].join(' ')}
|
|
53
|
+
bind:this={ref}
|
|
54
|
+
{open}
|
|
55
|
+
ontoggle={ontoggleMod}
|
|
56
|
+
>
|
|
57
|
+
{#if summary}
|
|
58
|
+
<summary onclick={onsummaryclick}>
|
|
59
|
+
{#if dropdownArrowPosition === 'before'}
|
|
60
|
+
<div class:open class="DropdownArrow before">
|
|
61
|
+
{@render dropdownArrowIcon()}
|
|
62
|
+
</div>
|
|
63
|
+
{/if}
|
|
64
|
+
{@render summary()}
|
|
65
|
+
{#if dropdownArrowPosition === 'after'}
|
|
66
|
+
<div class:open class="DropdownArrow after">
|
|
67
|
+
{@render dropdownArrowIcon()}
|
|
68
|
+
</div>
|
|
69
|
+
{/if}
|
|
70
|
+
</summary>
|
|
71
|
+
{/if}
|
|
72
|
+
|
|
73
|
+
{#if children}
|
|
74
|
+
<div class="AccordianContent">
|
|
75
|
+
{@render children()}
|
|
76
|
+
</div>
|
|
77
|
+
{/if}
|
|
78
|
+
</details>
|
|
79
|
+
|
|
80
|
+
<style>.dodo-ui-Accordian {
|
|
81
|
+
color: var(--dodo-color-neutral-900);
|
|
82
|
+
width: 100%;
|
|
83
|
+
}
|
|
84
|
+
.dodo-ui-Accordian summary {
|
|
85
|
+
display: inline-flex;
|
|
86
|
+
align-items: center;
|
|
87
|
+
cursor: pointer;
|
|
88
|
+
user-select: none;
|
|
89
|
+
font-weight: 500;
|
|
90
|
+
}
|
|
91
|
+
.dodo-ui-Accordian.fullWidthSummary summary {
|
|
92
|
+
display: flex;
|
|
93
|
+
width: 100%;
|
|
94
|
+
}
|
|
95
|
+
.dodo-ui-Accordian[open] .IconOpen {
|
|
96
|
+
display: flex;
|
|
97
|
+
}
|
|
98
|
+
.dodo-ui-Accordian[open] .IconClose {
|
|
99
|
+
display: none;
|
|
100
|
+
}
|
|
101
|
+
.dodo-ui-Accordian:not([open]) .IconOpen {
|
|
102
|
+
display: none;
|
|
103
|
+
}
|
|
104
|
+
.dodo-ui-Accordian:not([open]) .IconClose {
|
|
105
|
+
display: flex;
|
|
106
|
+
}
|
|
107
|
+
.dodo-ui-Accordian.size--normal summary {
|
|
108
|
+
font-size: 1rem;
|
|
109
|
+
min-height: var(--dodo-ui-element-height-normal);
|
|
110
|
+
}
|
|
111
|
+
.dodo-ui-Accordian.size--small summary {
|
|
112
|
+
font-size: 0.9rem;
|
|
113
|
+
min-height: var(--dodo-ui-element-height-small);
|
|
114
|
+
}
|
|
115
|
+
.dodo-ui-Accordian.size--large summary {
|
|
116
|
+
font-size: 1.1rem;
|
|
117
|
+
min-height: var(--dodo-ui-element-height-large);
|
|
118
|
+
}
|
|
119
|
+
.dodo-ui-Accordian .AccordianContent {
|
|
120
|
+
margin-top: var(--dodo-ui-space);
|
|
121
|
+
}</style>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ComponentSize } from '../../../../types/size.js';
|
|
2
|
+
import type { DropdownArrowPosition } from '../../../../types/special.js';
|
|
3
|
+
import { type Snippet } from 'svelte';
|
|
4
|
+
import type { EventHandler } from 'svelte/elements';
|
|
5
|
+
export type AccordianToggleEvent = Event & {
|
|
6
|
+
currentTarget: EventTarget & HTMLDetailsElement;
|
|
7
|
+
};
|
|
8
|
+
export interface AccordianProps {
|
|
9
|
+
/** Contents goes here */
|
|
10
|
+
children?: Snippet;
|
|
11
|
+
/** Accordian summary */
|
|
12
|
+
summary?: Snippet;
|
|
13
|
+
/** summary full width */
|
|
14
|
+
fullWidthSummary?: boolean;
|
|
15
|
+
/** Accordian ref */
|
|
16
|
+
ref?: HTMLDetailsElement;
|
|
17
|
+
/** Custom css class */
|
|
18
|
+
class?: string;
|
|
19
|
+
/** The toggle event handler */
|
|
20
|
+
ontoggle?: EventHandler<Event, HTMLDetailsElement>;
|
|
21
|
+
/** Open state, for dynmaic Accordians */
|
|
22
|
+
open?: boolean;
|
|
23
|
+
/** default Open, for static Accordians */
|
|
24
|
+
defaultOpen?: boolean;
|
|
25
|
+
/** How large should the button be? */
|
|
26
|
+
size?: ComponentSize;
|
|
27
|
+
/** Select Dropdown Arrow Position */
|
|
28
|
+
dropdownArrowPosition?: DropdownArrowPosition;
|
|
29
|
+
/** Dropdown Arrow Icon */
|
|
30
|
+
customDropdownArrowIcon?: (open: boolean) => Snippet;
|
|
31
|
+
}
|
|
32
|
+
declare const Accordian: import("svelte").Component<AccordianProps, {}, "ref" | "open">;
|
|
33
|
+
type Accordian = ReturnType<typeof Accordian>;
|
|
34
|
+
export default Accordian;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
+
import Accordian from '../Accordian.svelte';
|
|
3
|
+
import { storyAccordianArgTypes } from '../Accordian.stories.svelte';
|
|
4
|
+
import Icon from '@iconify/svelte';
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: Accordian,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
argTypes: storyAccordianArgTypes,
|
|
10
|
+
});
|
|
11
|
+
let open = $state(true);
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<Story name="DropdownArrowPositionBefore" asChild>
|
|
15
|
+
<Accordian>
|
|
16
|
+
{#snippet summary()}
|
|
17
|
+
Click me!
|
|
18
|
+
{/snippet}
|
|
19
|
+
|
|
20
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
21
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
22
|
+
at harum, explicabo et doloremque.
|
|
23
|
+
</Accordian>
|
|
24
|
+
</Story>
|
|
25
|
+
|
|
26
|
+
<Story name="DropdownArrowPositionAfter" asChild>
|
|
27
|
+
<Accordian dropdownArrowPosition="after">
|
|
28
|
+
{#snippet summary()}
|
|
29
|
+
Click me!
|
|
30
|
+
{/snippet}
|
|
31
|
+
|
|
32
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
33
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
34
|
+
at harum, explicabo et doloremque.
|
|
35
|
+
</Accordian>
|
|
36
|
+
</Story>
|
|
37
|
+
|
|
38
|
+
<Story name="HideDropdownArrow" asChild>
|
|
39
|
+
<Accordian dropdownArrowPosition={false}>
|
|
40
|
+
{#snippet summary()}
|
|
41
|
+
Click me!
|
|
42
|
+
{/snippet}
|
|
43
|
+
|
|
44
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
45
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
46
|
+
at harum, explicabo et doloremque.
|
|
47
|
+
</Accordian>
|
|
48
|
+
</Story>
|
|
49
|
+
|
|
50
|
+
<!-- Format look and feel Dropdown Arrow icon -->
|
|
51
|
+
<Story name="CustomDropdownArrowIcon" asChild>
|
|
52
|
+
<Accordian {open} ontoggle={() => (open = !open)}>
|
|
53
|
+
{#snippet summary()}
|
|
54
|
+
Click me!
|
|
55
|
+
{/snippet}
|
|
56
|
+
|
|
57
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
58
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
59
|
+
at harum, explicabo et doloremque.
|
|
60
|
+
|
|
61
|
+
{#snippet customDropdownArrowIcon(open)}
|
|
62
|
+
{#if open}
|
|
63
|
+
<Icon icon="mingcute:up-fill" width="24" height="24" />
|
|
64
|
+
{:else}
|
|
65
|
+
<Icon icon="mingcute:down-fill" width="24" height="24" />
|
|
66
|
+
{/if}
|
|
67
|
+
{/snippet}
|
|
68
|
+
</Accordian>
|
|
69
|
+
</Story>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const Customize: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type Customize = InstanceType<typeof Customize>;
|
|
18
|
+
export default Customize;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
+
import { storyAccordianArgTypes } from '../Accordian.stories.svelte';
|
|
3
|
+
import Accordian, {} from '../Accordian.svelte';
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
5
|
+
const { Story } = defineMeta({
|
|
6
|
+
component: Accordian,
|
|
7
|
+
tags: ['autodocs'],
|
|
8
|
+
argTypes: storyAccordianArgTypes,
|
|
9
|
+
});
|
|
10
|
+
let open = $state(false);
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<Story name="Toggle" asChild>
|
|
14
|
+
<Accordian
|
|
15
|
+
{open}
|
|
16
|
+
ontoggle={(e: AccordianToggleEvent) => {
|
|
17
|
+
open = !open;
|
|
18
|
+
|
|
19
|
+
console.log('Input Event', e);
|
|
20
|
+
}}
|
|
21
|
+
>
|
|
22
|
+
{#snippet summary()}
|
|
23
|
+
Click me!
|
|
24
|
+
{/snippet}
|
|
25
|
+
|
|
26
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
27
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
28
|
+
at harum, explicabo et doloremque.
|
|
29
|
+
</Accordian>
|
|
30
|
+
</Story>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const Events: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type Events = InstanceType<typeof Events>;
|
|
18
|
+
export default Events;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import Accordian from '../Accordian.svelte';
|
|
4
|
+
import { storyAccordianArgTypes } from '../Accordian.stories.svelte';
|
|
5
|
+
|
|
6
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
|
7
|
+
const { Story } = defineMeta({
|
|
8
|
+
component: Accordian,
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
argTypes: storyAccordianArgTypes,
|
|
11
|
+
});
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<Story name="Normal" asChild>
|
|
15
|
+
<Accordian>
|
|
16
|
+
{#snippet summary()}
|
|
17
|
+
Click me!
|
|
18
|
+
{/snippet}
|
|
19
|
+
|
|
20
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
21
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
22
|
+
at harum, explicabo et doloremque.
|
|
23
|
+
</Accordian>
|
|
24
|
+
</Story>
|
|
25
|
+
|
|
26
|
+
<Story name="Small" asChild>
|
|
27
|
+
<Accordian size="small">
|
|
28
|
+
{#snippet summary()}
|
|
29
|
+
Click me!
|
|
30
|
+
{/snippet}
|
|
31
|
+
|
|
32
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
33
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
34
|
+
at harum, explicabo et doloremque.
|
|
35
|
+
</Accordian>
|
|
36
|
+
</Story>
|
|
37
|
+
|
|
38
|
+
<Story name="Larger" asChild>
|
|
39
|
+
<Accordian size="large">
|
|
40
|
+
{#snippet summary()}
|
|
41
|
+
Click me!
|
|
42
|
+
{/snippet}
|
|
43
|
+
|
|
44
|
+
Lorem ipsum dolor sit amet consectetur adipisicing elit. Consequuntur nisi hic accusamus,
|
|
45
|
+
mollitia velit corporis, sit culpa nam ducimus quisquam aliquam eos atque doloribus architecto
|
|
46
|
+
at harum, explicabo et doloremque.
|
|
47
|
+
</Accordian>
|
|
48
|
+
</Story>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export default Size;
|
|
2
|
+
type Size = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const Size: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
15
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
16
|
+
$$bindings?: Bindings;
|
|
17
|
+
} & Exports;
|
|
18
|
+
(internal: unknown, props: {
|
|
19
|
+
$$events?: Events;
|
|
20
|
+
$$slots?: Slots;
|
|
21
|
+
}): Exports & {
|
|
22
|
+
$set?: any;
|
|
23
|
+
$on?: any;
|
|
24
|
+
};
|
|
25
|
+
z_$$bindings?: Bindings;
|
|
26
|
+
}
|
|
@@ -4,6 +4,7 @@ A set of components and tools used internally in dodo-ui.
|
|
|
4
4
|
|
|
5
5
|
## Explore More
|
|
6
6
|
|
|
7
|
+
- [Customize](?path=/docs/developer-tools-customize-autocustomize--docs)
|
|
7
8
|
- [Utility Button](?path=/docs/developer-tools-components-utilitybutton--docs)
|
|
8
9
|
- [Colors](?path=/docs/developer-tools-philosophy-colors--docs)
|
|
9
10
|
- [Adjust Color Opacity](?path=/docs/developer-tools-philosophy-colors--docs#adjusting-opacity)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script lang="ts">import Icon from '@iconify/svelte';
|
|
2
|
+
const { color, selectedColor, onclick } = $props();
|
|
3
|
+
function onClickMod() {
|
|
4
|
+
if (onclick) {
|
|
5
|
+
onclick(color);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<button
|
|
11
|
+
class="ColorButton"
|
|
12
|
+
class:selectedColor={selectedColor === color}
|
|
13
|
+
onclick={onClickMod}
|
|
14
|
+
aria-label={`color button ${color}`}
|
|
15
|
+
style={`background-color: var(--dodo-color-base-${color}-400);`}
|
|
16
|
+
>
|
|
17
|
+
<Icon icon="material-symbols:check-small" width="24" height="24" />
|
|
18
|
+
</button>
|
|
19
|
+
|
|
20
|
+
<style>.ColorButton {
|
|
21
|
+
width: 22px;
|
|
22
|
+
height: 22px;
|
|
23
|
+
border-radius: 50%;
|
|
24
|
+
margin: 4px;
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
color: var(--dodo-color-constant-white);
|
|
27
|
+
display: inline-flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
justify-content: center;
|
|
30
|
+
position: relative;
|
|
31
|
+
border: 3px solid transparent;
|
|
32
|
+
}
|
|
33
|
+
.ColorButton :global(svg) {
|
|
34
|
+
position: absolute;
|
|
35
|
+
display: none;
|
|
36
|
+
}
|
|
37
|
+
.ColorButton.selectedColor {
|
|
38
|
+
border-color: var(--dodo-color-primary-600);
|
|
39
|
+
}
|
|
40
|
+
.ColorButton.selectedColor :global(svg) {
|
|
41
|
+
display: block;
|
|
42
|
+
}</style>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface ColorButtonProps {
|
|
2
|
+
color: string;
|
|
3
|
+
selectedColor?: string;
|
|
4
|
+
onclick?: (color: string) => void;
|
|
5
|
+
}
|
|
6
|
+
declare const ColorButton: import("svelte").Component<ColorButtonProps, {}, "">;
|
|
7
|
+
type ColorButton = ReturnType<typeof ColorButton>;
|
|
8
|
+
export default ColorButton;
|
package/dist/stories/developer tools/customize/AutoCustomize/Tool/Config/ColorTool/ColorTool.svelte
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">import FormControl from '../../../../../../components/Form/FormControl/FormControl.svelte';
|
|
2
|
+
import { colorPaletteBase } from '../../../../../philosophy/Colors/utils/color.js';
|
|
3
|
+
import ColorButton from './ColorButton.svelte';
|
|
4
|
+
const { colors = colorPaletteBase, selectedColor, onclick, label } = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<div class="ColorTool">
|
|
8
|
+
<FormControl {label}>
|
|
9
|
+
{#each colors as color (color)}
|
|
10
|
+
<ColorButton {color} {onclick} {selectedColor} />
|
|
11
|
+
{/each}
|
|
12
|
+
</FormControl>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<style>.ColorTool {
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-wrap: wrap;
|
|
18
|
+
margin-bottom: calc(var(--dodo-ui-space) * 2.5);
|
|
19
|
+
margin-left: -4px;
|
|
20
|
+
margin-right: -4px;
|
|
21
|
+
}</style>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ColorToolProps {
|
|
2
|
+
label?: string;
|
|
3
|
+
colors?: string[];
|
|
4
|
+
selectedColor?: string;
|
|
5
|
+
onclick?: (color: string) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const ColorTool: import("svelte").Component<ColorToolProps, {}, "">;
|
|
8
|
+
type ColorTool = ReturnType<typeof ColorTool>;
|
|
9
|
+
export default ColorTool;
|