@signalcore/ui 0.1.0 → 1.0.0-beta.1
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/README.md +896 -513
- package/dist/AgentAbout.d.ts +186 -0
- package/dist/AgentAbout.js +1020 -0
- package/dist/AgentAbout.js.map +1 -0
- package/dist/AgentCard.d.ts +49 -0
- package/dist/AgentCard.js +77 -0
- package/dist/AgentCard.js.map +1 -0
- package/dist/AgentChat.d.ts +233 -0
- package/dist/AgentChat.js +1127 -0
- package/dist/AgentChat.js.map +1 -0
- package/dist/AgentSpace.d.ts +112 -0
- package/dist/AgentSpace.js +339 -0
- package/dist/AgentSpace.js.map +1 -0
- package/dist/AgentTasks.d.ts +48 -0
- package/dist/AgentTasks.js +120 -0
- package/dist/AgentTasks.js.map +1 -0
- package/dist/BrowserView.d.ts +52 -0
- package/dist/BrowserView.js +328 -0
- package/dist/BrowserView.js.map +1 -0
- package/dist/FileView.d.ts +63 -0
- package/dist/FileView.js +449 -0
- package/dist/FileView.js.map +1 -0
- package/dist/Modes.d.ts +13 -0
- package/dist/Modes.js +75 -0
- package/dist/Modes.js.map +1 -0
- package/dist/VoiceCall.d.ts +91 -0
- package/dist/VoiceCall.js +302 -0
- package/dist/VoiceCall.js.map +1 -0
- package/dist/about.d.ts +212 -0
- package/dist/about.js +136 -0
- package/dist/about.js.map +1 -0
- package/dist/agentIcons.d.ts +33 -0
- package/dist/agentIcons.js +36 -0
- package/dist/agentIcons.js.map +1 -0
- package/dist/automation/Automation.d.ts +35 -0
- package/dist/automation/Automation.js +268 -0
- package/dist/automation/Automation.js.map +1 -0
- package/dist/automation/RunView.d.ts +25 -0
- package/dist/automation/RunView.js +187 -0
- package/dist/automation/RunView.js.map +1 -0
- package/dist/automation/cron.d.ts +41 -0
- package/dist/automation/cron.js +169 -0
- package/dist/automation/cron.js.map +1 -0
- package/dist/automation/marks.js +121 -0
- package/dist/automation/marks.js.map +1 -0
- package/dist/automation/messages.d.ts +113 -0
- package/dist/automation/messages.js +113 -0
- package/dist/automation/messages.js.map +1 -0
- package/dist/automation/record.d.ts +47 -0
- package/dist/automation/record.js +177 -0
- package/dist/automation/record.js.map +1 -0
- package/dist/automation/types.d.ts +143 -0
- package/dist/automation/when.d.ts +36 -0
- package/dist/automation/when.js +168 -0
- package/dist/automation/when.js.map +1 -0
- package/dist/blocks.d.ts +185 -0
- package/dist/browser.js +292 -0
- package/dist/browser.js.map +1 -0
- package/dist/call.d.ts +89 -0
- package/dist/call.js +218 -0
- package/dist/call.js.map +1 -0
- package/dist/channelParts.js +26 -0
- package/dist/channelParts.js.map +1 -0
- package/dist/classes.js +8 -3
- package/dist/classes.js.map +1 -0
- package/dist/client.d.ts +146 -54
- package/dist/client.js +204 -1
- package/dist/client.js.map +1 -0
- package/dist/conversationFiles.js +46 -0
- package/dist/conversationFiles.js.map +1 -0
- package/dist/credentials.d.ts +45 -0
- package/dist/credentials.js +98 -0
- package/dist/credentials.js.map +1 -0
- package/dist/dev.js +17 -0
- package/dist/dev.js.map +1 -0
- package/dist/es.d.ts +17 -0
- package/dist/es.js +382 -0
- package/dist/es.js.map +1 -0
- package/dist/files.d.ts +21 -0
- package/dist/files.js +214 -0
- package/dist/files.js.map +1 -0
- package/dist/frames.d.ts +115 -0
- package/dist/frames.js +219 -0
- package/dist/frames.js.map +1 -0
- package/dist/icons.js +29 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +63 -60
- package/dist/index.js +59 -45
- package/dist/kit/AudioPlayer.d.ts +20 -0
- package/dist/kit/AudioPlayer.js +116 -0
- package/dist/kit/AudioPlayer.js.map +1 -0
- package/dist/kit/Button.d.ts +29 -0
- package/dist/kit/Button.js +59 -0
- package/dist/kit/Button.js.map +1 -0
- package/dist/kit/Card.d.ts +16 -0
- package/dist/kit/Card.js +36 -0
- package/dist/kit/Card.js.map +1 -0
- package/dist/kit/Chart.js +152 -0
- package/dist/kit/Chart.js.map +1 -0
- package/dist/kit/Choices.d.ts +21 -0
- package/dist/kit/Choices.js +99 -0
- package/dist/kit/Choices.js.map +1 -0
- package/dist/kit/Combobox.d.ts +26 -0
- package/dist/kit/Combobox.js +190 -0
- package/dist/kit/Combobox.js.map +1 -0
- package/dist/kit/DateField.d.ts +17 -0
- package/dist/kit/DateField.js +133 -0
- package/dist/kit/DateField.js.map +1 -0
- package/dist/kit/Field.d.ts +40 -0
- package/dist/kit/Field.js +98 -0
- package/dist/kit/Field.js.map +1 -0
- package/dist/kit/FileField.d.ts +113 -0
- package/dist/kit/FileField.js +341 -0
- package/dist/kit/FileField.js.map +1 -0
- package/dist/kit/FileMark.d.ts +15 -0
- package/dist/kit/FileMark.js +39 -0
- package/dist/kit/FileMark.js.map +1 -0
- package/dist/kit/Inputs.d.ts +59 -0
- package/dist/kit/Inputs.js +205 -0
- package/dist/kit/Inputs.js.map +1 -0
- package/dist/kit/List.d.ts +47 -0
- package/dist/kit/List.js +85 -0
- package/dist/kit/List.js.map +1 -0
- package/dist/kit/Mark.d.ts +30 -0
- package/dist/kit/Mark.js +27 -0
- package/dist/kit/Mark.js.map +1 -0
- package/dist/kit/MarkStack.d.ts +15 -0
- package/dist/kit/MarkStack.js +26 -0
- package/dist/kit/MarkStack.js.map +1 -0
- package/dist/kit/Note.d.ts +11 -0
- package/dist/kit/Note.js +31 -0
- package/dist/kit/Note.js.map +1 -0
- package/dist/kit/Popover.js +90 -0
- package/dist/kit/Popover.js.map +1 -0
- package/dist/kit/RangeField.d.ts +14 -0
- package/dist/kit/RangeField.js +47 -0
- package/dist/kit/RangeField.js.map +1 -0
- package/dist/kit/RatingField.d.ts +14 -0
- package/dist/kit/RatingField.js +50 -0
- package/dist/kit/RatingField.js.map +1 -0
- package/dist/kit/Stat.d.ts +26 -0
- package/dist/kit/Stat.js +46 -0
- package/dist/kit/Stat.js.map +1 -0
- package/dist/kit/Switch.d.ts +14 -0
- package/dist/kit/Switch.js +21 -0
- package/dist/kit/Switch.js.map +1 -0
- package/dist/kit/Tag.d.ts +16 -0
- package/dist/kit/Tag.js +20 -0
- package/dist/kit/Tag.js.map +1 -0
- package/dist/kit/Tile.d.ts +34 -0
- package/dist/kit/Tile.js +52 -0
- package/dist/kit/Tile.js.map +1 -0
- package/dist/kit/TimeField.d.ts +31 -0
- package/dist/kit/TimeField.js +109 -0
- package/dist/kit/TimeField.js.map +1 -0
- package/dist/kit/context.d.ts +22 -0
- package/dist/kit/context.js +46 -0
- package/dist/kit/context.js.map +1 -0
- package/dist/kit/dates.d.ts +14 -0
- package/dist/kit/dates.js +129 -0
- package/dist/kit/dates.js.map +1 -0
- package/dist/kit/messages.d.ts +99 -0
- package/dist/kit/messages.js +66 -0
- package/dist/kit/messages.js.map +1 -0
- package/dist/kit/numbers.d.ts +12 -0
- package/dist/kit/numbers.js +40 -0
- package/dist/kit/numbers.js.map +1 -0
- package/dist/kit/options.d.ts +10 -0
- package/dist/kit/options.js +23 -0
- package/dist/kit/options.js.map +1 -0
- package/dist/kit/uploads.d.ts +42 -0
- package/dist/kit/uploads.js +165 -0
- package/dist/kit/uploads.js.map +1 -0
- package/dist/kit/waveform.js +76 -0
- package/dist/kit/waveform.js.map +1 -0
- package/dist/locale.d.ts +1 -0
- package/dist/locale.js +1 -0
- package/dist/markdown.js +84 -0
- package/dist/markdown.js.map +1 -0
- package/dist/marks.js +217 -0
- package/dist/marks.js.map +1 -0
- package/dist/reveal.js +48 -0
- package/dist/reveal.js.map +1 -0
- package/dist/stepGlyphs.js +62 -0
- package/dist/stepGlyphs.js.map +1 -0
- package/dist/surface/Form.js +264 -0
- package/dist/surface/Form.js.map +1 -0
- package/dist/surface/Markdown.js +42 -0
- package/dist/surface/Markdown.js.map +1 -0
- package/dist/surface/Surface.d.ts +31 -17
- package/dist/surface/Surface.js +480 -57
- package/dist/surface/Surface.js.map +1 -0
- package/dist/surface/scope.d.ts +32 -0
- package/dist/surface/scope.js +23 -0
- package/dist/surface/scope.js.map +1 -0
- package/dist/surface/values.d.ts +44 -0
- package/dist/surface/values.js +237 -0
- package/dist/surface/values.js.map +1 -0
- package/dist/tint.d.ts +10 -0
- package/dist/tint.js +19 -0
- package/dist/tint.js.map +1 -0
- package/dist/types.d.ts +541 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/dist/useAgentFace.d.ts +18 -0
- package/dist/useAgentFace.js +45 -0
- package/dist/useAgentFace.js.map +1 -0
- package/dist/useCall.d.ts +39 -0
- package/dist/useCall.js +273 -0
- package/dist/useCall.js.map +1 -0
- package/dist/useConversation.d.ts +77 -0
- package/dist/useConversation.js +523 -0
- package/dist/useConversation.js.map +1 -0
- package/dist/useDictation.d.ts +17 -0
- package/dist/useDictation.js +68 -0
- package/dist/useDictation.js.map +1 -0
- package/dist/useLive.d.ts +26 -0
- package/dist/useLive.js +88 -0
- package/dist/useLive.js.map +1 -0
- package/dist/usePolled.js +68 -0
- package/dist/usePolled.js.map +1 -0
- package/dist/voice/Orb.d.ts +10 -9
- package/dist/voice/Orb.js +43 -39
- package/dist/voice/Orb.js.map +1 -0
- package/dist/voice/StillOrb.js +33 -0
- package/dist/voice/StillOrb.js.map +1 -0
- package/dist/voice/WebGLOrb.js +98 -0
- package/dist/voice/WebGLOrb.js.map +1 -0
- package/dist/voice/fluidDots.js +161 -0
- package/dist/voice/fluidDots.js.map +1 -0
- package/dist/voice/motion.js +84 -0
- package/dist/voice/motion.js.map +1 -0
- package/dist/voice/orbs.d.ts +32 -0
- package/dist/voice/orbs.js +16 -0
- package/dist/voice/orbs.js.map +1 -0
- package/dist/voice/useReducedMotion.js +16 -16
- package/dist/voice/useReducedMotion.js.map +1 -0
- package/dist/voice/wave.js +116 -0
- package/dist/voice/wave.js.map +1 -0
- package/dist/voice/webgl.js +177 -0
- package/dist/voice/webgl.js.map +1 -0
- package/dist/widget.js +284 -8
- package/package.json +49 -39
- package/src/AgentAbout.tsx +1621 -0
- package/src/AgentCard.tsx +123 -0
- package/src/AgentChat.tsx +1812 -0
- package/src/AgentSpace.tsx +540 -0
- package/src/AgentTasks.tsx +163 -0
- package/src/BrowserView.tsx +442 -0
- package/src/FileView.tsx +620 -0
- package/src/Modes.tsx +112 -0
- package/src/VoiceCall.tsx +411 -0
- package/src/about.ts +355 -0
- package/src/agentIcons.ts +56 -0
- package/src/automation/Automation.tsx +308 -0
- package/src/automation/RunView.tsx +213 -0
- package/src/automation/cron.ts +196 -0
- package/src/automation/marks.tsx +144 -0
- package/src/automation/messages.ts +231 -0
- package/src/automation/record.ts +206 -0
- package/src/automation/types.ts +146 -0
- package/src/automation/when.ts +195 -0
- package/src/blocks.ts +249 -0
- package/src/browser.ts +334 -0
- package/src/call.ts +300 -0
- package/src/channelParts.ts +17 -0
- package/src/classes.ts +10 -0
- package/src/client.ts +397 -0
- package/src/conversationFiles.ts +54 -0
- package/src/credentials.ts +158 -0
- package/src/dev.ts +20 -0
- package/src/es.ts +423 -0
- package/src/files.ts +238 -0
- package/src/frames.ts +291 -0
- package/src/icons.tsx +49 -0
- package/src/index.ts +271 -0
- package/src/kit/AudioPlayer.tsx +129 -0
- package/src/kit/Button.tsx +97 -0
- package/src/kit/Card.tsx +47 -0
- package/src/kit/Chart.tsx +129 -0
- package/src/kit/Choices.tsx +131 -0
- package/src/kit/Combobox.tsx +247 -0
- package/src/kit/DateField.tsx +156 -0
- package/src/kit/Field.tsx +137 -0
- package/src/kit/FileField.tsx +492 -0
- package/src/kit/FileMark.tsx +56 -0
- package/src/kit/Inputs.tsx +250 -0
- package/src/kit/List.tsx +135 -0
- package/src/kit/Mark.tsx +64 -0
- package/src/kit/MarkStack.tsx +29 -0
- package/src/kit/Note.tsx +42 -0
- package/src/kit/Popover.tsx +121 -0
- package/src/kit/RangeField.tsx +53 -0
- package/src/kit/RatingField.tsx +62 -0
- package/src/kit/Stat.tsx +60 -0
- package/src/kit/Switch.tsx +28 -0
- package/src/kit/Tag.tsx +32 -0
- package/src/kit/Tile.tsx +74 -0
- package/src/kit/TimeField.tsx +157 -0
- package/src/kit/context.tsx +246 -0
- package/src/kit/dates.ts +150 -0
- package/src/kit/messages.ts +160 -0
- package/src/kit/numbers.ts +44 -0
- package/src/kit/options.ts +30 -0
- package/src/kit/uploads.ts +244 -0
- package/src/kit/waveform.ts +84 -0
- package/src/locale.ts +6 -0
- package/src/markdown.ts +69 -0
- package/src/marks.tsx +328 -0
- package/src/reveal.ts +52 -0
- package/src/stepGlyphs.ts +83 -0
- package/src/styles.css +6970 -0
- package/src/surface/Form.tsx +299 -0
- package/src/surface/Markdown.tsx +55 -0
- package/src/surface/Surface.tsx +605 -0
- package/src/surface/scope.ts +82 -0
- package/src/surface/values.ts +361 -0
- package/src/tint.ts +14 -0
- package/src/types.ts +604 -0
- package/src/useAgentFace.ts +47 -0
- package/src/useCall.ts +292 -0
- package/src/useConversation.ts +627 -0
- package/src/useDictation.ts +83 -0
- package/src/useLive.ts +115 -0
- package/src/usePolled.ts +60 -0
- package/src/voice/Orb.tsx +45 -0
- package/src/voice/StillOrb.tsx +29 -0
- package/src/voice/WebGLOrb.tsx +98 -0
- package/src/voice/fluidDots.tsx +171 -0
- package/src/voice/motion.ts +112 -0
- package/src/voice/orbs.ts +39 -0
- package/src/voice/useReducedMotion.ts +24 -0
- package/src/voice/wave.tsx +129 -0
- package/src/voice/webgl.ts +209 -0
- package/src/widget/css.d.ts +5 -0
- package/src/widget/element.tsx +535 -0
- package/src/widget/index.ts +10 -0
- package/src/widget/mount.ts +27 -0
- package/src/widget/widget.css +253 -0
- package/dist/SignalcoreProvider.d.ts +0 -113
- package/dist/SignalcoreProvider.js +0 -84
- package/dist/automations/AppMarks.d.ts +0 -11
- package/dist/automations/AppMarks.js +0 -18
- package/dist/automations/AutomationCard.d.ts +0 -27
- package/dist/automations/AutomationCard.js +0 -53
- package/dist/automations/AutomationsWindow.d.ts +0 -38
- package/dist/automations/AutomationsWindow.js +0 -57
- package/dist/automations/Card.d.ts +0 -46
- package/dist/automations/Card.js +0 -45
- package/dist/automations/ScheduleMarks.d.ts +0 -13
- package/dist/automations/ScheduleMarks.js +0 -24
- package/dist/automations/presentationIcons.d.ts +0 -7
- package/dist/automations/presentationIcons.js +0 -67
- package/dist/automations/schedule.d.ts +0 -25
- package/dist/automations/schedule.js +0 -59
- package/dist/automations/time.d.ts +0 -3
- package/dist/automations/time.js +0 -25
- package/dist/browser/BrowserView.d.ts +0 -43
- package/dist/browser/BrowserView.js +0 -94
- package/dist/browser/room.d.ts +0 -21
- package/dist/browser/room.js +0 -33
- package/dist/browser/useBrowserSession.d.ts +0 -17
- package/dist/browser/useBrowserSession.js +0 -67
- package/dist/builder/BuilderChat.d.ts +0 -32
- package/dist/builder/BuilderChat.js +0 -41
- package/dist/builder/BuilderTranscript.d.ts +0 -49
- package/dist/builder/BuilderTranscript.js +0 -62
- package/dist/builder/StatusLine.d.ts +0 -8
- package/dist/builder/StatusLine.js +0 -17
- package/dist/builder/answer.d.ts +0 -7
- package/dist/builder/answer.js +0 -8
- package/dist/builder/blocks.d.ts +0 -31
- package/dist/builder/blocks.js +0 -74
- package/dist/builder/items.d.ts +0 -15
- package/dist/builder/items.js +0 -21
- package/dist/builder/steps.d.ts +0 -20
- package/dist/builder/steps.js +0 -120
- package/dist/builder/time.d.ts +0 -4
- package/dist/builder/time.js +0 -24
- package/dist/builder/useBuildSession.d.ts +0 -36
- package/dist/builder/useBuildSession.js +0 -130
- package/dist/builder/workingOn.d.ts +0 -7
- package/dist/builder/workingOn.js +0 -15
- package/dist/chat/AgentChat.d.ts +0 -37
- package/dist/chat/AgentChat.js +0 -21
- package/dist/chat/ChatView.d.ts +0 -25
- package/dist/chat/ChatView.js +0 -34
- package/dist/chat/Composer.d.ts +0 -20
- package/dist/chat/Composer.js +0 -22
- package/dist/chat/MessageRow.d.ts +0 -22
- package/dist/chat/MessageRow.js +0 -32
- package/dist/chat/arrival.d.ts +0 -15
- package/dist/chat/arrival.js +0 -25
- package/dist/chat/history.d.ts +0 -24
- package/dist/chat/history.js +0 -45
- package/dist/chat/moments.d.ts +0 -25
- package/dist/chat/moments.js +0 -72
- package/dist/chat/types.d.ts +0 -12
- package/dist/chat/types.js +0 -1
- package/dist/chat/useComposer.d.ts +0 -46
- package/dist/chat/useComposer.js +0 -62
- package/dist/chat/useConversation.d.ts +0 -35
- package/dist/chat/useConversation.js +0 -71
- package/dist/chat/useStickToBottom.d.ts +0 -9
- package/dist/chat/useStickToBottom.js +0 -33
- package/dist/chat/useTurns.d.ts +0 -49
- package/dist/chat/useTurns.js +0 -111
- package/dist/classes.d.ts +0 -2
- package/dist/development.d.ts +0 -5
- package/dist/development.js +0 -8
- package/dist/flow/FlowWindow.d.ts +0 -42
- package/dist/flow/FlowWindow.js +0 -126
- package/dist/flow/index.d.ts +0 -16
- package/dist/flow/index.js +0 -16
- package/dist/flow/kinds.d.ts +0 -23
- package/dist/flow/kinds.js +0 -48
- package/dist/flow/map.d.ts +0 -44
- package/dist/flow/map.js +0 -225
- package/dist/flow/nodePaths.d.ts +0 -7
- package/dist/flow/nodePaths.js +0 -17
- package/dist/flow/relations.d.ts +0 -42
- package/dist/flow/relations.js +0 -174
- package/dist/host.d.ts +0 -124
- package/dist/host.js +0 -1
- package/dist/live/LiveView.d.ts +0 -28
- package/dist/live/LiveView.js +0 -55
- package/dist/live/capture.d.ts +0 -20
- package/dist/live/capture.js +0 -100
- package/dist/live/follow.d.ts +0 -26
- package/dist/live/follow.js +0 -72
- package/dist/live/paint.d.ts +0 -13
- package/dist/live/paint.js +0 -77
- package/dist/live/useLiveStream.d.ts +0 -16
- package/dist/live/useLiveStream.js +0 -57
- package/dist/look.d.ts +0 -33
- package/dist/look.js +0 -241
- package/dist/messages/en.d.ts +0 -3
- package/dist/messages/en.js +0 -251
- package/dist/messages/es.d.ts +0 -3
- package/dist/messages/es.js +0 -251
- package/dist/messages/index.d.ts +0 -16
- package/dist/messages/index.js +0 -33
- package/dist/messages/types.d.ts +0 -246
- package/dist/messages/types.js +0 -1
- package/dist/parts/Button.d.ts +0 -18
- package/dist/parts/Button.js +0 -17
- package/dist/parts/Icon.d.ts +0 -39
- package/dist/parts/Icon.js +0 -37
- package/dist/parts/Input.d.ts +0 -6
- package/dist/parts/Input.js +0 -11
- package/dist/parts/Spinner.d.ts +0 -2
- package/dist/parts/Spinner.js +0 -7
- package/dist/patterns.d.ts +0 -15
- package/dist/patterns.js +0 -5
- package/dist/presets.d.ts +0 -82
- package/dist/presets.js +0 -81
- package/dist/primitives.d.ts +0 -22
- package/dist/primitives.js +0 -58
- package/dist/request/RequestCard.d.ts +0 -34
- package/dist/request/RequestCard.js +0 -101
- package/dist/request/approval/ApprovalPreview.d.ts +0 -5
- package/dist/request/approval/ApprovalPreview.js +0 -27
- package/dist/request/approval/shapes.d.ts +0 -32
- package/dist/request/approval/shapes.js +0 -68
- package/dist/request/apps.d.ts +0 -11
- package/dist/request/apps.js +0 -27
- package/dist/request/cards.d.ts +0 -12
- package/dist/request/cards.js +0 -24
- package/dist/request/deliver.d.ts +0 -12
- package/dist/request/deliver.js +0 -21
- package/dist/request/handOver.d.ts +0 -18
- package/dist/request/handOver.js +0 -33
- package/dist/request/kinds/Approval.d.ts +0 -3
- package/dist/request/kinds/Approval.js +0 -9
- package/dist/request/kinds/Choice.d.ts +0 -3
- package/dist/request/kinds/Choice.js +0 -8
- package/dist/request/kinds/Connect.d.ts +0 -9
- package/dist/request/kinds/Connect.js +0 -119
- package/dist/request/kinds/FreeText.d.ts +0 -3
- package/dist/request/kinds/FreeText.js +0 -20
- package/dist/request/kinds/HandOver.d.ts +0 -13
- package/dist/request/kinds/HandOver.js +0 -20
- package/dist/request/kinds/Secret.d.ts +0 -7
- package/dist/request/kinds/Secret.js +0 -49
- package/dist/request/kinds/Upload.d.ts +0 -6
- package/dist/request/kinds/Upload.js +0 -47
- package/dist/request/types.d.ts +0 -83
- package/dist/request/types.js +0 -1
- package/dist/safeUrl.d.ts +0 -6
- package/dist/safeUrl.js +0 -8
- package/dist/stream/builder.d.ts +0 -176
- package/dist/stream/builder.js +0 -202
- package/dist/stream/reduce.d.ts +0 -51
- package/dist/stream/reduce.js +0 -58
- package/dist/stream/untilAborted.d.ts +0 -7
- package/dist/stream/untilAborted.js +0 -32
- package/dist/stream/useRunStream.d.ts +0 -26
- package/dist/stream/useRunStream.js +0 -137
- package/dist/styles.css +0 -2318
- package/dist/surface/HostNode.d.ts +0 -14
- package/dist/surface/HostNode.js +0 -30
- package/dist/surface/Node.d.ts +0 -7
- package/dist/surface/Node.js +0 -49
- package/dist/surface/SurfaceBoundary.d.ts +0 -26
- package/dist/surface/SurfaceBoundary.js +0 -20
- package/dist/surface/bindings.d.ts +0 -14
- package/dist/surface/bindings.js +0 -37
- package/dist/surface/check.d.ts +0 -27
- package/dist/surface/check.js +0 -102
- package/dist/surface/format.d.ts +0 -10
- package/dist/surface/format.js +0 -32
- package/dist/surface/hosts.d.ts +0 -6
- package/dist/surface/hosts.js +0 -11
- package/dist/surface/scene.d.ts +0 -21
- package/dist/surface/scene.js +0 -8
- package/dist/surface/templates/Browser.d.ts +0 -6
- package/dist/surface/templates/Browser.js +0 -11
- package/dist/surface/templates/Chart.d.ts +0 -6
- package/dist/surface/templates/Chart.js +0 -13
- package/dist/surface/templates/Choices.d.ts +0 -3
- package/dist/surface/templates/Choices.js +0 -12
- package/dist/surface/templates/Form.d.ts +0 -3
- package/dist/surface/templates/Form.js +0 -44
- package/dist/surface/templates/KeyValue.d.ts +0 -3
- package/dist/surface/templates/KeyValue.js +0 -7
- package/dist/surface/templates/Layout.d.ts +0 -5
- package/dist/surface/templates/Layout.js +0 -16
- package/dist/surface/templates/Live.d.ts +0 -6
- package/dist/surface/templates/Live.js +0 -9
- package/dist/surface/templates/Media.d.ts +0 -5
- package/dist/surface/templates/Media.js +0 -13
- package/dist/surface/templates/Slots.d.ts +0 -3
- package/dist/surface/templates/Slots.js +0 -19
- package/dist/surface/templates/Table.d.ts +0 -3
- package/dist/surface/templates/Table.js +0 -12
- package/dist/surface/templates/Text.d.ts +0 -4
- package/dist/surface/templates/Text.js +0 -15
- package/dist/surface/templates/index.d.ts +0 -7
- package/dist/surface/templates/index.js +0 -32
- package/dist/surface/types.d.ts +0 -68
- package/dist/surface/types.js +0 -6
- package/dist/theme.d.ts +0 -62
- package/dist/theme.js +0 -9
- package/dist/useTokens.d.ts +0 -7
- package/dist/useTokens.js +0 -41
- package/dist/voice/VoiceWindow.d.ts +0 -18
- package/dist/voice/VoiceWindow.js +0 -35
- package/dist/voice/index.d.ts +0 -13
- package/dist/voice/index.js +0 -12
- package/dist/voice/meter.d.ts +0 -16
- package/dist/voice/meter.js +0 -52
- package/dist/voice/orbColors.d.ts +0 -16
- package/dist/voice/orbColors.js +0 -75
- package/dist/voice/pushable.d.ts +0 -16
- package/dist/voice/pushable.js +0 -56
- package/dist/voice/useDictation.d.ts +0 -24
- package/dist/voice/useDictation.js +0 -60
- package/dist/voice/useReducedMotion.d.ts +0 -5
- package/dist/voice/useVoice.d.ts +0 -70
- package/dist/voice/useVoice.js +0 -197
- package/dist/voice/useVoicePrimitives.d.ts +0 -7
- package/dist/voice/useVoicePrimitives.js +0 -11
- package/dist/voice/voice.d.ts +0 -55
- package/dist/voice/voice.js +0 -9
- package/dist/voice/webSpeech.d.ts +0 -33
- package/dist/voice/webSpeech.js +0 -258
- package/dist/widget.js.map +0 -1
- package/dist/windows/AgentSpace.d.ts +0 -78
- package/dist/windows/AgentSpace.js +0 -135
- package/dist/windows/Captions.d.ts +0 -13
- package/dist/windows/Captions.js +0 -22
- package/dist/windows/Dock.d.ts +0 -37
- package/dist/windows/Dock.js +0 -22
- package/dist/windows/Journal.d.ts +0 -15
- package/dist/windows/Journal.js +0 -19
- package/dist/windows/KindMark.d.ts +0 -7
- package/dist/windows/KindMark.js +0 -31
- package/dist/windows/Pending.d.ts +0 -8
- package/dist/windows/Pending.js +0 -17
- package/dist/windows/Stage.d.ts +0 -18
- package/dist/windows/Stage.js +0 -21
- package/dist/windows/StatusLabel.d.ts +0 -9
- package/dist/windows/StatusLabel.js +0 -7
- package/dist/windows/Strip.d.ts +0 -17
- package/dist/windows/Strip.js +0 -42
- package/dist/windows/SurfaceWindow.d.ts +0 -20
- package/dist/windows/SurfaceWindow.js +0 -12
- package/dist/windows/WindowFrame.d.ts +0 -23
- package/dist/windows/WindowFrame.js +0 -22
- package/dist/windows/hearing.d.ts +0 -11
- package/dist/windows/hearing.js +0 -26
- package/dist/windows/kinds.d.ts +0 -47
- package/dist/windows/kinds.js +0 -28
- package/dist/windows/reduce.d.ts +0 -98
- package/dist/windows/reduce.js +0 -151
- package/dist/windows/registry.d.ts +0 -18
- package/dist/windows/registry.js +0 -61
- package/dist/windows/reveal.d.ts +0 -9
- package/dist/windows/reveal.js +0 -6
- package/dist/windows/space.d.ts +0 -21
- package/dist/windows/space.js +0 -6
- package/dist/windows/status.d.ts +0 -11
- package/dist/windows/status.js +0 -30
- package/dist/windows/types.d.ts +0 -15
- package/dist/windows/types.js +0 -1
- package/dist/windows/useLoaded.d.ts +0 -44
- package/dist/windows/useLoaded.js +0 -58
- package/dist/windows/useUnread.d.ts +0 -7
- package/dist/windows/useUnread.js +0 -21
- package/dist/windows/useWindows.d.ts +0 -70
- package/dist/windows/useWindows.js +0 -60
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The widget's own, beside the package's stylesheet: in its shadow root, or (`shadow="none"`) in
|
|
3
|
+
* the page, where the `signalcore-chat[shadow="none"]` rules stand for the `:host` ones. In its
|
|
4
|
+
* shadow root the page's styles stay out but its type and ink come in (the element reads them and
|
|
5
|
+
* gives them as `--_host-*`, which stand in for our defaults), and so do the `--sc-*` tokens set
|
|
6
|
+
* on the page or on the element. It takes the page's `color-scheme` (light on a page that names
|
|
7
|
+
* none, unless its text is light: then dark) unless `theme` names one. Its parts for the page are
|
|
8
|
+
* `::part(…)` (README, Make it yours).
|
|
9
|
+
*/
|
|
10
|
+
:host {
|
|
11
|
+
all: initial;
|
|
12
|
+
display: block;
|
|
13
|
+
color: inherit;
|
|
14
|
+
color-scheme: inherit;
|
|
15
|
+
font-family: inherit;
|
|
16
|
+
font-size: inherit;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
:host([theme="light"]),
|
|
20
|
+
signalcore-chat[shadow="none"][theme="light"] {
|
|
21
|
+
color-scheme: light;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
:host([theme="dark"]),
|
|
25
|
+
signalcore-chat[shadow="none"][theme="dark"],
|
|
26
|
+
[data-sc-widget][data-scheme="dark"] {
|
|
27
|
+
color-scheme: dark;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:host([hidden]) {
|
|
31
|
+
display: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
signalcore-chat[shadow="none"] {
|
|
35
|
+
display: block;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
signalcore-chat[shadow="none"][hidden] {
|
|
39
|
+
display: none;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Inline, it fills the element, which the page sizes (560px tall unless it says). */
|
|
43
|
+
:host([mode="inline"]),
|
|
44
|
+
signalcore-chat[shadow="none"][mode="inline"] {
|
|
45
|
+
height: 560px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
[data-sc-widget],
|
|
49
|
+
.sc-widget--inline {
|
|
50
|
+
height: 100%;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* The widget's measures: the floating panel's size, the launcher's, and how far from the
|
|
54
|
+
page's corner they sit. */
|
|
55
|
+
.sc-widget {
|
|
56
|
+
--_panel-width: var(--sc-panel-width, 400px);
|
|
57
|
+
--_panel-height: var(--sc-panel-height, 640px);
|
|
58
|
+
--_launcher: var(--sc-launcher-size, 56px);
|
|
59
|
+
--_offset: var(--sc-launcher-offset, 20px);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.sc-widget__panel {
|
|
63
|
+
overflow: hidden;
|
|
64
|
+
border: 1px solid var(--_line);
|
|
65
|
+
border-radius: calc(var(--_radius) + 4px);
|
|
66
|
+
background: var(--_surface);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.sc-widget--inline > .sc-widget__panel {
|
|
70
|
+
height: 100%;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Floating: a round button at the page's corner, the panel opening over it. */
|
|
74
|
+
.sc-widget__launcher {
|
|
75
|
+
position: fixed;
|
|
76
|
+
right: var(--_offset);
|
|
77
|
+
bottom: var(--_offset);
|
|
78
|
+
z-index: 2147483000;
|
|
79
|
+
display: grid;
|
|
80
|
+
place-items: center;
|
|
81
|
+
width: var(--_launcher);
|
|
82
|
+
height: var(--_launcher);
|
|
83
|
+
padding: 0;
|
|
84
|
+
border: 0;
|
|
85
|
+
border-radius: var(--_radius-full);
|
|
86
|
+
background: var(--_accent);
|
|
87
|
+
color: var(--_accent-fg);
|
|
88
|
+
box-shadow: var(--_shadow-overlay);
|
|
89
|
+
cursor: pointer;
|
|
90
|
+
transition: transform 0.15s ease;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.sc-widget__launcher:hover {
|
|
94
|
+
transform: scale(1.05);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.sc-widget__launcher:focus-visible {
|
|
98
|
+
outline: 3px solid var(--_focus);
|
|
99
|
+
outline-offset: 3px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.sc-widget__launcher > svg {
|
|
103
|
+
width: 46%;
|
|
104
|
+
height: 46%;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.sc-widget--floating > .sc-widget__panel {
|
|
108
|
+
position: fixed;
|
|
109
|
+
right: var(--_offset);
|
|
110
|
+
bottom: calc(var(--_offset) + var(--_launcher) + 12px);
|
|
111
|
+
z-index: 2147483000;
|
|
112
|
+
width: min(var(--_panel-width), calc(100vw - 2 * var(--_offset)));
|
|
113
|
+
height: min(var(--_panel-height), calc(100dvh - 3 * var(--_offset) - var(--_launcher) - 12px));
|
|
114
|
+
box-shadow: var(--_shadow-overlay);
|
|
115
|
+
animation: sc-pop 0.18s cubic-bezier(0.22, 1, 0.36, 1) both;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Floating on a wide screen (or in a wide box), the launcher is the panel's close: the space
|
|
119
|
+
draws none of its own. */
|
|
120
|
+
@media (min-width: 481px) {
|
|
121
|
+
.sc-widget--floating:not(.sc-widget--contained) .sc-space > .sc-space__close {
|
|
122
|
+
display: none;
|
|
123
|
+
}
|
|
124
|
+
.sc-widget--floating:not(.sc-widget--contained)
|
|
125
|
+
.sc-space
|
|
126
|
+
> .sc-space__close
|
|
127
|
+
~ .sc-space__body
|
|
128
|
+
> .sc-chat
|
|
129
|
+
> .sc-chat__log {
|
|
130
|
+
padding-top: calc(var(--_space) * 4);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
@container (min-width: 481px) {
|
|
135
|
+
.sc-widget--contained .sc-space > .sc-space__close {
|
|
136
|
+
display: none;
|
|
137
|
+
}
|
|
138
|
+
.sc-widget--contained .sc-space > .sc-space__close ~ .sc-space__body > .sc-chat > .sc-chat__log {
|
|
139
|
+
padding-top: calc(var(--_space) * 4);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* A phone: the panel takes the screen, and its own close is the way out. */
|
|
144
|
+
@media (max-width: 480px) {
|
|
145
|
+
.sc-widget--floating > .sc-widget__panel {
|
|
146
|
+
inset: 0;
|
|
147
|
+
width: auto;
|
|
148
|
+
height: auto;
|
|
149
|
+
border: 0;
|
|
150
|
+
border-radius: 0;
|
|
151
|
+
}
|
|
152
|
+
.sc-widget--open > .sc-widget__launcher {
|
|
153
|
+
display: none;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@media (prefers-reduced-motion: reduce) {
|
|
158
|
+
.sc-widget__launcher {
|
|
159
|
+
transition: none;
|
|
160
|
+
}
|
|
161
|
+
.sc-widget--floating > .sc-widget__panel {
|
|
162
|
+
animation: none;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/* Its look may put it at the page's left corner. */
|
|
167
|
+
.sc-widget--left > .sc-widget__launcher,
|
|
168
|
+
.sc-widget--left.sc-widget--floating > .sc-widget__panel {
|
|
169
|
+
right: auto;
|
|
170
|
+
left: var(--_offset);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/*
|
|
174
|
+
* `contained`: floating within the element's own box, which the page sizes, instead of at the
|
|
175
|
+
* page's corner (a preview of the widget on a site). Its box is the container the phone's rules
|
|
176
|
+
* read, so a narrow box shows the widget as a phone does.
|
|
177
|
+
*/
|
|
178
|
+
:host([contained]),
|
|
179
|
+
signalcore-chat[shadow="none"][contained] {
|
|
180
|
+
position: relative;
|
|
181
|
+
height: 100%;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
:host([contained]) [data-sc-widget],
|
|
185
|
+
signalcore-chat[shadow="none"][contained] [data-sc-widget] {
|
|
186
|
+
container-type: size;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.sc-widget--contained > .sc-widget__launcher,
|
|
190
|
+
.sc-widget--contained.sc-widget--floating > .sc-widget__panel {
|
|
191
|
+
position: absolute;
|
|
192
|
+
z-index: 1;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.sc-widget--contained.sc-widget--floating > .sc-widget__panel {
|
|
196
|
+
width: min(var(--_panel-width), calc(100% - 2 * var(--_offset)));
|
|
197
|
+
height: min(var(--_panel-height), calc(100% - 3 * var(--_offset) - var(--_launcher) - 12px));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@container (max-width: 480px) {
|
|
201
|
+
.sc-widget--contained.sc-widget--floating > .sc-widget__panel {
|
|
202
|
+
inset: 0;
|
|
203
|
+
width: auto;
|
|
204
|
+
height: auto;
|
|
205
|
+
border: 0;
|
|
206
|
+
border-radius: 0;
|
|
207
|
+
}
|
|
208
|
+
.sc-widget--contained.sc-widget--open > .sc-widget__launcher {
|
|
209
|
+
display: none;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/*
|
|
214
|
+
* `unstyled`: our look's defaults drop away (the host's tokens still apply): no grounds but the
|
|
215
|
+
* system's under a floating panel, no lines, no shadows, no corners, every ink the page's text.
|
|
216
|
+
* The layout stays, for the host's own stylesheet to dress.
|
|
217
|
+
*/
|
|
218
|
+
[data-sc-unstyled] .sc {
|
|
219
|
+
--_muted: var(--sc-muted, var(--_fg));
|
|
220
|
+
--_subtle: var(--sc-subtle, var(--_fg));
|
|
221
|
+
--_bg: var(--sc-bg, transparent);
|
|
222
|
+
--_surface: var(--sc-surface, transparent);
|
|
223
|
+
--_sunken: var(--sc-sunken, transparent);
|
|
224
|
+
--_line: var(--sc-line, transparent);
|
|
225
|
+
--_line-hover: var(--_line);
|
|
226
|
+
--_wash: transparent;
|
|
227
|
+
--_accent: var(--sc-accent, var(--_fg));
|
|
228
|
+
--_accent-fg: var(--sc-accent-fg, Canvas);
|
|
229
|
+
--_bubble: var(--sc-bubble, transparent);
|
|
230
|
+
--_primary: var(--sc-primary, transparent);
|
|
231
|
+
--_on-primary: var(--sc-on-primary, var(--_fg));
|
|
232
|
+
--_success: var(--sc-success, var(--_fg));
|
|
233
|
+
--_warning: var(--sc-warning, var(--_fg));
|
|
234
|
+
--_danger: var(--sc-danger, var(--_fg));
|
|
235
|
+
--_danger-fg: var(--sc-danger-fg, Canvas);
|
|
236
|
+
--_sky: var(--sc-sky, var(--_fg));
|
|
237
|
+
--_sand: var(--sc-sand, var(--_fg));
|
|
238
|
+
--_rose: var(--sc-rose, var(--_fg));
|
|
239
|
+
--_radius: var(--sc-radius, 0px);
|
|
240
|
+
--_radius-full: var(--sc-radius-full, 0px);
|
|
241
|
+
--_shadow: var(--sc-shadow, none);
|
|
242
|
+
--_shadow-raised: var(--sc-shadow-raised, none);
|
|
243
|
+
--_shadow-overlay: var(--sc-shadow-overlay, none);
|
|
244
|
+
--_focus: var(--sc-focus, currentColor);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
[data-sc-unstyled] .sc-widget__panel {
|
|
248
|
+
border-radius: var(--_radius);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
[data-sc-unstyled] .sc-widget--floating > .sc-widget__panel {
|
|
252
|
+
background: var(--sc-surface, Canvas);
|
|
253
|
+
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { type ReactNode } from "react";
|
|
2
|
-
import type { UiClient } from "./client.js";
|
|
3
|
-
import type { HostComponents } from "./host.js";
|
|
4
|
-
import { type ClassNames, type Part } from "./look.js";
|
|
5
|
-
import { type Language, type Locale, type MessageOverrides, type Messages } from "./messages/index.js";
|
|
6
|
-
import { type Patterns } from "./patterns.js";
|
|
7
|
-
import { type ThemeOption } from "./theme.js";
|
|
8
|
-
import type { DefaultWindowComponents, Viewer } from "./windows/kinds.js";
|
|
9
|
-
/** What every component below the provider can use. */
|
|
10
|
-
export interface Scope {
|
|
11
|
-
client: UiClient | undefined;
|
|
12
|
-
components: HostComponents;
|
|
13
|
-
classNames: ClassNames | undefined;
|
|
14
|
-
patterns: Patterns;
|
|
15
|
-
language: Language;
|
|
16
|
-
/** The host's components for the default windows, laid over the package's own. */
|
|
17
|
-
windows: DefaultWindowComponents;
|
|
18
|
-
viewer: Viewer;
|
|
19
|
-
}
|
|
20
|
-
export interface SignalcoreProviderProps {
|
|
21
|
-
/** The API, for what the user does on a card and for streams. Without one, hosts answer. */
|
|
22
|
-
client?: UiClient | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* The host's own components by name: the primitives surfaces are built from (`Button`, `Card`,
|
|
25
|
-
* `Table`, `Input`, `Select`) and the catalog's components (see `HostComponents`). Never the
|
|
26
|
-
* cards that ask the owner to decide (`RequestCard`).
|
|
27
|
-
*/
|
|
28
|
-
components?: HostComponents | undefined;
|
|
29
|
-
/**
|
|
30
|
-
* How it looks. By default (`"auto"`) the design system the page uses is found and followed
|
|
31
|
-
* (shadcn, Radix Themes, Material), and a page that uses none keeps its own font, color and
|
|
32
|
-
* scheme with our defaults. Name a system (`"shadcn"`) to skip the search, or pass tokens to
|
|
33
|
-
* lay over whichever system there is (`{ accent: "var(--brand)" }`; `preset` picks the system).
|
|
34
|
-
* Written as custom properties on the wrapper element, never on the page's root.
|
|
35
|
-
*/
|
|
36
|
-
theme?: ThemeOption | undefined;
|
|
37
|
-
/** Classes to add to the package's elements, by slot. */
|
|
38
|
-
classNames?: ClassNames | undefined;
|
|
39
|
-
/** Which layout our components take where they have two (see `Patterns`). */
|
|
40
|
-
patterns?: Partial<Patterns> | undefined;
|
|
41
|
-
/**
|
|
42
|
-
* The language of the words the components say, and of the dates they write: `"es"` (the
|
|
43
|
-
* default) or `"en"`.
|
|
44
|
-
*/
|
|
45
|
-
locale?: Locale | undefined;
|
|
46
|
-
/**
|
|
47
|
-
* Words to change, laid over the locale's dictionary: `{ send: "Post", verbs: { read: "Open" } }`.
|
|
48
|
-
* Hoist the object (or memoize it), so the components are not drawn again for nothing.
|
|
49
|
-
*/
|
|
50
|
-
messages?: MessageOverrides | undefined;
|
|
51
|
-
/**
|
|
52
|
-
* Leave out the shipped styles: the elements and their classes are the same, but the
|
|
53
|
-
* stylesheet does not apply to them, so a host styles them through `classNames` alone.
|
|
54
|
-
*/
|
|
55
|
-
unstyled?: boolean | undefined;
|
|
56
|
-
/**
|
|
57
|
-
* The components that draw the app's default windows (ADR 0011), by kind: `chat`,
|
|
58
|
-
* `automations`, `flow`, `voice`, `browser` and `live`. They are laid over the package's own
|
|
59
|
-
* (the chat, the browser and the live stream), so a host replaces one by naming its kind, and
|
|
60
|
-
* adds the ones that live in other entries (`FlowWindow` from `@signalcore/ui/flow`,
|
|
61
|
-
* `VoiceWindow` from `@signalcore/ui/voice`). A kind with no component shows its text twin.
|
|
62
|
-
* Hoist the object (or memoize it), so the shell is not drawn again for nothing.
|
|
63
|
-
*/
|
|
64
|
-
windows?: DefaultWindowComponents | undefined;
|
|
65
|
-
/**
|
|
66
|
-
* Who is looking: `"owner"` (the default) for the business's owner and team, `"end_user"` for
|
|
67
|
-
* a person the business serves (ADR 0009). The shell only opens the windows that viewer may
|
|
68
|
-
* see: an end user gets `chat` and `voice`, never `automations`, `flow` or the browser. The
|
|
69
|
-
* client does not say which credential it holds, so the host does; the API refuses an end
|
|
70
|
-
* user's credential the owner's calls whatever this says.
|
|
71
|
-
*/
|
|
72
|
-
viewer?: Viewer | undefined;
|
|
73
|
-
children: ReactNode;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* The one place a host says how SignalCore is reached and how it looks. It wraps its children in
|
|
77
|
-
* an element that carries the tokens (`display: contents` in styles.css, so it takes no room),
|
|
78
|
-
* which is why the styles reach everything below it and nothing else.
|
|
79
|
-
*/
|
|
80
|
-
export declare function SignalcoreProvider({ client, components, theme, classNames, patterns, locale, messages, unstyled, windows, viewer, children, }: SignalcoreProviderProps): import("react").JSX.Element;
|
|
81
|
-
/** The client, components and classes of the nearest provider; nothing set when there is none. */
|
|
82
|
-
export declare function useSignalcore(): Scope;
|
|
83
|
-
/** The words the components say, in the provider's language, with the host's own laid over. */
|
|
84
|
-
export declare function useMessages(): Messages;
|
|
85
|
-
/** The provider's language: its words, and the locale that dates are written in. */
|
|
86
|
-
export declare function useLanguage(): Language;
|
|
87
|
-
/** The props of the slots, with the host's classes: spread them onto the elements. */
|
|
88
|
-
export declare function useParts(): Part;
|
|
89
|
-
/**
|
|
90
|
-
* A component used outside any provider still gets the tokens: it brings a default one of its
|
|
91
|
-
* own. Inside a provider it adds nothing, so a host's theme is never overridden by a nested one.
|
|
92
|
-
*/
|
|
93
|
-
export declare function Scoped({ children }: {
|
|
94
|
-
children: ReactNode;
|
|
95
|
-
}): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react").JSX.Element | null | undefined;
|
|
96
|
-
/**
|
|
97
|
-
* What the platform draws itself. The host's components do not reach below it: the cards that
|
|
98
|
-
* ask the owner to decide (approve, connect, enter a secret, take the controls) are built from
|
|
99
|
-
* our own primitives only, so no replacement can change what an "Aprobar" button does or says.
|
|
100
|
-
* The host's tokens and classes still apply.
|
|
101
|
-
*/
|
|
102
|
-
export declare function Platform({ children }: {
|
|
103
|
-
children: ReactNode;
|
|
104
|
-
}): import("react").JSX.Element;
|
|
105
|
-
/**
|
|
106
|
-
* The same scope with another client, for what is drawn below it. A shell uses it to hear the
|
|
107
|
-
* answers its windows get, wherever a turn is sent from (the chat, a voice window), without any
|
|
108
|
-
* of them knowing it is there.
|
|
109
|
-
*/
|
|
110
|
-
export declare function WithClient({ client, children, }: {
|
|
111
|
-
client: UiClient | undefined;
|
|
112
|
-
children: ReactNode;
|
|
113
|
-
}): import("react").JSX.Element;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { createContext, useContext, useMemo } from "react";
|
|
3
|
-
import { partsOf } from "./look.js";
|
|
4
|
-
import { languageOf, } from "./messages/index.js";
|
|
5
|
-
import { DEFAULT_PATTERNS } from "./patterns.js";
|
|
6
|
-
import { themeStyle } from "./theme.js";
|
|
7
|
-
import { useTokens } from "./useTokens.js";
|
|
8
|
-
const NO_COMPONENTS = {};
|
|
9
|
-
const NO_WINDOWS = {};
|
|
10
|
-
const NOTHING = {
|
|
11
|
-
client: undefined,
|
|
12
|
-
components: NO_COMPONENTS,
|
|
13
|
-
classNames: undefined,
|
|
14
|
-
patterns: DEFAULT_PATTERNS,
|
|
15
|
-
language: languageOf(),
|
|
16
|
-
windows: NO_WINDOWS,
|
|
17
|
-
viewer: "owner",
|
|
18
|
-
};
|
|
19
|
-
const Context = createContext(null);
|
|
20
|
-
/**
|
|
21
|
-
* The one place a host says how SignalCore is reached and how it looks. It wraps its children in
|
|
22
|
-
* an element that carries the tokens (`display: contents` in styles.css, so it takes no room),
|
|
23
|
-
* which is why the styles reach everything below it and nothing else.
|
|
24
|
-
*/
|
|
25
|
-
export function SignalcoreProvider({ client, components, theme, classNames, patterns, locale, messages, unstyled = false, windows, viewer = "owner", children, }) {
|
|
26
|
-
const tokens = useTokens(theme);
|
|
27
|
-
const scope = useMemo(() => ({
|
|
28
|
-
client,
|
|
29
|
-
components: components ?? NO_COMPONENTS,
|
|
30
|
-
classNames,
|
|
31
|
-
patterns: { ...DEFAULT_PATTERNS, ...patterns },
|
|
32
|
-
language: languageOf(locale, messages),
|
|
33
|
-
windows: windows ?? NO_WINDOWS,
|
|
34
|
-
viewer,
|
|
35
|
-
}), [client, components, classNames, patterns, locale, messages, windows, viewer]);
|
|
36
|
-
const part = partsOf(classNames);
|
|
37
|
-
return (_jsx(Context, { value: scope, children: _jsx("div", { ...part("ui"), "data-sc-unstyled": unstyled ? "" : undefined, style: themeStyle(tokens), children: children }) }));
|
|
38
|
-
}
|
|
39
|
-
/** The client, components and classes of the nearest provider; nothing set when there is none. */
|
|
40
|
-
export function useSignalcore() {
|
|
41
|
-
return useContext(Context) ?? NOTHING;
|
|
42
|
-
}
|
|
43
|
-
/** The words the components say, in the provider's language, with the host's own laid over. */
|
|
44
|
-
export function useMessages() {
|
|
45
|
-
return useSignalcore().language.messages;
|
|
46
|
-
}
|
|
47
|
-
/** The provider's language: its words, and the locale that dates are written in. */
|
|
48
|
-
export function useLanguage() {
|
|
49
|
-
return useSignalcore().language;
|
|
50
|
-
}
|
|
51
|
-
/** The props of the slots, with the host's classes: spread them onto the elements. */
|
|
52
|
-
export function useParts() {
|
|
53
|
-
const { classNames } = useSignalcore();
|
|
54
|
-
return useMemo(() => partsOf(classNames), [classNames]);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* A component used outside any provider still gets the tokens: it brings a default one of its
|
|
58
|
-
* own. Inside a provider it adds nothing, so a host's theme is never overridden by a nested one.
|
|
59
|
-
*/
|
|
60
|
-
export function Scoped({ children }) {
|
|
61
|
-
const inside = useContext(Context) !== null;
|
|
62
|
-
return inside ? children : _jsx(SignalcoreProvider, { children: children });
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* What the platform draws itself. The host's components do not reach below it: the cards that
|
|
66
|
-
* ask the owner to decide (approve, connect, enter a secret, take the controls) are built from
|
|
67
|
-
* our own primitives only, so no replacement can change what an "Aprobar" button does or says.
|
|
68
|
-
* The host's tokens and classes still apply.
|
|
69
|
-
*/
|
|
70
|
-
export function Platform({ children }) {
|
|
71
|
-
const scope = useSignalcore();
|
|
72
|
-
const platform = useMemo(() => ({ ...scope, components: NO_COMPONENTS }), [scope]);
|
|
73
|
-
return _jsx(Context, { value: platform, children: children });
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* The same scope with another client, for what is drawn below it. A shell uses it to hear the
|
|
77
|
-
* answers its windows get, wherever a turn is sent from (the chat, a voice window), without any
|
|
78
|
-
* of them knowing it is there.
|
|
79
|
-
*/
|
|
80
|
-
export function WithClient({ client, children, }) {
|
|
81
|
-
const scope = useSignalcore();
|
|
82
|
-
const next = useMemo(() => ({ ...scope, client }), [scope, client]);
|
|
83
|
-
return _jsx(Context, { value: next, children: children });
|
|
84
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { AppDirectory } from "../request/types.js";
|
|
2
|
-
import type { AppChip } from "../windows/types.js";
|
|
3
|
-
export interface AppMarksProps {
|
|
4
|
-
/** The apps a part uses (`apps` of an automation or a skill in the overview). */
|
|
5
|
-
chips: AppChip[];
|
|
6
|
-
/** How the host knows its apps (names and logos); without it an app is a monogram. */
|
|
7
|
-
apps?: AppDirectory | undefined;
|
|
8
|
-
className?: string | undefined;
|
|
9
|
-
}
|
|
10
|
-
/** The apps a part uses, as their logos with names; dimmed, and said so, until connected. */
|
|
11
|
-
export declare function AppMarks(props: AppMarksProps): import("react").JSX.Element;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { AppLogo } from "../request/apps.js";
|
|
3
|
-
import { Scoped, useMessages, useParts } from "../SignalcoreProvider.js";
|
|
4
|
-
/** The apps a part uses, as their logos with names; dimmed, and said so, until connected. */
|
|
5
|
-
export function AppMarks(props) {
|
|
6
|
-
return (_jsx(Scoped, { children: _jsx(Marks, { ...props }) }));
|
|
7
|
-
}
|
|
8
|
-
function Marks({ chips, apps, className }) {
|
|
9
|
-
const part = useParts();
|
|
10
|
-
const copy = useMessages().automations;
|
|
11
|
-
return (_jsx("span", { ...part("app-marks", [], className), children: chips.map((chip) => (_jsxs("span", { ...part("app-marks__item", [!chip.connected && "off"]), title: chip.connected ? undefined : `${chip.name} ${copy.notConnected}`, children: [_jsx(AppLogo, { apps: apps, mark: {
|
|
12
|
-
provider: chip.provider,
|
|
13
|
-
name: chip.name,
|
|
14
|
-
icon: chip.icon,
|
|
15
|
-
website: chip.website,
|
|
16
|
-
size: 14,
|
|
17
|
-
} }), chip.name, !chip.connected && ` (${copy.notConnected})`] }, chip.alias))) }));
|
|
18
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { AppDirectory } from "../request/types.js";
|
|
2
|
-
import type { Automation, Presentation } from "../windows/types.js";
|
|
3
|
-
export interface AutomationCardProps {
|
|
4
|
-
automation: Automation;
|
|
5
|
-
/** What a model wrote about it (`presentations["automation:<id>"]` of the overview). */
|
|
6
|
-
presentation?: Presentation | undefined;
|
|
7
|
-
/** The builder is working on this automation: its state reads "building". */
|
|
8
|
-
building?: boolean | undefined;
|
|
9
|
-
/** It is the one the owner's eye should find: it comes into view and is washed once. */
|
|
10
|
-
focused?: boolean | undefined;
|
|
11
|
-
/** Changes each time the focus is pressed on again, replaying the wash. */
|
|
12
|
-
attention?: number | null | undefined;
|
|
13
|
-
/** Called with the automation's id when the owner asks to see its steps. */
|
|
14
|
-
onOpenFlow?: ((id: string) => void) | undefined;
|
|
15
|
-
/** Called with a line to say to the builder, as the owner. */
|
|
16
|
-
onAsk?: ((prompt: string) => void) | undefined;
|
|
17
|
-
/** How the host knows its apps (names and logos); without it an app is a monogram. */
|
|
18
|
-
apps?: AppDirectory | undefined;
|
|
19
|
-
className?: string | undefined;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* One automation as the owner reads it: what it is called and when it runs, its state, the
|
|
23
|
-
* apps it uses and how the last run went, with the model's own words over them when it has
|
|
24
|
-
* written some. It opens to the rest. `AutomationsWindow` is a list of these; a host that lays
|
|
25
|
-
* its page out by hand can use the card on its own.
|
|
26
|
-
*/
|
|
27
|
-
export declare function AutomationCard(props: AutomationCardProps): import("react").JSX.Element;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Scoped, useLanguage, useMessages, useParts } from "../SignalcoreProvider.js";
|
|
3
|
-
import { automationStatus } from "../windows/status.js";
|
|
4
|
-
import { StatusLabel } from "../windows/StatusLabel.js";
|
|
5
|
-
import { AppMarks } from "./AppMarks.js";
|
|
6
|
-
import { Card } from "./Card.js";
|
|
7
|
-
import { ScheduleMarks } from "./ScheduleMarks.js";
|
|
8
|
-
import { timeAgo } from "./time.js";
|
|
9
|
-
/** How an automation starts, as the catalog names the glyph that says it. */
|
|
10
|
-
const TRIGGER_GLYPH = {
|
|
11
|
-
cron: "clock",
|
|
12
|
-
webhook: "link",
|
|
13
|
-
event: "zap",
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* One automation as the owner reads it: what it is called and when it runs, its state, the
|
|
17
|
-
* apps it uses and how the last run went, with the model's own words over them when it has
|
|
18
|
-
* written some. It opens to the rest. `AutomationsWindow` is a list of these; a host that lays
|
|
19
|
-
* its page out by hand can use the card on its own.
|
|
20
|
-
*/
|
|
21
|
-
export function AutomationCard(props) {
|
|
22
|
-
return (_jsx(Scoped, { children: _jsx(Entry, { ...props }) }));
|
|
23
|
-
}
|
|
24
|
-
function Entry({ automation, presentation, building = false, focused = false, attention = null, onOpenFlow, onAsk, apps, className, }) {
|
|
25
|
-
const part = useParts();
|
|
26
|
-
const copy = useMessages();
|
|
27
|
-
const { locale } = useLanguage();
|
|
28
|
-
const words = copy.automations;
|
|
29
|
-
const status = automationStatus(automation.status, copy);
|
|
30
|
-
const last = automation.activity?.last;
|
|
31
|
-
const failed = last?.status === "failed";
|
|
32
|
-
const runs = automation.activity?.runs_7d ?? 0;
|
|
33
|
-
const failures = automation.activity?.failed_7d ?? 0;
|
|
34
|
-
const approvals = automation.apps.flatMap((app) => app.needs_approval.map((action) => words.approvalIn(action, app.name)));
|
|
35
|
-
return (_jsx(Card, { kind: automation.kind, className: className, presentation: presentation, glyph: TRIGGER_GLYPH[automation.kind], tint: "signal", building: building, focused: focused, attention: attention, meta: _jsx(ScheduleMarks, { cron: automation.cron, tone: building ? "signal" : "accent" }), fallback: {
|
|
36
|
-
title: automation.title,
|
|
37
|
-
tagline: (_jsxs(_Fragment, { children: [automation.when, automation.apps.length > 0 && _jsx(AppMarks, { chips: automation.apps, apps: apps })] })),
|
|
38
|
-
description: automation.summary ?? automation.reaches.join(". "),
|
|
39
|
-
facts: [
|
|
40
|
-
...(automation.cron ? [] : [{ label: words.when, value: automation.when }]),
|
|
41
|
-
...(approvals.length > 0
|
|
42
|
-
? [{ label: words.needsApproval, value: approvals.join(", ") }]
|
|
43
|
-
: []),
|
|
44
|
-
],
|
|
45
|
-
}, status: building ? (_jsx(StatusLabel, { tone: "signal", live: true, children: words.building })) : (_jsx(StatusLabel, { tone: status.tone, children: status.word })), extra: _jsxs("p", { ...part("automation__activity", [failed && "failed"]), children: [last
|
|
46
|
-
? failed
|
|
47
|
-
? words.failedLast(timeAgo(last.at, locale), last.error ?? null)
|
|
48
|
-
: words.ranLast(timeAgo(last.at, locale))
|
|
49
|
-
: words.neverRan, runs > 0 && `. ${words.thisWeek(runs, failures)}`] }), onOpen: onOpenFlow &&
|
|
50
|
-
(() => {
|
|
51
|
-
onOpenFlow(automation.id);
|
|
52
|
-
}), onAsk: onAsk }));
|
|
53
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { AppDirectory } from "../request/types.js";
|
|
2
|
-
import type { Overview } from "../windows/types.js";
|
|
3
|
-
export interface AutomationsWindowProps {
|
|
4
|
-
/**
|
|
5
|
-
* The agent as its owner sees it: its channels, its automations and what was written about
|
|
6
|
-
* them. It is what is drawn when given. Without it, the window asks for the overview of
|
|
7
|
-
* `agentId` through the provider's client (`agents.overview`).
|
|
8
|
-
*/
|
|
9
|
-
overview?: Overview | undefined;
|
|
10
|
-
/** The agent to ask about when there is no `overview`. */
|
|
11
|
-
agentId?: string | undefined;
|
|
12
|
-
/** The automation the builder is working on (its `id`): it comes into view and is washed once. */
|
|
13
|
-
focusedId?: string | null | undefined;
|
|
14
|
-
/** Changes each time the builder touches the focused automation again, replaying the wash. */
|
|
15
|
-
attention?: number | null | undefined;
|
|
16
|
-
/** The builder is working: the focused automation reads "building". */
|
|
17
|
-
building?: boolean | undefined;
|
|
18
|
-
/** The owner asked to see the steps of an automation or a channel (its `id`). */
|
|
19
|
-
onOpenFlow?: ((id: string) => void) | undefined;
|
|
20
|
-
/** A line to say to the builder as the owner: a change they may want. */
|
|
21
|
-
onAsk?: ((prompt: string) => void) | undefined;
|
|
22
|
-
/** How the host knows its apps (names and logos); without it an app is a monogram. */
|
|
23
|
-
apps?: AppDirectory | undefined;
|
|
24
|
-
/** What the window is called to someone who cannot see it. */
|
|
25
|
-
label?: string | undefined;
|
|
26
|
-
className?: string | undefined;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* What the agent does, as the cards the owner reads (ADR 0011's `automations` window): split the
|
|
30
|
-
* way the engine runs it, in conversations with customers (one card per channel it answers on,
|
|
31
|
-
* with the platform's reading of how it stands) and on its own (its automations: when they run,
|
|
32
|
-
* how the last time went, a way to see their steps). Each card shows what a model wrote about
|
|
33
|
-
* the part, in the owner's words, and the platform's own reading until it has.
|
|
34
|
-
*
|
|
35
|
-
* It is drawn from facts and never generated, and it is a window of the owner: the overview
|
|
36
|
-
* names their apps and runs, so it needs an owner's credential.
|
|
37
|
-
*/
|
|
38
|
-
export declare function AutomationsWindow(props: AutomationsWindowProps): import("react").JSX.Element;
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { AppLogo } from "../request/apps.js";
|
|
3
|
-
import { Scoped, useMessages, useParts } from "../SignalcoreProvider.js";
|
|
4
|
-
import { Pending } from "../windows/Pending.js";
|
|
5
|
-
import { channelStatus } from "../windows/status.js";
|
|
6
|
-
import { StatusLabel } from "../windows/StatusLabel.js";
|
|
7
|
-
import { useOverview } from "../windows/useLoaded.js";
|
|
8
|
-
import { AutomationCard } from "./AutomationCard.js";
|
|
9
|
-
import { Card } from "./Card.js";
|
|
10
|
-
/**
|
|
11
|
-
* What the agent does, as the cards the owner reads (ADR 0011's `automations` window): split the
|
|
12
|
-
* way the engine runs it, in conversations with customers (one card per channel it answers on,
|
|
13
|
-
* with the platform's reading of how it stands) and on its own (its automations: when they run,
|
|
14
|
-
* how the last time went, a way to see their steps). Each card shows what a model wrote about
|
|
15
|
-
* the part, in the owner's words, and the platform's own reading until it has.
|
|
16
|
-
*
|
|
17
|
-
* It is drawn from facts and never generated, and it is a window of the owner: the overview
|
|
18
|
-
* names their apps and runs, so it needs an owner's credential.
|
|
19
|
-
*/
|
|
20
|
-
export function AutomationsWindow(props) {
|
|
21
|
-
return (_jsx(Scoped, { children: _jsx(Frame, { ...props }) }));
|
|
22
|
-
}
|
|
23
|
-
function Frame({ overview, agentId, label, className, ...rest }) {
|
|
24
|
-
const part = useParts();
|
|
25
|
-
const copy = useMessages();
|
|
26
|
-
const loaded = useOverview(overview, agentId);
|
|
27
|
-
return (_jsx("section", { ...part("automations", [], className), "aria-label": label ?? copy.automations.label, "aria-busy": loaded.state === "loading", children: loaded.state === "ready" ? (_jsx(Cards, { overview: loaded.value, ...rest })) : (_jsx(Pending, { state: loaded.state, failed: copy.automations.cannotLoad })) }));
|
|
28
|
-
}
|
|
29
|
-
function Cards({ overview, focusedId = null, attention = null, building = false, onOpenFlow, onAsk, apps, }) {
|
|
30
|
-
const part = useParts();
|
|
31
|
-
const copy = useMessages();
|
|
32
|
-
const words = copy.automations;
|
|
33
|
-
const shown = overview.presentations ?? {};
|
|
34
|
-
return (_jsxs(_Fragment, { children: [_jsxs("div", { ...part("automations__group"), children: [_jsx("h3", { ...part("automations__title"), children: words.withCustomers }), _jsxs("ul", { ...part("automations__list"), children: [overview.channels.length === 0 && (_jsx("li", { ...part("automations__item"), children: _jsx(Card, { kind: "channel", presentation: undefined, glyph: "message-circle", fallback: {
|
|
35
|
-
title: words.noChannelTitle,
|
|
36
|
-
tagline: words.noChannelTagline,
|
|
37
|
-
description: words.noChannelBody,
|
|
38
|
-
} }) })), overview.channels.map((channel) => {
|
|
39
|
-
const status = channelStatus(channel.status, copy);
|
|
40
|
-
return (_jsx("li", { ...part("automations__item"), children: _jsx(Card, { kind: "channel", presentation: shown[channel.id] ?? shown[`channel:${channel.connection_id}`], glyph: "message-circle", mark: _jsx(AppLogo, { apps: apps, mark: {
|
|
41
|
-
provider: channel.provider,
|
|
42
|
-
name: channel.name,
|
|
43
|
-
icon: null,
|
|
44
|
-
size: 26,
|
|
45
|
-
} }), fallback: {
|
|
46
|
-
title: channel.title,
|
|
47
|
-
tagline: channel.name,
|
|
48
|
-
description: channel.summary,
|
|
49
|
-
}, status: _jsx(StatusLabel, { tone: status.tone, children: status.word }), onOpen: onOpenFlow &&
|
|
50
|
-
(() => {
|
|
51
|
-
onOpenFlow(channel.id);
|
|
52
|
-
}), onAsk: onAsk }) }, channel.id));
|
|
53
|
-
})] })] }), _jsxs("div", { ...part("automations__group"), children: [_jsx("h3", { ...part("automations__title"), children: words.onItsOwn }), overview.automations.length === 0 ? (_jsx("p", { ...part("automations__empty"), children: words.noAutomations })) : (_jsx("ul", { ...part("automations__list"), children: overview.automations.map((automation) => {
|
|
54
|
-
const focused = automation.id === focusedId;
|
|
55
|
-
return (_jsx("li", { ...part("automations__item"), children: _jsx(AutomationCard, { automation: automation, presentation: shown[`automation:${automation.id}`], building: building && focused, focused: focused, attention: focused ? attention : null, onOpenFlow: onOpenFlow, onAsk: onAsk, apps: apps }) }, automation.id));
|
|
56
|
-
}) }))] })] }));
|
|
57
|
-
}
|