Skip to content

Commit 67aa4bb

Browse files
waleedlatif1claudelakeesivicecrasher321
authored
v0.5.95: gemini 3.1 pro, cloudflare, dataverse, revenuecat, redis, upstash, algolia tools; isolated-vm robustness improvements, tables backend (#3271)
* feat(tools): advanced fields for youtube, vercel; added cloudflare and dataverse tools (#3257) * refactor(vercel): mark optional fields as advanced mode Move optional/power-user fields behind the advanced toggle: - List Deployments: project filter, target, state - Create Deployment: project ID override, redeploy from, target - List Projects: search - Create/Update Project: framework, build/output/install commands - Env Vars: variable type - Webhooks: project IDs filter - Checks: path, details URL - Team Members: role filter - All operations: team ID scope Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * style(youtube): mark optional params as advanced mode Hide pagination, sort order, and filter fields behind the advanced toggle for a cleaner default UX across all YouTube operations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * added advanced fields for vercel and youtube, added cloudflare and dataverse block * addded desc for dataverse * add more tools * ack comment * more * ops --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * feat(tables): added tables (#2867) * updates * required * trashy table viewer * updates * updates * filtering ui * updates * updates * updates * one input mode * format * fix lints * improved errors * updates * updates * chages * doc strings * breaking down file * update comments with ai * updates * comments * changes * revert * updates * dedupe * updates * updates * updates * refactoring * renames & refactors * refactoring * updates * undo * update db * wand * updates * fix comments * fixes * simplify comments * u[dates * renames * better comments * validation * updates * updates * updates * fix sorting * fix appearnce * updating prompt to make it user sort * rm * updates * rename * comments * clean comments * simplicifcaiton * updates * updates * refactor * reduced type confusion * undo * rename * undo changes * undo * simplify * updates * updates * revert * updates * db updates * type fix * fix * fix error handling * updates * docs * docs * updates * rename * dedupe * revert * uncook * updates * fix * fix * fix * fix * prepare merge * readd migrations * add back missed code * migrate enrichment logic to general abstraction * address bugbot concerns * adhere to size limits for tables * remove conflicting migration * add back migrations * fix tables auth * fix permissive auth * fix lint * reran migrations * migrate to use tanstack query for all server state * update table-selector * update names * added tables to permission groups, updated subblock types --------- Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: waleed <walif6@gmail.com> * fix(snapshot): changed insert to upsert when concurrent identical child workflows are running (#3259) * fix(snapshot): changed insert to upsert when concurrent identical child workflows are running * fixed ci tests failing * fix(workflows): disallow duplicate workflow names at the same folder level (#3260) * feat(tools): added redis, upstash, algolia, and revenuecat (#3261) * feat(tools): added redis, upstash, algolia, and revenuecat * ack comment * feat(models): add gemini-3.1-pro-preview and update gemini-3-pro thinking levels (#3263) * fix(audit-log): lazily resolve actor name/email when missing (#3262) * fix(blocks): move type coercions from tools.config.tool to tools.config.params (#3264) * fix(blocks): move type coercions from tools.config.tool to tools.config.params Number() coercions in tools.config.tool ran at serialization time before variable resolution, destroying dynamic references like <block.result.count> by converting them to NaN/null. Moved all coercions to tools.config.params which runs at execution time after variables are resolved. Fixed in 15 blocks: exa, arxiv, sentry, incidentio, wikipedia, ahrefs, posthog, elasticsearch, dropbox, hunter, lemlist, spotify, youtube, grafana, parallel. Also added mode: 'advanced' to optional exa fields. Closes #3258 * fix(blocks): address PR review — move remaining param mutations from tool() to params() - Moved field mappings from tool() to params() in grafana, posthog, lemlist, spotify, dropbox (same dynamic reference bug) - Fixed parallel.ts excerpts/full_content boolean logic - Fixed parallel.ts search_queries empty case (must set undefined) - Fixed elasticsearch.ts timeout not included when already ends with 's' - Restored dropbox.ts tool() switch for proper default fallback * fix(blocks): restore field renames to tool() for serialization-time validation Field renames (e.g. personalApiKey→apiKey) must be in tool() because validateRequiredFieldsBeforeExecution calls selectToolId()→tool() then checks renamed field names on params. Only type coercions (Number(), boolean) stay in params() to avoid destroying dynamic variable references. * improvement(resolver): resovled empty sentinel to not pass through unexecuted valid refs to text inputs (#3266) * fix(blocks): add required constraint for serviceDeskId in JSM block (#3268) * fix(blocks): add required constraint for serviceDeskId in JSM block * fix(blocks): rename custom field values to request field values in JSM create request * fix(trigger): add isolated-vm support to trigger.dev container builds (#3269) Scheduled workflow executions running in trigger.dev containers were failing to spawn isolated-vm workers because the native module wasn't available in the container. This caused loop condition evaluation to silently fail and exit after one iteration. - Add isolated-vm to build.external and additionalPackages in trigger config - Include isolated-vm-worker.cjs via additionalFiles for child process spawning - Add fallback path resolution for worker file in trigger.dev environment * fix(tables): hide tables from sidebar and block registry (#3270) * fix(tables): hide tables from sidebar and block registry * fix(trigger): add isolated-vm support to trigger.dev container builds (#3269) Scheduled workflow executions running in trigger.dev containers were failing to spawn isolated-vm workers because the native module wasn't available in the container. This caused loop condition evaluation to silently fail and exit after one iteration. - Add isolated-vm to build.external and additionalPackages in trigger config - Include isolated-vm-worker.cjs via additionalFiles for child process spawning - Add fallback path resolution for worker file in trigger.dev environment * lint * fix(trigger): update node version to align with main app (#3272) * fix(build): fix corrupted sticky disk cache on blacksmith (#3273) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Lakee Sivaraya <71339072+lakeesiv@users.noreply.github.com> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai> Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
2 parents 15ace5e + 1b8d666 commit 67aa4bb

File tree

315 files changed

+43474
-749
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

315 files changed

+43474
-749
lines changed

.claude/commands/add-block.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,8 @@ Enables AI-assisted field generation.
454454

455455
## Tools Configuration
456456

457+
**Important:** `tools.config.tool` runs during serialization before variable resolution. Put `Number()` and other type coercions in `tools.config.params` instead, which runs at execution time after variables are resolved.
458+
457459
**Preferred:** Use tool names directly as dropdown option IDs to avoid switch cases:
458460
```typescript
459461
// Dropdown options use tool IDs directly

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ jobs:
144144
tags: ${{ steps.meta.outputs.tags }}
145145
provenance: false
146146
sbom: false
147+
no-cache: true
147148

148149
# Build ARM64 images for GHCR (main branch only, runs in parallel)
149150
build-ghcr-arm64:
@@ -204,6 +205,7 @@ jobs:
204205
tags: ${{ steps.meta.outputs.tags }}
205206
provenance: false
206207
sbom: false
208+
no-cache: true
207209

208210
# Create GHCR multi-arch manifests (only for main, after both builds)
209211
create-ghcr-manifests:

.github/workflows/images.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ jobs:
9797
tags: ${{ steps.meta.outputs.tags }}
9898
provenance: false
9999
sbom: false
100+
no-cache: true
100101

101102
build-ghcr-arm64:
102103
name: Build ARM64 (GHCR Only)
@@ -143,6 +144,7 @@ jobs:
143144
tags: ${{ steps.meta.outputs.tags }}
144145
provenance: false
145146
sbom: false
147+
no-cache: true
146148

147149
create-ghcr-manifests:
148150
name: Create GHCR Manifests

CLAUDE.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,14 +238,16 @@ export const ServiceBlock: BlockConfig = {
238238
bgColor: '#hexcolor',
239239
icon: ServiceIcon,
240240
subBlocks: [ /* see SubBlock Properties */ ],
241-
tools: { access: ['service_action'], config: { tool: (p) => `service_${p.operation}` } },
241+
tools: { access: ['service_action'], config: { tool: (p) => `service_${p.operation}`, params: (p) => ({ /* type coercions here */ }) } },
242242
inputs: { /* ... */ },
243243
outputs: { /* ... */ },
244244
}
245245
```
246246

247247
Register in `blocks/registry.ts` (alphabetically).
248248

249+
**Important:** `tools.config.tool` runs during serialization (before variable resolution). Never do `Number()` or other type coercions there — dynamic references like `<Block.output>` will be destroyed. Use `tools.config.params` for type coercions (it runs during execution, after variables are resolved).
250+
249251
**SubBlock Properties:**
250252
```typescript
251253
{

apps/docs/components/icons.tsx

Lines changed: 272 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,6 +1157,17 @@ export function AirweaveIcon(props: SVGProps<SVGSVGElement>) {
11571157
)
11581158
}
11591159

1160+
export function AlgoliaIcon(props: SVGProps<SVGSVGElement>) {
1161+
return (
1162+
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 50'>
1163+
<path
1164+
fill='#FFFFFF'
1165+
d='M25,0C11.3,0,0.2,11,0,24.6C-0.2,38.4,11,49.9,24.8,50c4.3,0,8.4-1,12-3c0.4-0.2,0.4-0.7,0.1-1l-2.3-2.1 c-0.5-0.4-1.2-0.5-1.7-0.3c-2.5,1.1-5.3,1.6-8.2,1.6c-11.2-0.1-20.2-9.4-20-20.6C4.9,13.6,13.9,4.7,25,4.7h20.3v36L33.7,30.5 c-0.4-0.3-0.9-0.3-1.2,0.1c-1.8,2.4-4.9,4-8.2,3.7c-4.6-0.3-8.4-4-8.7-8.7c-0.4-5.5,4-10.2,9.4-10.2c4.9,0,9,3.8,9.4,8.6 c0,0.4,0.2,0.8,0.6,1.1l3,2.7c0.3,0.3,0.9,0.1,1-0.3c0.2-1.2,0.3-2.4,0.2-3.6c-0.5-7-6.2-12.7-13.2-13.1c-8.1-0.5-14.8,5.8-15,13.7 c-0.2,7.7,6.1,14.4,13.8,14.5c3.2,0.1,6.2-0.9,8.6-2.7l15,13.3c0.6,0.6,1.7,0.1,1.7-0.7v-48C50,0.4,49.5,0,49,0L25,0 C25,0,25,0,25,0z'
1166+
/>
1167+
</svg>
1168+
)
1169+
}
1170+
11601171
export function GoogleBooksIcon(props: SVGProps<SVGSVGElement>) {
11611172
return (
11621173
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 478.633 540.068'>
@@ -4407,6 +4418,161 @@ export function DatadogIcon(props: SVGProps<SVGSVGElement>) {
44074418
)
44084419
}
44094420

4421+
export function MicrosoftDataverseIcon(props: SVGProps<SVGSVGElement>) {
4422+
const id = useId()
4423+
const clip0 = `dataverse_clip0_${id}`
4424+
const clip1 = `dataverse_clip1_${id}`
4425+
const clip2 = `dataverse_clip2_${id}`
4426+
const paint0 = `dataverse_paint0_${id}`
4427+
const paint1 = `dataverse_paint1_${id}`
4428+
const paint2 = `dataverse_paint2_${id}`
4429+
const paint3 = `dataverse_paint3_${id}`
4430+
const paint4 = `dataverse_paint4_${id}`
4431+
const paint5 = `dataverse_paint5_${id}`
4432+
const paint6 = `dataverse_paint6_${id}`
4433+
return (
4434+
<svg
4435+
{...props}
4436+
width='96'
4437+
height='96'
4438+
viewBox='0 0 96 96'
4439+
fill='none'
4440+
xmlns='http://www.w3.org/2000/svg'
4441+
>
4442+
<g clipPath={`url(#${clip0})`}>
4443+
<g clipPath={`url(#${clip1})`}>
4444+
<g clipPath={`url(#${clip2})`}>
4445+
<path
4446+
d='M13.8776 21.8242C29.1033 8.13791 49.7501 8.1861 62.955 18.9134C74.9816 28.6836 77.4697 44.3159 70.851 55.7801C64.2321 67.2443 52.5277 70.1455 39.5011 62.6247L31.7286 76.087L31.7234 76.0862C27.4181 83.5324 17.8937 86.0828 10.4437 81.7817C7.45394 80.0556 5.25322 77.4879 3.96665 74.551L3.96096 74.5511C-4.07832 55.7804 0.200745 34.1184 13.8776 21.8242Z'
4447+
fill={`url(#${paint0})`}
4448+
/>
4449+
<path
4450+
d='M13.8776 21.8242C29.1033 8.13791 49.7501 8.1861 62.955 18.9134C74.9816 28.6836 77.4697 44.3159 70.851 55.7801C64.2321 67.2443 52.5277 70.1455 39.5011 62.6247L31.7286 76.087L31.7234 76.0862C27.4181 83.5324 17.8937 86.0828 10.4437 81.7817C7.45394 80.0556 5.25322 77.4879 3.96665 74.551L3.96096 74.5511C-4.07832 55.7804 0.200745 34.1184 13.8776 21.8242Z'
4451+
fill={`url(#${paint1})`}
4452+
fillOpacity='0.8'
4453+
/>
4454+
<path
4455+
d='M85.4327 14.2231C88.4528 15.9668 90.6686 18.569 91.9494 21.5433L91.9533 21.5444C99.9406 40.2943 95.6533 61.9068 81.9983 74.1814C66.7726 87.8677 46.1257 87.8196 32.9209 77.0923C20.8945 67.3221 18.4062 51.6897 25.0249 40.2256C31.6438 28.7614 43.3482 25.8601 56.3748 33.381L64.1434 19.9255L64.1482 19.9249C68.4516 12.4736 77.9805 9.92084 85.4327 14.2231Z'
4456+
fill={`url(#${paint2})`}
4457+
/>
4458+
<path
4459+
d='M85.4327 14.2231C88.4528 15.9668 90.6686 18.569 91.9494 21.5433L91.9533 21.5444C99.9406 40.2943 95.6533 61.9068 81.9983 74.1814C66.7726 87.8677 46.1257 87.8196 32.9209 77.0923C20.8945 67.3221 18.4062 51.6897 25.0249 40.2256C31.6438 28.7614 43.3482 25.8601 56.3748 33.381L64.1434 19.9255L64.1482 19.9249C68.4516 12.4736 77.9805 9.92084 85.4327 14.2231Z'
4460+
fill={`url(#${paint3})`}
4461+
fillOpacity='0.9'
4462+
/>
4463+
<path
4464+
d='M39.5041 62.6261C52.5307 70.1469 64.2352 67.2456 70.8541 55.7814C77.2488 44.7055 75.1426 29.7389 64.147 19.9271L56.3791 33.3814L39.5041 62.6261Z'
4465+
fill={`url(#${paint4})`}
4466+
/>
4467+
<path
4468+
d='M56.3794 33.3815C43.3528 25.8607 31.6482 28.762 25.0294 40.2262C18.6347 51.3021 20.7409 66.2687 31.7364 76.0806L39.5043 62.6262L56.3794 33.3815Z'
4469+
fill={`url(#${paint5})`}
4470+
/>
4471+
<path
4472+
d='M33.3215 56.4453C37.9837 64.5204 48.3094 67.2872 56.3846 62.625C64.4598 57.9628 67.2266 47.6371 62.5643 39.5619C57.9021 31.4867 47.5764 28.72 39.5013 33.3822C31.4261 38.0444 28.6593 48.3701 33.3215 56.4453Z'
4473+
fill={`url(#${paint6})`}
4474+
/>
4475+
</g>
4476+
</g>
4477+
</g>
4478+
<defs>
4479+
<radialGradient
4480+
id={paint0}
4481+
cx='0'
4482+
cy='0'
4483+
r='1'
4484+
gradientUnits='userSpaceOnUse'
4485+
gradientTransform='translate(46.0001 49.4996) rotate(-148.717) scale(46.2195 47.5359)'
4486+
>
4487+
<stop offset='0.465088' stopColor='#09442A' />
4488+
<stop offset='0.70088' stopColor='#136C6C' />
4489+
<stop offset='1' stopColor='#22918B' />
4490+
</radialGradient>
4491+
<radialGradient
4492+
id={paint1}
4493+
cx='0'
4494+
cy='0'
4495+
r='1'
4496+
gradientUnits='userSpaceOnUse'
4497+
gradientTransform='translate(50.0001 32.4996) rotate(123.57) scale(66.0095 46.5498)'
4498+
>
4499+
<stop offset='0.718705' stopColor='#1A7F7C' stopOpacity='0' />
4500+
<stop offset='1' stopColor='#16BBDA' />
4501+
</radialGradient>
4502+
<radialGradient
4503+
id={paint2}
4504+
cx='0'
4505+
cy='0'
4506+
r='1'
4507+
gradientUnits='userSpaceOnUse'
4508+
gradientTransform='translate(50.4999 44.5001) rotate(30.75) scale(45.9618 44.5095)'
4509+
>
4510+
<stop offset='0.358097' stopColor='#136C6C' />
4511+
<stop offset='0.789474' stopColor='#42B870' />
4512+
<stop offset='1' stopColor='#76D45E' />
4513+
</radialGradient>
4514+
<radialGradient
4515+
id={paint3}
4516+
cx='0'
4517+
cy='0'
4518+
r='1'
4519+
gradientTransform='matrix(42.5 -36.0002 31.1824 36.8127 49.4998 55.5001)'
4520+
gradientUnits='userSpaceOnUse'
4521+
>
4522+
<stop offset='0.583166' stopColor='#76D45E' stopOpacity='0' />
4523+
<stop offset='1' stopColor='#C8F5B7' />
4524+
</radialGradient>
4525+
<radialGradient
4526+
id={paint4}
4527+
cx='0'
4528+
cy='0'
4529+
r='1'
4530+
gradientUnits='userSpaceOnUse'
4531+
gradientTransform='translate(47.5 48) rotate(-58.9042) scale(32.6898)'
4532+
>
4533+
<stop offset='0.486266' stopColor='#22918B' />
4534+
<stop offset='0.729599' stopColor='#42B870' />
4535+
<stop offset='1' stopColor='#43E5CA' />
4536+
</radialGradient>
4537+
<radialGradient
4538+
id={paint5}
4539+
cx='0'
4540+
cy='0'
4541+
r='1'
4542+
gradientUnits='userSpaceOnUse'
4543+
gradientTransform='translate(47.3833 49.0077) rotate(119.859) scale(31.1328 29.4032)'
4544+
>
4545+
<stop offset='0.459553' stopColor='#08494E' />
4546+
<stop offset='0.742242' stopColor='#1A7F7C' />
4547+
<stop offset='1' stopColor='#309C61' />
4548+
</radialGradient>
4549+
<radialGradient
4550+
id={paint6}
4551+
cx='0'
4552+
cy='0'
4553+
r='1'
4554+
gradientUnits='userSpaceOnUse'
4555+
gradientTransform='translate(52.5 40) rotate(120.784) scale(27.3542)'
4556+
>
4557+
<stop stopColor='#C8F5B7' />
4558+
<stop offset='0.24583' stopColor='#98F0B0' />
4559+
<stop offset='0.643961' stopColor='#52D17C' />
4560+
<stop offset='1' stopColor='#119FC5' />
4561+
</radialGradient>
4562+
<clipPath id={clip0}>
4563+
<rect width='96' height='96' fill='white' />
4564+
</clipPath>
4565+
<clipPath id={clip1}>
4566+
<rect width='96' height='96' fill='white' />
4567+
</clipPath>
4568+
<clipPath id={clip2}>
4569+
<rect width='95.9998' height='96' fill='white' />
4570+
</clipPath>
4571+
</defs>
4572+
</svg>
4573+
)
4574+
}
4575+
44104576
export function KalshiIcon(props: SVGProps<SVGSVGElement>) {
44114577
return (
44124578
<svg {...props} viewBox='0 0 78 20' fill='currentColor' xmlns='http://www.w3.org/2000/svg'>
@@ -4809,6 +4975,26 @@ export function BedrockIcon(props: SVGProps<SVGSVGElement>) {
48094975
)
48104976
}
48114977

4978+
export function TableIcon(props: SVGProps<SVGSVGElement>) {
4979+
return (
4980+
<svg
4981+
xmlns='http://www.w3.org/2000/svg'
4982+
viewBox='0 0 24 24'
4983+
fill='none'
4984+
stroke='currentColor'
4985+
strokeWidth={2}
4986+
strokeLinecap='round'
4987+
strokeLinejoin='round'
4988+
{...props}
4989+
>
4990+
<rect width='18' height='18' x='3' y='3' rx='2' />
4991+
<path d='M3 9h18' />
4992+
<path d='M3 15h18' />
4993+
<path d='M9 3v18' />
4994+
<path d='M15 3v18' />
4995+
</svg>
4996+
)
4997+
}
48124998
export function ReductoIcon(props: SVGProps<SVGSVGElement>) {
48134999
return (
48145000
<svg
@@ -5547,3 +5733,89 @@ export function VercelIcon(props: SVGProps<SVGSVGElement>) {
55475733
</svg>
55485734
)
55495735
}
5736+
5737+
export function CloudflareIcon(props: SVGProps<SVGSVGElement>) {
5738+
return (
5739+
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'>
5740+
<path
5741+
fill='#f38020'
5742+
d='M331 326c11-26-4-38-19-38l-148-2c-4 0-4-6 1-7l150-2c17-1 37-15 43-33 0 0 10-21 9-24a97 97 0 0 0-187-11c-38-25-78 9-69 46-48 3-65 46-60 72 0 1 1 2 3 2h274c1 0 3-1 3-3z'
5743+
/>
5744+
<path
5745+
fill='#faae40'
5746+
d='M381 224c-4 0-6-1-7 1l-5 21c-5 16 3 30 20 31l32 2c4 0 4 6-1 7l-33 1c-36 4-46 39-46 39 0 2 0 3 2 3h113l3-2a81 81 0 0 0-78-103'
5747+
/>
5748+
</svg>
5749+
)
5750+
}
5751+
5752+
export function UpstashIcon(props: SVGProps<SVGSVGElement>) {
5753+
return (
5754+
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 341' width='24' height='24'>
5755+
<path
5756+
fill='#00C98D'
5757+
d='M0 298.417c56.554 56.553 148.247 56.553 204.801 0c56.554-56.554 56.554-148.247 0-204.801l-25.6 25.6c42.415 42.416 42.415 111.185 0 153.6c-42.416 42.416-111.185 42.416-153.601 0z'
5758+
/>
5759+
<path
5760+
fill='#00C98D'
5761+
d='M51.2 247.216c28.277 28.277 74.123 28.277 102.4 0c28.277-28.276 28.277-74.123 0-102.4l-25.6 25.6c14.14 14.138 14.14 37.061 0 51.2c-14.138 14.139-37.061 14.139-51.2 0zM256 42.415c-56.554-56.553-148.247-56.553-204.8 0c-56.555 56.555-56.555 148.247 0 204.801l25.599-25.6c-42.415-42.415-42.415-111.185 0-153.6c42.416-42.416 111.185-42.416 153.6 0z'
5762+
/>
5763+
<path
5764+
fill='#00C98D'
5765+
d='M204.8 93.616c-28.276-28.277-74.124-28.277-102.4 0c-28.278 28.277-28.278 74.123 0 102.4l25.6-25.6c-14.14-14.138-14.14-37.061 0-51.2c14.138-14.139 37.06-14.139 51.2 0z'
5766+
/>
5767+
<path
5768+
fill='#FFF'
5769+
fillOpacity='.4'
5770+
d='M256 42.415c-56.554-56.553-148.247-56.553-204.8 0c-56.555 56.555-56.555 148.247 0 204.801l25.599-25.6c-42.415-42.415-42.415-111.185 0-153.6c42.416-42.416 111.185-42.416 153.6 0z'
5771+
/>
5772+
<path
5773+
fill='#FFF'
5774+
fillOpacity='.4'
5775+
d='M204.8 93.616c-28.276-28.277-74.124-28.277-102.4 0c-28.278 28.277-28.278 74.123 0 102.4l25.6-25.6c-14.14-14.138-14.14-37.061 0-51.2c14.138-14.139 37.06-14.139 51.2 0z'
5776+
/>
5777+
</svg>
5778+
)
5779+
}
5780+
5781+
export function RevenueCatIcon(props: SVGProps<SVGSVGElement>) {
5782+
return (
5783+
<svg
5784+
{...props}
5785+
width='512'
5786+
height='512'
5787+
viewBox='0 0 512 512'
5788+
fill='none'
5789+
xmlns='http://www.w3.org/2000/svg'
5790+
>
5791+
<path
5792+
d='M95 109.774C110.152 106.108 133.612 104 154.795 104C212.046 104 246.32 123.928 246.32 174.646C246.32 205.746 233.737 226.264 214.005 237.437L261.765 318.946C258.05 321.632 250.035 323.176 238.864 323.176C226.282 323.176 217.987 321.672 211.982 318.946L172.225 248.3H167.645C157.789 248.305 147.945 247.601 138.18 246.192V319.255C134.172 321.672 127.022 323.176 116.73 323.176C106.73 323.176 99.2874 321.659 95 319.255V109.774ZM137.643 207.848C145.772 209.263 153.997 209.968 162.235 209.956C187.12 209.956 202.285 200.556 202.285 177.057C202.285 152.886 186.268 142.949 157.668 142.949C150.956 142.918 144.255 143.515 137.643 144.735V207.848Z'
5793+
fill='#FFFFFF'
5794+
/>
5795+
<path
5796+
d='M428.529 329.244C428.529 365.526 410.145 375.494 396.306 382.195C360.972 399.32 304.368 379.4 244.206 373.338C189.732 366.214 135.706 361.522 127.309 373.738C124.152 376.832 123.481 386.798 127.309 390.862C138.604 402.85 168.061 394.493 188.919 390.714C195.391 389.694 201.933 392.099 206.079 397.021C210.226 401.944 211.349 408.637 209.024 414.58C206.699 420.522 201.28 424.811 194.809 425.831C185.379 427.264 175.85 427.989 166.306 428C145.988 428 120.442 424.495 105.943 409.072C98.7232 401.4 91.3266 387.78 97.0271 366.465C107.875 326.074 172.807 336.052 248.033 343.633C300.41 348.907 357.23 366.465 379.934 350.343C385.721 346.234 396.517 337.022 390.698 329.244C384.879 321.467 375.353 325.684 362.838 325.684C300.152 325.684 263.238 285.302 263.238 217.916C263.247 167.292 284.176 131.892 318.287 115.09C333.109 107.789 350.421 104 369.587 104C386.292 104 403.269 106.931 414.11 113.366C420.847 123.032 423.778 140.305 422.306 153.201C408.247 146.466 395.36 142.949 378.669 142.949C337.365 142.949 308.947 164.039 308.947 214.985C308.947 265.932 337.065 286.149 376.611 286.149C387.869 286.035 403.1 284.67 422.306 282.053C426.455 297.498 428.529 313.228 428.529 329.244Z'
5797+
fill='#FFFFFF'
5798+
/>
5799+
</svg>
5800+
)
5801+
}
5802+
5803+
export function RedisIcon(props: SVGProps<SVGSVGElement>) {
5804+
return (
5805+
<svg
5806+
{...props}
5807+
viewBox='0 0 512 512'
5808+
xmlns='http://www.w3.org/2000/svg'
5809+
fillRule='evenodd'
5810+
clipRule='evenodd'
5811+
strokeLinejoin='round'
5812+
strokeMiterlimit='2'
5813+
>
5814+
<path
5815+
d='M479.14 279.864c-34.584 43.578-71.94 93.385-146.645 93.385-66.73 0-91.59-58.858-93.337-106.672 14.62 30.915 43.203 55.949 87.804 54.792C412.737 318.6 471.53 241.127 471.53 170.57c0-84.388-62.947-145.262-172.24-145.262-78.165 0-175.004 29.743-238.646 76.782-.689 48.42 26.286 111.369 35.972 104.452 55.17-39.67 98.918-65.203 141.35-78.01C175.153 198.58 24.451 361.219 6 389.85c2.076 26.286 34.588 96.842 50.496 96.842 4.841 0 8.993-2.768 13.835-7.61 45.433-51.046 82.472-96.816 115.412-140.933 4.627 64.658 36.42 143.702 125.307 143.702 79.55 0 158.408-57.414 194.377-186.767 4.149-15.911-15.22-28.362-26.286-15.22zm-90.616-104.449c0 40.81-40.118 60.87-76.782 60.87-19.596 0-34.648-5.145-46.554-11.832 21.906-33.168 43.59-67.182 66.887-103.593 41.08 6.953 56.449 29.788 56.449 54.555z'
5816+
fill='#FFFFFF'
5817+
fillRule='nonzero'
5818+
/>
5819+
</svg>
5820+
)
5821+
}

0 commit comments

Comments
 (0)