@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.
Files changed (198) hide show
  1. package/docs/App.vue +25 -0
  2. package/docs/assets/css/hljs.css +302 -0
  3. package/docs/assets/css/tailwind.css +46 -0
  4. package/docs/assets/images/error.svg +1 -0
  5. package/docs/assets/images/logo.png +0 -0
  6. package/docs/assets/images/logo_mini.svg +10 -0
  7. package/docs/assets/images/logo_white.png +0 -0
  8. package/docs/assets/images/logo_word.svg +12 -0
  9. package/docs/assets/images/logo_word_dark.svg +12 -0
  10. package/docs/assets/images/photo1.jpeg +0 -0
  11. package/docs/assets/images/photo2.jpeg +0 -0
  12. package/docs/components/Cookies.vue +42 -0
  13. package/docs/components/common/CodePreview.vue +80 -0
  14. package/docs/components/common/CodeSnippet.vue +49 -0
  15. package/docs/components/common/CopyButton.vue +50 -0
  16. package/docs/components/common/DocumentPage.vue +289 -0
  17. package/docs/components/common/Indielayer-theme.json +702 -0
  18. package/docs/components/common/MultiSnippet.vue +26 -0
  19. package/docs/components/menu/DocsMenu.vue +143 -0
  20. package/docs/components/toolbar/PreToolbar.vue +18 -0
  21. package/docs/components/toolbar/Toolbar.vue +63 -0
  22. package/docs/components/toolbar/ToolbarColorToggle.vue +49 -0
  23. package/docs/icons.ts +61 -0
  24. package/docs/layouts/default.vue +29 -0
  25. package/docs/layouts/simple.vue +3 -0
  26. package/docs/main.ts +33 -0
  27. package/docs/pages/colors.vue +125 -0
  28. package/docs/pages/component/accordion/index.vue +29 -0
  29. package/docs/pages/component/accordion/usage.vue +30 -0
  30. package/docs/pages/component/alert/index.vue +29 -0
  31. package/docs/pages/component/alert/usage.vue +18 -0
  32. package/docs/pages/component/avatar/index.vue +43 -0
  33. package/docs/pages/component/avatar/size.vue +9 -0
  34. package/docs/pages/component/avatar/usage.vue +9 -0
  35. package/docs/pages/component/avatar/variants.vue +8 -0
  36. package/docs/pages/component/badge/index.vue +29 -0
  37. package/docs/pages/component/badge/usage.vue +50 -0
  38. package/docs/pages/component/breadcrumbs/index.vue +29 -0
  39. package/docs/pages/component/breadcrumbs/usage.vue +19 -0
  40. package/docs/pages/component/button/button-group.vue +18 -0
  41. package/docs/pages/component/button/icons.vue +9 -0
  42. package/docs/pages/component/button/index.vue +64 -0
  43. package/docs/pages/component/button/size.vue +9 -0
  44. package/docs/pages/component/button/states.vue +6 -0
  45. package/docs/pages/component/button/usage.vue +12 -0
  46. package/docs/pages/component/button/variants.vue +7 -0
  47. package/docs/pages/component/card/index.vue +29 -0
  48. package/docs/pages/component/card/usage.vue +6 -0
  49. package/docs/pages/component/carousel/index.vue +29 -0
  50. package/docs/pages/component/carousel/usage.vue +10 -0
  51. package/docs/pages/component/checkbox/index.vue +50 -0
  52. package/docs/pages/component/checkbox/size.vue +9 -0
  53. package/docs/pages/component/checkbox/states.vue +9 -0
  54. package/docs/pages/component/checkbox/usage.vue +15 -0
  55. package/docs/pages/component/checkbox/variants.vue +8 -0
  56. package/docs/pages/component/container/index.vue +29 -0
  57. package/docs/pages/component/container/usage.vue +3 -0
  58. package/docs/pages/component/divider/index.vue +43 -0
  59. package/docs/pages/component/divider/label.vue +12 -0
  60. package/docs/pages/component/divider/usage.vue +7 -0
  61. package/docs/pages/component/divider/vertical.vue +7 -0
  62. package/docs/pages/component/drawer/index.vue +29 -0
  63. package/docs/pages/component/drawer/usage.vue +56 -0
  64. package/docs/pages/component/form/index.vue +29 -0
  65. package/docs/pages/component/form/usage.vue +96 -0
  66. package/docs/pages/component/formGroup/index.vue +29 -0
  67. package/docs/pages/component/formGroup/usage.vue +46 -0
  68. package/docs/pages/component/icon/index.vue +36 -0
  69. package/docs/pages/component/icon/usage.vue +6 -0
  70. package/docs/pages/component/icon/variants.vue +14 -0
  71. package/docs/pages/component/image/index.vue +29 -0
  72. package/docs/pages/component/image/usage.vue +8 -0
  73. package/docs/pages/component/input/index.vue +50 -0
  74. package/docs/pages/component/input/size.vue +13 -0
  75. package/docs/pages/component/input/states.vue +12 -0
  76. package/docs/pages/component/input/usage.vue +15 -0
  77. package/docs/pages/component/input/variants.vue +18 -0
  78. package/docs/pages/component/link/index.vue +29 -0
  79. package/docs/pages/component/link/usage.vue +12 -0
  80. package/docs/pages/component/loader/index.vue +29 -0
  81. package/docs/pages/component/loader/usage.vue +7 -0
  82. package/docs/pages/component/menu/index.vue +29 -0
  83. package/docs/pages/component/menu/usage.vue +69 -0
  84. package/docs/pages/component/modal/composed.vue +70 -0
  85. package/docs/pages/component/modal/index.vue +36 -0
  86. package/docs/pages/component/modal/usage.vue +61 -0
  87. package/docs/pages/component/notifications/index.vue +29 -0
  88. package/docs/pages/component/notifications/usage.vue +56 -0
  89. package/docs/pages/component/pagination/index.vue +29 -0
  90. package/docs/pages/component/pagination/usage.vue +17 -0
  91. package/docs/pages/component/popover/index.vue +29 -0
  92. package/docs/pages/component/popover/usage.vue +21 -0
  93. package/docs/pages/component/progress/index.vue +36 -0
  94. package/docs/pages/component/progress/usage.vue +7 -0
  95. package/docs/pages/component/progress/variants.vue +18 -0
  96. package/docs/pages/component/radio/index.vue +50 -0
  97. package/docs/pages/component/radio/size.vue +15 -0
  98. package/docs/pages/component/radio/states.vue +13 -0
  99. package/docs/pages/component/radio/usage.vue +14 -0
  100. package/docs/pages/component/radio/variants.vue +39 -0
  101. package/docs/pages/component/scroll/horizontal.vue +14 -0
  102. package/docs/pages/component/scroll/index.vue +36 -0
  103. package/docs/pages/component/scroll/usage.vue +5 -0
  104. package/docs/pages/component/select/index.vue +43 -0
  105. package/docs/pages/component/select/states.vue +22 -0
  106. package/docs/pages/component/select/usage.vue +45 -0
  107. package/docs/pages/component/select/variants.vue +23 -0
  108. package/docs/pages/component/skeleton/index.vue +29 -0
  109. package/docs/pages/component/skeleton/usage.vue +10 -0
  110. package/docs/pages/component/slider/index.vue +29 -0
  111. package/docs/pages/component/slider/usage.vue +15 -0
  112. package/docs/pages/component/spacer/index.vue +29 -0
  113. package/docs/pages/component/spacer/usage.vue +8 -0
  114. package/docs/pages/component/spinner/index.vue +36 -0
  115. package/docs/pages/component/spinner/usage.vue +3 -0
  116. package/docs/pages/component/spinner/variants.vue +9 -0
  117. package/docs/pages/component/stepper/index.vue +29 -0
  118. package/docs/pages/component/stepper/usage.vue +21 -0
  119. package/docs/pages/component/table/index.vue +36 -0
  120. package/docs/pages/component/table/states.vue +28 -0
  121. package/docs/pages/component/table/usage.vue +107 -0
  122. package/docs/pages/component/tabs/index.vue +29 -0
  123. package/docs/pages/component/tabs/usage.vue +137 -0
  124. package/docs/pages/component/tag/index.vue +29 -0
  125. package/docs/pages/component/tag/usage.vue +27 -0
  126. package/docs/pages/component/textarea/index.vue +43 -0
  127. package/docs/pages/component/textarea/states.vue +13 -0
  128. package/docs/pages/component/textarea/usage.vue +22 -0
  129. package/docs/pages/component/textarea/variants.vue +15 -0
  130. package/docs/pages/component/toggle/index.vue +43 -0
  131. package/docs/pages/component/toggle/states.vue +13 -0
  132. package/docs/pages/component/toggle/usage.vue +14 -0
  133. package/docs/pages/component/toggle/variants.vue +15 -0
  134. package/docs/pages/component/tooltip/index.vue +29 -0
  135. package/docs/pages/component/tooltip/usage.vue +16 -0
  136. package/docs/pages/error.vue +6 -0
  137. package/docs/pages/icons.vue +105 -0
  138. package/docs/pages/index.vue +157 -0
  139. package/docs/pages/play.vue +19 -0
  140. package/docs/pages/typography.vue +95 -0
  141. package/docs/router/index.ts +77 -0
  142. package/lib/components/accordion/Accordion.vue.d.ts +3 -0
  143. package/lib/components/accordion/Accordion.vue.js +7 -7
  144. package/lib/components/accordion/AccordionItem.vue.d.ts +1 -0
  145. package/lib/components/accordion/AccordionItem.vue.js +49 -47
  146. package/lib/components/accordion/index.d.ts +1 -1
  147. package/lib/components/accordion/theme/Accordion.carbon.theme.js +3 -6
  148. package/lib/components/accordion/theme/AccordionItem.base.theme.js +9 -9
  149. package/lib/components/accordion/theme/AccordionItem.carbon.theme.js +3 -14
  150. package/lib/components/carousel/CarouselSlide.vue.d.ts +19 -8
  151. package/lib/components/carousel/CarouselSlide.vue.js +2 -2
  152. package/lib/components/carousel/CarouselSlide.vue2.js +25 -18
  153. package/lib/components/checkbox/theme/Checkbox.base.theme.js +4 -4
  154. package/lib/components/container/Container.vue.d.ts +13 -0
  155. package/lib/components/container/Container.vue.js +15 -11
  156. package/lib/components/container/theme/Container.base.theme.js +7 -4
  157. package/lib/components/form/theme/Form.base.theme.js +1 -1
  158. package/lib/components/menu/Menu.vue.js +10 -10
  159. package/lib/components/menu/theme/MenuItem.base.theme.js +1 -1
  160. package/lib/components/modal/Modal.vue.d.ts +1 -1
  161. package/lib/components/radio/theme/Radio.base.theme.js +6 -6
  162. package/lib/components/select/Select.vue.js +47 -50
  163. package/lib/components/select/theme/Select.base.theme.js +10 -10
  164. package/lib/components/select/theme/Select.carbon.theme.js +4 -4
  165. package/lib/components/slider/theme/Slider.carbon.theme.js +4 -4
  166. package/lib/components/tab/Tab.vue.js +54 -53
  167. package/lib/components/tab/theme/TabGroup.carbon.theme.js +3 -3
  168. package/lib/components/table/Table.vue.js +47 -47
  169. package/lib/composables/keys.d.ts +2 -2
  170. package/lib/index.js +1 -1
  171. package/lib/index.umd.js +3 -3
  172. package/lib/version.d.ts +1 -1
  173. package/lib/version.js +1 -1
  174. package/package.json +4 -2
  175. package/src/components/accordion/Accordion.vue +5 -1
  176. package/src/components/accordion/AccordionItem.vue +5 -2
  177. package/src/components/accordion/index.ts +1 -1
  178. package/src/components/accordion/theme/Accordion.carbon.theme.ts +3 -5
  179. package/src/components/accordion/theme/AccordionItem.base.theme.ts +10 -7
  180. package/src/components/accordion/theme/AccordionItem.carbon.theme.ts +2 -30
  181. package/src/components/carousel/CarouselSlide.vue +9 -4
  182. package/src/components/checkbox/theme/Checkbox.base.theme.ts +1 -1
  183. package/src/components/container/Container.vue +4 -0
  184. package/src/components/container/theme/Container.base.theme.ts +7 -1
  185. package/src/components/form/theme/Form.base.theme.ts +1 -1
  186. package/src/components/label/theme/Label.carbon.theme.ts +0 -2
  187. package/src/components/menu/Menu.vue +1 -1
  188. package/src/components/menu/theme/MenuItem.base.theme.ts +1 -1
  189. package/src/components/radio/theme/Radio.base.theme.ts +1 -1
  190. package/src/components/select/Select.vue +0 -3
  191. package/src/components/select/theme/Select.base.theme.ts +1 -1
  192. package/src/components/select/theme/Select.carbon.theme.ts +1 -1
  193. package/src/components/slider/theme/Slider.carbon.theme.ts +1 -1
  194. package/src/components/tab/Tab.vue +1 -1
  195. package/src/components/tab/theme/TabGroup.carbon.theme.ts +1 -1
  196. package/src/components/table/Table.vue +1 -1
  197. package/src/composables/keys.ts +2 -2
  198. 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,10 @@
1
+ <template>
2
+ <div class="flex">
3
+ <x-skeleton class="w-14 h-14 rounded-full flex-shrink-0 mr-2"/>
4
+ <div class="w-full">
5
+ <x-skeleton/>
6
+ <x-skeleton class="mt-2"/>
7
+ </div>
8
+ </div>
9
+ <x-skeleton class="w-full h-20 mt-2"/>
10
+ </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,8 @@
1
+ <template>
2
+ <div class="flex items-center border p-4 rounded-md space-x-4">
3
+ <div>Hi!</div>
4
+ <x-spacer/>
5
+ <div>Am I spaced enough?</div>
6
+ <x-button>Yes!</x-button>
7
+ </div>
8
+ </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,3 @@
1
+ <template>
2
+ <x-spinner/>
3
+ </template>
@@ -0,0 +1,9 @@
1
+ <template>
2
+ <div class="flex items-center space-x-4">
3
+ <x-spinner size="xs" />
4
+ <x-spinner size="sm" />
5
+ <x-spinner />
6
+ <x-spinner size="lg" />
7
+ <x-spinner size="xl" />
8
+ </div>
9
+ </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>