@v1nt1248/3nclient-lib 0.0.42 → 0.1.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 (56) hide show
  1. package/README.md +4 -4
  2. package/dist/components/index.d.ts +20 -19
  3. package/dist/components/ui3n-badge-simple.vue.d.ts +2 -2
  4. package/dist/components/ui3n-badge.vue.d.ts +1 -1
  5. package/dist/components/ui3n-breadcrumb.vue.d.ts +7 -7
  6. package/dist/components/ui3n-breadcrumbs.vue.d.ts +3 -3
  7. package/dist/components/ui3n-button.vue.d.ts +29 -4
  8. package/dist/components/ui3n-checkbox.vue.d.ts +2 -2
  9. package/dist/components/ui3n-chip.vue.d.ts +2 -2
  10. package/dist/components/ui3n-dialog.vue.d.ts +4 -4
  11. package/dist/components/ui3n-drop-files.vue.d.ts +23 -3
  12. package/dist/components/ui3n-emoji.vue.d.ts +2 -2
  13. package/dist/components/ui3n-icon.vue.d.ts +29 -3
  14. package/dist/components/ui3n-input.vue.d.ts +9 -9
  15. package/dist/components/ui3n-list.vue.d.ts +1 -1
  16. package/dist/components/ui3n-menu.vue.d.ts +2 -2
  17. package/dist/components/ui3n-notification.vue.d.ts +30 -1
  18. package/dist/components/ui3n-switch.vue.d.ts +55 -0
  19. package/dist/components/ui3n-table-sort-icon.vue.d.ts +1 -1
  20. package/dist/components/ui3n-table.vue.d.ts +2 -2
  21. package/dist/components/ui3n-tabs.vue.d.ts +2 -2
  22. package/dist/components/ui3n-text.vue.d.ts +29 -3
  23. package/dist/components/ui3n-virtual-scroll.vue.d.ts +9 -6
  24. package/dist/constants/types.d.ts +2 -4
  25. package/dist/directives/index.d.ts +1 -1
  26. package/dist/index.d.ts +25 -27
  27. package/dist/plugins/dialogs.d.ts +1 -1
  28. package/dist/plugins/index.d.ts +8 -8
  29. package/dist/plugins/notifications.d.ts +1 -1
  30. package/dist/plugins/vue-bus.d.ts +1 -1
  31. package/dist/style.css +1 -1
  32. package/dist/tools/sqlite-on-3nstorage/index.d.ts +3 -3
  33. package/dist/ui-3n-lib.js +6794 -6469
  34. package/package.json +57 -59
  35. package/src/components/index.ts +47 -41
  36. package/src/components/ui3n-badge-simple.vue +35 -38
  37. package/src/components/ui3n-badge.vue +25 -25
  38. package/src/components/ui3n-breadcrumb.vue +44 -44
  39. package/src/components/ui3n-breadcrumbs.vue +19 -19
  40. package/src/components/ui3n-button.vue +240 -150
  41. package/src/components/ui3n-checkbox.vue +199 -158
  42. package/src/components/ui3n-chip.vue +96 -98
  43. package/src/components/ui3n-dialog.vue +225 -235
  44. package/src/components/ui3n-drop-files.vue +146 -154
  45. package/src/components/ui3n-emoji.vue +62 -64
  46. package/src/components/ui3n-icon.vue +32 -13
  47. package/src/components/ui3n-input.vue +239 -221
  48. package/src/components/ui3n-list.vue +92 -111
  49. package/src/components/ui3n-menu.vue +101 -100
  50. package/src/components/ui3n-notification.vue +182 -113
  51. package/src/components/ui3n-switch.vue +146 -0
  52. package/src/components/ui3n-table-sort-icon.vue +1 -2
  53. package/src/components/ui3n-table.vue +229 -223
  54. package/src/components/ui3n-tabs.vue +141 -148
  55. package/src/components/ui3n-text.vue +235 -146
  56. package/src/components/ui3n-virtual-scroll.vue +68 -68
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@v1nt1248/3nclient-lib",
3
3
  "license": "AGPL-3.0-or-later",
4
4
  "author": "v1nt1248",
5
- "version": "0.0.42",
5
+ "version": "0.1.0",
6
6
  "description": "Library for 3NWeb clients",
7
7
  "type": "module",
8
8
  "files": [
@@ -29,69 +29,67 @@
29
29
  "linter:fix": "eslint -c .eslintrc.cjs --fix --ext .js,.vue,.ts, src",
30
30
  "lint": "yarn linter && yarn stylelint",
31
31
  "lint:fix": "yarn linter:fix && yarn stylelint:fix",
32
- "storybook": "storybook dev -p 6006",
33
- "build-storybook": "storybook build"
32
+ "docs:dev": "vitepress dev docs",
33
+ "docs:build": "vitepress build docs",
34
+ "docs:preview": "vitepress preview docs"
34
35
  },
35
36
  "dependencies": {
36
- "@iconify-icons/ic": "^1.2.13",
37
- "@iconify/vue": "^4.1.1",
38
- "dayjs": "^1.11.10",
39
- "lodash": "^4.17.21",
40
- "mitt": "^3.0.1",
41
- "sanitize-html": "^2.12.1",
42
- "tslib": "^2.6.2"
37
+ "@iconify-icons/ic": "1.2.13",
38
+ "@iconify/vue": "4.1.2",
39
+ "dayjs": "1.11.11",
40
+ "lodash": "4.17.21",
41
+ "mitt": "3.0.1",
42
+ "sanitize-html": "2.13.0",
43
+ "tslib": "2.6.3"
43
44
  },
44
45
  "peerDependencies": {
45
- "pinia": "^2.1.7",
46
- "vue": "^3.4.21"
46
+ "pinia": "2.1.7",
47
+ "vue": "3.4.27"
47
48
  },
48
49
  "devDependencies": {
49
- "@storybook/addon-actions": "^8.0.2",
50
- "@storybook/addon-docs": "^8.0.2",
51
- "@storybook/addon-essentials": "^8.0.2",
52
- "@storybook/addon-interactions": "^8.0.2",
53
- "@storybook/addon-links": "^8.0.2",
54
- "@storybook/blocks": "^8.0.2",
55
- "@storybook/builder-vite": "^8.0.2",
56
- "@storybook/testing-library": "^0.2.2",
57
- "@storybook/vue3": "^8.0.2",
58
- "@storybook/vue3-vite": "^8.0.2",
59
- "@types/lodash": "^4.17.0",
60
- "@types/node": "^20.11.30",
61
- "@types/sanitize-html": "^2.11.0",
62
- "@typescript-eslint/eslint-plugin": "^7.3.1",
63
- "@typescript-eslint/parser": "^7.3.1",
64
- "@vitejs/plugin-vue": "^5.0.4",
65
- "@vue/compiler-core": "^3.4.21",
66
- "@vue/eslint-config-typescript": "^13.0.0",
67
- "@vue/runtime-core": "^3.4.21",
68
- "@vuedx/typescript-plugin-vue": "^0.7.6",
69
- "eslint": "^8.57.0",
70
- "eslint-plugin-import": "^2.29.1",
71
- "eslint-plugin-node": "^11.1.0",
72
- "eslint-plugin-promise": "^6.1.1",
73
- "eslint-plugin-storybook": "^0.8.0",
74
- "eslint-plugin-vue": "^9.23.0",
75
- "jackspeak": "^2.3.6",
76
- "path": "^0.12.7",
77
- "pinia": "^2.1.7",
78
- "postcss-html": "^1.6.0",
79
- "react": "^18.2.0",
80
- "react-dom": "^18.2.0",
81
- "sass": "^1.72.0",
82
- "storybook": "^8.0.2",
83
- "stylelint": "^16.2.1",
84
- "stylelint-config-recommended-scss": "^14.0.0",
85
- "stylelint-config-recommended-vue": "^1.5.0",
86
- "stylelint-config-standard": "^36.0.0",
87
- "stylelint-rscss": "^0.4.0",
88
- "stylelint-scss": "^6.2.1",
89
- "typescript": "^5.4.2",
90
- "vite": "^5.2.2",
91
- "vite-plugin-css-injected-by-js": "^3.5.0",
92
- "vite-plugin-dts": "^3.7.3",
93
- "vue": "^3.4.21",
94
- "vue-tsc": "^2.0.7"
50
+ "@types/lodash": "4.17.5",
51
+ "@types/node": "20.14.2",
52
+ "@types/sanitize-html": "2.11.0",
53
+ "@typescript-eslint/eslint-plugin": "7.13.0",
54
+ "@typescript-eslint/parser": "7.13.0",
55
+ "@vitejs/plugin-vue": "5.0.5",
56
+ "@vue/compiler-core": "3.4.27",
57
+ "@vue/eslint-config-typescript": "13.0.0",
58
+ "@vue/runtime-core": "3.4.27",
59
+ "@vuedx/typescript-plugin-vue": "0.7.6",
60
+ "eslint": "9.4.0",
61
+ "eslint-config-prettier": "^9.1.0",
62
+ "eslint-plugin-import": "2.29.1",
63
+ "eslint-plugin-node": "11.1.0",
64
+ "eslint-plugin-prettier": "^5.1.3",
65
+ "eslint-plugin-promise": "6.2.0",
66
+ "eslint-plugin-vue": "9.26.0",
67
+ "jackspeak": "3.4.0",
68
+ "path": "0.12.7",
69
+ "pinia": "2.1.7",
70
+ "postcss-html": "1.7.0",
71
+ "prettier": "^3.3.2",
72
+ "sass": "1.77.5",
73
+ "stylelint": "16.6.1",
74
+ "stylelint-config-recommended-scss": "14.0.0",
75
+ "stylelint-config-recommended-vue": "1.5.0",
76
+ "stylelint-config-standard": "36.0.0",
77
+ "stylelint-scss": "6.3.1",
78
+ "typescript": "5.4.5",
79
+ "vite": "5.2.13",
80
+ "vite-plugin-css-injected-by-js": "3.5.1",
81
+ "vite-plugin-dts": "3.9.1",
82
+ "vitepress": "1.2.3",
83
+ "vue": "3.4.27",
84
+ "vue-tsc": "2.0.21"
95
85
  },
96
- "packageManager": "pnpm@8.15.5"
86
+ "packageManager": "pnpm@9.3.0",
87
+ "pnpm": {
88
+ "peerDependencyRules": {
89
+ "ignoreMissing": [
90
+ "@algolia/client-search",
91
+ "search-insights"
92
+ ]
93
+ }
94
+ }
97
95
  }
@@ -1,40 +1,42 @@
1
- import Ui3nIcon from './ui3n-icon.vue'
2
- import type { Ui3nIconProps, Ui3nIconEmits } from './ui3n-icon.vue'
3
- import Ui3nButton from './ui3n-button.vue'
4
- import type { Ui3nButtonProps, Ui3nButtonEmits } from './ui3n-button.vue'
5
- import Ui3nChip from './ui3n-chip.vue'
6
- import type { Ui3nChipProps, Ui3nChipEmits, Ui3nChipSlots } from './ui3n-chip.vue'
7
- import Ui3nDropFiles from './ui3n-drop-files.vue'
8
- import type { Ui3nDropFilesProps, Ui3nDropFilesEmits } from './ui3n-drop-files.vue'
9
- import Ui3nEmoji from './ui3n-emoji.vue'
10
- import type { Ui3nEmojiProps, Ui3nEmojiEmits } from './ui3n-emoji.vue'
11
- import Ui3nInput from './ui3n-input.vue'
12
- import type { Ui3nInputProps, Ui3nInputEmits } from './ui3n-input.vue'
13
- import Ui3nText from './ui3n-text.vue'
14
- import type { Ui3nTextProps, Ui3nTextEmits } from './ui3n-text.vue'
15
- import Ui3nCheckbox from './ui3n-checkbox.vue'
16
- import type { Ui3nCheckboxProps, Ui3nCheckboxEmits, Ui3nCheckboxSlots } from './ui3n-checkbox.vue'
17
- import Ui3nNotification from './ui3n-notification.vue'
18
- import Ui3nTableSortIcon from './ui3n-table-sort-icon.vue'
19
- import type { Ui3nTableSortIconProps } from './ui3n-table-sort-icon.vue'
20
- import Ui3nTable from './ui3n-table.vue'
21
- import type { Ui3nTableProps, Ui3nTableEmits } from './ui3n-table.vue'
22
- import Ui3nDialog from './ui3n-dialog.vue'
23
- import type { Ui3nDialogComponentProps, Ui3nDialogComponentEmits, Ui3nDialogProps, Ui3nDialogEvent } from './ui3n-dialog.vue'
24
- import Ui3nMenu from './ui3n-menu.vue'
25
- import type { Ui3nMenuProps, Ui3nMenuEmits, Ui3nMenuSlots } from './ui3n-menu.vue'
26
- import Ui3nList from './ui3n-list.vue'
27
- import type { Ui3nListProps, Ui3nListEmits, Ui3nListSlots } from './ui3n-list.vue'
28
- import Ui3nVirtualScroll from './ui3n-virtual-scroll.vue'
29
- import type { Ui3nVirtualScrollProps, Ui3nVirtualScrollSlots } from './ui3n-virtual-scroll.vue'
30
- import Ui3nTabs from './ui3n-tabs.vue'
31
- import type { Ui3nTabsProps, Ui3nTabsEmits, Ui3nTabsSlots } from './ui3n-tabs.vue'
32
- import Ui3nBadge from './ui3n-badge.vue'
33
- import type { Ui3nBadgeProps } from './ui3n-badge.vue'
34
- import Ui3nBreadcrumb from './ui3n-breadcrumb.vue'
35
- import type { Ui3nBreadcrumdProps, Ui3nBreadcrumdEmits, Ui3nBreadcrumdSlots } from './ui3n-breadcrumb.vue'
36
- import Ui3nBreadcrumbs from './ui3n-breadcrumbs.vue'
37
- import type { Ui3nBreadcrumdsProps } from './ui3n-breadcrumbs.vue'
1
+ import Ui3nIcon from './ui3n-icon.vue';
2
+ import type { Ui3nIconProps, Ui3nIconEmits } from './ui3n-icon.vue';
3
+ import Ui3nButton from './ui3n-button.vue';
4
+ import type { Ui3nButtonProps, Ui3nButtonEmits } from './ui3n-button.vue';
5
+ import Ui3nChip from './ui3n-chip.vue';
6
+ import type { Ui3nChipProps, Ui3nChipEmits, Ui3nChipSlots } from './ui3n-chip.vue';
7
+ import Ui3nDropFiles from './ui3n-drop-files.vue';
8
+ import type { Ui3nDropFilesProps, Ui3nDropFilesEmits } from './ui3n-drop-files.vue';
9
+ import Ui3nEmoji from './ui3n-emoji.vue';
10
+ import type { Ui3nEmojiProps, Ui3nEmojiEmits } from './ui3n-emoji.vue';
11
+ import Ui3nInput from './ui3n-input.vue';
12
+ import type { Ui3nInputProps, Ui3nInputEmits } from './ui3n-input.vue';
13
+ import Ui3nText from './ui3n-text.vue';
14
+ import type { Ui3nTextProps, Ui3nTextEmits } from './ui3n-text.vue';
15
+ import Ui3nCheckbox from './ui3n-checkbox.vue';
16
+ import type { Ui3nCheckboxProps, Ui3nCheckboxEmits, Ui3nCheckboxSlots } from './ui3n-checkbox.vue';
17
+ import Ui3nNotification from './ui3n-notification.vue';
18
+ import Ui3nTableSortIcon from './ui3n-table-sort-icon.vue';
19
+ import type { Ui3nTableSortIconProps } from './ui3n-table-sort-icon.vue';
20
+ import Ui3nTable from './ui3n-table.vue';
21
+ import type { Ui3nTableProps, Ui3nTableEmits } from './ui3n-table.vue';
22
+ import Ui3nDialog from './ui3n-dialog.vue';
23
+ import type { Ui3nDialogComponentProps, Ui3nDialogComponentEmits, Ui3nDialogProps, Ui3nDialogEvent } from './ui3n-dialog.vue';
24
+ import Ui3nMenu from './ui3n-menu.vue';
25
+ import type { Ui3nMenuProps, Ui3nMenuEmits, Ui3nMenuSlots } from './ui3n-menu.vue';
26
+ import Ui3nList from './ui3n-list.vue';
27
+ import type { Ui3nListProps, Ui3nListEmits, Ui3nListSlots } from './ui3n-list.vue';
28
+ import Ui3nVirtualScroll from './ui3n-virtual-scroll.vue';
29
+ import type { Ui3nVirtualScrollProps, Ui3nVirtualScrollSlots } from './ui3n-virtual-scroll.vue';
30
+ import Ui3nTabs from './ui3n-tabs.vue';
31
+ import type { Ui3nTabsProps, Ui3nTabsEmits, Ui3nTabsSlots } from './ui3n-tabs.vue';
32
+ import Ui3nBadge from './ui3n-badge.vue';
33
+ import type { Ui3nBadgeProps } from './ui3n-badge.vue';
34
+ import Ui3nBreadcrumb from './ui3n-breadcrumb.vue';
35
+ import type { Ui3nBreadcrumbProps, Ui3nBreadcrumbEmits, Ui3nBreadcrumbSlots } from './ui3n-breadcrumb.vue';
36
+ import Ui3nBreadcrumbs from './ui3n-breadcrumbs.vue';
37
+ import type { Ui3nBreadcrumbsProps } from './ui3n-breadcrumbs.vue';
38
+ import Ui3nSwitch from './ui3n-switch.vue';
39
+ import type { Ui3nSwitchProps, Ui3nSwitchEmits, Ui3nSwitchSlots } from './ui3n-switch.vue';
38
40
 
39
41
  export {
40
42
  Ui3nIcon,
@@ -92,9 +94,13 @@ export {
92
94
  Ui3nBadge,
93
95
  Ui3nBadgeProps,
94
96
  Ui3nBreadcrumb,
95
- Ui3nBreadcrumdProps,
96
- Ui3nBreadcrumdEmits,
97
- Ui3nBreadcrumdSlots,
97
+ Ui3nBreadcrumbProps,
98
+ Ui3nBreadcrumbEmits,
99
+ Ui3nBreadcrumbSlots,
98
100
  Ui3nBreadcrumbs,
99
- Ui3nBreadcrumdsProps,
101
+ Ui3nBreadcrumbsProps,
102
+ Ui3nSwitch,
103
+ Ui3nSwitchProps,
104
+ Ui3nSwitchEmits,
105
+ Ui3nSwitchSlots,
100
106
  }
@@ -13,8 +13,8 @@
13
13
  {
14
14
  dot: false,
15
15
  value: '',
16
- color: '#0090ec',
17
- textColor: '#fff',
16
+ color: 'var(--color-bg-button-primary-default)',
17
+ textColor: 'var(--color-text-button-primary-default)',
18
18
  },
19
19
  )
20
20
 
@@ -45,53 +45,50 @@
45
45
  <template>
46
46
  <div
47
47
  ref="element"
48
- :class="[
49
- 'ui3n-badge-simple',
50
- { 'ui3n-badge-simple__dot': dot },
51
- ]"
48
+ :class="[$style.badgeSimple, dot && $style.dot]"
52
49
  >
53
50
  <span
54
51
  v-if="!dot"
55
- class="ui3n-badge-simple__text"
52
+ :class="$style.text"
56
53
  >
57
54
  {{ value }}
58
55
  </span>
59
56
  </div>
60
57
  </template>
61
58
 
62
- <style lang="scss" scoped>
63
- .ui3n-badge-simple{
64
- --ui3n-badge-size: 20px;
59
+ <style lang="scss" module>
60
+ .badgeSimple {
61
+ --ui3n-badge-size: 20px;
65
62
 
66
- position: relative;
67
- box-sizing: border-box;
68
- background-color: v-bind(color);
69
- outline: 1px var(--system-white, #fff) solid;
63
+ position: relative;
64
+ box-sizing: border-box;
65
+ background-color: v-bind(color);
66
+ outline: 1px var(--white-0) solid;
70
67
 
71
- &__dot {
72
- min-width: 8px;
73
- width: 8px;
74
- max-width: 8px;
75
- min-height: 8px;
76
- height: 8px;
77
- max-height: 8px;
78
- border-radius: 50%;
79
- }
68
+ &:not(.dot) {
69
+ min-height: var(--ui3n-badge-size);
70
+ height: var(--ui3n-badge-size);
71
+ width: max-content;
72
+ padding: 0 6px;
73
+ border-radius: 10px;
74
+ }
75
+ }
80
76
 
81
- &__text {
82
- display: block;
83
- color: v-bind(textColor);
84
- font-size: 12px;
85
- line-height: var(--ui3n-badge-size);
86
- text-align: center;
87
- }
77
+ .dot {
78
+ min-width: var(--spacing-s);
79
+ width: var(--spacing-s);
80
+ max-width: var(--spacing-s);
81
+ min-height: var(--spacing-s);
82
+ height: var(--spacing-s);
83
+ max-height: var(--spacing-s);
84
+ border-radius: 50%;
85
+ }
88
86
 
89
- &:not(.ui3n-badge-simple__dot) {
90
- min-height: var(--ui3n-badge-size);
91
- height: var(--ui3n-badge-size);
92
- width: max-content;
93
- padding: 0 6px;
94
- border-radius: 10px;
95
- }
96
- }
87
+ .text {
88
+ display: block;
89
+ color: v-bind(textColor);
90
+ font-size: var(--font-12);
91
+ line-height: var(--ui3n-badge-size);
92
+ text-align: center;
93
+ }
97
94
  </style>
@@ -1,7 +1,7 @@
1
1
  <script lang="ts" setup>
2
- import { computed, ref, useSlots } from 'vue'
3
- import get from 'lodash/get'
4
- import Ui3nBadgeSimple from './ui3n-badge-simple.vue'
2
+ import { computed, ref, useSlots } from 'vue';
3
+ import get from 'lodash/get';
4
+ import Ui3nBadgeSimple from './ui3n-badge-simple.vue';
5
5
 
6
6
  export interface Ui3nBadgeProps {
7
7
  dot?: boolean;
@@ -16,19 +16,19 @@
16
16
  {
17
17
  dot: false,
18
18
  value: '',
19
- color: '#0090ec',
20
- textColor: '#fff',
19
+ color: 'var(--color-bg-button-primary-default)',
20
+ textColor: 'var(--color-text-button-primary-default)',
21
21
  position: 'right-top',
22
22
  },
23
- )
23
+ );
24
24
 
25
25
  const slots = useSlots()
26
26
  const badgeElementSize = ref<{
27
27
  width: number;
28
28
  height: number;
29
- } | never>()
29
+ } | never>();
30
30
 
31
- const hasDefaultSlot = computed(() => !!slots.default)
31
+ const hasDefaultSlot = computed(() => !!slots.default);
32
32
  const style = computed(() => {
33
33
  const [xPosition, yPosition] = props.position.split('-')
34
34
  return {
@@ -37,16 +37,16 @@
37
37
  ...(yPosition === 'top' && { top: `-${get(badgeElementSize.value, 'height', 0) / 2}px` }),
38
38
  ...(yPosition === 'bottom' && { bottom: `-${get(badgeElementSize.value, 'height', 0) / 2}px` }),
39
39
  }
40
- })
40
+ });
41
41
  </script>
42
42
 
43
43
  <template>
44
44
  <!-- eslint-disable vue/no-multiple-template-root -->
45
45
  <div
46
46
  v-if="hasDefaultSlot"
47
- class="ui3n-badge"
47
+ :class="$style.badge"
48
48
  >
49
- <div class="ui3n-badge__wrapper">
49
+ <div :class="$style.wrapper">
50
50
  <slot />
51
51
 
52
52
  <ui3n-badge-simple
@@ -55,7 +55,7 @@
55
55
  :color="color"
56
56
  :text-color="textColor"
57
57
  :style="style"
58
- class="ui3n-badge__content"
58
+ :class="$style.content"
59
59
  @change:size="badgeElementSize = $event"
60
60
  />
61
61
  </div>
@@ -70,20 +70,20 @@
70
70
  />
71
71
  </template>
72
72
 
73
- <style lang="scss" scoped>
74
- .ui3n-badge {
75
- --ui3n-badge-size: 20px;
73
+ <style lang="scss" module>
74
+ .badge {
75
+ --ui3n-badge-size: 20px;
76
76
 
77
- position: relative;
77
+ position: relative;
78
+ }
78
79
 
79
- &__wrapper {
80
- position: relative;
81
- width: max-content;
82
- }
80
+ .wrapper {
81
+ position: relative;
82
+ width: max-content;
83
+ }
83
84
 
84
- &__content {
85
- position: absolute;
86
- z-index: 5;
87
- }
88
- }
85
+ .content {
86
+ position: absolute;
87
+ z-index: 5;
88
+ }
89
89
  </style>
@@ -1,30 +1,30 @@
1
1
  <script lang="ts" setup>
2
2
  import { computed, getCurrentInstance } from 'vue';
3
3
 
4
- export interface Ui3nBreadcrumdProps {
4
+ export interface Ui3nBreadcrumbProps {
5
5
  separator?: string | undefined;
6
6
  isActive?: boolean;
7
7
  disabled?: boolean;
8
8
  }
9
- export interface Ui3nBreadcrumdEmits {
9
+ export interface Ui3nBreadcrumbEmits {
10
10
  (ev: 'click', value: Event): void;
11
11
  }
12
- export interface Ui3nBreadcrumdSlots {
12
+ export interface Ui3nBreadcrumbSlots {
13
13
  separator: () => unknown;
14
14
  default: () => unknown;
15
15
  }
16
16
 
17
17
  const props = withDefaults(
18
- defineProps<Ui3nBreadcrumdProps>(),
18
+ defineProps<Ui3nBreadcrumbProps>(),
19
19
  {
20
20
  separator: undefined,
21
21
  isActive: false,
22
22
  disabled: false,
23
23
  },
24
- )
24
+ );
25
25
 
26
- const emits = defineEmits<Ui3nBreadcrumdEmits>()
27
- defineSlots<Ui3nBreadcrumdSlots>()
26
+ const emits = defineEmits<Ui3nBreadcrumbEmits>();
27
+ defineSlots<Ui3nBreadcrumbSlots>();
28
28
 
29
29
  const separatorValue = computed(() => {
30
30
  if (props.separator) {
@@ -33,33 +33,29 @@
33
33
 
34
34
  const instance = getCurrentInstance()
35
35
  return instance?.parent?.props.separator || '/'
36
- })
36
+ });
37
37
 
38
38
  const parentDisabled = computed(() => {
39
39
  const instance = getCurrentInstance()
40
- return instance?.parent?.props.disabled || false;
41
- })
40
+ return instance?.parent?.props.disabled || false
41
+ });
42
42
 
43
43
  const onClick = (ev: Event) => {
44
- emits('click', ev);
44
+ emits('click', ev)
45
45
  }
46
46
  </script>
47
47
 
48
48
  <template>
49
49
  <div
50
50
  :class="[
51
- 'ui3n-breadcrumb',
52
- {
53
- 'ui3n-breadcrumb--active': isActive,
54
- 'ui3n-breadcrumb--disabled': disabled || parentDisabled,
55
- },
51
+ $style.breadcrumb,
52
+ isActive && $style.active,
53
+ (disabled || parentDisabled) && $style.disabled,
56
54
  ]"
57
55
  v-on="isActive && !(disabled || parentDisabled) ? { click: onClick } : {}"
58
56
  >
59
57
  <slot />
60
- <div
61
- v-if="isActive"
62
- class="ui3n-breadcrumb__separator"
58
+ <div v-if="isActive" :class="$style.separator"
63
59
  >
64
60
  <slot name="separator">
65
61
  <span>{{ separatorValue }}</span>
@@ -68,36 +64,40 @@
68
64
  </div>
69
65
  </template>
70
66
 
71
- <style lang="scss" scoped>
72
- .ui3n-breadcrumb {
73
- --ui3n-breadcrumb-font-size: 16px;
74
- --ui3n-breadcrumb-color-default: var(--black-90, #212121);
75
- --ui3n-breadcrumb-color-selected: var(--blue-main, #0090ec);
67
+ <style lang="scss" module>
68
+ .breadcrumb {
69
+ --ui3n-breadcrumb-font-size: var(--spacing-m);
70
+ --ui3n-breadcrumb-color-default: var(--color-text-block-primary-default);
71
+ --ui3n-breadcrumb-color-selected: var(--color-text-block-accent-default);
76
72
 
77
- position: relative;
78
- display: flex;
79
- align-items: center;
73
+ position: relative;
74
+ display: flex;
75
+ align-items: center;
76
+ }
80
77
 
81
- &__separator {
82
- display: flex;
83
- align-items: center;
84
- margin: 0 var(--base-size, 8px);
85
- }
78
+ .separator {
79
+ display: flex;
80
+ align-items: center;
81
+ margin: 0 var(--spacing-s);
82
+ }
86
83
 
87
- &--active {
88
- font-size: var(--ui3n-breadcrumb-font-size);
89
- line-height: 1.25;
90
- color: var(--ui3n-breadcrumb-color-default);
84
+ .active {
85
+ font-size: var(--ui3n-breadcrumb-font-size);
86
+ line-height: 1.25;
87
+ color: var(--ui3n-breadcrumb-color-default);
91
88
 
92
- &:hover {
93
- cursor: pointer;
94
- color: var(--ui3n-breadcrumb-color-selected);
95
- }
96
- }
89
+ &:hover {
90
+ cursor: pointer;
91
+ color: var(--ui3n-breadcrumb-color-selected);
97
92
 
98
- &--disabled {
99
- cursor: default;
100
- pointer-events: none;
93
+ .separator {
94
+ color: var(--ui3n-breadcrumb-color-default);
101
95
  }
102
96
  }
97
+ }
98
+
99
+ .disabled {
100
+ cursor: default;
101
+ pointer-events: none;
102
+ }
103
103
  </style>
@@ -1,28 +1,28 @@
1
1
  <script lang="ts" setup>
2
- export interface Ui3nBreadcrumdsProps {
3
- separator?: string;
4
- disabled?: boolean;
5
- }
2
+ export interface Ui3nBreadcrumbsProps {
3
+ separator?: string;
4
+ disabled?: boolean;
5
+ }
6
6
 
7
- withDefaults(
8
- defineProps<Ui3nBreadcrumdsProps>(),
9
- {
10
- separator: '/',
11
- disabled: false,
12
- },
13
- )
7
+ withDefaults(
8
+ defineProps<Ui3nBreadcrumbsProps>(),
9
+ {
10
+ separator: '/',
11
+ disabled: false,
12
+ },
13
+ );
14
14
  </script>
15
15
 
16
16
  <template>
17
- <div :class="['ui3n-breadcrumbs']">
18
- <slot />
17
+ <div :class="$style.breadcrumbs">
18
+ <slot/>
19
19
  </div>
20
20
  </template>
21
21
 
22
- <style lang="scss" scoped>
23
- .ui3n-breadcrumbs {
24
- position: relative;
25
- display: flex;
26
- flex-wrap: wrap;
27
- }
22
+ <style lang="scss" module>
23
+ .breadcrumbs {
24
+ position: relative;
25
+ display: flex;
26
+ flex-wrap: wrap;
27
+ }
28
28
  </style>