@feelflow/ffid-sdk 2.6.0 → 2.8.0

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.
@@ -621,7 +621,7 @@ function createMembersMethods(deps) {
621
621
  }
622
622
 
623
623
  // src/client/version-check.ts
624
- var SDK_VERSION = "2.6.0";
624
+ var SDK_VERSION = "2.8.0";
625
625
  var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
626
626
  var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
627
627
  function sdkHeaders() {
@@ -1565,6 +1565,168 @@ function createContractWizardMethods(deps) {
1565
1565
  };
1566
1566
  }
1567
1567
 
1568
+ // src/newsletter/ffid-newsletter-client.ts
1569
+ var EXT_SUBSCRIBE_ENDPOINT2 = "/api/v1/ext/newsletter/subscribe";
1570
+ var CONFIRM_ENDPOINT = "/api/newsletter/confirm";
1571
+ var UNSUBSCRIBE_ENDPOINT = "/api/newsletter/unsubscribe";
1572
+ function trimOrEmpty(s) {
1573
+ return typeof s === "string" ? s.trim() : "";
1574
+ }
1575
+ async function postPublic(url, init, opts) {
1576
+ let response;
1577
+ try {
1578
+ response = await fetch(url, init);
1579
+ } catch (err) {
1580
+ return {
1581
+ error: opts.createError(
1582
+ "NETWORK_ERROR",
1583
+ err instanceof Error ? err.message : "\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F"
1584
+ )
1585
+ };
1586
+ }
1587
+ if (!response.ok) {
1588
+ try {
1589
+ const body = await response.json();
1590
+ if (body?.error?.code || body?.error?.message) {
1591
+ return {
1592
+ error: opts.createError(
1593
+ body.error.code ?? "UNKNOWN_ERROR",
1594
+ body.error.message ?? `${opts.fallbackMessage} (status: ${response.status})`
1595
+ )
1596
+ };
1597
+ }
1598
+ } catch {
1599
+ }
1600
+ return {
1601
+ error: opts.createError(
1602
+ "NETWORK_ERROR",
1603
+ `${opts.fallbackMessage} (status: ${response.status})`
1604
+ )
1605
+ };
1606
+ }
1607
+ return { data: opts.success };
1608
+ }
1609
+ function createNewsletterMethods(deps) {
1610
+ const { fetchWithAuth, baseUrl, createError } = deps;
1611
+ async function subscribe(params) {
1612
+ const email = trimOrEmpty(params.email);
1613
+ const source = trimOrEmpty(params.source);
1614
+ if (!email) {
1615
+ return { error: createError("VALIDATION_ERROR", "email \u306F\u5FC5\u9808\u3067\u3059") };
1616
+ }
1617
+ if (!source) {
1618
+ return { error: createError("VALIDATION_ERROR", "source \u306F\u5FC5\u9808\u3067\u3059") };
1619
+ }
1620
+ if (!Array.isArray(params.types) || params.types.length === 0) {
1621
+ return {
1622
+ error: createError(
1623
+ "VALIDATION_ERROR",
1624
+ "types \u306B\u306F1\u3064\u4EE5\u4E0A\u306E newsletter \u7A2E\u5225\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044"
1625
+ )
1626
+ };
1627
+ }
1628
+ return fetchWithAuth(
1629
+ EXT_SUBSCRIBE_ENDPOINT2,
1630
+ {
1631
+ method: "POST",
1632
+ body: JSON.stringify({
1633
+ email,
1634
+ types: params.types,
1635
+ source,
1636
+ locale: params.locale
1637
+ })
1638
+ }
1639
+ );
1640
+ }
1641
+ async function confirm(params) {
1642
+ const token = trimOrEmpty(params.token);
1643
+ if (!token) {
1644
+ return { error: createError("VALIDATION_ERROR", "token \u306F\u5FC5\u9808\u3067\u3059") };
1645
+ }
1646
+ return postPublic(
1647
+ `${baseUrl}${CONFIRM_ENDPOINT}`,
1648
+ {
1649
+ method: "POST",
1650
+ headers: { "Content-Type": "application/json" },
1651
+ body: JSON.stringify({ token })
1652
+ },
1653
+ {
1654
+ success: { ok: true },
1655
+ createError,
1656
+ fallbackMessage: "\u78BA\u8A8D\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u5931\u6557\u3057\u307E\u3057\u305F"
1657
+ }
1658
+ );
1659
+ }
1660
+ async function unsubscribe(params) {
1661
+ const token = trimOrEmpty(params.token);
1662
+ if (!token) {
1663
+ return { error: createError("VALIDATION_ERROR", "token \u306F\u5FC5\u9808\u3067\u3059") };
1664
+ }
1665
+ const url = new URL(`${baseUrl}${UNSUBSCRIBE_ENDPOINT}`);
1666
+ url.searchParams.set("token", token);
1667
+ return postPublic(
1668
+ url.toString(),
1669
+ { method: "POST" },
1670
+ {
1671
+ success: { ok: true },
1672
+ createError,
1673
+ fallbackMessage: "\u89E3\u9664\u30EA\u30AF\u30A8\u30B9\u30C8\u304C\u5931\u6557\u3057\u307E\u3057\u305F"
1674
+ }
1675
+ );
1676
+ }
1677
+ return { subscribe, confirm, unsubscribe };
1678
+ }
1679
+
1680
+ // src/inquiry/ffid-inquiry-client.ts
1681
+ var EXT_INQUIRY_ENDPOINT = "/api/v1/ext/inquiry";
1682
+ function trimOrEmpty2(s) {
1683
+ return typeof s === "string" ? s.trim() : "";
1684
+ }
1685
+ function createInquiryMethods(deps) {
1686
+ const { fetchWithAuth, createError } = deps;
1687
+ async function create(params) {
1688
+ const email = trimOrEmpty2(params.email);
1689
+ const name = trimOrEmpty2(params.name);
1690
+ const message = trimOrEmpty2(params.message);
1691
+ const termsVersion = trimOrEmpty2(params.termsVersion);
1692
+ const privacyVersion = trimOrEmpty2(params.privacyVersion);
1693
+ if (!email) return { error: createError("VALIDATION_ERROR", "email \u306F\u5FC5\u9808\u3067\u3059") };
1694
+ if (!name) return { error: createError("VALIDATION_ERROR", "name \u306F\u5FC5\u9808\u3067\u3059") };
1695
+ if (!message) return { error: createError("VALIDATION_ERROR", "message \u306F\u5FC5\u9808\u3067\u3059") };
1696
+ if (!termsVersion) {
1697
+ return { error: createError("VALIDATION_ERROR", "termsVersion \u306F\u5FC5\u9808\u3067\u3059") };
1698
+ }
1699
+ if (!privacyVersion) {
1700
+ return { error: createError("VALIDATION_ERROR", "privacyVersion \u306F\u5FC5\u9808\u3067\u3059") };
1701
+ }
1702
+ const inquiryFollowupOptIn = params.inquiryFollowupOptIn === true;
1703
+ const generalNewsletterOptIn = params.generalNewsletterOptIn === true;
1704
+ return fetchWithAuth(EXT_INQUIRY_ENDPOINT, {
1705
+ method: "POST",
1706
+ body: JSON.stringify({
1707
+ email,
1708
+ name,
1709
+ message,
1710
+ category: params.category,
1711
+ company: params.company,
1712
+ phone: params.phone,
1713
+ locale: params.locale,
1714
+ termsVersion,
1715
+ privacyVersion,
1716
+ // The ext endpoint still accepts the legacy single-flag field, but
1717
+ // the SDK always submits the 2-layer model. `newsletterOptIn` is
1718
+ // passed as the union of the two new flags only to satisfy the
1719
+ // current schema's required bool — the server preferentially
1720
+ // reads `inquiryFollowupOptIn` / `generalNewsletterOptIn`.
1721
+ newsletterOptIn: inquiryFollowupOptIn || generalNewsletterOptIn,
1722
+ inquiryFollowupOptIn,
1723
+ generalNewsletterOptIn
1724
+ })
1725
+ });
1726
+ }
1727
+ return { create };
1728
+ }
1729
+
1568
1730
  // src/client/ffid-client.ts
1569
1731
  var UNAUTHORIZED_STATUS2 = 401;
1570
1732
  var SDK_LOG_PREFIX = "[FFID SDK]";
@@ -1840,6 +2002,15 @@ function createFFIDClient(config) {
1840
2002
  createError,
1841
2003
  errorCodes: FFID_ERROR_CODES
1842
2004
  });
2005
+ const newsletter = createNewsletterMethods({
2006
+ fetchWithAuth,
2007
+ baseUrl,
2008
+ createError
2009
+ });
2010
+ const inquiry = createInquiryMethods({
2011
+ fetchWithAuth,
2012
+ createError
2013
+ });
1843
2014
  const verifyAccessToken = createVerifyAccessToken({
1844
2015
  authMode,
1845
2016
  baseUrl,
@@ -1894,6 +2065,10 @@ function createFFIDClient(config) {
1894
2065
  confirmPasswordReset,
1895
2066
  sendOtp,
1896
2067
  verifyOtp,
2068
+ /** Newsletter methods (subscribe / confirm / unsubscribe) */
2069
+ newsletter,
2070
+ /** Inquiry methods (create) */
2071
+ inquiry,
1897
2072
  /** Token store (token mode only) */
1898
2073
  tokenStore,
1899
2074
  /** Resolved auth mode */
@@ -3238,15 +3413,372 @@ function FFIDAnnouncementList({
3238
3413
  );
3239
3414
  }
3240
3415
 
3416
+ // src/inquiry/types.ts
3417
+ var FFID_INQUIRY_CATEGORIES = [
3418
+ "general",
3419
+ "sales",
3420
+ "support",
3421
+ "partnership",
3422
+ "press",
3423
+ "other"
3424
+ ];
3425
+ var DEFAULT_CATEGORY_LABELS_JA = {
3426
+ general: "\u4E00\u822C\u7684\u306A\u304A\u554F\u3044\u5408\u308F\u305B",
3427
+ sales: "\u3054\u5C0E\u5165\u30FB\u304A\u898B\u7A4D\u3082\u308A",
3428
+ support: "\u30B5\u30DD\u30FC\u30C8",
3429
+ partnership: "\u30D1\u30FC\u30C8\u30CA\u30FC\u30B7\u30C3\u30D7",
3430
+ press: "\u53D6\u6750\u30FB\u30D7\u30EC\u30B9",
3431
+ other: "\u305D\u306E\u4ED6"
3432
+ };
3433
+ function defaultCategories() {
3434
+ return FFID_INQUIRY_CATEGORIES.map((value) => ({
3435
+ value,
3436
+ label: DEFAULT_CATEGORY_LABELS_JA[value]
3437
+ }));
3438
+ }
3439
+ var labelStyle = {
3440
+ display: "block",
3441
+ fontSize: FONT_SIZE_SM,
3442
+ fontWeight: 500,
3443
+ marginBottom: SPACING_SM
3444
+ };
3445
+ var inputStyle = {
3446
+ width: "100%",
3447
+ padding: `${SPACING_SM}px ${SPACING_MD}px`,
3448
+ fontSize: FONT_SIZE_SM,
3449
+ border: BORDER_DEFAULT,
3450
+ borderRadius: BORDER_RADIUS_SM,
3451
+ background: COLOR_BG_WHITE,
3452
+ boxSizing: "border-box"
3453
+ };
3454
+ var readOnlyStyle = {
3455
+ ...inputStyle,
3456
+ background: "#f9fafb",
3457
+ color: COLOR_TEXT_MUTED,
3458
+ cursor: "not-allowed"
3459
+ };
3460
+ var fieldsetStyle = {
3461
+ marginBottom: SPACING_LG
3462
+ };
3463
+ var errorTextStyle = {
3464
+ fontSize: FONT_SIZE_XS,
3465
+ color: COLOR_DANGER,
3466
+ marginTop: SPACING_XS
3467
+ };
3468
+ var submitButtonStyle = {
3469
+ padding: `${SPACING_MD}px ${SPACING_LG}px`,
3470
+ fontSize: FONT_SIZE_SM,
3471
+ fontWeight: 600,
3472
+ color: COLOR_BG_WHITE,
3473
+ background: COLOR_PRIMARY,
3474
+ border: "none",
3475
+ borderRadius: BORDER_RADIUS_MD,
3476
+ cursor: "pointer"
3477
+ };
3478
+ function FFIDInquiryForm({
3479
+ mode,
3480
+ prefill,
3481
+ organizations = [],
3482
+ preselectedOrganizationId,
3483
+ categories,
3484
+ termsVersion,
3485
+ privacyVersion,
3486
+ termsHref,
3487
+ privacyHref,
3488
+ turnstileToken = null,
3489
+ turnstileSlot,
3490
+ onSubmit,
3491
+ locale = "ja",
3492
+ className
3493
+ }) {
3494
+ const isAuth = mode === "authenticated";
3495
+ const categoryOptions = react.useMemo(
3496
+ () => categories ?? defaultCategories(),
3497
+ [categories]
3498
+ );
3499
+ const initialOrgId = react.useMemo(() => {
3500
+ if (!isAuth) return null;
3501
+ if (preselectedOrganizationId !== void 0) return preselectedOrganizationId;
3502
+ if (organizations.length === 1) return organizations[0].id;
3503
+ return null;
3504
+ }, [isAuth, organizations, preselectedOrganizationId]);
3505
+ const [name, setName] = react.useState(prefill?.name ?? "");
3506
+ const [email, setEmail] = react.useState(prefill?.email ?? "");
3507
+ const [company, setCompany] = react.useState("");
3508
+ const [phone, setPhone] = react.useState("");
3509
+ const [category, setCategory] = react.useState(categoryOptions[0]?.value ?? "general");
3510
+ const [message, setMessage] = react.useState("");
3511
+ const [organizationId, setOrganizationId] = react.useState(initialOrgId);
3512
+ const [inquiryFollowup, setInquiryFollowup] = react.useState(false);
3513
+ const [general, setGeneral] = react.useState(false);
3514
+ const [agreedLegal, setAgreedLegal] = react.useState(false);
3515
+ const [submitting, setSubmitting] = react.useState(false);
3516
+ const [formError, setFormError] = react.useState(null);
3517
+ const [successMessage, setSuccessMessage] = react.useState(null);
3518
+ async function handleSubmit(e) {
3519
+ e.preventDefault();
3520
+ setFormError(null);
3521
+ if (!agreedLegal) {
3522
+ setFormError("\u5229\u7528\u898F\u7D04\u3068\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC\u30DD\u30EA\u30B7\u30FC\u3078\u306E\u540C\u610F\u304C\u5FC5\u8981\u3067\u3059\u3002");
3523
+ return;
3524
+ }
3525
+ if (!message.trim()) {
3526
+ setFormError("\u304A\u554F\u3044\u5408\u308F\u305B\u5185\u5BB9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
3527
+ return;
3528
+ }
3529
+ if (!isAuth) {
3530
+ if (!name.trim() || !email.trim()) {
3531
+ setFormError("\u304A\u540D\u524D\u3068\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
3532
+ return;
3533
+ }
3534
+ }
3535
+ setSubmitting(true);
3536
+ try {
3537
+ const result = await onSubmit({
3538
+ name: name.trim(),
3539
+ email: email.trim(),
3540
+ company: company.trim() || null,
3541
+ phone: phone.trim() || null,
3542
+ category,
3543
+ message: message.trim(),
3544
+ organizationId,
3545
+ inquiryFollowupOptIn: inquiryFollowup,
3546
+ generalNewsletterOptIn: general,
3547
+ termsVersion,
3548
+ privacyVersion,
3549
+ turnstileToken: turnstileToken ?? null,
3550
+ locale
3551
+ });
3552
+ if (result.ok) {
3553
+ setSuccessMessage(
3554
+ result.message ?? (result.requiresDoubleOptIn ? "\u304A\u554F\u3044\u5408\u308F\u305B\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3057\u305F\u3002\u30E1\u30EB\u30DE\u30AC\u306E\u8CFC\u8AAD\u78BA\u8A8D\u30E1\u30FC\u30EB\u3092\u9001\u4FE1\u3057\u307E\u3057\u305F\u306E\u3067\u3054\u78BA\u8A8D\u304F\u3060\u3055\u3044\u3002" : "\u304A\u554F\u3044\u5408\u308F\u305B\u3092\u53D7\u3051\u4ED8\u3051\u307E\u3057\u305F\u3002\u62C5\u5F53\u8005\u3088\u308A\u3054\u9023\u7D61\u3044\u305F\u3057\u307E\u3059\u3002")
3555
+ );
3556
+ setMessage("");
3557
+ } else {
3558
+ setFormError(result.message);
3559
+ }
3560
+ } catch (err) {
3561
+ setFormError(
3562
+ err instanceof Error ? err.message : "\u9001\u4FE1\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u6642\u9593\u3092\u304A\u3044\u3066\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002"
3563
+ );
3564
+ } finally {
3565
+ setSubmitting(false);
3566
+ }
3567
+ }
3568
+ if (successMessage) {
3569
+ return /* @__PURE__ */ jsxRuntime.jsx(
3570
+ "div",
3571
+ {
3572
+ role: "status",
3573
+ className,
3574
+ style: {
3575
+ padding: SPACING_LG,
3576
+ border: BORDER_DEFAULT,
3577
+ borderRadius: BORDER_RADIUS_MD,
3578
+ background: "#f0fdf4",
3579
+ color: "#166534",
3580
+ fontSize: FONT_SIZE_SM
3581
+ },
3582
+ children: successMessage
3583
+ }
3584
+ );
3585
+ }
3586
+ const showOrgBlock = isAuth && organizations.length >= 1;
3587
+ return /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className, noValidate: true, children: [
3588
+ showOrgBlock && /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3589
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-org", children: "\u554F\u3044\u5408\u308F\u305B\u308B\u7ACB\u5834" }),
3590
+ /* @__PURE__ */ jsxRuntime.jsxs(
3591
+ "select",
3592
+ {
3593
+ id: "ffid-inquiry-org",
3594
+ style: inputStyle,
3595
+ value: organizationId ?? "",
3596
+ onChange: (e) => setOrganizationId(e.target.value || null),
3597
+ children: [
3598
+ /* @__PURE__ */ jsxRuntime.jsx("option", { value: "", children: "\u500B\u4EBA\u3068\u3057\u3066\u554F\u3044\u5408\u308F\u305B\u308B" }),
3599
+ organizations.map((org) => /* @__PURE__ */ jsxRuntime.jsxs("option", { value: org.id, children: [
3600
+ org.name,
3601
+ " \u3068\u3057\u3066\u554F\u3044\u5408\u308F\u305B\u308B"
3602
+ ] }, org.id))
3603
+ ]
3604
+ }
3605
+ )
3606
+ ] }),
3607
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3608
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-name", children: "\u304A\u540D\u524D" }),
3609
+ /* @__PURE__ */ jsxRuntime.jsx(
3610
+ "input",
3611
+ {
3612
+ id: "ffid-inquiry-name",
3613
+ style: isAuth ? readOnlyStyle : inputStyle,
3614
+ type: "text",
3615
+ value: name,
3616
+ onChange: (e) => setName(e.target.value),
3617
+ readOnly: isAuth,
3618
+ required: true
3619
+ }
3620
+ )
3621
+ ] }),
3622
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3623
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-email", children: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9" }),
3624
+ /* @__PURE__ */ jsxRuntime.jsx(
3625
+ "input",
3626
+ {
3627
+ id: "ffid-inquiry-email",
3628
+ style: isAuth ? readOnlyStyle : inputStyle,
3629
+ type: "email",
3630
+ value: email,
3631
+ onChange: (e) => setEmail(e.target.value),
3632
+ readOnly: isAuth,
3633
+ required: true
3634
+ }
3635
+ )
3636
+ ] }),
3637
+ !isAuth && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3638
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3639
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-company", children: "\u4F1A\u793E\u540D (\u4EFB\u610F)" }),
3640
+ /* @__PURE__ */ jsxRuntime.jsx(
3641
+ "input",
3642
+ {
3643
+ id: "ffid-inquiry-company",
3644
+ style: inputStyle,
3645
+ type: "text",
3646
+ value: company,
3647
+ onChange: (e) => setCompany(e.target.value)
3648
+ }
3649
+ )
3650
+ ] }),
3651
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3652
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-phone", children: "\u96FB\u8A71\u756A\u53F7 (\u4EFB\u610F)" }),
3653
+ /* @__PURE__ */ jsxRuntime.jsx(
3654
+ "input",
3655
+ {
3656
+ id: "ffid-inquiry-phone",
3657
+ style: inputStyle,
3658
+ type: "tel",
3659
+ value: phone,
3660
+ onChange: (e) => setPhone(e.target.value)
3661
+ }
3662
+ )
3663
+ ] })
3664
+ ] }),
3665
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3666
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-category", children: "\u304A\u554F\u3044\u5408\u308F\u305B\u7A2E\u5225" }),
3667
+ /* @__PURE__ */ jsxRuntime.jsx(
3668
+ "select",
3669
+ {
3670
+ id: "ffid-inquiry-category",
3671
+ style: inputStyle,
3672
+ value: category,
3673
+ onChange: (e) => setCategory(e.target.value),
3674
+ children: categoryOptions.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt.value, children: opt.label }, opt.value))
3675
+ }
3676
+ )
3677
+ ] }),
3678
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { style: fieldsetStyle, children: [
3679
+ /* @__PURE__ */ jsxRuntime.jsx("label", { style: labelStyle, htmlFor: "ffid-inquiry-message", children: "\u304A\u554F\u3044\u5408\u308F\u305B\u5185\u5BB9" }),
3680
+ /* @__PURE__ */ jsxRuntime.jsx(
3681
+ "textarea",
3682
+ {
3683
+ id: "ffid-inquiry-message",
3684
+ style: { ...inputStyle, minHeight: 180, resize: "vertical" },
3685
+ value: message,
3686
+ onChange: (e) => setMessage(e.target.value),
3687
+ required: true,
3688
+ maxLength: 1e4
3689
+ }
3690
+ )
3691
+ ] }),
3692
+ /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { style: { ...fieldsetStyle, border: "none", padding: 0 }, children: [
3693
+ /* @__PURE__ */ jsxRuntime.jsx("legend", { style: { ...labelStyle, marginBottom: SPACING_SM }, children: "\u30CB\u30E5\u30FC\u30B9\u30EC\u30BF\u30FC\u8CFC\u8AAD (\u4EFB\u610F)" }),
3694
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { style: { display: "flex", alignItems: "center", gap: SPACING_SM, marginBottom: SPACING_SM }, children: [
3695
+ /* @__PURE__ */ jsxRuntime.jsx(
3696
+ "input",
3697
+ {
3698
+ type: "checkbox",
3699
+ checked: inquiryFollowup,
3700
+ onChange: (e) => setInquiryFollowup(e.target.checked)
3701
+ }
3702
+ ),
3703
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: FONT_SIZE_SM }, children: "\u304A\u554F\u3044\u5408\u308F\u305B\u306B\u95A2\u9023\u3059\u308B\u6848\u5185\u3092\u53D7\u3051\u53D6\u308B" })
3704
+ ] }),
3705
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { style: { display: "flex", alignItems: "center", gap: SPACING_SM }, children: [
3706
+ /* @__PURE__ */ jsxRuntime.jsx(
3707
+ "input",
3708
+ {
3709
+ type: "checkbox",
3710
+ checked: general,
3711
+ onChange: (e) => setGeneral(e.target.checked)
3712
+ }
3713
+ ),
3714
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: FONT_SIZE_SM }, children: "\u5B9A\u671F\u30CB\u30E5\u30FC\u30B9\u30EC\u30BF\u30FC\u3092\u53D7\u3051\u53D6\u308B" })
3715
+ ] })
3716
+ ] }),
3717
+ /* @__PURE__ */ jsxRuntime.jsx("div", { style: fieldsetStyle, children: /* @__PURE__ */ jsxRuntime.jsxs("label", { style: { display: "flex", alignItems: "flex-start", gap: SPACING_SM }, children: [
3718
+ /* @__PURE__ */ jsxRuntime.jsx(
3719
+ "input",
3720
+ {
3721
+ type: "checkbox",
3722
+ checked: agreedLegal,
3723
+ onChange: (e) => setAgreedLegal(e.target.checked),
3724
+ required: true
3725
+ }
3726
+ ),
3727
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { style: { fontSize: FONT_SIZE_SM }, children: [
3728
+ termsHref ? /* @__PURE__ */ jsxRuntime.jsxs("a", { href: termsHref, target: "_blank", rel: "noopener noreferrer", children: [
3729
+ "\u5229\u7528\u898F\u7D04 (v",
3730
+ termsVersion,
3731
+ ")"
3732
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3733
+ "\u5229\u7528\u898F\u7D04 (v",
3734
+ termsVersion,
3735
+ ")"
3736
+ ] }),
3737
+ " ",
3738
+ "\u3068",
3739
+ " ",
3740
+ privacyHref ? /* @__PURE__ */ jsxRuntime.jsxs("a", { href: privacyHref, target: "_blank", rel: "noopener noreferrer", children: [
3741
+ "\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC\u30DD\u30EA\u30B7\u30FC (v",
3742
+ privacyVersion,
3743
+ ")"
3744
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
3745
+ "\u30D7\u30E9\u30A4\u30D0\u30B7\u30FC\u30DD\u30EA\u30B7\u30FC (v",
3746
+ privacyVersion,
3747
+ ")"
3748
+ ] }),
3749
+ " ",
3750
+ "\u306B\u540C\u610F\u3057\u307E\u3059\u3002"
3751
+ ] })
3752
+ ] }) }),
3753
+ !isAuth && turnstileSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { style: fieldsetStyle, children: turnstileSlot }),
3754
+ formError && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", style: { ...errorTextStyle, marginBottom: SPACING_MD }, children: formError }),
3755
+ /* @__PURE__ */ jsxRuntime.jsx(
3756
+ "button",
3757
+ {
3758
+ type: "submit",
3759
+ style: {
3760
+ ...submitButtonStyle,
3761
+ opacity: submitting ? 0.6 : 1,
3762
+ cursor: submitting ? "not-allowed" : "pointer"
3763
+ },
3764
+ disabled: submitting,
3765
+ children: submitting ? "\u9001\u4FE1\u4E2D..." : "\u9001\u4FE1\u3059\u308B"
3766
+ }
3767
+ )
3768
+ ] });
3769
+ }
3770
+
3241
3771
  exports.DEFAULT_API_BASE_URL = DEFAULT_API_BASE_URL;
3242
3772
  exports.FFIDAnnouncementBadge = FFIDAnnouncementBadge;
3243
3773
  exports.FFIDAnnouncementList = FFIDAnnouncementList;
3774
+ exports.FFIDInquiryForm = FFIDInquiryForm;
3244
3775
  exports.FFIDLoginButton = FFIDLoginButton;
3245
3776
  exports.FFIDOrganizationSwitcher = FFIDOrganizationSwitcher;
3246
3777
  exports.FFIDProvider = FFIDProvider;
3247
3778
  exports.FFIDSubscriptionBadge = FFIDSubscriptionBadge;
3248
3779
  exports.FFIDUserMenu = FFIDUserMenu;
3249
3780
  exports.FFID_ANNOUNCEMENTS_ERROR_CODES = FFID_ANNOUNCEMENTS_ERROR_CODES;
3781
+ exports.FFID_INQUIRY_CATEGORIES = FFID_INQUIRY_CATEGORIES;
3250
3782
  exports.createFFIDAnnouncementsClient = createFFIDAnnouncementsClient;
3251
3783
  exports.createFFIDClient = createFFIDClient;
3252
3784
  exports.createTokenStore = createTokenStore;