@rovela-ai/sdk 0.1.79 → 0.1.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api/index.d.ts +7 -0
- package/dist/admin/api/index.d.ts.map +1 -1
- package/dist/admin/api/index.js +8 -0
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/settings.d.ts +3 -2
- package/dist/admin/api/settings.d.ts.map +1 -1
- package/dist/admin/api/settings.js +6 -9
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/tax-zones.d.ts +97 -0
- package/dist/admin/api/tax-zones.d.ts.map +1 -0
- package/dist/admin/api/tax-zones.js +267 -0
- package/dist/admin/api/tax-zones.js.map +1 -0
- package/dist/admin/components/PaymentSettings.d.ts +4 -3
- package/dist/admin/components/PaymentSettings.d.ts.map +1 -1
- package/dist/admin/components/PaymentSettings.js +6 -14
- package/dist/admin/components/PaymentSettings.js.map +1 -1
- package/dist/admin/components/TaxSettings.d.ts +12 -0
- package/dist/admin/components/TaxSettings.d.ts.map +1 -0
- package/dist/admin/components/TaxSettings.js +299 -0
- package/dist/admin/components/TaxSettings.js.map +1 -0
- package/dist/admin/components/index.d.ts +1 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +4 -0
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/index.d.ts +3 -3
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +5 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/types.d.ts +42 -4
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/checkout/server/create-checkout-session.d.ts +0 -6
- package/dist/checkout/server/create-checkout-session.d.ts.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +79 -54
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/core/api/settings.d.ts +1 -2
- package/dist/core/api/settings.d.ts.map +1 -1
- package/dist/core/api/settings.js +2 -4
- package/dist/core/api/settings.js.map +1 -1
- package/dist/core/db/queries.d.ts +82 -9
- package/dist/core/db/queries.d.ts.map +1 -1
- package/dist/core/db/queries.js +130 -8
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.d.ts +218 -19
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +19 -2
- package/dist/core/db/schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -68,6 +68,12 @@
|
|
|
68
68
|
*
|
|
69
69
|
* // app/api/admin/shipping/rates/[id]/route.ts
|
|
70
70
|
* export { updateRate as PUT, deleteRate as DELETE } from '@rovela/sdk/admin/api/shipping'
|
|
71
|
+
*
|
|
72
|
+
* // app/api/admin/tax-zones/route.ts
|
|
73
|
+
* export { getTaxZones as GET, createTaxZone as POST } from '@rovela/sdk/admin/api'
|
|
74
|
+
*
|
|
75
|
+
* // app/api/admin/tax-zones/[id]/route.ts
|
|
76
|
+
* export { getTaxZone as GET, updateTaxZone as PUT, deleteTaxZone as DELETE } from '@rovela/sdk/admin/api'
|
|
71
77
|
* ```
|
|
72
78
|
*/
|
|
73
79
|
export { createAdminAuthHandlers } from './auth';
|
|
@@ -83,4 +89,5 @@ export { GET as getSettings, PUT as updateSettings } from './settings';
|
|
|
83
89
|
export { GET as getStripeStatus } from './stripe-status';
|
|
84
90
|
export { getCarriers as getShippingCarriers, createCarrier as createShippingCarrier, getCarrier as getShippingCarrier, updateCarrier as updateShippingCarrier, deleteCarrier as deleteShippingCarrier, } from './shipping';
|
|
85
91
|
export { getZones as getShippingZones, createZone as createShippingZone, getZone as getShippingZone, updateZone as updateShippingZone, deleteZone as deleteShippingZone, createRate as createShippingRate, updateRate as updateShippingRate, deleteRate as deleteShippingRate, validateShippoApiKey, saveShippoApiKey, deleteShippoApiKey, } from './shipping';
|
|
92
|
+
export { getTaxZones, createTaxZone, getTaxZone, updateTaxZone, deleteTaxZone, } from './tax-zones';
|
|
86
93
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAA;AAGhD,OAAO,EACL,GAAG,IAAI,WAAW,EAClB,IAAI,IAAI,aAAa,EACrB,UAAU,EACV,GAAG,IAAI,aAAa,EACpB,MAAM,IAAI,aAAa,EACvB,UAAU,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,GAAG,IAAI,SAAS,EAChB,QAAQ,EACR,GAAG,IAAI,WAAW,GACnB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGzC,OAAO,EACL,GAAG,IAAI,aAAa,EACpB,IAAI,IAAI,cAAc,EACtB,WAAW,EACX,GAAG,IAAI,cAAc,EACrB,MAAM,IAAI,cAAc,GACzB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,GAAG,IAAI,YAAY,EACnB,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,SAAS,CAAA;AAG5C,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,YAAY,CAAA;AAGtE,OAAO,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGxD,OAAO,EACL,WAAW,IAAI,mBAAmB,EAClC,aAAa,IAAI,qBAAqB,EACtC,UAAU,IAAI,kBAAkB,EAChC,aAAa,IAAI,qBAAqB,EACtC,aAAa,IAAI,qBAAqB,GACvC,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,UAAU,IAAI,kBAAkB,EAChC,OAAO,IAAI,eAAe,EAC1B,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAA"}
|
package/dist/admin/api/index.js
CHANGED
|
@@ -68,6 +68,12 @@
|
|
|
68
68
|
*
|
|
69
69
|
* // app/api/admin/shipping/rates/[id]/route.ts
|
|
70
70
|
* export { updateRate as PUT, deleteRate as DELETE } from '@rovela/sdk/admin/api/shipping'
|
|
71
|
+
*
|
|
72
|
+
* // app/api/admin/tax-zones/route.ts
|
|
73
|
+
* export { getTaxZones as GET, createTaxZone as POST } from '@rovela/sdk/admin/api'
|
|
74
|
+
*
|
|
75
|
+
* // app/api/admin/tax-zones/[id]/route.ts
|
|
76
|
+
* export { getTaxZone as GET, updateTaxZone as PUT, deleteTaxZone as DELETE } from '@rovela/sdk/admin/api'
|
|
71
77
|
* ```
|
|
72
78
|
*/
|
|
73
79
|
// Auth
|
|
@@ -96,4 +102,6 @@ export { GET as getStripeStatus } from './stripe-status';
|
|
|
96
102
|
export { getCarriers as getShippingCarriers, createCarrier as createShippingCarrier, getCarrier as getShippingCarrier, updateCarrier as updateShippingCarrier, deleteCarrier as deleteShippingCarrier, } from './shipping';
|
|
97
103
|
// Shipping Zones & Rates
|
|
98
104
|
export { getZones as getShippingZones, createZone as createShippingZone, getZone as getShippingZone, updateZone as updateShippingZone, deleteZone as deleteShippingZone, createRate as createShippingRate, updateRate as updateShippingRate, deleteRate as deleteShippingRate, validateShippoApiKey, saveShippoApiKey, deleteShippoApiKey, } from './shipping';
|
|
105
|
+
// Tax Zones
|
|
106
|
+
export { getTaxZones, createTaxZone, getTaxZone, updateTaxZone, deleteTaxZone, } from './tax-zones';
|
|
99
107
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AAEH,OAAO;AACP,OAAO,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAA;AAEhD,WAAW;AACX,OAAO,EACL,GAAG,IAAI,WAAW,EAClB,IAAI,IAAI,aAAa,EACrB,UAAU,EACV,GAAG,IAAI,aAAa,EACpB,MAAM,IAAI,aAAa,EACvB,UAAU,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AAEnB,SAAS;AACT,OAAO,EACL,GAAG,IAAI,SAAS,EAChB,QAAQ,EACR,GAAG,IAAI,WAAW,GACnB,MAAM,UAAU,CAAA;AAEjB,SAAS;AACT,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,UAAU,CAAA;AAEhD,QAAQ;AACR,OAAO,EAAE,GAAG,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzC,aAAa;AACb,OAAO,EACL,GAAG,IAAI,aAAa,EACpB,IAAI,IAAI,cAAc,EACtB,WAAW,EACX,GAAG,IAAI,cAAc,EACrB,MAAM,IAAI,cAAc,GACzB,MAAM,cAAc,CAAA;AAErB,YAAY;AACZ,OAAO,EACL,GAAG,IAAI,YAAY,EACnB,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAA;AAEpB,oCAAoC;AACpC,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,SAAS,CAAA;AAE5C,gCAAgC;AAChC,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAEjD,WAAW;AACX,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,YAAY,CAAA;AAEtE,gBAAgB;AAChB,OAAO,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAExD,oBAAoB;AACpB,OAAO,EACL,WAAW,IAAI,mBAAmB,EAClC,aAAa,IAAI,qBAAqB,EACtC,UAAU,IAAI,kBAAkB,EAChC,aAAa,IAAI,qBAAqB,EACtC,aAAa,IAAI,qBAAqB,GACvC,MAAM,YAAY,CAAA;AAEnB,yBAAyB;AACzB,OAAO,EACL,QAAQ,IAAI,gBAAgB,EAC5B,UAAU,IAAI,kBAAkB,EAChC,OAAO,IAAI,eAAe,EAC1B,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,UAAU,IAAI,kBAAkB,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAA;AAEnB,YAAY;AACZ,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,EACV,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAA"}
|
|
@@ -35,13 +35,14 @@ export declare function GET(): Promise<NextResponse<SettingsResponse | AdminApiE
|
|
|
35
35
|
* "storeEmail": "support@example.com",
|
|
36
36
|
* "storeCurrency": "USD",
|
|
37
37
|
* "storeTimezone": "America/New_York",
|
|
38
|
-
* "
|
|
39
|
-
* "taxRate": 8.5,
|
|
38
|
+
* "taxIncludedInPrices": true,
|
|
40
39
|
* "shippingEnabled": true,
|
|
41
40
|
* "freeShippingThreshold": 100,
|
|
42
41
|
* "shippingCountries": ["US", "CA", "MX"]
|
|
43
42
|
* }
|
|
44
43
|
* ```
|
|
44
|
+
*
|
|
45
|
+
* Note: Tax rates are managed via /api/admin/tax-zones (zone-based system)
|
|
45
46
|
*/
|
|
46
47
|
export declare function PUT(request: NextRequest): Promise<NextResponse<SettingsResponse | AdminApiError>>;
|
|
47
48
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/admin/api/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,EAAgC,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAM7C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,iBAAiB,CAAA;CAC5B;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/admin/api/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,OAAO,EAAgC,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAM7C,UAAU,gBAAgB;IACxB,QAAQ,EAAE,iBAAiB,CAAA;CAC5B;AAmCD;;;;;GAKG;AACH,wBAAsB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,CA6BnF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,GAAG,CACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAoHzD"}
|
|
@@ -32,8 +32,7 @@ function getDefaultSettings() {
|
|
|
32
32
|
storeEmail: process.env.SUPPORT_EMAIL || process.env.RESEND_FROM_EMAIL || '',
|
|
33
33
|
storeCurrency: process.env.STORE_CURRENCY || 'USD',
|
|
34
34
|
storeTimezone: process.env.STORE_TIMEZONE || 'America/New_York',
|
|
35
|
-
|
|
36
|
-
taxRate: 0,
|
|
35
|
+
taxIncludedInPrices: true, // Default: prices include tax
|
|
37
36
|
shippingEnabled: true,
|
|
38
37
|
freeShippingThreshold: 0,
|
|
39
38
|
shippingCountries: ['US', 'CA'],
|
|
@@ -85,13 +84,14 @@ export async function GET() {
|
|
|
85
84
|
* "storeEmail": "support@example.com",
|
|
86
85
|
* "storeCurrency": "USD",
|
|
87
86
|
* "storeTimezone": "America/New_York",
|
|
88
|
-
* "
|
|
89
|
-
* "taxRate": 8.5,
|
|
87
|
+
* "taxIncludedInPrices": true,
|
|
90
88
|
* "shippingEnabled": true,
|
|
91
89
|
* "freeShippingThreshold": 100,
|
|
92
90
|
* "shippingCountries": ["US", "CA", "MX"]
|
|
93
91
|
* }
|
|
94
92
|
* ```
|
|
93
|
+
*
|
|
94
|
+
* Note: Tax rates are managed via /api/admin/tax-zones (zone-based system)
|
|
95
95
|
*/
|
|
96
96
|
export async function PUT(request) {
|
|
97
97
|
try {
|
|
@@ -117,11 +117,8 @@ export async function PUT(request) {
|
|
|
117
117
|
if (typeof body.storeTimezone === 'string') {
|
|
118
118
|
data.storeTimezone = body.storeTimezone.slice(0, 100);
|
|
119
119
|
}
|
|
120
|
-
if (typeof body.
|
|
121
|
-
data.
|
|
122
|
-
}
|
|
123
|
-
if (typeof body.taxRate === 'number') {
|
|
124
|
-
data.taxRate = Math.max(0, Math.min(100, body.taxRate));
|
|
120
|
+
if (typeof body.taxIncludedInPrices === 'boolean') {
|
|
121
|
+
data.taxIncludedInPrices = body.taxIncludedInPrices;
|
|
125
122
|
}
|
|
126
123
|
if (typeof body.shippingEnabled === 'boolean') {
|
|
127
124
|
data.shippingEnabled = body.shippingEnabled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/admin/api/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAA;AAWvF,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF;;;;;;;;GAQG;AACH,SAAS,kBAAkB;IACzB,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,UAAU;QAC/C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;QAC5E,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,KAAK;QAClD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,kBAAkB;QAC/D,
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/admin/api/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/admin/api/tax-zones
|
|
3
|
+
*
|
|
4
|
+
* API route handlers for admin tax zone management.
|
|
5
|
+
* Tax zones define tax rates by country/state for zone-based tax calculation.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/admin/tax-zones/route.ts
|
|
10
|
+
* export { getTaxZones as GET, createTaxZone as POST } from '@rovela/sdk/admin/api'
|
|
11
|
+
*
|
|
12
|
+
* // app/api/admin/tax-zones/[id]/route.ts
|
|
13
|
+
* export { getTaxZone as GET, updateTaxZone as PUT, deleteTaxZone as DELETE } from '@rovela/sdk/admin/api'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
17
|
+
import type { AdminApiError, CrudResult } from '../types';
|
|
18
|
+
import type { TaxZoneData } from '../../core/db/queries';
|
|
19
|
+
/**
|
|
20
|
+
* GET /api/admin/tax-zones
|
|
21
|
+
*
|
|
22
|
+
* List all tax zones ordered by priority (sortOrder ascending).
|
|
23
|
+
* Returns zones with their country/state coverage and tax rates.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getTaxZones(): Promise<NextResponse<{
|
|
26
|
+
data: TaxZoneData[];
|
|
27
|
+
} | AdminApiError>>;
|
|
28
|
+
/**
|
|
29
|
+
* POST /api/admin/tax-zones
|
|
30
|
+
*
|
|
31
|
+
* Create a new tax zone.
|
|
32
|
+
*
|
|
33
|
+
* Request Body:
|
|
34
|
+
* ```json
|
|
35
|
+
* {
|
|
36
|
+
* "name": "US - California",
|
|
37
|
+
* "countries": ["US"],
|
|
38
|
+
* "states": ["CA"],
|
|
39
|
+
* "taxRate": 8.25,
|
|
40
|
+
* "isActive": true,
|
|
41
|
+
* "sortOrder": 0
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Notes:
|
|
46
|
+
* - `countries` is an array of ISO-2 country codes or ['*'] for wildcard
|
|
47
|
+
* - `states` is optional, only used when countries includes 'US'
|
|
48
|
+
* - `sortOrder` determines priority (lower = checked first during matching)
|
|
49
|
+
*/
|
|
50
|
+
export declare function createTaxZone(request: NextRequest): Promise<NextResponse<CrudResult<TaxZoneData> | AdminApiError>>;
|
|
51
|
+
/**
|
|
52
|
+
* GET /api/admin/tax-zones/[id]
|
|
53
|
+
*
|
|
54
|
+
* Get a single tax zone by ID.
|
|
55
|
+
*/
|
|
56
|
+
export declare function getTaxZone(request: NextRequest, { params }: {
|
|
57
|
+
params: Promise<{
|
|
58
|
+
id: string;
|
|
59
|
+
}>;
|
|
60
|
+
}): Promise<NextResponse<{
|
|
61
|
+
data: TaxZoneData;
|
|
62
|
+
} | AdminApiError>>;
|
|
63
|
+
/**
|
|
64
|
+
* PUT /api/admin/tax-zones/[id]
|
|
65
|
+
*
|
|
66
|
+
* Update a tax zone by ID.
|
|
67
|
+
*
|
|
68
|
+
* Request Body (all fields optional):
|
|
69
|
+
* ```json
|
|
70
|
+
* {
|
|
71
|
+
* "name": "US - California (Updated)",
|
|
72
|
+
* "countries": ["US"],
|
|
73
|
+
* "states": ["CA", "NV"],
|
|
74
|
+
* "taxRate": 8.5,
|
|
75
|
+
* "isActive": true,
|
|
76
|
+
* "sortOrder": 1
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function updateTaxZone(request: NextRequest, { params }: {
|
|
81
|
+
params: Promise<{
|
|
82
|
+
id: string;
|
|
83
|
+
}>;
|
|
84
|
+
}): Promise<NextResponse<CrudResult<TaxZoneData> | AdminApiError>>;
|
|
85
|
+
/**
|
|
86
|
+
* DELETE /api/admin/tax-zones/[id]
|
|
87
|
+
*
|
|
88
|
+
* Delete a tax zone by ID.
|
|
89
|
+
*/
|
|
90
|
+
export declare function deleteTaxZone(request: NextRequest, { params }: {
|
|
91
|
+
params: Promise<{
|
|
92
|
+
id: string;
|
|
93
|
+
}>;
|
|
94
|
+
}): Promise<NextResponse<{
|
|
95
|
+
success: boolean;
|
|
96
|
+
} | AdminApiError>>;
|
|
97
|
+
//# sourceMappingURL=tax-zones.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tax-zones.d.ts","sourceRoot":"","sources":["../../../src/admin/api/tax-zones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAUvD,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAsBxD;;;;;GAKG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAAE,IAAI,EAAE,WAAW,EAAE,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CAclG;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,CAAC,CAmEhE;AAMD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CA+B9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,CAAC,CA4GhE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,GAC9C,OAAO,CAAC,YAAY,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC,CAwC7D"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/admin/api/tax-zones
|
|
3
|
+
*
|
|
4
|
+
* API route handlers for admin tax zone management.
|
|
5
|
+
* Tax zones define tax rates by country/state for zone-based tax calculation.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/admin/tax-zones/route.ts
|
|
10
|
+
* export { getTaxZones as GET, createTaxZone as POST } from '@rovela/sdk/admin/api'
|
|
11
|
+
*
|
|
12
|
+
* // app/api/admin/tax-zones/[id]/route.ts
|
|
13
|
+
* export { getTaxZone as GET, updateTaxZone as PUT, deleteTaxZone as DELETE } from '@rovela/sdk/admin/api'
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import { NextResponse } from 'next/server';
|
|
17
|
+
import { getServerSession } from 'next-auth';
|
|
18
|
+
import { createAuthOptions } from '../../auth/config';
|
|
19
|
+
import { findTaxZones, findTaxZoneById, createTaxZone as createTaxZoneQuery, updateTaxZone as updateTaxZoneQuery, deleteTaxZone as deleteTaxZoneQuery, } from '../../core/db/queries';
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// Auth Helper
|
|
22
|
+
// =============================================================================
|
|
23
|
+
async function requireAdmin() {
|
|
24
|
+
const session = await getServerSession(createAuthOptions());
|
|
25
|
+
const user = session?.user;
|
|
26
|
+
if (!user?.role || !['owner', 'admin'].includes(user.role)) {
|
|
27
|
+
return NextResponse.json({ error: 'Unauthorized', code: 'UNAUTHORIZED' }, { status: 401 });
|
|
28
|
+
}
|
|
29
|
+
return null; // Auth passed
|
|
30
|
+
}
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// Tax Zones - List & Create
|
|
33
|
+
// =============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* GET /api/admin/tax-zones
|
|
36
|
+
*
|
|
37
|
+
* List all tax zones ordered by priority (sortOrder ascending).
|
|
38
|
+
* Returns zones with their country/state coverage and tax rates.
|
|
39
|
+
*/
|
|
40
|
+
export async function getTaxZones() {
|
|
41
|
+
const authError = await requireAdmin();
|
|
42
|
+
if (authError)
|
|
43
|
+
return authError;
|
|
44
|
+
try {
|
|
45
|
+
const zones = await findTaxZones();
|
|
46
|
+
return NextResponse.json({ data: zones });
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error('[Tax Zones API] GET error:', error);
|
|
50
|
+
return NextResponse.json({ error: 'Failed to fetch tax zones', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* POST /api/admin/tax-zones
|
|
55
|
+
*
|
|
56
|
+
* Create a new tax zone.
|
|
57
|
+
*
|
|
58
|
+
* Request Body:
|
|
59
|
+
* ```json
|
|
60
|
+
* {
|
|
61
|
+
* "name": "US - California",
|
|
62
|
+
* "countries": ["US"],
|
|
63
|
+
* "states": ["CA"],
|
|
64
|
+
* "taxRate": 8.25,
|
|
65
|
+
* "isActive": true,
|
|
66
|
+
* "sortOrder": 0
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* Notes:
|
|
71
|
+
* - `countries` is an array of ISO-2 country codes or ['*'] for wildcard
|
|
72
|
+
* - `states` is optional, only used when countries includes 'US'
|
|
73
|
+
* - `sortOrder` determines priority (lower = checked first during matching)
|
|
74
|
+
*/
|
|
75
|
+
export async function createTaxZone(request) {
|
|
76
|
+
const authError = await requireAdmin();
|
|
77
|
+
if (authError)
|
|
78
|
+
return authError;
|
|
79
|
+
try {
|
|
80
|
+
const body = await request.json();
|
|
81
|
+
// Validate required fields
|
|
82
|
+
if (!body.name || typeof body.name !== 'string') {
|
|
83
|
+
return NextResponse.json({ error: 'Name is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
84
|
+
}
|
|
85
|
+
if (!Array.isArray(body.countries) || body.countries.length === 0) {
|
|
86
|
+
return NextResponse.json({ error: 'Countries array is required and must not be empty', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
87
|
+
}
|
|
88
|
+
if (typeof body.taxRate !== 'number' || body.taxRate < 0 || body.taxRate > 100) {
|
|
89
|
+
return NextResponse.json({ error: 'Tax rate must be a number between 0 and 100', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
90
|
+
}
|
|
91
|
+
// Normalize country codes to uppercase
|
|
92
|
+
const countries = body.countries.map((c) => c.toUpperCase().trim());
|
|
93
|
+
// Normalize state codes if provided
|
|
94
|
+
const states = Array.isArray(body.states)
|
|
95
|
+
? body.states.map((s) => s.toUpperCase().trim()).filter((s) => s.length > 0)
|
|
96
|
+
: [];
|
|
97
|
+
const zone = await createTaxZoneQuery({
|
|
98
|
+
name: body.name.trim().slice(0, 100),
|
|
99
|
+
countries,
|
|
100
|
+
states,
|
|
101
|
+
taxRate: body.taxRate,
|
|
102
|
+
isActive: body.isActive !== false, // Default true
|
|
103
|
+
sortOrder: typeof body.sortOrder === 'number' ? body.sortOrder : 0,
|
|
104
|
+
});
|
|
105
|
+
// Convert to TaxZoneData format
|
|
106
|
+
const zoneData = {
|
|
107
|
+
id: zone.id,
|
|
108
|
+
name: zone.name,
|
|
109
|
+
countries: zone.countries || [],
|
|
110
|
+
states: zone.states || [],
|
|
111
|
+
taxRate: parseFloat(String(zone.taxRate)),
|
|
112
|
+
isActive: zone.isActive,
|
|
113
|
+
sortOrder: zone.sortOrder,
|
|
114
|
+
createdAt: zone.createdAt,
|
|
115
|
+
updatedAt: zone.updatedAt,
|
|
116
|
+
};
|
|
117
|
+
return NextResponse.json({ success: true, data: zoneData }, { status: 201 });
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error('[Tax Zones API] POST error:', error);
|
|
121
|
+
return NextResponse.json({ error: 'Failed to create tax zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// =============================================================================
|
|
125
|
+
// Tax Zones - Get, Update, Delete by ID
|
|
126
|
+
// =============================================================================
|
|
127
|
+
/**
|
|
128
|
+
* GET /api/admin/tax-zones/[id]
|
|
129
|
+
*
|
|
130
|
+
* Get a single tax zone by ID.
|
|
131
|
+
*/
|
|
132
|
+
export async function getTaxZone(request, { params }) {
|
|
133
|
+
const authError = await requireAdmin();
|
|
134
|
+
if (authError)
|
|
135
|
+
return authError;
|
|
136
|
+
try {
|
|
137
|
+
const { id } = await params;
|
|
138
|
+
if (!id) {
|
|
139
|
+
return NextResponse.json({ error: 'Zone ID is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
140
|
+
}
|
|
141
|
+
const zone = await findTaxZoneById(id);
|
|
142
|
+
if (!zone) {
|
|
143
|
+
return NextResponse.json({ error: 'Tax zone not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
144
|
+
}
|
|
145
|
+
return NextResponse.json({ data: zone });
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error('[Tax Zones API] GET by ID error:', error);
|
|
149
|
+
return NextResponse.json({ error: 'Failed to fetch tax zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* PUT /api/admin/tax-zones/[id]
|
|
154
|
+
*
|
|
155
|
+
* Update a tax zone by ID.
|
|
156
|
+
*
|
|
157
|
+
* Request Body (all fields optional):
|
|
158
|
+
* ```json
|
|
159
|
+
* {
|
|
160
|
+
* "name": "US - California (Updated)",
|
|
161
|
+
* "countries": ["US"],
|
|
162
|
+
* "states": ["CA", "NV"],
|
|
163
|
+
* "taxRate": 8.5,
|
|
164
|
+
* "isActive": true,
|
|
165
|
+
* "sortOrder": 1
|
|
166
|
+
* }
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export async function updateTaxZone(request, { params }) {
|
|
170
|
+
const authError = await requireAdmin();
|
|
171
|
+
if (authError)
|
|
172
|
+
return authError;
|
|
173
|
+
try {
|
|
174
|
+
const { id } = await params;
|
|
175
|
+
const body = await request.json();
|
|
176
|
+
if (!id) {
|
|
177
|
+
return NextResponse.json({ error: 'Zone ID is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
178
|
+
}
|
|
179
|
+
// Check if zone exists
|
|
180
|
+
const existing = await findTaxZoneById(id);
|
|
181
|
+
if (!existing) {
|
|
182
|
+
return NextResponse.json({ error: 'Tax zone not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
183
|
+
}
|
|
184
|
+
// Build update data
|
|
185
|
+
const updateData = {};
|
|
186
|
+
if (typeof body.name === 'string') {
|
|
187
|
+
updateData.name = body.name.trim().slice(0, 100);
|
|
188
|
+
}
|
|
189
|
+
if (Array.isArray(body.countries)) {
|
|
190
|
+
if (body.countries.length === 0) {
|
|
191
|
+
return NextResponse.json({ error: 'Countries array must not be empty', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
192
|
+
}
|
|
193
|
+
updateData.countries = body.countries.map((c) => c.toUpperCase().trim());
|
|
194
|
+
}
|
|
195
|
+
if (Array.isArray(body.states)) {
|
|
196
|
+
updateData.states = body.states.map((s) => s.toUpperCase().trim()).filter((s) => s.length > 0);
|
|
197
|
+
}
|
|
198
|
+
if (typeof body.taxRate === 'number') {
|
|
199
|
+
if (body.taxRate < 0 || body.taxRate > 100) {
|
|
200
|
+
return NextResponse.json({ error: 'Tax rate must be between 0 and 100', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
201
|
+
}
|
|
202
|
+
updateData.taxRate = body.taxRate;
|
|
203
|
+
}
|
|
204
|
+
if (typeof body.isActive === 'boolean') {
|
|
205
|
+
updateData.isActive = body.isActive;
|
|
206
|
+
}
|
|
207
|
+
if (typeof body.sortOrder === 'number') {
|
|
208
|
+
updateData.sortOrder = body.sortOrder;
|
|
209
|
+
}
|
|
210
|
+
// Check if there's anything to update
|
|
211
|
+
if (Object.keys(updateData).length === 0) {
|
|
212
|
+
return NextResponse.json({ error: 'No valid fields to update', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
213
|
+
}
|
|
214
|
+
const zone = await updateTaxZoneQuery(id, updateData);
|
|
215
|
+
if (!zone) {
|
|
216
|
+
return NextResponse.json({ error: 'Failed to update tax zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
217
|
+
}
|
|
218
|
+
// Convert to TaxZoneData format
|
|
219
|
+
const zoneData = {
|
|
220
|
+
id: zone.id,
|
|
221
|
+
name: zone.name,
|
|
222
|
+
countries: zone.countries || [],
|
|
223
|
+
states: zone.states || [],
|
|
224
|
+
taxRate: parseFloat(String(zone.taxRate)),
|
|
225
|
+
isActive: zone.isActive,
|
|
226
|
+
sortOrder: zone.sortOrder,
|
|
227
|
+
createdAt: zone.createdAt,
|
|
228
|
+
updatedAt: zone.updatedAt,
|
|
229
|
+
};
|
|
230
|
+
return NextResponse.json({ success: true, data: zoneData });
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
console.error('[Tax Zones API] PUT error:', error);
|
|
234
|
+
return NextResponse.json({ error: 'Failed to update tax zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* DELETE /api/admin/tax-zones/[id]
|
|
239
|
+
*
|
|
240
|
+
* Delete a tax zone by ID.
|
|
241
|
+
*/
|
|
242
|
+
export async function deleteTaxZone(request, { params }) {
|
|
243
|
+
const authError = await requireAdmin();
|
|
244
|
+
if (authError)
|
|
245
|
+
return authError;
|
|
246
|
+
try {
|
|
247
|
+
const { id } = await params;
|
|
248
|
+
if (!id) {
|
|
249
|
+
return NextResponse.json({ error: 'Zone ID is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
250
|
+
}
|
|
251
|
+
// Check if zone exists
|
|
252
|
+
const existing = await findTaxZoneById(id);
|
|
253
|
+
if (!existing) {
|
|
254
|
+
return NextResponse.json({ error: 'Tax zone not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
255
|
+
}
|
|
256
|
+
const deleted = await deleteTaxZoneQuery(id);
|
|
257
|
+
if (!deleted) {
|
|
258
|
+
return NextResponse.json({ error: 'Failed to delete tax zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
259
|
+
}
|
|
260
|
+
return NextResponse.json({ success: true });
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
console.error('[Tax Zones API] DELETE error:', error);
|
|
264
|
+
return NextResponse.json({ error: 'Failed to delete tax zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=tax-zones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tax-zones.js","sourceRoot":"","sources":["../../../src/admin/api/tax-zones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,aAAa,IAAI,kBAAkB,EACnC,aAAa,IAAI,kBAAkB,EACnC,aAAa,IAAI,kBAAkB,GACpC,MAAM,uBAAuB,CAAA;AAI9B,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF,KAAK,UAAU,YAAY;IACzB,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,OAAO,EAAE,IAAqC,CAAA;IAC3D,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAmB,EAChE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA,CAAC,cAAc;AAC5B,CAAC;AAED,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAA;IACtC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAA;QAClC,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;QAClD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC/E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB;IAEpB,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAA;IACtC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAEjC,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EACxE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,mDAAmD,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EACzG,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;YAC/E,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,6CAA6C,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EACnG,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,uCAAuC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAE3E,oCAAoC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5F,CAAC,CAAC,EAAE,CAAA;QAEN,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YACpC,SAAS;YACT,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,eAAe;YAClD,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACnE,CAAC,CAAA;QAEF,gCAAgC;QAChC,MAAM,QAAQ,GAAgB;YAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAA;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;QACnD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC/E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAAoB,EACpB,EAAE,MAAM,EAAuC;IAE/C,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAA;IACtC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAA;QAE3B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EAC3E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;QAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAmB,EACnE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAA;QACxD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,0BAA0B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC9E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB,EACpB,EAAE,MAAM,EAAuC;IAE/C,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAA;IACtC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAA;QAC3B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAEjC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EAC3E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAmB,EACnE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAA4B,EAAE,CAAA;QAE9C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EACzF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;YACH,CAAC;YACD,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QAClF,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAChH,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC;gBAC3C,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,oCAAoC,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EAC1F,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;YACH,CAAC;YACD,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QACnC,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QACrC,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QACvC,CAAC;QAED,sCAAsC;QACtC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EACjF,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,EAAE,EAAE,UAOzC,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC/E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,QAAQ,GAAgB;YAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAA;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAA;QAClD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC/E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB,EACpB,EAAE,MAAM,EAAuC;IAE/C,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAA;IACtC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAE/B,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAA;QAE3B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,kBAAkB,EAAmB,EAC3E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAmB,EACnE,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC/E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;QACH,CAAC;QAED,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAA;QACrD,OAAO,YAAY,CAAC,IAAI,CACtB,EAAE,KAAK,EAAE,2BAA2B,EAAE,IAAI,EAAE,gBAAgB,EAAmB,EAC/E,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { PaymentSettingsProps } from '../types';
|
|
2
2
|
/**
|
|
3
|
-
* PaymentSettings - Self-contained payment
|
|
3
|
+
* PaymentSettings - Self-contained payment configuration component.
|
|
4
4
|
*
|
|
5
5
|
* Features:
|
|
6
6
|
* - Stripe connection status display
|
|
7
7
|
* - Currency selection (from database)
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
*
|
|
9
|
+
* Note: Tax configuration is now handled by the TaxSettings component
|
|
10
|
+
* which provides zone-based tax rates per country/state.
|
|
10
11
|
*/
|
|
11
12
|
export declare function PaymentSettings({ className }: PaymentSettingsProps): import("react/jsx-runtime").JSX.Element;
|
|
12
13
|
//# sourceMappingURL=PaymentSettings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymentSettings.d.ts","sourceRoot":"","sources":["../../../src/admin/components/PaymentSettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAuC,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"PaymentSettings.d.ts","sourceRoot":"","sources":["../../../src/admin/components/PaymentSettings.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAuC,MAAM,UAAU,CAAA;AAwCzF;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CA6OlE"}
|