@useloops/design-system
Version:
The official React based Loops design system
2 lines (1 loc) • 7.38 kB
JavaScript
import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useTheme as r,Box as i,Stack as a}from"@mui/material";import{mergeSx as n}from"merge-sx";import{forwardRef as s,useId as p,useState as l,useEffect as m}from"react";import{tone5 as d,tone3 as c}from"../../BrandCore/gradients.js";import b from"../../BrandCore/Icon/Icon.js";import"../../../utils/formValidation/misc.js";import"../../BrandCore/primitiveVariables.js";import"../../WebCore/utils/typography.util.js";import"../../WebCore/AnnualController/AnnualController.js";import"../../WebCore/SelectItem/SelectItem.js";import"../../WebCore/Accordion/Accordion.js";import"../../WebCore/Animations/FadeIn.js";import u from"../../WebCore/Typography/Typography.js";import"@mui/icons-material";import"../../WebCore/AutocompleteBaseField/_partials/AutocompleteListbox.js";import"../../WebCore/AutocompleteBaseField/_partials/StyledPopper.js";import"../../WebCore/AutocompleteBaseField/_partials/StyledAutocompleteField.js";import"../../WebCore/AutocompleteBaseField/_partials/AutocompleteChip.js";import"../../WebCore/AutocompleteBaseField/_partials/StyledAutocompleteInput.js";import"../../WebCore/Badge/Badge.js";import"../../WebCore/Breadcrumb/Breadcrumb.js";import"../../WebCore/Button/Button.js";import"../../WebCore/ButtonBase/ButtonBase.js";import"../../WebCore/ButtonTabGroup/_partials/ActiveIndicator.js";import"../../WebCore/ButtonTabGroup/_partials/ButtonTabsWrapper.js";import"../../WebCore/ButtonTabGroup/_partials/TabButton.js";import"../../WebCore/Checkbox/StyledCheckbox.js";import"../../WebCore/InputFieldBase/InputFieldBase.js";import"../../WebCore/CreatableAutocomplete/CreatableAutocomplete.js";import"../../WebCore/InputLabelBase/StyledInputLabelBase.js";import"../../WebCore/Differential/DifferentialContainer.js";import"../../WebCore/Differential/DifferentialRadio.js";import"../../WebCore/DropdownMenu/StyledMenu.js";import C from"../../WebCore/ExpandableTypographyClamp/ExpandableTypographyClamp.js";import"../../WebCore/FormGenerator/FormGenerator.js";import"../../WebCore/GridOverlay/GridOverlay.js";import"html-react-parser";import g from"../../WebCore/IconButton/IconButton.js";import"../../WebCore/IconButtonBase/IconButtonBase.js";import"../../WebCore/IconButtonGroup/IconButtonGroup.js";import"../../WebCore/Image/Image.js";import"../../WebCore/KbdGroup/Kbd.js";import"../../WebCore/KbdGroup/KbdGroup.js";import"../../WebCore/KeyValueLabel/KeyValueLabel.js";import"../../WebCore/Label/Label.js";import"../../WebCore/Likert/LikertContainer.js";import"../../WebCore/Likert/LikertLabel.js";import"../../WebCore/Likert/LikertRadio.js";import"../../WebCore/Link/StyledLink.js";import"@lottiefiles/dotlottie-react";import j from"../../WebCore/LoopsAiButton/LoopsAiButton.js";import"markdown-to-jsx";import W from"../../WebCore/Menu/Menu.js";import"../../WebCore/ModalLayout/_partials/ModalActionsWrapper.js";import"../../WebCore/ModalLayout/_partials/ModalContentWrapper.js";import"../../WebCore/Surface/Surface.js";import"../../WebCore/NavigationButton/NavigationButton.js";import"material-ui-popup-state/hooks";import"../../WebCore/Nudge/NudgeButton.js";import"../../WebCore/NumberField/NumberField.js";import"../../BrandCore/colorRamps.js";import"../../BrandCore/semanticColor.js";import"../../BrandCore/types.js";import"../../BrandCore/typography.js";import h from"../../WebCore/Progress/Progress.js";import"../../WebCore/Pill/StyledPill.js";import"../../WebCore/ProgressBar/ProgressBar.js";import"../../WebCore/Radio/StyledRadio.js";import"../../WebCore/Select/StyledSelect.js";import"../../WebCore/RankItem/RankItemContainer.js";import"../../WebCore/RankItem/RankItemLabel.js";import"../../WebCore/SortableList/SortableList.js";import"../../WebCore/SortableList/components/SortableItem/SortableItem.js";import"../../WebCore/SortableList/components/SortableOverlay/SortableOverlay.js";import"@tiptap/extension-placeholder";import"@tiptap/starter-kit";import"mui-tiptap";import"../../WebCore/RichTextField/StyledRichTextEditor.js";import B from"../../WebCore/Skeleton/Skeleton.js";import"../../WebCore/Slider/StyledSlider.js";import"../../WebCore/StarRating/StarRating.js";import"../../WebCore/Switch/StyledSwitch.js";import"../../WebCore/Textarea/Textarea.js";import"../../WebCore/TrialCard/TrialCardContainers.js";import"../../WebCore/TrialCard/TrialPill.js";import"../../WebCore/UserMenu/UserMenuButton.js";import"../../WebCore/VideoModal/VideoModal.js";const y=s(({heading:s,body:y,bodyLineClamp:x=6,attribution:f,menuItems:k,onStartChatClick:S,onRetryClick:I,loading:L,loadingMessage:v="",error:A,slotProps:T,sx:w},R)=>{const F=r(),M=`gradient-${p()}`,[G,P]=l(x);return m(()=>{P(x)},[x]),e(i,{ref:R,sx:n({boxShadow:F.custom.elevation.aiSummary,borderRadius:"8px",background:c(F),padding:"1px"},w),children:o(a,{sx:{padding:F.spacing(F.custom.padding.md),gap:F.spacing(F.custom.padding.sm),borderRadius:"7px",background:d(F)},children:[(s?.length||k?.length)&&e(a,{direction:"row",alignItems:"flex-start",justifyContent:"space-between",gap:F.spacing(F.custom.padding.md),children:L?v?.length?o(a,{direction:"row",alignItems:"center",gap:1,children:[e(h,{sizing:"sm",sx:{position:"static",color:F.custom.palette.neutral[400]}}),o(a,{direction:"row",alignItems:"center",gap:1,sx:{alignItems:"center"},children:[e(u,{component:"p",variation:"sm",className:A?"ellipsis-loading":void 0,children:v}),A&&void 0!==I&&e(u,{component:"p",variation:"sm",onClick:I,children:"Refresh",...T?.retry,sx:n({textDecoration:"underline",cursor:"pointer"},T?.retry?.sx)})]})]}):e(B,{...T?.skeleton}):o(t,{children:[e(u,{component:"p",variation:"sm",fontWeight:500,color:F.custom.palette.text.primary,...T?.heading,children:s}),k?.length&&e(W,{trigger:e(g,{icon:e(b,{name:"more-horizontal",color:F.custom.palette.icon.primary}),sizing:"sm"}),placement:"bottom-end",offset:[0,8],width:165,menuItems:k,...T?.menu})]})}),L&&o(t,{children:[e(B,{...T?.skeleton}),e(B,{...T?.skeleton}),e(B,{...T?.skeleton}),e(B,{...T?.skeleton}),e(B,{...T?.skeleton}),e(B,{...T?.skeleton})]}),!L&&y?.length&&e(C,{variation:"sm",color:F.custom.palette.text.primary,clamp:G,slotProps:{gradientBox:{background:F.custom.palette.purple[0]}},onShowMoreClick:()=>{P(void 0)},onShowLessClick:()=>{P(x)},...T?.expandableTypographyClamp,backgroundColorOverride:F.custom.palette.purple[0],children:y}),(f?.length||void 0!==S)&&o(a,{direction:"row",alignItems:"center",justifyContent:"space-between",pt:F.spacing(F.custom.padding.xs),gap:F.spacing(F.custom.padding.md),children:[f?.length&&o(a,{direction:"row",alignItems:"center",gap:F.spacing(F.custom.padding.xs),children:[e("svg",{style:{width:0,height:0,position:"absolute"},children:e("defs",{children:o("linearGradient",{id:M,gradientTransform:"rotate(-18)",children:[e("stop",{offset:"0%",stopColor:F.custom.palette.purple[600]}),e("stop",{offset:"100%",stopColor:F.custom.palette.blue[400]})]})})}),e(b,{name:"ai",size:20,...T?.attributionIcon,sx:n({"& *":{fill:`url(#${M})`}},T?.attributionIcon?.sx)}),e(u,{component:"p",variation:"xs",fontWeight:500,...T?.attribution,sx:n({background:c(F),backgroundClip:"text","-webkit-background-clip":"text","-webkit-text-fill-color":"transparent"},T?.attribution?.sx),children:f})]}),void 0!==S&&e(j,{text:"Start Chat",onClick:S,loading:L,disabled:L,slotProps:{button:{sx:{...T?.startChatButton?.sx}}}})]})]})})});export{y as default};