From 46ea6eec5489957ebee7e379f1f2b7563d160f7d Mon Sep 17 00:00:00 2001 From: Alican Erdurmaz Date: Thu, 22 May 2025 15:05:22 +0300 Subject: [PATCH 1/9] feat(docs): add pricing cards and FAQ section to ai landing page --- documentation/package.json | 5 + documentation/pnpm-lock.yaml | 641 ++++++++++++++++++ documentation/src/pages/ai/index.tsx | 5 +- documentation/src/refine-theme/ai-faq.tsx | 180 +++++ ...manage-with-ease-scale-with-confidence.tsx | 1 + .../src/refine-theme/ai-landing-step-list.tsx | 3 +- .../src/refine-theme/ai-pricing-cards.tsx | 612 +++++++++++++++++ .../refine-theme/icons/minus-rectangle.tsx | 26 + .../src/refine-theme/icons/plus-rectangle.tsx | 25 + .../src/refine-theme/shadcn/select.tsx | 184 +++++ .../src/refine-theme/shadcn/separator.tsx | 31 + .../src/refine-theme/shadcn/utils.ts | 6 + .../static/assets/most-popular-badge-dark.png | Bin 0 -> 5067 bytes .../assets/most-popular-badge-light.png | Bin 0 -> 4995 bytes .../assets/pricing-card-checkmark-blue.png | Bin 0 -> 2964 bytes .../assets/pricing-card-checkmark-green.png | Bin 0 -> 3118 bytes .../assets/pricing-card-checkmark-purple.png | Bin 0 -> 2970 bytes documentation/tailwind.config.js | 6 + 18 files changed, 1723 insertions(+), 2 deletions(-) create mode 100644 documentation/src/refine-theme/ai-faq.tsx create mode 100644 documentation/src/refine-theme/ai-pricing-cards.tsx create mode 100644 documentation/src/refine-theme/icons/minus-rectangle.tsx create mode 100644 documentation/src/refine-theme/icons/plus-rectangle.tsx create mode 100644 documentation/src/refine-theme/shadcn/select.tsx create mode 100644 documentation/src/refine-theme/shadcn/separator.tsx create mode 100644 documentation/src/refine-theme/shadcn/utils.ts create mode 100644 documentation/static/assets/most-popular-badge-dark.png create mode 100644 documentation/static/assets/most-popular-badge-light.png create mode 100644 documentation/static/assets/pricing-card-checkmark-blue.png create mode 100644 documentation/static/assets/pricing-card-checkmark-green.png create mode 100644 documentation/static/assets/pricing-card-checkmark-purple.png diff --git a/documentation/package.json b/documentation/package.json index ede45eef35a77..3b5a7e3e1d125 100644 --- a/documentation/package.json +++ b/documentation/package.json @@ -43,6 +43,9 @@ "@floating-ui/react": "^0.26.9", "@headlessui/react": "^1.7.15", "@mdx-js/react": "^1.6.22", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-separator": "^1.1.1", "@swc/core": "^1.3.64", "@tailwindcss/line-clamp": "^0.4.2", "autoprefixer": "^10.4.8", @@ -71,7 +74,9 @@ "remark-rehype": "^10.0.0", "snarkdown": "^2.0.0", "swc-loader": "^0.2.3", + "tailwind-merge": "^2.5.2", "tailwindcss": "^3.3.5", + "tailwindcss-animate": "^1.0.7", "title-case": "^3.0.3" }, "devDependencies": { diff --git a/documentation/pnpm-lock.yaml b/documentation/pnpm-lock.yaml index cb1341c5055c4..9c0b51724d3fa 100644 --- a/documentation/pnpm-lock.yaml +++ b/documentation/pnpm-lock.yaml @@ -50,6 +50,15 @@ importers: '@mdx-js/react': specifier: ^1.6.22 version: 1.6.22(react@17.0.2) + '@radix-ui/react-icons': + specifier: ^1.3.0 + version: 1.3.2(react@17.0.2) + '@radix-ui/react-select': + specifier: ^2.1.1 + version: 2.2.5(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-separator': + specifier: ^1.1.1 + version: 1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) '@swc/core': specifier: ^1.3.64 version: 1.5.5 @@ -134,9 +143,15 @@ importers: swc-loader: specifier: ^0.2.3 version: 0.2.6(@swc/core@1.5.5)(webpack@5.91.0(@swc/core@1.5.5)) + tailwind-merge: + specifier: ^2.5.2 + version: 2.6.0 tailwindcss: specifier: ^3.3.5 version: 3.4.3 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.3) title-case: specifier: ^3.0.3 version: 3.0.3 @@ -1409,6 +1424,276 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + + '@radix-ui/primitive@1.1.2': + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + + '@radix-ui/react-arrow@1.1.7': + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.7': + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.2': + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.2': + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.1.1': + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.10': + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.2': + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.7': + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-icons@1.3.2': + resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} + peerDependencies: + react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc + + '@radix-ui/react-id@1.1.1': + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-popper@1.2.7': + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.9': + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.1.3': + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-select@2.2.5': + resolution: {integrity: sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-separator@1.1.7': + resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.2.3': + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.1': + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.2.2': + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-effect-event@0.0.2': + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.1': + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.1': + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.1': + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.1': + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.1': + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.2.3': + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.1.1': + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@react-hook/intersection-observer@3.1.1': resolution: {integrity: sha512-OTDx8/wFaRvzFtKl1dEUEXSOqK2zVJHporiTTdC2xO++0e9FEx9wIrPis5q3lqtXeZH9zYGLbk+aB75qNFbbuw==} peerDependencies: @@ -2048,6 +2333,10 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -2812,6 +3101,9 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -3287,6 +3579,10 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -5278,6 +5574,26 @@ packages: peerDependencies: react: '>=16.6.0' + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.7.0: + resolution: {integrity: sha512-sGsQtcjMqdQyijAHytfGEELB8FufGbfXIsvUTe+NLx1GDRJCXtCFLBLUI1eyZCKXXvbEU2C6gai0PZKoIE9Vbg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-rewards@2.0.4: resolution: {integrity: sha512-Lw7gIhD8yPDzC6boaVmcXwuTHRLSLAdqB3kZc+29YWvdHWsuc3fdAZlxI8Cm8fvD8fhP+3JkZBtzX224czw15w==} peerDependencies: @@ -5306,6 +5622,16 @@ packages: peerDependencies: react: ^16.3.0 || ^17 || ^18 + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-textarea-autosize@8.5.3: resolution: {integrity: sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==} engines: {node: '>=10'} @@ -5878,6 +6204,14 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + tailwindcss@3.4.3: resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} engines: {node: '>=14.0.0'} @@ -6183,6 +6517,16 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + use-composed-ref@1.3.0: resolution: {integrity: sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==} peerDependencies: @@ -6206,6 +6550,16 @@ packages: '@types/react': optional: true + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + use-sync-external-store@1.2.2: resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} peerDependencies: @@ -8643,6 +8997,237 @@ snapshots: '@polka/url@1.0.0-next.25': {} + '@radix-ui/number@1.1.1': {} + + '@radix-ui/primitive@1.1.2': {} + + '@radix-ui/react-arrow@1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-collection@1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-context': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-slot': 1.2.3(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-compose-refs@1.1.2(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-context@1.1.2(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-direction@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-focus-guards@1.1.2(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-icons@1.3.2(react@17.0.2)': + dependencies: + react: 17.0.2 + + '@radix-ui/react-id@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-popper@1.2.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@floating-ui/react-dom': 2.0.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-context': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-rect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-size': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/rect': 1.1.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-portal@1.1.9(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-primitive@2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-select@2.2.5(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-context': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-direction': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-id': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@radix-ui/react-slot': 1.2.3(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-previous': 1.1.1(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + aria-hidden: 1.2.6 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-remove-scroll: 2.7.0(@types/react@17.0.80)(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-separator@1.1.7(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/react-slot@1.2.3(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@17.0.80)(react@17.0.2) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-effect-event@0.0.2(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-previous@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-rect@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/rect': 1.1.1 + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-use-size@1.1.1(@types/react@17.0.80)(react@17.0.2)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@17.0.80)(react@17.0.2) + react: 17.0.2 + optionalDependencies: + '@types/react': 17.0.80 + + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@17.0.25)(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + '@types/react-dom': 17.0.25 + + '@radix-ui/rect@1.1.1': {} + '@react-hook/intersection-observer@3.1.1(react@17.0.2)': dependencies: '@react-hook/passive-layout-effect': 1.2.1(react@17.0.2) @@ -9344,6 +9929,10 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.6.2 + aria-query@5.1.3: dependencies: deep-equal: 2.2.3 @@ -10227,6 +10816,8 @@ snapshots: detect-newline@3.1.0: {} + detect-node-es@1.1.0: {} + detect-node@2.1.0: {} detect-port-alt@1.1.6: @@ -10773,6 +11364,8 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-nonce@1.0.1: {} + get-own-enumerable-property-symbols@3.0.2: {} get-package-type@0.1.0: {} @@ -13143,6 +13736,25 @@ snapshots: react: 17.0.2 react-fast-compare: 3.2.2 + react-remove-scroll-bar@2.3.8(@types/react@17.0.80)(react@17.0.2): + dependencies: + react: 17.0.2 + react-style-singleton: 2.2.3(@types/react@17.0.80)(react@17.0.2) + tslib: 2.6.2 + optionalDependencies: + '@types/react': 17.0.80 + + react-remove-scroll@2.7.0(@types/react@17.0.80)(react@17.0.2): + dependencies: + react: 17.0.2 + react-remove-scroll-bar: 2.3.8(@types/react@17.0.80)(react@17.0.2) + react-style-singleton: 2.2.3(@types/react@17.0.80)(react@17.0.2) + tslib: 2.6.2 + use-callback-ref: 1.3.3(@types/react@17.0.80)(react@17.0.2) + use-sidecar: 1.1.3(@types/react@17.0.80)(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.80 + react-rewards@2.0.4(react-dom@17.0.2(react@17.0.2))(react@17.0.2): dependencies: react: 17.0.2 @@ -13186,6 +13798,14 @@ snapshots: transitivePeerDependencies: - supports-color + react-style-singleton@2.2.3(@types/react@17.0.80)(react@17.0.2): + dependencies: + get-nonce: 1.0.1 + react: 17.0.2 + tslib: 2.6.2 + optionalDependencies: + '@types/react': 17.0.80 + react-textarea-autosize@8.5.3(@types/react@17.0.80)(react@17.0.2): dependencies: '@babel/runtime': 7.24.5 @@ -13863,6 +14483,12 @@ snapshots: tabbable@6.2.0: {} + tailwind-merge@2.6.0: {} + + tailwindcss-animate@1.0.7(tailwindcss@3.4.3): + dependencies: + tailwindcss: 3.4.3 + tailwindcss@3.4.3: dependencies: '@alloc/quick-lru': 5.2.0 @@ -14193,6 +14819,13 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 + use-callback-ref@1.3.3(@types/react@17.0.80)(react@17.0.2): + dependencies: + react: 17.0.2 + tslib: 2.6.2 + optionalDependencies: + '@types/react': 17.0.80 + use-composed-ref@1.3.0(react@17.0.2): dependencies: react: 17.0.2 @@ -14210,6 +14843,14 @@ snapshots: optionalDependencies: '@types/react': 17.0.80 + use-sidecar@1.1.3(@types/react@17.0.80)(react@17.0.2): + dependencies: + detect-node-es: 1.1.0 + react: 17.0.2 + tslib: 2.6.2 + optionalDependencies: + '@types/react': 17.0.80 + use-sync-external-store@1.2.2(react@17.0.2): dependencies: react: 17.0.2 diff --git a/documentation/src/pages/ai/index.tsx b/documentation/src/pages/ai/index.tsx index 9362ed20dc641..0d5f5bde119d6 100644 --- a/documentation/src/pages/ai/index.tsx +++ b/documentation/src/pages/ai/index.tsx @@ -8,6 +8,8 @@ import { AiLandingManageWithEaseScaleWithConfidence } from "@site/src/refine-the import { JoinWaitlist } from "@site/src/refine-theme/ai-landing-join-the-waitlist-cta"; import { AiLandingHero } from "@site/src/refine-theme/ai-landing-hero"; import { StepList } from "@site/src/refine-theme/ai-landing-step-list"; +import { AiPricingCards } from "@site/src/refine-theme/ai-pricing-cards"; +import { AiFaq } from "@site/src/refine-theme/ai-faq"; const title = "Refine AI"; @@ -47,7 +49,8 @@ const RefineAIPage = () => { - + +
diff --git a/documentation/src/refine-theme/ai-faq.tsx b/documentation/src/refine-theme/ai-faq.tsx new file mode 100644 index 0000000000000..b04c490032e3c --- /dev/null +++ b/documentation/src/refine-theme/ai-faq.tsx @@ -0,0 +1,180 @@ +import React, { useState } from "react"; +import { motion, AnimatePresence } from "framer-motion"; +import { clsx } from "clsx"; +import { MinusRectangle } from "./icons/minus-rectangle"; +import { PlusRectangle } from "./icons/plus-rectangle"; + +type AiFaqProps = { + className?: string; +}; + +export const AiFaq = ({ className }: AiFaqProps) => { + return ( +
+

+ Frequently asked questions +

+
+ {faqData.map((item) => ( + + ))} +
+
+ ); +}; + +type AccordionItemProps = { + question: string; + answer: string; +}; + +const AccordionItem: React.FC = ({ question, answer }) => { + const [isOpen, setIsOpen] = useState(false); + + return ( +
+ + + {isOpen && ( + +
+
+

+ {answer} +

+
+ + )} + +
+ ); +}; + +const faqData = [ + { + question: "What are credits?", + answer: + "Credits are the usage units you spend when generating code, previewing output, or using any other feature in Refine AI. Every paid plan includes a monthly credit allowance based on your tier.", + }, + { + question: "How many real tokens does one credit equal?", + answer: + "We don’t tie credits to a strict number of model tokens, as usage depends on factors like prompt complexity, generation type, and model efficiency. Behind the scenes, we continuously optimize our infrastructure to help you get more value from every credit — no need to worry about token math.", + }, + { + question: "What happens when I run out of credits?", + answer: + "When your credits run out, you can continue working within your existing projects — but generating new outputs will pause until your next renewal. If you need to keep building right away, you can upgrade your plan at any time. Upgrades take effect immediately and reset your credit balance so you can pick up where you left off.", + }, + { + question: "Can I upgrade my plan at any time?", + answer: + "Yes — upgrades take effect immediately. You’ll receive additional credits right away, and your billing cycle will restart from the upgrade date. Your previous payment is prorated and credited automatically.", + }, + { + question: "What happens when I downgrade?", + answer: + "Downgrades take effect at the start of your next billing cycle. You’ll remain on your current tier until then.", + }, + { + question: "Will I lose unused credits when I change plans?", + answer: + "If you upgrade, any unused credits carry over but still expire at the end of your current billing cycle. If you downgrade, your new monthly credit limit will apply at the start of the next cycle.", + }, + { + question: "Do unused credits roll over month-to-month?", + answer: + "No — credits reset each month unless you’re on an Enterprise plan with a custom rollover agreement.", + }, + { + question: "How does billing work when I upgrade mid-month?", + answer: + "We use prorated billing — you’ll only pay the difference for the time remaining in your current billing cycle. This is handled automatically through Stripe.", + }, + { + question: "Can I buy extra credits without upgrading?", + answer: + "No — we don’t offer one-time credit top-ups. If you need more credits before your next renewal, you can upgrade your plan at any time. Upgrades apply immediately and include a fresh set of monthly credits.", + }, + { + question: "Can I cancel at any time?", + answer: + "Yes — you can cancel anytime from your billing settings. Your current plan will remain active until the end of your billing cycle.", + }, +]; diff --git a/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx b/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx index 9a67b885e387c..9df1647636a91 100644 --- a/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx +++ b/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx @@ -44,6 +44,7 @@ export const AiLandingManageWithEaseScaleWithConfidence = ({ > confidence + .
{ "dark:text-refine-react-dark-green-alt dark:drop-shadow-[0_0_30px_rgba(38,217,127,0.55)]", )} > - step by step. + step by step + .
{ + return ( +
+
+

+ Select your plan and{" "} + + get started + + . +

+
+
+ + + +
+
+
+ ); +}; + +const PricingCardStarter = () => { + const starterPlan = { + planKey: "starter", + name: "Starter", + description: "Get hands-on with the fundamentals.", + features: ["Core features for exploration", "Preview your builds"], + refineTokenCount: 150, + monthlyPriceCents: 0, + }; + + return ( +
+
+
+

+ {starterPlan?.name} +

+
+ +
+

+ {starterPlan?.description} +

+
+
+ +
+ +
+ +
+ + {new Intl.NumberFormat().format(starterPlan?.refineTokenCount || 0)} + + credits + / + month +
+ +
+

FREE

+
+ + + +
+ +
+ +
+ {starterPlan?.features?.map((feature, i) => ( +
+ {feature} +
{feature}
+
+ ))} +
+
+ ); +}; + +const PricingCardPro = () => { + const proPlans = [ + { + planKey: "pro", + name: "Pro", + description: "Full power for production-grade development.", + features: [ + "Interactive code editor", + "One-Click Export", + "Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + refineTokenCount: 1500, + monthlyPriceCents: 2000, + }, + { + planKey: "pro_3k", + name: "Pro 3K", + description: "Full power for production-grade development.", + features: [ + "Interactive code editor", + "One-Click Export & Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + sortKey: 2, + refineTokenCount: 3000, + monthlyPriceCents: 4000, + }, + { + planKey: "pro_6k", + name: "Pro 6K", + description: "Full power for production-grade development.", + tier: "pro", + features: [ + "Interactive code editor", + "One-Click Export & Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + sortKey: 3, + refineTokenCount: 6000, + monthlyPriceCents: 8000, + }, + { + planKey: "pro_9k", + name: "Pro 9K", + description: "Full power for production-grade development.", + tier: "pro", + features: [ + "Interactive code editor", + "One-Click Export & Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + sortKey: 4, + refineTokenCount: 9000, + monthlyPriceCents: 12000, + }, + { + planKey: "pro_15k", + name: "Pro 15K", + description: "Full power for production-grade development.", + tier: "pro", + features: [ + "Interactive code editor", + "One-Click Export & Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + sortKey: 5, + refineTokenCount: 15000, + monthlyPriceCents: 20000, + }, + { + planKey: "pro_20k", + name: "Pro 20K", + description: "Full power for production-grade development.", + tier: "pro", + features: [ + "Interactive code editor", + "One-Click Export & Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + sortKey: 6, + refineTokenCount: 20000, + monthlyPriceCents: 26600, + }, + { + planKey: "pro_40k", + name: "Pro 40K", + description: "Full power for production-grade development.", + tier: "pro", + features: [ + "Interactive code editor", + "One-Click Export & Hosting with Netlify", + "Attach files, specs, or artefacts", + ], + sortKey: 7, + refineTokenCount: 40000, + monthlyPriceCents: 53300, + }, + ]; + + const [selectedTierKey, setSelectedTierKey] = useState( + proPlans.at(0)?.planKey ?? null, + ); + const selectedTier = proPlans.find( + (plan) => plan.planKey === selectedTierKey, + ); + + const tierOptions = proPlans.map((plan) => ({ + label: `${new Intl.NumberFormat().format( + plan.refineTokenCount, + )} credits / month`, + value: plan.planKey, + })); + + const handleOnPlanClick = async () => { + console.log("handleOnPlanClick"); + }; + + return ( +
+
+
+

+ {proPlans[0]?.name} +

+ +
+ +
+

+ {selectedTier?.description} +

+
+
+ +
+ +
+ + + +
+

+ + {new Intl.NumberFormat("en-US", { + style: "currency", + currency: "USD", + minimumFractionDigits: 2, + }).format((selectedTier?.monthlyPriceCents ?? 0) / 100)} + + / + month +

+
+ +
+ + + +
+ +
+ +
+ +
+ {selectedTier?.features?.map((feature, i) => ( +
+ {feature} +
{feature}
+
+ ))} +
+
+ ); +}; + +const PricingCardEnterprise = () => { + const features = useMemo(() => { + return [ + "Custom terms and volume pricing", + "Dedicated support team", + "SSO (Single Sign-On)", + "Option to opt out of data training", + "Private Slack channel with direct access", + ]; + }, []); + + const handleOnPlanClick = () => { + window.open("mailto:info@refine.dev", "_blank"); + }; + + return ( +
+
+
+

+ Enterprise +

+
+ +
+

+ Custom solutions for large-scale teams. +

+
+
+ +
+ +
+ +

+ Designed for teams building at scale or with specialized needs. + Enterprise offers tailored solutions with advanced security, support, + and control options. +

+ +
+ +
+ +
+ +
+ +
+ {features?.map((feature, i) => ( +
+ {feature} +
{feature}
+
+ ))} +
+
+ ); +}; + +const SubscribeButton = ({ + onClick, + buttonText, + className, +}: { + onClick: undefined | (() => void); + buttonText: string; + className?: ClassValue; +}) => { + return ( + + ); +}; + +const MostPopularBadge = () => { + const [isMounted, setIsMounted] = useState(false); + + const { colorMode } = useColorMode(); + + useEffect(() => { + setIsMounted(true); + }, []); + + if (!isMounted) return null; + + return ( +
+ Most Popular +
+ ); +}; diff --git a/documentation/src/refine-theme/icons/minus-rectangle.tsx b/documentation/src/refine-theme/icons/minus-rectangle.tsx new file mode 100644 index 0000000000000..369231c8f8a30 --- /dev/null +++ b/documentation/src/refine-theme/icons/minus-rectangle.tsx @@ -0,0 +1,26 @@ +import * as React from "react"; +import type { SVGProps } from "react"; + +export const MinusRectangle = (props: SVGProps) => ( + + + + +); diff --git a/documentation/src/refine-theme/icons/plus-rectangle.tsx b/documentation/src/refine-theme/icons/plus-rectangle.tsx new file mode 100644 index 0000000000000..5a2000b803b54 --- /dev/null +++ b/documentation/src/refine-theme/icons/plus-rectangle.tsx @@ -0,0 +1,25 @@ +import * as React from "react"; +import type { SVGProps } from "react"; + +export const PlusRectangle = (props: SVGProps) => ( + + + + +); diff --git a/documentation/src/refine-theme/shadcn/select.tsx b/documentation/src/refine-theme/shadcn/select.tsx new file mode 100644 index 0000000000000..78a4de689c8d6 --- /dev/null +++ b/documentation/src/refine-theme/shadcn/select.tsx @@ -0,0 +1,184 @@ +"use client"; + +import * as React from "react"; +import { + CheckIcon, + ChevronDownIcon, + ChevronUpIcon, +} from "@radix-ui/react-icons"; +import * as SelectPrimitive from "@radix-ui/react-select"; + +import { cn } from "./utils"; + +const Select = ({ + ...props +}: React.ComponentProps) => { + return ; +}; + +const SelectGroup = SelectPrimitive.Group; + +const SelectValue = SelectPrimitive.Value; + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => { + return ( + span]:line-clamp-1", + className, + )} + {...props} + > + {children} + + + + + ); +}); +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)); +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName; + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)); +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName; + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + + {children} + + + + +)); +SelectContent.displayName = SelectPrimitive.Content.displayName; + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectLabel.displayName = SelectPrimitive.Label.displayName; + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)); +SelectItem.displayName = SelectPrimitive.Item.displayName; + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +SelectSeparator.displayName = SelectPrimitive.Separator.displayName; + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +}; diff --git a/documentation/src/refine-theme/shadcn/separator.tsx b/documentation/src/refine-theme/shadcn/separator.tsx new file mode 100644 index 0000000000000..ecef45d386a37 --- /dev/null +++ b/documentation/src/refine-theme/shadcn/separator.tsx @@ -0,0 +1,31 @@ +"use client"; + +import * as React from "react"; +import * as SeparatorPrimitive from "@radix-ui/react-separator"; + +import { cn } from "./utils"; + +const Separator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>( + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref, + ) => ( + + ), +); +Separator.displayName = SeparatorPrimitive.Root.displayName; + +export { Separator }; diff --git a/documentation/src/refine-theme/shadcn/utils.ts b/documentation/src/refine-theme/shadcn/utils.ts new file mode 100644 index 0000000000000..365058cebd7d2 --- /dev/null +++ b/documentation/src/refine-theme/shadcn/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/documentation/static/assets/most-popular-badge-dark.png b/documentation/static/assets/most-popular-badge-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c8455ec0599bc0ce34cd5b045d548414bd9c9cb1 GIT binary patch literal 5067 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 literal 0 HcmV?d00001 diff --git a/documentation/static/assets/most-popular-badge-light.png b/documentation/static/assets/most-popular-badge-light.png new file mode 100644 index 0000000000000000000000000000000000000000..d94141a3a47967d5cc1657b263c8e088f639518d GIT binary patch literal 4995 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 N002ovPDHLkV1ltkbj$z% literal 0 HcmV?d00001 diff --git a/documentation/static/assets/pricing-card-checkmark-blue.png b/documentation/static/assets/pricing-card-checkmark-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..31a4dcb1ded7f446350d5bfee35dd7f1b4f221e5 GIT binary patch literal 2964 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 KMNUMnLSTYy#i8r~ literal 0 HcmV?d00001 diff --git a/documentation/static/assets/pricing-card-checkmark-green.png b/documentation/static/assets/pricing-card-checkmark-green.png new file mode 100644 index 0000000000000000000000000000000000000000..5094788fb182bd1e8cd144be062b3d8590258a0b GIT binary patch literal 3118 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 IM6N<$f|wHKu>b%7 literal 0 HcmV?d00001 diff --git a/documentation/static/assets/pricing-card-checkmark-purple.png b/documentation/static/assets/pricing-card-checkmark-purple.png new file mode 100644 index 0000000000000000000000000000000000000000..b9d9b4d2ffcdd7fe5f11339bcc0bdf26bd6ade47 GIT binary patch literal 2970 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 { addVariant("light", `[data-theme="light"] &`); }), From f1b17285a11e05e5e75fc55557ad27b4bbe13970 Mon Sep 17 00:00:00 2001 From: Refine Community Bot <53254888+refine-bot@users.noreply.github.com> Date: Thu, 22 May 2025 15:07:39 +0300 Subject: [PATCH 2/9] Optimised images with calibre/image-actions --- .../static/assets/most-popular-badge-dark.png | Bin 5067 -> 3941 bytes .../assets/most-popular-badge-light.png | Bin 4995 -> 4215 bytes .../assets/pricing-card-checkmark-blue.png | Bin 2964 -> 2405 bytes .../assets/pricing-card-checkmark-green.png | Bin 3118 -> 2351 bytes .../assets/pricing-card-checkmark-purple.png | Bin 2970 -> 2428 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/documentation/static/assets/most-popular-badge-dark.png b/documentation/static/assets/most-popular-badge-dark.png index c8455ec0599bc0ce34cd5b045d548414bd9c9cb1..3bd9b5be32d6f0c574fada7a9b10406440cbae61 100644 GIT binary patch delta 3922 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 delta 5057 zcmV;y6F%(a9?K_?IDY^Eb5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1pojOU`a$lRCodH zU0IAA$9ewi=s9+|v)O}O9!pW-A<0@HPApsIGO}zZ0ZAZ1>?9Nw1PBzFBn0FkiO2*9 zkOz?og5*V19+C$^qzpN608x6$OF{+-B1ht7Q!)&Rv<^}twSUWFNr~jna*vtms`CF= zcg^+=du9*rMX5e;In~v5byt1=RXsfnW*HB^a4HxO<(6BbRLGXIEk>|{=0-9NdGMHZ zNc=OJF#|>bXDsB53uOe}cMisIZWvdfIRP+jm=Q_?3-FUpV`Xlz4nSNU)5g%T;mT-x zOy?M$!)kbl=YO$1Dr@Udj?seJ)(jYeYwg;h4#1Yx*aX8isT@|owlK{o3r8LI4Va)d zag27{8V@L++B62}8g1PuE3U8OdU3mWJEAcdh{{CQ!syW0vBddc`=S3=m9rV88$2_EwYS}u0YYhsoF zB%whv(qaaIYZ?iqFwJS95wVDn_(>}o7qWIfK<4T%bh${U-{UA>rCv}kR49+AdG zi?~W?0}+|2qD^ZhB0gIZU@q3QM2wDIdlAu%C7vZ+OkgJ*h_rZ~SVCiAmc$T|G-?M} zRE~;bzJHF1Y|BRNf!3D9RT54h-#AGrpBX1G=$y9gV4Wds{wPX{|Gc{6ksrb=;Esq$ z1pGvl*J!5hO_I+TH5PDoYpl%1f;^1kT&Ym2GI)60eOPIjT!mzO0ExE>dHZ$b<%6VU z!D?C4hh^T7O#S_pr+UxB3^5}jrV`NTVU#;Xw0}Xbmr2NaczjM_cxDx<(v7IKci>+S z=}ywXNX@^M5WYMULQb2A%U(RurGhmE1QLPW4Idls=JicJiTJ~_kcVO}l@DD9l za~`euzq|U>*Zy@n?M#`7qy^9O%6jDe8k^w>=;2WXx{}?D%YVbZT3pdQ{1iMqJSM>K;E&OL{8J>>5_BLh1Ps1& z>3fg#O;&GGA`%J5ZowmDiefma!UQ|#11}yPjS#Fvuki&mR9B#K{3HYH@yW>8kcdeV z3XFtuq0jk1jEBdR&;la!&&ZwinC??b|9{c-T^sxB6|PIfBnh=*H<(nDs#gyWkBMLq z{55VtZpK8v;o*~?J-O*(S~;GUNr9Q9CiEoq@R%74RQ?hFe~*D#%9Y&TdGNiKv~sCL zr0A&g3CSD<4-bzS0|T6Yg^cXSVCOFb4DCoOa~lymUOu*pwkRk%N`V>g6MA^u8Gnop zhan9A2BWAqfScc6dhpbvwPhv{k^DlYtaAypMd72P9v-s;Bg|E0%qyrFONQyEyN>*< zIeC5p5lcl_yWlK5jFfx_t<5%dY3w@_&bb6>L;SGXkW5nW@bH)eu>Zgf z{}P(1Te^O5q^cFGM63))B;=gk@P8($hsPYjls`nj?~DPEMzw8m*;OJc1MRk4MSGLf z!(%RC!Xp?#Eg56Jz4C=qO_XJcNRd*vXQ-ta1rHC8IRk3Lk2quR(-*BnsWwoaC1O^w zE?a}Y>60#p*2gH;QlL39v<@m5stpA8I0m~eShb@-~Tu# zyAK>|FQMZ|W@)I|f(B_e-n(o|MzS7CSG4Ls{?Vt08kK)^ZRd8*MK`6(p*elx{M941 zWmdEn3TxVOy*bIYat5m@PXT*(v{X6r<4-<2-l+XY?&;{wXM-&Q^gSr13Mj{lqe>sH z9anPPQ^EhA9oS#*+&9)O-G9j#FQlETca2Fru)JmU(&pUufYW%!$9!X?bo{+5Lw#x2 zn9IoCw68;c9#Fm}~oXr6-cm6pdl;V!!<& zs>3;-vJ{5u3q)55;D zBeV7LARKx#TA+H8qf(dKX?Q?wqCNQ1ARy?^pdGVhxky7r>Uxr_Qvj+ul~ zQgB=>j!e*)q)7^S`4ZiaT)=nZ^}mv~crO)4_9p9Diy{_gO;P&`N<8>Jfw zYlqj*4otX@(RJnjo6<|Nk~Hi#SO8>M<%TwyQNvY%hdg=-lnmq|+{9-ET12(EU+!-2 zVPGDrSAUEA1E(!X8YW3dphajW2Q>yA6XA)RlqM260+S}JU9cZs8$D1~<~jOPp_x}7 z6`<7Iy^U?LJ%3H(Zd5F>CZH`B#L^#4zL-o&WP|aW zOFm$|K1y20CK@Z;(<ciN}+Y4ogd)xi5Sia9|_fgw7Tf6#S>$SjUr>klByCZ6J)HkrNv%WP$ejum?wT? zL)U9$lBQ|r`9xA%t5^W7ZVjrDL4_t;qx#A)yLd^v!4#3yI13eJr1_U35*}LXBQ!@8 ziFM~&nsb|{(VV@H=y%(DV1@Ytf`cBTKYu9%kM4U=br@91PTCHM2QETK!T?M4X7YiJT9%c1bv~kP zNo|ag$L>N_{*yZ%Etii(V-wYJhekCFS{RKQQPhtEP#@T5^>|rxZfDZOhXukq^nb;j z0HUoJ`Xr&SvZd)b%?;q@9hBN)xI8;t?)3kY+;v zZBOjO9Uw_)w=94bM&!RC5n-mt%Al^#LuAB7`6>}#a?xuwLmaiFXd4o8%m03GWm=MW zI-q_?8>gMCXn67DCpQkmETfPQUVp>C+wv&@)X2o2YXnkOAC4yB>(XSNl7OUpMb=6^ zSE1ha4Bf|tjs!bM%~%Qjjb;u*Idm7tU=e`=BR$KT_BbDIb!*3Sv1)#xnLhf?C9?s>$-N<27=}kNPmcuG6#}< zj)r0Xl5C{aaewT=M%CQ|4bE4bLWjkQX0Lp3b!7kL!J#SEnO%@ofOEOkjps|t@-KZU z7QSd=SLcr&yugoCB06oJ+*YEzADtc83kwJo@EN7-&*zLv`wLdMg^|hRWNC42BU*nA zZ@M)Qml%MrqKkZC-(IAo>`9)C>%LT$} zQ5>yoE0)Xsjry}=V=$O(H_dl+PdpJSm2e1Vh;dhhzzRsFR6m^pYk&B$H|<<<`-1#^ zx({TY;@I~uPfLfK)JF~Wd~M{D zKzm89JzVt19I=-+=eEQq+H1)`h{JqF4r!6NzebzZF1SSZh#p2rE3>jCzt5$IOO;e} zj7T_@{*+Q@TzWbAk$*KHDqr93CQK{ZcOfU{k<$Ic-P__fGxGa}*?7F80x!NZjbh{tC(dnlpS4FqkCB zV_NGG$5|ptElx3kH&f;v%N$2v+LAT4a2n1DttZrq$DLruF&tW`Cu?+w8j<3r8m>#G zD>spbQgPmi8-E+`!y<$W+E7~6F{^4pe$+QNbalHYQRwlm=G)^CFpN?)X`aL+el{!F zK3A`2xqQC19zET$SR8#C^NJSsJ@;HKEilyR+iL?aH0JlOjXn!^h`7IP?x~xZ^haAL zWObySYb}>IqB~Jcnx!sET#ID%l*~=k#?Man$Qx-z*MIjyK3Rj|{bqVNOa`XNyV^QF z1M(9UvThslbGpWh`a3f)vh7a#8-HTR6dP%Ax4EBuFryJj z116uWS$~NAVG7jH!!%5@uz%;K>vmJA+2Bxmt2rxSQ_LLPCm6n+n6#fnrxLJ>C1ZCE~Idj;;%Z z_#GtUr)d2BA9#3p%qcRl=bY1j$$6`LwXZWBR}1rHC886(4# zAd}Q6Es$Fm`crs@bH*1Gz4p%NxD)8sSnJg60v{x zrqMB`zYm<<1P04-1lppY=qLqd0$@YD zVBVgLgoG)-+M9k*v79l#%Z#yK|1n^0O3n_3s(b@HJih2qW(i}g%YMfY=&fw*0tII3 z`GmEY_B-~M9z5|V1NM7{@lI_tk9Tbxm`*b@ z`mu|Z|9+~oG+cQMS@_+kb5fA(l40g3YRQkimh|{Mg90(3$hMhs*qS7uG2;9^Dsy3~ zS}=(_`qddCWO+;>8QJ~D=nl?kH^k5{!(2vceyq8^A&j`fLErQN9*?^b_J1MmvKAGL ze&#YJSJ9*aMb4eSQvz1ofmy<`13&q7#ni7N8Sg_<=223hmee#-1EewOMdFx4JC_Vq zr#)gO`Z*`cr*c?cV_9s&5UQJ;bcSKfmKveDt{uwL_z$8_+b33K20tM>rk1q**(e$S z(~+paemRfY!7*rhwWJ-Brhm7DNBLB*+9$W=P|nzr_8g@s4?i(@Wkg&LFT*G-Anf%k zEEjzW9+(P!(lt~6Mnvsn9*vVOnd;MzyD6>F<`;%u&`Q@sufCL6M=@?+$1X6R1zal~ zx8*UfAo6h|ia56yR%?0vP6$|S6XpP&FQ2^6Fz99#xDOXso^jTWRDWuZ7XLW;G%iY_ z3=x%5G#FZTTu7re5s`?=qtBSExCAYk=w+;&v2h|t31iJ*(G45xMCcm@3i0 zo~QP-EoaHYqVt#^2@n$#P+?&r3m_S^vLtsTjK~`i%C*mIJ29!LUR>Vxi|uKWqdZD0 zP3NLC5IL2CBoUn;5<2mZ*bknkFso00000NkvXXu0mjfrS*Wn diff --git a/documentation/static/assets/most-popular-badge-light.png b/documentation/static/assets/most-popular-badge-light.png index d94141a3a47967d5cc1657b263c8e088f639518d..9974cff8c0c2bb5b2b4f914e1da1a1a934b4b09e 100644 GIT binary patch delta 4198 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 delta 2937 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 diff --git a/documentation/static/assets/pricing-card-checkmark-green.png b/documentation/static/assets/pricing-card-checkmark-green.png index 5094788fb182bd1e8cd144be062b3d8590258a0b..728e6d75de840b3db62d9110aaee07cafadc405f 100644 GIT binary patch delta 2320 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 diff --git a/documentation/static/assets/pricing-card-checkmark-purple.png b/documentation/static/assets/pricing-card-checkmark-purple.png index b9d9b4d2ffcdd7fe5f11339bcc0bdf26bd6ade47..ac45fd1802c1229c72b280630663b273d6c489d8 100644 GIT binary patch delta 2397 zcmV-j38MCz7yJ^CIDZK)Nkl=bvV3Id?cC$N~=Q;29`+uHTY=K`RBR@IIw!QP2 z<@d9cH;@py>$#O*&ZWAAggNRqF4TJFglqABEwl5tCgrQwF}pg0X!cw#ncU!HTAKc2VP2mDgC%1 zm1RgT!=-;Wv|zI#)HZ-0CC~u>q+#nr+zAgGGCaaW@S@=c*|=06?Ahvx0W~FEIOPpWz(4a3c<}p|iK}KC0yh$=TfhOIXn;Tcm+iK7+UcL z$oLhA_a|4Tg63ksfDNBi3iyqZLgQihX;6Z{-R{2KB{kntAeFCb#`f`CsZk1ehS zo>aY>O)s>VQhhdZkRo^!T5tmI{{$lb3i$_!IoMM038AmAcIw>DUD-GDrU& z(P5gvL;ejiJ|L4=u#-20cT?oeI}E-kR&EJ^|9=L+{{@Zs02=XMJpV(v!@R&#e6I$+ z6DnU<6J+o?M1&KF76tGT8PEvi5>0#iUIAYe=h#vZaDs{OpU{TCL*4}ue@4`B8;|od zLS5H`FVzH?17!N7V||wrk&e?~{y)(1K^ES8+Pumuhi0d;Xo{ z(=YAb_ul_X<>B#n9&aons1cCx6nw#cn8Op$igmN8e}6ZFC)u^{Z|^sjA?B}x>VJ=c z0F=;r4|l>Xr(=Ibjo+TeMzi3XAs{}Szu1()L#7ivOx&EY8w;&gV2Vp)P#+t(qUQ28+B#79Q@9`(=Rob8TxC0aWf5GNQP40 zidf3=2D-`q7Ysa^f$e>s5+lP6?|)>rPZOwHV##!QyNhLx_I((^lUT!kKTV&gdrUn7 zW`}DlA^`H{i`pHh+X4R6@P#`;ipFqEcu5+@#wsE}6CXS}Ha$`Cg~#Xqh1&uCbk|4^ z8MZe>6KRr`5J0D1^^4Degtmf*&@7VK`P+^6 z#(_fv^lAzZDK}U{&*q%hJCDx_qzVb00AG~=IEIym8{BS6|Esj9Km*C9NZ4BkPzed0 z0$4C90%+nDOUZB__ zE0)(Gp;O=^_0LXSR+jUmynlh1VIlR6wlkE4_$W-*zj59PO%o(6H28w3C8Y#V84!z8 zEg+ObnGs16{-7mUT>~Vv2R!)ze_5Fi;JNc+@eQw?joNrPVd;$N23aD(Osh||i-fj; zM~Oc(0>tAlpB424Ojjpq4TVa^(I<6XtpS-C6A21d+1cL zw6oEEUaR9jsed{=x2!X4+TmTaUjxedMu>BdQPc6Ti(_txJJCnMm(Tb`JcQZS96wf<)mVgQj|l&-2&Z6hVxH^Vn^Oa6dHRX~;p^%A|eWUbK7Kd#J1W72Bb1cq2_w0sJ6$ zf(dBCb2L=sneg&n0)ML0-P~Hdtr-`=1U~dR$YFfY3m{={S875H@Ko*2Yg=^4R>QPZ zfQaxy^n@mmIe#P_{h6*=gAtR9s)8@g_viDXoZuArgsmoM*#Lx$MK?RT!`lze1Ru4# zT6#-F1Zf6y0Pq8aD=f5V5bk9{Ib7y1>%dy3f>Xt4!ZE~nN-g_i4G#fJUe=(}kN!4Q7duzeTW zVM9wyYPZo8ipFp>mu%*;Wt7<=zGt%s&*+*Pr19*lAB`?PN}T}-8>1ehRCgpSFH>l{ zD+^B!zY#ZVYQ6hwlCHkB=YdzhXQVHH7TiSBCRUC_3QtJ{pw#AOM1XhuoHYPN40-m7 z9$v4!XzqYA^pljZQ1_YaI^p;$p&6^o2mnx8*I`aL5CKN%N-KN|{r&zAa|GY-a}b!d P00000NkvXXu0mjfnn;wZ delta 2943 zcmV-_3xM?e5}Fr~IDY^Eb5ch_0Itp)=>Px#1ZP1_K>z@;j|==^1pojGFG)l}RCod1 zTkCHe)fGSI-n+BwB;?^B(l)$W(NZ8Tst^PfsVe0I2@la$auNtJhVW2n`vLj~v`Bob z3jKsy5XB^_O5zGyXiaEU1uFFcO)Esw(jrhpX;7Ya>NxT4%zxZ_`a9#S*|m4=-L<{8 z`%}iVGjnHh&+nesJ$Hs_j`7e#f9N=I;zVajcsYr5hz%V!up?_b^m<@&CQv>Yn-Y2a z^RY7>LurTyJ4}4EukWiTX%4|O2iU%SPv=OSt}ztOD+^i=1_XeFJbNw#3I%4H2Q3A| zChrC3h0l3_efB(MRnKOqj3OReR2u8R;C;^_hzz`bUDFhIK zb9upr%OC{50~hp|g-#hVFWEr<*tzq@qcjVcF#)X#UWO7NFpU7=b>unQ+k!~Qvw`4& zGcq_xfvw34v;yr@w)8t6!i)WVHy@@MU`7ON>3!j1!+*I;rV>1e56os1l8y?Oij?vw zM%9xsab-IrwvY%fwFV>a%_oRu4GDiTBL(IVL^VP{4i(Vrh$YjKp&({w|Fau@MJ=Kw z0=nVYawkr7i7}nEu4h6UGa^1dj!_#WW=}1^C!BYVE)2n4&dlr4Sr7qDz@C&4=15pz z8s>N;xqth1?6~0&HHoGPm}=BB!9|XdmE)}nT@P@QtBBpFVJf#V$y&)Yf+PIS_RxkB zwBm{9p56F#Q_pRt@#byMUuJCnqKW6{Qt(=kH1{=Q%nca*^Cc(&V`N|-L82e*>f89e zMxWI%0b95Jyes5#YbSMvWtb%SaH37mHB4~l!GHd@3ehdlf+*91OdBW%=ehg2XEr|2 z$a5MZVAEX#*IAZxD$nVt8b?0EUcoNy=QQa-pN^^Elx4y!q~dN2j{AE&=N8y>pjTo+}IAZhLP8Y~n-A z@g4Yi5Jxd=8ym-%Z1isF9k{37eKiTtIIp3u^4vleejLmnz$tElhdKy{sQtty2{hsx z-95iuTkDpZ1h|tYuc?gl>hKo4@Mkfm34i=8kZ~d-fm!o|Ji7i!t@e`$=;?WBtxj93 z8o}Ey2I0qH;&&kQk3d8WSz;vu$6Z@`1~yM>T6v(VpIBS1`pCBzg12uPHvSnp|0?`I z2}dQQ(9j0Dv-`o_%PN~y5nzrVzPNJqGrO1g2rW_=P96&+L(qhhF$7JZ$ednwTYpuX z@(&$->!NB$;lkjeQvC@CCY*-qzleE533)*Y+EB#ljoY@pvb5Z0oB-6VIx8LD*yz)u z9sM#wF4=>5%8*W$f`&%aA5tS5%GbvUm}L8b7rpQbWJPC!pwmWHimM-K=3bW4Yp6H=7c)l3|uL-2o!ks_%UAS#F{T&~wL z0#LK6s_aOLDeeM+3U963H1WK%?mlV)!v2pasHzhzszbDF#xy{^|0MNy>3@Py|9Zl= zg5c-~v}f2DE^_7z{F1NqzOd4`Q^%H9HiUhgZbwyTI!q_L_kI^O0So&_KL24F0)!6; ziKdvN=mKLUUp3d)>MhMPrWHP$z_7{~VoAelEZ!v58jwH(<`Inu zzkmPh4^a#7s9T1B^1QL75PzhYbEe>M(19x-wJOA(yrucTTneu!M0_&!QWP+Ovb}_0 z@-76bDsOYr5mO5hP~&tiitf!in#Q{i{O!-*Y3Ba97Cw81M-l|vXX6PPAetqai4g$8 zH!c0TE7m_UF;1&Mjo#l5;T3^>5l&t;pr|1ctI}@TqG%(qZgS^Upnpb4XqWKg{ZayS zb2i&!Z8Bgp;~UK)rX!)OeKMjXX7*&7%FLZo*P-RYiMK=8>^^{&+;VLpVf z1%$*9qn9=W@7Quq7bK}k>_70vW7^?**C&!NZ^DNVRUIQAz}h@xDiCtmXK$!1UBa%I zNQs(+cDSo+Jy}y*uz#~8jQ_6poVgr%2~otR^8bQ4Sh6}fu#n&B%F5{?FQ*ov9iL7U z=2PvF_Eh;e_<>QA;twLC+P)R6IOZ(1On_oK66&EHHZN&fRS?bPbHm0*_9SNnU_lXS zAy$@F(hSio3GH%t2mw_&k3Um7WhkFV%^yzC!+Z@pA7mAFIe(fV8YQ7^!i!*Vd1>XT zG%XFA{wJ;a2gWNMuo1~)Pi|M>ef^pdjD?u_c#IhaCjdULy{~f zU}ND3m*DE>Xt5*Bt$|}7A4o*GltxDf%g5sc^!441ntwU(Bb_mlAS7ZR=<}`24HgX4 z_HDK8L%R>D_b(q;rG^D6{0VbptO+tq!Dv`qYHf5QEmm+;HTr7%p?KzCWs@ob`ueU% zshIb&0dEqlhDOv2J}aranid&2jn19u`PKF-M_)0i0P>S(Z~8rla4=g?f+-**!W`@u zp%EXW#eV{w_L@-T__D-j$E}mzC9YWkN}So1y;_pZ4YCAj83M%Z+55T+9cuTS{}g4u zYz)kp291ooQLA}P0{WlcFo>M+6@t`R6g7-INmd7T_p!|{ToTH{SK7Uv7CTAx%cxre z-2LMXdr>fWm9sWuQ2~>Q&X9zA7o;ZC5k9r{-GAr$HXf{Z+muDn{v9{%N+i6FwFAr+ zp-2FVCo6<^UY`l-=5$f&FI=rgoEH8X&Hyrx3_fv!DzU$@fP?u|=0UqXngbG;#n-uiFWw7=x zrhm=v6kvW&E-ru$Jmba-vH2ulUrhE2WZ$h{c*`j`?k|JI9m_&Qs!%T*3B!Bfu z=`cGxyDwQxBe;e-_4ZRayjp1Oqp9tCI)6#z;G^Py#ZNNf zXaO7}Mnd#`efSEav&)p(92E*D#iT=6iitxh6m4$8+5@KE5@D3pqYD?bfI0RJA%E3f zt8aDGtDZqKL~rljm9a0bMKT$|oeLo&1pXq$f_%#Q!6VbyHC>~_9t+fg znuOk;7%jR~X}lDv^co1eL=0snp`-3VKnSTu4&RUl z=oB^$M?>U}Xo^m=j5#5o65S8(T}C4#osQf}n8^wzUr-x?QAEz_%Q Date: Thu, 22 May 2025 15:15:51 +0300 Subject: [PATCH 3/9] fix(docs): update pricing card links for starter and pro tiers --- documentation/src/refine-theme/ai-pricing-cards.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/src/refine-theme/ai-pricing-cards.tsx b/documentation/src/refine-theme/ai-pricing-cards.tsx index 557708a2e309d..2b340bca013a3 100644 --- a/documentation/src/refine-theme/ai-pricing-cards.tsx +++ b/documentation/src/refine-theme/ai-pricing-cards.tsx @@ -155,7 +155,7 @@ const PricingCardStarter = () => {
{
Date: Thu, 22 May 2025 16:14:59 +0300 Subject: [PATCH 4/9] refactor(docs): adjust padding and text styling in AI landing components --- ...manage-with-ease-scale-with-confidence.tsx | 8 +++-- .../src/refine-theme/ai-landing-step-info.tsx | 2 +- .../src/refine-theme/ai-landing-step-list.tsx | 24 +++++++------- .../src/refine-theme/ai-pricing-cards.tsx | 32 +++++++++---------- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx b/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx index 9df1647636a91..f75c490135d22 100644 --- a/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx +++ b/documentation/src/refine-theme/ai-landing-manage-with-ease-scale-with-confidence.tsx @@ -20,7 +20,7 @@ export const AiLandingManageWithEaseScaleWithConfidence = ({ "landing-sm:leading-10", "tracking-tight", "text-start", - "pl-4 landing-sm:pl-0", + "pl-4 landing-sm:pl-10", "dark:text-gray-0 text-gray-900", )} > @@ -42,9 +42,11 @@ export const AiLandingManageWithEaseScaleWithConfidence = ({ "text-refine-indigo drop-shadow-[0_0_30px_rgba(51,51,255,0.55)]", )} > - confidence + + confidence + . + - .
{ "text-2xl", "font-semibold", "landing-sm:text-[32px] landing-sm:leading-[40px]", - "pl-4 landing-sm:pl-0", + "pl-4 landing-sm:pl-10", )} > Seamless workflow,{" "} - - step by step + + + step by step + . + - .
{ return (
-
+

Select your plan and{" "} @@ -48,8 +38,8 @@ export const AiPricingCards = ({ className }: PricingCardProps) => { )} > get started + . - .

{ "hidden", "refine-sm:flex", "w-full", - "max-w-[436px]", + "max-w-[344px]", + "landing-sm:max-w-[420px]", + "landing-md:max-w-[436px]", "landing-lg:max-w-[384px]", )} /> @@ -104,7 +96,9 @@ const PricingCardStarter = () => { "py-10", "px-6", "w-full", - "max-w-[436px]", + "max-w-[344px]", + "landing-sm:max-w-[420px]", + "landing-md:max-w-[436px]", "landing-lg:max-w-[384px]", "border", "dark:border-[#343A46]", @@ -320,7 +314,9 @@ const PricingCardPro = () => { "py-10", "px-6", "w-full", - "max-w-[436px]", + "max-w-[344px]", + "landing-sm:max-w-[420px]", + "landing-md:max-w-[436px]", "landing-lg:max-w-[384px]", "border", "dark:border-[#343A46]", @@ -476,7 +472,9 @@ const PricingCardEnterprise = () => { "py-10", "px-6", "w-full", - "max-w-[436px]", + "max-w-[344px]", + "landing-sm:max-w-[420px]", + "landing-md:max-w-[436px]", "landing-lg:max-w-[384px]", "border", "dark:border-[#343A46]", From 329e8ee0191a46b37cde24cb034084df859fb13f Mon Sep 17 00:00:00 2001 From: Alican Erdurmaz Date: Thu, 22 May 2025 16:29:30 +0300 Subject: [PATCH 5/9] fix(docs): correct background color in pricing card and remove text color from subscribe button --- documentation/src/refine-theme/ai-pricing-cards.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/documentation/src/refine-theme/ai-pricing-cards.tsx b/documentation/src/refine-theme/ai-pricing-cards.tsx index 29db7eba4c1fb..302616b149338 100644 --- a/documentation/src/refine-theme/ai-pricing-cards.tsx +++ b/documentation/src/refine-theme/ai-pricing-cards.tsx @@ -160,7 +160,7 @@ const PricingCardStarter = () => { className={clsx( "mt-auto", "text-refine-react-light-green dark:text-refine-react-dark-green", - "bg-refine-react-light-green/10 dark:bg-refine-react-dark-green/20", + "bg-refine-react-dark-green/10 dark:bg-refine-react-dark-green/20", )} /> @@ -572,7 +572,6 @@ const SubscribeButton = ({ "rounded-lg", "py-3", "font-medium", - "text-white", "transition-colors", className, )} From b377f2020f63b5edc1a3dc65290273080eacfdef Mon Sep 17 00:00:00 2001 From: Alican Erdurmaz Date: Thu, 22 May 2025 17:05:04 +0300 Subject: [PATCH 6/9] fix(docs): ai landing hero video doesnt respect color mode on first render --- .../src/refine-theme/ai-landing-hero.tsx | 87 ++++++++++--------- 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/documentation/src/refine-theme/ai-landing-hero.tsx b/documentation/src/refine-theme/ai-landing-hero.tsx index b264689a3fdae..40e79757fa089 100644 --- a/documentation/src/refine-theme/ai-landing-hero.tsx +++ b/documentation/src/refine-theme/ai-landing-hero.tsx @@ -2,6 +2,7 @@ import { useColorMode } from "@docusaurus/theme-common"; import clsx from "clsx"; import React from "react"; import { JoinWaitlist } from "./ai-landing-join-the-waitlist-cta"; +import BrowserOnly from "@docusaurus/BrowserOnly"; export const AiLandingHero = ({ className, @@ -10,9 +11,6 @@ export const AiLandingHero = ({ className?: string; contentClassName?: string; }) => { - const { colorMode } = useColorMode(); - const isDarkTheme = colorMode === "dark"; - return (
- + {() =>
); }; + +const Video = () => { + const { colorMode } = useColorMode(); + const isDarkTheme = colorMode === "dark"; + + return ( + + ); +}; From e3a95c8a04d282d6c5e97808bc0f43c8fa28b8cd Mon Sep 17 00:00:00 2001 From: Alican Erdurmaz Date: Thu, 22 May 2025 18:09:28 +0300 Subject: [PATCH 7/9] fix(docs): update SelectTrigger component to ensure full width for span elements --- documentation/src/refine-theme/shadcn/select.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/src/refine-theme/shadcn/select.tsx b/documentation/src/refine-theme/shadcn/select.tsx index 78a4de689c8d6..f401e0a912271 100644 --- a/documentation/src/refine-theme/shadcn/select.tsx +++ b/documentation/src/refine-theme/shadcn/select.tsx @@ -28,7 +28,7 @@ const SelectTrigger = React.forwardRef< span]:line-clamp-1", + "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 [&>span]:w-full", className, )} {...props} From dc1b9de69d6fbf09635dfeb03e0e2e2d6a3aadf7 Mon Sep 17 00:00:00 2001 From: Alican Erdurmaz Date: Thu, 22 May 2025 19:39:24 +0300 Subject: [PATCH 8/9] fix(docs): update AI FAQ and landing hero content for clarity and accuracy --- documentation/src/refine-theme/ai-faq.tsx | 15 +++++---------- .../src/refine-theme/ai-landing-hero.tsx | 8 ++++---- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/documentation/src/refine-theme/ai-faq.tsx b/documentation/src/refine-theme/ai-faq.tsx index b04c490032e3c..7ac2c0b87b984 100644 --- a/documentation/src/refine-theme/ai-faq.tsx +++ b/documentation/src/refine-theme/ai-faq.tsx @@ -130,7 +130,7 @@ const faqData = [ { question: "What are credits?", answer: - "Credits are the usage units you spend when generating code, previewing output, or using any other feature in Refine AI. Every paid plan includes a monthly credit allowance based on your tier.", + "Credits are the usage units you spend when generating code, previewing output, or using any other feature in Refine AI. Every paid plan refills a fixed number of credits at the start of each billing month.", }, { question: "How many real tokens does one credit equal?", @@ -140,33 +140,28 @@ const faqData = [ { question: "What happens when I run out of credits?", answer: - "When your credits run out, you can continue working within your existing projects — but generating new outputs will pause until your next renewal. If you need to keep building right away, you can upgrade your plan at any time. Upgrades take effect immediately and reset your credit balance so you can pick up where you left off.", + "You can still view and edit the code you’ve already generated, but new AI actions pause until the next refill. Need to keep building right away? Upgrade your plan—credits and billing cycle refresh instantly.", }, { question: "Can I upgrade my plan at any time?", answer: - "Yes — upgrades take effect immediately. You’ll receive additional credits right away, and your billing cycle will restart from the upgrade date. Your previous payment is prorated and credited automatically.", + "Yes — upgrades take effect immediately. You’ll receive additional credits right away.", }, { question: "What happens when I downgrade?", answer: - "Downgrades take effect at the start of your next billing cycle. You’ll remain on your current tier until then.", + "Downgrades take effect at the start of your next billing cycle. You’ll remain on your current tier until then. Example: You’re on $40 / 3 K-tokens with 800 tokens left. You downgrade to $20 / 1.5 K-tokens. You can still use the remaining 800 tokens this month; on your next billing date your bucket resets to 1 500 tokens.", }, { question: "Will I lose unused credits when I change plans?", answer: - "If you upgrade, any unused credits carry over but still expire at the end of your current billing cycle. If you downgrade, your new monthly credit limit will apply at the start of the next cycle.", + "If you upgrade, your balance is topped-up to the full allowance of the new plan right away. Example: You’re on the $20 / 1.5 K-token plan and have 600 tokens left. Mid-month you upgrade to $40 / 3 K-tokens. Your bucket is immediately refilled to 3 000 tokens for the rest of the current cycle.", }, { question: "Do unused credits roll over month-to-month?", answer: "No — credits reset each month unless you’re on an Enterprise plan with a custom rollover agreement.", }, - { - question: "How does billing work when I upgrade mid-month?", - answer: - "We use prorated billing — you’ll only pay the difference for the time remaining in your current billing cycle. This is handled automatically through Stripe.", - }, { question: "Can I buy extra credits without upgrading?", answer: diff --git a/documentation/src/refine-theme/ai-landing-hero.tsx b/documentation/src/refine-theme/ai-landing-hero.tsx index 40e79757fa089..79921fd2ff60a 100644 --- a/documentation/src/refine-theme/ai-landing-hero.tsx +++ b/documentation/src/refine-theme/ai-landing-hero.tsx @@ -68,9 +68,9 @@ export const AiLandingHero = ({ "dark:text-refine-react-dark-green-alt dark:drop-shadow-[0_0_30px_rgba(38,217,127,0.55)]", )} > - AI Coding agents + Instant React Dashboards
-
for building internal software.
+
straight from your APIs.

- The next-gen approach to build enterprise-ready React-based internal - tools, admin panels, dashboards & B2B apps with the power of GenAI. + Powered by AI, secure by default and fully React. Export or deploy + whenever you’re ready.

From a2d0db819e8579540ed2443b3038dabde0448b1e Mon Sep 17 00:00:00 2001 From: Alican Erdurmaz Date: Thu, 22 May 2025 20:06:42 +0300 Subject: [PATCH 9/9] fix(docs): use new lines for long answer --- documentation/src/refine-theme/ai-faq.tsx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/documentation/src/refine-theme/ai-faq.tsx b/documentation/src/refine-theme/ai-faq.tsx index 7ac2c0b87b984..d2f6593ac399e 100644 --- a/documentation/src/refine-theme/ai-faq.tsx +++ b/documentation/src/refine-theme/ai-faq.tsx @@ -35,8 +35,8 @@ export const AiFaq = ({ className }: AiFaqProps) => { }; type AccordionItemProps = { - question: string; - answer: string; + question: React.ReactNode; + answer: React.ReactNode; }; const AccordionItem: React.FC = ({ question, answer }) => { @@ -149,8 +149,20 @@ const faqData = [ }, { question: "What happens when I downgrade?", - answer: - "Downgrades take effect at the start of your next billing cycle. You’ll remain on your current tier until then. Example: You’re on $40 / 3 K-tokens with 800 tokens left. You downgrade to $20 / 1.5 K-tokens. You can still use the remaining 800 tokens this month; on your next billing date your bucket resets to 1 500 tokens.", + answer: ( +
+

+ Downgrades take effect at the start of your next billing cycle. You’ll + remain on your current tier until then. +

+

+ Example: You’re on $40 / 3 + K-tokens with 800 tokens left. You downgrade to $20 / 1.5 K-tokens. + You can still use the remaining 800 tokens this month; on your next + billing date your bucket resets to 1 500 tokens. +

+
+ ), }, { question: "Will I lose unused credits when I change plans?",