@bagdja/kumpul 1.1.0 → 1.2.2
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/README.md +2 -1
- package/dist/client.js +14 -0
- package/dist/server.cjs +449 -30
- package/manifest.json +71 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,11 +15,12 @@ direction and notes about the prototype's sample data and host-managed pages.
|
|
|
15
15
|
## Contract
|
|
16
16
|
|
|
17
17
|
- Package: `@bagdja/kumpul`
|
|
18
|
-
- Version: `1.
|
|
18
|
+
- Version: `1.2.0`
|
|
19
19
|
- Template slug: `kumpul`
|
|
20
20
|
- `manifestVersion`: `1`, `rendererApiVersion`: `1`
|
|
21
21
|
- Entry point: `dist/server.cjs` (wajib) dan `dist/client.js` (JavaScript browser), dinyatakan di `manifest.entry`
|
|
22
22
|
- Halaman contoh untuk website baru: `manifest.defaultPages` (Beranda, Katalog Gathering, Cara Kerja, Tentang)
|
|
23
|
+
- Data contoh website baru: `manifest.sampleData` (kategori, gathering, FAQ, dan tagline), dipakai untuk seed website serta preview package
|
|
23
24
|
- Halaman sistem milik template (`manifest.pageOverrides`): header, keranjang, transaksi, detail transaksi, tagihan, invoice, kalender, rencana gathering
|
|
24
25
|
|
|
25
26
|
## Halaman sistem (`props.page`)
|
package/dist/client.js
CHANGED
|
@@ -2120,6 +2120,20 @@
|
|
|
2120
2120
|
window.addEventListener("resize", updateHeaderHeight);
|
|
2121
2121
|
}
|
|
2122
2122
|
}
|
|
2123
|
+
document.querySelectorAll("[data-plan-live]").forEach((workflow) => {
|
|
2124
|
+
const tabs = Array.from(workflow.querySelectorAll("[data-plan-step-tab]"));
|
|
2125
|
+
const panels = Array.from(workflow.querySelectorAll("[data-plan-step-panel]"));
|
|
2126
|
+
tabs.forEach((tab) => {
|
|
2127
|
+
tab.addEventListener("click", () => {
|
|
2128
|
+
if (tab.disabled) return;
|
|
2129
|
+
const step = tab.dataset.planStepTab;
|
|
2130
|
+
tabs.forEach((item) => item.setAttribute("aria-pressed", String(item === tab)));
|
|
2131
|
+
panels.forEach((panel) => {
|
|
2132
|
+
panel.hidden = panel.dataset.planStepPanel !== step;
|
|
2133
|
+
});
|
|
2134
|
+
});
|
|
2135
|
+
});
|
|
2136
|
+
});
|
|
2123
2137
|
document.querySelectorAll("[data-calendar-page]").forEach((calendar) => {
|
|
2124
2138
|
const tabs = Array.from(calendar.querySelectorAll("[data-calendar-tab]"));
|
|
2125
2139
|
const panels = Array.from(calendar.querySelectorAll("[data-calendar-panel]"));
|
package/dist/server.cjs
CHANGED
|
@@ -165,6 +165,8 @@ var require_page_adapter = __commonJS({
|
|
|
165
165
|
workflow_step: plan.workflowStep,
|
|
166
166
|
workflow_step_label: plan.workflowStepLabel,
|
|
167
167
|
invite_policy: plan.invitePolicy,
|
|
168
|
+
can_cancel: plan.canCancel === true,
|
|
169
|
+
public_invitation_href: plan.publicInvitationHref,
|
|
168
170
|
occurrence: {
|
|
169
171
|
status: occurrence.status,
|
|
170
172
|
status_label: occurrence.statusLabel,
|
|
@@ -193,6 +195,46 @@ var require_page_adapter = __commonJS({
|
|
|
193
195
|
}
|
|
194
196
|
};
|
|
195
197
|
}
|
|
198
|
+
function adaptInvitations(page) {
|
|
199
|
+
return list2(page.invitations).map((invitation) => ({
|
|
200
|
+
key: invitation.key,
|
|
201
|
+
name: invitation.name,
|
|
202
|
+
status: invitation.status,
|
|
203
|
+
status_label: invitation.statusLabel,
|
|
204
|
+
channel: invitation.channel,
|
|
205
|
+
invite_href: invitation.inviteHref,
|
|
206
|
+
can_revoke: invitation.canRevoke === true
|
|
207
|
+
}));
|
|
208
|
+
}
|
|
209
|
+
function adaptRegistrations(page) {
|
|
210
|
+
return list2(page.registrations).map((registration) => ({
|
|
211
|
+
key: registration.key,
|
|
212
|
+
name: registration.name,
|
|
213
|
+
registration_status: registration.registrationStatus,
|
|
214
|
+
payment_status: registration.paymentStatus,
|
|
215
|
+
status_label: registration.statusLabel,
|
|
216
|
+
invoice_amount: registration.invoiceAmount,
|
|
217
|
+
selected_options: list2(registration.selectedOptions),
|
|
218
|
+
rejection_message: registration.rejectionMessage,
|
|
219
|
+
can_reject: registration.canReject === true,
|
|
220
|
+
can_checkout: registration.canCheckout === true,
|
|
221
|
+
can_cancel_checkout: registration.canCancelCheckout === true,
|
|
222
|
+
can_refund: registration.canRefund === true
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
function adaptOperation(page) {
|
|
226
|
+
const operation = page.operation;
|
|
227
|
+
if (!operation || typeof operation !== "object") return null;
|
|
228
|
+
return {
|
|
229
|
+
kind: operation.kind,
|
|
230
|
+
status: operation.status,
|
|
231
|
+
label: operation.label,
|
|
232
|
+
processed: operation.processedCount,
|
|
233
|
+
total: operation.totalCount,
|
|
234
|
+
failed: operation.failedCount,
|
|
235
|
+
message: operation.message
|
|
236
|
+
};
|
|
237
|
+
}
|
|
196
238
|
function adaptCalendar(page) {
|
|
197
239
|
return {
|
|
198
240
|
title: "Kalender Acara",
|
|
@@ -257,6 +299,10 @@ var require_page_adapter = __commonJS({
|
|
|
257
299
|
rsvp_status: invitee.rsvpStatus,
|
|
258
300
|
rsvp_label: invitee.rsvpLabel
|
|
259
301
|
})),
|
|
302
|
+
// Kontrak v2: data pengelolaan initiator (tanpa kontak peserta).
|
|
303
|
+
invitations: adaptInvitations(page),
|
|
304
|
+
registrations: adaptRegistrations(page),
|
|
305
|
+
operation: adaptOperation(page),
|
|
260
306
|
viewerRole: page.viewerRole
|
|
261
307
|
};
|
|
262
308
|
default:
|
|
@@ -1174,6 +1220,395 @@ function GatheringPlanSimulator({ plan, props }) {
|
|
|
1174
1220
|
)
|
|
1175
1221
|
);
|
|
1176
1222
|
}
|
|
1223
|
+
function jakartaInputValue(value) {
|
|
1224
|
+
const time = typeof value === "string" ? Date.parse(value) : Number.NaN;
|
|
1225
|
+
return Number.isFinite(time) ? new Date(time + 7 * 3600 * 1e3).toISOString().slice(0, 16) : "";
|
|
1226
|
+
}
|
|
1227
|
+
function planDateTime(value) {
|
|
1228
|
+
const date = formatCalendarDate(value);
|
|
1229
|
+
const time = formatCalendarTime(value);
|
|
1230
|
+
return date ? `${date}${time ? ` \xB7 ${time} WIB` : ""}` : "Belum ditentukan";
|
|
1231
|
+
}
|
|
1232
|
+
var invitationChannels = {
|
|
1233
|
+
email: "Email",
|
|
1234
|
+
whatsapp: "WhatsApp",
|
|
1235
|
+
email_whatsapp: "Email & WhatsApp",
|
|
1236
|
+
public: "Tautan terbuka"
|
|
1237
|
+
};
|
|
1238
|
+
function PlanOperationNotice({ operation, kinds }) {
|
|
1239
|
+
if (!operation || !kinds.includes(operation.kind)) return null;
|
|
1240
|
+
const failed = operation.status === "FAILED";
|
|
1241
|
+
return h(
|
|
1242
|
+
"p",
|
|
1243
|
+
{ className: `kumpul-plan-live-operation${failed ? " is-failed" : ""}`, role: "status" },
|
|
1244
|
+
h("strong", null, failed ? `${operation.label} gagal` : `${operation.label}\u2026`),
|
|
1245
|
+
` ${Number(operation.processed) || 0}/${Number(operation.total) || 0} diproses`,
|
|
1246
|
+
Number(operation.failed) ? ` \xB7 ${operation.failed} gagal` : "",
|
|
1247
|
+
operation.message ? ` \xB7 ${operation.message}` : "",
|
|
1248
|
+
failed ? null : " \xB7 muat ulang halaman untuk melihat progres terbaru."
|
|
1249
|
+
);
|
|
1250
|
+
}
|
|
1251
|
+
function PlanSummaryFields({ plan, openedOptions }) {
|
|
1252
|
+
const occurrence = plan.occurrence || {};
|
|
1253
|
+
return h(
|
|
1254
|
+
"div",
|
|
1255
|
+
null,
|
|
1256
|
+
h(
|
|
1257
|
+
"dl",
|
|
1258
|
+
{ className: "kumpul-detail-fields" },
|
|
1259
|
+
h("div", null, h("dt", null, "Nama rencana"), h("dd", null, text(plan.title, "Rencana gathering"))),
|
|
1260
|
+
h("div", null, h("dt", null, "Akses peserta"), h("dd", null, plan.invite_policy === "INVITE_ONLY" ? "Khusus undangan" : "Terbuka")),
|
|
1261
|
+
h("div", null, h("dt", null, "Batas reservasi"), h("dd", null, planDateTime(occurrence.rsvp_close_at))),
|
|
1262
|
+
h("div", null, h("dt", null, "Batas pembayaran"), h("dd", null, planDateTime(occurrence.payment_deadline))),
|
|
1263
|
+
h("div", null, h("dt", null, "Tanggal acara"), h("dd", null, planDateTime(occurrence.final_schedule))),
|
|
1264
|
+
h("div", null, h("dt", null, "Pilihan dibuka"), h(
|
|
1265
|
+
"dd",
|
|
1266
|
+
null,
|
|
1267
|
+
openedOptions.length ? openedOptions.map((option) => `${text(option.option_group_key, "Pilihan")} \xB7 ${text(option.label)}`).join(", ") : "Belum ada"
|
|
1268
|
+
))
|
|
1269
|
+
)
|
|
1270
|
+
);
|
|
1271
|
+
}
|
|
1272
|
+
function PlanPeopleList({ registrations, selectable, selectAction, props, rowActions }) {
|
|
1273
|
+
if (!registrations.length) {
|
|
1274
|
+
return h("p", { className: "kumpul-plan-sim-help" }, "Belum ada peserta yang mengonfirmasi kehadiran.");
|
|
1275
|
+
}
|
|
1276
|
+
return h(
|
|
1277
|
+
"ul",
|
|
1278
|
+
{ className: "kumpul-plan-live-people" },
|
|
1279
|
+
...registrations.map((registration) => h(
|
|
1280
|
+
"li",
|
|
1281
|
+
{ key: registration.key, className: "kumpul-plan-sim-person" },
|
|
1282
|
+
h(
|
|
1283
|
+
"div",
|
|
1284
|
+
{ className: "kumpul-plan-sim-person-heading" },
|
|
1285
|
+
h(
|
|
1286
|
+
"label",
|
|
1287
|
+
{ className: "kumpul-plan-live-person-name" },
|
|
1288
|
+
selectable(registration) ? h("input", {
|
|
1289
|
+
type: "checkbox",
|
|
1290
|
+
"data-bagdja-selectable": "",
|
|
1291
|
+
"data-bagdja-key": registration.key,
|
|
1292
|
+
disabled: !intentEnabled(props, selectAction),
|
|
1293
|
+
"aria-label": `Pilih ${text(registration.name, "peserta")}`
|
|
1294
|
+
}) : null,
|
|
1295
|
+
h("strong", null, text(registration.name, "Peserta"))
|
|
1296
|
+
),
|
|
1297
|
+
h("span", null, [
|
|
1298
|
+
registration.status_label,
|
|
1299
|
+
list(registration.selected_options).join(", "),
|
|
1300
|
+
Number.isFinite(Number(registration.invoice_amount)) ? formatCurrency(registration.invoice_amount) : ""
|
|
1301
|
+
].filter(Boolean).join(" \xB7 ")),
|
|
1302
|
+
registration.rejection_message ? h("span", null, `Alasan: ${registration.rejection_message}`) : null
|
|
1303
|
+
),
|
|
1304
|
+
rowActions ? h("div", { className: "kumpul-plan-live-row-actions" }, ...rowActions(registration)) : null
|
|
1305
|
+
))
|
|
1306
|
+
);
|
|
1307
|
+
}
|
|
1308
|
+
function LivePlanWorkflow({ plan, props }) {
|
|
1309
|
+
const page = props.kumpulPage || {};
|
|
1310
|
+
const occurrence = plan.occurrence || {};
|
|
1311
|
+
const options = list(occurrence.option_groups_snapshot);
|
|
1312
|
+
const openedIds = new Set(list(occurrence.opened_option_ids_snapshot));
|
|
1313
|
+
const openedOptions = options.filter((option) => openedIds.has(option.product_option_id));
|
|
1314
|
+
const invitations = list(page.invitations);
|
|
1315
|
+
const privateInvitations = invitations.filter((invitation) => invitation.channel !== "public");
|
|
1316
|
+
const registrations = list(page.registrations);
|
|
1317
|
+
const activeRegistrations = registrations.filter((registration) => registration.registration_status === "RSVP_CONFIRMED");
|
|
1318
|
+
const paidRegistrations = activeRegistrations.filter((registration) => registration.payment_status === "PAID");
|
|
1319
|
+
const operation = page.operation;
|
|
1320
|
+
const stepIndex = gatheringWorkflowSteps.findIndex((step) => step.key === plan.workflow_step);
|
|
1321
|
+
const finished = stepIndex < 0;
|
|
1322
|
+
const currentIndex = finished ? gatheringWorkflowSteps.length - 1 : stepIndex;
|
|
1323
|
+
const has = (action) => list(page.actions).includes(action);
|
|
1324
|
+
const button = (action, label, extra = {}, className = "kumpul-plan-sim-primary") => h("button", {
|
|
1325
|
+
type: "button",
|
|
1326
|
+
className,
|
|
1327
|
+
disabled: !intentEnabled(props, action),
|
|
1328
|
+
...intentAttributes(action, plan.key, extra)
|
|
1329
|
+
}, label);
|
|
1330
|
+
const minMax = `min. ${Number(occurrence.min_attendees) || 0} \xB7 maks. ${Number(occurrence.max_attendees) || 0}`;
|
|
1331
|
+
const publicLink = plan.invite_policy === "OPEN" && plan.public_invitation_href ? h(
|
|
1332
|
+
"p",
|
|
1333
|
+
{ className: "kumpul-plan-live-public" },
|
|
1334
|
+
"Undangan terbuka: ",
|
|
1335
|
+
h("a", { href: plan.public_invitation_href }, "Buka halaman undangan"),
|
|
1336
|
+
" \u2014 bagikan tautan halaman tersebut ke calon peserta."
|
|
1337
|
+
) : null;
|
|
1338
|
+
const planPanel = (editable) => editable && has("gathering.plan.save") ? h(
|
|
1339
|
+
"div",
|
|
1340
|
+
{ "data-bagdja-scope": "" },
|
|
1341
|
+
h("p", { className: "kumpul-plan-sim-help" }, "Tetapkan akses undangan, tenggat, tanggal acara, dan pilihan produk yang dibuka untuk peserta."),
|
|
1342
|
+
h(
|
|
1343
|
+
"div",
|
|
1344
|
+
{ className: "kumpul-plan-sim-form" },
|
|
1345
|
+
h(
|
|
1346
|
+
"label",
|
|
1347
|
+
null,
|
|
1348
|
+
"Nama rencana",
|
|
1349
|
+
h("input", { type: "text", required: true, minLength: 3, maxLength: 255, defaultValue: text(plan.title), "data-bagdja-field": "title" })
|
|
1350
|
+
),
|
|
1351
|
+
h(
|
|
1352
|
+
"label",
|
|
1353
|
+
null,
|
|
1354
|
+
"Akses peserta",
|
|
1355
|
+
h(
|
|
1356
|
+
"select",
|
|
1357
|
+
{ defaultValue: plan.invite_policy === "INVITE_ONLY" ? "INVITE_ONLY" : "OPEN", "data-bagdja-field": "invitePolicy" },
|
|
1358
|
+
h("option", { value: "OPEN" }, "Terbuka"),
|
|
1359
|
+
h("option", { value: "INVITE_ONLY" }, "Khusus undangan")
|
|
1360
|
+
)
|
|
1361
|
+
)
|
|
1362
|
+
),
|
|
1363
|
+
h(
|
|
1364
|
+
"div",
|
|
1365
|
+
{ className: "kumpul-plan-sim-form kumpul-plan-live-dates" },
|
|
1366
|
+
...[
|
|
1367
|
+
["rsvpCloseAt", "Batas reservasi", occurrence.rsvp_close_at],
|
|
1368
|
+
["paymentDueAt", "Batas pembayaran", occurrence.payment_deadline],
|
|
1369
|
+
["scheduledAt", "Tanggal acara", occurrence.final_schedule]
|
|
1370
|
+
].map(([field, label, value]) => h(
|
|
1371
|
+
"label",
|
|
1372
|
+
{ key: field },
|
|
1373
|
+
`${label} (WIB)`,
|
|
1374
|
+
h("input", { type: "datetime-local", defaultValue: jakartaInputValue(value), "data-bagdja-field": field })
|
|
1375
|
+
))
|
|
1376
|
+
),
|
|
1377
|
+
h(
|
|
1378
|
+
"fieldset",
|
|
1379
|
+
{ className: "kumpul-plan-sim-options" },
|
|
1380
|
+
h("legend", null, "Pilihan dari produk yang dibuka"),
|
|
1381
|
+
options.length ? options.map((option) => h(
|
|
1382
|
+
"label",
|
|
1383
|
+
{ key: option.product_option_id, className: "kumpul-plan-sim-option" },
|
|
1384
|
+
h("input", { type: "checkbox", value: option.product_option_id, defaultChecked: openedIds.has(option.product_option_id), "data-bagdja-field": "optionKeys" }),
|
|
1385
|
+
h(
|
|
1386
|
+
"span",
|
|
1387
|
+
null,
|
|
1388
|
+
h("strong", null, `${text(option.option_group_key, "Pilihan")} \xB7 ${text(option.label)}`),
|
|
1389
|
+
option.venue_location || option.description ? h("small", null, [option.venue_location, option.description].filter(Boolean).join(" \xB7 ")) : null
|
|
1390
|
+
)
|
|
1391
|
+
)) : h("p", null, "Produk ini tidak memiliki pilihan.")
|
|
1392
|
+
),
|
|
1393
|
+
h(
|
|
1394
|
+
"div",
|
|
1395
|
+
{ className: "kumpul-plan-sim-actions" },
|
|
1396
|
+
button("gathering.plan.save", "Simpan", {}, "kumpul-plan-sim-secondary"),
|
|
1397
|
+
button("gathering.plan.save", "Submit & lanjut buat undangan", { "data-bagdja-submit": "true" })
|
|
1398
|
+
)
|
|
1399
|
+
) : h(PlanSummaryFields, { plan, openedOptions });
|
|
1400
|
+
const invitationsPanel = (editable) => h(
|
|
1401
|
+
"div",
|
|
1402
|
+
null,
|
|
1403
|
+
h("p", { className: "kumpul-plan-sim-help" }, plan.invite_policy === "INVITE_ONLY" ? "Rencana khusus undangan: tambahkan calon peserta lewat email atau WhatsApp, lalu kirim undangan." : "Rencana terbuka: undangan publik dibuat saat undangan dikirim, lalu siapa pun dengan tautan bisa RSVP."),
|
|
1404
|
+
publicLink,
|
|
1405
|
+
editable && has("gathering.invitation.add") ? h(
|
|
1406
|
+
"div",
|
|
1407
|
+
{ className: "kumpul-plan-sim-invite-form", "data-bagdja-scope": "" },
|
|
1408
|
+
h("label", null, "Nama calon peserta", h("input", { type: "text", maxLength: 120, placeholder: "Nama peserta", "data-bagdja-field": "invitee.name" })),
|
|
1409
|
+
h("label", null, "Email", h("input", { type: "email", maxLength: 254, placeholder: "nama@email.com", "data-bagdja-field": "invitee.email" })),
|
|
1410
|
+
h("label", null, "WhatsApp", h("input", { type: "tel", maxLength: 20, placeholder: "+628123456789", "data-bagdja-field": "invitee.whatsapp" })),
|
|
1411
|
+
button("gathering.invitation.add", "Tambah peserta", {}, "")
|
|
1412
|
+
) : null,
|
|
1413
|
+
privateInvitations.length ? h(
|
|
1414
|
+
"ul",
|
|
1415
|
+
{ className: "kumpul-plan-live-people" },
|
|
1416
|
+
...privateInvitations.map((invitation) => h(
|
|
1417
|
+
"li",
|
|
1418
|
+
{ key: invitation.key, className: "kumpul-plan-sim-person" },
|
|
1419
|
+
h(
|
|
1420
|
+
"div",
|
|
1421
|
+
{ className: "kumpul-plan-sim-person-heading" },
|
|
1422
|
+
h("strong", null, text(invitation.name, "Peserta")),
|
|
1423
|
+
h("span", null, `${invitationChannels[invitation.channel] || "Undangan"} \xB7 ${text(invitation.status_label)}`)
|
|
1424
|
+
),
|
|
1425
|
+
h(
|
|
1426
|
+
"div",
|
|
1427
|
+
{ className: "kumpul-plan-live-row-actions" },
|
|
1428
|
+
invitation.invite_href ? h("a", { href: invitation.invite_href }, "Lihat undangan") : null,
|
|
1429
|
+
editable && invitation.can_revoke && has("gathering.invitation.revoke") ? h("button", {
|
|
1430
|
+
type: "button",
|
|
1431
|
+
disabled: !intentEnabled(props, "gathering.invitation.revoke"),
|
|
1432
|
+
...intentAttributes("gathering.invitation.revoke", plan.key, { "data-bagdja-target": invitation.key })
|
|
1433
|
+
}, "Cabut") : null
|
|
1434
|
+
)
|
|
1435
|
+
))
|
|
1436
|
+
) : plan.invite_policy === "INVITE_ONLY" ? h("p", { className: "kumpul-plan-sim-help" }, "Belum ada calon peserta.") : null,
|
|
1437
|
+
h(PlanOperationNotice, { operation, kinds: ["INVITATION_DISPATCH", "INVITATION_REVOCATION"] }),
|
|
1438
|
+
editable && has("gathering.invitations.submit") ? h("div", { className: "kumpul-plan-sim-actions" }, button("gathering.invitations.submit", "Kirim undangan")) : null
|
|
1439
|
+
);
|
|
1440
|
+
const confirmationPanel = (editable) => {
|
|
1441
|
+
const canReject = editable && has("gathering.registrations.reject");
|
|
1442
|
+
return h(
|
|
1443
|
+
"div",
|
|
1444
|
+
{ "data-bagdja-scope": "" },
|
|
1445
|
+
h("p", { className: "kumpul-plan-sim-help" }, `Peserta hadir ${activeRegistrations.length} (${minMax}). Jumlah harus memenuhi batas produk sebelum RSVP ditutup.`),
|
|
1446
|
+
editable ? publicLink : null,
|
|
1447
|
+
h(PlanPeopleList, {
|
|
1448
|
+
registrations,
|
|
1449
|
+
props,
|
|
1450
|
+
selectAction: "gathering.registrations.reject",
|
|
1451
|
+
selectable: (registration) => canReject && registration.can_reject
|
|
1452
|
+
}),
|
|
1453
|
+
canReject ? h(
|
|
1454
|
+
"label",
|
|
1455
|
+
{ className: "kumpul-plan-live-reason" },
|
|
1456
|
+
"Alasan penolakan untuk peserta terpilih",
|
|
1457
|
+
h("textarea", { rows: 2, maxLength: 2e3, "data-bagdja-field": "message" })
|
|
1458
|
+
) : null,
|
|
1459
|
+
editable && (canReject || has("gathering.reservations.confirm")) ? h(
|
|
1460
|
+
"div",
|
|
1461
|
+
{ className: "kumpul-plan-sim-actions" },
|
|
1462
|
+
canReject ? button("gathering.registrations.reject", "Tolak peserta terpilih", {}, "kumpul-plan-sim-secondary") : null,
|
|
1463
|
+
has("gathering.reservations.confirm") ? button("gathering.reservations.confirm", "Tutup RSVP & buka pembayaran") : null
|
|
1464
|
+
) : null
|
|
1465
|
+
);
|
|
1466
|
+
};
|
|
1467
|
+
const paymentPanel = (editable) => {
|
|
1468
|
+
const canCheckout = editable && has("gathering.registrations.checkout");
|
|
1469
|
+
const groups = [...new Set(openedOptions.map((option) => text(option.option_group_key, "Pilihan")))];
|
|
1470
|
+
const deposit = Number(occurrence.deposit_amount_per_seat) || 0;
|
|
1471
|
+
return h(
|
|
1472
|
+
"div",
|
|
1473
|
+
{ "data-bagdja-scope": "" },
|
|
1474
|
+
h(
|
|
1475
|
+
"p",
|
|
1476
|
+
{ className: "kumpul-plan-sim-help" },
|
|
1477
|
+
`Peserta lunas ${paidRegistrations.length} dari ${activeRegistrations.length} (${minMax}).`,
|
|
1478
|
+
deposit ? ` DP ${formatCurrency(deposit * paidRegistrations.length)} dicairkan ke penyelenggara saat acara dikonfirmasi.` : ""
|
|
1479
|
+
),
|
|
1480
|
+
h(PlanOperationNotice, { operation, kinds: ["INVOICE_ISSUANCE"] }),
|
|
1481
|
+
h(PlanPeopleList, {
|
|
1482
|
+
registrations: activeRegistrations,
|
|
1483
|
+
props,
|
|
1484
|
+
selectAction: "gathering.registrations.checkout",
|
|
1485
|
+
selectable: (registration) => canCheckout && registration.can_checkout,
|
|
1486
|
+
rowActions: editable ? (registration) => [
|
|
1487
|
+
registration.can_cancel_checkout && has("gathering.registration.cancel_checkout") ? h("button", {
|
|
1488
|
+
type: "button",
|
|
1489
|
+
key: "cancel",
|
|
1490
|
+
disabled: !intentEnabled(props, "gathering.registration.cancel_checkout"),
|
|
1491
|
+
...intentAttributes("gathering.registration.cancel_checkout", plan.key, { "data-bagdja-target": registration.key })
|
|
1492
|
+
}, "Batalkan checkout") : null,
|
|
1493
|
+
registration.can_refund && has("gathering.registration.refund") ? h("button", {
|
|
1494
|
+
type: "button",
|
|
1495
|
+
key: "refund",
|
|
1496
|
+
disabled: !intentEnabled(props, "gathering.registration.refund"),
|
|
1497
|
+
...intentAttributes("gathering.registration.refund", plan.key, { "data-bagdja-target": registration.key })
|
|
1498
|
+
}, "Refund") : null
|
|
1499
|
+
] : null
|
|
1500
|
+
}),
|
|
1501
|
+
editable && (canCheckout || has("gathering.invoices.resend")) ? h(
|
|
1502
|
+
"div",
|
|
1503
|
+
{ className: "kumpul-plan-sim-actions" },
|
|
1504
|
+
has("gathering.invoices.resend") ? button("gathering.invoices.resend", "Kirim ulang invoice", {}, "kumpul-plan-sim-secondary") : null,
|
|
1505
|
+
canCheckout ? button("gathering.registrations.checkout", "Bayarkan peserta terpilih", {}, "kumpul-plan-sim-secondary") : null
|
|
1506
|
+
) : null,
|
|
1507
|
+
h(
|
|
1508
|
+
"fieldset",
|
|
1509
|
+
{ className: "kumpul-plan-sim-options" },
|
|
1510
|
+
h("legend", null, "Opsi final gathering"),
|
|
1511
|
+
groups.length ? groups.map((group) => h(
|
|
1512
|
+
"div",
|
|
1513
|
+
{ key: group, className: "kumpul-plan-sim-final-group" },
|
|
1514
|
+
h("strong", null, group),
|
|
1515
|
+
...openedOptions.filter((option) => text(option.option_group_key, "Pilihan") === group).map((option) => {
|
|
1516
|
+
const votes = Number((occurrence.voting_results || {})[option.product_option_id]);
|
|
1517
|
+
const voteLabel = Number.isFinite(votes) ? ` \xB7 ${votes} suara` : "";
|
|
1518
|
+
return editable && has("gathering.event.confirm") ? h(
|
|
1519
|
+
"label",
|
|
1520
|
+
{ key: option.product_option_id },
|
|
1521
|
+
h("input", {
|
|
1522
|
+
type: "radio",
|
|
1523
|
+
name: `kumpul-final-${group}`,
|
|
1524
|
+
value: option.product_option_id,
|
|
1525
|
+
defaultChecked: option.is_final_selection === true,
|
|
1526
|
+
"data-bagdja-field": "optionKeys"
|
|
1527
|
+
}),
|
|
1528
|
+
`${text(option.label)}${voteLabel}`
|
|
1529
|
+
) : h(
|
|
1530
|
+
"p",
|
|
1531
|
+
{ key: option.product_option_id },
|
|
1532
|
+
`${text(option.label)}${option.is_final_selection ? " \xB7 opsi final" : ""}${voteLabel}`
|
|
1533
|
+
);
|
|
1534
|
+
})
|
|
1535
|
+
)) : h("p", null, "Tidak ada pilihan yang perlu ditetapkan.")
|
|
1536
|
+
),
|
|
1537
|
+
editable && has("gathering.event.confirm") ? h("div", { className: "kumpul-plan-sim-actions" }, button("gathering.event.confirm", "Konfirmasi acara")) : null
|
|
1538
|
+
);
|
|
1539
|
+
};
|
|
1540
|
+
const panels = [planPanel, invitationsPanel, confirmationPanel, paymentPanel];
|
|
1541
|
+
return h(
|
|
1542
|
+
"section",
|
|
1543
|
+
{
|
|
1544
|
+
className: "kumpul-plan-simulator kumpul-plan-live",
|
|
1545
|
+
"aria-label": "Tahapan gathering",
|
|
1546
|
+
"data-plan-live": "",
|
|
1547
|
+
"data-current-step": finished ? "DONE" : plan.workflow_step
|
|
1548
|
+
},
|
|
1549
|
+
h(
|
|
1550
|
+
"div",
|
|
1551
|
+
{ className: "kumpul-plan-simulator-heading" },
|
|
1552
|
+
h(
|
|
1553
|
+
"div",
|
|
1554
|
+
null,
|
|
1555
|
+
h("p", { className: "kumpul-eyebrow" }, "Kelola rencana"),
|
|
1556
|
+
h("h2", null, finished ? "Rencana selesai diproses" : `Tahap ${currentIndex + 1}: ${gatheringWorkflowSteps[currentIndex].label}`),
|
|
1557
|
+
h("p", null, "Klik tahap sebelumnya untuk melihat ringkasan yang sudah diisi.")
|
|
1558
|
+
)
|
|
1559
|
+
),
|
|
1560
|
+
h(
|
|
1561
|
+
"ol",
|
|
1562
|
+
{ className: "kumpul-plan-sim-steps", "aria-label": "Tahapan gathering" },
|
|
1563
|
+
...gatheringWorkflowSteps.map((step, index) => h(
|
|
1564
|
+
"li",
|
|
1565
|
+
{
|
|
1566
|
+
key: step.key,
|
|
1567
|
+
className: finished || index < currentIndex ? "is-complete" : index === currentIndex ? "is-current" : ""
|
|
1568
|
+
},
|
|
1569
|
+
h(
|
|
1570
|
+
"button",
|
|
1571
|
+
{
|
|
1572
|
+
type: "button",
|
|
1573
|
+
"data-plan-step-tab": step.key,
|
|
1574
|
+
"aria-current": index === currentIndex ? "step" : void 0,
|
|
1575
|
+
"aria-pressed": index === currentIndex ? "true" : "false",
|
|
1576
|
+
disabled: index > currentIndex
|
|
1577
|
+
},
|
|
1578
|
+
h("span", null, finished || index < currentIndex ? "\u2713" : String(index + 1)),
|
|
1579
|
+
h("span", null, step.label)
|
|
1580
|
+
)
|
|
1581
|
+
))
|
|
1582
|
+
),
|
|
1583
|
+
...gatheringWorkflowSteps.map((step, index) => {
|
|
1584
|
+
const editable = !finished && index === currentIndex;
|
|
1585
|
+
return h(
|
|
1586
|
+
"div",
|
|
1587
|
+
{
|
|
1588
|
+
key: step.key,
|
|
1589
|
+
className: "kumpul-plan-sim-panel",
|
|
1590
|
+
"data-plan-step-panel": step.key,
|
|
1591
|
+
hidden: index !== currentIndex
|
|
1592
|
+
},
|
|
1593
|
+
h("h3", null, `${index + 1}. ${step.label}`),
|
|
1594
|
+
index < currentIndex || finished ? h("p", { className: "kumpul-plan-live-readonly" }, "Ringkasan tahap yang sudah dilewati \u2014 tidak dapat diubah.") : null,
|
|
1595
|
+
panels[index](editable)
|
|
1596
|
+
);
|
|
1597
|
+
}),
|
|
1598
|
+
has("gathering.cancel") ? h(
|
|
1599
|
+
"details",
|
|
1600
|
+
{ className: "kumpul-plan-live-cancel", "data-bagdja-scope": "" },
|
|
1601
|
+
h("summary", null, "Batalkan acara"),
|
|
1602
|
+
h(
|
|
1603
|
+
"label",
|
|
1604
|
+
null,
|
|
1605
|
+
"Alasan pembatalan (opsional)",
|
|
1606
|
+
h("input", { type: "text", maxLength: 500, placeholder: "Dibatalkan oleh initiator", "data-bagdja-field": "reason" })
|
|
1607
|
+
),
|
|
1608
|
+
button("gathering.cancel", "Batalkan acara", {}, "kumpul-plan-live-danger")
|
|
1609
|
+
) : null
|
|
1610
|
+
);
|
|
1611
|
+
}
|
|
1177
1612
|
function GatheringPlanDetailSection({ props, section }) {
|
|
1178
1613
|
const sectionContent = section?.content || {};
|
|
1179
1614
|
const plan = props.kumpulPage && props.kumpulPage.plan || sectionContent.gatheringPlan || {};
|
|
@@ -1221,26 +1656,7 @@ function GatheringPlanDetailSection({ props, section }) {
|
|
|
1221
1656
|
"Preview desainer \xB7 data contoh saja. Status dan pengelolaan rencana dilakukan oleh host Bagdja."
|
|
1222
1657
|
) : null,
|
|
1223
1658
|
props.isPreview === true ? h(GatheringPlanSimulator, { plan, props }) : null,
|
|
1224
|
-
props.isPreview === true ? null : h(
|
|
1225
|
-
"section",
|
|
1226
|
-
{ className: "kumpul-plan-workflow", "aria-label": "Tahapan gathering" },
|
|
1227
|
-
h("p", { className: "kumpul-plan-current-step" }, "Tahap saat ini: ", h("strong", { "data-plan-current-step": "" }, currentStep)),
|
|
1228
|
-
h(
|
|
1229
|
-
"ol",
|
|
1230
|
-
null,
|
|
1231
|
-
...gatheringWorkflowSteps.map((step, index) => h(
|
|
1232
|
-
"li",
|
|
1233
|
-
{
|
|
1234
|
-
key: step.key,
|
|
1235
|
-
className: index < currentStepIndex ? "is-complete" : index === currentStepIndex ? "is-current" : "",
|
|
1236
|
-
"aria-current": index === currentStepIndex ? "step" : void 0
|
|
1237
|
-
},
|
|
1238
|
-
h("span", { className: "kumpul-plan-step-marker", "aria-hidden": "true" }, index < currentStepIndex ? "\u2713" : String(index + 1)),
|
|
1239
|
-
h("span", null, step.label)
|
|
1240
|
-
))
|
|
1241
|
-
),
|
|
1242
|
-
h("p", { className: "kumpul-plan-readonly" }, "Ringkasan ini hanya untuk melihat progres. Aksi rencana tersedia melalui host Bagdja.")
|
|
1243
|
-
),
|
|
1659
|
+
props.isPreview === true ? null : h(LivePlanWorkflow, { plan, props }),
|
|
1244
1660
|
h(
|
|
1245
1661
|
"div",
|
|
1246
1662
|
{ className: "kumpul-plan-layout" },
|
|
@@ -1312,7 +1728,7 @@ function GatheringPlanDetailSection({ props, section }) {
|
|
|
1312
1728
|
h("h2", null, "Status rencana"),
|
|
1313
1729
|
h("span", { className: "kumpul-transaction-status kumpul-transaction-status-info" }, workflowStatus),
|
|
1314
1730
|
h("p", null, "Tahap kerja \xB7 ", h("span", { "data-plan-aside-step": "" }, currentStep)),
|
|
1315
|
-
h("p", null, "Rencana gathering dikelola terpisah dari keranjang. Pembayaran peserta
|
|
1731
|
+
h("p", null, "Rencana gathering dikelola terpisah dari keranjang. Pembayaran peserta dibuka setelah RSVP ditutup di tahap Konfirmasi undangan."),
|
|
1316
1732
|
order.id ? h("p", { className: "kumpul-plan-order-ref" }, `Referensi pesanan \xB7 ${order.id}`) : null,
|
|
1317
1733
|
h("a", { className: "kumpul-plan-account-link", href: tenantPath(props, "/cart") }, "Kembali ke Keranjang")
|
|
1318
1734
|
)
|
|
@@ -1395,10 +1811,11 @@ function BillingSection({ props }) {
|
|
|
1395
1811
|
const title = text(isGathering ? invoice.gathering_title : invoice.productName, "Tagihan gathering");
|
|
1396
1812
|
const reference = isGathering ? `${text(invoice.invoice_id, "Invoice")} \xB7 ${text(invoice.attendee_name, "Peserta")}` : `${text(invoice.label, "Termin pembayaran")} \xB7 ${text(invoice.anchorStepName, text(invoice.orderId, "Pesanan"))}`;
|
|
1397
1813
|
const dueDate = invoice.payment_deadline || invoice.dueDate;
|
|
1814
|
+
const cardHref = isGathering ? invoice.detail_href : invoice.transaction_href;
|
|
1398
1815
|
return h(
|
|
1399
1816
|
"article",
|
|
1400
1817
|
{
|
|
1401
|
-
className: `kumpul-billing-card kumpul-billing-card-${status}`,
|
|
1818
|
+
className: `kumpul-billing-card kumpul-billing-card-${status}${cardHref ? " kumpul-billing-card-linked" : ""}`,
|
|
1402
1819
|
"data-billing-item": "",
|
|
1403
1820
|
"data-billing-status": status,
|
|
1404
1821
|
key: invoice.id || index
|
|
@@ -1410,7 +1827,7 @@ function BillingSection({ props }) {
|
|
|
1410
1827
|
"div",
|
|
1411
1828
|
null,
|
|
1412
1829
|
h("span", { className: "kumpul-billing-kind" }, isGathering ? "Tagihan gathering" : `Termin ${invoice.sequence || ""}`.trim()),
|
|
1413
|
-
h("h3", null, title),
|
|
1830
|
+
h("h3", null, cardHref ? h("a", { className: "kumpul-billing-card-link", href: cardHref }, title) : title),
|
|
1414
1831
|
h("p", null, reference)
|
|
1415
1832
|
),
|
|
1416
1833
|
h("span", { className: `kumpul-billing-status kumpul-billing-status-${statusInfo.tone}` }, statusInfo.label)
|
|
@@ -1898,7 +2315,8 @@ function CalendarSection({ props, section }) {
|
|
|
1898
2315
|
title: text(plan.title, "Rencana gathering"),
|
|
1899
2316
|
statusLabel: text(plan.status_label, calendarStatusLabels[plan.status] || "Status belum tersedia"),
|
|
1900
2317
|
event_date: plan.event_date,
|
|
1901
|
-
location: text(plan.event_location)
|
|
2318
|
+
location: text(plan.event_location),
|
|
2319
|
+
href: plan.detail_href
|
|
1902
2320
|
})),
|
|
1903
2321
|
...invitations.filter((invitation) => calendarDateKey(invitation.event_date)).map((invitation) => ({
|
|
1904
2322
|
id: invitation.id || invitation.plan_number,
|
|
@@ -1907,7 +2325,8 @@ function CalendarSection({ props, section }) {
|
|
|
1907
2325
|
title: text(invitation.gathering_title, "Undangan gathering"),
|
|
1908
2326
|
statusLabel: text(invitation.action_label, "Undangan diterima"),
|
|
1909
2327
|
event_date: invitation.event_date,
|
|
1910
|
-
location: text(invitation.event_location)
|
|
2328
|
+
location: text(invitation.event_location),
|
|
2329
|
+
href: invitation.detail_href
|
|
1911
2330
|
}))
|
|
1912
2331
|
].sort((left, right) => new Date(left.event_date).getTime() - new Date(right.event_date).getTime());
|
|
1913
2332
|
const initialMonth = calendarMonthKey(content.month, events[0]?.event_date);
|
|
@@ -2059,7 +2478,7 @@ function CalendarSection({ props, section }) {
|
|
|
2059
2478
|
...events.map((event, index) => h(
|
|
2060
2479
|
"article",
|
|
2061
2480
|
{
|
|
2062
|
-
className: `kumpul-calendar-event kumpul-calendar-event-${event.type}`,
|
|
2481
|
+
className: `kumpul-calendar-event kumpul-calendar-event-${event.type}${event.href ? " kumpul-calendar-event-linked" : ""}`,
|
|
2063
2482
|
"data-calendar-event": "",
|
|
2064
2483
|
"data-calendar-date": calendarDateKey(event.event_date),
|
|
2065
2484
|
hidden: calendarDateKey(event.event_date) !== selectedDate,
|
|
@@ -2070,7 +2489,7 @@ function CalendarSection({ props, section }) {
|
|
|
2070
2489
|
"div",
|
|
2071
2490
|
{ className: "kumpul-calendar-event-copy" },
|
|
2072
2491
|
h("span", { className: "kumpul-calendar-event-kind" }, event.typeLabel),
|
|
2073
|
-
h("h4", null, event.title),
|
|
2492
|
+
h("h4", null, event.href ? h("a", { className: "kumpul-calendar-event-link", href: event.href }, event.title) : event.title),
|
|
2074
2493
|
h("p", null, `${event.statusLabel}${event.location ? ` \xB7 ${event.location}` : ""}`)
|
|
2075
2494
|
)
|
|
2076
2495
|
)),
|
|
@@ -2500,11 +2919,11 @@ function styles(colors) {
|
|
|
2500
2919
|
@media(max-width:760px){.kumpul-cart-layout{grid-template-columns:1fr;gap:15px}.kumpul-cart-item{grid-template-columns:20px 52px minmax(0,1fr);gap:10px;padding:12px}.kumpul-cart-art{width:52px;height:52px;border-radius:12px;font-size:23px}.kumpul-cart-copy h2{font-size:11px}.kumpul-cart-item-controls{grid-column:3;min-width:0;width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px}.kumpul-cart-price{margin-right:auto;font-size:12px}.kumpul-cart-summary{position:static}.kumpul-cart-heading h1{font-size:32px}}
|
|
2501
2920
|
.kumpul-transactions{max-width:980px;margin:0 auto}.kumpul-transactions-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.kumpul-transactions-heading h1{margin:0;color:var(--kt-text);font-size:clamp(30px,4vw,42px);line-height:1.15;letter-spacing:-.04em}.kumpul-transactions-heading>div:first-child>p:last-child{margin:9px 0 0;color:var(--kt-muted);font-size:13px}.kumpul-transactions-total{padding:13px 16px;display:grid;gap:2px;border:1px solid var(--kt-border);border-radius:15px;background:var(--kt-surface)}.kumpul-transactions-total strong{font-size:21px;line-height:1.1}.kumpul-transactions-total span{color:var(--kt-muted);font-size:10px}.kumpul-transactions-preview-note{margin:20px 0 0;padding:11px 14px;border:1px solid var(--kt-border);border-radius:12px;background:var(--kt-surface);color:var(--kt-muted);font-size:11px}.kumpul-transactions-filters{margin:25px 0 22px;padding-bottom:7px;display:flex;gap:8px;overflow-x:auto;border-bottom:1px solid var(--kt-border);scrollbar-width:thin}.kumpul-transactions-filters button{padding:9px 12px;display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:11px 11px 0 0;background:transparent;color:var(--kt-muted);font:inherit;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer}.kumpul-transactions-filters button[aria-pressed=true]{border-color:var(--kt-border);border-bottom-color:var(--kt-surface);background:var(--kt-surface);color:var(--kt-accent)}.kumpul-transactions-filters button span{min-width:20px;height:20px;padding:2px 6px;display:grid;place-items:center;border-radius:99px;background:var(--kt-bg);color:var(--kt-muted);font-size:9px}.kumpul-transactions-list{display:grid;gap:12px}.kumpul-transaction-card{overflow:hidden;border:1px solid var(--kt-border);border-radius:16px;background:var(--kt-surface)}.kumpul-transaction-top{padding:13px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #e8f0f2}.kumpul-transaction-top>div{display:flex;align-items:center;gap:8px;color:var(--kt-muted);font-size:10px}.kumpul-transaction-ref{color:var(--kt-text);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:750}.kumpul-transaction-status{padding:6px 9px;flex:none;border-radius:99px;font-size:9px;font-weight:800}.kumpul-transaction-status-warning{background:#fff4da;color:#a15c00}.kumpul-transaction-status-info{background:#e8f2ff;color:#2563eb}.kumpul-transaction-status-success{background:#e5f7ef;color:#08734f}.kumpul-transaction-status-danger{background:#ffeded;color:#b91c1c}.kumpul-transaction-status-muted{background:#eef1f4;color:#64748b}.kumpul-transaction-body{padding:16px 18px;display:flex;align-items:center;justify-content:space-between;gap:20px}.kumpul-transaction-item{min-width:0;display:flex;align-items:center;gap:13px}.kumpul-transaction-art{width:58px;height:58px;flex:none;display:grid;place-items:center;border:1px solid var(--kt-border);border-radius:14px;background:var(--kt-bg);color:var(--kt-accent);font-size:26px}.kumpul-transaction-item>div{min-width:0}.kumpul-transaction-item h2{margin:0;font-size:13px}.kumpul-transaction-item p{margin:5px 0 0;color:var(--kt-muted);font-size:10px}.kumpul-transaction-total{flex:none;text-align:right}.kumpul-transaction-total span{display:block;color:var(--kt-muted);font-size:10px}.kumpul-transaction-total strong{display:block;margin-top:3px;font-size:16px}.kumpul-transaction-actions{padding:0 18px 15px;display:flex;justify-content:flex-end;gap:8px}.kumpul-transaction-actions button{min-height:34px;padding:7px 11px;border:1px solid var(--kt-border);border-radius:10px;background:var(--kt-surface);color:var(--kt-text);font:inherit;font-size:9px;font-weight:750;opacity:.62;cursor:not-allowed}.kumpul-transaction-actions button:disabled{opacity:.62}.kumpul-transactions-empty{margin:0;padding:32px 18px;border:1px dashed var(--kt-border);border-radius:15px;color:var(--kt-muted);font-size:12px;text-align:center}
|
|
2502
2921
|
@media(max-width:700px){.kumpul-transactions-heading{align-items:flex-start;flex-direction:column;gap:16px}.kumpul-transactions-total{width:100%;padding:11px 13px}.kumpul-transactions-total strong{font-size:18px}.kumpul-transactions-filters{margin-top:20px}.kumpul-transaction-top{align-items:flex-start;padding:12px 14px}.kumpul-transaction-top>div{flex-wrap:wrap;gap:5px;font-size:9px}.kumpul-transaction-status{max-width:120px;white-space:normal;text-align:center}.kumpul-transaction-body{align-items:flex-start;padding:14px;gap:10px}.kumpul-transaction-art{width:44px;height:44px;border-radius:12px;font-size:20px}.kumpul-transaction-item{gap:9px}.kumpul-transaction-item h2{font-size:11px}.kumpul-transaction-total strong{font-size:13px}.kumpul-transaction-actions{padding:0 14px 13px;flex-wrap:wrap}.kumpul-transaction-actions button,.kumpul-transaction-actions .kumpul-transaction-action-link{flex:1;padding:7px 8px;font-size:8px}}
|
|
2503
|
-
.kumpul-billing{max-width:980px;margin:0 auto}.kumpul-billing-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.kumpul-billing-heading h1{margin:0;color:var(--kt-text);font-size:clamp(30px,4vw,42px);line-height:1.15;letter-spacing:-.04em}.kumpul-billing-description{margin:9px 0 0;color:var(--kt-muted);font-size:13px}.kumpul-billing-summary{display:flex;gap:10px}.kumpul-billing-summary-card{min-width:132px;padding:13px 16px;display:grid;gap:2px;border:1px solid var(--kt-border);border-radius:15px;background:var(--kt-surface)}.kumpul-billing-summary-card strong{font-size:21px;line-height:1.1}.kumpul-billing-summary-card span{color:var(--kt-muted);font-size:10px}.kumpul-billing-preview-note{margin:20px 0 0;padding:11px 14px;border:1px solid var(--kt-border);border-radius:12px;background:var(--kt-surface);color:var(--kt-muted);font-size:11px}.kumpul-billing-filters{margin:25px 0 22px;padding-bottom:7px;display:flex;gap:8px;overflow-x:auto;border-bottom:1px solid var(--kt-border);scrollbar-width:thin}.kumpul-billing-filters button{padding:9px 12px;display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:11px 11px 0 0;background:transparent;color:var(--kt-muted);font:inherit;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer}.kumpul-billing-filters button[aria-pressed=true]{border-color:var(--kt-border);border-bottom-color:var(--kt-surface);background:var(--kt-surface);color:var(--kt-accent)}.kumpul-billing-filters button span{min-width:20px;height:20px;padding:2px 6px;display:grid;place-items:center;border-radius:99px;background:var(--kt-bg);color:var(--kt-muted);font-size:9px}.kumpul-billing-results-heading{margin-bottom:12px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.kumpul-billing-results-heading h2{margin:0;font-size:16px}.kumpul-billing-results-heading span{color:var(--kt-muted);font-size:11px}.kumpul-billing-list{display:grid;gap:12px}.kumpul-billing-card{overflow:hidden;border:1px solid var(--kt-border);border-radius:16px;background:var(--kt-surface)}.kumpul-billing-card-top{padding:17px 19px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid #e8f0f2}.kumpul-billing-kind{color:var(--kt-accent);font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.kumpul-billing-card h3{margin:4px 0 0;font-size:14px}.kumpul-billing-card-top p{margin:5px 0 0;color:var(--kt-muted);font-size:10px}.kumpul-billing-status{padding:6px 9px;flex:none;border-radius:99px;font-size:9px;font-weight:800}.kumpul-billing-status-warning{background:#fff4da;color:#a15c00}.kumpul-billing-status-success{background:#e5f7ef;color:#08734f}.kumpul-billing-status-muted{background:#eef1f4;color:#64748b}.kumpul-billing-card-bottom{padding:14px 19px;display:flex;align-items:center;justify-content:space-between;gap:16px}.kumpul-billing-card-bottom strong{font-size:17px;color:var(--kt-accent)}.kumpul-billing-card-bottom p{margin:4px 0 0;color:var(--kt-muted);font-size:10px}.kumpul-billing-action{min-height:36px;padding:8px 13px;border:0;border-radius:10px;background:var(--kt-accent);color:#fff;font:inherit;font-size:10px;font-weight:750;opacity:.62;cursor:not-allowed}.kumpul-billing-empty{margin:0;padding:32px 18px;border:1px dashed var(--kt-border);border-radius:15px;color:var(--kt-muted);font-size:12px;text-align:center}
|
|
2922
|
+
.kumpul-billing{max-width:980px;margin:0 auto}.kumpul-billing-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.kumpul-billing-heading h1{margin:0;color:var(--kt-text);font-size:clamp(30px,4vw,42px);line-height:1.15;letter-spacing:-.04em}.kumpul-billing-description{margin:9px 0 0;color:var(--kt-muted);font-size:13px}.kumpul-billing-summary{display:flex;gap:10px}.kumpul-billing-summary-card{min-width:132px;padding:13px 16px;display:grid;gap:2px;border:1px solid var(--kt-border);border-radius:15px;background:var(--kt-surface)}.kumpul-billing-summary-card strong{font-size:21px;line-height:1.1}.kumpul-billing-summary-card span{color:var(--kt-muted);font-size:10px}.kumpul-billing-preview-note{margin:20px 0 0;padding:11px 14px;border:1px solid var(--kt-border);border-radius:12px;background:var(--kt-surface);color:var(--kt-muted);font-size:11px}.kumpul-billing-filters{margin:25px 0 22px;padding-bottom:7px;display:flex;gap:8px;overflow-x:auto;border-bottom:1px solid var(--kt-border);scrollbar-width:thin}.kumpul-billing-filters button{padding:9px 12px;display:inline-flex;align-items:center;gap:8px;border:1px solid transparent;border-radius:11px 11px 0 0;background:transparent;color:var(--kt-muted);font:inherit;font-size:11px;font-weight:700;white-space:nowrap;cursor:pointer}.kumpul-billing-filters button[aria-pressed=true]{border-color:var(--kt-border);border-bottom-color:var(--kt-surface);background:var(--kt-surface);color:var(--kt-accent)}.kumpul-billing-filters button span{min-width:20px;height:20px;padding:2px 6px;display:grid;place-items:center;border-radius:99px;background:var(--kt-bg);color:var(--kt-muted);font-size:9px}.kumpul-billing-results-heading{margin-bottom:12px;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.kumpul-billing-results-heading h2{margin:0;font-size:16px}.kumpul-billing-results-heading span{color:var(--kt-muted);font-size:11px}.kumpul-billing-list{display:grid;gap:12px}.kumpul-billing-card{overflow:hidden;border:1px solid var(--kt-border);border-radius:16px;background:var(--kt-surface)}.kumpul-billing-card-top{padding:17px 19px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid #e8f0f2}.kumpul-billing-kind{color:var(--kt-accent);font-size:9px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.kumpul-billing-card h3{margin:4px 0 0;font-size:14px}.kumpul-billing-card-linked{position:relative;transition:border-color .15s,box-shadow .15s}.kumpul-billing-card-linked:hover{border-color:var(--kt-accent);box-shadow:0 8px 22px rgba(15,23,42,.06)}.kumpul-billing-card-linked:focus-within{border-color:var(--kt-accent)}.kumpul-billing-card-link{color:inherit;text-decoration:none;outline:none}.kumpul-billing-card-link::after{content:'';position:absolute;inset:0;z-index:0;border-radius:inherit}.kumpul-billing-card-linked .kumpul-billing-status,.kumpul-billing-card-linked .kumpul-billing-action{position:relative;z-index:1}.kumpul-billing-card-top p{margin:5px 0 0;color:var(--kt-muted);font-size:10px}.kumpul-billing-status{padding:6px 9px;flex:none;border-radius:99px;font-size:9px;font-weight:800}.kumpul-billing-status-warning{background:#fff4da;color:#a15c00}.kumpul-billing-status-success{background:#e5f7ef;color:#08734f}.kumpul-billing-status-muted{background:#eef1f4;color:#64748b}.kumpul-billing-card-bottom{padding:14px 19px;display:flex;align-items:center;justify-content:space-between;gap:16px}.kumpul-billing-card-bottom strong{font-size:17px;color:var(--kt-accent)}.kumpul-billing-card-bottom p{margin:4px 0 0;color:var(--kt-muted);font-size:10px}.kumpul-billing-action{min-height:36px;padding:8px 13px;border:0;border-radius:10px;background:var(--kt-accent);color:#fff;font:inherit;font-size:10px;font-weight:750;opacity:.62;cursor:not-allowed}.kumpul-billing-empty{margin:0;padding:32px 18px;border:1px dashed var(--kt-border);border-radius:15px;color:var(--kt-muted);font-size:12px;text-align:center}
|
|
2504
2923
|
@media(max-width:700px){.kumpul-billing-heading{align-items:flex-start;flex-direction:column;gap:16px}.kumpul-billing-summary{width:100%}.kumpul-billing-summary-card{min-width:0;flex:1;padding:11px 13px}.kumpul-billing-summary-card strong{font-size:18px}.kumpul-billing-filters{margin-top:20px}.kumpul-billing-card-top{padding:15px;gap:10px}.kumpul-billing-card h3{font-size:13px}.kumpul-billing-status{max-width:120px;white-space:normal;text-align:center}.kumpul-billing-card-bottom{padding:13px 15px}.kumpul-billing-card-bottom strong{font-size:15px}}
|
|
2505
2924
|
.kumpul-calendar-agenda:not([open]){display:none}.kumpul-calendar-agenda[open]{position:fixed;inset:50% auto auto 50%;z-index:10;width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 48px);margin:0;padding:0;display:flex;flex-direction:column;transform:translate(-50%,-50%);overflow:hidden;border:1px solid var(--kt-border);border-radius:22px;background:var(--kt-bg);color:var(--kt-text);box-shadow:0 24px 80px #0f172a45}.kumpul-calendar-agenda::backdrop{background:rgb(15 23 42 / 45%);backdrop-filter:blur(2px)}.kumpul-calendar-agenda-handle{display:none}.kumpul-calendar-agenda-heading{padding:22px 24px 16px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid var(--kt-border)}.kumpul-calendar-agenda-heading .kumpul-eyebrow{margin:0 0 4px}.kumpul-calendar-agenda-heading h2{margin:0;font-size:20px;text-transform:capitalize}.kumpul-calendar-agenda-close{width:36px;height:36px;flex:none;border:1px solid var(--kt-border);border-radius:50%;background:var(--kt-surface);color:var(--kt-text);font:inherit;font-size:22px;line-height:1;cursor:pointer}.kumpul-calendar-agenda-content{min-height:0;padding:18px 24px 24px;overflow:auto;overscroll-behavior:contain}.kumpul-calendar-agenda-list{display:grid;gap:10px}.kumpul-calendar-empty{margin:0;padding:18px;border:1px dashed var(--kt-border);border-radius:14px;color:var(--kt-muted);font-size:13px;text-align:center}
|
|
2506
2925
|
@media(max-width:620px){.kumpul-calendar-agenda[open]{inset:auto 0 0;width:100%;max-width:none;max-height:min(84dvh,720px);padding-bottom:env(safe-area-inset-bottom);transform:none;border-right:0;border-bottom:0;border-left:0;border-radius:22px 22px 0 0}.kumpul-calendar-agenda-handle{width:38px;height:4px;margin:10px auto 0;display:block;border-radius:99px;background:#cbd5e1}.kumpul-calendar-agenda-heading{padding:14px 20px 14px}.kumpul-calendar-agenda-content{padding:16px 20px 22px}.kumpul-calendar-agenda-close{width:34px;height:34px}}
|
|
2507
|
-
.kumpul-calendar-month-toolbar{margin:22px 0 14px;padding:17px 19px;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--kt-border);border-radius:17px;background:var(--kt-surface)}.kumpul-calendar-month-title h2{margin:0;font-size:20px;line-height:1.2;text-transform:capitalize}.kumpul-calendar-month-title p{margin:5px 0 0;color:var(--kt-muted);font-size:11px}.kumpul-calendar-month-actions{display:flex;align-items:center;gap:7px}.kumpul-calendar-month-actions button{min-width:38px;height:38px;padding:7px 11px;border:1px solid var(--kt-border);border-radius:11px;background:var(--kt-surface);color:var(--kt-text);font:inherit;font-size:12px;font-weight:700;cursor:pointer}.kumpul-calendar-month-actions button[data-calendar-previous],.kumpul-calendar-month-actions button[data-calendar-next]{font-size:22px;line-height:1}.kumpul-calendar-month-view{overflow:hidden;border:1px solid var(--kt-border);border-radius:17px;background:var(--kt-surface)}.kumpul-calendar-weekdays,.kumpul-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.kumpul-calendar-weekdays{border-bottom:1px solid var(--kt-border);background:#f8fbfc}.kumpul-calendar-weekdays span{padding:10px 6px;color:var(--kt-muted);font-size:10px;font-weight:750;text-align:center}.kumpul-calendar-day{position:relative;min-width:0;min-height:77px;padding:9px;display:flex;align-items:flex-start;justify-content:space-between;gap:4px;border:0;border-right:1px solid #e8f0f2;border-bottom:1px solid #e8f0f2;background:var(--kt-surface);color:var(--kt-text);font:inherit;text-align:left;cursor:pointer}.kumpul-calendar-day:nth-child(7n){border-right:0}.kumpul-calendar-day:nth-last-child(-n+7){border-bottom:0}.kumpul-calendar-day:hover{background:#f4fafb}.kumpul-calendar-day[aria-pressed=true]{background:#e6f4f6;box-shadow:inset 0 0 0 2px var(--kt-accent)}.kumpul-calendar-day[data-outside-month=true]{color:#a7b3bd;background:#fbfcfd}.kumpul-calendar-day>span{font-size:11px;font-weight:700}.kumpul-calendar-day small{min-width:19px;height:19px;padding:2px 5px;display:grid;place-items:center;border-radius:999px;background:var(--kt-accent);color:#fff;font-size:9px;font-weight:800}.kumpul-calendar-day:focus-visible,.kumpul-calendar-month-actions button:focus-visible{position:relative;z-index:1;outline:3px solid var(--kt-success);outline-offset:-3px}.kumpul-calendar-agenda{margin-top:24px}.kumpul-calendar-agenda>h3{margin:0 0 12px;font-size:16px;text-transform:capitalize}.kumpul-calendar-event{padding:14px 16px;display:grid;grid-template-columns:76px 1fr;align-items:start;gap:14px;border:1px solid var(--kt-border);border-left:4px solid var(--kt-accent);border-radius:14px;background:var(--kt-surface)}.kumpul-calendar-event[hidden]{display:none}.kumpul-calendar-event-invitation{border-left-color:var(--kt-success)}.kumpul-calendar-event-time{padding-top:2px;color:var(--kt-accent);font-size:11px;font-weight:800}.kumpul-calendar-event-copy{min-width:0}.kumpul-calendar-event-kind{color:var(--kt-muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.kumpul-calendar-event-copy h4{margin:3px 0 0;font-size:13px}.kumpul-calendar-event-copy p{margin:4px 0 0;color:var(--kt-muted);font-size:10px}
|
|
2926
|
+
.kumpul-calendar-month-toolbar{margin:22px 0 14px;padding:17px 19px;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--kt-border);border-radius:17px;background:var(--kt-surface)}.kumpul-calendar-month-title h2{margin:0;font-size:20px;line-height:1.2;text-transform:capitalize}.kumpul-calendar-month-title p{margin:5px 0 0;color:var(--kt-muted);font-size:11px}.kumpul-calendar-month-actions{display:flex;align-items:center;gap:7px}.kumpul-calendar-month-actions button{min-width:38px;height:38px;padding:7px 11px;border:1px solid var(--kt-border);border-radius:11px;background:var(--kt-surface);color:var(--kt-text);font:inherit;font-size:12px;font-weight:700;cursor:pointer}.kumpul-calendar-month-actions button[data-calendar-previous],.kumpul-calendar-month-actions button[data-calendar-next]{font-size:22px;line-height:1}.kumpul-calendar-month-view{overflow:hidden;border:1px solid var(--kt-border);border-radius:17px;background:var(--kt-surface)}.kumpul-calendar-weekdays,.kumpul-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.kumpul-calendar-weekdays{border-bottom:1px solid var(--kt-border);background:#f8fbfc}.kumpul-calendar-weekdays span{padding:10px 6px;color:var(--kt-muted);font-size:10px;font-weight:750;text-align:center}.kumpul-calendar-day{position:relative;min-width:0;min-height:77px;padding:9px;display:flex;align-items:flex-start;justify-content:space-between;gap:4px;border:0;border-right:1px solid #e8f0f2;border-bottom:1px solid #e8f0f2;background:var(--kt-surface);color:var(--kt-text);font:inherit;text-align:left;cursor:pointer}.kumpul-calendar-day:nth-child(7n){border-right:0}.kumpul-calendar-day:nth-last-child(-n+7){border-bottom:0}.kumpul-calendar-day:hover{background:#f4fafb}.kumpul-calendar-day[aria-pressed=true]{background:#e6f4f6;box-shadow:inset 0 0 0 2px var(--kt-accent)}.kumpul-calendar-day[data-outside-month=true]{color:#a7b3bd;background:#fbfcfd}.kumpul-calendar-day>span{font-size:11px;font-weight:700}.kumpul-calendar-day small{min-width:19px;height:19px;padding:2px 5px;display:grid;place-items:center;border-radius:999px;background:var(--kt-accent);color:#fff;font-size:9px;font-weight:800}.kumpul-calendar-day:focus-visible,.kumpul-calendar-month-actions button:focus-visible{position:relative;z-index:1;outline:3px solid var(--kt-success);outline-offset:-3px}.kumpul-calendar-agenda{margin-top:24px}.kumpul-calendar-agenda>h3{margin:0 0 12px;font-size:16px;text-transform:capitalize}.kumpul-calendar-event{padding:14px 16px;display:grid;grid-template-columns:76px 1fr;align-items:start;gap:14px;border:1px solid var(--kt-border);border-left:4px solid var(--kt-accent);border-radius:14px;background:var(--kt-surface)}.kumpul-calendar-event[hidden]{display:none}.kumpul-calendar-event-linked{position:relative;transition:border-color .15s,box-shadow .15s}.kumpul-calendar-event-linked:hover,.kumpul-calendar-event-linked:focus-within{border-color:var(--kt-accent);box-shadow:0 8px 22px rgba(15,23,42,.06)}.kumpul-calendar-event-link{color:inherit;text-decoration:none;outline:none}.kumpul-calendar-event-link::after{content:'';position:absolute;inset:0;border-radius:inherit}.kumpul-calendar-event-invitation{border-left-color:var(--kt-success)}.kumpul-calendar-event-time{padding-top:2px;color:var(--kt-accent);font-size:11px;font-weight:800}.kumpul-calendar-event-copy{min-width:0}.kumpul-calendar-event-kind{color:var(--kt-muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.kumpul-calendar-event-copy h4{margin:3px 0 0;font-size:13px}.kumpul-calendar-event-copy p{margin:4px 0 0;color:var(--kt-muted);font-size:10px}
|
|
2508
2927
|
@media(max-width:620px){.kumpul-calendar-month-toolbar{padding:13px;align-items:flex-start}.kumpul-calendar-month-title h2{font-size:17px}.kumpul-calendar-month-title p{max-width:170px;font-size:9px}.kumpul-calendar-month-actions{gap:4px}.kumpul-calendar-month-actions button{min-width:33px;height:34px;padding:5px 8px;font-size:10px}.kumpul-calendar-weekdays span{padding:8px 2px;font-size:9px}.kumpul-calendar-day{min-height:55px;padding:6px 5px}.kumpul-calendar-day>span{font-size:10px}.kumpul-calendar-day small{min-width:16px;height:16px;padding:1px 4px;font-size:8px}.kumpul-calendar-event{grid-template-columns:52px 1fr;gap:9px;padding:12px}.kumpul-calendar-event-time{font-size:10px}}
|
|
2509
2928
|
@media(max-width:620px){.kumpul-calendar-tabs{overflow-x:auto}.kumpul-calendar-tabs button{flex:none;white-space:nowrap}}
|
|
2510
2929
|
.kumpul-template{--kt-bg:${colors.background};--kt-surface:${colors.surface};--kt-text:${colors.text};--kt-muted:${colors.textMuted};--kt-accent:${colors.accent};--kt-hover:${colors.accentHover};--kt-border:${colors.border};--kt-success:${colors.success};--kt-warning:${colors.warning};min-height:100vh;background:var(--kt-bg);color:var(--kt-text);font:400 15px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
|
|
@@ -2542,7 +2961,7 @@ function styles(colors) {
|
|
|
2542
2961
|
.kumpul-footer{padding:26px 28px;display:flex;justify-content:space-between;gap:14px;border-top:1px solid var(--kt-border);color:var(--kt-muted);font-size:11px}.kumpul-footer strong{color:var(--kt-text)}.kumpul-mobile-dock{display:none}
|
|
2543
2962
|
.kumpul-detail-page{max-width:980px;margin:0 auto}.kumpul-detail-back{display:inline-block;margin-bottom:20px;color:var(--kt-accent);font-size:11px;font-weight:750}.kumpul-detail-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.kumpul-detail-heading h1{margin:0;color:var(--kt-text);font-size:clamp(28px,4vw,40px);line-height:1.15;letter-spacing:-.04em}.kumpul-detail-heading .kumpul-eyebrow{margin-bottom:8px}.kumpul-detail-heading>div>p:last-child{margin:8px 0 0;color:var(--kt-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.kumpul-detail-preview-note{margin:18px 0 0;padding:11px 14px;border:1px solid var(--kt-border);border-radius:12px;background:var(--kt-surface);color:var(--kt-muted);font-size:10px}.kumpul-detail-layout{margin-top:22px;display:grid;grid-template-columns:minmax(0,1fr) 310px;align-items:start;gap:18px}.kumpul-detail-main{display:grid;gap:14px}.kumpul-detail-card{min-width:0;padding:20px;border:1px solid var(--kt-border);border-radius:17px;background:var(--kt-surface)}.kumpul-detail-card h2{margin:0 0 16px;font-size:14px}.kumpul-detail-fields{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.kumpul-detail-fields>div{min-width:0}.kumpul-detail-fields dt,.kumpul-detail-totals dt{color:var(--kt-muted);font-size:9px}.kumpul-detail-fields dd,.kumpul-detail-totals dd{margin:4px 0 0;font-size:11px;font-weight:700;overflow-wrap:anywhere}.kumpul-detail-total{margin-top:20px;padding-top:16px;display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-top:1px solid var(--kt-border);color:var(--kt-muted);font-size:11px}.kumpul-detail-total strong{color:var(--kt-accent);font-size:22px}.kumpul-detail-aside{position:sticky;top:20px}.kumpul-detail-aside>p{margin:13px 0 0;color:var(--kt-muted);font-size:10px;line-height:1.6}.kumpul-detail-aside>button{width:100%;min-height:42px;margin-top:16px;padding:10px;border:0;border-radius:11px;background:var(--kt-accent);color:#fff;font:inherit;font-size:11px;font-weight:800;opacity:.55;cursor:not-allowed}.kumpul-detail-login-info{margin-top:15px;padding:13px;border-left:3px solid var(--kt-accent);background:var(--kt-bg)}.kumpul-detail-login-info h3{margin:0;font-size:11px}.kumpul-detail-login-info p{margin:7px 0 0;color:var(--kt-muted);font-size:10px;line-height:1.6}.kumpul-detail-items{display:grid}.kumpul-detail-item{padding:13px 0;display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:12px;border-top:1px solid var(--kt-border)}.kumpul-detail-item-art{width:48px;height:48px;display:grid;place-items:center;border:1px solid var(--kt-border);border-radius:13px;background:var(--kt-bg);color:var(--kt-accent);font-size:20px;font-weight:800}.kumpul-detail-item-copy{min-width:0}.kumpul-detail-item h3{margin:0;font-size:11px}.kumpul-detail-item p{margin:5px 0 0;color:var(--kt-muted);font-size:9px}.kumpul-detail-item>strong{font-size:10px;white-space:nowrap}.kumpul-detail-escrow-note{display:block;margin-top:5px;color:var(--kt-accent);font-size:8px;line-height:1.5}.kumpul-detail-address{margin:0;color:var(--kt-muted);font-size:11px;line-height:1.6}.kumpul-detail-totals{margin:0;display:grid;gap:12px}.kumpul-detail-totals>div{display:flex;justify-content:space-between;gap:12px}.kumpul-detail-totals dd{margin:0;text-align:right}.kumpul-detail-grand-total{padding-top:13px;border-top:1px solid var(--kt-border)}.kumpul-detail-grand-total dt{color:var(--kt-text);font-weight:800}.kumpul-detail-grand-total dd{color:var(--kt-accent);font-size:16px}.kumpul-detail-payment-fields{margin-top:17px;padding-top:14px;border-top:1px solid var(--kt-border)}.kumpul-detail-fields .kumpul-detail-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}.kumpul-detail-payment-note{padding:10px 12px;border:1px solid var(--kt-border);border-radius:11px;background:var(--kt-bg)}
|
|
2544
2963
|
.kumpul-plan-detail{max-width:980px;margin:0 auto}.kumpul-plan-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.kumpul-plan-heading h1{margin:0;color:var(--kt-text);font-size:clamp(28px,4vw,40px);line-height:1.15;letter-spacing:-.04em}.kumpul-plan-heading .kumpul-eyebrow{margin-bottom:8px}.kumpul-plan-number{margin:9px 0 0;color:var(--kt-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.kumpul-plan-workflow{margin-top:20px;padding:17px;border:1px solid var(--kt-border);border-radius:16px;background:var(--kt-surface)}.kumpul-plan-current-step{margin:0 0 14px;color:var(--kt-muted);font-size:10px}.kumpul-plan-current-step strong{color:var(--kt-text)}.kumpul-plan-workflow ol{margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none}.kumpul-plan-workflow li{min-width:0;padding:12px 9px 0;display:flex;align-items:center;gap:7px;border-top:2px solid var(--kt-border);color:var(--kt-muted);font-size:9px;font-weight:700}.kumpul-plan-workflow li.is-complete,.kumpul-plan-workflow li.is-current{border-color:var(--kt-accent);color:var(--kt-text)}.kumpul-plan-step-marker{width:21px;height:21px;flex:none;display:grid;place-items:center;border:1px solid var(--kt-border);border-radius:50%;font-size:9px}.kumpul-plan-workflow li.is-complete .kumpul-plan-step-marker,.kumpul-plan-workflow li.is-current .kumpul-plan-step-marker{border-color:var(--kt-accent);background:var(--kt-accent);color:#fff}.kumpul-plan-readonly{margin:12px 0 0;color:var(--kt-muted);font-size:9px;line-height:1.5}.kumpul-plan-layout{margin-top:16px;display:grid;grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px}.kumpul-plan-main{display:grid;gap:14px}.kumpul-plan-options{margin:0;padding:0;display:grid;list-style:none}.kumpul-plan-options li{padding:13px 0;border-top:1px solid var(--kt-border)}.kumpul-plan-option-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.kumpul-plan-option-group{color:var(--kt-muted);font-size:8px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.kumpul-plan-option-heading h3{margin:3px 0 0;font-size:11px}.kumpul-plan-options li>p{margin:6px 0 0;color:var(--kt-muted);font-size:9px;line-height:1.5}.kumpul-plan-final-option{padding:5px 8px;border:1px solid var(--kt-accent);border-radius:99px;color:var(--kt-accent);font-size:8px;font-weight:800;white-space:nowrap}.kumpul-plan-votes{display:inline-block;margin-top:8px;color:var(--kt-accent);font-size:9px;font-weight:750}.kumpul-plan-empty-options{margin:0;color:var(--kt-muted);font-size:10px}.kumpul-plan-aside>p{margin:13px 0 0;color:var(--kt-muted);font-size:10px;line-height:1.6}.kumpul-plan-order-ref{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:8px!important}.kumpul-plan-account-link{margin-top:16px;padding:10px 12px;display:block;border:1px solid var(--kt-border);border-radius:10px;color:var(--kt-accent);font-size:10px;font-weight:800;text-align:center}
|
|
2545
|
-
.kumpul-plan-simulator{margin-top:18px;padding:20px;border:1px solid var(--kt-border);border-radius:18px;background:var(--kt-surface);box-shadow:0 8px 26px #0f172a0a}.kumpul-plan-simulator-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.kumpul-plan-simulator-heading h2{margin:0;font-size:19px;letter-spacing:-.025em}.kumpul-plan-simulator-heading .kumpul-eyebrow{margin-bottom:7px}.kumpul-plan-simulator-heading>div>p:last-child{margin:7px 0 0;color:var(--kt-muted);font-size:10px;line-height:1.55}.kumpul-plan-simulation-badge{padding:6px 9px;flex:none;border-radius:99px;background:#e6f4f6;color:var(--kt-accent);font-size:8px;font-weight:800}.kumpul-plan-simulation-note{margin:15px 0;padding:10px 12px;border:1px solid var(--kt-border);border-radius:10px;background:var(--kt-bg);color:var(--kt-muted);font-size:9px;line-height:1.55}.kumpul-plan-sim-steps{margin:17px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none}.kumpul-plan-sim-steps li{min-width:0;border-top:2px solid var(--kt-border)}.kumpul-plan-sim-steps li.is-current,.kumpul-plan-sim-steps li.is-complete{border-color:var(--kt-accent)}.kumpul-plan-sim-steps button{width:100%;padding:10px 5px 4px;display:flex;align-items:center;gap:6px;border:0;background:none;color:var(--kt-muted);font:inherit;font-size:8px;font-weight:750;text-align:left}.kumpul-plan-sim-steps li.is-current button,.kumpul-plan-sim-steps li.is-complete button{color:var(--kt-text)}.kumpul-plan-sim-steps button:disabled{cursor:not-allowed;opacity:.65}.kumpul-plan-sim-steps button:not(:disabled){cursor:pointer}.kumpul-plan-sim-steps button>span:first-child{width:20px;height:20px;flex:none;display:grid;place-items:center;border:1px solid var(--kt-border);border-radius:50%;font-size:8px}.kumpul-plan-sim-steps li.is-current button>span:first-child,.kumpul-plan-sim-steps li.is-complete button>span:first-child{border-color:var(--kt-accent);background:var(--kt-accent);color:#fff}.kumpul-plan-sim-panel{margin-top:17px}.kumpul-plan-sim-panel[hidden],.kumpul-plan-sim-complete[hidden]{display:none}.kumpul-plan-sim-panel h3,.kumpul-plan-sim-complete h3{margin:0;font-size:15px}.kumpul-plan-sim-help{margin:6px 0 14px;color:var(--kt-muted);font-size:9px;line-height:1.5}.kumpul-plan-sim-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.kumpul-plan-sim-form label,.kumpul-plan-sim-invite-form label,.kumpul-plan-sim-person>label{min-width:0;display:grid;gap:5px;color:var(--kt-muted);font-size:9px;font-weight:700}.kumpul-plan-sim-form input,.kumpul-plan-sim-form select,.kumpul-plan-sim-invite-form input,.kumpul-plan-sim-invitees input,.kumpul-plan-sim-person select{width:100%;min-width:0;min-height:37px;padding:8px 9px;border:1px solid var(--kt-border);border-radius:9px;background:#fff;color:var(--kt-text);font:inherit;font-size:10px}.kumpul-plan-sim-options{min-width:0;margin:15px 0 0;padding:11px;border:1px solid var(--kt-border);border-radius:11px}.kumpul-plan-sim-options legend{padding:0 5px;color:var(--kt-text);font-size:10px;font-weight:800}.kumpul-plan-sim-option{margin:5px 10px 5px 0;display:inline-flex;align-items:center;gap:6px;color:var(--kt-muted);font-size:9px}.kumpul-plan-sim-option input{accent-color:var(--kt-accent)}.kumpul-plan-sim-actions{margin-top:15px;display:flex;justify-content:flex-end;gap:8px}.kumpul-plan-sim-actions button,.kumpul-plan-sim-invite-form button,.kumpul-plan-sim-invitees button,.kumpul-plan-sim-payment button,.kumpul-plan-sim-complete button{min-height:36px;padding:8px 12px;border:1px solid var(--kt-border);border-radius:9px;background:#fff;color:var(--kt-text);font:inherit;font-size:9px;font-weight:800;cursor:pointer}.kumpul-plan-sim-actions .kumpul-plan-sim-primary{border-color:var(--kt-accent);background:var(--kt-accent);color:#fff}.kumpul-plan-sim-actions .kumpul-plan-sim-secondary{color:var(--kt-accent)}.kumpul-plan-sim-error{margin:12px 0 0;color:#b91c1c;font-size:9px;font-weight:700}.kumpul-plan-sim-invite-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:9px}.kumpul-plan-sim-invitees{margin:12px 0 0;padding:0;display:grid;gap:7px;list-style:none}.kumpul-plan-sim-invitees li{display:flex;align-items:center;gap:8px}.kumpul-plan-sim-invitees li>div{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:8px}.kumpul-plan-sim-invitees button,.kumpul-plan-sim-payment button{min-height:33px;padding:7px 9px;color:var(--kt-accent)}.kumpul-plan-sim-participants,.kumpul-plan-sim-payments{display:grid;gap:9px}.kumpul-plan-sim-person{padding:12px;display:grid;grid-template-columns:minmax(0,1fr) 170px;align-items:center;gap:11px;border:1px solid var(--kt-border);border-radius:12px;background:var(--kt-bg)}.kumpul-plan-sim-person-heading{min-width:0;display:grid;gap:3px}.kumpul-plan-sim-person-heading strong{font-size:10px}.kumpul-plan-sim-person-heading span{overflow-wrap:anywhere;color:var(--kt-muted);font-size:8px}.kumpul-plan-sim-person-options{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.kumpul-plan-sim-payment{grid-template-columns:minmax(0,1fr) auto}.kumpul-plan-sim-payment[data-sim-paid=true]{border-color:var(--kt-success);background:#effaf5}.kumpul-plan-sim-final-group{margin:7px 0 0;padding:8px;border:1px solid var(--kt-border);border-radius:9px}.kumpul-plan-sim-final-group legend{padding:0 4px;font-size:9px;font-weight:800}.kumpul-plan-sim-final-group label{margin:5px 10px 5px 0;display:inline-flex;align-items:center;gap:6px;color:var(--kt-muted);font-size:9px}.kumpul-plan-sim-final-group input{accent-color:var(--kt-accent)}.kumpul-plan-sim-complete{margin-top:18px;padding:22px;border:1px solid #8bd1ae;border-radius:13px;background:#effaf5;text-align:center}.kumpul-plan-sim-complete>span{width:34px;height:34px;margin:0 auto 9px;display:grid;place-items:center;border-radius:50%;background:var(--kt-success);color:#fff;font-weight:900}.kumpul-plan-sim-complete p{margin:7px 0 13px;color:var(--kt-muted);font-size:9px;line-height:1.5}
|
|
2964
|
+
.kumpul-plan-simulator{margin-top:18px;padding:20px;border:1px solid var(--kt-border);border-radius:18px;background:var(--kt-surface);box-shadow:0 8px 26px #0f172a0a}.kumpul-plan-simulator-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.kumpul-plan-simulator-heading h2{margin:0;font-size:19px;letter-spacing:-.025em}.kumpul-plan-simulator-heading .kumpul-eyebrow{margin-bottom:7px}.kumpul-plan-simulator-heading>div>p:last-child{margin:7px 0 0;color:var(--kt-muted);font-size:10px;line-height:1.55}.kumpul-plan-simulation-badge{padding:6px 9px;flex:none;border-radius:99px;background:#e6f4f6;color:var(--kt-accent);font-size:8px;font-weight:800}.kumpul-plan-simulation-note{margin:15px 0;padding:10px 12px;border:1px solid var(--kt-border);border-radius:10px;background:var(--kt-bg);color:var(--kt-muted);font-size:9px;line-height:1.55}.kumpul-plan-sim-steps{margin:17px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));list-style:none}.kumpul-plan-sim-steps li{min-width:0;border-top:2px solid var(--kt-border)}.kumpul-plan-sim-steps li.is-current,.kumpul-plan-sim-steps li.is-complete{border-color:var(--kt-accent)}.kumpul-plan-sim-steps button{width:100%;padding:10px 5px 4px;display:flex;align-items:center;gap:6px;border:0;background:none;color:var(--kt-muted);font:inherit;font-size:8px;font-weight:750;text-align:left}.kumpul-plan-sim-steps li.is-current button,.kumpul-plan-sim-steps li.is-complete button{color:var(--kt-text)}.kumpul-plan-sim-steps button:disabled{cursor:not-allowed;opacity:.65}.kumpul-plan-sim-steps button:not(:disabled){cursor:pointer}.kumpul-plan-sim-steps button>span:first-child{width:20px;height:20px;flex:none;display:grid;place-items:center;border:1px solid var(--kt-border);border-radius:50%;font-size:8px}.kumpul-plan-sim-steps li.is-current button>span:first-child,.kumpul-plan-sim-steps li.is-complete button>span:first-child{border-color:var(--kt-accent);background:var(--kt-accent);color:#fff}.kumpul-plan-sim-panel{margin-top:17px}.kumpul-plan-sim-panel[hidden],.kumpul-plan-sim-complete[hidden]{display:none}.kumpul-plan-sim-panel h3,.kumpul-plan-sim-complete h3{margin:0;font-size:15px}.kumpul-plan-sim-help{margin:6px 0 14px;color:var(--kt-muted);font-size:9px;line-height:1.5}.kumpul-plan-sim-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.kumpul-plan-sim-form label,.kumpul-plan-sim-invite-form label,.kumpul-plan-sim-person>label{min-width:0;display:grid;gap:5px;color:var(--kt-muted);font-size:9px;font-weight:700}.kumpul-plan-sim-form input,.kumpul-plan-sim-form select,.kumpul-plan-sim-invite-form input,.kumpul-plan-sim-invitees input,.kumpul-plan-sim-person select{width:100%;min-width:0;min-height:37px;padding:8px 9px;border:1px solid var(--kt-border);border-radius:9px;background:#fff;color:var(--kt-text);font:inherit;font-size:10px}.kumpul-plan-sim-options{min-width:0;margin:15px 0 0;padding:11px;border:1px solid var(--kt-border);border-radius:11px}.kumpul-plan-sim-options legend{padding:0 5px;color:var(--kt-text);font-size:10px;font-weight:800}.kumpul-plan-sim-option{margin:5px 10px 5px 0;display:inline-flex;align-items:center;gap:6px;color:var(--kt-muted);font-size:9px}.kumpul-plan-sim-option input{accent-color:var(--kt-accent)}.kumpul-plan-sim-actions{margin-top:15px;display:flex;justify-content:flex-end;gap:8px}.kumpul-plan-sim-actions button,.kumpul-plan-sim-invite-form button,.kumpul-plan-sim-invitees button,.kumpul-plan-sim-payment button,.kumpul-plan-sim-complete button{min-height:36px;padding:8px 12px;border:1px solid var(--kt-border);border-radius:9px;background:#fff;color:var(--kt-text);font:inherit;font-size:9px;font-weight:800;cursor:pointer}.kumpul-plan-sim-actions .kumpul-plan-sim-primary{border-color:var(--kt-accent);background:var(--kt-accent);color:#fff}.kumpul-plan-sim-actions .kumpul-plan-sim-secondary{color:var(--kt-accent)}.kumpul-plan-sim-error{margin:12px 0 0;color:#b91c1c;font-size:9px;font-weight:700}.kumpul-plan-sim-invite-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:9px}.kumpul-plan-sim-invitees{margin:12px 0 0;padding:0;display:grid;gap:7px;list-style:none}.kumpul-plan-sim-invitees li{display:flex;align-items:center;gap:8px}.kumpul-plan-sim-invitees li>div{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:8px}.kumpul-plan-sim-invitees button,.kumpul-plan-sim-payment button{min-height:33px;padding:7px 9px;color:var(--kt-accent)}.kumpul-plan-sim-participants,.kumpul-plan-sim-payments{display:grid;gap:9px}.kumpul-plan-sim-person{padding:12px;display:grid;grid-template-columns:minmax(0,1fr) 170px;align-items:center;gap:11px;border:1px solid var(--kt-border);border-radius:12px;background:var(--kt-bg)}.kumpul-plan-sim-person-heading{min-width:0;display:grid;gap:3px}.kumpul-plan-sim-person-heading strong{font-size:10px}.kumpul-plan-sim-person-heading span{overflow-wrap:anywhere;color:var(--kt-muted);font-size:8px}.kumpul-plan-sim-person-options{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.kumpul-plan-sim-payment{grid-template-columns:minmax(0,1fr) auto}.kumpul-plan-sim-payment[data-sim-paid=true]{border-color:var(--kt-success);background:#effaf5}.kumpul-plan-sim-final-group{margin:7px 0 0;padding:8px;border:1px solid var(--kt-border);border-radius:9px}.kumpul-plan-sim-final-group legend{padding:0 4px;font-size:9px;font-weight:800}.kumpul-plan-sim-final-group label{margin:5px 10px 5px 0;display:inline-flex;align-items:center;gap:6px;color:var(--kt-muted);font-size:9px}.kumpul-plan-sim-final-group input{accent-color:var(--kt-accent)}.kumpul-plan-sim-complete{margin-top:18px;padding:22px;border:1px solid #8bd1ae;border-radius:13px;background:#effaf5;text-align:center}.kumpul-plan-sim-complete>span{width:34px;height:34px;margin:0 auto 9px;display:grid;place-items:center;border-radius:50%;background:var(--kt-success);color:#fff;font-weight:900}.kumpul-plan-sim-complete p{margin:7px 0 13px;color:var(--kt-muted);font-size:9px;line-height:1.5}.kumpul-plan-live .kumpul-plan-sim-steps{position:sticky;top:var(--kumpul-header-height,0px);z-index:8;padding-top:10px;background:var(--kt-surface)}.kumpul-plan-live-dates{margin-top:11px;grid-template-columns:repeat(3,minmax(0,1fr))}.kumpul-plan-live .kumpul-plan-sim-option{width:100%;margin:7px 0;display:flex;align-items:flex-start}.kumpul-plan-live .kumpul-plan-sim-option>span{display:grid;gap:3px}.kumpul-plan-live .kumpul-plan-sim-option small{color:var(--kt-muted);font-size:8px;line-height:1.45}.kumpul-plan-live .kumpul-plan-sim-invite-form{margin-bottom:12px;grid-template-columns:repeat(3,minmax(0,1fr)) auto}.kumpul-plan-live-readonly{margin:6px 0 12px;padding:8px 10px;border-radius:9px;background:var(--kt-bg);color:var(--kt-muted);font-size:9px}.kumpul-plan-live-people{margin:12px 0 0;padding:0;display:grid;gap:8px;list-style:none}.kumpul-plan-live-people .kumpul-plan-sim-person{grid-template-columns:minmax(0,1fr) auto}.kumpul-plan-live-person-name{display:flex;align-items:center;gap:8px}.kumpul-plan-live-person-name input{accent-color:var(--kt-accent)}.kumpul-plan-live-row-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;font-size:9px;font-weight:800}.kumpul-plan-live-row-actions a{color:var(--kt-accent)}.kumpul-plan-live-row-actions button{min-height:32px;padding:6px 10px;border:1px solid var(--kt-border);border-radius:9px;background:#fff;color:var(--kt-accent);font:inherit;cursor:pointer}.kumpul-plan-live-public{margin:0 0 12px;padding:10px 12px;border:1px dashed var(--kt-accent);border-radius:11px;color:var(--kt-muted);font-size:9px}.kumpul-plan-live-public a{color:var(--kt-accent);font-weight:800}.kumpul-plan-live-operation{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:#e6f4f6;color:var(--kt-text);font-size:9px}.kumpul-plan-live-operation.is-failed{background:#fdecec;color:#b91c1c}.kumpul-plan-live-reason{margin-top:12px;display:grid;gap:5px;color:var(--kt-muted);font-size:9px;font-weight:700}.kumpul-plan-live-reason textarea,.kumpul-plan-live-cancel input{width:100%;padding:8px 9px;border:1px solid var(--kt-border);border-radius:9px;font:inherit;font-size:10px}.kumpul-plan-live .kumpul-plan-sim-final-group{display:grid;gap:4px}.kumpul-plan-live .kumpul-plan-sim-final-group p{margin:0;color:var(--kt-muted);font-size:9px}.kumpul-plan-live-cancel{margin-top:18px;padding-top:12px;border-top:1px solid var(--kt-border);font-size:10px}.kumpul-plan-live-cancel summary{color:#b91c1c;font-weight:800;cursor:pointer}.kumpul-plan-live-cancel label{margin:10px 0;display:grid;gap:5px;color:var(--kt-muted);font-size:9px;font-weight:700}.kumpul-plan-live-danger{min-height:36px;padding:8px 12px;border:0;border-radius:9px;background:#b91c1c;color:#fff;font:inherit;font-size:9px;font-weight:800;cursor:pointer}.kumpul-plan-live button:disabled{cursor:not-allowed;opacity:.55}@media(max-width:760px){.kumpul-plan-live-dates,.kumpul-plan-live .kumpul-plan-sim-invite-form,.kumpul-plan-live-people .kumpul-plan-sim-person{grid-template-columns:1fr}.kumpul-plan-live-row-actions{justify-content:flex-start}}
|
|
2546
2965
|
@media(max-width:760px){.kumpul-plan-heading{flex-direction:column;gap:12px}.kumpul-plan-workflow{padding:14px}.kumpul-plan-workflow ol{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kumpul-plan-workflow li{padding:9px 5px 0;font-size:8px}.kumpul-plan-layout{grid-template-columns:1fr;gap:13px}.kumpul-plan-aside{position:static}.kumpul-plan-simulator{padding:15px}.kumpul-plan-simulator-heading{flex-direction:column;gap:10px}.kumpul-plan-sim-form{grid-template-columns:1fr}.kumpul-plan-sim-invite-form{grid-template-columns:1fr}.kumpul-plan-sim-invite-form button{width:100%}.kumpul-plan-sim-invitees li{align-items:flex-start;flex-direction:column}.kumpul-plan-sim-invitees li>div{width:100%;grid-template-columns:1fr}.kumpul-plan-sim-invitees button{align-self:flex-end}.kumpul-plan-sim-person{grid-template-columns:1fr}.kumpul-plan-sim-person-options{grid-template-columns:1fr}.kumpul-plan-sim-payment{grid-template-columns:1fr}.kumpul-plan-sim-payment button{width:100%}.kumpul-plan-sim-steps button{align-items:flex-start;flex-direction:column;font-size:7px}.kumpul-plan-sim-actions{flex-wrap:wrap}.kumpul-plan-sim-actions button{flex:1}}
|
|
2547
2966
|
@media(max-width:760px){.kumpul-detail-heading{align-items:flex-start;flex-direction:column}.kumpul-detail-layout{grid-template-columns:1fr;gap:13px}.kumpul-detail-aside{position:static}.kumpul-detail-card{padding:16px}.kumpul-detail-fields{gap:13px}.kumpul-detail-total strong{font-size:19px}.kumpul-detail-item{grid-template-columns:40px minmax(0,1fr);gap:10px}.kumpul-detail-item-art{width:40px;height:40px}.kumpul-detail-item>strong{grid-column:2}.kumpul-detail-page .kumpul-detail-preview-note{font-size:9px}}
|
|
2548
2967
|
.kumpul-transaction-actions .kumpul-transaction-action-link{display:inline-flex;min-height:34px;align-items:center;justify-content:center;padding:7px 11px;border:1px solid var(--kt-border);border-radius:10px;background:var(--kt-surface);color:var(--kt-text);font-size:9px;font-weight:750;text-decoration:none}
|
package/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"manifestVersion": 1,
|
|
3
3
|
"slug": "kumpul",
|
|
4
4
|
"name": "Kumpul",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.2.2",
|
|
6
6
|
"rendererApiVersion": 1,
|
|
7
7
|
"businessProfiles": [
|
|
8
8
|
"gathering"
|
|
@@ -307,5 +307,74 @@
|
|
|
307
307
|
}
|
|
308
308
|
]
|
|
309
309
|
}
|
|
310
|
-
]
|
|
310
|
+
],
|
|
311
|
+
"sampleData": {
|
|
312
|
+
"tagline": "Kumpul bareng jadi lebih mudah.",
|
|
313
|
+
"categories": [
|
|
314
|
+
{
|
|
315
|
+
"label": "Family"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"label": "Workshop"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"label": "Outdoor"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"label": "Komunitas"
|
|
325
|
+
}
|
|
326
|
+
],
|
|
327
|
+
"products": [
|
|
328
|
+
{
|
|
329
|
+
"name": "Family Camp Lembang — Edisi Libur Sekolah",
|
|
330
|
+
"type": "gathering",
|
|
331
|
+
"price": 350000,
|
|
332
|
+
"category": "Family",
|
|
333
|
+
"description": "Gathering keluarga untuk menikmati waktu bersama di alam terbuka.",
|
|
334
|
+
"minAttendees": 4,
|
|
335
|
+
"maxAttendees": 40
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"name": "Workshop Keramik & Kopi Slow Bar",
|
|
339
|
+
"type": "gathering",
|
|
340
|
+
"price": 185000,
|
|
341
|
+
"category": "Workshop",
|
|
342
|
+
"description": "Belajar membuat keramik sambil menikmati kopi pilihan.",
|
|
343
|
+
"minAttendees": 3,
|
|
344
|
+
"maxAttendees": 24
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
"name": "Trail Run Sentul — Sunrise Batch",
|
|
348
|
+
"type": "gathering",
|
|
349
|
+
"price": 125000,
|
|
350
|
+
"category": "Outdoor",
|
|
351
|
+
"description": "Mulai pagi dengan rute lari dan pemandangan perbukitan.",
|
|
352
|
+
"minAttendees": 5,
|
|
353
|
+
"maxAttendees": 80
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
"name": "Komunitas Baca: Diskusi Sore di Taman",
|
|
357
|
+
"type": "gathering",
|
|
358
|
+
"price": 0,
|
|
359
|
+
"category": "Komunitas",
|
|
360
|
+
"description": "Sesi baca dan diskusi santai terbuka untuk semua.",
|
|
361
|
+
"minAttendees": 1,
|
|
362
|
+
"maxAttendees": 30
|
|
363
|
+
}
|
|
364
|
+
],
|
|
365
|
+
"faqs": [
|
|
366
|
+
{
|
|
367
|
+
"question": "Bagaimana cara ikut sebuah gathering?",
|
|
368
|
+
"answer": "Pilih gathering di katalog lalu buat rencana atau terima undangan dari penyelenggara. RSVP dan pembayaran dilakukan di website ini."
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"question": "Kapan saya membayar?",
|
|
372
|
+
"answer": "Setelah penyelenggara menutup RSVP, tagihan peserta terbit. Batas pembayaran tertera di halaman Tagihan."
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"question": "Bagaimana jika acara dibatalkan?",
|
|
376
|
+
"answer": "Dana yang sudah dibayar dikembalikan sesuai kebijakan pembatalan gathering tersebut."
|
|
377
|
+
}
|
|
378
|
+
]
|
|
379
|
+
}
|
|
311
380
|
}
|