@amedia/brick-mcp 0.1.3 → 0.1.4
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 +50 -1
- package/data/components/brick-mcp.md +259 -0
- package/data/components/brick-pill.md +362 -0
- package/data/components/brick-player.md +331 -0
- package/data/components/brick-published.md +219 -0
- package/data/components/brick-share.md +335 -0
- package/data/components/brick-stepper.md +319 -0
- package/data/components/brick-tab.md +241 -0
- package/data/components/brick-tabs.md +420 -0
- package/data/components/brick-tag.md +335 -0
- package/data/components/brick-teaser-player.md +248 -0
- package/data/components/brick-teaser-reels.md +190 -0
- package/data/components/brick-teaser.md +262 -0
- package/data/components/brick-template.md +226 -0
- package/data/components/brick-textarea.md +191 -0
- package/data/components/brick-themes.md +104 -0
- package/data/components/brick-toast.md +271 -0
- package/data/components/brick-toggle.md +268 -0
- package/data/components/brick-tokens.md +287 -0
- package/data/components/brick-tooltip.md +249 -0
- package/data/components-metadata.json +34 -34
- package/data/tokens.json +0 -7
- package/dist/data/components/brick-mcp.md +259 -0
- package/dist/data/components/brick-pill.md +362 -0
- package/dist/data/components/brick-player.md +331 -0
- package/dist/data/components/brick-published.md +219 -0
- package/dist/data/components/brick-share.md +335 -0
- package/dist/data/components/brick-stepper.md +319 -0
- package/dist/data/components/brick-tab.md +241 -0
- package/dist/data/components/brick-tabs.md +420 -0
- package/dist/data/components/brick-tag.md +335 -0
- package/dist/data/components/brick-teaser-player.md +248 -0
- package/dist/data/components/brick-teaser-reels.md +190 -0
- package/dist/data/components/brick-teaser.md +262 -0
- package/dist/data/components/brick-template.md +226 -0
- package/dist/data/components/brick-textarea.md +191 -0
- package/dist/data/components/brick-themes.md +104 -0
- package/dist/data/components/brick-toast.md +271 -0
- package/dist/data/components/brick-toggle.md +268 -0
- package/dist/data/components/brick-tokens.md +287 -0
- package/dist/data/components/brick-tooltip.md +249 -0
- package/dist/data/components-metadata.json +34 -34
- package/dist/data/tokens.json +0 -7
- package/package.json +37 -37
- package/data/components/brick-mcp.json +0 -6
- package/data/components/brick-pill.json +0 -6
- package/data/components/brick-player.json +0 -7
- package/data/components/brick-published.json +0 -7
- package/data/components/brick-share.json +0 -7
- package/data/components/brick-stepper.json +0 -7
- package/data/components/brick-tab.json +0 -7
- package/data/components/brick-tabs.json +0 -9
- package/data/components/brick-tag.json +0 -7
- package/data/components/brick-teaser-player.json +0 -9
- package/data/components/brick-teaser-reels.json +0 -9
- package/data/components/brick-teaser.json +0 -9
- package/data/components/brick-template.json +0 -9
- package/data/components/brick-textarea.json +0 -7
- package/data/components/brick-themes.json +0 -6
- package/data/components/brick-toast.json +0 -9
- package/data/components/brick-toggle.json +0 -7
- package/data/components/brick-tokens.json +0 -8
- package/data/components/brick-tooltip.json +0 -7
- package/dist/data/components/brick-mcp.json +0 -6
- package/dist/data/components/brick-pill.json +0 -6
- package/dist/data/components/brick-player.json +0 -7
- package/dist/data/components/brick-published.json +0 -7
- package/dist/data/components/brick-share.json +0 -7
- package/dist/data/components/brick-stepper.json +0 -7
- package/dist/data/components/brick-tab.json +0 -7
- package/dist/data/components/brick-tabs.json +0 -9
- package/dist/data/components/brick-tag.json +0 -7
- package/dist/data/components/brick-teaser-player.json +0 -9
- package/dist/data/components/brick-teaser-reels.json +0 -9
- package/dist/data/components/brick-teaser.json +0 -9
- package/dist/data/components/brick-template.json +0 -9
- package/dist/data/components/brick-textarea.json +0 -7
- package/dist/data/components/brick-themes.json +0 -6
- package/dist/data/components/brick-toast.json +0 -9
- package/dist/data/components/brick-toggle.json +0 -7
- package/dist/data/components/brick-tokens.json +0 -8
- package/dist/data/components/brick-tooltip.json +0 -7
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brick-tag
|
|
3
|
+
version: 0.0.14
|
|
4
|
+
selector: brick-tag-v0
|
|
5
|
+
category: Navigation
|
|
6
|
+
tags: [tag, label, link, category, topic, metadata, badge]
|
|
7
|
+
use_cases: [article-tags, categories, topics, filtering, navigation, metadata-display]
|
|
8
|
+
related: [brick-tokens, brick-template]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Brick Tag
|
|
12
|
+
|
|
13
|
+
A clickable tag component for displaying and linking to topics, categories, or metadata with multiple visual variants and customizable styling.
|
|
14
|
+
|
|
15
|
+
## Key Capabilities
|
|
16
|
+
|
|
17
|
+
- Three visual variants: simple, prominent, and capsule
|
|
18
|
+
- Three size options: small, medium, and large
|
|
19
|
+
- Renders as clickable link with proper semantics
|
|
20
|
+
- Customizable colors via CSS custom properties
|
|
21
|
+
- ARIA label support for accessibility
|
|
22
|
+
- Underline decoration on hover
|
|
23
|
+
- Server-side rendering support
|
|
24
|
+
|
|
25
|
+
## Props/Attributes
|
|
26
|
+
|
|
27
|
+
| Attribute | Type | Default | Required | Description |
|
|
28
|
+
| ----------------- | --------------------------------------- | ---------- | -------- | ------------------------------------------------- |
|
|
29
|
+
| `data-text` | string | - | yes | Tag text to display |
|
|
30
|
+
| `data-link` | string | - | yes | URL to navigate to when tag is clicked |
|
|
31
|
+
| `data-version` | `"simple" \| "prominent" \| "capsule"` | `"simple"` | no | Visual style variant |
|
|
32
|
+
| `data-size` | `"small" \| "medium" \| "large"` | `"medium"` | no | Tag size |
|
|
33
|
+
| `data-aria-label` | string | - | no | ARIA label for accessibility |
|
|
34
|
+
|
|
35
|
+
## Examples
|
|
36
|
+
|
|
37
|
+
### Basic Tag (Simple)
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<brick-tag-v0
|
|
41
|
+
data-text="Ullhunder"
|
|
42
|
+
data-link="https://ba.no/tag/ullhunder"
|
|
43
|
+
data-aria-label="Vis artikler om Ullhunder"
|
|
44
|
+
>
|
|
45
|
+
</brick-tag-v0>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Prominent Tag
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<brick-tag-v0
|
|
52
|
+
data-text="Breaking News"
|
|
53
|
+
data-link="/tag/breaking-news"
|
|
54
|
+
data-version="prominent"
|
|
55
|
+
data-size="large"
|
|
56
|
+
data-aria-label="Se nyheter om Breaking News"
|
|
57
|
+
>
|
|
58
|
+
</brick-tag-v0>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Capsule Tag
|
|
62
|
+
|
|
63
|
+
```html
|
|
64
|
+
<brick-tag-v0
|
|
65
|
+
data-text="Sports"
|
|
66
|
+
data-link="/tag/sports"
|
|
67
|
+
data-version="capsule"
|
|
68
|
+
>
|
|
69
|
+
</brick-tag-v0>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Small Tag
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<brick-tag-v0
|
|
76
|
+
data-text="Technology"
|
|
77
|
+
data-link="/tag/technology"
|
|
78
|
+
data-size="small"
|
|
79
|
+
>
|
|
80
|
+
</brick-tag-v0>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Multiple Tags
|
|
84
|
+
|
|
85
|
+
```html
|
|
86
|
+
<div class="article-tags">
|
|
87
|
+
<brick-tag-v0
|
|
88
|
+
data-text="Politics"
|
|
89
|
+
data-link="/tag/politics"
|
|
90
|
+
data-version="simple"
|
|
91
|
+
></brick-tag-v0>
|
|
92
|
+
|
|
93
|
+
<brick-tag-v0
|
|
94
|
+
data-text="Economy"
|
|
95
|
+
data-link="/tag/economy"
|
|
96
|
+
data-version="simple"
|
|
97
|
+
></brick-tag-v0>
|
|
98
|
+
|
|
99
|
+
<brick-tag-v0
|
|
100
|
+
data-text="Environment"
|
|
101
|
+
data-link="/tag/environment"
|
|
102
|
+
data-version="simple"
|
|
103
|
+
></brick-tag-v0>
|
|
104
|
+
</div>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Server-Side Rendering
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
import { renderBrickTag } from '@amedia/brick-tag/template';
|
|
111
|
+
|
|
112
|
+
const html = renderBrickTag({
|
|
113
|
+
dataText: 'Technology',
|
|
114
|
+
dataLink: '/tag/technology',
|
|
115
|
+
dataVersion: 'prominent',
|
|
116
|
+
dataSize: 'medium',
|
|
117
|
+
dataAriaLabel: 'View articles about technology',
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Styling and CSS Properties
|
|
122
|
+
|
|
123
|
+
Customize tag appearance using CSS custom properties:
|
|
124
|
+
|
|
125
|
+
```css
|
|
126
|
+
brick-tag-v0 {
|
|
127
|
+
/* Foreground color */
|
|
128
|
+
--b-tag-link-color-fg: #008300;
|
|
129
|
+
|
|
130
|
+
/* Background color */
|
|
131
|
+
--b-tag-link-color-bg: rgb(221, 255, 221);
|
|
132
|
+
|
|
133
|
+
/* Hover background color */
|
|
134
|
+
--b-tag-link-hover-bg: rgb(199, 245, 199);
|
|
135
|
+
|
|
136
|
+
/* Hover foreground color */
|
|
137
|
+
--b-tag-link-hover-fg: #008300;
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Example: Custom Green Tag
|
|
142
|
+
|
|
143
|
+
```html
|
|
144
|
+
<brick-tag-v0
|
|
145
|
+
data-text="Environment"
|
|
146
|
+
data-link="/tag/environment"
|
|
147
|
+
data-version="prominent"
|
|
148
|
+
style="--b-tag-link-color-fg: #008300; --b-tag-link-color-bg: rgb(221, 255, 221); --b-tag-link-hover-bg: rgb(199, 245, 199); --b-tag-link-hover-fg: #008300"
|
|
149
|
+
>
|
|
150
|
+
</brick-tag-v0>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Visual Variants
|
|
154
|
+
|
|
155
|
+
### Simple
|
|
156
|
+
|
|
157
|
+
Default style with minimal visual weight. Best for inline tag lists.
|
|
158
|
+
|
|
159
|
+
```html
|
|
160
|
+
<brick-tag-v0
|
|
161
|
+
data-text="Simple Tag"
|
|
162
|
+
data-link="/tag/simple"
|
|
163
|
+
data-version="simple"
|
|
164
|
+
>
|
|
165
|
+
</brick-tag-v0>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Prominent
|
|
169
|
+
|
|
170
|
+
More visual emphasis with stronger background. Best for featured tags.
|
|
171
|
+
|
|
172
|
+
```html
|
|
173
|
+
<brick-tag-v0
|
|
174
|
+
data-text="Prominent Tag"
|
|
175
|
+
data-link="/tag/prominent"
|
|
176
|
+
data-version="prominent"
|
|
177
|
+
>
|
|
178
|
+
</brick-tag-v0>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Capsule
|
|
182
|
+
|
|
183
|
+
Rounded capsule style. Best for category badges.
|
|
184
|
+
|
|
185
|
+
```html
|
|
186
|
+
<brick-tag-v0
|
|
187
|
+
data-text="Capsule Tag"
|
|
188
|
+
data-link="/tag/capsule"
|
|
189
|
+
data-version="capsule"
|
|
190
|
+
>
|
|
191
|
+
</brick-tag-v0>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Accessibility
|
|
195
|
+
|
|
196
|
+
- Renders as semantic `<a>` link element
|
|
197
|
+
- Support for custom ARIA labels via `data-aria-label`
|
|
198
|
+
- Keyboard accessible (Tab to focus, Enter to activate)
|
|
199
|
+
- Focus visible states for keyboard navigation
|
|
200
|
+
- Underline on hover for visual feedback
|
|
201
|
+
|
|
202
|
+
## Common Patterns
|
|
203
|
+
|
|
204
|
+
### Article Tags List
|
|
205
|
+
|
|
206
|
+
```html
|
|
207
|
+
<div class="article-meta">
|
|
208
|
+
<h3>Tags:</h3>
|
|
209
|
+
<brick-tag-v0
|
|
210
|
+
data-text="Local News"
|
|
211
|
+
data-link="/tag/local-news"
|
|
212
|
+
></brick-tag-v0>
|
|
213
|
+
|
|
214
|
+
<brick-tag-v0
|
|
215
|
+
data-text="City Council"
|
|
216
|
+
data-link="/tag/city-council"
|
|
217
|
+
></brick-tag-v0>
|
|
218
|
+
|
|
219
|
+
<brick-tag-v0
|
|
220
|
+
data-text="Infrastructure"
|
|
221
|
+
data-link="/tag/infrastructure"
|
|
222
|
+
></brick-tag-v0>
|
|
223
|
+
</div>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Category Navigation
|
|
227
|
+
|
|
228
|
+
```html
|
|
229
|
+
<nav aria-label="Article categories">
|
|
230
|
+
<brick-tag-v0
|
|
231
|
+
data-text="Sports"
|
|
232
|
+
data-link="/category/sports"
|
|
233
|
+
data-version="prominent"
|
|
234
|
+
data-size="large"
|
|
235
|
+
></brick-tag-v0>
|
|
236
|
+
|
|
237
|
+
<brick-tag-v0
|
|
238
|
+
data-text="Politics"
|
|
239
|
+
data-link="/category/politics"
|
|
240
|
+
data-version="prominent"
|
|
241
|
+
data-size="large"
|
|
242
|
+
></brick-tag-v0>
|
|
243
|
+
|
|
244
|
+
<brick-tag-v0
|
|
245
|
+
data-text="Culture"
|
|
246
|
+
data-link="/category/culture"
|
|
247
|
+
data-version="prominent"
|
|
248
|
+
data-size="large"
|
|
249
|
+
></brick-tag-v0>
|
|
250
|
+
</nav>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Topic Pills
|
|
254
|
+
|
|
255
|
+
```html
|
|
256
|
+
<div class="topic-pills">
|
|
257
|
+
<brick-tag-v0
|
|
258
|
+
data-text="Breaking"
|
|
259
|
+
data-link="/breaking"
|
|
260
|
+
data-version="capsule"
|
|
261
|
+
data-size="small"
|
|
262
|
+
></brick-tag-v0>
|
|
263
|
+
|
|
264
|
+
<brick-tag-v0
|
|
265
|
+
data-text="Trending"
|
|
266
|
+
data-link="/trending"
|
|
267
|
+
data-version="capsule"
|
|
268
|
+
data-size="small"
|
|
269
|
+
></brick-tag-v0>
|
|
270
|
+
</div>
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Framework Integration
|
|
274
|
+
|
|
275
|
+
### Svelte
|
|
276
|
+
|
|
277
|
+
```svelte
|
|
278
|
+
<script>
|
|
279
|
+
const tags = [
|
|
280
|
+
{ text: 'Politics', link: '/tag/politics' },
|
|
281
|
+
{ text: 'Economy', link: '/tag/economy' },
|
|
282
|
+
{ text: 'Sports', link: '/tag/sports' }
|
|
283
|
+
];
|
|
284
|
+
</script>
|
|
285
|
+
|
|
286
|
+
{#each tags as tag}
|
|
287
|
+
<brick-tag-v0
|
|
288
|
+
data-text={tag.text}
|
|
289
|
+
data-link={tag.link}
|
|
290
|
+
data-version="simple"
|
|
291
|
+
/>
|
|
292
|
+
{/each}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### React
|
|
296
|
+
|
|
297
|
+
```jsx
|
|
298
|
+
function TagList({ tags }) {
|
|
299
|
+
return (
|
|
300
|
+
<div className="tags">
|
|
301
|
+
{tags.map((tag) => (
|
|
302
|
+
<brick-tag-v0
|
|
303
|
+
key={tag.id}
|
|
304
|
+
data-text={tag.text}
|
|
305
|
+
data-link={tag.link}
|
|
306
|
+
data-version="simple"
|
|
307
|
+
/>
|
|
308
|
+
))}
|
|
309
|
+
</div>
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Technical Details
|
|
315
|
+
|
|
316
|
+
- **Custom Element**: `brick-tag-v0`
|
|
317
|
+
- **Base Class**: BrickElement
|
|
318
|
+
- **Dependencies**:
|
|
319
|
+
- @amedia/brick-template (base class)
|
|
320
|
+
- @amedia/brick-tokens (design tokens)
|
|
321
|
+
- **Renders as**: `<a>` (anchor/link element)
|
|
322
|
+
- **SSR Compatible**: Yes, with template function
|
|
323
|
+
|
|
324
|
+
## Important Notes
|
|
325
|
+
|
|
326
|
+
- Both `data-text` and `data-link` are required attributes
|
|
327
|
+
- The component always renders as a clickable link
|
|
328
|
+
- Hover state includes underline decoration for better UX
|
|
329
|
+
- Custom colors should maintain WCAG AA contrast requirements
|
|
330
|
+
- The component is versioned as v0, indicating it may have breaking changes in future releases
|
|
331
|
+
- Future versions may add dismissable and filter functionality (noted in types but not yet implemented)
|
|
332
|
+
|
|
333
|
+
## Version
|
|
334
|
+
|
|
335
|
+
Current version: 0.0.14
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brick-teaser-player
|
|
3
|
+
version: 1.1.0
|
|
4
|
+
selector: brick-teaser-player-v1
|
|
5
|
+
category: Media
|
|
6
|
+
tags: [video, player, teaser, flowplayer, media, autoplay, next-video, overlay]
|
|
7
|
+
use_cases: [video-teasers, video-playlists, next-video-recommendations, video-articles, media-content]
|
|
8
|
+
related: [brick-player, brick-image, brick-button, brick-tokens]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Brick Teaser Player
|
|
12
|
+
|
|
13
|
+
A video teaser component that wraps brick-player and provides "next video" overlay functionality with poster image, title, and premium indicators.
|
|
14
|
+
|
|
15
|
+
## Key Capabilities
|
|
16
|
+
|
|
17
|
+
- Wraps brick-player for video playback
|
|
18
|
+
- Automatic "next video" overlay at video end
|
|
19
|
+
- Displays next video metadata (title, poster, duration, premium status)
|
|
20
|
+
- Configurable aspect ratios (landscape, square, etc.)
|
|
21
|
+
- Autoplay support with muted playback
|
|
22
|
+
- Ad management (enable/disable ads)
|
|
23
|
+
- Premium content indicators
|
|
24
|
+
- Accessibility support with ARIA labels
|
|
25
|
+
- Server-side rendering support
|
|
26
|
+
- Integrates with brick-image for poster display
|
|
27
|
+
|
|
28
|
+
## Props/Attributes
|
|
29
|
+
|
|
30
|
+
| Attribute | Type | Default | Required | Description |
|
|
31
|
+
| ----------------------- | ------ | ------- | -------- | ----------------------------------------------------------- |
|
|
32
|
+
| `data-title` | string | - | no | Video title for display |
|
|
33
|
+
| `data-media-id` | string | - | yes | Flowplayer media UUID |
|
|
34
|
+
| `data-player-id` | string | - | no | Flowplayer configuration UUID |
|
|
35
|
+
| `data-autoplay` | string | `false` | no | Enable autoplay ("true" or "false") |
|
|
36
|
+
| `data-ads-disabled` | string | `false` | no | Disable video ads ("true" or "false") |
|
|
37
|
+
| `data-aspect-ratio` | string | `16:9` | no | Video aspect ratio (e.g., "16:9", "1:1", "9:16") |
|
|
38
|
+
| `data-start` | string | `0` | no | Start offset in seconds |
|
|
39
|
+
| `data-next` | string | - | no | Next video recommendation data (deprecated, use individual) |
|
|
40
|
+
| `data-next-acp-id` | string | - | no | Next video ACP identifier |
|
|
41
|
+
| `data-next-title` | string | - | no | Next video title |
|
|
42
|
+
| `data-next-poster-url` | string | - | no | Next video poster image URL |
|
|
43
|
+
| `data-next-duration` | string | - | no | Next video duration in seconds |
|
|
44
|
+
| `data-next-permalink` | string | - | no | Next video permalink/URL |
|
|
45
|
+
| `data-next-premium` | string | `false` | no | Whether next video is premium content ("true" or "false") |
|
|
46
|
+
| `data-muted` | string | `false` | no | Mute video audio ("true" or "false") |
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Basic Video Teaser
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<brick-teaser-player-v1
|
|
54
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
55
|
+
data-title="Breaking News Video"
|
|
56
|
+
>
|
|
57
|
+
</brick-teaser-player-v1>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### With Player Configuration
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<brick-teaser-player-v1
|
|
64
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
65
|
+
data-player-id="your-flowplayer-config-uuid"
|
|
66
|
+
data-title="News Report"
|
|
67
|
+
data-ads-disabled="true"
|
|
68
|
+
>
|
|
69
|
+
</brick-teaser-player-v1>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Square Video with Autoplay
|
|
73
|
+
|
|
74
|
+
```html
|
|
75
|
+
<brick-teaser-player-v1
|
|
76
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
77
|
+
data-aspect-ratio="1:1"
|
|
78
|
+
data-autoplay="true"
|
|
79
|
+
data-muted="true"
|
|
80
|
+
>
|
|
81
|
+
</brick-teaser-player-v1>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### With Next Video Recommendation
|
|
85
|
+
|
|
86
|
+
```html
|
|
87
|
+
<brick-teaser-player-v1
|
|
88
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
89
|
+
data-title="Current Video"
|
|
90
|
+
data-next-acp-id="5-95-2075626"
|
|
91
|
+
data-next-title="Anders Magnus: – Harris bør kaste ham til ulvene"
|
|
92
|
+
data-next-poster-url="https://g.acdn.no/obscura/API/image/r1/ece5/a/1729163346000/nett/2024/10/17/13/Kamala_Harris.jpg"
|
|
93
|
+
data-next-duration="409"
|
|
94
|
+
data-next-permalink="/video/therefore-heggebo-first-choice/v/5-8-2786319"
|
|
95
|
+
data-next-premium="false"
|
|
96
|
+
>
|
|
97
|
+
</brick-teaser-player-v1>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Premium Next Video
|
|
101
|
+
|
|
102
|
+
```html
|
|
103
|
+
<brick-teaser-player-v1
|
|
104
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
105
|
+
data-next-title="Premium Content Video"
|
|
106
|
+
data-next-poster-url="https://example.com/poster.jpg"
|
|
107
|
+
data-next-duration="300"
|
|
108
|
+
data-next-permalink="/video/premium-content/v/5-8-1234567"
|
|
109
|
+
data-next-premium="true"
|
|
110
|
+
>
|
|
111
|
+
</brick-teaser-player-v1>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Vertical Video (Stories/Reels)
|
|
115
|
+
|
|
116
|
+
```html
|
|
117
|
+
<brick-teaser-player-v1
|
|
118
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
119
|
+
data-aspect-ratio="9:16"
|
|
120
|
+
data-autoplay="true"
|
|
121
|
+
data-muted="true"
|
|
122
|
+
>
|
|
123
|
+
</brick-teaser-player-v1>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Programmatic Usage
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
const teaser = document.querySelector('brick-teaser-player-v1');
|
|
130
|
+
|
|
131
|
+
// Update next video programmatically
|
|
132
|
+
teaser.dataNextTitle = 'New Video Title';
|
|
133
|
+
teaser.dataNextPosterUrl = 'https://example.com/new-poster.jpg';
|
|
134
|
+
teaser.dataNextDuration = '180';
|
|
135
|
+
teaser.dataNextPermalink = '/video/new-video/v/5-8-9999999';
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Server-Side Rendering
|
|
139
|
+
|
|
140
|
+
```javascript
|
|
141
|
+
import { renderBrickTeaserPlayer } from '@amedia/brick-teaser-player/template';
|
|
142
|
+
|
|
143
|
+
const html = renderBrickTeaserPlayer({
|
|
144
|
+
dataMediaId: '5f4ff76f-7080-4972-b4b8-32007dfb545e',
|
|
145
|
+
dataTitle: 'Video Title',
|
|
146
|
+
dataAspectRatio: '16:9',
|
|
147
|
+
dataAutoplay: 'true',
|
|
148
|
+
dataMuted: 'true',
|
|
149
|
+
dataNextTitle: 'Next Video',
|
|
150
|
+
dataNextPosterUrl: 'https://example.com/poster.jpg',
|
|
151
|
+
dataNextDuration: '300',
|
|
152
|
+
dataNextPermalink: '/video/next',
|
|
153
|
+
dataNextPremium: 'false',
|
|
154
|
+
});
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Next Video Overlay
|
|
158
|
+
|
|
159
|
+
When a video ends, the component automatically displays an overlay showing:
|
|
160
|
+
|
|
161
|
+
- Next video poster image (via brick-image)
|
|
162
|
+
- Next video title
|
|
163
|
+
- Video duration
|
|
164
|
+
- Premium indicator (if applicable)
|
|
165
|
+
- Clickable link to next video
|
|
166
|
+
|
|
167
|
+
The overlay can be:
|
|
168
|
+
- Closed with ESC key
|
|
169
|
+
- Closed by clicking outside the overlay
|
|
170
|
+
- Navigated to by clicking the link
|
|
171
|
+
|
|
172
|
+
## Accessibility
|
|
173
|
+
|
|
174
|
+
- Implements proper ARIA labels for video player controls
|
|
175
|
+
- Next video overlay is keyboard accessible
|
|
176
|
+
- Focus management for overlay open/close states
|
|
177
|
+
- Screen reader announcements for next video recommendations
|
|
178
|
+
- Semantic HTML for video metadata
|
|
179
|
+
|
|
180
|
+
## Common Patterns
|
|
181
|
+
|
|
182
|
+
### Video Playlist
|
|
183
|
+
|
|
184
|
+
```html
|
|
185
|
+
<brick-teaser-player-v1
|
|
186
|
+
data-media-id="video-1-id"
|
|
187
|
+
data-title="Video 1"
|
|
188
|
+
data-next-title="Video 2"
|
|
189
|
+
data-next-poster-url="/poster-2.jpg"
|
|
190
|
+
data-next-duration="240"
|
|
191
|
+
data-next-permalink="/video-2"
|
|
192
|
+
>
|
|
193
|
+
</brick-teaser-player-v1>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Autoplay Muted Video
|
|
197
|
+
|
|
198
|
+
```html
|
|
199
|
+
<brick-teaser-player-v1
|
|
200
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
201
|
+
data-autoplay="true"
|
|
202
|
+
data-muted="true"
|
|
203
|
+
data-ads-disabled="true"
|
|
204
|
+
>
|
|
205
|
+
</brick-teaser-player-v1>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Video with ACP Tracking
|
|
209
|
+
|
|
210
|
+
```html
|
|
211
|
+
<brick-teaser-player-v1
|
|
212
|
+
data-media-id="5f4ff76f-7080-4972-b4b8-32007dfb545e"
|
|
213
|
+
data-next-acp-id="5-95-2075626"
|
|
214
|
+
data-next-title="Next Video Title"
|
|
215
|
+
data-next-poster-url="https://example.com/poster.jpg"
|
|
216
|
+
data-next-duration="409"
|
|
217
|
+
data-next-permalink="/video/next"
|
|
218
|
+
>
|
|
219
|
+
</brick-teaser-player-v1>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Technical Details
|
|
223
|
+
|
|
224
|
+
- **Custom Element**: `brick-teaser-player-v1`
|
|
225
|
+
- **Base Class**: BrickElement
|
|
226
|
+
- **Dependencies**:
|
|
227
|
+
- @amedia/brick-player (video playback)
|
|
228
|
+
- @amedia/brick-image (poster images)
|
|
229
|
+
- @amedia/brick-button (UI controls)
|
|
230
|
+
- @amedia/brick-template (base class)
|
|
231
|
+
- @amedia/brick-tokens (design tokens)
|
|
232
|
+
- **Renders as**: Container wrapping brick-player with overlay functionality
|
|
233
|
+
- **SSR Compatible**: Yes, with template function
|
|
234
|
+
|
|
235
|
+
## Important Notes
|
|
236
|
+
|
|
237
|
+
- The component is a wrapper around brick-player, inheriting its Flowplayer functionality
|
|
238
|
+
- Media IDs must be valid Flowplayer UUIDs
|
|
239
|
+
- Next video data can be provided individually or via the deprecated `data-next` JSON attribute
|
|
240
|
+
- The next video overlay appears automatically when the current video ends
|
|
241
|
+
- Premium content is indicated visually in the overlay
|
|
242
|
+
- Aspect ratio should match the actual video format for best display
|
|
243
|
+
- Autoplay typically requires muted playback to work across browsers
|
|
244
|
+
- The component integrates with video-yoshi API for recommendations
|
|
245
|
+
|
|
246
|
+
## Version
|
|
247
|
+
|
|
248
|
+
Current version: 1.1.0
|