@una-ui/nuxt 0.12.1-beta.1 → 0.13.0-beta.2

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": "@una-ui/nuxt",
3
3
  "configKey": "una",
4
- "version": "0.12.1-beta.1",
4
+ "version": "0.13.0-beta.2",
5
5
  "compatibility": {
6
6
  "nuxt": ">=3.0.0"
7
7
  },
package/dist/module.mjs CHANGED
@@ -7,7 +7,7 @@ import '@una-ui/preset/prefixes';
7
7
  import '@una-ui/extractor-vue-script';
8
8
 
9
9
  const name = "@una-ui/nuxt";
10
- const version = "0.12.1-beta.1";
10
+ const version = "0.13.0-beta.2";
11
11
 
12
12
  const module = defineNuxtModule({
13
13
  meta: {
@@ -82,6 +82,12 @@ const module = defineNuxtModule({
82
82
  global: options.global,
83
83
  watch: nuxt.options.dev
84
84
  });
85
+ addComponentsDir({
86
+ path: resolve(runtimeDir, "components/navigation", "breadcrumb"),
87
+ prefix: options.prefix,
88
+ global: options.global,
89
+ watch: nuxt.options.dev
90
+ });
85
91
  if (options.themeable) {
86
92
  addPlugin(resolve(runtimeDir, "plugins", "theme.client"));
87
93
  addPlugin(resolve(runtimeDir, "plugins", "theme.server"));
@@ -6,10 +6,6 @@ import type { NButtonProps } from '../../types'
6
6
  import NLink from '../elements/Link.vue'
7
7
  import { cn } from '../../utils'
8
8
 
9
- defineOptions({
10
- inheritAttrs: false,
11
- })
12
-
13
9
  const props = withDefaults(defineProps<NButtonProps>(), {
14
10
  type: 'button',
15
11
  loadingPlacement: 'leading',
@@ -18,9 +14,27 @@ const props = withDefaults(defineProps<NButtonProps>(), {
18
14
  }),
19
15
  })
20
16
 
17
+ const mergeVariants = computed(() => {
18
+ return {
19
+ 'btn': props.btn,
20
+ 'breadcrumb-active': props.breadcrumbActive,
21
+ 'breadcrumb-inactive': props.breadcrumbInactive,
22
+ }
23
+ })
24
+
21
25
  const btnVariants = ['solid', 'outline', 'soft', 'ghost', 'link', 'text'] as const
22
- const hasVariant = computed(() => btnVariants.some(btnVariants => props.btn?.includes(btnVariants)))
23
- const isBaseVariant = computed(() => props.btn?.includes('~'))
26
+
27
+ const hasVariant = computed(() =>
28
+ Object.values(mergeVariants.value).some(variantList =>
29
+ btnVariants.some(variant => variantList?.includes(variant)),
30
+ ),
31
+ )
32
+
33
+ const isBaseVariant = computed(() =>
34
+ Object.values(mergeVariants.value).some(variantList =>
35
+ variantList?.includes('~'),
36
+ ),
37
+ )
24
38
 
25
39
  const [DefineTemplate, ReuseTemplate] = createReusableTemplate()
26
40
  </script>
@@ -38,9 +52,8 @@ const [DefineTemplate, ReuseTemplate] = createReusableTemplate()
38
52
  una?.btn,
39
53
  )"
40
54
  :disabled="to ? null : disabled || loading"
41
- :btn="btn"
42
55
  :aria-label="icon ? label : null"
43
- v-bind="$attrs"
56
+ v-bind="mergeVariants"
44
57
  :size="size"
45
58
  >
46
59
  <DefineTemplate v-if="loading">
@@ -45,13 +45,13 @@ const delegatedProps = computed(() => {
45
45
  >
46
46
  <ProgressIndicator
47
47
  :class="cn(
48
- 'progress increase progress-indeterminate',
48
+ 'increase progress-indeterminate',
49
49
  props.una?.progressIndicator,
50
50
  )"
51
51
  />
52
52
  <ProgressIndicator
53
53
  :class="cn(
54
- 'progress decrease progress-indeterminate',
54
+ 'decrease progress-indeterminate',
55
55
  props.una?.progressIndicator,
56
56
  )"
57
57
  />
@@ -0,0 +1,69 @@
1
+ <script lang="ts" setup>
2
+ import type { NBreadcrumbProps } from '../../../types'
3
+ import { cn } from '../../../utils'
4
+ import BreadcrumbRoot from './BreadcrumbRoot.vue'
5
+ import BreadcrumbList from './BreadcrumbList.vue'
6
+ import BreadcrumbItem from './BreadcrumbItem.vue'
7
+ import BreadcrumbLink from './BreadcrumbLink.vue'
8
+ import BreadcrumbSeparator from './BreadcrumbSeparator.vue'
9
+
10
+ const props = defineProps<NBreadcrumbProps>()
11
+ </script>
12
+
13
+ <template>
14
+ <BreadcrumbRoot
15
+ :class="cn(
16
+ 'breadcrumb',
17
+ props.class,
18
+ props.una?.breadcrumb,
19
+ )"
20
+ :una
21
+ :size
22
+ v-bind="_breadcrumbRoot"
23
+ >
24
+ <slot name="root" :items="items">
25
+ <BreadcrumbList
26
+ :una
27
+ :size
28
+ v-bind="_breadcrumbList"
29
+ >
30
+ <template
31
+ v-for="(item, i) in props.items"
32
+ :key="i"
33
+ >
34
+ <slot name="list" :item="item">
35
+ <BreadcrumbItem
36
+ :una
37
+ :size
38
+ v-bind="_breadcrumbItem"
39
+ >
40
+ <slot name="item" :item="item">
41
+ <BreadcrumbLink
42
+ :active="i === items.length - 1"
43
+ :breadcrumb-active="props.breadcrumbActive"
44
+ :breadcrumb-inactive="props.breadcrumbInactive"
45
+ :size
46
+ v-bind="{
47
+ ...item,
48
+ ..._breadcrumbLink,
49
+ }"
50
+ >
51
+ <slot :item="item" />
52
+ </BreadcrumbLink>
53
+ </slot>
54
+ </BreadcrumbItem>
55
+ <BreadcrumbSeparator
56
+ v-if="i < props.items!.length - 1"
57
+ :icon="props.separator"
58
+ :size
59
+ :una
60
+ v-bind="_breadcrumbSeparator"
61
+ >
62
+ <slot name="separator" />
63
+ </BreadcrumbSeparator>
64
+ </slot>
65
+ </template>
66
+ </BreadcrumbList>
67
+ </slot>
68
+ </BreadcrumbRoot>
69
+ </template>
@@ -0,0 +1,31 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from '../../../utils'
3
+ import type { NBreadcrumbEllipsisProps } from '../../../types'
4
+
5
+ const props = withDefaults(defineProps<NBreadcrumbEllipsisProps>(), {
6
+ icon: 'breadcrumb-ellipsis-icon',
7
+ size: 'sm',
8
+ })
9
+ </script>
10
+
11
+ <template>
12
+ <span
13
+ role="presentation"
14
+ aria-hidden="true"
15
+ :class="cn(
16
+ 'breadcrumb-ellipsis',
17
+ props.class,
18
+ props.una?.breadcrumbEllipsis,
19
+ )"
20
+ :size
21
+ >
22
+ <slot>
23
+ <NIcon
24
+ :name="icon"
25
+ :class="props.una?.breadcrumbEllipsisIcon"
26
+ aria-hidden="true"
27
+ />
28
+ </slot>
29
+ <span class="sr-only">More</span>
30
+ </span>
31
+ </template>
@@ -0,0 +1,18 @@
1
+ <script lang="ts" setup>
2
+ import type { NBreadcrumbItemProps } from '../../../types'
3
+ import { cn } from '../../../utils'
4
+
5
+ const props = defineProps<NBreadcrumbItemProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <li
10
+ :class="cn(
11
+ 'breadcrumb-item',
12
+ props.class,
13
+ props.una?.breadcrumbItem,
14
+ )"
15
+ >
16
+ <slot />
17
+ </li>
18
+ </template>
@@ -0,0 +1,41 @@
1
+ <script lang="ts" setup>
2
+ import { computed } from 'vue'
3
+ import { cn } from '../../../utils'
4
+ import Button from '../../elements/Button.vue'
5
+ import type { NBreadcrumbLinkProps } from '../../../types'
6
+
7
+ const props = withDefaults(defineProps<NBreadcrumbLinkProps>(), {
8
+ active: false,
9
+ breadcrumbActive: '~',
10
+ breadcrumbInactive: '~',
11
+ size: 'sm',
12
+ })
13
+
14
+ const activeAttrs = computed(() => {
15
+ if (!props.active) {
16
+ return {
17
+ 'data-state': 'inactive',
18
+ }
19
+ }
20
+
21
+ return {
22
+ 'aria-disabled': true,
23
+ 'tabindex': -1,
24
+ 'data-state': 'active',
25
+ 'aria-current': 'page',
26
+ }
27
+ })
28
+ </script>
29
+
30
+ <template>
31
+ <Button
32
+ v-bind="{ ...props, ...activeAttrs }"
33
+ :class="cn(
34
+ 'breadcrumb-link',
35
+ { 'cursor-text': active },
36
+ )"
37
+ :to="disabled ? undefined : props.to"
38
+ >
39
+ <slot />
40
+ </Button>
41
+ </template>
@@ -0,0 +1,18 @@
1
+ <script lang="ts" setup>
2
+ import { cn } from '../../../utils'
3
+ import type { NBreadcrumbListProps } from '../../../types'
4
+
5
+ const props = defineProps<NBreadcrumbListProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <ol
10
+ :class="cn(
11
+ 'breadcrumb-list',
12
+ props.class,
13
+ props.una?.breadcrumbList,
14
+ )"
15
+ >
16
+ <slot />
17
+ </ol>
18
+ </template>
@@ -0,0 +1,18 @@
1
+ <script lang="ts" setup>
2
+ import type { NBreadcrumbRootProps } from '../../../types'
3
+ import { cn } from '../../../utils'
4
+
5
+ const props = defineProps<NBreadcrumbRootProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <nav
10
+ aria-label="breadcrumb"
11
+ :class="cn(
12
+ props.class,
13
+ props.una?.breadcrumbRoot,
14
+ )"
15
+ >
16
+ <slot />
17
+ </nav>
18
+ </template>
@@ -0,0 +1,30 @@
1
+ <script lang="ts" setup>
2
+ import type { NBreadcrumbSeparatorProps } from '../../../types'
3
+ import { cn } from '../../../utils'
4
+ import Icon from '../../elements/Icon.vue'
5
+
6
+ const props = withDefaults(defineProps<NBreadcrumbSeparatorProps>(), {
7
+ icon: 'breadcrumb-separator-icon',
8
+ size: 'sm',
9
+ })
10
+ </script>
11
+
12
+ <template>
13
+ <li
14
+ role="presentation"
15
+ aria-hidden="true"
16
+ :class="cn(
17
+ '',
18
+ props.class,
19
+ props.una?.breadcrumbSeparator,
20
+ )"
21
+ :size
22
+ >
23
+ <slot>
24
+ <Icon
25
+ :name="icon"
26
+ :class="props.una?.breadcrumbSeparatorIcon"
27
+ />
28
+ </slot>
29
+ </li>
30
+ </template>
@@ -0,0 +1,115 @@
1
+ import type { HTMLAttributes } from 'vue';
2
+ import type { NButtonProps } from './button.js';
3
+ interface BaseExtensions {
4
+ class?: HTMLAttributes['class'];
5
+ }
6
+ export interface NBreadcrumbProps extends BaseExtensions, Pick<NBreadcrumbLinkProps, 'breadcrumbActive' | 'breadcrumbInactive'> {
7
+ /**
8
+ * List of items to display in the breadcrumb.
9
+ *
10
+ * @example
11
+ * items: [{ label: 'Home', to: '/' }, { label: 'About', to: '/about' }]
12
+ */
13
+ items: Partial<NButtonProps>[];
14
+ separator?: NBreadcrumbSeparatorProps['icon'];
15
+ ellipsis?: NBreadcrumbEllipsisProps['icon'];
16
+ /**
17
+ * Allows you to change the size of the input.
18
+ *
19
+ * @default sm
20
+ *
21
+ * @example
22
+ * size="sm" | size="2cm" | size="2rem" | size="2px"
23
+ */
24
+ size?: string;
25
+ _breadcrumbSeparator?: Partial<NBreadcrumbSeparatorProps>;
26
+ _breadcrumbItem?: Partial<NBreadcrumbItemProps>;
27
+ _breadcrumbRoot?: Partial<NBreadcrumbRootProps>;
28
+ _breadcrumbList?: Partial<NBreadcrumbListProps>;
29
+ _breadcrumbLink?: Partial<NBreadcrumbLinkProps>;
30
+ _breadcrumbEllipsis?: Partial<NBreadcrumbEllipsisProps>;
31
+ /**
32
+ * `UnaUI` preset configuration
33
+ *
34
+ * @see https://github.com/una-ui/una-ui/blob/main/packages/preset/src/_shortcuts/breadcrumb.ts
35
+ */
36
+ una?: NBreadcrumbUnaProps;
37
+ }
38
+ export interface NBreadcrumbRootProps extends BaseExtensions {
39
+ una?: Pick<NBreadcrumbUnaProps, 'breadcrumbRoot'>;
40
+ }
41
+ export interface NBreadcrumbItemProps extends BaseExtensions {
42
+ /**
43
+ * `UnaUI` preset configuration
44
+ *
45
+ * @see https://github.com/una-ui/una-ui/blob/main/packages/preset/src/_shortcuts/breadcrumb.ts
46
+ */
47
+ una?: Pick<NBreadcrumbUnaProps, 'breadcrumbItem'>;
48
+ }
49
+ export interface NBreadcrumbSeparatorProps extends BaseExtensions {
50
+ /**
51
+ * Custom separator icon.
52
+ */
53
+ icon?: string;
54
+ /**
55
+ * Allows you to change the size of the input.
56
+ *
57
+ * @default sm
58
+ *
59
+ * @example
60
+ * size="sm" | size="2cm" | size="2rem" | size="2px"
61
+ */
62
+ size?: string;
63
+ /**
64
+ * `UnaUI` preset configuration
65
+ *
66
+ * @see https://github.com/una-ui/una-ui/blob/main/packages/preset/src/_shortcuts/breadcrumb.ts
67
+ */
68
+ una?: Pick<NBreadcrumbUnaProps, 'breadcrumbSeparator' | 'breadcrumbSeparatorIcon'>;
69
+ }
70
+ export interface NBreadcrumbListProps extends BaseExtensions {
71
+ /**
72
+ * `UnaUI` preset configuration
73
+ *
74
+ * @see https://github.com/una-ui/una-ui/blob/main/packages/preset/src/_shortcuts/breadcrumb.ts
75
+ */
76
+ una?: Pick<NBreadcrumbUnaProps, 'breadcrumbList'>;
77
+ }
78
+ export interface NBreadcrumbLinkProps extends BaseExtensions, NButtonProps {
79
+ active?: boolean;
80
+ breadcrumbActive?: string;
81
+ breadcrumbInactive?: string;
82
+ }
83
+ export interface NBreadcrumbEllipsisProps extends BaseExtensions {
84
+ /**
85
+ * Custom separator icon.
86
+ */
87
+ icon?: string;
88
+ /**
89
+ * /**
90
+ * Allows you to change the size of the input.
91
+ *
92
+ * @default sm
93
+ *
94
+ * @example
95
+ * size="sm" | size="2cm" | size="2rem" | size="2px"
96
+ */
97
+ size?: string;
98
+ /**
99
+ * `UnaUI` preset configuration
100
+ *
101
+ * @see https://github.com/una-ui/una-ui/blob/main/packages/preset/src/_shortcuts/breadcrumb.ts
102
+ */
103
+ una?: Pick<NBreadcrumbUnaProps, 'breadcrumbEllipsis' | 'breadcrumbEllipsisIcon'>;
104
+ }
105
+ interface NBreadcrumbUnaProps {
106
+ breadcrumb?: HTMLAttributes['class'];
107
+ breadcrumbRoot?: HTMLAttributes['class'];
108
+ breadcrumbItem?: HTMLAttributes['class'];
109
+ breadcrumbEllipsis?: HTMLAttributes;
110
+ breadcrumbEllipsisIcon?: HTMLAttributes['class'];
111
+ breadcrumbList?: HTMLAttributes['class'];
112
+ breadcrumbSeparator?: HTMLAttributes['class'];
113
+ breadcrumbSeparatorIcon?: HTMLAttributes['class'];
114
+ }
115
+ export {};
File without changes
@@ -1,6 +1,8 @@
1
1
  import type { HTMLAttributes } from 'vue';
2
2
  interface Extensions {
3
3
  class?: HTMLAttributes['class'];
4
+ breadcrumbActive?: string;
5
+ breadcrumbInactive?: string;
4
6
  }
5
7
  export interface NButtonProps extends Extensions {
6
8
  /**
@@ -22,6 +22,7 @@ export * from './tabs.js';
22
22
  export * from './select.js';
23
23
  export * from './separator.js';
24
24
  export * from './card.js';
25
+ export * from './breadcrumb.js';
25
26
  export * from './table.js';
26
27
  export interface Colors {
27
28
  [key: string]: string;
@@ -22,4 +22,5 @@ export * from "./tabs.js";
22
22
  export * from "./select.js";
23
23
  export * from "./separator.js";
24
24
  export * from "./card.js";
25
+ export * from "./breadcrumb.js";
25
26
  export * from "./table.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@una-ui/nuxt",
3
3
  "type": "module",
4
- "version": "0.12.1-beta.1",
4
+ "version": "0.13.0-beta.2",
5
5
  "description": "Nuxt module for @una-ui",
6
6
  "author": "Phojie Rengel <phojrengel@gmail.com>",
7
7
  "license": "MIT",
@@ -35,10 +35,10 @@
35
35
  "@nuxt/kit": "^3.12.4",
36
36
  "@nuxtjs/color-mode": "^3.4.2",
37
37
  "@tanstack/vue-table": "^8.20.4",
38
- "@unocss/core": "^0.61.9",
39
- "@unocss/nuxt": "^0.61.9",
40
- "@unocss/preset-attributify": "^0.61.9",
41
- "@unocss/preset-icons": "^0.61.9",
38
+ "@unocss/core": "^0.62.2",
39
+ "@unocss/nuxt": "^0.62.2",
40
+ "@unocss/preset-attributify": "^0.62.2",
41
+ "@unocss/preset-icons": "^0.62.2",
42
42
  "@vueuse/core": "^10.11.1",
43
43
  "@vueuse/integrations": "^10.11.1",
44
44
  "@vueuse/nuxt": "^10.11.1",
@@ -46,10 +46,11 @@
46
46
  "ohash": "^1.1.3",
47
47
  "radix-vue": "^1.9.3",
48
48
  "tailwind-merge": "^2.5.1",
49
- "unocss": "^0.61.9",
49
+ "typescript": "^5.5.4",
50
+ "unocss": "^0.62.2",
50
51
  "unocss-preset-animations": "^1.1.0",
51
- "@una-ui/extractor-vue-script": "^0.12.1-beta.1",
52
- "@una-ui/preset": "^0.12.1-beta.1"
52
+ "@una-ui/extractor-vue-script": "^0.13.0-beta.2",
53
+ "@una-ui/preset": "^0.13.0-beta.2"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@nuxt/module-builder": "^0.8.1",