@forgebuild/hotal-ui 0.6.0 → 0.7.1

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/hotal-ui.js CHANGED
@@ -12449,8 +12449,307 @@ var ih, ah, oh, sh, ch, lh, uh, dh = o((() => {
12449
12449
  },
12450
12450
  fetchInquiries: {}
12451
12451
  }, [], [], { mode: "open" }));
12452
+ })), fh = /* @__PURE__ */ c({ default: () => ph });
12453
+ function ph(e, t) {
12454
+ dt(t, !0), Ea(e, Dh);
12455
+ let n = $(t, "heading", 7, "Plan Your Event"), r = $(t, "tagline", 7, "Tell Us the Occasion"), i = $(t, "description", 7, "Share a few details below and our events team will follow up to help shape the evening around you."), a = $(t, "eventTypes", 23, () => [
12456
+ "Birthday",
12457
+ "Anniversary",
12458
+ "Engagement",
12459
+ "Corporate Event",
12460
+ "Cocktail Reception",
12461
+ "Wedding",
12462
+ "Other"
12463
+ ]), o = $(t, "minGuests", 7, 12), s = $(t, "submitNote", 7, ""), c = $(t, "submitInquiry", 7), l = /* @__PURE__ */ B(""), u = /* @__PURE__ */ B(""), d = /* @__PURE__ */ B(""), f = /* @__PURE__ */ B(""), p = /* @__PURE__ */ B(Un(o())), m = /* @__PURE__ */ B(""), h = /* @__PURE__ */ B(""), g = /* @__PURE__ */ B(!1), _ = /* @__PURE__ */ B(void 0), v = /* @__PURE__ */ B(void 0);
12464
+ function y() {
12465
+ V(g, !K(g));
12466
+ }
12467
+ function b(e) {
12468
+ V(f, e, !0), V(g, !1);
12469
+ }
12470
+ fr(() => {
12471
+ if (!K(g) || !K(_) || !K(v)) return;
12472
+ let e = K(_), t = K(v);
12473
+ t.style.width = `${e.getBoundingClientRect().width}px`, t.showPopover();
12474
+ let n = cc(e, t, async () => {
12475
+ let { x: n, y: r } = await gc(e, t, {
12476
+ strategy: "fixed",
12477
+ placement: "bottom-start",
12478
+ middleware: [
12479
+ pc(4),
12480
+ hc(),
12481
+ mc({ padding: 12 })
12482
+ ]
12483
+ });
12484
+ t.style.left = `${n}px`, t.style.top = `${r}px`;
12485
+ });
12486
+ function r(e) {
12487
+ e.newState === "closed" && V(g, !1);
12488
+ }
12489
+ return t.addEventListener("toggle", r), () => {
12490
+ n(), t.removeEventListener("toggle", r), t.matches(":popover-open") && t.hidePopover();
12491
+ };
12492
+ });
12493
+ function x() {
12494
+ V(p, Math.max(o(), K(p) - 1), !0);
12495
+ }
12496
+ function S() {
12497
+ V(p, Math.min(200, K(p) + 1), !0);
12498
+ }
12499
+ let C = /* @__PURE__ */ B(void 0), w = {}, T = /* @__PURE__ */ B("opacity: 0; transform: scaleX(0);");
12500
+ function E(e) {
12501
+ V(m, K(m) === e ? "" : e, !0);
12502
+ }
12503
+ fr(() => {
12504
+ let e = K(m) ? w[K(m)] : void 0;
12505
+ e ? V(T, `left: ${e.offsetLeft}px; width: ${e.offsetWidth}px; opacity: 1; transform: scaleX(1);`) : V(T, "opacity: 0; transform: scaleX(0);");
12506
+ });
12507
+ let D = yc(/* @__PURE__ */ new Date()), ee = /* @__PURE__ */ B(Un(D.getFullYear())), O = /* @__PURE__ */ B(Un(D.getMonth())), k = /* @__PURE__ */ B(null), te = /* @__PURE__ */ B(!1), A = /* @__PURE__ */ nn(() => Sc(K(ee), K(O), D, [])), ne = /* @__PURE__ */ nn(() => K(ee) !== D.getFullYear() || K(O) !== D.getMonth()), j = /* @__PURE__ */ nn(() => K(k) ? vc(K(k)) : null);
12508
+ function re() {
12509
+ K(ne) && (V(O, K(O) - 1), K(O) < 0 && (V(O, 11), V(ee, K(ee) - 1)));
12510
+ }
12511
+ function ie() {
12512
+ V(O, K(O) + 1), K(O) > 11 && (V(O, 0), V(ee, K(ee) + 1));
12513
+ }
12514
+ function ae(e) {
12515
+ !e.inMonth || e.isPast || (V(k, e.date, !0), V(te, !1));
12516
+ }
12517
+ let oe = /* @__PURE__ */ B(!1), se = /* @__PURE__ */ B(""), ce = /* @__PURE__ */ B(!1);
12518
+ function le(e, n) {
12519
+ t.$$host?.dispatchEvent(new CustomEvent(e, {
12520
+ detail: n,
12521
+ bubbles: !0,
12522
+ composed: !0
12523
+ }));
12524
+ }
12525
+ async function ue(e) {
12526
+ if (e.preventDefault(), !K(j)) {
12527
+ V(te, !0);
12528
+ return;
12529
+ }
12530
+ if (!c()) {
12531
+ V(se, "This form is not wired up to send inquiries yet.");
12532
+ return;
12533
+ }
12534
+ V(se, ""), V(oe, !0);
12535
+ let t = {
12536
+ name: K(l),
12537
+ email: K(u),
12538
+ phone: K(d),
12539
+ date: K(j),
12540
+ guests: K(p),
12541
+ eventType: K(f),
12542
+ format: K(m),
12543
+ message: K(h)
12544
+ };
12545
+ try {
12546
+ let e = await c()(t);
12547
+ if (!e.ok) throw Error(e.error || "request failed");
12548
+ V(ce, !0), le("inquiry-submitted", t);
12549
+ } catch (e) {
12550
+ V(se, e instanceof Error && e.message !== "request failed" ? e.message : "Something went wrong sending your inquiry. Please try again or call us directly.", !0);
12551
+ } finally {
12552
+ V(oe, !1);
12553
+ }
12554
+ }
12555
+ var de = {
12556
+ get heading() {
12557
+ return n();
12558
+ },
12559
+ set heading(e = "Plan Your Event") {
12560
+ n(e), R();
12561
+ },
12562
+ get tagline() {
12563
+ return r();
12564
+ },
12565
+ set tagline(e = "Tell Us the Occasion") {
12566
+ r(e), R();
12567
+ },
12568
+ get description() {
12569
+ return i();
12570
+ },
12571
+ set description(e = "Share a few details below and our events team will follow up to help shape the evening around you.") {
12572
+ i(e), R();
12573
+ },
12574
+ get eventTypes() {
12575
+ return a();
12576
+ },
12577
+ set eventTypes(e = [
12578
+ "Birthday",
12579
+ "Anniversary",
12580
+ "Engagement",
12581
+ "Corporate Event",
12582
+ "Cocktail Reception",
12583
+ "Wedding",
12584
+ "Other"
12585
+ ]) {
12586
+ a(e), R();
12587
+ },
12588
+ get minGuests() {
12589
+ return o();
12590
+ },
12591
+ set minGuests(e = 12) {
12592
+ o(e), R();
12593
+ },
12594
+ get submitNote() {
12595
+ return s();
12596
+ },
12597
+ set submitNote(e = "") {
12598
+ s(e), R();
12599
+ },
12600
+ get submitInquiry() {
12601
+ return c();
12602
+ },
12603
+ set submitInquiry(e) {
12604
+ c(e), R();
12605
+ }
12606
+ }, fe = Eh(), pe = H(fe), me = H(pe), he = H(me, !0);
12607
+ P(me);
12608
+ var ge = U(me, 4), _e = (e) => {
12609
+ var t = hh(), n = Xn(t), a = (e) => {
12610
+ var t = mh(), n = H(t, !0);
12611
+ P(t), W(() => Q(n, r())), Z(e, t);
12612
+ };
12613
+ ra(n, (e) => {
12614
+ r() && e(a);
12615
+ });
12616
+ var o = U(n, 2), s = H(o, !0);
12617
+ P(o), W(() => Q(s, i())), Z(e, t);
12618
+ };
12619
+ ra(ge, (e) => {
12620
+ K(ce) || e(_e);
12621
+ }), P(pe);
12622
+ var ve = U(pe, 2), ye = (e) => {
12623
+ var t = wh(), n = H(t), r = H(n), i = U(H(r), 2);
12624
+ Ha(i), P(r);
12625
+ var c = U(r, 2), D = U(H(c), 2);
12626
+ Ha(D), P(c);
12627
+ var k = U(c, 2), ce = U(H(k), 2);
12628
+ Ha(ce), P(k);
12629
+ var le = U(k, 2), de = U(H(le), 2), fe = H(de);
12630
+ let pe;
12631
+ var me = H(fe, !0);
12632
+ P(fe);
12633
+ var he = U(fe, 2);
12634
+ let ge;
12635
+ P(de), co(de, (e) => V(_, e), () => K(_));
12636
+ var _e = U(de, 2);
12637
+ ua(_e, 20, a, (e) => e, (e, t) => {
12638
+ var n = gh(), r = H(n), i = H(r, !0);
12639
+ P(r), P(n), W(() => {
12640
+ Ua(r, "aria-selected", t === K(f)), Q(i, t);
12641
+ }), ui("click", r, () => b(t)), Z(e, n);
12642
+ }), P(_e), co(_e, (e) => V(v, e), () => K(v)), P(le), P(n);
12643
+ var ve = U(n, 2), ye = H(ve), be = U(H(ye), 2), xe = H(be), Se = U(xe, 2), Ce = H(Se, !0);
12644
+ P(Se);
12645
+ var we = U(Se, 2);
12646
+ P(be);
12647
+ var Te = U(be, 2), M = H(Te);
12648
+ P(Te);
12649
+ var Ee = U(Te, 2), N = U(H(Ee), 2), De = H(N), Oe = U(De, 2);
12650
+ let ke;
12651
+ co(Oe, (e) => w["Seated Dinner"] = e, () => w?.["Seated Dinner"]);
12652
+ var Ae = U(Oe, 2);
12653
+ let je;
12654
+ co(Ae, (e) => w["Cocktail Reception"] = e, () => w?.["Cocktail Reception"]), P(N), co(N, (e) => V(C, e), () => K(C)), P(Ee), P(ye);
12655
+ var Me = U(ye, 2), Ne = U(H(Me), 2);
12656
+ let Pe;
12657
+ var Fe = H(Ne), Ie = H(Fe), Le = H(Ie);
12658
+ P(Ie);
12659
+ var Re = U(Ie, 2), ze = H(Re), Be = U(ze, 2);
12660
+ P(Re), P(Fe);
12661
+ var Ve = U(Fe, 2);
12662
+ ua(Ve, 20, () => wc, (e) => e, (e, t) => {
12663
+ var n = _h(), r = H(n, !0);
12664
+ P(n), W(() => Q(r, t)), Z(e, n);
12665
+ }), P(Ve);
12666
+ var He = U(Ve, 2);
12667
+ ua(He, 21, () => K(A), (e) => e.iso, (e, t) => {
12668
+ var n = vh();
12669
+ let r;
12670
+ var i = H(n, !0);
12671
+ P(n), W(() => {
12672
+ r = Ia(n, 1, "ecf-cal-cell svelte-1cgy5x5", null, r, { "ecf-cal-cell-selected": K(j) === K(t).iso }), n.disabled = !K(t).inMonth || K(t).isPast, Q(i, K(t).dayNumber);
12673
+ }), ui("click", n, () => ae(K(t))), Z(e, n);
12674
+ }), P(He), P(Ne);
12675
+ var Ue = U(Ne, 2), We = (e) => {
12676
+ Z(e, yh());
12677
+ };
12678
+ ra(Ue, (e) => {
12679
+ K(te) && e(We);
12680
+ }), P(Me), P(ve);
12681
+ var Ge = U(ve, 2), Ke = U(H(Ge), 2);
12682
+ Lt(Ke), P(Ge);
12683
+ var qe = U(Ge, 2), Je = H(qe), Ye = (e) => {
12684
+ Z(e, bh());
12685
+ };
12686
+ ra(Je, (e) => {
12687
+ K(oe) && e(Ye);
12688
+ });
12689
+ var Xe = U(Je, 2), Ze = H(Xe, !0);
12690
+ P(Xe);
12691
+ var F = U(Xe, 2), Qe = (e) => {
12692
+ Z(e, xh());
12693
+ };
12694
+ ra(F, (e) => {
12695
+ K(oe) || e(Qe);
12696
+ }), P(qe);
12697
+ var $e = U(qe, 2), et = (e) => {
12698
+ var t = Sh(), n = H(t, !0);
12699
+ P(t), W(() => Q(n, s())), Z(e, t);
12700
+ };
12701
+ ra($e, (e) => {
12702
+ s() && e(et);
12703
+ });
12704
+ var tt = U($e, 2), nt = (e) => {
12705
+ var t = Ch(), n = H(t, !0);
12706
+ P(t), W(() => Q(n, K(se))), Z(e, t);
12707
+ };
12708
+ ra(tt, (e) => {
12709
+ K(se) && e(nt);
12710
+ }), P(t), W(() => {
12711
+ Ua(de, "aria-expanded", K(g)), pe = Ia(fe, 1, "svelte-1cgy5x5", null, pe, { "ecf-placeholder": !K(f) }), Q(me, K(f) || "Select an option"), ge = Ia(he, 0, "ecf-chevron svelte-1cgy5x5", null, ge, { "ecf-chevron-open": K(g) }), xe.disabled = K(p) <= o(), Q(Ce, K(p)), we.disabled = K(p) >= 200, Q(M, `${o() ?? ""}-guest minimum for private events.`), za(De, K(T)), ke = Ia(Oe, 1, "svelte-1cgy5x5", null, ke, { "ecf-format-active": K(m) === "Seated Dinner" }), je = Ia(Ae, 1, "svelte-1cgy5x5", null, je, { "ecf-format-active": K(m) === "Cocktail Reception" }), Pe = Ia(Ne, 1, "ecf-calendar svelte-1cgy5x5", null, Pe, { "ecf-calendar-error": K(te) }), Q(Le, `${Cc[K(O)] ?? ""} ${K(ee) ?? ""}`), ze.disabled = !K(ne), qe.disabled = K(oe), Q(Ze, K(oe) ? "Sending…" : "Send Inquiry");
12712
+ }), li("submit", t, ue), $a(i, () => K(l), (e) => V(l, e)), $a(D, () => K(u), (e) => V(u, e)), $a(ce, () => K(d), (e) => V(d, e)), ui("click", de, y), ui("click", xe, x), ui("click", we, S), ui("click", Oe, () => E("Seated Dinner")), ui("click", Ae, () => E("Cocktail Reception")), ui("click", ze, re), ui("click", Be, ie), $a(Ke, () => K(h), (e) => V(h, e)), Z(e, t);
12713
+ }, be = (e) => {
12714
+ Z(e, Th());
12715
+ };
12716
+ return ra(ve, (e) => {
12717
+ K(ce) ? e(be, -1) : e(ye);
12718
+ }), P(fe), W(() => Q(he, n())), Z(e, fe), I(de);
12719
+ }
12720
+ var mh, hh, gh, _h, vh, yh, bh, xh, Sh, Ch, wh, Th, Eh, Dh, Oh = o((() => {
12721
+ f(), Do(), _c(), Tc(), mh = /* @__PURE__ */ X("<p class=\"ecf-tagline svelte-1cgy5x5\"> </p>"), hh = /* @__PURE__ */ X("<!> <p class=\"ecf-description svelte-1cgy5x5\"> </p>", 1), gh = /* @__PURE__ */ X("<li role=\"presentation\"><button type=\"button\" role=\"option\" class=\"svelte-1cgy5x5\"> </button></li>"), _h = /* @__PURE__ */ X("<span> </span>"), vh = /* @__PURE__ */ X("<button type=\"button\"> </button>"), yh = /* @__PURE__ */ X("<p class=\"ecf-error-text svelte-1cgy5x5\">Please select a date.</p>"), bh = /* @__PURE__ */ X("<span class=\"ecf-spinner svelte-1cgy5x5\"></span>"), xh = /* @__PURE__ */ X("<span aria-hidden=\"true\">→</span>"), Sh = /* @__PURE__ */ X("<p class=\"ecf-submit-note svelte-1cgy5x5\"> </p>"), Ch = /* @__PURE__ */ X("<p class=\"ecf-error-text ecf-submit-error svelte-1cgy5x5\"> </p>"), wh = /* @__PURE__ */ X("<form class=\"ecf-form svelte-1cgy5x5\"><div class=\"ecf-grid svelte-1cgy5x5\"><label class=\"ecf-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Name</span> <input type=\"text\" required=\"\" placeholder=\"Jane Smith\" class=\"svelte-1cgy5x5\"/></label> <label class=\"ecf-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Email</span> <input type=\"email\" required=\"\" pattern=\"[^\\s@]+@[^\\s@]+\\.[^\\s@]+\" title=\"Enter a valid email address, e.g. jane@email.com\" placeholder=\"jane@email.com\" class=\"svelte-1cgy5x5\"/></label> <label class=\"ecf-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Phone</span> <input type=\"tel\" placeholder=\"+1 555 123 4567\" class=\"svelte-1cgy5x5\"/></label> <div class=\"ecf-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\" id=\"ecf-type-label\">Event Type</span> <button type=\"button\" class=\"ecf-select-trigger svelte-1cgy5x5\" aria-haspopup=\"listbox\" aria-labelledby=\"ecf-type-label\"><span> </span> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg></button> <ul popover=\"\" role=\"listbox\" aria-label=\"Event type\" class=\"ecf-select-panel svelte-1cgy5x5\"></ul></div></div> <div class=\"ecf-grid ecf-grid-secondary svelte-1cgy5x5\"><div class=\"ecf-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Guests</span> <div class=\"ecf-stepper svelte-1cgy5x5\"><button type=\"button\" aria-label=\"Decrease guest count\" class=\"svelte-1cgy5x5\">−</button> <span class=\"ecf-stepper-count svelte-1cgy5x5\"> </span> <button type=\"button\" aria-label=\"Increase guest count\" class=\"svelte-1cgy5x5\">+</button></div> <p class=\"ecf-hint svelte-1cgy5x5\"> </p> <div class=\"ecf-format svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Event Format</span> <div class=\"ecf-format-toggle svelte-1cgy5x5\"><span class=\"ecf-format-indicator svelte-1cgy5x5\"></span> <button type=\"button\">Seated Dinner</button> <button type=\"button\">Cocktail Reception</button></div></div></div> <div class=\"ecf-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Select a Date<span class=\"ecf-required svelte-1cgy5x5\">*</span></span> <div><div class=\"ecf-cal-header svelte-1cgy5x5\"><p class=\"ecf-cal-month svelte-1cgy5x5\"> </p> <div class=\"ecf-cal-nav svelte-1cgy5x5\"><button type=\"button\" aria-label=\"Previous month\" class=\"svelte-1cgy5x5\">‹</button> <button type=\"button\" aria-label=\"Next month\" class=\"svelte-1cgy5x5\">›</button></div></div> <div class=\"ecf-cal-weekdays svelte-1cgy5x5\"></div> <div class=\"ecf-cal-grid svelte-1cgy5x5\"></div></div> <!></div></div> <label class=\"ecf-field ecf-message-field svelte-1cgy5x5\"><span class=\"ecf-label svelte-1cgy5x5\">Tell Us More</span> <textarea rows=\"5\" placeholder=\"Vision for the evening, budget, must-haves...\" class=\"svelte-1cgy5x5\"></textarea></label> <button type=\"submit\" class=\"ecf-submit svelte-1cgy5x5\"><!> <span> </span> <!></button> <!> <!></form>"), Th = /* @__PURE__ */ X("<div class=\"ecf-success svelte-1cgy5x5\"><div class=\"ecf-success-icon svelte-1cgy5x5\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" class=\"svelte-1cgy5x5\"><path d=\"M5 13l4 4L19 7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg></div> <p class=\"svelte-1cgy5x5\">Thank you! Your inquiry has been sent — our events team will follow up shortly.</p></div>"), Eh = /* @__PURE__ */ X("<section class=\"ecf-root svelte-1cgy5x5\"><div class=\"ecf-intro svelte-1cgy5x5\"><h2 class=\"ecf-heading svelte-1cgy5x5\"> </h2> <div class=\"ecf-rule svelte-1cgy5x5\"></div> <!></div> <!></section>"), Dh = {
12722
+ hash: "svelte-1cgy5x5",
12723
+ code: ".ecf-root.svelte-1cgy5x5 {display:block;font-family:inherit;color:var(--ecf-text-color, #1a1a1a);background:var(--ecf-bg, #faf6ec);padding:var(--ecf-padding, 5rem 1.5rem);}.ecf-intro.svelte-1cgy5x5 {max-width:36rem;margin:0 auto;text-align:center;}.ecf-heading.svelte-1cgy5x5 {margin:0;font-size:2.25rem;}\n @media (min-width: 640px) {.ecf-heading.svelte-1cgy5x5 {font-size:3rem;}\n }.ecf-rule.svelte-1cgy5x5 {width:4rem;height:1px;margin:1rem auto 0;background:var(--ecf-rule-color, rgba(196, 158, 90, 0.5));}.ecf-tagline.svelte-1cgy5x5 {margin:1.5rem 0 0;font-style:italic;font-size:1.25rem;}.ecf-description.svelte-1cgy5x5 {margin:1.5rem 0 0;font-size:1.125rem;line-height:1.6;}.ecf-form.svelte-1cgy5x5 {max-width:42rem;margin:3.5rem auto 0;}.ecf-grid.svelte-1cgy5x5 {display:grid;gap:1.5rem;}\n @media (min-width: 640px) {.ecf-grid.svelte-1cgy5x5 {grid-template-columns:1fr 1fr;}\n }.ecf-grid-secondary.svelte-1cgy5x5 {margin-top:1.5rem;align-items:start;}.ecf-field.svelte-1cgy5x5 {display:flex;position:relative;flex-direction:column;gap:0.5rem;}.ecf-label.svelte-1cgy5x5 {font-size:0.75rem;font-weight:300;text-transform:uppercase;letter-spacing:0.05em;}.ecf-required.svelte-1cgy5x5 {color:#dc2626;}.ecf-field.svelte-1cgy5x5 input:where(.svelte-1cgy5x5),\n .ecf-field.svelte-1cgy5x5 textarea:where(.svelte-1cgy5x5) {border-radius:2px;border:1px solid var(--ecf-border-color, rgba(0, 0, 0, 0.15));background:var(--ecf-input-bg, #fff);padding:0.75rem 1rem;font-size:0.875rem;font-family:inherit;color:inherit;}.ecf-field.svelte-1cgy5x5 input:where(.svelte-1cgy5x5)::placeholder,\n .ecf-field.svelte-1cgy5x5 textarea:where(.svelte-1cgy5x5)::placeholder {color:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 40%, transparent);}.ecf-field.svelte-1cgy5x5 input:where(.svelte-1cgy5x5):focus,\n .ecf-field.svelte-1cgy5x5 textarea:where(.svelte-1cgy5x5):focus,\n .ecf-select-trigger.svelte-1cgy5x5:focus {outline:none;border-color:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 40%, transparent);}.ecf-select-trigger.svelte-1cgy5x5 {display:flex;align-items:center;justify-content:space-between;border-radius:2px;border:1px solid var(--ecf-border-color, rgba(0, 0, 0, 0.15));background:var(--ecf-input-bg, #fff);padding:0.75rem 1rem;font-size:0.875rem;font-family:inherit;color:inherit;cursor:pointer;text-align:left;}.ecf-placeholder.svelte-1cgy5x5 {color:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 40%, transparent);}.ecf-chevron.svelte-1cgy5x5 {width:1rem;height:1rem;flex-shrink:0;opacity:0.5;transition:transform 200ms ease;}.ecf-chevron-open.svelte-1cgy5x5 {transform:rotate(180deg);}.ecf-select-panel.svelte-1cgy5x5 {position:fixed;inset:auto;margin:0.25rem 0 0;max-height:15rem;overflow:auto;list-style:none;border-radius:2px;border:1px solid var(--ecf-border-color, rgba(0, 0, 0, 0.15));background:var(--ecf-input-bg, #fff);box-shadow:0 8px 24px rgba(0, 0, 0, 0.12);padding:0;}.ecf-select-panel.svelte-1cgy5x5 button:where(.svelte-1cgy5x5) {display:block;width:100%;border:none;background:transparent;color:inherit;font:inherit;text-align:left;padding:0.625rem 1rem;font-size:0.875rem;cursor:pointer;}.ecf-select-panel.svelte-1cgy5x5 button:where(.svelte-1cgy5x5):hover {background:var(--ecf-hover-bg, #000);color:#fff;}.ecf-stepper.svelte-1cgy5x5 {display:flex;align-items:center;justify-content:space-between;border-radius:2px;border:1px solid var(--ecf-border-color, rgba(0, 0, 0, 0.15));background:var(--ecf-input-bg, #fff);padding:0.75rem 1rem;}.ecf-stepper.svelte-1cgy5x5 button:where(.svelte-1cgy5x5) {display:flex;height:2rem;width:2rem;align-items:center;justify-content:center;border-radius:9999px;border:1px solid color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 20%, transparent);background:transparent;color:inherit;cursor:pointer;font-size:1rem;}.ecf-stepper.svelte-1cgy5x5 button:where(.svelte-1cgy5x5):hover:not(:disabled) {background:var(--ecf-text-color, #1a1a1a);color:var(--ecf-bg, #faf6ec);}.ecf-stepper.svelte-1cgy5x5 button:where(.svelte-1cgy5x5):disabled {cursor:default;opacity:0.3;}.ecf-stepper-count.svelte-1cgy5x5 {font-size:1.125rem;font-weight:600;}.ecf-hint.svelte-1cgy5x5 {margin:0;font-size:0.6875rem;opacity:0.5;}.ecf-format.svelte-1cgy5x5 {display:flex;flex-direction:column;gap:0.5rem;margin-top:1rem;}.ecf-format-toggle.svelte-1cgy5x5 {position:relative;display:inline-flex;width:fit-content;border-radius:2px;border:1px solid var(--ecf-border-color, rgba(0, 0, 0, 0.15));background:var(--ecf-input-bg, #fff);padding:0.25rem;}.ecf-format-indicator.svelte-1cgy5x5 {position:absolute;top:0.25rem;bottom:0.25rem;border-radius:2px;background:var(--ecf-text-color, #1a1a1a);transition:all 300ms cubic-bezier(0.4, 0, 0.2, 1);}.ecf-format-toggle.svelte-1cgy5x5 button:where(.svelte-1cgy5x5) {position:relative;z-index:1;border:none;border-radius:2px;background:transparent;color:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 70%, transparent);padding:0.5rem 1.25rem;font-size:0.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:color 150ms ease;}.ecf-format-active.svelte-1cgy5x5 {color:var(--ecf-bg, #faf6ec) !important;}.ecf-calendar.svelte-1cgy5x5 {flex:1;border-radius:2px;border:1px solid var(--ecf-border-color, rgba(0, 0, 0, 0.15));background:var(--ecf-input-bg, #fff);padding:1rem;transition:border-color 150ms ease;}.ecf-calendar-error.svelte-1cgy5x5 {border-color:#dc2626;}.ecf-cal-header.svelte-1cgy5x5 {display:flex;align-items:center;justify-content:space-between;}.ecf-cal-month.svelte-1cgy5x5 {margin:0;font-size:0.875rem;font-weight:600;}.ecf-cal-nav.svelte-1cgy5x5 {display:flex;gap:0.25rem;}.ecf-cal-nav.svelte-1cgy5x5 button:where(.svelte-1cgy5x5) {display:flex;height:1.75rem;width:1.75rem;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 60%, transparent);cursor:pointer;}.ecf-cal-nav.svelte-1cgy5x5 button:where(.svelte-1cgy5x5):hover:not(:disabled) {background:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 5%, transparent);}.ecf-cal-nav.svelte-1cgy5x5 button:where(.svelte-1cgy5x5):disabled {cursor:default;opacity:0.3;}.ecf-cal-weekdays.svelte-1cgy5x5 {display:grid;grid-template-columns:repeat(7, 1fr);margin-top:0.75rem;text-align:center;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;opacity:0.4;}.ecf-cal-grid.svelte-1cgy5x5 {display:grid;grid-template-columns:repeat(7, 1fr);row-gap:0.25rem;justify-items:center;margin-top:0.25rem;}.ecf-cal-cell.svelte-1cgy5x5 {display:flex;height:2rem;width:2rem;align-items:center;justify-content:center;border-radius:9999px;border:none;background:transparent;color:inherit;font-size:0.875rem;cursor:pointer;}.ecf-cal-cell.svelte-1cgy5x5:hover:not(:disabled) {background:color-mix(in oklab, var(--ecf-text-color, #1a1a1a) 10%, transparent);}.ecf-cal-cell.svelte-1cgy5x5:disabled {cursor:default;opacity:0.25;}.ecf-cal-cell-selected.svelte-1cgy5x5 {background:var(--ecf-text-color, #1a1a1a);color:var(--ecf-bg, #faf6ec);}.ecf-message-field.svelte-1cgy5x5 {margin-top:1.5rem;}.ecf-submit.svelte-1cgy5x5 {display:inline-flex;align-items:center;gap:0.5rem;margin-top:2rem;cursor:pointer;border:none;border-radius:2px;background:var(--ecf-accent-bg, #1a1a1a);color:#fff;padding:0.75rem 1.75rem;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;transition:background-color 150ms ease;}.ecf-submit.svelte-1cgy5x5:hover:not(:disabled) {background:var(--ecf-accent-hover-bg, #333);}.ecf-submit.svelte-1cgy5x5:disabled {cursor:default;opacity:0.6;}.ecf-spinner.svelte-1cgy5x5 {height:1rem;width:1rem;border-radius:9999px;border:2px solid rgba(255, 255, 255, 0.3);border-top-color:#fff;\n animation: svelte-1cgy5x5-ecf-spin 0.7s linear infinite;}\n @keyframes svelte-1cgy5x5-ecf-spin {\n to {\n transform: rotate(360deg);\n }\n }\n @media (prefers-reduced-motion: reduce) {.ecf-spinner.svelte-1cgy5x5 {\n animation: none;}\n }.ecf-submit-note.svelte-1cgy5x5 {margin:1rem 0 0;font-size:0.875rem;}.ecf-error-text.svelte-1cgy5x5 {margin:0.75rem 0 0;font-size:0.75rem;color:#dc2626;}.ecf-submit-error.svelte-1cgy5x5 {font-size:0.875rem;}.ecf-success.svelte-1cgy5x5 {max-width:36rem;margin:3.5rem auto 0;text-align:center;}.ecf-success-icon.svelte-1cgy5x5 {display:flex;align-items:center;justify-content:center;width:3rem;height:3rem;margin:0 auto 1rem;border-radius:9999px;background:var(--ecf-success-bg, #c49e5a);color:#fff;}.ecf-success-icon.svelte-1cgy5x5 svg:where(.svelte-1cgy5x5) {width:1.5rem;height:1.5rem;}.ecf-success.svelte-1cgy5x5 p:where(.svelte-1cgy5x5) {margin:0;font-size:1.25rem;}"
12724
+ }, di(["click"]), customElements.define("event-contact-form", Co(ph, {
12725
+ heading: {
12726
+ attribute: "heading",
12727
+ type: "String"
12728
+ },
12729
+ tagline: {
12730
+ attribute: "tagline",
12731
+ type: "String"
12732
+ },
12733
+ description: {
12734
+ attribute: "description",
12735
+ type: "String"
12736
+ },
12737
+ eventTypes: {
12738
+ attribute: "event-types",
12739
+ type: "Array"
12740
+ },
12741
+ minGuests: {
12742
+ attribute: "min-guests",
12743
+ type: "Number"
12744
+ },
12745
+ submitNote: {
12746
+ attribute: "submit-note",
12747
+ type: "String"
12748
+ },
12749
+ submitInquiry: { type: "Object" }
12750
+ }, [], [], { mode: "open" }));
12452
12751
  }));
12453
12752
  //#endregion
12454
12753
  //#region src/index.ts
12455
- typeof customElements < "u" && (Promise.resolve().then(() => (Pc(), Ec)), Promise.resolve().then(() => (xl(), sl)), Promise.resolve().then(() => (eh(), Pm)), Promise.resolve().then(() => (dh(), nh)));
12754
+ typeof customElements < "u" && (Promise.resolve().then(() => (Pc(), Ec)), Promise.resolve().then(() => (xl(), sl)), Promise.resolve().then(() => (eh(), Pm)), Promise.resolve().then(() => (dh(), nh)), Promise.resolve().then(() => (Oh(), fh)));
12456
12755
  //#endregion
package/dist/index.d.ts CHANGED
@@ -111,16 +111,41 @@ export interface EventInquiriesFeedElement extends HTMLElement {
111
111
  emptyLabel?: string;
112
112
  }
113
113
 
114
+ export interface EventInquiryPayload {
115
+ name: string;
116
+ email: string;
117
+ phone: string;
118
+ date: string;
119
+ guests: number;
120
+ eventType: string;
121
+ format: string;
122
+ message: string;
123
+ }
124
+
125
+ export type SubmitInquiryResult = { ok: true } | { ok: false; error?: string };
126
+
127
+ export interface EventContactFormElement extends HTMLElement {
128
+ heading?: string;
129
+ tagline?: string;
130
+ description?: string;
131
+ eventTypes?: string[];
132
+ minGuests?: number;
133
+ submitNote?: string;
134
+ submitInquiry?: (payload: EventInquiryPayload) => Promise<SubmitInquiryResult>;
135
+ }
136
+
114
137
  declare global {
115
138
  interface HTMLElementTagNameMap {
116
139
  'reservation-bar': ReservationBarElement;
117
140
  'booking-flow': BookingFlowElement;
118
141
  'menu-section': MenuSectionElement;
119
142
  'event-inquiries-feed': EventInquiriesFeedElement;
143
+ 'event-contact-form': EventContactFormElement;
120
144
  }
121
145
 
122
146
  interface HTMLElementEventMap {
123
147
  reservationchange: CustomEvent<{ date: string; guests: number; time: string }>;
124
148
  'booking-confirmed': CustomEvent<{ date: string; time: string; guests: number }>;
149
+ 'inquiry-submitted': CustomEvent<EventInquiryPayload>;
125
150
  }
126
151
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgebuild/hotal-ui",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "Reusable Svelte UI components for booking and reservation experiences.",
5
5
  "type": "module",
6
6
  "license": "MIT",