@dolanske/vui 0.5.0 → 1.0.1

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 (178) hide show
  1. package/README.md +5 -4
  2. package/dist/components/Accordion/Accordion.vue.d.ts +3 -2
  3. package/dist/components/Accordion/AccordionGroup.vue.d.ts +5 -2
  4. package/dist/components/Alert/Alert.vue.d.ts +10 -3
  5. package/dist/components/Avatar/Avatar.vue.d.ts +16 -1
  6. package/dist/components/Badge/Badge.vue.d.ts +4 -3
  7. package/dist/components/Breadcrumbs/BreadcrumbItem.vue.d.ts +4 -3
  8. package/dist/components/Breadcrumbs/Breadcrumbs.vue.d.ts +3 -2
  9. package/dist/components/Button/Button.vue.d.ts +8 -17
  10. package/dist/components/ButtonGroup/ButtonGroup.vue.d.ts +5 -2
  11. package/dist/components/Calendar/Calendar.vue.d.ts +7 -7
  12. package/dist/components/Card/Card.vue.d.ts +4 -3
  13. package/dist/components/Checkbox/Checkbox.vue.d.ts +8 -6
  14. package/dist/components/CopyClipboard/CopyClipboard.vue.d.ts +2 -1
  15. package/dist/components/Divider/Divider.vue.d.ts +3 -2
  16. package/dist/components/Drawer/Drawer.vue.d.ts +6 -5
  17. package/dist/components/Dropdown/Dropdown.vue.d.ts +84 -6
  18. package/dist/components/Dropdown/DropdownItem.vue.d.ts +3 -2
  19. package/dist/components/Dropdown/DropdownTitle.vue.d.ts +6 -2
  20. package/dist/components/Flex/Flex.vue.d.ts +3 -2
  21. package/dist/components/Grid/Grid.vue.d.ts +7 -3
  22. package/dist/components/Input/Color.vue.d.ts +11 -0
  23. package/dist/components/Input/Counter.vue.d.ts +5 -5
  24. package/dist/components/Input/Dropzone.vue.d.ts +96 -11
  25. package/dist/components/Input/File.vue.d.ts +4 -3
  26. package/dist/components/Input/Input.vue.d.ts +9 -8
  27. package/dist/components/Input/Password.vue.d.ts +1 -1
  28. package/dist/components/Input/Textarea.vue.d.ts +7 -6
  29. package/dist/components/Kbd/Kbd.vue.d.ts +1 -1
  30. package/dist/components/Kbd/KbdGroup.vue.d.ts +5 -12
  31. package/dist/components/Modal/Confirm.vue.d.ts +7 -6
  32. package/dist/components/Modal/Modal.vue.d.ts +7 -6
  33. package/dist/components/OTP/OTP.vue.d.ts +7 -6
  34. package/dist/components/OTP/OTPItem.vue.d.ts +1 -1
  35. package/dist/components/Pagination/Pagination.vue.d.ts +6 -2
  36. package/dist/components/Popout/Popout.vue.d.ts +11 -3
  37. package/dist/components/Progress/Progress.vue.d.ts +7 -5
  38. package/dist/components/Radio/Radio.vue.d.ts +8 -6
  39. package/dist/components/Radio/RadioGroup.vue.d.ts +7 -6
  40. package/dist/components/Select/Select.vue.d.ts +6 -8
  41. package/dist/components/Sheet/Sheet.vue.d.ts +9 -5
  42. package/dist/components/Sidebar/Sidebar.vue.d.ts +70 -0
  43. package/dist/components/Skeleton/Skeleton.vue.d.ts +1 -1
  44. package/dist/components/Spinner/Spinner.vue.d.ts +1 -1
  45. package/dist/components/Switch/Switch.vue.d.ts +8 -6
  46. package/dist/components/Table/Cell.vue.d.ts +5 -2
  47. package/dist/components/Table/{Header.vue.d.ts → Head.vue.d.ts} +3 -2
  48. package/dist/components/Table/{Table.vue.d.ts → Root.vue.d.ts} +3 -2
  49. package/dist/components/Table/index.d.ts +6 -0
  50. package/dist/components/Table/table.d.ts +3 -3
  51. package/dist/components/Tabs/Tab.vue.d.ts +17 -3
  52. package/dist/components/Tabs/Tabs.vue.d.ts +8 -7
  53. package/dist/components/Toast/toast.d.ts +245 -0
  54. package/dist/components/Tooltip/Tooltip.vue.d.ts +2 -1
  55. package/dist/index.d.ts +5 -7
  56. package/dist/internal/Backdrop/Backdrop.vue.d.ts +3 -2
  57. package/dist/shared/helpers.d.ts +9 -0
  58. package/dist/shared/theme.d.ts +3 -0
  59. package/dist/vui.css +1 -0
  60. package/dist/vui.js +7160 -6355
  61. package/package.json +22 -18
  62. package/src/App.vue +90 -171
  63. package/src/components/Accordion/accordion.scss +1 -0
  64. package/src/components/Alert/Alert.vue +11 -5
  65. package/src/components/Alert/alert.scss +104 -23
  66. package/src/components/Avatar/Avatar.vue +4 -1
  67. package/src/components/Avatar/avatar.scss +1 -1
  68. package/src/components/Badge/Badge.vue +1 -1
  69. package/src/components/Badge/badge.scss +134 -17
  70. package/src/components/Breadcrumbs/BreadcrumbItem.vue +2 -2
  71. package/src/components/Breadcrumbs/Breadcrumbs.vue +1 -2
  72. package/src/components/Breadcrumbs/breadcrumbs.scss +2 -1
  73. package/src/components/Button/Button.vue +15 -20
  74. package/src/components/Button/button.scss +156 -55
  75. package/src/components/ButtonGroup/ButtonGroup.vue +4 -1
  76. package/src/components/ButtonGroup/button-group.scss +2 -2
  77. package/src/components/Calendar/Calendar.vue +4 -1
  78. package/src/components/Calendar/calendar.scss +25 -2
  79. package/src/components/Card/Card.vue +2 -2
  80. package/src/components/Card/card.scss +4 -4
  81. package/src/components/Checkbox/Checkbox.vue +4 -1
  82. package/src/components/Checkbox/checkbox.scss +17 -12
  83. package/src/components/CopyClipboard/CopyClipboard.vue +15 -6
  84. package/src/components/CopyClipboard/copy-clipboard.scss +10 -2
  85. package/src/components/Drawer/Drawer.vue +4 -4
  86. package/src/components/Drawer/drawer.scss +1 -0
  87. package/src/components/Dropdown/Dropdown.vue +44 -20
  88. package/src/components/Dropdown/DropdownItem.vue +4 -4
  89. package/src/components/Dropdown/DropdownTitle.vue +7 -1
  90. package/src/components/Dropdown/dropdown-item.scss +9 -2
  91. package/src/components/Dropdown/dropdown.scss +21 -7
  92. package/src/components/Grid/Grid.vue +21 -1
  93. package/src/components/Input/Color.vue +26 -0
  94. package/src/components/Input/Counter.vue +12 -16
  95. package/src/components/Input/Dropzone.vue +1 -1
  96. package/src/components/Input/File.vue +1 -1
  97. package/src/components/Input/Input.vue +8 -6
  98. package/src/components/Input/Password.vue +1 -13
  99. package/src/components/Input/Textarea.vue +4 -2
  100. package/src/components/Input/input.scss +110 -16
  101. package/src/components/Kbd/KbdGroup.vue +2 -6
  102. package/src/components/Kbd/kbd.scss +6 -5
  103. package/src/components/Modal/Confirm.vue +1 -1
  104. package/src/components/Modal/Modal.vue +23 -15
  105. package/src/components/Modal/modal.scss +11 -6
  106. package/src/components/OTP/otp.scss +8 -7
  107. package/src/components/Pagination/Pagination.vue +6 -3
  108. package/src/components/Popout/Popout.vue +15 -5
  109. package/src/components/Popout/popout.scss +8 -1
  110. package/src/components/Progress/Progress.vue +18 -5
  111. package/src/components/Progress/progress.scss +7 -1
  112. package/src/components/Radio/Radio.vue +4 -2
  113. package/src/components/Radio/radio.scss +18 -8
  114. package/src/components/Select/Select.vue +49 -18
  115. package/src/components/Select/select.scss +35 -2
  116. package/src/components/Sheet/Sheet.vue +8 -2
  117. package/src/components/Sheet/sheet.scss +9 -0
  118. package/src/components/Sidebar/Sidebar.vue +24 -11
  119. package/src/components/Sidebar/sidebar.scss +6 -5
  120. package/src/components/Spinner/spinner.scss +2 -1
  121. package/src/components/Switch/Switch.vue +4 -3
  122. package/src/components/Switch/switch.scss +39 -6
  123. package/src/components/Table/{Header.vue → Head.vue} +5 -5
  124. package/src/components/Table/{Table.vue → Root.vue} +2 -2
  125. package/src/components/Table/SelectRow.vue +2 -1
  126. package/src/components/Table/index.ts +7 -0
  127. package/src/components/Table/table.scss +25 -5
  128. package/src/components/Table/table.ts +7 -3
  129. package/src/components/Tabs/Tab.vue +7 -9
  130. package/src/components/Tabs/Tabs.vue +5 -4
  131. package/src/components/Tabs/tabs.scss +10 -3
  132. package/src/components/Toast/Toasts.vue +5 -0
  133. package/src/components/Toast/toast.scss +6 -2
  134. package/src/components/Toast/toast.ts +7 -0
  135. package/src/components/Tooltip/Tooltip.vue +9 -9
  136. package/src/components/Tooltip/tooltip.scss +4 -0
  137. package/src/examples/ExampleAccordions.vue +58 -0
  138. package/src/examples/ExampleAlerts.vue +78 -0
  139. package/src/examples/ExampleAvatars.vue +44 -0
  140. package/src/examples/ExampleBadges.vue +48 -0
  141. package/src/examples/ExampleBreadcrumbs.vue +46 -0
  142. package/src/examples/ExampleButtons.vue +140 -0
  143. package/src/examples/ExampleCalendars.vue +40 -0
  144. package/src/examples/ExampleCards.vue +94 -0
  145. package/src/examples/ExampleCheckboxes.vue +123 -0
  146. package/src/examples/ExampleCopyClipboard.vue +47 -0
  147. package/src/examples/ExampleDividers.vue +39 -0
  148. package/src/examples/ExampleDrawers.vue +67 -0
  149. package/src/examples/ExampleDropdowns.vue +114 -0
  150. package/src/examples/ExampleFlexGrid.vue +122 -0
  151. package/src/examples/ExampleInputs.vue +234 -0
  152. package/src/examples/ExampleKBD.vue +65 -0
  153. package/src/examples/ExampleModals.vue +143 -0
  154. package/src/examples/ExamplePalette.vue +159 -0
  155. package/src/examples/ExamplePopouts.vue +41 -0
  156. package/src/examples/ExampleSheets.vue +77 -0
  157. package/src/examples/ExampleSidebars.vue +270 -0
  158. package/src/examples/ExampleSkeletons.vue +26 -0
  159. package/src/examples/ExampleSpinners.vue +78 -0
  160. package/src/examples/ExampleTables.vue +195 -0
  161. package/src/examples/ExampleTabs.vue +119 -0
  162. package/src/examples/ExampleToasts.vue +96 -0
  163. package/src/examples/ExampleTooltips.vue +70 -0
  164. package/src/examples/shared/ExampleColor.vue +28 -0
  165. package/src/index.ts +8 -11
  166. package/src/internal/Backdrop/backdrop.scss +7 -1
  167. package/src/shared/helpers.ts +43 -0
  168. package/src/shared/theme.ts +22 -0
  169. package/src/style/animation.scss +1 -0
  170. package/src/style/core.scss +30 -55
  171. package/src/style/layout.scss +74 -9
  172. package/src/style/text.scss +18 -0
  173. package/src/style/theme.scss +195 -0
  174. package/src/style/tooltip.scss +22 -4
  175. package/src/style/typography.scss +95 -18
  176. package/dist/components/Table/Row.vue.d.ts +0 -16
  177. package/dist/style.css +0 -1
  178. package/src/components/Table/Row.vue +0 -9
@@ -0,0 +1,140 @@
1
+ <script setup lang='ts'>
2
+ import { Icon } from '@iconify/vue'
3
+ import Button from '../components/Button/Button.vue'
4
+ import ButtonGroup from '../components/ButtonGroup/ButtonGroup.vue'
5
+ import Flex from '../components/Flex/Flex.vue'
6
+
7
+ const variants = ['gray', 'fill', 'danger', 'success', 'link', 'accent'] as const
8
+ </script>
9
+
10
+ <template>
11
+ <div class="mb-xxl">
12
+ <h3 class="mb-l">
13
+ Buttons
14
+ </h3>
15
+ <table>
16
+ <tbody>
17
+ <tr>
18
+ <th>Base</th>
19
+ <td>
20
+ <Flex gap="s">
21
+ <Button v-for="btn in variants" :key="btn" :variant="btn">
22
+ Button
23
+ </Button>
24
+ </Flex>
25
+ </td>
26
+ </tr>
27
+ <tr>
28
+ <th>Base + large</th>
29
+ <td>
30
+ <Flex gap="s">
31
+ <Button v-for="btn in variants" :key="btn" :variant="btn" size="l">
32
+ Button
33
+ </Button>
34
+ </Flex>
35
+ </td>
36
+ </tr>
37
+ <tr>
38
+ <th>Base + small</th>
39
+ <td>
40
+ <Flex gap="s">
41
+ <Button v-for="btn in variants" :key="btn" :variant="btn" size="s">
42
+ Button
43
+ </Button>
44
+ </Flex>
45
+ </td>
46
+ </tr>
47
+ <tr>
48
+ <th>Plain</th>
49
+ <td>
50
+ <Flex gap="s">
51
+ <Button v-for="btn in variants" :key="btn" :variant="btn" plain>
52
+ Button
53
+ </Button>
54
+ </Flex>
55
+ </td>
56
+ </tr>
57
+ <tr>
58
+ <th>Outline</th>
59
+ <td>
60
+ <Flex gap="s">
61
+ <Button v-for="btn in variants" :key="btn" :variant="btn" outline>
62
+ Button
63
+ </Button>
64
+ </Flex>
65
+ </td>
66
+ </tr>
67
+ <tr>
68
+ <th>Disabled</th>
69
+ <td>
70
+ <Flex gap="s">
71
+ <Button v-for="btn in variants" :key="btn" :variant="btn" disabled>
72
+ Button
73
+ </Button>
74
+ </Flex>
75
+ </td>
76
+ </tr>
77
+ <tr>
78
+ <th>Squar + icon</th>
79
+ <td>
80
+ <Flex gap="s">
81
+ <Button v-for="btn in variants" :key="btn" :variant="btn" square icon="ph:info" />
82
+ </Flex>
83
+ </td>
84
+ </tr>
85
+ <tr>
86
+ <th>Squar + icon + small</th>
87
+ <td>
88
+ <Flex gap="s">
89
+ <Button v-for="btn in variants" :key="btn" :variant="btn" square icon="ph:info" size="s" />
90
+ </Flex>
91
+ </td>
92
+ </tr>
93
+ <tr>
94
+ <th>Squar + icon + large</th>
95
+ <td>
96
+ <Flex gap="s">
97
+ <Button v-for="btn in variants" :key="btn" :variant="btn" square icon="ph:info" size="l" />
98
+ </Flex>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <th>Icon + text</th>
103
+ <td>
104
+ <Flex gap="s">
105
+ <Button v-for="btn in variants" :key="btn" :variant="btn">
106
+ <template #start>
107
+ <Icon icon="ph:arrow-left" />
108
+ </template>
109
+ Prev
110
+ <template #end>
111
+ <Icon icon="ph:arrow-right" />
112
+ </template>
113
+ </Button>
114
+ </Flex>
115
+ </td>
116
+ </tr>
117
+ <tr>
118
+ <td>Button group</td>
119
+ <td>
120
+ <Flex gap="s" wrap>
121
+ <ButtonGroup v-for="btn in variants" :key="btn">
122
+ <Button :variant="btn">
123
+ Hello
124
+ </Button>
125
+ <Button :variant="btn" icon="ph:caret-down" />
126
+ </ButtonGroup>
127
+
128
+ <ButtonGroup>
129
+ <Button square icon="ph:text-b-bold" active />
130
+ <Button square icon="ph:text-bold" />
131
+ <Button square icon="ph:text-italic" />
132
+ <Button square icon="ph:text-a-underline" />
133
+ </ButtonGroup>
134
+ </Flex>
135
+ </td>
136
+ </tr>
137
+ </tbody>
138
+ </table>
139
+ </div>
140
+ </template>
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue'
3
+ import Button from '../components/Button/Button.vue'
4
+ import Calendar from '../components/Calendar/Calendar.vue'
5
+
6
+ const date = ref(Date.now())
7
+ </script>
8
+
9
+ <template>
10
+ <div class="mb-xxl">
11
+ <h3 class="mb-l">
12
+ Calendars
13
+ </h3>
14
+
15
+ <p class="mb-s">
16
+ Using the <a href="https://vue3datepicker.com/" target="_blank">Vue Datepicker</a> component. By default it always outputs a javascript Date object. So it is up to the user to format the dates themselves.
17
+ </p>
18
+
19
+ <table>
20
+ <tbody>
21
+ <tr>
22
+ <th>Base</th>
23
+ <td>
24
+ <Calendar v-model="date" format="dd/MM/yyyy">
25
+ <template #trigger>
26
+ <Button>{{ date ?? 'Choose date' }}</Button>
27
+ </template>
28
+ </Calendar>
29
+ </td>
30
+ </tr>
31
+ <tr>
32
+ <th>Inline</th>
33
+ <th>
34
+ <Calendar inline />
35
+ </th>
36
+ </tr>
37
+ </tbody>
38
+ </table>
39
+ </div>
40
+ </template>
@@ -0,0 +1,94 @@
1
+ <script setup lang='ts'>
2
+ import Button from '../components/Button/Button.vue'
3
+ import Card from '../components/Card/Card.vue'
4
+ import Flex from '../components/Flex/Flex.vue'
5
+ import Grid from '../components/Grid/Grid.vue'
6
+ </script>
7
+
8
+ <template>
9
+ <div class="mb-xxl">
10
+ <h3 class="mb-l">
11
+ Cards
12
+ </h3>
13
+
14
+ <Grid :columns="2" gap="xl">
15
+ <Flex column gap="xl">
16
+ <div>
17
+ <strong class="block mb-s">Base</strong>
18
+ <Card>
19
+ <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Adipisci eligendi quos inventore voluptas ab saepe fugit deleniti ipsam exercitationem impedit quod rem ipsum laborum, quis quam error ipsa corrupti. Dolorem!</p>
20
+ </Card>
21
+ </div>
22
+
23
+ <div>
24
+ <strong class="block mb-s">With header</strong>
25
+ <Card>
26
+ <template #header>
27
+ <h4>Hello</h4>
28
+ </template>
29
+ <template #header-end>
30
+ <Button icon="ph:x" plain size="s" />
31
+ </template>
32
+ <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Adipisci eligendi quos inventore voluptas ab saepe fugit deleniti ipsam exercitationem impedit quod rem ipsum laborum, quis quam error ipsa corrupti. Dolorem!</p>
33
+ </Card>
34
+ </div>
35
+
36
+ <div>
37
+ <strong class="block mb-s">With footer</strong>
38
+ <Card>
39
+ <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Adipisci eligendi quos inventore voluptas ab saepe fugit deleniti ipsam exercitationem impedit quod rem ipsum laborum, quis quam error ipsa corrupti. Dolorem!</p>
40
+
41
+ <template #footer>
42
+ <Flex gap="s" justify-end>
43
+ <Button>Cancel</Button>
44
+ <Button variant="success">
45
+ Save
46
+ </Button>
47
+ </Flex>
48
+ </template>
49
+ </Card>
50
+ </div>
51
+ </Flex>
52
+ <Flex column gap="xl">
53
+ <div>
54
+ <strong class="block mb-s">With header + separators (each separator can be individually disabled)</strong>
55
+ <Card separators>
56
+ <template #header>
57
+ <h4>Hello</h4>
58
+ </template>
59
+ <template #header-end>
60
+ <Button icon="ph:x" plain size="s" />
61
+ </template>
62
+ <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Adipisci eligendi quos inventore voluptas ab saepe fugit deleniti ipsam exercitationem impedit quod rem ipsum laborum, quis quam error ipsa corrupti. Dolorem!</p>
63
+ <template #footer>
64
+ <Flex gap="s" justify-start>
65
+ <Button variant="success">
66
+ Save
67
+ </Button>
68
+ <Button>Cancel</Button>
69
+ </Flex>
70
+ </template>
71
+ </Card>
72
+ </div>
73
+
74
+ <Card :header-separator="false" footer-separator>
75
+ <template #header>
76
+ <h4>Hello</h4>
77
+ </template>
78
+ <template #header-end>
79
+ <Button icon="ph:x" plain size="s" />
80
+ </template>
81
+ <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Adipisci eligendi quos inventore voluptas ab saepe fugit deleniti ipsam exercitationem impedit quod rem ipsum laborum, quis quam error ipsa corrupti. Dolorem!</p>
82
+ <template #footer>
83
+ <Flex gap="s" justify-end>
84
+ <Button>Cancel</Button>
85
+ <Button variant="success">
86
+ Save
87
+ </Button>
88
+ </Flex>
89
+ </template>
90
+ </Card>
91
+ </Flex>
92
+ </Grid>
93
+ </div>
94
+ </template>
@@ -0,0 +1,123 @@
1
+ <script setup lang='ts'>
2
+ import Checkbox from '../components/Checkbox/Checkbox.vue'
3
+ import Grid from '../components/Grid/Grid.vue'
4
+ import Radio from '../components/Radio/Radio.vue'
5
+ import RadioGroup from '../components/Radio/RadioGroup.vue'
6
+ import Switch from '../components/Switch/Switch.vue'
7
+ </script>
8
+
9
+ <template>
10
+ <div class="mb-xxl">
11
+ <Grid :columns="2" gap="xl">
12
+ <div>
13
+ <h3 class="mb-l">
14
+ Checkbox
15
+ </h3>
16
+ <table class="mb-xl w-100">
17
+ <tbody>
18
+ <tr>
19
+ <th>Base</th>
20
+ <td>
21
+ <Checkbox label="Just click me" />
22
+ </td>
23
+ </tr>
24
+ <tr>
25
+ <th>Accent</th>
26
+ <td>
27
+ <Checkbox label="Just click me" accent />
28
+ </td>
29
+ </tr>
30
+ <tr>
31
+ <th>Disabled</th>
32
+ <td>
33
+ <Checkbox disabled label="Just click me" />
34
+ </td>
35
+ </tr>
36
+ <tr>
37
+ <th>Custom icons</th>
38
+ <td>
39
+ <Checkbox icon-on="ph:check-fat" icon-off="ph:x-bold" label="Just click me" />
40
+ </td>
41
+ </tr>
42
+ </tbody>
43
+ </table>
44
+
45
+ <h3 class="mb-l">
46
+ Switch
47
+ </h3>
48
+ <table class="mb-xl w-100">
49
+ <tbody>
50
+ <tr>
51
+ <th>Base</th>
52
+ <td>
53
+ <Switch label="Just click me" />
54
+ </td>
55
+ </tr>
56
+ <tr>
57
+ <th>Accent</th>
58
+ <td>
59
+ <Switch label="Just click me" accent />
60
+ </td>
61
+ </tr>
62
+ <tr>
63
+ <th>Disabled</th>
64
+ <td>
65
+ <Switch label="Just click me" disabled />
66
+ </td>
67
+ </tr>
68
+ </tbody>
69
+ </table>
70
+ </div>
71
+ <div>
72
+ <h3 class="mb-l">
73
+ Radio group
74
+ </h3>
75
+
76
+ <table class="w-100">
77
+ <tbody>
78
+ <tr>
79
+ <th>Base</th>
80
+ <td>
81
+ <RadioGroup>
82
+ <Radio value="one" label="First" />
83
+ <Radio value="two" label="Second" />
84
+ <Radio value="three" label="Third" disabled />
85
+ </RadioGroup>
86
+ </td>
87
+ </tr>
88
+ <tr>
89
+ <th>Accent</th>
90
+ <td>
91
+ <RadioGroup>
92
+ <Radio value="one" label="First" accent />
93
+ <Radio value="two" label="Second" accent />
94
+ <Radio value="three" label="Third" disabled accent />
95
+ </RadioGroup>
96
+ </td>
97
+ </tr>
98
+ <tr>
99
+ <th>Vertical</th>
100
+ <td>
101
+ <RadioGroup column>
102
+ <Radio value="one" label="First" />
103
+ <Radio value="two" label="Second" />
104
+ <Radio value="three" label="Third" disabled />
105
+ </RadioGroup>
106
+ </td>
107
+ </tr>
108
+ <tr>
109
+ <th>Disabled</th>
110
+ <td>
111
+ <RadioGroup column disabled>
112
+ <Radio value="one" label="First" />
113
+ <Radio value="two" label="Second" />
114
+ <Radio value="three" label="Third" disabled />
115
+ </RadioGroup>
116
+ </td>
117
+ </tr>
118
+ </tbody>
119
+ </table>
120
+ </div>
121
+ </Grid>
122
+ </div>
123
+ </template>
@@ -0,0 +1,47 @@
1
+ <script setup lang='ts'>
2
+ import Button from '../components/Button/Button.vue'
3
+ import CopyClipboard from '../components/CopyClipboard/CopyClipboard.vue'
4
+ import Flex from '../components/Flex/Flex.vue'
5
+ </script>
6
+
7
+ <template>
8
+ <div class="mb-xxl">
9
+ <h3 class="mb-l">
10
+ Clipboard copy
11
+ </h3>
12
+ <table>
13
+ <tbody>
14
+ <tr>
15
+ <th>Base</th>
16
+ <td>
17
+ <CopyClipboard text="Copy me!">
18
+ <p>Copy me!</p>
19
+ </CopyClipboard>
20
+ </td>
21
+ </tr>
22
+ <tr>
23
+ <th>Custom slot & confirmation</th>
24
+ <td>
25
+ <CopyClipboard text="Copy me!" confirm>
26
+ <Button>Copy me!</Button>
27
+ </CopyClipboard>
28
+ </td>
29
+ </tr>
30
+ <tr>
31
+ <th>Custom confirm popup</th>
32
+ <td>
33
+ <CopyClipboard text="Copy me!" confirm>
34
+ <Button>Copy me!</Button>
35
+ <template #confirm>
36
+ <Flex column gap="s" align-center>
37
+ <strong>The dawg</strong>
38
+ <img style="width:128px;border-radius:8px" src="https://i.imgur.com/jMxIs6p.png" alt="">
39
+ </Flex>
40
+ </template>
41
+ </CopyClipboard>
42
+ </td>
43
+ </tr>
44
+ </tbody>
45
+ </table>
46
+ </div>
47
+ </template>
@@ -0,0 +1,39 @@
1
+ <script setup lang='ts'>
2
+ import Avatar from '../components/Avatar/Avatar.vue'
3
+ import Divider from '../components/Divider/Divider.vue'
4
+ import Flex from '../components/Flex/Flex.vue'
5
+ </script>
6
+
7
+ <template>
8
+ <div class="mb-xxl">
9
+ <h3 class="mb-l">
10
+ Dividers
11
+ </h3>
12
+
13
+ <div class="container container-s">
14
+ <p>Standard divider</p>
15
+ <Divider />
16
+ <p>Divider with a variable spacing. For instance 80px. This means there will be a gap of 40 pixels above and below the divider. Size serves a different purpose with vertical dividers, so to achieve the same thing, you could also set the margin to <code>40px 0</code></p>
17
+ <Divider :size="80" />
18
+ <p>Using margin. The default divider size is 32px, so we need to either set it to 0 or offset the provided margin.</p>
19
+ <Divider margin="40px 0" />
20
+
21
+ <p>Different thickness (you specify the number of pixels)</p>
22
+ <Divider :thickness="5" :size="64" />
23
+ <p class="mb-s">
24
+ Vertical dividers. Here, size is the height of the divider. And if you want to add extra spacing between dividers, jsut set the margin to something like <code>0 16px</code>.
25
+ </p>
26
+ <Flex class="mb-xl">
27
+ <span>One</span>
28
+ <Divider vertical :size="16" />
29
+ <span>Two</span>
30
+ <Divider vertical :size="16" />
31
+ <span>Three</span>
32
+ </Flex>
33
+ <p>Dividers also accept a slot. This is rendered in the center, overlaying the divider. For instance an icon or an avatar, but it can be any component.</p>
34
+ <Divider size="80">
35
+ <Avatar />
36
+ </Divider>
37
+ </div>
38
+ </div>
39
+ </template>
@@ -0,0 +1,67 @@
1
+ <script setup lang='ts'>
2
+ import type { Sizes } from '../shared/types'
3
+ import { ref } from 'vue'
4
+ import Button from '../components/Button/Button.vue'
5
+ import Drawer from '../components/Drawer/Drawer.vue'
6
+ import Flex from '../components/Flex/Flex.vue'
7
+
8
+ const open = ref(false)
9
+ const open2 = ref(false)
10
+
11
+ const size = ref<Sizes | 'full'>('s')
12
+ function setSize(s: any) {
13
+ size.value = s
14
+ open.value = true
15
+ }
16
+ </script>
17
+
18
+ <template>
19
+ <div class="mb-xxl">
20
+ <h3 class="mb-l">
21
+ Drawers
22
+ </h3>
23
+
24
+ <table>
25
+ <tbody>
26
+ <tr>
27
+ <th>Base</th>
28
+ <td>
29
+ <Flex>
30
+ <Button square @click="setSize('s')">
31
+ S
32
+ </Button>
33
+ <Button square @click="setSize('m')">
34
+ M
35
+ </Button>
36
+ <Button square @click="setSize('l')">
37
+ L
38
+ </Button>
39
+ <Button square @click="setSize('xl')">
40
+ XL
41
+ </Button>
42
+ <Button square @click="setSize('full')">
43
+ Full
44
+ </Button>
45
+ </Flex>
46
+ <Drawer v-model="open" title="Hello" :container-size="size">
47
+ <h2>Hello</h2>
48
+ <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta cupiditate laudantium maiores? Nesciunt harum doloribus accusantium architecto, quod rem porro iusto, quia dicta ex sapiente nulla earum voluptatibus, dolor veritatis?</p>
49
+ </Drawer>
50
+ </td>
51
+ </tr>
52
+ <tr>
53
+ <th>With animation + no handle</th>
54
+ <td>
55
+ <Button @click="open2 = !open2">
56
+ Open
57
+ </Button>
58
+ <Drawer v-model="open2" :handle="false" title="Hello" :container-size="size" :root-props="{ shouldScaleBackground: true }">
59
+ <h2>Hello</h2>
60
+ <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta cupiditate laudantium maiores? Nesciunt harum doloribus accusantium architecto, quod rem porro iusto, quia dicta ex sapiente nulla earum voluptatibus, dolor veritatis?</p>
61
+ </Drawer>
62
+ </td>
63
+ </tr>
64
+ </tbody>
65
+ </table>
66
+ </div>
67
+ </template>
@@ -0,0 +1,114 @@
1
+ <script setup lang="ts">
2
+ import { Icon } from '@iconify/vue'
3
+ import Button from '../components/Button/Button.vue'
4
+ import Dropdown from '../components/Dropdown/Dropdown.vue'
5
+ import DropdownItem from '../components/Dropdown/DropdownItem.vue'
6
+ import DropdownTitle from '../components/Dropdown/DropdownTitle.vue'
7
+ import Flex from '../components/Flex/Flex.vue'
8
+
9
+ const placements = ['top', 'bottom', 'left', 'right'] as const
10
+ </script>
11
+
12
+ <template>
13
+ <div class="mb-xxl">
14
+ <h3 class="mb-l">
15
+ Dropdowns
16
+ </h3>
17
+
18
+ <table class="mb-xxl">
19
+ <tbody>
20
+ <tr>
21
+ <th>
22
+ Base + expand <br> (dropdown takes width of the trigger)
23
+ </th>
24
+ <td>
25
+ <Dropdown expand>
26
+ <template #trigger="{ toggle }">
27
+ <Button class="btn btn-primary" expand @click="toggle">
28
+ Dropdown
29
+ </Button>
30
+ </template>
31
+ <DropdownItem>New user</DropdownItem>
32
+ <DropdownItem>Update</DropdownItem>
33
+ <DropdownItem>Cancel</DropdownItem>
34
+ </Dropdown>
35
+ </td>
36
+ </tr>
37
+ <tr>
38
+ <th>
39
+ Placements (some)
40
+ </th>
41
+ <td>
42
+ <Flex>
43
+ <Dropdown v-for="placement in placements" :key="placement" :placement="placement">
44
+ <template #trigger="{ toggle }">
45
+ <Button class="btn btn-primary" @click="toggle">
46
+ {{ placement }}
47
+ </Button>
48
+ </template>
49
+
50
+ <DropdownItem>New user</DropdownItem>
51
+ <DropdownItem>Update</DropdownItem>
52
+ <DropdownItem>Cancel</DropdownItem>
53
+ </Dropdown>
54
+ </Flex>
55
+ </td>
56
+ </tr>
57
+ <tr>
58
+ <th>Complex</th>
59
+ <td>
60
+ <Dropdown>
61
+ <template #trigger="{ toggle }">
62
+ <Button class="btn btn-primary" @click="toggle">
63
+ Dropdown
64
+ </Button>
65
+ </template>
66
+
67
+ <DropdownTitle>
68
+ Actions
69
+ <template #end>
70
+ 3
71
+ </template>
72
+ </DropdownTitle>
73
+
74
+ <DropdownItem icon="ph:user">
75
+ New user
76
+ <template #hint>
77
+ <Icon icon="ic:round-keyboard-command-key" />
78
+ + C
79
+ </template>
80
+ </DropdownItem>
81
+ <DropdownItem icon-end="ph:arrow-right">
82
+ Update
83
+ </DropdownItem>
84
+ <DropdownItem>Cancel</DropdownItem>
85
+
86
+ <DropdownTitle>Yourself</DropdownTitle>
87
+ <DropdownItem icon="ph:x" disabled>
88
+ Disabled option
89
+ </DropdownItem>
90
+ <DropdownItem icon="ph:x">
91
+ Delete
92
+ </DropdownItem>
93
+ </Dropdown>
94
+ </td>
95
+ </tr>
96
+ <tr>
97
+ <th>Disabled</th>
98
+ <td>
99
+ <Dropdown expand>
100
+ <template #trigger="{ toggle }">
101
+ <Button class="btn btn-primary" disabled @click="toggle">
102
+ Dropdown
103
+ </Button>
104
+ </template>
105
+ <DropdownItem>New user</DropdownItem>
106
+ <DropdownItem>Update</DropdownItem>
107
+ <DropdownItem>Cancel</DropdownItem>
108
+ </Dropdown>
109
+ </td>
110
+ </tr>
111
+ </tbody>
112
+ </table>
113
+ </div>
114
+ </template>