srcdev-nuxt-components 2.5.18 → 3.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 (87) hide show
  1. package/nuxt.config.ts +3 -1
  2. package/package.json +1 -1
  3. package/assets/styles/a11y/_utils.css +0 -20
  4. package/assets/styles/a11y/_variables.css +0 -8
  5. package/assets/styles/a11y/index.css +0 -2
  6. package/assets/styles/forms/index.css +0 -2
  7. package/assets/styles/forms/themes/_error.css +0 -77
  8. package/assets/styles/forms/themes/_ghost.css +0 -77
  9. package/assets/styles/forms/themes/_input-action.css +0 -20
  10. package/assets/styles/forms/themes/_primary.css +0 -82
  11. package/assets/styles/forms/themes/_secondary.css +0 -77
  12. package/assets/styles/forms/themes/_success.css +0 -77
  13. package/assets/styles/forms/themes/_tertiary.css +0 -77
  14. package/assets/styles/forms/themes/_warning.css +0 -77
  15. package/assets/styles/forms/themes/index.css +0 -8
  16. package/assets/styles/forms/variables/_sizes.css +0 -82
  17. package/assets/styles/forms/variables/_theme.css +0 -11
  18. package/assets/styles/forms/variables/index.css +0 -2
  19. package/assets/styles/main.css +0 -5
  20. package/assets/styles/typography/index.css +0 -2
  21. package/assets/styles/typography/utils/_font-classes.css +0 -160
  22. package/assets/styles/typography/utils/_weights.css +0 -69
  23. package/assets/styles/typography/utils/index.css +0 -2
  24. package/assets/styles/typography/variables/_colors.css +0 -14
  25. package/assets/styles/typography/variables/_reponsive-font-size.css +0 -10
  26. package/assets/styles/typography/variables/index.css +0 -2
  27. package/assets/styles/utils/_animations.css +0 -42
  28. package/assets/styles/utils/_canvasWidths.css +0 -18
  29. package/assets/styles/utils/_display.css +0 -7
  30. package/assets/styles/utils/_margin-helpers.css +0 -334
  31. package/assets/styles/utils/_padding-helpers.css +0 -308
  32. package/assets/styles/utils/_page.css +0 -24
  33. package/assets/styles/utils/_placement.css +0 -73
  34. package/assets/styles/utils/index.css +0 -7
  35. package/assets/styles/variables/colors/_blue.css +0 -15
  36. package/assets/styles/variables/colors/_gray.css +0 -16
  37. package/assets/styles/variables/colors/_green.css +0 -15
  38. package/assets/styles/variables/colors/_orange.css +0 -15
  39. package/assets/styles/variables/colors/_red.css +0 -15
  40. package/assets/styles/variables/colors/_yellow.css +0 -15
  41. package/assets/styles/variables/colors/colors.css +0 -6
  42. package/assets/styles/variables/components/_accordian.css +0 -7
  43. package/assets/styles/variables/components/_container-glow-core.css +0 -16
  44. package/assets/styles/variables/components/_display-dialog-core.css +0 -35
  45. package/assets/styles/variables/components/_tabs.css +0 -18
  46. package/assets/styles/variables/components/display-prompt-core/_scaffolding.css +0 -57
  47. package/assets/styles/variables/components/display-prompt-core/index.css +0 -2
  48. package/assets/styles/variables/components/display-prompt-core/themes/_error.css +0 -39
  49. package/assets/styles/variables/components/display-prompt-core/themes/_info.css +0 -39
  50. package/assets/styles/variables/components/display-prompt-core/themes/_success.css +0 -39
  51. package/assets/styles/variables/components/display-prompt-core/themes/_warning.css +0 -39
  52. package/assets/styles/variables/components/display-prompt-core/themes/index.css +0 -4
  53. package/assets/styles/variables/components/index.css +0 -5
  54. package/assets/styles/variables/index.css +0 -2
  55. package/components/animated-svg-text/AnimatedSvgText.vue +0 -87
  56. package/components/canvas-switcher/CanvasSwitcher.vue +0 -77
  57. package/components/clip-element/ClipElement.vue +0 -73
  58. package/components/clipped-panels/ClippedPanel.vue +0 -73
  59. package/components/deep-expanding-menu/DeepExpandingMenu.vue +0 -214
  60. package/components/deep-expanding-menu/DeepExpandingMenuOld.vue +0 -218
  61. package/components/display-banner/DisplayBanner.vue +0 -63
  62. package/components/display-details/DisplayDetailsCore.vue +0 -312
  63. package/components/functional/accordian/AccordianCore.vue +0 -138
  64. package/components/functional/display-dialog/DisplayDialogCore.vue +0 -244
  65. package/components/functional/display-dialog/variants/DisplayDialogConfirm.vue +0 -45
  66. package/components/functional/display-dialog/variants/DisplayDialogScrollableContent.vue +0 -49
  67. package/components/functional/pop-over/PopOver.vue +0 -88
  68. package/components/image-galleries/SliderGallery.vue +0 -778
  69. package/components/masonry-grid-ordered/MasonryGridOrdered.vue +0 -158
  70. package/components/presentation/container-glow/ContainerGlowCore.vue +0 -211
  71. package/components/presentation/display-grid/DisplayGridCore.vue +0 -22
  72. package/components/presentation/display-prompt/DisplayPromptCore.vue +0 -150
  73. package/components/presentation/display-prompt/variants/DisplayPromptError.vue +0 -53
  74. package/components/presentation/layout-grids/LayoutGridA.vue +0 -103
  75. package/components/presentation/layout-grids/LayoutGridB.vue +0 -132
  76. package/components/presentation/layout-row/LayoutRow.vue +0 -157
  77. package/components/presentation/masonry-grid/MasonryGrid.vue +0 -62
  78. package/components/presentation/masonry-grid-sorted/MasonryGridSorted.vue +0 -115
  79. package/components/presentation/tabs/TabsCore.vue +0 -308
  80. package/components/responsive-header/NavigationItems.vue +0 -164
  81. package/components/responsive-header/ResponsiveHeader.vue +0 -586
  82. package/components/rotating-carousel/RotatingCarouselImage.vue +0 -200
  83. package/composables/useDialogControls.ts +0 -23
  84. package/composables/useStyleClassPassthrough.ts +0 -35
  85. package/composables/useTabs.ts +0 -201
  86. package/types/gallery-data.ts +0 -13
  87. package/types/responsiveHeader.ts +0 -38
@@ -1,15 +0,0 @@
1
- :root {
2
- --blue-0: #e7f5ff;
3
- --blue-1: #d0ebff;
4
- --blue-2: #a5d8ff;
5
- --blue-3: #74c0fc;
6
- --blue-4: #4dabf7;
7
- --blue-5: #339af0;
8
- --blue-6: #228be6;
9
- --blue-7: #1c7ed6;
10
- --blue-8: #1971c2;
11
- --blue-9: #1864ab;
12
- --blue-10: #145591;
13
- --blue-11: #114678;
14
- --blue-12: #0e01cd;
15
- }
@@ -1,16 +0,0 @@
1
- :root {
2
- --gray-00: #ffffff;
3
- --gray-0: #f8f9fa;
4
- --gray-1: #f1f3f5;
5
- --gray-2: #e9ecef;
6
- --gray-3: #dee2e6;
7
- --gray-4: #ced4da;
8
- --gray-5: #adb5bd;
9
- --gray-6: #868e96;
10
- --gray-7: #495057;
11
- --gray-8: #343a40;
12
- --gray-9: #212529;
13
- --gray-10: #16191d;
14
- --gray-11: #0d0f12;
15
- --gray-12: #030507;
16
- }
@@ -1,15 +0,0 @@
1
- :root {
2
- --green-0: #ebfbee;
3
- --green-1: #d3f9d8;
4
- --green-2: #b2f2bb;
5
- --green-3: #8ce99a;
6
- --green-4: #69db7c;
7
- --green-5: #51cf66;
8
- --green-6: #40c057;
9
- --green-7: #37b24d;
10
- --green-8: #2f9e44;
11
- --green-9: #2b8a3e;
12
- --green-10: #237032;
13
- --green-11: #1b5727;
14
- --green-12: #017f18;
15
- }
@@ -1,15 +0,0 @@
1
- :root {
2
- --orange-0: #fff4e6;
3
- --orange-1: #ffe8cc;
4
- --orange-2: #ffd8a8;
5
- --orange-3: #ffc078;
6
- --orange-4: #ffa94d;
7
- --orange-5: #ff922b;
8
- --orange-6: #ff7400;
9
- --orange-7: #f76707;
10
- --orange-8: #e8590c;
11
- --orange-9: #d9480f;
12
- --orange-10: #bf400d;
13
- --orange-11: #99330b;
14
- --orange-12: #c23903;
15
- }
@@ -1,15 +0,0 @@
1
- :root {
2
- --red-0: #fff5f5;
3
- --red-1: #ffe3e3;
4
- --red-2: #ffc9c9;
5
- --red-3: #ffa8a8;
6
- --red-4: #ff8787;
7
- --red-5: #ff6b6b;
8
- --red-6: #fa5252;
9
- --red-7: #f03e3e;
10
- --red-8: #e03131;
11
- --red-9: #ff0b0b;
12
- --red-10: #b02525;
13
- --red-11: #962020;
14
- --red-12: #cc0000;
15
- }
@@ -1,15 +0,0 @@
1
- :root {
2
- --yellow-0: #fff9db;
3
- --yellow-1: #fff3bf;
4
- --yellow-2: #ffec99;
5
- --yellow-3: #ffe066;
6
- --yellow-4: #ffd43b;
7
- --yellow-5: #fcc419;
8
- --yellow-6: #fab005;
9
- --yellow-7: #f59f00;
10
- --yellow-8: #f08c00;
11
- --yellow-9: #e67700;
12
- --yellow-10: #b35c00;
13
- --yellow-11: #804200;
14
- --yellow-12: #663500;
15
- }
@@ -1,6 +0,0 @@
1
- @import './_red.css';
2
- @import './_green.css';
3
- @import './_blue.css';
4
- @import './_orange.css';
5
- @import './_gray.css';
6
- @import './_yellow.css';
@@ -1,7 +0,0 @@
1
- :root {
2
- --accordian-panel-border: 0.1rem solid light-dark(var(--gray-3), var(--gray-6));
3
- --accordian-panel-border-radius: 0.4rem;
4
- --accordian-panel-mbe: 1.6rem;
5
-
6
- --accordion-trigger-bg: light-dark(var(--gray-3), var(--gray-6));
7
- }
@@ -1,16 +0,0 @@
1
- .container-glow-wrapper {
2
- --container-bg-colour: light-dark(hsl(250, 18%, 93%), hsl(246 44% 7%));
3
- --container-border-colour: hsl(280 10% 50% / 1);
4
- --card: light-dark(white, hsl(246 44% 7%));
5
- --container-border-width: 2px;
6
- --container-border-radius: 12px;
7
- --gradient: conic-gradient(
8
- from 180deg at 50% 70%,
9
- hsla(0, 0%, 98%, 1) 0deg,
10
- #eec32d 72.0000010728836deg,
11
- #fc0303 144.0000021457672deg,
12
- #709ab9 216.00000858306885deg,
13
- #4dffbf 288.0000042915344deg,
14
- hsla(0, 0%, 98%, 1) 1turn
15
- );
16
- }
@@ -1,35 +0,0 @@
1
- .display-dialog-core {
2
- --dialog-border: 0.1rem solid light-dark(var(--gray-8), var(--gray-0));
3
- --dialog-outline: 0.1rem solid light-dark(var(--gray-8), var(--gray-0));
4
- --dialog-border-radius: 0.4rem;
5
-
6
- --dialog-inner-background: light-dark(var(--gray-0), var(--gray-9));
7
-
8
- /*
9
- * Header styles
10
- */
11
- --dialog-header-padding: 0 1.2rem;
12
-
13
- --dialog-header-button-margin: 0;
14
- --dialog-header-button-padding: 0.4rem;
15
- --dialog-header-button-border-radius: 50%;
16
-
17
- --dialog-header-button-border: 1px solid transparent;
18
- --dialog-header-button-outline: 1px solid transparent;
19
-
20
- --dialog-header-button-border-hover: 1px solid light-dark(var(--gray-8), var(--gray-0));
21
- --dialog-header-button-outline-hover: 1px solid light-dark(var(--gray-8), var(--gray-0));
22
-
23
- --dialog-header-button-icon-color: light-dark(var(--gray-8), var(--gray-0));
24
- --dialog-header-button-icon-font-size: 1.4rem;
25
-
26
- /*
27
- * Header styles
28
- */
29
- --dialog-content-padding: 1.2rem;
30
-
31
- /*
32
- * Footerer styles
33
- */
34
- --dialog-footer-padding: 1.2rem;
35
- }
@@ -1,18 +0,0 @@
1
- :root {
2
- --tabs-default-text: light-dark(var(--gray-12), var(--gray-0));
3
- --tabs-active-bg: light-dark(var(--gray-12), var(--gray-0));
4
- --tabs-active-text: light-dark(var(--gray-0), var(--gray-12));
5
- --tabs-active-indicator: var(--green-6);
6
- --tabs-hovered-bg: light-dark(var(--gray-7), var(--gray-3));
7
- --tabs-hovered-text: light-dark(var(--gray-0), var(--gray-12));
8
- --tabs-border-bottom: 0px solid var(--green-6);
9
-
10
- --tabs-content-border: 0.1rem solid var(--green-6);
11
- --tabs-content-outline: 0.1rem solid var(--green-12);
12
- --tabs-content-bg: light-dark(var(--gray-1), var(--gray-8));
13
-
14
- --tabs-content-start-start-radius: 0;
15
- --tabs-content-start-end-radius: 0;
16
- --tabs-content-end-start-radius: 1rem;
17
- --tabs-content-end-end-radius: 1rem;
18
- }
@@ -1,57 +0,0 @@
1
- :root {
2
- /*
3
- * Wrapper styles
4
- */
5
- --display-prompt-wrapper-border-radius: 0.5rem;
6
-
7
- /*
8
- * Inner styles
9
- */
10
- --display-prompt-inner-margin: 0 0 0 0.7rem;
11
- --display-prompt-inner-padding: 1rem 1.5rem;
12
- --display-prompt-inner-gap: 1.6rem;
13
- --display-prompt-inner-border-radius: 0.2rem;
14
-
15
- /*
16
- * Icon styles
17
- */
18
- --display-prompt-icon-size: 3rem;
19
- --display-prompt-icon-weight: normal;
20
-
21
- /*
22
- * Title styles
23
- */
24
- --display-prompt-inner-content-gap: 1rem;
25
- --display-prompt-content-margin: 0;
26
- --display-prompt-content-padding: 0.2rem;
27
-
28
- /*
29
- * Title styles
30
- */
31
- --display-prompt-content-title-font-size: var(--step-2);
32
- --display-prompt-content-title-font-weight: bold;
33
- --display-prompt-content-title-line-height: 1.3;
34
- --display-prompt-content-title-margin: 0;
35
- --display-prompt-content-title-padding: 0;
36
-
37
- /*
38
- * Text styles
39
- */
40
- --display-prompt-content-text-font-size: var(--step-2);
41
- --display-prompt-content-text-font-weight: normal;
42
- --display-prompt-content-text-line-height: 1.3;
43
- --display-prompt-content-title-margin: 0;
44
- --display-prompt-content-title-padding: 0;
45
-
46
- /*
47
- * Button styles
48
- */
49
- --display-prompt-button-border-radius: 50%;
50
- --display-prompt-button-margin: 1rem;
51
- --display-prompt-button-padding: 0.5rem;
52
-
53
- /*
54
- * Button styles
55
- */
56
- --display-prompt-button-icon-font-size: var(--step-2);
57
- }
@@ -1,2 +0,0 @@
1
- @import './_scaffolding.css';
2
- @import './themes';
@@ -1,39 +0,0 @@
1
- [data-prompt-theme='error'] {
2
- /*
3
- * Wrapper styles
4
- */
5
- --display-prompt-wrapper-background-color: var(--red-8);
6
- --display-prompt-wrapper-border: 0.1rem solid var(--red-8);
7
- --display-prompt-wrapper-outline: 0.1rem solid var(--red-5);
8
-
9
- /*
10
- * Inner styles
11
- */
12
- --display-prompt-inner-background-color: var(--red-0);
13
-
14
- /*
15
- * Icon styles
16
- */
17
- --display-prompt-icon-color: var(--red-8);
18
-
19
- /*
20
- * Title styles
21
- */
22
- --display-prompt-content-title-color: var(--red-8);
23
-
24
- /*
25
- * Text styles
26
- */
27
- --display-prompt-content-text-color: var(--red-8);
28
-
29
- /*
30
- * Button styles
31
- */
32
- --display-prompt-button-border: 0.1rem solid var(--red-8);
33
- --display-prompt-button-outline: 0.1rem solid var(--red-8);
34
-
35
- /*
36
- * Button styles
37
- */
38
- --display-prompt-button-icon-color: var(--red-8);
39
- }
@@ -1,39 +0,0 @@
1
- [data-prompt-theme='info'] {
2
- /*
3
- * Wrapper styles
4
- */
5
- --display-prompt-wrapper-background-color: var(--blue-8);
6
- --display-prompt-wrapper-border: 0.1rem solid var(--blue-8);
7
- --display-prompt-wrapper-outline: 0.1rem solid var(--blue-5);
8
-
9
- /*
10
- * Inner styles
11
- */
12
- --display-prompt-inner-background-color: var(--blue-0);
13
-
14
- /*
15
- * Icon styles
16
- */
17
- --display-prompt-icon-color: var(--blue-8);
18
-
19
- /*
20
- * Title styles
21
- */
22
- --display-prompt-content-title-color: var(--blue-8);
23
-
24
- /*
25
- * Text styles
26
- */
27
- --display-prompt-content-text-color: var(--blue-8);
28
-
29
- /*
30
- * Button styles
31
- */
32
- --display-prompt-button-border: 0.1rem solid var(--blue-8);
33
- --display-prompt-button-outline: 0.1rem solid var(--blue-8);
34
-
35
- /*
36
- * Button styles
37
- */
38
- --display-prompt-button-icon-color: var(--blue-8);
39
- }
@@ -1,39 +0,0 @@
1
- [data-prompt-theme='success'] {
2
- /*
3
- * Wrapper styles
4
- */
5
- --display-prompt-wrapper-background-color: var(--green-8);
6
- --display-prompt-wrapper-border: 0.1rem solid var(--green-8);
7
- --display-prompt-wrapper-outline: 0.1rem solid var(--green-5);
8
-
9
- /*
10
- * Inner styles
11
- */
12
- --display-prompt-inner-background-color: var(--green-0);
13
-
14
- /*
15
- * Icon styles
16
- */
17
- --display-prompt-icon-color: var(--green-8);
18
-
19
- /*
20
- * Title styles
21
- */
22
- --display-prompt-content-title-color: var(--green-8);
23
-
24
- /*
25
- * Text styles
26
- */
27
- --display-prompt-content-text-color: var(--green-8);
28
-
29
- /*
30
- * Button styles
31
- */
32
- --display-prompt-button-border: 0.1rem solid var(--green-8);
33
- --display-prompt-button-outline: 0.1rem solid var(--green-8);
34
-
35
- /*
36
- * Button styles
37
- */
38
- --display-prompt-button-icon-color: var(--green-8);
39
- }
@@ -1,39 +0,0 @@
1
- [data-prompt-theme='warning'] {
2
- /*
3
- * Wrapper styles
4
- */
5
- --display-prompt-wrapper-background-color: var(--orange-8);
6
- --display-prompt-wrapper-border: 0.1rem solid var(--orange-8);
7
- --display-prompt-wrapper-outline: 0.1rem solid var(--orange-5);
8
-
9
- /*
10
- * Inner styles
11
- */
12
- --display-prompt-inner-background-color: var(--orange-0);
13
-
14
- /*
15
- * Icon styles
16
- */
17
- --display-prompt-icon-color: var(--orange-8);
18
-
19
- /*
20
- * Title styles
21
- */
22
- --display-prompt-content-title-color: var(--orange-8);
23
-
24
- /*
25
- * Text styles
26
- */
27
- --display-prompt-content-text-color: var(--orange-8);
28
-
29
- /*
30
- * Button styles
31
- */
32
- --display-prompt-button-border: 0.1rem solid var(--orange-8);
33
- --display-prompt-button-outline: 0.1rem solid var(--orange-8);
34
-
35
- /*
36
- * Button styles
37
- */
38
- --display-prompt-button-icon-color: var(--orange-8);
39
- }
@@ -1,4 +0,0 @@
1
- @import './_error';
2
- @import './_success';
3
- @import './_warning';
4
- @import './_info';
@@ -1,5 +0,0 @@
1
- @import './_accordian';
2
- @import './_tabs';
3
- @import './display-prompt-core';
4
- @import './_display-dialog-core';
5
- @import './_container-glow-core.css';
@@ -1,2 +0,0 @@
1
- @import './colors/colors.css';
2
- @import './components';
@@ -1,87 +0,0 @@
1
- <template>
2
- <div class="animated-svg-text" :class="[elementClasses]">
3
- <slot name="text"></slot>
4
- </div>
5
- </template>
6
-
7
- <script setup lang="ts">
8
- const props = defineProps({
9
- styleClassPassthrough: {
10
- type: Array as PropType<string[]>,
11
- default: () => [],
12
- },
13
- });
14
-
15
- const { elementClasses, resetElementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
16
-
17
- watch(
18
- () => props.styleClassPassthrough,
19
- () => {
20
- resetElementClasses(props.styleClassPassthrough);
21
- }
22
- );
23
- </script>
24
-
25
- <style lang="css">
26
-
27
- @keyframes animatedSvgText {
28
- 0% {
29
- fill: transparent;
30
- stroke-dashoffset: var(--_animated-svg-text-stroke-dasharray);
31
- stroke-width: 0.3;
32
- }
33
- 70% {
34
- fill: transparent;
35
- stroke-width: 0.3;
36
- }
37
- 100% {
38
- fill: var(--_animated-svg-fill-color);
39
- stroke-dashoffset: 0;
40
- stroke-width: 0;
41
- }
42
- }
43
-
44
- html {
45
-
46
- &[data-color-scheme='light'] {
47
- .animated-svg-text {
48
- --_animated-svg-text-color: var(--_animated-svg-text-stroke-light);
49
- --_animated-svg-fill-color: var(--_animated-svg-text-fill-light);
50
- }
51
- }
52
- &[data-color-scheme='dark'] {
53
- .animated-svg-text {
54
- --_animated-svg-text-color: var(--_animated-svg-text-stroke-dark);
55
- --_animated-svg-fill-color: var(--_animated-svg-text-fill-dark);
56
- }
57
- }
58
- &[data-color-scheme='auto'] {
59
- .animated-svg-text {
60
- @media (prefers-color-scheme: light) {
61
- --_animated-svg-text-color: var(--_animated-svg-text-stroke-light);
62
- --_animated-svg-fill-color: var(--_animated-svg-text-fill-light);
63
- }
64
-
65
- @media (prefers-color-scheme: dark) {
66
- --_animated-svg-text-color: var(--_animated-svg-text-stroke-dark);
67
- --_animated-svg-fill-color: var(--_animated-svg-text-fill-dark);
68
- }
69
- }
70
- }
71
-
72
- .animated-svg-text {
73
-
74
- --_animated-svg-text-color: var(--_animated-svg-text-stroke-light):
75
- --_animated-svg-fill-color: var(--_animated-svg-text-fill-light);
76
-
77
- svg path {
78
- stroke: var(--_animated-svg-text-color);
79
- stroke-width: 0.3;
80
- stroke-dasharray: var(--_animated-svg-text-stroke-dasharray);
81
- stroke-dashoffset: var(--_animated-svg-text-stroke-dasharray);
82
- animation: animatedSvgText var(--_animated-svg-animation-duration) linear 1 forwards;
83
- }
84
- }
85
-
86
- }
87
- </style>
@@ -1,77 +0,0 @@
1
- <template>
2
- <div class="canvas-switcher">
3
- <p>Canvas switcher</p>
4
- <ul class="canvas-switcher mbe-20">
5
- <li>
6
- <button type="button" @click.stop.prevent="updateCanvas('mobileCanvas')">
7
- <Icon name="ic:baseline-phone-iphone" class="icon" :class="[{ current: canvasName === 'mobileCanvas' }]" />
8
- </button>
9
- </li>
10
- <li>
11
- <button type="button" @click.stop.prevent="updateCanvas('tabletCanvas')">
12
- <Icon name="ic:baseline-tablet-mac" class="icon" :class="[{ current: canvasName === 'tabletCanvas' }]" />
13
- </button>
14
- </li>
15
- <li>
16
- <button type="button" @click.stop.prevent="updateCanvas('laptopCanvas')">
17
- <Icon name="ic:baseline-laptop-mac" class="icon" :class="[{ current: canvasName === 'laptopCanvas' }]" />
18
- </button>
19
- </li>
20
- <li>
21
- <button type="button" @click.stop.prevent="updateCanvas('desktopCanvas')">
22
- <Icon name="ic:outline-desktop-mac" class="icon" :class="[{ current: canvasName === 'desktopCanvas' }]" />
23
- </button>
24
- </li>
25
- </ul>
26
- </div>
27
- </template>
28
-
29
- <script setup lang="ts">
30
- import type { MediaCanvas } from '@/types/types.canvasName';
31
-
32
- const canvasName = defineModel<MediaCanvas>('canvasName');
33
-
34
- const updateCanvas = (setCanvas: MediaCanvas) => {
35
- canvasName.value = setCanvas;
36
- };
37
- </script>
38
-
39
- <style lang="css">
40
- .canvas-switcher {
41
- display: flex;
42
- align-items: center;
43
- gap: 20px;
44
-
45
- ul {
46
- display: flex;
47
- gap: 10px;
48
- list-style-type: none;
49
- margin: 0;
50
- padding: 0;
51
-
52
- li {
53
- button {
54
- all: unset;
55
- display: flex;
56
- align-items: center;
57
- justify-content: center;
58
- padding: 5px;
59
- border: 0px solid light-dark(var(--gray-10), var(--gray-2));
60
- border-radius: 4px;
61
- cursor: pointer;
62
-
63
- .icon {
64
- color: light-dark(var(--gray-10), var(--gray-2));
65
-
66
- width: 24px;
67
- height: 24px;
68
-
69
- &.current {
70
- color: light-dark(var(--green-10), var(--green-4));
71
- }
72
- }
73
- }
74
- }
75
- }
76
- }
77
- </style>
@@ -1,73 +0,0 @@
1
- <template>
2
- <div class="clip-element-wrapper" ref="container" :class="elementClasses">
3
- <div class="clipped-element" :style="`--_clip-path: inset(${clipOffset}px 0 0 0)`" ref="clipElement">
4
- <slot name="default"></slot>
5
- </div>
6
- </div>
7
- </template>
8
-
9
- <script lang="ts" setup>
10
-
11
- const props = defineProps({
12
- maxClip: {
13
- type: Number,
14
- default: 100,
15
- },
16
- styleClassPassthrough: {
17
- type: Array as PropType<string[]>,
18
- default: () => [],
19
- },
20
- });
21
-
22
- const { elementClasses } = useStyleClassPassthrough(props.styleClassPassthrough);
23
-
24
-
25
- const container = ref(null);
26
- const clipElement = ref<HTMLDivElement | null>(null);
27
- const clipOffset = ref(0);
28
-
29
- const updateClip = () => {
30
-
31
- if (clipElement.value) {
32
-
33
- const topPosition = Math.floor(clipElement.value.getBoundingClientRect().top);
34
-
35
- if (topPosition < props.maxClip && topPosition > 0) {
36
- clipOffset.value = props.maxClip - topPosition;
37
- }
38
- else if (topPosition < 0) {
39
- clipOffset.value = props.maxClip + Math.abs(topPosition);
40
- }
41
- else if (topPosition > props.maxClip) {
42
- clipOffset.value = 0;
43
- }
44
- }
45
- };
46
-
47
- onMounted(() => {
48
-
49
- if (import.meta.client) {
50
- updateClip(); // Initial check
51
- window.addEventListener('scroll', updateClip, { passive: true });
52
- }
53
-
54
- });
55
-
56
- onBeforeUnmount(() => {
57
- window.removeEventListener('scroll', updateClip);
58
- });
59
-
60
-
61
- </script>
62
-
63
- <style lang="css">
64
- .clip-element-wrapper {
65
- position: relative;
66
- overflow: hidden;
67
- }
68
- .clipped-element {
69
- width: 100%;
70
- clip-path: var(--_clip-path);
71
- display: block;
72
- }
73
- </style>