Skip to content

Commit fe7f75f

Browse files
committed
Products
1 parent 9143dc4 commit fe7f75f

7 files changed

Lines changed: 586 additions & 144 deletions

File tree

src/lib/components/ProductForm.svelte

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
parentProductCode: string;
1717
collectionId: string;
1818
monthlySubscription: string;
19+
monthlySubscriptionCurrency: string;
1920
rateLimits: {
2021
perSecond: string;
2122
perMinute: string;
@@ -36,6 +37,7 @@
3637
initialParentProductCode = "",
3738
initialCollectionId = "",
3839
initialSubscription = "",
40+
initialSubscriptionCurrency = "EUR",
3941
initialRateLimits = { perSecond: "", perMinute: "", perHour: "", perDay: "", perWeek: "", perMonth: "" },
4042
initialCustomAttributes = [],
4143
onSubmit,
@@ -51,6 +53,7 @@
5153
initialParentProductCode?: string;
5254
initialCollectionId?: string;
5355
initialSubscription?: string;
56+
initialSubscriptionCurrency?: string;
5457
initialRateLimits?: { perSecond: string; perMinute: string; perHour: string; perDay: string; perWeek: string; perMonth: string };
5558
initialCustomAttributes?: CustomAttribute[];
5659
onSubmit: (data: ProductFormData) => Promise<void>;
@@ -66,6 +69,7 @@
6669
let parentProductCode = $state(initialParentProductCode);
6770
let selectedCollectionId = $state(initialCollectionId);
6871
let monthlySubscriptionAmount = $state(initialSubscription);
72+
let monthlySubscriptionCurrency = $state(initialSubscriptionCurrency);
6973
let isSubmitting = $state(false);
7074
7175
// Rate limits
@@ -120,6 +124,7 @@
120124
parentProductCode: parentProductCode.trim(),
121125
collectionId: selectedCollectionId.trim(),
122126
monthlySubscription: String(monthlySubscriptionAmount || "").trim(),
127+
monthlySubscriptionCurrency: String(monthlySubscriptionCurrency || "").trim(),
123128
rateLimits: {
124129
perSecond: String(callsPerSecond || "").trim(),
125130
perMinute: String(callsPerMinute || "").trim(),
@@ -196,20 +201,36 @@
196201
<label for="monthly-subscription" class="form-label">
197202
Monthly Subscription
198203
</label>
199-
<div class="input-with-prefix">
200-
<span class="input-prefix">$</span>
201-
<input
202-
id="monthly-subscription"
203-
type="number"
204-
step="0.01"
205-
min="0"
206-
class="form-input with-prefix"
207-
placeholder="e.g., 99.99"
208-
bind:value={monthlySubscriptionAmount}
204+
<div class="subscription-row">
205+
<div class="input-with-prefix subscription-amount">
206+
<span class="input-prefix">$</span>
207+
<input
208+
id="monthly-subscription"
209+
type="number"
210+
step="0.01"
211+
min="0"
212+
class="form-input with-prefix"
213+
placeholder="e.g., 99.99"
214+
bind:value={monthlySubscriptionAmount}
215+
disabled={isSubmitting}
216+
/>
217+
</div>
218+
<select
219+
id="monthly-subscription-currency"
220+
class="form-input currency-select"
221+
bind:value={monthlySubscriptionCurrency}
209222
disabled={isSubmitting}
210-
/>
223+
>
224+
<option value="EUR">EUR</option>
225+
<option value="USD">USD</option>
226+
<option value="GBP">GBP</option>
227+
<option value="CHF">CHF</option>
228+
<option value="JPY">JPY</option>
229+
<option value="CAD">CAD</option>
230+
<option value="AUD">AUD</option>
231+
</select>
211232
</div>
212-
<div class="form-help">Monthly subscription fee</div>
233+
<div class="form-help">Monthly subscription fee and currency</div>
213234
</div>
214235
</div>
215236

@@ -672,6 +693,20 @@
672693
padding-left: 1.75rem;
673694
}
674695
696+
.subscription-row {
697+
display: flex;
698+
gap: 0.5rem;
699+
}
700+
701+
.subscription-amount {
702+
flex: 1;
703+
}
704+
705+
.currency-select {
706+
width: 5rem;
707+
flex-shrink: 0;
708+
}
709+
675710
.rate-limits-section {
676711
padding-top: 1rem;
677712
border-top: 1px solid #e5e7eb;

0 commit comments

Comments
 (0)