Skip to content

Commit 6e80902

Browse files
Bill LeoutsakosBill Leoutsakos
authored andcommitted
feat(typesafe): add theme-aware brand icon
1 parent 5ea05ab commit 6e80902

6 files changed

Lines changed: 40 additions & 13 deletions

File tree

‎apps/docs/components/icons.tsx‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2532,6 +2532,19 @@ export function TypeformIcon(props: SVGProps<SVGSVGElement>) {
25322532
)
25332533
}
25342534

2535+
export function TypeSafeIcon(props: SVGProps<SVGSVGElement>) {
2536+
return (
2537+
<svg {...props} viewBox='0 0 102.6 144' fill='none' xmlns='http://www.w3.org/2000/svg'>
2538+
<path
2539+
fill='currentColor'
2540+
fillRule='evenodd'
2541+
d='M49.119.607a4.56 4.56 0 0 1 4.558.006l.005-.006L77.11 14.128a4.57 4.57 0 0 1 2.28 3.954v24.252l20.835 12.043a4.56 4.56 0 0 1 2.29 3.955v54.072a4.56 4.56 0 0 1-2.284 3.954l-.006-.006c-.044.026-.08.052-.11.066l-.027.011-46.702 26.959a4.6 4.6 0 0 1-4.031.269l-.544-.269-23.34-13.531-.038-.022a4.58 4.58 0 0 1-2.28-3.96v-24.224L2.46 89.684h-.01l-.176-.104a4.6 4.6 0 0 1-1.34-1.186l-.006-.006a4.6 4.6 0 0 1-.642-1.203l.005-.005A4.5 4.5 0 0 1 0 85.63V31.565c0-1.633.88-3.145 2.29-3.96zm-12.28 125.279 14.262 8.265 37.707-21.758-14.274-8.249zM55.972 61.27v24.4a4.56 4.56 0 0 1-2.724 4.157l-20.962 12.148v15.992l37.685-21.731V53.164zm23.143 34.977 14.267 8.238V60.968l-14.267-8.244zm-65.407-10.61 13.883 8.029 14.25-8.249-13.85-7.996zM9.143 34.195v43.539l14.295-8.227V45.085c0-1.635.865-3.142 2.285-3.96l21.11-12.169V12.464zm23.428 35.323 13.982 8.051V61.11l-13.982-8.078zm4.563-24.427 13.873 8.029 14.278-8.243-13.883-8.007zm18.837-16.13 14.29 8.222V20.718l-14.29-8.248z'
2542+
clipRule='evenodd'
2543+
/>
2544+
</svg>
2545+
)
2546+
}
2547+
25352548
export function DocumentIcon(props: SVGProps<SVGSVGElement>) {
25362549
return (
25372550
<svg

‎apps/docs/components/ui/icon-mapping.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ import {
286286
TTSIcon,
287287
TwilioIcon,
288288
TypeformIcon,
289+
TypeSafeIcon,
289290
UpstashIcon,
290291
UptimeRobotIcon,
291292
VantaIcon,
@@ -648,7 +649,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
648649
twilio_sms: TwilioIcon,
649650
twilio_voice: TwilioIcon,
650651
typeform: TypeformIcon,
651-
typesafe: ApiIcon,
652+
typesafe: TypeSafeIcon,
652653
upstash: UpstashIcon,
653654
uptimerobot: UptimeRobotIcon,
654655
vanta: VantaIcon,

‎apps/sim/blocks/blocks/typesafe.ts‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApiIcon } from '@/components/icons'
1+
import { TypeSafeIcon } from '@/components/icons'
22
import { AuthMode, type BlockConfig, type BlockMeta, IntegrationType } from '@/blocks/types'
33
import type { TypeSafeResponse } from '@/tools/typesafe/types'
44

@@ -13,7 +13,7 @@ export const TypeSafeBlock: BlockConfig<TypeSafeResponse> = {
1313
category: 'tools',
1414
integrationType: IntegrationType.AI,
1515
bgColor: '#343A40',
16-
icon: ApiIcon,
16+
icon: TypeSafeIcon,
1717
canvasPresentation: {
1818
defaultTitle: 'TypeSafe (Jev)',
1919
sentences: {
@@ -222,7 +222,7 @@ export const TypeSafeBlockMeta = {
222222
url: 'https://typesafe.ai',
223223
templates: [
224224
{
225-
icon: ApiIcon,
225+
icon: TypeSafeIcon,
226226
title: 'TypeSafe support ticket routing',
227227
prompt:
228228
'Build a workflow that accepts a support ticket, uses TypeSafe Choose an Option with billing, technical, and account criteria, then routes the selected choice through a Condition block. Send low-confidence decisions to a review branch and retain the probabilities.',
@@ -231,7 +231,7 @@ export const TypeSafeBlockMeta = {
231231
tags: ['routing', 'automation', 'support'],
232232
},
233233
{
234-
icon: ApiIcon,
234+
icon: TypeSafeIcon,
235235
title: 'TypeSafe ticket urgency scoring',
236236
prompt:
237237
'Build a workflow that reads support tickets from a table and uses TypeSafe Assign a Score with five ordered urgency descriptions. Store each fractional score, confidence, and rubric, then use a Condition block with a configurable escalation threshold.',
@@ -240,7 +240,7 @@ export const TypeSafeBlockMeta = {
240240
tags: ['scoring', 'support', 'automation'],
241241
},
242242
{
243-
icon: ApiIcon,
243+
icon: TypeSafeIcon,
244244
title: 'TypeSafe LLM content screening',
245245
prompt:
246246
'Create a workflow that passes an Agent response and policy text to TypeSafe Evaluate Questions. Ask independent Noul questions about policy violations and sensitive-data disclosure. Apply configurable probability thresholds in a Condition block to allow the response or send it for review.',
@@ -249,7 +249,7 @@ export const TypeSafeBlockMeta = {
249249
tags: ['guardrails', 'llm', 'review'],
250250
},
251251
{
252-
icon: ApiIcon,
252+
icon: TypeSafeIcon,
253253
title: 'TypeSafe citation verification',
254254
prompt:
255255
'Build a workflow that accepts claims and their source passages, uses TypeSafe Evaluate Questions with one independent Noul question per claim about source support, and writes the support probabilities to a table. Route uncertain claims for review using configurable thresholds.',
@@ -258,7 +258,7 @@ export const TypeSafeBlockMeta = {
258258
tags: ['citations', 'verification', 'research'],
259259
},
260260
{
261-
icon: ApiIcon,
261+
icon: TypeSafeIcon,
262262
title: 'TypeSafe RAG passage classification',
263263
prompt:
264264
'Build a workflow that retrieves knowledge-base passages for a query and classifies each with TypeSafe Choose an Option as relevant, partially relevant, or irrelevant using explicit criteria. Keep the labels and probabilities, then pass selected passages to an Agent.',
@@ -267,7 +267,7 @@ export const TypeSafeBlockMeta = {
267267
tags: ['rag', 'classification', 'research'],
268268
},
269269
{
270-
icon: ApiIcon,
270+
icon: TypeSafeIcon,
271271
title: 'TypeSafe entity matching',
272272
prompt:
273273
'Create a workflow that reads candidate record pairs from a table, supplies their structured fields to TypeSafe Estimate Yes/No Probability, and asks whether they identify the same real-world entity. Store the probability and use configurable match, non-match, and review bands before any merge.',
@@ -276,7 +276,7 @@ export const TypeSafeBlockMeta = {
276276
tags: ['matching', 'data-quality', 'review'],
277277
},
278278
{
279-
icon: ApiIcon,
279+
icon: TypeSafeIcon,
280280
title: 'TypeSafe hierarchical classification',
281281
prompt:
282282
'Build a workflow that uses TypeSafe Choose an Option to classify a document into a top-level category, then routes to a second TypeSafe block with only that category’s child options. Store both labels and probability distributions, and review low-confidence decisions at either level.',

‎apps/sim/components/icons.tsx‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2532,6 +2532,19 @@ export function TypeformIcon(props: SVGProps<SVGSVGElement>) {
25322532
)
25332533
}
25342534

2535+
export function TypeSafeIcon(props: SVGProps<SVGSVGElement>) {
2536+
return (
2537+
<svg {...props} viewBox='0 0 102.6 144' fill='none' xmlns='http://www.w3.org/2000/svg'>
2538+
<path
2539+
fill='currentColor'
2540+
fillRule='evenodd'
2541+
d='M49.119.607a4.56 4.56 0 0 1 4.558.006l.005-.006L77.11 14.128a4.57 4.57 0 0 1 2.28 3.954v24.252l20.835 12.043a4.56 4.56 0 0 1 2.29 3.955v54.072a4.56 4.56 0 0 1-2.284 3.954l-.006-.006c-.044.026-.08.052-.11.066l-.027.011-46.702 26.959a4.6 4.6 0 0 1-4.031.269l-.544-.269-23.34-13.531-.038-.022a4.58 4.58 0 0 1-2.28-3.96v-24.224L2.46 89.684h-.01l-.176-.104a4.6 4.6 0 0 1-1.34-1.186l-.006-.006a4.6 4.6 0 0 1-.642-1.203l.005-.005A4.5 4.5 0 0 1 0 85.63V31.565c0-1.633.88-3.145 2.29-3.96zm-12.28 125.279 14.262 8.265 37.707-21.758-14.274-8.249zM55.972 61.27v24.4a4.56 4.56 0 0 1-2.724 4.157l-20.962 12.148v15.992l37.685-21.731V53.164zm23.143 34.977 14.267 8.238V60.968l-14.267-8.244zm-65.407-10.61 13.883 8.029 14.25-8.249-13.85-7.996zM9.143 34.195v43.539l14.295-8.227V45.085c0-1.635.865-3.142 2.285-3.96l21.11-12.169V12.464zm23.428 35.323 13.982 8.051V61.11l-13.982-8.078zm4.563-24.427 13.873 8.029 14.278-8.243-13.883-8.007zm18.837-16.13 14.29 8.222V20.718l-14.29-8.248z'
2542+
clipRule='evenodd'
2543+
/>
2544+
</svg>
2545+
)
2546+
}
2547+
25352548
export function DocumentIcon(props: SVGProps<SVGSVGElement>) {
25362549
return (
25372550
<svg

‎apps/sim/lib/integrations/icon-mapping.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import {
1616
AlgoliaIcon,
1717
AmplitudeIcon,
1818
ApifyIcon,
19-
ApiIcon,
2019
ApolloIcon,
2120
AppConfigIcon,
2221
ArxivIcon,
@@ -256,6 +255,7 @@ import {
256255
TriggerDevIcon,
257256
TwilioIcon,
258257
TypeformIcon,
258+
TypeSafeIcon,
259259
UpstashIcon,
260260
UptimeRobotIcon,
261261
VantaIcon,
@@ -557,7 +557,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
557557
twilio_sms: TwilioIcon,
558558
twilio_voice: TwilioIcon,
559559
typeform: TypeformIcon,
560-
typesafe: ApiIcon,
560+
typesafe: TypeSafeIcon,
561561
upstash: UpstashIcon,
562562
uptimerobot: UptimeRobotIcon,
563563
vanta: VantaIcon,

‎packages/deployment-config/src/integrations.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25785,7 +25785,7 @@
2578525785
"description": "Classify, score, and evaluate input with Jev",
2578625786
"longDescription": "Use TypeSafe Jev to choose an option, assign a fractional score, estimate a yes/no probability, or evaluate independent named questions in one request. Supply text or structured state, define criteria, and route results through downstream Condition blocks. All four operations are also available as Agent tools.",
2578725787
"bgColor": "#343A40",
25788-
"iconName": "ApiIcon",
25788+
"iconName": "TypeSafeIcon",
2578925789
"docsUrl": "https://docs.sim.ai/integrations/typesafe",
2579025790
"operations": [
2579125791
{

0 commit comments

Comments
 (0)