sliderpro-agentic-skills-etch 0.1.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.
- package/README.md +60 -0
- package/bin/cli.js +107 -0
- package/package.json +35 -0
- package/skills-package/components/dwc-slide.md +35 -0
- package/skills-package/components/dwc-slider-nav-button.md +56 -0
- package/skills-package/components/dwc-slider-pagination.md +60 -0
- package/skills-package/components/dwc-slider-play-pause.md +25 -0
- package/skills-package/components/dwc-slider-progress.md +70 -0
- package/skills-package/components/dwc-slider-wrapper.md +69 -0
- package/skills-package/components/dwc-slider.md +326 -0
- package/skills-package/slider-skills/slider-pro-skills-reference.md +491 -0
- package/skills-package/slider-skills/slider-pro-skills.md +492 -0
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
---
|
|
2
|
+
icon: books
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# AI Skills Reference: Lookup Companion
|
|
6
|
+
|
|
7
|
+
This is the **lookup-only** companion to `slider-pro-skills.md` (same folder). You do NOT need to
|
|
8
|
+
read this file in full at session start. Grep into the one section a task needs, following the
|
|
9
|
+
"When to consult the reference file" guidance in the main file.
|
|
10
|
+
|
|
11
|
+
> **Full prose reference (local, preferred):** the tables here are lookup summaries. For the
|
|
12
|
+
> descriptions, slot documentation and per-component examples they omit, read the `components/`
|
|
13
|
+
> folder next to this one (`../components/dwc-slider.md`, `dwc-slider-wrapper.md`,
|
|
14
|
+
> `dwc-slide.md`, `dwc-slider-progress.md`, `dwc-slider-play-pause.md`,
|
|
15
|
+
> `dwc-slider-pagination.md`, `dwc-slider-nav-button.md`). If that folder is not present, use the
|
|
16
|
+
> online docs instead.
|
|
17
|
+
>
|
|
18
|
+
> **Full reference (online):** <https://design-with-cracka.gitbook.io/etchsliderpro>
|
|
19
|
+
|
|
20
|
+
***
|
|
21
|
+
|
|
22
|
+
## 1. Prop reference
|
|
23
|
+
|
|
24
|
+
Every settable prop on all seven components. Generated from the Etch component export, so it
|
|
25
|
+
matches the components installed on the site. Do not hand-edit this section.
|
|
26
|
+
|
|
27
|
+
**Reading the tables**
|
|
28
|
+
|
|
29
|
+
* **Path** is what you set. `props.<group>.<key>`, always fully flattened.
|
|
30
|
+
* **Paths are unique within a component, not across them.** `props.class` exists on four of them
|
|
31
|
+
(Slide, Progress, Play-Pause, Pagination) and means something different on each. Always resolve
|
|
32
|
+
a path against the component you are setting it on. Similar-sounding settings usually differ by
|
|
33
|
+
group rather than colliding: Loop is `props.motion.loop` on the Slider and
|
|
34
|
+
`props.sliderlessSync.loop` on the Wrapper.
|
|
35
|
+
* **Attribute** is the `data-*` the prop writes onto the element. That attribute is what the
|
|
36
|
+
engine actually reads, so it is the ground truth when a prop and the rendered DOM disagree.
|
|
37
|
+
`style only` means the prop drives CSS or markup and writes no attribute.
|
|
38
|
+
* **Default** is the component's own default. **Never set a prop to its default value.**
|
|
39
|
+
* **Shown when** records the panel condition. It affects only whether Etch displays the field.
|
|
40
|
+
The value path is unaffected: it is `props.lightbox.staticLightbox`, never
|
|
41
|
+
`props.lightbox.ygku9jx.staticLightbox`.
|
|
42
|
+
|
|
43
|
+
<!-- GENERATED:PROPS start -->
|
|
44
|
+
|
|
45
|
+
### DWC Slider Wrapper
|
|
46
|
+
|
|
47
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
48
|
+
| --- | --- | --- | --- | --- |
|
|
49
|
+
| Background Color | `props.backgroundColor` | `style` | `var(--white, white)` | |
|
|
50
|
+
| Wrapper Height | `props.wrapperHeight` | `style` | `auto` | |
|
|
51
|
+
| Space Between Sliders | `props.spaceBetweenSliders` | `style` | | |
|
|
52
|
+
| Custom Class | `props.customClass` | `class` | `` | |
|
|
53
|
+
| Lazy Load Sliders | `props.lazyLoadSliders` | `data-lazy-init` | `false` | `true` / `false` |
|
|
54
|
+
| Lazy Preload Distance | `props.lazyPreloadDistance` | `data-lazy-preload` | `200` | Shown when `props.lazyLoadSliders` |
|
|
55
|
+
| Edge Fade | `props.edgeFade` | `data-edge-fade` | `false` | `true` / `false` |
|
|
56
|
+
| Fade Distance | `props.fadeDistance` | `style` | `15%` | Set overall fade distance from the edge. Shown when `props.edgeFade` |
|
|
57
|
+
| Fade Softness | `props.fadeSoftness` | `style` | `0.8` | Softness scale: 1 = softest fade, 0 = sharp edge. Shown when `props.edgeFade` |
|
|
58
|
+
| Fade Opacity | `props.fadeOpacity` | `style` | `0%` | Shown when `props.edgeFade` |
|
|
59
|
+
| Pause Sliders on Hover | `props.pauseSlidersOnHover` | `data-group-pause-on-hover` | `false` | `true` / `false` |
|
|
60
|
+
| Custom Element | `props.sliderlessSync.customElement` | `data-sync-custom-el` | | |
|
|
61
|
+
| Custom Element Nav | `props.sliderlessSync.customElementNav` | `data-sync-custom-el-nav` | `false` | `true` / `false`. Shown when `props.sliderlessSync.customElement.includes(".") \|\| props.sliderlessSync.customElement.includes("[")` |
|
|
62
|
+
| Loop | `props.sliderlessSync.loop` | `data-loop` | `false` | `true` / `false`. Shown when `props.sliderlessSync.customElement.includes(".") \|\| props.sliderlessSync.customElement.includes("[")` |
|
|
63
|
+
| Leading Zeros | `props.sliderlessSync.leadingZeros` | `data-leading-zeros` | `false` | `true` / `false`. Shown when `props.sliderlessSync.customElement.includes(".") \|\| props.sliderlessSync.customElement.includes("[")` |
|
|
64
|
+
| Title Delay | `props.sliderlessSync.titleDelay` | `data-slide-title-delay` | `200ms` | Shown when `props.sliderlessSync.customElement.includes(".") \|\| props.sliderlessSync.customElement.includes("[")` |
|
|
65
|
+
| Arrow Keys Navigation | `props.sliderlessSync.arrowKeysNavigation` | `data-arrow-keys` | `true` | `true` / `false`. Shown when `props.sliderlessSync.customElement.includes(".") \|\| props.sliderlessSync.customElement.includes("[")` |
|
|
66
|
+
| Autoplay | `props.sliderlessSync.autoplay` | `data-autoplay` | `true` | `true` / `false`. Shown when `props.sliderlessSync.customElement.includes(".") \|\| props.sliderlessSync.customElement.includes("[")` |
|
|
67
|
+
| Autoplay Interval | `props.sliderlessSync.autoplayInterval` | `data-interval` | `4000` | Shown when `props.sliderlessSync.autoplay` |
|
|
68
|
+
| Pause on Hover | `props.sliderlessSync.pauseOnHover` | `data-pause-on-hover` | `false` | `true` / `false`. Shown when `props.sliderlessSync.autoplay` |
|
|
69
|
+
|
|
70
|
+
### DWC Slider
|
|
71
|
+
|
|
72
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
73
|
+
| --- | --- | --- | --- | --- |
|
|
74
|
+
| Slider Class | `props.sliderClass` | `class` | `zyxobeo` | |
|
|
75
|
+
| Slider Role | `props.sliderSetup.sliderRole` | `data-slider-role` | `main` | `Main Slider : main` / `Thumbnail : thumbnails` |
|
|
76
|
+
| Main/Thumbnail Sync Group | `props.sliderSetup.mainThumbnailSyncGroup` | `data-sync-group` | | |
|
|
77
|
+
| Transition Type | `props.sliderSetup.transitionType` | `data-type` | `Slide` | `Slide` / `Fade` / `Loop` |
|
|
78
|
+
| Sllde Direction | `props.sliderSetup.slldeDirection` | `data-direction` | `ltr` | Left to Right: ltr \| Right to Left: rtl \| Vertical: ttb \| Supports responsive shorthand e.g. ttb sm:ltr |
|
|
79
|
+
| Sync Custom Element | `props.sliderSetup.syncCustomElement` | `data-sync-custom-el` | | Syncs slider with other elements on your page. Enter a CSS selector for your own elements, e.g. .hero-title. As the slider moves, the plugin adds is-active to the matching element, plus is-prev / is-next to its neighbours, so you can style them in CSS (e.g. .hero-title.is-active). To extend this feature, use the JS API ready() helper. See docs. |
|
|
80
|
+
| Sync Custom Element Nav | `props.sliderSetup.syncCustomElementNav` | `data-sync-custom-el-nav` | `false` | `true` / `false`. Shown when `props.sliderSetup.syncCustomElement.includes(".") \|\| props.sliderSetup.syncCustomElement.includes("[")` |
|
|
81
|
+
| Custom Options | `props.sliderSetup.customOptions` | `data-custom-options` | | Advanced: add extra Splide settings that don't have their own control here. Type them as name: value pairs separated by commas, e.g. wheel: true, waitForTransition: false, drag: 'free', speed: 800. These override the settings here. For structured settings (like per-breakpoint values), use the setOptions() JavaScript API instead. See docs. |
|
|
82
|
+
| Slide Title Delay | `props.sliderSetup.slideTitleDelay` | `data-slide-title-delay` | `200ms` | How long a Next/Prev nav button waits before swapping to the adjacent slide's title, so the button can resize first. Requires a [data-slide-title] element in the button. 0 = instant. See docs. |
|
|
83
|
+
| Slides Per Page | `props.layout.slidesPerPage` | `data-per-page` | `1` | Set for Base breakpoint and use breakpoint tokens for other breakpoints e.g. 3 md:2 sm:1 |
|
|
84
|
+
| Slides per Move | `props.layout.slidesPerMove` | `data-per-move` | `1` | |
|
|
85
|
+
| Gap between Slides | `props.layout.gapBetweenSlides` | `data-gap` | `1rem` | Set for Base breakpoint and other breakpoints e.g. 1rem md:0.5rem sm:0.25rem. You can also use a single clamp value. |
|
|
86
|
+
| Slider Edge Offset | `props.layout.sliderEdgeOffset` | `data-padding` | | Set splide padding for base and other breakpoints E.g. 8% lg:6% md:4% sm:2%. |
|
|
87
|
+
| -- Left Offset | `props.layout.leftOffset` | `data-padding-left` | | Set splide padding for base and other breakpoints E.g. 8% lg:6% md:4% sm:2%. |
|
|
88
|
+
| -- Right Offset | `props.layout.rightOffset` | `data-padding-right` | | Set splide padding for base and other breakpoints E.g. 8% lg:6% md:4% sm:2%. |
|
|
89
|
+
| Layout Mode | `props.layout.layoutMode` | `data-layout-mode` | | Values: slider or static. Example: "slider md:static" = slider at desktop, static at/below md (e.g. for a mobile stacked-cards) |
|
|
90
|
+
| Grid Columns | `props.layout.gridColumns` | `data-grid-columns` | | Grid columns when slider is in static mode.. Shown when `props.layout.layoutMode.includes("static")` |
|
|
91
|
+
| Padding Inline | `props.layout.paddingInline` | `style` | `0px` | Applies only on static layout. Shown when `props.layout.layoutMode.includes("static")` |
|
|
92
|
+
| Padding Block | `props.layout.paddingBlock` | `style` | `0px` | |
|
|
93
|
+
| Slider Width | `props.dimensions.sliderWidth` | `data-width` | | |
|
|
94
|
+
| Slider Height | `props.dimensions.sliderHeight` | `data-height` | `auto` | Set the base height, and use breakpoint tokens for other breakpoints, E.g. 700px lg:600px md:450px sm:300px. Property: --slide-height-active |
|
|
95
|
+
| Aspect Ratio | `props.dimensions.aspectRatio` | `data-height-ratio` | | Use `1.0` for a square (1:1), `0.75` for classic (4:3), `0.5625` for widescreen (16:9), `0.5` for panorama (2:1), or `0.4225` for ultrawide (21:9). Leave it empty to size the slider with Slider Height instead. It takes the responsive shorthand too, e.g. `0.5 md:0.5625 sm:0.75`.. Shown when `props.dimensions.sliderHeight === "auto"` |
|
|
96
|
+
| Slide Auto Width | `props.dimensions.slideAutoWidth` | `data-slide-auto-width` | `false` | `true` / `false` |
|
|
97
|
+
| Loop | `props.motion.loop` | `data-loop` | `true` | `true` / `false` |
|
|
98
|
+
| Rewind | `props.motion.rewind` | `data-rewind` | `false` | `true` / `false` |
|
|
99
|
+
| Enable Drag | `props.motion.enableDrag` | `data-drag` | `true` | `true` / `false` |
|
|
100
|
+
| Speed | `props.motion.speed` | `data-speed` | `400` | |
|
|
101
|
+
| Focus | `props.motion.focus` | `data-focus` | `0` | Determines which slide should be active if the carousel has multiple slides in a page. E.g. 0, 1, center |
|
|
102
|
+
| Update on Move | `props.motion.updateOnMove` | `data-update-on-move` | `true` | `true` / `false` |
|
|
103
|
+
| Auto Play | `props.autoplay.autoPlay` | `data-autoplay` | `true` | `true` / `false` |
|
|
104
|
+
| Interval | `props.autoplay.interval` | `data-interval` | `4000` | |
|
|
105
|
+
| Pause On Hover | `props.autoplay.pauseOnHover` | `data-pause-on-hover` | `false` | `true` / `false` |
|
|
106
|
+
| Play/Pause Button | `props.autoplay.playPauseButton` | `data-autoplay-toggle` | `true` | `true` / `false` |
|
|
107
|
+
| Bar Progress | `props.progress.barProgress` | `data-bar-progress` | `False` | `False` / `Slides` / `Timer` |
|
|
108
|
+
| Circular Progress | `props.progress.circularProgress` | `data-circular-progress` | `False` | `False` / `Slides` / `Timer` |
|
|
109
|
+
| Counter Progress | `props.progress.counterProgress` | `data-counter` | `false` | `true` / `false` |
|
|
110
|
+
| Counter Leading Zeros | `props.progress.counterLeadingZeros` | `data-leading-zeros` | `false` | `true` / `false`. Shown when `props.progress.circularProgress !== "False" \|\| props.progress.counterProgress` |
|
|
111
|
+
| Infinite Scroll | `props.autoscroll.infiniteScroll` | `data-auto-scroll` | `false` | `true` / `false` |
|
|
112
|
+
| Scroll Speed | `props.autoscroll.scrollSpeed` | `data-auto-scroll-speed` | `4` | Shown when `props.autoscroll.infiniteScroll` |
|
|
113
|
+
| Pause on Hover | `props.autoscroll.pauseOnHover` | `data-auto-scroll-pause-on-hover` | `true` | `true` / `false`. Shown when `props.autoscroll.infiniteScroll` |
|
|
114
|
+
| Pause on Focus | `props.autoscroll.pauseOnFocus` | `data-auto-scroll-pause-on-focus` | `true` | `true` / `false`. Shown when `props.autoscroll.infiniteScroll` |
|
|
115
|
+
| Navigation Arrows | `props.navigation.navigationArrows` | `data-arrows` | `true` | `true` / `false` |
|
|
116
|
+
| Pagination Dots | `props.navigation.paginationDots` | `data-pagination` | `true` | `true` / `false` |
|
|
117
|
+
| Enable | `props.overlay.enable` | `data-overlay` | `false` | `true` / `false` |
|
|
118
|
+
| Overlay Background | `props.overlay.overlayBackground` | `style` | `var(--slider-overlay-bg-inactive)` | Shown when `props.overlay.enable` |
|
|
119
|
+
| Overaly Background Inactive | `props.overlay.overalyBackgroundInactive` | `style` | `color-mix(in oklch, black 55%, transparent)` | Shown when `props.overlay.enable` |
|
|
120
|
+
| Edge Fade | `props.overlay.edgeFade` | `data-edge-fade` | `false` | `true` / `false` |
|
|
121
|
+
| Fade Distance | `props.overlay.fadeDistance` | `style` | `15%` | Set overall fade distance from the edge. Shown when `props.overlay.edgeFade` |
|
|
122
|
+
| Fade Softness | `props.overlay.fadeSoftness` | `style` | `0.8` | Softness scale: 1 = softest fade, 0 = sharp edge. Shown when `props.overlay.edgeFade` |
|
|
123
|
+
| Fade Opacity | `props.overlay.fadeOpacity` | `style` | `0%` | `0%` fades it fully out (default), up to `100%` for no fade at the edge.. Shown when `props.overlay.edgeFade` |
|
|
124
|
+
| Overflow | `props.slides.overflow` | `data-overflow` | `false` | `true` / `false` |
|
|
125
|
+
| Opacity | `props.slides.opacity` | `style` | `1` | |
|
|
126
|
+
| Opacity-Active | `props.slides.opacityActive` | `style` | `1` | |
|
|
127
|
+
| Scale | `props.slides.scale` | `style` | `1` | |
|
|
128
|
+
| Scale-Active | `props.slides.scaleActive` | `style` | `1` | |
|
|
129
|
+
| TranslateY | `props.slides.translateY` | `style` | `0` | |
|
|
130
|
+
| TranslateY-Active | `props.slides.translateYActive` | `style` | `0` | |
|
|
131
|
+
| TranslateX | `props.slides.translateX` | `style` | `0` | |
|
|
132
|
+
| Flip Next TranslateX | `props.slides.flipNextTranslateX` | `data-flip-translate-x` | `false` | `true` / `false`. Shown when `props.slides.translateX !== "0"` |
|
|
133
|
+
| TranslateX-Active | `props.slides.translateXActive` | `style` | `0` | |
|
|
134
|
+
| RotateY | `props.slides.rotateY` | `style` | `0deg` | |
|
|
135
|
+
| Flip Next RotateY | `props.slides.flipNextRotateY` | `data-flip-rotate-y` | `false` | `true` / `false`. Shown when `props.slides.rotateY !== "0deg"` |
|
|
136
|
+
| RotateY-Active | `props.slides.rotateYActive` | `style` | `0deg` | |
|
|
137
|
+
| RotateX | `props.slides.rotateX` | `style` | `0deg` | |
|
|
138
|
+
| RotateX-Active | `props.slides.rotateXActive` | `style` | `0deg` | |
|
|
139
|
+
| Transform Origin | `props.slides.transformOrigin` | `style` | `center center` | |
|
|
140
|
+
| Perspective | `props.slides.perspective` | `style` | `initial` | |
|
|
141
|
+
| Border | `props.slides.border` | `style` | `none` | |
|
|
142
|
+
| Border-Active | `props.slides.borderActive` | `style` | `none` | |
|
|
143
|
+
| Transition | `props.slides.transition` | `style` | `0.4s` | |
|
|
144
|
+
| Transition-Active | `props.slides.transitionActive` | `style` | `0.4s` | |
|
|
145
|
+
| Border Radius | `props.slides.borderRadius` | `style` | | |
|
|
146
|
+
| Height-Inactive | `props.slides.heightInactive` | `style` | `var(--slide-height-active)` | |
|
|
147
|
+
| Lightbox | `props.lightbox.lightbox` | `data-lightbox` | `False` | `False` / `Images` / `Slides` |
|
|
148
|
+
| Lightbox Arrows | `props.lightbox.lightboxArrows` | `data-lightbox-arrows` | `true` | `true` / `false`. Shown when `props.lightbox.lightbox !== "False"` |
|
|
149
|
+
| Lightbox Counter | `props.lightbox.lightboxCounter` | `data-lightbox-counter` | `true` | `true` / `false`. Shown when `props.lightbox.lightbox !== "False"` |
|
|
150
|
+
| Lightbox Transition | `props.lightbox.lightboxTransition` | `data-lightbox-type` | `Rewind` | `Rewind` / `Loop` / `Slide` / `Fade`. Shown when `props.lightbox.lightbox !== "False"` |
|
|
151
|
+
| Static Lightbox | `props.lightbox.staticLightbox` | `data-static-lightbox` | `true` | `true` / `false`. Shown when `props.lightbox.lightbox !== "False"` |
|
|
152
|
+
| Lazy Load Slider | `props.performance.lazyLoadSlider` | `data-lazy-init` | `false` | `true` / `false` |
|
|
153
|
+
| Lazy Preload Distance | `props.performance.lazyPreloadDistance` | `data-lazy-preload` | `200` | Shown when `props.performance.lazyLoadSlider` |
|
|
154
|
+
| Thumbnail slide width | `props.builderPreview.thumbnailSlideWidth` | `style` | `350px` | Applies to thumbnails inside a Slider Wrapper |
|
|
155
|
+
| Outline | `props.builderPreview.outline` | `style` | `dashed 1px color-mix(in oklch, aqua 50%,transparent)` | |
|
|
156
|
+
| Laptop (lg) | `props.breakpoints.laptopLg` | `data-breakpoint-lg` | | Default: 1120px |
|
|
157
|
+
| Tablet (md) | `props.breakpoints.tabletMd` | `data-breakpoint-md` | | Default: 1024px |
|
|
158
|
+
| Phone (sm) | `props.breakpoints.phoneSm` | `data-breakpoint-sm` | | Default: 640px |
|
|
159
|
+
| Aria Label | `props.ariaLabel` | `aria-label` | | |
|
|
160
|
+
| data-slider-id | `props.dataSliderId` | `data-slider-id` | | |
|
|
161
|
+
|
|
162
|
+
### DWC Slide
|
|
163
|
+
|
|
164
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
165
|
+
| --- | --- | --- | --- | --- |
|
|
166
|
+
| Class | `props.class` | `class` | `` | |
|
|
167
|
+
| Slide Title | `props.slideTitle` | `data-slide-title` | | Add a slide title that will show on the custom next/prev buttons. Falls back to [data-slide-title] text, then to first heading in the slide. Note: a text with attribute [data-slide-title] must be added to the custom next/prev buttons to activate this feature. |
|
|
168
|
+
|
|
169
|
+
### DWC Slider Progress
|
|
170
|
+
|
|
171
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
172
|
+
| --- | --- | --- | --- | --- |
|
|
173
|
+
| Progress type | `props.progressType` | `data-progress-type` | `circular` | `Circular : circular` / `Bar : bar` / `Counter : counter` |
|
|
174
|
+
| -- Circular Size (px) | `props.circularSizePx` | `data-circular-size` | `52` | Must be more than twice the Circular Radius.. Shown when `props.progressType === "circular"` |
|
|
175
|
+
| -- Circular radius (px) | `props.circularRadiusPx` | `data-circular-radius` | `25` | Must be less than half the Circular Size. Shown when `props.progressType === "circular"` |
|
|
176
|
+
| -- Circular Stroke (px) | `props.circularStrokePx` | `data-circular-stroke` | `3` | Shown when `props.progressType === "circular"` |
|
|
177
|
+
| -- Circular Counter | `props.circularCounter` | `data-circular-counter` | `true` | `true` / `false`. Shown when `props.progressType === "circular"` |
|
|
178
|
+
| --- Counter Font Size (rem) | `props.counterFontSizeRem` | `data-circular-font` | `0.6` | Shown when `props.circularCounter === true` |
|
|
179
|
+
| Progress Mode | `props.progressMode` | `data-progress-mode` | `slides` | `Slides : slides` / `Timer : timer`. Shown when `props.progressType !== "counter"` |
|
|
180
|
+
| Visibility | `props.style.counterText.visibility` | style only | `Default` | `Default` / `Hide Total : hide-total` / `Hide Current : hide-current`. Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
181
|
+
| Total Color | `props.style.counterText.totalColor` | `style` | `#8888a0` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
182
|
+
| Current Color | `props.style.counterText.currentColor` | `style` | `var(--primary, #ff4d6a)` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
183
|
+
| Total Font Size | `props.style.counterText.totalFontSize` | `style` | `0.8rem` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
184
|
+
| Current Font Size | `props.style.counterText.currentFontSize` | `style` | `0.8rem` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
185
|
+
| Separator Color | `props.style.counterText.separatorColor` | `style` | `var(--progress-clr-total)` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
186
|
+
| Separator Size | `props.style.counterText.separatorSize` | `style` | `0.6rem` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
187
|
+
| Separator Gap | `props.style.counterText.separatorGap` | `style` | `-0.08em` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
188
|
+
| Padding | `props.style.padding` | `style` | ` 4px 12px` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
189
|
+
| Background Blur | `props.style.backgroundBlur` | `style` | `8px` | Shown when `props.progressType === "counter" \|\| (props.progressType === "circular" && props.circularCounter)` |
|
|
190
|
+
| Progress Fill Color | `props.style.progressFillColor` | `style` | `#ff4d6a` | Shown when `props.progressType === "bar" \|\| props.progressType === "circular"` |
|
|
191
|
+
| Progress Fill Color 2 | `props.style.progressFillColor2` | `style` | `#ff8fa3` | Shown when `props.progressType === "bar"` |
|
|
192
|
+
| Progress Track Color | `props.style.progressTrackColor` | `style` | `rgba(255, 255, 255, 0.1)` | Shown when `props.progressType === "bar" \|\| props.progressType === "circular"` |
|
|
193
|
+
| Background Color | `props.style.backgroundColor` | `style` | `rgba(0, 0, 0, 0.4)` | Shown when `props.progressType === "counter"` |
|
|
194
|
+
| Border Radius | `props.style.borderRadius` | `style` | `20px` | Shown when `props.progressType === "counter"` |
|
|
195
|
+
| Border | `props.style.border` | `style` | `1px solid rgba(255, 255, 255, 0.08)` | Shown when `props.progressType === "counter"` |
|
|
196
|
+
| Class | `props.class` | `class` | `` | |
|
|
197
|
+
|
|
198
|
+
### DWC Slider Play-Pause
|
|
199
|
+
|
|
200
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
201
|
+
| --- | --- | --- | --- | --- |
|
|
202
|
+
| Size | `props.size` | `style` | `40px` | |
|
|
203
|
+
| Border Radius | `props.borderRadius` | `style` | `50vw` | |
|
|
204
|
+
| Border | `props.border` | `style` | `1px solid rgba(255, 255, 255, 0.1)` | |
|
|
205
|
+
| Color | `props.color` | `style` | `#fff` | |
|
|
206
|
+
| Hover/Active Border Color | `props.hoverActiveBorderColor` | `style` | `var(--primary, #ff4d6a)` | |
|
|
207
|
+
| Background | `props.background` | `style` | `rgba(0, 0, 0, 0.4)` | |
|
|
208
|
+
| Hover/Active Background | `props.hoverActiveBackground` | `style` | `color-mix(in oklch, var(--primary, #ff4d6a) 20%, transparent)` | |
|
|
209
|
+
| Background Blur | `props.backgroundBlur` | `style` | `8px` | |
|
|
210
|
+
| Class | `props.class` | `class` | `` | |
|
|
211
|
+
|
|
212
|
+
### DWC Slider Pagination
|
|
213
|
+
|
|
214
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
215
|
+
| --- | --- | --- | --- | --- |
|
|
216
|
+
| Custom Pagination Mode | `props.customPaginationMode` | `data-custom-pagination` | `Default` | `Default` / `Template` |
|
|
217
|
+
| Background Color | `props.wrapper.backgroundColor` | `style` | `rgba(0 0 0 / 40%)` | Shown when `props.customPaginationMode === "Default"` |
|
|
218
|
+
| Filter Blur | `props.wrapper.filterBlur` | `style` | `5px` | Shown when `props.customPaginationMode === "Default"` |
|
|
219
|
+
| Padding | `props.wrapper.padding` | `style` | `0.5em 1em` | Shown when `props.customPaginationMode === "Default"` |
|
|
220
|
+
| Border Radius | `props.wrapper.borderRadius` | `style` | | Shown when `props.customPaginationMode === "Default"` |
|
|
221
|
+
| Size | `props.dot.size` | `style` | `calc(var(--font-size) * 2)` | Shown when `props.customPaginationMode === "Default"` |
|
|
222
|
+
| Background | `props.dot.background` | `style` | ` color-mix(in oklch, white 20%, transparent)` | Shown when `props.customPaginationMode === "Default"` |
|
|
223
|
+
| Active Background | `props.dot.activeBackground` | `style` | `#ff4d6a` | Shown when `props.customPaginationMode === "Default"` |
|
|
224
|
+
| Border Radius | `props.dot.borderRadius` | `style` | `50%` | Shown when `props.customPaginationMode === "Default"` |
|
|
225
|
+
| Font Size | `props.dot.fontSize` | `style` | `1rem` | Shown when `props.customPaginationMode === "Default"` |
|
|
226
|
+
| Text Color | `props.dot.textColor` | `style` | | Shown when `props.customPaginationMode === "Default"` |
|
|
227
|
+
| Active Text Color | `props.dot.activeTextColor` | `style` | | Shown when `props.customPaginationMode === "Default"` |
|
|
228
|
+
| Position | `props.layout.position` | `style` | `Relative` | `Relative` / `Absolute` / `Static` / `Fixed` |
|
|
229
|
+
| Z-index | `props.layout.zIndex` | `style` | `initial` | |
|
|
230
|
+
| Direction | `props.layout.direction` | `style` | `Row` | `Row` / `Column` |
|
|
231
|
+
| Gap | `props.layout.gap` | `style` | `1rem` | |
|
|
232
|
+
| Class | `props.class` | `class` | `` | |
|
|
233
|
+
|
|
234
|
+
### DWC Slider Nav Button
|
|
235
|
+
|
|
236
|
+
| Prop | Path | Attribute | Default | Values / notes |
|
|
237
|
+
| --- | --- | --- | --- | --- |
|
|
238
|
+
| Navigation Type | `props.navigationType` | `data-go-to` | `next` | `Next Slide : next` / `Previous Slide : prev` / `First Slide : first` / `Last Slide : last` / `Go to Slide : custom` |
|
|
239
|
+
| Custom Slide | `props.customSlide` | `data-go-to` | `1` | Shown when `props.navigationType === "custom"` |
|
|
240
|
+
| Use Custom Arrow | `props.useCustomArrow` | style only | `false` | `true` / `false`. Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
241
|
+
| Custom SVG | `props.customSvg` | style only | | Paste SVG here. NOTE: To use custom SVG, enable 'Allow "unsafe" HTML' in Etch Settings. Shown when `props.useCustomArrow` |
|
|
242
|
+
| Background | `props.styles.background` | `style` | `rgba(255, 255, 255, 0.06)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
243
|
+
| Hover Background | `props.styles.hoverBackground` | `style` | `color-mix(in oklch, var(--primary, #ff4d6a) 20%, transparent)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
244
|
+
| Background Blur | `props.styles.backgroundBlur` | `style` | `10px` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
245
|
+
| Color | `props.styles.color` | `style` | `color-mix(in oklch, white 50%, transparent)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
246
|
+
| Hover Color | `props.styles.hoverColor` | `style` | `#fff` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
247
|
+
| Icon Size | `props.styles.iconSize` | `style` | `1.125rem` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
248
|
+
| Opacity | `props.styles.opacity` | `style` | `1` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
249
|
+
| Hover Opacity | `props.styles.hoverOpacity` | `style` | `1` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
250
|
+
| Border | `props.styles.border` | `style` | `1px solid rgba(255, 255, 255, 0.1)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
251
|
+
| Hover Border Color | `props.styles.hoverBorderColor` | `style` | `var(--primary, #ff4d6a)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
252
|
+
| Border Radius | `props.styles.borderRadius` | `style` | `50%` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
253
|
+
| Min Width | `props.styles.minWidth` | `style` | `2.75rem` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
254
|
+
| Min Height | `props.styles.minHeight` | style only | `var(--arrow-width)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
255
|
+
| Padding | `props.styles.padding` | `style` | `0px` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
256
|
+
| Aspect Ratio | `props.styles.aspectRatio` | `style` | `1` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
257
|
+
| Transition | `props.styles.transition` | `style` | `0.3s cubic-bezier(0.4, 0, 0.2, 1)` | Shown when `props.navigationType === "next" \|\| props.navigationType === "prev"` |
|
|
258
|
+
| Button Class | `props.buttonClass` | `class` | `` | Add a class to style your navigation button |
|
|
259
|
+
| Button Wrapper Class | `props.buttonWrapperClass` | `class` | `` | Outer button wrapper, useful when applying positioning styles e.g. order |
|
|
260
|
+
|
|
261
|
+
### Attributes with no prop behind them
|
|
262
|
+
|
|
263
|
+
The engine reads these, but no component prop writes them, and `etch.blocks.setAttribute` only
|
|
264
|
+
accepts keys registered on the component. Use this table to recognise them when reading a page.
|
|
265
|
+
|
|
266
|
+
| Attribute | Notes |
|
|
267
|
+
| --- | --- |
|
|
268
|
+
| `data-auto-height` | Hardcoded to an empty value on the Slider element and not documented. Inert: treat it as unavailable. |
|
|
269
|
+
| `data-autoplay-progress` | Read by the engine but not declared by the component. Use the Progress component, or the Slider's own Bar/Circular Progress props. |
|
|
270
|
+
| `data-fixed-height` | Hardcoded to an empty value on the Slider element and not documented. Inert: treat it as unavailable. |
|
|
271
|
+
| `data-sc-template` | Marks which child of a custom pagination is the template to clone. The engine sets it on the first child when absent. |
|
|
272
|
+
|
|
273
|
+
<!-- GENERATED:PROPS end -->
|
|
274
|
+
|
|
275
|
+
***
|
|
276
|
+
|
|
277
|
+
## 2. CSS variables
|
|
278
|
+
|
|
279
|
+
Arrows, dots, pagination, progress, play/pause and the lightbox are styled with CSS custom
|
|
280
|
+
properties, not props. The template class is **`.slider-navigation-vars`**, holding 94 variables.
|
|
281
|
+
|
|
282
|
+
**Per-slider styling.** Each Slider's **Slider Class** prop (`props.sliderClass`) names the class
|
|
283
|
+
its variables are read from, so two sliders on one page style independently. The plugin renames
|
|
284
|
+
the auto-generated class on save, so never style directly on `.slider-navigation-vars`: add your
|
|
285
|
+
own class (e.g. `.my-slider`) and style that. Classes you add yourself are never renamed.
|
|
286
|
+
|
|
287
|
+
### Arrows
|
|
288
|
+
|
|
289
|
+
`--arrow-bg`, `--arrow-clr`, `--arrow-radius`, `--arrow-width`, `--arrow-height`,
|
|
290
|
+
`--arrow-padding`, `--arrow-aspect-ratio`, `--arrow-icon-size`, `--arrow-bg-blur`,
|
|
291
|
+
`--arrow-border`, `--arrow-opacity`, `--arrow-transition`
|
|
292
|
+
|
|
293
|
+
Hover: `--arrow-hover-bg`, `--arrow-hover-clr`, `--arrow-hover-opacity`, `--arrow-hover-border-clr`
|
|
294
|
+
|
|
295
|
+
Position, per side: `--prev-arrow-top/-bottom/-left/-right/-transform` and
|
|
296
|
+
`--next-arrow-top/-bottom/-left/-right/-transform`
|
|
297
|
+
|
|
298
|
+
### Pagination dots
|
|
299
|
+
|
|
300
|
+
`--dot-size`, `--dot-radius`, `--dot-clr`, `--dot-transition`, `--dot-hover-clr`,
|
|
301
|
+
`--dot-clr-active`, `--dot-transform-active`
|
|
302
|
+
|
|
303
|
+
Wrapper: `--pagination-position`, `--pagination-padding`, `--pagination-bg`,
|
|
304
|
+
`--pagination-bg-blur`, `--pagination-radius`, `--pagination-gap`, and
|
|
305
|
+
`--pagination-top/-bottom/-left/-right/-transform`
|
|
306
|
+
|
|
307
|
+
### Play / pause
|
|
308
|
+
|
|
309
|
+
`--play-pause-size`, `--play-pause-radius`, `--play-pause-border`, `--play-pause-clr`,
|
|
310
|
+
`--play-pause-bg`, `--play-pause-bg-blur`, `--play-pause-hover-bg`,
|
|
311
|
+
`--play-pause-hover-border-clr`, `--play-pause-top/-bottom/-left/-right`, `--play-pause-z-index`
|
|
312
|
+
|
|
313
|
+
### Progress (bar, circular, counter)
|
|
314
|
+
|
|
315
|
+
`--progress-fill-clr`, `--progress-fill-clr-2`, `--progress-bg`, `--progress-bg-blur`,
|
|
316
|
+
`--progress-border-radius`, `--progress-border`, `--progress-padding`, `--progress-track-clr`,
|
|
317
|
+
`--progress-separator-clr`, `--progress-separator-gap`, `--progress-separator-size`,
|
|
318
|
+
`--progress-clr-current`, `--progress-font-size-current`, `--progress-clr-total`,
|
|
319
|
+
`--progress-font-size-total`, `--progress-top/-bottom/-left/-right`, `--progress-z-index`
|
|
320
|
+
|
|
321
|
+
### Lightbox overlay
|
|
322
|
+
|
|
323
|
+
Themeable **per slider, from the Slider Class**, the same place arrows and dots are styled. Media
|
|
324
|
+
queries inside that class work: the overlay reads the value for the current viewport.
|
|
325
|
+
|
|
326
|
+
`--lightbox-bg`, `--lightbox-z`, `--lightbox-close-size`, `--lightbox-padding`,
|
|
327
|
+
`--lightbox-img-height`, `--lightbox-slide-height`, `--lightbox-arrow-bg`,
|
|
328
|
+
`--lightbox-arrow-hover-bg`, `--lightbox-clr`
|
|
329
|
+
|
|
330
|
+
### Card deck variables (Sync Without Slider stacks)
|
|
331
|
+
|
|
332
|
+
Not part of `.slider-navigation-vars`. These live on the stack element of a card-deck build and
|
|
333
|
+
are the knobs for its 3-D geometry. See `https://design-with-cracka.gitbook.io/etchsliderpro/card-stack-templates` for the full treatment.
|
|
334
|
+
|
|
335
|
+
| Variable | Meaning |
|
|
336
|
+
| --- | --- |
|
|
337
|
+
| `--dur` | how long one card change takes |
|
|
338
|
+
| `--ease` | easing curve |
|
|
339
|
+
| `--lag` | how far the sideways move trails the lift. This is what reads as a shuffle rather than a slide |
|
|
340
|
+
| `--spread` | sideways offset of the prev/next cards |
|
|
341
|
+
| `--tilt` | their rotation |
|
|
342
|
+
| `--depth-near` | how far back prev/next sit on the Z axis |
|
|
343
|
+
| `--depth-far` | where every other card waits, invisible |
|
|
344
|
+
|
|
345
|
+
**How many cards a deck needs to loop.** Three are always on show, the front card and the two
|
|
346
|
+
beside it. To loop, the deck also needs a hidden slot at each end for the wrapping card to pass
|
|
347
|
+
through unseen. Three visible plus two hidden means **five is the minimum for Loop to work at
|
|
348
|
+
all**, and each extra row fanned out behind costs two more cards:
|
|
349
|
+
|
|
350
|
+
| Rows behind the front card | Cards needed to loop |
|
|
351
|
+
| --- | --- |
|
|
352
|
+
| 1 (just the two side cards) | 5 |
|
|
353
|
+
| 2 | 7 |
|
|
354
|
+
| 3 (the full fan) | 9 |
|
|
355
|
+
|
|
356
|
+
So five cards loops but only ever shows the three-card fan. With fewer than five, turn Loop off
|
|
357
|
+
and the deck dead-ends at the first and last card. A queue that throws cards away (the Fall
|
|
358
|
+
pattern) never loops, so it has no minimum: two cards is fine.
|
|
359
|
+
|
|
360
|
+
The deck script exposes `MAX_TIERS` (the deepest ring the CSS defines) and `NAV_RINGS` (how many
|
|
361
|
+
rings stay clickable). `MIN_LOOP` is the safety rule behind the table above: leave it alone.
|
|
362
|
+
|
|
363
|
+
***
|
|
364
|
+
|
|
365
|
+
## 3. Sync Custom Element and Sync Without Slider
|
|
366
|
+
|
|
367
|
+
The feature behind every premade template. A slider (or a wrapper with no slider) moves three
|
|
368
|
+
classes across elements you nominate:
|
|
369
|
+
|
|
370
|
+
| Class | On |
|
|
371
|
+
| --- | --- |
|
|
372
|
+
| `is-active` | the element for the current slide |
|
|
373
|
+
| `is-prev` | the one before it |
|
|
374
|
+
| `is-next` | the one after it |
|
|
375
|
+
|
|
376
|
+
Those three are the entire contract. **You write all the CSS**; the plugin only moves the classes.
|
|
377
|
+
|
|
378
|
+
### With a slider
|
|
379
|
+
|
|
380
|
+
Set `props.sliderSetup.syncCustomElement` (`data-sync-custom-el`) on the **Slider** to a CSS
|
|
381
|
+
selector for your elements.
|
|
382
|
+
|
|
383
|
+
* **Multiple sets:** comma-separate them, e.g. `.headings, .thumb-strip`. Each set is tracked
|
|
384
|
+
independently, so a 3-item set and a 2-item set each wrap on their own count.
|
|
385
|
+
* Commas **inside** a selector are safe: `:is(.a, .b)`, `:not(.x, .y)`, `[data-role="a,b"]` are
|
|
386
|
+
left intact.
|
|
387
|
+
* Elements can live anywhere on the page and do not have to be inside the slider.
|
|
388
|
+
* They do not have to match the slide count.
|
|
389
|
+
|
|
390
|
+
### Without a slider
|
|
391
|
+
|
|
392
|
+
Set `props.sliderlessSync.customElement` (`data-sync-custom-el`) on the **Wrapper**, and put no
|
|
393
|
+
`.splide` inside it. That combination alone switches the wrapper into Sync Without Slider. Its
|
|
394
|
+
own group then supplies Loop, Arrow Keys, Auto Play, Interval and Pause on Hover.
|
|
395
|
+
|
|
396
|
+
### Element nav (clickable synced elements)
|
|
397
|
+
|
|
398
|
+
`data-sync-custom-el-nav` makes the sync two-way: each element also becomes a go-to control, and
|
|
399
|
+
the plugin gives it `role="button"` and `tabindex="0"`.
|
|
400
|
+
|
|
401
|
+
**The overlap caveat, and it bites on every card deck.** Stacked elements sit on top of each
|
|
402
|
+
other, and coplanar boxes are hit-tested by DOM order, so the **last** overlapping element in the
|
|
403
|
+
HTML wins a click however far back it appears. Decide explicitly which element a click reaches:
|
|
404
|
+
set a `z-index` ladder by distance from the active card, and switch `pointer-events` off beyond
|
|
405
|
+
the rings you want clickable. Both need the per-card distance, which is one of the two cases where
|
|
406
|
+
a script is allowed (see the main file).
|
|
407
|
+
|
|
408
|
+
To opt out of focusability, set `tabindex="-1"` on the elements yourself; the plugin will not
|
|
409
|
+
overwrite it.
|
|
410
|
+
|
|
411
|
+
***
|
|
412
|
+
|
|
413
|
+
## 4. Escape hatches, in order of preference
|
|
414
|
+
|
|
415
|
+
1. **A prop.** Check the tables above first. 177 of the 181 props write a `data-*` attribute, so
|
|
416
|
+
almost everything the engine reads is reachable this way.
|
|
417
|
+
2. **Custom Options** (`props.sliderSetup.customOptions`) for a Splide setting with no control of
|
|
418
|
+
its own. Written as `name: value` pairs, e.g. `wheel: true, waitForTransition: false`.
|
|
419
|
+
3. **`setOptions()` / `ready()`** from your own JavaScript, for structured settings such as
|
|
420
|
+
per-breakpoint values that Custom Options cannot express. See `https://design-with-cracka.gitbook.io/etchsliderpro/javascript-api`.
|
|
421
|
+
|
|
422
|
+
`etch.blocks.setAttribute` validates the key against the component's registered properties, so an
|
|
423
|
+
arbitrary `data-*` cannot be set on a component instance. The four attributes with no prop behind
|
|
424
|
+
them are listed in section 1 for recognition when reading a page.
|
|
425
|
+
|
|
426
|
+
```js
|
|
427
|
+
// Turn on a Splide setting the panel does not expose
|
|
428
|
+
window.SplideComponent.setOptions('.my-slider', { pageInterval: 1200 });
|
|
429
|
+
|
|
430
|
+
// Run code once a slider is mounted
|
|
431
|
+
window.SplideComponent.ready('.my-slider', function (splide) {
|
|
432
|
+
splide.on('move', function (i) { /* ... */ });
|
|
433
|
+
});
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
`setOptions` handles the rebuild when a setting changes size or layout. Use `move` when the page
|
|
437
|
+
should react immediately and `moved` to wait for the slide to arrive. Do not bind a `mounted`
|
|
438
|
+
handler inside `ready()`: the slider mounted before your code ran, so it has already fired.
|
|
439
|
+
|
|
440
|
+
***
|
|
441
|
+
|
|
442
|
+
## 5. Recognising an existing setup
|
|
443
|
+
|
|
444
|
+
Before configuring an unfamiliar slider, check whether it is a premade template. If it is, use
|
|
445
|
+
that template's documented knobs rather than inventing new CSS.
|
|
446
|
+
|
|
447
|
+
| Template | Identify by | Script | Guide |
|
|
448
|
+
| --- | --- | --- | --- |
|
|
449
|
+
| Slider Zeon | `.slider-zeon`, `.main-slider-zeon` | no | `https://design-with-cracka.gitbook.io/etchsliderpro/premade-templates` |
|
|
450
|
+
| Slider Chronos | `.slider-chronos` | no | `https://design-with-cracka.gitbook.io/etchsliderpro/premade-templates` |
|
|
451
|
+
| Slider Flow | `.slider-flow` | no | `https://design-with-cracka.gitbook.io/etchsliderpro/premade-templates` |
|
|
452
|
+
| Slider Team | `.slider-team` | no | `https://design-with-cracka.gitbook.io/etchsliderpro/premade-templates` |
|
|
453
|
+
| Slider Stack | `.slider-stack`, `.slider-stack__card` | no | `https://design-with-cracka.gitbook.io/etchsliderpro/card-stack-templates` |
|
|
454
|
+
| Slider Marquee | no class prefix. Identify by the combination: Infinite Scroll on, Edge Fade on, Slide Auto Width on, two wrappers whose rows scroll in opposite directions | no | `https://design-with-cracka.gitbook.io/etchsliderpro/premade-templates` |
|
|
455
|
+
| Deck Featured | `.deck-stack-featured`, `.deck-card-featured` | yes | `https://design-with-cracka.gitbook.io/etchsliderpro/card-stack-templates` |
|
|
456
|
+
| Deck Testimonial | `.deck-stack-testimonial`, `.deck-card-testimonial` | yes | `https://design-with-cracka.gitbook.io/etchsliderpro/card-stack-templates` |
|
|
457
|
+
| Fall | `.fall-stack`, `.fall-card` | yes | `https://design-with-cracka.gitbook.io/etchsliderpro/card-stack-templates` |
|
|
458
|
+
|
|
459
|
+
All nine use Sync Custom Element.
|
|
460
|
+
|
|
461
|
+
The three that carry a script expose named constants at the top of it. On the two Deck templates,
|
|
462
|
+
`MAX_TIERS` is the deepest ring the CSS defines and `NAV_RINGS` is how many rings stay clickable.
|
|
463
|
+
`MIN_LOOP` is a safety rule about how few cards a loop can hide a wrap behind: leave it alone.
|
|
464
|
+
Fall's script has nothing to adjust.
|
|
465
|
+
|
|
466
|
+
***
|
|
467
|
+
|
|
468
|
+
## 6. Admin settings
|
|
469
|
+
|
|
470
|
+
Site-wide, at **Settings > Slider Pro for Etch**. An agent rarely changes these but may need to
|
|
471
|
+
reason about them.
|
|
472
|
+
|
|
473
|
+
| Setting | Values | Effect |
|
|
474
|
+
| --- | --- | --- |
|
|
475
|
+
| Splide Library Source | Local (default) / CDN | where Splide loads from |
|
|
476
|
+
| When to Load Slider Assets | Every page (default) / Only when needed / Never | see below |
|
|
477
|
+
| Auto-Scroll Extension | on (default) / off | required by Infinite Scroll marquees |
|
|
478
|
+
| Breakpoints | SM 640, MD 1024, LG 1120 | the site-wide values behind the responsive shorthand |
|
|
479
|
+
|
|
480
|
+
**When to Load Slider Assets** governs Splide plus the plugin's own engine and stylesheet. On
|
|
481
|
+
"Only when needed" a page loads only what it uses, detected from the rendered markup. On "Never",
|
|
482
|
+
Splide is never sent, so sliders, marquees and the lightbox stop working while card stacks keep
|
|
483
|
+
running. The Etch builder always loads everything, so authoring is never affected.
|
|
484
|
+
|
|
485
|
+
If a slider fails to appear on anything other than "Every page", its markup reached the browser in
|
|
486
|
+
a way the detection could not see. Either switch back to "Every page" or add
|
|
487
|
+
`add_filter( 'dwc_slider_pro_needs_assets', '__return_true' );`. Adding `?dwc_debug=1` as an
|
|
488
|
+
administrator prints a footer comment showing what was detected.
|
|
489
|
+
|
|
490
|
+
Per-slider breakpoint overrides live on the Slider itself
|
|
491
|
+
(`props.breakpoints.laptopBreakpoint` and friends); leave a field blank to inherit the site value.
|