1+ <script setup lang="ts">
2+ import CdrSurfaceScroll from ' ../CdrSurfaceScroll.vue' ;
3+ import CdrSurface from ' ../../surface/CdrSurface.vue' ;
4+ import CdrText from ' ../../text/CdrText.vue' ;
5+ import CdrTitle from ' ../../title/CdrTitle.vue' ;
6+
7+ defineOptions ({ name: ' SurfaceScrollExample' });
8+
9+ const loremTexts = [
10+ ' Lorem ipsum dolor sit amet, consectetur adipiscing elit.' ,
11+ ' Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ,
12+ ' Ut enim ad minim veniam, quis nostrud exercitation ullamco.' ,
13+ ' Duis aute irure dolor in reprehenderit in voluptate velit esse.' ,
14+ ' Excepteur sint occaecat cupidatat non proident, sunt in culpa.' ,
15+ ' Qui officia deserunt mollit anim id est laborum.' ,
16+ ' At vero eos et accusamus et iusto odio dignissimos ducimus.' ,
17+ ' Et harum quidem rerum facilis est et expedita distinctio.' ,
18+ ' Nam libero tempore, cum soluta nobis est eligendi optio.' ,
19+ ' Temporibus autem quibusdam et aut officiis debitis aut rerum.' ,
20+ ];
21+
22+ interface Frame {
23+ key: string ;
24+ props: {
25+ title: string ;
26+ content: string ;
27+ index: number ;
28+ };
29+ }
30+
31+ // Create frames for the surface scroll
32+ const frames: Frame [] = loremTexts .map ((text , index ) => ({
33+ key: ` card-${index } ` ,
34+ props: {
35+ title: ` Card ${index + 1 } ` ,
36+ content: text ,
37+ index ,
38+ },
39+ }));
40+ </script >
41+
42+ <template >
43+ <div class =" surface-scroll-example" >
44+ <h2 >Surface Scroll Example</h2 >
45+ <p >A simple horizontal scrolling example with Lorem Ipsum cards.</p >
46+
47+ <CdrSurfaceScroll
48+ id =" surface-scroll-demo"
49+ description =" Horizontal scrolling cards with Lorem Ipsum content"
50+ :frames =" frames"
51+ :frames-gap =" 16"
52+ :is-showing-arrows =" true"
53+ class =" surface-scroll-example__scroll"
54+ >
55+ <template #frame =" { title , content }: Record < string , unknown > " >
56+ <article class =" surface-scroll-example__card" >
57+ <CdrSurface
58+ border-radius =" soft"
59+ background =" secondary"
60+ class =" surface-scroll-example__surface"
61+ >
62+ <CdrTitle tag =" h3" class =" surface-scroll-example__title" >
63+ {{ title }}
64+ </CdrTitle >
65+
66+ <CdrText class =" surface-scroll-example__content" >
67+ {{ content }}
68+ </CdrText >
69+ </CdrSurface >
70+ </article >
71+ </template >
72+ </CdrSurfaceScroll >
73+ </div >
74+ </template >
75+
76+ <style lang="scss" scoped>
77+ @use ' @rei/cdr-tokens/dist/rei-dot-com/scss/cdr-tokens.scss' as * ;
78+
79+ .surface-scroll-example {
80+ padding : $cdr-space-two-x ;
81+
82+ h2 {
83+ margin-bottom : $cdr-space-one-x ;
84+ }
85+
86+ p {
87+ margin-bottom : $cdr-space-two-x ;
88+ color : $cdr-color-text-secondary ;
89+ }
90+
91+ & __scroll {
92+ width : 100% ;
93+ }
94+
95+ & __card {
96+ width : 100% ;
97+ height : 200px ;
98+ outline : none ;
99+
100+ & :focus-visible {
101+ outline : 2px solid $cdr-color-border-secondary ;
102+ outline-offset : 2px ;
103+ }
104+ }
105+
106+ & __surface {
107+ width : 100% ;
108+ height : 100% ;
109+ padding : $cdr-space-one-and-a-half-x ;
110+ display : flex ;
111+ flex-direction : column ;
112+ gap : $cdr-space-one-x ;
113+ }
114+
115+ & __title {
116+ margin : 0 ;
117+ }
118+
119+ & __content {
120+ margin : 0 ;
121+ flex : 1 ;
122+ }
123+ }
124+ </style >
0 commit comments