@proveanything/smartlinks-utils-ui 1.13.11 → 1.13.14
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/ErrorBoundary-J9iKgF_H.d.ts +40 -0
- package/dist/{chunk-7RWLFKHC.js → chunk-I3T36FSI.js} +28 -12
- package/dist/chunk-I3T36FSI.js.map +1 -0
- package/dist/{chunk-A4YZYKWT.js → chunk-JNCRSL2H.js} +6 -6
- package/dist/chunk-JNCRSL2H.js.map +1 -0
- package/dist/{chunk-KA4MKRHL.js → chunk-W5ZEH3RT.js} +15 -4
- package/dist/chunk-W5ZEH3RT.js.map +1 -0
- package/dist/{chunk-3RRHM4LP.js → chunk-XASZS7EA.js} +131 -4
- package/dist/chunk-XASZS7EA.js.map +1 -0
- package/dist/components/AssetPicker/index.js +1 -1
- package/dist/components/ConditionsEditor/index.js +1 -1
- package/dist/components/RecordsAdmin/index.d.ts +13 -0
- package/dist/components/RecordsAdmin/index.js +22 -13
- package/dist/components/RecordsAdmin/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/records-GPSKUNST.js +3 -0
- package/dist/{records-4NN757SG.js.map → records-GPSKUNST.js.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-3RRHM4LP.js.map +0 -1
- package/dist/chunk-7RWLFKHC.js.map +0 -1
- package/dist/chunk-A4YZYKWT.js.map +0 -1
- package/dist/chunk-KA4MKRHL.js.map +0 -1
- package/dist/records-4NN757SG.js +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/AdminPageHeader/AdminPageHeader.tsx","../src/hints/useHintsPreference.ts","../src/hints/useIntroState.ts","../src/utils/ErrorBoundary.tsx"],"names":["useState","useEffect","useCallback","jsx","jsxs"],"mappings":"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","file":"chunk-XASZS7EA.js","sourcesContent":["// =============================================================================\r\n// AdminPageHeader\r\n//\r\n// A standardised page header for any SmartLinks admin surface. Designed to be\r\n// used standalone (lightweight apps that don't need the full RecordsAdminShell)\r\n// or composed inside other shells. Supports:\r\n//\r\n// • Inline icon + title + full-width subtitle\r\n// • Right-aligned slot for app-specific actions (e.g. \"+ New\" button)\r\n// • External help link (icon-button that opens docs in a new tab)\r\n// • Optional dismissible intro card with `?` reopen affordance\r\n// • Optional `aside` slot for extra header content (stats strips, etc.)\r\n//\r\n// Styling is self-contained under `.sl-aph` and reuses the shared `--ra-*`\r\n// design tokens with sensible fallbacks, so it themes correctly whether the\r\n// host has loaded the records-admin token sheet or not.\r\n// =============================================================================\r\nimport { type ReactNode, useId } from 'react';\r\nimport { BookOpen, HelpCircle, X, Lightbulb, CheckCircle2, AlertTriangle, Info } from 'lucide-react';\r\nimport './admin-page-header.css';\r\n\r\nexport type AdminPageHeaderIntroTone = 'info' | 'success' | 'warning';\r\n\r\nexport interface AdminPageHeaderIntro {\r\n /** Short headline shown in bold at the start of the intro card. */\r\n title: string;\r\n /** Body content — plain text or rich nodes. */\r\n body: ReactNode;\r\n /** Visual tone — controls icon and surface tint. Default `'info'`. */\r\n tone?: AdminPageHeaderIntroTone;\r\n /** Optional action node rendered inline after the body (e.g. a Learn-more link). */\r\n action?: ReactNode;\r\n /** Whether the intro is currently dismissed. Controlled. */\r\n dismissed: boolean;\r\n /** Called when the user clicks the dismiss `X`. */\r\n onDismiss: () => void;\r\n /**\r\n * Called when the user clicks the reopen `?` button (only rendered when\r\n * dismissed is true). Omit to hide the reopen affordance entirely.\r\n */\r\n onReopen?: () => void;\r\n /** Tooltip / aria-label for the reopen button. Default \"How it works\". */\r\n reopenLabel?: string;\r\n}\r\n\r\nexport interface AdminPageHeaderProps {\r\n /** Page title — required. */\r\n title: string;\r\n /** Single-line muted subtitle under the title. */\r\n subtitle?: string;\r\n /** Icon rendered inline before the title. Pass a Lucide element or any node. */\r\n icon?: ReactNode;\r\n /**\r\n * External help / documentation URL. When set, renders a small icon-button\r\n * that opens the URL in a new tab. Use this to point at app-specific docs.\r\n */\r\n helpUrl?: string;\r\n /** Tooltip / aria-label for the help link. Default \"Help & documentation\". */\r\n helpLabel?: string;\r\n /**\r\n * Right-aligned action slot — typically a primary \"+ New\" button and/or\r\n * secondary controls. Rendered before the help / intro-reopen icon-buttons.\r\n */\r\n actions?: ReactNode;\r\n /**\r\n * Extra header content rendered between `actions` and the trailing\r\n * help / reopen icon-buttons. Used by RecordsAdminShell for its stats strip;\r\n * standalone apps rarely need it.\r\n */\r\n aside?: ReactNode;\r\n /**\r\n * Optional dismissible intro card rendered below the header row.\r\n * See {@link AdminPageHeaderIntro}.\r\n */\r\n intro?: AdminPageHeaderIntro;\r\n /** Extra class on the root container for layout overrides. */\r\n className?: string;\r\n}\r\n\r\nconst TONE_ICON = {\r\n info: Lightbulb,\r\n success: CheckCircle2,\r\n warning: AlertTriangle,\r\n} as const;\r\n\r\nexport function AdminPageHeader({\r\n title, subtitle, icon, helpUrl, helpLabel,\r\n actions, aside, intro, className,\r\n}: AdminPageHeaderProps) {\r\n const titleId = useId();\r\n const resolvedHelpLabel = helpLabel ?? 'Help & documentation';\r\n const resolvedReopenLabel = intro?.reopenLabel ?? 'How it works';\r\n const showReopen = !!intro && intro.dismissed && !!intro.onReopen;\r\n const showIntro = !!intro && !intro.dismissed;\r\n\r\n return (\r\n <header className={`sl-aph${className ? ` ${className}` : ''}`} aria-labelledby={titleId}>\r\n <div className=\"sl-aph__row\">\r\n <div className=\"sl-aph__main\">\r\n <div className=\"sl-aph__text\">\r\n <h1 className=\"sl-aph__title\" id={titleId}>\r\n {icon ? (\r\n <span className=\"sl-aph__icon\" aria-hidden=\"true\">{icon}</span>\r\n ) : null}\r\n <span>{title}</span>\r\n </h1>\r\n {subtitle ? <p className=\"sl-aph__subtitle\">{subtitle}</p> : null}\r\n </div>\r\n </div>\r\n {(actions || aside || helpUrl || showReopen) ? (\r\n <div className=\"sl-aph__aside\">\r\n {actions}\r\n {aside}\r\n {helpUrl ? (\r\n <a\r\n href={helpUrl}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n className=\"sl-aph__icon-btn\"\r\n aria-label={resolvedHelpLabel}\r\n title={resolvedHelpLabel}\r\n >\r\n <BookOpen aria-hidden=\"true\" />\r\n </a>\r\n ) : null}\r\n {showReopen ? (\r\n <button\r\n type=\"button\"\r\n onClick={intro!.onReopen}\r\n className=\"sl-aph__icon-btn\"\r\n aria-label={resolvedReopenLabel}\r\n title={resolvedReopenLabel}\r\n >\r\n <HelpCircle aria-hidden=\"true\" />\r\n </button>\r\n ) : null}\r\n </div>\r\n ) : null}\r\n </div>\r\n {showIntro ? <AdminPageHeaderIntroCard intro={intro!} /> : null}\r\n </header>\r\n );\r\n}\r\n\r\nfunction AdminPageHeaderIntroCard({ intro }: { intro: AdminPageHeaderIntro }) {\r\n const tone = intro.tone ?? 'info';\r\n const Icon = TONE_ICON[tone] ?? Info;\r\n return (\r\n <div className=\"sl-aph__intro\" data-tone={tone} role=\"note\">\r\n <div className=\"sl-aph__intro-icon\">\r\n <Icon aria-hidden=\"true\" style={{ width: '0.95rem', height: '0.95rem' }} />\r\n </div>\r\n <div className=\"sl-aph__intro-body\">\r\n <h4 className=\"sl-aph__intro-title\">{intro.title}</h4>\r\n <span className=\"sl-aph__intro-text\">{intro.body}</span>\r\n {intro.action ? <span className=\"sl-aph__intro-action\">{intro.action}</span> : null}\r\n </div>\r\n <button\r\n type=\"button\"\r\n onClick={intro.onDismiss}\r\n aria-label=\"Dismiss\"\r\n className=\"sl-aph__intro-dismiss\"\r\n >\r\n <X aria-hidden=\"true\" style={{ width: '0.875rem', height: '0.875rem' }} />\r\n </button>\r\n </div>\r\n );\r\n}","// =============================================================================\r\n// useHintsPreference\r\n//\r\n// Single source of truth for the user-level \"show inline hints?\" preference.\r\n// Reads from `SL.auth.getAccount().prefs` (the canonical account-level prefs\r\n// bag added in SmartLinks SDK 1.11.5+) so the same flag follows the user\r\n// across every SmartLinks admin app — flip it once, applies everywhere.\r\n// There is intentionally no per-app preference list; that's what\r\n// `useIntroState` (browser-level dismiss) is for.\r\n//\r\n// Writes still flow through `SL.userAppData('prefs')` because the SDK does\r\n// not yet expose a dedicated `auth.setPrefs(...)`. The server treats the\r\n// `prefs` userAppData document as the backing store for `account.prefs`,\r\n// so reads and writes stay in sync.\r\n//\r\n// Shape on `account.prefs`:\r\n// { showHints?: boolean, ...other future flags }\r\n//\r\n// Default when unset / unauthenticated / SDK missing → `true` (show hints).\r\n// =============================================================================\r\nimport { useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nexport const HINTS_PREFS_APP_ID = 'prefs';\r\nexport const HINTS_PREFS_KEY = 'showHints';\r\n\r\n/** Optional cross-tab cache so multiple components share one fetch per session. */\r\nlet cachedShowHints: boolean | undefined;\r\nlet inflight: Promise<boolean> | null = null;\r\n\r\nasync function readShowHints(SL: any): Promise<boolean> {\r\n if (cachedShowHints !== undefined) return cachedShowHints;\r\n if (inflight) return inflight;\r\n inflight = (async () => {\r\n try {\r\n // Read from the authenticated account's prefs bag. `prefs` may be\r\n // absent (server returned no document) — that's fine, we fall back\r\n // to the default below.\r\n const account = await SL?.auth?.getAccount?.();\r\n const value = account?.prefs?.[HINTS_PREFS_KEY];\r\n const resolved = typeof value === 'boolean' ? value : true;\r\n cachedShowHints = resolved;\r\n return resolved;\r\n } catch {\r\n cachedShowHints = true;\r\n return true;\r\n } finally {\r\n inflight = null;\r\n }\r\n })();\r\n return inflight;\r\n}\r\n\r\nasync function writeShowHints(SL: any, next: boolean): Promise<void> {\r\n cachedShowHints = next;\r\n try {\r\n // No dedicated `auth.setPrefs` setter exists yet — write through\r\n // userAppData('prefs'), which the server uses as the backing store\r\n // for `account.prefs`.\r\n const cfg = await SL?.userAppData?.getConfig?.(HINTS_PREFS_APP_ID).catch(() => ({}));\r\n await SL?.userAppData?.setConfig?.(HINTS_PREFS_APP_ID, {\r\n ...(cfg ?? {}),\r\n [HINTS_PREFS_KEY]: next,\r\n });\r\n } catch { /* best-effort */ }\r\n}\r\n\r\nexport interface UseHintsPreferenceResult {\r\n /** Whether inline hints / intro cards should be shown by default. */\r\n showHints: boolean;\r\n /** True until the first read from `userAppData` resolves. */\r\n isLoading: boolean;\r\n /** Persist a new value on the user record. */\r\n setShowHints: (next: boolean) => Promise<void>;\r\n}\r\n\r\n/**\r\n * Subscribe to the user's global `showHints` preference. Optimistic; defaults\r\n * to `true` while loading so admins coming in fresh always see the help.\r\n */\r\nexport function useHintsPreference(SL: any): UseHintsPreferenceResult {\r\n // NB: do NOT lazy-init from a module-level cache — Vite HMR reloads this\r\n // module while React keeps the old hook queue, which trips\r\n // \"Should have a queue. This is likely a bug in React.\". Always init to\r\n // the same shape and rely on the effect below to hydrate.\r\n const [showHints, setShowHintsState] = useState<boolean>(true);\r\n const [isLoading, setIsLoading] = useState<boolean>(true);\r\n const mounted = useRef(true);\r\n\r\n useEffect(() => {\r\n mounted.current = true;\r\n if (cachedShowHints !== undefined) {\r\n setShowHintsState(cachedShowHints);\r\n setIsLoading(false);\r\n return () => { mounted.current = false; };\r\n }\r\n readShowHints(SL).then((value) => {\r\n if (!mounted.current) return;\r\n setShowHintsState(value);\r\n setIsLoading(false);\r\n });\r\n return () => { mounted.current = false; };\r\n }, [SL]);\r\n\r\n const setShowHints = useCallback(async (next: boolean) => {\r\n setShowHintsState(next);\r\n await writeShowHints(SL, next);\r\n }, [SL]);\r\n\r\n return { showHints, isLoading, setShowHints };\r\n}\r\n\r\n/** Test / sign-out helper — drop the in-memory cache. */\r\nexport function __resetHintsPreferenceCache() {\r\n cachedShowHints = undefined;\r\n inflight = null;\r\n}\r\n","// =============================================================================\r\n// useIntroState\r\n//\r\n// One hook that resolves the full intro-card state for an `<AdminPageHeader>`:\r\n//\r\n// 1. Global user preference (`prefs.showHints` on `userAppData`)\r\n// → if `false`, the intro stays collapsed by default. The `?` reopen\r\n// button is still rendered so the user can pop it open whenever.\r\n// 2. Per-browser, per-app temporary dismiss (`localStorage`)\r\n// → flipped by the dismiss `X`, so reloads on this browser keep it\r\n// collapsed until they click `?`.\r\n//\r\n// Apps just call:\r\n// const intro = useIntroState({ SL, persistKey: appId });\r\n// <AdminPageHeader intro={{ title, body, ...intro }} />\r\n// =============================================================================\r\nimport { useCallback, useEffect, useState } from 'react';\r\nimport { useHintsPreference } from './useHintsPreference';\r\n\r\nconst lsKey = (persistKey: string) => `sl:intro-dismissed:${persistKey}`;\r\n\r\nexport interface UseIntroStateArgs {\r\n /** SmartLinks SDK namespace (`* as SL from '@proveanything/smartlinks'`). */\r\n SL: any;\r\n /**\r\n * Stable per-app key used for the browser-level dismiss. Usually the\r\n * app's `appId`. Pass a more specific value (e.g. `${appId}:rules`) if\r\n * you have multiple intros within one app.\r\n */\r\n persistKey: string;\r\n}\r\n\r\nexport interface UseIntroStateResult {\r\n /** Whether the intro card is currently dismissed/collapsed. */\r\n dismissed: boolean;\r\n /** Wire to AdminPageHeader's `intro.onDismiss`. */\r\n onDismiss: () => void;\r\n /** Wire to AdminPageHeader's `intro.onReopen`. Always available. */\r\n onReopen: () => void;\r\n /** True until the user preference has finished loading. */\r\n isLoading: boolean;\r\n}\r\n\r\nfunction readBrowserDismissed(persistKey: string): boolean {\r\n try { return localStorage.getItem(lsKey(persistKey)) === '1'; }\r\n catch { return false; }\r\n}\r\n\r\n/** Resolve dismiss state from global pref + per-browser flag. */\r\nexport function useIntroState({ SL, persistKey }: UseIntroStateArgs): UseIntroStateResult {\r\n const { showHints, isLoading } = useHintsPreference(SL);\r\n const [browserDismissed, setBrowserDismissed] = useState<boolean>(() => readBrowserDismissed(persistKey));\r\n\r\n // Re-read browser flag if the key changes (rare, but cheap).\r\n useEffect(() => {\r\n setBrowserDismissed(readBrowserDismissed(persistKey));\r\n }, [persistKey]);\r\n\r\n const onDismiss = useCallback(() => {\r\n setBrowserDismissed(true);\r\n try { localStorage.setItem(lsKey(persistKey), '1'); } catch { /* ignore */ }\r\n }, [persistKey]);\r\n\r\n const onReopen = useCallback(() => {\r\n setBrowserDismissed(false);\r\n try { localStorage.removeItem(lsKey(persistKey)); } catch { /* ignore */ }\r\n }, [persistKey]);\r\n\r\n // Dismissed when either: user opted out of hints globally, or they X'd it\r\n // on this browser. Reopening always works (it just clears the browser flag\r\n // for this session — global pref stays as-is).\r\n const dismissed = !showHints || browserDismissed;\r\n\r\n return { dismissed, onDismiss, onReopen, isLoading };\r\n}\r\n","// =============================================================================\r\n// ErrorBoundary — generic render-time crash guard.\r\n//\r\n// Purpose\r\n// -------\r\n// Host apps wired into the records-admin shell render arbitrary editor,\r\n// card, row, and preview content. A bad record, a missing field, or a\r\n// thrown exception in any of those host-supplied renderers used to take\r\n// down the entire admin app with a white screen. This boundary contains\r\n// the blast radius to the affected slot and shows a friendly \"couldn't\r\n// render\" panel with a Retry button.\r\n//\r\n// Notes\r\n// -----\r\n// * Implemented as a class (the only API React exposes for error\r\n// boundaries). Functional components cannot replace this.\r\n// * `resetKeys` mirrors react-error-boundary's API — when any key in the\r\n// array changes between renders, the boundary clears its error and\r\n// re-renders children. Use it to auto-recover when the user navigates\r\n// to a different record.\r\n// * `fallback` may be a React node or a render function receiving the\r\n// error + a `reset` callback. Defaults to a small themed card that\r\n// matches the records-admin `.ra-empty` aesthetic but degrades\r\n// gracefully when those tokens aren't loaded.\r\n// =============================================================================\r\nimport { Component, type ErrorInfo, type ReactNode } from 'react';\r\n\r\nexport interface ErrorBoundaryProps {\r\n children: ReactNode;\r\n /**\r\n * Optional label used in the default fallback message — e.g.\r\n * `label=\"editor\"` renders \"This editor couldn't be rendered.\"\r\n */\r\n label?: string;\r\n /**\r\n * Custom fallback. Either a node or a render function. When using the\r\n * function form, call `reset()` to clear the error and remount children.\r\n */\r\n fallback?: ReactNode | ((info: { error: Error; reset: () => void }) => ReactNode);\r\n /**\r\n * Fires when the boundary catches. Use to forward to telemetry.\r\n */\r\n onError?: (error: Error, info: ErrorInfo) => void;\r\n /**\r\n * When any value in this array changes (shallow compare), the boundary\r\n * clears its error state. Use to auto-recover on navigation.\r\n */\r\n resetKeys?: ReadonlyArray<unknown>;\r\n}\r\n\r\ninterface State {\r\n error: Error | null;\r\n}\r\n\r\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, State> {\r\n state: State = { error: null };\r\n\r\n static getDerivedStateFromError(error: Error): State {\r\n return { error };\r\n }\r\n\r\n componentDidCatch(error: Error, info: ErrorInfo): void {\r\n // Always log — silent failures in admin tooling are worse than noisy\r\n // ones. Hosts can mute via `onError` if they want.\r\n // eslint-disable-next-line no-console\r\n console.error(\r\n `[smartlinks-ui] ErrorBoundary${this.props.label ? ` (${this.props.label})` : ''} caught:`,\r\n error,\r\n info?.componentStack,\r\n );\r\n this.props.onError?.(error, info);\r\n }\r\n\r\n componentDidUpdate(prev: ErrorBoundaryProps): void {\r\n if (!this.state.error) return;\r\n const cur = this.props.resetKeys;\r\n const old = prev.resetKeys;\r\n if (!cur || !old) return;\r\n if (cur.length !== old.length) {\r\n this.reset();\r\n return;\r\n }\r\n for (let i = 0; i < cur.length; i++) {\r\n if (!Object.is(cur[i], old[i])) {\r\n this.reset();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n reset = (): void => {\r\n this.setState({ error: null });\r\n };\r\n\r\n render(): ReactNode {\r\n const { error } = this.state;\r\n if (!error) return this.props.children;\r\n const { fallback, label } = this.props;\r\n if (typeof fallback === 'function') {\r\n return fallback({ error, reset: this.reset });\r\n }\r\n if (fallback !== undefined) return fallback;\r\n return <DefaultFallback error={error} reset={this.reset} label={label} />;\r\n }\r\n}\r\n\r\ninterface DefaultFallbackProps {\r\n error: Error;\r\n reset: () => void;\r\n label?: string;\r\n}\r\n\r\nconst DefaultFallback = ({ error, reset, label }: DefaultFallbackProps) => {\r\n const what = label ? `This ${label}` : 'This view';\r\n return (\r\n <div\r\n role=\"alert\"\r\n className=\"ra-empty\"\r\n style={{\r\n margin: 12,\r\n padding: 16,\r\n border: '1px solid hsl(var(--ra-border, 0 0% 90%))',\r\n borderRadius: 8,\r\n background: 'hsl(var(--ra-surface, 0 0% 100%))',\r\n color: 'hsl(var(--ra-text, 0 0% 10%))',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n gap: 8,\r\n textAlign: 'center',\r\n }}\r\n >\r\n <div\r\n className=\"ra-empty-icon\"\r\n style={{\r\n width: 36, height: 36, borderRadius: 9999,\r\n background: 'hsl(var(--ra-danger, 0 70% 50%) / 0.10)',\r\n color: 'hsl(var(--ra-danger, 0 70% 50%))',\r\n display: 'inline-flex', alignItems: 'center', justifyContent: 'center',\r\n fontWeight: 700, fontSize: 18,\r\n }}\r\n aria-hidden=\"true\"\r\n >\r\n !\r\n </div>\r\n <h3 className=\"ra-empty-title\" style={{ margin: 0, fontSize: 14, fontWeight: 600 }}>\r\n {what} couldn't be rendered\r\n </h3>\r\n <p\r\n className=\"ra-empty-body\"\r\n style={{\r\n margin: 0,\r\n fontSize: 12,\r\n color: 'hsl(var(--ra-muted-text, 0 0% 40%))',\r\n maxWidth: 520,\r\n wordBreak: 'break-word',\r\n }}\r\n >\r\n {error?.message || 'An unexpected error occurred while rendering this view.'}\r\n </p>\r\n <button\r\n type=\"button\"\r\n onClick={reset}\r\n className=\"ra-btn\"\r\n style={{\r\n marginTop: 4,\r\n padding: '4px 10px',\r\n fontSize: 12,\r\n borderRadius: 6,\r\n border: '1px solid hsl(var(--ra-border, 0 0% 80%))',\r\n background: 'hsl(var(--ra-surface, 0 0% 100%))',\r\n cursor: 'pointer',\r\n }}\r\n >\r\n Try again\r\n </button>\r\n </div>\r\n );\r\n};"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AssetPicker, useAppRegistry, useAssets } from '../../chunk-
|
|
1
|
+
export { AssetPicker, useAppRegistry, useAssets } from '../../chunk-I3T36FSI.js';
|
|
2
2
|
import '../../chunk-OLYC54YT.js';
|
|
3
3
|
import '../../chunk-5UQQYXCX.js';
|
|
4
4
|
import '../../chunk-L7FQ52F5.js';
|
|
@@ -6,6 +6,7 @@ import { LucideIcon } from 'lucide-react';
|
|
|
6
6
|
import * as _tanstack_query_core from '@tanstack/query-core';
|
|
7
7
|
import * as _proveanything_smartlinks from '@proveanything/smartlinks';
|
|
8
8
|
import { InfiniteData } from '@tanstack/react-query';
|
|
9
|
+
export { E as ErrorBoundary, a as ErrorBoundaryProps } from '../../ErrorBoundary-J9iKgF_H.js';
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Where a record is anchored in the inheritance chain.
|
|
@@ -2035,6 +2036,18 @@ declare const listRecords: (ctx: RecordsCtx, params?: {
|
|
|
2035
2036
|
limit?: number;
|
|
2036
2037
|
offset?: number;
|
|
2037
2038
|
sort?: string;
|
|
2039
|
+
/**
|
|
2040
|
+
* Include records past their `expiresAt`. Defaults to `true` — the admin
|
|
2041
|
+
* shell needs to see expired records so operators can review, extend or
|
|
2042
|
+
* delete them. Pass `false` on public-facing surfaces that should only
|
|
2043
|
+
* see currently-live records.
|
|
2044
|
+
*/
|
|
2045
|
+
includeExpired?: boolean;
|
|
2046
|
+
/**
|
|
2047
|
+
* Include records whose `startsAt` is in the future. Defaults to `true`
|
|
2048
|
+
* for the same admin-surface reason as `includeExpired`.
|
|
2049
|
+
*/
|
|
2050
|
+
includeScheduled?: boolean;
|
|
2038
2051
|
}) => Promise<{
|
|
2039
2052
|
data: AppRecord[];
|
|
2040
2053
|
total: number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { parsedRefToTarget, parsedRefToScope, matchRecords, scopesEqual, getRecordById, listRecords, upsertRecord, updateRecord, createRecord, removeRecord } from '../../chunk-
|
|
2
|
-
export { bulkDelete, bulkUpsert, createRecord, getRecordById, listRecords, matchRecords, parsedRefToScope, parsedRefToTarget, removeRecord, restoreRecord, scopesEqual, upsertRecord } from '../../chunk-
|
|
3
|
-
import { useIntroState, AdminPageHeader } from '../../chunk-
|
|
1
|
+
import { parsedRefToTarget, parsedRefToScope, matchRecords, scopesEqual, getRecordById, listRecords, upsertRecord, updateRecord, createRecord, removeRecord } from '../../chunk-W5ZEH3RT.js';
|
|
2
|
+
export { bulkDelete, bulkUpsert, createRecord, getRecordById, listRecords, matchRecords, parsedRefToScope, parsedRefToTarget, removeRecord, restoreRecord, scopesEqual, upsertRecord } from '../../chunk-W5ZEH3RT.js';
|
|
3
|
+
import { useIntroState, ErrorBoundary, AdminPageHeader } from '../../chunk-XASZS7EA.js';
|
|
4
|
+
export { ErrorBoundary } from '../../chunk-XASZS7EA.js';
|
|
4
5
|
import { FacetRuleEditor } from '../../chunk-WVCNIX7N.js';
|
|
5
6
|
import { useFacets } from '../../chunk-DH5HG5DW.js';
|
|
6
7
|
import { assertComponentStylesLoaded } from '../../chunk-OLYC54YT.js';
|
|
@@ -712,7 +713,12 @@ var useProductSubRecords = (args) => {
|
|
|
712
713
|
{
|
|
713
714
|
...recordType ? { recordType } : {},
|
|
714
715
|
limit,
|
|
715
|
-
offset
|
|
716
|
+
offset,
|
|
717
|
+
// Admin discovery: include expired + scheduled so the rail
|
|
718
|
+
// exposes every variant/batch that has *ever* held a record,
|
|
719
|
+
// matching the rest of the admin shell's list semantics.
|
|
720
|
+
includeExpired: true,
|
|
721
|
+
includeScheduled: true
|
|
716
722
|
},
|
|
717
723
|
true
|
|
718
724
|
).catch(() => null);
|
|
@@ -2654,7 +2660,7 @@ function useShellNavigation(args) {
|
|
|
2654
2660
|
}
|
|
2655
2661
|
}
|
|
2656
2662
|
try {
|
|
2657
|
-
const { removeRecord: removeRecord2 } = await import('../../records-
|
|
2663
|
+
const { removeRecord: removeRecord2 } = await import('../../records-GPSKUNST.js');
|
|
2658
2664
|
await removeRecord2(ctx, itemId);
|
|
2659
2665
|
onTelemetry?.({ type: "item.delete", recordType, scopeRef: baseScopeRef, itemId });
|
|
2660
2666
|
if (selectedItemId === itemId) setSelectedItemId(null);
|
|
@@ -4401,6 +4407,7 @@ var DefaultRecordRow = ({ record, ctx, compact = false }) => {
|
|
|
4401
4407
|
}
|
|
4402
4408
|
);
|
|
4403
4409
|
};
|
|
4410
|
+
var RowGuard = ({ recordId, children }) => /* @__PURE__ */ jsx(ErrorBoundary, { label: "row", resetKeys: [recordId], children });
|
|
4404
4411
|
var RecordList = ({
|
|
4405
4412
|
items,
|
|
4406
4413
|
selectedId,
|
|
@@ -4500,7 +4507,7 @@ var RecordList = ({
|
|
|
4500
4507
|
const historyCount = history?.length ?? 0;
|
|
4501
4508
|
const ctxWithHistory = historyCount > 0 && sKey ? { ...ctx, historyCount, historyExpanded: expanded, onToggleHistory: () => toggleSlot(sKey) } : ctx;
|
|
4502
4509
|
return /* @__PURE__ */ jsxs("li", { children: [
|
|
4503
|
-
renderListRow ? renderListRow(item, ctxWithHistory) : /* @__PURE__ */ jsx(DefaultRecordRow, { record: item, ctx: ctxWithHistory, compact }),
|
|
4510
|
+
renderListRow ? /* @__PURE__ */ jsx(RowGuard, { recordId: item.id ?? key, children: renderListRow(item, ctxWithHistory) }) : /* @__PURE__ */ jsx(DefaultRecordRow, { record: item, ctx: ctxWithHistory, compact }),
|
|
4504
4511
|
history && history.length > 0 ? /* @__PURE__ */ jsx("div", { className: "ra-history-block", children: expanded ? /* @__PURE__ */ jsx("ul", { className: "ra-history-rows", "aria-label": "Archived records", children: history.map((h, hIdx) => {
|
|
4505
4512
|
const hCtx = buildCtx(h, groupFacetKeys);
|
|
4506
4513
|
const hKey = h.id ?? `hist:${idx}:${hIdx}`;
|
|
@@ -4511,7 +4518,7 @@ var RecordList = ({
|
|
|
4511
4518
|
{ label: h.lifecycleStatus ?? "archived", tone: "warning" }
|
|
4512
4519
|
]
|
|
4513
4520
|
};
|
|
4514
|
-
return /* @__PURE__ */ jsx("li", { className: "ra-history-row", "data-history": "true", children: renderListRow ? renderListRow(badged, hCtx) : /* @__PURE__ */ jsx(DefaultRecordRow, { record: badged, ctx: hCtx, compact }) }, hKey);
|
|
4521
|
+
return /* @__PURE__ */ jsx("li", { className: "ra-history-row", "data-history": "true", children: renderListRow ? /* @__PURE__ */ jsx(RowGuard, { recordId: hKey, children: renderListRow(badged, hCtx) }) : /* @__PURE__ */ jsx(DefaultRecordRow, { record: badged, ctx: hCtx, compact }) }, hKey);
|
|
4515
4522
|
}) }) : null }) : null
|
|
4516
4523
|
] }, key);
|
|
4517
4524
|
}) });
|
|
@@ -7111,7 +7118,7 @@ function DefaultItemCards({
|
|
|
7111
7118
|
onClick: open,
|
|
7112
7119
|
className: "ra-item-card-wrap",
|
|
7113
7120
|
"data-selected": slotCtx.selected,
|
|
7114
|
-
children: renderCard(item, slotCtx)
|
|
7121
|
+
children: /* @__PURE__ */ jsx(ErrorBoundary, { label: "card", resetKeys: [id], children: renderCard(item, slotCtx) })
|
|
7115
7122
|
},
|
|
7116
7123
|
key
|
|
7117
7124
|
);
|
|
@@ -7303,7 +7310,9 @@ function ItemListView({
|
|
|
7303
7310
|
});
|
|
7304
7311
|
};
|
|
7305
7312
|
const renderBody = (rows) => {
|
|
7306
|
-
if (renderItemList)
|
|
7313
|
+
if (renderItemList) {
|
|
7314
|
+
return /* @__PURE__ */ jsx(ErrorBoundary, { label: "list", resetKeys: [rows.length, guardedCtx.selectedId], children: renderItemList(rows, guardedCtx) });
|
|
7315
|
+
}
|
|
7307
7316
|
if (view === "table") {
|
|
7308
7317
|
return /* @__PURE__ */ jsx(
|
|
7309
7318
|
DefaultItemTable,
|
|
@@ -7425,7 +7434,7 @@ function ItemListView({
|
|
|
7425
7434
|
} else if (error) {
|
|
7426
7435
|
body = /* @__PURE__ */ jsx(ErrorState, { error });
|
|
7427
7436
|
} else if (items.length === 0) {
|
|
7428
|
-
body = renderItemEmpty ? renderItemEmpty(ctx) : /* @__PURE__ */ jsx(
|
|
7437
|
+
body = renderItemEmpty ? /* @__PURE__ */ jsx(ErrorBoundary, { label: "empty state", children: renderItemEmpty(ctx) }) : /* @__PURE__ */ jsx(
|
|
7429
7438
|
EmptyState,
|
|
7430
7439
|
{
|
|
7431
7440
|
title: i18n.noItemsTitle,
|
|
@@ -9212,7 +9221,7 @@ var EditorPoolBody = ({
|
|
|
9212
9221
|
}) => {
|
|
9213
9222
|
const ctx = useEditorSlotContext(editorId);
|
|
9214
9223
|
if (!ctx) return null;
|
|
9215
|
-
return /* @__PURE__ */ jsx(CallbackRenderer, { render: renderEditor, args: ctx });
|
|
9224
|
+
return /* @__PURE__ */ jsx(ErrorBoundary, { label: "editor", resetKeys: [editorId], children: /* @__PURE__ */ jsx(CallbackRenderer, { render: renderEditor, args: ctx }) });
|
|
9216
9225
|
};
|
|
9217
9226
|
var CallbackRenderer = ({
|
|
9218
9227
|
render,
|
|
@@ -10441,13 +10450,13 @@ function RecordsAdminShellInner(props) {
|
|
|
10441
10450
|
renderEditor
|
|
10442
10451
|
}
|
|
10443
10452
|
),
|
|
10444
|
-
fallback: /* @__PURE__ */ jsx(
|
|
10453
|
+
fallback: /* @__PURE__ */ jsx(ErrorBoundary, { label: "editor", resetKeys: [editorCtx?.recordId], children: /* @__PURE__ */ jsx(
|
|
10445
10454
|
CallbackRenderer,
|
|
10446
10455
|
{
|
|
10447
10456
|
render: renderEditor,
|
|
10448
10457
|
args: editorCtx
|
|
10449
10458
|
}
|
|
10450
|
-
)
|
|
10459
|
+
) })
|
|
10451
10460
|
}
|
|
10452
10461
|
)
|
|
10453
10462
|
}
|