@refraction-ui/react 0.22.0 → 0.23.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/dist/{chunk-V24GDHUX.js → chunk-4ACSHPCM.js} +2 -2
- package/dist/{chunk-SDAJVXD4.js → chunk-5P56PN3J.js} +2 -2
- package/dist/chunk-75BKRTPO.js +417 -0
- package/dist/{chunk-2Q6HHFAN.js.map → chunk-75BKRTPO.js.map} +1 -1
- package/dist/chunk-7P7EJ56S.js +7 -0
- package/dist/{chunk-QPCKJ2YR.js → chunk-GG6MZDGV.js} +2 -2
- package/dist/{chunk-QDMLIDYN.js → chunk-GU5MI7FX.js} +2 -2
- package/dist/{chunk-3Y2T26QD.js → chunk-JZQ5ZL46.js} +6 -4
- package/dist/{chunk-3Y2T26QD.js.map → chunk-JZQ5ZL46.js.map} +2 -2
- package/dist/{chunk-RSWOLRIC.js → chunk-KIZD73DK.js} +2 -2
- package/dist/{chunk-XMFNBOPO.js → chunk-PY2TIFCT.js} +2 -2
- package/dist/{chunk-XWP763SH.js → chunk-V727VZOE.js} +4 -2
- package/dist/{chunk-XWP763SH.js.map → chunk-V727VZOE.js.map} +2 -2
- package/dist/{chunk-3I3DYDHR.js → chunk-WNLYPQOS.js} +2 -2
- package/dist/{chunk-63N4PZUJ.js → chunk-X6HEKRWE.js} +2 -2
- package/dist/{chunk-WYKPPK3W.js → chunk-XAJDSVZR.js} +2 -2
- package/dist/faro-engine-VIUXJAPH-FSARIABU.js +3 -0
- package/dist/{faro-engine-47HGRAQH-JKINJPMH.js.map → faro-engine-VIUXJAPH-FSARIABU.js.map} +1 -1
- package/dist/index.cjs +736 -274
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/internal/avatar/index.d.cts +4 -1
- package/dist/internal/avatar/index.d.ts +4 -1
- package/dist/internal/data-table/index.d.cts +48 -3
- package/dist/internal/data-table/index.d.ts +48 -3
- package/dist/internal/line-chart/index.d.ts +17 -3
- package/dist/internal/native-select/index.d.ts +21 -0
- package/dist/internal/react-avatar/index.d.cts +4 -2
- package/dist/internal/react-avatar/index.d.ts +4 -2
- package/dist/internal/react-command/index.d.cts +13 -2
- package/dist/internal/react-command/index.d.ts +13 -2
- package/dist/internal/react-data-table/index.d.cts +27 -9
- package/dist/internal/react-data-table/index.d.ts +27 -9
- package/dist/internal/react-dialog/index.d.cts +5 -0
- package/dist/internal/react-dialog/index.d.ts +5 -0
- package/dist/internal/react-dropdown-menu/index.d.cts +19 -1
- package/dist/internal/react-dropdown-menu/index.d.ts +19 -1
- package/dist/internal/react-line-chart/index.d.ts +7 -2
- package/dist/internal/react-native-select/index.d.ts +19 -0
- package/dist/internal/react-stat-grid/index.d.ts +22 -11
- package/dist/internal/react-table/index.d.ts +39 -0
- package/dist/internal/stat-grid/index.d.ts +49 -7
- package/dist/internal/table/index.d.ts +46 -0
- package/dist/react-accordion.js +1 -1
- package/dist/react-action-list.js +1 -1
- package/dist/react-ai.js +1 -1
- package/dist/react-analytics.js +16 -4
- package/dist/react-analytics.js.map +2 -2
- package/dist/react-animated-text.js +1 -1
- package/dist/react-app-shell.js +1 -1
- package/dist/react-audience-feature-card.js +1 -1
- package/dist/react-audio-room.js +1 -1
- package/dist/react-auth.js +1 -1
- package/dist/react-avatar-group.js +1 -1
- package/dist/react-avatar.js +13 -9
- package/dist/react-avatar.js.map +2 -2
- package/dist/react-badge.js +1 -1
- package/dist/react-bottom-nav.js +1 -1
- package/dist/react-brand-network-cell.js +1 -1
- package/dist/react-breadcrumbs.js +1 -1
- package/dist/react-browser-chrome-mock.js +1 -1
- package/dist/react-button.js +3 -3
- package/dist/react-calendar.js +1 -1
- package/dist/react-call-controls.js +1 -1
- package/dist/react-callout.js +1 -1
- package/dist/react-card-grid.js +1 -1
- package/dist/react-card.js +1 -1
- package/dist/react-carousel.js +1 -1
- package/dist/react-charts.js +1 -1
- package/dist/react-checkbox.js +1 -1
- package/dist/react-checklist.js +1 -1
- package/dist/react-code-block.js +1 -1
- package/dist/react-code-editor.js +1 -1
- package/dist/react-collapsible.js +1 -1
- package/dist/react-combobox.js +1 -1
- package/dist/react-command-input.js +1 -1
- package/dist/react-command.js +115 -70
- package/dist/react-command.js.map +3 -3
- package/dist/react-composer.js +3 -3
- package/dist/react-content-protection.js +1 -1
- package/dist/react-conversation.js +5 -5
- package/dist/react-cookie-consent.js +1 -1
- package/dist/react-data-table.js +125 -114
- package/dist/react-data-table.js.map +2 -2
- package/dist/react-date-picker.js +1 -1
- package/dist/react-device-frame.js +1 -1
- package/dist/react-dialog.js +33 -9
- package/dist/react-dialog.js.map +2 -2
- package/dist/react-diff-viewer.js +1 -1
- package/dist/react-dropdown-menu.js +61 -8
- package/dist/react-dropdown-menu.js.map +3 -3
- package/dist/react-editor-status-bar.js +1 -1
- package/dist/react-editor-tabs.js +1 -1
- package/dist/react-emoji-picker.js +2 -2
- package/dist/react-empty-state.js +1 -1
- package/dist/react-feedback-dialog.js +2 -2
- package/dist/react-file-tree.js +1 -1
- package/dist/react-file-upload.js +1 -1
- package/dist/react-floating-reactions.js +1 -1
- package/dist/react-flow-editor.js +2 -2
- package/dist/react-footer.js +1 -1
- package/dist/react-funnel-chart.js +1 -1
- package/dist/react-graph-view.js +2 -2
- package/dist/react-infinite-canvas.js +2 -2
- package/dist/react-inline-editor.js +1 -1
- package/dist/react-input-group.js +1 -1
- package/dist/react-input.js +2 -2
- package/dist/react-install-prompt.js +1 -1
- package/dist/react-kanban-board.js +1 -1
- package/dist/react-keyboard-shortcut.js +2 -2
- package/dist/react-language-selector.js +1 -1
- package/dist/react-line-chart.js +49 -11
- package/dist/react-line-chart.js.map +2 -2
- package/dist/react-link-card.js +1 -1
- package/dist/react-live-captions.js +1 -1
- package/dist/react-live-cursors.js +1 -1
- package/dist/react-live-transcript.js +1 -1
- package/dist/react-location-selector.js +1 -1
- package/dist/react-logger.js +3 -3
- package/dist/react-markdown-renderer.js +2 -2
- package/dist/react-marquee-strip.js +1 -1
- package/dist/react-mascot.js +1 -1
- package/dist/react-mastery-bar.js +1 -1
- package/dist/react-mini-map.js +1 -1
- package/dist/react-mobile-nav.js +1 -1
- package/dist/react-native-select.js +52 -0
- package/dist/react-native-select.js.map +7 -0
- package/dist/react-navbar.js +1 -1
- package/dist/react-numbered-steps.js +1 -1
- package/dist/react-otp-input.js +1 -1
- package/dist/react-page-header.js +1 -1
- package/dist/react-pagination.js +1 -1
- package/dist/react-password-input.js +2 -2
- package/dist/react-payment.js +1 -1
- package/dist/react-popover.js +1 -1
- package/dist/react-pre-call-lobby.js +1 -1
- package/dist/react-presence-indicator.js +1 -1
- package/dist/react-pricing-card.js +1 -1
- package/dist/react-progress-display.js +1 -1
- package/dist/react-radial-gauge.js +1 -1
- package/dist/react-radio.js +1 -1
- package/dist/react-rating-scale.js +1 -1
- package/dist/react-reaction-bar.js +1 -1
- package/dist/react-resizable-layout.js +1 -1
- package/dist/react-search-bar.js +1 -1
- package/dist/react-section-head.js +1 -1
- package/dist/react-segmented-control.js +1 -1
- package/dist/react-select.js +1 -1
- package/dist/react-separator.js +1 -1
- package/dist/react-sheet.js +1 -1
- package/dist/react-sidebar.js +1 -1
- package/dist/react-skeleton.js +1 -1
- package/dist/react-skip-to-content.js +1 -1
- package/dist/react-slide-viewer.js +1 -1
- package/dist/react-slider.js +1 -1
- package/dist/react-slot-picker.js +1 -1
- package/dist/react-social-auth-button.js +3 -3
- package/dist/react-sortable-list.js +1 -1
- package/dist/react-stat-grid.js +91 -22
- package/dist/react-stat-grid.js.map +2 -2
- package/dist/react-status-indicator.js +1 -1
- package/dist/react-steps.js +1 -1
- package/dist/react-sticky-note.js +1 -1
- package/dist/react-switch.js +1 -1
- package/dist/react-table-of-contents.js +1 -1
- package/dist/react-table.js +148 -0
- package/dist/react-table.js.map +7 -0
- package/dist/react-tabs.js +35 -6
- package/dist/react-tabs.js.map +2 -2
- package/dist/react-terminal.js +1 -1
- package/dist/react-test-results.js +1 -1
- package/dist/react-textarea.js +1 -1
- package/dist/react-thread-view.js +2 -2
- package/dist/react-timeline.js +1 -1
- package/dist/react-toast.js +1 -1
- package/dist/react-tooltip.js +1 -1
- package/dist/react-version-selector.js +1 -1
- package/dist/react-video-grid.js +2 -2
- package/dist/react-video-player.js +1 -1
- package/dist/react-video-tile.js +2 -2
- package/dist/react-voice-pill.js +1 -1
- package/dist/react-waveform.js +1 -1
- package/dist/react-wizard.js +1 -1
- package/dist/shared.js +53 -0
- package/dist/shared.js.map +7 -0
- package/package.json +3 -1
- package/dist/chunk-2Q6HHFAN.js +0 -164
- package/dist/chunk-SDZ3LROZ.js +0 -7
- package/dist/faro-engine-47HGRAQH-JKINJPMH.js +0 -3
- /package/dist/{chunk-V24GDHUX.js.map → chunk-4ACSHPCM.js.map} +0 -0
- /package/dist/{chunk-SDAJVXD4.js.map → chunk-5P56PN3J.js.map} +0 -0
- /package/dist/{chunk-SDZ3LROZ.js.map → chunk-7P7EJ56S.js.map} +0 -0
- /package/dist/{chunk-QPCKJ2YR.js.map → chunk-GG6MZDGV.js.map} +0 -0
- /package/dist/{chunk-QDMLIDYN.js.map → chunk-GU5MI7FX.js.map} +0 -0
- /package/dist/{chunk-RSWOLRIC.js.map → chunk-KIZD73DK.js.map} +0 -0
- /package/dist/{chunk-XMFNBOPO.js.map → chunk-PY2TIFCT.js.map} +0 -0
- /package/dist/{chunk-3I3DYDHR.js.map → chunk-WNLYPQOS.js.map} +0 -0
- /package/dist/{chunk-63N4PZUJ.js.map → chunk-X6HEKRWE.js.map} +0 -0
- /package/dist/{chunk-WYKPPK3W.js.map → chunk-XAJDSVZR.js.map} +0 -0
package/dist/react-app-shell.js
CHANGED
package/dist/react-audio-room.js
CHANGED
package/dist/react-auth.js
CHANGED
package/dist/react-avatar.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cn,
|
|
3
3
|
cva
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-75BKRTPO.js";
|
|
5
5
|
|
|
6
6
|
// ../react-avatar/dist/index.js
|
|
7
7
|
import * as React from "react";
|
|
@@ -15,10 +15,9 @@ function getInitials(name) {
|
|
|
15
15
|
}
|
|
16
16
|
function createAvatar(props = {}) {
|
|
17
17
|
const { src, alt = "", fallback = "", size = "md" } = props;
|
|
18
|
-
const ariaProps = {
|
|
19
|
-
role: "img"
|
|
20
|
-
};
|
|
18
|
+
const ariaProps = {};
|
|
21
19
|
if (alt) {
|
|
20
|
+
ariaProps.role = "img";
|
|
22
21
|
ariaProps["aria-label"] = alt;
|
|
23
22
|
}
|
|
24
23
|
const fallbackText = fallback ? getInitials(fallback) : alt ? getInitials(alt) : "";
|
|
@@ -48,8 +47,12 @@ var avatarTokens = {
|
|
|
48
47
|
}
|
|
49
48
|
};
|
|
50
49
|
var avatarVariants = cva({
|
|
51
|
-
base: "relative flex shrink-0 overflow-hidden
|
|
50
|
+
base: "relative flex shrink-0 overflow-hidden",
|
|
52
51
|
variants: {
|
|
52
|
+
shape: {
|
|
53
|
+
circle: "rounded-full",
|
|
54
|
+
square: "rounded-md"
|
|
55
|
+
},
|
|
53
56
|
size: {
|
|
54
57
|
xs: "h-6 w-6",
|
|
55
58
|
sm: "h-8 w-8",
|
|
@@ -59,6 +62,7 @@ var avatarVariants = cva({
|
|
|
59
62
|
}
|
|
60
63
|
},
|
|
61
64
|
defaultVariants: {
|
|
65
|
+
shape: "circle",
|
|
62
66
|
size: "md"
|
|
63
67
|
}
|
|
64
68
|
});
|
|
@@ -66,7 +70,7 @@ var avatarImageVariants = cva({
|
|
|
66
70
|
base: "aspect-square h-full w-full object-cover"
|
|
67
71
|
});
|
|
68
72
|
var avatarFallbackVariants = cva({
|
|
69
|
-
base: "flex h-full w-full items-center justify-center rounded-
|
|
73
|
+
base: "flex h-full w-full items-center justify-center rounded-[inherit] bg-muted text-muted-foreground",
|
|
70
74
|
variants: {
|
|
71
75
|
size: {
|
|
72
76
|
xs: "text-xs",
|
|
@@ -93,15 +97,15 @@ var AvatarContext = React.createContext({
|
|
|
93
97
|
}
|
|
94
98
|
});
|
|
95
99
|
var Avatar = React.forwardRef(
|
|
96
|
-
function Avatar2({ size = "md", className, children, ...props }, ref) {
|
|
100
|
+
function Avatar2({ size = "md", shape = "circle", className, children, ...props }, ref) {
|
|
97
101
|
const [imageLoaded, setImageLoaded] = React.useState(false);
|
|
98
102
|
const [imageError, setImageError] = React.useState(false);
|
|
99
|
-
const api = createAvatar({ size });
|
|
103
|
+
const api = createAvatar({ size, alt: props["aria-label"] });
|
|
100
104
|
return /* @__PURE__ */ jsx(AvatarContext.Provider, { value: { size, imageLoaded, imageError, setImageLoaded, setImageError }, children: /* @__PURE__ */ jsx(
|
|
101
105
|
"span",
|
|
102
106
|
{
|
|
103
107
|
ref,
|
|
104
|
-
className: cn(avatarVariants({ size }), className),
|
|
108
|
+
className: cn(avatarVariants({ size, shape }), className),
|
|
105
109
|
...api.ariaProps,
|
|
106
110
|
...api.dataAttributes,
|
|
107
111
|
...props,
|
package/dist/react-avatar.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../avatar/src/avatar.ts", "../../avatar/src/avatar.styles.ts", "../../react-avatar/src/avatar.tsx"],
|
|
4
|
-
"sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n fallback?: string\n size?: AvatarSize\n}\n\nexport interface AvatarAPI {\n /** ARIA attributes to spread on the root element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Image ARIA props */\n imageProps: {\n alt: string\n role: string\n }\n /** Fallback text (initials) */\n fallbackText: string\n /** Current state */\n state: {\n size: AvatarSize\n hasSrc: boolean\n }\n}\n\n/**\n * Extract initials from a name or fallback string.\n * Takes first letter of first two words, uppercased.\n */\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 0 || parts[0] === '') return ''\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\nexport function createAvatar(props: AvatarProps = {}): AvatarAPI {\n const { src, alt = '', fallback = '', size = 'md' } = props\n\n const ariaProps: Partial<AccessibilityProps> = {
|
|
5
|
-
"mappings": ";;;;;;;;;
|
|
4
|
+
"sourcesContent": ["import type { AccessibilityProps } from '@refraction-ui/shared'\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\n/** Outline of the avatar. */\nexport type AvatarShape = 'circle' | 'square'\n\nexport type AvatarLoadingStatus = 'idle' | 'loading' | 'loaded' | 'error'\n\nexport interface AvatarProps {\n src?: string\n alt?: string\n fallback?: string\n size?: AvatarSize\n}\n\nexport interface AvatarAPI {\n /** ARIA attributes to spread on the root element */\n ariaProps: Partial<AccessibilityProps>\n /** Data attributes for CSS styling hooks */\n dataAttributes: Record<string, string>\n /** Image ARIA props */\n imageProps: {\n alt: string\n role: string\n }\n /** Fallback text (initials) */\n fallbackText: string\n /** Current state */\n state: {\n size: AvatarSize\n hasSrc: boolean\n }\n}\n\n/**\n * Extract initials from a name or fallback string.\n * Takes first letter of first two words, uppercased.\n */\nexport function getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length === 0 || parts[0] === '') return ''\n if (parts.length === 1) return parts[0].charAt(0).toUpperCase()\n return (parts[0].charAt(0) + parts[parts.length - 1].charAt(0)).toUpperCase()\n}\n\nexport function createAvatar(props: AvatarProps = {}): AvatarAPI {\n const { src, alt = '', fallback = '', size = 'md' } = props\n\n // role=\"img\" makes its children presentational, so it is only applied when\n // the avatar itself has a name; otherwise the inner <img alt> / fallback\n // text stays exposed.\n const ariaProps: Partial<AccessibilityProps> = {}\n if (alt) {\n ariaProps.role = 'img'\n ariaProps['aria-label'] = alt\n }\n\n const fallbackText = fallback ? getInitials(fallback) : (alt ? getInitials(alt) : '')\n\n const dataAttributes: Record<string, string> = {\n 'data-slot': 'avatar',\n }\n\n return {\n ariaProps,\n dataAttributes,\n imageProps: {\n alt,\n role: 'img',\n },\n fallbackText,\n state: {\n size,\n hasSrc: !!src,\n },\n }\n}\n", "import { cva } from '@refraction-ui/shared'\nimport type { TokenContract } from '@refraction-ui/shared'\n\nexport const avatarTokens: TokenContract = {\n name: 'avatar',\n tokens: {\n bg: { variable: '--rfr-avatar-bg', fallback: 'hsl(var(--muted))' },\n fg: { variable: '--rfr-avatar-fg', fallback: 'hsl(var(--muted-foreground))' },\n border: { variable: '--rfr-avatar-border', fallback: 'hsl(var(--border))' },\n },\n}\n\nexport const avatarVariants = cva({\n base: 'relative flex shrink-0 overflow-hidden',\n variants: {\n shape: {\n circle: 'rounded-full',\n square: 'rounded-md',\n },\n size: {\n xs: 'h-6 w-6',\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12',\n xl: 'h-16 w-16',\n },\n },\n defaultVariants: {\n shape: 'circle',\n size: 'md',\n },\n})\n\nexport const avatarImageVariants = cva({\n base: 'aspect-square h-full w-full object-cover',\n})\n\nexport const avatarFallbackVariants = cva({\n base: 'flex h-full w-full items-center justify-center rounded-[inherit] bg-muted text-muted-foreground',\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n xl: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n})\n", "import * as React from 'react'\nimport {\n createAvatar,\n avatarVariants,\n avatarImageVariants,\n avatarFallbackVariants,\n type AvatarSize,\n type AvatarShape,\n} from '@refraction-ui/avatar'\nimport { cn } from '@refraction-ui/shared'\n\n/* ─── Context ──────────────────────────────────────────────────── */\ninterface AvatarContextValue {\n size: AvatarSize\n imageLoaded: boolean\n imageError: boolean\n setImageLoaded: (loaded: boolean) => void\n setImageError: (error: boolean) => void\n}\n\nconst AvatarContext = React.createContext<AvatarContextValue>({\n size: 'md',\n imageLoaded: false,\n imageError: false,\n setImageLoaded: () => {},\n setImageError: () => {},\n})\n\n/* ─── Avatar (root) ────────────────────────────────────────────── */\nexport interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {\n size?: AvatarSize\n /** `circle` (default) or `square` (rounded corners) — e.g. for teams and organisations. */\n shape?: AvatarShape\n}\n\n/**\n * Avatar -- circular image with fallback support.\n * Compound component: use Avatar > AvatarImage + AvatarFallback.\n */\nexport const Avatar = React.forwardRef<HTMLSpanElement, AvatarProps>(\n function Avatar({ size = 'md', shape = 'circle', className, children, ...props }, ref) {\n const [imageLoaded, setImageLoaded] = React.useState(false)\n const [imageError, setImageError] = React.useState(false)\n\n const api = createAvatar({ size, alt: props['aria-label'] })\n\n return (\n <AvatarContext.Provider value={{ size, imageLoaded, imageError, setImageLoaded, setImageError }}>\n <span\n ref={ref}\n className={cn(avatarVariants({ size, shape }), className)}\n {...api.ariaProps}\n {...api.dataAttributes}\n {...props}\n >\n {children}\n </span>\n </AvatarContext.Provider>\n )\n },\n)\n\n/* ─── AvatarImage ──────────────────────────────────────────────── */\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n function AvatarImage({ className, src, alt = '', onLoad, onError, ...props }, ref) {\n const { imageError, setImageLoaded, setImageError } = React.useContext(AvatarContext)\n\n React.useEffect(() => {\n setImageLoaded(false)\n setImageError(false)\n }, [src, setImageLoaded, setImageError])\n\n const handleLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setImageLoaded(true)\n onLoad?.(e)\n }\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setImageError(true)\n onError?.(e)\n }\n\n if (imageError) return null\n\n return (\n <img\n ref={ref}\n className={cn(avatarImageVariants(), className)}\n src={src}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n {...props}\n />\n )\n },\n)\n\n/* ─── AvatarFallback ───────────────────────────────────────────── */\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLSpanElement> {}\n\nexport const AvatarFallback = React.forwardRef<HTMLSpanElement, AvatarFallbackProps>(\n function AvatarFallback({ className, children, ...props }, ref) {\n const { size, imageLoaded, imageError } = React.useContext(AvatarContext)\n\n if (imageLoaded && !imageError) return null\n\n return (\n <span\n ref={ref}\n className={cn(avatarFallbackVariants({ size }), className)}\n {...props}\n >\n {children}\n </span>\n )\n },\n)\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Avatar", "AvatarImage", "AvatarFallback"]
|
|
7
7
|
}
|
package/dist/react-badge.js
CHANGED
package/dist/react-bottom-nav.js
CHANGED
package/dist/react-button.js
CHANGED
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
Button,
|
|
3
3
|
buttonTokens,
|
|
4
4
|
buttonVariants
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-JZQ5ZL46.js";
|
|
6
|
+
import "./chunk-GU5MI7FX.js";
|
|
7
|
+
import "./chunk-75BKRTPO.js";
|
|
8
8
|
export {
|
|
9
9
|
Button,
|
|
10
10
|
buttonTokens,
|
package/dist/react-calendar.js
CHANGED
package/dist/react-callout.js
CHANGED
package/dist/react-card-grid.js
CHANGED
package/dist/react-card.js
CHANGED
package/dist/react-carousel.js
CHANGED
package/dist/react-charts.js
CHANGED
package/dist/react-checkbox.js
CHANGED
package/dist/react-checklist.js
CHANGED
package/dist/react-code-block.js
CHANGED
package/dist/react-combobox.js
CHANGED
package/dist/react-command.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
cva,
|
|
6
6
|
devWarn,
|
|
7
7
|
generateId
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-75BKRTPO.js";
|
|
9
9
|
|
|
10
10
|
// ../react-command/dist/index.js
|
|
11
11
|
import * as React from "react";
|
|
@@ -149,26 +149,49 @@ function useCommandContext() {
|
|
|
149
149
|
}
|
|
150
150
|
return ctx;
|
|
151
151
|
}
|
|
152
|
+
function itemValueOf(value, children) {
|
|
153
|
+
if (value !== void 0) return value;
|
|
154
|
+
if (typeof children === "string" || typeof children === "number") return String(children);
|
|
155
|
+
return "";
|
|
156
|
+
}
|
|
157
|
+
function collectItems(node, into) {
|
|
158
|
+
React.Children.forEach(node, (child) => {
|
|
159
|
+
if (!React.isValidElement(child)) return;
|
|
160
|
+
if (child.type === CommandItem) {
|
|
161
|
+
const value = itemValueOf(child.props.value, child.props.children);
|
|
162
|
+
into.push({ id: value, value, label: value, disabled: child.props.disabled });
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
collectItems(child.props.children, into);
|
|
166
|
+
});
|
|
167
|
+
return into;
|
|
168
|
+
}
|
|
169
|
+
var defaultFilter2 = (value, search) => value.toLowerCase().includes(search.toLowerCase());
|
|
152
170
|
function Command({
|
|
153
171
|
open,
|
|
154
172
|
onOpenChange,
|
|
155
|
-
filter,
|
|
173
|
+
filter = defaultFilter2,
|
|
156
174
|
className,
|
|
157
175
|
children
|
|
158
176
|
}) {
|
|
159
|
-
const [
|
|
177
|
+
const [registered, setRegistered] = React.useState(() => /* @__PURE__ */ new Map());
|
|
160
178
|
const [search, setSearch] = React.useState("");
|
|
161
179
|
const [selectedIndex, setSelectedIndex] = React.useState(0);
|
|
162
|
-
const
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
180
|
+
const uid = React.useId().replace(/:/g, "");
|
|
181
|
+
const listId = `rfr-cmd-list-${uid}`;
|
|
182
|
+
const inputId = `rfr-cmd-input-${uid}`;
|
|
183
|
+
const api = React.useMemo(() => createCommand({ open, onOpenChange, filter }), [open, onOpenChange, filter]);
|
|
184
|
+
const items = React.useMemo(() => {
|
|
185
|
+
const all = collectItems(children, []);
|
|
186
|
+
const known = new Set(all.map((i) => i.value));
|
|
187
|
+
for (const [value, item] of registered) {
|
|
188
|
+
if (!known.has(value)) all.push({ id: value, value, label: value, disabled: item.disabled });
|
|
167
189
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const filteredItems =
|
|
190
|
+
return all;
|
|
191
|
+
}, [children, registered]);
|
|
192
|
+
const matches = React.useCallback((value) => !search || filter(value, search), [filter, search]);
|
|
193
|
+
const filteredItems = React.useMemo(() => items.filter((i) => matches(i.value)), [items, matches]);
|
|
194
|
+
const highlighted = filteredItems[selectedIndex];
|
|
172
195
|
const handleSearch = React.useCallback((query) => {
|
|
173
196
|
setSearch(query);
|
|
174
197
|
setSelectedIndex(0);
|
|
@@ -176,57 +199,59 @@ function Command({
|
|
|
176
199
|
const handleSelect = React.useCallback((index) => {
|
|
177
200
|
setSelectedIndex(index);
|
|
178
201
|
}, []);
|
|
179
|
-
const registerItem = React.useCallback((item) => {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
return
|
|
202
|
+
const registerItem = React.useCallback((value, item) => {
|
|
203
|
+
setRegistered((prev) => {
|
|
204
|
+
const current = prev.get(value);
|
|
205
|
+
if (current && current.domId === item.domId && current.disabled === item.disabled) return prev;
|
|
206
|
+
const next = new Map(prev);
|
|
207
|
+
next.set(value, item);
|
|
208
|
+
return next;
|
|
183
209
|
});
|
|
184
210
|
}, []);
|
|
185
|
-
const unregisterItem = React.useCallback((
|
|
186
|
-
|
|
211
|
+
const unregisterItem = React.useCallback((value) => {
|
|
212
|
+
setRegistered((prev) => {
|
|
213
|
+
if (!prev.has(value)) return prev;
|
|
214
|
+
const next = new Map(prev);
|
|
215
|
+
next.delete(value);
|
|
216
|
+
return next;
|
|
217
|
+
});
|
|
187
218
|
}, []);
|
|
188
|
-
const handleKeyDown =
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
unregisterItem,
|
|
225
|
-
listId: api.ids.list,
|
|
226
|
-
inputId: api.ids.input
|
|
227
|
-
}),
|
|
228
|
-
[search, handleSearch, selectedIndex, handleSelect, items, filteredItems, registerItem, unregisterItem, api.ids.list, api.ids.input]
|
|
229
|
-
);
|
|
219
|
+
const handleKeyDown = (e) => {
|
|
220
|
+
const count = filteredItems.length;
|
|
221
|
+
const handler = createKeyboardHandler({
|
|
222
|
+
[Keys.ArrowDown]: (ev) => {
|
|
223
|
+
ev.preventDefault();
|
|
224
|
+
if (count > 0) setSelectedIndex((prev) => (prev + 1) % count);
|
|
225
|
+
},
|
|
226
|
+
[Keys.ArrowUp]: (ev) => {
|
|
227
|
+
ev.preventDefault();
|
|
228
|
+
if (count > 0) setSelectedIndex((prev) => (prev - 1 + count) % count);
|
|
229
|
+
},
|
|
230
|
+
[Keys.Enter]: (ev) => {
|
|
231
|
+
ev.preventDefault();
|
|
232
|
+
if (highlighted && !highlighted.disabled) registered.get(highlighted.value)?.select();
|
|
233
|
+
},
|
|
234
|
+
[Keys.Escape]: (ev) => {
|
|
235
|
+
ev.preventDefault();
|
|
236
|
+
onOpenChange?.(false);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
handler(e.nativeEvent);
|
|
240
|
+
};
|
|
241
|
+
const ctx = {
|
|
242
|
+
search,
|
|
243
|
+
onSearch: handleSearch,
|
|
244
|
+
selectedIndex,
|
|
245
|
+
onSelect: handleSelect,
|
|
246
|
+
items,
|
|
247
|
+
filteredItems,
|
|
248
|
+
matches,
|
|
249
|
+
registerItem,
|
|
250
|
+
unregisterItem,
|
|
251
|
+
activeDescendant: highlighted ? registered.get(highlighted.value)?.domId : void 0,
|
|
252
|
+
listId,
|
|
253
|
+
inputId
|
|
254
|
+
};
|
|
230
255
|
return React.createElement(
|
|
231
256
|
CommandContext.Provider,
|
|
232
257
|
{ value: ctx },
|
|
@@ -235,6 +260,8 @@ function Command({
|
|
|
235
260
|
{
|
|
236
261
|
className: cn(commandVariants(), className),
|
|
237
262
|
...api.ariaProps,
|
|
263
|
+
"aria-owns": listId,
|
|
264
|
+
id: `rfr-cmd-${uid}`,
|
|
238
265
|
onKeyDown: handleKeyDown
|
|
239
266
|
},
|
|
240
267
|
children
|
|
@@ -243,7 +270,7 @@ function Command({
|
|
|
243
270
|
}
|
|
244
271
|
var CommandInput = React.forwardRef(
|
|
245
272
|
function CommandInput2({ className, onChange, ...props }, ref) {
|
|
246
|
-
const { search, onSearch, inputId, listId } = useCommandContext();
|
|
273
|
+
const { search, onSearch, inputId, listId, activeDescendant } = useCommandContext();
|
|
247
274
|
const handleChange = (e) => {
|
|
248
275
|
onSearch(e.target.value);
|
|
249
276
|
onChange?.(e);
|
|
@@ -255,6 +282,7 @@ var CommandInput = React.forwardRef(
|
|
|
255
282
|
role: "searchbox",
|
|
256
283
|
"aria-autocomplete": "list",
|
|
257
284
|
"aria-controls": listId,
|
|
285
|
+
"aria-activedescendant": activeDescendant,
|
|
258
286
|
value: search,
|
|
259
287
|
onChange: handleChange,
|
|
260
288
|
className: cn(commandInputVariants(), className),
|
|
@@ -316,21 +344,38 @@ var CommandGroup = React.forwardRef(
|
|
|
316
344
|
}
|
|
317
345
|
);
|
|
318
346
|
var CommandItem = React.forwardRef(
|
|
319
|
-
function CommandItem2({ className, value, disabled, onSelect: onItemSelect, children, ...props }, ref) {
|
|
320
|
-
const
|
|
347
|
+
function CommandItem2({ className, value, disabled = false, onSelect: onItemSelect, onClick, onMouseMove, children, ...props }, ref) {
|
|
348
|
+
const { matches, filteredItems, selectedIndex, onSelect, registerItem, unregisterItem } = useCommandContext();
|
|
349
|
+
const itemValue = itemValueOf(value, children);
|
|
350
|
+
const domId = `rfr-cmd-item-${React.useId().replace(/:/g, "")}`;
|
|
351
|
+
const onSelectRef = React.useRef(onItemSelect);
|
|
352
|
+
onSelectRef.current = onItemSelect;
|
|
353
|
+
React.useEffect(() => {
|
|
354
|
+
registerItem(itemValue, { domId, disabled, select: () => onSelectRef.current?.() });
|
|
355
|
+
}, [registerItem, itemValue, domId, disabled]);
|
|
356
|
+
React.useEffect(() => () => unregisterItem(itemValue), [unregisterItem, itemValue]);
|
|
357
|
+
if (!matches(itemValue)) return null;
|
|
358
|
+
const index = filteredItems.findIndex((i) => i.value === itemValue);
|
|
359
|
+
const isSelected = index !== -1 && index === selectedIndex;
|
|
360
|
+
const state = disabled ? "disabled" : isSelected ? "selected" : "default";
|
|
321
361
|
return React.createElement(
|
|
322
362
|
"div",
|
|
323
363
|
{
|
|
324
364
|
ref,
|
|
365
|
+
id: domId,
|
|
325
366
|
role: "option",
|
|
326
|
-
"aria-selected":
|
|
327
|
-
"aria-disabled": disabled
|
|
328
|
-
"data-value":
|
|
367
|
+
"aria-selected": isSelected,
|
|
368
|
+
"aria-disabled": disabled,
|
|
369
|
+
"data-value": itemValue,
|
|
370
|
+
"data-selected": isSelected ? "" : void 0,
|
|
329
371
|
className: cn(commandItemVariants({ state }), className),
|
|
330
|
-
onClick: () => {
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
372
|
+
onClick: (e) => {
|
|
373
|
+
onClick?.(e);
|
|
374
|
+
if (!disabled && !e.defaultPrevented) onItemSelect?.();
|
|
375
|
+
},
|
|
376
|
+
onMouseMove: (e) => {
|
|
377
|
+
onMouseMove?.(e);
|
|
378
|
+
if (index !== -1 && index !== selectedIndex) onSelect(index);
|
|
334
379
|
},
|
|
335
380
|
...props
|
|
336
381
|
},
|