srcdev-nuxt-components 6.0.0 → 6.0.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 (81) hide show
  1. package/README.md +2 -2
  2. package/app/assets/styles/extends-layer/srcdev-components/components/_display-prompt-core.css +72 -0
  3. package/app/assets/styles/extends-layer/srcdev-components/components/index.css +1 -0
  4. package/app/assets/styles/extends-layer/srcdev-components/index.css +2 -0
  5. package/app/assets/styles/extends-layer/srcdev-components/setup/index.css +1 -0
  6. package/app/assets/styles/extends-layer/srcdev-components/setup/themes/_error.css +15 -0
  7. package/app/assets/styles/extends-layer/srcdev-components/setup/themes/_info.css +15 -0
  8. package/app/assets/styles/extends-layer/srcdev-components/setup/themes/_secondary.css +15 -0
  9. package/app/assets/styles/extends-layer/srcdev-components/setup/themes/_success.css +15 -0
  10. package/app/assets/styles/extends-layer/srcdev-components/setup/themes/_warning.css +15 -0
  11. package/app/assets/styles/extends-layer/srcdev-components/setup/themes/index.css +5 -0
  12. package/app/assets/styles/main.css +2 -0
  13. package/app/assets/styles/setup/_head.css +36 -0
  14. package/app/assets/styles/setup/a11y/_utils.css +20 -0
  15. package/app/assets/styles/setup/a11y/_variables.css +8 -0
  16. package/app/assets/styles/setup/a11y/index.css +2 -0
  17. package/app/assets/styles/setup/index.css +5 -0
  18. package/app/assets/styles/setup/typography/index.css +2 -0
  19. package/app/assets/styles/setup/typography/utility-classes/_generic-font-classes.css +217 -0
  20. package/app/assets/styles/setup/typography/utility-classes/_generic-font-variation-settings.css +29 -0
  21. package/app/assets/styles/setup/typography/utility-classes/_generic-font-weights.css +39 -0
  22. package/app/assets/styles/setup/typography/utility-classes/index.css +3 -0
  23. package/app/assets/styles/setup/typography/vars/_colors.css +14 -0
  24. package/app/assets/styles/setup/typography/vars/_reponsive-font-sizes.css +12 -0
  25. package/app/assets/styles/setup/typography/vars/index.css +2 -0
  26. package/app/assets/styles/setup/utility-classes/_fluid-spacing.css +13 -0
  27. package/app/assets/styles/setup/utility-classes/animations/_auto-rotate.css +13 -0
  28. package/app/assets/styles/setup/utility-classes/animations/_entry-exit-blur.css +16 -0
  29. package/app/assets/styles/setup/utility-classes/animations/_entry-slide-in.css +15 -0
  30. package/app/assets/styles/setup/utility-classes/animations/_entry-zoom-reveal.css +15 -0
  31. package/app/assets/styles/setup/utility-classes/animations/index.css +4 -0
  32. package/app/assets/styles/setup/utility-classes/index.css +2 -0
  33. package/app/assets/styles/setup/variables/colors/_blue.css +15 -0
  34. package/app/assets/styles/setup/variables/colors/_gray.css +16 -0
  35. package/app/assets/styles/setup/variables/colors/_green.css +15 -0
  36. package/app/assets/styles/setup/variables/colors/_orange.css +15 -0
  37. package/app/assets/styles/setup/variables/colors/_red.css +15 -0
  38. package/app/assets/styles/setup/variables/colors/_yellow.css +15 -0
  39. package/app/assets/styles/setup/variables/colors/index.css +6 -0
  40. package/app/assets/styles/setup/variables/index.css +1 -0
  41. package/app/components/accordian/AccordianCore.vue +46 -0
  42. package/app/components/animated-svg-text/AnimatedSvgText.vue +87 -0
  43. package/app/components/canvas-switcher/CanvasSwitcher.vue +77 -0
  44. package/app/components/carousel-basic/CarouselBasic.vue +291 -0
  45. package/app/components/carousel-basic/CarouselFlip.vue +461 -0
  46. package/app/components/carousel-basic/CarouselInfinite.vue +325 -0
  47. package/app/components/clip-element/ClipElement.vue +73 -0
  48. package/app/components/clipped-panels/ClippedPanel.vue +73 -0
  49. package/app/components/container-glow/ContainerGlowCore.vue +211 -0
  50. package/app/components/content-grid/ContentGrid.vue +85 -0
  51. package/app/components/deep-expanding-menu/DeepExpandingMenu.vue +214 -0
  52. package/app/components/deep-expanding-menu/DeepExpandingMenuOld.vue +218 -0
  53. package/app/components/display-banner/DisplayBanner.vue +63 -0
  54. package/app/components/display-details/DisplayDetailsCore.vue +301 -0
  55. package/app/components/display-dialog/DisplayDialogCore.vue +255 -0
  56. package/app/components/display-dialog/variants/DisplayDialogConfirm.vue +45 -0
  57. package/app/components/display-dialog/variants/DisplayDialogScrollableContent.vue +49 -0
  58. package/app/components/display-grid/DisplayGridCore.vue +22 -0
  59. package/app/components/display-prompt/DisplayPromptCore.vue +187 -0
  60. package/app/components/display-prompt/variants/DisplayPromptError.vue +53 -0
  61. package/app/components/expanding-panel/ExpandingPanel.vue +124 -0
  62. package/app/components/image-galleries/SliderGallery.vue +784 -0
  63. package/app/components/layout-grids/LayoutGridA.vue +103 -0
  64. package/app/components/layout-grids/LayoutGridB.vue +132 -0
  65. package/app/components/layout-row/LayoutRow.vue +165 -0
  66. package/app/components/masonry-grid/MasonryGrid.vue +62 -0
  67. package/app/components/masonry-grid-ordered/MasonryGridOrdered.vue +158 -0
  68. package/app/components/masonry-grid-sorted/MasonryGridSorted.vue +115 -0
  69. package/app/components/pop-over/PopOver.vue +88 -0
  70. package/app/components/responsive-header/NavigationItems.vue +169 -0
  71. package/app/components/responsive-header/ResponsiveHeader.vue +686 -0
  72. package/app/components/rotating-carousel/RotatingCarouselImage.vue +200 -0
  73. package/app/components/skip-links/SkipLinks.vue +92 -0
  74. package/app/components/tabs/TabsCore.vue +277 -0
  75. package/app/composables/useDialogControls.ts +44 -0
  76. package/app/composables/useStyleClassPassthrough.ts +35 -0
  77. package/app/composables/useTabs.ts +201 -0
  78. package/app/types/gallery-data.ts +13 -0
  79. package/app/types/responsiveHeader.ts +38 -0
  80. package/app/types/types.carousel-basic.ts +19 -0
  81. package/package.json +3 -6
@@ -0,0 +1,187 @@
1
+ <template>
2
+ <div class="display-prompt-core" :class="[{ dismissed: hide }, { 'use-local-style-overrides': useLocalStyleOverrides }]" :data-test-id="`display-prompt-core-${theme}`">
3
+ <div class="display-prompt-wrapper" :data-component-theme="theme" :class="[elementClasses]" data-test-id="display-prompt">
4
+ <div class="display-prompt-inner">
5
+ <div class="display-prompt-icon" data-test-id="prompt-icon">
6
+ <slot name="customDecoratorIcon">
7
+ <Icon :name="displayPromptIcons[theme]" class="icon" :color="iconColor" />
8
+ </slot>
9
+ </div>
10
+ <div class="display-prompt-content">
11
+ <p class="title" data-test-id="display-prompt-title">
12
+ <slot name="title"></slot>
13
+ </p>
14
+ <p v-if="hasContent" class="text" data-test-id="display-prompt-content">
15
+ <slot name="content"></slot>
16
+ </p>
17
+ </div>
18
+ <button v-if="dismissible" @click.prevent="dismissPrompt()" data-test-id="display-prompt-action" class="display-prompt-action">
19
+ <slot name="customCloseIcon">
20
+ <Icon name="bitcoin-icons:cross-filled" class="icon" />
21
+ </slot>
22
+ <span class="sr-only">
23
+ <slot name="customTitle">Close this prompt</slot>
24
+ </span>
25
+ </button>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </template>
30
+
31
+ <script setup lang="ts">
32
+ const props = defineProps({
33
+ dismissible: {
34
+ type: Boolean,
35
+ default: false,
36
+ },
37
+ theme: {
38
+ type: String,
39
+ default: 'error',
40
+ validator(value: string) {
41
+ return ['error', 'info', 'success', 'warning', 'secondary'].includes(value);
42
+ },
43
+ },
44
+ styleClassPassthrough: {
45
+ type: Array as PropType<string[]>,
46
+ default: () => [],
47
+ },
48
+ iconColor: {
49
+ type: String as PropType<string>,
50
+ default: 'dark-grey',
51
+ validator(value: string) {
52
+ return ['dark-grey', 'white'].includes(value);
53
+ },
54
+ },
55
+ useLocalStyleOverrides: {
56
+ type: Boolean,
57
+ default: false,
58
+ },
59
+ displayPromptIcons: {
60
+ type: Object as PropType<Record<string, string>>,
61
+ default: () => ({
62
+ error: 'akar-icons:circle-alert',
63
+ info: 'akar-icons:info',
64
+ success: 'akar-icons:check',
65
+ warning: 'akar-icons:circle-alert',
66
+ secondary: 'akar-icons:info',
67
+ }),
68
+ },
69
+ });
70
+
71
+ const slots = useSlots();
72
+ const hasContent = ref(slots.content !== undefined);
73
+ const hide = ref(false);
74
+ const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
75
+
76
+ const dismissPrompt = () => {
77
+ // styleClassPassthrough.value = '';
78
+ hide.value = true;
79
+ };
80
+ </script>
81
+
82
+ <style lang="css">
83
+ .display-prompt-core {
84
+ display: grid;
85
+ grid-template-rows: 1fr;
86
+ opacity: 1;
87
+ transition: all 200ms ease-in-out;
88
+
89
+ &.dismissed {
90
+ grid-template-rows: 0fr;
91
+ opacity: 0;
92
+ pointer-events: none;
93
+ }
94
+
95
+ .display-prompt-wrapper {
96
+ background-color: var(--component-theme-0);
97
+ border: 1px solid var(--component-theme-8);
98
+ border-radius: 4px;
99
+
100
+ border-inline-start: 8px solid var(--component-theme-8);
101
+ border-start-start-radius: 8px;
102
+ border-end-start-radius: 8px;
103
+
104
+ overflow: hidden;
105
+
106
+ .display-prompt-inner {
107
+ align-items: center;
108
+ display: flex;
109
+ gap: 12px;
110
+ justify-content: space-between;
111
+ padding-block: 1rem;
112
+ padding-inline: 1.5rem;
113
+
114
+ .display-prompt-icon {
115
+ display: inline-flex;
116
+ .icon {
117
+ color: var(--component-theme-8);
118
+ display: inline-block;
119
+ font-size: 3rem;
120
+ font-style: normal;
121
+ font-weight: normal;
122
+ overflow: hidden;
123
+ }
124
+ }
125
+
126
+ .display-prompt-content {
127
+ display: block flex;
128
+ flex-direction: column;
129
+ flex-grow: 1;
130
+ gap: 1rem;
131
+ margin: 0;
132
+ padding: 0.2rem;
133
+
134
+ .title {
135
+ font-size: var(--step-5);
136
+ font-weight: bold;
137
+ line-height: 1.3;
138
+ color: var(--component-theme-8);
139
+ margin: 0;
140
+ padding: 0;
141
+ }
142
+
143
+ .text {
144
+ font-size: var(--step-5);
145
+ font-weight: normal;
146
+ line-height: 1.3;
147
+ color: var(--component-theme-8);
148
+ margin: 0;
149
+ padding: 0;
150
+ }
151
+ }
152
+ .display-prompt-action {
153
+ background-color: transparent;
154
+ display: block flex;
155
+ align-items: center;
156
+ justify-content: center;
157
+ margin: 1rem;
158
+ padding: 0.5rem;
159
+ border: 0.1rem solid var(--component-theme-8);
160
+ border-radius: 50%;
161
+ outline: 1px solid var(--component-theme-3);
162
+
163
+ transition: border 200ms ease-in-out, outline 200ms ease-in-out;
164
+
165
+ &:hover {
166
+ cursor: pointer;
167
+ border: 0.1rem solid var(--component-theme-12);
168
+ outline: 2px solid var(--component-theme-6);
169
+ }
170
+
171
+ &:focus-visible {
172
+ box-shadow: var(--focus-box-shadow-colour-on);
173
+ border: 0.1rem solid var(--component-theme-12);
174
+ outline: 2px solid var(--component-theme-6);
175
+ }
176
+
177
+ .icon {
178
+ color: var(--component-theme-8);
179
+ display: block;
180
+ font-size: var(--step-5);
181
+ padding: 1rem;
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ </style>
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <DisplayPromptCore variant="error" :dismissible icon-color="white" :style-class-passthrough>
3
+ <template #icon>
4
+ <Icon name="akar-icons:circle-alert" class="icon" />
5
+ </template>
6
+ <template #title>
7
+ <slot name="title"></slot>
8
+ </template>
9
+ <template v-if="hasContent" #content>
10
+ <slot name="content"></slot>
11
+ </template>
12
+ </DisplayPromptCore>
13
+ </template>
14
+
15
+ <script setup lang="ts">
16
+ const props = defineProps({
17
+ dismissible: {
18
+ type: Boolean,
19
+ default: false,
20
+ },
21
+ styleClassPassthrough: {
22
+ type: Array as PropType<string[]>,
23
+ default: () => [],
24
+ },
25
+ });
26
+
27
+ const slots = useSlots();
28
+ const hasContent = ref(slots.content !== undefined);
29
+ const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
30
+ </script>
31
+
32
+ <style lang="css">
33
+ .display-prompt.error {
34
+ --bg-color: var(--red-2);
35
+ --text-color: var(--gray-00);
36
+ }
37
+
38
+ .display-prompt {
39
+ &.error {
40
+ background-color: var(--bg-color);
41
+ }
42
+
43
+ &-icon {
44
+ .icon {
45
+ color: var(--text-color);
46
+ }
47
+ }
48
+
49
+ &-content {
50
+ color: var(--text-color);
51
+ }
52
+ }
53
+ </style>
@@ -0,0 +1,124 @@
1
+ <template>
2
+ <div class="expanding-panel" :class="[elementClasses]">
3
+ <details class="expanding-panel-details" :name>
4
+ <summary class="expanding-panel-summary" :id="triggerId" :aria-controls="contentId">
5
+ <span class="label-wrapper">
6
+ <slot name="summary"></slot>
7
+ </span>
8
+ <span class="icon-wrapper">
9
+ <slot name="icon">
10
+ <Icon name="bi:caret-down-fill" class="icon mi-12" />
11
+ </slot>
12
+ </span>
13
+ </summary>
14
+ </details>
15
+ <div class="expanding-panel-content" :aria-labelledby="triggerId" :id="contentId" role="region">
16
+ <div class="inner">
17
+ <slot name="content"></slot>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ const props = defineProps({
25
+ name: {
26
+ type: String,
27
+ default: '',
28
+ },
29
+ iconSize: {
30
+ type: String,
31
+ default: 'medium',
32
+ },
33
+ animationDuration: {
34
+ type: Number,
35
+ default: 400,
36
+ },
37
+ styleClassPassthrough: {
38
+ type: Array as PropType<string[]>,
39
+ default: () => [],
40
+ },
41
+ });
42
+
43
+ const name = computed(() => props.name || useId());
44
+
45
+ const triggerId = computed(() => `id-${name.value}-trigger`);
46
+ const contentId = computed(() => `id-${name.value}-content`);
47
+ const animationDurationStr = computed(() => `${props.animationDuration}ms`);
48
+
49
+ const { elementClasses, resetElementClasses, updateElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
50
+ </script>
51
+
52
+ <style lang="css">
53
+ .expanding-panel {
54
+ .expanding-panel-details {
55
+ .expanding-panel-summary {
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: space-between;
59
+ flex-direction: row;
60
+ gap: 0;
61
+ list-style: none;
62
+
63
+ padding-inline: 0.5rem;
64
+
65
+ &::-webkit-details-marker,
66
+ &::marker {
67
+ display: none;
68
+ }
69
+
70
+ overflow: clip;
71
+
72
+ .label-wrapper {
73
+ }
74
+ .icon-wrapper {
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: space-between;
78
+
79
+ aspect-ratio: 1;
80
+ outline: 1px solid var(--gray-3);
81
+ padding: 1rem;
82
+ overflow: hidden;
83
+
84
+ .icon {
85
+ display: block;
86
+ transform: scaleY(1);
87
+ transition: transform v-bind(animationDurationStr) ease-in-out;
88
+ font-size: 1.2rem;
89
+ }
90
+ }
91
+ }
92
+
93
+ &[open] {
94
+ .expanding-panel-summary {
95
+ .icon-wrapper {
96
+ .icon {
97
+ transform: scaleY(-1);
98
+ }
99
+ }
100
+ }
101
+ + .expanding-panel-content {
102
+ grid-template-rows: 1fr;
103
+ .inner {
104
+ /* transform: scaleY(1); */
105
+ }
106
+ }
107
+ }
108
+ }
109
+
110
+ .expanding-panel-content {
111
+ display: grid;
112
+ grid-template-rows: 0fr;
113
+ transition: all v-bind(animationDurationStr) ease-in-out;
114
+
115
+ .inner {
116
+ overflow: hidden;
117
+ padding: 0.5rem;
118
+
119
+ /* transform: scaleY(0); */
120
+ /* transition: transform v-bind(animationDurationStr) ease-in-out; */
121
+ }
122
+ }
123
+ }
124
+ </style>