srcdev-nuxt-components 5.0.2 → 6.0.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 (75) hide show
  1. package/README.md +1 -9
  2. package/nuxt.config.ts +5 -2
  3. package/package.json +11 -12
  4. package/assets/styles/extends-layer/srcdev-components/display-prompt-core/index.css +0 -70
  5. package/assets/styles/extends-layer/srcdev-components/index.css +0 -2
  6. package/assets/styles/extends-layer/srcdev-components/themes/_error.css +0 -15
  7. package/assets/styles/extends-layer/srcdev-components/themes/_info.css +0 -15
  8. package/assets/styles/extends-layer/srcdev-components/themes/_success.css +0 -15
  9. package/assets/styles/extends-layer/srcdev-components/themes/_warning.css +0 -15
  10. package/assets/styles/extends-layer/srcdev-components/themes/index.css +0 -4
  11. package/assets/styles/main.css +0 -2
  12. package/assets/styles/setup/_head.css +0 -5
  13. package/assets/styles/setup/a11y/_utils.css +0 -20
  14. package/assets/styles/setup/a11y/_variables.css +0 -10
  15. package/assets/styles/setup/a11y/index.css +0 -2
  16. package/assets/styles/setup/index.css +0 -5
  17. package/assets/styles/setup/typography/index.css +0 -2
  18. package/assets/styles/setup/typography/utility-classes/_generic-font-classes.css +0 -192
  19. package/assets/styles/setup/typography/utility-classes/_generic-font-variation-settings.css +0 -29
  20. package/assets/styles/setup/typography/utility-classes/_generic-font-weights.css +0 -41
  21. package/assets/styles/setup/typography/utility-classes/index.css +0 -3
  22. package/assets/styles/setup/typography/vars/_reponsive-font-sizes.css +0 -10
  23. package/assets/styles/setup/typography/vars/index.css +0 -1
  24. package/assets/styles/setup/utility-classes/_margin-helpers.css +0 -334
  25. package/assets/styles/setup/utility-classes/_padding-helpers.css +0 -308
  26. package/assets/styles/setup/utility-classes/_page.css +0 -50
  27. package/assets/styles/setup/utility-classes/index.css +0 -3
  28. package/assets/styles/setup/variables/colors/_blue.css +0 -15
  29. package/assets/styles/setup/variables/colors/_gray.css +0 -16
  30. package/assets/styles/setup/variables/colors/_green.css +0 -15
  31. package/assets/styles/setup/variables/colors/_orange.css +0 -15
  32. package/assets/styles/setup/variables/colors/_red.css +0 -15
  33. package/assets/styles/setup/variables/colors/_yellow.css +0 -15
  34. package/assets/styles/setup/variables/colors/index.css +0 -6
  35. package/assets/styles/setup/variables/index.css +0 -1
  36. package/components/accordian/AccordianCore.vue +0 -46
  37. package/components/animated-svg-text/AnimatedSvgText.vue +0 -87
  38. package/components/canvas-switcher/CanvasSwitcher.vue +0 -77
  39. package/components/carousel-basic/CarouselBasic.vue +0 -291
  40. package/components/carousel-basic/CarouselFlip.vue +0 -461
  41. package/components/carousel-basic/CarouselInfinite.vue +0 -325
  42. package/components/clip-element/ClipElement.vue +0 -73
  43. package/components/clipped-panels/ClippedPanel.vue +0 -73
  44. package/components/container-glow/ContainerGlowCore.vue +0 -211
  45. package/components/content-grid/ContentGrid.vue +0 -85
  46. package/components/deep-expanding-menu/DeepExpandingMenu.vue +0 -214
  47. package/components/deep-expanding-menu/DeepExpandingMenuOld.vue +0 -218
  48. package/components/display-banner/DisplayBanner.vue +0 -63
  49. package/components/display-details/DisplayDetailsCore.vue +0 -301
  50. package/components/display-dialog/DisplayDialogCore.vue +0 -255
  51. package/components/display-dialog/variants/DisplayDialogConfirm.vue +0 -45
  52. package/components/display-dialog/variants/DisplayDialogScrollableContent.vue +0 -49
  53. package/components/display-grid/DisplayGridCore.vue +0 -22
  54. package/components/display-prompt/DisplayPromptCore.vue +0 -187
  55. package/components/display-prompt/variants/DisplayPromptError.vue +0 -53
  56. package/components/expanding-panel/ExpandingPanel.vue +0 -124
  57. package/components/image-galleries/SliderGallery.vue +0 -784
  58. package/components/layout-grids/LayoutGridA.vue +0 -103
  59. package/components/layout-grids/LayoutGridB.vue +0 -132
  60. package/components/layout-row/LayoutRow.vue +0 -165
  61. package/components/masonry-grid/MasonryGrid.vue +0 -62
  62. package/components/masonry-grid-ordered/MasonryGridOrdered.vue +0 -158
  63. package/components/masonry-grid-sorted/MasonryGridSorted.vue +0 -115
  64. package/components/pop-over/PopOver.vue +0 -88
  65. package/components/responsive-header/NavigationItems.vue +0 -169
  66. package/components/responsive-header/ResponsiveHeader.vue +0 -686
  67. package/components/rotating-carousel/RotatingCarouselImage.vue +0 -200
  68. package/components/skip-links/SkipLinks.vue +0 -92
  69. package/components/tabs/TabsCore.vue +0 -277
  70. package/composables/useDialogControls.ts +0 -44
  71. package/composables/useStyleClassPassthrough.ts +0 -35
  72. package/composables/useTabs.ts +0 -201
  73. package/types/gallery-data.ts +0 -13
  74. package/types/responsiveHeader.ts +0 -38
  75. package/types/types.carousel-basic.ts +0 -19
@@ -1,85 +0,0 @@
1
- <template>
2
- <div class="ui-content-grid" :class="[applyClasses]" :data-testid="dataTestid">
3
- <div v-if="hasSlot1" class="col-1">
4
- <slot name="slot1"></slot>
5
- </div>
6
- <div v-if="hasSlot2" class="col-2">
7
- <slot name="slot2"></slot>
8
- </div>
9
- </div>
10
- </template>
11
-
12
- <script setup lang="ts">
13
- const props = defineProps({
14
- dataTestid: {
15
- type: String,
16
- default: 'ui-content-grid',
17
- },
18
- applyClasses: {
19
- type: String,
20
- default: '',
21
- },
22
- });
23
-
24
- const slots = useSlots();
25
- const hasSlot1 = ref(slots.slot1 !== undefined);
26
- const hasSlot2 = ref(slots.slot2 !== undefined);
27
- </script>
28
-
29
- <style lang="css">
30
- .ui-content-grid {
31
- --_margin-inline: 0;
32
- --_grid-template-columns: repeat(4, 1fr);
33
- --_grid-template-rows: repeat(2, auto);
34
- --_grid-gap: 1.6rem;
35
-
36
- display: grid;
37
- gap: var(--_grid-gap);
38
- grid-template-columns: var(--_grid-template-columns);
39
- grid-template-rows: var(--_grid-template-rows);
40
- margin-inline: var(--_margin-inline);
41
-
42
- @container content (min-width: 768px) {
43
- --_margin-inline: 0;
44
- --_grid-template-columns: repeat(6, 1fr);
45
- --_grid-gap: 3.2rem;
46
- }
47
-
48
- @container content (min-width: 1024px) {
49
- --_margin-inline: 0;
50
- --_grid-template-columns: repeat(12, 1fr);
51
- --_grid-template-rows: initial;
52
- }
53
-
54
- .col-1 {
55
- --_grid-column: 1 / span 4;
56
- --_grid-row: 1;
57
- grid-column: var(--_grid-column);
58
- grid-row: var(--_grid-row);
59
-
60
- @container content (min-width: 768px) {
61
- --_grid-column: 1 / span 6;
62
- }
63
-
64
- @container content (min-width: 1024px) {
65
- --_grid-column: 1 / span 6;
66
- }
67
- }
68
-
69
- .col-2 {
70
- --_grid-column: 1 / span 4;
71
- --_grid-row: 2;
72
- grid-column: var(--_grid-column);
73
- grid-row: var(--_grid-row);
74
-
75
- @container content (min-width: 768px) {
76
- --_grid-column: 1 / span 6;
77
- }
78
-
79
- @container content (min-width: 1024px) {
80
- --_grid-column: 7 / span 6;
81
- --_grid-row: 1;
82
- }
83
- }
84
- }
85
- </style>
@@ -1,214 +0,0 @@
1
- <template>
2
- <component :is="tag" class="deep-expanding-menu" :class="[elementClasses]">
3
- <div class="inner">
4
- <template v-for="(link, key) in navLinks" :key="key">
5
- <NuxtLink v-if="link.path" :to="link.path" class="navigation-link">{{ link.name }}</NuxtLink>
6
-
7
- <div v-else class="navigation-group" :style="`--_anchor-name: --anchor-nav-1-${key};`" ref="detailsRef">
8
- <button :popovertarget="`popovertarget-nav-1-${key}`" class="navigation-group-toggle">
9
- <span>{{ link.name }}</span>
10
- <Icon name="bi:caret-down-fill" class="icon" />
11
- </button>
12
-
13
- <div class="navigation-group-panel" popover role="menu" :id="`popovertarget-nav-1-${key}`">
14
- <h4 class="heading-4 mb-6">{{ link.childLinksTitle }}</h4>
15
- <ul class="navigation-group-list">
16
- <li class="navigation-group-item" v-for="childLink in link.childLinks" :key="childLink.name">
17
- <NuxtLink :to="childLink.path" class="navigation-group-link">{{ childLink.name }}</NuxtLink>
18
- </li>
19
- </ul>
20
- </div>
21
- </div>
22
- </template>
23
- </div>
24
- </component>
25
- </template>
26
-
27
- <script lang="ts">
28
- const TAGS_ALLOWED = <string[]>['div', 'section', 'nav', 'ul', 'ol'];
29
-
30
- interface ResponsiveHeaderNavItem {
31
- name: string;
32
- path?: string;
33
- isExternal?: boolean;
34
- childLinks?: ResponsiveHeaderNavItem[];
35
- childLinksTitle?: string;
36
- }
37
- </script>
38
-
39
- <script setup lang="ts">
40
- const props = defineProps({
41
- tag: {
42
- type: String,
43
- default: 'nav',
44
- validator(value: string) {
45
- return TAGS_ALLOWED.includes(value);
46
- },
47
- },
48
- navLinks: {
49
- type: Array as PropType<ResponsiveHeaderNavItem[]>,
50
- default: () => [],
51
- },
52
- styleClassPassthrough: {
53
- type: Array as PropType<string[]>,
54
- default: () => [],
55
- },
56
- });
57
-
58
- const { elementClasses, resetElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
59
- // const detailsRef = useTemplateRef('detailsRef');
60
-
61
- watch(
62
- () => props.styleClassPassthrough,
63
- () => {
64
- resetElementClasses(props.styleClassPassthrough);
65
- }
66
- );
67
- </script>
68
-
69
- <style lang="css">
70
- @layer deep-expanding-menu-setup {
71
- @position-try --anchor-left {
72
- inset: auto;
73
- top: calc(anchor(bottom) + 10px);
74
- left: calc(anchor(left) + 10px);
75
- }
76
-
77
- @position-try-fallbacks --anchor-right {
78
- inset: auto;
79
- top: calc(anchor(bottom) + 10px);
80
- right: calc(anchor(right) + 10px);
81
- }
82
-
83
- .deep-expanding-menu {
84
- --_gap-between-top-level-items: 24px;
85
-
86
- container-type: inline-size;
87
- display: grid;
88
- grid-template-areas: 'element-stack';
89
-
90
- .inner {
91
- grid-area: element-stack;
92
- display: flex;
93
- gap: var(--_gap-between-top-level-items);
94
- align-items: center;
95
-
96
- .navigation-link,
97
- .navigation-group-toggle {
98
- all: unset;
99
- border-bottom: 2px solid transparent;
100
- padding-block: 8px;
101
-
102
- transition: border-color 200ms;
103
-
104
- &:hover {
105
- cursor: pointer;
106
- border-color: light-dark(var(--blue-12), var(--gray-0));
107
- }
108
-
109
- &:focus {
110
- border-color: light-dark(var(--blue-12), var(--gray-0));
111
- }
112
-
113
- &:focus-visible {
114
- border-color: light-dark(var(--blue-12), var(--gray-0));
115
- }
116
- }
117
-
118
- .navigation-group {
119
- --_icon-transform: scaleY(1);
120
- position: relative;
121
-
122
- .navigation-group-toggle {
123
- anchor-name: var(--_anchor-name);
124
-
125
- display: flex;
126
- align-items: center;
127
- gap: 12px;
128
-
129
- .icon {
130
- display: block;
131
- font-size: 1.2rem;
132
-
133
- transform: var(--_icon-transform);
134
- transition: transform 200ms;
135
- }
136
- }
137
-
138
- .navigation-group-panel {
139
- display: none;
140
- position: absolute;
141
- position-anchor: var(--_anchor-name);
142
- margin: 0;
143
- /* inset: auto; */
144
- top: calc(anchor(bottom) + 10px);
145
- left: calc(anchor(left) + 0px);
146
-
147
- opacity: 0;
148
- transition: opacity 200ms, display 200ms, overlay 200ms;
149
- transition-behavior: allow-discrete;
150
-
151
- width: min(100%, 50vw);
152
-
153
- background-color: white;
154
- border: 1px solid black;
155
- border-radius: 12px;
156
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
157
- padding: 12px;
158
- overflow: clip;
159
-
160
- &:popover-open {
161
- display: block;
162
- opacity: 1;
163
-
164
- @starting-style {
165
- display: block;
166
- opacity: 0;
167
- }
168
- }
169
-
170
- h4 {
171
- color: var(--gray-12);
172
- }
173
-
174
- .navigation-group-list {
175
- display: grid;
176
- grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
177
- gap: 12px;
178
- padding-inline-start: 0;
179
- margin-block-end: 8px;
180
-
181
- .navigation-group-item {
182
- display: block;
183
-
184
- a.navigation-group-link {
185
- display: inline-block;
186
- color: var(--gray-12);
187
- text-decoration: none;
188
- padding-block: 8px;
189
-
190
- border-bottom: 2px solid transparent;
191
-
192
- transition: border-color 200ms;
193
-
194
- &:hover {
195
- cursor: pointer;
196
- border-color: var(--gray-12);
197
- }
198
-
199
- &:focus-visible {
200
- border-color: var(--gray-12);
201
- }
202
- }
203
- }
204
- }
205
- }
206
-
207
- &:has(.navigation-group-panel:popover-open) {
208
- --_icon-transform: scaleY(-1);
209
- }
210
- }
211
- }
212
- }
213
- }
214
- </style>
@@ -1,218 +0,0 @@
1
- <template>
2
- <component :is="tag" class="deep-expanding-menu-old" :class="[elementClasses]">
3
- <div class="inner">
4
- <template v-for="(link, key) in navLinks" :key="key">
5
- <NuxtLink v-if="link.path" :to="link.path" class="navigation-link">{{ link.name }}</NuxtLink>
6
- <details v-else class="navigation-group" name="navigation-group" ref="navigationGroupRef">
7
- <summary class="navigation-group-toggle">
8
- <span>{{ link.name }}</span>
9
- <Icon name="bi:caret-down-fill" class="icon" />
10
- </summary>
11
- <div class="navigation-group-panel" :id="`popovertarget-nav-1-${key}`">
12
- <h4 class="heading-4 mb-6">{{ link.childLinksTitle }}</h4>
13
- <ul class="navigation-group-list">
14
- <li class="navigation-group-item" v-for="childLink in link.childLinks" :key="childLink.name">
15
- <NuxtLink :to="childLink.path" class="navigation-group-link">{{ childLink.name }}</NuxtLink>
16
- </li>
17
- </ul>
18
- </div>
19
- </details>
20
- </template>
21
- </div>
22
- </component>
23
- </template>
24
-
25
- <script setup lang="ts">
26
- import { onClickOutside } from '@vueuse/core';
27
-
28
- const props = defineProps({
29
- tag: {
30
- type: String,
31
- default: 'nav',
32
- validator(value: string) {
33
- return TAGS_ALLOWED.includes(value);
34
- },
35
- },
36
- navLinks: {
37
- type: Array as PropType<ResponsiveHeaderNavItem[]>,
38
- default: () => [],
39
- },
40
- styleClassPassthrough: {
41
- type: Array as PropType<string[]>,
42
- default: () => [],
43
- },
44
- });
45
-
46
- const { elementClasses, resetElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
47
-
48
- const navigationGroupRef = useTemplateRef<HTMLElement[]>('navigationGroupRef');
49
-
50
- watch(
51
- () => props.styleClassPassthrough,
52
- () => {
53
- resetElementClasses(props.styleClassPassthrough);
54
- }
55
- );
56
-
57
- onMounted(() => {
58
- navigationGroupRef.value?.forEach((element, index) => {
59
- onClickOutside(element, () => {
60
- navigationGroupRef.value?.[index]?.removeAttribute('open');
61
- });
62
- });
63
- });
64
- </script>
65
-
66
- <script lang="ts">
67
- const TAGS_ALLOWED = <string[]>['div', 'section', 'nav', 'ul', 'ol'];
68
-
69
- interface ResponsiveHeaderNavItem {
70
- name: string;
71
- path?: string;
72
- isExternal?: boolean;
73
- childLinksTitle?: string;
74
- childLinks?: ResponsiveHeaderNavItem[];
75
- }
76
- </script>
77
-
78
- <style lang="css">
79
- @layer popover-setup {
80
- .deep-expanding-menu-old {
81
- container-type: inline-size;
82
- display: grid;
83
- grid-template-areas: 'element-stack';
84
- align-items: center;
85
- gap: 12px;
86
-
87
- .inner {
88
- grid-area: element-stack;
89
- display: flex;
90
- gap: 24px;
91
- align-items: center;
92
- z-index: 1;
93
-
94
- .navigation-link,
95
- .navigation-group-toggle {
96
- all: unset;
97
- border-bottom: 2px solid transparent;
98
- padding-block: 8px;
99
-
100
- transition: border-color 200ms;
101
-
102
- &:hover {
103
- cursor: pointer;
104
- border-color: light-dark(var(--blue-12), var(--gray-0));
105
- }
106
-
107
- &:focus {
108
- border-color: light-dark(var(--blue-12), var(--gray-0));
109
- }
110
-
111
- &:focus-visible {
112
- border-color: light-dark(var(--blue-12), var(--gray-0));
113
- }
114
- }
115
-
116
- .navigation-group {
117
- --_icon-transform: scaleY(1);
118
-
119
- display: grid;
120
- grid-template-areas: 'details-stack';
121
- z-index: 1;
122
- position: relative;
123
-
124
- summary::-webkit-details-marker,
125
- summary::marker {
126
- display: none;
127
- }
128
-
129
- &[open] {
130
- --_icon-transform: scaleY(-1);
131
- }
132
-
133
- .navigation-group-toggle {
134
- grid-area: details-stack;
135
-
136
- display: flex !important;
137
- align-items: center;
138
- gap: 12px;
139
- list-style: none;
140
-
141
- .icon {
142
- display: block;
143
- font-size: 1.2rem;
144
-
145
- transform: var(--_icon-transform);
146
- transition: transform 200ms;
147
- }
148
- }
149
-
150
- .navigation-group-panel {
151
- background-color: black;
152
- display: grid;
153
- grid-area: details-stack;
154
- z-index: 2;
155
- position: absolute;
156
- inset: auto;
157
- top: 40px;
158
- left: 0px;
159
- gap: 12px;
160
-
161
- width: 200px;
162
-
163
- @media screen and (min-width: 768px) {
164
- width: 400px;
165
- }
166
-
167
- @media screen and (min-width: 1024px) {
168
- width: 600px;
169
- }
170
-
171
- background-color: white;
172
- border: 1px solid black;
173
- border-radius: 12px;
174
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
175
- padding: 12px;
176
- overflow: clip;
177
-
178
- h4 {
179
- color: var(--gray-12);
180
- }
181
-
182
- .navigation-group-list {
183
- display: grid;
184
- grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
185
- gap: 12px;
186
- padding-inline-start: 0;
187
- margin-block-end: 8px;
188
-
189
- .navigation-group-item {
190
- display: block;
191
-
192
- a.navigation-group-link {
193
- display: inline-block;
194
- color: var(--gray-12);
195
- text-decoration: none;
196
- padding-block: 8px;
197
-
198
- border-bottom: 2px solid transparent;
199
-
200
- transition: border-color 200ms;
201
-
202
- &:hover {
203
- cursor: pointer;
204
- border-color: var(--gray-12);
205
- }
206
-
207
- &:focus-visible {
208
- border-color: var(--gray-12);
209
- }
210
- }
211
- }
212
- }
213
- }
214
- }
215
- }
216
- }
217
- }
218
- </style>
@@ -1,63 +0,0 @@
1
- <template>
2
- <component :is="tag" class="display-banner" :class="[elementClasses]">
3
- <div v-if="$slots.canvas" class="canvas">
4
- <slot name="canvas"></slot>
5
- </div>
6
- <div v-if="$slots.content" class="content">
7
- <slot name="content"></slot>
8
- </div>
9
- </component>
10
- </template>
11
-
12
- <script lang="ts">
13
- const TAGS_ALLOWED = <string[]>['div', 'p', 'span', 'section', 'article', 'aside', 'header', 'footer', 'main', 'nav', 'ul', 'ol'];
14
- </script>
15
-
16
- <script setup lang="ts">
17
-
18
- const props = defineProps({
19
- tag: {
20
- type: String,
21
- default: 'div',
22
- validator(value: string) {
23
- return TAGS_ALLOWED.includes(value);
24
- },
25
- },
26
- styleClassPassthrough: {
27
- type: Array as PropType<string[]>,
28
- default: () => [],
29
- },
30
- });
31
-
32
- const { elementClasses, resetElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
33
-
34
- watch(
35
- () => props.styleClassPassthrough,
36
- () => {
37
- resetElementClasses(props.styleClassPassthrough);
38
- }
39
- );
40
- </script>
41
-
42
- <style lang="css">
43
- .display-banner {
44
- display: grid;
45
- grid-template-areas: 'banner';
46
- container-type: inline-size;
47
- overflow: hidden;
48
-
49
- .canvas {
50
- grid-area: banner;
51
-
52
- .image {
53
- object-fit: cover;
54
- width: 100%;
55
- height: 100%;
56
- }
57
- }
58
-
59
- .content {
60
- grid-area: banner;
61
- }
62
- }
63
- </style>