403Webshell
Server IP : 35.80.110.71  /  Your IP : 216.73.216.221
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/elite-events-storybook/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/elite-events-storybook/8630.7dfa2175.iframe.bundle.js
"use strict";(self.webpackChunkelite_events_nextjs=self.webpackChunkelite_events_nextjs||[]).push([[8630],{"./src/components/features/admin/pricing/PricingRuleBuilder/index.tsx":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{A:()=>PricingRuleBuilder});var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/next/dist/compiled/react/jsx-runtime.js"),react__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/next/dist/compiled/react/index.js"),_components_ui__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__("./src/components/ui/index.ts"),_components_ui_icons__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__("./src/components/ui/icons/index.ts");const RULE_TYPES=[{value:"VOLUME_DISCOUNT",label:"Volume Discount",description:"Buy more, save more"},{value:"TIME_BASED",label:"Time-Based",description:"Happy hour, flash sale"},{value:"INVENTORY_BASED",label:"Inventory-Based",description:"Price based on stock levels"},{value:"SEGMENT_BASED",label:"Segment-Based",description:"VIP customer pricing"},{value:"CLEARANCE",label:"Clearance",description:"Clearance pricing"},{value:"FIRST_TIME_BUYER",label:"First-Time Buyer",description:"New customer discount"},{value:"BUNDLE_DISCOUNT",label:"Bundle Discount",description:"Bundle pricing"},{value:"COMPETITIVE",label:"Competitive",description:"Match competitor pricing"},{value:"SEASONAL",label:"Seasonal",description:"Seasonal adjustments"},{value:"DEMAND_BASED",label:"Demand-Based",description:"Price based on demand"}],TARGET_TYPES=[{value:"ALL_PRODUCTS",label:"All Products"},{value:"SPECIFIC_PRODUCTS",label:"Specific Products"},{value:"SPECIFIC_CATEGORIES",label:"Specific Categories"},{value:"CART_TOTAL",label:"Cart Total"}],CONDITION_FIELDS=[{value:"quantity",label:"Quantity",type:"number"},{value:"cart_total",label:"Cart Total ($)",type:"number"},{value:"stock_level",label:"Stock Level",type:"number"},{value:"day_of_week",label:"Day of Week",type:"select"},{value:"hour_of_day",label:"Hour of Day",type:"number"},{value:"traffic_level",label:"Traffic Level",type:"select"}],OPERATOR_OPTIONS={number:[{value:"equals",label:"Equals"},{value:"not_equals",label:"Does not equal"},{value:"greater_than",label:"Greater than"},{value:"less_than",label:"Less than"},{value:"greater_than_or_equal",label:"Greater than or equal"},{value:"less_than_or_equal",label:"Less than or equal"},{value:"between",label:"Between"}],select:[{value:"equals",label:"Is"},{value:"not_equals",label:"Is not"},{value:"in",label:"Is one of"},{value:"not_in",label:"Is not one of"}]},DAY_OF_WEEK_OPTIONS=[{value:"0",label:"Sunday"},{value:"1",label:"Monday"},{value:"2",label:"Tuesday"},{value:"3",label:"Wednesday"},{value:"4",label:"Thursday"},{value:"5",label:"Friday"},{value:"6",label:"Saturday"}],TRAFFIC_LEVEL_OPTIONS=[{value:"low",label:"Low"},{value:"normal",label:"Normal"},{value:"high",label:"High"}];function PricingRuleBuilder({rule,onSave,onCancel}){const[name,setName]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.name||""),[description,setDescription]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.description||""),[type,setType]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.type||"VOLUME_DISCOUNT"),[discountType,setDiscountType]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.discountType||"PERCENTAGE"),[discountValue,setDiscountValue]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.discountValue||0),[conditions,setConditions]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.conditions||[]),[priority,setPriority]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.priority||0),[stackable,setStackable]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.stackable||!1),[minimumQuantity,setMinimumQuantity]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.minimumQuantity??null),[minimumPurchase,setMinimumPurchase]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.minimumPurchase??null),[maximumDiscount,setMaximumDiscount]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.maximumDiscount??null),[startDate,setStartDate]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.startDate?rule.startDate.split("T")[0]:""),[endDate,setEndDate]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.endDate?rule.endDate.split("T")[0]:""),[isActive,setIsActive]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.isActive??!0),[targetType,setTargetType]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.targetType||"ALL_PRODUCTS"),[abTestEnabled,setAbTestEnabled]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.abTestEnabled||!1),[abTestPercent,setAbTestPercent]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(rule?.abTestPercent??null),[saving,setSaving]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!1),[previewResult,setPreviewResult]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null),[previewLoading,setPreviewLoading]=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(!1),getFieldType=field=>{const fieldOption=CONDITION_FIELDS.find(f=>f.value===field);return fieldOption?.type||"number"},updateCondition=(index,field,value)=>{const updated=[...conditions],condition=updated[index];if("field"===field){const fieldType=getFieldType(value),operators=OPERATOR_OPTIONS[fieldType];condition.field=value,condition.operator=operators[0]?.value||"equals",condition.value="number"===fieldType?0:""}else"operator"===field?condition.operator=value:condition.value=value;setConditions(updated)},previewPricing=(0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async()=>{if(discountValue){setPreviewLoading(!0);try{const res=await fetch("/api/admin/pricing/preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({productId:1,quantity:minimumQuantity||1})}),result=await res.json();result.success&&setPreviewResult(result.data.pricing)}catch{}finally{setPreviewLoading(!1)}}},[discountValue,minimumQuantity]);(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{const timer=setTimeout(()=>{discountValue>0&&previewPricing()},500);return()=>clearTimeout(timer)},[discountValue,discountType,previewPricing]);const renderConditionValue=(condition,index)=>{const fieldType=getFieldType(condition.field);if("day_of_week"===condition.field)return"in"===condition.operator||"not_in"===condition.operator?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{multiple:!0,value:Array.isArray(condition.value)?condition.value.map(String):[],onChange:e=>{const selected=Array.from(e.target.selectedOptions).map(opt=>opt.value);updateCondition(index,"value",selected)},className:"flex-1 min-w-[150px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:DAY_OF_WEEK_OPTIONS.map(day=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:day.value,children:day.label},day.value))}):(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{value:String(condition.value),onChange:e=>updateCondition(index,"value",e.target.value),className:"flex-1 min-w-[150px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:DAY_OF_WEEK_OPTIONS.map(day=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:day.value,children:day.label},day.value))});if("traffic_level"===condition.field)return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{value:String(condition.value),onChange:e=>updateCondition(index,"value",e.target.value),className:"flex-1 min-w-[150px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:TRAFFIC_LEVEL_OPTIONS.map(level=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:level.value,children:level.label},level.value))});if("between"===condition.operator&&"number"===fieldType){const values=Array.isArray(condition.value)?condition.value:[0,0];return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"flex items-center gap-2",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:Number(values[0])||0,onChange:e=>updateCondition(index,"value",[parseFloat(e.target.value)||0,Number(values[1])||0]),className:"w-24 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"text-gray-500 dark:text-gray-400",children:"and"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:Number(values[1])||0,onChange:e=>updateCondition(index,"value",[Number(values[0])||0,parseFloat(e.target.value)||0]),className:"w-24 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"})]})}return"number"===fieldType?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:Number(condition.value)||0,onChange:e=>updateCondition(index,"value",parseFloat(e.target.value)||0),className:"flex-1 min-w-[150px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"}):(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"text",value:String(condition.value),onChange:e=>updateCondition(index,"value",e.target.value),placeholder:"Enter value...",className:"flex-1 min-w-[150px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"})};return(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"px-6 py-4 border-b border-gray-200 dark:border-gray-700",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:rule?"Edit Pricing Rule":"Create Pricing Rule"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-1",children:"Define dynamic pricing rules to automatically adjust prices"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"p-6 space-y-6",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Rule Name *"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"text",value:name,onChange:e=>setName(e.target.value),placeholder:"e.g., Buy 3 Get 10% Off",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-primary focus:border-transparent"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Rule Type"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{value:type,onChange:e=>setType(e.target.value),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:RULE_TYPES.map(rt=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:rt.value,children:rt.label},rt.value))})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Description"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("textarea",{value:description,onChange:e=>setDescription(e.target.value),placeholder:"Describe this pricing rule...",rows:2,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-primary focus:border-transparent resize-none"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg p-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white mb-4",children:"Discount Settings"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Discount Type"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("select",{value:discountType,onChange:e=>setDiscountType(e.target.value),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:"PERCENTAGE",children:"Percentage (%)"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:"FIXED_AMOUNT",children:"Fixed Amount ($)"})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Discount Value"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"relative",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:discountValue,onChange:e=>setDiscountValue(parseFloat(e.target.value)||0),min:0,max:"PERCENTAGE"===discountType?100:void 0,step:"PERCENTAGE"===discountType?1:.01,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400",children:"PERCENTAGE"===discountType?"%":"$"})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Maximum Discount"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"relative",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:maximumDiscount??"",onChange:e=>setMaximumDiscount(e.target.value?parseFloat(e.target.value):null),min:0,step:.01,placeholder:"No limit",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400",children:"$"})]})]})]}),previewResult&&(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div",{className:"mt-4 p-3 bg-blue-50 dark:bg-blue-900/30 rounded-lg",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"flex items-center gap-2 text-sm text-blue-700 dark:text-blue-300",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_icons__WEBPACK_IMPORTED_MODULE_3__.In,{name:"info-circle",size:16}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("span",{children:["Preview: $",previewResult.originalPrice.toFixed(2)," →"," ",(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("strong",{children:["$",previewResult.finalPrice.toFixed(2)]}),previewLoading&&" (calculating...)"]})]})})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg p-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white mb-4",children:"Requirements"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Minimum Quantity"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:minimumQuantity??"",onChange:e=>setMinimumQuantity(e.target.value?parseInt(e.target.value):null),min:1,placeholder:"No minimum",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Minimum Purchase ($)"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:minimumPurchase??"",onChange:e=>setMinimumPurchase(e.target.value?parseFloat(e.target.value):null),min:0,step:.01,placeholder:"No minimum",className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"})]})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg p-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white",children:"Conditions"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:"Optional: Add conditions for when this rule applies"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_components_ui__WEBPACK_IMPORTED_MODULE_2__.$n,{variant:"ghost",size:"sm",onClick:()=>{setConditions([...conditions,{field:"quantity",operator:"greater_than",value:1}])},children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_icons__WEBPACK_IMPORTED_MODULE_3__.In,{name:"plus",size:14,className:"mr-1"}),"Add Condition"]})]}),0===conditions.length?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p",{className:"text-sm text-gray-500 dark:text-gray-400 italic text-center py-4",children:"No conditions. This rule will apply to all eligible products."}):(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div",{className:"space-y-3",children:conditions.map((condition,index)=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"flex items-center gap-3 flex-wrap",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"text-xs font-medium text-gray-500 dark:text-gray-400 uppercase w-10",children:0===index?"If":"And"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{value:condition.field,onChange:e=>updateCondition(index,"field",e.target.value),className:"min-w-[140px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:CONDITION_FIELDS.map(field=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:field.value,children:field.label},field.value))}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{value:condition.operator,onChange:e=>updateCondition(index,"operator",e.target.value),className:"min-w-[160px] px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:OPERATOR_OPTIONS[getFieldType(condition.field)]?.map(op=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:op.value,children:op.label},op.value))}),renderConditionValue(condition,index),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button",{onClick:()=>(index=>{setConditions(conditions.filter((_,i)=>i!==index))})(index),className:"p-1.5 text-gray-400 hover:text-red-500 dark:text-gray-500 dark:hover:text-red-400",title:"Remove condition",children:(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_icons__WEBPACK_IMPORTED_MODULE_3__.In,{name:"x",size:16})})]},index))})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg p-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white mb-4",children:"Targeting"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Apply To"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("select",{value:targetType,onChange:e=>setTargetType(e.target.value),className:"w-full md:w-auto px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100",children:TARGET_TYPES.map(tt=>(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("option",{value:tt.value,children:tt.label},tt.value))})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg p-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white mb-4",children:"Scheduling"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Start Date"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"date",value:startDate,onChange:e=>setStartDate(e.target.value),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"End Date"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"date",value:endDate,onChange:e=>setEndDate(e.target.value),min:startDate,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"})]})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"border border-gray-200 dark:border-gray-700 rounded-lg p-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3",{className:"text-lg font-medium text-gray-900 dark:text-white mb-4",children:"Advanced Settings"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Priority (0-100)"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:priority,onChange:e=>setPriority(parseInt(e.target.value)||0),min:0,max:100,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:"Higher priority rules are applied first"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Status"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"flex items-center gap-4 h-[42px]",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"radio",checked:isActive,onChange:()=>setIsActive(!0),className:"text-primary focus:ring-primary"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"text-gray-700 dark:text-gray-300",children:"Active"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"radio",checked:!isActive,onChange:()=>setIsActive(!1),className:"text-primary focus:ring-primary"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"text-gray-700 dark:text-gray-300",children:"Inactive"})]})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"checkbox",checked:stackable,onChange:e=>setStackable(e.target.checked),className:"rounded text-primary focus:ring-primary"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Stackable"})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1 ml-6",children:"Can combine with other rules"})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"mt-4 pt-4 border-t border-gray-200 dark:border-gray-700",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("label",{className:"flex items-center gap-2 cursor-pointer mb-3",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"checkbox",checked:abTestEnabled,onChange:e=>setAbTestEnabled(e.target.checked),className:"rounded text-primary focus:ring-primary"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:"Enable A/B Testing"})]}),abTestEnabled&&(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"ml-6",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:"Traffic Percentage"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("input",{type:"number",value:abTestPercent??"",onChange:e=>setAbTestPercent(e.target.value?parseInt(e.target.value):null),min:0,max:100,placeholder:"50",className:"w-32 px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span",{className:"ml-2 text-gray-500 dark:text-gray-400",children:"%"})]})]})]})]}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div",{className:"px-6 py-4 border-t border-gray-200 dark:border-gray-700 flex items-center justify-end gap-3",children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui__WEBPACK_IMPORTED_MODULE_2__.$n,{variant:"ghost",onClick:onCancel,disabled:saving,children:"Cancel"}),(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui__WEBPACK_IMPORTED_MODULE_2__.$n,{variant:"primary",onClick:async()=>{if(name.trim()){setSaving(!0);try{await onSave({name:name.trim(),description:description.trim()||null,type,discountType,discountValue,conditions,priority,stackable,minimumQuantity,minimumPurchase,maximumDiscount,startDate:startDate?`${startDate}T00:00:00.000Z`:null,endDate:endDate?`${endDate}T23:59:59.999Z`:null,isActive,targetType,targetProductIds:[],targetCategoryIds:[],targetSegmentIds:[],abTestEnabled,abTestVariant:null,abTestPercent})}finally{setSaving(!1)}}},disabled:saving||!name.trim()||discountValue<=0,children:saving?(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_icons__WEBPACK_IMPORTED_MODULE_3__.In,{name:"reload",size:16,className:"mr-2 animate-spin"}),"Saving..."]}):(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,{children:[(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_components_ui_icons__WEBPACK_IMPORTED_MODULE_3__.In,{name:"check",size:16,className:"mr-2"}),rule?"Update Rule":"Create Rule"]})})]})]})}}}]);

Youez - 2016 - github.com/yon3zu
LinuXploit