@vamos-ui/react 0.4.0 → 0.4.1
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 +4 -0
- package/dist/blocks/block-heading.js +1 -1
- package/dist/blocks/block-link.js +1 -1
- package/dist/blocks/index.d.ts +3 -3
- package/dist/blocks/index.js +3 -3
- package/dist/blocks/labels.d.ts +8 -0
- package/dist/blocks/labels.js +60 -0
- package/dist/blocks/section-header.js +1 -1
- package/dist/blocks/section.js +2 -2
- package/dist/blocks/site/feature-tabs.js +1 -1
- package/dist/blocks/site/footer.d.ts +10 -1
- package/dist/blocks/site/footer.js +28 -4
- package/dist/blocks/site/registry-2.js +3 -1
- package/dist/blocks/site/shared/labels-2.d.ts +8 -0
- package/dist/blocks/site/shared/labels-2.js +808 -0
- package/dist/blocks/site/site-shell.js +3 -3
- package/dist/business/approval-flow.js +2 -2
- package/dist/business/import-wizard.js +1 -1
- package/dist/business/line-items.js +1 -1
- package/dist/business/multi-step-form.js +2 -2
- package/dist/business/permission-matrix.js +1 -1
- package/dist/business/setup-checklist.js +2 -2
- package/dist/business/signer-status.js +1 -1
- package/dist/charts/bar-list.js +1 -1
- package/dist/charts/chart-shell.js +1 -1
- package/dist/charts/donut-chart.js +1 -1
- package/dist/charts/funnel.js +1 -1
- package/dist/charts/gauge.js +2 -2
- package/dist/components/accordion.d.ts +1 -1
- package/dist/components/accordion.js +8 -8
- package/dist/components/activity-timeline.js +6 -6
- package/dist/components/address-field.js +3 -3
- package/dist/components/alert-dialog.d.ts +1 -1
- package/dist/components/alert-dialog.js +8 -8
- package/dist/components/alert.js +2 -2
- package/dist/components/app-shell.js +3 -3
- package/dist/components/aspect-ratio.js +2 -2
- package/dist/components/attachment-list.js +2 -2
- package/dist/components/audit-log.js +1 -1
- package/dist/components/avatar.d.ts +1 -1
- package/dist/components/avatar.js +8 -8
- package/dist/components/backup-codes.js +1 -1
- package/dist/components/badge.js +3 -3
- package/dist/components/breadcrumb.js +10 -9
- package/dist/components/button-group.js +4 -4
- package/dist/components/button.js +4 -4
- package/dist/components/calendar.js +5 -5
- package/dist/components/card.js +8 -8
- package/dist/components/carousel.js +9 -9
- package/dist/components/checkbox.d.ts +1 -1
- package/dist/components/checkbox.js +6 -6
- package/dist/components/collapsible.d.ts +1 -1
- package/dist/components/collapsible.js +4 -4
- package/dist/components/color-picker.js +3 -3
- package/dist/components/combobox.js +1 -1
- package/dist/components/command.js +9 -9
- package/dist/components/comment-thread.js +3 -3
- package/dist/components/context-menu.d.ts +1 -1
- package/dist/components/context-menu.js +9 -9
- package/dist/components/currency-input.js +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/description-list.js +2 -2
- package/dist/components/dialog.d.ts +1 -1
- package/dist/components/dialog.js +9 -9
- package/dist/components/dropdown-menu.d.ts +1 -1
- package/dist/components/dropdown-menu.js +9 -9
- package/dist/components/editor-layout.js +9 -9
- package/dist/components/empty-state.js +2 -2
- package/dist/components/entity-card.js +1 -1
- package/dist/components/file-upload.js +5 -5
- package/dist/components/formatted-input.js +3 -3
- package/dist/components/hierarchy-chart.js +1 -1
- package/dist/components/hover-card.d.ts +1 -1
- package/dist/components/hover-card.js +3 -3
- package/dist/components/iban-input.js +1 -1
- package/dist/components/id-input.js +3 -3
- package/dist/components/image.js +5 -5
- package/dist/components/input-otp.js +6 -6
- package/dist/components/input.d.ts +1 -1
- package/dist/components/input.js +6 -6
- package/dist/components/item.js +4 -4
- package/dist/components/kbd.js +3 -3
- package/dist/components/list-layout.js +9 -9
- package/dist/components/menubar.d.ts +1 -1
- package/dist/components/menubar.js +12 -12
- package/dist/components/native-select.js +1 -1
- package/dist/components/navigation-menu.d.ts +1 -1
- package/dist/components/navigation-menu.js +12 -11
- package/dist/components/notification-center.js +4 -4
- package/dist/components/page-header.js +3 -3
- package/dist/components/pagination.js +9 -9
- package/dist/components/phone-input.js +1 -1
- package/dist/components/pin-map.js +1 -1
- package/dist/components/placeholder-art.js +1 -1
- package/dist/components/popover.d.ts +1 -1
- package/dist/components/popover.js +7 -7
- package/dist/components/progress.js +3 -3
- package/dist/components/qr-code.js +1 -1
- package/dist/components/radio-group.d.ts +1 -1
- package/dist/components/radio-group.js +4 -4
- package/dist/components/record-detail-layout.js +10 -10
- package/dist/components/record-picker.js +2 -2
- package/dist/components/resizable.js +2 -2
- package/dist/components/scroll-area.d.ts +1 -1
- package/dist/components/scroll-area.js +4 -4
- package/dist/components/select.d.ts +1 -1
- package/dist/components/select.js +10 -10
- package/dist/components/separator.d.ts +1 -1
- package/dist/components/separator.js +3 -3
- package/dist/components/settings-layout.js +6 -6
- package/dist/components/sheet.js +3 -3
- package/dist/components/sidebar.js +12 -11
- package/dist/components/signature-pad.js +1 -1
- package/dist/components/skeleton.js +5 -5
- package/dist/components/sla-timer.js +2 -2
- package/dist/components/slider.d.ts +1 -1
- package/dist/components/slider.js +2 -2
- package/dist/components/slug-input.js +1 -1
- package/dist/components/sparkline.js +1 -1
- package/dist/components/spinner.js +2 -2
- package/dist/components/stat.js +5 -5
- package/dist/components/status-picker.js +2 -2
- package/dist/components/stepper.js +1 -1
- package/dist/components/switch.d.ts +1 -1
- package/dist/components/switch.js +3 -3
- package/dist/components/table.js +10 -10
- package/dist/components/tabs.d.ts +1 -1
- package/dist/components/tabs.js +11 -11
- package/dist/components/tag-input.js +1 -1
- package/dist/components/task-list.js +1 -1
- package/dist/components/time-picker.js +3 -3
- package/dist/components/toggle.d.ts +2 -1
- package/dist/components/toggle.js +7 -6
- package/dist/components/tooltip.d.ts +1 -1
- package/dist/components/tooltip.js +5 -4
- package/dist/components/top-bar.js +4 -4
- package/dist/components/tour.js +1 -1
- package/dist/components/tree-select.js +2 -2
- package/dist/components/tree-view.js +3 -3
- package/dist/components/typography.js +11 -11
- package/dist/components/user-picker.js +2 -2
- package/dist/components/version-history.js +3 -3
- package/dist/data-table/data-table.js +1 -1
- package/dist/data-table/filter-bar.js +2 -2
- package/dist/data-table/index.d.ts +15 -8
- package/dist/data-table/index.js +9 -8
- package/dist/data-table/saved-views.js +1 -1
- package/dist/editor/block-editor.js +1 -1
- package/dist/editor/context.js +1 -1
- package/dist/editor/menus.js +1 -1
- package/dist/fonts/font-picker.js +3 -3
- package/dist/fonts/pairing-picker.js +1 -1
- package/dist/fonts/provider.js +1 -1
- package/dist/index.d.ts +188 -94
- package/dist/index.js +94 -94
- package/dist/lib/data-islands.js +1 -1
- package/dist/lib/field-context.js +1 -1
- package/dist/lib/floating-arrow.js +1 -1
- package/dist/lib/islands.js +1 -1
- package/dist/lib/layer.js +3 -3
- package/dist/lib/locale.js +2 -2
- package/dist/lib/menu.js +2 -2
- package/dist/lib/provider.js +4 -4
- package/dist/lib/theme-scope.js +4 -3
- package/dist/lib/variants.js +2 -2
- package/dist/media/focal-point.js +1 -1
- package/dist/media/gallery.js +1 -1
- package/dist/media/image-cropper.js +1 -1
- package/dist/media/image-field.js +2 -2
- package/dist/media/lightbox.js +4 -3
- package/dist/media/link-preview.js +3 -3
- package/dist/media/media-library.js +3 -3
- package/dist/media/media-picker.js +1 -1
- package/dist/media/media-provider.js +1 -1
- package/dist/media/video-player.js +4 -4
- package/dist/motion/count-up.js +1 -1
- package/dist/motion/motion-scope.js +2 -2
- package/dist/motion/page-transition.js +1 -1
- package/dist/motion/parallax.js +2 -2
- package/dist/motion/pointer.js +3 -3
- package/dist/motion/reveal.js +3 -3
- package/dist/motion/skeleton-swap.js +1 -1
- package/dist/motion/text-reveal.js +1 -1
- package/dist/motion/ticker.js +1 -1
- package/dist/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/dist/scheduler/gantt.js +2 -2
- package/dist/scheduler/resource-calendar.js +2 -2
- package/dist/scheduler/scheduler.js +3 -3
- package/dist/scheduler/time-tracker.js +4 -4
- package/dist/sortable/kanban.js +2 -2
- package/dist/sortable/sortable-list.js +2 -2
- package/dist/sortable/sortable.js +4 -4
- package/package.json +1 -1
package/dist/lib/locale.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import
|
|
4
|
+
import * as Direction from "radix-ui/direction";
|
|
5
5
|
import { en } from "../locales/en.js";
|
|
6
6
|
import { createFormatter } from "../format/core.js";
|
|
7
7
|
import { formatMessage } from "./message-format.js";
|
|
@@ -45,7 +45,7 @@ function createValue(locale, messages, dir, timeZone, currency) {
|
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
const defaultValue = createValue("en-US", en, "ltr", "UTC", "USD");
|
|
48
|
-
const LocaleContext = React.createContext(defaultValue);
|
|
48
|
+
const LocaleContext = /*#__PURE__*/ React.createContext(defaultValue);
|
|
49
49
|
/**
|
|
50
50
|
* Locale for built-in strings, text rules and Intl formatting. No i18n library required.
|
|
51
51
|
* Zero config means English (`en-US`, USD, UTC). Nest providers to override a subtree.
|
package/dist/lib/menu.js
CHANGED
|
@@ -12,7 +12,7 @@ import { itemSlots, itemVariants } from "./variants.js";
|
|
|
12
12
|
import { useCan, useLink } from "./provider.js";
|
|
13
13
|
import { KbdGroup } from "../components/kbd.js";
|
|
14
14
|
/** Floating panel of a menu (root content and sub-content). */
|
|
15
|
-
export const menuContentVariants = cva([
|
|
15
|
+
export const menuContentVariants = /*#__PURE__*/ cva([
|
|
16
16
|
"surface-popover ui-pop z-(--z-popover) rounded-ui-lg p-1 outline-none",
|
|
17
17
|
"overflow-x-hidden overflow-y-auto overscroll-contain",
|
|
18
18
|
], {
|
|
@@ -32,7 +32,7 @@ export const menuLabelClass = itemSlots.groupLabel;
|
|
|
32
32
|
export const menuSeparatorClass = itemSlots.separator;
|
|
33
33
|
export const menuIndicatorClass = itemSlots.indicator;
|
|
34
34
|
/** Size context so items pick up the content's `size`. */
|
|
35
|
-
export const MenuSizeContext = React.createContext("md");
|
|
35
|
+
export const MenuSizeContext = /*#__PURE__*/ React.createContext("md");
|
|
36
36
|
/** Icon · label (+ description) · badge · shortcut · chevron. */
|
|
37
37
|
export function MenuItemContent({ icon, description, shortcut, badge, chevron, children }) {
|
|
38
38
|
return (_jsxs(_Fragment, { children: [icon ? (_jsx("span", { "aria-hidden": true, className: cn("flex shrink-0 items-center", description ? "self-start pt-px" : undefined), children: icon })) : null, _jsxs("span", { className: itemSlots.label, children: [children, description ? _jsx("span", { className: cn(itemSlots.description, "mt-0.5 whitespace-normal"), children: description }) : null] }), badge != null ? _jsx("span", { className: "ms-auto shrink-0 ps-3 text-xs tabular text-fg-subtle", children: badge }) : null, shortcut ? _jsx(KbdGroup, { keys: shortcut, size: "sm", variant: "ghost", className: cn("shrink-0 ps-4", badge == null && "ms-auto") }) : null, chevron ? _jsx(ChevronRight, { "aria-hidden": true, className: cn("ms-auto size-3.5! shrink-0 text-fg-subtle rtl:-scale-x-100", (shortcut || badge != null) && "ms-2") }) : null] }));
|
package/dist/lib/provider.js
CHANGED
|
@@ -3,11 +3,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { LocaleProvider } from "./locale.js";
|
|
5
5
|
/** Default link: a plain `<a>` (router hints are dropped). */
|
|
6
|
-
export const DefaultLink = React.forwardRef(function DefaultLink({ replace: _r, prefetch: _p, ...props }, ref) {
|
|
6
|
+
export const DefaultLink = /*#__PURE__*/ React.forwardRef(function DefaultLink({ replace: _r, prefetch: _p, ...props }, ref) {
|
|
7
7
|
return _jsx("a", { ref: ref, ...props });
|
|
8
8
|
});
|
|
9
9
|
/** Default image: a plain `<img>` with lazy loading; `fill` covers the positioned parent. */
|
|
10
|
-
export const DefaultImage = React.forwardRef(function DefaultImage({ fill, priority, quality: _q, style, loading, decoding, ...props }, ref) {
|
|
10
|
+
export const DefaultImage = /*#__PURE__*/ React.forwardRef(function DefaultImage({ fill, priority, quality: _q, style, loading, decoding, ...props }, ref) {
|
|
11
11
|
return (_jsx("img", { ref: ref, loading: loading ?? (priority ? "eager" : "lazy"), decoding: decoding ?? "async", fetchPriority: priority ? "high" : undefined, style: fill ? { position: "absolute", inset: 0, width: "100%", height: "100%", ...style } : style, ...props }));
|
|
12
12
|
});
|
|
13
13
|
const defaultNavigate = (href, o) => {
|
|
@@ -18,7 +18,7 @@ const defaultNavigate = (href, o) => {
|
|
|
18
18
|
else
|
|
19
19
|
window.location.assign(href);
|
|
20
20
|
};
|
|
21
|
-
const VamosContext = React.createContext({
|
|
21
|
+
const VamosContext = /*#__PURE__*/ React.createContext({
|
|
22
22
|
Link: DefaultLink,
|
|
23
23
|
Image: DefaultImage,
|
|
24
24
|
navigate: defaultNavigate,
|
|
@@ -93,7 +93,7 @@ export function isExternalHref(href) {
|
|
|
93
93
|
* Internal links go through the app's router `Link`; external ones render `<a target="_blank" rel="noopener noreferrer">`
|
|
94
94
|
* (`mailto:` / `tel:` stay in the same tab).
|
|
95
95
|
*/
|
|
96
|
-
export const SmartLink = React.forwardRef(function SmartLink({ href, external, target, rel, ...props }, ref) {
|
|
96
|
+
export const SmartLink = /*#__PURE__*/ React.forwardRef(function SmartLink({ href, external, target, rel, ...props }, ref) {
|
|
97
97
|
const Link = useLink();
|
|
98
98
|
const isExternal = external ?? isExternalHref(href);
|
|
99
99
|
if (isExternal) {
|
package/dist/lib/theme-scope.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import
|
|
4
|
+
import * as Direction from "radix-ui/direction";
|
|
5
|
+
import * as Slot from "radix-ui/slot";
|
|
5
6
|
import { cn } from "./cn.js";
|
|
6
7
|
import { useComposedRefs } from "./compose-refs.js";
|
|
7
8
|
/**
|
|
@@ -22,7 +23,7 @@ export function themeAttributes(axes) {
|
|
|
22
23
|
dir: axes.dir,
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
|
-
const PortalContainerContext = React.createContext(null);
|
|
26
|
+
const PortalContainerContext = /*#__PURE__*/ React.createContext(null);
|
|
26
27
|
/**
|
|
27
28
|
* The element overlays should portal into, or `undefined` for `document.body`.
|
|
28
29
|
* Pass it to every Radix `Portal`: `<Popover.Portal container={usePortalContainer()}>`.
|
|
@@ -47,7 +48,7 @@ export function PortalContainer({ container, children }) {
|
|
|
47
48
|
* The scope element must not use `transform`, `filter`, `backdrop-filter` or `contain`, because
|
|
48
49
|
* those turn it into the containing block for the fixed-position overlays inside it.
|
|
49
50
|
*/
|
|
50
|
-
export const ThemeScope = React.forwardRef(function ThemeScope({ theme, material, accent, density, font, dir, glassQuality, asChild, portal = true, className, children, ...props }, ref) {
|
|
51
|
+
export const ThemeScope = /*#__PURE__*/ React.forwardRef(function ThemeScope({ theme, material, accent, density, font, dir, glassQuality, asChild, portal = true, className, children, ...props }, ref) {
|
|
51
52
|
const [node, setNode] = React.useState(null);
|
|
52
53
|
const composed = useComposedRefs(ref, setNode);
|
|
53
54
|
const { className: themeClass, ...attrs } = themeAttributes({ theme, material, accent, density, font, dir, glassQuality });
|
package/dist/lib/variants.js
CHANGED
|
@@ -12,7 +12,7 @@ import { cva } from "class-variance-authority";
|
|
|
12
12
|
* <button className={controlVariants({ size: "sm" })}>Status</button>
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
export const controlVariants = cva([
|
|
15
|
+
export const controlVariants = /*#__PURE__*/ cva([
|
|
16
16
|
"relative flex w-full min-w-0 items-center rounded-ui border text-fg",
|
|
17
17
|
"transition-[border-color,box-shadow,background-color] duration-150",
|
|
18
18
|
// focus on self (trigger) or on a child (input group)
|
|
@@ -65,7 +65,7 @@ export const controlVariants = cva([
|
|
|
65
65
|
* </DropdownMenu.Item>
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
|
-
export const itemVariants = cva([
|
|
68
|
+
export const itemVariants = /*#__PURE__*/ cva([
|
|
69
69
|
"relative flex w-full cursor-default select-none items-center gap-2 rounded-ui-sm text-start text-fg outline-none",
|
|
70
70
|
"transition-colors duration-100",
|
|
71
71
|
"data-highlighted:bg-hover data-[selected=true]:bg-hover aria-selected:bg-hover focus-visible:bg-hover",
|
|
@@ -26,7 +26,7 @@ const round = (n) => Math.round(n * 1000) / 1000;
|
|
|
26
26
|
* <FocalPointPicker src={asset} defaultValue={asset.focalPoint} onValueCommit={(focalPoint) => adapter.update(asset.id, { focalPoint })} />
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
|
-
export const FocalPointPicker = React.forwardRef(function FocalPointPicker({ src, value, defaultValue, onValueChange, onValueCommit, previews = ["1/1", "16/9", "4/5"], maxHeight = "20rem", disabled, labels, className, ...props }, ref) {
|
|
29
|
+
export const FocalPointPicker = /*#__PURE__*/ React.forwardRef(function FocalPointPicker({ src, value, defaultValue, onValueChange, onValueCommit, previews = ["1/1", "16/9", "4/5"], maxHeight = "20rem", disabled, labels, className, ...props }, ref) {
|
|
30
30
|
const t = useLabels("focalPoint", focalLabels, labels);
|
|
31
31
|
const { locale } = useLocale();
|
|
32
32
|
const [point, setPoint] = useControllableState({ value, defaultValue: defaultValue ?? (isMediaAsset(src) ? src.focalPoint : undefined) ?? { x: 0.5, y: 0.5 }, onChange: onValueChange, name: "FocalPointPicker" });
|
package/dist/media/gallery.js
CHANGED
|
@@ -25,7 +25,7 @@ const galleryLabels = {
|
|
|
25
25
|
loading: "Loading images",
|
|
26
26
|
video: "Video",
|
|
27
27
|
};
|
|
28
|
-
export const galleryVariants = cva("vui-gallery @container/gallery min-w-0", {
|
|
28
|
+
export const galleryVariants = /*#__PURE__*/ cva("vui-gallery @container/gallery min-w-0", {
|
|
29
29
|
variants: {
|
|
30
30
|
gap: { sm: "[--gallery-gap:0.375rem]", md: "[--gallery-gap:0.75rem]", lg: "[--gallery-gap:1.25rem]" },
|
|
31
31
|
},
|
|
@@ -61,7 +61,7 @@ export function formatAspectRatio(value, locale = "en-US") {
|
|
|
61
61
|
* <ImageCropper src={asset} defaultAspect={1.91} onChange={(rect) => adapter.update(asset.id, { crops: { ...asset.crops, og: rect } })} />
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
|
-
export const ImageCropper = React.forwardRef(function ImageCropper({ src, value, defaultValue, onChange, aspect: aspectProp, defaultAspect, onAspectChange, presets: presetsProp, shape = "rect", grid = true, minZoom = 1, maxZoom = 4, toolbar = true, transform = true, height = "22rem", labels, className, ...props }, ref) {
|
|
64
|
+
export const ImageCropper = /*#__PURE__*/ React.forwardRef(function ImageCropper({ src, value, defaultValue, onChange, aspect: aspectProp, defaultAspect, onAspectChange, presets: presetsProp, shape = "rect", grid = true, minZoom = 1, maxZoom = 4, toolbar = true, transform = true, height = "22rem", labels, className, ...props }, ref) {
|
|
65
65
|
const t = useLabels("imageCropper", cropperLabels, labels);
|
|
66
66
|
const { locale } = useLocale();
|
|
67
67
|
const url = isMediaAsset(src) ? src.url : src;
|
|
@@ -54,7 +54,7 @@ const fieldLabels = {
|
|
|
54
54
|
pickerTitle: "Select image",
|
|
55
55
|
pickerConfirm: "Use image",
|
|
56
56
|
};
|
|
57
|
-
export const imageFieldVariants = cva("vui-image-field group/imgfield relative grid min-w-0 gap-2", {
|
|
57
|
+
export const imageFieldVariants = /*#__PURE__*/ cva("vui-image-field group/imgfield relative grid min-w-0 gap-2", {
|
|
58
58
|
variants: {
|
|
59
59
|
size: { sm: "w-24", md: "w-full max-w-[22rem]", full: "w-full" },
|
|
60
60
|
layout: { stacked: "", inline: "grid-cols-[auto_minmax(0,1fr)] items-start gap-x-4" },
|
|
@@ -75,7 +75,7 @@ const ratioOf = (aspect, a) => aspectRatioOf(aspect ?? "auto", a?.width, a?.heig
|
|
|
75
75
|
* </Field>
|
|
76
76
|
* ```
|
|
77
77
|
*/
|
|
78
|
-
export const ImageField = React.forwardRef(function ImageField(props, ref) {
|
|
78
|
+
export const ImageField = /*#__PURE__*/ React.forwardRef(function ImageField(props, ref) {
|
|
79
79
|
const { value: valueProp, defaultValue, onChange, adapter: adapterProp, aspect: aspectProp, cropPresets, recommended, shape = "rect", size = "md", layout = "stacked", focal: focalEnabled = shape !== "round", crop: cropMode = true, requireAlt = false, accept = "image/*", name, className, labels, } = props;
|
|
80
80
|
const control = useFieldControl({ id: props.id, "aria-describedby": props["aria-describedby"], disabled: props.disabled, readOnly: props.readOnly, required: props.required, "aria-invalid": props.invalid || undefined });
|
|
81
81
|
const disabled = Boolean(control.disabled);
|
package/dist/media/lightbox.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import
|
|
4
|
+
import * as DialogPrimitive from "radix-ui/dialog";
|
|
5
|
+
import * as Slot from "radix-ui/slot";
|
|
5
6
|
import { Download, ImageOff, Info, X, ZoomIn, ZoomOut } from "lucide-react";
|
|
6
7
|
import { cn } from "../lib/cn.js";
|
|
7
8
|
import { useLabels } from "../lib/labels.js";
|
|
@@ -38,7 +39,7 @@ const lightboxLabels = {
|
|
|
38
39
|
noAlt: "Missing alt text",
|
|
39
40
|
decorative: "Decorative (no alt text)",
|
|
40
41
|
};
|
|
41
|
-
const LightboxContext = React.createContext(null);
|
|
42
|
+
const LightboxContext = /*#__PURE__*/ React.createContext(null);
|
|
42
43
|
/** Open / close the surrounding `Lightbox` from custom triggers. */
|
|
43
44
|
export function useLightbox() {
|
|
44
45
|
const ctx = React.useContext(LightboxContext);
|
|
@@ -75,7 +76,7 @@ export function Lightbox({ items, open: openProp, defaultOpen = false, onOpenCha
|
|
|
75
76
|
return (_jsxs(LightboxContext.Provider, { value: ctx, children: [children, _jsx(DialogPrimitive.Root, { open: open, onOpenChange: setOpen, children: _jsx(LightboxViewer, { items: items, index: Math.min(Math.max(0, index), Math.max(0, items.length - 1)), setIndex: setIndex, zoom: zoom, thumbnails: thumbnails ?? items.length > 1, download: download, info: info, loop: loop, backdrop: backdrop, chrome: chrome, labels: labels, returnFocus: returnFocus }) })] }));
|
|
76
77
|
}
|
|
77
78
|
/** Opens the surrounding Lightbox at `index`. Renders a button (or the child with `asChild`). */
|
|
78
|
-
export const LightboxTrigger = React.forwardRef(function LightboxTrigger({ index, asChild, onClick, className, type, ...props }, ref) {
|
|
79
|
+
export const LightboxTrigger = /*#__PURE__*/ React.forwardRef(function LightboxTrigger({ index, asChild, onClick, className, type, ...props }, ref) {
|
|
79
80
|
const lb = useLightbox();
|
|
80
81
|
const Comp = asChild ? Slot.Root : "button";
|
|
81
82
|
return (_jsx(Comp, { ref: ref, type: asChild ? undefined : type ?? "button", "data-slot": "lightbox-trigger", "aria-haspopup": "dialog", className: cn(!asChild && "focus-ring block cursor-zoom-in rounded-[inherit]", className), onClick: (e) => {
|
|
@@ -85,7 +85,7 @@ function highlight(text, term, locale) {
|
|
|
85
85
|
* How a page appears in a search result on desktop or mobile, with pixel-accurate truncation
|
|
86
86
|
* (`measureSerp`) and keyword bolding.
|
|
87
87
|
*/
|
|
88
|
-
export const SearchPreview = React.forwardRef(function SearchPreview({ data, device = "desktop", highlight: term, appearance = "auto", size = "md", labels, className, ...props }, ref) {
|
|
88
|
+
export const SearchPreview = /*#__PURE__*/ React.forwardRef(function SearchPreview({ data, device = "desktop", highlight: term, appearance = "auto", size = "md", labels, className, ...props }, ref) {
|
|
89
89
|
const t = useLabels("linkPreview", previewLabels, labels);
|
|
90
90
|
const { locale } = useLocale();
|
|
91
91
|
const { host, path } = parseUrl(data.url);
|
|
@@ -103,7 +103,7 @@ export const SearchPreview = React.forwardRef(function SearchPreview({ data, dev
|
|
|
103
103
|
const TARGET_RATIO = { facebook: 1.91, linkedin: 1.91, x: 1.91, whatsapp: 1.91, slack: 1.91 };
|
|
104
104
|
const MIN_SIZE = { width: 1200, height: 630 };
|
|
105
105
|
/** How a shared link unfurls on Facebook, LinkedIn, X, WhatsApp or Slack, with image warnings. */
|
|
106
|
-
export const SocialCardPreview = React.forwardRef(function SocialCardPreview({ data, platform, appearance = "auto", size = "md", hideWarnings, labels, className, ...props }, ref) {
|
|
106
|
+
export const SocialCardPreview = /*#__PURE__*/ React.forwardRef(function SocialCardPreview({ data, platform, appearance = "auto", size = "md", hideWarnings, labels, className, ...props }, ref) {
|
|
107
107
|
const t = useLabels("linkPreview", previewLabels, labels);
|
|
108
108
|
const { locale } = useLocale();
|
|
109
109
|
const { host } = parseUrl(data.url);
|
|
@@ -149,7 +149,7 @@ export const SocialCardPreview = React.forwardRef(function SocialCardPreview({ d
|
|
|
149
149
|
* Characters (graphemes) and, for SEO fields, rendered pixels against the limit, said in words
|
|
150
150
|
* too ("58 of 60 characters, 540 of 600 px: good"), never by colour alone.
|
|
151
151
|
*/
|
|
152
|
-
export const LengthMeter = React.forwardRef(function LengthMeter({ value, max: maxProp, min: minProp, field, device = "desktop", label, labels, className, ...props }, ref) {
|
|
152
|
+
export const LengthMeter = /*#__PURE__*/ React.forwardRef(function LengthMeter({ value, max: maxProp, min: minProp, field, device = "desktop", label, labels, className, ...props }, ref) {
|
|
153
153
|
const t = useLabels("linkPreview", previewLabels, labels);
|
|
154
154
|
const { locale } = useLocale();
|
|
155
155
|
const nf = new Intl.NumberFormat(locale);
|
|
@@ -167,7 +167,7 @@ export function MediaThumb({ asset, className, rounded = "ui" }) {
|
|
|
167
167
|
}
|
|
168
168
|
const dimensions = (a, nf) => (a.width && a.height ? `${nf.format(a.width)} × ${nf.format(a.height)}` : "—");
|
|
169
169
|
/** Per-file progress with cancel, retry and the reason a file failed; a polite live summary. */
|
|
170
|
-
export const MediaUploadQueue = React.forwardRef(function MediaUploadQueue({ queue, variant = "inline", labels, className, ...props }, ref) {
|
|
170
|
+
export const MediaUploadQueue = /*#__PURE__*/ React.forwardRef(function MediaUploadQueue({ queue, variant = "inline", labels, className, ...props }, ref) {
|
|
171
171
|
const t = useLabels("mediaUploadQueue", queueLabels, labels);
|
|
172
172
|
const f = useFormat();
|
|
173
173
|
if (!queue.items.length)
|
|
@@ -186,7 +186,7 @@ function MediaUploadRow({ item, queue, t }) {
|
|
|
186
186
|
* Preview, editable metadata with autosave (alt text, decorative, title, caption, description),
|
|
187
187
|
* focal point, file info, usage and actions. The body of the library's details panel.
|
|
188
188
|
*/
|
|
189
|
-
export const MediaDetails = React.forwardRef(function MediaDetails({ asset, adapter: adapterProp, onChange, onDelete, onClose, readOnly: readOnlyProp, autosaveDelay = 700, labels, className, ...props }, ref) {
|
|
189
|
+
export const MediaDetails = /*#__PURE__*/ React.forwardRef(function MediaDetails({ asset, adapter: adapterProp, onChange, onDelete, onClose, readOnly: readOnlyProp, autosaveDelay = 700, labels, className, ...props }, ref) {
|
|
190
190
|
const t = useLabels("mediaDetails", detailsLabels, labels);
|
|
191
191
|
const f = useFormat();
|
|
192
192
|
const { locale } = useLocale();
|
|
@@ -310,7 +310,7 @@ const GRID_GAP = 12;
|
|
|
310
310
|
* Keyboard (grid): arrows move, Space selects, Shift + arrows extends, Ctrl/⌘ + A selects all,
|
|
311
311
|
* Enter opens details, Delete asks to delete, Esc clears the selection.
|
|
312
312
|
*/
|
|
313
|
-
export const MediaLibrary = React.forwardRef(function MediaLibrary({ adapter: adapterProp, view: viewProp, defaultView = "grid", onViewChange, query: queryProp, defaultQuery, onQueryChange, selection = "multiple", selected: selectedProp, defaultSelected, onSelectedChange, accept, max, detailsPanel = "side", folders: foldersMode, pageSize = 60, tileSize = "md", height = "34rem", virtualizeAfter = 120, readOnly: readOnlyProp, selectUploaded = false, maxDimension, emptyState, searchRef, toolbar = true, onDeleted, handleRef, labels, queueLabels: queueLabelsProp, detailsLabels: detailsLabelsProp, className, ...props }, ref) {
|
|
313
|
+
export const MediaLibrary = /*#__PURE__*/ React.forwardRef(function MediaLibrary({ adapter: adapterProp, view: viewProp, defaultView = "grid", onViewChange, query: queryProp, defaultQuery, onQueryChange, selection = "multiple", selected: selectedProp, defaultSelected, onSelectedChange, accept, max, detailsPanel = "side", folders: foldersMode, pageSize = 60, tileSize = "md", height = "34rem", virtualizeAfter = 120, readOnly: readOnlyProp, selectUploaded = false, maxDimension, emptyState, searchRef, toolbar = true, onDeleted, handleRef, labels, queueLabels: queueLabelsProp, detailsLabels: detailsLabelsProp, className, ...props }, ref) {
|
|
314
314
|
const t = useLabels("mediaLibrary", libraryLabels, labels);
|
|
315
315
|
const tq = useLabels("mediaUploadQueue", queueLabels, queueLabelsProp);
|
|
316
316
|
const f = useFormat();
|
|
@@ -176,7 +176,7 @@ function PickerUrlForm({ adapter, onImported, t }) {
|
|
|
176
176
|
};
|
|
177
177
|
return (_jsxs("form", { onSubmit: submit, className: "mx-auto grid max-w-xl gap-2 py-6", children: [_jsx("label", { htmlFor: id, className: "text-[13px] font-medium text-fg", children: t("urlLabel") }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Input, { id: id, type: "url", inputMode: "url", leading: _jsx(Link2, { "aria-hidden": true }), placeholder: t("urlPlaceholder"), value: url, "aria-describedby": hintId, invalid: state === "error", onChange: (e) => setUrl(e.target.value), className: "flex-1" }), _jsx(Button, { type: "submit", variant: "secondary", disabled: !valid, loading: state === "loading", loadingText: t("urlImporting"), children: t("urlImport") })] }), _jsx("p", { id: hintId, className: cn("text-[12.5px]", state === "error" ? "text-danger" : "text-fg-muted"), children: state === "error" ? (_jsxs("span", { className: "inline-flex items-center gap-1.5", children: [_jsx(TriangleAlert, { "aria-hidden": true, className: "size-3.5" }), t("urlError")] })) : (t("urlHint")) })] }));
|
|
178
178
|
}
|
|
179
|
-
const PickerContext = React.createContext(null);
|
|
179
|
+
const PickerContext = /*#__PURE__*/ React.createContext(null);
|
|
180
180
|
/**
|
|
181
181
|
* Hosts one Media picker for `useMediaPicker()`. Put it once near the app root, inside `MediaProvider`.
|
|
182
182
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { useMediaAdapter } from "../lib/provider.js";
|
|
5
|
-
const MediaContext = React.createContext(undefined);
|
|
5
|
+
const MediaContext = /*#__PURE__*/ React.createContext(undefined);
|
|
6
6
|
/**
|
|
7
7
|
* Provides the media adapter to Media library, Media picker, Image field, Gallery and the editor.
|
|
8
8
|
* `VamosProvider media={adapter}` works too; this provider wins when both are set.
|
|
@@ -49,7 +49,7 @@ export function formatMediaTime(seconds, locale = "en-US") {
|
|
|
49
49
|
return h > 0 ? `${one.format(h)}:${two.format(m)}:${two.format(s)}` : `${one.format(m)}:${two.format(s)}`;
|
|
50
50
|
}
|
|
51
51
|
const SPEEDS = [0.5, 0.75, 1, 1.25, 1.5, 2];
|
|
52
|
-
export const videoPlayerVariants = cva("vui-video group/video relative isolate overflow-hidden bg-scene", {
|
|
52
|
+
export const videoPlayerVariants = /*#__PURE__*/ cva("vui-video group/video relative isolate overflow-hidden bg-scene", {
|
|
53
53
|
variants: {
|
|
54
54
|
rounded: { none: "", ui: "rounded-ui", "ui-lg": "rounded-ui-lg" },
|
|
55
55
|
chrome: { overlay: "", bar: "" },
|
|
@@ -75,7 +75,7 @@ const MIME = { mp4: "video/mp4", webm: "video/webm", hls: "application/vnd.apple
|
|
|
75
75
|
* tracks={[{ src: "/media/onboarding.en.vtt", lang: "en", label: "English", default: true }]} />
|
|
76
76
|
* ```
|
|
77
77
|
*/
|
|
78
|
-
export const VideoPlayer = React.forwardRef(function VideoPlayer({ src, poster: posterProp, aspect, tracks, autoPlay, muted: mutedProp = false, loop, playsInline = true, controls = "custom", chrome = "overlay", rounded, title, preload = "metadata", hls, onEnded, onTimeUpdate, videoRef, crossOrigin, labels, className, style, onKeyDown, ...props }, ref) {
|
|
78
|
+
export const VideoPlayer = /*#__PURE__*/ React.forwardRef(function VideoPlayer({ src, poster: posterProp, aspect, tracks, autoPlay, muted: mutedProp = false, loop, playsInline = true, controls = "custom", chrome = "overlay", rounded, title, preload = "metadata", hls, onEnded, onTimeUpdate, videoRef, crossOrigin, labels, className, style, onKeyDown, ...props }, ref) {
|
|
79
79
|
const t = useLabels("videoPlayer", videoLabels, labels);
|
|
80
80
|
const { locale } = useLocale();
|
|
81
81
|
const reduced = useReducedMotion();
|
|
@@ -283,7 +283,7 @@ export const VideoPlayer = React.forwardRef(function VideoPlayer({ src, poster:
|
|
|
283
283
|
* `youtube-nocookie.com` (or `player.vimeo.com` with `dnt=1`) iframe. No third-party request,
|
|
284
284
|
* cookie or script before the visitor chooses to play.
|
|
285
285
|
*/
|
|
286
|
-
export const VideoEmbed = React.forwardRef(function VideoEmbed({ provider, id, title, poster, aspect = "16/9", start, rounded = "ui", labels, className, style, ...props }, ref) {
|
|
286
|
+
export const VideoEmbed = /*#__PURE__*/ React.forwardRef(function VideoEmbed({ provider, id, title, poster, aspect = "16/9", start, rounded = "ui", labels, className, style, ...props }, ref) {
|
|
287
287
|
const t = useLabels("videoPlayer", videoLabels, labels);
|
|
288
288
|
const [active, setActive] = React.useState(false);
|
|
289
289
|
const ratio = aspectRatioOf(aspect) ?? 16 / 9;
|
|
@@ -297,7 +297,7 @@ export const VideoEmbed = React.forwardRef(function VideoEmbed({ provider, id, t
|
|
|
297
297
|
* Muted, looping, decorative video (hero backgrounds). `aria-hidden`, with a visible pause
|
|
298
298
|
* button (WCAG 2.2.2). Reduced motion shows the poster only.
|
|
299
299
|
*/
|
|
300
|
-
export const BackgroundVideo = React.forwardRef(function BackgroundVideo({ src, poster, labels, className, children, ...props }, ref) {
|
|
300
|
+
export const BackgroundVideo = /*#__PURE__*/ React.forwardRef(function BackgroundVideo({ src, poster, labels, className, children, ...props }, ref) {
|
|
301
301
|
const t = useLabels("videoPlayer", videoLabels, labels);
|
|
302
302
|
const reduced = useReducedMotion();
|
|
303
303
|
const video = React.useRef(null);
|
package/dist/motion/count-up.js
CHANGED
|
@@ -18,7 +18,7 @@ function decimalsOf(v) {
|
|
|
18
18
|
* <CountUp value={1240} /> reviews · <CountUp value={4.8} locale="tr-TR" />
|
|
19
19
|
* ```
|
|
20
20
|
*/
|
|
21
|
-
export const CountUp = React.forwardRef(function CountUp({ value, from = 0, duration, delay = 0, locale: localeProp, format, className, ...props }, ref) {
|
|
21
|
+
export const CountUp = /*#__PURE__*/ React.forwardRef(function CountUp({ value, from = 0, duration, delay = 0, locale: localeProp, format, className, ...props }, ref) {
|
|
22
22
|
const ctx = useLocale();
|
|
23
23
|
const locale = localeProp ?? ctx?.locale ?? "en-US";
|
|
24
24
|
const fmt = React.useMemo(() => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import
|
|
3
|
+
import * as Slot from "radix-ui/slot";
|
|
4
4
|
/**
|
|
5
5
|
* Sets the motion level for everything inside (`data-motion`). SiteShell does this for a site
|
|
6
6
|
* via its `motion` prop; use MotionScope for any other subtree. `data-motion="off"` on `<html>`
|
|
@@ -10,7 +10,7 @@ import { Slot } from "radix-ui";
|
|
|
10
10
|
* <MotionScope level="full"><Stagger>…</Stagger></MotionScope>
|
|
11
11
|
* ```
|
|
12
12
|
*/
|
|
13
|
-
export const MotionScope = React.forwardRef(function MotionScope({ level, asChild, ...props }, ref) {
|
|
13
|
+
export const MotionScope = /*#__PURE__*/ React.forwardRef(function MotionScope({ level, asChild, ...props }, ref) {
|
|
14
14
|
const Comp = asChild ? Slot.Root : "div";
|
|
15
15
|
return _jsx(Comp, { ref: ref, "data-motion": level, ...props });
|
|
16
16
|
});
|
|
@@ -47,7 +47,7 @@ export function startPageTransition(update, { scope } = {}) {
|
|
|
47
47
|
* <PageTransition pageKey={tab}>{panels[tab]}</PageTransition>
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
|
-
export const PageTransition = React.forwardRef(function PageTransition({ pageKey, className, children, ...props }, ref) {
|
|
50
|
+
export const PageTransition = /*#__PURE__*/ React.forwardRef(function PageTransition({ pageKey, className, children, ...props }, ref) {
|
|
51
51
|
const first = React.useRef(pageKey);
|
|
52
52
|
// Inside a View Transition the browser already cross-fades: no second fade on top.
|
|
53
53
|
const inViewTransition = typeof document !== "undefined" && document.documentElement.hasAttribute("data-vm-transition");
|
package/dist/motion/parallax.js
CHANGED
|
@@ -44,7 +44,7 @@ function useScrollFallback(enabled, ref, measure) {
|
|
|
44
44
|
* <Parallax shift={48} className="aspect-[16/9] rounded-ui-lg"><img className="size-full object-cover" … /></Parallax>
|
|
45
45
|
* ```
|
|
46
46
|
*/
|
|
47
|
-
export const Parallax = React.forwardRef(function Parallax({ shift = 40, clip = true, className, style, children, ...props }, ref) {
|
|
47
|
+
export const Parallax = /*#__PURE__*/ React.forwardRef(function Parallax({ shift = 40, clip = true, className, style, children, ...props }, ref) {
|
|
48
48
|
const inner = React.useRef(null);
|
|
49
49
|
const [fallback, setFallback] = React.useState(false);
|
|
50
50
|
React.useEffect(() => {
|
|
@@ -72,7 +72,7 @@ export const Parallax = React.forwardRef(function Parallax({ shift = 40, clip =
|
|
|
72
72
|
* <ScrollProgress />
|
|
73
73
|
* ```
|
|
74
74
|
*/
|
|
75
|
-
export const ScrollProgress = React.forwardRef(function ScrollProgress({ fixed = true, className, ...props }, ref) {
|
|
75
|
+
export const ScrollProgress = /*#__PURE__*/ React.forwardRef(function ScrollProgress({ fixed = true, className, ...props }, ref) {
|
|
76
76
|
const inner = React.useRef(null);
|
|
77
77
|
const [fallback, setFallback] = React.useState(false);
|
|
78
78
|
React.useEffect(() => setFallback(!supports("animation-timeline: scroll()")), []);
|
package/dist/motion/pointer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import
|
|
4
|
+
import * as Slot from "radix-ui/slot";
|
|
5
5
|
import { cn } from "../lib/cn.js";
|
|
6
6
|
import { motionLevel } from "./core.js";
|
|
7
7
|
const finePointer = () => typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(hover: hover) and (pointer: fine)").matches;
|
|
@@ -79,7 +79,7 @@ function setRefs(node, ...refs) {
|
|
|
79
79
|
* <Tilt max={6} glare><article className="surface rounded-ui-lg p-6">…</article></Tilt>
|
|
80
80
|
* ```
|
|
81
81
|
*/
|
|
82
|
-
export const Tilt = React.forwardRef(function Tilt({ max = 5, glare = false, level = "subtle", asChild, className, style, children, ...props }, ref) {
|
|
82
|
+
export const Tilt = /*#__PURE__*/ React.forwardRef(function Tilt({ max = 5, glare = false, level = "subtle", asChild, className, style, children, ...props }, ref) {
|
|
83
83
|
const inner = React.useRef(null);
|
|
84
84
|
usePointerVars(inner, level, (el, x, y) => {
|
|
85
85
|
el.style.setProperty("--vm-tilt-x", `${(-y * max).toFixed(2)}deg`);
|
|
@@ -101,7 +101,7 @@ export const Tilt = React.forwardRef(function Tilt({ max = 5, glare = false, lev
|
|
|
101
101
|
* <Magnetic><Button variant="primary" size="xl">Book a table</Button></Magnetic>
|
|
102
102
|
* ```
|
|
103
103
|
*/
|
|
104
|
-
export const Magnetic = React.forwardRef(function Magnetic({ strength = 0.3, limit = 10, level = "full", asChild, className, children, ...props }, ref) {
|
|
104
|
+
export const Magnetic = /*#__PURE__*/ React.forwardRef(function Magnetic({ strength = 0.3, limit = 10, level = "full", asChild, className, children, ...props }, ref) {
|
|
105
105
|
const inner = React.useRef(null);
|
|
106
106
|
usePointerVars(inner, level, (el, x, y) => {
|
|
107
107
|
const r = el.getBoundingClientRect();
|
package/dist/motion/reveal.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
3
|
import * as React from "react";
|
|
4
|
-
import
|
|
4
|
+
import * as Slot from "radix-ui/slot";
|
|
5
5
|
import { cn } from "../lib/cn.js";
|
|
6
6
|
import { inViewport, ioSupported, motionAllowed, observe, transitionEnd } from "./core.js";
|
|
7
7
|
const noopSubscribe = () => () => { };
|
|
@@ -109,7 +109,7 @@ const timing = (delay, duration, extra) => ({
|
|
|
109
109
|
* <Reveal effect="rise" delay={80}><Card>…</Card></Reveal>
|
|
110
110
|
* ```
|
|
111
111
|
*/
|
|
112
|
-
export const Reveal = React.forwardRef(function Reveal({ effect = "rise", delay, duration, once, rootMargin, threshold, disabled, onReveal, asChild, className, style, ...props }, ref) {
|
|
112
|
+
export const Reveal = /*#__PURE__*/ React.forwardRef(function Reveal({ effect = "rise", delay, duration, once, rootMargin, threshold, disabled, onReveal, asChild, className, style, ...props }, ref) {
|
|
113
113
|
const inner = React.useRef(null);
|
|
114
114
|
const setRef = useComposedRef(ref, inner);
|
|
115
115
|
const initial = useReveal(inner, { once, rootMargin, threshold, disabled, onReveal });
|
|
@@ -124,7 +124,7 @@ export const Reveal = React.forwardRef(function Reveal({ effect = "rise", delay,
|
|
|
124
124
|
* <Stagger asChild step={70}><ul className="grid grid-cols-3">{plans.map(…)}</ul></Stagger>
|
|
125
125
|
* ```
|
|
126
126
|
*/
|
|
127
|
-
export const Stagger = React.forwardRef(function Stagger({ effect = "rise", step, delay, duration, once, rootMargin, threshold, disabled, onReveal, asChild, className, style, ...props }, ref) {
|
|
127
|
+
export const Stagger = /*#__PURE__*/ React.forwardRef(function Stagger({ effect = "rise", step, delay, duration, once, rootMargin, threshold, disabled, onReveal, asChild, className, style, ...props }, ref) {
|
|
128
128
|
const inner = React.useRef(null);
|
|
129
129
|
const setRef = useComposedRef(ref, inner);
|
|
130
130
|
const initial = useReveal(inner, { once, rootMargin, threshold, disabled, onReveal, stagger: true });
|
|
@@ -13,7 +13,7 @@ import { useIsoLayoutEffect } from "./reveal.js";
|
|
|
13
13
|
* <SkeletonSwap loading={isLoading} skeleton={<InvoiceSkeleton />}><InvoiceTable rows={rows} /></SkeletonSwap>
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
export const SkeletonSwap = React.forwardRef(function SkeletonSwap({ loading, skeleton, className, children, ...props }, ref) {
|
|
16
|
+
export const SkeletonSwap = /*#__PURE__*/ React.forwardRef(function SkeletonSwap({ loading, skeleton, className, children, ...props }, ref) {
|
|
17
17
|
const inner = React.useRef(null);
|
|
18
18
|
const [prevLoading, setPrevLoading] = React.useState(loading);
|
|
19
19
|
const [leaving, setLeaving] = React.useState(false);
|
|
@@ -14,7 +14,7 @@ import { useReveal } from "./reveal.js";
|
|
|
14
14
|
* <TextReveal as="h2">Small rooms, slow mornings, nothing to scroll.</TextReveal>
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export const TextReveal = React.forwardRef(function TextReveal({ children, as: Tag = "h2", by = "word", effect = "mask", step, delay, once, rootMargin, threshold, disabled, onReveal, className, style, ...props }, ref) {
|
|
17
|
+
export const TextReveal = /*#__PURE__*/ React.forwardRef(function TextReveal({ children, as: Tag = "h2", by = "word", effect = "mask", step, delay, once, rootMargin, threshold, disabled, onReveal, className, style, ...props }, ref) {
|
|
18
18
|
const inner = React.useRef(null);
|
|
19
19
|
const initial = useReveal(inner, { once, rootMargin, threshold, disabled, onReveal });
|
|
20
20
|
const text = String(children);
|
package/dist/motion/ticker.js
CHANGED
|
@@ -11,6 +11,6 @@ import { cn } from "../lib/cn.js";
|
|
|
11
11
|
* <Ticker as="ul" duration={30}>{logos.map((l) => <li key={l.name}>…</li>)}</Ticker>
|
|
12
12
|
* ```
|
|
13
13
|
*/
|
|
14
|
-
export const Ticker = React.forwardRef(function Ticker({ duration = 40, direction = "start", as: Group = "div", gap, fade = true, controls = true, pauseLabel = "Pause animation", groupClassName, className, style, children, "aria-label": ariaLabel, ...props }, ref) {
|
|
14
|
+
export const Ticker = /*#__PURE__*/ React.forwardRef(function Ticker({ duration = 40, direction = "start", as: Group = "div", gap, fade = true, controls = true, pauseLabel = "Pause animation", groupClassName, className, style, children, "aria-label": ariaLabel, ...props }, ref) {
|
|
15
15
|
return (_jsxs("div", { ref: ref, "data-direction": direction, "data-fade": fade ? "" : undefined, className: cn("vm-marquee", className), style: { "--vm-marquee-duration": `${duration}s`, ...(gap ? { "--vm-marquee-gap": gap } : null), ...style }, ...props, children: [_jsx("div", { className: "vm-marquee-viewport", children: _jsxs("div", { className: "vm-marquee-track", children: [_jsx(Group, { className: cn("vm-marquee-group", groupClassName), "aria-label": ariaLabel, children: children }), _jsx(Group, { className: cn("vm-marquee-group", groupClassName), "aria-hidden": "true", inert: true, "data-marquee-copy": "", children: children })] }) }), controls ? (_jsxs("label", { className: "vm-marquee-toggle", children: [_jsx("input", { type: "checkbox", className: "vm-marquee-pause sr-only", "aria-label": pauseLabel }), _jsxs("svg", { "aria-hidden": "true", viewBox: "0 0 16 16", className: "vm-marquee-icon-pause", children: [_jsx("rect", { x: "4", y: "3", width: "2.5", height: "10", rx: "0.5" }), _jsx("rect", { x: "9.5", y: "3", width: "2.5", height: "10", rx: "0.5" })] }), _jsx("svg", { "aria-hidden": "true", viewBox: "0 0 16 16", className: "vm-marquee-icon-play", children: _jsx("path", { d: "M5 3.2v9.6a.5.5 0 0 0 .77.42l7.2-4.8a.5.5 0 0 0 0-.84l-7.2-4.8A.5.5 0 0 0 5 3.2Z" }) })] })) : null] }));
|
|
16
16
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":1,"projects":{"":{"files":{"scheduler/core/duration.test.ts":{"failed":false,"duration":82.473375,"lastRun":1794296632342},"scheduler/core/gantt.test.ts":{"failed":false,"duration":4.834499999999991,"lastRun":1794296632342},"scheduler/core/layout.test.ts":{"failed":false,"duration":36.943083,"lastRun":1794296632342},"scheduler/core/time-scale.test.ts":{"failed":false,"duration":10.341207999999938,"lastRun":1794296632342}}}}}
|
package/dist/scheduler/gantt.js
CHANGED
|
@@ -68,7 +68,7 @@ export const ganttLabels = {
|
|
|
68
68
|
quarterShort: "Q{quarter}",
|
|
69
69
|
noOwner: "Unassigned",
|
|
70
70
|
};
|
|
71
|
-
export const ganttVariants = cva("ui-gantt relative flex min-w-0 flex-col", {
|
|
71
|
+
export const ganttVariants = /*#__PURE__*/ cva("ui-gantt relative flex min-w-0 flex-col", {
|
|
72
72
|
variants: { framed: { true: "surface rounded-ui-lg", false: "" } },
|
|
73
73
|
defaultVariants: { framed: true },
|
|
74
74
|
});
|
|
@@ -88,7 +88,7 @@ const COL_W = { assignees: 76, start: 84, end: 84, duration: 128, progress: 76,
|
|
|
88
88
|
* />
|
|
89
89
|
* ```
|
|
90
90
|
*/
|
|
91
|
-
export const Gantt = React.forwardRef(function Gantt({ tasks, links = [], scale: scaleProp, defaultScale = "week", onScaleChange, scales = ["day", "week", "month", "quarter"], workCalendar, durationUnit = "workdays", onTaskChange, onLinkCreate, onLinkDelete, autoSchedule = true, readOnly = false, columns = ["title", "start", "end", "duration", "progress"], gridWidth: gridWidthProp, defaultGridWidth, onGridWidthChange, collapsed: collapsedProp, defaultCollapsed = [], onCollapsedChange, height = "32rem", rowHeight: rowHeightProp, virtualizeAt = 150, toolbar, today: todayProp, labels, className, ...props }, ref) {
|
|
91
|
+
export const Gantt = /*#__PURE__*/ React.forwardRef(function Gantt({ tasks, links = [], scale: scaleProp, defaultScale = "week", onScaleChange, scales = ["day", "week", "month", "quarter"], workCalendar, durationUnit = "workdays", onTaskChange, onLinkCreate, onLinkDelete, autoSchedule = true, readOnly = false, columns = ["title", "start", "end", "duration", "progress"], gridWidth: gridWidthProp, defaultGridWidth, onGridWidthChange, collapsed: collapsedProp, defaultCollapsed = [], onCollapsedChange, height = "32rem", rowHeight: rowHeightProp, virtualizeAt = 150, toolbar, today: todayProp, labels, className, ...props }, ref) {
|
|
92
92
|
const { locale, timeZone, dir } = useLocale();
|
|
93
93
|
const rtl = dir === "rtl";
|
|
94
94
|
const t = useLabels("gantt", ganttLabels, labels);
|
|
@@ -64,7 +64,7 @@ export const resourceCalendarLabels = {
|
|
|
64
64
|
saveFailed: "Couldn't save the schedule. Your change was undone.",
|
|
65
65
|
loading: "Loading schedule…",
|
|
66
66
|
};
|
|
67
|
-
export const resourceCalendarVariants = cva("ui-rc relative flex min-w-0 flex-col", {
|
|
67
|
+
export const resourceCalendarVariants = /*#__PURE__*/ cva("ui-rc relative flex min-w-0 flex-col", {
|
|
68
68
|
variants: { variant: { blocks: "", codes: "" }, framed: { true: "surface rounded-ui-lg", false: "" } },
|
|
69
69
|
defaultVariants: { variant: "blocks", framed: true },
|
|
70
70
|
});
|
|
@@ -92,7 +92,7 @@ const blockEndDay = (b, tz) => (isDateOnly(b.start) ? (isDateOnly(b.end) ? b.end
|
|
|
92
92
|
* />
|
|
93
93
|
* ```
|
|
94
94
|
*/
|
|
95
|
-
export const ResourceCalendar = React.forwardRef(function ResourceCalendar({ resources, blocks, range, onRangeChange, unit = "day", hours = { start: "08:00", end: "20:00" }, variant = "blocks", templates = [], workCalendar, rules = [], onBlocksChange, cellActions = [], onCellAction, onBlockOpen, renderBlock, summary, rowSummary, groupBy = null, showRejected = false, readOnly = false, loading = false, timeZone, height = "32rem", virtualizeAt = 60, toolbar, now: nowProp, labels, className, ...props }, ref) {
|
|
95
|
+
export const ResourceCalendar = /*#__PURE__*/ React.forwardRef(function ResourceCalendar({ resources, blocks, range, onRangeChange, unit = "day", hours = { start: "08:00", end: "20:00" }, variant = "blocks", templates = [], workCalendar, rules = [], onBlocksChange, cellActions = [], onCellAction, onBlockOpen, renderBlock, summary, rowSummary, groupBy = null, showRejected = false, readOnly = false, loading = false, timeZone, height = "32rem", virtualizeAt = 60, toolbar, now: nowProp, labels, className, ...props }, ref) {
|
|
96
96
|
const { locale, timeZone: ctxZone, dir } = useLocale();
|
|
97
97
|
const tz = timeZone ?? ctxZone;
|
|
98
98
|
const rtl = dir === "rtl";
|
|
@@ -75,7 +75,7 @@ export const schedulerLabels = {
|
|
|
75
75
|
dayGrid: "{month}",
|
|
76
76
|
weekNumber: "Week {week}",
|
|
77
77
|
};
|
|
78
|
-
export const schedulerVariants = cva("ui-sch relative flex min-w-0 flex-col", {
|
|
78
|
+
export const schedulerVariants = /*#__PURE__*/ cva("ui-sch relative flex min-w-0 flex-col", {
|
|
79
79
|
variants: {
|
|
80
80
|
variant: {
|
|
81
81
|
full: "surface rounded-ui-lg",
|
|
@@ -84,7 +84,7 @@ export const schedulerVariants = cva("ui-sch relative flex min-w-0 flex-col", {
|
|
|
84
84
|
},
|
|
85
85
|
defaultVariants: { variant: "full" },
|
|
86
86
|
});
|
|
87
|
-
const SchedulerContext = React.createContext(null);
|
|
87
|
+
const SchedulerContext = /*#__PURE__*/ React.createContext(null);
|
|
88
88
|
const useSch = () => {
|
|
89
89
|
const c = React.useContext(SchedulerContext);
|
|
90
90
|
if (!c)
|
|
@@ -136,7 +136,7 @@ function stepDate(view, anchor, dir, listDays) {
|
|
|
136
136
|
* />
|
|
137
137
|
* ```
|
|
138
138
|
*/
|
|
139
|
-
export const Scheduler = React.forwardRef(function Scheduler({ events, view: viewProp, defaultView = "week", onViewChange, views = ["day", "week", "month", "list"], date: dateProp, defaultDate, onDateChange, onRangeChange, slotMinutes = 30, snapMinutes = 15, dayRange, scrollToTime, height = "36rem", workCalendar, restrictToBusinessHours = false, timeZone, onCreate, onEventChange, onEventOpen, renderEvent, maxEventsPerDay = 3, variant = "full", loading = false, readOnly = false, toolbar, listDays = 7, now: nowProp, labels, className, ...props }, ref) {
|
|
139
|
+
export const Scheduler = /*#__PURE__*/ React.forwardRef(function Scheduler({ events, view: viewProp, defaultView = "week", onViewChange, views = ["day", "week", "month", "list"], date: dateProp, defaultDate, onDateChange, onRangeChange, slotMinutes = 30, snapMinutes = 15, dayRange, scrollToTime, height = "36rem", workCalendar, restrictToBusinessHours = false, timeZone, onCreate, onEventChange, onEventOpen, renderEvent, maxEventsPerDay = 3, variant = "full", loading = false, readOnly = false, toolbar, listDays = 7, now: nowProp, labels, className, ...props }, ref) {
|
|
140
140
|
const { locale, timeZone: ctxZone, dir } = useLocale();
|
|
141
141
|
const tz = timeZone ?? ctxZone;
|
|
142
142
|
const t = useLabels("scheduler", schedulerLabels, labels);
|
|
@@ -161,7 +161,7 @@ const clock = (sec) => {
|
|
|
161
161
|
* <TimerButton adapter={adapter} projects={projects} defaultProjectId="mobile-app" />
|
|
162
162
|
* ```
|
|
163
163
|
*/
|
|
164
|
-
export const TimerButton = React.forwardRef(function TimerButton({ adapter, projects = [], projectId: projectIdProp, defaultProjectId, onProjectChange, variant = "compact", staleAfterMin = 600, onStart, onStop, onAdjust, titleTicker = false, labels, className, ...props }, ref) {
|
|
164
|
+
export const TimerButton = /*#__PURE__*/ React.forwardRef(function TimerButton({ adapter, projects = [], projectId: projectIdProp, defaultProjectId, onProjectChange, variant = "compact", staleAfterMin = 600, onStart, onStop, onAdjust, titleTicker = false, labels, className, ...props }, ref) {
|
|
165
165
|
const t = useLabels("timeTracker", timeTrackerLabels, labels);
|
|
166
166
|
const { locale } = useLocale();
|
|
167
167
|
const [projectId, setProjectId] = useControllableState({ value: projectIdProp, defaultValue: defaultProjectId ?? projects[0]?.id ?? "", onChange: onProjectChange });
|
|
@@ -232,7 +232,7 @@ export const TimerButton = React.forwardRef(function TimerButton({ adapter, proj
|
|
|
232
232
|
const button = (_jsxs("button", { type: "button", "aria-pressed": running, "aria-busy": busy || undefined, "data-slot": "timer-button", "data-running": running ? "" : undefined, disabled: busy, onClick: toggle, className: cn("ui-tt-btn focus-ring", variant === "full" && "ui-tt-btn-lg"), children: [_jsx("span", { className: "sr-only", children: name }), running ? _jsx("span", { "aria-hidden": true, className: "ui-tt-pulse" }) : _jsx(Play, { "aria-hidden": true, className: "ui-tt-ico" }), _jsx("span", { "aria-hidden": true, className: "tabular", children: clock(elapsedSec) }), variant === "compact" ? _jsx("span", { "aria-hidden": true, className: "ui-tt-proj", children: projectName }) : null, running && variant === "full" ? _jsx(Square, { "aria-hidden": true, className: "ui-tt-ico" }) : null] }));
|
|
233
233
|
return (_jsxs("div", { ref: ref, "data-slot": "timer", "data-variant": variant, className: cn(variant === "full" ? "ui-tt-full grid gap-3" : "inline-flex items-center gap-2", className), ...props, children: [variant === "full" ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-wrap items-end gap-2", children: [_jsxs("label", { className: "grid min-w-[12rem] flex-1 gap-1", children: [_jsx("span", { className: "text-[12px] font-medium text-fg-muted", children: t("project") }), _jsx(NativeSelect, { value: active?.projectId ?? projectId, disabled: running, onChange: (e) => setProjectId(e.target.value), items: projects.map((p) => ({ value: p.id, label: p.meta ? `${p.label} · ${p.meta}` : p.label })) })] }), _jsxs("label", { className: "grid min-w-[14rem] flex-[2] gap-1", children: [_jsx("span", { className: "text-[12px] font-medium text-fg-muted", children: t("note") }), _jsx(Input, { value: active?.note ?? note, disabled: running, onChange: (e) => setNote(e.target.value), placeholder: t("notePlaceholder") })] }), button] }), elsewhere || stale ? (_jsxs("p", { className: "flex items-center gap-2 text-[12.5px]", "data-slot": "timer-note", children: [stale ? _jsx(TriangleAlert, { "aria-hidden": true, className: "size-3.5 text-warning" }) : null, _jsx("span", { className: stale ? "text-warning" : "text-fg-muted", children: stale ? t("stale", { duration: formatDuration(elapsedSec / 60, locale) }) : t("elsewhere") }), stale && onAdjust && active ? _jsx(Button, { size: "xs", variant: "ghost", onClick: () => onAdjust(active), children: t("adjust") }) : null] })) : null] })) : (_jsxs(_Fragment, { children: [button, stale ? _jsx("span", { className: "sr-only", children: t("stale", { duration: formatDuration(elapsedSec / 60, locale) }) }) : null, stale ? _jsx(TriangleAlert, { "aria-hidden": true, className: "size-3.5 text-warning" }) : null] })), _jsx("span", { className: "sr-only", "aria-live": "polite", children: message })] }));
|
|
234
234
|
});
|
|
235
|
-
export const timesheetVariants = cva("ui-ts relative min-w-0", {
|
|
235
|
+
export const timesheetVariants = /*#__PURE__*/ cva("ui-ts relative min-w-0", {
|
|
236
236
|
variants: { framed: { true: "surface rounded-ui-lg", false: "" } },
|
|
237
237
|
defaultVariants: { framed: true },
|
|
238
238
|
});
|
|
@@ -241,7 +241,7 @@ export const timesheetVariants = cva("ui-ts relative min-w-0", {
|
|
|
241
241
|
* <Timesheet weekStart="2026-11-09" rows={projects} value={hours} onCellChange={save} dailyTarget={8 * 60} />
|
|
242
242
|
* ```
|
|
243
243
|
*/
|
|
244
|
-
export const Timesheet = React.forwardRef(function Timesheet({ weekStart, days: dayCount = 7, rows, value: valueProp, defaultValue, onCellChange, dailyTarget, locked = false, workCalendar, display = "clock", labels, className, ...props }, ref) {
|
|
244
|
+
export const Timesheet = /*#__PURE__*/ React.forwardRef(function Timesheet({ weekStart, days: dayCount = 7, rows, value: valueProp, defaultValue, onCellChange, dailyTarget, locked = false, workCalendar, display = "clock", labels, className, ...props }, ref) {
|
|
245
245
|
const t = useLabels("timeTracker", timeTrackerLabels, labels);
|
|
246
246
|
const { locale, timeZone } = useLocale();
|
|
247
247
|
const cal = React.useMemo(() => resolveWorkCalendar(workCalendar, locale), [workCalendar, locale]);
|
|
@@ -372,7 +372,7 @@ export const Timesheet = React.forwardRef(function Timesheet({ weekStart, days:
|
|
|
372
372
|
});
|
|
373
373
|
const compareDay = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
374
374
|
/** Entries grouped by day (newest first) with day totals. */
|
|
375
|
-
export const TimeEntryList = React.forwardRef(function TimeEntryList({ entries, onEntryOpen, showAmounts = false, labels, className, ...props }, ref) {
|
|
375
|
+
export const TimeEntryList = /*#__PURE__*/ React.forwardRef(function TimeEntryList({ entries, onEntryOpen, showAmounts = false, labels, className, ...props }, ref) {
|
|
376
376
|
const t = useLabels("timeTracker", timeTrackerLabels, labels);
|
|
377
377
|
const { locale, timeZone, format } = useLocale();
|
|
378
378
|
const now = useNow(entries.some((e) => !e.end && e.durationMin === undefined), 30_000);
|
package/dist/sortable/kanban.js
CHANGED
|
@@ -60,7 +60,7 @@ export const kanbanLabels = {
|
|
|
60
60
|
retry: "Retry",
|
|
61
61
|
saving: "Saving",
|
|
62
62
|
};
|
|
63
|
-
const KanbanContext = React.createContext(null);
|
|
63
|
+
const KanbanContext = /*#__PURE__*/ React.createContext(null);
|
|
64
64
|
function useKanban() {
|
|
65
65
|
const ctx = React.useContext(KanbanContext);
|
|
66
66
|
if (!ctx)
|
|
@@ -73,7 +73,7 @@ const defaultGetLabel = (item) => {
|
|
|
73
73
|
const v = o?.title ?? o?.name ?? o?.label;
|
|
74
74
|
return typeof v === "string" ? v : undefined;
|
|
75
75
|
};
|
|
76
|
-
export const kanbanColumnVariants = cva("vui-kanban-column relative flex min-h-0 shrink-0 flex-col rounded-ui-lg", {
|
|
76
|
+
export const kanbanColumnVariants = /*#__PURE__*/ cva("vui-kanban-column relative flex min-h-0 shrink-0 flex-col rounded-ui-lg", {
|
|
77
77
|
variants: {
|
|
78
78
|
width: { sm: "w-[15.5rem]", md: "w-[18.5rem]", lg: "w-[22rem]" },
|
|
79
79
|
},
|