pukaad-ui-lib 1.290.0 → 1.292.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.
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pukaad-ui-lib",
3
3
  "configKey": "pukaadUI",
4
- "version": "1.290.0",
4
+ "version": "1.292.0",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.2",
7
7
  "unbuild": "3.6.1"
@@ -1 +1 @@
1
- @import "tailwindcss";@import "tw-animate-css";@import "./system.css";@import "./scroll-bar.css";@custom-variant dark (&:is(.dark *));@theme inline{--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-primary-foreground:var(--primary-foreground);--color-secondary-foreground:var(--secondary-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-destructive:var(--destructive);--color-destructive-foreground:var(--destructive-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring);--color-chart-1:var(--chart-1);--color-chart-2:var(--chart-2);--color-chart-3:var(--chart-3);--color-chart-4:var(--chart-4);--color-chart-5:var(--chart-5);--color-sidebar:var(--sidebar);--color-sidebar-foreground:var(--sidebar-foreground);--color-sidebar-primary:var(--sidebar-primary);--color-sidebar-primary-foreground:var(--sidebar-primary-foreground);--color-sidebar-accent:var(--sidebar-accent);--color-sidebar-accent-foreground:var(--sidebar-accent-foreground);--color-sidebar-border:var(--sidebar-border);--color-sidebar-ring:var(--sidebar-ring);--color-red:var(--red);--color-error:var(--error);--color-success:var(--success);--color-green:var(--green);--color-warning:var(--warning);--color-yellow:var(--yellow);--color-pink:var(--pink);--color-primary:var(--primary);--color-secondary:var(--secondary);--color-info:var(--info);--color-black:var(--black);--color-dark:var(--dark);--color-gray:var(--gray);--color-cloud:var(--cloud);--color-mercury:var(--mercury);--color-green-light:var(--green-light);--color-red-light:var(--red-light);--color-yellow-light:var(--yellow-light);--color-bright:var(--bright);--color-silver:var(--silver);--color-smoke:var(--smoke);--z-index-announce-tool:10;--z-index-navbar:11;--z-index-dropdown:12;--z-index-overlay:13;--z-index-loading:14;--z-index-drawer:15;--z-index-modal:16;--z-index-toast:100;--z-index-loading-page:101}:root{--radius:0.625rem;--red:#b71c1c;--success:#43a047;--green:#1b5e20;--warning:#f9a825;--yellow:#fbc02d;--info:#e3f2fd;--black:#212121;--dark:#424242;--gray:#616161;--cloud:#c4c4c4;--mercury:#e0e0e0;--green-light:#e3f5e3;--red-light:#fde3e3;--yellow-light:#fef3c7;--bright:#f5f5f5;--silver:#f7f7f7;--smoke:#fafafa;--white:#fff;--pink:#ffe6f4;--background:var(--white);--foreground:var(--black);--card:var(--background);--card-foreground:var(--foreground);--popover:var(--background);--popover-foreground:var(--foreground);--primary:#1976b8;--primary-foreground:var(--white);--secondary:#22a7ef;--secondary-foreground:var(--white);--muted:oklch(0.97 0 0);--muted-foreground:var(--cloud);--accent:oklch(0.97 0 0);--accent-foreground:oklch(0.205 0 0);--destructive:#d32f2f;--destructive-foreground:var(--white);--border:var(--color-mercury);--input:var(--color-mercury);--ring:var(--mercury);--chart-1:oklch(0.646 0.222 41.116);--chart-2:oklch(0.6 0.118 184.704);--chart-3:oklch(0.398 0.07 227.392);--chart-4:oklch(0.828 0.189 84.429);--chart-5:oklch(0.769 0.188 70.08);--sidebar:oklch(0.985 0 0);--sidebar-foreground:var(--foreground);--sidebar-primary:oklch(0.205 0 0);--sidebar-primary-foreground:oklch(0.985 0 0);--sidebar-accent:oklch(0.97 0 0);--sidebar-accent-foreground:oklch(0.205 0 0);--sidebar-border:var(--color-mercury);--sidebar-ring:var(--color-mercury)}.dark{--background:oklch(0.145 0 0);--foreground:oklch(0.985 0 0);--card:oklch(0.145 0 0);--card-foreground:oklch(0.985 0 0);--popover:oklch(0.145 0 0);--popover-foreground:oklch(0.985 0 0);--primary:oklch(0.985 0 0);--primary-foreground:oklch(0.205 0 0);--secondary:oklch(0.269 0 0);--secondary-foreground:oklch(0.985 0 0);--muted:oklch(0.269 0 0);--muted-foreground:oklch(0.708 0 0);--accent:oklch(0.269 0 0);--accent-foreground:oklch(0.985 0 0);--destructive:oklch(0.396 0.141 25.723);--destructive-foreground:oklch(0.637 0.237 25.331);--border:oklch(0.269 0 0);--input:oklch(0.269 0 0);--ring:oklch(0.439 0 0);--chart-1:oklch(0.488 0.243 264.376);--chart-2:oklch(0.696 0.17 162.48);--chart-3:oklch(0.769 0.188 70.08);--chart-4:oklch(0.627 0.265 303.9);--chart-5:oklch(0.645 0.246 16.439);--sidebar:oklch(0.205 0 0);--sidebar-foreground:oklch(0.985 0 0);--sidebar-primary:oklch(0.488 0.243 264.376);--sidebar-primary-foreground:oklch(0.985 0 0);--sidebar-accent:oklch(0.269 0 0);--sidebar-accent-foreground:oklch(0.985 0 0);--sidebar-border:oklch(0.269 0 0);--sidebar-ring:oklch(0.439 0 0)}@layer base{*{@apply border-border outline-ring/50}body{@apply bg-background text-foreground}}
1
+ @import "tailwindcss";@import "tw-animate-css";@import "./system.css";@import "./scroll-bar.css";@custom-variant dark (&:is(.dark *));@theme inline{--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-primary-foreground:var(--primary-foreground);--color-secondary-foreground:var(--secondary-foreground);--color-muted:var(--muted);--color-muted-foreground:var(--muted-foreground);--color-accent:var(--accent);--color-accent-foreground:var(--accent-foreground);--color-destructive:var(--destructive);--color-destructive-foreground:var(--destructive-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring);--color-chart-1:var(--chart-1);--color-chart-2:var(--chart-2);--color-chart-3:var(--chart-3);--color-chart-4:var(--chart-4);--color-chart-5:var(--chart-5);--color-sidebar:var(--sidebar);--color-sidebar-foreground:var(--sidebar-foreground);--color-sidebar-primary:var(--sidebar-primary);--color-sidebar-primary-foreground:var(--sidebar-primary-foreground);--color-sidebar-accent:var(--sidebar-accent);--color-sidebar-accent-foreground:var(--sidebar-accent-foreground);--color-sidebar-border:var(--sidebar-border);--color-sidebar-ring:var(--sidebar-ring);--color-red:var(--red);--color-error:var(--error);--color-success:var(--success);--color-green:var(--green);--color-warning:var(--warning);--color-yellow:var(--yellow);--color-pink:var(--pink);--color-primary:var(--primary);--color-secondary:var(--secondary);--color-info:var(--info);--color-info-foreground:var(--info-foreground);--color-black:var(--black);--color-dark:var(--dark);--color-gray:var(--gray);--color-cloud:var(--cloud);--color-mercury:var(--mercury);--color-green-light:var(--green-light);--color-red-light:var(--red-light);--color-yellow-light:var(--yellow-light);--color-bright:var(--bright);--color-silver:var(--silver);--color-smoke:var(--smoke);--z-index-announce-tool:10;--z-index-navbar:11;--z-index-dropdown:12;--z-index-overlay:13;--z-index-loading:14;--z-index-drawer:15;--z-index-modal:16;--z-index-toast:100;--z-index-loading-page:101}:root{--radius:0.625rem;--red:#b71c1c;--success:#43a047;--green:#1b5e20;--warning:#f9a825;--yellow:#fbc02d;--info:#e3f2fd;--info-foreground:var(--primary);--black:#212121;--dark:#424242;--gray:#616161;--cloud:#c4c4c4;--mercury:#e0e0e0;--green-light:#e3f5e3;--red-light:#fde3e3;--yellow-light:#fef3c7;--bright:#f5f5f5;--silver:#f7f7f7;--smoke:#fafafa;--white:#fff;--pink:#ffe6f4;--background:var(--white);--foreground:var(--black);--card:var(--background);--card-foreground:var(--foreground);--popover:var(--background);--popover-foreground:var(--foreground);--primary:#1976b8;--primary-foreground:var(--white);--secondary:#22a7ef;--secondary-foreground:var(--white);--muted:oklch(0.97 0 0);--muted-foreground:var(--cloud);--accent:oklch(0.97 0 0);--accent-foreground:oklch(0.205 0 0);--destructive:#d32f2f;--destructive-foreground:var(--white);--border:var(--color-mercury);--input:var(--color-mercury);--ring:var(--mercury);--chart-1:oklch(0.646 0.222 41.116);--chart-2:oklch(0.6 0.118 184.704);--chart-3:oklch(0.398 0.07 227.392);--chart-4:oklch(0.828 0.189 84.429);--chart-5:oklch(0.769 0.188 70.08);--sidebar:oklch(0.985 0 0);--sidebar-foreground:var(--foreground);--sidebar-primary:oklch(0.205 0 0);--sidebar-primary-foreground:oklch(0.985 0 0);--sidebar-accent:oklch(0.97 0 0);--sidebar-accent-foreground:oklch(0.205 0 0);--sidebar-border:var(--color-mercury);--sidebar-ring:var(--color-mercury)}.dark{--background:oklch(0.145 0 0);--foreground:oklch(0.985 0 0);--card:oklch(0.145 0 0);--card-foreground:oklch(0.985 0 0);--popover:oklch(0.145 0 0);--popover-foreground:oklch(0.985 0 0);--primary:oklch(0.985 0 0);--primary-foreground:oklch(0.205 0 0);--secondary:oklch(0.269 0 0);--secondary-foreground:oklch(0.985 0 0);--muted:oklch(0.269 0 0);--muted-foreground:oklch(0.708 0 0);--accent:oklch(0.269 0 0);--accent-foreground:oklch(0.985 0 0);--destructive:oklch(0.396 0.141 25.723);--destructive-foreground:oklch(0.637 0.237 25.331);--border:oklch(0.269 0 0);--input:oklch(0.269 0 0);--ring:oklch(0.439 0 0);--chart-1:oklch(0.488 0.243 264.376);--chart-2:oklch(0.696 0.17 162.48);--chart-3:oklch(0.769 0.188 70.08);--chart-4:oklch(0.627 0.265 303.9);--chart-5:oklch(0.645 0.246 16.439);--sidebar:oklch(0.205 0 0);--sidebar-foreground:oklch(0.985 0 0);--sidebar-primary:oklch(0.488 0.243 264.376);--sidebar-primary-foreground:oklch(0.985 0 0);--sidebar-accent:oklch(0.269 0 0);--sidebar-accent-foreground:oklch(0.985 0 0);--sidebar-border:oklch(0.269 0 0);--sidebar-ring:oklch(0.439 0 0)}@layer base{*{@apply border-border outline-ring/50}body{@apply bg-background text-foreground}}
@@ -1,7 +1,7 @@
1
1
  import type { HTMLAttributes } from "vue";
2
2
  export type ButtonType = "button" | "submit" | "reset";
3
3
  export type ButtonVariant = "default" | "outline" | "ghost" | "link" | "text" | "icon";
4
- export type ButtonColor = "default" | "primary" | "secondary" | "destructive";
4
+ export type ButtonColor = "default" | "primary" | "secondary" | "destructive" | "info";
5
5
  export interface ButtonProps {
6
6
  type?: ButtonType;
7
7
  class?: HTMLAttributes["class"];
@@ -1,7 +1,7 @@
1
1
  import type { HTMLAttributes } from "vue";
2
2
  export type ButtonType = "button" | "submit" | "reset";
3
3
  export type ButtonVariant = "default" | "outline" | "ghost" | "link" | "text" | "icon";
4
- export type ButtonColor = "default" | "primary" | "secondary" | "destructive";
4
+ export type ButtonColor = "default" | "primary" | "secondary" | "destructive" | "info";
5
5
  export interface ButtonProps {
6
6
  type?: ButtonType;
7
7
  class?: HTMLAttributes["class"];
@@ -1,8 +1,16 @@
1
1
  <template>
2
2
  <div class="flex gap-[16px] items-center">
3
- <Image v-if="coverImage" :src="coverImage" width="227" height="128"
4
- class="rounded-[4px] flex-shrink-0 object-cover" />
5
- <div v-else class="w-[227px] h-[128px] rounded-[4px] flex-shrink-0 bg-cloud flex items-center justify-center">
3
+ <Image
4
+ v-if="coverImage"
5
+ :src="coverImage"
6
+ width="227"
7
+ height="128"
8
+ class="rounded-[4px] flex-shrink-0 object-cover"
9
+ />
10
+ <div
11
+ v-else
12
+ class="w-[227px] h-[128px] rounded-[4px] flex-shrink-0 bg-cloud flex items-center justify-center"
13
+ >
6
14
  <Icon name="pukaad:map-location-dot" :size="36" class="text-gray" />
7
15
  </div>
8
16
  <div class="flex flex-col gap-[4px]">
@@ -11,7 +19,11 @@
11
19
  </div>
12
20
 
13
21
  <div class="flex items-center gap-[4px] font-body-medium text-gray">
14
- <InputRating :size="10" readonly :model-value="props.item?.rating || 0" />
22
+ <InputRating
23
+ :size="10"
24
+ readonly
25
+ :model-value="props.item?.rating || 0"
26
+ />
15
27
  <template v-if="props.item?.like_count !== void 0">
16
28
  <span>•</span>
17
29
  <span>ถูกใจ {{ convertNumber(props.item.like_count) }}</span>
@@ -21,7 +33,10 @@
21
33
  <div v-if="placeAddress" class="font-body-medium text-gray">
22
34
  {{ placeAddress }}
23
35
  </div>
24
- <div v-if="props.item?.description" class="font-body-medium text-gray line-clamp-2">
36
+ <div
37
+ v-if="props.item?.description"
38
+ class="font-body-medium text-gray line-clamp-2"
39
+ >
25
40
  {{ props.item.description }}
26
41
  </div>
27
42
  </div>
@@ -29,13 +44,18 @@
29
44
  </template>
30
45
 
31
46
  <script setup>
47
+ import { computed } from "vue";
32
48
  import { useConvert } from "../../composables/useConvert";
33
49
  const { convertNumber } = useConvert();
34
50
  const props = defineProps({
35
51
  item: { type: Object, required: false, default: () => ({}) }
36
52
  });
37
- const coverImage = computed(() => props.item?.cover_image || props.item?.image_cover || "");
38
- const placeName = computed(() => props.item?.name || props.item?.business_name || "");
53
+ const coverImage = computed(
54
+ () => props.item?.cover_image || props.item?.image_cover || ""
55
+ );
56
+ const placeName = computed(
57
+ () => props.item?.name || props.item?.business_name || ""
58
+ );
39
59
  const placeAddress = computed(() => {
40
60
  if (typeof props.item?.address === "string") return props.item.address;
41
61
  return props.item?.full_address || "";
@@ -49,11 +49,11 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
49
49
  label: string;
50
50
  required: boolean;
51
51
  name: string;
52
- gap: string;
53
52
  placeholder: string;
54
53
  labelDetail: string;
55
54
  placeholderDetail: string;
56
55
  requiredDetail: boolean;
56
+ gap: string;
57
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
58
58
  declare const _default: typeof __VLS_export;
59
59
  export default _default;
@@ -49,11 +49,11 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
49
49
  label: string;
50
50
  required: boolean;
51
51
  name: string;
52
- gap: string;
53
52
  placeholder: string;
54
53
  labelDetail: string;
55
54
  placeholderDetail: string;
56
55
  requiredDetail: boolean;
56
+ gap: string;
57
57
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
58
58
  declare const _default: typeof __VLS_export;
59
59
  export default _default;
@@ -22,8 +22,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
22
22
  }>, {
23
23
  id: string;
24
24
  name: string;
25
- disabledForgotPassword: boolean;
26
25
  new: boolean;
26
+ disabledForgotPassword: boolean;
27
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
28
  declare const _default: typeof __VLS_export;
29
29
  export default _default;
@@ -22,8 +22,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {
22
22
  }>, {
23
23
  id: string;
24
24
  name: string;
25
- disabledForgotPassword: boolean;
26
25
  new: boolean;
26
+ disabledForgotPassword: boolean;
27
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
28
  declare const _default: typeof __VLS_export;
29
29
  export default _default;
@@ -24,8 +24,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
24
24
  }) => any) | undefined;
25
25
  }>, {
26
26
  title: string;
27
- confirmText: string;
28
27
  disabledForgotPassword: boolean;
28
+ confirmText: string;
29
29
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
30
  declare const _default: typeof __VLS_export;
31
31
  export default _default;
@@ -24,8 +24,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
24
24
  }) => any) | undefined;
25
25
  }>, {
26
26
  title: string;
27
- confirmText: string;
28
27
  disabledForgotPassword: boolean;
28
+ confirmText: string;
29
29
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
30
30
  declare const _default: typeof __VLS_export;
31
31
  export default _default;
@@ -32,8 +32,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
32
32
  }>, {
33
33
  title: string;
34
34
  mode: "login" | "secure";
35
- confirmText: string;
36
35
  disabledForgotPassword: boolean;
36
+ confirmText: string;
37
37
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
38
  declare const _default: typeof __VLS_export;
39
39
  export default _default;
@@ -32,8 +32,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_PublicProps, {},
32
32
  }>, {
33
33
  title: string;
34
34
  mode: "login" | "secure";
35
- confirmText: string;
36
35
  disabledForgotPassword: boolean;
36
+ confirmText: string;
37
37
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
38
38
  declare const _default: typeof __VLS_export;
39
39
  export default _default;
@@ -2,7 +2,7 @@ import type { VariantProps } from "class-variance-authority";
2
2
  export { default as Button } from "./Button.vue.js";
3
3
  export declare const buttonVariants: (props?: ({
4
4
  variant?: "link" | "text" | "default" | "outline" | "ghost" | "icon" | null | undefined;
5
- color?: "default" | "primary" | "secondary" | "destructive" | null | undefined;
5
+ color?: "default" | "primary" | "secondary" | "destructive" | "info" | null | undefined;
6
6
  size?: "default" | "icon" | "icon-sm" | "icon-xs" | "sm" | "lg" | "icon-lg" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  export type ButtonVariants = VariantProps<typeof buttonVariants>;
@@ -16,7 +16,8 @@ export const buttonVariants = cva(
16
16
  default: "text-foreground",
17
17
  primary: "text-primary",
18
18
  secondary: "text-secondary ",
19
- destructive: "text-destructive"
19
+ destructive: "text-destructive",
20
+ info: "text-info-foreground"
20
21
  },
21
22
  size: {
22
23
  default: "h-9 px-4 py-2 has-[>svg]:px-3",
@@ -49,6 +50,11 @@ export const buttonVariants = cva(
49
50
  color: "destructive",
50
51
  class: "bg-destructive text-destructive-foreground hover:bg-destructive/90"
51
52
  },
53
+ {
54
+ variant: "default",
55
+ color: "info",
56
+ class: "bg-info text-info-foreground hover:bg-info/90"
57
+ },
52
58
  {
53
59
  variant: "outline",
54
60
  color: "default",
@@ -69,6 +75,11 @@ export const buttonVariants = cva(
69
75
  color: "destructive",
70
76
  class: "border border-destructive text-destructive hover:text-destructive/90 bg-white"
71
77
  },
78
+ {
79
+ variant: "outline",
80
+ color: "info",
81
+ class: "border border-info-foreground text-info-foreground hover:text-info-foreground/90 bg-white"
82
+ },
72
83
  {
73
84
  variant: "ghost",
74
85
  color: "default",
@@ -89,6 +100,11 @@ export const buttonVariants = cva(
89
100
  color: "destructive",
90
101
  class: "text-destructive hover:bg-destructive/90 hover:text-destructive-foreground"
91
102
  },
103
+ {
104
+ variant: "ghost",
105
+ color: "info",
106
+ class: "text-info-foreground hover:bg-info hover:text-info-foreground"
107
+ },
92
108
  {
93
109
  variant: "icon",
94
110
  color: "default",
@@ -109,6 +125,11 @@ export const buttonVariants = cva(
109
125
  color: "destructive",
110
126
  class: "text-destructive hover:bg-destructive/90 hover:text-destructive-foreground"
111
127
  },
128
+ {
129
+ variant: "icon",
130
+ color: "info",
131
+ class: "text-info-foreground hover:bg-info hover:text-info-foreground"
132
+ },
112
133
  // text variant - just plain text with color, no background or hover effects
113
134
  {
114
135
  variant: "text",
@@ -130,6 +151,11 @@ export const buttonVariants = cva(
130
151
  color: "destructive",
131
152
  class: "text-destructive hover:opacity-80"
132
153
  },
154
+ {
155
+ variant: "text",
156
+ color: "info",
157
+ class: "text-info-foreground hover:opacity-80"
158
+ },
133
159
  // link variant - inline link style, primary blue by default, no padding
134
160
  {
135
161
  variant: "link",
@@ -150,6 +176,11 @@ export const buttonVariants = cva(
150
176
  variant: "link",
151
177
  color: "destructive",
152
178
  class: "text-destructive hover:opacity-80"
179
+ },
180
+ {
181
+ variant: "link",
182
+ color: "info",
183
+ class: "text-info-foreground hover:opacity-80"
153
184
  }
154
185
  ],
155
186
  defaultVariants: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pukaad-ui-lib",
3
- "version": "1.290.0",
3
+ "version": "1.292.0",
4
4
  "description": "pukaad-ui for MeMSG",
5
5
  "repository": {
6
6
  "type": "git",