{"version":3,"sources":["../../src/lib/schedulingTimezones.ts"],"names":[],"mappings":"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","file":"schedulingTimezones.mjs","sourcesContent":["// Curated IANA timezone list grouped by region.\n//\n// Owners pick once at setup, customers never see this. Goal: cover the common\n// cases without drowning the dropdown. Anything exotic falls back to the\n// Custom… text input. Templates can pass their own groups via\n// SchedulingSettingsPanel.Timezone's `groups` prop, or pass `null` to render\n// a free-text input only.\n\nexport interface SchedulingTimezoneOption {\n  tz: string;\n  label: string;\n}\n\nexport interface SchedulingTimezoneGroup {\n  region: string;\n  values: SchedulingTimezoneOption[];\n}\n\nexport const DEFAULT_TIMEZONE_GROUPS: SchedulingTimezoneGroup[] = [\n  {\n    region: 'United States',\n    values: [\n      { tz: 'America/New_York', label: 'Eastern (New York)' },\n      { tz: 'America/Chicago', label: 'Central (Chicago)' },\n      { tz: 'America/Denver', label: 'Mountain (Denver)' },\n      { tz: 'America/Phoenix', label: 'Mountain — no DST (Phoenix)' },\n      { tz: 'America/Los_Angeles', label: 'Pacific (Los Angeles)' },\n      { tz: 'America/Anchorage', label: 'Alaska (Anchorage)' },\n      { tz: 'Pacific/Honolulu', label: 'Hawaii (Honolulu)' },\n    ],\n  },\n  {\n    region: 'Canada',\n    values: [\n      { tz: 'America/Toronto', label: 'Eastern (Toronto)' },\n      { tz: 'America/Vancouver', label: 'Pacific (Vancouver)' },\n    ],\n  },\n  {\n    region: 'Australia & New Zealand',\n    values: [\n      { tz: 'Australia/Sydney', label: 'AEST/AEDT (Sydney)' },\n      { tz: 'Australia/Melbourne', label: 'AEST/AEDT (Melbourne)' },\n      { tz: 'Australia/Brisbane', label: 'AEST — no DST (Brisbane)' },\n      { tz: 'Australia/Perth', label: 'AWST (Perth)' },\n      { tz: 'Pacific/Auckland', label: 'NZST/NZDT (Auckland)' },\n    ],\n  },\n  {\n    region: 'Europe',\n    values: [\n      { tz: 'Europe/London', label: 'GMT/BST (London)' },\n      { tz: 'Europe/Dublin', label: 'GMT/IST (Dublin)' },\n      { tz: 'Europe/Paris', label: 'CET/CEST (Paris)' },\n      { tz: 'Europe/Berlin', label: 'CET/CEST (Berlin)' },\n      { tz: 'Europe/Madrid', label: 'CET/CEST (Madrid)' },\n      { tz: 'Europe/Stockholm', label: 'CET/CEST (Stockholm)' },\n    ],\n  },\n  {\n    region: 'Asia',\n    values: [\n      { tz: 'Asia/Tokyo', label: 'JST (Tokyo)' },\n      { tz: 'Asia/Singapore', label: 'SGT (Singapore)' },\n      { tz: 'Asia/Hong_Kong', label: 'HKT (Hong Kong)' },\n      { tz: 'Asia/Dubai', label: 'GST (Dubai)' },\n      { tz: 'Asia/Kolkata', label: 'IST (Kolkata)' },\n    ],\n  },\n];\n\n/**\n * Membership lookup. Useful for rendering a dropdown vs. switching to the\n * \"Custom…\" text input when the current value isn't in the curated set.\n */\nexport function isInTimezoneGroups(\n  tz: string,\n  groups: SchedulingTimezoneGroup[],\n): boolean {\n  for (const g of groups) {\n    for (const v of g.values) if (v.tz === tz) return true;\n  }\n  return false;\n}\n\n/**\n * Detect the browser's IANA timezone name. Returns null in non-browser\n * environments (SSR, tests) or when the platform doesn't expose\n * Intl.DateTimeFormat().resolvedOptions().\n */\nexport function detectBrowserTimezone(): string | null {\n  try {\n    const tz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n    return tz || null;\n  } catch {\n    return null;\n  }\n}\n"]}