@returnless/focus-ui 0.0.4 → 0.0.6

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 (250) hide show
  1. package/package.json +3 -2
  2. package/src/build-utils/generate-component-meta.ts +0 -80
  3. package/src/build-utils/update-component-list.js +0 -31
  4. package/src/build-utils/update-component-list.ts +0 -32
  5. package/src/components/Accordion/Accordion.vue +0 -20
  6. package/src/components/Accordion/AccordionContent.vue +0 -43
  7. package/src/components/Accordion/AccordionItem.vue +0 -21
  8. package/src/components/Accordion/AccordionTrigger.vue +0 -38
  9. package/src/components/Accordion/README.md +0 -56
  10. package/src/components/Accordion/index.ts +0 -4
  11. package/src/components/ActionList/ActionList.vue +0 -9
  12. package/src/components/ActionList/ActionListBody.vue +0 -11
  13. package/src/components/ActionList/ActionListItem.vue +0 -37
  14. package/src/components/ActionList/ActionListSection.vue +0 -7
  15. package/src/components/ActionList/ActionListTrigger.vue +0 -9
  16. package/src/components/ActionList/README.md +0 -113
  17. package/src/components/ActionList/index.ts +0 -5
  18. package/src/components/Alert/Alert.vue +0 -68
  19. package/src/components/Alert/AlertDescription.vue +0 -20
  20. package/src/components/Alert/AlertTitle.vue +0 -11
  21. package/src/components/Alert/DismissableAlertButton.vue +0 -36
  22. package/src/components/Alert/README.md +0 -150
  23. package/src/components/Alert/index.ts +0 -5
  24. package/src/components/Alert/types.ts +0 -1
  25. package/src/components/AlertDialog/AlertDialog.vue +0 -54
  26. package/src/components/AlertDialog/AlertDialogActionButton.vue +0 -16
  27. package/src/components/AlertDialog/AlertDialogCancelButton.vue +0 -15
  28. package/src/components/AlertDialog/AlertDialogContent.vue +0 -8
  29. package/src/components/AlertDialog/AlertDialogDescription.vue +0 -17
  30. package/src/components/AlertDialog/AlertDialogFooter.vue +0 -11
  31. package/src/components/AlertDialog/AlertDialogHeader.vue +0 -8
  32. package/src/components/AlertDialog/AlertDialogTitle.vue +0 -15
  33. package/src/components/AlertDialog/README.md +0 -84
  34. package/src/components/AlertDialog/index.ts +0 -8
  35. package/src/components/AspectRatio/AspectRatio.vue +0 -19
  36. package/src/components/AspectRatio/README.md +0 -36
  37. package/src/components/AspectRatio/index.ts +0 -1
  38. package/src/components/Avatar/Avatar.vue +0 -122
  39. package/src/components/Avatar/README.md +0 -116
  40. package/src/components/Avatar/index.ts +0 -1
  41. package/src/components/Badge/Badge.vue +0 -51
  42. package/src/components/Badge/BadgeContent.vue +0 -9
  43. package/src/components/Badge/BadgeIcon.vue +0 -7
  44. package/src/components/Badge/README.md +0 -131
  45. package/src/components/Badge/index.ts +0 -3
  46. package/src/components/BarChart/BarChart.vue +0 -80
  47. package/src/components/BarChart/BarChartContainer.vue +0 -7
  48. package/src/components/BarChart/BarChartStacked.vue +0 -93
  49. package/src/components/BarChart/README.md +0 -83
  50. package/src/components/BarChart/index.ts +0 -3
  51. package/src/components/Breadcrumbs/Breadcrumb.vue +0 -7
  52. package/src/components/Breadcrumbs/BreadcrumbEllipsis.vue +0 -12
  53. package/src/components/Breadcrumbs/BreadcrumbItem.vue +0 -8
  54. package/src/components/Breadcrumbs/BreadcrumbLink.vue +0 -13
  55. package/src/components/Breadcrumbs/BreadcrumbList.vue +0 -8
  56. package/src/components/Breadcrumbs/BreadcrumbPage.vue +0 -13
  57. package/src/components/Breadcrumbs/BreadcrumbSeparator.vue +0 -12
  58. package/src/components/Breadcrumbs/README.md +0 -91
  59. package/src/components/Breadcrumbs/index.ts +0 -7
  60. package/src/components/Button/Button.vue +0 -75
  61. package/src/components/Button/ButtonContent.vue +0 -7
  62. package/src/components/Button/ButtonIcon.vue +0 -32
  63. package/src/components/Button/README.md +0 -231
  64. package/src/components/Button/index.ts +0 -5
  65. package/src/components/Button/types.ts +0 -30
  66. package/src/components/ButtonGroup/ButtonGroup.vue +0 -7
  67. package/src/components/ButtonGroup/README.md +0 -42
  68. package/src/components/ButtonGroup/index.ts +0 -1
  69. package/src/components/Card/Card.vue +0 -7
  70. package/src/components/Card/CardDescription.vue +0 -11
  71. package/src/components/Card/CardFooter.vue +0 -7
  72. package/src/components/Card/CardHeader.vue +0 -7
  73. package/src/components/Card/CardHelp.vue +0 -23
  74. package/src/components/Card/CardSection.vue +0 -22
  75. package/src/components/Card/CardTitle.vue +0 -11
  76. package/src/components/Card/README.md +0 -156
  77. package/src/components/Card/index.ts +0 -7
  78. package/src/components/Checkbox/Checkbox.vue +0 -73
  79. package/src/components/Checkbox/README.md +0 -111
  80. package/src/components/Checkbox/index.ts +0 -1
  81. package/src/components/Collapsible/README.md +0 -25
  82. package/src/components/DataTable/README.md +0 -56
  83. package/src/components/DatePicker/DatePicker.vue +0 -120
  84. package/src/components/DatePicker/DatePickerCard.vue +0 -9
  85. package/src/components/DatePicker/README.md +0 -59
  86. package/src/components/DatePicker/index.ts +0 -2
  87. package/src/components/DescriptionList/DescriptionList.vue +0 -18
  88. package/src/components/DescriptionList/DescriptionListDescription.vue +0 -8
  89. package/src/components/DescriptionList/DescriptionListItem.vue +0 -21
  90. package/src/components/DescriptionList/DescriptionListTerm.vue +0 -11
  91. package/src/components/DescriptionList/README.md +0 -159
  92. package/src/components/DescriptionList/index.ts +0 -4
  93. package/src/components/Dialog/README.md +0 -2
  94. package/src/components/Dialog/index.ts +0 -0
  95. package/src/components/DropZone/DropZone.vue +0 -105
  96. package/src/components/DropZone/README.md +0 -48
  97. package/src/components/DropZone/index.ts +0 -1
  98. package/src/components/EmptyState/EmptyState.vue +0 -13
  99. package/src/components/EmptyState/EmptyStateActions.vue +0 -11
  100. package/src/components/EmptyState/EmptyStateContent.vue +0 -7
  101. package/src/components/EmptyState/EmptyStateDescription.vue +0 -11
  102. package/src/components/EmptyState/EmptyStateTitle.vue +0 -7
  103. package/src/components/EmptyState/README.md +0 -102
  104. package/src/components/EmptyState/index.ts +0 -5
  105. package/src/components/Feed/Feed.vue +0 -7
  106. package/src/components/Feed/FeedItem.vue +0 -19
  107. package/src/components/Feed/FeedItemBlock.vue +0 -11
  108. package/src/components/Feed/FeedItemDateIndicator.vue +0 -11
  109. package/src/components/Feed/FeedItemIcon.vue +0 -26
  110. package/src/components/Feed/FeedItemSimple.vue +0 -8
  111. package/src/components/Feed/README.md +0 -115
  112. package/src/components/Feed/index.ts +0 -6
  113. package/src/components/FileUploadButton/FileUploadButton.vue +0 -62
  114. package/src/components/FileUploadButton/index.ts +0 -1
  115. package/src/components/Form/Form.vue +0 -35
  116. package/src/components/Form/README.md +0 -52
  117. package/src/components/Form/index.ts +0 -1
  118. package/src/components/FormLayout/FormLayout.vue +0 -25
  119. package/src/components/FormLayout/README.md +0 -97
  120. package/src/components/FormLayout/index.ts +0 -1
  121. package/src/components/Heading/Heading.vue +0 -32
  122. package/src/components/Heading/index.ts +0 -3
  123. package/src/components/Heading/types.ts +0 -3
  124. package/src/components/Image/Image.vue +0 -30
  125. package/src/components/Image/index.ts +0 -1
  126. package/src/components/InertiaLink/InertiaLink.vue +0 -11
  127. package/src/components/InertiaLink/index.ts +0 -1
  128. package/src/components/InlineError/InlineError.vue +0 -21
  129. package/src/components/InlineError/README.md +0 -63
  130. package/src/components/InlineError/index.ts +0 -1
  131. package/src/components/InputLabel/InputLabel.vue +0 -32
  132. package/src/components/InputLabel/index.ts +0 -1
  133. package/src/components/KPICard/KPICard.vue +0 -28
  134. package/src/components/KPICard/KPICardSection.vue +0 -30
  135. package/src/components/KPICard/README.md +0 -124
  136. package/src/components/KPICard/index.ts +0 -2
  137. package/src/components/Legend/Legend.vue +0 -7
  138. package/src/components/Legend/LegendItem.vue +0 -34
  139. package/src/components/Legend/README.md +0 -32
  140. package/src/components/Legend/index.ts +0 -2
  141. package/src/components/Link/Link.vue +0 -38
  142. package/src/components/Link/README.md +0 -119
  143. package/src/components/Link/index.ts +0 -1
  144. package/src/components/Navigation/Navigation.vue +0 -8
  145. package/src/components/Navigation/NavigationItem.vue +0 -47
  146. package/src/components/Navigation/NavigationSecondarySection.vue +0 -12
  147. package/src/components/Navigation/NavigationSection.vue +0 -27
  148. package/src/components/Navigation/README.md +0 -83
  149. package/src/components/Navigation/index.ts +0 -4
  150. package/src/components/Page/Page.vue +0 -7
  151. package/src/components/Page/PageBody.vue +0 -36
  152. package/src/components/Page/PageDescription.vue +0 -11
  153. package/src/components/Page/PageHeader.vue +0 -34
  154. package/src/components/Page/PageTitle.vue +0 -12
  155. package/src/components/Page/README.md +0 -226
  156. package/src/components/Page/index.ts +0 -5
  157. package/src/components/Pagination/Pagination.vue +0 -8
  158. package/src/components/Pagination/PaginationNextButton.vue +0 -10
  159. package/src/components/Pagination/PaginationPreviousButton.vue +0 -10
  160. package/src/components/Pagination/README.md +0 -45
  161. package/src/components/Pagination/index.ts +0 -3
  162. package/src/components/PinInput/PinInput.vue +0 -169
  163. package/src/components/PinInput/README.md +0 -35
  164. package/src/components/PinInput/index.ts +0 -1
  165. package/src/components/Popover/Popover.vue +0 -18
  166. package/src/components/Popover/PopoverBody.vue +0 -11
  167. package/src/components/Popover/PopoverTrigger.vue +0 -9
  168. package/src/components/Popover/README.md +0 -79
  169. package/src/components/Popover/index.ts +0 -3
  170. package/src/components/Popper/Popper.vue +0 -91
  171. package/src/components/Popper/PopperBody.vue +0 -19
  172. package/src/components/Popper/PopperTrigger.vue +0 -14
  173. package/src/components/Popper/README.md +0 -42
  174. package/src/components/Popper/index.ts +0 -3
  175. package/src/components/ProgressBar/ProgressBar.vue +0 -51
  176. package/src/components/ProgressBar/ProgressBarIndicator.vue +0 -7
  177. package/src/components/ProgressBar/README.md +0 -98
  178. package/src/components/ProgressBar/index.ts +0 -2
  179. package/src/components/RadioButton/README.md +0 -111
  180. package/src/components/RadioButton/RadioButton.vue +0 -49
  181. package/src/components/RadioButton/index.ts +0 -1
  182. package/src/components/ResourceList/README.md +0 -160
  183. package/src/components/ResourceList/ResourceList.vue +0 -7
  184. package/src/components/ResourceList/ResourceListItem.vue +0 -7
  185. package/src/components/ResourceList/ResourceListItemContent.vue +0 -7
  186. package/src/components/ResourceList/index.ts +0 -3
  187. package/src/components/Select/README.md +0 -74
  188. package/src/components/Select/Select.vue +0 -91
  189. package/src/components/Select/SelectGroup.vue +0 -12
  190. package/src/components/Select/SelectOption.vue +0 -12
  191. package/src/components/Select/index.ts +0 -3
  192. package/src/components/Separator/README.md +0 -39
  193. package/src/components/Separator/Separator.vue +0 -24
  194. package/src/components/Separator/index.ts +0 -1
  195. package/src/components/Spinner/README.md +0 -53
  196. package/src/components/Spinner/Spinner.vue +0 -64
  197. package/src/components/Spinner/index.ts +0 -1
  198. package/src/components/StatusIndicator/README.md +0 -51
  199. package/src/components/StatusIndicator/StatusIndicator.vue +0 -44
  200. package/src/components/StatusIndicator/index.ts +0 -1
  201. package/src/components/Stepper/README.md +0 -38
  202. package/src/components/Stepper/Stepper.vue +0 -104
  203. package/src/components/Stepper/index.ts +0 -1
  204. package/src/components/Tabs/README.md +0 -53
  205. package/src/components/Tabs/TabTrigger.vue +0 -44
  206. package/src/components/Tabs/Tabs.vue +0 -16
  207. package/src/components/Tabs/index.ts +0 -2
  208. package/src/components/Tag/README.md +0 -27
  209. package/src/components/Tag/Tag.vue +0 -45
  210. package/src/components/Tag/index.ts +0 -1
  211. package/src/components/TextField/README.md +0 -335
  212. package/src/components/TextField/TextField.vue +0 -135
  213. package/src/components/TextField/TextFieldIcon.vue +0 -19
  214. package/src/components/TextField/TextFieldPasswordIcon.vue +0 -28
  215. package/src/components/TextField/TextFieldSearchIcon.vue +0 -11
  216. package/src/components/TextField/index.ts +0 -1
  217. package/src/components/TextStyle/README.md +0 -39
  218. package/src/components/TextStyle/TextStyle.vue +0 -24
  219. package/src/components/TextStyle/index.ts +0 -1
  220. package/src/components/Toast/DismissToastAction.vue +0 -34
  221. package/src/components/Toast/README.md +0 -167
  222. package/src/components/Toast/Toast.vue +0 -39
  223. package/src/components/Toast/ToastGroup.vue +0 -9
  224. package/src/components/Toast/index.ts +0 -2
  225. package/src/components/Toggle/README.md +0 -66
  226. package/src/components/Toggle/Toggle.vue +0 -89
  227. package/src/components/Toggle/index.ts +0 -1
  228. package/src/components/Tooltip/README.md +0 -51
  229. package/src/components/Tooltip/Tooltip.vue +0 -24
  230. package/src/components/Tooltip/index.ts +0 -1
  231. package/src/components/TopBar/README.md +0 -43
  232. package/src/components/TopBar/TopBar.vue +0 -7
  233. package/src/components/TopBar/TopBarLogo.vue +0 -8
  234. package/src/components/TopBar/TopBarNavigation.vue +0 -7
  235. package/src/components/TopBar/TopBarNavigationItem.vue +0 -13
  236. package/src/components/TopBar/TopBarSearch.vue +0 -15
  237. package/src/components/TopBar/TopBarUserMenu.vue +0 -20
  238. package/src/components/TopBar/index.ts +0 -6
  239. package/src/components/VisuallyHidden/README.md +0 -19
  240. package/src/components/VisuallyHidden/VisuallyHidden.vue +0 -25
  241. package/src/components/VisuallyHidden/index.ts +0 -1
  242. package/src/components/index.ts +0 -197
  243. package/src/components/types.ts +0 -5
  244. package/src/composables/index.ts +0 -7
  245. package/src/composables/useTailwindColor.ts +0 -17
  246. package/src/composables/useTheme.ts +0 -41
  247. package/src/composables/useToastNotifications.ts +0 -55
  248. package/src/composables/useUniqueId.ts +0 -6
  249. package/src/index.css +0 -24
  250. package/src/index.ts +0 -1
@@ -1,91 +0,0 @@
1
- <script lang="ts" setup>
2
- import { useUniqueId } from '../../composables';
3
- import { onMounted, provide, ref } from 'vue';
4
- import { type ReferenceElement, computePosition, flip, shift, offset, Placement } from '@floating-ui/vue';
5
- import { onClickOutside } from '@vueuse/core';
6
-
7
- const props = defineProps<{
8
- /** The trigger event of the popper */
9
- trigger: 'click' | 'hover';
10
-
11
- /** The placement of the popper */
12
- placement: Placement;
13
- }>();
14
-
15
- const popperBodyId = useUniqueId('popperBody');
16
- const popperTriggerId = useUniqueId('popperTrigger');
17
-
18
- const popperBodyVisible = ref(false);
19
-
20
- const $popperWrapper = ref<HTMLElement>()!;
21
- const $popperTrigger = ref<HTMLElement>();
22
- const $popperBody = ref<HTMLElement>();
23
-
24
- provide('popperBodyId', popperBodyId);
25
- provide('popperTriggerId', popperTriggerId);
26
- provide('popperBodyVisible', popperBodyVisible);
27
-
28
- function computePopperPosition(): void {
29
- computePosition($popperTrigger.value as ReferenceElement, $popperBody.value!, {
30
- placement: props.placement,
31
- middleware: [
32
- offset(6),
33
- flip(),
34
- shift({
35
- padding: 5,
36
- }),
37
- ],
38
- }).then(({ x, y }: { x: number; y: number }): void => {
39
- Object.assign($popperBody.value!.style, {
40
- left: `${x}px`,
41
- top: `${y}px`,
42
- });
43
- });
44
- }
45
-
46
- function showPopperContent(): void {
47
- popperBodyVisible.value = true;
48
-
49
- computePopperPosition();
50
- }
51
-
52
- function hidePopperContent(): void {
53
- popperBodyVisible.value = false;
54
- }
55
-
56
- function handleHoverPopper(): void {
57
- $popperTrigger.value!.addEventListener('mouseenter', showPopperContent);
58
- $popperTrigger.value!.addEventListener('mouseleave', hidePopperContent);
59
- }
60
-
61
- function handleClickPopper(): void {
62
- $popperTrigger.value!.addEventListener('click', (): void => {
63
- popperBodyVisible.value
64
- ? hidePopperContent()
65
- : showPopperContent();
66
- });
67
- }
68
-
69
- onMounted((): void => {
70
- $popperTrigger.value = document.getElementById(popperTriggerId)!;
71
- $popperBody.value = document.getElementById(popperBodyId)!;
72
-
73
- onClickOutside($popperWrapper, (): void => {
74
- hidePopperContent();
75
- });
76
-
77
- if (props.trigger === 'hover') {
78
- handleHoverPopper();
79
- }
80
-
81
- if (props.trigger === 'click') {
82
- handleClickPopper();
83
- }
84
- });
85
- </script>
86
-
87
- <template>
88
- <span ref="$popperWrapper">
89
- <slot />
90
- </span>
91
- </template>
@@ -1,19 +0,0 @@
1
- <script lang="ts" setup>
2
- import { inject } from 'vue';
3
-
4
- const popperBodyId = inject<string>('popperBodyId');
5
- const popperBodyVisible = inject<boolean>('popperBodyVisible');
6
- </script>
7
-
8
- <template>
9
- <div
10
- :id="popperBodyId"
11
- class="absolute"
12
- :class="{
13
- 'hidden': !popperBodyVisible,
14
- 'block': popperBodyVisible,
15
- }"
16
- >
17
- <slot />
18
- </div>
19
- </template>
@@ -1,14 +0,0 @@
1
- <script lang="ts" setup>
2
- import { inject } from 'vue';
3
-
4
- const popperTriggerId = inject<string>('popperTriggerId');
5
- </script>
6
-
7
- <template>
8
- <span
9
- :id="popperTriggerId"
10
- class="inline-block"
11
- >
12
- <slot />
13
- </span>
14
- </template>
@@ -1,42 +0,0 @@
1
- <script lang="ts" setup>
2
- import {
3
- Button,
4
- PopperBody,
5
- Popper,
6
- PopperTrigger,
7
- } from '../../src/components';
8
- import api from '../component-meta/Popper.json';
9
- </script>
10
-
11
- # Popper (internal)
12
-
13
- This component is used to create a popper component that can be triggered by a click or hover event. The popper component
14
- is used for components like tooltips, dropdowns, and popovers.
15
-
16
- <ComponentApi :api="api" />
17
-
18
- ## Click
19
-
20
- <ComponentWrapper>
21
- <Popper trigger="click">
22
- <PopperTrigger>
23
- <Button>Popper trigger</Button>
24
- </PopperTrigger>
25
- <PopperBody>
26
- Tooltip
27
- </PopperBody>
28
- </Popper>
29
- </ComponentWrapper>
30
-
31
- ## Hover
32
-
33
- <ComponentWrapper>
34
- <Popper trigger="hover">
35
- <PopperTrigger>
36
- <Button>Popper trigger</Button>
37
- </PopperTrigger>
38
- <PopperBody>
39
- Tooltip
40
- </PopperBody>
41
- </Popper>
42
- </ComponentWrapper>
@@ -1,3 +0,0 @@
1
- export { default as PopperBody } from './PopperBody.vue';
2
- export { default as Popper } from './Popper.vue';
3
- export { default as PopperTrigger } from './PopperTrigger.vue';
@@ -1,51 +0,0 @@
1
- <script lang="ts" setup>
2
- import { VisuallyHidden } from '../VisuallyHidden';
3
- import { TailwindColor, useTailwindColor } from '../../composables';
4
- import { computed } from 'vue';
5
-
6
- const props = withDefaults(defineProps<{
7
- /** The color of the progress-bar. */
8
- color?: TailwindColor;
9
-
10
- /** The value of the progress bar. */
11
- value: number;
12
-
13
- /** The position of the indicator relative to the progress bar. */
14
- indicatorPosition?: 'above' | 'below' | null;
15
- }>(), {
16
- color: 'slate',
17
- indicatorPosition: null,
18
- });
19
-
20
- const foregroundColor = computed((): string => {
21
- return useTailwindColor(props.color, '500');
22
- });
23
- </script>
24
-
25
- <template>
26
- <div
27
- class="space-y-2"
28
- role="progressbar"
29
- >
30
- <slot v-if="!!$slots.default && indicatorPosition === 'above'" />
31
-
32
- <VisuallyHidden>
33
- <progress
34
- :value="value"
35
- max="100"
36
- />
37
- </VisuallyHidden>
38
-
39
- <div class="bg-slate-300 rounded h-2 overflow-hidden">
40
- <div
41
- class="h-full rounded"
42
- :style="{
43
- width: `${value}%`,
44
- backgroundColor: foregroundColor,
45
- }"
46
- />
47
- </div>
48
-
49
- <slot v-if="!!$slots.default && indicatorPosition === 'below'" />
50
- </div>
51
- </template>
@@ -1,7 +0,0 @@
1
- <script lang="ts" setup></script>
2
-
3
- <template>
4
- <div>
5
- <slot />
6
- </div>
7
- </template>
@@ -1,98 +0,0 @@
1
- <script lang="ts" setup>
2
- import { ProgressBar, ProgressBarIndicator } from '../../src/components';
3
- import api from '../component-meta/ProgressBar.json';
4
- </script>
5
-
6
- # Progress bar
7
-
8
- The progress component is used to visually represent the completion of a task or operation. It shows how much of the
9
- task has been completed and how much is still left.
10
-
11
- <ComponentApi :api="api" />
12
-
13
- ## Usage
14
-
15
- <ComponentWrapper>
16
- <ProgressBar :value="33" />
17
- </ComponentWrapper>
18
-
19
- ```js-vue
20
- <script lang="ts" setup>
21
- import { ProgressBar } from 'focus-ui';
22
- </script>
23
-
24
- <template>
25
- <ProgressBar :value="33" />
26
- </template>
27
- ```
28
-
29
- ### With progress indicator above
30
-
31
- Using the `indicator-position` prop, you can position the progress indicator above or below the progress bar.
32
-
33
- <ComponentWrapper>
34
- <ProgressBar :value="33" indicator-position="above">
35
- <ProgressBarIndicator align="right">33% completed</ProgressBarIndicator>
36
- </ProgressBar>
37
- </ComponentWrapper>
38
-
39
- ```js-vue
40
- <script lang="ts" setup>
41
- import { ProgressBar, ProgressBarIndicator } from 'focus-ui';
42
- </script>
43
-
44
- <template>
45
- <ProgressBar :value="33" indicator-position="above">
46
- <ProgressBarIndicator align="right">33% completed</ProgressBarIndicator>
47
- </ProgressBar>
48
- </template>
49
- ```
50
-
51
- ### With progress indicator below
52
-
53
- <ComponentWrapper>
54
- <ProgressBar :value="33" indicator-position="below">
55
- <ProgressBarIndicator align="right">33% completed</ProgressBarIndicator>
56
- </ProgressBar>
57
- </ComponentWrapper>
58
-
59
- ```js-vue
60
- <script lang="ts" setup>
61
- import { ProgressBar, ProgressBarIndicator } from 'focus-ui';
62
- </script>
63
-
64
- <template>
65
- <ProgressBar :value="33" indicator-position="below">
66
- <ProgressBarIndicator align="right">33% completed</ProgressBarIndicator>
67
- </ProgressBar>
68
- </template>
69
- ```
70
-
71
- ### Progress indicator alignment
72
-
73
- Using the `align` prop, you can align the progress indicator to the left, center, or right.
74
-
75
- <ComponentWrapper>
76
- <ProgressBar :value="33" indicator-position="below">
77
- <ProgressBarIndicator align="left">33% completed</ProgressBarIndicator>
78
- </ProgressBar>
79
- </ComponentWrapper>
80
-
81
- ```js-vue
82
- <script lang="ts" setup>
83
- import { ProgressBar, ProgressBarIndicator } from 'focus-ui';
84
- </script>
85
-
86
- <template>
87
- <ProgressBar :value="33" indicator-position="below">
88
- <ProgressBarIndicator align="left">33% completed</ProgressBarIndicator>
89
- </ProgressBar>
90
- </template>
91
- ```
92
-
93
- ## Best practices
94
-
95
- Progress components should:
96
-
97
- - Give users an indication of how much of the task has completed and how much is left.
98
- - Not be used for entire page loads. In this case, use the `Skeleton page` component.
@@ -1,2 +0,0 @@
1
- export { default as ProgressBar } from './ProgressBar.vue';
2
- export { default as ProgressBarIndicator } from './ProgressBarIndicator.vue';
@@ -1,111 +0,0 @@
1
- <script lang="ts" setup>
2
- import { FormLayout, RadioButton } from '../../src/components';
3
- import api from '../component-meta/RadioButton.json';
4
- import { ref } from "vue";
5
-
6
- const test = ref<string | null>(null);
7
- </script>
8
-
9
- # Radio button
10
-
11
- Use radio buttons to present each item in a list of options where users must make a single selection.
12
-
13
- <ComponentApi :api="api" />
14
-
15
- ## Usage
16
-
17
- <ComponentWrapper>
18
- <FormLayout>
19
- <RadioButton
20
- v-model="test"
21
- value="comments"
22
- label="Comments"
23
- help-text="Get notified when someones posts a comment on a posting." />
24
- <RadioButton
25
- v-model="test"
26
- value="candidates"
27
- label="Candidates"
28
- help-text="Get notified when a candidate applies for a job." />
29
- <RadioButton
30
- v-model="test"
31
- value="offers"
32
- label="Offers"
33
- help-text="Get notified when a candidate accepts or rejects an offer." />
34
- </FormLayout>
35
- <pre class="mt-4">{{ test }}</pre>
36
- </ComponentWrapper>
37
-
38
- ```js-vue
39
- <script lang="ts" setup>
40
- import { RadioButton } from '@returnless/focus-ui';
41
-
42
- const radioButtonModel = ref<string | null>(null);
43
- </script>
44
-
45
- <template>
46
- <FormLayout>
47
- <RadioButton
48
- v-model="radioButtonModel"
49
- value="comments"
50
- label="Comments"
51
- help-text="Get notified when someones posts a comment on a posting." />
52
- <RadioButton
53
- v-model="radioButtonModel"
54
- value="candidates"
55
- label="Candidates"
56
- help-text="Get notified when a candidate applies for a job." />
57
- <RadioButton
58
- v-model="radioButtonModel"
59
- value="offers"
60
- label="Offers"
61
- help-text="Get notified when a candidate accepts or rejects an offer." />
62
- </FormLayout>
63
- <pre class="mt-4">{{ radioButtonModel }}</pre>
64
- </template>
65
- ```
66
-
67
- ## Best practices
68
-
69
- Radio buttons should:
70
-
71
- - Always be used with an associated label component.
72
- - Be part of list of radio buttons that:
73
- - Include at least two or more choices.
74
- - Are used to have users select only one option from a list of options.
75
- - Include mutually exclusive options - this means that each option must be independent of every other option in the
76
- list. For example: Red, Blue, Green, and Yellow are mutually exclusive. Read, blue, yellow, red/blue are not
77
- mutually exclusive.
78
- - List options in a rational order that makes logical sense.
79
- - Have a default option selected whenever possible.
80
-
81
- ## Content guidelines
82
-
83
- ### Radio button labels
84
-
85
- Radio button labels should:
86
-
87
- - Be introduced with a colon or a heading.
88
- - Start with a capital letter.
89
- - Not end in punctuation if it's a single sentence, word, or a fragment.
90
-
91
- ## Accessibility
92
-
93
- Screen readers convey the state of the radio button automatically.
94
-
95
- - Use the `disabled` prop to apply the HTML `disabled` attribute to the radio button `<input>`. This prevents users
96
- from being able to interact with the radio button, and conveys its inactive state to assistive technologies.
97
- - Use the `id` prop to provide a unique `id` attribute value for the radio button. If an `id` isn't provided, then
98
- the component generates one. All radio buttons must have unique `id` values to work correctly with assistive
99
- technologies.
100
-
101
- ### Labelling
102
-
103
- - The required `label` prop conveys the purpose of the radio button to all users.
104
- - Use the `labelHidden` prop to visually hide the label but make it available to assistive technologies.
105
- - When you provide help text via the `helpText` prop or an inline error message via the `error` prop, the help or
106
- error content is conveyed to screen reader users with the `aria-describedBy` attribute.
107
-
108
- ### Keyboard support
109
-
110
- - Move focus to the radio button group using the tab key (or shift + tab when tabbing backwards).
111
- - Use the up and down arrow keys to change which radio button is selected.
@@ -1,49 +0,0 @@
1
- <script lang="ts" setup>
2
- import { InputLabel } from '../InputLabel';
3
- import { useTheme, useUniqueId } from '../../composables';
4
- import { TextStyle } from '../TextStyle';
5
-
6
- const props = withDefaults(defineProps<{
7
- /** The help text to display with the radioButton. */
8
- helpText?: string | null;
9
-
10
- /** The ID of the radioButton. */
11
- id?: string | null;
12
-
13
- /** The label for the radioButton. */
14
- label: string;
15
-
16
- /** The value of the radioButton. */
17
- value: any;
18
- }>(), {
19
- id: null,
20
- helpText: null,
21
- });
22
-
23
- const model = defineModel<boolean>();
24
-
25
- const elementId = props.id || useUniqueId('radioButton');
26
- </script>
27
-
28
- <template>
29
- <div class="flex items-start space-x-2">
30
- <input
31
- :id="elementId"
32
- v-model="model"
33
- :class="useTheme('focus')"
34
- :value="value"
35
- class="h-4 w-4 flex-shrink-0 appearance-none rounded-full border border-slate-400 bg-white shadow-sm text-brand-500"
36
- type="radio"
37
- >
38
- <div class="-mt-[2px] space-y-1">
39
- <InputLabel
40
- :label="label"
41
- :label-for="elementId"
42
- />
43
-
44
- <TextStyle variant="subdued">
45
- {{ helpText }}
46
- </TextStyle>
47
- </div>
48
- </div>
49
- </template>
@@ -1 +0,0 @@
1
- export { default as RadioButton } from './RadioButton.vue';
@@ -1,160 +0,0 @@
1
- <script lang="ts" setup>
2
- import {
3
- Avatar,
4
- Button,
5
- Card,
6
- CardSection,
7
- CardHelp,
8
- CardHeader,
9
- CardTitle,
10
- CardFooter,
11
- CardDescription,
12
- ResourceList,
13
- ResourceListItem,
14
- ResourceListItemContent,
15
- TextStyle,
16
- StatusIndicator,
17
- } from '../../src/components';
18
- import api from '../component-meta/ResourceList.json';
19
- </script>
20
-
21
- # Resource List
22
-
23
- A resource list displays a collection of objects of the same type, like products or customers. The main job of a
24
- resource list is to help users find an object and navigate to a full-page representation of it or open a modal to
25
- view more details.
26
-
27
- <ComponentApi :api="api" />
28
-
29
- ## Examples
30
-
31
- ### List of available orders
32
-
33
- <ComponentWrapper>
34
- <div style="width: 400px;">
35
- <Card>
36
- <CardHeader>
37
- <CardTitle>
38
- Orders
39
- <CardHelp href="/help">Learn more</CardHelp>
40
- </CardTitle>
41
- </CardHeader>
42
- <CardSection flush>
43
- <ResourceList>
44
- <ResourceListItem>
45
- <Avatar
46
- initials="Shopify"
47
- size="md"
48
- source="https://assets.returnless.co/f905e00c-366c-45be-9114-65d29e832027/img/integrations/shopify-plus-logo.svg"
49
- />
50
- <ResourceListItemContent>
51
- <TextStyle variant="strong">
52
- 6246980452684
53
- </TextStyle>
54
- <p>
55
- <TextStyle variant="subdued">
56
- 2024-06-23 10:11:12
57
- </TextStyle>
58
- </p>
59
- </ResourceListItemContent>
60
- </ResourceListItem>
61
- <ResourceListItem>
62
- <Avatar
63
- initials="WICS"
64
- size="md"
65
- source="https://assets.returnless.co/f905e00c-366c-45be-9114-65d29e832027/img/integrations/shopify-logo.svg"
66
- />
67
- <ResourceListItemContent>
68
- <TextStyle variant="strong">
69
- 1273329
70
- </TextStyle>
71
- <p>
72
- <TextStyle variant="subdued">
73
- 2024-06-23 10:11:12
74
- </TextStyle>
75
- </p>
76
- </ResourceListItemContent>
77
- </ResourceListItem>
78
- </ResourceList>
79
- </CardSection>
80
- </Card>
81
- </div>
82
- </ComponentWrapper>
83
-
84
- ### List of active shipments
85
-
86
- <ComponentWrapper>
87
- <div style="width: 400px;">
88
- <Card>
89
- <CardHeader>
90
- <CardTitle>
91
- Shipments
92
- <CardHelp href="/help">Learn more</CardHelp>
93
- </CardTitle>
94
- </CardHeader>
95
- <CardSection flush>
96
- <ResourceList>
97
- <ResourceListItem>
98
- <Avatar
99
- initials="DHL"
100
- size="md"
101
- source="https://assets.returnless.co/f905e00c-366c-45be-9114-65d29e832027/img/carriers/dhl.svg"
102
- />
103
- <ResourceListItemContent>
104
- <StatusIndicator color="slate">Announced</StatusIndicator>
105
- <p class="text-xs">
106
- <TextStyle variant="subdued">
107
- DHLForYou Drop Off
108
- </TextStyle>
109
- </p>
110
- </ResourceListItemContent>
111
- </ResourceListItem>
112
- <ResourceListItem>
113
- <Avatar
114
- initials="DHL"
115
- size="md"
116
- source="https://assets.returnless.co/f905e00c-366c-45be-9114-65d29e832027/img/carriers/dhl.svg"
117
- />
118
- <ResourceListItemContent>
119
- <StatusIndicator color="blue">En-route</StatusIndicator>
120
- <p class="text-xs">
121
- <TextStyle variant="subdued">
122
- DHLForYou Drop Off
123
- </TextStyle>
124
- </p>
125
- </ResourceListItemContent>
126
- </ResourceListItem>
127
- <ResourceListItem>
128
- <Avatar
129
- initials="DHL"
130
- size="md"
131
- source="https://assets.returnless.co/f905e00c-366c-45be-9114-65d29e832027/img/carriers/dhl.svg"
132
- />
133
- <ResourceListItemContent>
134
- <StatusIndicator color="green">Dropped-off</StatusIndicator>
135
- <p class="text-xs">
136
- <TextStyle variant="subdued">
137
- DHLForYou Drop Off
138
- </TextStyle>
139
- </p>
140
- </ResourceListItemContent>
141
- </ResourceListItem>
142
- </ResourceList>
143
- </CardSection>
144
- <CardFooter>
145
- <Button variant="secondary">Create new shipment</Button>
146
- </CardFooter>
147
- </Card>
148
- </div>
149
- </ComponentWrapper>
150
-
151
- ## Best practices
152
-
153
- Resource list can live in many places in Returnless. You could include a short resource list in a card summarizing
154
- recent orders, or you could also dedicate a full page to a resource list of all orders. Here are some best practices:
155
-
156
- Resource lists should:
157
-
158
- - Have items that perform an action when clicked. The action should navigate to the resource's details page or
159
- otherwise provide more detail about the item.
160
- - Customize the content and layout of their ist items to support users' needs.
@@ -1,7 +0,0 @@
1
- <script lang="ts" setup></script>
2
-
3
- <template>
4
- <ul aria-live="polite">
5
- <slot />
6
- </ul>
7
- </template>
@@ -1,7 +0,0 @@
1
- <script lang="ts" setup></script>
2
-
3
- <template>
4
- <li class="flex items-center space-x-4 hover:bg-slate-100 px-6 py-3 cursor-pointer">
5
- <slot />
6
- </li>
7
- </template>
@@ -1,7 +0,0 @@
1
- <script lang="ts" setup></script>
2
-
3
- <template>
4
- <div>
5
- <slot />
6
- </div>
7
- </template>