<Button değişiklikleri

This commit is contained in:
Sedat ÖZTÜRK 2026-06-26 11:59:13 +03:00
parent 5110349a6b
commit bf5088609e
134 changed files with 1126 additions and 1132 deletions

View file

@ -270,6 +270,18 @@
"en": "Login", "en": "Login",
"tr": "Giriş" "tr": "Giriş"
}, },
{
"resourceName": "Platform",
"key": "Save",
"en": "Save",
"tr": "Kaydet"
},
{
"resourceName": "Platform",
"key": "Saving",
"en": "Saving...",
"tr": "Kaydediliyor..."
},
{ {
"resourceName": "AbpAccount", "resourceName": "AbpAccount",
"key": "Cancel", "key": "Cancel",
@ -1014,6 +1026,36 @@
"en": "Manager", "en": "Manager",
"tr": "Yönetici" "tr": "Yönetici"
}, },
{
"resourceName": "Platform",
"key": "Submit",
"en": "Submit",
"tr": "Gönder"
},
{
"resourceName": "Platform",
"key": "Submitting",
"en": "Submitting",
"tr": "Submitting..."
},
{
"resourceName": "Platform",
"key": "SendCode",
"en": "Send Code",
"tr": "Kod Gönder"
},
{
"resourceName": "Platform",
"key": "SendingCode",
"en": "Sending code...",
"tr": "Kod Gönderiliyor"
},
{
"resourceName": "Platform",
"key": "OK",
"en": "OK",
"tr": "Tamam"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "Cancel", "key": "Cancel",
@ -2382,6 +2424,12 @@
"en": "Sign Up", "en": "Sign Up",
"tr": "Üye Ol" "tr": "Üye Ol"
}, },
{
"resourceName": "Platform",
"key": "Abp.Account.CreatingAccount",
"en": "Creating Account...",
"tr": "Hesap oluşturuluyor..."
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "Abp.Account.SignUp.Message", "key": "Abp.Account.SignUp.Message",
@ -4122,12 +4170,6 @@
"en": "Edit Room", "en": "Edit Room",
"tr": "Odayı Düzenle" "tr": "Odayı Düzenle"
}, },
{
"resourceName": "Platform",
"key": "App.Videoroom.SaveChanges",
"en": "Save Changes",
"tr": "Değişiklikleri Kaydet"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "App.Videoroom.CameraOff", "key": "App.Videoroom.CameraOff",
@ -7316,10 +7358,16 @@
}, },
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "Public.common.send", "key": "Send",
"tr": "Gönder", "tr": "Gönder",
"en": "Send" "en": "Send"
}, },
{
"resourceName": "Platform",
"key": "Resend",
"tr": "Tekrar Gönder",
"en": "Resend"
},
{ {
"resourceName": "Platform", "resourceName": "Platform",
"key": "Public.common.subscribe", "key": "Public.common.subscribe",

View file

@ -66,7 +66,6 @@ export const PanelManager: React.FC<PanelManagerProps> = ({
) )
} }
variant={panelState[key] ? "twoTone" : "plain"} variant={panelState[key] ? "twoTone" : "plain"}
color="blue-600"
size="xs" size="xs"
title={panelState[key] ? "Hide" : "Show"} title={panelState[key] ? "Hide" : "Show"}
/> />

View file

@ -289,7 +289,6 @@ const PropertyPanel: React.FC<PropertyPanelProps> = ({
onClick={() => openTailwindModal(property.name)} onClick={() => openTailwindModal(property.name)}
icon={<FaCode className="w-3 h-3" />} icon={<FaCode className="w-3 h-3" />}
variant="solid" variant="solid"
color="blue-600"
size="xs" size="xs"
title="Select Tailwind Classes" title="Select Tailwind Classes"
> >
@ -325,7 +324,6 @@ const PropertyPanel: React.FC<PropertyPanelProps> = ({
onClick={() => openTailwindModal(property.name)} onClick={() => openTailwindModal(property.name)}
icon={<FaCode className="w-3 h-3" />} icon={<FaCode className="w-3 h-3" />}
variant="solid" variant="solid"
color="blue-600"
size="xs" size="xs"
title="Select Tailwind Classes" title="Select Tailwind Classes"
> >
@ -498,7 +496,6 @@ const PropertyPanel: React.FC<PropertyPanelProps> = ({
<div className="flex gap-2 p-1"> <div className="flex gap-2 p-1">
<Button <Button
variant={activeTab === "props" ? "twoTone" : "plain"} variant={activeTab === "props" ? "twoTone" : "plain"}
color="blue-600"
size="xs" size="xs"
onClick={() => setActiveTab("props")} onClick={() => setActiveTab("props")}
> >
@ -506,7 +503,6 @@ const PropertyPanel: React.FC<PropertyPanelProps> = ({
</Button> </Button>
<Button <Button
variant={activeTab === "hooks" ? "twoTone" : "plain"} variant={activeTab === "hooks" ? "twoTone" : "plain"}
color="blue-600"
size="xs" size="xs"
onClick={() => setActiveTab("hooks")} onClick={() => setActiveTab("hooks")}
> >

View file

@ -111,8 +111,7 @@ const TailwindModal: React.FC<TailwindModalProps> = ({
> >
<Button <Button
block block
variant="twoTone" variant="solid"
color="blue-600"
size="xs" size="xs"
onClick={() => handleClassSelect(className)} onClick={() => handleClassSelect(className)}
className="justify-start" className="justify-start"
@ -142,7 +141,6 @@ const TailwindModal: React.FC<TailwindModalProps> = ({
</Button> </Button>
<Button <Button
variant="solid" variant="solid"
color="blue-600"
size="sm" size="sm"
onClick={onClose} onClick={onClose}
> >

View file

@ -347,8 +347,6 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
) )
} }
variant={activeTab === tab ? 'solid' : 'plain'} variant={activeTab === tab ? 'solid' : 'plain'}
color="blue-600"
size="sm"
className={activeTab === tab ? 'shadow-md' : ''} className={activeTab === tab ? 'shadow-md' : ''}
> >
<span className="capitalize">{tab}</span> <span className="capitalize">{tab}</span>
@ -379,7 +377,6 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
disabled={generating} disabled={generating}
icon={<FaFileExcel className="w-3.5 h-3.5" />} icon={<FaFileExcel className="w-3.5 h-3.5" />}
variant="twoTone" variant="twoTone"
color="green-600"
size="xs" size="xs"
> >
{translate('::App.Listforms.ImportManager.ExcelTemplate')} {translate('::App.Listforms.ImportManager.ExcelTemplate')}
@ -390,7 +387,6 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
disabled={generating} disabled={generating}
icon={<FaFileAlt className="w-3.5 h-3.5" />} icon={<FaFileAlt className="w-3.5 h-3.5" />}
variant="twoTone" variant="twoTone"
color="blue-600"
size="xs" size="xs"
> >
{translate('::App.Listforms.ImportManager.CsvTemplate')} {translate('::App.Listforms.ImportManager.CsvTemplate')}
@ -607,7 +603,6 @@ export const ImportDashboard: React.FC<ImportDashboardProps> = ({ gridDto }) =>
}} }}
icon={<FaSync className="w-4 h-4" />} icon={<FaSync className="w-4 h-4" />}
variant="twoTone" variant="twoTone"
color="blue-600"
size="xs" size="xs"
title={translate('::App.Listforms.ImportManager.RefreshExecutionDetails')} title={translate('::App.Listforms.ImportManager.RefreshExecutionDetails')}
/> />

View file

@ -329,7 +329,6 @@ export const ImportPreview: React.FC<ImportPreviewProps> = ({
loading={loading} loading={loading}
icon={<FaPlay className="w-4 h-4" />} icon={<FaPlay className="w-4 h-4" />}
variant="solid" variant="solid"
color="blue-600"
size="sm" size="sm"
> >
{loading {loading

View file

@ -1,6 +1,6 @@
import View from '@/views/Views' import View from '@/views/Views'
import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import { useLocation, Link } from 'react-router-dom' import { useLocation, Link, useNavigate } from 'react-router-dom'
import { FaFacebook, FaTwitter, FaLinkedin, FaInstagram } from 'react-icons/fa' import { FaFacebook, FaTwitter, FaLinkedin, FaInstagram } from 'react-icons/fa'
import { import {
LuMenu, LuMenu,
@ -36,6 +36,7 @@ interface NavLink {
const PublicLayout = () => { const PublicLayout = () => {
const location = useLocation() const location = useLocation()
const navigate = useNavigate()
const { translate } = useLocalization() const { translate } = useLocalization()
const [isDarkMode, setThemeMode] = useDarkMode() const [isDarkMode, setThemeMode] = useDarkMode()
@ -155,7 +156,7 @@ const PublicLayout = () => {
size="xs" size="xs"
className={`!h-8 !w-8 xl:!w-auto !px-0 xl:!px-2.5 !rounded-r-md !rounded-l-none !border-transparent !shadow-none ${ className={`!h-8 !w-8 xl:!w-auto !px-0 xl:!px-2.5 !rounded-r-md !rounded-l-none !border-transparent !shadow-none ${
isDarkMode isDarkMode
? '!bg-white !text-gray-950' ? '!bg-gray-300 !text-gray-800'
: '!bg-transparent !text-gray-300 hover:!bg-transparent hover:!text-white' : '!bg-transparent !text-gray-300 hover:!bg-transparent hover:!text-white'
}`} }`}
/> />
@ -251,13 +252,15 @@ const PublicLayout = () => {
.filter((l) => isLoginLink(l.resourceKey)) .filter((l) => isLoginLink(l.resourceKey))
.map((link) => .map((link) =>
link.path ? ( link.path ? (
<Link <Button
key={link.path} key={link.path}
to={link.path} type="button"
className="inline-flex h-9 items-center gap-1.5 px-4 text-sm font-semibold text-white bg-blue-600 hover:bg-blue-500 rounded-lg shadow-md shadow-blue-900/30 transition-all duration-200 hover:shadow-blue-700/40 hover:-translate-y-px" variant="solid"
shape="round"
onClick={() => navigate(link.path!)}
> >
{link.name} {link.name}
</Link> </Button>
) : null, ) : null,
)} )}
</div> </div>

View file

@ -53,8 +53,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
onClick={() => !hasCartItems && setGlobalBillingCycle('monthly')} onClick={() => !hasCartItems && setGlobalBillingCycle('monthly')}
disabled={hasCartItems} disabled={hasCartItems}
variant={globalBillingCycle === 'monthly' ? 'solid' : 'default'} variant={globalBillingCycle === 'monthly' ? 'solid' : 'default'}
color="blue-600" size="xs"
size="sm"
className={globalBillingCycle === 'monthly' ? 'shadow-md' : ''} className={globalBillingCycle === 'monthly' ? 'shadow-md' : ''}
title={ title={
hasCartItems ? 'Sepette ürün varken faturalama döngüsü değiştirilemez' : undefined hasCartItems ? 'Sepette ürün varken faturalama döngüsü değiştirilemez' : undefined
@ -66,8 +65,7 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
onClick={() => !hasCartItems && setGlobalBillingCycle('yearly')} onClick={() => !hasCartItems && setGlobalBillingCycle('yearly')}
disabled={hasCartItems} disabled={hasCartItems}
variant={globalBillingCycle === 'yearly' ? 'solid' : 'default'} variant={globalBillingCycle === 'yearly' ? 'solid' : 'default'}
color="blue-600" size="xs"
size="sm"
className={globalBillingCycle === 'yearly' ? 'shadow-md' : ''} className={globalBillingCycle === 'yearly' ? 'shadow-md' : ''}
title={ title={
hasCartItems ? 'Sepette ürün varken faturalama döngüsü değiştirilemez' : undefined hasCartItems ? 'Sepette ürün varken faturalama döngüsü değiştirilemez' : undefined
@ -98,8 +96,8 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
/> />
<div className="flex items-center space-x-2 bg-gray-50 px-2 py-1 rounded-lg dark:bg-gray-800"> <div className="flex items-center space-x-2 bg-gray-50 px-2 py-1 rounded-lg dark:bg-gray-800">
<span className="font-bold text-lg text-blue-600">{globalPeriod}</span> <span className="font-bold text-lg text-gray-600 dark:text-white">{globalPeriod}</span>
<span className="text-sm text-gray-600 dark:text-gray-300"> <span className="text-xs text-gray-600 dark:text-white">
{globalBillingCycle === 'monthly' {globalBillingCycle === 'monthly'
? translate('::Public.products.billingcycle.month') ? translate('::Public.products.billingcycle.month')
: translate('::Public.products.billingcycle.year')} : translate('::Public.products.billingcycle.year')}
@ -119,10 +117,10 @@ export const BillingControls: React.FC<BillingControlsProps> = ({
<Button <Button
onClick={onCartClick} onClick={onCartClick}
icon={<FaShoppingCart className="w-5 h-5" />} icon={<FaShoppingCart className="w-3 h-3" />}
variant="solid" variant="solid"
color="green-600" color="green-600"
size="sm" size="xs"
className="relative shadow-md" className="relative shadow-md"
> >
<span className="font-medium text-sm">{translate('::Public.nav.basket')}</span> <span className="font-medium text-sm">{translate('::Public.nav.basket')}</span>

View file

@ -170,7 +170,6 @@ export const Cart: React.FC<CartProps> = ({
onClick={onCheckout} onClick={onCheckout}
block block
variant="solid" variant="solid"
color="blue-600"
size="md" size="md"
> >
{translate('::Public.cart.checkout')} {translate('::Public.cart.checkout')}

View file

@ -119,7 +119,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({
} }
return ( return (
<div className="mx-auto px-4 lg:px-8 mb-6"> <div className="mx-auto px-4 lg:px-8 mt-5">
{loading ? ( {loading ? (
<div className="text-center py-12 text-gray-500"> <div className="text-center py-12 text-gray-500">
{translate('::App.Loading')} {translate('::App.Loading')}
@ -258,14 +258,14 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({
<FaLock className="w-5 h-5 text-green-600 mr-2" />{' '} <FaLock className="w-5 h-5 text-green-600 mr-2" />{' '}
{translate('::Public.payment.method.title')} {translate('::Public.payment.method.title')}
</h2> </h2>
<div className="space-y-2"> <div className="space-y-3">
{paymentMethods.map((method) => ( {paymentMethods.map((method) => (
<label <label
key={method.id} key={method.id}
className={`flex items-center p-3 border-2 rounded-lg cursor-pointer transition-all ${ className={`group flex items-center gap-3 rounded-xl border p-4 cursor-pointer transition-all ${
selectedPaymentMethod === method.name selectedPaymentMethod === method.name
? 'border-blue-500 bg-blue-50' ? 'border-blue-500 bg-blue-50 shadow-sm ring-1 ring-blue-500/20 dark:border-blue-400 dark:bg-blue-950/30 dark:ring-blue-400/20'
: 'border-gray-200 hover:border-gray-300 dark:border-gray-700 dark:hover:border-gray-500' : 'border-gray-200 bg-white hover:border-blue-300 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-950/40 dark:hover:border-blue-500 dark:hover:bg-gray-800/70'
}`} }`}
> >
<input <input
@ -278,15 +278,30 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({
}} }}
className="sr-only" className="sr-only"
/> />
<span className="text-2xl mr-3">{method.logo}</span> <span
<div> className={`flex h-10 w-10 shrink-0 items-center justify-center rounded-lg text-xl ${
<div className="font-medium text-gray-900 dark:text-gray-100">{method.name}</div> selectedPaymentMethod === method.name
<div className="text-sm text-gray-600 dark:text-gray-300"> ? 'bg-blue-100 text-blue-700 dark:bg-blue-900/50 dark:text-blue-200'
: 'bg-gray-100 text-gray-500 group-hover:bg-blue-50 group-hover:text-blue-600 dark:bg-gray-800 dark:text-gray-300 dark:group-hover:bg-blue-900/30 dark:group-hover:text-blue-200'
}`}
>
{method.logo}
</span>
<div className="min-w-0 flex-1">
<div className="font-semibold text-gray-900 dark:text-gray-100">{method.name}</div>
<div className="text-sm text-gray-600 dark:text-gray-400">
{method.name === defaultPaymentMethod {method.name === defaultPaymentMethod
? translate('::Public.payment.method.installmentsAvailable') ? translate('::Public.payment.method.installmentsAvailable')
: translate('::Public.payment.method.noCommission')} : translate('::Public.payment.method.noCommission')}
</div> </div>
</div> </div>
<span
className={`h-3 w-3 shrink-0 rounded-full border ${
selectedPaymentMethod === method.name
? 'border-blue-500 bg-blue-500 dark:border-blue-300 dark:bg-blue-300'
: 'border-gray-300 dark:border-gray-600'
}`}
/>
</label> </label>
))} ))}
</div> </div>
@ -304,8 +319,8 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({
key={option.id} key={option.id}
className={`flex flex-col items-center justify-center h-full p-4 border-2 rounded-xl cursor-pointer transition-all text-xs md:text-sm text-center select-none ${ className={`flex flex-col items-center justify-center h-full p-4 border-2 rounded-xl cursor-pointer transition-all text-xs md:text-sm text-center select-none ${
selectedInstallment?.installment === option.installment selectedInstallment?.installment === option.installment
? 'border-blue-500 bg-blue-50 shadow-md scale-105' ? 'border-blue-500 bg-blue-50 shadow-md scale-105 dark:border-blue-400 dark:bg-blue-950/30 dark:shadow-blue-950/20'
: 'border-gray-200 hover:border-blue-200 dark:border-gray-700 dark:hover:border-blue-500' : 'border-gray-200 bg-white hover:border-blue-200 hover:bg-gray-50 dark:border-gray-700 dark:bg-gray-950/40 dark:hover:border-blue-500 dark:hover:bg-gray-800/70'
}`} }`}
> >
<input <input
@ -323,7 +338,7 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({
%{(option.commission * 100).toFixed(1)} %{(option.commission * 100).toFixed(1)}
</span> </span>
</div> </div>
<div className="text-blue-700 font-bold mb-1"> <div className="font-bold mb-1">
{option.installment > 1 {option.installment > 1
? `${option.installment} ${translate('::Public.payment.installments.monthly')}` ? `${option.installment} ${translate('::Public.payment.installments.monthly')}`
: translate('::Public.payment.installments.single')} : translate('::Public.payment.installments.single')}
@ -457,7 +472,6 @@ export const PaymentForm: React.FC<PaymentFormProps> = ({
type="submit" type="submit"
icon={<FaCreditCard className="w-5 h-5" />} icon={<FaCreditCard className="w-5 h-5" />}
variant="solid" variant="solid"
color="green-600"
size="sm" size="sm"
> >
{selectedPaymentMethod === 'bank-transfer' {selectedPaymentMethod === 'bank-transfer'

View file

@ -171,7 +171,6 @@ export const ProductCard: React.FC<ProductCardProps> = ({
disabled={isDisabled} disabled={isDisabled}
block block
variant="solid" variant="solid"
color="blue-600"
size="md" size="md"
className={!isDisabled ? 'hover:scale-[1.02] active:scale-[0.98]' : ''} className={!isDisabled ? 'hover:scale-[1.02] active:scale-[0.98]' : ''}
> >

View file

@ -103,7 +103,6 @@ export const ProductCatalog: React.FC<ProductCatalogProps> = ({
onClick={() => setSelectedCategory(category)} onClick={() => setSelectedCategory(category)}
block block
variant={selectedCategory === category ? 'twoTone' : 'plain'} variant={selectedCategory === category ? 'twoTone' : 'plain'}
color="blue-600"
size="md" size="md"
className="justify-start text-left" className="justify-start text-left"
> >

View file

@ -154,7 +154,6 @@ export const TenantForm: React.FC<TenantFormProps> = ({ onSubmit }) => {
onClick={getTenantInfo} onClick={getTenantInfo}
icon={<FaSearch className="w-4 h-4" />} icon={<FaSearch className="w-4 h-4" />}
variant="solid" variant="solid"
color="blue-600"
size="sm" size="sm"
className="!h-[40px] min-w-[180px] sm:mr-2 sm:rounded-r-lg sm:rounded-l-none [&>span]:gap-2" className="!h-[40px] min-w-[180px] sm:mr-2 sm:rounded-r-lg sm:rounded-l-none [&>span]:gap-2"
> >

View file

@ -798,11 +798,9 @@ const MessengerWidget = () => {
type="button" type="button"
size="lg" size="lg"
variant="solid" variant="solid"
color="emerald-600"
shape="circle" shape="circle"
icon={<IoChatbubbleEllipsesOutline />} icon={<IoChatbubbleEllipsesOutline />}
onClick={() => (open ? closeWidget() : setOpen(true))} onClick={() => (open ? closeWidget() : setOpen(true))}
className="!h-12 !w-12 !px-0 text-2xl shadow-xl transition hover:!bg-emerald-700"
/> />
{unread > 0 && ( {unread > 0 && (
<span className="absolute -right-1 -top-1 flex min-h-[20px] min-w-[20px] items-center justify-center rounded-full bg-red-500 px-1.5 text-xs font-semibold leading-none text-white ring-2 ring-white dark:ring-gray-800"> <span className="absolute -right-1 -top-1 flex min-h-[20px] min-w-[20px] items-center justify-center rounded-full bg-red-500 px-1.5 text-xs font-semibold leading-none text-white ring-2 ring-white dark:ring-gray-800">

View file

@ -197,7 +197,7 @@ const _Search = ({ className }: { className?: string }) => {
onKeyDown={(e) => e.key === 'Enter' && handleSearch()} onKeyDown={(e) => e.key === 'Enter' && handleSearch()}
/> />
</div> </div>
<Button icon={<FaSearch />} size="sm" onClick={handleSearch}></Button> <Button size="sm" variant='solid' icon={<FaSearch />} onClick={handleSearch}></Button>
</div> </div>
<div> <div>
<div className="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-600"> <div className="flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-600">

View file

@ -9,231 +9,210 @@ import { Spinner } from '../Spinner'
import type { CommonProps, TypeAttributes, ColorLevel } from '../@types/common' import type { CommonProps, TypeAttributes, ColorLevel } from '../@types/common'
import type { ReactNode, ComponentPropsWithRef, MouseEvent } from 'react' import type { ReactNode, ComponentPropsWithRef, MouseEvent } from 'react'
export interface ButtonProps export interface ButtonProps extends CommonProps, Omit<ComponentPropsWithRef<'button'>, 'onClick'> {
extends CommonProps, active?: boolean
Omit<ComponentPropsWithRef<'button'>, 'onClick'> { block?: boolean
active?: boolean color?: string
block?: boolean disabled?: boolean
color?: string icon?: string | ReactNode
disabled?: boolean loading?: boolean
icon?: string | ReactNode onClick?: (e: MouseEvent<HTMLButtonElement>) => void
loading?: boolean shape?: TypeAttributes.Shape
onClick?: (e: MouseEvent<HTMLButtonElement>) => void size?: TypeAttributes.Size
shape?: TypeAttributes.Shape variant?: 'solid' | 'twoTone' | 'plain' | 'default'
size?: TypeAttributes.Size
variant?: 'solid' | 'twoTone' | 'plain' | 'default'
} }
type ButtonColor = { type ButtonColor = {
bgColor: string bgColor: string
hoverColor: string hoverColor: string
activeColor: string activeColor: string
textColor: string textColor: string
} }
const Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => { const Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => {
const { const {
active = false, active = false,
block = false, block = false,
children, children,
className, className,
color = '', color = '',
disabled, disabled,
icon, icon,
loading = false, loading = false,
shape = 'round', shape = 'round',
size, size = 'sm',
variant = 'default', variant = 'default',
...rest ...rest
} = props } = props
const { themeColor, controlSize, primaryColorLevel } = useConfig() const { themeColor, controlSize, primaryColorLevel } = useConfig()
const formControlSize = useForm()?.size const formControlSize = useForm()?.size
const inputGroupSize = useInputGroup()?.size const inputGroupSize = useInputGroup()?.size
const defaultClass = 'button' const defaultClass = 'button'
const sizeIconClass = 'inline-flex items-center justify-center' const sizeIconClass = 'inline-flex items-center justify-center'
const splitedColor = color?.split('-') || [] const splitedColor = color?.split('-') || []
const buttonSize = size || inputGroupSize || formControlSize || controlSize const buttonSize = size || inputGroupSize || formControlSize || controlSize
const buttonColor = splitedColor[0] || themeColor const buttonColor = splitedColor[0] || themeColor
const buttonColorLevel = splitedColor[1] || primaryColorLevel const buttonColorLevel = splitedColor[1] || primaryColorLevel
const [increaseLevel, decreaseLevel] = useColorLevel( const [increaseLevel, decreaseLevel] = useColorLevel(buttonColorLevel as ColorLevel)
buttonColorLevel as ColorLevel
)
const getButtonSize = () => { const getButtonSize = () => {
let sizeClass = '' let sizeClass = ''
switch (buttonSize) { switch (buttonSize) {
case SIZES.LG: case SIZES.LG:
sizeClass = classNames( sizeClass = classNames(
`h-${CONTROL_SIZES.lg}`, `h-${CONTROL_SIZES.lg}`,
icon && !children icon && !children ? `w-${CONTROL_SIZES.lg} ${sizeIconClass} text-2xl` : 'px-8 text-base',
? `w-${CONTROL_SIZES.lg} ${sizeIconClass} text-2xl` )
: 'px-8 text-base' break
) case SIZES.SM:
break sizeClass = classNames(
case SIZES.SM: `h-${CONTROL_SIZES.sm}`,
sizeClass = classNames( icon && !children ? `w-${CONTROL_SIZES.sm} ${sizeIconClass} text-lg` : 'px-3 text-sm',
`h-${CONTROL_SIZES.sm}`, )
icon && !children break
? `w-${CONTROL_SIZES.sm} ${sizeIconClass} text-lg` case SIZES.XS:
: 'px-3 text-sm' sizeClass = classNames(
) `h-${CONTROL_SIZES.xs}`,
break icon && !children ? `w-${CONTROL_SIZES.xs} ${sizeIconClass} text-base` : 'px-2 text-xs',
case SIZES.XS: )
sizeClass = classNames( break
`h-${CONTROL_SIZES.xs}`, default:
icon && !children sizeClass = classNames(
? `w-${CONTROL_SIZES.xs} ${sizeIconClass} text-base` `h-${CONTROL_SIZES.md}`,
: 'px-2 text-xs' icon && !children ? `w-${CONTROL_SIZES.md} ${sizeIconClass} text-xl` : 'px-8',
) )
break break
default: }
sizeClass = classNames( return sizeClass
`h-${CONTROL_SIZES.md}`, }
icon && !children
? `w-${CONTROL_SIZES.md} ${sizeIconClass} text-xl` const disabledClass = 'opacity-50 cursor-not-allowed'
: 'px-8'
) const solidColor = () => {
break const btn = {
} bgColor: active
return sizeClass ? `bg-${buttonColor}-${increaseLevel}`
: `bg-${buttonColor}-${buttonColorLevel}`,
textColor: 'text-white',
hoverColor: active ? '' : `hover:bg-${buttonColor}-${decreaseLevel}`,
activeColor: `active:bg-${buttonColor}-${increaseLevel}`,
}
return getBtnColor(btn)
}
const twoToneColor = () => {
const btn = {
bgColor: active
? `bg-${buttonColor}-200 dark:bg-${buttonColor}-50`
: `bg-${buttonColor}-50 dark:bg-${buttonColor}-500 dark:bg-opacity-20`,
textColor: `text-${buttonColor}-${buttonColorLevel} dark:text-${buttonColor}-50`,
hoverColor: active
? ''
: `hover:bg-${buttonColor}-100 dark:hover:bg-${buttonColor}-500 dark:hover:bg-opacity-30`,
activeColor: `active:bg-${buttonColor}-200 dark:active:bg-${buttonColor}-500 dark:active:bg-opacity-40`,
}
return getBtnColor(btn)
}
const defaultColor = () => {
const btn = {
bgColor: active
? `bg-gray-100 border border-gray-300 dark:bg-gray-500 dark:border-gray-500`
: `bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-700`,
textColor: `text-gray-600 dark:text-gray-100`,
hoverColor: active ? '' : `hover:bg-gray-50 dark:hover:bg-gray-600`,
activeColor: `active:bg-gray-100 dark:active:bg-gray-500 dark:active:border-gray-500`,
}
return getBtnColor(btn)
}
const plainColor = () => {
const btn = {
bgColor: active ? `bg-gray-100 dark:bg-gray-500` : 'bg-transparent border border-transparent',
textColor: `text-gray-600 dark:text-gray-100`,
hoverColor: active ? '' : `hover:bg-gray-50 dark:hover:bg-gray-600`,
activeColor: `active:bg-gray-100 dark:active:bg-gray-500 dark:active:border-gray-500`,
}
return getBtnColor(btn)
}
const getBtnColor = ({ bgColor, hoverColor, activeColor, textColor }: ButtonColor) => {
return `${bgColor} ${
disabled || loading ? disabledClass : hoverColor + ' ' + activeColor
} ${textColor}`
}
const btnColor = () => {
switch (variant) {
case 'solid':
return solidColor()
case 'twoTone':
return twoToneColor()
case 'plain':
return plainColor()
case 'default':
return defaultColor()
default:
return defaultColor()
}
}
const classes = classNames(
defaultClass,
btnColor(),
`radius-${shape}`,
getButtonSize(),
className,
block ? 'w-full' : '',
)
const handleClick = (e: MouseEvent<HTMLButtonElement>) => {
const { onClick } = props
if (disabled || loading) {
e.preventDefault()
return
}
onClick?.(e)
}
const renderChildren = () => {
if (loading && children) {
return (
<span className="flex items-center justify-center">
<Spinner enableTheme={false} className="mr-1" />
{children}
</span>
)
} }
const disabledClass = 'opacity-50 cursor-not-allowed' if (icon && !children && loading) {
return <Spinner enableTheme={false} />
const solidColor = () => {
const btn = {
bgColor: active
? `bg-${buttonColor}-${increaseLevel}`
: `bg-${buttonColor}-${buttonColorLevel}`,
textColor: 'text-white',
hoverColor: active
? ''
: `hover:bg-${buttonColor}-${decreaseLevel}`,
activeColor: `active:bg-${buttonColor}-${increaseLevel}`,
}
return getBtnColor(btn)
} }
const twoToneColor = () => { if (icon && !children && !loading) {
const btn = { return <>{icon}</>
bgColor: active
? `bg-${buttonColor}-200 dark:bg-${buttonColor}-50`
: `bg-${buttonColor}-50 dark:bg-${buttonColor}-500 dark:bg-opacity-20`,
textColor: `text-${buttonColor}-${buttonColorLevel} dark:text-${buttonColor}-50`,
hoverColor: active
? ''
: `hover:bg-${buttonColor}-100 dark:hover:bg-${buttonColor}-500 dark:hover:bg-opacity-30`,
activeColor: `active:bg-${buttonColor}-200 dark:active:bg-${buttonColor}-500 dark:active:bg-opacity-40`,
}
return getBtnColor(btn)
} }
const defaultColor = () => { if (icon && children && !loading) {
const btn = { return (
bgColor: active <span className="flex items-center justify-center">
? `bg-gray-100 border border-gray-300 dark:bg-gray-500 dark:border-gray-500` <span className="text-lg">{icon}</span>
: `bg-white border border-gray-300 dark:bg-gray-700 dark:border-gray-700`, <span className="ltr:ml-1 rtl:mr-1">{children}</span>
textColor: `text-gray-600 dark:text-gray-100`, </span>
hoverColor: active ? '' : `hover:bg-gray-50 dark:hover:bg-gray-600`, )
activeColor: `active:bg-gray-100 dark:active:bg-gray-500 dark:active:border-gray-500`,
}
return getBtnColor(btn)
} }
const plainColor = () => { return <>{children}</>
const btn = { }
bgColor: active
? `bg-gray-100 dark:bg-gray-500`
: 'bg-transparent border border-transparent',
textColor: `text-gray-600 dark:text-gray-100`,
hoverColor: active ? '' : `hover:bg-gray-50 dark:hover:bg-gray-600`,
activeColor: `active:bg-gray-100 dark:active:bg-gray-500 dark:active:border-gray-500`,
}
return getBtnColor(btn)
}
const getBtnColor = ({ return (
bgColor, <button ref={ref} className={classes} {...rest} onClick={handleClick}>
hoverColor, {renderChildren()}
activeColor, </button>
textColor, )
}: ButtonColor) => {
return `${bgColor} ${
disabled || loading ? disabledClass : hoverColor + ' ' + activeColor
} ${textColor}`
}
const btnColor = () => {
switch (variant) {
case 'solid':
return solidColor()
case 'twoTone':
return twoToneColor()
case 'plain':
return plainColor()
case 'default':
return defaultColor()
default:
return defaultColor()
}
}
const classes = classNames(
defaultClass,
btnColor(),
`radius-${shape}`,
getButtonSize(),
className,
block ? 'w-full' : ''
)
const handleClick = (e: MouseEvent<HTMLButtonElement>) => {
const { onClick } = props
if (disabled || loading) {
e.preventDefault()
return
}
onClick?.(e)
}
const renderChildren = () => {
if (loading && children) {
return (
<span className="flex items-center justify-center">
<Spinner enableTheme={false} className="mr-1" />
{children}
</span>
)
}
if (icon && !children && loading) {
return <Spinner enableTheme={false} />
}
if (icon && !children && !loading) {
return <>{icon}</>
}
if (icon && children && !loading) {
return (
<span className="flex items-center justify-center">
<span className="text-lg">{icon}</span>
<span className="ltr:ml-1 rtl:mr-1">{children}</span>
</span>
)
}
return <>{children}</>
}
return (
<button ref={ref} className={classes} {...rest} onClick={handleClick}>
{renderChildren()}
</button>
)
}) })
Button.displayName = 'Button' Button.displayName = 'Button'

View file

@ -311,7 +311,7 @@ const DateTimepicker = forwardRef<HTMLInputElement, DateTimepickerProps>(
size="sm" size="sm"
onChange={handleTimeChange} onChange={handleTimeChange}
/> />
<Button size="sm" disabled={!_value} onClick={handleOk}> <Button size="sm" variant='solid' disabled={!_value} onClick={handleOk}>
{okButtonContent} {okButtonContent}
</Button> </Button>
</div> </div>

View file

@ -9,6 +9,7 @@ import Notification from '../Notification/Notification'
import toast from '../toast/toast' import toast from '../toast/toast'
import type { CommonProps } from '../@types/common' import type { CommonProps } from '../@types/common'
import type { ReactNode, ChangeEvent, MouseEvent } from 'react' import type { ReactNode, ChangeEvent, MouseEvent } from 'react'
import { useLocalization } from '@/utils/hooks/useLocalization'
export interface UploadProps extends CommonProps { export interface UploadProps extends CommonProps {
accept?: string accept?: string
@ -56,6 +57,7 @@ const Upload = forwardRef<HTMLDivElement, UploadProps>((props, ref) => {
const fileInputField = useRef<HTMLInputElement>(null) const fileInputField = useRef<HTMLInputElement>(null)
const [files, setFiles] = useState(fileList) const [files, setFiles] = useState(fileList)
const [dragOver, setDragOver] = useState(false) const [dragOver, setDragOver] = useState(false)
const { translate } = useLocalization()
const { themeColor, primaryColorLevel } = useConfig() const { themeColor, primaryColorLevel } = useConfig()
@ -144,8 +146,8 @@ const Upload = forwardRef<HTMLDivElement, UploadProps>((props, ref) => {
const renderChildren = () => { const renderChildren = () => {
if (!draggable && !children) { if (!draggable && !children) {
return ( return (
<Button disabled={disabled} onClick={(e) => e.preventDefault()}> <Button size="sm" variant="solid" disabled={disabled} onClick={(e) => e.preventDefault()}>
Upload {translate('::FileManager.Upload')}
</Button> </Button>
) )
} }

View file

@ -57,7 +57,7 @@ const Log = ({
))} ))}
<div className="text-center"> <div className="text-center">
{loadable ? ( {loadable ? (
<Button loading={isLoading} onClick={onLoadMore} className="dark:bg-gray-700 dark:text-white dark:hover:bg-gray-600"> <Button size="sm" loading={isLoading} onClick={onLoadMore} variant='solid'>
{translate('::Abp.Identity.ActivityLogs.LoadMore')} {translate('::Abp.Identity.ActivityLogs.LoadMore')}
</Button> </Button>
) : ( ) : (

View file

@ -59,10 +59,11 @@ export const CreateFolderModal = forwardRef<HTMLDivElement, CreateFolderModalPro
</form> </form>
<div className="flex justify-end space-x-2 pt-4 border-t"> <div className="flex justify-end space-x-2 pt-4 border-t">
<Button variant="default" onClick={handleClose} disabled={loading}> <Button size='sm' variant="default" onClick={handleClose} disabled={loading}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button <Button
size='sm'
variant="solid" variant="solid"
onClick={handleSubmit} onClick={handleSubmit}
loading={loading} loading={loading}
@ -156,10 +157,11 @@ export const RenameItemModal = forwardRef<HTMLDivElement, RenameItemModalProps>(
</form> </form>
<div className="flex justify-end space-x-2 pt-4 border-t"> <div className="flex justify-end space-x-2 pt-4 border-t">
<Button variant="default" onClick={handleClose} disabled={loading}> <Button size='sm' variant="default" onClick={handleClose} disabled={loading}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button <Button
size='sm'
variant="solid" variant="solid"
onClick={handleSubmit} onClick={handleSubmit}
loading={loading} loading={loading}
@ -238,12 +240,12 @@ export const DeleteConfirmModal = forwardRef<HTMLDivElement, DeleteConfirmModalP
</div> </div>
<div className="flex justify-end space-x-2 pt-4 border-t"> <div className="flex justify-end space-x-2 pt-4 border-t">
<Button variant="default" onClick={onClose} disabled={loading}> <Button size='sm' variant="default" onClick={onClose} disabled={loading}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button <Button
size='sm'
variant="solid" variant="solid"
className="bg-red-600 hover:bg-red-700 text-white"
onClick={handleDelete} onClick={handleDelete}
loading={loading} loading={loading}
> >

View file

@ -355,10 +355,11 @@ const FileUploadModal = forwardRef<HTMLDivElement, FileUploadModalProps>((props,
Clear Errors Clear Errors
</Button> </Button>
)} )}
<Button variant="default" onClick={handleClose} disabled={uploading}> <Button size="sm" variant="default" onClick={handleClose} disabled={uploading}>
{uploading ? 'Uploading...' : 'Close'} {uploading ? 'Uploading...' : 'Close'}
</Button> </Button>
<Button <Button
size="sm"
variant="solid" variant="solid"
onClick={handleUpload} onClick={handleUpload}
disabled={pendingFiles === 0 || uploading} disabled={pendingFiles === 0 || uploading}

View file

@ -79,8 +79,8 @@ function ChartTabAnimation(props: FormEditProps) {
<Field type="number" name="animationDto.maxPointCountSupported" component={Input} /> <Field type="number" name="animationDto.maxPointCountSupported" component={Input} />
</FormItem> </FormItem>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -660,8 +660,8 @@ function ChartTabAnnotations(props: FormEditProps) {
</TabContent> </TabContent>
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -541,8 +541,8 @@ function ChartTabAxis(props: FormEditProps) {
</TabContent> </TabContent>
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -716,8 +716,8 @@ function ChartTabCommonSettings(props: FormEditProps) {
</TabContent> </TabContent>
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -49,7 +49,7 @@ function ChartTabCrosshair(props: FormEditProps) {
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
@ -112,7 +112,7 @@ function ChartTabCrosshair(props: FormEditProps) {
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
@ -157,64 +157,28 @@ function ChartTabCrosshair(props: FormEditProps) {
</Card> </Card>
<Card className="my-2" header="Font Options"> <Card className="my-2" header="Font Options">
<FormItem <FormItem label="Color">
label="Color"
invalid={
!!(
errors.crosshairDto?.label?.font?.color &&
touched.crosshairDto?.label?.font?.color
)
}
errorMessage={errors.crosshairDto?.label?.font?.color}
>
<Field name="crosshairDto.label.font.color"> <Field name="crosshairDto.label.font.color">
{({ field, form }: FieldProps) => ( {({ field, form }: FieldProps) => (
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem label="Family">
label="Family"
invalid={
!!(
errors.crosshairDto?.label?.font?.family &&
touched.crosshairDto?.label?.font?.family
)
}
errorMessage={errors.crosshairDto?.label?.font?.family}
>
<Field type="text" name="crosshairDto.label.font.family" component={Input} /> <Field type="text" name="crosshairDto.label.font.family" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem label="Size">
label="Size"
invalid={
!!(
errors.crosshairDto?.label?.font?.size &&
touched.crosshairDto?.label?.font?.size
)
}
errorMessage={errors.crosshairDto?.label?.font?.size}
>
<Field type="number" name="crosshairDto.label.font.size" component={Input} /> <Field type="number" name="crosshairDto.label.font.size" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem label="Weight">
label="Weight"
invalid={
!!(
errors.crosshairDto?.label?.font?.weight &&
touched.crosshairDto?.label?.font?.weight
)
}
errorMessage={errors.crosshairDto?.label?.font?.weight}
>
<Field type="number" name="crosshairDto.label.font.weight" component={Input} /> <Field type="number" name="crosshairDto.label.font.weight" component={Input} />
</FormItem> </FormItem>
</Card> </Card>
@ -232,7 +196,7 @@ function ChartTabCrosshair(props: FormEditProps) {
> >
<Field name="crosshairDto.horizontalLine.visible" component={Checkbox} /> <Field name="crosshairDto.horizontalLine.visible" component={Checkbox} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Color" label="Color"
invalid={ invalid={
@ -248,7 +212,7 @@ function ChartTabCrosshair(props: FormEditProps) {
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
@ -324,7 +288,7 @@ function ChartTabCrosshair(props: FormEditProps) {
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
@ -372,8 +336,8 @@ function ChartTabCrosshair(props: FormEditProps) {
</Card> </Card>
</div> </div>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -65,8 +65,8 @@ function ChartTabExport(props: FormEditProps) {
</FormItem> </FormItem>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -216,8 +216,8 @@ function ChartTabLegend(props: FormEditProps) {
</Card> </Card>
</div> </div>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -155,8 +155,8 @@ function ChartTabPanes(props: FormEditProps) {
setData={setJsonRowOpModalData} setData={setJsonRowOpModalData}
/> />
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -523,8 +523,8 @@ function ChartTabSeries(props: FormEditProps & { listFormCode: string }) {
</TabContent> </TabContent>
</Tabs> </Tabs>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -176,8 +176,8 @@ const ChartTabZoomAndPan = (props: FormEditProps) => {
</Card> </Card>
</div> </div>
<div className="mt-4"> <div className="mt-4">
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -294,8 +294,8 @@ function FormCustomization({
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -310,8 +310,8 @@ function FormTabColumns(props: FormEditProps) {
</div> </div>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -387,8 +387,8 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
</FormItem> </FormItem>
</Card> </Card>
<Button block variant="solid" loading={isSubmitting}> <Button size="sm" block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -116,8 +116,8 @@ function FormTabDatabaseDelete({
</FormItem> </FormItem>
</div> </div>
<Button block variant="solid" loading={isSubmitting}> <Button size="sm" block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Card> </Card>

View file

@ -114,8 +114,8 @@ function FormTabDatabaseInsert({
/> />
</FormItem> </FormItem>
</div> </div>
<Button block variant="solid" loading={isSubmitting}> <Button size="sm" block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Card> </Card>

View file

@ -65,8 +65,8 @@ function FormTabDatabaseSelect({
component={Input} component={Input}
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting}> <Button size="sm" block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Card> </Card>

View file

@ -114,8 +114,8 @@ function FormTabDatabaseUpdate({
/> />
</FormItem> </FormItem>
</div> </div>
<Button block variant="solid" loading={isSubmitting}> <Button size="sm" block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Card> </Card>

View file

@ -437,8 +437,8 @@ function FormTabDetails(
</Card> </Card>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -454,8 +454,8 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
)} )}
</Card> </Card>
</div> </div>
<Button block variant="solid" loading={isSubmitting}> <Button size="sm" block variant="solid" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -304,8 +304,8 @@ function FormTabFilters(props: FormEditProps) {
</TabContent> </TabContent>
</Tabs> </Tabs>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -471,8 +471,8 @@ function FormTabGantt(props: FormEditProps) {
</Card> </Card>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -54,8 +54,8 @@ function FormTabGroup(props: FormEditProps) {
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -235,8 +235,8 @@ function FormTabPager(props: FormEditProps) {
</div> </div>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -239,8 +239,8 @@ function FormTabPermissions(props: FormEditProps) {
</FormItem> </FormItem>
)} )}
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -186,8 +186,8 @@ function FormTabColumns(props: FormEditProps) {
</div> </div>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -98,8 +98,8 @@ function FormTabRow(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -363,8 +363,8 @@ function FormTabScheduler(props: FormEditProps) {
</FormItem> </FormItem>
</Card> </Card>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button>{' '} </Button>{' '}
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -55,8 +55,8 @@ function FormTabSearch(props: FormEditProps) {
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -128,8 +128,8 @@ function FormTabSelect(props: FormEditProps) {
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -74,8 +74,8 @@ function FormTabSorting(props: FormEditProps) {
</Field> </Field>
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -97,8 +97,8 @@ function FormTabState(props: FormEditProps) {
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -185,8 +185,8 @@ function FormTabTree(props: FormEditProps) {
component={Checkbox} component={Checkbox}
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit" className="my-2"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit" className="my-2">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -450,8 +450,8 @@ export function FormTabWorkflow(
</FormItem> </FormItem>
</div> </div>
<Button block variant="solid" type="submit" loading={isSubmitting}> <Button size="sm" block variant="solid" type="submit" loading={isSubmitting}>
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Card> </Card>
</FormContainer> </FormContainer>

View file

@ -316,8 +316,8 @@ function FormFieldTabConditionalFormatting({
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isLoading} type="submit"> <Button size="sm" block variant="solid" loading={isLoading} type="submit">
{isLoading ? translate('::SavingWithThreeDot') : translate('::Save')} {isLoading ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -63,8 +63,8 @@ function FormFieldTabCssOptions({
/> />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -70,8 +70,8 @@ function FormFieldTabCustomization({
</Field> </Field>
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -133,8 +133,8 @@ function FormFieldTabDetails({
</FormItem> </FormItem>
</Card> </Card>
</div> </div>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Form> </Form>
)} )}

View file

@ -84,8 +84,8 @@ function FormFieldTabFiltering({
/> />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -176,8 +176,8 @@ function FormFieldTabGroupSummary({
/> />
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -61,8 +61,8 @@ function FormFieldTabGrouping({
/> />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -65,8 +65,8 @@ function FormFieldTabHeadering({
/> />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -234,8 +234,8 @@ function FormFieldTabJoinOptions({
</FormItem> </FormItem>
</Card> </Card>
</div> </div>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Form> </Form>
)} )}

View file

@ -218,10 +218,8 @@ function TablePickerModal({
}} }}
block block
variant="solid" variant="solid"
color="indigo-600"
className="mt-1 !h-auto !rounded !py-1.5 text-xs font-semibold text-white transition-colors hover:!bg-indigo-700 disabled:cursor-not-allowed disabled:opacity-40"
> >
Tamam {translate('::OK')}
</Button> </Button>
</> </>
)} )}
@ -467,8 +465,8 @@ function FormFieldTabLookup({
</FormItem> </FormItem>
</Card> </Card>
</div> </div>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Form> </Form>
)} )}

View file

@ -113,8 +113,8 @@ function FormFieldTabOptions({
</Card> </Card>
</div> </div>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Form> </Form>
)} )}

View file

@ -159,8 +159,8 @@ function FormFieldTabPermissions({
<Field name="permissionDto.i" component={Checkbox} /> <Field name="permissionDto.i" component={Checkbox} />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -214,8 +214,8 @@ function FormFieldTabPivotSetting({
</FormItem> </FormItem>
</Card> </Card>
</div> </div>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Form> </Form>
)} )}

View file

@ -177,8 +177,8 @@ function FormFieldTabTotalSummary({
/> />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -355,8 +355,8 @@ function FormFieldTabValidationRules({
<Field name="trim" placeholder="Trim" component={Checkbox} /> <Field name="trim" placeholder="Trim" component={Checkbox} />
</FormItem> </FormItem>
<Button className="mt-1" block variant="solid" loading={isLoading} type="submit"> <Button size="sm" className="mt-1" block variant="solid" loading={isLoading} type="submit">
{isLoading ? translate('::SavingWithThreeDot') : translate('::Save')} {isLoading ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -390,7 +390,7 @@ function FormFields({
</Field> </Field>
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? '...' : translate('::ListForms.ListFormField.Filter')} {isSubmitting ? '...' : translate('::ListForms.ListFormField.Filter')}
</Button> </Button>
</FormContainer> </FormContainer>
@ -684,8 +684,8 @@ function FormFields({
</Field> </Field>
</FormItem> </FormItem>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>
@ -1023,8 +1023,8 @@ function FormFields({
<Field name="copiedFields.pivotSetting" component={Checkbox} className="mr-1" /> <Field name="copiedFields.pivotSetting" component={Checkbox} className="mr-1" />
</FormItem> </FormItem>
</div> </div>
<Button block variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" block variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -987,10 +987,10 @@ function EditorOptionsBuilderDialog({
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t border-gray-200 pt-3 mt-1 dark:border-gray-700"> <Dialog.Footer className="flex justify-end gap-2 border-t border-gray-200 pt-3 mt-1 dark:border-gray-700">
<Button size="sm" type="button" variant="plain" icon={<FaTimes />} onClick={onClose}> <Button size="sm" type="button" variant="plain" icon={<FaTimes />} onClick={onClose}>
Vazgeç {translate('::Cancel')}
</Button> </Button>
<Button size="sm" type="button" variant="solid" icon={<FaCheck />} onClick={applyOptions}> <Button size="sm" type="button" variant="solid" icon={<FaCheck />} onClick={applyOptions}>
Uygula {translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Dialog> </Dialog>

View file

@ -1,5 +1,6 @@
import { Button, Dialog } from '@/components/ui' import { Button, Dialog } from '@/components/ui'
import { SelectBoxOption } from '@/types/shared' import { SelectBoxOption } from '@/types/shared'
import { useLocalization } from '@/utils/hooks/useLocalization'
import Editor from '@monaco-editor/react' import Editor from '@monaco-editor/react'
import { useEffect, useMemo, useState } from 'react' import { useEffect, useMemo, useState } from 'react'
import { FaBolt, FaCheck, FaCode, FaMagic, FaPlus, FaTimes, FaTrash } from 'react-icons/fa' import { FaBolt, FaCheck, FaCode, FaMagic, FaPlus, FaTimes, FaTrash } from 'react-icons/fa'
@ -558,7 +559,8 @@ function EditorScriptBuilderDialog({
const [serviceCall, setServiceCall] = useState('') const [serviceCall, setServiceCall] = useState('')
const [scriptEditorValue, setScriptEditorValue] = useState('') const [scriptEditorValue, setScriptEditorValue] = useState('')
const [lastGeneratedScript, setLastGeneratedScript] = useState('') const [lastGeneratedScript, setLastGeneratedScript] = useState('')
const { translate } = useLocalization()
useEffect(() => { useEffect(() => {
if (!isOpen) return if (!isOpen) return
setCopyMappings([]) setCopyMappings([])
@ -1354,7 +1356,7 @@ function EditorScriptBuilderDialog({
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t border-gray-200 pt-3 mt-1 dark:border-gray-700"> <Dialog.Footer className="flex justify-end gap-2 border-t border-gray-200 pt-3 mt-1 dark:border-gray-700">
<Button size="sm" type="button" variant="plain" icon={<FaTimes />} onClick={onClose}> <Button size="sm" type="button" variant="plain" icon={<FaTimes />} onClick={onClose}>
Vazgeç {translate('::Cancel')}
</Button> </Button>
<Button <Button
size="sm" size="sm"
@ -1366,7 +1368,7 @@ function EditorScriptBuilderDialog({
onClose() onClose()
}} }}
> >
Uygula {translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Dialog> </Dialog>

View file

@ -95,410 +95,394 @@ function JsonRowOpDialogAnnotation({
> >
{(data.operation === 'create' || data.operation === 'update') && ( {(data.operation === 'create' || data.operation === 'update') && (
<Formik <Formik
initialValues={ initialValues={
data.chartAnnotationValues ?? { data.chartAnnotationValues ?? {
argument: '', argument: '',
border: { border: {
color: '#d3d3d3', color: '#d3d3d3',
cornerRadius: 0, cornerRadius: 0,
dashStyle: 'solid', dashStyle: 'solid',
visible: false, visible: false,
width: 1, width: 1,
}, },
color: '', color: '',
description: '', description: '',
font: { font: {
color: '#FFFFFF', color: '#FFFFFF',
family: '"Segoe UI", "Helvetica Neue", "Trebuchet MS", Verdana, sans-serif', family: '"Segoe UI", "Helvetica Neue", "Trebuchet MS", Verdana, sans-serif',
size: 12, size: 12,
weight: 400, weight: 400,
}, },
height: 0, height: 0,
image: '', image: '',
name: '', name: '',
offsetX: 0, offsetX: 0,
offsetY: 0, offsetY: 0,
paddingLeftRight: 0, paddingLeftRight: 0,
paddingTopBottom: 0, paddingTopBottom: 0,
series: '', series: '',
text: '', text: '',
tooltipEnabled: false, tooltipEnabled: false,
type: '', type: '',
value: '', value: '',
width: 0, width: 0,
wordWrap: '', wordWrap: '',
x: 0, x: 0,
y: 0, y: 0,
}
} }
validationSchema={schema} }
onSubmit={async (values, { setSubmitting }) => { validationSchema={schema}
setSubmitting(true) onSubmit={async (values, { setSubmitting }) => {
try { setSubmitting(true)
const input: ListFormJsonRowDto = { try {
index: data.index, const input: ListFormJsonRowDto = {
fieldName: data.tabName, index: data.index,
itemChartAnnotation: values, fieldName: data.tabName,
} itemChartAnnotation: values,
if (data.index === -1) {
await postListFormJsonRow(data.id, input)
} else {
await putListFormJsonRow(data.id, input)
}
toast.push(
<Notification type="success">
{data.index === -1 ? 'Kayıt eklendi' : 'Kayıt güncellendi'}
</Notification>,
{ placement: 'top-end' },
)
handleClose()
} catch (error: any) {
toast.push(
<Notification type="danger">
Hata
<code>{error}</code>
</Notification>,
{ placement: 'top-end' },
)
} finally {
setSubmitting(false)
} }
}} if (data.index === -1) {
> await postListFormJsonRow(data.id, input)
{({ touched, errors, values, isSubmitting }) => ( } else {
<Form className="flex flex-col h-full"> await putListFormJsonRow(data.id, input)
<Dialog.Body className="flex flex-col gap-2 overflow-hidden"> }
<h5 className="flex-shrink-0">{data.index === -1 ? 'Add' : 'Update'}</h5> toast.push(
<div className="flex-1 overflow-y-auto"> <Notification type="success">
<Tabs defaultValue="annotations_general"> {data.index === -1 ? 'Kayıt eklendi' : 'Kayıt güncellendi'}
<TabList> </Notification>,
<TabNav value="annotations_general">General</TabNav> { placement: 'top-end' },
<TabNav value="annotations_border">Border</TabNav> )
</TabList> handleClose()
<TabContent value="annotations_general"> } catch (error: any) {
<div className="p-3 grid grid-cols-3 gap-x-4 gap-y-1"> toast.push(
<FormItem <Notification type="danger">
label="Tooltip Enabled" Hata
invalid={errors.tooltipEnabled && touched.tooltipEnabled} <code>{error}</code>
errorMessage={errors.tooltipEnabled} </Notification>,
> { placement: 'top-end' },
<Field name="tooltipEnabled" component={Checkbox} /> )
</FormItem> } finally {
setSubmitting(false)
}
}}
>
{({ touched, errors, values, isSubmitting }) => (
<Form className="flex flex-col h-full">
<Dialog.Body className="flex flex-col gap-2 overflow-hidden">
<h5 className="flex-shrink-0">{data.index === -1 ? 'Add' : 'Update'}</h5>
<div className="flex-1 overflow-y-auto">
<Tabs defaultValue="annotations_general">
<TabList>
<TabNav value="annotations_general">General</TabNav>
<TabNav value="annotations_border">Border</TabNav>
</TabList>
<TabContent value="annotations_general">
<div className="p-3 grid grid-cols-3 gap-x-4 gap-y-1">
<FormItem
label="Tooltip Enabled"
invalid={errors.tooltipEnabled && touched.tooltipEnabled}
errorMessage={errors.tooltipEnabled}
>
<Field name="tooltipEnabled" component={Checkbox} />
</FormItem>
<FormItem <FormItem
label="Type" label="Type"
invalid={errors.type && touched.type} invalid={errors.type && touched.type}
errorMessage={errors.type} errorMessage={errors.type}
> >
<Field type="text" name="type"> <Field type="text" name="type">
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
field={field} field={field}
form={form} form={form}
options={chartAnnotationTypeListOptions} options={chartAnnotationTypeListOptions}
isClearable={true} isClearable={true}
value={chartAnnotationTypeListOptions.filter( value={chartAnnotationTypeListOptions.filter(
(option) => option.value === values.type, (option) => option.value === values.type,
)} )}
onChange={(option) => onChange={(option) => form.setFieldValue(field.name, option?.value)}
form.setFieldValue(field.name, option?.value) />
} )}
/> </Field>
)} </FormItem>
</Field>
</FormItem>
<FormItem <FormItem
label="Series" label="Series"
invalid={errors.series && touched.series} invalid={errors.series && touched.series}
errorMessage={errors.series} errorMessage={errors.series}
> >
<Field type="text" name="series"> <Field type="text" name="series">
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
field={field} field={field}
form={form} form={form}
isClearable={true} isClearable={true}
options={SeriesList()} options={SeriesList()}
value={SeriesList()?.find( value={SeriesList()?.find(
(option) => option.value === values.series, (option) => option.value === values.series,
)} )}
onChange={(option) => onChange={(option) => form.setFieldValue(field.name, option?.value)}
form.setFieldValue(field.name, option?.value) />
} )}
/> </Field>
)} </FormItem>
</Field>
</FormItem>
<FormItem <FormItem
label="Name" label="Name"
invalid={errors.name && touched.name} invalid={errors.name && touched.name}
errorMessage={errors.name} errorMessage={errors.name}
> >
<Field type="text" name="name" component={Input} /> <Field type="text" name="name" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Text" label="Text"
invalid={errors.text && touched.text} invalid={errors.text && touched.text}
errorMessage={errors.text} errorMessage={errors.text}
> >
<Field type="text" name="text" component={Input} /> <Field type="text" name="text" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Value" label="Value"
invalid={errors.value && touched.value} invalid={errors.value && touched.value}
errorMessage={errors.value} errorMessage={errors.value}
> >
<Field type="text" name="value" component={Input} /> <Field type="text" name="value" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Argument" label="Argument"
invalid={errors.argument && touched.argument} invalid={errors.argument && touched.argument}
errorMessage={errors.argument} errorMessage={errors.argument}
> >
<Field name="argument" component={Input} /> <Field name="argument" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Color" label="Color"
invalid={errors.color && touched.color} invalid={errors.color && touched.color}
errorMessage={errors.color} errorMessage={errors.color}
> >
<Field name="color"> <Field name="color">
{({ field, form }: FieldProps) => ( {({ field, form }: FieldProps) => (
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label="Word Wrap" label="Word Wrap"
invalid={errors.wordWrap && touched.wordWrap} invalid={errors.wordWrap && touched.wordWrap}
errorMessage={errors.wordWrap} errorMessage={errors.wordWrap}
> >
<Field type="text" name="wordWrap"> <Field type="text" name="wordWrap">
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
field={field} field={field}
form={form} form={form}
options={chartTitleWordWrapListOptions} options={chartTitleWordWrapListOptions}
isClearable={true} isClearable={true}
value={chartTitleWordWrapListOptions.filter( value={chartTitleWordWrapListOptions.filter(
(option) => option.value === values.wordWrap, (option) => option.value === values.wordWrap,
)} )}
onChange={(option) => onChange={(option) => form.setFieldValue(field.name, option?.value)}
form.setFieldValue(field.name, option?.value) />
} )}
/> </Field>
)} </FormItem>
</Field>
</FormItem>
<FormItem <FormItem
label="Description" label="Description"
invalid={errors.description && touched.description} invalid={errors.description && touched.description}
errorMessage={errors.description} errorMessage={errors.description}
> >
<Field type="text" name="description" component={Input} /> <Field type="text" name="description" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Image" label="Image"
invalid={errors.image && touched.image} invalid={errors.image && touched.image}
errorMessage={errors.image} errorMessage={errors.image}
> >
<Field type="text" name="image" component={Input} /> <Field type="text" name="image" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Width" label="Width"
invalid={errors.width && touched.width} invalid={errors.width && touched.width}
errorMessage={errors.width} errorMessage={errors.width}
> >
<Field type="number" name="width" component={Input} /> <Field type="number" name="width" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Height" label="Height"
invalid={errors.height && touched.height} invalid={errors.height && touched.height}
errorMessage={errors.height} errorMessage={errors.height}
> >
<Field type="number" name="height" component={Input} /> <Field type="number" name="height" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Padding Left/Right" label="Padding Left/Right"
invalid={errors.paddingLeftRight && touched.paddingLeftRight} invalid={errors.paddingLeftRight && touched.paddingLeftRight}
errorMessage={errors.paddingLeftRight} errorMessage={errors.paddingLeftRight}
> >
<Field type="number" name="paddingLeftRight" component={Input} /> <Field type="number" name="paddingLeftRight" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Padding Top/Bottom" label="Padding Top/Bottom"
invalid={errors.paddingTopBottom && touched.paddingTopBottom} invalid={errors.paddingTopBottom && touched.paddingTopBottom}
errorMessage={errors.paddingTopBottom} errorMessage={errors.paddingTopBottom}
> >
<Field type="number" name="paddingTopBottom" component={Input} /> <Field type="number" name="paddingTopBottom" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem label="X" invalid={errors.x && touched.x} errorMessage={errors.x}>
label="X" <Field type="number" name="x" component={Input} />
invalid={errors.x && touched.x} </FormItem>
errorMessage={errors.x}
>
<Field type="number" name="x" component={Input} />
</FormItem>
<FormItem <FormItem label="Y" invalid={errors.y && touched.y} errorMessage={errors.y}>
label="Y" <Field type="number" name="y" component={Input} />
invalid={errors.y && touched.y} </FormItem>
errorMessage={errors.y}
>
<Field type="number" name="y" component={Input} />
</FormItem>
<FormItem <FormItem
label="OffsetX" label="OffsetX"
invalid={errors.offsetX && touched.offsetX} invalid={errors.offsetX && touched.offsetX}
errorMessage={errors.offsetX} errorMessage={errors.offsetX}
> >
<Field type="number" name="offsetX" component={Input} /> <Field type="number" name="offsetX" component={Input} />
</FormItem> </FormItem>
<FormItem <FormItem
label="OffsetY" label="OffsetY"
invalid={errors.offsetY && touched.offsetY} invalid={errors.offsetY && touched.offsetY}
errorMessage={errors.offsetY} errorMessage={errors.offsetY}
> >
<Field type="number" name="offsetY" component={Input} /> <Field type="number" name="offsetY" component={Input} />
</FormItem> </FormItem>
</div> </div>
</TabContent> </TabContent>
<TabContent value="annotations_border"> <TabContent value="annotations_border">
<div className="p-3 grid grid-cols-2 gap-x-4 gap-y-1"> <div className="p-3 grid grid-cols-2 gap-x-4 gap-y-1">
<FormItem <FormItem
label="Visible" label="Visible"
invalid={errors.border?.visible && touched.border?.visible} invalid={errors.border?.visible && touched.border?.visible}
errorMessage={errors.border?.visible} errorMessage={errors.border?.visible}
> >
<Field name="border.visible" component={Checkbox} /> <Field name="border.visible" component={Checkbox} />
</FormItem> </FormItem>
<FormItem <FormItem
label="Color" label="Color"
invalid={errors.border?.color && touched.border?.color} invalid={errors.border?.color && touched.border?.color}
errorMessage={errors.border?.color} errorMessage={errors.border?.color}
> >
<Field name="border.color"> <Field name="border.color">
{({ field, form }: FieldProps) => ( {({ field, form }: FieldProps) => (
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) => form.setFieldValue(field.name, e.target.value)}
/> />
)} )}
</Field> </Field>
</FormItem> </FormItem>
<FormItem <FormItem
label="Dash Style" label="Dash Style"
invalid={errors.border?.dashStyle && touched.border?.dashStyle} invalid={errors.border?.dashStyle && touched.border?.dashStyle}
errorMessage={errors.border?.dashStyle} errorMessage={errors.border?.dashStyle}
> >
<Field type="text" name="border.dashStyle"> <Field type="text" name="border.dashStyle">
{({ field, form }: FieldProps<SelectBoxOption>) => ( {({ field, form }: FieldProps<SelectBoxOption>) => (
<Select <Select
field={field} field={field}
form={form} form={form}
options={chartSeriesDashStyleOptions} options={chartSeriesDashStyleOptions}
isClearable={true} isClearable={true}
value={chartSeriesDashStyleOptions.filter( value={chartSeriesDashStyleOptions.filter(
(option) => option.value === values.border.dashStyle, (option) => option.value === values.border.dashStyle,
)} )}
onChange={(option) => onChange={(option) => form.setFieldValue(field.name, option?.value)}
form.setFieldValue(field.name, option?.value) />
} )}
/> </Field>
)} </FormItem>
</Field>
</FormItem>
<FormItem <FormItem
label="Width" label="Width"
invalid={errors.border?.width && touched.border?.width} invalid={errors.border?.width && touched.border?.width}
errorMessage={errors.border?.width} errorMessage={errors.border?.width}
> >
<Field type="number" name="border.width" component={Input} /> <Field type="number" name="border.width" component={Input} />
</FormItem> </FormItem>
</div> </div>
</TabContent> </TabContent>
</Tabs> </Tabs>
</div> </div>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Form> </Form>
)} )}
</Formik> </Formik>
)} )}
{data.operation === 'delete' && ( {data.operation === 'delete' && (
<Formik <Formik
initialValues={data} initialValues={data}
onSubmit={async (values, { setSubmitting }) => { onSubmit={async (values, { setSubmitting }) => {
setSubmitting(true) setSubmitting(true)
try { try {
await deleteListFormJsonRow(data.id, data.tabName, values.index) await deleteListFormJsonRow(data.id, data.tabName, values.index)
toast.push(<Notification type="success">Kayıt silindi </Notification>, { toast.push(<Notification type="success">Kayıt silindi </Notification>, {
placement: 'top-end', placement: 'top-end',
}) })
handleClose() handleClose()
} catch (error: any) { } catch (error: any) {
toast.push( toast.push(
<Notification type="danger"> <Notification type="danger">
Hata Hata
<code>{error}</code> <code>{error}</code>
</Notification>, </Notification>,
{ placement: 'top-end' }, { placement: 'top-end' },
) )
} finally { } finally {
setSubmitting(false) setSubmitting(false)
} }
}} }}
> >
{({ isSubmitting }) => ( {({ isSubmitting }) => (
<Form className="flex flex-col h-full"> <Form className="flex flex-col h-full">
<Dialog.Body className="flex flex-col gap-2"> <Dialog.Body className="flex flex-col gap-2">
<h5>Delete</h5> <h5>Delete</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>Silmek istediğinize emin misiniz?</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Form> </Form>
)} )}
</Formik> </Formik>
)} )}
</Dialog> </Dialog>
) )

View file

@ -310,8 +310,10 @@ function JsonRowOpDialogAxis({
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) =>
form.setFieldValue(field.name, e.target.value)
}
/> />
)} )}
</Field> </Field>
@ -340,8 +342,10 @@ function JsonRowOpDialogAxis({
<Input <Input
{...field} {...field}
type="color" type="color"
className='!h-10 !p-0 !m-0 !border-0' className="!h-10 !p-0 !m-0 !border-0"
onChange={(e) => form.setFieldValue(field.name, e.target.value)} onChange={(e) =>
form.setFieldValue(field.name, e.target.value)
}
/> />
)} )}
</Field> </Field>
@ -450,11 +454,16 @@ function JsonRowOpDialogAxis({
</Tabs> </Tabs>
</div> </div>
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button
Cancel size="sm"
className="ltr:mr-2 rtl:ml-2"
variant="plain"
onClick={handleClose}
>
{translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>
@ -495,10 +504,10 @@ function JsonRowOpDialogAxis({
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</div> </div>

View file

@ -366,11 +366,11 @@ function JsonRowOpDialogCommand({
</Tabs> </Tabs>
</div> </div>
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>
@ -411,10 +411,10 @@ function JsonRowOpDialogCommand({
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel { translate('::Cancel') }
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</div> </div>

View file

@ -239,11 +239,11 @@ function JsonRowOpDialogDatabase({
)} )}
</div> </div>
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel { translate('::Cancel') }
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>
@ -284,10 +284,10 @@ function JsonRowOpDialogDatabase({
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel { translate('::Cancel') }
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</div> </div>

View file

@ -893,11 +893,11 @@ function JsonRowOpDialogEditForm({
{translate('::ListForms.ListFormFieldEdit.HelperOpen')} {translate('::ListForms.ListFormFieldEdit.HelperOpen')}
</Button> </Button>
<div className="flex gap-2"> <div className="flex gap-2">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel { translate('::Cancel') }
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Dialog.Footer> </Dialog.Footer>
@ -930,14 +930,14 @@ function JsonRowOpDialogEditForm({
{({ isSubmitting }) => ( {({ isSubmitting }) => (
<Form className="flex flex-col h-full"> <Form className="flex flex-col h-full">
<Dialog.Body className="flex flex-col gap-2"> <Dialog.Body className="flex flex-col gap-2">
<h5>Delete</h5> <h5>{translate('::Delete')}</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>{translate('::DeleteConfirmation')}</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel { translate('::Cancel') }
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>

View file

@ -286,11 +286,11 @@ function JsonRowOpDialogExtraFilter({
</FormItem> </FormItem>
</div> </div>
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>
@ -331,10 +331,10 @@ function JsonRowOpDialogExtraFilter({
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</div> </div>

View file

@ -152,11 +152,11 @@ function JsonRowOpDialogPane({
</FormItem> </FormItem>
</div> </div>
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>
@ -196,10 +196,10 @@ function JsonRowOpDialogPane({
<Form> <Form>
<FormContainer size="sm"> <FormContainer size="sm">
<div className="text-right mt-4"> <div className="text-right mt-4">
<Button className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}> <Button size="sm" className="ltr:mr-2 rtl:ml-2" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</div> </div>

View file

@ -535,11 +535,11 @@ function JsonRowOpDialogSeries({
</div> </div>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Form> </Form>
@ -573,14 +573,14 @@ function JsonRowOpDialogSeries({
{({ isSubmitting }) => ( {({ isSubmitting }) => (
<Form className="flex flex-col h-full"> <Form className="flex flex-col h-full">
<Dialog.Body className="flex flex-col gap-2"> <Dialog.Body className="flex flex-col gap-2">
<h5>Delete</h5> <h5>{translate('::Delete')}</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>{translate('::DeleteConfirmation')}</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>

View file

@ -433,11 +433,11 @@ function JsonRowOpDialogSubForm({
</div> </div>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Form> </Form>
@ -470,14 +470,14 @@ function JsonRowOpDialogSubForm({
{({ isSubmitting }) => ( {({ isSubmitting }) => (
<Form className="flex flex-col h-full"> <Form className="flex flex-col h-full">
<Dialog.Body className="flex flex-col gap-2"> <Dialog.Body className="flex flex-col gap-2">
<h5>Delete</h5> <h5>{translate('::Delete')}</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>{translate('::DeleteConfirmation')}</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>

View file

@ -427,11 +427,11 @@ function JsonRowOpDialogWidget({
</div> </div>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Form> </Form>
@ -466,14 +466,14 @@ function JsonRowOpDialogWidget({
{({ isSubmitting }) => ( {({ isSubmitting }) => (
<Form className="flex flex-col h-full"> <Form className="flex flex-col h-full">
<Dialog.Body className="flex flex-col gap-2"> <Dialog.Body className="flex flex-col gap-2">
<h5>Delete</h5> <h5>{translate('::Delete')}</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>{translate('::DeleteConfirmation')}</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1"> <Dialog.Footer className="flex justify-end gap-2 border-t pt-3 mt-1">
<Button variant="plain" onClick={handleClose}> <Button size="sm" variant="plain" onClick={handleClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? 'Deleting' : 'Delete'} {isSubmitting ? 'Deleting' : 'Delete'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>

View file

@ -227,7 +227,7 @@ const WizardFileManager = () => {
variant="plain" variant="plain"
className="text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20" className="text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20"
type="button" type="button"
title={translate('::App.Platform.Delete') || 'Delete'} title={translate('::Delete') || 'Delete'}
loading={deletingFile === f.fileName} loading={deletingFile === f.fileName}
onClick={() => onClick={() =>
setConfirm({ fileName: f.fileName, wizardName: f.wizardName || f.fileName }) setConfirm({ fileName: f.fileName, wizardName: f.wizardName || f.fileName })
@ -279,16 +279,15 @@ const WizardFileManager = () => {
</div> </div>
<div className="flex justify-end gap-2 mt-4"> <div className="flex justify-end gap-2 mt-4">
<Button size="sm" variant="plain" type="button" onClick={() => setConfirm(null)}> <Button size="sm" variant="plain" type="button" onClick={() => setConfirm(null)}>
İptal {translate('::Cancel')}
</Button> </Button>
<Button <Button
size="sm" size="sm"
variant="solid" variant="solid"
color="red"
type="button" type="button"
onClick={handleDeleteConfirm} onClick={handleDeleteConfirm}
> >
{translate('::App.Platform.Delete') || 'Yes, Delete'} {translate('::Delete') || 'Yes, Delete'}
</Button> </Button>
</div> </div>
</div> </div>

View file

@ -529,9 +529,7 @@ const WizardStep1 = ({
}} }}
size="xs" size="xs"
variant="solid" variant="solid"
color="green-500"
icon={<FaPlus className="text-xs" />} icon={<FaPlus className="text-xs" />}
className="!inline-flex !h-auto !items-center !justify-center gap-1 !rounded !px-2 !py-0.5 text-xs text-white whitespace-nowrap hover:!bg-green-600"
> >
<span className="whitespace-nowrap"> <span className="whitespace-nowrap">
{translate('::ListForms.Wizard.Add') || 'Ekle'} {translate('::ListForms.Wizard.Add') || 'Ekle'}

View file

@ -548,7 +548,6 @@ function SortableItem({
}} }}
block block
variant="solid" variant="solid"
color="indigo-600"
className="mt-1 !h-auto !rounded !py-1.5 text-xs font-semibold text-white transition-colors hover:!bg-indigo-700 disabled:cursor-not-allowed disabled:opacity-40" className="mt-1 !h-auto !rounded !py-1.5 text-xs font-semibold text-white transition-colors hover:!bg-indigo-700 disabled:cursor-not-allowed disabled:opacity-40"
> >
Tamam Tamam

View file

@ -439,10 +439,15 @@ function WizardStep4({
</FormItem> </FormItem>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2"> <Dialog.Footer className="flex justify-end gap-2">
<Button type="button" variant="plain" onClick={() => setDialogIndex(null)}> <Button
Cancel size="sm"
type="button"
variant="plain"
onClick={() => setDialogIndex(null)}
>
{translate('::Cancel')}
</Button> </Button>
<Button type="submit" variant="solid"> <Button size="sm" type="submit" variant="solid">
{translate('::Save')} {translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
@ -458,15 +463,15 @@ function WizardStep4({
onRequestClose={() => setDeleteIndex(null)} onRequestClose={() => setDeleteIndex(null)}
> >
<Dialog.Body> <Dialog.Body>
<h5>Delete</h5> <h5>{translate('::Delete')}</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>{translate('::DeleteConfirmation')}</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2"> <Dialog.Footer className="flex justify-end gap-2">
<Button type="button" variant="plain" onClick={() => setDeleteIndex(null)}> <Button type="button" variant="plain" onClick={() => setDeleteIndex(null)}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button type="button" variant="solid" onClick={removeSubForm}> <Button type="button" variant="solid" onClick={removeSubForm}>
Delete {translate('::Delete')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Dialog> </Dialog>

View file

@ -318,7 +318,7 @@ function WizardStep5({ widgets, translate, onChange, onBack, onNext }: Props) {
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2"> <Dialog.Footer className="flex justify-end gap-2">
<Button type="button" variant="plain" onClick={() => setDialogIndex(null)}> <Button type="button" variant="plain" onClick={() => setDialogIndex(null)}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button type="submit" variant="solid"> <Button type="submit" variant="solid">
{translate('::Save')} {translate('::Save')}
@ -336,15 +336,15 @@ function WizardStep5({ widgets, translate, onChange, onBack, onNext }: Props) {
onRequestClose={() => setDeleteIndex(null)} onRequestClose={() => setDeleteIndex(null)}
> >
<Dialog.Body> <Dialog.Body>
<h5>Delete</h5> <h5>{translate('::Delete')}</h5>
<p>Silmek istediğinize emin misiniz?</p> <p>{translate('::DeleteConfirmation')}</p>
</Dialog.Body> </Dialog.Body>
<Dialog.Footer className="flex justify-end gap-2"> <Dialog.Footer className="flex justify-end gap-2">
<Button type="button" variant="plain" onClick={() => setDeleteIndex(null)}> <Button type="button" variant="plain" onClick={() => setDeleteIndex(null)}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button type="button" variant="solid" onClick={removeWidget}> <Button type="button" variant="solid" onClick={removeWidget}>
Delete {translate('::Delete')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Dialog> </Dialog>

View file

@ -121,7 +121,7 @@ function Section({ title, badge, children, defaultOpen = true }: SectionProps) {
onClick={() => setOpen((v) => !v)} onClick={() => setOpen((v) => !v)}
variant="plain" variant="plain"
shape="none" shape="none"
className="w-full !h-auto !items-center !justify-between !rounded-none bg-gray-50 !px-4 !py-2.5 transition-colors hover:!bg-gray-100 dark:bg-gray-800 dark:hover:!bg-gray-750" className="w-full !h-auto !items-center !justify-between !rounded-none !bg-gray-50 !px-4 !py-2.5 transition-colors hover:!bg-gray-100 dark:!bg-gray-800 dark:hover:!bg-gray-700"
> >
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
{open ? ( {open ? (

View file

@ -463,6 +463,7 @@ export function WorkflowCriteria({
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button <Button
size="sm"
type="button" type="button"
variant="plain" variant="plain"
disabled={busy || !formValues.id} disabled={busy || !formValues.id}
@ -470,7 +471,7 @@ export function WorkflowCriteria({
> >
{translate('::Delete')} {translate('::Delete')}
</Button> </Button>
<Button variant="solid" loading={busy} type="submit"> <Button size="sm" variant="solid" loading={busy} type="submit">
{translate('::Save')} {translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>

View file

@ -177,8 +177,8 @@ function DesignerToolbar({
<div className="flex flex-wrap justify-end gap-2"> <div className="flex flex-wrap justify-end gap-2">
<Button <Button
type="button" type="button"
variant="plain" variant="solid"
shape="none" shape="round"
className={classNames( className={classNames(
designerButtonClass, designerButtonClass,
'border-gray-300 !bg-white text-slate-700 hover:!bg-gray-50 dark:border-gray-700 dark:!bg-gray-800 dark:text-gray-200 dark:hover:!bg-gray-700', 'border-gray-300 !bg-white text-slate-700 hover:!bg-gray-50 dark:border-gray-700 dark:!bg-gray-800 dark:text-gray-200 dark:hover:!bg-gray-700',
@ -192,8 +192,8 @@ function DesignerToolbar({
</Button> </Button>
<Button <Button
type="button" type="button"
variant="plain" variant="solid"
shape="none" shape="round"
className={classNames( className={classNames(
designerButtonClass, designerButtonClass,
'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30', 'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30',
@ -207,8 +207,8 @@ function DesignerToolbar({
</Button> </Button>
<Button <Button
type="button" type="button"
variant="plain" variant="solid"
shape="none" shape="round"
className={classNames( className={classNames(
designerIconButtonClass, designerIconButtonClass,
'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30', 'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30',
@ -220,8 +220,8 @@ function DesignerToolbar({
</Button> </Button>
<Button <Button
type="button" type="button"
variant="plain" variant="solid"
shape="none" shape="round"
className={classNames( className={classNames(
designerIconButtonClass, designerIconButtonClass,
'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30', 'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30',
@ -240,8 +240,8 @@ function DesignerToolbar({
<Button <Button
key={option.value} key={option.value}
type="button" type="button"
variant="plain" variant="solid"
shape="none" shape="round"
className={classNames( className={classNames(
designerButtonClass, designerButtonClass,
'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30', 'border-blue-600 !bg-white text-blue-600 hover:!bg-blue-50 dark:border-blue-500 dark:!bg-gray-800 dark:text-blue-300 dark:hover:!bg-blue-900/30',

View file

@ -95,10 +95,10 @@ function CreateNotification({
</FormItem> </FormItem>
<div className="mt-6 flex flex-row justify-end gap-3"> <div className="mt-6 flex flex-row justify-end gap-3">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
<Button type="button" variant="plain" onClick={onDialogClose}> <Button size="sm" type="button" variant="plain" onClick={onDialogClose}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
</div> </div>

View file

@ -388,7 +388,7 @@ const OrganizationUnits = () => {
<div <div
className={classNames( className={classNames(
'h-8 text-md flex gap-2 items-center', 'h-8 text-md flex gap-2 items-center',
node.isSelected ? 'bg-indigo-200 text-black dark:text-black' : '', node.isSelected ? 'bg-indigo-100 text-gray-900 dark:bg-gray-700 dark:text-gray-100' : '',
)} )}
style={style} style={style}
ref={dragHandle} ref={dragHandle}
@ -401,7 +401,7 @@ const OrganizationUnits = () => {
{node.isInternal && (node.isOpen ? <FaMinusCircle /> : <FaPlusCircle />)} {node.isInternal && (node.isOpen ? <FaMinusCircle /> : <FaPlusCircle />)}
</div> </div>
<FaFolder className="w-3" color="#337ab7" /> <FaFolder className="w-3" />
<span className="node-text m-1"> <span className="node-text m-1">
{node.isEditing ? ( {node.isEditing ? (
@ -431,21 +431,27 @@ const OrganizationUnits = () => {
<Button <Button
size='xs' size='xs'
variant='plain' variant='plain'
icon={<FaUserPlus color="#2d6da3" />} shape="circle"
className="!h-6 !w-6 !bg-blue-50 !p-0 text-blue-600 hover:!bg-blue-100 hover:text-blue-700 dark:!bg-blue-900/30 dark:text-blue-300 dark:hover:!bg-blue-800/60 dark:hover:text-blue-100"
icon={<FaUserPlus className="text-xs" />}
onClick={() => setIsMoveAllUsersOpen(true)} onClick={() => setIsMoveAllUsersOpen(true)}
title={translate('::Abp.Identity.OrganizationUnit.MoveAllUsers')} title={translate('::Abp.Identity.OrganizationUnit.MoveAllUsers')}
></Button> ></Button>
<Button <Button
size='xs' size='xs'
variant='plain' variant='plain'
icon={<FaEdit className="text-teal-900" />} shape="circle"
className="!h-6 !w-6 !bg-teal-50 !p-0 text-teal-600 hover:!bg-teal-100 hover:text-teal-700 dark:!bg-teal-900/30 dark:text-teal-300 dark:hover:!bg-teal-800/60 dark:hover:text-teal-100"
icon={<FaEdit className="text-xs" />}
onClick={() => node.edit()} onClick={() => node.edit()}
title={translate('::Abp.Identity.OrganizationUnit.Rename')} title={translate('::Abp.Identity.OrganizationUnit.Rename')}
></Button> ></Button>
<Button <Button
size='xs' size='xs'
variant='plain' variant='plain'
icon={<FaTrashAlt color="#d9534f" />} shape="circle"
className="!h-6 !w-6 !bg-red-50 !p-0 text-red-600 hover:!bg-red-100 hover:text-red-700 dark:!bg-red-900/30 dark:text-red-300 dark:hover:!bg-red-800/60 dark:hover:text-red-100"
icon={<FaTrashAlt className="text-xs" />}
onClick={() => setDeleteRow({ id: node.data.id, name: 'Organization Unit' })} onClick={() => setDeleteRow({ id: node.data.id, name: 'Organization Unit' })}
title={translate('::Delete')} title={translate('::Delete')}
></Button> ></Button>
@ -715,10 +721,10 @@ const OrganizationUnits = () => {
</FormItem> </FormItem>
<div className="mt-6 flex flex-row justify-end gap-3"> <div className="mt-6 flex flex-row justify-end gap-3">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::...') : translate('::Save')} {isSubmitting ? translate('::...') : translate('::Save')}
</Button> </Button>
<Button type="button" variant="plain" onClick={onDialogClose}> <Button size="sm" type="button" variant="plain" onClick={onDialogClose}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
</div> </div>
@ -1048,10 +1054,11 @@ const OrganizationUnits = () => {
</FormItem> </FormItem>
<div className="mt-6 flex flex-row justify-end gap-3"> <div className="mt-6 flex flex-row justify-end gap-3">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::...') : translate('::Save')} {isSubmitting ? translate('::...') : translate('::Save')}
</Button> </Button>
<Button <Button
size="sm"
type="button" type="button"
variant="plain" variant="plain"
onClick={() => setIsMoveAllUsersOpen(false)} onClick={() => setIsMoveAllUsersOpen(false)}

View file

@ -383,9 +383,16 @@ const General = () => {
beforeUpload={beforeUpload} beforeUpload={beforeUpload}
onChange={onChooseImage} onChange={onChooseImage}
> >
<Button icon={<FaPlus />} type="button"></Button> <Button
size="sm"
variant="default"
icon={<FaPlus />}
type="button"
></Button>
</Upload> </Upload>
<Button <Button
size="sm"
variant="solid"
type="button" type="button"
icon={<FaTrashAlt />} icon={<FaTrashAlt />}
onClick={() => setImage(undefined)} onClick={() => setImage(undefined)}
@ -403,11 +410,16 @@ const General = () => {
</div> </div>
</div> </div>
<div className="mt-4 ltr:text-right"> <div className="mt-4 ltr:text-right">
<Button className="ltr:mr-2 rtl:ml-2" type="button" onClick={() => resetForm()}> <Button
size="sm"
className="ltr:mr-2 rtl:ml-2"
type="button"
onClick={() => resetForm()}
>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button size="sm" variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -138,7 +138,7 @@ const Password = ({ data }: { data?: LoginHistory[] }) => {
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</FormContainer> </FormContainer>

View file

@ -165,7 +165,7 @@ function PermissionDialogContent({
<Dialog.Footer className="flex justify-between items-center mt-4 pt-3 border-t"> <Dialog.Footer className="flex justify-between items-center mt-4 pt-3 border-t">
<div className="flex items-center"> <div className="flex items-center">
<Button variant="solid" color="sky-500" onClick={() => setCopyDialogOpen(true)}> <Button variant="plain" onClick={() => setCopyDialogOpen(true)}>
{translate('::AbpIdentity.Roles.CopyPermissions')} {translate('::AbpIdentity.Roles.CopyPermissions')}
</Button> </Button>
</div> </div>
@ -174,7 +174,7 @@ function PermissionDialogContent({
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isLoading} onClick={onDialogOk}> <Button variant="solid" loading={isLoading} onClick={onDialogOk}>
{isLoading ? translate('::SavingWithThreeDot') : translate('::Save')} {isLoading ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Dialog.Footer> </Dialog.Footer>

View file

@ -337,18 +337,17 @@ function TenantConnectionString({
disabled={connectionString.isNew} disabled={connectionString.isNew}
className="mr-auto" className="mr-auto"
type="button" type="button"
color="red-500" variant="plain"
variant="twoTone"
onClick={deleteConnectionString} onClick={deleteConnectionString}
> >
{translate('::Delete')} {translate('::Delete')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>
<Button type="button" variant="plain" onClick={onDialogClose}> <Button type="button" variant="plain" onClick={onDialogClose}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')}
</Button>
</div> </div>
</FormContainer> </FormContainer>
</Form> </Form>
@ -395,6 +394,9 @@ function TenantConnectionString({
</FormItem> </FormItem>
<div className="mt-6 flex flex-row justify-end gap-3"> <div className="mt-6 flex flex-row justify-end gap-3">
<Button type="button" variant="plain" onClick={onDialogClose}>
{translate('::Cancel')}
</Button>
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting {isSubmitting
? connectionString.isNew ? connectionString.isNew
@ -404,9 +406,6 @@ function TenantConnectionString({
? translate('::Abp.Identity.CreateUser') ? translate('::Abp.Identity.CreateUser')
: translate('::AbpTenantManagement.Tenants.DatabaseSeed')} : translate('::AbpTenantManagement.Tenants.DatabaseSeed')}
</Button> </Button>
<Button type="button" variant="plain" onClick={onDialogClose}>
{translate('::Cancel')}
</Button>
</div> </div>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -593,7 +593,7 @@ function UserDetails() {
<div className="mt-4 ltr:text-right"> <div className="mt-4 ltr:text-right">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Form> </Form>
@ -705,7 +705,7 @@ function UserDetails() {
<div className="mt-4 ltr:text-right"> <div className="mt-4 ltr:text-right">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Form> </Form>
@ -887,7 +887,7 @@ function UserDetails() {
<div className="mt-4 ltr:text-right"> <div className="mt-4 ltr:text-right">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Form> </Form>
@ -1244,7 +1244,7 @@ function UserDetails() {
<div className="mt-4 ltr:text-right"> <div className="mt-4 ltr:text-right">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Form> </Form>
@ -1632,7 +1632,7 @@ function UserDetails() {
<div className="mt-4 ltr:text-right"> <div className="mt-4 ltr:text-right">
<Button variant="solid" loading={isSubmitting} type="submit"> <Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')} {isSubmitting ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</div> </div>
</Form> </Form>
@ -1747,12 +1747,12 @@ function UserDetails() {
</FormItem> </FormItem>
<div className="mt-6 flex flex-row justify-end gap-3"> <div className="mt-6 flex flex-row justify-end gap-3">
<Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::SavingWithThreeDot') : translate('::Save')}
</Button>
<Button type="button" variant="plain" onClick={() => setOpen(false)}> <Button type="button" variant="plain" onClick={() => setOpen(false)}>
{translate('::Cancel')} {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isSubmitting} type="submit">
{isSubmitting ? translate('::Saving') : translate('::Save')}
</Button>
</div> </div>
</FormContainer> </FormContainer>
</Form> </Form>

View file

@ -171,10 +171,10 @@ function UserPermissionDialogContent({
<Dialog.Footer className="flex justify-end items-center mt-4 pt-3 border-t gap-2"> <Dialog.Footer className="flex justify-end items-center mt-4 pt-3 border-t gap-2">
<Button variant="plain" onClick={onDialogClose}> <Button variant="plain" onClick={onDialogClose}>
Cancel {translate('::Cancel')}
</Button> </Button>
<Button variant="solid" loading={isLoading} onClick={onDialogOk}> <Button variant="solid" loading={isLoading} onClick={onDialogOk}>
{isLoading ? translate('::SavingWithThreeDot') : translate('::Save')} {isLoading ? translate('::Saving') : translate('::Save')}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</> </>

View file

@ -454,11 +454,11 @@ const RoomList: React.FC = () => {
className="flex items-center gap-1" className="flex items-center gap-1"
onClick={() => openDeleteModal(classSession)} onClick={() => openDeleteModal(classSession)}
disabled={!!classSession.actualStartTime} disabled={!!classSession.actualStartTime}
title={translate('::App.Platform.Delete')} title={translate('::Delete')}
> >
<span className="hidden sm:inline"> <span className="hidden sm:inline">
{translate('::App.Platform.Delete')} {translate('::Delete')}
</span> </span>
</Button> </Button>
</> </>
@ -880,10 +880,10 @@ const RoomList: React.FC = () => {
> >
{translate('::Cancel') || 'İptal'} {translate('::Cancel') || 'İptal'}
</Button> </Button>
<Button type="submit" variant="solid" color="blue-600"> <Button type="submit" variant="solid">
{showCreateModal {showCreateModal
? translate('::App.Videoroom.CreateRoom') || 'Oda Oluştur' ? translate('::App.Videoroom.CreateRoom') || 'Oda Oluştur'
: translate('::App.Videoroom.SaveChanges') || 'Değişiklikleri Kaydet'} : translate('::App.SaveChanges') || 'Değişiklikleri Kaydet'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</form> </form>
@ -932,7 +932,7 @@ const RoomList: React.FC = () => {
{translate('::Cancel') || 'İptal'} {translate('::Cancel') || 'İptal'}
</Button> </Button>
<Button variant="solid" color="red-600" onClick={handleDeleteClass}> <Button variant="solid" color="red-600" onClick={handleDeleteClass}>
{translate('::App.Platform.Delete') || 'Sil'} {translate('::Delete') || 'Sil'}
</Button> </Button>
</Dialog.Footer> </Dialog.Footer>
</Dialog> </Dialog>

View file

@ -142,8 +142,9 @@ const ExtendLogin = () => {
onExpire={() => setFieldValue('captchaResponse', '')} onExpire={() => setFieldValue('captchaResponse', '')}
onSuccess={(token: string) => setFieldValue('captchaResponse', token)} onSuccess={(token: string) => setFieldValue('captchaResponse', token)}
/> />
<Button block loading={isSubmitting} variant="solid" type="submit"> <Button variant="solid" block loading={isSubmitting} type="submit">
{emailSent ? 'Resend Email' : 'Send Email'} {translate('::Abp.Account.Backto')}
{emailSent ? translate('::Resend') : translate('::Send')}
</Button> </Button>
<div className="mt-4 text-center"> <div className="mt-4 text-center">
<span>{translate('::Abp.Account.Backto')} </span> <span>{translate('::Abp.Account.Backto')} </span>

Some files were not shown because too many files have changed in this diff Show more