@itsyouagency/ui 1.46.0 → 1.47.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.
Files changed (63) hide show
  1. package/README.md +93 -0
  2. package/dist/assets/css/design-system.css +3566 -0
  3. package/dist/assets/icons/bell-01.svg +1 -1
  4. package/dist/components/base/Button.d.ts +6 -2
  5. package/dist/components/base/IconButton.d.ts +10 -10
  6. package/dist/components/base/Input.d.ts +2 -3
  7. package/dist/components/base/InputWrapper.d.ts +3 -1
  8. package/dist/components/base/Tabs.d.ts +8 -1
  9. package/dist/components/base/TextArea.d.ts +2 -2
  10. package/dist/components/chat/ChatConversationList.d.ts +11 -0
  11. package/dist/components/chat/ChatCreatePage.d.ts +9 -0
  12. package/dist/components/chat/ChatGroupDialog.d.ts +1 -0
  13. package/dist/components/chat/ChatGroupForm.d.ts +14 -0
  14. package/dist/components/chat/ChatRequestPicker.d.ts +10 -0
  15. package/dist/components/chat/ChatThread.d.ts +19 -0
  16. package/dist/components/chat/ChatWorkspace.d.ts +12 -0
  17. package/dist/components/chat/RequestChat.d.ts +7 -0
  18. package/dist/components/chat/api.d.ts +36 -0
  19. package/dist/components/chat/grouping.d.ts +7 -0
  20. package/dist/components/chat/index.d.ts +6 -0
  21. package/dist/components/chat/labels.d.ts +155 -0
  22. package/dist/components/chat/types.d.ts +73 -0
  23. package/dist/components/chat/utils.d.ts +5 -0
  24. package/dist/components/request-files/FileDownloadButton.d.ts +5 -0
  25. package/dist/components/request-files/RequestContracts.d.ts +14 -0
  26. package/dist/components/request-files/RequestFileDialog.d.ts +11 -0
  27. package/dist/components/request-files/RequestResources.d.ts +15 -0
  28. package/dist/components/request-files/api.d.ts +8 -0
  29. package/dist/components/workspace/ActionDialog.d.ts +11 -0
  30. package/dist/components/workspace/ChoiceChips.d.ts +11 -0
  31. package/dist/components/workspace/CommandMenu.d.ts +8 -0
  32. package/dist/components/workspace/ContactDetails.d.ts +25 -0
  33. package/dist/components/workspace/ContractFields.d.ts +23 -0
  34. package/dist/components/workspace/DataRegion.d.ts +19 -0
  35. package/dist/components/workspace/DocumentEditor.d.ts +12 -0
  36. package/dist/components/workspace/DocumentPreview.d.ts +5 -0
  37. package/dist/components/workspace/Feedback.d.ts +27 -0
  38. package/dist/components/workspace/FilterTabs.d.ts +17 -0
  39. package/dist/components/workspace/FormActions.d.ts +6 -0
  40. package/dist/components/workspace/FormField.d.ts +24 -0
  41. package/dist/components/workspace/MetricCard.d.ts +13 -0
  42. package/dist/components/workspace/NotificationMenu.d.ts +8 -0
  43. package/dist/components/workspace/PageHeader.d.ts +9 -0
  44. package/dist/components/workspace/Pagination.d.ts +14 -0
  45. package/dist/components/workspace/Panel.d.ts +12 -0
  46. package/dist/components/workspace/Progress.d.ts +5 -0
  47. package/dist/components/workspace/SearchMultiSelect.d.ts +11 -0
  48. package/dist/components/workspace/SearchSelect.d.ts +24 -0
  49. package/dist/components/workspace/SettingToggle.d.ts +12 -0
  50. package/dist/components/workspace/WorkspaceNav.d.ts +7 -0
  51. package/dist/components/workspace/index.d.ts +27 -0
  52. package/dist/components/workspace/navigation.d.ts +32 -0
  53. package/dist/components/workspace/search.d.ts +10 -0
  54. package/dist/index.d.ts +2 -0
  55. package/dist/index.js +1 -2
  56. package/dist/layouts/index.d.ts +2 -0
  57. package/dist/layouts/workspace.d.ts +29 -0
  58. package/dist/layouts/workspaceAuth.d.ts +13 -0
  59. package/dist/tailwind.workspace.config.d.ts +3 -0
  60. package/dist/tailwind.workspace.config.js +1 -0
  61. package/package.json +5 -3
  62. package/dist/assets/logos/mark.svg +0 -10
  63. package/dist/index.js.LICENSE.txt +0 -40
@@ -0,0 +1,12 @@
1
+ export interface DocumentEditorHandle {
2
+ insertField: (key: string) => void;
3
+ }
4
+ export interface DocumentEditorProps {
5
+ value: string;
6
+ onChange: (html: string) => void;
7
+ label?: string;
8
+ disabled?: boolean;
9
+ }
10
+ /** Rich text authoring with an optional HTML view; never mounts unsanitized markup. */
11
+ declare const DocumentEditor: import("react").ForwardRefExoticComponent<DocumentEditorProps & import("react").RefAttributes<DocumentEditorHandle>>;
12
+ export default DocumentEditor;
@@ -0,0 +1,5 @@
1
+ export default function DocumentPreview({ html, title, className, }: {
2
+ html: string;
3
+ title?: string;
4
+ className?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ import { IconType } from '../base/Icon';
3
+ export type BadgeTone = 'neutral' | 'pending' | 'complete' | 'attention';
4
+ export declare function Badge({ children, tone, dot, className, ...rest }: HTMLAttributes<HTMLSpanElement> & {
5
+ tone?: BadgeTone;
6
+ dot?: boolean;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export declare function Skeleton({ className, ...rest }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
9
+ export declare function EmptyState({ title, description, children, action, icon, loading, loadingLabel, className, }: {
10
+ title?: ReactNode;
11
+ description?: ReactNode;
12
+ children?: ReactNode;
13
+ action?: ReactNode;
14
+ icon?: IconType;
15
+ loading?: boolean;
16
+ loadingLabel?: string;
17
+ className?: string;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ export declare function InlineNotice({ children, action, className, tone, }: {
20
+ children: ReactNode;
21
+ action?: ReactNode;
22
+ className?: string;
23
+ tone?: 'neutral' | 'error';
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ export declare function WorkspaceLoading({ label, }: {
26
+ label?: string;
27
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ export interface FilterOption<T extends string> {
3
+ value: T;
4
+ label: ReactNode;
5
+ count?: number;
6
+ disabled?: boolean;
7
+ }
8
+ export interface FilterTabsProps<T extends string> {
9
+ label: string;
10
+ value: T;
11
+ options: FilterOption<T>[];
12
+ onChange: (value: T) => void;
13
+ variant?: 'segmented' | 'underline';
14
+ className?: string;
15
+ }
16
+ /** A group of filter buttons, not an ARIA tablist: selection updates data rather than focus. */
17
+ export default function FilterTabs<T extends string>({ label, value, options, onChange, variant, className, }: FilterTabsProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ export default function FormActions({ children, status, sticky, }: {
3
+ children: ReactNode;
4
+ status?: ReactNode;
5
+ sticky?: boolean;
6
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { InputHTMLAttributes, ReactNode, SelectHTMLAttributes } from 'react';
2
+ export declare const inputClass = "ui-input";
3
+ export declare function FormField({ label, hint, error, className, children, }: {
4
+ label: ReactNode;
5
+ hint?: ReactNode;
6
+ error?: ReactNode;
7
+ className?: string;
8
+ children: ReactNode;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export declare const TextInput: import("react").ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>;
11
+ export interface SelectOption {
12
+ id: string | number;
13
+ label: ReactNode;
14
+ }
15
+ export declare const Select: import("react").ForwardRefExoticComponent<SelectHTMLAttributes<HTMLSelectElement> & {
16
+ items: SelectOption[];
17
+ placeholder?: string;
18
+ } & import("react").RefAttributes<HTMLSelectElement>>;
19
+ export declare function FormCard({ id, title, description, children, }: {
20
+ id?: string;
21
+ title: string;
22
+ description?: string;
23
+ children: ReactNode;
24
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ import { IconType } from '../base/Icon';
3
+ export default function MetricCard({ label, value, prefix, description, icon, href, loading, unavailable, linkLabel, }: {
4
+ label: string;
5
+ value: ReactNode;
6
+ prefix?: ReactNode;
7
+ description?: ReactNode;
8
+ icon?: IconType;
9
+ href?: string;
10
+ loading?: boolean;
11
+ unavailable?: boolean;
12
+ linkLabel?: string;
13
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ export interface NotificationMenuProps {
3
+ label?: string;
4
+ unreadCount: number;
5
+ children: (close: () => void) => ReactNode;
6
+ }
7
+ /** Accessible notification surface; each app supplies its feed and actions. */
8
+ export default function NotificationMenu({ label, unreadCount, children, }: NotificationMenuProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ export default function PageHeader({ title, subtitle, actions, onBack, backLabel, eyebrow, }: {
3
+ title: ReactNode;
4
+ subtitle?: ReactNode;
5
+ actions?: ReactNode;
6
+ onBack?: () => void;
7
+ backLabel?: string;
8
+ eyebrow?: string;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ export interface PaginationProps {
2
+ page: number;
3
+ pageSize: number;
4
+ total: number;
5
+ onPageChange: (page: number) => void;
6
+ totalPages?: number;
7
+ disabled?: boolean;
8
+ noun?: string;
9
+ previousLabel?: string;
10
+ nextLabel?: string;
11
+ rangeLabel?: (start: number, end: number, total: number) => string;
12
+ pageLabel?: (page: number, totalPages: number) => string;
13
+ }
14
+ export default function Pagination({ page, pageSize, total, totalPages, onPageChange, disabled, noun, previousLabel, nextLabel, rangeLabel, pageLabel, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface PanelProps extends Omit<HTMLAttributes<HTMLElement>, 'title'> {
3
+ title?: ReactNode;
4
+ description?: ReactNode;
5
+ actions?: ReactNode;
6
+ contentClassName?: string;
7
+ collapsible?: boolean;
8
+ collapseLabel?: string;
9
+ defaultCollapsed?: boolean;
10
+ unpadded?: boolean;
11
+ }
12
+ export default function Panel({ title, description, actions, children, className, contentClassName, collapsible, collapseLabel, defaultCollapsed, unpadded, ...rest }: PanelProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export default function Progress({ value, label, description, }: {
2
+ value: number;
3
+ label: string;
4
+ description?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ export type SearchMultiSelectOption = {
2
+ id: string;
3
+ label: string;
4
+ };
5
+ /** Searchable multi-selection with keyboard navigation and a compact summary. */
6
+ export default function SearchMultiSelect({ label, options, value, onChange, }: {
7
+ label: string;
8
+ options: SearchMultiSelectOption[];
9
+ value: string[];
10
+ onChange: (values: string[]) => void;
11
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { SearchSelectOption } from './search';
2
+ export interface SearchSelectProps {
3
+ options: SearchSelectOption[];
4
+ value?: string | null;
5
+ onChange: (value: string | null) => void;
6
+ onBlur?: () => void;
7
+ label: string;
8
+ name?: string;
9
+ id?: string;
10
+ hint?: string;
11
+ error?: string;
12
+ placeholder?: string;
13
+ emptyMessage?: string;
14
+ noResultsMessage?: string;
15
+ loadingMessage?: string;
16
+ loading?: boolean;
17
+ disabled?: boolean;
18
+ required?: boolean;
19
+ className?: string;
20
+ toggleLabel?: string;
21
+ }
22
+ /** Controlled, keyboard-accessible selector with virtualized results for large lists. */
23
+ declare const SearchSelect: import("react").ForwardRefExoticComponent<SearchSelectProps & import("react").RefAttributes<HTMLInputElement>>;
24
+ export default SearchSelect;
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ export interface SettingToggleProps {
3
+ label: ReactNode;
4
+ description?: ReactNode;
5
+ checked: boolean;
6
+ onChange: (checked: boolean) => void;
7
+ disabled?: boolean;
8
+ busy?: boolean;
9
+ className?: string;
10
+ }
11
+ /** A labelled, keyboard-accessible switch for an immediately saved setting. */
12
+ export default function SettingToggle({ label, description, checked, onChange, disabled, busy, className, }: SettingToggleProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { WorkspaceNav as Navigation } from './navigation';
2
+ export default function WorkspaceNav({ nav, selectedPath, close, label, }: {
3
+ nav: Navigation;
4
+ selectedPath: string;
5
+ close?: () => void;
6
+ label?: string;
7
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,27 @@
1
+ export { default as WorkspaceNav } from './WorkspaceNav';
2
+ export { default as NotificationMenu, type NotificationMenuProps, } from './NotificationMenu';
3
+ export { default as CommandMenu } from './CommandMenu';
4
+ export { default as PageHeader } from './PageHeader';
5
+ export { default as Panel, type PanelProps } from './Panel';
6
+ export { default as FilterTabs, type FilterTabsProps, type FilterOption, } from './FilterTabs';
7
+ export { default as Pagination, type PaginationProps, } from './Pagination';
8
+ export { default as MetricCard } from './MetricCard';
9
+ export { default as DataRegion, ListSkeleton } from './DataRegion';
10
+ export { default as Progress } from './Progress';
11
+ export { Badge, Skeleton, EmptyState, InlineNotice, WorkspaceLoading, type BadgeTone, } from './Feedback';
12
+ export { FormField, TextInput, Select, FormCard, inputClass, type SelectOption, } from './FormField';
13
+ export { findActiveRoute, flattenNavigation, isActiveRoute, type WorkspaceLabels, type WorkspaceRoute, } from './navigation';
14
+ export { default as SearchSelect, type SearchSelectProps, } from './SearchSelect';
15
+ export { filterSelectOptions, type SearchSelectOption, } from './search';
16
+ export { ContactDetails, ContactPopover, CopyButton, type ContactDetailsProps, type ContactLabels, } from './ContactDetails';
17
+ export { default as ActionDialog } from './ActionDialog';
18
+ export { default as FormActions } from './FormActions';
19
+ export { default as ChoiceChips } from './ChoiceChips';
20
+ export { default as SettingToggle, type SettingToggleProps, } from './SettingToggle';
21
+ export { default as DocumentEditor, type DocumentEditorHandle, } from './DocumentEditor';
22
+ export { default as DocumentPreview } from './DocumentPreview';
23
+ export { default as ContractFields, type DynamicContractField, type ContractTemplateOption, } from './ContractFields';
24
+ export { default as SearchMultiSelect, type SearchMultiSelectOption, } from './SearchMultiSelect';
25
+ export { default as RequestResources, type RequestResource, } from '../request-files/RequestResources';
26
+ export { default as RequestContracts, type RequestClientContract, } from '../request-files/RequestContracts';
27
+ export { default as FileDownloadButton } from '../request-files/FileDownloadButton';
@@ -0,0 +1,32 @@
1
+ import type { NavEntry, TDashboardNav } from '../base/DashboardNav';
2
+ export type WorkspaceNav = TDashboardNav;
3
+ export type WorkspaceRoute = NavEntry & {
4
+ group: string;
5
+ };
6
+ export declare const isActiveRoute: (path: string, href: string) => boolean;
7
+ export declare function flattenNavigation(nav: WorkspaceNav): WorkspaceRoute[];
8
+ export declare function findActiveRoute(nav: WorkspaceNav, path: string): WorkspaceRoute;
9
+ export declare const workspaceLabels: {
10
+ navigation: string;
11
+ openNavigation: string;
12
+ closeNavigation: string;
13
+ skipToContent: string;
14
+ breadcrumb: string;
15
+ workspace: string;
16
+ overview: string;
17
+ details: string;
18
+ search: string;
19
+ jumpTo: string;
20
+ searchTitle: string;
21
+ searchInput: string;
22
+ searchPlaceholder: string;
23
+ closeSearch: string;
24
+ pages: string;
25
+ noResults: string;
26
+ navigate: string;
27
+ open: string;
28
+ close: string;
29
+ account: string;
30
+ signOut: string;
31
+ };
32
+ export type WorkspaceLabels = typeof workspaceLabels;
@@ -0,0 +1,10 @@
1
+ export interface SearchSelectOption {
2
+ value: string;
3
+ label: string;
4
+ description?: string;
5
+ meta?: string;
6
+ keywords?: (string | number | null | undefined)[];
7
+ disabled?: boolean;
8
+ }
9
+ /** Search every term across labels and metadata; ignore accents and phone formatting. */
10
+ export declare function filterSelectOptions(options: SearchSelectOption[], query: string): SearchSelectOption[];
package/dist/index.d.ts CHANGED
@@ -5,3 +5,5 @@ export * from './utils/formatter';
5
5
  export * from './utils/items';
6
6
  export * from './utils/validation';
7
7
  export * from './layouts';
8
+ export * from './components/workspace';
9
+ export * from './components/chat';