@schemavaults/ui 0.38.0 → 0.39.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.
@@ -0,0 +1,39 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import type { ComponentProps, ReactElement } from "react";
3
+ export declare const aspectRatioPresetIds: ["square", "video", "photo", "wide", "ultrawide", "cinema", "portrait", "classic-portrait", "story"];
4
+ export type AspectRatioPresetId = (typeof aspectRatioPresetIds)[number];
5
+ /** Named, common aspect ratios resolved to width / height. */
6
+ export declare const ASPECT_RATIO_PRESETS: Record<AspectRatioPresetId, number>;
7
+ export declare const aspectRatioRadiusIds: ["none", "sm", "md", "lg", "xl", "2xl", "full"];
8
+ export type AspectRatioRadiusId = (typeof aspectRatioRadiusIds)[number];
9
+ export declare const aspectRatioVariants: (props?: ({
10
+ radius?: "sm" | "lg" | "xl" | "none" | "md" | "2xl" | "full" | null | undefined;
11
+ bordered?: boolean | null | undefined;
12
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
13
+ export interface AspectRatioProps extends Omit<ComponentProps<"div">, "ratio">, VariantProps<typeof aspectRatioVariants> {
14
+ /**
15
+ * Aspect ratio as `width / height` (e.g. `16 / 9` for widescreen).
16
+ * Takes precedence over `preset`. If neither is provided, defaults to `video` (16:9).
17
+ */
18
+ ratio?: number;
19
+ /**
20
+ * Named ratio preset. Use `ratio` for arbitrary values.
21
+ * - `square` (1:1) - avatars, tiles
22
+ * - `video` (16:9) - HD video / modern displays
23
+ * - `photo` (4:3) - classic photo
24
+ * - `wide` (3:2) - DSLR
25
+ * - `ultrawide` (21:9) - cinematic banners
26
+ * - `cinema` (~2.35:1) - anamorphic widescreen
27
+ * - `portrait` (3:4)
28
+ * - `classic-portrait` (2:3)
29
+ * - `story` (9:16) - vertical / mobile story
30
+ */
31
+ preset?: AspectRatioPresetId;
32
+ /** Render as the child element via Radix Slot. */
33
+ asChild?: boolean;
34
+ }
35
+ declare function AspectRatio({ className, ratio, preset, radius, bordered, asChild, style, children, ...props }: AspectRatioProps): ReactElement;
36
+ declare namespace AspectRatio {
37
+ var displayName: string;
38
+ }
39
+ export { AspectRatio };
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Slot } from "@radix-ui/react-slot";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../../../lib/utils";
6
+ export const aspectRatioPresetIds = [
7
+ "square",
8
+ "video",
9
+ "photo",
10
+ "wide",
11
+ "ultrawide",
12
+ "cinema",
13
+ "portrait",
14
+ "classic-portrait",
15
+ "story",
16
+ ];
17
+ /** Named, common aspect ratios resolved to width / height. */
18
+ export const ASPECT_RATIO_PRESETS = {
19
+ square: 1, // 1:1 - avatars, profile tiles, album art
20
+ video: 16 / 9, // 16:9 - HD video, modern displays
21
+ photo: 4 / 3, // 4:3 - classic photo / older displays
22
+ wide: 3 / 2, // 3:2 - DSLR photography
23
+ ultrawide: 21 / 9, // 21:9 - cinematic / banner heros
24
+ cinema: 2.35 / 1, // ~2.35:1 - anamorphic widescreen
25
+ portrait: 3 / 4, // 3:4 - portrait photo
26
+ "classic-portrait": 2 / 3, // 2:3 - portrait DSLR
27
+ story: 9 / 16, // 9:16 - vertical / mobile story
28
+ };
29
+ export const aspectRatioRadiusIds = [
30
+ "none",
31
+ "sm",
32
+ "md",
33
+ "lg",
34
+ "xl",
35
+ "2xl",
36
+ "full",
37
+ ];
38
+ export const aspectRatioVariants = cva("relative w-full overflow-hidden [&>img]:h-full [&>img]:w-full [&>img]:object-cover [&>video]:h-full [&>video]:w-full [&>video]:object-cover [&>iframe]:h-full [&>iframe]:w-full [&>iframe]:border-0", {
39
+ variants: {
40
+ radius: {
41
+ none: "rounded-none",
42
+ sm: "rounded-sm",
43
+ md: "rounded-md",
44
+ lg: "rounded-lg",
45
+ xl: "rounded-xl",
46
+ "2xl": "rounded-2xl",
47
+ full: "rounded-full",
48
+ },
49
+ bordered: {
50
+ true: "border border-border",
51
+ false: "",
52
+ },
53
+ },
54
+ defaultVariants: {
55
+ radius: "md",
56
+ bordered: false,
57
+ },
58
+ });
59
+ function AspectRatio({ className, ratio, preset, radius, bordered, asChild = false, style, children, ...props }) {
60
+ const Comp = asChild ? Slot : "div";
61
+ const resolvedRatio = ratio ??
62
+ (preset !== undefined
63
+ ? ASPECT_RATIO_PRESETS[preset]
64
+ : ASPECT_RATIO_PRESETS.video);
65
+ const mergedStyle = {
66
+ aspectRatio: String(resolvedRatio),
67
+ ...style,
68
+ };
69
+ return (_jsx(Comp, { "data-slot": "aspect-ratio", "data-preset": preset, className: cn(aspectRatioVariants({ radius, bordered }), className), style: mergedStyle, ...props, children: children }));
70
+ }
71
+ AspectRatio.displayName = "AspectRatio";
72
+ export { AspectRatio };
73
+ //# sourceMappingURL=aspect-ratio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.js","sourceRoot":"","sources":["../../../../src/components/ui/aspect-ratio/aspect-ratio.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ;IACR,OAAO;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACX,QAAQ;IACR,UAAU;IACV,kBAAkB;IAClB,OAAO;CACoB,CAAC;AAG9B,8DAA8D;AAC9D,MAAM,CAAC,MAAM,oBAAoB,GAAwC;IACvE,MAAM,EAAE,CAAC,EAAE,0CAA0C;IACrD,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,mCAAmC;IAClD,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,uCAAuC;IACrD,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,yBAAyB;IACtC,SAAS,EAAE,EAAE,GAAG,CAAC,EAAE,kCAAkC;IACrD,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,kCAAkC;IACpD,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,uBAAuB;IACxC,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,sBAAsB;IACjD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,iCAAiC;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,MAAM;CACqB,CAAC;AAG9B,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CACpC,qMAAqM,EACrM;IACE,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,YAAY;YAChB,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,cAAc;SACyB;QAC/C,QAAQ,EAAE;YACR,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,EAAE;SACV;KACF;IACD,eAAe,EAAE;QACf,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,KAAK;KAChB;CACF,CACF,CAAC;AA2BF,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,GAAG,KAAK,EACf,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACS;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACpC,MAAM,aAAa,GACjB,KAAK;QACL,CAAC,MAAM,KAAK,SAAS;YACnB,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAElC,MAAM,WAAW,GAAkB;QACjC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;QAClC,GAAG,KAAK;KACT,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,iBACO,cAAc,iBACX,MAAM,EACnB,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,CAAC,EACnE,KAAK,EAAE,WAAW,KACd,KAAK,YAER,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AACD,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { AspectRatio, aspectRatioVariants, aspectRatioPresetIds, aspectRatioRadiusIds, ASPECT_RATIO_PRESETS, } from "./aspect-ratio";
2
+ export type * from "./aspect-ratio";
3
+ export { AspectRatio as default } from "./aspect-ratio";
@@ -0,0 +1,3 @@
1
+ export { AspectRatio, aspectRatioVariants, aspectRatioPresetIds, aspectRatioRadiusIds, ASPECT_RATIO_PRESETS, } from "./aspect-ratio";
2
+ export { AspectRatio as default } from "./aspect-ratio";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/ui/aspect-ratio/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
@@ -142,3 +142,5 @@ export * from "./number-ticker";
142
142
  export type * from "./number-ticker";
143
143
  export * from "./sparkline";
144
144
  export type * from "./sparkline";
145
+ export * from "./aspect-ratio";
146
+ export type * from "./aspect-ratio";
@@ -70,4 +70,5 @@ export * from "./chip";
70
70
  export * from "./tags-input";
71
71
  export * from "./number-ticker";
72
72
  export * from "./sparkline";
73
+ export * from "./aspect-ratio";
73
74
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,cAAc,mBAAmB,CAAC;AAGlC,cAAc,0BAA0B,CAAC;AAGzC,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,cAAc,kBAAkB,CAAC;AAGjC,cAAc,aAAa,CAAC;AAG5B,cAAc,kCAAkC,CAAC;AAGjD,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC;AAExB,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,aAAa,CAAC;AAG5B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,WAAW,CAAC;AAG1B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,WAAW,CAAC;AAG1B,cAAc,YAAY,CAAC;AAG3B,cAAc,SAAS,CAAC;AAGxB,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,YAAY,CAAC;AAG3B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAG1C,cAAc,kBAAkB,CAAC;AAGjC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,QAAQ,CAAC;AAGvB,cAAc,QAAQ,CAAC;AAGvB,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,cAAc,CAAC;AAG7B,cAAc,cAAc,CAAC;AAG7B,cAAc,OAAO,CAAC;AAGtB,cAAc,eAAe,CAAC;AAG9B,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,eAAe,CAAC;AAG9B,cAAc,aAAa,CAAC;AAG5B,cAAc,YAAY,CAAC;AAG3B,cAAc,UAAU,CAAC;AAGzB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,QAAQ,CAAC;AAGvB,cAAc,cAAc,CAAC;AAG7B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,aAAa,CAAC;AAG5B,cAAc,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schemavaults/ui",
3
- "version": "0.38.0",
3
+ "version": "0.39.0",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "description": "React.js UI components for SchemaVaults frontend applications",