@indielayer/ui 0.0.0-dev-20240127005325 → 0.0.0-dev-20240202140555
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/docs/App.vue +25 -0
- package/docs/assets/css/hljs.css +302 -0
- package/docs/assets/css/tailwind.css +46 -0
- package/docs/assets/images/error.svg +1 -0
- package/docs/assets/images/logo.png +0 -0
- package/docs/assets/images/logo_mini.svg +10 -0
- package/docs/assets/images/logo_white.png +0 -0
- package/docs/assets/images/logo_word.svg +12 -0
- package/docs/assets/images/logo_word_dark.svg +12 -0
- package/docs/assets/images/photo1.jpeg +0 -0
- package/docs/assets/images/photo2.jpeg +0 -0
- package/docs/components/Cookies.vue +42 -0
- package/docs/components/common/CodePreview.vue +80 -0
- package/docs/components/common/CodeSnippet.vue +49 -0
- package/docs/components/common/CopyButton.vue +50 -0
- package/docs/components/common/DocumentPage.vue +289 -0
- package/docs/components/common/Indielayer-theme.json +702 -0
- package/docs/components/common/MultiSnippet.vue +26 -0
- package/docs/components/menu/DocsMenu.vue +143 -0
- package/docs/components/toolbar/PreToolbar.vue +18 -0
- package/docs/components/toolbar/Toolbar.vue +63 -0
- package/docs/components/toolbar/ToolbarColorToggle.vue +49 -0
- package/docs/icons.ts +61 -0
- package/docs/layouts/default.vue +29 -0
- package/docs/layouts/simple.vue +3 -0
- package/docs/main.ts +33 -0
- package/docs/pages/colors.vue +125 -0
- package/docs/pages/component/accordion/index.vue +29 -0
- package/docs/pages/component/accordion/usage.vue +30 -0
- package/docs/pages/component/alert/index.vue +29 -0
- package/docs/pages/component/alert/usage.vue +18 -0
- package/docs/pages/component/avatar/index.vue +43 -0
- package/docs/pages/component/avatar/size.vue +9 -0
- package/docs/pages/component/avatar/usage.vue +9 -0
- package/docs/pages/component/avatar/variants.vue +8 -0
- package/docs/pages/component/badge/index.vue +29 -0
- package/docs/pages/component/badge/usage.vue +50 -0
- package/docs/pages/component/breadcrumbs/index.vue +29 -0
- package/docs/pages/component/breadcrumbs/usage.vue +19 -0
- package/docs/pages/component/button/button-group.vue +18 -0
- package/docs/pages/component/button/icons.vue +9 -0
- package/docs/pages/component/button/index.vue +64 -0
- package/docs/pages/component/button/size.vue +9 -0
- package/docs/pages/component/button/states.vue +6 -0
- package/docs/pages/component/button/usage.vue +12 -0
- package/docs/pages/component/button/variants.vue +7 -0
- package/docs/pages/component/card/index.vue +29 -0
- package/docs/pages/component/card/usage.vue +6 -0
- package/docs/pages/component/carousel/index.vue +29 -0
- package/docs/pages/component/carousel/usage.vue +10 -0
- package/docs/pages/component/checkbox/index.vue +50 -0
- package/docs/pages/component/checkbox/size.vue +9 -0
- package/docs/pages/component/checkbox/states.vue +9 -0
- package/docs/pages/component/checkbox/usage.vue +15 -0
- package/docs/pages/component/checkbox/variants.vue +8 -0
- package/docs/pages/component/container/index.vue +29 -0
- package/docs/pages/component/container/usage.vue +3 -0
- package/docs/pages/component/divider/index.vue +43 -0
- package/docs/pages/component/divider/label.vue +12 -0
- package/docs/pages/component/divider/usage.vue +7 -0
- package/docs/pages/component/divider/vertical.vue +7 -0
- package/docs/pages/component/drawer/index.vue +29 -0
- package/docs/pages/component/drawer/usage.vue +56 -0
- package/docs/pages/component/form/index.vue +29 -0
- package/docs/pages/component/form/usage.vue +96 -0
- package/docs/pages/component/formGroup/index.vue +29 -0
- package/docs/pages/component/formGroup/usage.vue +46 -0
- package/docs/pages/component/icon/index.vue +36 -0
- package/docs/pages/component/icon/usage.vue +6 -0
- package/docs/pages/component/icon/variants.vue +14 -0
- package/docs/pages/component/image/index.vue +29 -0
- package/docs/pages/component/image/usage.vue +8 -0
- package/docs/pages/component/input/index.vue +50 -0
- package/docs/pages/component/input/size.vue +13 -0
- package/docs/pages/component/input/states.vue +12 -0
- package/docs/pages/component/input/usage.vue +15 -0
- package/docs/pages/component/input/variants.vue +18 -0
- package/docs/pages/component/link/index.vue +29 -0
- package/docs/pages/component/link/usage.vue +12 -0
- package/docs/pages/component/loader/index.vue +29 -0
- package/docs/pages/component/loader/usage.vue +7 -0
- package/docs/pages/component/menu/index.vue +29 -0
- package/docs/pages/component/menu/usage.vue +69 -0
- package/docs/pages/component/modal/composed.vue +70 -0
- package/docs/pages/component/modal/index.vue +36 -0
- package/docs/pages/component/modal/usage.vue +61 -0
- package/docs/pages/component/notifications/index.vue +29 -0
- package/docs/pages/component/notifications/usage.vue +56 -0
- package/docs/pages/component/pagination/index.vue +29 -0
- package/docs/pages/component/pagination/usage.vue +17 -0
- package/docs/pages/component/popover/index.vue +29 -0
- package/docs/pages/component/popover/usage.vue +21 -0
- package/docs/pages/component/progress/index.vue +36 -0
- package/docs/pages/component/progress/usage.vue +7 -0
- package/docs/pages/component/progress/variants.vue +18 -0
- package/docs/pages/component/radio/index.vue +50 -0
- package/docs/pages/component/radio/size.vue +15 -0
- package/docs/pages/component/radio/states.vue +13 -0
- package/docs/pages/component/radio/usage.vue +14 -0
- package/docs/pages/component/radio/variants.vue +39 -0
- package/docs/pages/component/scroll/horizontal.vue +14 -0
- package/docs/pages/component/scroll/index.vue +36 -0
- package/docs/pages/component/scroll/usage.vue +5 -0
- package/docs/pages/component/select/index.vue +43 -0
- package/docs/pages/component/select/states.vue +22 -0
- package/docs/pages/component/select/usage.vue +45 -0
- package/docs/pages/component/select/variants.vue +23 -0
- package/docs/pages/component/skeleton/index.vue +29 -0
- package/docs/pages/component/skeleton/usage.vue +10 -0
- package/docs/pages/component/slider/index.vue +29 -0
- package/docs/pages/component/slider/usage.vue +15 -0
- package/docs/pages/component/spacer/index.vue +29 -0
- package/docs/pages/component/spacer/usage.vue +8 -0
- package/docs/pages/component/spinner/index.vue +36 -0
- package/docs/pages/component/spinner/usage.vue +3 -0
- package/docs/pages/component/spinner/variants.vue +9 -0
- package/docs/pages/component/stepper/index.vue +29 -0
- package/docs/pages/component/stepper/usage.vue +21 -0
- package/docs/pages/component/table/index.vue +36 -0
- package/docs/pages/component/table/states.vue +28 -0
- package/docs/pages/component/table/usage.vue +107 -0
- package/docs/pages/component/tabs/index.vue +29 -0
- package/docs/pages/component/tabs/usage.vue +137 -0
- package/docs/pages/component/tag/index.vue +29 -0
- package/docs/pages/component/tag/usage.vue +27 -0
- package/docs/pages/component/textarea/index.vue +43 -0
- package/docs/pages/component/textarea/states.vue +13 -0
- package/docs/pages/component/textarea/usage.vue +22 -0
- package/docs/pages/component/textarea/variants.vue +15 -0
- package/docs/pages/component/toggle/index.vue +43 -0
- package/docs/pages/component/toggle/states.vue +13 -0
- package/docs/pages/component/toggle/usage.vue +14 -0
- package/docs/pages/component/toggle/variants.vue +15 -0
- package/docs/pages/component/tooltip/index.vue +29 -0
- package/docs/pages/component/tooltip/usage.vue +16 -0
- package/docs/pages/error.vue +6 -0
- package/docs/pages/icons.vue +105 -0
- package/docs/pages/index.vue +157 -0
- package/docs/pages/play.vue +19 -0
- package/docs/pages/typography.vue +95 -0
- package/docs/router/index.ts +77 -0
- package/lib/components/accordion/Accordion.vue.d.ts +3 -0
- package/lib/components/accordion/Accordion.vue.js +7 -7
- package/lib/components/accordion/AccordionItem.vue.d.ts +1 -0
- package/lib/components/accordion/AccordionItem.vue.js +49 -47
- package/lib/components/accordion/index.d.ts +1 -1
- package/lib/components/accordion/theme/Accordion.carbon.theme.js +3 -6
- package/lib/components/accordion/theme/AccordionItem.base.theme.js +9 -9
- package/lib/components/accordion/theme/AccordionItem.carbon.theme.js +3 -14
- package/lib/components/carousel/CarouselSlide.vue.d.ts +19 -8
- package/lib/components/carousel/CarouselSlide.vue.js +2 -2
- package/lib/components/carousel/CarouselSlide.vue2.js +25 -18
- package/lib/components/checkbox/theme/Checkbox.base.theme.js +4 -4
- package/lib/components/container/Container.vue.d.ts +13 -0
- package/lib/components/container/Container.vue.js +15 -11
- package/lib/components/container/theme/Container.base.theme.js +7 -4
- package/lib/components/form/theme/Form.base.theme.js +1 -1
- package/lib/components/menu/Menu.vue.js +10 -10
- package/lib/components/menu/theme/MenuItem.base.theme.js +1 -1
- package/lib/components/modal/Modal.vue.d.ts +1 -1
- package/lib/components/radio/theme/Radio.base.theme.js +6 -6
- package/lib/components/select/Select.vue.js +47 -50
- package/lib/components/select/theme/Select.base.theme.js +10 -10
- package/lib/components/select/theme/Select.carbon.theme.js +4 -4
- package/lib/components/slider/theme/Slider.carbon.theme.js +4 -4
- package/lib/components/tab/Tab.vue.js +54 -53
- package/lib/components/tab/theme/TabGroup.carbon.theme.js +3 -3
- package/lib/components/table/Table.vue.js +47 -47
- package/lib/composables/keys.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/index.umd.js +3 -3
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +4 -2
- package/src/components/accordion/Accordion.vue +5 -1
- package/src/components/accordion/AccordionItem.vue +5 -2
- package/src/components/accordion/index.ts +1 -1
- package/src/components/accordion/theme/Accordion.carbon.theme.ts +3 -5
- package/src/components/accordion/theme/AccordionItem.base.theme.ts +10 -7
- package/src/components/accordion/theme/AccordionItem.carbon.theme.ts +2 -30
- package/src/components/carousel/CarouselSlide.vue +9 -4
- package/src/components/checkbox/theme/Checkbox.base.theme.ts +1 -1
- package/src/components/container/Container.vue +4 -0
- package/src/components/container/theme/Container.base.theme.ts +7 -1
- package/src/components/form/theme/Form.base.theme.ts +1 -1
- package/src/components/label/theme/Label.carbon.theme.ts +0 -2
- package/src/components/menu/Menu.vue +1 -1
- package/src/components/menu/theme/MenuItem.base.theme.ts +1 -1
- package/src/components/radio/theme/Radio.base.theme.ts +1 -1
- package/src/components/select/Select.vue +0 -3
- package/src/components/select/theme/Select.base.theme.ts +1 -1
- package/src/components/select/theme/Select.carbon.theme.ts +1 -1
- package/src/components/slider/theme/Slider.carbon.theme.ts +1 -1
- package/src/components/tab/Tab.vue +1 -1
- package/src/components/tab/theme/TabGroup.carbon.theme.ts +1 -1
- package/src/components/table/Table.vue +1 -1
- package/src/composables/keys.ts +2 -2
- package/src/version.ts +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XScroll } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
import HorizontalDemoCode from './horizontal.vue?raw'
|
|
6
|
+
import HorizontalDemo from './horizontal.vue'
|
|
7
|
+
|
|
8
|
+
const title = 'Scroll'
|
|
9
|
+
const description = 'Scroll is used to scroll through a list of items with added features like inner shadows to indicate there is more to scroll.'
|
|
10
|
+
const components = [XScroll]
|
|
11
|
+
const demos = [{
|
|
12
|
+
name: 'Usage',
|
|
13
|
+
description: '',
|
|
14
|
+
code: UsageDemoCode,
|
|
15
|
+
component: UsageDemo,
|
|
16
|
+
}, {
|
|
17
|
+
name: 'Horizontal',
|
|
18
|
+
description: '',
|
|
19
|
+
code: HorizontalDemoCode,
|
|
20
|
+
component: HorizontalDemo,
|
|
21
|
+
}]
|
|
22
|
+
const back = 'tooltip'
|
|
23
|
+
const next = 'spacer'
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<document-page
|
|
28
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/scroll"
|
|
29
|
+
:title="title"
|
|
30
|
+
:description="description"
|
|
31
|
+
:components="components"
|
|
32
|
+
:demos="demos"
|
|
33
|
+
:back="back"
|
|
34
|
+
:next="next"
|
|
35
|
+
/>
|
|
36
|
+
</template>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<x-scroll class="h-20">
|
|
3
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ullam, quod fuga deleniti eaque sit nemo, labore, quisquam est esse quidem corrupti quia illo totam. Dicta laborum hic cupiditate distinctio quas totam sed sunt sint mollitia nostrum, provident quasi quam, suscipit atque rem ut saepe quae! In ipsum, minus non deleniti quasi temporibus qui autem voluptates! Architecto iusto unde placeat mollitia doloremque amet vel necessitatibus sapiente ipsa tenetur temporibus quidem perferendis sunt, quibusdam porro minima error impedit! Voluptatum ratione porro praesentium est veniam commodi, veritatis nemo voluptates atque iste, neque illum nesciunt aspernatur reprehenderit. Deleniti, aspernatur iusto accusamus nulla quos magni.
|
|
4
|
+
</x-scroll>
|
|
5
|
+
</template>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XSelect } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
import VariantsDemoCode from './variants.vue?raw'
|
|
6
|
+
import VariantsDemo from './variants.vue'
|
|
7
|
+
import StatesDemoCode from './states.vue?raw'
|
|
8
|
+
import StatesDemo from './states.vue'
|
|
9
|
+
|
|
10
|
+
const title = 'Select'
|
|
11
|
+
const description = 'Selects allow the user to select one or more options from a set.'
|
|
12
|
+
const components = [XSelect]
|
|
13
|
+
const demos = [{
|
|
14
|
+
name: 'Usage',
|
|
15
|
+
description: '',
|
|
16
|
+
code: UsageDemoCode,
|
|
17
|
+
component: UsageDemo,
|
|
18
|
+
}, {
|
|
19
|
+
name: 'Variants',
|
|
20
|
+
description: '',
|
|
21
|
+
code: VariantsDemoCode,
|
|
22
|
+
component: VariantsDemo,
|
|
23
|
+
}, {
|
|
24
|
+
name: 'States',
|
|
25
|
+
description: '',
|
|
26
|
+
code: StatesDemoCode,
|
|
27
|
+
component: StatesDemo,
|
|
28
|
+
}]
|
|
29
|
+
const back = 'radio'
|
|
30
|
+
const next = 'slider'
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<document-page
|
|
35
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/select"
|
|
36
|
+
:title="title"
|
|
37
|
+
:description="description"
|
|
38
|
+
:components="components"
|
|
39
|
+
:demos="demos"
|
|
40
|
+
:back="back"
|
|
41
|
+
:next="next"
|
|
42
|
+
/>
|
|
43
|
+
</template>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="grid grid-cols-4 gap-4">
|
|
3
|
+
<x-select v-model="selected" label="Disabled" disabled :options="options"/>
|
|
4
|
+
<x-select v-model="selected" label="Read Only" readonly :options="options"/>
|
|
5
|
+
<x-select v-model="selected" label="Loading" loading :options="options"/>
|
|
6
|
+
<x-select v-model="selected" label="Error" error="Invalid input" :options="options"/>
|
|
7
|
+
</div>
|
|
8
|
+
</template>
|
|
9
|
+
|
|
10
|
+
<script>
|
|
11
|
+
export default {
|
|
12
|
+
data() {
|
|
13
|
+
return {
|
|
14
|
+
selected: 'A',
|
|
15
|
+
options: [
|
|
16
|
+
{ value: 'A', label: 'Option A' },
|
|
17
|
+
{ value: 'B', label: 'Option B' },
|
|
18
|
+
],
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
}
|
|
22
|
+
</script>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="grid grid-cols-3 gap-4">
|
|
3
|
+
<x-select
|
|
4
|
+
v-model="selected"
|
|
5
|
+
label="Simple native select"
|
|
6
|
+
placeholder="Placeholder"
|
|
7
|
+
:options="options"
|
|
8
|
+
helper="Helper text"
|
|
9
|
+
native
|
|
10
|
+
/>
|
|
11
|
+
<x-select
|
|
12
|
+
v-model="selected"
|
|
13
|
+
label="Dropdown select"
|
|
14
|
+
placeholder="Placeholder"
|
|
15
|
+
:options="options"
|
|
16
|
+
/>
|
|
17
|
+
<x-select
|
|
18
|
+
v-model="selectedMultiple"
|
|
19
|
+
label="Multi select"
|
|
20
|
+
placeholder="Let's go baby"
|
|
21
|
+
:options="options"
|
|
22
|
+
multiple
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
export default {
|
|
29
|
+
data() {
|
|
30
|
+
return {
|
|
31
|
+
selected: null,
|
|
32
|
+
selectedMultiple: ['A', 'B'],
|
|
33
|
+
options: [
|
|
34
|
+
{ value: 'A', label: 'Option Ao qoiw oqi jdoqiwd oqid joqiw jdoijoi' },
|
|
35
|
+
{ value: 'B', label: 'Option B' },
|
|
36
|
+
],
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
created() {
|
|
40
|
+
for (let i = 0; i < 20; i++) {
|
|
41
|
+
this.options.push({ value: i, label: 'Option ' + i })
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
}
|
|
45
|
+
</script>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex items-center space-x-4">
|
|
3
|
+
<x-select v-model="selected" :options="options" placeholder="xs" size="xs" />
|
|
4
|
+
<x-select v-model="selected" :options="options" placeholder="sm" size="sm" />
|
|
5
|
+
<x-select v-model="selected" :options="options" placeholder="md"/>
|
|
6
|
+
<x-select v-model="selected" :options="options" placeholder="lg" size="lg" />
|
|
7
|
+
<x-select v-model="selected" :options="options" placeholder="xl" size="xl" />
|
|
8
|
+
</div>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
export default {
|
|
13
|
+
data() {
|
|
14
|
+
return {
|
|
15
|
+
selected: '',
|
|
16
|
+
options: [
|
|
17
|
+
{ value: 'A', label: 'Option A' },
|
|
18
|
+
{ value: 'B', label: 'Option B' },
|
|
19
|
+
],
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
</script>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XSkeleton } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
|
|
6
|
+
const title = 'Skeleton'
|
|
7
|
+
const description = 'Skeletons are used to display a loading state.'
|
|
8
|
+
const components = [XSkeleton]
|
|
9
|
+
const demos = [{
|
|
10
|
+
name: 'Usage',
|
|
11
|
+
description: '',
|
|
12
|
+
code: UsageDemoCode,
|
|
13
|
+
component: UsageDemo,
|
|
14
|
+
}]
|
|
15
|
+
const back = 'progress'
|
|
16
|
+
const next = 'slider'
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<document-page
|
|
21
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/skeleton"
|
|
22
|
+
:title="title"
|
|
23
|
+
:description="description"
|
|
24
|
+
:components="components"
|
|
25
|
+
:demos="demos"
|
|
26
|
+
:back="back"
|
|
27
|
+
:next="next"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XSlider } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
|
|
6
|
+
const title = 'Slider'
|
|
7
|
+
const description = 'Sliders are used to select a value from a range.'
|
|
8
|
+
const components = [XSlider]
|
|
9
|
+
const demos = [{
|
|
10
|
+
name: 'Usage',
|
|
11
|
+
description: '',
|
|
12
|
+
code: UsageDemoCode,
|
|
13
|
+
component: UsageDemo,
|
|
14
|
+
}]
|
|
15
|
+
const back = 'select'
|
|
16
|
+
const next = 'textarea'
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<document-page
|
|
21
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/slider"
|
|
22
|
+
:title="title"
|
|
23
|
+
:description="description"
|
|
24
|
+
:components="components"
|
|
25
|
+
:demos="demos"
|
|
26
|
+
:back="back"
|
|
27
|
+
:next="next"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { ref } from 'vue'
|
|
3
|
+
const value = ref(0)
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<template>
|
|
7
|
+
<div class="grid gap-2 grid-cols-3">
|
|
8
|
+
<x-slider v-model="value" label="Slider 1" class="w-full">
|
|
9
|
+
<template #prefix="ctx">
|
|
10
|
+
<div class="w-12 text-sm">{{ ctx.value }}%</div>
|
|
11
|
+
</template>
|
|
12
|
+
</x-slider>
|
|
13
|
+
<x-slider v-model="value" label="Slider 2 (gradient)" gradient/>
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XSpacer } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
|
|
6
|
+
const title = 'Spacer'
|
|
7
|
+
const description = 'Spacer is used to add space between elements inside a display flex wrapper.'
|
|
8
|
+
const components = [XSpacer]
|
|
9
|
+
const demos = [{
|
|
10
|
+
name: 'Usage',
|
|
11
|
+
description: '',
|
|
12
|
+
code: UsageDemoCode,
|
|
13
|
+
component: UsageDemo,
|
|
14
|
+
}]
|
|
15
|
+
const back = 'scroll'
|
|
16
|
+
const next = ''
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<document-page
|
|
21
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/spacer"
|
|
22
|
+
:title="title"
|
|
23
|
+
:description="description"
|
|
24
|
+
:components="components"
|
|
25
|
+
:demos="demos"
|
|
26
|
+
:back="back"
|
|
27
|
+
:next="next"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XSpinner } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
import VariantsDemoCode from './variants.vue?raw'
|
|
6
|
+
import VariantsDemo from './variants.vue'
|
|
7
|
+
|
|
8
|
+
const title = 'Spinner'
|
|
9
|
+
const description = 'Spinners are used to indicate that an operation is in progress.'
|
|
10
|
+
const components = [XSpinner]
|
|
11
|
+
const demos = [{
|
|
12
|
+
name: 'Usage',
|
|
13
|
+
description: '',
|
|
14
|
+
code: UsageDemoCode,
|
|
15
|
+
component: UsageDemo,
|
|
16
|
+
}, {
|
|
17
|
+
name: 'Variants',
|
|
18
|
+
description: '',
|
|
19
|
+
code: VariantsDemoCode,
|
|
20
|
+
component: VariantsDemo,
|
|
21
|
+
}]
|
|
22
|
+
const back = 'slider'
|
|
23
|
+
const next = 'table'
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<document-page
|
|
28
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/spinner"
|
|
29
|
+
:title="title"
|
|
30
|
+
:description="description"
|
|
31
|
+
:components="components"
|
|
32
|
+
:demos="demos"
|
|
33
|
+
:back="back"
|
|
34
|
+
:next="next"
|
|
35
|
+
/>
|
|
36
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XStepper } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
|
|
6
|
+
const title = 'Stepper'
|
|
7
|
+
const description = 'Stepper is a navigation component that guides users through the steps of a task.'
|
|
8
|
+
const components = [XStepper]
|
|
9
|
+
const demos = [{
|
|
10
|
+
name: 'Usage',
|
|
11
|
+
description: '',
|
|
12
|
+
code: UsageDemoCode,
|
|
13
|
+
component: UsageDemo,
|
|
14
|
+
}]
|
|
15
|
+
const back = 'spinner'
|
|
16
|
+
const next = 'table'
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<document-page
|
|
21
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/stepper"
|
|
22
|
+
:title="title"
|
|
23
|
+
:description="description"
|
|
24
|
+
:components="components"
|
|
25
|
+
:demos="demos"
|
|
26
|
+
:back="back"
|
|
27
|
+
:next="next"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { ref } from 'vue'
|
|
3
|
+
|
|
4
|
+
const step = ref(1)
|
|
5
|
+
const steps = [
|
|
6
|
+
{ label: 'Initial step', description: 'This is the description', status: 'complete' },
|
|
7
|
+
{ label: 'One more step i know', status: 'incomplete' },
|
|
8
|
+
{ label: 'Almost there', status: 'error' },
|
|
9
|
+
{ label: 'Lets go' },
|
|
10
|
+
{ label: 'Finish line', disabled: true },
|
|
11
|
+
]
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<x-stepper v-model="step" :steps="steps">
|
|
16
|
+
<div v-if="step === 0">Initial step!</div>
|
|
17
|
+
<div v-if="step === 1">One more step!</div>
|
|
18
|
+
<div v-if="step === 2">Almost there!</div>
|
|
19
|
+
<div v-if="step === 3">Finish line!</div>
|
|
20
|
+
</x-stepper>
|
|
21
|
+
</template>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XTable, XTableBody, XTableCell, XTableHead, XTableHeader, XTableRow } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
import StatesDemoCode from './states.vue?raw'
|
|
6
|
+
import StatesDemo from './states.vue'
|
|
7
|
+
|
|
8
|
+
const title = 'Table'
|
|
9
|
+
const description = 'Tables are used to display data in a tabular format.'
|
|
10
|
+
const components = [XTable, XTableBody, XTableCell, XTableHead, XTableHeader, XTableRow]
|
|
11
|
+
const demos = [{
|
|
12
|
+
name: 'Usage',
|
|
13
|
+
description: '',
|
|
14
|
+
code: UsageDemoCode,
|
|
15
|
+
component: UsageDemo,
|
|
16
|
+
}, {
|
|
17
|
+
name: 'States',
|
|
18
|
+
description: '',
|
|
19
|
+
code: StatesDemoCode,
|
|
20
|
+
component: StatesDemo,
|
|
21
|
+
}]
|
|
22
|
+
const back = 'spinner'
|
|
23
|
+
const next = 'tabs'
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<document-page
|
|
28
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/table"
|
|
29
|
+
:title="title"
|
|
30
|
+
:description="description"
|
|
31
|
+
:components="components"
|
|
32
|
+
:demos="demos"
|
|
33
|
+
:back="back"
|
|
34
|
+
:next="next"
|
|
35
|
+
/>
|
|
36
|
+
</template>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type TableHeader } from '@indielayer/ui'
|
|
3
|
+
import { ref } from 'vue'
|
|
4
|
+
|
|
5
|
+
const headers: TableHeader[] = [
|
|
6
|
+
{ text: '#', value: 'id', sortable: true, align: 'center' },
|
|
7
|
+
{ text: 'Title', value: 'title' },
|
|
8
|
+
{ text: 'Description', value: 'description' },
|
|
9
|
+
{ text: 'Published', value: 'published', sortable: true },
|
|
10
|
+
{ text: 'Status', value: 'status' },
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
const items = ref([])
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<template>
|
|
17
|
+
<x-table :headers="headers" :items="items">
|
|
18
|
+
<template #empty>
|
|
19
|
+
<div class="p-4">
|
|
20
|
+
<div class="p-8 border-dashed border rounded-lg text-center">
|
|
21
|
+
Empty state slot
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</template>
|
|
25
|
+
</x-table>
|
|
26
|
+
|
|
27
|
+
<x-table :headers="headers" :items="items" loading/>
|
|
28
|
+
</template>
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { useNotifications, type TableHeader } from '@indielayer/ui'
|
|
3
|
+
import { computed, ref } from 'vue'
|
|
4
|
+
|
|
5
|
+
const notifications = useNotifications('notifica')
|
|
6
|
+
|
|
7
|
+
const headers: TableHeader[] = [
|
|
8
|
+
{ text: '#', value: 'id', sortable: true, align: 'center' },
|
|
9
|
+
{ text: 'Title', value: 'title' },
|
|
10
|
+
{ text: 'Description', value: 'description', truncate: true, width: 400 },
|
|
11
|
+
{ text: 'Published', value: 'published', sortable: true },
|
|
12
|
+
{ text: 'Status', value: 'status' },
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
type Book = {
|
|
16
|
+
id: number;
|
|
17
|
+
title: string;
|
|
18
|
+
description: string;
|
|
19
|
+
published: number;
|
|
20
|
+
status: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const items = ref<Book[]>([{
|
|
24
|
+
id: 1,
|
|
25
|
+
title: 'Book of Magic',
|
|
26
|
+
description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Saepe, velit.',
|
|
27
|
+
published: Date.now() - 1000,
|
|
28
|
+
status: 'Tag label',
|
|
29
|
+
}, {
|
|
30
|
+
id: 2,
|
|
31
|
+
title: 'Another book',
|
|
32
|
+
description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Saepe, velit.',
|
|
33
|
+
published: Date.now() - 5000,
|
|
34
|
+
status: 'Tag label',
|
|
35
|
+
}, {
|
|
36
|
+
id: 3,
|
|
37
|
+
title: 'Clever cove',
|
|
38
|
+
description: 'Lorem ipsum dolor sit, amet consectetur adipisicing elit. Saepe, velit.',
|
|
39
|
+
published: Date.now() - 3000,
|
|
40
|
+
status: 'Tag label',
|
|
41
|
+
}])
|
|
42
|
+
|
|
43
|
+
const sort = ref([])
|
|
44
|
+
|
|
45
|
+
function formatDate(val: any) {
|
|
46
|
+
return (new Date(val)).toISOString()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const itemsSorted = computed<Book[]>(() => {
|
|
50
|
+
const ite = items.value.slice(0)
|
|
51
|
+
|
|
52
|
+
return ite.sort((a: any, b: any) => {
|
|
53
|
+
for (const s of sort.value) {
|
|
54
|
+
const [key, asc] = (s as string).split(',')
|
|
55
|
+
|
|
56
|
+
if (a[key] > b[key]) return asc === '-1' ? -1 : 1
|
|
57
|
+
if (a[key] < b[key]) return asc === '-1' ? 1 : -1
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return 0
|
|
61
|
+
})
|
|
62
|
+
})
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
<template>
|
|
66
|
+
<x-table
|
|
67
|
+
v-model:sort="sort"
|
|
68
|
+
expandable
|
|
69
|
+
:headers="headers"
|
|
70
|
+
:items="itemsSorted"
|
|
71
|
+
>
|
|
72
|
+
<template #expanded-row="{ item }">
|
|
73
|
+
{{ item }}
|
|
74
|
+
{{ item }}
|
|
75
|
+
{{ item }}
|
|
76
|
+
{{ item }}
|
|
77
|
+
{{ item }}
|
|
78
|
+
{{ item }}
|
|
79
|
+
{{ item }}
|
|
80
|
+
{{ item }}
|
|
81
|
+
{{ item }}
|
|
82
|
+
</template>
|
|
83
|
+
|
|
84
|
+
<template #item-published="{ item }">
|
|
85
|
+
{{ formatDate(item.published) }}
|
|
86
|
+
</template>
|
|
87
|
+
<template #item-status="{ item }">
|
|
88
|
+
<x-tag size="sm" color="primary" rounded>{{ item.status }}</x-tag>
|
|
89
|
+
</template>
|
|
90
|
+
</x-table>
|
|
91
|
+
<x-table
|
|
92
|
+
v-model:sort="sort"
|
|
93
|
+
class="my-10"
|
|
94
|
+
dense
|
|
95
|
+
striped
|
|
96
|
+
:headers="headers"
|
|
97
|
+
:items="itemsSorted"
|
|
98
|
+
@click-row="notifications?.log('open')"
|
|
99
|
+
>
|
|
100
|
+
<template #item-published="{ item }">
|
|
101
|
+
{{ formatDate(item.published) }}
|
|
102
|
+
</template>
|
|
103
|
+
<template #item-status="{ item }">
|
|
104
|
+
<x-tag size="sm" color="pink" rounded>{{ item.status }}</x-tag>
|
|
105
|
+
</template>
|
|
106
|
+
</x-table>
|
|
107
|
+
</template>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { XTabGroup, XTab } from '@indielayer/ui'
|
|
3
|
+
import UsageDemoCode from './usage.vue?raw'
|
|
4
|
+
import UsageDemo from './usage.vue'
|
|
5
|
+
|
|
6
|
+
const title = 'Tabs'
|
|
7
|
+
const description = 'Tabs are used to navigate through a set of views.'
|
|
8
|
+
const components = [XTabGroup, XTab]
|
|
9
|
+
const demos = [{
|
|
10
|
+
name: 'Usage',
|
|
11
|
+
description: '',
|
|
12
|
+
code: UsageDemoCode,
|
|
13
|
+
component: UsageDemo,
|
|
14
|
+
}]
|
|
15
|
+
const back = 'table'
|
|
16
|
+
const next = 'tag'
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<document-page
|
|
21
|
+
github="https://github.com/indielayer/ui/blob/main/packages/ui/docs/pages/component/tabs"
|
|
22
|
+
:title="title"
|
|
23
|
+
:description="description"
|
|
24
|
+
:components="components"
|
|
25
|
+
:demos="demos"
|
|
26
|
+
:back="back"
|
|
27
|
+
:next="next"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|