{"version":3,"sources":["../src/components/PeriodSelector/PeriodSelector.tsx","../src/components/PeriodSelector/types.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { Menu, MenuContent, MenuItem } from '../Menu/Menu';\nimport type { PeriodSelectorProps, PeriodTab } from './types';\nimport { PERIOD_OPTIONS } from './types';\n\n/**\n * PeriodSelector - Component for selecting time periods\n *\n * Provides a menu-based selector for common time periods (7 days, 1 month, etc.)\n * Uses the Menu component with breadcrumb variant for a clean tab-like appearance.\n *\n * @example\n * ```tsx\n * const [period, setPeriod] = useState('1_MONTH');\n *\n * <PeriodSelector\n *   value={period}\n *   onChange={setPeriod}\n * />\n * ```\n *\n * @example With excluded values\n * ```tsx\n * <PeriodSelector\n *   value={period}\n *   onChange={setPeriod}\n *   excludeValues={['3_MONTHS']}\n * />\n * ```\n *\n * @example With custom options\n * ```tsx\n * <PeriodSelector\n *   value={period}\n *   onChange={setPeriod}\n *   options={[\n *     { value: '7_DAYS', label: '7 dias' },\n *     { value: '30_DAYS', label: '30 dias' },\n *   ]}\n * />\n * ```\n */\nexport function PeriodSelector({\n  value,\n  onChange,\n  defaultValue = '1_MONTH',\n  options = PERIOD_OPTIONS as readonly PeriodTab[],\n  excludeValues = [],\n  className,\n}: Readonly<PeriodSelectorProps>) {\n  // Filter out excluded values\n  const filteredOptions = useMemo((): readonly PeriodTab[] => {\n    if (excludeValues.length === 0) {\n      return options;\n    }\n    return options.filter(\n      (opt: PeriodTab) => !excludeValues.includes(opt.value)\n    );\n  }, [options, excludeValues]);\n\n  return (\n    <Menu\n      defaultValue={defaultValue}\n      value={value}\n      variant=\"breadcrumb\"\n      className={`!px-0 ${className ?? ''}`}\n      onValueChange={onChange}\n    >\n      <MenuContent className=\"!px-0\">\n        {filteredOptions.map((tab: PeriodTab) => (\n          <MenuItem\n            key={tab.value}\n            variant=\"menu2\"\n            value={tab.value}\n            className=\"w-full flex items-center justify-center\"\n          >\n            {tab.label}\n          </MenuItem>\n        ))}\n      </MenuContent>\n    </Menu>\n  );\n}\n\nexport default PeriodSelector;\n","/**\n * Period enum for time-based filtering\n */\nexport enum Period {\n  SEVEN_DAYS = '7_DAYS',\n  ONE_MONTH = '1_MONTH',\n  THREE_MONTHS = '3_MONTHS',\n  SIX_MONTHS = '6_MONTHS',\n  ONE_YEAR = '1_YEAR',\n}\n\n/**\n * Period tab configuration\n */\nexport interface PeriodTab {\n  value: string;\n  label: string;\n}\n\n/**\n * Default period tabs matching the design system\n */\nexport const PERIOD_OPTIONS = [\n  { value: Period.SEVEN_DAYS, label: '7 dias' },\n  { value: Period.ONE_MONTH, label: '1 mês' },\n  { value: Period.THREE_MONTHS, label: '3 meses' },\n  { value: Period.SIX_MONTHS, label: '6 meses' },\n  { value: Period.ONE_YEAR, label: '1 ano' },\n] as const;\n\n/**\n * Period value type (derived from PERIOD_OPTIONS)\n */\nexport type PeriodValue = (typeof PERIOD_OPTIONS)[number]['value'];\n\n/**\n * Props for PeriodSelector component\n */\nexport interface PeriodSelectorProps {\n  /** Currently selected period value */\n  value: string;\n  /** Callback when period changes */\n  onChange: (value: string) => void;\n  /** Default value (used for uncontrolled mode) */\n  defaultValue?: string;\n  /** Custom period options (defaults to PERIOD_OPTIONS) */\n  options?: readonly PeriodTab[];\n  /** Period values to exclude from the list */\n  excludeValues?: string[];\n  /** Additional className for the container */\n  className?: string;\n}\n"],"mappings":";;;;;;;AAAA,SAAS,eAAe;;;ACGjB,IAAK,SAAL,kBAAKA,YAAL;AACL,EAAAA,QAAA,gBAAa;AACb,EAAAA,QAAA,eAAY;AACZ,EAAAA,QAAA,kBAAe;AACf,EAAAA,QAAA,gBAAa;AACb,EAAAA,QAAA,cAAW;AALD,SAAAA;AAAA,GAAA;AAmBL,IAAM,iBAAiB;AAAA,EAC5B,EAAE,OAAO,2BAAmB,OAAO,SAAS;AAAA,EAC5C,EAAE,OAAO,2BAAkB,OAAO,WAAQ;AAAA,EAC1C,EAAE,OAAO,+BAAqB,OAAO,UAAU;AAAA,EAC/C,EAAE,OAAO,6BAAmB,OAAO,UAAU;AAAA,EAC7C,EAAE,OAAO,yBAAiB,OAAO,QAAQ;AAC3C;;;AD0CU;AA5BH,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,UAAU;AAAA,EACV,gBAAgB,CAAC;AAAA,EACjB;AACF,GAAkC;AAEhC,QAAM,kBAAkB,QAAQ,MAA4B;AAC1D,QAAI,cAAc,WAAW,GAAG;AAC9B,aAAO;AAAA,IACT;AACA,WAAO,QAAQ;AAAA,MACb,CAAC,QAAmB,CAAC,cAAc,SAAS,IAAI,KAAK;AAAA,IACvD;AAAA,EACF,GAAG,CAAC,SAAS,aAAa,CAAC;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,WAAW,SAAS,aAAa,EAAE;AAAA,MACnC,eAAe;AAAA,MAEf,8BAAC,eAAY,WAAU,SACpB,0BAAgB,IAAI,CAAC,QACpB;AAAA,QAAC;AAAA;AAAA,UAEC,SAAQ;AAAA,UACR,OAAO,IAAI;AAAA,UACX,WAAU;AAAA,UAET,cAAI;AAAA;AAAA,QALA,IAAI;AAAA,MAMX,CACD,GACH;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,yBAAQ;","names":["Period"]}