@privyid/persona 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/components/breadcrumbs/Breadcrumb.vue +60 -0
  2. package/dist/components/breadcrumbs/Breadcrumb.vue.d.ts +41 -0
  3. package/dist/components/breadcrumbs/BreadcrumbItem.vue +86 -0
  4. package/dist/components/breadcrumbs/BreadcrumbItem.vue.d.ts +28 -0
  5. package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue +65 -0
  6. package/dist/components/breadcrumbs/BreadcrumbItemDropdown.vue.d.ts +25 -0
  7. package/dist/components/breadcrumbs/index.d.ts +11 -0
  8. package/dist/components/breadcrumbs/index.mjs +3 -0
  9. package/dist/components/button/Button.vue +22 -6
  10. package/dist/components/button/Button.vue.d.ts +11 -1
  11. package/dist/components/button/index.d.ts +1 -0
  12. package/dist/components/button-group/ButtonGroup.vue +4 -4
  13. package/dist/components/camera/Camera.vue +1 -1
  14. package/dist/components/card/Card.vue +1 -1
  15. package/dist/components/checkbox/Checkbox.vue +1 -1
  16. package/dist/components/divider/Divider.vue +5 -1
  17. package/dist/components/dropdown/Dropdown.vue +5 -5
  18. package/dist/components/dropdown/Dropdown.vue.d.ts +1 -1
  19. package/dist/components/dropdown/DropdownItem.vue +45 -6
  20. package/dist/components/dropdown/DropdownItem.vue.d.ts +21 -0
  21. package/dist/components/input/Input.vue +3 -3
  22. package/dist/components/input/Input.vue.d.ts +1 -1
  23. package/dist/components/input-file/InputFile.vue +29 -4
  24. package/dist/components/input-file/InputFile.vue.d.ts +17 -2
  25. package/dist/components/label/Label.vue +3 -3
  26. package/dist/components/label/Label.vue.d.ts +1 -1
  27. package/dist/components/{app/App.vue → main/Main.vue} +25 -10
  28. package/dist/components/modal/Modal.vue +1 -1
  29. package/dist/components/modal/Modal.vue.d.ts +1 -1
  30. package/dist/components/nav/NavItem.vue.d.ts +2 -2
  31. package/dist/components/navbar/Navbar.vue +1 -1
  32. package/dist/components/navbar/NavbarNav.vue +7 -1
  33. package/dist/components/page/Page.vue +101 -0
  34. package/dist/components/page/Page.vue.d.ts +39 -0
  35. package/dist/components/pdf-helipad/PdfHelipad.vue +134 -0
  36. package/dist/components/pdf-helipad/PdfHelipad.vue.d.ts +45 -0
  37. package/dist/components/pdf-helipad/assets/helicopter.svg +1 -0
  38. package/dist/components/pdf-helipad/index.d.ts +7 -0
  39. package/dist/components/pdf-helipad/index.mjs +0 -0
  40. package/dist/components/pdf-helipad/utils/use-drag.d.ts +8 -0
  41. package/dist/components/pdf-helipad/utils/use-drag.mjs +38 -0
  42. package/dist/components/pdf-object/PdfObjects.vue +1 -0
  43. package/dist/components/pdf-object/utils/use-drop.mjs +1 -1
  44. package/dist/components/pdf-text/PdfText.vue +129 -0
  45. package/dist/components/pdf-text/PdfText.vue.d.ts +168 -0
  46. package/dist/components/pdf-text/utils/text-to-image.d.ts +68 -0
  47. package/dist/components/pdf-text/utils/text-to-image.mjs +118 -0
  48. package/dist/components/pdf-viewer/PdfError.vue +4 -1
  49. package/dist/components/pdf-viewer/PdfLoading.vue +1 -1
  50. package/dist/components/pdf-viewer/PdfViewer.vue +44 -21
  51. package/dist/components/pdf-viewer/PdfViewer.vue.d.ts +24 -3
  52. package/dist/components/pdf-viewer/assets/pdf-loading.svg +1 -85
  53. package/dist/components/pdf-viewer/utils/use-viewer.d.ts +1 -0
  54. package/dist/components/pdf-viewer/utils/use-viewer.mjs +6 -2
  55. package/dist/components/progress/ProgressItem.vue.d.ts +1 -1
  56. package/dist/components/radio/Radio.vue +1 -1
  57. package/dist/components/sidebar/Sidebar.vue +72 -1
  58. package/dist/components/sidebar/Sidebar.vue.d.ts +23 -2
  59. package/dist/components/sidebar-menu/SidebarMenu.vue +5 -0
  60. package/dist/components/sidebar-menu/SidebarMenu.vue.d.ts +10 -0
  61. package/dist/components/signature-text/SignatureText.vue.d.ts +1 -1
  62. package/dist/components/table/Table.vue +14 -6
  63. package/dist/components/table/Table.vue.d.ts +1 -1
  64. package/dist/components/toggle/Toggle.vue +11 -3
  65. package/dist/components/tour/TourDialog.vue.d.ts +1 -1
  66. package/dist/components/tour/TourHighlight.vue +1 -1
  67. package/dist/core/index.d.ts +3 -1
  68. package/dist/core/index.mjs +4 -1
  69. package/dist/module.json +1 -1
  70. package/dist/module.mjs +3 -1
  71. package/package.json +19 -8
@@ -0,0 +1,60 @@
1
+ <template>
2
+ <ul
3
+ class="breadcrumbs"
4
+ data-testid="breadcrumbs">
5
+ <slot>
6
+ <template
7
+ v-for="(item, id) in items"
8
+ :key="id">
9
+ <BreadcrumbItemDropdown
10
+ v-if="item.subitem"
11
+ :text="item.text"
12
+ :active="item.active"
13
+ :href="item.href">
14
+ <template
15
+ v-for="(subitem, idx) in item.subitem"
16
+ :key="idx">
17
+ <DropdownItem
18
+ :active="subitem.active"
19
+ :href="subitem.href">
20
+ {{ subitem.text }}
21
+ </DropdownItem>
22
+ </template>
23
+ </BreadcrumbItemDropdown>
24
+ <BreadcrumbItem
25
+ v-else
26
+ :active="item.active"
27
+ :href="item.href">
28
+ {{ item.text }}
29
+ </BreadcrumbItem>
30
+ </template>
31
+ </slot>
32
+ </ul>
33
+ </template>
34
+
35
+ <script>
36
+ import { defineComponent } from "vue-demi";
37
+ import BreadcrumbItem from "./BreadcrumbItem.vue";
38
+ import BreadcrumbItemDropdown from "./BreadcrumbItemDropdown.vue";
39
+ import DropdownItem from "../dropdown/DropdownItem.vue";
40
+ export default defineComponent({
41
+ components: {
42
+ BreadcrumbItem,
43
+ BreadcrumbItemDropdown,
44
+ DropdownItem
45
+ },
46
+ props: {
47
+ items: {
48
+ type: Array,
49
+ default: () => {
50
+ }
51
+ }
52
+ }
53
+ });
54
+ </script>
55
+
56
+ <style lang="postcss">
57
+ .breadcrumbs {
58
+ @apply flex space-x-3 items-center;
59
+ }
60
+ </style>
@@ -0,0 +1,41 @@
1
+ import { BreadcrumbItems } from '.';
2
+ declare const _default: import("vue-demi").DefineComponent<{
3
+ items: {
4
+ type: {
5
+ (arrayLength: number): BreadcrumbItems[];
6
+ (...items: BreadcrumbItems[]): BreadcrumbItems[];
7
+ new (arrayLength: number): BreadcrumbItems[];
8
+ new (...items: BreadcrumbItems[]): BreadcrumbItems[];
9
+ isArray(arg: any): arg is any[];
10
+ readonly prototype: any[];
11
+ from<T>(arrayLike: ArrayLike<T>): T[];
12
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
13
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
14
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
15
+ of<T_4>(...items: T_4[]): T_4[];
16
+ readonly [Symbol.species]: ArrayConstructor;
17
+ };
18
+ default: () => void;
19
+ };
20
+ }, unknown, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
21
+ items: {
22
+ type: {
23
+ (arrayLength: number): BreadcrumbItems[];
24
+ (...items: BreadcrumbItems[]): BreadcrumbItems[];
25
+ new (arrayLength: number): BreadcrumbItems[];
26
+ new (...items: BreadcrumbItems[]): BreadcrumbItems[];
27
+ isArray(arg: any): arg is any[];
28
+ readonly prototype: any[];
29
+ from<T>(arrayLike: ArrayLike<T>): T[];
30
+ from<T_1, U>(arrayLike: ArrayLike<T_1>, mapfn: (v: T_1, k: number) => U, thisArg?: any): U[];
31
+ from<T_2>(iterable: Iterable<T_2> | ArrayLike<T_2>): T_2[];
32
+ from<T_3, U_1>(iterable: Iterable<T_3> | ArrayLike<T_3>, mapfn: (v: T_3, k: number) => U_1, thisArg?: any): U_1[];
33
+ of<T_4>(...items: T_4[]): T_4[];
34
+ readonly [Symbol.species]: ArrayConstructor;
35
+ };
36
+ default: () => void;
37
+ };
38
+ }>>, {
39
+ items: BreadcrumbItems[];
40
+ }>;
41
+ export default _default;
@@ -0,0 +1,86 @@
1
+ <template>
2
+ <li
3
+ data-testid="breadcrumbs-item"
4
+ class="breadcrumbs__item"
5
+ :class="classNames">
6
+ <component
7
+ :is="tagName"
8
+ :href="permalink">
9
+ <slot />
10
+ </component>
11
+ <IconChevron
12
+ v-if="!active"
13
+ data-testid="breadcrumbs-icon"
14
+ class="breadcrumbs__item__icon" />
15
+ </li>
16
+ </template>
17
+
18
+ <script>
19
+ import { defineComponent, computed } from "vue-demi";
20
+ import IconChevron from "@carbon/icons-vue/lib/chevron--right/16";
21
+ export default defineComponent({
22
+ components: { IconChevron },
23
+ props: {
24
+ href: {
25
+ type: String,
26
+ default: "#"
27
+ },
28
+ active: {
29
+ type: Boolean,
30
+ default: false
31
+ }
32
+ },
33
+ setup(props) {
34
+ const classNames = computed(() => {
35
+ const result = [""];
36
+ if (props.active)
37
+ result.push("breadcrumbs__item--active");
38
+ return result;
39
+ });
40
+ const tagName = computed(() => {
41
+ let tag = "a";
42
+ if (props.active)
43
+ tag = "span";
44
+ return tag;
45
+ });
46
+ const permalink = computed(() => {
47
+ if (props.active)
48
+ return;
49
+ return props.href;
50
+ });
51
+ return {
52
+ classNames,
53
+ tagName,
54
+ permalink
55
+ };
56
+ }
57
+ });
58
+ </script>
59
+
60
+ <style lang="postcss">
61
+ .breadcrumbs {
62
+ &__item {
63
+ @apply inline-flex text-sm items-center;
64
+
65
+ &:last-child {
66
+ & > .breadcrumbs__item__icon {
67
+ @apply hidden;
68
+ }
69
+ }
70
+
71
+ &:not(:last-child) {
72
+ & > .breadcrumbs__item__icon {
73
+ @apply inline-flex ml-3;
74
+ }
75
+ }
76
+
77
+ & > a {
78
+ @apply text-subtle cursor-pointer underline decoration-solid hover:no-underline;
79
+ }
80
+
81
+ & > span {
82
+ @apply font-bold cursor-default;
83
+ }
84
+ }
85
+ }
86
+ </style>
@@ -0,0 +1,28 @@
1
+ import { TagVariant } from '.';
2
+ declare const _default: import("vue-demi").DefineComponent<{
3
+ href: {
4
+ type: StringConstructor;
5
+ default: string;
6
+ };
7
+ active: {
8
+ type: BooleanConstructor;
9
+ default: boolean;
10
+ };
11
+ }, {
12
+ classNames: import("vue-demi").ComputedRef<string[]>;
13
+ tagName: import("vue-demi").ComputedRef<TagVariant>;
14
+ permalink: import("vue-demi").ComputedRef<string>;
15
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
16
+ href: {
17
+ type: StringConstructor;
18
+ default: string;
19
+ };
20
+ active: {
21
+ type: BooleanConstructor;
22
+ default: boolean;
23
+ };
24
+ }>>, {
25
+ href: string;
26
+ active: boolean;
27
+ }>;
28
+ export default _default;
@@ -0,0 +1,65 @@
1
+ <template>
2
+ <li
3
+ data-testid="breadcrumbs-dropdown"
4
+ class="breadcrumbs__item"
5
+ :class="classNames">
6
+ <Dropdown
7
+ :text="text"
8
+ placement="bottom-end"
9
+ size="xs">
10
+ <slot />
11
+ </Dropdown>
12
+ <IconChevron
13
+ v-if="!active"
14
+ data-testid="breadcrumbs-icon"
15
+ class="breadcrumbs__item__icon" />
16
+ </li>
17
+ </template>
18
+
19
+ <script>
20
+ import { defineComponent, computed } from "vue-demi";
21
+ import Dropdown from "../dropdown/Dropdown.vue";
22
+ import IconChevron from "@carbon/icons-vue/lib/chevron--right/16";
23
+ export default defineComponent({
24
+ components: { Dropdown, IconChevron },
25
+ props: {
26
+ text: {
27
+ type: String,
28
+ default: ""
29
+ },
30
+ active: {
31
+ type: Boolean,
32
+ default: false
33
+ }
34
+ },
35
+ setup(props) {
36
+ const classNames = computed(() => {
37
+ const result = ["breadcrumbs__item--dropdown"];
38
+ if (props.active)
39
+ result.push("breadcrumbs__item--active");
40
+ return result;
41
+ });
42
+ return { classNames };
43
+ }
44
+ });
45
+ </script>
46
+
47
+ <style lang="postcss">
48
+ .breadcrumbs__item {
49
+ &&--dropdown {
50
+ .dropdown__activator {
51
+ @apply px-0 text-subtle bg-transparent border-transparent hover:shadow-none hover:border-transparent hover:bg-transparent focus:shadow-none focus:border-transparent focus:bg-transparent;
52
+ }
53
+ }
54
+
55
+ &&--active {
56
+ .dropdown__activator {
57
+ @apply text-default;
58
+
59
+ & > .dropdown__caret {
60
+ @apply text-subtle;
61
+ }
62
+ }
63
+ }
64
+ }
65
+ </style>
@@ -0,0 +1,25 @@
1
+ declare const _default: import("vue-demi").DefineComponent<{
2
+ text: {
3
+ type: StringConstructor;
4
+ default: string;
5
+ };
6
+ active: {
7
+ type: BooleanConstructor;
8
+ default: boolean;
9
+ };
10
+ }, {
11
+ classNames: import("vue-demi").ComputedRef<string[]>;
12
+ }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
13
+ text: {
14
+ type: StringConstructor;
15
+ default: string;
16
+ };
17
+ active: {
18
+ type: BooleanConstructor;
19
+ default: boolean;
20
+ };
21
+ }>>, {
22
+ active: boolean;
23
+ text: string;
24
+ }>;
25
+ export default _default;
@@ -0,0 +1,11 @@
1
+ interface Breadcrumb {
2
+ text: string;
3
+ href?: string;
4
+ active?: boolean;
5
+ }
6
+ export interface BreadcrumbItems extends Breadcrumb {
7
+ subitem?: Breadcrumb[];
8
+ }
9
+ export declare type TagVariant = 'a' | 'span';
10
+ export declare function defineNavigation(navigation: BreadcrumbItems[]): BreadcrumbItems[];
11
+ export {};
@@ -0,0 +1,3 @@
1
+ export function defineNavigation(navigation) {
2
+ return navigation;
3
+ }
@@ -1,9 +1,11 @@
1
1
  <template>
2
- <button
2
+ <component
3
+ :is="tagName"
4
+ :href="href"
3
5
  data-testid="btn"
4
6
  :class="classNames">
5
7
  <slot />
6
- </button>
8
+ </component>
7
9
  </template>
8
10
 
9
11
  <script>
@@ -32,6 +34,10 @@ export default defineComponent({
32
34
  pill: {
33
35
  type: Boolean,
34
36
  default: false
37
+ },
38
+ href: {
39
+ type: String,
40
+ default: void 0
35
41
  }
36
42
  },
37
43
  setup(props) {
@@ -49,7 +55,13 @@ export default defineComponent({
49
55
  result.push("btn--pill");
50
56
  return result;
51
57
  });
52
- return { classNames };
58
+ const tagName = computed(() => {
59
+ let tag = "button";
60
+ if (props.href)
61
+ tag = "a";
62
+ return tag;
63
+ });
64
+ return { classNames, tagName };
53
65
  }
54
66
  });
55
67
  </script>
@@ -77,16 +89,20 @@ export default defineComponent({
77
89
  @apply self-center;
78
90
  }
79
91
 
92
+ > * {
93
+ @apply relative z-[2];
94
+ }
95
+
80
96
  /*
81
97
  * Button has 4 different sizing
82
98
  * eg: xs, sm, md, and lg
83
99
  */
84
100
  &&--xs {
85
- @apply px-2 py-[2px] gap-1 text-sm rounded-[6px];
101
+ @apply px-2 py-[2px] gap-1 text-sm rounded-xs;
86
102
  }
87
103
 
88
104
  &&--sm {
89
- @apply px-4 py-1 gap-2 text-base tracking-wider rounded-[7px];
105
+ @apply px-4 py-1 gap-2 text-base tracking-wider rounded-sm;
90
106
  }
91
107
 
92
108
  &&--md {
@@ -106,7 +122,7 @@ export default defineComponent({
106
122
 
107
123
  &.btn {
108
124
  &--default {
109
- @apply bg-default-alpha hover:bg-subtle-alpha focus:bg-subtle-alpha active:bg-subtle-alpha text-subtle hover:text-default focus:text-default;
125
+ @apply bg-default-alpha focus:bg-subtle-alpha active:bg-subtle-alpha text-subtle hover:text-default focus:text-default;
110
126
  }
111
127
 
112
128
  &--primary {
@@ -1,5 +1,5 @@
1
1
  import { PropType } from 'vue-demi';
2
- import { ColorVariant, SizeVariant, StyleVariant } from '.';
2
+ import { ColorVariant, SizeVariant, StyleVariant, TagVariant } from '.';
3
3
  declare const _default: import("vue-demi").DefineComponent<{
4
4
  variant: {
5
5
  type: PropType<StyleVariant>;
@@ -21,8 +21,13 @@ declare const _default: import("vue-demi").DefineComponent<{
21
21
  type: BooleanConstructor;
22
22
  default: boolean;
23
23
  };
24
+ href: {
25
+ type: StringConstructor;
26
+ default: any;
27
+ };
24
28
  }, {
25
29
  classNames: import("vue-demi").ComputedRef<string[]>;
30
+ tagName: import("vue-demi").ComputedRef<TagVariant>;
26
31
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
27
32
  variant: {
28
33
  type: PropType<StyleVariant>;
@@ -44,11 +49,16 @@ declare const _default: import("vue-demi").DefineComponent<{
44
49
  type: BooleanConstructor;
45
50
  default: boolean;
46
51
  };
52
+ href: {
53
+ type: StringConstructor;
54
+ default: any;
55
+ };
47
56
  }>>, {
48
57
  icon: boolean;
49
58
  variant: StyleVariant;
50
59
  size: SizeVariant;
51
60
  color: ColorVariant;
61
+ href: string;
52
62
  pill: boolean;
53
63
  }>;
54
64
  export default _default;
@@ -1,3 +1,4 @@
1
1
  export declare type StyleVariant = 'solid' | 'outline' | 'ghost' | 'link' | 'input';
2
2
  export declare type ColorVariant = 'default' | 'primary' | 'success' | 'warning' | 'danger';
3
3
  export declare type SizeVariant = 'xs' | 'sm' | 'md' | 'lg';
4
+ export declare type TagVariant = 'a' | 'button';
@@ -127,11 +127,11 @@ export default defineComponent({
127
127
  @apply px-2 py-[2px] gap-1 text-sm;
128
128
 
129
129
  &:first-child {
130
- @apply rounded-l-[6px];
130
+ @apply rounded-l-xs;
131
131
  }
132
132
 
133
133
  &:last-child {
134
- @apply rounded-r-[6px];
134
+ @apply rounded-r-xs;
135
135
  }
136
136
  }
137
137
 
@@ -148,11 +148,11 @@ export default defineComponent({
148
148
  @apply px-4 py-1 gap-2 text-base;
149
149
 
150
150
  &:first-child {
151
- @apply rounded-l-[7px];
151
+ @apply rounded-l-sm;
152
152
  }
153
153
 
154
154
  &:last-child {
155
- @apply rounded-r-[7px];
155
+ @apply rounded-r-sm;
156
156
  }
157
157
  }
158
158
 
@@ -376,7 +376,7 @@ export default defineComponent({
376
376
  @apply absolute bottom-20 left-0 right-0 text-center text-on-emphasis px-4;
377
377
 
378
378
  &-text {
379
- @apply bg-emphasis bg-opacity-80 px-4 py-1 text-sm rounded shadow-md inline-block max-w-full truncate;
379
+ @apply bg-emphasis/80 px-4 py-1 text-sm rounded shadow-md inline-block max-w-full truncate;
380
380
  }
381
381
  }
382
382
  }
@@ -203,7 +203,7 @@ export default defineComponent({
203
203
  * Card Callout is enable
204
204
  */
205
205
  &&--callout {
206
- @apply shadow;
206
+ @apply shadow-sm;
207
207
  }
208
208
 
209
209
  &__header {
@@ -152,7 +152,7 @@ export default defineComponent({
152
152
  * with custom icon
153
153
  */
154
154
  &__icon {
155
- @apply w-5 h-5 border rounded-sm border-subtle inline-flex items-center justify-center bg-default;
155
+ @apply w-5 h-5 border rounded-tn border-subtle inline-flex items-center justify-center bg-default;
156
156
 
157
157
  > svg {
158
158
  @apply w-3 fill-default;
@@ -30,7 +30,11 @@ export default defineComponent({
30
30
 
31
31
  <style lang="postcss">
32
32
  .divider {
33
- @apply bg-subtle-alpha my-2 w-[1px];
33
+ @apply bg-subtle-alpha my-2;
34
+
35
+ &&--horizontal {
36
+ @apply w-full h-[1px];
37
+ }
34
38
 
35
39
  &&--vertical,
36
40
  .input-group > & {
@@ -38,7 +38,7 @@
38
38
  class="dropdown__menu">
39
39
  <DropdownGroup
40
40
  ref="wizard"
41
- class="dropdown__menu-container">
41
+ class="dropdown__menu__container">
42
42
  <slot />
43
43
  </DropdownGroup>
44
44
  </div>
@@ -251,16 +251,16 @@ export default defineComponent({
251
251
  &__menu {
252
252
  @apply max-h-64 border rounded w-full min-w-[15rem] bg-default z-10 border-default shadow-xl overflow-x-hidden overflow-y-auto absolute;
253
253
 
254
- &-container {
254
+ &__container {
255
255
  > .dropdown__item {
256
256
  &:first-child,
257
257
  .dropdown__subitem:first-child & {
258
- @apply rounded-t-[7px];
258
+ @apply rounded-t-sm;
259
259
  }
260
260
 
261
261
  &:last-child,
262
262
  .dropdown__subitem:last-child & {
263
- @apply rounded-b-[7px];
263
+ @apply rounded-b-sm;
264
264
  }
265
265
  }
266
266
  }
@@ -273,7 +273,7 @@ export default defineComponent({
273
273
  &&--divider {
274
274
  .dropdown {
275
275
  &__menu {
276
- :where(.checkbox, .radio) {
276
+ :where(.checkbox, .radio, .dropdown__item) {
277
277
  @apply border-b border-solid border-b-subtle-alpha last:border-b-0;
278
278
  }
279
279
  }
@@ -106,10 +106,10 @@ declare const _default: import("vue-demi").DefineComponent<{
106
106
  variant: StyleVariant;
107
107
  size: SizeVariant;
108
108
  color: ColorVariant;
109
+ text: string;
109
110
  pill: boolean;
110
111
  disabled: boolean;
111
112
  modelValue: boolean;
112
- text: string;
113
113
  divider: boolean;
114
114
  placement: Placement;
115
115
  noCaret: boolean;
@@ -1,22 +1,37 @@
1
1
  <template>
2
- <button
2
+ <component
3
+ :is="tagName"
3
4
  data-testid="dropdown-item"
4
5
  class="dropdown__item"
6
+ :class="classNames"
7
+ :href="href"
5
8
  @click="handleOnClick">
6
9
  <slot>
7
10
  {{ text }}
8
11
  </slot>
9
- </button>
12
+ </component>
10
13
  </template>
11
14
 
12
15
  <script>
13
- import { defineComponent, inject } from "vue-demi";
16
+ import {
17
+ defineComponent,
18
+ inject,
19
+ computed
20
+ } from "vue-demi";
14
21
  import { DROPDOWN_CONTEXT } from ".";
15
22
  export default defineComponent({
16
23
  props: {
17
24
  text: {
18
25
  type: String,
19
26
  default: ""
27
+ },
28
+ href: {
29
+ type: String,
30
+ default: void 0
31
+ },
32
+ active: {
33
+ type: Boolean,
34
+ default: false
20
35
  }
21
36
  },
22
37
  emits: ["click"],
@@ -24,21 +39,45 @@ export default defineComponent({
24
39
  const context = inject(DROPDOWN_CONTEXT, void 0, true);
25
40
  function handleOnClick(event) {
26
41
  emit("click", event);
27
- if (context?.close && !event.defaultPrevented)
42
+ if (context?.close && !event.defaultPrevented || event.defaultPrevented && props.href)
28
43
  context.close();
29
44
  }
30
- return { handleOnClick };
45
+ const classNames = computed(() => {
46
+ const result = [""];
47
+ if (props.active)
48
+ result.push("dropdown__item--active");
49
+ return result;
50
+ });
51
+ const tagName = computed(() => {
52
+ let tag = "button";
53
+ if (props.href)
54
+ tag = "a";
55
+ return tag;
56
+ });
57
+ return {
58
+ handleOnClick,
59
+ classNames,
60
+ tagName
61
+ };
31
62
  }
32
63
  });
33
64
  </script>
34
65
 
35
66
  <style lang="postcss">
36
67
  .dropdown__item {
37
- @apply px-3 py-2 cursor-pointer text-default w-full select-none text-left;
68
+ @apply px-4 py-2 block cursor-pointer text-default w-full select-none text-left;
69
+
70
+ &:is(a) {
71
+ @apply hover:text-default;
72
+ }
38
73
 
39
74
  &:hover,
40
75
  &:focus-visible {
41
76
  @apply bg-default-alpha;
42
77
  }
78
+
79
+ &&--active {
80
+ @apply bg-default-alpha cursor-default;
81
+ }
43
82
  }
44
83
  </style>