@birdycom/omniaui-vue 0.12.0 → 0.12.2

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/manifest.json CHANGED
@@ -420,12 +420,24 @@
420
420
  "file": "src/components/OcLinkArrow.vue",
421
421
  "snippet": "@birdycom/omniaui/snippets/link-arrow.html"
422
422
  },
423
+ {
424
+ "name": "OcLinkRow",
425
+ "kind": "component",
426
+ "file": "src/components/OcLinkRow.vue",
427
+ "snippet": "@birdycom/omniaui/snippets/link-row.html"
428
+ },
423
429
  {
424
430
  "name": "OcListToolbar",
425
431
  "kind": "component",
426
432
  "file": "src/components/OcListToolbar.vue",
427
433
  "snippet": "@birdycom/omniaui/snippets/list-toolbar.html"
428
434
  },
435
+ {
436
+ "name": "OcLiveFrame",
437
+ "kind": "component",
438
+ "file": "src/components/OcLiveFrame.vue",
439
+ "snippet": "@birdycom/omniaui/snippets/live-frame.html"
440
+ },
429
441
  {
430
442
  "name": "OcMarquee",
431
443
  "kind": "component",
@@ -840,6 +852,12 @@
840
852
  "file": "src/components/OcVersionBanner.vue",
841
853
  "snippet": "@birdycom/omniaui/snippets/version-banner.html"
842
854
  },
855
+ {
856
+ "name": "OcWatermark",
857
+ "kind": "component",
858
+ "file": "src/components/OcWatermark.vue",
859
+ "snippet": "@birdycom/omniaui/snippets/watermark.html"
860
+ },
843
861
  {
844
862
  "name": "OcBlockAboutTimeline",
845
863
  "kind": "block",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@birdycom/omniaui-vue",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "description": "OmniaUI for Vue 3: one single-file component per OmniaUI component and block, rendering the exact markup of the CSS packages.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,19 @@
1
+ <!-- File: packages/vue/src/components/OcLinkRow.vue | Map: props (links, tone, size) -> ul.oc-link-row -> li > a per link, or the slot -->
2
+ <script setup lang="ts">
3
+ /** A row of links under a card; external links get an arrow, github.com links the GitHub mark (CSS, by the href).
4
+ * Classes: .oc-link-row + --accent/--muted, --sm/--lg */
5
+ withDefaults(
6
+ defineProps<{ links?: { href: string; label: string }[]; tone?: 'default' | 'accent' | 'muted'; size?: 'sm' | 'default' | 'lg' }>(),
7
+ { tone: 'default', size: 'default' },
8
+ )
9
+ const external = (href: string) => /^https?:\/\//.test(href)
10
+ </script>
11
+
12
+ <template>
13
+ <ul :class="['oc-link-row', tone !== 'default' && `oc-link-row--${tone}`, size !== 'default' && `oc-link-row--${size}`]">
14
+ <template v-if="links">
15
+ <li v-for="(l, i) in links" :key="i"><a :href="l.href" :rel="external(l.href) ? 'noopener' : undefined">{{ l.label }}</a></li>
16
+ </template>
17
+ <slot v-else />
18
+ </ul>
19
+ </template>
@@ -0,0 +1,21 @@
1
+ <!-- File: packages/vue/src/components/OcLiveFrame.vue | Map: props (src, title, width, height, static) -> div.oc-live-frame -> iframe or slot -->
2
+ <script setup lang="ts">
3
+ /**
4
+ * A live page at a virtual size (default 1280x720), scaled down to the frame width in pure CSS. Without src the slot
5
+ * goes in (an <img>, <video> or .oc-live-frame__content). Classes: .oc-live-frame, --static, .oc-browser-frame__view
6
+ */
7
+ withDefaults(
8
+ defineProps<{ src?: string; title?: string; width?: number; height?: number; static?: boolean; inBrowserFrame?: boolean }>(),
9
+ { title: '', width: 1280, height: 720, static: false, inBrowserFrame: false },
10
+ )
11
+ </script>
12
+
13
+ <template>
14
+ <div
15
+ :class="[inBrowserFrame && 'oc-browser-frame__view', 'oc-live-frame', static && 'oc-live-frame--static']"
16
+ :style="{ '--oc-live-w': width, '--oc-live-h': height }"
17
+ >
18
+ <iframe v-if="src" :src="src" :title="title" loading="lazy" scrolling="no" :tabindex="static ? -1 : undefined" />
19
+ <slot v-else />
20
+ </div>
21
+ </template>
@@ -0,0 +1,29 @@
1
+ <!-- File: packages/vue/src/components/OcWatermark.vue | Map: props (text, variant, tone, repeat) -> span.oc-watermark (text once or tiled) -->
2
+ <script setup lang="ts">
3
+ /**
4
+ * Light text over its positioned parent (put it last inside an element with class="relative"). Click-through and
5
+ * aria-hidden. A logo or icon goes in the "mark" slot (<img> or <svg>) instead of text. Classes: .oc-watermark + --straight/--tile/--corner/--corner-top, --light/--primary/--destructive
6
+ */
7
+ withDefaults(
8
+ defineProps<{
9
+ text?: string
10
+ variant?: 'diagonal' | 'straight' | 'tile' | 'corner' | 'corner-top'
11
+ tone?: 'default' | 'light' | 'primary' | 'destructive'
12
+ repeat?: number
13
+ mono?: boolean
14
+ }>(),
15
+ { text: 'Concept', variant: 'diagonal', tone: 'default', repeat: 12, mono: false },
16
+ )
17
+ </script>
18
+
19
+ <template>
20
+ <span
21
+ :class="['oc-watermark', variant !== 'diagonal' && `oc-watermark--${variant}`, tone !== 'default' && `oc-watermark--${tone}`, mono && 'oc-watermark--mono']"
22
+ aria-hidden="true"
23
+ >
24
+ <template v-for="i in (variant === 'tile' ? Math.max(1, repeat) : 1)" :key="i">
25
+ <slot v-if="$slots.mark" name="mark" />
26
+ <span v-else><slot>{{ text }}</slot></span>
27
+ </template>
28
+ </span>
29
+ </template>
package/src/index.ts CHANGED
@@ -71,7 +71,9 @@ import OcLanguageSelect from './components/OcLanguageSelect.vue'
71
71
  import OcLauncherCard from './components/OcLauncherCard.vue'
72
72
  import OcLightbox from './components/OcLightbox.vue'
73
73
  import OcLinkArrow from './components/OcLinkArrow.vue'
74
+ import OcLinkRow from './components/OcLinkRow.vue'
74
75
  import OcListToolbar from './components/OcListToolbar.vue'
76
+ import OcLiveFrame from './components/OcLiveFrame.vue'
75
77
  import OcMarquee from './components/OcMarquee.vue'
76
78
  import OcMediaCard from './components/OcMediaCard.vue'
77
79
  import OcMediaRow from './components/OcMediaRow.vue'
@@ -141,6 +143,7 @@ import OcTree from './components/OcTree.vue'
141
143
  import OcUpgradeBanner from './components/OcUpgradeBanner.vue'
142
144
  import OcUser from './components/OcUser.vue'
143
145
  import OcVersionBanner from './components/OcVersionBanner.vue'
146
+ import OcWatermark from './components/OcWatermark.vue'
144
147
  import OcBlockAboutTimeline from './blocks/OcBlockAboutTimeline.vue'
145
148
  import OcBlockAppHeader from './blocks/OcBlockAppHeader.vue'
146
149
  import OcBlockAppShell from './blocks/OcBlockAppShell.vue'
@@ -245,7 +248,9 @@ export {
245
248
  OcLauncherCard,
246
249
  OcLightbox,
247
250
  OcLinkArrow,
251
+ OcLinkRow,
248
252
  OcListToolbar,
253
+ OcLiveFrame,
249
254
  OcMarquee,
250
255
  OcMediaCard,
251
256
  OcMediaRow,
@@ -315,6 +320,7 @@ export {
315
320
  OcUpgradeBanner,
316
321
  OcUser,
317
322
  OcVersionBanner,
323
+ OcWatermark,
318
324
  OcBlockAboutTimeline,
319
325
  OcBlockAppHeader,
320
326
  OcBlockAppShell,
@@ -475,7 +481,9 @@ export const components: Record<string, Component> = {
475
481
  OcLauncherCard,
476
482
  OcLightbox,
477
483
  OcLinkArrow,
484
+ OcLinkRow,
478
485
  OcListToolbar,
486
+ OcLiveFrame,
479
487
  OcMarquee,
480
488
  OcMediaCard,
481
489
  OcMediaRow,
@@ -545,6 +553,7 @@ export const components: Record<string, Component> = {
545
553
  OcUpgradeBanner,
546
554
  OcUser,
547
555
  OcVersionBanner,
556
+ OcWatermark,
548
557
  OcBlockAboutTimeline,
549
558
  OcBlockAppHeader,
550
559
  OcBlockAppShell,