@danxbot/ui 15.0.0 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +15604 -14694
- package/dist/index.js.map +1 -1
- package/dist/types/components/ImageUploadField.d.ts +38 -0
- package/dist/types/components/PasswordInput.d.ts +7 -0
- package/dist/types/components/PasswordRequirements.d.ts +11 -0
- package/dist/types/components/auth/AcceptInvitationCard.d.ts +28 -0
- package/dist/types/components/auth/AuthLayout.d.ts +12 -0
- package/dist/types/components/auth/index.d.ts +2 -0
- package/dist/types/components/rbac/ApiTokensPanel.d.ts +26 -0
- package/dist/types/components/rbac/ChangePasswordForm.d.ts +11 -0
- package/dist/types/components/rbac/InvitationsList.d.ts +26 -0
- package/dist/types/components/rbac/InviteMembersDialog.d.ts +21 -0
- package/dist/types/components/rbac/ProfileForm.d.ts +25 -0
- package/dist/types/components/rbac/ProfilePage.d.ts +11 -1
- package/dist/types/components/rbac/SessionsList.d.ts +26 -0
- package/dist/types/components/rbac/index.d.ts +6 -0
- package/dist/types/index.d.ts +5 -1
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ReactNode, type Ref } from "react";
|
|
2
|
+
export type ImageUploadFieldShape = "circle" | "square";
|
|
3
|
+
export type ImageUploadFieldSize = "sm" | "md" | "lg" | "xl";
|
|
4
|
+
export interface ImageUploadFieldProps {
|
|
5
|
+
/** The current image URL. `undefined`/`null` means nothing is set yet. */
|
|
6
|
+
value?: string | null;
|
|
7
|
+
/**
|
|
8
|
+
* Fired once a pick resolves — either a successful upload (the URL
|
|
9
|
+
* `onUpload` returned) or a remove (`null`). This is the only way `value`
|
|
10
|
+
* ever changes; the component holds no persistent state of its own.
|
|
11
|
+
*/
|
|
12
|
+
onChange?: (url: string | null) => void;
|
|
13
|
+
/** Uploads the picked file and resolves with its stored URL. Rejecting
|
|
14
|
+
* surfaces the rejection's `message` (or the rejection itself, stringified)
|
|
15
|
+
* as this field's error. */
|
|
16
|
+
onUpload: (file: File) => Promise<string>;
|
|
17
|
+
shape?: ImageUploadFieldShape;
|
|
18
|
+
size?: ImageUploadFieldSize;
|
|
19
|
+
/** Hides the remove control even when a value is set — for a slot that must
|
|
20
|
+
* always hold *something* (e.g. a required team logo with a seeded
|
|
21
|
+
* default). Default `true`. */
|
|
22
|
+
removable?: boolean;
|
|
23
|
+
accept?: string;
|
|
24
|
+
/** Bytes. Forwarded to `FileUpload`'s own limit + rejection message. */
|
|
25
|
+
maxSize?: number;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
/** Rendered above the preview. */
|
|
28
|
+
label?: ReactNode;
|
|
29
|
+
/** Rendered under the preview, when there is no error to show instead. */
|
|
30
|
+
description?: ReactNode;
|
|
31
|
+
/** Accessible name for the replace/pick control — required since the
|
|
32
|
+
* control the preview state renders is icon-only. */
|
|
33
|
+
uploadLabel?: string;
|
|
34
|
+
removeLabel?: string;
|
|
35
|
+
className?: string;
|
|
36
|
+
ref?: Ref<HTMLDivElement>;
|
|
37
|
+
}
|
|
38
|
+
export declare function ImageUploadField({ value, onChange, onUpload, shape, size, removable, accept, maxSize, disabled, label, description, uploadLabel, removeLabel, className, ref, }: ImageUploadFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type InputProps } from "./Input";
|
|
2
|
+
export interface PasswordInputProps extends Omit<InputProps, "type" | "trailing"> {
|
|
3
|
+
/** Hides the show/hide toggle entirely — for a field where the operator
|
|
4
|
+
* should never be able to reveal what they typed (rare; default `true`). */
|
|
5
|
+
revealable?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function PasswordInput({ revealable, autoComplete, ...props }: PasswordInputProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Ref } from "react";
|
|
2
|
+
export interface PasswordRequirementRule {
|
|
3
|
+
label: string;
|
|
4
|
+
met: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface PasswordRequirementsProps {
|
|
7
|
+
rules: PasswordRequirementRule[];
|
|
8
|
+
className?: string;
|
|
9
|
+
ref?: Ref<HTMLUListElement>;
|
|
10
|
+
}
|
|
11
|
+
export declare function PasswordRequirements({ rules, className, ref }: PasswordRequirementsProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface AcceptInvitationCardProps {
|
|
2
|
+
teamName: string;
|
|
3
|
+
teamLogoUrl?: string;
|
|
4
|
+
inviterName: string;
|
|
5
|
+
roleLabel: string;
|
|
6
|
+
email: string;
|
|
7
|
+
/** True when an account already exists for `email`, server-reported. */
|
|
8
|
+
accountExists: boolean;
|
|
9
|
+
/** Set when the CURRENT VIEWER is already signed in with a session whose
|
|
10
|
+
* email matches `email` — consumer-computed (this component has no notion
|
|
11
|
+
* of sessions). Renders a one-click join instead of a form. */
|
|
12
|
+
signedInAsMatchingUser?: {
|
|
13
|
+
name: string;
|
|
14
|
+
} | null;
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
/** A server-side error surfaced after a failed submit (username taken, expired token, ...). */
|
|
17
|
+
error?: string;
|
|
18
|
+
onCreateAccount: (input: {
|
|
19
|
+
name: string;
|
|
20
|
+
username: string;
|
|
21
|
+
password: string;
|
|
22
|
+
}) => void;
|
|
23
|
+
onJoinAsSignedInUser?: () => void;
|
|
24
|
+
/** Offered when `accountExists` is true but the viewer isn't signed in as that email. */
|
|
25
|
+
onSignInInstead?: () => void;
|
|
26
|
+
className?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function AcceptInvitationCard({ teamName, teamLogoUrl, inviterName, roleLabel, email, accountExists, signedInAsMatchingUser, loading, error, onCreateAccount, onJoinAsSignedInUser, onSignInInstead, className, }: AcceptInvitationCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface AuthLayoutProps {
|
|
3
|
+
/** The team/product mark — an `<img>`, an SVG, or a text wordmark. Omit for no logo slot at all. */
|
|
4
|
+
logo?: ReactNode;
|
|
5
|
+
title: ReactNode;
|
|
6
|
+
subtitle?: ReactNode;
|
|
7
|
+
/** A link or note below the card ("Don't have an account? Ask your team admin.", "Back to sign in"). */
|
|
8
|
+
footer?: ReactNode;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function AuthLayout({ logo, title, subtitle, footer, children, className }: AuthLayoutProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface ApiToken {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
/** ISO instant. */
|
|
6
|
+
createdAt: string;
|
|
7
|
+
/** ISO instant, or `null`/omitted if it has never been used. */
|
|
8
|
+
lastUsedAt?: string | null;
|
|
9
|
+
/** ISO instant, or `null`/omitted for a token with no expiry. */
|
|
10
|
+
expiresAt?: string | null;
|
|
11
|
+
}
|
|
12
|
+
export interface ApiTokensPanelProps {
|
|
13
|
+
tokens: ApiToken[];
|
|
14
|
+
onCreate: (input: {
|
|
15
|
+
name: string;
|
|
16
|
+
expiresInDays?: number | null;
|
|
17
|
+
}) => Promise<{
|
|
18
|
+
token: string;
|
|
19
|
+
}>;
|
|
20
|
+
onRevoke: (id: number) => Promise<void>;
|
|
21
|
+
/** The id of a token currently mid-revoke. Disables just that row. */
|
|
22
|
+
busyId?: number | null;
|
|
23
|
+
emptyState?: ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function ApiTokensPanel({ tokens, onCreate, onRevoke, busyId, emptyState, className }: ApiTokensPanelProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type PasswordRequirementRule } from "../PasswordRequirements";
|
|
2
|
+
export interface ChangePasswordFormProps {
|
|
3
|
+
/** Pure — recomputed against the current draft of the new password on every
|
|
4
|
+
* render. See the module header for why this is a function rather than a
|
|
5
|
+
* precomputed `rules[]`. */
|
|
6
|
+
passwordRules: (nextPassword: string) => PasswordRequirementRule[];
|
|
7
|
+
onSubmit: (current: string, next: string) => Promise<void>;
|
|
8
|
+
submitLabel?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ChangePasswordForm({ passwordRules, onSubmit, submitLabel, className, }: ChangePasswordFormProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type InvitationStatus = "pending" | "accepted" | "revoked" | "expired";
|
|
2
|
+
export interface InvitationsListItem {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
roleLabel: string;
|
|
6
|
+
status: InvitationStatus;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
invitedByName?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface InvitationsListProps {
|
|
11
|
+
invitations: InvitationsListItem[];
|
|
12
|
+
onResend: (id: string) => void;
|
|
13
|
+
onRevoke: (id: string) => void;
|
|
14
|
+
/**
|
|
15
|
+
* Copies the invite link for manual sharing (card architecture: "the admin
|
|
16
|
+
* UI can also copy the invite link"). Omit to hide the copy control
|
|
17
|
+
* entirely — a consumer whose invite creation response never surfaced a raw
|
|
18
|
+
* token (e.g. a page reload after create) has nothing to copy.
|
|
19
|
+
*/
|
|
20
|
+
onCopyLink?: (id: string) => void;
|
|
21
|
+
/** The id of a row currently mid-mutation (resend or revoke). */
|
|
22
|
+
busyId?: string | null;
|
|
23
|
+
emptyState?: React.ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function InvitationsList({ invitations, onResend, onRevoke, onCopyLink, busyId, emptyState, className, }: InvitationsListProps): string | number | bigint | boolean | import("react").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Role } from "./types";
|
|
2
|
+
export interface InviteMembersDialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onOpenChange: (open: boolean) => void;
|
|
5
|
+
/** The roles an invitee may be given — the role Select's options. */
|
|
6
|
+
assignableRoles: Role[];
|
|
7
|
+
/** Disables the form and shows a busy submit button while the invite request is in flight. */
|
|
8
|
+
loading?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* A server-side error surfaced after a failed submit (e.g. "invite_exists"
|
|
11
|
+
* for one address) — rendered as a `Callout`. The dialog has no notion of
|
|
12
|
+
* WHY a send failed; the consumer's own error copy goes here verbatim.
|
|
13
|
+
*/
|
|
14
|
+
error?: string;
|
|
15
|
+
onSubmit: (input: {
|
|
16
|
+
emails: string[];
|
|
17
|
+
roleId: string;
|
|
18
|
+
}) => void;
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function InviteMembersDialog({ open, onOpenChange, assignableRoles, loading, error, onSubmit, className, }: InviteMembersDialogProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ProfileFormAccount {
|
|
2
|
+
name: string;
|
|
3
|
+
/** Omit entirely for a consumer whose account model has no separate
|
|
4
|
+
* username concept — the field simply does not render (see `types.ts`'s
|
|
5
|
+
* own `User.username` doc for the same optional-field convention). */
|
|
6
|
+
username?: string;
|
|
7
|
+
email: string;
|
|
8
|
+
avatarUrl?: string | null;
|
|
9
|
+
}
|
|
10
|
+
export interface ProfileFormSaveInput {
|
|
11
|
+
name: string;
|
|
12
|
+
username?: string;
|
|
13
|
+
email: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ProfileFormProps {
|
|
16
|
+
account: ProfileFormAccount;
|
|
17
|
+
onSave: (input: ProfileFormSaveInput) => Promise<void>;
|
|
18
|
+
onUploadAvatar: (file: File) => Promise<string>;
|
|
19
|
+
/** Fired the moment a new avatar finishes uploading (or is removed) — see
|
|
20
|
+
* the module header for why the avatar has no separate Save step. */
|
|
21
|
+
onAvatarChange?: (avatarUrl: string | null) => void;
|
|
22
|
+
saveLabel?: string;
|
|
23
|
+
className?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function ProfileForm({ account, onSave, onUploadAvatar, onAvatarChange, saveLabel, className, }: ProfileFormProps): import("react").JSX.Element;
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import { type ProfileFormAccount, type ProfileFormSaveInput } from "./ProfileForm";
|
|
2
|
+
export interface ProfilePageProps {
|
|
3
|
+
/** The identity fields to edit. Omit to keep the original read-only (but
|
|
4
|
+
* still locally-editable) `actualUser` display. */
|
|
5
|
+
account?: ProfileFormAccount;
|
|
6
|
+
onSave?: (input: ProfileFormSaveInput) => Promise<void>;
|
|
7
|
+
onUploadAvatar?: (file: File) => Promise<string>;
|
|
8
|
+
onAvatarChange?: (avatarUrl: string | null) => void;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ProfilePage({ account, onSave, onUploadAvatar, onAvatarChange, className }: ProfilePageProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface Session {
|
|
3
|
+
id: number;
|
|
4
|
+
/** A human label for the session — "Chrome on macOS", "iPhone app", whatever
|
|
5
|
+
* the consumer's own backend derives from the user agent. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** ISO instant. */
|
|
8
|
+
createdAt: string;
|
|
9
|
+
/** ISO instant. */
|
|
10
|
+
lastUsedAt: string;
|
|
11
|
+
/** ISO instant, or `null`/omitted for a session with no expiry. */
|
|
12
|
+
expiresAt?: string | null;
|
|
13
|
+
userAgent?: string;
|
|
14
|
+
ip?: string;
|
|
15
|
+
/** True for exactly one row — the session this UI is currently running in. */
|
|
16
|
+
current: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionsListProps {
|
|
19
|
+
sessions: Session[];
|
|
20
|
+
onRevoke: (id: number) => Promise<void>;
|
|
21
|
+
/** The id of a session currently mid-revoke. Disables just that row. */
|
|
22
|
+
busyId?: number | null;
|
|
23
|
+
emptyState?: ReactNode;
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function SessionsList({ sessions, onRevoke, busyId, emptyState, className }: SessionsListProps): string | number | bigint | boolean | import("react").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined>;
|
|
@@ -6,6 +6,12 @@ export * from "./TeamSwitcher";
|
|
|
6
6
|
export * from "./DevToolsPopover";
|
|
7
7
|
export * from "./RolePermissionMatrix";
|
|
8
8
|
export * from "./RoleEditorDialog";
|
|
9
|
+
export * from "./ProfileForm";
|
|
9
10
|
export * from "./ProfilePage";
|
|
10
11
|
export * from "./RolesPermissionsPage";
|
|
11
12
|
export * from "./MembersPanel";
|
|
13
|
+
export * from "./ChangePasswordForm";
|
|
14
|
+
export * from "./SessionsList";
|
|
15
|
+
export * from "./ApiTokensPanel";
|
|
16
|
+
export * from "./InvitationsList";
|
|
17
|
+
export * from "./InviteMembersDialog";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export { InlineMarkdownEdit, type InlineMarkdownEditProps } from "./components/I
|
|
|
28
28
|
export type { EditActivation } from "./components/edit/activation";
|
|
29
29
|
export type { EditCommit, EditOutcome, EditRefusal } from "./components/edit/outcome";
|
|
30
30
|
export { SecretField, type SecretFieldProps, type SecretValue } from "./components/SecretField";
|
|
31
|
+
export { PasswordInput, type PasswordInputProps } from "./components/PasswordInput";
|
|
32
|
+
export { PasswordRequirements, type PasswordRequirementsProps, type PasswordRequirementRule, } from "./components/PasswordRequirements";
|
|
31
33
|
export { SettingRow, SettingGroup, type SettingRowProps, type SettingGroupProps, type SettingRowControlRenderProps, } from "./components/SettingRow";
|
|
32
34
|
export { DescriptionList, DescriptionListItem, type DescriptionListProps, type DescriptionListItemProps, type DescriptionListEntry, } from "./components/DescriptionList";
|
|
33
35
|
export { ConnectionCard, type ConnectionCardProps, type ConnectionHealth, } from "./components/ConnectionCard";
|
|
@@ -40,6 +42,7 @@ export { Menu, MenuItem, MenuGroup, MenuRadioGroup, MenuRadioItem, MenuSeparator
|
|
|
40
42
|
export { ThemeMenu, type ThemeMenuProps } from "./components/ThemeMenu";
|
|
41
43
|
export { AppShell, type AppShellProps, type NavItem, type NavSection, } from "./components/AppShell";
|
|
42
44
|
export { FileUpload, type FileUploadProps, type UploadFile } from "./components/FileUpload";
|
|
45
|
+
export { ImageUploadField, type ImageUploadFieldProps, type ImageUploadFieldShape, type ImageUploadFieldSize, } from "./components/ImageUploadField";
|
|
43
46
|
export { DatePicker, type DatePickerProps, type DateRange } from "./components/DatePicker";
|
|
44
47
|
export { DateCalendar, type DateCalendarProps } from "./components/DateCalendar";
|
|
45
48
|
export { DateField, DateTimeField, type DateFieldProps, type DateTimeFieldProps, } from "./components/DateField";
|
|
@@ -124,7 +127,8 @@ export { cellLabel, eventLabel, formatDateRange, longDate, monthTitle, timeOfDay
|
|
|
124
127
|
export { initialFocusDay, isInMonth, nextDayForKey, useGridNavigation, type GridNavigation, type GridNavigationOptions, } from "./components/calendar/use-grid-navigation";
|
|
125
128
|
export { AmbiguousTimeError, addDays, addDuration, addMonths, atMidnight, atTime, comparePlainDate, dayFraction, dayLengthMs, dayOfWeek, daysBetween, daysInMonth, endOfMonth, hoursInDay, instantAtFraction, instantToPlainDate, instantToPlainDateTime, isSameDate, isoDateString, isoDateTimeString, monthGridDays, nextDay, offsetAt, parsePlainDate, plainDateTimeToInstant, relativeAge, startOfDay, startOfMonth, startOfWeek, weekDays, type CalendarDuration, type Disambiguation, type Instant, type PlainDate, type PlainDateTime, type TimeZone, } from "./lib/time";
|
|
126
129
|
export { allDayBandSegment, dayKey, daySlots, isAllDay, packBand, packLanes, snapFractionToInstant, timeSegments, timedBandSegment, type AllDayEvent, type BandInput, type BandOptions, type BandPlacement, type BandResult, type BandSegment, type CalendarEvent, type CalendarEventId, type CalendarView, type DaySlot, type DragKind, type EventDraft, type EventPalette, type LaneInput, type LaneOptions, type LanePlacement, type PaletteEntry, type TimeSegment, type TimedEvent, type VisibleRange, } from "./lib/calendar";
|
|
127
|
-
export { RBACProvider, useRBAC, Can, useHasPermission, AccountMenu, TeamSwitcher, DevToolsPopover, RolePermissionMatrix, RoleEditorDialog, ProfilePage, RolesPermissionsPage, MembersPanel, type RBACProviderProps, type RBACHookResult, type CanProps, type AccountMenuProps, type TeamSwitcherProps, type DevToolsPopoverProps, type RolePermissionMatrixProps, type RoleEditorDialogProps, type RoleEditorDialogSubmitInput, type RolesPermissionsPageProps, type MembersPanelProps, type MembersPanelMember, type Permission, type Role, type User, type Team, type TeamMembership, } from "./components/rbac";
|
|
130
|
+
export { RBACProvider, useRBAC, Can, useHasPermission, AccountMenu, TeamSwitcher, DevToolsPopover, RolePermissionMatrix, RoleEditorDialog, ProfileForm, ProfilePage, RolesPermissionsPage, MembersPanel, ChangePasswordForm, SessionsList, ApiTokensPanel, InvitationsList, InviteMembersDialog, type RBACProviderProps, type RBACHookResult, type CanProps, type AccountMenuProps, type TeamSwitcherProps, type DevToolsPopoverProps, type RolePermissionMatrixProps, type RoleEditorDialogProps, type RoleEditorDialogSubmitInput, type ProfileFormProps, type ProfileFormAccount, type ProfileFormSaveInput, type ProfilePageProps, type RolesPermissionsPageProps, type MembersPanelProps, type MembersPanelMember, type ChangePasswordFormProps, type SessionsListProps, type Session, type ApiTokensPanelProps, type ApiToken, type InvitationsListProps, type InvitationsListItem, type InvitationStatus, type InviteMembersDialogProps, type Permission, type Role, type User, type Team, type TeamMembership, } from "./components/rbac";
|
|
131
|
+
export { AuthLayout, AcceptInvitationCard, type AuthLayoutProps, type AcceptInvitationCardProps, } from "./components/auth";
|
|
128
132
|
export { UseCaseCard, RoadmapItemCard, RoadmapSwimlaneBoard, UseCaseLedgerPage, RoadmapPage, PhaseManager, TrackManager, deriveRoadmapItemStatus, isFullyBuilt, isUnbuilt, trackIds, trackProgress, toneForIndex, CATEGORY_TONES, type Domain, type Phase, type Track, type RoadmapItem, type RoadmapItemStatus, type UseCase, type UseCaseStatus, type UseCaseDecision, type UseCaseCardProps, type RoadmapItemCardProps, type RoadmapSwimlaneBoardProps, type UseCaseLedgerPageProps, type RoadmapPageProps, type PhaseManagerProps, type TrackManagerProps, } from "./components/roadmap";
|
|
129
133
|
export { ProvenanceDisclosure, ProvenanceDetail, ProvenanceBadge, ConfidenceReadout, ConfidenceMeter, ConfidenceBar, provenanceStateLabel, confidenceBand, confidenceScore, scoredConfidence, ratedConfidence, type ProvenanceRecord, type ProvenanceState, type ProvenanceSource, type ProvenanceCheck, type ProvenanceCall, type ProvenanceSignoff, type ConfidenceBand, type ConfidenceScore, type ProvenanceConfidence, type ConfidenceReadoutProps, type ConfidenceBarProps, type ConfidenceBarSize, type ProvenanceDisclosureProps, type ProvenanceDetailProps, type ProvenanceDetailTitleAs, type ProvenanceTriggerBadge, type ProvenanceBadgeProps, type ProvenanceBadgeAppearance, type ConfidenceMeterProps, } from "./components/provenance";
|
|
130
134
|
export { confidenceLevel, CONFIDENCE_LEVEL_LABELS, type ConfidenceLevel } from "./lib/confidence";
|