@redseed/redseed-ui-vue3 8.4.6 → 8.6.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.
@@ -309,6 +309,31 @@ For smaller cards that should display more columns per row, use the compact vari
309
309
  </template>
310
310
  ```
311
311
 
312
+ ### Meeting Card (Not Scheduled)
313
+ ```vue
314
+ <template>
315
+ <Card draft :clickable="false" :hoverable="false">
316
+ <template #header>
317
+ <CardHeader>
318
+ Weekly 1:1
319
+
320
+ <template #badge>
321
+ <BadgeSecondary>
322
+ Not scheduled
323
+ </BadgeSecondary>
324
+ </template>
325
+
326
+ <template #subtitle>
327
+ No upcoming meeting
328
+ </template>
329
+ </CardHeader>
330
+ </template>
331
+
332
+ Schedule a time to connect.
333
+ </Card>
334
+ </template>
335
+ ```
336
+
312
337
  ### Card with Meta Information
313
338
  ```vue
314
339
  <template>
@@ -342,4 +367,4 @@ For smaller cards that should display more columns per row, use the compact vari
342
367
  - Interactive cards (ButtonCard, RadioCard) are keyboard accessible
343
368
  - Focus states are clearly visible
344
369
  - Screen readers can navigate through card content and actions
345
- - ARIA labels and roles are included where appropriate
370
+ - ARIA labels and roles are included where appropriate
package/index.js CHANGED
@@ -32,6 +32,7 @@ export * from './src/components/MetaInfo'
32
32
  export * from './src/components/Modal'
33
33
  export * from './src/components/Pagination'
34
34
  export * from './src/components/Progress'
35
+ export * from './src/components/Skeleton'
35
36
  export * from './src/components/Social'
36
37
  export * from './src/components/Sorting'
37
38
  export * from './src/components/Switcher'
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
- "name": "@redseed/redseed-ui-vue3",
3
- "version": "8.4.6",
4
- "description": "RedSeed UI Vue 3 components",
5
- "main": "index.js",
6
- "repository": "https://github.com/redseedtraining/redseed-ui",
7
- "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1"
9
- },
10
- "keywords": [],
11
- "author": "",
12
- "license": "ISC",
13
- "dependencies": {
14
- "@heroicons/vue": "^2.2.0",
15
- "@vueuse/components": "^14.1.0",
16
- "@vueuse/core": "^14.1.0",
17
- "lodash": "^4.17.21",
18
- "lottie-web": "^5.13.0",
19
- "vue": "^3.5.25"
20
- }
21
- }
2
+ "name": "@redseed/redseed-ui-vue3",
3
+ "version": "8.6.0",
4
+ "description": "RedSeed UI Vue 3 components",
5
+ "main": "index.js",
6
+ "repository": "https://github.com/redseedtraining/redseed-ui",
7
+ "scripts": {
8
+ "test": "echo \"Error: no test specified\" && exit 1"
9
+ },
10
+ "keywords": [],
11
+ "author": "",
12
+ "license": "ISC",
13
+ "dependencies": {
14
+ "@heroicons/vue": "2.2.0",
15
+ "@vueuse/components": "14.2.0",
16
+ "@vueuse/core": "14.2.1",
17
+ "lodash": "4.17.23",
18
+ "lottie-web": "5.13.0",
19
+ "vue": "3.5.28"
20
+ }
21
+ }
@@ -51,6 +51,10 @@ const props = defineProps({
51
51
  type: Boolean,
52
52
  default: false,
53
53
  },
54
+ draft: {
55
+ type: Boolean,
56
+ default: false,
57
+ },
54
58
  })
55
59
 
56
60
  const emit = defineEmits(['click'])
@@ -71,6 +75,7 @@ const cardClass = computed(() => [
71
75
  'rsui-card--info': props.info,
72
76
  'rsui-card--warning': props.warning,
73
77
  'rsui-card--error': props.error,
78
+ 'rsui-card--draft': props.draft,
74
79
  'rsui-card--2xs': responsiveWidth.value['2xs'],
75
80
  'rsui-card--xs': responsiveWidth.value['xs'],
76
81
  'rsui-card--sm': responsiveWidth.value['sm'],
@@ -90,6 +95,26 @@ function onClick() {
90
95
  </script>
91
96
  <template>
92
97
  <div ref="cardElement" :class="cardClass" data-testid="card">
98
+ <svg
99
+ v-if="draft"
100
+ class="rsui-card__draft-border"
101
+ width="100%"
102
+ height="100%"
103
+ xmlns="http://www.w3.org/2000/svg"
104
+ aria-hidden="true"
105
+ focusable="false"
106
+ >
107
+ <rect
108
+ width="100%"
109
+ height="100%"
110
+ fill="none"
111
+ rx="12"
112
+ stroke="currentColor"
113
+ stroke-width="1"
114
+ stroke-dasharray="8 16"
115
+ stroke-linecap="square"
116
+ ></rect>
117
+ </svg>
93
118
  <div v-if="clickable" class="rsui-card__action-layer" :title="$attrs.title" @click="onClick"></div>
94
119
 
95
120
  <div v-if="$slots.image"
@@ -0,0 +1,86 @@
1
+ <script setup>
2
+ import { computed } from 'vue'
3
+
4
+ const props = defineProps({
5
+ line: {
6
+ type: Boolean,
7
+ default: false,
8
+ },
9
+ circle: {
10
+ type: Boolean,
11
+ default: false,
12
+ },
13
+ square: {
14
+ type: Boolean,
15
+ default: false,
16
+ },
17
+ full: {
18
+ type: Boolean,
19
+ default: false,
20
+ },
21
+ half: {
22
+ type: Boolean,
23
+ default: false,
24
+ },
25
+ oneThird: {
26
+ type: Boolean,
27
+ default: false,
28
+ },
29
+ twoThirds: {
30
+ type: Boolean,
31
+ default: false,
32
+ },
33
+ thick: {
34
+ type: Boolean,
35
+ default: false,
36
+ },
37
+ rounded: {
38
+ type: Boolean,
39
+ default: false,
40
+ },
41
+ start: {
42
+ type: Boolean,
43
+ default: false,
44
+ },
45
+ end: {
46
+ type: Boolean,
47
+ default: false,
48
+ },
49
+ })
50
+
51
+ const shape = computed(() => {
52
+ if (props.circle) return 'circle'
53
+ if (props.square) return 'square'
54
+ return 'line'
55
+ })
56
+
57
+ const widthClass = computed(() => {
58
+ if (props.twoThirds) return 'rsui-skeleton--two-thirds'
59
+ if (props.oneThird) return 'rsui-skeleton--one-third'
60
+ if (props.half) return 'rsui-skeleton--half'
61
+ if (props.full) return 'rsui-skeleton--full'
62
+ return 'rsui-skeleton--full'
63
+ })
64
+
65
+ const positionClass = computed(() => {
66
+ if (props.end) return 'rsui-skeleton--end'
67
+ if (props.start) return 'rsui-skeleton--start'
68
+ return ''
69
+ })
70
+ </script>
71
+
72
+ <template>
73
+ <div :class="['rsui-skeleton', widthClass, positionClass]">
74
+ <div
75
+ :class="[
76
+ shape === 'line' && 'rsui-skeleton__line',
77
+ shape === 'line' && props.thick && 'rsui-skeleton__line--thick',
78
+ shape === 'line' && props.rounded && 'rsui-skeleton__line--rounded',
79
+ shape === 'circle' && 'rsui-skeleton__circle',
80
+ shape === 'square' && 'rsui-skeleton__square',
81
+ shape === 'square' && props.rounded && 'rsui-skeleton__square--rounded',
82
+ ]"
83
+ aria-hidden="true"
84
+ ></div>
85
+ </div>
86
+ </template>
@@ -0,0 +1,5 @@
1
+ import Skeleton from './Skeleton.vue'
2
+
3
+ export {
4
+ Skeleton,
5
+ }