@pipe0/react 1.0.39 → 1.0.40

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/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @pipe0/elements-react
2
2
 
3
+ ## 1.0.40
4
+
5
+ ### Patch Changes
6
+
7
+ - 7761581: feat: Change http pipe
8
+ - 414d562: Change email waterfall
9
+ - Updated dependencies [7761581]
10
+ - Updated dependencies [414d562]
11
+ - @pipe0/base@1.0.40
12
+
3
13
  ## 1.0.39
4
14
 
5
15
  ### Patch Changes
@@ -6,7 +6,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
6
6
  //#region src/components/ui/button.d.ts
7
7
  declare const buttonVariants: (props?: ({
8
8
  variant?: "link" | "default" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
9
- size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
9
+ size?: "default" | "icon" | "sm" | "lg" | "xs" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
10
10
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
11
11
  declare function Button$1({
12
12
  className,
package/dist/index.d.mts CHANGED
@@ -78,7 +78,8 @@ import { PipeCatalogContext, PipeCatalogContextValue, usePipeCatalogContext } fr
78
78
  import { usePortalContainer } from "./context/portal-container-context.mjs";
79
79
  import { SearchCatalogCardContext, SearchCatalogCardContextValue, useSearchCatalogCard } from "./context/search-catalog-card-context.mjs";
80
80
  import { SearchCatalogContext, SearchCatalogContextValue, useSearchCatalogContext } from "./context/search-catalog-context.mjs";
81
- import { CatalogFilterMeta, CatalogSearchFeatures, catalogSearchFilter, catalogSearchSort, fuzzyFilter, getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon } from "./utils/catalog-helpers.mjs";
81
+ import { getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon } from "./utils/field-icons.mjs";
82
+ import { CatalogFilterMeta, CatalogSearchFeatures, catalogSearchFilter, catalogSearchSort, fuzzyFilter } from "./utils/catalog-helpers.mjs";
82
83
  import { CatalogTableFeatures, catalogTableFeatures, createCatalogColumnHelper, useCatalogTable } from "./hooks/catalog-table.mjs";
83
84
  import { useFieldError } from "./hooks/use-field-error.mjs";
84
85
  import { UsePipeFormOptions, usePipeForm } from "./hooks/use-pipe-form.mjs";
@@ -86,6 +87,9 @@ import { UsePlaybookFormOptions, usePlaybookForm } from "./hooks/use-playbook-fo
86
87
  import { UseSearchFormOptions, useSearchForm } from "./hooks/use-search-form.mjs";
87
88
  import { UseSheetEffectFormOptions, useSheetEffectForm } from "./hooks/use-sheet-effect-form.mjs";
88
89
  import { UseStreamFormOptions, useStreamForm } from "./hooks/use-stream-form.mjs";
90
+ import { FormatGlyph, LinkedinBadge, LinkedinMark, RecordAvatar, RecordImageUrlContext, RecordValueField, RecordWidgetKey, RecordWidgets, StateTile } from "./records/record-widgets.mjs";
91
+ import { RecordValue, RecordValueProps, RecordValueText, isIdentityValue, isLinkFormat } from "./records/record-value.mjs";
92
+ import { RecordsTable, RecordsTableCell, RecordsTableColumn, RecordsTableProps, RecordsTableRow } from "./records/records-table.mjs";
89
93
  import { EmojiGlyph } from "./widgets/emoji-glyph.mjs";
90
94
  import { FieldTypeBadge } from "./widgets/field-type-badge.mjs";
91
95
  import { IconGlyph } from "./widgets/icon-glyph.mjs";
@@ -94,4 +98,4 @@ import { PricingBadge } from "./widgets/pricing-badge.mjs";
94
98
  import { ProviderLogo } from "./widgets/provider-logo.mjs";
95
99
  import { WidgetStrip } from "./widgets/widget-strip.mjs";
96
100
  import { WidgetView } from "./widgets/widget-view.mjs";
97
- export { Alert, AlertDescription, type AlertProps, AlertTitle, type AlertVariant, type AnyFieldProps as AnyFieldHandle, AvatarGroup, type AvatarGroupProps, type AvatarGroupState, CatalogCard, CatalogCardBadge, type CatalogCardBadgeProps, CatalogCardBadges, type CatalogCardBadgesProps, CatalogCardDescription, type CatalogCardDescriptionProps, CatalogCardHeader, type CatalogCardHeaderProps, type CatalogCardProps, CatalogCardTitle, type CatalogCardTitleProps, CatalogCategorySection, type CatalogCategorySectionProps, type CatalogClassNames, type CatalogComponentOverrides, type CatalogConfig, CatalogCopyId, type CatalogCopyIdProps, CatalogCreditBadge, type CatalogCreditBadgeProps, CatalogDocsBadge, type CatalogDocsBadgeProps, CatalogFieldBadge, type CatalogFieldBadgeProps, type CatalogFieldBadgeState, type CatalogFilterMeta, CatalogProvider, CatalogProviderAvatars, type CatalogProviderAvatarsProps, type CatalogProviderProps, CatalogRoot, type CatalogSearchFeatures, type CatalogTableFeatures, type CostMode, type EffectCardData, EffectCatalog, EffectCatalogCard, EffectCatalogCardContext, type EffectCatalogCardContextValue, type EffectCatalogCardProps, type EffectCatalogCardState, EffectCatalogCategoryFilter, type EffectCatalogCategoryFilterProps, type EffectCatalogCategoryFilterState, EffectCatalogContext, type EffectCatalogContextValue, EffectCatalogEmpty, type EffectCatalogEmptyProps, type EffectCatalogEmptyState, type EffectCatalogInstanceProps, EffectCatalogList, type EffectCatalogListProps, type EffectCatalogListState, type EffectCatalogProps, EffectCatalogSearchFilter, type EffectCatalogSearchFilterProps, type EffectCatalogSearchFilterState, type EffectCatalogZeroConfigProps, EmojiGlyph, type FieldAdapterMap, type GeneratedFieldProps as FieldHandle, type FieldKind, type FieldMeta, FieldRenderer, FieldTypeBadge, type FormClassNames, type FormComponents, type FormConfig, type FormErrorEntry, type FormErrors, type FormFieldState, type FormHandle, FormProvider, type FormResetFieldOptions, type FormResetOptions, FormRoot, type FormSetValueOptions, type FormStateSnapshot, type GroupMap, type GroupOverride, IconGlyph, type InputFieldEntries, LogoUrl, type OutputFieldEntries, type PathMap, type PathOverride, type ActiveFilter as PipeActiveFilter, type PipeCardData, PipeCatalog, PipeCatalogActiveFilters, type PipeCatalogActiveFiltersProps, type PipeCatalogActiveFiltersState, PipeCatalogCard, PipeCatalogCardContext, type PipeCatalogCardContextValue, type PipeCatalogCardProps, PipeCatalogCategoryFilter, type PipeCatalogCategoryFilterProps, type PipeCatalogCategoryFilterState, PipeCatalogColumnFilter, type PipeCatalogColumnFilterProps, PipeCatalogColumnFilters, type PipeCatalogColumnFiltersProps, PipeCatalogContext, type PipeCatalogContextValue, PipeCatalogEmpty, type PipeCatalogEmptyProps, type PipeCatalogEmptyState, PipeCatalogInputFieldFilter, type PipeCatalogInputFieldFilterProps, type PipeCatalogInstanceProps, PipeCatalogList, type PipeCatalogListProps, type PipeCatalogListState, PipeCatalogOutputFieldFilter, type PipeCatalogOutputFieldFilterProps, type PipeCatalogProps, PipeCatalogProviderFilter, type PipeCatalogProviderFilterProps, PipeCatalogSearchFilter, type PipeCatalogSearchFilterProps, type PipeCatalogSearchFilterState, PipeCatalogTagFilter, type PipeCatalogTagFilterProps, type PipeCatalogZeroConfigProps, type PipeColumnFilterId, type ColumnFilterState as PipeColumnFilterState, PipeForm, PipeFormContent, PipeFormContext, PipeFormErrors, PipeFormField, PipeFormFooter, PipeFormGroup, PipeFormHeader, type PipeFormInstanceProps, type PipeFormProps, PipeFormSection, PipeFormSubmitButton, PipeFormTitle, type PipeFormZeroConfigProps, PricingBadge, ProviderLogo, type ActiveFilter$1 as SearchActiveFilter, type SearchCardData, SearchCatalog, SearchCatalogActiveFilters, type SearchCatalogActiveFiltersProps, type SearchCatalogActiveFiltersState, SearchCatalogCard, SearchCatalogCardContext, type SearchCatalogCardContextValue, type SearchCatalogCardProps, SearchCatalogCategoryFilter, type SearchCatalogCategoryFilterProps, type SearchCatalogCategoryFilterState, SearchCatalogColumnFilter, type SearchCatalogColumnFilterProps, SearchCatalogColumnFilters, type SearchCatalogColumnFiltersProps, SearchCatalogContext, type SearchCatalogContextValue, SearchCatalogEmpty, type SearchCatalogEmptyProps, type SearchCatalogEmptyState, type SearchCatalogInstanceProps, SearchCatalogList, type SearchCatalogListProps, type SearchCatalogListState, SearchCatalogOutputFieldFilter, type SearchCatalogOutputFieldFilterProps, type SearchCatalogProps, SearchCatalogProviderFilter, type SearchCatalogProviderFilterProps, SearchCatalogSearchFilter, type SearchCatalogSearchFilterProps, type SearchCatalogSearchFilterState, SearchCatalogTagFilter, type SearchCatalogTagFilterProps, type SearchCatalogZeroConfigProps, type SearchColumnFilterId, type ColumnFilterState$1 as SearchColumnFilterState, SearchForm, SearchFormContent, SearchFormContext, SearchFormErrors, SearchFormField, SearchFormFooter, SearchFormGroup, SearchFormHeader, type SearchFormInstanceProps, type SearchFormProps, SearchFormSection, SearchFormSubmitButton, SearchFormTitle, type SearchFormZeroConfigProps, type SearchOutputFieldEntries, type SectionMap, type SectionOverride, type UseEffectCatalogTableReturn, type UsePipeCatalogTableReturn, type UsePipeFormOptions, type UsePlaybookFormOptions, type UseSearchCatalogTableReturn, type UseSearchFormOptions, type UseSheetEffectFormOptions, type UseStreamFormOptions, WidgetStrip, WidgetView, alertVariants, catalogSearchFilter, catalogSearchSort, catalogTableFeatures, createCatalogColumnHelper, defaultAdapters, fuzzyFilter, getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon, useCatalogConfig, useCatalogTable, useEffectCatalogCard, useEffectCatalogContext, useEffectCatalogTable, useFieldError, useFormAlert, useFormConfig, usePipeCatalogCard, usePipeCatalogContext, usePipeCatalogTable, usePipeForm, usePipeFormContext, usePlaybookForm, usePortalContainer, useSearchCatalogCard, useSearchCatalogContext, useSearchCatalogTable, useSearchForm, useSearchFormContext, useSheetEffectForm, useStreamForm };
101
+ export { Alert, AlertDescription, type AlertProps, AlertTitle, type AlertVariant, type AnyFieldProps as AnyFieldHandle, AvatarGroup, type AvatarGroupProps, type AvatarGroupState, CatalogCard, CatalogCardBadge, type CatalogCardBadgeProps, CatalogCardBadges, type CatalogCardBadgesProps, CatalogCardDescription, type CatalogCardDescriptionProps, CatalogCardHeader, type CatalogCardHeaderProps, type CatalogCardProps, CatalogCardTitle, type CatalogCardTitleProps, CatalogCategorySection, type CatalogCategorySectionProps, type CatalogClassNames, type CatalogComponentOverrides, type CatalogConfig, CatalogCopyId, type CatalogCopyIdProps, CatalogCreditBadge, type CatalogCreditBadgeProps, CatalogDocsBadge, type CatalogDocsBadgeProps, CatalogFieldBadge, type CatalogFieldBadgeProps, type CatalogFieldBadgeState, type CatalogFilterMeta, CatalogProvider, CatalogProviderAvatars, type CatalogProviderAvatarsProps, type CatalogProviderProps, CatalogRoot, type CatalogSearchFeatures, type CatalogTableFeatures, type CostMode, type EffectCardData, EffectCatalog, EffectCatalogCard, EffectCatalogCardContext, type EffectCatalogCardContextValue, type EffectCatalogCardProps, type EffectCatalogCardState, EffectCatalogCategoryFilter, type EffectCatalogCategoryFilterProps, type EffectCatalogCategoryFilterState, EffectCatalogContext, type EffectCatalogContextValue, EffectCatalogEmpty, type EffectCatalogEmptyProps, type EffectCatalogEmptyState, type EffectCatalogInstanceProps, EffectCatalogList, type EffectCatalogListProps, type EffectCatalogListState, type EffectCatalogProps, EffectCatalogSearchFilter, type EffectCatalogSearchFilterProps, type EffectCatalogSearchFilterState, type EffectCatalogZeroConfigProps, EmojiGlyph, type FieldAdapterMap, type GeneratedFieldProps as FieldHandle, type FieldKind, type FieldMeta, FieldRenderer, FieldTypeBadge, type FormClassNames, type FormComponents, type FormConfig, type FormErrorEntry, type FormErrors, type FormFieldState, type FormHandle, FormProvider, type FormResetFieldOptions, type FormResetOptions, FormRoot, type FormSetValueOptions, type FormStateSnapshot, FormatGlyph, type GroupMap, type GroupOverride, IconGlyph, type InputFieldEntries, LinkedinBadge, LinkedinMark, LogoUrl, type OutputFieldEntries, type PathMap, type PathOverride, type ActiveFilter as PipeActiveFilter, type PipeCardData, PipeCatalog, PipeCatalogActiveFilters, type PipeCatalogActiveFiltersProps, type PipeCatalogActiveFiltersState, PipeCatalogCard, PipeCatalogCardContext, type PipeCatalogCardContextValue, type PipeCatalogCardProps, PipeCatalogCategoryFilter, type PipeCatalogCategoryFilterProps, type PipeCatalogCategoryFilterState, PipeCatalogColumnFilter, type PipeCatalogColumnFilterProps, PipeCatalogColumnFilters, type PipeCatalogColumnFiltersProps, PipeCatalogContext, type PipeCatalogContextValue, PipeCatalogEmpty, type PipeCatalogEmptyProps, type PipeCatalogEmptyState, PipeCatalogInputFieldFilter, type PipeCatalogInputFieldFilterProps, type PipeCatalogInstanceProps, PipeCatalogList, type PipeCatalogListProps, type PipeCatalogListState, PipeCatalogOutputFieldFilter, type PipeCatalogOutputFieldFilterProps, type PipeCatalogProps, PipeCatalogProviderFilter, type PipeCatalogProviderFilterProps, PipeCatalogSearchFilter, type PipeCatalogSearchFilterProps, type PipeCatalogSearchFilterState, PipeCatalogTagFilter, type PipeCatalogTagFilterProps, type PipeCatalogZeroConfigProps, type PipeColumnFilterId, type ColumnFilterState as PipeColumnFilterState, PipeForm, PipeFormContent, PipeFormContext, PipeFormErrors, PipeFormField, PipeFormFooter, PipeFormGroup, PipeFormHeader, type PipeFormInstanceProps, type PipeFormProps, PipeFormSection, PipeFormSubmitButton, PipeFormTitle, type PipeFormZeroConfigProps, PricingBadge, ProviderLogo, RecordAvatar, RecordImageUrlContext, RecordValue, type RecordValueField, type RecordValueProps, RecordValueText, type RecordWidgetKey, RecordWidgets, RecordsTable, type RecordsTableCell, type RecordsTableColumn, type RecordsTableProps, type RecordsTableRow, type ActiveFilter$1 as SearchActiveFilter, type SearchCardData, SearchCatalog, SearchCatalogActiveFilters, type SearchCatalogActiveFiltersProps, type SearchCatalogActiveFiltersState, SearchCatalogCard, SearchCatalogCardContext, type SearchCatalogCardContextValue, type SearchCatalogCardProps, SearchCatalogCategoryFilter, type SearchCatalogCategoryFilterProps, type SearchCatalogCategoryFilterState, SearchCatalogColumnFilter, type SearchCatalogColumnFilterProps, SearchCatalogColumnFilters, type SearchCatalogColumnFiltersProps, SearchCatalogContext, type SearchCatalogContextValue, SearchCatalogEmpty, type SearchCatalogEmptyProps, type SearchCatalogEmptyState, type SearchCatalogInstanceProps, SearchCatalogList, type SearchCatalogListProps, type SearchCatalogListState, SearchCatalogOutputFieldFilter, type SearchCatalogOutputFieldFilterProps, type SearchCatalogProps, SearchCatalogProviderFilter, type SearchCatalogProviderFilterProps, SearchCatalogSearchFilter, type SearchCatalogSearchFilterProps, type SearchCatalogSearchFilterState, SearchCatalogTagFilter, type SearchCatalogTagFilterProps, type SearchCatalogZeroConfigProps, type SearchColumnFilterId, type ColumnFilterState$1 as SearchColumnFilterState, SearchForm, SearchFormContent, SearchFormContext, SearchFormErrors, SearchFormField, SearchFormFooter, SearchFormGroup, SearchFormHeader, type SearchFormInstanceProps, type SearchFormProps, SearchFormSection, SearchFormSubmitButton, SearchFormTitle, type SearchFormZeroConfigProps, type SearchOutputFieldEntries, type SectionMap, type SectionOverride, StateTile, type UseEffectCatalogTableReturn, type UsePipeCatalogTableReturn, type UsePipeFormOptions, type UsePlaybookFormOptions, type UseSearchCatalogTableReturn, type UseSearchFormOptions, type UseSheetEffectFormOptions, type UseStreamFormOptions, WidgetStrip, WidgetView, alertVariants, catalogSearchFilter, catalogSearchSort, catalogTableFeatures, createCatalogColumnHelper, defaultAdapters, fuzzyFilter, getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon, isIdentityValue, isLinkFormat, useCatalogConfig, useCatalogTable, useEffectCatalogCard, useEffectCatalogContext, useEffectCatalogTable, useFieldError, useFormAlert, useFormConfig, usePipeCatalogCard, usePipeCatalogContext, usePipeCatalogTable, usePipeForm, usePipeFormContext, usePlaybookForm, usePortalContainer, useSearchCatalogCard, useSearchCatalogContext, useSearchCatalogTable, useSearchForm, useSearchFormContext, useSheetEffectForm, useStreamForm };
package/dist/index.mjs CHANGED
@@ -11,7 +11,8 @@ import { EffectCatalogCard } from "./components/compound/effect-catalog/card.mjs
11
11
  import { EffectCatalogCategoryFilter } from "./components/compound/effect-catalog/category-filter.mjs";
12
12
  import { EffectCatalogEmpty } from "./components/compound/effect-catalog/empty.mjs";
13
13
  import { EffectCatalogList } from "./components/compound/effect-catalog/list.mjs";
14
- import { catalogSearchFilter, catalogSearchSort, fuzzyFilter, getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon } from "./utils/catalog-helpers.mjs";
14
+ import { getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon } from "./utils/field-icons.mjs";
15
+ import { catalogSearchFilter, catalogSearchSort, fuzzyFilter } from "./utils/catalog-helpers.mjs";
15
16
  import { catalogTableFeatures, createCatalogColumnHelper, useCatalogTable } from "./hooks/catalog-table.mjs";
16
17
  import { useEffectCatalogTable } from "./hooks/use-effect-catalog-table.mjs";
17
18
  import { EffectCatalogSearchFilter } from "./components/compound/effect-catalog/search-filter.mjs";
@@ -88,5 +89,8 @@ import { CatalogProviderAvatars } from "./components/defaults/catalog/provider-a
88
89
  import { usePlaybookForm } from "./hooks/use-playbook-form.mjs";
89
90
  import { useSheetEffectForm } from "./hooks/use-sheet-effect-form.mjs";
90
91
  import { useStreamForm } from "./hooks/use-stream-form.mjs";
92
+ import { FormatGlyph, LinkedinBadge, LinkedinMark, RecordAvatar, RecordImageUrlContext, RecordWidgets, StateTile } from "./records/record-widgets.mjs";
93
+ import { RecordValue, RecordValueText, isIdentityValue, isLinkFormat } from "./records/record-value.mjs";
94
+ import { RecordsTable } from "./records/records-table.mjs";
91
95
 
92
- export { Alert, AlertDescription, AlertTitle, AvatarGroup, CatalogCard, CatalogCardBadge, CatalogCardBadges, CatalogCardDescription, CatalogCardHeader, CatalogCardTitle, CatalogCategorySection, CatalogCopyId, CatalogCreditBadge, CatalogDocsBadge, CatalogFieldBadge, CatalogProvider, CatalogProviderAvatars, CatalogRoot, EffectCatalog, EffectCatalogCard, EffectCatalogCardContext, EffectCatalogCategoryFilter, EffectCatalogContext, EffectCatalogEmpty, EffectCatalogList, EffectCatalogSearchFilter, EmojiGlyph, FieldRenderer, FieldTypeBadge, FormProvider, FormRoot, IconGlyph, LogoUrl, PipeCatalog, PipeCatalogActiveFilters, PipeCatalogCard, PipeCatalogCardContext, PipeCatalogCategoryFilter, PipeCatalogColumnFilter, PipeCatalogColumnFilters, PipeCatalogContext, PipeCatalogEmpty, PipeCatalogInputFieldFilter, PipeCatalogList, PipeCatalogOutputFieldFilter, PipeCatalogProviderFilter, PipeCatalogSearchFilter, PipeCatalogTagFilter, PipeForm, PipeFormContent, PipeFormContext, PipeFormErrors, PipeFormField, PipeFormFooter, PipeFormGroup, PipeFormHeader, PipeFormSection, PipeFormSubmitButton, PipeFormTitle, PricingBadge, ProviderLogo, SearchCatalog, SearchCatalogActiveFilters, SearchCatalogCard, SearchCatalogCardContext, SearchCatalogCategoryFilter, SearchCatalogColumnFilter, SearchCatalogColumnFilters, SearchCatalogContext, SearchCatalogEmpty, SearchCatalogList, SearchCatalogOutputFieldFilter, SearchCatalogProviderFilter, SearchCatalogSearchFilter, SearchCatalogTagFilter, SearchForm, SearchFormContent, SearchFormContext, SearchFormErrors, SearchFormField, SearchFormFooter, SearchFormGroup, SearchFormHeader, SearchFormSection, SearchFormSubmitButton, SearchFormTitle, WidgetStrip, WidgetView, alertVariants, catalogSearchFilter, catalogSearchSort, catalogTableFeatures, createCatalogColumnHelper, defaultAdapters, fuzzyFilter, getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon, useCatalogConfig, useCatalogTable, useEffectCatalogCard, useEffectCatalogContext, useEffectCatalogTable, useFieldError, useFormAlert, useFormConfig, usePipeCatalogCard, usePipeCatalogContext, usePipeCatalogTable, usePipeForm, usePipeFormContext, usePlaybookForm, usePortalContainer, useSearchCatalogCard, useSearchCatalogContext, useSearchCatalogTable, useSearchForm, useSearchFormContext, useSheetEffectForm, useStreamForm };
96
+ export { Alert, AlertDescription, AlertTitle, AvatarGroup, CatalogCard, CatalogCardBadge, CatalogCardBadges, CatalogCardDescription, CatalogCardHeader, CatalogCardTitle, CatalogCategorySection, CatalogCopyId, CatalogCreditBadge, CatalogDocsBadge, CatalogFieldBadge, CatalogProvider, CatalogProviderAvatars, CatalogRoot, EffectCatalog, EffectCatalogCard, EffectCatalogCardContext, EffectCatalogCategoryFilter, EffectCatalogContext, EffectCatalogEmpty, EffectCatalogList, EffectCatalogSearchFilter, EmojiGlyph, FieldRenderer, FieldTypeBadge, FormProvider, FormRoot, FormatGlyph, IconGlyph, LinkedinBadge, LinkedinMark, LogoUrl, PipeCatalog, PipeCatalogActiveFilters, PipeCatalogCard, PipeCatalogCardContext, PipeCatalogCategoryFilter, PipeCatalogColumnFilter, PipeCatalogColumnFilters, PipeCatalogContext, PipeCatalogEmpty, PipeCatalogInputFieldFilter, PipeCatalogList, PipeCatalogOutputFieldFilter, PipeCatalogProviderFilter, PipeCatalogSearchFilter, PipeCatalogTagFilter, PipeForm, PipeFormContent, PipeFormContext, PipeFormErrors, PipeFormField, PipeFormFooter, PipeFormGroup, PipeFormHeader, PipeFormSection, PipeFormSubmitButton, PipeFormTitle, PricingBadge, ProviderLogo, RecordAvatar, RecordImageUrlContext, RecordValue, RecordValueText, RecordWidgets, RecordsTable, SearchCatalog, SearchCatalogActiveFilters, SearchCatalogCard, SearchCatalogCardContext, SearchCatalogCategoryFilter, SearchCatalogColumnFilter, SearchCatalogColumnFilters, SearchCatalogContext, SearchCatalogEmpty, SearchCatalogList, SearchCatalogOutputFieldFilter, SearchCatalogProviderFilter, SearchCatalogSearchFilter, SearchCatalogTagFilter, SearchForm, SearchFormContent, SearchFormContext, SearchFormErrors, SearchFormField, SearchFormFooter, SearchFormGroup, SearchFormHeader, SearchFormSection, SearchFormSubmitButton, SearchFormTitle, StateTile, WidgetStrip, WidgetView, alertVariants, catalogSearchFilter, catalogSearchSort, catalogTableFeatures, createCatalogColumnHelper, defaultAdapters, fuzzyFilter, getFieldFormatIcon, getFieldStatusIcon, getFieldTypeIcon, isIdentityValue, isLinkFormat, useCatalogConfig, useCatalogTable, useEffectCatalogCard, useEffectCatalogContext, useEffectCatalogTable, useFieldError, useFormAlert, useFormConfig, usePipeCatalogCard, usePipeCatalogContext, usePipeCatalogTable, usePipeForm, usePipeFormContext, usePlaybookForm, usePortalContainer, useSearchCatalogCard, useSearchCatalogContext, useSearchCatalogTable, useSearchForm, useSearchFormContext, useSheetEffectForm, useStreamForm };
@@ -0,0 +1,3 @@
1
+ import { FormatGlyph, LinkedinBadge, LinkedinMark, RecordAvatar, RecordImageUrlContext, RecordValueField, RecordWidgetKey, RecordWidgets, StateTile } from "./record-widgets.mjs";
2
+ import { RecordValue, RecordValueProps, RecordValueText, isIdentityValue, isLinkFormat } from "./record-value.mjs";
3
+ import { RecordsTable, RecordsTableCell, RecordsTableColumn, RecordsTableProps, RecordsTableRow } from "./records-table.mjs";
@@ -0,0 +1,42 @@
1
+ import { RecordValueField, RecordWidgetKey } from "./record-widgets.mjs";
2
+ import { ReactNode } from "react";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
+ import { RecordFieldFormat } from "@pipe0/base";
5
+
6
+ //#region src/records/record-value.d.ts
7
+ declare function isLinkFormat(format: RecordFieldFormat): boolean;
8
+ declare function isIdentityValue(field: RecordValueField): boolean;
9
+ /** The value's text: status wording, a link, a JSON chip, a boolean tile, or the plain value. */
10
+ declare function RecordValueText({
11
+ field,
12
+ inChip
13
+ }: {
14
+ field: RecordValueField;
15
+ inChip?: boolean;
16
+ }): string | _$react_jsx_runtime0.JSX.Element;
17
+ interface RecordValueProps {
18
+ field: RecordValueField;
19
+ /** Which glyph widgets to draw, in order. Defaults to every glyph widget. */
20
+ widgets?: readonly RecordWidgetKey[];
21
+ /**
22
+ * Rendered after the identity chip (or the glyphs) and before plain text —
23
+ * the slot for provenance tiles such as a waterfall or a status tile.
24
+ */
25
+ afterGlyphs?: ReactNode;
26
+ /** Class for the plain-text box (not used when the value sits on a chip). */
27
+ textClassName?: string;
28
+ }
29
+ /**
30
+ * A read-only record value: glyph widgets, then the value — identity values
31
+ * (domains, emails, profiles, people, companies) on a chip. Renders as
32
+ * `display: contents` so the parts lay out in the host's flex row.
33
+ */
34
+ declare function RecordValue({
35
+ field,
36
+ widgets,
37
+ afterGlyphs,
38
+ textClassName
39
+ }: RecordValueProps): _$react_jsx_runtime0.JSX.Element;
40
+ //#endregion
41
+ export { RecordValue, RecordValueProps, RecordValueText, isIdentityValue, isLinkFormat };
42
+ //# sourceMappingURL=record-value.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-value.d.mts","names":[],"sources":["../../src/records/record-value.tsx"],"mappings":";;;;;;iBAmGgB,YAAA,CAAa,MAAA,EAAQ,iBAAA;AAAA,iBAgBrB,eAAA,CAAgB,KAAA,EAAO,gBAAA;;iBAqCvB,eAAA,CAAA;EACd,KAAA;EACA;AAAA;EAEA,KAAA,EAAO,gBAAA;EACP,MAAA;AAAA,aACD,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,UA6EgB,gBAAA;EACf,KAAA,EAAO,gBAAA;EAzHsB;EA2H7B,OAAA,YAAmB,eAAA;EA3HkB;;AAqCvC;;EA2FE,WAAA,GAAc,SAAA;EA1Fd;EA4FA,aAAA;AAAA;;;;;;iBAQc,WAAA,CAAA;EACd,KAAA;EACA,OAAA;EACA,WAAA;EACA;AAAA,GACC,gBAAA,GAAgB,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,229 @@
1
+ import { cn } from "../lib/utils.mjs";
2
+ import { FormatGlyph, RecordWidgets, StateTile } from "./record-widgets.mjs";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+
5
+ //#region src/records/record-value.tsx
6
+ const CELL_VALUE_LENGTH_LIMIT = 60;
7
+ const JSON_PREVIEW_MAX_ENTRIES = 4;
8
+ const JSON_PREVIEW_MAX_STRING = 24;
9
+ function jsonScalarPreview(value) {
10
+ if (typeof value === "string") return `"${value.length > JSON_PREVIEW_MAX_STRING ? `${value.slice(0, JSON_PREVIEW_MAX_STRING)}…` : value}"`;
11
+ if (typeof value === "number" || typeof value === "boolean" || value === null) return String(value);
12
+ if (Array.isArray(value)) return "[ … ]";
13
+ if (typeof value === "object") return "{ … }";
14
+ return String(value);
15
+ }
16
+ /**
17
+ * Monospace preview chip for JSON values (the JSON signature chip). Keys in
18
+ * foreground, values in muted gray, and only the outer brackets take the
19
+ * chip's hue — the bracket is the glyph, so no syntax colouring.
20
+ */
21
+ function JsonChip({ value }) {
22
+ let body;
23
+ if (Array.isArray(value)) {
24
+ const shown = value.slice(0, JSON_PREVIEW_MAX_ENTRIES);
25
+ const items = shown.map(jsonScalarPreview).join(", ");
26
+ body = /* @__PURE__ */ jsxs(Fragment, { children: [
27
+ /* @__PURE__ */ jsx("span", {
28
+ "data-slot": "sig-glyph",
29
+ children: "[ "
30
+ }),
31
+ `${items}${value.length > shown.length ? ", …" : ""}`,
32
+ /* @__PURE__ */ jsx("span", {
33
+ "data-slot": "sig-glyph",
34
+ children: " ]"
35
+ })
36
+ ] });
37
+ } else if (value && typeof value === "object") {
38
+ const entries = Object.entries(value).slice(0, JSON_PREVIEW_MAX_ENTRIES);
39
+ const truncated = Object.keys(value).length > entries.length;
40
+ body = /* @__PURE__ */ jsxs(Fragment, { children: [
41
+ /* @__PURE__ */ jsx("span", {
42
+ "data-slot": "sig-glyph",
43
+ children: "{ "
44
+ }),
45
+ entries.map(([key, entryValue], i) => /* @__PURE__ */ jsxs("span", { children: [
46
+ /* @__PURE__ */ jsxs("span", {
47
+ className: "pz:text-foreground",
48
+ children: [
49
+ "\"",
50
+ key,
51
+ "\""
52
+ ]
53
+ }),
54
+ `: ${jsonScalarPreview(entryValue)}`,
55
+ (i < entries.length - 1 || truncated) && ", "
56
+ ] }, key)),
57
+ truncated && "…",
58
+ /* @__PURE__ */ jsx("span", {
59
+ "data-slot": "sig-glyph",
60
+ children: " }"
61
+ })
62
+ ] });
63
+ } else body = JSON.stringify(value)?.substring(0, CELL_VALUE_LENGTH_LIMIT) ?? "";
64
+ return /* @__PURE__ */ jsx("span", {
65
+ className: "p0-json-chip pz:inline-flex pz:max-w-full pz:min-w-0 pz:items-center pz:rounded-md pz:px-2 pz:py-0.5",
66
+ children: /* @__PURE__ */ jsx("span", {
67
+ className: "pz:truncate pz:font-mono pz:text-xs pz:leading-normal pz:whitespace-nowrap pz:text-muted-foreground",
68
+ children: body
69
+ })
70
+ });
71
+ }
72
+ /**
73
+ * Rich-text-style marks on a display label → classes. Marks compose (a set),
74
+ * so the classes simply join. "bold" maps to semibold — the calm table
75
+ * aesthetic treats full bold as shouting.
76
+ */
77
+ const MARK_CLASSES = {
78
+ bold: "pz:font-semibold",
79
+ italic: "pz:italic",
80
+ underline: "pz:underline pz:underline-offset-2",
81
+ strikethrough: "pz:line-through"
82
+ };
83
+ function marksClassName(field) {
84
+ return (field.widgets?.display_value?.marks ?? []).map((mark) => MARK_CLASSES[mark]).join(" ");
85
+ }
86
+ const LINK_FORMATS = new Set([
87
+ "profile_url",
88
+ "url",
89
+ "website_url",
90
+ "domain"
91
+ ]);
92
+ function isLinkFormat(format) {
93
+ return format !== null && LINK_FORMATS.has(format);
94
+ }
95
+ const IDENTITY_FORMATS = new Set([
96
+ "domain",
97
+ "email",
98
+ "profile_url",
99
+ "url",
100
+ "website_url",
101
+ "phone"
102
+ ]);
103
+ function isIdentityValue(field) {
104
+ if (field.status !== "completed" || field.value == null) return false;
105
+ if (field.format !== null && IDENTITY_FORMATS.has(field.format)) return true;
106
+ return Boolean(field.widgets?.avatar || field.widgets?.entity_logo);
107
+ }
108
+ /**
109
+ * Signature values (LinkedIn profile, contact data) get their own hue, see the
110
+ * signature chips in pipe0.css; every other identity sits on the gray chip.
111
+ */
112
+ function chipMaterial(field) {
113
+ if (field.widgets?.icon?.key === "linkedin") return "p0-linkedin-chip";
114
+ if (field.format === "email" || field.format === "phone") return "p0-contact-chip pz:pl-2";
115
+ return "p0-cell-chip";
116
+ }
117
+ /**
118
+ * Booleans read as a state, not a word: a quiet check tile for true, an empty
119
+ * tile plus muted label for false. Both stay in the gray palette so a column
120
+ * of booleans adds no local contrast; the check mark alone carries the signal.
121
+ */
122
+ function BooleanValue({ value }) {
123
+ return value ? /* @__PURE__ */ jsxs("span", {
124
+ className: "pz:inline-flex pz:items-center pz:gap-1.5",
125
+ children: [/* @__PURE__ */ jsx(StateTile, { state: "checked" }), /* @__PURE__ */ jsx("span", { children: "True" })]
126
+ }) : /* @__PURE__ */ jsxs("span", {
127
+ className: "pz:inline-flex pz:items-center pz:gap-1.5 pz:text-muted-foreground",
128
+ children: [/* @__PURE__ */ jsx(StateTile, { state: "empty" }), /* @__PURE__ */ jsx("span", { children: "False" })]
129
+ });
130
+ }
131
+ /** The value's text: status wording, a link, a JSON chip, a boolean tile, or the plain value. */
132
+ function RecordValueText({ field, inChip = false }) {
133
+ if (field.status === "processing") return /* @__PURE__ */ jsx("span", {
134
+ className: "pz:text-muted-foreground pz:animate-status-pulse",
135
+ children: "Running…"
136
+ });
137
+ if (field.status === "queued") return /* @__PURE__ */ jsx("span", {
138
+ className: "pz:text-muted-foreground pz:animate-status-pulse",
139
+ children: "Queued…"
140
+ });
141
+ if (field.status === "skipped") return /* @__PURE__ */ jsx("span", { children: field.reason?.summary || "Skipped" });
142
+ if (field.status === "failed") return /* @__PURE__ */ jsx("span", {
143
+ className: "pz:text-failed-foreground",
144
+ children: field.reason?.summary || "Failed"
145
+ });
146
+ if (field.status === "no_result") return field.reason?.summary || "No result";
147
+ if (field.status === "pending") return "";
148
+ if (field.type === "boolean") return /* @__PURE__ */ jsx(BooleanValue, { value: Boolean(field.value) });
149
+ const displayLabel = field.widgets?.display_value?.label;
150
+ if (field.type === "json") return displayLabel ? /* @__PURE__ */ jsx("span", {
151
+ className: cn("pz:text-muted-foreground pz:text-sm pz:underline", marksClassName(field)),
152
+ children: displayLabel
153
+ }) : /* @__PURE__ */ jsx(JsonChip, { value: field.value });
154
+ if (isLinkFormat(field.format) && field.type === "string") {
155
+ const url = String(field.value);
156
+ const href = /^https?:\/\//i.test(url) ? url : `https://${url}`;
157
+ const display = (displayLabel ?? url).substring(0, CELL_VALUE_LENGTH_LIMIT);
158
+ return /* @__PURE__ */ jsx("a", {
159
+ href,
160
+ target: "_blank",
161
+ rel: "noreferrer noopener",
162
+ onClick: (e) => e.stopPropagation(),
163
+ className: cn("pz:cursor-pointer pz:text-inherit pz:underline-offset-2 pz:decoration-muted-foreground/60 pz:hover:decoration-foreground", inChip ? "pz:no-underline pz:hover:underline" : "pz:underline"),
164
+ children: display
165
+ });
166
+ }
167
+ if (displayLabel) {
168
+ const marks = marksClassName(field);
169
+ return marks ? /* @__PURE__ */ jsx("span", {
170
+ className: marks,
171
+ children: displayLabel
172
+ }) : displayLabel;
173
+ }
174
+ if (field.type === "number") return String(field.value);
175
+ if (field.type === "string") return /* @__PURE__ */ jsx("span", { children: String(field.value).substring(0, CELL_VALUE_LENGTH_LIMIT) });
176
+ if (field.type === "unknown") return JSON.stringify(field.value);
177
+ field.type;
178
+ return JSON.stringify(field.value);
179
+ }
180
+ const DEFAULT_WIDGETS = [
181
+ "avatar",
182
+ "entity_logo",
183
+ "external_link",
184
+ "location_indicator",
185
+ "icon",
186
+ "emoji",
187
+ "action_summary"
188
+ ];
189
+ /**
190
+ * A read-only record value: glyph widgets, then the value — identity values
191
+ * (domains, emails, profiles, people, companies) on a chip. Renders as
192
+ * `display: contents` so the parts lay out in the host's flex row.
193
+ */
194
+ function RecordValue({ field, widgets = DEFAULT_WIDGETS, afterGlyphs, textClassName }) {
195
+ const glyphs = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(FormatGlyph, { field }), /* @__PURE__ */ jsx(RecordWidgets, {
196
+ field,
197
+ widgets
198
+ })] });
199
+ if (isIdentityValue(field)) return /* @__PURE__ */ jsxs("span", {
200
+ "data-p0": "record-value",
201
+ className: "pz:contents",
202
+ children: [/* @__PURE__ */ jsxs("span", {
203
+ className: cn("pz:inline-flex pz:min-w-0 pz:max-w-75 pz:shrink pz:items-center pz:gap-1.5 pz:py-0.5 pz:pr-2 pz:pl-1", field.format === "domain" ? "pz:rounded-full pz:border pz:border-border pz:bg-background pz:pl-1.5 pz:shadow-[0_1px_1px_rgb(0_0_0/0.03)]" : cn("pz:rounded-md", chipMaterial(field))),
204
+ children: [glyphs, /* @__PURE__ */ jsx("span", {
205
+ className: "pz:min-w-0 pz:truncate",
206
+ children: /* @__PURE__ */ jsx(RecordValueText, {
207
+ field,
208
+ inChip: true
209
+ })
210
+ })]
211
+ }), afterGlyphs]
212
+ });
213
+ return /* @__PURE__ */ jsxs("span", {
214
+ "data-p0": "record-value",
215
+ className: "pz:contents",
216
+ children: [
217
+ glyphs,
218
+ afterGlyphs,
219
+ /* @__PURE__ */ jsx("span", {
220
+ className: cn("pz:block pz:basis-0 pz:grow pz:overflow-hidden pz:max-w-75 pz:text-ellipsis", textClassName),
221
+ children: /* @__PURE__ */ jsx(RecordValueText, { field })
222
+ })
223
+ ]
224
+ });
225
+ }
226
+
227
+ //#endregion
228
+ export { RecordValue, RecordValueText, isIdentityValue, isLinkFormat };
229
+ //# sourceMappingURL=record-value.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-value.mjs","names":[],"sources":["../../src/records/record-value.tsx"],"sourcesContent":["import type { DisplayValueMark, RecordFieldFormat } from \"@pipe0/base\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils.js\";\nimport {\n FormatGlyph,\n type RecordValueField,\n type RecordWidgetKey,\n RecordWidgets,\n StateTile,\n} from \"./record-widgets.js\";\n\nconst CELL_VALUE_LENGTH_LIMIT = 60;\n\nconst JSON_PREVIEW_MAX_ENTRIES = 4;\nconst JSON_PREVIEW_MAX_STRING = 24;\n\nfunction jsonScalarPreview(value: unknown): string {\n if (typeof value === \"string\") {\n const truncated =\n value.length > JSON_PREVIEW_MAX_STRING\n ? `${value.slice(0, JSON_PREVIEW_MAX_STRING)}…`\n : value;\n return `\"${truncated}\"`;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\" || value === null) {\n return String(value);\n }\n if (Array.isArray(value)) return \"[ … ]\";\n if (typeof value === \"object\") return \"{ … }\";\n return String(value);\n}\n\n/**\n * Monospace preview chip for JSON values (the JSON signature chip). Keys in\n * foreground, values in muted gray, and only the outer brackets take the\n * chip's hue — the bracket is the glyph, so no syntax colouring.\n */\nfunction JsonChip({ value }: { value: unknown }) {\n let body: ReactNode;\n if (Array.isArray(value)) {\n const shown = value.slice(0, JSON_PREVIEW_MAX_ENTRIES);\n const items = shown.map(jsonScalarPreview).join(\", \");\n body = (\n <>\n <span data-slot=\"sig-glyph\">[ </span>\n {`${items}${value.length > shown.length ? \", …\" : \"\"}`}\n <span data-slot=\"sig-glyph\"> ]</span>\n </>\n );\n } else if (value && typeof value === \"object\") {\n const entries = Object.entries(value).slice(0, JSON_PREVIEW_MAX_ENTRIES);\n const truncated = Object.keys(value).length > entries.length;\n body = (\n <>\n <span data-slot=\"sig-glyph\">{\"{ \"}</span>\n {entries.map(([key, entryValue], i) => (\n <span key={key}>\n <span className=\"pz:text-foreground\">\"{key}\"</span>\n {`: ${jsonScalarPreview(entryValue)}`}\n {(i < entries.length - 1 || truncated) && \", \"}\n </span>\n ))}\n {truncated && \"…\"}\n <span data-slot=\"sig-glyph\">{\" }\"}</span>\n </>\n );\n } else {\n body = JSON.stringify(value)?.substring(0, CELL_VALUE_LENGTH_LIMIT) ?? \"\";\n }\n\n return (\n <span className=\"p0-json-chip pz:inline-flex pz:max-w-full pz:min-w-0 pz:items-center pz:rounded-md pz:px-2 pz:py-0.5\">\n <span className=\"pz:truncate pz:font-mono pz:text-xs pz:leading-normal pz:whitespace-nowrap pz:text-muted-foreground\">\n {body}\n </span>\n </span>\n );\n}\n\n/**\n * Rich-text-style marks on a display label → classes. Marks compose (a set),\n * so the classes simply join. \"bold\" maps to semibold — the calm table\n * aesthetic treats full bold as shouting.\n */\nconst MARK_CLASSES: Record<DisplayValueMark, string> = {\n bold: \"pz:font-semibold\",\n italic: \"pz:italic\",\n underline: \"pz:underline pz:underline-offset-2\",\n strikethrough: \"pz:line-through\",\n};\n\nfunction marksClassName(field: RecordValueField): string {\n return (field.widgets?.display_value?.marks ?? []).map((mark) => MARK_CLASSES[mark]).join(\" \");\n}\n\n// Formats rendered as an outbound link. Bare domains get their scheme added\n// at render time (see `RecordValueText`).\nconst LINK_FORMATS = new Set<RecordFieldFormat>([\"profile_url\", \"url\", \"website_url\", \"domain\"]);\n\nexport function isLinkFormat(format: RecordFieldFormat): boolean {\n return format !== null && LINK_FORMATS.has(format);\n}\n\n// Identifiers read as one token — a person with their avatar, a company with\n// its logo, a domain, an email, a handle — so they sit on a quiet gray chip\n// that binds glyph and text together. Provenance tiles stay outside the chip.\nconst IDENTITY_FORMATS = new Set<RecordFieldFormat>([\n \"domain\",\n \"email\",\n \"profile_url\",\n \"url\",\n \"website_url\",\n \"phone\",\n]);\n\nexport function isIdentityValue(field: RecordValueField): boolean {\n if (field.status !== \"completed\" || field.value == null) return false;\n if (field.format !== null && IDENTITY_FORMATS.has(field.format)) return true;\n return Boolean(field.widgets?.avatar || field.widgets?.entity_logo);\n}\n\n/**\n * Signature values (LinkedIn profile, contact data) get their own hue, see the\n * signature chips in pipe0.css; every other identity sits on the gray chip.\n */\nfunction chipMaterial(field: RecordValueField): string {\n if (field.widgets?.icon?.key === \"linkedin\") return \"p0-linkedin-chip\";\n // No leading glyph on contact chips, so the text gets the full inner padding.\n if (field.format === \"email\" || field.format === \"phone\") return \"p0-contact-chip pz:pl-2\";\n return \"p0-cell-chip\";\n}\n\n/**\n * Booleans read as a state, not a word: a quiet check tile for true, an empty\n * tile plus muted label for false. Both stay in the gray palette so a column\n * of booleans adds no local contrast; the check mark alone carries the signal.\n */\nfunction BooleanValue({ value }: { value: boolean }) {\n return value ? (\n <span className=\"pz:inline-flex pz:items-center pz:gap-1.5\">\n <StateTile state=\"checked\" />\n <span>True</span>\n </span>\n ) : (\n <span className=\"pz:inline-flex pz:items-center pz:gap-1.5 pz:text-muted-foreground\">\n <StateTile state=\"empty\" />\n <span>False</span>\n </span>\n );\n}\n\n/** The value's text: status wording, a link, a JSON chip, a boolean tile, or the plain value. */\nexport function RecordValueText({\n field,\n inChip = false,\n}: {\n field: RecordValueField;\n inChip?: boolean;\n}) {\n if (field.status === \"processing\")\n return <span className=\"pz:text-muted-foreground pz:animate-status-pulse\">Running…</span>;\n if (field.status === \"queued\")\n return <span className=\"pz:text-muted-foreground pz:animate-status-pulse\">Queued…</span>;\n if (field.status === \"skipped\") return <span>{field.reason?.summary || \"Skipped\"}</span>;\n if (field.status === \"failed\")\n return <span className=\"pz:text-failed-foreground\">{field.reason?.summary || \"Failed\"}</span>;\n if (field.status === \"no_result\") return field.reason?.summary || \"No result\";\n if (field.status === \"pending\") return \"\";\n\n if (field.type === \"boolean\") return <BooleanValue value={Boolean(field.value)} />;\n\n const displayLabel = field.widgets?.display_value?.label;\n\n if (field.type === \"json\") {\n return displayLabel ? (\n <span\n className={cn(\"pz:text-muted-foreground pz:text-sm pz:underline\", marksClassName(field))}\n >\n {displayLabel}\n </span>\n ) : (\n <JsonChip value={field.value} />\n );\n }\n\n if (isLinkFormat(field.format) && field.type === \"string\") {\n const url = String(field.value);\n // Bare domains (e.g. company_domain) are valid values but relative hrefs\n const href = /^https?:\\/\\//i.test(url) ? url : `https://${url}`;\n const display = (displayLabel ?? url).substring(0, CELL_VALUE_LENGTH_LIMIT);\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer noopener\"\n onClick={(e) => e.stopPropagation()}\n className={cn(\n // Explicit colour and decoration: the library's reset covers only\n // its form root, so outside a reset host a bare <a> is blue.\n \"pz:cursor-pointer pz:text-inherit pz:underline-offset-2 pz:decoration-muted-foreground/60 pz:hover:decoration-foreground\",\n inChip ? \"pz:no-underline pz:hover:underline\" : \"pz:underline\",\n )}\n >\n {display}\n </a>\n );\n }\n\n if (displayLabel) {\n const marks = marksClassName(field);\n return marks ? <span className={marks}>{displayLabel}</span> : displayLabel;\n }\n\n if (field.type === \"number\") return String(field.value as number);\n\n if (field.type === \"string\") {\n return <span>{String(field.value as string).substring(0, CELL_VALUE_LENGTH_LIMIT)}</span>;\n }\n\n if (field.type === \"unknown\") return JSON.stringify(field.value);\n\n const _: never = field.type;\n return JSON.stringify(field.value);\n}\n\nconst DEFAULT_WIDGETS: readonly RecordWidgetKey[] = [\n \"avatar\",\n \"entity_logo\",\n \"external_link\",\n \"location_indicator\",\n \"icon\",\n \"emoji\",\n \"action_summary\",\n];\n\nexport interface RecordValueProps {\n field: RecordValueField;\n /** Which glyph widgets to draw, in order. Defaults to every glyph widget. */\n widgets?: readonly RecordWidgetKey[];\n /**\n * Rendered after the identity chip (or the glyphs) and before plain text —\n * the slot for provenance tiles such as a waterfall or a status tile.\n */\n afterGlyphs?: ReactNode;\n /** Class for the plain-text box (not used when the value sits on a chip). */\n textClassName?: string;\n}\n\n/**\n * A read-only record value: glyph widgets, then the value — identity values\n * (domains, emails, profiles, people, companies) on a chip. Renders as\n * `display: contents` so the parts lay out in the host's flex row.\n */\nexport function RecordValue({\n field,\n widgets = DEFAULT_WIDGETS,\n afterGlyphs,\n textClassName,\n}: RecordValueProps) {\n const glyphs = (\n <>\n <FormatGlyph field={field} />\n <RecordWidgets field={field} widgets={widgets} />\n </>\n );\n\n if (isIdentityValue(field)) {\n return (\n <span data-p0=\"record-value\" className=\"pz:contents\">\n <span\n className={cn(\n \"pz:inline-flex pz:min-w-0 pz:max-w-75 pz:shrink pz:items-center pz:gap-1.5 pz:py-0.5 pz:pr-2 pz:pl-1\",\n // Domains are outlined pills (an address you can open), the other\n // identities sit on the filled gray chip.\n field.format === \"domain\"\n ? \"pz:rounded-full pz:border pz:border-border pz:bg-background pz:pl-1.5 pz:shadow-[0_1px_1px_rgb(0_0_0/0.03)]\"\n : cn(\"pz:rounded-md\", chipMaterial(field)),\n )}\n >\n {glyphs}\n <span className=\"pz:min-w-0 pz:truncate\">\n <RecordValueText field={field} inChip />\n </span>\n </span>\n {afterGlyphs}\n </span>\n );\n }\n\n return (\n <span data-p0=\"record-value\" className=\"pz:contents\">\n {glyphs}\n {afterGlyphs}\n <span\n className={cn(\n \"pz:block pz:basis-0 pz:grow pz:overflow-hidden pz:max-w-75 pz:text-ellipsis\",\n textClassName,\n )}\n >\n <RecordValueText field={field} />\n </span>\n </span>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import * as _$react from "react";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
+ import { RecordField } from "@pipe0/base";
4
+
5
+ //#region src/records/record-widgets.d.ts
6
+ /** The slice of a record field the read-only renderers look at. */
7
+ type RecordValueField = Pick<RecordField, "value" | "status" | "type" | "format" | "reason" | "widgets">;
8
+ /**
9
+ * Rewrites every image URL the records components render (avatars, logos,
10
+ * favicons). Identity by default; a host with a strict image policy (the MCP
11
+ * Apps view) routes them through one allowed domain.
12
+ */
13
+ declare const RecordImageUrlContext: _$react.Context<(src: string) => string>;
14
+ /** 24px round avatar: the image when it loads, coloured initials otherwise. */
15
+ declare function RecordAvatar({
16
+ name,
17
+ imageSrc
18
+ }: {
19
+ name: string;
20
+ imageSrc?: string | null;
21
+ }): _$react_jsx_runtime0.JSX.Element;
22
+ /**
23
+ * LinkedIn's mark, drawn as the real "in" bug: one filled rounded square with
24
+ * the letters cut out (an SVG mask), so the letters show whatever surface the
25
+ * badge sits on.
26
+ */
27
+ declare function LinkedinMark({
28
+ className
29
+ }: {
30
+ className?: string;
31
+ }): _$react_jsx_runtime0.JSX.Element;
32
+ /** LinkedIn's mark in LinkedIn blue, in a 20px slot. */
33
+ declare function LinkedinBadge({
34
+ className,
35
+ iconClassName
36
+ }: {
37
+ className?: string;
38
+ iconClassName?: string;
39
+ }): _$react_jsx_runtime0.JSX.Element;
40
+ /**
41
+ * The one glyph for a yes/no state in a cell: a quiet check tile, an empty
42
+ * tile, or the failed tile. Booleans and action outcomes share it so a
43
+ * column of "Enrolled" reads like a column of "True" — one vocabulary, gray.
44
+ */
45
+ declare function StateTile({
46
+ state
47
+ }: {
48
+ state: "checked" | "empty" | "failed";
49
+ }): _$react_jsx_runtime0.JSX.Element;
50
+ /** A favicon for link formats that carry no logo widget of their own. */
51
+ declare function FormatGlyph({
52
+ field
53
+ }: {
54
+ field: RecordValueField;
55
+ }): _$react_jsx_runtime0.JSX.Element | null;
56
+ type RecordWidgetKey = "avatar" | "entity_logo" | "external_link" | "location_indicator" | "icon" | "emoji" | "action_summary";
57
+ /** The glyph widgets a field carries, in the order given. */
58
+ declare function RecordWidgets({
59
+ field,
60
+ widgets,
61
+ className
62
+ }: {
63
+ field: RecordValueField;
64
+ widgets: readonly RecordWidgetKey[];
65
+ className?: string;
66
+ }): _$react_jsx_runtime0.JSX.Element | null;
67
+ //#endregion
68
+ export { FormatGlyph, LinkedinBadge, LinkedinMark, RecordAvatar, RecordImageUrlContext, RecordValueField, RecordWidgetKey, RecordWidgets, StateTile };
69
+ //# sourceMappingURL=record-widgets.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-widgets.d.mts","names":[],"sources":["../../src/records/record-widgets.tsx"],"mappings":";;;;;;KAMY,gBAAA,GAAmB,IAAA,CAC7B,WAAA;;;AADF;;;cAUa,qBAAA,EAA4E,OAAA,CAAvD,OAAA,EAAA,GAAA;;iBAgDlB,YAAA,CAAA;EAAe,IAAA;EAAM;AAAA;EAAc,IAAA;EAAc,QAAA;AAAA,IAA0B,oBAAA,CAAA,GAAA,CAAA,OAAA;;AAA3F;;;;iBAmCgB,YAAA,CAAA;EAAe;AAAA;EAAe,SAAA;AAAA,IAAoB,oBAAA,CAAA,GAAA,CAAA,OAAA;;iBA+BlD,aAAA,CAAA;EACd,SAAA;EACA;AAAA;EAEA,SAAA;EACA,aAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA;;;;;;iBAmEe,SAAA,CAAA;EAAY;AAAA;EAAW,KAAA;AAAA,IAAuC,oBAAA,CAAA,GAAA,CAAA,OAAA;;iBAuE9D,WAAA,CAAA;EAAc;AAAA;EAAW,KAAA,EAAO,gBAAA;AAAA,IAAkB,oBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,KActD,eAAA;;iBAUI,aAAA,CAAA;EACd,KAAA;EACA,OAAA;EACA;AAAA;EAEA,KAAA,EAAO,gBAAA;EACP,OAAA,WAAkB,eAAA;EAClB,SAAA;AAAA,IACD,oBAAA,CAAA,GAAA,CAAA,OAAA"}