Share

title-title

by Bella·
article cover
💡
{
  "name": "xybot-front-news",
  "private": true,
  "type": "module",
  "scripts": {
    "build": "xybot build",
    "dev": "xybot dev",
    "start": "react-router-serve ./build/server/index.js",
    "typecheck": "react-router typegen && tsc",
    "build:docker": "react-router build"
  },
  "dependencies": {
    "@ant-design/cssinjs": "^1.24.0",
    "@ant-design/icons": "^6.0.2",
    "@ant-design/v5-patch-for-react-19": "^1.0.3",
    "@react-router/node": "^7.7.1",
    "@react-router/serve": "^7.7.1",
    "@sentry/react": "8.42.0",
    "@tanstack/react-query": "^5.90.1",
    "@tanstack/react-query-devtools": "^5.90.1",
    "@tiptap/core": "^3.4.4",
    "@tiptap/extension-link": "^3.4.4",
    "@tiptap/extension-placeholder": "^3.4.4",
    "@tiptap/extension-text-style": "^3.4.4",
    "@tiptap/pm": "^3.4.4",
    "@tiptap/react": "^3.4.4",
    "@tiptap/starter-kit": "^3.4.4",
    "@types/classnames": "^2.3.4",
    "@types/uuid": "^11.0.0",
    "@xybot/bury": "0.1.5",
    "@xybot/editor-extensions": "file:../../shadow-bot/xybot-front-editor-extensions/packages/editor-extensions",
    "@xybot/editor-menu": "0.0.1-beta.12",
    "@xybot/i18n": "0.1.3",
    "antd": "^5.27.4",
    "axios": "^1.6.2",
    "classnames": "^2.5.1",
    "dayjs": "^1.11.18",
    "isbot": "^5.1.27",
    "lodash.throttle": "4.1.1",
    "markdown-it": "^14.1.0",
    "msw": "2.4.13",
    "openapi-fetch": "0.12.2",
    "react": "^19.1.0",
    "react-dom": "^19.1.0",
    "react-router": "^7.7.1",
    "ua-parser-js": "2.0.0",
    "uuid": "^9.0.1",
    "xhook": "1.6.2"
  },
  "devDependencies": {
    "@ant-design/static-style-extract": "^1.0.3",
    "@react-router/dev": "^7.7.1",
    "@tailwindcss/vite": "^4.1.4",
    "@types/node": "^20",
    "@types/react": "^19.1.2",
    "@types/react-dom": "^19.1.2",
    "@types/xhook": "1.5.3",
    "@xybot/cli": "1.5.7-beta.7",
    "code-inspector-plugin": "0.5.2",
    "cross-env": "^7.0.3",
    "less": "^4.1.3",
    "tailwindcss": "^4.1.4",
    "ts-node": "^10.9.1",
    "typescript": "^5.8.3",
    "vite": "^6.3.3",
    "vite-plugin-devtools-json": "^1.0.0",
    "vite-plugin-svgr": "4.2.0",
    "vite-tsconfig-paths": "^5.1.4"
  }
}

2

import React, { useState, useEffect } from 'react';

import type { YDResponse } from '@/models';
import { userApi } from '@/api';
import { getUrlParams } from '@/utils';

export default () => {
  const [iframeSrc, setIframeSrc] = useState('');

  useEffect(() => {
    getUserInfo();
  }, []);

  const getUserInfo = () => {
    userApi.getUserInfo().then((res: YDResponse<any>) => {
      if (res.code === 200) {
        const access_token = getUrlParams('access_token');
        const productCode = getUrlParams('productCode');
        setIframeSrc(`${window.YD.DOC_URL}/${productCode}?from=boss&access_token=${access_token}`);
      }
    });
  };

  return (
    <>
      <iframe src={iframeSrc} frameBorder="0" style={{ width: '100%', minHeight: '100vh', display: 'block' }}></iframe>
    </>
  );
};
import React, { useState, useEffect } from 'react';

import type { YDResponse } from '@/models';
import { userApi } from '@/api';
import { getUrlParams } from '@/utils';

export default () => {
  const [iframeSrc, setIframeSrc] = useState('');

  useEffect(() => {
    getUserInfo();
  }, []);

  const getUserInfo = () => {
    userApi.getUserInfo().then((res: YDResponse<any>) => {
      if (res.code === 200) {
        const access_token = getUrlParams('access_token');
        const productCode = getUrlParams('productCode');
        setIframeSrc(`${window.YD.DOC_URL}/${productCode}?from=boss&access_token=${access_token}`);
      }
    });
  };

  return (
    <>
      <iframe src={iframeSrc} frameBorder="0" style={{ width: '100%', minHeight: '100vh', display: 'block' }}></ifr

Abstract dark gradient circles creating a subtle background pattern for the download section
Focus on What Matters,
Let Automa Automate the Rest
Click, connect, automate, excel
Copyright © 2025 Automa. All rights reserved