Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,54 @@
import { Input } from '@/components/ui/input';
import { Textarea } from '@/components/ui/textarea';
import { cn } from '@/lib/utils';
import { DownloadButton } from '../download-button';
import { CopyButton } from './copy-button';
type CopyToClipboardInputProps = {
textToCopy: string;
useInput: boolean;
fileName?: string;
};
const noBorderInputClass = `border-none w-full rfocus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0`;
const CopyToClipboardInput = ({
textToCopy,
fileName,
useInput,
}: CopyToClipboardInputProps) => {
return (
<div className="flex gap-2 items-center bg-background border border-solid text-sm rounded block w-full select-none pr-3">
{useInput ? (
<Input value={textToCopy} className={noBorderInputClass} readOnly />
) : (
<Textarea
value={textToCopy}
rows={6}
className={noBorderInputClass}
readOnly
/>
)}
<div
className={cn('flex gap-1', {
'flex-col': !useInput,
})}
>
<CopyButton textToCopy={textToCopy} variant="ghost" />
{fileName && (
<DownloadButton
textToDownload={textToCopy}
fileName={fileName}
variant="ghost"
tooltipSide="bottom"
/>
)}
</div>
</div>
);
};
CopyToClipboardInput.displayName = 'CopyToClipboardInput';
export { CopyToClipboardInput };