@v1nt1248/3nclient-lib 0.0.42 → 0.1.1

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 (62) hide show
  1. package/README.md +7 -4
  2. package/dist/components/index.d.ts +23 -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 +30 -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 +18 -11
  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-progress-circular.vue.d.ts +43 -0
  19. package/dist/components/ui3n-progress-linear.vue.d.ts +42 -0
  20. package/dist/components/ui3n-step-line-bar.vue.d.ts +30 -0
  21. package/dist/components/ui3n-switch.vue.d.ts +55 -0
  22. package/dist/components/ui3n-table-sort-icon.vue.d.ts +1 -1
  23. package/dist/components/ui3n-table.vue.d.ts +2 -2
  24. package/dist/components/ui3n-tabs.vue.d.ts +2 -2
  25. package/dist/components/ui3n-text.vue.d.ts +29 -3
  26. package/dist/components/ui3n-virtual-scroll.vue.d.ts +9 -6
  27. package/dist/constants/types.d.ts +2 -4
  28. package/dist/directives/index.d.ts +1 -1
  29. package/dist/index.d.ts +31 -27
  30. package/dist/plugins/dialogs.d.ts +1 -1
  31. package/dist/plugins/index.d.ts +8 -8
  32. package/dist/plugins/notifications.d.ts +1 -1
  33. package/dist/plugins/vue-bus.d.ts +1 -1
  34. package/dist/style.css +1 -1
  35. package/dist/tools/sqlite-on-3nstorage/index.d.ts +3 -3
  36. package/dist/ui-3n-lib.js +7273 -6748
  37. package/package.json +58 -59
  38. package/src/components/index.ts +59 -41
  39. package/src/components/ui3n-badge-simple.vue +35 -38
  40. package/src/components/ui3n-badge.vue +25 -25
  41. package/src/components/ui3n-breadcrumb.vue +44 -44
  42. package/src/components/ui3n-breadcrumbs.vue +19 -19
  43. package/src/components/ui3n-button.vue +246 -150
  44. package/src/components/ui3n-checkbox.vue +199 -158
  45. package/src/components/ui3n-chip.vue +96 -98
  46. package/src/components/ui3n-dialog.vue +225 -235
  47. package/src/components/ui3n-drop-files.vue +146 -154
  48. package/src/components/ui3n-emoji.vue +62 -64
  49. package/src/components/ui3n-icon.vue +32 -13
  50. package/src/components/ui3n-input.vue +283 -215
  51. package/src/components/ui3n-list.vue +92 -111
  52. package/src/components/ui3n-menu.vue +101 -100
  53. package/src/components/ui3n-notification.vue +182 -113
  54. package/src/components/ui3n-progress-circular.vue +188 -0
  55. package/src/components/ui3n-progress-linear.vue +119 -0
  56. package/src/components/ui3n-step-line-bar.vue +66 -0
  57. package/src/components/ui3n-switch.vue +146 -0
  58. package/src/components/ui3n-table-sort-icon.vue +1 -2
  59. package/src/components/ui3n-table.vue +233 -228
  60. package/src/components/ui3n-tabs.vue +141 -148
  61. package/src/components/ui3n-text.vue +235 -146
  62. 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.1",
6
6
  "description": "Library for 3NWeb clients",
7
7
  "type": "module",
8
8
  "files": [
@@ -29,69 +29,68 @@
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",
44
+ "vuedraggable": "^4.1.0"
43
45
  },
44
46
  "peerDependencies": {
45
- "pinia": "^2.1.7",
46
- "vue": "^3.4.21"
47
+ "pinia": "2.1.7",
48
+ "vue": "3.4.27"
47
49
  },
48
50
  "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"
51
+ "@types/lodash": "4.17.5",
52
+ "@types/node": "20.14.2",
53
+ "@types/sanitize-html": "2.11.0",
54
+ "@typescript-eslint/eslint-plugin": "7.13.0",
55
+ "@typescript-eslint/parser": "7.13.0",
56
+ "@vitejs/plugin-vue": "5.0.5",
57
+ "@vue/compiler-core": "3.4.27",
58
+ "@vue/eslint-config-typescript": "13.0.0",
59
+ "@vue/runtime-core": "3.4.27",
60
+ "@vuedx/typescript-plugin-vue": "0.7.6",
61
+ "eslint": "9.4.0",
62
+ "eslint-config-prettier": "^9.1.0",
63
+ "eslint-plugin-import": "2.29.1",
64
+ "eslint-plugin-node": "11.1.0",
65
+ "eslint-plugin-prettier": "^5.1.3",
66
+ "eslint-plugin-promise": "6.2.0",
67
+ "eslint-plugin-vue": "9.26.0",
68
+ "jackspeak": "3.4.0",
69
+ "path": "0.12.7",
70
+ "pinia": "2.1.7",
71
+ "postcss-html": "1.7.0",
72
+ "prettier": "^3.3.3",
73
+ "sass": "1.77.5",
74
+ "stylelint": "16.6.1",
75
+ "stylelint-config-recommended-scss": "14.0.0",
76
+ "stylelint-config-recommended-vue": "1.5.0",
77
+ "stylelint-config-standard": "36.0.0",
78
+ "stylelint-scss": "6.3.1",
79
+ "typescript": "5.4.5",
80
+ "vite": "5.2.13",
81
+ "vite-plugin-css-injected-by-js": "3.5.1",
82
+ "vite-plugin-dts": "3.9.1",
83
+ "vitepress": "1.2.3",
84
+ "vue": "3.4.27",
85
+ "vue-tsc": "2.0.21"
95
86
  },
96
- "packageManager": "pnpm@8.15.5"
87
+ "packageManager": "pnpm@9.5.0",
88
+ "pnpm": {
89
+ "peerDependencyRules": {
90
+ "ignoreMissing": [
91
+ "@algolia/client-search",
92
+ "search-insights"
93
+ ]
94
+ }
95
+ }
97
96
  }
@@ -1,40 +1,48 @@
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';
40
+ import Ui3nStepLineBar from './ui3n-step-line-bar.vue';
41
+ import type { Ui3nStepLineBarProps } from './ui3n-step-line-bar.vue';
42
+ import Ui3nProgressLinear from './ui3n-progress-linear.vue';
43
+ import type { Ui3nProgressLinearProps } from './ui3n-progress-linear.vue';
44
+ import Ui3nProgressCircular from './ui3n-progress-circular.vue';
45
+ import type { Ui3nProgressCircularProps } from './ui3n-progress-circular.vue';
38
46
 
39
47
  export {
40
48
  Ui3nIcon,
@@ -92,9 +100,19 @@ export {
92
100
  Ui3nBadge,
93
101
  Ui3nBadgeProps,
94
102
  Ui3nBreadcrumb,
95
- Ui3nBreadcrumdProps,
96
- Ui3nBreadcrumdEmits,
97
- Ui3nBreadcrumdSlots,
103
+ Ui3nBreadcrumbProps,
104
+ Ui3nBreadcrumbEmits,
105
+ Ui3nBreadcrumbSlots,
98
106
  Ui3nBreadcrumbs,
99
- Ui3nBreadcrumdsProps,
107
+ Ui3nBreadcrumbsProps,
108
+ Ui3nSwitch,
109
+ Ui3nSwitchProps,
110
+ Ui3nSwitchEmits,
111
+ Ui3nSwitchSlots,
112
+ Ui3nStepLineBar,
113
+ Ui3nStepLineBarProps,
114
+ Ui3nProgressLinear,
115
+ Ui3nProgressLinearProps,
116
+ Ui3nProgressCircular,
117
+ Ui3nProgressCircularProps,
100
118
  }
@@ -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>