@chellaa/react 0.2.3 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/palette.ts","../src/theme/typography.ts","../src/theme/spacing.ts","../src/theme/breakpoints.ts","../src/theme/shadows.ts","../src/theme/transitions.ts","../src/theme/zIndex.ts","../src/theme/createTheme.ts","../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts","../src/theme/ThemeScript.tsx","../src/system/shouldForwardProp.ts","../src/system/sx.ts","../src/system/componentOverrides.ts","../src/system/styled.ts","../src/utils/classNames.ts","../src/utils/composeEventHandlers.ts","../src/utils/getElementRef.ts","../src/hooks/useMergeRefs.ts","../src/primitives/Slot.tsx","../src/components/ButtonGroup/ButtonGroupContext.ts","../src/ripple/TouchRipple.tsx","../src/ripple/useRipple.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Box/Box.tsx","../src/components/Stack/Stack.tsx","../src/components/Flex/Flex.tsx","../src/components/Container/Container.tsx","../src/components/Grid/Grid.tsx","../src/components/Divider/Divider.tsx","../src/components/Typography/Typography.tsx","../src/components/Typography/Heading.tsx","../src/components/Typography/Text.tsx","../src/components/Typography/Paragraph.tsx","../src/components/Typography/Code.tsx","../src/components/Kbd/Kbd.tsx","../src/components/FormField/FormFieldContext.tsx","../src/components/Input/Input.tsx","../src/components/Input/TextField.tsx","../src/components/Input/InputAdornment.tsx","../src/components/Textarea/Textarea.tsx","../src/components/FormField/FormField.tsx","../src/components/FormField/FormLabel.tsx","../src/components/FormField/FormHelperText.tsx","../src/components/FormField/FormErrorMessage.tsx","../src/components/Checkbox/CheckboxContext.tsx","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableState.ts","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Radio/RadioContext.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/Switch/Switch.tsx","../src/components/Paper/Paper.tsx","../src/components/Card/CardContext.ts","../src/components/Card/Card.tsx","../src/primitives/Portal.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Popover/Popover.tsx","../src/components/Alert/Alert.tsx","../src/components/Snackbar/ToastProvider.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/Snackbar/useToast.ts","../src/components/Avatar/AvatarGroup.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Badge/Badge.tsx","../src/components/Table/Table.tsx"],"names":["React","EmotionThemeProvider","React2","useEmotionTheme","defaultTheme","jsx","isObject","resolved","React3","React4","React5","Slot","React6","React7","TouchRipple","pulsate","React8","React9","Button","React10","ButtonGroup","React11","Box","React12","Stack","React13","Flex","React14","Container","React15","Grid","React16","Divider","React17","Typography","React18","Heading","React19","Text","React20","Paragraph","React21","Code","React22","Kbd","React23","React24","InputBase","Input","jsxs","React25","TextField","React26","InputAdornment","React27","Textarea","React28","FormField","React29","FormLabel","React30","FormHelperText","React31","FormErrorMessage","React32","React33","Checkbox","Fragment","React34","React35","CheckboxGroup","React36","React37","Radio","React38","RadioGroup","React39","Switch","React40","Paper","React41","React42","CardRoot","CardHeader","CardMedia","CardBody","CardFooter","CardActions","CardTitle","CardDescription","React43","React44","Tooltip","React45","useFloating","autoUpdate","offset","flip","shift","arrow","useDismiss","useRole","useInteractions","PopoverTrigger","PopoverContent","PopoverArrow","PopoverClose","PopoverHeader","PopoverTitle","PopoverBody","PopoverFooter","React46","InfoIcon","SuccessIcon","WarningIcon","DangerIcon","AlertRoot","AlertIcon","AlertBody","AlertTitle","AlertDescription","AlertAction","AlertCloseButton","React47","ToastItem","React48","Snackbar","React49","React50","AvatarGroup","React51","AvatarImage","AvatarFallback","AvatarBadge","Avatar","React52","AccordionRoot","AccordionItem","AccordionHeader","AccordionTrigger","AccordionContent","AccordionIcon","React53","TabsRoot","TabsList","TabsTrigger","TabsContent","TabsIndicator","React54","SelectRoot","size","floatingSize","SelectTrigger","SelectValue","SelectIcon","SelectContent","SelectItem","SelectItemText","SelectItemIndicator","SelectGroup","SelectLabel","SelectSeparator","React55","rightBoundary","leftBoundary","PaginationRoot","PaginationList","PaginationItem","PaginationPrev","PaginationNext","PaginationFirst","PaginationLast","PaginationEllipsis","PaginationSizeSelect","PaginationJumper","ComboboxRoot","ComboboxControl","ComboboxInput","ComboboxTrigger","ComboboxContent","ComboboxItem","ComboboxGroupLabel","ComboboxGroup","ComboboxEmpty","ComboboxTag","ComboboxClear","React57","classNames","React58","React59"],"mappings":";;;;;;;;AAEO,IAAM,YAAA,GAAwB;AAAA,EACnC,IAAA,EAAM,OAAA;AAAA,EACN,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,qBAAA;AAAA,IACT,SAAA,EAAW,oBAAA;AAAA,IACX,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS,qBAAA;AAAA,EACT,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,qBAAA;AAAA,IACR,KAAA,EAAO,qBAAA;AAAA,IACP,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,qBAAA;AAAA,IACV,eAAA,EAAiB,IAAA;AAAA,IACjB,QAAA,EAAU,qBAAA;AAAA,IACV,kBAAA,EAAoB,qBAAA;AAAA,IACpB,KAAA,EAAO,qBAAA;AAAA,IACP,YAAA,EAAc;AAAA;AAElB;AAEO,IAAM,WAAA,GAAuB;AAAA,EAClC,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,KAAA,EAAO,SAAA;AAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,2BAAA;AAAA,IACT,SAAA,EAAW,0BAAA;AAAA,IACX,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS,2BAAA;AAAA,EACT,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,0BAAA;AAAA,IACR,KAAA,EAAO,2BAAA;AAAA,IACP,YAAA,EAAc,IAAA;AAAA,IACd,QAAA,EAAU,2BAAA;AAAA,IACV,eAAA,EAAiB,IAAA;AAAA,IACjB,QAAA,EAAU,0BAAA;AAAA,IACV,kBAAA,EAAoB,2BAAA;AAAA,IACpB,KAAA,EAAO,2BAAA;AAAA,IACP,YAAA,EAAc;AAAA;AAElB;AAEO,SAAS,aAAA,CAAc,OAAkB,OAAA,EAAkB;AAChE,EAAA,OAAO,IAAA,KAAS,SAAS,WAAA,GAAc,YAAA;AACzC;;;AC9HO,IAAM,iBAAA,GACX,mIAAA;AAEK,IAAM,iBAAA,GAAqC;AAAA,EAChD,UAAA,EAAY,iBAAA;AAAA,EACZ,QAAA,EAAU,EAAA;AAAA,EACV,eAAA,EAAiB,GAAA;AAAA,EACjB,iBAAA,EAAmB,GAAA;AAAA,EACnB,gBAAA,EAAkB,GAAA;AAAA,EAClB,cAAA,EAAgB,GAAA;AAAA,EAChB,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,QAAA;AAAA,IACV,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,MAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe,WAAA;AAAA,IACf,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACR,UAAA,EAAY,iBAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,IAAA;AAAA,IACZ,aAAA,EAAe,WAAA;AAAA,IACf,aAAA,EAAe;AAAA;AAEnB;;;AC/FO,SAAS,aAAA,CAAc,OAAO,CAAA,EAAG;AACtC,EAAA,OAAO,IAAI,OAAA,KAAyC;AAClD,IAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,GAAG,IAAI,CAAA,EAAA,CAAA;AAExC,IAAA,OAAO,OAAA,CACJ,GAAA,CAAI,CAAC,MAAA,KAAW;AACf,MAAA,IAAI,OAAO,MAAA,KAAW,QAAA,EAAU,OAAO,MAAA;AACvC,MAAA,OAAO,CAAA,EAAG,SAAS,IAAI,CAAA,EAAA,CAAA;AAAA,IACzB,CAAC,CAAA,CACA,IAAA,CAAK,GAAG,CAAA;AAAA,EACb,CAAA;AACF;AAEO,IAAM,cAAA,GAAiB,cAAc,CAAC;;;ACrBtC,IAAM,uBAAA,GAAyD;AAAA,EACpE,EAAA,EAAI,CAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEO,IAAM,iBAAkC,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI;AAErE,SAAS,kBACd,YAAA,EACa;AACb,EAAA,MAAM,MAAA,GAAwC;AAAA,IAC5C,GAAG,uBAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,OAAO,CAAA,GAAI,GAAA;AAEjB,EAAA,MAAM,EAAA,GAAK,CAAC,GAAA,KAAwC;AAClD,IAAA,MAAM,QAAQ,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAAM,OAAO,GAAG,CAAA;AACxD,IAAA,OAAO,qBAAqB,KAAK,CAAA,GAAA,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO,CAAC,GAAA,KAAwC;AACpD,IAAA,MAAM,QAAQ,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAAM,OAAO,GAAG,CAAA;AACxD,IAAA,OAAO,CAAA,kBAAA,EAAqB,QAAQ,IAAI,CAAA,GAAA,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CACd,KAAA,EACA,GAAA,KACW;AACX,IAAA,MAAM,MAAM,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC5D,IAAA,MAAM,MAAM,OAAO,GAAA,KAAQ,QAAA,GAAW,GAAA,GAAM,OAAO,GAAG,CAAA;AACtD,IAAA,OAAO,CAAA,kBAAA,EAAqB,GAAG,CAAA,mBAAA,EAAsB,GAAA,GAAM,IAAI,CAAA,GAAA,CAAA;AAAA,EACjE,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO,CAAC,GAAA,KAA+B;AAC3C,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,OAAA,CAAQ,GAAG,CAAA;AACxC,IAAA,IAAI,KAAA,KAAU,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AACvC,MAAA,OAAO,GAAG,GAAG,CAAA;AAAA,IACf;AACA,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,GAAQ,CAAC,CAAA;AACxC,IAAA,OAAO,UAAU,OAAA,CAAQ,GAAA,EAAK,OAAO,CAAA,GAAI,GAAG,GAAG,CAAA;AAAA,EACjD,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,IAAM,qBAAqB,iBAAA;;;AClDlC,IAAM,KAAA,GAAQ;AAAA,EACZ,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,QAAA,GAAW;AAAA,EACf,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,OAAA,GAAU;AAAA,EACd,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA;AAEO,SAAS,aAAA,GAA0B;AACxC,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACzB,IAAA,IAAI,CAAA,KAAM,GAAG,OAAO,MAAA;AACpB,IAAA,OAAO,CAAA,EAAG,CAAC,CAAA,kBAAA,EAAqB,QAAA,CAAS,CAAC,CAAC,CAAA,mBAAA,EAAsB,OAAA,CAAQ,CAAC,CAAC,CAAA,iBAAA,CAAA;AAAA,EAC7E,CAAC,CAAA;AACH;AAEO,IAAM,iBAAiB,aAAA;;;AClGvB,IAAM,kBAAA,GAAkC;AAAA,EAC7C,MAAA,EAAQ;AAAA,IACN,SAAA,EAAW,8BAAA;AAAA,IACX,OAAA,EAAS,8BAAA;AAAA,IACT,MAAA,EAAQ,4BAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,QAAA,EAAU;AAAA,IACR,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS,GAAA;AAAA,IACT,KAAA,EAAO,GAAA;AAAA,IACP,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS,GAAA;AAAA,IACT,cAAA,EAAgB,GAAA;AAAA,IAChB,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,OACE,KAAA,GAA2B,CAAC,KAAK,CAAA,EACjC,OAAA,GAII,EAAC,EACG;AACR,IAAA,MAAM;AAAA,MACJ,QAAA,GAAW,mBAAmB,QAAA,CAAS,QAAA;AAAA,MACvC,MAAA,GAAS,mBAAmB,MAAA,CAAO,SAAA;AAAA,MACnC,KAAA,GAAQ;AAAA,KACV,GAAI,OAAA;AAEJ,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KACtB,OAAO,MAAM,QAAA,GAAW,CAAA,GAAI,GAAG,CAAC,CAAA,EAAA,CAAA;AAElC,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KACnB,OAAO,MAAM,QAAA,GAAW,CAAA,GAAI,GAAG,CAAC,CAAA,EAAA,CAAA;AAElC,IAAA,MAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK,CAAA;AAExD,IAAA,OAAO,UAAA,CACJ,GAAA;AAAA,MACC,CAAC,IAAA,KACC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,cAAA,CAAe,QAAQ,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,KACvE,CACC,KAAK,IAAI,CAAA;AAAA,EACd;AACF;;;AC7CO,IAAM,aAAA,GAAwB;AAAA,EACnC,aAAA,EAAe,GAAA;AAAA,EACf,GAAA,EAAK,IAAA;AAAA,EACL,SAAA,EAAW,IAAA;AAAA,EACX,MAAA,EAAQ,IAAA;AAAA,EACR,MAAA,EAAQ,IAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,QAAA,EAAU,IAAA;AAAA,EACV,OAAA,EAAS;AACX;;;ACCA,SAAS,SAAS,IAAA,EAAwC;AACxD,EAAA,OAAO,QAAQ,OAAO,IAAA,KAAS,YAAY,CAAC,KAAA,CAAM,QAAQ,IAAI,CAAA;AAChE;AAEA,SAAS,SAAA,CAAU,QAAa,MAAA,EAAkB;AAChD,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,MAAA,EAAO;AAC3B,EAAA,IAAI,QAAA,CAAS,MAAM,CAAA,IAAK,QAAA,CAAS,MAAM,CAAA,EAAG;AACxC,IAAA,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACnC,MAAA,IAAI,QAAA,CAAS,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACzB,QAAA,IAAI,EAAE,OAAO,MAAA,CAAA,EAAS;AACpB,UAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,MAAA,CAAO,GAAG,CAAA,EAAG,CAAA;AAAA,QAC9C,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,GAAG,IAAI,SAAA,CAAU,MAAA,CAAO,GAAG,CAAA,EAAG,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,QAClD;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,EAAE,CAAC,GAAG,GAAG,MAAA,CAAO,GAAG,CAAA,EAAG,CAAA;AAAA,MAC9C;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,MAAA;AACT;AAeO,SAAS,WAAA,CAAY,OAAA,GAAwB,EAAC,EAAiB;AACpE,EAAA,MAAM,IAAA,GAAkB,OAAA,CAAQ,OAAA,EAAS,IAAA,IAAQ,OAAA;AACjD,EAAA,MAAM,WAAA,GAAc,cAAc,IAAI,CAAA;AAEtC,EAAA,MAAM,gBAAgB,OAAA,CAAQ,OAAA,GAC1B,UAAU,WAAA,EAAa,OAAA,CAAQ,OAAO,CAAA,GACtC,WAAA;AAEJ,EAAA,MAAM,mBAAmB,OAAA,CAAQ,UAAA,GAC7B,UAAU,iBAAA,EAAmB,OAAA,CAAQ,UAAU,CAAA,GAC/C,iBAAA;AAEJ,EAAA,MAAM,iBAAA,GAAoB,QAAQ,WAAA,EAAa,MAAA,GAC3C,kBAAkB,OAAA,CAAQ,WAAA,CAAY,MAAa,CAAA,GACnD,kBAAA;AAEJ,EAAA,MAAM,UACJ,OAAO,OAAA,CAAQ,OAAA,KAAY,UAAA,GACtB,QAAQ,OAAA,GACT,cAAA;AAEN,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,YAAA,EAAc,OAAA,CAAQ,KAAA,EAAO,YAAA,IAAgB;AAAA,GAC/C;AAEA,EAAA,MAAM,OAAA,GAAW,QAAQ,OAAA,IAAwB,cAAA;AACjD,EAAA,MAAM,cAAc,OAAA,CAAQ,WAAA,GACxB,UAAU,kBAAA,EAAoB,OAAA,CAAQ,WAAW,CAAA,GACjD,kBAAA;AACJ,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA,GACnB,UAAU,aAAA,EAAe,OAAA,CAAQ,MAAM,CAAA,GACvC,aAAA;AAEJ,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,aAAA;AAAA,IACT,UAAA,EAAY,gBAAA;AAAA,IACZ,OAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA,EAAa,iBAAA;AAAA,IACb,OAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA,EAAa,OAAA,CAAQ,UAAA,IAAsB;AAAC,GAC9C;AACF;AAEO,IAAM,YAAA,GAAe,YAAY,EAAE,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,IAAW;AAC/D,IAAM,gBAAA,GAAmB,YAAY,EAAE,OAAA,EAAS,EAAE,IAAA,EAAM,MAAA,IAAU;ACtElE,IAAM,YAAA,GAAqBA,OAAA,CAAA,aAAA;AAAA,EAChC;AACF,CAAA;AAYA,IAAM,kBAAA,GAAqB,8BAAA;AAEpB,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,KAAA,EAAO,eAAA;AAAA,EACP,cAAc,gBAAA,GAAmB,QAAA;AAAA,EACjC,UAAA,GAAa,eAAA;AAAA,EACb,YAAA,GAAe,IAAA;AAAA,EACf,MAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAuB;AACrB,EAAA,MAAM,aAAA,GAAsBA,mBAAW,YAAY,CAAA;AAEnD,EAAA,MAAM,CAAC,SAAA,EAAW,iBAAiB,CAAA,GAAUA,iBAAoB,MAAM;AACrE,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,gBAAA;AAC1C,IAAA,IAAI;AACF,MAAA,OAAQ,YAAA,CAAa,OAAA,CAAQ,UAAU,CAAA,IAAmB,gBAAA;AAAA,IAC5D,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,gBAAA;AAAA,IACT;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,iBAE1C,MAAM;AACN,IAAA,IACE,OAAO,WAAW,WAAA,IAClB,CAAC,gBACD,OAAO,MAAA,CAAO,eAAe,UAAA,EAC7B;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,MAAA,CAAO,UAAA,CAAW,kBAAkB,CAAA,CAAE,UAAU,MAAA,GAAS,OAAA;AAAA,EAClE,CAAC,CAAA;AAGD,EAAA,MAAM,aAAA,GAAwCA,gBAAQ,MAAM;AAC1D,IAAA,IAAI,cAAc,QAAA,EAAU;AAC1B,MAAA,OAAO,WAAA,IAAe,OAAA;AAAA,IACxB;AACA,IAAA,OAAO,SAAA,KAAc,SAAS,MAAA,GAAS,OAAA;AAAA,EACzC,CAAA,EAAG,CAAC,SAAA,EAAW,WAAW,CAAC,CAAA;AAG3B,EAAMA,kBAAU,MAAM;AACpB,IAAA,IACE,CAAC,gBACD,OAAO,MAAA,KAAW,eAClB,OAAO,MAAA,CAAO,eAAe,UAAA,EAC7B;AACA,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,UAAA,CAAW,kBAAkB,CAAA;AACvD,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAA2B;AAC/C,MAAA,cAAA,CAAe,CAAA,CAAE,OAAA,GAAU,MAAA,GAAS,OAAO,CAAA;AAAA,IAC7C,CAAA;AAEA,IAAA,IAAI,OAAO,UAAA,CAAW,gBAAA,KAAqB,UAAA,EAAY;AACrD,MAAA,UAAA,CAAW,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAClD,MAAA,OAAO,MAAM,UAAA,CAAW,mBAAA,CAAoB,QAAA,EAAU,YAAY,CAAA;AAAA,IACpE,CAAA,MAAA,IACE,OACE,UAAA,CAGA,WAAA,KAAgB,UAAA,EAClB;AACA,MACE,UAAA,CAGA,YAAY,YAAY,CAAA;AAC1B,MAAA,OAAO,MAEH,UAAA,CAGA,cAAA,CAAe,YAAY,CAAA;AAAA,IACjC;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAGjB,EAAA,MAAM,WAAA,GAAoBA,gBAAsB,MAAM;AACpD,IAAA,IAAI,eAAA,EAAiB;AAEnB,MAAA,OAAO,WAAA,CAAY;AAAA,QACjB,GAAI,eAAA;AAAA,QACJ,OAAA,EAAS;AAAA,UACP,IAAA,EAAM,aAAA;AAAA,UACN,GAAK,eAAA,CAAwB,OAAA,IAAW;AAAC;AAC3C,OACD,CAAA;AAAA,IACH;AACA,IAAA,OAAO,aAAA,KAAkB,SAAS,gBAAA,GAAmB,YAAA;AAAA,EACvD,CAAA,EAAG,CAAC,eAAA,EAAiB,aAAa,CAAC,CAAA;AAGnC,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AAErC,IAAA,IAAI,CAAC,aAAA,EAAe;AAClB,MAAA,MAAM,OAAO,QAAA,CAAS,eAAA;AACtB,MAAA,IAAA,CAAK,YAAA,CAAa,WAAW,aAAa,CAAA;AAE1C,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,UAAA,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,EAAK,KAAK,CAAA;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG,CAAC,aAAA,EAAe,aAAA,EAAe,SAAA,EAAW,MAAM,CAAC,CAAA;AAEpD,EAAA,MAAM,QAAA,GAAiBA,OAAA,CAAA,WAAA;AAAA,IACrB,CAAC,QAAA,KAAwB;AACvB,MAAA,iBAAA,CAAkB,QAAQ,CAAA;AAC1B,MAAA,IAAI;AACF,QAAA,YAAA,CAAa,OAAA,CAAQ,YAAY,QAAQ,CAAA;AAAA,MAC3C,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,WAAA;AAAA,IACzB,CAAC,IAAA,KAAoB;AACnB,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,IACzB,OAAO;AAAA,MACL,KAAA,EAAO,SAAA;AAAA,MACP,QAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA,EAAW,aAAA;AAAA,MACX;AAAA,KACF,CAAA;AAAA,IACA,CAAC,SAAA,EAAW,QAAA,EAAU,aAAA,EAAe,WAAA,EAAa,aAAa,YAAY;AAAA,GAC7E;AAEA,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,MAAM,QAAA,GAAW,SACZ,MAAA,GACD,MAAA;AAEJ,IAAA,uBACE,GAAA,CAAC,aAAa,QAAA,EAAb,EAAsB,OAAO,YAAA,EAC5B,QAAA,kBAAA,GAAA,CAACC,eAAA,EAAA,EAAqB,KAAA,EAAO,WAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,EAAE,CAAC,SAAS,GAAG,aAAA,EAAc;AAAA,QACjC,KAAA,EAAO,QAAA;AAAA,QACP,SAAA,EAAU,gBAAA;AAAA,QAET;AAAA;AAAA,OAEL,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACE,GAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,KAAA,EAAO,YAAA,EAC5B,QAAA,kBAAA,GAAA,CAACA,eAAA,EAAA,EAAqB,KAAA,EAAO,WAAA,EAAc,QAAA,EAAS,CAAA,EACtD,CAAA;AAEJ;AC/LO,SAAS,QAAA,GAAsC;AACpD,EAAA,MAAM,OAAA,GAAgBC,mBAAW,YAAY,CAAA;AAC7C,EAAA,MAAM,eAAeC,UAAA,EAAgB;AAErC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAO;AAAA,MACL,GAAG,OAAA;AAAA,MACH,aAAa,OAAA,CAAQ;AAAA,KACvB;AAAA,EACF;AAEA,EAAA,IAAI,YAAA,IAAgB,aAAa,OAAA,EAAS;AACxC,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,aAAa,OAAA,CAAQ,IAAA;AAAA,MAC5B,UAAU,MAAM;AAAA,MAAC,CAAA;AAAA,MACjB,aAAA,EAAe,aAAa,OAAA,CAAQ,IAAA;AAAA,MACpC,WAAA,EAAa,MAAA;AAAA,MACb,WAAA,EAAa,YAAA;AAAA,MACb,SAAA,EAAW,aAAa,OAAA,CAAQ,IAAA;AAAA,MAChC,cAAc,MAAM;AAAA,MAAC,CAAA;AAAA,MACrB,WAAA,EAAa;AAAA,KACf;AAAA,EACF;AAGA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,OAAA;AAAA,IACP,UAAU,MAAM;AAAA,IAAC,CAAA;AAAA,IACjB,aAAA,EAAe,OAAA;AAAA,IACf,WAAA,EAAa,MAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,SAAA,EAAW,OAAA;AAAA,IACX,cAAc,MAAM;AAAA,IAAC,CAAA;AAAA,IACrB,WAAA,EAAa;AAAA,GACf;AACF;ACzCO,SAAS,WAAA,CAAY;AAAA,EAC1B,UAAA,GAAa,eAAA;AAAA,EACb,cAAAC,aAAAA,GAAe,QAAA;AAAA,EACf,SAAA,GAAY,YAAA;AAAA,EACZ;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,aAAA,GAAgB,CAAA;AAAA;AAAA,eAAA,EAEP,UAAU,CAAA;AAAA,eAAA,EACVA,aAAY,CAAA;AAAA,gBAAA,EACX,SAAS,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAA,CAAA;AAWzB,EAAA,uBACEC,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,uBAAA,EAAyB,EAAE,MAAA,EAAQ,aAAA,EAAc;AAAA,MACjD,wBAAA,EAAwB;AAAA;AAAA,GAC1B;AAEJ;;;ACvCA,IAAM,mBAAA,uBAA0B,GAAA,CAAY;AAAA,EAC1C,IAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC,CAAA;AAQM,SAAS,wBACd,aAAA,EACgC;AAChC,EAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,mBAAmB,CAAA;AAE9C,EAAA,IAAI,aAAA,EAAe;AACjB,IAAA,aAAA,CAAc,QAAQ,CAAC,IAAA,KAAS,UAAA,CAAW,GAAA,CAAI,IAAc,CAAC,CAAA;AAAA,EAChE;AAEA,EAAA,OAAO,CAAC,IAAA,KAA+B;AACrC,IAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,UAAA,CAAW,GAAG,CAAA,EAAG;AACpD,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,OAAO,CAAC,UAAA,CAAW,GAAA,CAAI,IAAc,CAAA;AAAA,EACvC,CAAA;AACF;AAMO,IAAM,wBAAwB,uBAAA;;;AC9BrC,IAAM,iBAAA,GAA8C;AAAA,EAClD,CAAA,EAAG,CAAC,QAAQ,CAAA;AAAA,EACZ,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,EACjB,EAAA,EAAI,CAAC,WAAW,CAAA;AAAA,EAChB,SAAA,EAAW,CAAC,WAAW,CAAA;AAAA,EACvB,EAAA,EAAI,CAAC,aAAa,CAAA;AAAA,EAClB,WAAA,EAAa,CAAC,aAAa,CAAA;AAAA,EAC3B,EAAA,EAAI,CAAC,cAAc,CAAA;AAAA,EACnB,YAAA,EAAc,CAAC,cAAc,CAAA;AAAA,EAC7B,EAAA,EAAI,CAAC,YAAY,CAAA;AAAA,EACjB,UAAA,EAAY,CAAC,YAAY,CAAA;AAAA,EACzB,EAAA,EAAI,CAAC,cAAc,CAAA;AAAA,EACnB,YAAA,EAAc,CAAC,cAAc,CAAA;AAAA,EAC7B,EAAA,EAAI,CAAC,aAAa,CAAA;AAAA,EAClB,WAAA,EAAa,CAAC,aAAa,CAAA;AAAA,EAE3B,CAAA,EAAG,CAAC,SAAS,CAAA;AAAA,EACb,OAAA,EAAS,CAAC,SAAS,CAAA;AAAA,EACnB,EAAA,EAAI,CAAC,YAAY,CAAA;AAAA,EACjB,UAAA,EAAY,CAAC,YAAY,CAAA;AAAA,EACzB,EAAA,EAAI,CAAC,cAAc,CAAA;AAAA,EACnB,YAAA,EAAc,CAAC,cAAc,CAAA;AAAA,EAC7B,EAAA,EAAI,CAAC,eAAe,CAAA;AAAA,EACpB,aAAA,EAAe,CAAC,eAAe,CAAA;AAAA,EAC/B,EAAA,EAAI,CAAC,aAAa,CAAA;AAAA,EAClB,WAAA,EAAa,CAAC,aAAa,CAAA;AAAA,EAC3B,EAAA,EAAI,CAAC,eAAe,CAAA;AAAA,EACpB,aAAA,EAAe,CAAC,eAAe,CAAA;AAAA,EAC/B,EAAA,EAAI,CAAC,cAAc,CAAA;AAAA,EACnB,YAAA,EAAc,CAAC,cAAc,CAAA;AAAA,EAE7B,GAAA,EAAK,CAAC,KAAK,CAAA;AAAA,EACX,MAAA,EAAQ,CAAC,QAAQ,CAAA;AAAA,EACjB,SAAA,EAAW,CAAC,WAAW;AACzB,CAAA;AAKA,SAAS,kBAAA,CAAmB,SAAkC,IAAA,EAAkC;AAC9F,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,MAAA;AAC9C,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,EAAA,IAAI,OAAA,GAAe,OAAA;AACnB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,OAAA,IAAW,OAAO,OAAA,KAAY,QAAA,IAAY,QAAQ,OAAA,EAAS;AAC7D,MAAA,OAAA,GAAU,QAAQ,IAAI,CAAA;AAAA,IACxB,CAAA,MAAO;AACL,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,OAAO,OAAA,KAAY,QAAA,GAAW,OAAA,GAAU,MAAA;AACjD;AAKA,SAAS,YAAA,CAAa,OAAqB,KAAA,EAAiB;AAC1D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,OAAO,KAAA;AACtC,EAAA,MAAM,QAAA,GAAW,kBAAA,CAAmB,KAAA,CAAM,OAAA,EAAS,KAAK,CAAA;AACxD,EAAA,OAAO,QAAA,IAAY,KAAA;AACrB;AAKA,SAAS,aAAA,CAAc,OAAqB,KAAA,EAAiB;AAC3D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,IAAS,MAAM,MAAA,EAAQ;AACtD,IAAA,OAAO,KAAA,CAAM,OAAO,KAAkC,CAAA;AAAA,EACxD;AACA,EAAA,OAAO,KAAA;AACT;AAKA,SAAS,qBAAA,CACP,KAAA,EACA,IAAA,EACA,KAAA,EACqB;AACrB,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,SAAa,EAAC;AAGnD,EAAA,IAAI,QAAQ,iBAAA,EAAmB;AAC7B,IAAA,MAAM,QAAA,GAAW,kBAAkB,IAAI,CAAA;AACvC,IAAA,MAAM,YAAY,OAAO,KAAA,KAAU,WAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA;AACrE,IAAA,MAAM,SAA8B,EAAC;AACrC,IAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,MAAA,MAAA,CAAO,OAAO,CAAA,GAAI,SAAA;AAAA,IACpB;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,IAAI,SAAS,SAAA,EAAW;AACtB,IAAA,OAAO,EAAE,eAAA,EAAiB,YAAA,CAAa,KAAA,EAAO,KAAK,CAAA,EAAE;AAAA,EACvD;AAGA,EAAA,IACE,SAAS,OAAA,IACT,IAAA,KAAS,qBACT,IAAA,KAAS,aAAA,IACT,SAAS,cAAA,EACT;AACA,IAAA,OAAO,EAAE,CAAC,IAAI,GAAG,YAAA,CAAa,KAAA,EAAO,KAAK,CAAA,EAAE;AAAA,EAC9C;AAGA,EAAA,IAAI,SAAS,WAAA,EAAa;AACxB,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACrD,MAAA,OAAO,EAAE,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAE;AAAA,IAC3C;AACA,IAAA,OAAO,EAAC;AAAA,EACV;AACA,EAAA,IAAI,SAAS,WAAA,EAAa;AACxB,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACrD,MAAA,OAAO,EAAE,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAE;AAAA,IAC3C;AACA,IAAA,OAAO,EAAE,WAAW,KAAA,EAAM;AAAA,EAC5B;AAGA,EAAA,IAAI,SAAS,cAAA,EAAgB;AAC3B,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,KAAA,EAAO,YAAA,IAAgB,CAAA;AAC5C,MAAA,OAAO,EAAE,YAAA,EAAc,CAAA,EAAG,KAAA,GAAQ,MAAM,CAAA,EAAA,CAAA,EAAK;AAAA,IAC/C;AACA,IAAA,OAAO,EAAE,cAAc,KAAA,EAAM;AAAA,EAC/B;AAGA,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,OAAO,EAAE,MAAA,EAAQ,aAAA,CAAc,KAAA,EAAO,KAAK,CAAA,EAAE;AAAA,EAC/C;AAGA,EAAA,OAAO,EAAE,CAAC,IAAI,GAAG,KAAA,EAAM;AACzB;AAEA,SAASC,UAAS,GAAA,EAAsC;AACtD,EAAA,OAAO,GAAA,KAAQ,QAAQ,OAAO,GAAA,KAAQ,YAAY,CAAC,KAAA,CAAM,QAAQ,GAAG,CAAA;AACtE;AAKA,SAAS,kBAAkB,GAAA,EAAmB;AAC5C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,IAAIA,SAAAA,CAAS,GAAG,CAAA,EAAG;AACjB,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,cAAA,CAAe,QAAA,CAAS,CAAkB,CAAC,CAAA;AAAA,EACjF;AACA,EAAA,OAAO,KAAA;AACT;AAKA,SAAS,aAAA,CACP,OACA,QAAA,EACqB;AACrB,EAAA,MAAM,SAA8B,EAAC;AAErC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACnD,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAG3C,IAAA,IAAI,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,IAAK,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,IAAK,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,EAAG;AACrE,MAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAC/B,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,aAAA,CAAc,KAAA,EAAO,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,MACjD,CAAA,MAAA,IAAWA,SAAAA,CAAS,KAAK,CAAA,EAAG;AAC1B,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,aAAA,CAAc,KAAA,EAAO,KAAiB,CAAA;AAAA,MACtD;AACA,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,KAAA,EAAO,KAAA,KAAU;AAC9B,QAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAC3C,QAAA,MAAM,KAAA,GAAQ,eAAe,KAAK,CAAA;AAClC,QAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,QAAA,MAAMC,SAAAA,GAAW,qBAAA,CAAsB,KAAA,EAAO,GAAA,EAAK,KAAK,CAAA;AACxD,QAAA,IAAI,UAAU,IAAA,EAAM;AAClB,UAAA,MAAA,CAAO,MAAA,CAAO,QAAQA,SAAQ,CAAA;AAAA,QAChC,CAAA,MAAO;AACL,UAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,WAAA,CAAY,EAAA,CAAG,KAAK,CAAA;AACxC,UAAA,MAAA,CAAO,KAAK,CAAA,GAAI;AAAA,YACd,GAAI,MAAA,CAAO,KAAK,CAAA,IAAK,EAAC;AAAA,YACtB,GAAGA;AAAA,WACL;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA;AAAA,IACF;AAGA,IAAA,IAAI,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC5B,MAAA,MAAM,OAAA,GAAU,KAAA;AAChB,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AACpD,QAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAE3C,QAAA,MAAMA,SAAAA,GAAW,qBAAA,CAAsB,KAAA,EAAO,GAAA,EAAK,KAAK,CAAA;AACxD,QAAA,IAAI,UAAU,IAAA,EAAM;AAClB,UAAA,MAAA,CAAO,MAAA,CAAO,QAAQA,SAAQ,CAAA;AAAA,QAChC,CAAA,MAAA,IAAW,cAAA,CAAe,QAAA,CAAS,KAAsB,CAAA,EAAG;AAC1D,UAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,WAAA,CAAY,EAAA,CAAG,KAAsB,CAAA;AACzD,UAAA,MAAA,CAAO,KAAK,CAAA,GAAI;AAAA,YACd,GAAI,MAAA,CAAO,KAAK,CAAA,IAAK,EAAC;AAAA,YACtB,GAAGA;AAAA,WACL;AAAA,QACF;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAGA,IAAA,IAAID,SAAAA,CAAS,KAAK,CAAA,EAAG;AACnB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,aAAA,CAAc,KAAA,EAAO,KAAiB,CAAA;AACpD,MAAA;AAAA,IACF;AAGA,IAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,KAAA,EAAO,GAAA,EAAK,KAAK,CAAA;AACxD,IAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,QAAQ,CAAA;AAAA,EAChC;AAEA,EAAA,OAAO,MAAA;AACT;AAaO,SAAS,OAAA,CACd,YACA,EAAA,EACqB;AACrB,EAAA,IAAI,CAAC,EAAA,EAAI,OAAO,EAAC;AACjB,EAAA,MAAM,QACJ,UAAA,IAAc,OAAO,UAAA,CAAW,OAAA,KAAY,aACxC,UAAA,GACA,YAAA;AAGN,EAAA,IAAI,OAAO,OAAO,UAAA,EAAY;AAC5B,IAAA,OAAO,aAAA,CAAc,KAAA,EAAO,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,EACvC;AAGA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,EAAG;AACrB,IAAA,OAAO,EAAA,CAAG,MAAA,CAA4B,CAAC,GAAA,EAAK,IAAA,KAAS;AACnD,MAAA,IAAI,CAAC,MAAM,OAAO,GAAA;AAClB,MAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAA;AAClC,MAAA,OAAO,eAAA,CAAgB,KAAK,MAAM,CAAA;AAAA,IACpC,CAAA,EAAG,EAAE,CAAA;AAAA,EACP;AAGA,EAAA,IAAIA,SAAAA,CAAS,EAAE,CAAA,EAAG;AAChB,IAAA,OAAO,aAAA,CAAc,OAAO,EAAE,CAAA;AAAA,EAChC;AAEA,EAAA,OAAO,EAAC;AACV;AAKA,SAAS,eAAA,CACP,QACA,MAAA,EACqB;AACrB,EAAA,MAAM,MAAA,GAA8B,EAAE,GAAG,MAAA,EAAO;AAEhD,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,IAAA,IACEA,UAAS,KAAK,CAAA,IACdA,UAAS,MAAA,CAAO,GAAG,CAAC,CAAA,IACpB,CAAC,MAAM,OAAA,CAAQ,KAAK,KACpB,CAAC,KAAA,CAAM,QAAQ,MAAA,CAAO,GAAG,CAAC,CAAA,EAC1B;AACA,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,eAAA,CAAgB,MAAA,CAAO,GAAG,GAAG,KAAK,CAAA;AAAA,IAClD,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,IAChB;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;AChSO,SAAS,yBAAA,CACd,KAAA,EACA,OAAA,EACA,KAAA,EACiC;AACjC,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,GAAO,MAAA,EAAQ,mBAAkB,GAAI,OAAA;AACnD,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,KAAA,CAAM,UAAA,GAAa,IAAI,CAAA,EAAG;AACtC,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,MAAM,eAAA,GAAkB,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA;AAC7C,EAAA,MAAM,iBAAiB,eAAA,CAAgB,cAAA;AACvC,EAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,KAAA,EAAO,cAAc,CAAA;AACxD,IAAA,IAAI,UAAU,OAAO,QAAA;AAAA,EACvB;AAGA,EAAA,MAAM,SAAA,GAAY,KAAK,WAAA,EAAY;AACnC,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,IAAA;AAAA,IAC7C,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,EAAY,KAAM;AAAA,GAC7B;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,MAAM,QAAA,GAAW,eAAe,UAAU,CAAA;AAC1C,IAAA,IAAI,OAAO,aAAa,UAAA,EAAY;AAClC,MAAA,OAAO,SAAS,EAAE,KAAA,EAAO,YAAY,KAAA,CAAM,UAAA,IAAc,OAAO,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA;AACT;ACxBO,SAAS,MAAA,CAId,SAAA,EACA,OAAA,GAAqC,EAAC,EACtC;AACA,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,IAAA,GAAO,MAAA;AAAA,IACP,KAAA;AAAA,IACA,MAAA;AAAA,IACA,iBAAA,EAAmB,uBAAA;AAAA,IACnB,MAAA,GAAS;AAAA,GACX,GAAI,OAAA;AAEJ,EAAA,MAAM,yBAAA,GAA4B,0BAC9B,CAAC,IAAA,KACC,sBAAsB,IAAI,CAAA,IAAK,uBAAA,CAAwB,IAAI,CAAA,GAC7D,qBAAA;AAEJ,EAAA,MAAM,gBAAgB,KAAA,KAAU,IAAA,GAAO,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,GAAK,MAAA,CAAA;AAE3D,EAAA,MAAM,cAAA,GAIF;AAAA,IACF,iBAAA,EAAmB;AAAA,GACrB;AAEA,EAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,IAAA,cAAA,CAAe,KAAA,GAAQ,aAAA;AAAA,EACzB;AACA,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,cAAA,CAAe,MAAA,GAAS,MAAA;AAAA,EAC1B;AAEA,EAAA,MAAM,cAAA,GAAiB,aAAA,CAAc,SAAA,EAAkB,cAAc,CAAA;AAErE,EAAA,OAAO,IACF,cAAA,KAGA;AACH,IAAA,MAAM,qBAAA,GAAwB,cAAA,CAAe,GAAA,CAAI,CAAC,aAAA,KAAkB;AAClE,MAAA,IAAI,OAAO,kBAAkB,UAAA,EAAY;AACvC,QAAA,OAAO,CAAC,QAAA,KAAkB;AACxB,UAAA,MAAM,WAAA,GACJ,SAAS,KAAA,IAAS,OAAO,SAAS,KAAA,CAAM,OAAA,KAAY,UAAA,GAC/C,QAAA,CAAS,KAAA,GACV,YAAA;AACN,UAAA,OAAO,aAAA,CAAc;AAAA,YACnB,GAAG,QAAA;AAAA,YACH,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,QACH,CAAA;AAAA,MACF;AACA,MAAA,OAAO,aAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAO,cAAA;AAAA,MAEL,GAAI,qBAAA;AAAA;AAAA,MAGJ,CAAC,KAAA,KAAe;AACd,QAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,QAAA,MAAM,WAAA,GACJ,MAAM,KAAA,IAAS,OAAO,MAAM,KAAA,CAAM,OAAA,KAAY,UAAA,GACzC,KAAA,CAAM,KAAA,GACP,YAAA;AACN,QAAA,OAAO,yBAAA,CAA0B,WAAA,EAAa,OAAA,EAAS,KAAK,CAAA;AAAA,MAC9D,CAAA;AAAA;AAAA,MAGA,CAAC,KAAA,KAAe;AACd,QAAA,IAAI,MAAA,IAAU,CAAC,KAAA,CAAM,EAAA,EAAI,OAAO,IAAA;AAChC,QAAA,MAAM,WAAA,GACJ,MAAM,KAAA,IAAS,OAAO,MAAM,KAAA,CAAM,OAAA,KAAY,UAAA,GACzC,KAAA,CAAM,KAAA,GACP,YAAA;AACN,QAAA,OAAO,OAAA,CAAQ,WAAA,EAAa,KAAA,CAAM,EAAE,CAAA;AAAA,MACtC;AAAA,KACF;AAAA,EACF,CAAA;AACF;;;AClGO,SAAS,cAAc,MAAA,EAA8B;AAC1D,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,KAAU,CAAA,EAAG;AAE3B,IAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,OAAO,UAAU,QAAA,EAAU;AAC1D,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAA,CAAE,IAAA,EAAK;AACnC,MAAA,IAAI,OAAA,EAAS,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA;AAAA,IACnC,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC/B,MAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAG,KAAK,CAAA;AAClC,MAAA,IAAI,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,IACjC,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,EAAG;AAChD,QAAA,IAAI,KAAA,IAAS,GAAA,CAAI,IAAA,EAAK,EAAG;AACvB,UAAA,OAAA,CAAQ,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,CAAA;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AACzB;;;AC7BO,SAAS,oBAAA,CACd,iBACA,UAAA,EACA;AAAA,EACE,wBAAA,GAA2B;AAC7B,CAAA,GAA4C,EAAC,EACzB;AACpB,EAAA,OAAO,SAAS,YAAY,KAAA,EAAU;AACpC,IAAA,eAAA,GAAkB,KAAK,CAAA;AAEvB,IAAA,IAAI,CAAC,wBAAA,IAA4B,CAAC,KAAA,CAAM,gBAAA,EAAkB;AACxD,MAAA,UAAA,GAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AACF;ACNO,SAAS,cACd,OAAA,EAC0B;AAC1B,EAAA,IAAI,CAAC,OAAA,IAAW,CAAOE,OAAA,CAAA,cAAA,CAAe,OAAO,CAAA,EAAG;AAC9C,IAAA,OAAO,MAAA;AAAA,EACT;AAGA,EAAA,MAAM,cAAc,MAAA,CAAO,wBAAA,CAAyB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,EAAG,GAAA;AAC3E,EAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,WAAA,IAAe,gBAAA,IAAoB,WAAW,CAAA;AAC7E,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,MAAM,IAAK,OAAA,CAA8C,GAAA;AACzD,IAAA,OAAO,CAAA,IAAK,MAAA;AAAA,EACd;AAGA,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,wBAAA,CAAyB,OAAA,EAAS,KAAK,CAAA,EAAG,GAAA;AACvE,EAAA,MAAM,gBAAA,GAAmB,OAAA,CAAQ,aAAA,IAAiB,gBAAA,IAAoB,aAAa,CAAA;AACnF,EAAA,IAAI,gBAAA,EAAkB;AACpB,IAAA,MAAM,CAAA,GAAK,QAAQ,KAAA,CAAiC,GAAA;AACpD,IAAA,OAAO,CAAA,IAAK,MAAA;AAAA,EACd;AAGA,EAAA,MAAM,GAAA,GACH,OAAA,CAAQ,KAAA,CAAiC,GAAA,IACzC,OAAA,CAA8C,GAAA;AACjD,EAAA,OAAO,GAAA,IAAO,MAAA;AAChB;ACtCO,SAAS,MAAA,CAAU,KAAqB,KAAA,EAAuB;AACpE,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AAAA,EACX,CAAA,MAAA,IAAW,GAAA,KAAQ,IAAA,IAAQ,GAAA,KAAQ,MAAA,EAAW;AAC5C,IAAC,IAAyC,OAAA,GAAU,KAAA;AAAA,EACtD;AACF;AAMO,SAAS,gBACX,IAAA,EACmB;AAEtB,EAAA,OAAaC,OAAA,CAAA,WAAA,CAAY,CAAC,OAAA,KAAsB;AAC9C,IAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,MAAA,MAAA,CAAO,KAAK,OAAO,CAAA;AAAA,IACrB;AAAA,EACF,GAAG,IAAI,CAAA;AACT;;;ACdO,IAAM,IAAA,GAAaC,OAAA,CAAA,UAAA;AAAA,EACxB,SAASC,KAAAA,CAAK,KAAA,EAAO,YAAA,EAAc;AACjC,IAAA,MAAM,EAAE,QAAA,EAAU,GAAG,SAAA,EAAU,GAAI,KAAA;AAEnC,IAAA,IAAUD,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAClC,MAAA,OAAaA,OAAA,CAAA,YAAA;AAAA,QACX,QAAA;AAAA,QACA,UAAA;AAAA,UACE,SAAA;AAAA,UACA,QAAA,CAAS,KAAA;AAAA,UACT,YAAA;AAAA,UACA,cAAc,QAAQ;AAAA;AACxB,OACF;AAAA,IACF;AAEA,IAAA,IAAUA,OAAA,CAAA,QAAA,CAAS,KAAA,CAAM,QAAQ,CAAA,GAAI,CAAA,EAAG;AACtC,MAAMA,OAAA,CAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,IAC1B;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AAKnB,SAAS,UAAA,CACP,SAAA,EACA,UAAA,EACA,OAAA,EACA,QAAA,EACyB;AACzB,EAAA,MAAM,aAAA,GAAyC,EAAE,GAAG,UAAA,EAAW;AAE/D,EAAA,KAAA,MAAW,YAAY,SAAA,EAAW;AAChC,IAAA,MAAM,aAAA,GAAgB,UAAU,QAAQ,CAAA;AACxC,IAAA,MAAM,cAAA,GAAiB,WAAW,QAAQ,CAAA;AAE1C,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA;AAE/C,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,IACE,OAAO,aAAA,KAAkB,UAAA,IACzB,OAAO,mBAAmB,UAAA,EAC1B;AACA,QAAA,aAAA,CAAc,QAAQ,CAAA,GAAI,oBAAA;AAAA,UACxB,cAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF,CAAA,MAAA,IAAW,OAAO,aAAA,KAAkB,UAAA,EAAY;AAC9C,QAAA,aAAA,CAAc,QAAQ,CAAA,GAAI,aAAA;AAAA,MAC5B;AAAA,IACF,CAAA,MAAA,IAAW,aAAa,WAAA,EAAa;AACnC,MAAA,aAAA,CAAc,QAAQ,CAAA,GAAI,UAAA;AAAA,QACxB,aAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAA,MAAA,IAAW,aAAa,OAAA,EAAS;AAC/B,MAAA,aAAA,CAAc,QAAQ,CAAA,GAAI;AAAA,QACxB,GAAI,aAAA;AAAA,QACJ,GAAI;AAAA,OACN;AAAA,IACF,CAAA,MAAO;AACL,MAAA,aAAA,CAAc,QAAQ,CAAA,GACpB,aAAA,KAAkB,MAAA,GAAY,aAAA,GAAgB,cAAA;AAAA,IAClD;AAAA,EACF;AAGA,EAAA,aAAA,CAAc,GAAA,GAAM,CAAC,IAAA,KAA6B;AAChD,IAAA,MAAA,CAAO,UAAU,IAAI,CAAA;AACrB,IAAA,MAAA,CAAO,SAAS,IAAI,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,OAAO,aAAA;AACT;ACzFO,IAAM,kBAAA,GAA2BE,sBAEtC,MAAS;AAKJ,SAAS,qBAAA,GAA6D;AAC3E,EAAA,OAAaA,mBAAW,kBAAkB,CAAA;AAC5C;ACRA,IAAM,aAAA,GAAgB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAWtB,IAAM,YAAA,GAAe,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AASrB,IAAM,eAAA,GAAkB,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAsCxB,IAAM,eAAA,GAAkB,OAAO,MAAA,EAAQ;AAAA,EACrC,IAAA,EAAM,oBAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAC,CAAA,CAAE;AAAA,EACD,QAAA,EAAU,QAAA;AAAA,EACV,aAAA,EAAe,MAAA;AAAA,EACf,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,CAAA;AAAA,EACR,GAAA,EAAK,CAAA;AAAA,EACL,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,IAAA,EAAM,CAAA;AAAA,EACN,YAAA,EAAc;AAChB,CAAC,CAAA;AAED,IAAM,gBAAA,GAAmB,OAAO,MAAA,EAAQ;AAAA,EACtC,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,eAAe,IAAA,KAAS;AACrC,CAAC,CAAA,CAA8C,CAAC,EAAE,SAAA,EAAW,SAAQ,MAAO;AAAA,EAC1E,QAAA,EAAU,UAAA;AAAA,EACV,YAAA,EAAc,KAAA;AAAA,EACd,eAAA,EAAiB,cAAA;AAAA,EACjB,OAAA,EAAS,GAAA;AAAA,EACT,SAAA,EAAW,GAAG,aAAa,CAAA,mCAAA,CAAA;AAAA,EAC3B,yCAAA,EAA2C;AAAA,IACzC,iBAAA,EAAmB,gBAAA;AAAA,IACnB,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,GAAI,SAAA,IAAa;AAAA,IACf,SAAA,EAAW,GAAG,eAAe,CAAA,kCAAA,CAAA;AAAA,IAC7B,yCAAA,EAA2C;AAAA,MACzC,SAAA,EAAW;AAAA;AACb,GACF;AAAA,EACA,GAAI,OAAA,IAAW;AAAA,IACb,OAAA,EAAS,CAAA;AAAA,IACT,SAAA,EAAW,GAAG,YAAY,CAAA,4CAAA,CAAA;AAAA,IAC1B,yCAAA,EAA2C;AAAA,MACzC,iBAAA,EAAmB,gBAAA;AAAA,MACnB,kBAAA,EAAoB;AAAA;AACtB;AAEJ,CAAA,CAAE,CAAA;AAKK,IAAM,WAAA,GAAoBC,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASC,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,GAAa,OAAO,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAC3D,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUD,OAAA,CAAA,QAAA,CAAuB,EAAE,CAAA;AAC7D,IAAA,MAAM,OAAA,GAAgBA,eAAO,CAAC,CAAA;AAC9B,IAAA,MAAM,YAAA,GAAqBA,eAA+B,IAAI,CAAA;AAC9D,IAAA,MAAM,aAAA,GAAsBA,OAAA,CAAA,MAAA,CAAwC,EAAE,CAAA;AACtE,IAAA,MAAM,YAAA,GAAqBA,eAAO,IAAI,CAAA;AAEtC,IAAMA,kBAAU,MAAM;AACpB,MAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,MAAA,OAAO,MAAM;AACX,QAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AACvB,QAAA,aAAA,CAAc,QAAQ,OAAA,CAAQ,CAAC,EAAA,KAAO,YAAA,CAAa,EAAE,CAAC,CAAA;AACtD,QAAA,aAAA,CAAc,UAAU,EAAC;AAAA,MAC3B,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,KAAA,GAAcA,OAAA,CAAA,WAAA;AAAA,MAClB,CACE,KAAA,EACA,OAAA,GAAmD,EAAC,KACjD;AACH,QAAA,MAAM,EAAE,OAAA,EAAAE,QAAAA,GAAU,OAAO,MAAA,GAAS,UAAA,IAAcA,UAAQ,GAAI,OAAA;AAE5D,QAAA,MAAM,YAAY,YAAA,CAAa,OAAA;AAC/B,QAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,QAAA,MAAM,IAAA,GAAO,UAAU,qBAAA,EAAsB;AAE7C,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,UAAA;AAEJ,QAAA,MAAM,cAAc,KAAA,EAAO,WAAA;AAC3B,QAAA,IAAI,OAAA;AACJ,QAAA,IAAI,OAAA;AAEJ,QAAA,IACE,WAAA,IACA,SAAA,IAAa,WAAA,IACb,SAAA,IAAa,WAAA,IACb,OAAQ,WAAA,CAA2B,OAAA,KAAY,QAAA,IAC/C,OAAQ,WAAA,CAA2B,OAAA,KAAY,QAAA,EAC/C;AACA,UAAA,OAAA,GAAW,WAAA,CAA2B,OAAA;AACtC,UAAA,OAAA,GAAW,WAAA,CAA2B,OAAA;AAAA,QACxC,CAAA,MAAA,IACE,eACA,SAAA,IAAa,WAAA,IACZ,YAA2B,OAAA,IAC3B,WAAA,CAA2B,OAAA,CAAQ,MAAA,GAAS,CAAA,EAC7C;AACA,UAAA,MAAM,KAAA,GAAS,WAAA,CAA2B,OAAA,CAAQ,CAAC,CAAA;AACnD,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,OAAA,GAAU,KAAA,CAAM,OAAA;AAChB,YAAA,OAAA,GAAU,KAAA,CAAM,OAAA;AAAA,UAClB;AAAA,QACF;AAEA,QAAA,IAAI,MAAA,IAAU,OAAA,KAAY,MAAA,IAAa,OAAA,KAAY,MAAA,EAAW;AAC5D,UAAA,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA;AACnC,UAAA,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AACpC,UAAA,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,KAAK,MAAM,CAAA;AAAA,QAC/C,CAAA,MAAO;AACL,UAAA,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,IAAI,CAAA;AACxC,UAAA,OAAA,GAAU,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,GAAG,CAAA;AAEvC,UAAA,MAAM,KAAA,GACJ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,WAAA,GAAc,OAAO,CAAA,EAAG,OAAO,CAAA,GAAI,CAAA,GAAI,CAAA;AACrE,UAAA,MAAM,KAAA,GACJ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,YAAA,GAAe,OAAO,CAAA,EAAG,OAAO,CAAA,GAAI,CAAA,GAAI,CAAA;AACtE,UAAA,UAAA,GAAa,IAAA,CAAK,IAAA,CAAK,KAAA,IAAS,CAAA,GAAI,SAAS,CAAC,CAAA;AAAA,QAChD;AAEA,QAAA,MAAM,aAAa,OAAA,CAAQ,OAAA;AAC3B,QAAA,OAAA,CAAQ,OAAA,IAAW,CAAA;AAEnB,QAAA,UAAA,CAAW,CAAC,IAAA,KAAS;AAAA,UACnB,GAAG,IAAA;AAAA,UACH;AAAA,YACE,GAAA,EAAK,UAAA;AAAA,YACL,OAAA;AAAA,YACA,OAAA;AAAA,YACA,UAAA;AAAA,YACA,SAAA,EAAWA,QAAAA;AAAA,YACX,OAAA,EAAS;AAAA;AACX,SACD,CAAA;AAAA,MACH,CAAA;AAAA,MACA,CAAC,UAAU;AAAA,KACb;AAEA,IAAA,MAAM,IAAA,GAAaF,oBAAY,MAAM;AACnC,MAAA,UAAA,CAAW,CAAC,IAAA,KAAS;AACnB,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC9B,QAAA,OAAO,IAAA,CAAK,IAAI,CAAC,MAAA,MAAY,EAAE,GAAG,MAAA,EAAQ,OAAA,EAAS,IAAA,EAAK,CAAE,CAAA;AAAA,MAC5D,CAAC,CAAA;AAED,MAAA,MAAM,cAAA,GACJ,OAAO,MAAA,KAAW,WAAA,IAClB,OAAO,UAAA,IACP,MAAA,CAAO,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AACxD,MAAA,MAAM,YAAA,GAAe,iBAAiB,EAAA,GAAK,GAAA;AAE3C,MAAA,MAAM,OAAA,GAAU,WAAW,MAAM;AAC/B,QAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,QAAA,UAAA,CAAW,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,OAAO,CAAC,CAAA;AACnD,QAAA,aAAA,CAAc,UAAU,aAAA,CAAc,OAAA,CAAQ,OAAO,CAAC,EAAA,KAAO,OAAO,OAAO,CAAA;AAAA,MAC7E,GAAG,YAAY,CAAA;AAEf,MAAA,aAAA,CAAc,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,IACpC,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,OAAA,GAAgBA,oBAAY,MAAM;AACtC,MAAA,KAAA,CAAM,MAAA,EAAW,EAAE,OAAA,EAAS,IAAA,EAAM,CAAA;AAAA,IACpC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAMA,OAAA,CAAA,mBAAA;AAAA,MACJ,GAAA;AAAA,MACA,OAAO;AAAA,QACL,KAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,KAAA,EAAO,IAAA,EAAM,OAAO;AAAA,KACvB;AAEA,IAAA,uBACER,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAA;AAAA,QACL,SAAA;AAAA,QACA,aAAA,EAAY,MAAA;AAAA,QACX,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS;AACrB,UAAA,MAAM,KAAA,GAA6B;AAAA,YACjC,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,UAAU,CAAA,EAAA,CAAA;AAAA,YACzB,MAAA,EAAQ,CAAA,EAAG,IAAA,CAAK,UAAU,CAAA,EAAA,CAAA;AAAA,YAC1B,KAAK,CAAA,EAAG,EAAE,KAAK,UAAA,GAAa,CAAA,CAAA,GAAK,KAAK,OAAO,CAAA,EAAA,CAAA;AAAA,YAC7C,MAAM,CAAA,EAAG,EAAE,KAAK,UAAA,GAAa,CAAA,CAAA,GAAK,KAAK,OAAO,CAAA,EAAA;AAAA,WAChD;AAEA,UAAA,uBACEA,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cAEC,WAAW,IAAA,CAAK,SAAA;AAAA,cAChB,SAAS,IAAA,CAAK,OAAA;AAAA,cACd;AAAA,aAAA;AAAA,YAHK,IAAA,CAAK;AAAA,WAIZ;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;ACvPnB,SAAS,SAAA,CAAU,OAAA,GAA4B,EAAC,EAAoB;AACzE,EAAA,MAAM,EAAE,QAAA,GAAW,KAAA,EAAO,gBAAgB,KAAA,EAAO,MAAA,GAAS,OAAM,GAAI,OAAA;AACpE,EAAA,MAAM,SAAA,GAAkBW,eAAuB,IAAI,CAAA;AAEnD,EAAA,MAAM,WAAA,GAAoBA,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,KAAA,KAA4B;AAC3B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,SAAA,CAAU,OAAA,EAAS,MAAM,KAAK,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,SAAA,GAAkBA,OAAA,CAAA,WAAA;AAAA,IACtB,CAAC,KAAA,KAA4B;AAC3B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,SAAA,CAAU,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,WAAA;AAAA,IACzB,CAAC,KAAA,KAA4B;AAC3B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,SAAA,CAAU,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,WAAA;AAAA,IACzB,CAAC,KAAA,KAA4B;AAC3B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,SAAA,CAAU,OAAA,EAAS,MAAM,KAAK,CAAA;AAAA,IAChC,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,UAAA,GAAmBA,OAAA,CAAA,WAAA;AAAA,IACvB,CAAC,KAAA,KAA4B;AAC3B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,SAAA,CAAU,OAAA,EAAS,KAAK,KAAK,CAAA;AAAA,IAC/B,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,SAAA,GAAkBA,OAAA,CAAA,WAAA;AAAA,IACtB,CAAC,KAAA,KAA+B;AAC9B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC9C,QAAA,SAAA,CAAU,SAAS,KAAA,CAAM,MAAA,EAAW,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,MACvD;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,OAAA,GAAgBA,OAAA,CAAA,WAAA;AAAA,IACpB,CAAC,KAAA,KAA+B;AAC9B,MAAA,IAAI,YAAY,aAAA,EAAe;AAC/B,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC9C,QAAA,SAAA,CAAU,SAAS,IAAA,EAAK;AAAA,MAC1B;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU,aAAa;AAAA,GAC1B;AAEA,EAAA,MAAM,MAAA,GAAeA,oBAAY,MAAM;AACrC,IAAA,SAAA,CAAU,SAAS,IAAA,EAAK;AAAA,EAC1B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAA,GAA0BA,OAAA,CAAA,WAAA;AAAA,IAC9B,CAAgC,KAAA,GAAW,EAAC,KAAc;AACxD,MAAA,OAAO;AAAA,QACL,GAAG,KAAA;AAAA,QACH,WAAA,EAAa,oBAAA,CAAqB,KAAA,CAAM,WAAA,EAAa,WAAW,CAAA;AAAA,QAChE,SAAA,EAAW,oBAAA,CAAqB,KAAA,CAAM,SAAA,EAAW,SAAS,CAAA;AAAA,QAC1D,YAAA,EAAc,oBAAA,CAAqB,KAAA,CAAM,YAAA,EAAc,YAAY,CAAA;AAAA,QACnE,YAAA,EAAc,oBAAA,CAAqB,KAAA,CAAM,YAAA,EAAc,YAAY,CAAA;AAAA,QACnE,UAAA,EAAY,oBAAA,CAAqB,KAAA,CAAM,UAAA,EAAY,UAAU,CAAA;AAAA,QAC7D,SAAA,EAAW,oBAAA,CAAqB,KAAA,CAAM,SAAA,EAAW,SAAS,CAAA;AAAA,QAC1D,OAAA,EAAS,oBAAA,CAAqB,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA;AAAA,QACpD,MAAA,EAAQ,oBAAA,CAAqB,KAAA,CAAM,MAAA,EAAQ,MAAM;AAAA,OACnD;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,WAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,WAAA,EAAa;AAAA,MACX,GAAA,EAAK,SAAA;AAAA,MACL;AAAA,KACF;AAAA,IACA;AAAA,GACF;AACF;AC3GA,SAAS,aAAA,GAAgB;AACvB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,oBAAA;AAAA,MACV,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,KAAA,EAAM,4BAAA;AAAA,MACN,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAX,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,CAAA,EAAE,GAAA;AAAA,YACF,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,KAAA;AAAA,YACZ,aAAA,EAAc;AAAA;AAAA,SAChB;AAAA,wBACAA,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,CAAA,EAAE,qBAAA;AAAA,YACF,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,KAAA;AAAA,YACZ,aAAA,EAAc;AAAA;AAAA;AAChB;AAAA;AAAA,GACF;AAEJ;AAEA,IAAM,gBAAA,GAAmB,OAAO,QAAA,EAAU;AAAA,EACxC,IAAA,EAAM,eAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,aACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,WAAA,IACT,SAAS,YAAA,IACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,iBAAA,IACT,IAAA,KAAS,eACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,eAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,MAAA,GAAeY,OAAA,CAAA,UAAA;AAAA,EAC1B,SAASC,OAAAA,CAAO,KAAA,EAAO,YAAA,EAAc;AACnC,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,OAAA,EAAS,WAAA;AAAA,MACT,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,EAAa,eAAA;AAAA,MACb,SAAA,GAAY,KAAA;AAAA,MACZ,WAAA;AAAA,MACA,eAAA,GAAkB,OAAA;AAAA,MAClB,UAAA,EAAY,cAAA;AAAA,MACZ,WAAA,GAAc,KAAA;AAAA,MACd,SAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,IAAA,GAAO,QAAA;AAAA,MACP,OAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA,GAAgB,KAAA;AAAA,MAChB,EAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,cAAc,qBAAA,EAAsB;AAE1C,IAAA,MAAM,OAAA,GAAU,WAAA,IAAe,WAAA,EAAa,OAAA,IAAW,OAAA;AACvD,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,WAAA,EAAa,IAAA,IAAQ,IAAA;AAC9C,IAAA,MAAM,WAAA,GACJ,eAAA,IAAmB,WAAA,EAAa,WAAA,IAAe,SAAA;AACjD,IAAA,MAAM,UAAA,GACJ,cAAA,IAAkB,YAAA,IAAgB,WAAA,EAAa,UAAA,IAAc,KAAA;AAC/D,IAAA,MAAM,wBAAwB,UAAA,IAAc,SAAA;AAE5C,IAAA,MAAM,EAAE,WAAA,EAAa,iBAAA,EAAkB,GAAI,SAAA,CAAU;AAAA,MACnD,QAAA,EAAU,qBAAA;AAAA,MACV;AAAA,KACD,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA+C;AAClE,MAAA,IAAI,qBAAA,EAAuB;AACzB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,QAAA;AAAA,MACF;AACA,MAAA,OAAA,GAAU,KAAK,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAkD;AACvE,MAAA,IAAI,qBAAA,EAAuB;AACzB,QAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,GAAA,IAAO,KAAA,CAAM,QAAQ,OAAA,EAAS;AAC9C,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,SAAA,GAAY,KAAK,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,UAAA;AAAA,MACtB,WAAA;AAAA,MACA,cAAc,OAAO,CAAA,CAAA;AAAA,MACrB,cAAc,IAAI,CAAA,CAAA;AAAA,MAClB,cAAc,WAAW,CAAA,CAAA;AAAA,MACzB,SAAA,IAAa,oBAAA;AAAA,MACb,UAAA,IAAc,qBAAA;AAAA,MACd,WAAA,IAAe,uBAAA;AAAA,MACf;AAAA,KACF;AAEA,IAAA,MAAM,OAAA,mBAAUb,GAAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAG/B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA,EAAK,YAAA;AAAA,UACL,SAAA,EAAW,eAAA;AAAA,UACX,eAAA,EAAe,wBAAwB,IAAA,GAAO,MAAA;AAAA,UAC9C,WAAA,EAAW,YAAY,IAAA,GAAO,MAAA;AAAA,UAC9B,EAAA;AAAA,UACA,OAAA,EACE,WAAA;AAAA,UAEF,SAAA,EACE,aAAA;AAAA,UAED,GAAG,SAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAGA,IAAA,MAAM,eAAA,GAAkB,aAAa,eAAA,KAAoB,QAAA;AAEzD,IAAA,MAAM,iBAAiB,iBAAA,CAAkB;AAAA,MACvC,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,GAAG;AAAA,KACJ,CAAA;AAED,IAAA,uBACE,IAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAA;AAAA,QACL,IAAA;AAAA,QACA,QAAA,EAAU,wBAAwB,IAAA,GAAO,MAAA;AAAA,QACzC,eAAA,EAAe,wBAAwB,IAAA,GAAO,MAAA;AAAA,QAC9C,WAAA,EAAW,YAAY,IAAA,GAAO,MAAA;AAAA,QAC9B,SAAA,EAAW,eAAA;AAAA,QACX,EAAA;AAAA,QACC,GAAG,cAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,eAAA,mBACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,4BAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCAAA,EACb,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,4BACA,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EACb,QAAA,EAAA;AAAA,cAAA,SAAA,oBACCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,wCAAA;AAAA,kBACV,aAAA,EAAY,MAAA;AAAA,kBAEX,QAAA,EAAA;AAAA;AAAA,eACH;AAAA,cAED,aAAa,MAAA,oBACZA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oBAAoB,QAAA,EAAS,CAAA;AAAA,cAE9C,2BACCA,GAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,sCAAA;AAAA,kBACV,aAAA,EAAY,MAAA;AAAA,kBAEX,QAAA,EAAA;AAAA;AAAA;AACH,aAAA,EAEJ;AAAA,WAAA,EACF,oBAEA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,YAAA,SAAA,IAAa,oBAAoB,OAAA,IAAW,OAAA;AAAA,YAC5C,CAAC,SAAA,IAAa,SAAA,oBACbA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,wCAAA;AAAA,gBACV,aAAA,EAAY,MAAA;AAAA,gBAEX,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YAED,aAAa,WAAA,mBACZA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kBAAA,EAAoB,QAAA,EAAA,WAAA,EAAY,CAAA,GAC9C,QAAA,KAAa,yBACfA,GAAAA,CAAC,UAAK,SAAA,EAAU,kBAAA,EAAoB,UAAS,CAAA,GAC3C,IAAA;AAAA,YACH,SAAA,IAAa,oBAAoB,KAAA,IAAS,OAAA;AAAA,YAC1C,CAAC,SAAA,IAAa,OAAA,oBACbA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,sCAAA;AAAA,gBACV,aAAA,EAAY,MAAA;AAAA,gBAEX,QAAA,EAAA;AAAA;AAAA;AACH,WAAA,EAEJ,CAAA;AAAA,UAED,CAAC,iBAAiB,CAAC,qBAAA,oBAClBA,GAAAA,CAAC,WAAA,EAAA,EAAa,GAAG,WAAA,EAAa;AAAA;AAAA;AAAA,KAElC;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AClOd,IAAM,WAAA,GAAoBc,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASC,YAAAA,CAAY,KAAA,EAAO,YAAA,EAAc;AACxC,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,IAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA,GAAa,KAAA;AAAA,MACb,WAAA,GAAc,YAAA;AAAA,MACd,OAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,IAAA,GACJ,QAAA,KAAa,MAAA,GAAY,QAAA,GAAW,UAAU,MAAA,GAAY,OAAA;AAE5D,IAAA,MAAM,YAAA,GAAqBD,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,IAAA,EAAM,OAAA,EAAS,WAAA,EAAa,UAAU;AAAA,KACzC;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,iBAAA;AAAA,MACA,oBAAoB,WAAW,CAAA,CAAA;AAAA,MAC/B,UAAA,IAAc,2BAAA;AAAA,MACd;AAAA,KACF;AAEA,IAAA,MAAM,UAAA,GAAkC;AAAA,MACtC,GAAG,KAAA;AAAA,MACH,GAAI,OAAA,KAAY,MAAA,IAAa,CAAC,aAC1B,EAAE,GAAA,EAAK,OAAO,OAAA,KAAY,WAAW,CAAA,EAAG,OAAO,CAAA,EAAA,CAAA,GAAO,OAAA,KACtD;AAAC,KACP;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEd,GAAAA,CAAC,kBAAA,CAAmB,UAAnB,EAA4B,KAAA,EAAO,cAClC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,YAAA;AAAA,UACL,IAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA,EAAO,UAAA;AAAA,UACN,GAAG,SAAA;AAAA,UAEH;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA,CAAC,kBAAA,CAAmB,UAAnB,EAA4B,KAAA,EAAO,cAClC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAA;AAAA,QACL,IAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA,EAAO,UAAA;AAAA,QACN,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AClE1B,IAAM,aAAA,GAAgB,OAAO,KAAA,EAAO;AAAA,EAClC,IAAA,EAAM,YAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS,aAAa,IAAA,KAAS;AAC9D,CAAC,CAAA,CAAE,EAAE,CAAA;AAUE,IAAM,GAAA,GAAYgB,OAAA,CAAA,UAAA;AAAA,EACvB,SAASC,IAAAA,CAAI,KAAA,EAAO,GAAA,EAAK;AACvB,IAAA,MAAM,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,EAAA,EAAI,QAAA,EAAU,GAAG,IAAA,EAAK,GAAI,KAAA;AACpF,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAC/B,IAAA,MAAM,YAAA,GAAe,UAAA,CAAW,QAAA,EAAU,SAAS,CAAA;AAEnD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEjB,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,YAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,YAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,YAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,GAAA,CAAI,WAAA,GAAc,KAAA;AC7ClB,IAAM,eAAA,GAAkB,OAAO,KAAA,EAAO;AAAA,EACpC,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,WAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,oBACT,IAAA,KAAS,UAAA,IACT,SAAS,YAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAmC,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AAC7D,EAAA,MAAM,SAA8B,EAAC;AAGrC,EAAA,IAAI,OAAO,UAAA,CAAW,SAAA,KAAc,QAAA,EAAU;AAC5C,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,MAAA;AAAA,MACA,QAAQ,KAAA,EAAO,EAAE,aAAA,EAAe,UAAA,CAAW,WAAW;AAAA,KACxD;AAAA,EACF;AAGA,EAAA,IAAI,UAAA,CAAW,OAAA,KAAY,MAAA,IAAa,UAAA,CAAW,YAAY,CAAA,EAAG;AAChE,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,MAAA;AAAA,MACA,QAAQ,KAAA,EAAO,EAAE,GAAA,EAAK,UAAA,CAAW,SAAS;AAAA,KAC5C;AAAA,EACF;AAGA,EAAA,IAAI,UAAA,CAAW,eAAe,MAAA,EAAW;AACvC,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,MAAA;AAAA,MACA,QAAQ,KAAA,EAAO,EAAE,UAAA,EAAY,UAAA,CAAW,YAAY;AAAA,KACtD;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,mBAAmB,MAAA,EAAW;AAC3C,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,MAAA;AAAA,MACA,QAAQ,KAAA,EAAO,EAAE,cAAA,EAAgB,UAAA,CAAW,gBAAgB;AAAA,KAC9D;AAAA,EACF;AACA,EAAA,IAAI,UAAA,CAAW,aAAa,MAAA,EAAW;AACrC,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,MAAA;AAAA,MACA,QAAQ,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,CAAW,UAAU;AAAA,KAClD;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT,CAAC,CAAA;AAWM,IAAM,KAAA,GAAckB,OAAA,CAAA,UAAA;AAAA,EACzB,SAASC,MAAAA,CAAM,KAAA,EAAO,GAAA,EAAK;AACzB,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA,GAAY,QAAA;AAAA,MACZ,OAAA,GAAU,CAAA;AAAA,MACV,UAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA,GAAa,IAAA;AAAA,MACb,OAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAA8B;AAAA,MAClC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,OAAO,SAAA,KAAc,QAAA;AAE/C,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,UAAA;AAAA,MACA,iBAAA,IAAqB,aAAa,SAAS,CAAA,CAAA;AAAA,MAC3C;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAG/B,IAAA,IAAI,gBAAA,GAAmB,QAAA;AACvB,IAAA,IAAI,OAAA,IAAW,CAAC,OAAA,EAAS;AACvB,MAAA,MAAM,aAAA,GAAsBD,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,QAC/CA,OAAA,CAAA;AAAA,OACR;AACA,MAAA,gBAAA,GAAmB,aAAA,CAAc,MAAA;AAAA,QAC/B,CAAC,GAAA,EAAK,KAAA,EAAO,KAAA,KAAU;AACrB,UAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AACd,UAAA,IAAI,KAAA,GAAQ,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACpC,YAAA,GAAA,CAAI,IAAA;AAAA,cACIA,OAAA,CAAA,cAAA,CAAe,OAAO,CAAA,GAClBA,OAAA,CAAA,YAAA,CAAa,OAAA,EAA+B;AAAA,gBAChD,GAAA,EAAK,iBAAiB,KAAK,CAAA;AAAA,eAC5B,oBAEDlB,GAAAA,CAAC,UAAqC,QAAA,EAAA,OAAA,EAAA,EAA3B,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAa;AAAA,aAEpD;AAAA,UACF;AACA,UAAA,OAAO,GAAA;AAAA,QACT,CAAA;AAAA,QACA;AAAC,OACH;AAAA,IACF;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,UAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AC3KpB,IAAM,cAAA,GAAiB,OAAO,KAAA,EAAO;AAAA,EACnC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,KAAA,IACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,OAAA,IACT,IAAA,KAAS,gBAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,MAAA,IACT,IAAA,KAAS,QAAA,IACT,IAAA,KAAS,QAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAkC,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AAC5D,EAAA,MAAM,QAAA,GAAW,WAAW,MAAA,IAAU,KAAA;AACtC,EAAA,MAAM,SAA8B,EAAC;AAGrC,EAAA,IAAI,OAAO,UAAA,CAAW,SAAA,KAAc,QAAA,EAAU;AAC5C,IAAA,MAAA,CAAO,MAAA;AAAA,MACL,MAAA;AAAA,MACA,QAAQ,KAAA,EAAO,EAAE,aAAA,EAAe,UAAA,CAAW,WAAW;AAAA,KACxD;AAAA,EACF;AAGA,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,GAAA,IAAO,UAAA,CAAW,OAAA;AAC9C,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,GAAA,EAAK,QAAA,EAAU,CAAC,CAAA;AAAA,EACzD;AAGA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,IAAS,UAAA,CAAW,UAAA;AAChD,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,UAAA,EAAY,QAAA,EAAU,CAAC,CAAA;AAAA,IAChE;AAEA,IAAA,MAAM,UAAA,GAAa,UAAA,CAAW,OAAA,IAAW,UAAA,CAAW,cAAA;AACpD,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,cAAA,EAAgB,UAAA,EAAY,CAAC,CAAA;AAAA,IACtE;AAAA,EACF;AAGA,EAAA,MAAM,OAAA,GAAU,UAAA,CAAW,IAAA,IAAQ,UAAA,CAAW,QAAA;AAC9C,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,QAAA,EAAU,OAAA,EAAS,CAAC,CAAA;AAAA,EAC7D;AAEA,EAAA,OAAO,MAAA;AACT,CAAC,CAAA;AAYM,IAAM,IAAA,GAAaoB,OAAA,CAAA,UAAA;AAAA,EACxB,SAASC,KAAAA,CAAK,KAAA,EAAO,GAAA,EAAK;AACxB,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA,GAAY,KAAA;AAAA,MACZ,OAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA,GAAS,KAAA;AAAA,MACT,MAAA,GAAS,KAAA;AAAA,MACT,OAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAA6B;AAAA,MACjC,SAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,OAAO,SAAA,KAAc,QAAA;AAE/C,IAAA,MAAM,aAAA,GAAgB,UAAA;AAAA,MACpB,SAAA;AAAA,MACA,MAAA,IAAU,iBAAA;AAAA,MACV,MAAA,IAAU,iBAAA;AAAA,MACV,iBAAA,IAAqB,YAAY,SAAS,CAAA,CAAA;AAAA,MAC1C;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,IAAI,gBAAA,GAAmB,QAAA;AACvB,IAAA,IAAI,OAAA,IAAW,CAAC,OAAA,EAAS;AACvB,MAAA,MAAM,aAAA,GAAsBD,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,QAC/CA,OAAA,CAAA;AAAA,OACR;AACA,MAAA,gBAAA,GAAmB,aAAA,CAAc,MAAA;AAAA,QAC/B,CAAC,GAAA,EAAK,KAAA,EAAO,KAAA,KAAU;AACrB,UAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AACd,UAAA,IAAI,KAAA,GAAQ,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACpC,YAAA,GAAA,CAAI,IAAA;AAAA,cACIA,OAAA,CAAA,cAAA,CAAe,OAAO,CAAA,GAClBA,OAAA,CAAA,YAAA,CAAa,OAAA,EAA+B;AAAA,gBAChD,GAAA,EAAK,gBAAgB,KAAK,CAAA;AAAA,eAC3B,oBACDpB,GAAAA,CAAC,UAAoC,QAAA,EAAA,OAAA,EAAA,EAA1B,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAa;AAAA,aACnD;AAAA,UACF;AACA,UAAA,OAAO,GAAA;AAAA,QACT,CAAA;AAAA,QACA;AAAC,OACH;AAAA,IACF;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,KAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,KAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,UAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AC1MnB,IAAM,mBAAA,GAAsB,OAAO,KAAA,EAAO;AAAA,EACxC,IAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,OAAA,IACT,IAAA,KAAS,gBAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAUE,IAAM,SAAA,GAAkBsB,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA,GAAW,IAAA;AAAA,MACX,KAAA,GAAQ,KAAA;AAAA,MACR,cAAA,GAAiB,KAAA;AAAA,MACjB,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,kBAAA,GAAqB,UAAA;AAAA,MACzB,cAAA;AAAA,MACA,cAAA,IAAkB,+BAAA;AAAA,MAClB,KAAA,IAAS,qBAAA;AAAA,MACT,QAAA,KAAa,KAAA,IAAS,CAAA,cAAA,EAAiB,QAAQ,CAAA,CAAA;AAAA,MAC/C;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEvB,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,kBAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEA,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,kBAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,kBAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACtExB,SAAS,sBAAA,CACP,IAAA,EACA,OAAA,GAAkB,EAAA,EACG;AACrB,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,CAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,MAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA,MAAM,eAAA,GAAkB,GAAG,IAAA,CAAK,KAAA,CAAO,OAAO,OAAA,GAAW,GAAI,IAAI,GAAI,CAAA,CAAA,CAAA;AACrE,IAAA,OAAO;AAAA,MACL,SAAA,EAAW,eAAA;AAAA,MACX,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACZ;AAAA,EACF;AAEA,EAAA,OAAO,EAAC;AACV;AAEA,IAAM,cAAA,GAAiB,OAAO,KAAA,EAAO;AAAA,EACnC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,eACT,IAAA,KAAS,MAAA,IACT,IAAA,KAAS,SAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,mBACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,MAAA,IACT,SAAS,YAAA,IACT,IAAA,KAAS,gBAAA,IACT,IAAA,KAAS,QACT,IAAA,KAAS,IAAA,IACT,IAAA,KAAS,IAAA,IACT,SAAS,IAAA,IACT,IAAA,KAAS,IAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAkC,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AAC5D,EAAA,MAAM,SAA8B,EAAC;AACrC,EAAA,MAAM,OAAA,GAAU,WAAW,OAAA,IAAW,EAAA;AAGtC,EAAA,IAAI,WAAW,SAAA,EAAW;AACxB,IAAA,IAAI,OAAO,UAAA,CAAW,SAAA,KAAc,QAAA,EAAU;AAC5C,MAAA,MAAA,CAAO,MAAA;AAAA,QACL,MAAA;AAAA,QACA,QAAQ,KAAA,EAAO,EAAE,aAAA,EAAe,UAAA,CAAW,WAAW;AAAA,OACxD;AAAA,IACF;AAEA,IAAA,IAAI,UAAA,CAAW,YAAY,MAAA,EAAW;AACpC,MAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,GAAA,EAAK,UAAA,CAAW,OAAA,EAAS,CAAC,CAAA;AAAA,IACnE;AACA,IAAA,IAAI,UAAA,CAAW,eAAe,MAAA,EAAW;AACvC,MAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,EAAO,EAAE,MAAA,EAAQ,UAAA,CAAW,UAAA,EAAY,CAAC,CAAA;AAAA,IACzE;AACA,IAAA,IAAI,UAAA,CAAW,kBAAkB,MAAA,EAAW;AAC1C,MAAA,MAAA,CAAO,MAAA;AAAA,QACL,MAAA;AAAA,QACA,QAAQ,KAAA,EAAO,EAAE,SAAA,EAAW,UAAA,CAAW,eAAe;AAAA,OACxD;AAAA,IACF;AACA,IAAA,IAAI,UAAA,CAAW,eAAe,MAAA,EAAW;AACvC,MAAA,MAAA,CAAO,MAAA;AAAA,QACL,MAAA;AAAA,QACA,QAAQ,KAAA,EAAO,EAAE,UAAA,EAAY,UAAA,CAAW,YAAY;AAAA,OACtD;AAAA,IACF;AACA,IAAA,IAAI,UAAA,CAAW,mBAAmB,MAAA,EAAW;AAC3C,MAAA,MAAA,CAAO,MAAA;AAAA,QACL,MAAA;AAAA,QACA,QAAQ,KAAA,EAAO,EAAE,cAAA,EAAgB,UAAA,CAAW,gBAAgB;AAAA,OAC9D;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAM,OAAA,GAAuD;AAAA,IAC3D,IAAI,UAAA,CAAW,EAAA;AAAA,IACf,IAAI,UAAA,CAAW,EAAA;AAAA,IACf,IAAI,UAAA,CAAW,EAAA;AAAA,IACf,IAAI,UAAA,CAAW,EAAA;AAAA,IACf,IAAI,UAAA,CAAW;AAAA,GACjB;AAEA,EAAA,KAAA,MAAW,MAAM,cAAA,EAAgB;AAC/B,IAAA,MAAM,IAAA,GAAO,QAAQ,EAAE,CAAA;AACvB,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,IAAA,EAAM,OAAO,CAAA;AACvD,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,MAAA,CAAO,MAAA,CAAO,QAAQ,UAAU,CAAA;AAAA,MAClC,CAAA,MAAO;AACL,QAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,WAAA,CAAY,EAAA,CAAG,EAAE,CAAA;AACrC,QAAA,MAAA,CAAO,KAAK,CAAA,GAAI;AAAA,UACd,GAAI,MAAA,CAAO,KAAK,CAAA,IAAK,EAAC;AAAA,UACtB,GAAG;AAAA,SACL;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT,CAAC,CAAA;AAWM,IAAM,IAAA,GAAawB,OAAA,CAAA,UAAA;AAAA,EACxB,SAASC,KAAAA,CAAK,KAAA,EAAO,GAAA,EAAK;AACxB,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA,GAAY,KAAA;AAAA,MACZ,IAAA,GAAO,KAAA;AAAA,MACP,OAAA,GAAU,EAAA;AAAA,MACV,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA,GAAY,KAAA;AAAA,MACZ,IAAA,GAAO,MAAA;AAAA,MACP,UAAA;AAAA,MACA,cAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAA6B;AAAA,MACjC,SAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,OAAO,SAAA,KAAc,QAAA;AAE/C,IAAA,MAAM,aAAA,GAAgB,UAAA;AAAA,MACpB,SAAA;AAAA,MACA,SAAA,IAAa,oBAAA;AAAA,MACb,IAAA,IAAQ,eAAA;AAAA,MACR,IAAA,IAAQ,YAAY,IAAI,CAAA,CAAA;AAAA,MACxB,iBAAA,IAAqB,sBAAsB,SAAS,CAAA,CAAA;AAAA,MACpD;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEzB,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,KAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,KAAA;AAAA,UACA,UAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,UAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;ACtPnB,IAAM,iBAAA,GAAoB,OAAO,IAAA,EAAM;AAAA,EACrC,IAAA,EAAM,gBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,SAAS,aAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS,WAAA,IACT,SAAS,UAAA,IACT,IAAA,KAAS,WACT,IAAA,KAAS,WAAA,IACT,SAAS,aAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAUE,IAAM,OAAA,GAAgB0B,OAAA,CAAA,UAAA;AAAA,EAC3B,SAASC,QAAAA,CAAQ,KAAA,EAAO,GAAA,EAAK;AAC3B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,WAAA,GAAc,YAAA;AAAA,MACd,OAAA,GAAU,WAAA;AAAA,MACV,SAAA,GAAY,OAAA;AAAA,MACZ,QAAA,GAAW,KAAA;AAAA,MACX,KAAA,GAAQ,KAAA;AAAA,MACR,SAAA,GAAY,QAAA;AAAA,MACZ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAEpC,IAAA,MAAM,gBAAA,GAAmB,UAAA;AAAA,MACvB,YAAA;AAAA,MACA,eAAe,WAAW,CAAA,CAAA;AAAA,MAC1B,OAAA,KAAY,WAAA,IAAe,CAAA,YAAA,EAAe,OAAO,CAAA,CAAA;AAAA,MACjD,SAAA,KAAc,OAAA,IAAW,CAAA,YAAA,EAAe,SAAS,CAAA,CAAA;AAAA,MACjD,QAAA,IAAY,uBAAA;AAAA,MACZ,KAAA,IAAS,mBAAA;AAAA,MACT,WAAA,IAAe,2BAAA;AAAA,MACf,WAAA,IAAe,qBAAqB,SAAS,CAAA,CAAA;AAAA,MAC7C;AAAA,KACF;AAGA,IAAA,IAAI,UAAA,GAAgC,IAAA;AACpC,IAAA,IAAI,WAAA,KAAgB,cAAc,WAAA,EAAa;AAC7C,MAAA,UAAA,GAAa,KAAA;AAAA,IACf;AAEA,IAAA,MAAM,SAAA,GAAY,aAAa,EAAA,IAAM,UAAA;AAGrC,IAAA,MAAM,aAAa,SAAA,KAAc,IAAA;AACjC,IAAA,MAAM,IAAA,GAAO,QAAA,KAAa,UAAA,GAAa,MAAA,GAAY,WAAA,CAAA;AACnD,IAAA,MAAM,eAAA,GACJ,UAAA,GACI,MAAA,GACA,WAAA,KAAgB,aACd,UAAA,GACA,MAAA;AAER,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE3B,GAAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,gBAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACA,IAAA;AAAA,UACA,kBAAA,EAAkB,eAAA;AAAA,UACjB,GAAG,IAAA;AAAA,UAEH,wCACCA,GAAAA,CAAC,UAAK,SAAA,EAAU,4CAAA,EAA8C,UAAS,CAAA,GAEvE;AAAA;AAAA,OAEJ;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,gBAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACA,IAAA;AAAA,QACA,kBAAA,EAAkB,eAAA;AAAA,QACjB,GAAG,IAAA;AAAA,QAEH,wCACCA,GAAAA,CAAC,UAAK,SAAA,EAAU,4CAAA,EAA8C,UAAS,CAAA,GACrE;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;ACtHtB,IAAM,qBAAA,GAAsE;AAAA,EAC1E,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,KAAA,EAAO,GAAA;AAAA,EACP,KAAA,EAAO,GAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,OAAA,EAAS,MAAA;AAAA,EACT,QAAA,EAAU;AACZ,CAAA;AAUA,SAAS,kBAAkB,GAAA,EAAqC;AAC9D,EAAA,OACE,GAAA,KAAQ,SAAA,IACR,GAAA,KAAQ,WAAA,IACR,GAAA,KAAQ,WACR,GAAA,KAAQ,SAAA,IACR,GAAA,KAAQ,MAAA,IACR,GAAA,KAAQ,SAAA;AAEZ;AAEA,IAAM,uBAAA,GAAkD;AAAA,EACtD,OAAA,EAAS,8BAAA;AAAA,EACT,SAAA,EAAW,gCAAA;AAAA,EACX,KAAA,EAAO,6BAAA;AAAA,EACP,OAAA,EAAS,8BAAA;AAAA,EACT,IAAA,EAAM,2BAAA;AAAA,EACN,OAAA,EAAS,8BAAA;AAAA,EACT,cAAA,EAAgB,4BAAA;AAAA,EAChB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,eAAA,EAAiB,0BAAA;AAAA,EACjB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,kBAAA,EAAoB;AACtB,CAAA;AAEA,SAAS,qBAAA,CAAsB,KAAc,IAAA,EAAkC;AAC7E,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,UAAU,OAAO,MAAA;AACpD,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,EAAA,IAAI,OAAA,GAAmB,GAAA;AACvB,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,YAAY,IAAA,IAAQ,OAAO,OAAA,KAAY,QAAA,IAAY,QAAQ,OAAA,EAAS;AACtE,MAAA,OAAA,GAAW,QAAoC,IAAI,CAAA;AAAA,IACrD,CAAA,MAAO;AACL,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF;AACA,EAAA,OAAO,OAAO,OAAA,KAAY,QAAA,GAAW,OAAA,GAAU,MAAA;AACjD;AAEO,SAAS,sBAAA,CACd,OACA,KAAA,EACoB;AACpB,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,KAAU,SAAA,IAAa,UAAU,cAAA,EAAgB;AAC7D,IAAA,OAAO,KAAA;AAAA,EACT;AAGA,EAAA,IAAI,KAAA,EAAO,OAAA,IAAW,iBAAA,CAAkB,KAAK,CAAA,EAAG;AAC9C,IAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA;AACxC,IAAA,IAAI,YAAA,IAAgB,OAAO,YAAA,CAAa,IAAA,KAAS,QAAA,EAAU;AACzD,MAAA,OAAO,YAAA,CAAa,IAAA;AAAA,IACtB;AAAA,EACF;AAGA,EAAA,IAAI,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,IAAK,OAAO,OAAA,EAAS;AACzC,IAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,KAAA,CAAM,OAAA,EAAS,KAAK,CAAA;AAC3D,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,QAAA;AAAA,IACT;AAAA,EACF;AAGA,EAAA,IAAI,SAAS,uBAAA,EAAyB;AACpC,IAAA,OAAO,wBAAwB,KAAK,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,KAAA;AACT;AAEA,IAAM,oBAAA,GAAuB,OAAO,MAAA,EAAQ;AAAA,EAC1C,IAAA,EAAM,mBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,SAAA,IACT,SAAS,OAAA,IACT,IAAA,KAAS,OAAA,IACT,IAAA,KAAS,kBACT,IAAA,KAAS,QAAA,IACT,SAAS,WAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAsB,CAAC,EAAE,KAAA,EAAO,OAAM,KAAM;AAC3C,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,sBAAA,CAAuB,KAAA,EAAO,KAAK;AAAA,KAC5C;AAAA,EACF;AACA,EAAA,OAAO,EAAC;AACV,CAAC,CAAA;AAWM,IAAM,UAAA,GAAmB4B,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASC,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA,GAAU,OAAA;AAAA,MACV,KAAA,GAAQ,SAAA;AAAA,MACR,KAAA;AAAA,MACA,YAAA,GAAe,KAAA;AAAA,MACf,MAAA,GAAS,KAAA;AAAA,MACT,SAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,mBAAA,GAAsB,UAAA;AAAA,MAC1B,eAAA;AAAA,MACA,kBAAkB,OAAO,CAAA,CAAA;AAAA,MACzB,KAAA,IAAS,KAAA,KAAU,SAAA,IAAa,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAA;AAAA,MAC7D,YAAA,IAAgB,8BAAA;AAAA,MAChB,MAAA,IAAU,wBAAA;AAAA,MACV,SAAA,KAAc,MAAA,IAAa,SAAA,GAAY,CAAA,IAAK,2BAAA;AAAA,MAC5C;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAmC;AAAA,MACvC,GAAI,cAAc,MAAA,IAAa,SAAA,GAAY,IACtC,EAAE,eAAA,EAAiB,SAAA,EAAU,GAC9B,EAAC;AAAA,MACL,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,SAAA,GACJ,SAAA,IAAa,EAAA,IAAM,qBAAA,CAAsB,OAAO,CAAA,IAAK,MAAA;AAEvD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE7B,GAAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,mBAAA;AAAA,UACX,KAAA,EAAO,WAAA;AAAA,UACP,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,mBAAA;AAAA,QACX,KAAA,EAAO,WAAA;AAAA,QACP,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;ACpNlB,IAAM,OAAA,GAAgB8B,OAAA,CAAA,UAAA;AAAA,EAC3B,SAASC,QAAAA,CAAQ,KAAA,EAAO,GAAA,EAAK;AAC3B,IAAA,MAAM,EAAE,KAAA,GAAQ,CAAA,EAAG,SAAS,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEnD,IAAA,MAAM,QAAA,GAAW,IAAI,KAAK,CAAA,CAAA;AAC1B,IAAA,MAAM,kBAAkB,OAAA,IAAW,QAAA;AACnC,IAAA,MAAM,oBAAoB,SAAA,IAAa,QAAA;AAEvC,IAAA,uBACE/B,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,iBAAA;AAAA,QACX,OAAA,EAAS,eAAA;AAAA,QACR,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;ACtBtB,IAAM,aAAA,GAAqD;AAAA,EACzD,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AASO,IAAM,IAAA,GAAagC,OAAA,CAAA,UAAA;AAAA,EACxB,SAASC,KAAAA,CAAK,KAAA,EAAO,GAAA,EAAK;AACxB,IAAA,MAAM,EAAE,MAAM,OAAA,EAAS,KAAA,GAAQ,OAAO,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE7D,IAAA,MAAM,eAAA,GAAkB,OAAA,KAAY,IAAA,GAAO,aAAA,CAAc,IAAI,CAAA,GAAI,OAAA,CAAA;AACjE,IAAA,MAAM,UAAA,GAAa,QAAQ,GAAA,GAAM,MAAA;AACjC,IAAA,MAAM,oBAAoB,SAAA,IAAa,UAAA;AAEvC,IAAA,uBACEjC,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,iBAAA;AAAA,QACX,OAAA,EAAS,eAAA;AAAA,QACR,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;ACvCZ,IAAM,SAAA,GAAkBkC,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM,EAAE,YAAY,GAAA,EAAK,OAAA,GAAU,SAAS,YAAA,GAAe,IAAA,EAAM,GAAG,IAAA,EAAK,GAAI,KAAA;AAE7E,IAAA,uBACEnC,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACVxB,IAAM,cAAA,GAAiB,OAAO,MAAA,EAAQ;AAAA,EACpC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,SAAS,aAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,IAAA,GAAaoC,OAAA,CAAA,UAAA;AAAA,EACxB,SAASC,KAAAA,CAAK,KAAA,EAAO,GAAA,EAAK;AACxB,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA,GAAY,MAAA;AAAA,MACZ,EAAA;AAAA,MACA,WAAA,GAAc,SAAA;AAAA,MACd,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,aAAA,GAAgB,UAAA;AAAA,MACpB,SAAA;AAAA,MACA,WAAA,KAAgB,SAAA,IAAa,CAAA,SAAA,EAAY,WAAW,CAAA,CAAA;AAAA,MACpD;AAAA,KACF;AAEA,IAAA,MAAM,SAAA,GAAY,aAAa,EAAA,IAAM,MAAA;AAErC,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACErC,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AC7DZ,IAAM,gBAAA,GAAgD;AAAA,EAC3D,OAAA,EAAS,QAAA;AAAA,EACT,GAAA,EAAK,QAAA;AAAA,EACL,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,QAAA;AAAA,EACL,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,KAAA;AAAA,EACR,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,QAAA;AAAA,EACL,SAAA,EAAW,QAAA;AAAA,EACX,MAAA,EAAQ,QAAA;AAAA,EACR,GAAA,EAAK,QAAA;AAAA,EACL,EAAA,EAAI,QAAA;AAAA,EACJ,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO;AACT;AA8BA,IAAM,aAAA,GAAgB,OAAO,KAAA,EAAO;AAAA,EAClC,IAAA,EAAM,YAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,MAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAUE,IAAM,GAAA,GAAYsC,OAAA,CAAA,UAAA;AAAA,EACvB,SAASC,IAAAA,CAAI,KAAA,EAAO,GAAA,EAAK;AACvB,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA,GAAY,KAAA;AAAA,MACZ,EAAA;AAAA,MACA,IAAA,GAAO,IAAA;AAAA,MACP,OAAA,GAAU,SAAA;AAAA,MACV,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,YAAA,GAAe,UAAA;AAAA,MACnB,QAAA;AAAA,MACA,WAAW,IAAI,CAAA,CAAA;AAAA,MACf,WAAW,OAAO,CAAA,CAAA;AAAA,MAClB;AAAA,KACF;AAEA,IAAA,MAAM,SAAA,GAAY,aAAa,EAAA,IAAM,KAAA;AAGrC,IAAA,MAAM,UAAU,QAAA,KAAa,QAAA,GAAW,gBAAA,CAAiB,QAAQ,KAAK,QAAA,GAAW,IAAA,CAAA;AAEjF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEvC,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,YAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,YAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,GAAA,CAAI,WAAA,GAAc,KAAA;AC3IX,IAAM,gBAAA,GAAyBwC,sBAEpC,MAAS;AAMJ,SAAS,YAAA,GAAkD;AAChE,EAAA,OAAaA,mBAAW,gBAAgB,CAAA;AAC1C;ACRO,IAAM,SAAA,GAAkBC,OAAA,CAAA,UAAA,CAG7B,SAASC,UAAAA,CAAU,EAAE,SAAA,EAAW,UAAA,EAAY,WAAA,EAAa,GAAG,KAAA,EAAM,EAAG,GAAA,EAAK;AAC1E,EAAA,uBACE1C,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,iBAAA,EAAmB,SAAS,CAAA;AAAA,MACjD,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAM,eAAA,GAAkB,OAAO,KAAA,EAAO;AAAA,EACpC,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,SAAA,IACT,SAAS,MAAA,IACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,OAAA,IACT,IAAA,KAAS,cACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,mBAAA,IACT,IAAA,KAAS,iBAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,KAAA,GAAcyC,OAAA,CAAA,UAAA;AAAA,EACzB,SAASE,MAAAA,CAAM,KAAA,EAAO,GAAA,EAAK;AACzB,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA,GAAU,UAAA;AAAA,MACV,IAAA,GAAO,IAAA;AAAA,MACP,SAAA,GAAY,KAAA;AAAA,MACZ,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,cAAA;AAAA,MACA,YAAA;AAAA,MACA,SAAA,GAAY,KAAA;AAAA,MACZ,OAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,EAAA,EAAI,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,UAAA;AAAA,MACA,kBAAA,EAAoB,mBAAA;AAAA,MACpB,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,EAAA,GAAK,MAAA,KAAW,OAAA,GAAU,MAAA,GAAY,SAAA,EAAW,EAAA,CAAA;AACvD,IAAA,MAAM,IAAA,GAAO,QAAA,KAAa,OAAA,GAAU,MAAA,GAAY,MAAA,CAAA;AAChD,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AAC/C,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AAExD,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,mBAAA;AAAA,MACA,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAGhB,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUF,iBAAiB,MAAM;AACrE,MAAA,IAAI,SAAA,KAAc,MAAA,EAAW,OAAO,MAAA,CAAO,SAAS,CAAA;AACpD,MAAA,IAAI,YAAA,KAAiB,MAAA,EAAW,OAAO,MAAA,CAAO,YAAY,CAAA;AAC1D,MAAA,OAAO,EAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,IAAA,MAAM,YAAA,GAAe,YAAA,GAAe,MAAA,CAAO,SAAA,IAAa,EAAE,CAAA,GAAI,aAAA;AAE9D,IAAA,MAAM,aAAA,GAAsBA,eAAgC,IAAI,CAAA;AAEhE,IAAA,MAAM,cAAA,GAAuBA,OAAA,CAAA,WAAA;AAAA,MAC3B,CAAC,IAAA,KAAkC;AACjC,QAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,QAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACnB,CAAA,MAAA,IAAW,YAAA,IAAgB,SAAA,IAAa,YAAA,EAAc;AACpD,UAAC,aAAiE,OAAA,GAAU,IAAA;AAAA,QAC9E;AAAA,MACF,CAAA;AAAA,MACA,CAAC,YAAY;AAAA,KACf;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+C;AACnE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,MACrC;AACA,MAAA,QAAA,GAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,MACrB;AACA,MAAA,IAAI,cAAc,OAAA,EAAS;AACzB,QAAA,aAAA,CAAc,QAAQ,KAAA,GAAQ,EAAA;AAC9B,QAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,MAAM,CAAA;AAClD,QAAA,aAAA,CAAc,OAAA,CAAQ,cAAc,KAAK,CAAA;AACzC,QAAA,aAAA,CAAc,QAAQ,KAAA,EAAM;AAAA,MAC9B;AACA,MAAA,OAAA,IAAU;AAAA,IACZ,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,IAAI,aAAA,CAAc,OAAA,IAAW,QAAA,CAAS,aAAA,KAAkB,cAAc,OAAA,EAAS;AAC7E,QAAA,aAAA,CAAc,QAAQ,KAAA,EAAM;AAAA,MAC9B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,CAAC,YAAY,CAAC,QAAA,IAAY,aAAa,MAAA,GAAS,CAAA;AAE/E,IAAA,MAAM,WAAA,GAAc,4BAClBzC,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,iBAAA;AAAA,QACV,YAAA,EAAW,aAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QAET,QAAA,kBAAA4C,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,KAAA;AAAA,YACZ,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YAEf,QAAA,EAAA;AAAA,8BAAA5C,GAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,8BACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA;AACtC;AAAA,KACF,GACE,IAAA;AAEJ,IAAA,MAAM,qBAAA,GAAwB,UAAA;AAAA,MAC5B,UAAA;AAAA,MACA,aAAa,OAAO,CAAA,CAAA;AAAA,MACpB,aAAa,IAAI,CAAA,CAAA;AAAA,MACjB,SAAA,IAAa,sBAAA;AAAA,MACb,KAAA,IAAS,iBAAA;AAAA,MACT,QAAA,IAAY,oBAAA;AAAA,MACZ;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,MAAM,gBAAA,GAAyByC,OAAA,CAAA,WAAA;AAAA,MAC7B,CAAC,IAAA,KAA6B;AAC5B,QAAA,MAAA,CAAO,KAAK,IAA6B,CAAA;AACzC,QAAA,MAAA,CAAO,cAAc,IAA+B,CAAA;AACpD,QAAA,cAAA,CAAe,IAA+B,CAAA;AAAA,MAChD,CAAA;AAAA,MACA,CAAC,GAAA,EAAK,YAAA,EAAc,cAAc;AAAA,KACpC;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEzC,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,gBAAA;AAAA,UACL,SAAA,EAAW,qBAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACA,IAAA;AAAA,UACA,UAAU,QAAA,IAAY,MAAA;AAAA,UACtB,UAAU,QAAA,IAAY,MAAA;AAAA,UACtB,UAAU,QAAA,IAAY,MAAA;AAAA,UACtB,kBAAA,EAAkB,eAAA;AAAA,UAClB,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,UAC7B,KAAA,EAAO,SAAA;AAAA,UACP,YAAA;AAAA,UACA,QAAA,EAAU,YAAA;AAAA,UACV,OAAA,EAAS,kBAAA;AAAA,UACR,GAAG,UAAA;AAAA,UACH,GAAG,cAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,qBAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACA,OAAA,EAAS,kBAAA;AAAA,QAER,QAAA,EAAA;AAAA,UAAA,cAAA;AAAA,0BACD5C,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,cAAA;AAAA,cACL,EAAA;AAAA,cACA,IAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,kBAAA,EAAkB,eAAA;AAAA,cAClB,KAAA,EAAO,SAAA;AAAA,cACP,YAAA;AAAA,cACA,QAAA,EAAU,YAAA;AAAA,cACV,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,cAC7B,SAAA,EAAU,iBAAA;AAAA,cACT,GAAG,UAAA;AAAA,cACH,GAAG;AAAA;AAAA,WACN;AAAA,UACC,WAAA;AAAA,UACA;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AChPpB,IAAM,mBAAA,GAAsB,OAAO,KAAA,EAAO;AAAA,EACxC,IAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS;AACxC,CAAC,CAAA,CAA2B,CAAC,EAAE,SAAA,EAAU,MAAO;AAAA,EAC9C,OAAA,EAAS,aAAA;AAAA,EACT,aAAA,EAAe,QAAA;AAAA,EACf,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,YAAY,MAAA,GAAS,MAAA;AAAA,EAC5B,aAAA,EAAe;AACjB,CAAA,CAAE,CAAA;AAEF,IAAM,WAAA,GAAc,OAAO,OAAO,CAAA;AAAA,EAChC,CAAC,EAAE,KAAA,EAAO,KAAA,EAAM,MAAO;AAAA,IACrB,OAAA,EAAS,OAAA;AAAA,IACT,QAAA,EAAU,UAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,UAAA,EAAY,GAAA;AAAA,IACZ,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAAA,IAChC,KAAA,EAAO,QAAQ,KAAA,CAAM,OAAA,CAAQ,MAAM,IAAA,GAAO,KAAA,CAAM,QAAQ,IAAA,CAAK,OAAA;AAAA,IAC7D,UAAA,EAAY,MAAA;AAAA,IACZ,sCAAA,EAAwC;AAAA,MACtC,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,IAAA;AAAA,MAC3B,UAAA,EAAY;AAAA;AACd,GACF;AACF,CAAA;AAEA,IAAM,gBAAA,GAAmB,OAAO,GAAG,CAAA;AAAA,EACjC,CAAC,EAAE,KAAA,EAAO,KAAA,EAAM,MAAO;AAAA,IACrB,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,MAAA,EAAQ,CAAA;AAAA,IACR,SAAA,EAAW,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA;AAAA,IAC5B,KAAA,EAAO,QAAQ,KAAA,CAAM,OAAA,CAAQ,MAAM,IAAA,GAAO,KAAA,CAAM,QAAQ,IAAA,CAAK;AAAA,GAC/D;AACF,CAAA;AAcO,IAAM,SAAA,GAAkB6C,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM;AAAA,MACJ,EAAA,EAAI,MAAA;AAAA,MACJ,KAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA,GAAQ,KAAA;AAAA,MACR,QAAA,GAAW,KAAA;AAAA,MACX,SAAA,GAAY,KAAA;AAAA,MACZ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,cAAoBD,OAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,UAAU,MAAA,IAAU,WAAA;AAC1B,IAAA,MAAM,OAAA,GAAU,QAAQ,KAAK,CAAA;AAC7B,IAAA,MAAM,mBAAA,GAAsB,OAAA,IAAW,YAAA,GAAe,YAAA,GAAe,UAAA;AACrE,IAAA,MAAM,YAAY,OAAA,IAAW,YAAA,GAAe,GAAG,OAAO,CAAA,MAAA,CAAA,GAAW,GAAG,OAAO,CAAA,OAAA,CAAA;AAE3E,IAAA,uBACED,IAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA;AAAA,QACA,EAAA;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCA,IAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAS,OAAA,EAAS,OAAc,QAAA,EAC1C,QAAA,EAAA;AAAA,YAAA,KAAA;AAAA,YACA,QAAA,oBACC5C,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EAAoC,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAEvE;AAAA,WAAA,EAEJ,CAAA;AAAA,0BAGFA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,OAAA;AAAA,cACJ,KAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAA;AAAA,cACA,kBAAA,EAAkB,sBAAsB,SAAA,GAAY,MAAA;AAAA,cACnD,GAAG;AAAA;AAAA,WACN;AAAA,UAEC,uCACCA,GAAAA;AAAA,YAAC,gBAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,SAAA;AAAA,cACJ,KAAA;AAAA,cACA,IAAA,EAAM,OAAA,IAAW,YAAA,GAAe,OAAA,GAAU,MAAA;AAAA,cAC1C,WAAA,EAAW,OAAA,IAAW,YAAA,GAAe,QAAA,GAAW,MAAA;AAAA,cAE/C,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACrHxB,IAAM,mBAAA,GAAsB,OAAO,KAAA,EAAO;AAAA,EACxC,IAAA,EAAM,uBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,cAAc,IAAA,KAAS;AACpC,CAAC,CAAA;AAAA,EACC,CAAC,EAAE,KAAA,EAAO,QAAA,EAAU,sBAAqB,MAAO;AAAA,IAC9C,OAAA,EAAS,MAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IACR,SAAA,EAAW,KAAA;AAAA,IACX,UAAA,EAAY,QAAA;AAAA,IACZ,cAAA,EAAgB,QAAA;AAAA,IAChB,UAAA,EAAY,QAAA;AAAA,IACZ,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,SAAA;AAAA,IAC1B,YAAY,QAAA,KAAa,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA;AAAA,IACpD,aAAa,QAAA,KAAa,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,GAAI,CAAA;AAAA,IACvD,aAAA,EAAe,uBAAuB,MAAA,GAAS,MAAA;AAAA,IAC/C,UAAA,EAAY;AAAA,GACd;AACF,CAAA;AAEO,IAAM,cAAA,GAAuB+C,OAAA,CAAA,UAAA,CAGlC,SAASC,eAAAA,CAAe,OAAO,GAAA,EAAK;AACpC,EAAA,MAAM,EAAE,QAAA,EAAU,oBAAA,GAAuB,OAAO,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAEtE,EAAA,uBACEhD,GAAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,QAAA;AAAA,MACA,oBAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,gBAAA;ACrC7B,IAAM,uBAAA,GAA0B,OAAO,KAAA,EAAO;AAAA,EAC5C,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,SAAA,IACT,SAAS,MAAA,IACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,OAAA,IACT,IAAA,KAAS,cACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,QAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAME,IAAM,QAAA,GAAiBiD,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASC,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA,GAAU,UAAA;AAAA,MACV,IAAA,GAAO,IAAA;AAAA,MACP,SAAA,GAAY,KAAA;AAAA,MACZ,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,GAAU,CAAA;AAAA,MACV,OAAA;AAAA,MACA,UAAA,GAAa,KAAA;AAAA,MACb,MAAA,GAAS,UAAA;AAAA,MACT,SAAA,GAAY,KAAA;AAAA,MACZ,SAAA;AAAA,MACA,WAAA,EAAa,eAAA;AAAA,MACb,gBAAgB,EAAC;AAAA,MACjB,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,kBAAA,EAAoB,mBAAA;AAAA,MACpB,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,EAAA,GAAK,MAAA,KAAW,OAAA,GAAU,MAAA,GAAY,SAAA,EAAW,EAAA,CAAA;AACvD,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AAC/C,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AAExD,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,mBAAA;AAAA,MACA,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEhB,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUD,iBAAiB,MAAM;AACrE,MAAA,IAAI,SAAA,KAAc,MAAA,EAAW,OAAO,MAAA,CAAO,SAAS,CAAA;AACpD,MAAA,IAAI,YAAA,KAAiB,MAAA,EAAW,OAAO,MAAA,CAAO,YAAY,CAAA;AAC1D,MAAA,OAAO,EAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AACnC,IAAA,MAAM,YAAA,GAAe,YAAA,GAAe,MAAA,CAAO,SAAA,IAAa,EAAE,CAAA,GAAI,aAAA;AAE9D,IAAA,MAAM,gBAAA,GAAyBA,eAAmC,IAAI,CAAA;AAEtE,IAAA,MAAM,iBAAA,GAA0BA,OAAA,CAAA,WAAA;AAAA,MAC9B,CAAC,IAAA,KAAqC;AACpC,QAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAC3B,QAAA,IAAI,OAAO,oBAAoB,UAAA,EAAY;AACzC,UAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,QACtB,CAAA,MAAA,IAAW,eAAA,IAAmB,SAAA,IAAa,eAAA,EAAiB;AAC1D,UAAC,gBAAuE,OAAA,GAAU,IAAA;AAAA,QACpF;AAAA,MACF,CAAA;AAAA,MACA,CAAC,eAAe;AAAA,KAClB;AAGA,IAAMA,wBAAgB,MAAM;AAC1B,MAAA,IAAI,CAAC,UAAA,IAAc,CAAC,gBAAA,CAAiB,OAAA,EAAS;AAE9C,MAAA,MAAM,WAAW,gBAAA,CAAiB,OAAA;AAClC,MAAA,QAAA,CAAS,MAAM,MAAA,GAAS,MAAA;AAExB,MAAA,MAAM,aAAa,UAAA,CAAW,gBAAA,CAAiB,QAAQ,CAAA,CAAE,UAAU,CAAA,IAAK,EAAA;AACxE,MAAA,MAAM,YAAY,OAAA,GAAU,UAAA;AAC5B,MAAA,MAAM,SAAA,GAAY,OAAA,GAAU,OAAA,GAAU,UAAA,GAAa,QAAA;AAEnD,MAAA,MAAM,mBAAmB,IAAA,CAAK,GAAA;AAAA,QAC5B,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,YAAA,EAAc,SAAS,CAAA;AAAA,QACzC;AAAA,OACF;AAEA,MAAA,QAAA,CAAS,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,gBAAgB,CAAA,EAAA,CAAA;AAC3C,MAAA,QAAA,CAAS,MAAM,SAAA,GACb,OAAA,IAAW,QAAA,CAAS,YAAA,GAAe,YAAY,MAAA,GAAS,QAAA;AAAA,IAC5D,GAAG,CAAC,YAAA,EAAc,UAAA,EAAY,OAAA,EAAS,OAAO,CAAC,CAAA;AAE/C,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkD;AACtE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,gBAAA,CAAiB,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,MACrC;AACA,MAAA,QAAA,GAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,qBAAqB,MAAM;AAC/B,MAAA,IAAI,gBAAA,CAAiB,OAAA,IAAW,QAAA,CAAS,aAAA,KAAkB,iBAAiB,OAAA,EAAS;AACnF,QAAA,gBAAA,CAAiB,QAAQ,KAAA,EAAM;AAAA,MACjC;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,UAAA;AAAA,MACzB,aAAA;AAAA,MACA,gBAAgB,OAAO,CAAA,CAAA;AAAA,MACvB,gBAAgB,IAAI,CAAA,CAAA;AAAA,MACpB,SAAA,IAAa,yBAAA;AAAA,MACb,KAAA,IAAS,oBAAA;AAAA,MACT,QAAA,IAAY,uBAAA;AAAA,MACZ;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,MAAM,aAAA,GAAqC;AAAA,MACzC,MAAA,EAAQ,aAAa,MAAA,GAAS;AAAA,KAChC;AAEA,IAAA,MAAM,YAAA,GAAe,4BACnBL,IAAAA,CAAC,SAAI,SAAA,EAAU,sBAAA,EAAuB,aAAU,QAAA,EAC7C,QAAA,EAAA;AAAA,MAAA,YAAA,CAAa,MAAA;AAAA,MACb,SAAA,GAAY,CAAA,GAAA,EAAM,SAAS,CAAA,CAAA,GAAK;AAAA,KAAA,EACnC,CAAA,GACE,IAAA;AAEJ,IAAA,MAAM,gBAAA,GAAyBK,OAAA,CAAA,WAAA;AAAA,MAC7B,CAAC,IAAA,KAA6B;AAC5B,QAAA,MAAA,CAAO,KAAK,IAA6B,CAAA;AACzC,QAAA,MAAA,CAAO,iBAAiB,IAAkC,CAAA;AAC1D,QAAA,iBAAA,CAAkB,IAAkC,CAAA;AAAA,MACtD,CAAA;AAAA,MACA,CAAC,GAAA,EAAK,eAAA,EAAiB,iBAAiB;AAAA,KAC1C;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEjD,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,gBAAA;AAAA,UACL,SAAA,EAAW,kBAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACA,IAAA;AAAA,UACA,WAAA;AAAA,UACA,UAAU,QAAA,IAAY,MAAA;AAAA,UACtB,UAAU,QAAA,IAAY,MAAA;AAAA,UACtB,UAAU,QAAA,IAAY,MAAA;AAAA,UACtB,kBAAA,EAAkB,eAAA;AAAA,UAClB,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,UAC7B,KAAA,EAAO,SAAA;AAAA,UACP,YAAA;AAAA,UACA,QAAA,EAAU,YAAA;AAAA,UACV,SAAA;AAAA,UACA,IAAA,EAAM,IAAA,KAAS,OAAA,GAAU,MAAA,GAAY,OAAA,CAAA;AAAA,UACrC,IAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,OAAA;AAAA,UACA,OAAA,EAAS,kBAAA;AAAA,UACR,GAAG,aAAA;AAAA,UACH,GAAG,kBAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,kBAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACA,OAAA,EAAS,kBAAA;AAAA,QACR,GAAG,kBAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,GAAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,iBAAA;AAAA,cACL,EAAA;AAAA,cACA,IAAA;AAAA,cACA,WAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,kBAAA,EAAkB,eAAA;AAAA,cAClB,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,cAC7B,KAAA,EAAO,SAAA;AAAA,cACP,YAAA;AAAA,cACA,QAAA,EAAU,YAAA;AAAA,cACV,SAAA;AAAA,cACA,MAAM,IAAA,IAAQ,OAAA;AAAA,cACd,IAAA;AAAA,cACA,SAAA;AAAA,cACA,OAAA;AAAA,cACA,MAAA;AAAA,cACA,SAAA;AAAA,cACA,OAAA;AAAA,cACA,KAAA,EAAO,aAAA;AAAA,cACP,SAAA,EAAU,oBAAA;AAAA,cACT,GAAG;AAAA;AAAA,WACN;AAAA,UACC;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AChPvB,IAAM,mBAAA,GAAsB,OAAO,KAAA,EAAO;AAAA,EACxC,IAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,eACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,OAAA,IACT,SAAS,WAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,cACT,IAAA,KAAS,YAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAcE,IAAM,SAAA,GAAkBmD,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM;AAAA,MACJ,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,UAAU,YAAA,GAAe,KAAA;AAAA,MACzB,UAAA,GAAa,KAAA;AAAA,MACb,UAAU,YAAA,GAAe,KAAA;AAAA,MACzB,UAAA,GAAa,KAAA;AAAA,MACb,UAAU,YAAA,GAAe,KAAA;AAAA,MACzB,UAAA,GAAa,KAAA;AAAA,MACb,OAAO,SAAA,GAAY,KAAA;AAAA,MACnB,SAAA,GAAY,KAAA;AAAA,MACZ,SAAA,GAAY,KAAA;AAAA,MACZ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,WAAW,UAAA,IAAc,YAAA;AAC/B,IAAA,MAAM,WAAW,UAAA,IAAc,YAAA;AAC/B,IAAA,MAAM,WAAW,UAAA,IAAc,YAAA;AAC/B,IAAA,MAAM,QAAQ,SAAA,IAAa,SAAA;AAE3B,IAAA,MAAM,cAAoBD,OAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,KAAK,MAAA,IAAU,WAAA;AACrB,IAAA,MAAM,OAAA,GAAU,GAAG,EAAE,CAAA,MAAA,CAAA;AACrB,IAAA,MAAM,YAAA,GAAe,GAAG,EAAE,CAAA,OAAA,CAAA;AAC1B,IAAA,MAAM,cAAA,GAAiB,GAAG,EAAE,CAAA,MAAA,CAAA;AAE5B,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAC9D,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAElE,IAAA,MAAM,YAAA,GAA4CA,OAAA,CAAA,OAAA;AAAA,MAChD,OAAO;AAAA,QACL,EAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA,eAAA;AAAA,QACA,gBAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA;AAAA,QACE,EAAA;AAAA,QACA,IAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAA;AAAA,QACA,YAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,eAAA;AAAA,MACA,SAAA,IAAa,2BAAA;AAAA,MACb,KAAA,IAAS,sBAAA;AAAA,MACT,QAAA,IAAY,yBAAA;AAAA,MACZ;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEnD,GAAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,cAChC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,cAChC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AChIxB,IAAM,eAAA,GAAkB,OAAO,OAAA,EAAS;AAAA,EACtC,IAAA,EAAM,kBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,OAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAQE,IAAM,SAAA,GAAkBqD,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASC,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,EAAA,EAAI,MAAA;AAAA,MACJ,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM,OAAA,GAAU,eAAe,SAAA,EAAW,EAAA;AAC1C,IAAA,MAAM,EAAA,GAAK,UAAU,SAAA,EAAW,OAAA;AAChC,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AAC/C,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AAExD,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,eAAA;AAAA,MACA,KAAA,IAAS,sBAAA;AAAA,MACT,QAAA,IAAY,yBAAA;AAAA,MACZ;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEtD,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,OAAA;AAAA,UACA,EAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,OAAA;AAAA,QACA,EAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,QAAA,oBACC5C,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,yBAAA,EAA0B,aAAA,EAAY,QAAO,QAAA,EAAA,GAAA,EAAC;AAAA;AAAA;AAAA,KAElE;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;ACjGxB,IAAM,oBAAA,GAAuB,OAAO,GAAA,EAAK;AAAA,EACvC,IAAA,EAAM,uBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,SAAS,UAAA,IAAc,IAAA,KAAS,aAAa,IAAA,KAAS;AAC1D,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,cAAA,GAAuBuD,OAAA,CAAA,UAAA,CAGlC,SAASC,eAAAA,CAAe,OAAO,GAAA,EAAK;AACpC,EAAA,MAAM;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,QAAA,EAAU,YAAA;AAAA,IACV,OAAA,GAAU,KAAA;AAAA,IACV,SAAA,GAAY,GAAA;AAAA,IACZ,EAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,mBAAmB,SAAA,EAAW,gBAAA;AAEpC,EAAMD,kBAAU,MAAM;AACpB,IAAA,gBAAA,GAAmB,IAAI,CAAA;AACvB,IAAA,OAAO,MAAM,mBAAmB,KAAK,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,MAAM,EAAA,GAAK,UAAU,SAAA,EAAW,YAAA;AAChC,EAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,EAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,EAAA,MAAM,eAAA,GAAkB,UAAA;AAAA,IACtB,qBAAA;AAAA,IACA,QAAA,IAAY,+BAAA;AAAA,IACZ;AAAA,GACF;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEvD,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,IAAA;AAAA,QACJ,GAAA;AAAA,QACA,EAAA;AAAA,QACA,SAAA,EAAW,eAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA,EAAW,eAAA;AAAA,MACX,KAAA;AAAA,MACA,EAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,gBAAA;AC/E7B,IAAM,sBAAA,GAAyB,OAAO,GAAA,EAAK;AAAA,EACzC,IAAA,EAAM,yBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,SAAS,YAAA,IAAgB,IAAA,KAAS,aAAa,IAAA,KAAS;AAC5D,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,gBAAA,GAAyByD,OAAA,CAAA,UAAA,CAGpC,SAASC,iBAAAA,CAAiB,OAAO,GAAA,EAAK;AACtC,EAAA,MAAM;AAAA,IACJ,EAAA,EAAI,MAAA;AAAA,IACJ,UAAA,GAAa,KAAA;AAAA,IACb,OAAA,GAAU,KAAA;AAAA,IACV,SAAA,GAAY,GAAA;AAAA,IACZ,EAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,OAAA,GAAU,WAAW,KAAA,IAAS,KAAA;AACpC,EAAA,MAAM,qBAAqB,SAAA,EAAW,kBAAA;AAEtC,EAAMD,kBAAU,MAAM;AACpB,IAAA,IAAI,WAAW,UAAA,EAAY;AACzB,MAAA,kBAAA,GAAqB,IAAI,CAAA;AACzB,MAAA,OAAO,MAAM,qBAAqB,KAAK,CAAA;AAAA,IACzC;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,OAAA,EAAS,UAAU,CAAC,CAAA;AAE5C,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,UAAA,EAAY;AAC3B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,EAAA,GAAK,UAAU,SAAA,EAAW,cAAA;AAChC,EAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,EAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,uBAAA,EAAyB,SAAS,CAAA;AAEpE,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEzD,GAAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,IAAA;AAAA,QACJ,GAAA;AAAA,QACA,EAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAU,QAAA;AAAA,QACV,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA;AAAA,MACA,EAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,QAAA;AAAA,MACV,SAAA,EAAW,cAAA;AAAA,MACX,KAAA;AAAA,MACA,EAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,gBAAA,CAAiB,WAAA,GAAc,kBAAA;ACtHxB,IAAM,eAAA,GAAwB2D,sBAEnC,MAAS;AAMJ,SAAS,gBAAA,GAAqD;AACnE,EAAA,OAAaA,mBAAW,eAAe,CAAA;AACzC;ACIA,IAAM,kBAAA,GAAqB,OAAO,OAAA,EAAS;AAAA,EACzC,IAAA,EAAM,iBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,SAAS,MAAA,IACT,IAAA,KAAS,iBACT,IAAA,KAAS,UAAA,IACT,SAAS,UAAA,IACT,IAAA,KAAS,WACT,IAAA,KAAS,SAAA,IACT,SAAS,eAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAUE,IAAM,QAAA,GAAiBC,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASC,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM,QAAQ,gBAAA,EAAiB;AAC/B,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,cAAA,GAAiB,KAAA;AAAA,MACjB,aAAA,GAAgB,KAAA;AAAA,MAChB,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,EAAa,eAAA;AAAA,MACb,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,aAAa,EAAC;AAAA,MACd,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,GAAG;AAAA,KACL,GAAI,KAAA;AAGJ,IAAA,MAAM,iBAAA,GAAoB,KAAA,KAAU,MAAA,IAAa,SAAA,KAAc,MAAA;AAC/D,IAAA,MAAM,mBAAmB,iBAAA,GACrB,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,SAAS,CAAA,GAC9B,MAAA;AAEJ,IAAA,MAAM,OAAA,GACJ,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAc,gBAAA;AAE5C,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,IAAA;AACxC,IAAA,MAAM,WAAA,GAAc,eAAA,IAAmB,KAAA,EAAO,WAAA,IAAe,SAAA;AAC7D,IAAA,MAAM,QAAA,GACJ,YAAA,IAAgB,KAAA,EAAO,QAAA,IAAY,WAAW,QAAA,IAAY,KAAA;AAC5D,IAAA,MAAM,QAAA,GACJ,YAAA,IAAgB,KAAA,EAAO,QAAA,IAAY,WAAW,QAAA,IAAY,KAAA;AAC5D,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,KAAA,EAAO,KAAA,IAAS,WAAW,KAAA,IAAS,KAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,SAAA,EAAW,IAAA;AACnD,IAAA,MAAM,KAAK,MAAA,KAAW,SAAA,GAAY,CAAA,EAAG,SAAA,CAAU,EAAE,CAAA,SAAA,CAAA,GAAc,MAAA,CAAA;AAE/D,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAUD,OAAA,CAAA,QAAA;AAAA,MAC1D;AAAA,KACF;AAEA,IAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,IAAA,MAAM,gBAAA,GAAmB,eAAe,OAAA,GAAU,mBAAA;AAElD,IAAA,MAAM,cAAA,GAAuBA,eAAgC,IAAI,CAAA;AACjE,IAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,cAAA,EAAgB,YAAY,CAAA;AAEhE,IAAMA,kBAAU,MAAM;AACpB,MAAA,IAAI,eAAe,OAAA,EAAS;AAC1B,QAAA,cAAA,CAAe,OAAA,CAAQ,aAAA,GAAgB,OAAA,CAAQ,aAAa,CAAA;AAAA,MAC9D;AAAA,IACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+C;AACnE,MAAA,IAAI,YAAY,QAAA,EAAU;AACxB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,KAAA,CAAM,YAAY,SAAS,CAAA;AAAA,MAC7B,CAAA,MAAA,IAAW,CAAC,YAAA,EAAc;AACxB,QAAA,sBAAA,CAAuB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,MAC7C;AAEA,MAAA,YAAA,GAAe,KAAK,CAAA;AAAA,IACtB,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,UAAA;AAAA,MACxB,aAAA;AAAA,MACA,gBAAgB,IAAI,CAAA,CAAA;AAAA,MACpB,gBAAgB,WAAW,CAAA,CAAA;AAAA,MAC3B,gBAAA,IAAoB,sBAAA;AAAA,MACpB,aAAA,IAAiB,4BAAA;AAAA,MACjB,QAAA,IAAY,uBAAA;AAAA,MACZ,KAAA,IAAS,oBAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,MAAM,UAAA,mBACJ5D,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,8CAAA,EAA+C,aAAA,EAAY,MAAA,EACxE,QAAA,EAAA,aAAA,mBACCA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,4EAAA;AAAA,QACV,OAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,KAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,aAAA,EAAY,MAAA;AAAA,QACZ,OAAO,IAAA,KAAS,IAAA,GAAO,EAAA,GAAK,IAAA,KAAS,OAAO,EAAA,GAAK,EAAA;AAAA,QACjD,QAAQ,IAAA,KAAS,IAAA,GAAO,EAAA,GAAK,IAAA,KAAS,OAAO,EAAA,GAAK,EAAA;AAAA,QAElD,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA,KACvC,GACE,mCACFA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,sEAAA;AAAA,QACV,OAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,KAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,aAAA,EAAY,MAAA;AAAA,QACZ,OAAO,IAAA,KAAS,IAAA,GAAO,EAAA,GAAK,IAAA,KAAS,OAAO,EAAA,GAAK,EAAA;AAAA,QACjD,QAAQ,IAAA,KAAS,IAAA,GAAO,EAAA,GAAK,IAAA,KAAS,OAAO,EAAA,GAAK,EAAA;AAAA,QAElD,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AAAA,QAElC,IAAA,EACN,CAAA;AAGF,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,WAAW,kBAAkB,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEhB,IAAA,MAAM,kCACJA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,EAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA,EAAS,eAAe,gBAAA,GAAmB,MAAA;AAAA,QAC3C,cAAA,EAAgB,CAAC,YAAA,GAAe,cAAA,GAAiB,MAAA;AAAA,QACjD,QAAA,EAAU,YAAA;AAAA,QACV,GAAA,EAAK,cAAA;AAAA,QACL,cAAA,EAAc,gBAAgB,OAAA,GAAU,gBAAA;AAAA,QACxC,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,QAC7B,kBAAA,EAAkB,eAAA;AAAA,QAClB,SAAA,EAAU,oBAAA;AAAA,QACT,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAM,YAAA,GAAqB4D,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,GAC7C,QAAA,GACD,IAAA;AAEJ,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,uBACE5D,GAAAA;AAAA,UAAC,kBAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,IAAA;AAAA,YACJ,GAAA;AAAA,YACA,SAAA,EAAW,iBAAA;AAAA,YACX,KAAA;AAAA,YACA,EAAA;AAAA,YACC,GAAG,IAAA;AAAA,YAEH;AAAA;AAAA,SACH;AAAA,MAEJ;AAEA,MAAA,MAAM,UAAA,GAAa,aAAa,KAAA,CAAM,QAAA;AAEtC,MAAA,uBACEA,GAAAA;AAAA,QAAC,kBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,iBAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAM4D,OAAA,CAAA,YAAA;AAAA,YACL,YAAA;AAAA,YACA,MAAA;AAAA,4BACAhB,IAAAA,CAAAkB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,eAAA;AAAA,cACA,UAAA;AAAA,cACA,8BACC9D,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CACb,QAAA,EAAA,UAAA,EACH;AAAA,aAAA,EAEJ;AAAA;AACF;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,iBAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,eAAA;AAAA,UACA,UAAA;AAAA,UACA,4BACC5C,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4CACb,QAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AChQhB,SAAS,oBAAA,CAAwB;AAAA,EACtC,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA;AACF,CAAA,EAGE;AACA,EAAA,MAAM,eAAe,SAAA,KAAc,MAAA;AAEnC,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAU+D,iBAAY,MAAM;AACxE,IAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,MAAA,OAAO,OAAO,YAAA,KAAiB,UAAA,GAC1B,YAAA,EAAyB,GAC1B,YAAA;AAAA,IACN;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,eAAgB,SAAA,GAAkB,iBAAA;AAEhD,EAAA,MAAM,WAAA,GAAoBA,eAAO,QAAQ,CAAA;AACzC,EAAMA,kBAAU,MAAM;AACpB,IAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAAA,EACxB,CAAC,CAAA;AAED,EAAA,MAAM,QAAA,GAAiBA,OAAA,CAAA,WAAA;AAAA,IACrB,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,eACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AAEjE,MAAA,IAAI,CAAC,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,YAAY,CAAA,EAAG;AACnC,QAAA,IAAI,CAAC,YAAA,EAAc;AACjB,UAAA,oBAAA,CAAqB,YAAY,CAAA;AAAA,QACnC;AACA,QAAA,WAAA,CAAY,UAAU,YAAY,CAAA;AAAA,MACpC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB;ACvCA,IAAM,uBAAA,GAA0B,OAAO,KAAA,EAAO;AAAA,EAC5C,IAAA,EAAM,sBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,aAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,WACT,IAAA,KAAS,UAAA,IACT,SAAS,UAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,EAAgC,CAAC,EAAE,KAAA,EAAO,OAAA,GAAU,GAAE,KAAM;AAC3D,EAAA,MAAM,WACJ,OAAO,OAAA,KAAY,WAAW,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,GAAI,OAAA;AAEzD,EAAA,OAAO;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AACF,CAAC,CAAA;AAaM,IAAM,aAAA,GAAsBC,OAAA,CAAA,UAAA,CAGjC,SAASC,cAAAA,CAAc,OAAO,GAAA,EAAK;AACnC,EAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA,IACP,eAAe,EAAC;AAAA,IAChB,QAAA,EAAU,YAAA;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,IAAA,GAAO,IAAA;AAAA,IACP,WAAA,GAAc,SAAA;AAAA,IACd,WAAA,GAAc,UAAA;AAAA,IACd,OAAA,GAAU,CAAA;AAAA,IACV,QAAA,EAAU,YAAA;AAAA,IACV,QAAA,EAAU,YAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,GAAU,KAAA;AAAA,IACV,SAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,MAAM,IAAA,GAAO,YAAY,SAAA,EAAW,IAAA;AACpC,EAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,EAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,EAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AAE/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAA+B;AAAA,IACvD,KAAA,EAAO,SAAA;AAAA,IACP,YAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,WAAA,GAAoBD,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,SAAA,KAAsB;AACrB,MAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,MAAA,MAAM,OAAA,GAAU,SAAS,EAAC;AAC1B,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,QAAA,CAAS,SAAS,IACnC,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,SAAS,CAAA,GACrC,CAAC,GAAG,SAAS,SAAS,CAAA;AAC1B,MAAA,QAAA,CAAS,IAAI,CAAA;AAAA,IACf,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,QAAQ;AAAA,GACtC;AAEA,EAAA,MAAM,YAAA,GAA2CA,OAAA,CAAA,OAAA;AAAA,IAC/C,OAAO;AAAA,MACL,KAAA,EAAO,SAAS,EAAC;AAAA,MACjB,IAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,OAAO,IAAA,EAAM,IAAA,EAAM,aAAa,QAAA,EAAU,QAAA,EAAU,OAAO,WAAW;AAAA,GACzE;AAEA,EAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,IACrB,mBAAA;AAAA,IACA,sBAAsB,WAAW,CAAA,CAAA;AAAA,IACjC;AAAA,GACF;AAEA,EAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEhE,GAAAA,CAAC,eAAA,CAAgB,UAAhB,EAAyB,KAAA,EAAO,cAC/B,QAAA,kBAAAA,GAAAA;AAAA,MAAC,uBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,IAAA;AAAA,QACJ,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,WAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,eAAA,CAAgB,UAAhB,EAAyB,KAAA,EAAO,cAC/B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,uBAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,SAAA;AAAA,MACJ,GAAA;AAAA,MACA,IAAA,EAAK,OAAA;AAAA,MACL,WAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA,EAAW,cAAA;AAAA,MACX,KAAA;AAAA,MACA,EAAA;AAAA,MACC,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH,EACF,CAAA;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;AC7JrB,IAAM,YAAA,GAAqBkE,sBAEhC,MAAS;AAMJ,SAAS,aAAA,GAA+C;AAC7D,EAAA,OAAaA,mBAAW,YAAY,CAAA;AACtC;ACIA,IAAM,eAAA,GAAkB,OAAO,OAAA,EAAS;AAAA,EACtC,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,MAAA,IACT,SAAS,aAAA,IACT,IAAA,KAAS,UAAA,IACT,IAAA,KAAS,cACT,IAAA,KAAS,OAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,KAAA,GAAcC,OAAA,CAAA,UAAA;AAAA,EACzB,SAASC,MAAAA,CAAM,KAAA,EAAO,GAAA,EAAK;AACzB,IAAA,MAAM,QAAQ,aAAA,EAAc;AAC5B,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,cAAA,GAAiB,KAAA;AAAA,MACjB,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,QAAA;AAAA,MACN,WAAA,EAAa,eAAA;AAAA,MACb,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,aAAa,EAAC;AAAA,MACd,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,iBAAA,GAAoB,KAAA,KAAU,MAAA,IAAa,SAAA,KAAc,MAAA;AAC/D,IAAA,MAAM,gBAAA,GAAmB,iBAAA,GACrB,KAAA,CAAM,KAAA,KAAU,MAAA,IAAa,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,KAAM,MAAA,CAAO,SAAS,CAAA,GACrE,MAAA;AAEJ,IAAA,MAAM,OAAA,GACJ,WAAA,KAAgB,MAAA,GAAY,WAAA,GAAc,gBAAA;AAE5C,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,IAAA;AACxC,IAAA,MAAM,WAAA,GAAc,eAAA,IAAmB,KAAA,EAAO,WAAA,IAAe,SAAA;AAC7D,IAAA,MAAM,QAAA,GACJ,YAAA,IAAgB,KAAA,EAAO,QAAA,IAAY,WAAW,QAAA,IAAY,KAAA;AAC5D,IAAA,MAAM,QAAA,GACJ,YAAA,IAAgB,KAAA,EAAO,QAAA,IAAY,WAAW,QAAA,IAAY,KAAA;AAC5D,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,KAAA,EAAO,KAAA,IAAS,WAAW,KAAA,IAAS,KAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,KAAA,EAAO,IAAA,IAAQ,SAAA,EAAW,IAAA;AACnD,IAAA,MAAM,EAAA,GAAK,WAAW,SAAA,GAAY,CAAA,EAAG,UAAU,EAAE,CAAA,OAAA,EAAU,SAAA,IAAa,EAAE,CAAA,CAAA,GAAK,MAAA,CAAA;AAE/E,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAUD,OAAA,CAAA,QAAA;AAAA,MAC1D;AAAA,KACF;AAEA,IAAA,MAAM,eAAe,OAAA,KAAY,MAAA;AACjC,IAAA,MAAM,gBAAA,GAAmB,eAAe,OAAA,GAAU,mBAAA;AAElD,IAAA,MAAM,cAAA,GAAuBA,eAAgC,IAAI,CAAA;AACjE,IAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,cAAA,EAAgB,YAAY,CAAA;AAEhE,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+C;AACnE,MAAA,IAAI,YAAY,QAAA,EAAU;AACxB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,iBAAA,IAAqB,cAAc,MAAA,EAAW;AAChD,QAAA,KAAA,CAAM,SAAS,SAAS,CAAA;AAAA,MAC1B,CAAA,MAAA,IAAW,CAAC,YAAA,EAAc;AACxB,QAAA,sBAAA,CAAuB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,MAC7C;AAEA,MAAA,YAAA,GAAe,KAAK,CAAA;AAAA,IACtB,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,UAAA;AAAA,MACA,aAAa,IAAI,CAAA,CAAA;AAAA,MACjB,aAAa,WAAW,CAAA,CAAA;AAAA,MACxB,gBAAA,IAAoB,mBAAA;AAAA,MACpB,QAAA,IAAY,oBAAA;AAAA,MACZ,KAAA,IAAS,iBAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,MAAM,UAAA,mBACJnE,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCAAA,EAAyC,aAAA,EAAY,MAAA,EACnE,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kCAAiC,CAAA,EACnD,CAAA;AAGF,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,WAAW,kBAAkB,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEhB,IAAA,MAAM,kCACJA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,EAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA,EAAO,SAAA;AAAA,QACP,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA,EAAS,eAAe,gBAAA,GAAmB,MAAA;AAAA,QAC3C,cAAA,EAAgB,CAAC,YAAA,GAAe,cAAA,GAAiB,MAAA;AAAA,QACjD,QAAA,EAAU,YAAA;AAAA,QACV,GAAA,EAAK,cAAA;AAAA,QACL,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,QAC7B,kBAAA,EAAkB,eAAA;AAAA,QAClB,SAAA,EAAU,iBAAA;AAAA,QACT,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAM,YAAA,GAAqBmE,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,GAC7C,QAAA,GACD,IAAA;AAEJ,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,uBACEnE,GAAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,IAAA;AAAA,YACJ,GAAA;AAAA,YACA,SAAA,EAAW,cAAA;AAAA,YACX,KAAA;AAAA,YACA,EAAA;AAAA,YACC,GAAG,IAAA;AAAA,YAEH;AAAA;AAAA,SACH;AAAA,MAEJ;AAEA,MAAA,MAAM,UAAA,GAAa,aAAa,KAAA,CAAM,QAAA;AAEtC,MAAA,uBACEA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAMmE,OAAA,CAAA,YAAA;AAAA,YACL,YAAA;AAAA,YACA,MAAA;AAAA,4BACAvB,IAAAA,CAAAkB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,eAAA;AAAA,cACA,UAAA;AAAA,cACA,8BACC9D,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCACb,QAAA,EAAA,UAAA,EACH;AAAA,aAAA,EAEJ;AAAA;AACF;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,eAAA;AAAA,UACA,UAAA;AAAA,UACA,4BACC5C,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCACb,QAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;ACxNpB,IAAM,oBAAA,GAAuB,OAAO,KAAA,EAAO;AAAA,EACzC,IAAA,EAAM,mBAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,mBAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,aAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,WACT,IAAA,KAAS,UAAA,IACT,SAAS,UAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAaE,IAAM,UAAA,GAAmBqE,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASC,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,GAAO,IAAA;AAAA,MACP,WAAA,GAAc,SAAA;AAAA,MACd,WAAA,GAAc,UAAA;AAAA,MACd,OAAA,GAAU,CAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,gBAAsBD,OAAA,CAAA,KAAA,EAAM;AAClC,IAAA,MAAM,IAAA,GAAO,QAAA,IAAY,SAAA,EAAW,IAAA,IAAQ,aAAA;AAC5C,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AAE/C,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAAkD;AAAA,MAC1E,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,QAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,UAAA,YAAA,GAAe,GAAG,CAAA;AAAA,QACpB;AAAA,MACF;AAAA,KACD,CAAA;AAED,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,WAAA;AAAA,MACzB,CAAC,SAAA,KAA+B;AAC9B,QAAA,IAAI,YAAY,QAAA,EAAU;AAC1B,QAAA,QAAA,CAAS,SAAS,CAAA;AAAA,MACpB,CAAA;AAAA,MACA,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ;AAAA,KAC/B;AAEA,IAAA,MAAM,YAAA,GAAwCA,OAAA,CAAA,OAAA;AAAA,MAC5C,OAAO;AAAA,QACL,KAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA,EAAU;AAAA,OACZ,CAAA;AAAA,MACA,CAAC,OAAO,IAAA,EAAM,IAAA,EAAM,aAAa,QAAA,EAAU,QAAA,EAAU,OAAO,YAAY;AAAA,KAC1E;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,gBAAA;AAAA,MACA,WAAA,KAAgB,eACZ,4BAAA,GACA,0BAAA;AAAA,MACJ;AAAA,KACF;AAEA,IAAA,MAAM,QAAA,GACJ,YAAY,MAAA,GACR;AAAA,MACE,KAAK,OAAO,OAAA,KAAY,WAAW,CAAA,EAAG,OAAA,GAAU,CAAC,CAAA,EAAA,CAAA,GAAO,OAAA;AAAA,MACxD,GAAG;AAAA,KACL,GACA,KAAA;AAEN,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACErE,GAAAA,CAAC,YAAA,CAAa,UAAb,EAAsB,KAAA,EAAO,cAC5B,QAAA,kBAAAA,GAAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,IAAA,EAAK,YAAA;AAAA,UACL,SAAA,EAAW,cAAA;AAAA,UACX,KAAA,EAAO,QAAA;AAAA,UACP,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA,CAAC,YAAA,CAAa,UAAb,EAAsB,KAAA,EAAO,cAC5B,QAAA,kBAAAA,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,IAAA,EAAK,YAAA;AAAA,QACL,SAAA,EAAW,cAAA;AAAA,QACX,KAAA,EAAO,QAAA;AAAA,QACP,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;ACpIzB,IAAM,gBAAA,GAAmB,OAAO,OAAA,EAAS;AAAA,EACvC,IAAA,EAAM,eAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,UACT,IAAA,KAAS,gBAAA,IACT,SAAS,UAAA,IACT,IAAA,KAAS,cACT,IAAA,KAAS,OAAA,IACT,SAAS,SAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,MAAA,GAAeuE,OAAA,CAAA,UAAA;AAAA,EAC1B,SAASC,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,OAAA,EAAS,WAAA;AAAA,MACT,cAAA,GAAiB,KAAA;AAAA,MACjB,QAAA,EAAU,YAAA;AAAA,MACV,KAAA;AAAA,MACA,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,GAAO,IAAA;AAAA,MACP,WAAA,GAAc,SAAA;AAAA,MACd,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,EAAU,YAAA;AAAA,MACV,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,GAAU,KAAA;AAAA,MACV,WAAA;AAAA,MACA,aAAA;AAAA,MACA,cAAA,GAAiB,KAAA;AAAA,MACjB,QAAA,EAAU,YAAA;AAAA,MACV,aAAa,EAAC;AAAA,MACd,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,QAAA,GACJ,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,UAAU,IAAA,GAAO,KAAA;AAC1D,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,KAAA,GAAQ,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AAC/C,IAAA,MAAM,QAAA,GAAW,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AACxD,IAAA,MAAM,IAAA,GAAO,YAAY,SAAA,EAAW,IAAA;AACpC,IAAA,MAAM,KAAK,MAAA,KAAW,SAAA,GAAY,CAAA,EAAG,SAAA,CAAU,EAAE,CAAA,OAAA,CAAA,GAAY,MAAA,CAAA;AAE7D,IAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAUD,OAAA,CAAA,QAAA;AAAA,MAC1D;AAAA,KACF;AAEA,IAAA,MAAM,eAAe,WAAA,KAAgB,MAAA;AACrC,IAAA,MAAM,gBAAA,GAAmB,eAAe,WAAA,GAAc,mBAAA;AAEtD,IAAA,MAAM,cAAA,GAAuBA,eAAgC,IAAI,CAAA;AACjE,IAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,cAAA,EAAgB,YAAY,CAAA;AAEhE,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA+C;AACnE,MAAA,IAAI,QAAA,IAAY,YAAY,OAAA,EAAS;AACnC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,sBAAA,CAAuB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,MAC7C;AAEA,MAAA,YAAA,GAAe,KAAK,CAAA;AAAA,IACtB,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAiD;AACtE,MAAA,IAAI,KAAA,CAAM,QAAQ,OAAA,EAAS;AACzB,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,IAAY,CAAC,OAAA,EAAS;AACtC,UAAA,cAAA,CAAe,SAAS,KAAA,EAAM;AAAA,QAChC;AAAA,MACF,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,GAAA,KAAQ,YAAY,OAAA,CAAA,EAAU;AACrD,QAAA,KAAA,CAAM,cAAA,EAAe;AAAA,MACvB;AACA,MAAA,UAAA,CAAW,YAAY,KAAK,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,UAAA;AAAA,MACtB,WAAA;AAAA,MACA,cAAc,IAAI,CAAA,CAAA;AAAA,MAClB,cAAc,WAAW,CAAA,CAAA;AAAA,MACzB,wBAAwB,cAAc,CAAA,CAAA;AAAA,MACtC,gBAAA,IAAoB,oBAAA;AAAA,MACpB,QAAA,IAAY,qBAAA;AAAA,MACZ,KAAA,IAAS,kBAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,MAAM,SAAA,GAAY,0BAChBvE,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,oBAAA;AAAA,QACV,OAAA,EAAQ,WAAA;AAAA,QACR,IAAA,EAAK,MAAA;AAAA,QACL,aAAA,EAAY,MAAA;AAAA,QAEZ,QAAA,kBAAAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,CAAA,EAAE,GAAA;AAAA,YACF,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,GAAA;AAAA,YACZ,eAAA,EAAgB,OAAA;AAAA,YAChB,aAAA,EAAc;AAAA;AAAA;AAChB;AAAA,KACF,GACE,mBACF,WAAA,GAEA,aAAA;AAGF,IAAA,MAAM,YAAA,mBACJA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sCAAA,EAAuC,aAAA,EAAY,MAAA,EACjE,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sCAAA,EACb,qBACH,CAAA,EACF,CAAA;AAGF,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,WAAW,kBAAkB,CAAA;AAAA,MAC7B,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEhB,IAAA,MAAM,kCACJA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,UAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,EAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA,EAAS,eAAe,gBAAA,GAAmB,MAAA;AAAA,QAC3C,cAAA,EAAgB,CAAC,YAAA,GAAe,cAAA,GAAiB,MAAA;AAAA,QACjD,QAAA,EAAU,YAAA;AAAA,QACV,SAAA,EAAW,aAAA;AAAA,QACX,GAAA,EAAK,cAAA;AAAA,QACL,cAAA,EAAc,gBAAA;AAAA,QACd,cAAA,EAAc,QAAQ,IAAA,GAAO,MAAA;AAAA,QAC7B,kBAAA,EAAkB,eAAA;AAAA,QAClB,SAAA,EAAU,kBAAA;AAAA,QACT,GAAG;AAAA;AAAA,KACN;AAGF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,MAAM,YAAA,GAAqBuE,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,GAC7C,QAAA,GACD,IAAA;AAEJ,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,uBACEvE,GAAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,EAAA,EAAI,IAAA;AAAA,YACJ,GAAA;AAAA,YACA,SAAA,EAAW,eAAA;AAAA,YACX,KAAA;AAAA,YACA,EAAA;AAAA,YACC,GAAG,IAAA;AAAA,YAEH;AAAA;AAAA,SACH;AAAA,MAEJ;AAEA,MAAA,MAAM,UAAA,GAAa,aAAa,KAAA,CAAM,QAAA;AAEtC,MAAA,uBACEA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,eAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH,QAAA,EAAMuE,OAAA,CAAA,YAAA;AAAA,YACL,YAAA;AAAA,YACA,MAAA;AAAA,4BACA3B,IAAAA,CAAAkB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,eAAA;AAAA,cACA,YAAA;AAAA,cACA,8BACC9D,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCACb,QAAA,EAAA,UAAA,EACH;AAAA,aAAA,EAEJ;AAAA;AACF;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,eAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,eAAA;AAAA,UACA,YAAA;AAAA,UACA,4BACC5C,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wCACb,QAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AC1PrB,IAAM,eAAA,GAAkB,OAAO,KAAA,EAAO;AAAA,EACpC,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,QAAA,IACT,IAAA,KAAS,SAAA,IACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAWE,IAAM,KAAA,GAAcyE,OAAA,CAAA,UAAA;AAAA,EACzB,SAASC,MAAAA,CAAM,KAAA,EAAO,GAAA,EAAK;AACzB,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA,GAAY,CAAA;AAAA,MACZ,OAAA,GAAU,WAAA;AAAA,MACV,MAAA,GAAS,KAAA;AAAA,MACT,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,gBAAA,GAAmB,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,EAAA,EAAI,SAAS,CAAC,CAAA;AAE5D,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,UAAA;AAAA,MACA,MAAA,IAAU,kBAAA;AAAA,MACV,OAAA,KAAY,UAAA,GAAa,oBAAA,GAAuB,CAAA,oBAAA,EAAuB,gBAAgB,CAAA,CAAA;AAAA,MACvF;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE1E,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,uBACEA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,SAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;AC9Fb,IAAM,cAAoB2E,OAAA,CAAA,aAAA,CAAgC;AAAA,EAC/D,IAAA,EAAM;AACR,CAAC,CAAA;ACMD,IAAM,cAAA,GAAiB,OAAO,KAAA,EAAO;AAAA,EACnC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,aACT,IAAA,KAAS,WAAA,IACT,IAAA,KAAS,WAAA,IACT,SAAS,QAAA,IACT,IAAA,KAAS,MAAA,IACT,IAAA,KAAS,aACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAmBE,IAAM,QAAA,GAAiBC,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASC,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,UAAA;AAAA,MACV,SAAA,GAAY,CAAA;AAAA,MACZ,IAAA,GAAO,IAAA;AAAA,MACP,SAAA,GAAY,KAAA;AAAA,MACZ,WAAA,GAAc,KAAA;AAAA,MACd,MAAA,GAAS,KAAA;AAAA,MACT,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,iBAAA,GAAoB,OAAA,KAAY,SAAA,GAAY,UAAA,GAAa,OAAA;AAE/D,IAAA,MAAM,aAAA,GAAgB,UAAA;AAAA,MACpB,SAAA;AAAA,MACA,YAAY,IAAI,CAAA,CAAA;AAAA,MAChB,YAAY,iBAAiB,CAAA,CAAA;AAAA,MAC7B,YAAY,SAAA,IAAa,kBAAA;AAAA,MACzB,MAAA,IAAU,iBAAA;AAAA,MAAA,CACT,aAAa,WAAA,KAAgB,oBAAA;AAAA,MAC9B,WAAA,IAAe,oBAAA;AAAA,MACf;AAAA,KACF;AAEA,IAAA,MAAM,YAAY,SAAA,IAAa,EAAA;AAE/B,IAAA,uBACE7E,GAAAA,CAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,OAAO,EAAE,IAAA,EAAK,EACjC,QAAA,EAAA,OAAA,mBACCA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,IAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,wBAGHA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,MAAA;AAIvB,IAAM,oBAAA,GAAuB,OAAO,KAAA,EAAO;AAAA,EACzC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS,cAAc,IAAA,KAAS;AAC/D,CAAC,CAAA,CAAE,EAAE,CAAA;AAQE,IAAM,UAAA,GAAmB4E,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASE,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM;AAAA,MACJ,MAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,oBAAA;AAAA,MACA,wBAAA;AAAA,MACA,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,eAAA,GAAkB,UAAA;AAAA,MACtB,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE9E,GAAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,eAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,eAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,MAAA,oBACC5C,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDACZ,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,0BAEF4C,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,IAAS,wBACR5C,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,UAAA;AAAA,kBACT,uBAAA;AAAA,kBACA,yBAAA;AAAA,kBACA,oBAAA,EAAsB;AAAA,iBACxB;AAAA,gBACC,GAAG,oBAAA;AAAA,gBAEH,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YAED,SAAA,IAAa,wBACZA,GAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,UAAA;AAAA,kBACT,2BAAA;AAAA,kBACA,6BAAA;AAAA,kBACA,wBAAA,EAA0B;AAAA,iBAC5B;AAAA,gBACC,GAAG,wBAAA;AAAA,gBAEH,QAAA,EAAA;AAAA;AAAA,aACH;AAAA,YAED;AAAA,WAAA,EACH,CAAA;AAAA,UACC,0BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mDACZ,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAIzB,IAAM,mBAAA,GAAsB,OAAO,KAAA,EAAO;AAAA,EACxC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS,WAAW,IAAA,KAAS;AAC5D,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,SAAA,GAAkB4E,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASG,UAAAA,CAAU,KAAA,EAAO,GAAA,EAAK;AAC7B,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,GAAA;AAAA,MACA,WAAA,GAAc,MAAA;AAAA,MACd,SAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAAkC;AAAA,MACtC,GAAI,WAAA,GAAc,EAAE,WAAA,KAAgB,EAAC;AAAA,MACrC,GAAI,QAAQ,EAAE,eAAA,EAAiB,OAAO,KAAK,CAAA,CAAA,CAAA,KAAQ,EAAC;AAAA,MACpD,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,gBAAA;AAAA,MACA,mBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,uBACE/E,GAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,EAAA,EAAI,SAAA;AAAA,QACJ,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA,EAAO,UAAA;AAAA,QACP,EAAA;AAAA,QACA,IAAA,EAAM,KAAA,IAAS,CAAC,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,QACnC,YAAA,EAAY,KAAA,IAAS,CAAC,QAAA,GAAW,GAAA,GAAM,MAAA;AAAA,QACtC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AAIxB,IAAM,kBAAA,GAAqB,OAAO,KAAA,EAAO;AAAA,EACvC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS;AACxC,CAAC,CAAA,CAAE,EAAE,CAAA;AAQE,IAAM,QAAA,GAAiB4E,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASI,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,EAAA,EAAI,GAAG,MAAK,GAAI,KAAA;AACpD,IAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,eAAA,EAAiB,kBAAA,EAAoB,SAAS,CAAA;AAE/E,IAAA,uBACEhF,GAAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAIvB,IAAM,oBAAA,GAAuB,OAAO,KAAA,EAAO;AAAA,EACzC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS,aAAa,IAAA,KAAS;AAC9D,CAAC,CAAA,CAAE,EAAE,CAAA;AAQE,IAAM,UAAA,GAAmB4E,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASK,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM,EAAE,UAAU,KAAA,EAAO,QAAA,EAAU,WAAW,KAAA,EAAO,EAAA,EAAI,GAAG,IAAA,EAAK,GAAI,KAAA;AACrE,IAAA,MAAM,eAAA,GAAkB,UAAA;AAAA,MACtB,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,OAAA,IAAW,0BAAA;AAAA,MACX;AAAA,KACF;AAEA,IAAA,uBACEjF,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,eAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AAIzB,IAAM,qBAAA,GAAwB,OAAO,KAAA,EAAO;AAAA,EAC1C,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,SAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS,oBAAoB,IAAA,KAAS;AACrE,CAAC,CAAA,CAAE,EAAE,CAAA;AASE,IAAM,WAAA,GAAoB4E,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASM,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM;AAAA,MACJ,cAAA,GAAiB,KAAA;AAAA,MACjB,KAAA,GAAQ,OAAA;AAAA,MACR,QAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AACJ,IAAA,MAAM,gBAAA,GAAmB,UAAA;AAAA,MACvB,kBAAA;AAAA,MACA,qBAAA;AAAA,MACA,2BAA2B,KAAK,CAAA,CAAA;AAAA,MAChC,cAAA,IAAkB,mCAAA;AAAA,MAClB;AAAA,KACF;AAEA,IAAA,uBACElF,GAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,gBAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAI1B,IAAM,mBAAA,GAAsB,OAAO,IAAA,EAAM;AAAA,EACvC,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,OAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS;AACxC,CAAC,CAAA,CAAE,EAAE,CAAA;AAQE,IAAM,SAAA,GAAkB4E,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASO,UAAAA,CAAU,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,EAAA,EAAI,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AACpF,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,gBAAA,EAAkB,SAAS,CAAA;AAC7D,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEnF,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AACA,IAAA,uBACEA,GAAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,WAAA;AAIxB,IAAM,yBAAA,GAA4B,OAAO,GAAA,EAAK;AAAA,EAC5C,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM,aAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS;AACxC,CAAC,CAAA,CAAE,EAAE,CAAA;AAQE,IAAM,eAAA,GAAwB4E,OAAA,CAAA,UAAA;AAAA,EACnC,SAASQ,gBAAAA,CAAgB,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,KAAA,EAAO,EAAA,EAAI,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAC1F,IAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,sBAAA,EAAwB,eAAA,EAAiB,SAAS,CAAA;AACnF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEpF,GAAAA;AAAA,QAAC,yBAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,aAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AACA,IAAA,uBACEA,GAAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAIvB,IAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU;AAAA,EAC1C,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,WAAA,EAAa,eAAA;AAAA,EACb,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ,UAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAC;AChfM,SAAS,MAAA,CAAO;AAAA,EACrB,QAAA;AAAA,EACA;AACF,CAAA,EAA0C;AACxC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUqF,iBAAS,KAAK,CAAA;AAElD,EAAMA,kBAAU,MAAM;AACpB,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,OAAO,MAAM,WAAW,KAAK,CAAA;AAAA,EAC/B,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,kBACJ,SAAA,KAAc,OAAO,QAAA,KAAa,WAAA,GAAc,SAAS,IAAA,GAAO,IAAA,CAAA;AAElE,EAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAgB,QAAA,CAAA,YAAA,CAAa,UAAU,eAAe,CAAA;AACxD;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;ACRd,IAAM,OAAA,GAAgBC,OAAA,CAAA,UAAA;AAAA,EAC3B,SAASC,QAAAA,CACP;AAAA,IACE,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA,GAAY,GAAA;AAAA,IACZ,UAAA,GAAa,GAAA;AAAA,IACb,MAAA,EAAQ,cAAA;AAAA,IACR,WAAA,GAAc,KAAA;AAAA,IACd,YAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,UAAA,GAAa,KAAA;AAAA,IACb,QAAQ,UAAA,GAAa,CAAA;AAAA,IACrB,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,YAAA,EACA;AACA,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,oBAAA,CAA8B;AAAA,MACxD,KAAA,EAAO,cAAA;AAAA,MACP,YAAA,EAAc,WAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,iBAAA,GAAoB,OAAA,CAAQ,MAAA,IAAU,CAAC,cAAc,OAAO,CAAA;AAClE,IAAA,MAAM,QAAA,GAAiBD,eAAuB,IAAI,CAAA;AAElD,IAAA,MAAM;AAAA,MACJ,IAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA,EAAW,eAAA;AAAA,MACX,cAAA;AAAA,MACA;AAAA,QACE,WAAA,CAAY;AAAA,MACd,SAAA;AAAA,MACA,IAAA,EAAM,iBAAA;AAAA,MACN,YAAA,EAAc,CAAC,QAAA,KAAa;AAC1B,QAAA,IAAI,CAAC,cAAc,OAAA,EAAS;AAC1B,UAAA,SAAA,CAAU,QAAQ,CAAA;AAAA,QACpB,CAAA,MAAA,IAAW,CAAC,QAAA,EAAU;AACpB,UAAA,SAAA,CAAU,KAAK,CAAA;AAAA,QACjB;AAAA,MACF,CAAA;AAAA,MACA,oBAAA,EAAsB,UAAA;AAAA,MACtB,UAAA,EAAY;AAAA,QACV,OAAO,UAAU,CAAA;AAAA,QACjB,IAAA,CAAK,EAAE,yBAAA,EAA2B,OAAA,EAAS,CAAA;AAAA,QAC3C,KAAA,CAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA;AAAA,QACpB,WAAW,KAAA,CAAM,EAAE,OAAA,EAAS,QAAA,EAAU,CAAA,GAAI;AAAA,OAC5C,CAAE,OAAO,OAAO;AAAA,KACjB,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ,SAAS,OAAA,EAAS;AAAA,MAC9B,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,aAAa,WAAA,EAAY;AAAA,MACzB,OAAA,EAAS,CAAC,UAAA,IAAc,OAAA,CAAQ,OAAO;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ,SAAS,OAAA,EAAS;AAAA,MAC9B,WAAA,EAAa,KAAA;AAAA,MACb,OAAA,EAAS,CAAC,UAAA,IAAc,OAAA,CAAQ,OAAO;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,OAAA,GAAU,WAAW,OAAA,EAAS;AAAA,MAClC,SAAA,EAAW,IAAA;AAAA,MACX,OAAA,EAAS,CAAC,UAAA,IAAc,OAAA,CAAQ,OAAO;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,QAAQ,OAAA,EAAS;AAAA,MAC5B,IAAA,EAAM;AAAA,KACP,CAAA;AAED,IAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAI,eAAA,CAAgB;AAAA,MAC9D,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,cAAoBA,OAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,SAAA,GAAY,eAAe,OAAA,CAAQ,UAAA,IAAc,aAAa,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACrF,IAAA,MAAM,WAAiBA,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,GAC1C,aAAA,CAAc,QAAQ,CAAA,GACtB,MAAA;AACJ,IAAA,MAAM,kBAAA,GAAqB,YAAA,CAAa,IAAA,CAAK,YAAA,EAAc,QAAQ,CAAA;AACnE,IAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,IAAA,CAAK,WAAA,EAAa,YAAY,CAAA;AAErE,IAAA,IAAI,CAAOA,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AACnC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,aAAa,QAAA,CAAS,KAAA;AAC5B,IAAA,MAAM,oBAAA,GAAuB,WAAW,kBAAkB,CAAA;AAC1D,IAAA,MAAM,qBAAA,GAAwB,iBAAA,GAC1B,CAAC,oBAAA,EAAsB,SAAS,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAC1D,oBAAA;AAEJ,IAAA,MAAM,iBAAiB,iBAAA,CAAkB;AAAA,MACvC,GAAG,UAAA;AAAA,MACH,GAAA,EAAK,kBAAA;AAAA,MACL,kBAAA,EAAoB;AAAA,KACrB,CAAA;AAED,IAAA,MAAM,aAAA,GAAsBA,OAAA,CAAA,YAAA,CAAa,QAAA,EAAU,cAAc,CAAA;AAEjE,IAAA,uBACE1C,IAAAA,CAAAkB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,aAAA;AAAA,MACA,iBAAA,oBACC9D,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAA4C,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACE,GAAG,gBAAA,CAAiB;AAAA,YACnB,EAAA,EAAI,SAAA;AAAA,YACJ,GAAA,EAAK,iBAAA;AAAA,YACL,IAAA,EAAM,SAAA;AAAA,YACN,SAAA,EAAW,UAAA,CAAW,YAAA,EAAc,SAAS,CAAA;AAAA,YAC7C,KAAA,EAAO;AAAA,cACL,GAAG,cAAA;AAAA,cACH,GAAG;AAAA;AACL,WACD,CAAA;AAAA,UACD,YAAA,EAAW,MAAA;AAAA,UACX,gBAAA,EAAgB,eAAA;AAAA,UAEhB,QAAA,EAAA;AAAA,4BAAA5C,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAA,EAAqB,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,YAC5C,QAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EACd,QAAA,kBAAAA,GAAAA,CAAC,GAAA,EAAA,EAAI,IAAA,EAAK,IAAA,EAAM,QAAA,EAAA,QAAA,EAAS,CAAA,EAC3B,CAAA;AAAA,YAED,4BACCA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,GAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,mBAAA;AAAA,gBACV,aAAA,EAAY,MAAA;AAAA,gBACZ,KAAA,EAAO;AAAA,kBACL,IAAA,EACE,eAAe,KAAA,EAAO,CAAA,IAAK,OACvB,CAAA,EAAG,cAAA,CAAe,KAAA,CAAM,CAAC,CAAA,EAAA,CAAA,GACzB,MAAA;AAAA,kBACN,GAAA,EACE,eAAe,KAAA,EAAO,CAAA,IAAK,OACvB,CAAA,EAAG,cAAA,CAAe,KAAA,CAAM,CAAC,CAAA,EAAA,CAAA,GACzB;AAAA;AACR;AAAA;AACF;AAAA;AAAA,OAEJ,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AC7ItB,IAAM,cAAA,GAAuBwF,sBAAkD,IAAI,CAAA;AAE5E,SAAS,iBAAA,GAAiD;AAC/D,EAAA,MAAM,OAAA,GAAgBA,mBAAW,cAAc,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAMO,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,MAAA,EAAQ,cAAA;AAAA,EACR,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,SAAA,GAAY,QAAA;AAAA,EACZ,QAAQ,UAAA,GAAa,CAAA;AAAA,EACrB,SAAA,GAAY,IAAA;AAAA,EACZ,UAAA,GAAa,IAAA;AAAA,EACb,eAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,oBAAA,CAA8B;AAAA,IACxD,KAAA,EAAO,cAAA;AAAA,IACP,YAAA,EAAc,WAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,MAAM,QAAA,GAAiBA,eAA8B,IAAI,CAAA;AACzD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,iBAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAUA,iBAAS,KAAK,CAAA;AAElE,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA,EAAW,eAAA;AAAA,IACX,cAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACPC,WAAAA,CAAY;AAAA,IACd,SAAA;AAAA,IACA,IAAA,EAAM,MAAA;AAAA,IACN,YAAA,EAAc,SAAA;AAAA,IACd,oBAAA,EAAsBC,UAAAA;AAAA,IACtB,UAAA,EAAY;AAAA,MACVC,OAAO,UAAU,CAAA;AAAA,MACjBC,IAAAA,CAAK,EAAE,yBAAA,EAA2B,OAAA,EAAS,CAAA;AAAA,MAC3CC,KAAAA,CAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA;AAAA,MACpBC,KAAAA,CAAM,EAAE,OAAA,EAAS,QAAA,EAAU;AAAA;AAC7B,GACD,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,SAAS,eAAe,CAAA;AACtC,EAAA,MAAM,OAAA,GAAUC,WAAW,eAAA,EAAiB;AAAA,IAC1C,SAAA,EAAW,UAAA;AAAA,IACX,YAAA,EAAc,IAAA;AAAA,IACd,OAAA,EAAS;AAAA,GACV,CAAA;AACD,EAAA,MAAM,IAAA,GAAOC,QAAQ,eAAA,EAAiB;AAAA,IACpC,IAAA,EAAM;AAAA,GACP,CAAA;AAED,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAIC,eAAAA,CAAgB;AAAA,IAC9D,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,cAAoBT,OAAA,CAAA,KAAA,EAAM;AAChC,EAAA,MAAM,EAAA,GAAK,eAAe,eAAA,CAAgB,UAAA,IAAc,aAAa,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACtF,EAAA,MAAM,OAAA,GAAU,qBAAqB,eAAA,CAAgB,UAAA,IAAc,aAAa,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AAEjG,EAAA,MAAM,IAAA,GAAaA,oBAAY,MAAM,SAAA,CAAU,IAAI,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACjE,EAAA,MAAM,KAAA,GAAcA,oBAAY,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACnE,EAAA,MAAM,MAAA,GAAeA,OAAA,CAAA,WAAA,CAAY,MAAM,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAE9E,EAAA,MAAM,YAAA,GAA4C;AAAA,IAChD,MAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,eAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACExF,GAAAA,CAAC,cAAA,CAAe,UAAf,EAAwB,KAAA,EAAO,cAC7B,QAAA,EACH,CAAA;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,cAAA,GAAuBwF,OAAA,CAAA,UAAA;AAAA,EAClC,SAASU,eAAAA,CAAe,EAAE,UAAU,OAAA,GAAU,KAAA,IAAS,GAAA,EAAK;AAC1D,IAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAmB,MAAA,EAAQ,EAAA,KAAO,iBAAA,EAAkB;AAElE,IAAA,MAAM,WAAiBV,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,GAC1C,aAAA,CAAc,QAAQ,CAAA,GACtB,MAAA;AACJ,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,YAAA,EAAc,UAAU,GAAG,CAAA;AAE/D,IAAA,IAAI,CAAOA,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AACnC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,aAAa,QAAA,CAAS,KAAA;AAE5B,IAAA,MAAM,iBAAiB,iBAAA,CAAkB;AAAA,MACvC,GAAG,UAAA;AAAA,MACH,GAAA,EAAK,SAAA;AAAA,MACL,eAAA,EAAiB,QAAA;AAAA,MACjB,eAAA,EAAiB,MAAA;AAAA,MACjB,eAAA,EAAiB,SAAS,EAAA,GAAK;AAAA,KAChC,CAAA;AAED,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBAAOxF,GAAAA,CAAC,IAAA,EAAA,EAAM,GAAG,gBAAiB,QAAA,EAAS,CAAA;AAAA,IAC7C;AAEA,IAAA,OAAawF,OAAA,CAAA,YAAA,CAAa,UAAU,cAAc,CAAA;AAAA,EACpD;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,SAAA,EAAU,EAAuB;AACzE,EAAA,MAAM,EAAE,MAAA,EAAQ,kBAAA,EAAmB,GAAI,iBAAA,EAAkB;AAEzD,EAAMA,kBAAU,MAAM;AACpB,IAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,IAAA,OAAO,MAAM,mBAAmB,KAAK,CAAA;AAAA,EACvC,CAAA,EAAG,CAAC,kBAAkB,CAAC,CAAA;AAEvB,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBAAOxF,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,SAAA,IAAa,MAAO,QAAA,EAAS,CAAA;AACzD;AAEA,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,cAAA,GAAuBwF,OAAA,CAAA,UAAA;AAAA,EAClC,SAASW,eAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,QAAA,GAAW,IAAA;AAAA,IACX,SAAA;AAAA,IACA,KAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM;AAAA,MACJ,MAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,QACE,iBAAA,EAAkB;AAEtB,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,IAAA,CAAK,WAAA,EAAa,GAAG,CAAA;AAEpD,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,8BACJnG,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,eAAA;AAAA,QACT,KAAA,EAAO,SAAA;AAAA,QACP,UAAU,CAAC,SAAA;AAAA,QACX,cAAc,eAAA,IAAmB,MAAA;AAAA,QACjC,aAAa,cAAA,IAAkB,IAAA;AAAA,QAE/B,QAAA,kBAAA4C,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACE,GAAG,gBAAA,CAAiB;AAAA,cACnB,EAAA;AAAA,cACA,GAAA,EAAK,SAAA;AAAA,cACL,IAAA,EAAM,QAAA;AAAA,cACN,YAAA,EAAc,YAAY,MAAA,GAAS,MAAA;AAAA,cACnC,iBAAA,EAAmB,WAAW,OAAA,GAAU,MAAA;AAAA,cACxC,SAAA,EAAW,UAAA,CAAW,YAAA,EAAc,SAAS,CAAA;AAAA,cAC7C,KAAA,EAAO;AAAA,gBACL,GAAG,cAAA;AAAA,gBACH,GAAG;AAAA,eACL;AAAA,cACA,QAAA,EAAU,EAAA;AAAA,cACV,GAAG;AAAA,aACJ,CAAA;AAAA,YACD,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,YAC9B,gBAAA,EAAgB,eAAA;AAAA,YAEf,QAAA,EAAA;AAAA,cAAA,QAAA,oBAAY5C,IAAC,YAAA,EAAA,EAAa,CAAA;AAAA,cAC1B;AAAA;AAAA;AAAA;AACH;AAAA,KACF;AAGF,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,OAAO,WAAA;AAAA,IACT;AAEA,IAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,EAC9B;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,YAAA,GAAqBwF,OAAA,CAAA,UAAA;AAAA,EAChC,SAASY,cAAa,EAAE,SAAA,EAAW,OAAO,GAAG,SAAA,IAAa,GAAA,EAAK;AAC7D,IAAA,MAAM,EAAE,QAAA,EAAU,cAAA,EAAe,GAAI,iBAAA,EAAkB;AACvD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,QAAA,EAAU,GAAG,CAAA;AAE5C,IAAA,uBACEpG,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,UAAA,CAAW,mBAAA,EAAqB,SAAS,CAAA;AAAA,QACpD,KAAA,EAAO;AAAA,UACL,IAAA,EACE,eAAe,KAAA,EAAO,CAAA,IAAK,OACvB,CAAA,EAAG,cAAA,CAAe,KAAA,CAAM,CAAC,CAAA,EAAA,CAAA,GACzB,MAAA;AAAA,UACN,GAAA,EACE,eAAe,KAAA,EAAO,CAAA,IAAK,OACvB,CAAA,EAAG,cAAA,CAAe,KAAA,CAAM,CAAC,CAAA,EAAA,CAAA,GACzB,MAAA;AAAA,UACN,GAAG;AAAA,SACL;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,YAAA,GAAqBwF,OAAA,CAAA,UAAA;AAAA,EAChC,SAASa,aAAAA,CACP,EAAE,QAAA,EAAU,OAAA,GAAU,KAAA,EAAO,OAAA,EAAS,SAAA,EAAW,GAAG,SAAA,EAAU,EAC9D,GAAA,EACA;AACA,IAAA,MAAM,EAAE,KAAA,EAAM,GAAI,iBAAA,EAAkB;AACpC,IAAA,MAAM,WAAA,GAAc,oBAAA,CAAqB,OAAA,EAAS,MAAM,OAAO,CAAA;AAE/D,IAAA,IAAI,OAAA,IAAiBb,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAC7C,MAAA,uBACExF,IAAC,IAAA,EAAA,EAAK,GAAA,EAAU,SAAS,WAAA,EAAc,GAAG,WACvC,QAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,GAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAW,eAAA;AAAA,QACX,SAAA,EAAW,UAAA,CAAW,mBAAA,EAAqB,SAAS,CAAA;AAAA,QACnD,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,KACf;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,aAAA,GAAsBwF,OAAA,CAAA,UAAA;AAAA,EACjC,SAASc,eAAc,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AACjE,IAAA,uBACEtG,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,QACpD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,YAAA,GAAqBwF,OAAA,CAAA,UAAA;AAAA,EAChC,SAASe,cAAa,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AAChE,IAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAY,GAAI,iBAAA,EAAkB;AAEnD,IAAMf,kBAAU,MAAM;AACpB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,OAAO,MAAM,YAAY,KAAK,CAAA;AAAA,IAChC,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,IAAA,uBACExF,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,OAAA;AAAA,QACJ,SAAA,EAAW,UAAA,CAAW,mBAAA,EAAqB,SAAS,CAAA;AAAA,QACnD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,WAAA,GAAoBwF,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASgB,aAAY,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AAC/D,IAAA,uBACExG,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA;AAAA,QAClD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,aAAA,GAAsBwF,OAAA,CAAA,UAAA;AAAA,EACjC,SAASiB,eAAc,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AACjE,IAAA,uBACEzG,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,QACpD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,WAAA,EAAa;AAAA,EAChD,IAAA,EAAM,WAAA;AAAA,EACN,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAA;AAAA,EACT,KAAA,EAAO,YAAA;AAAA,EACP,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAO,YAAA;AAAA,EACP,IAAA,EAAM,WAAA;AAAA,EACN,MAAA,EAAQ;AACV,CAAC;AChcD,IAAM,YAAA,GAAqB0G,sBAAwC,IAAI,CAAA;AAEhE,SAAS,eAAA,GAAqC;AACnD,EAAA,MAAM,OAAA,GAAgBA,mBAAW,YAAY,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAKA,IAAM,QAAA,GAAiBA,OAAA,CAAA,UAAA;AAAA,EACrB,SAASC,SAAAA,CAAS,KAAA,EAAO,GAAA,EAAK;AAC5B,IAAA,uBACE/D,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAO,IAAA;AAAA,QACP,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,0BACtCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,GAAA,EAAI;AAAA;AAAA;AAAA,KACzC;AAAA,EAEJ;AACF,CAAA;AAEA,IAAM,WAAA,GAAoB0G,OAAA,CAAA,UAAA;AAAA,EACxB,SAASE,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,uBACEhE,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAO,IAAA;AAAA,QACP,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA;AAAA;AAAA,KAC1B;AAAA,EAEJ;AACF,CAAA;AAEA,IAAM,WAAA,GAAoB0G,OAAA,CAAA,UAAA;AAAA,EACxB,SAASG,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,uBACEjE,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAO,IAAA;AAAA,QACP,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2EAAA,EAA4E,CAAA;AAAA,0BACpFA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,0BACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA,KAC3C;AAAA,EAEJ;AACF,CAAA;AAEA,IAAM,UAAA,GAAmB0G,OAAA,CAAA,UAAA;AAAA,EACvB,SAASI,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,uBACElE,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,IAAA;AAAA,QACN,MAAA,EAAO,IAAA;AAAA,QACP,IAAA,EAAK,MAAA;AAAA,QACL,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,GAAA;AAAA,QACZ,aAAA,EAAc,OAAA;AAAA,QACd,cAAA,EAAe,OAAA;AAAA,QACf,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,0BAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,0BACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA,KAC3C;AAAA,EAEJ;AACF,CAAA;AAEA,SAAS,cACP,MAAA,EAGA;AACA,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,SAAA;AACH,MAAA,OAAO,WAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,WAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,UAAA;AAAA,IACT,KAAK,SAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL;AACE,MAAA,OAAO,QAAA;AAAA;AAEb;AAKO,IAAM,SAAA,GAAkB0G,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASK,UAAAA,CACP;AAAA,IACE,QAAA;AAAA,IACA,MAAA,GAAS,MAAA;AAAA,IACT,OAAA,GAAU,QAAA;AAAA,IACV,UAAA,GAAa,KAAA;AAAA,IACb,OAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,YAAA;AAAA,IACb,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUL,iBAAS,KAAK,CAAA;AAEpD,IAAA,MAAM,WAAA,GAAoBA,oBAAY,MAAM;AAC1C,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,OAAA,IAAU;AAAA,IACZ,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAEtB,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,MAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,MAAA,EAAQ,OAAA,EAAS,OAAA,EAAS,aAAa,QAAQ;AAAA,KAClD;AAEA,IAAA,MAAM,gBAAA,GAAyBA,gBAAQ,MAAM;AAC3C,MAAA,IAAI,KAAA,GAAQ,KAAA;AACZ,MAAMA,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AAC1C,QAAA,IAAUA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAC/B,UAAA,IACE,MAAM,IAAA,KAAS,gBAAA,IACd,KAAA,CAAM,IAAA,EAAmC,gBACxC,mBAAA,EACF;AACA,YAAA,KAAA,GAAQ,IAAA;AAAA,UACV;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,OAAO,KAAA;AAAA,IACT,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,WAAA,GAAc,MAAA,KAAW,QAAA,GAAW,OAAA,GAAU,QAAA;AACpD,IAAA,MAAM,eAAA,GAAkB,MAAA,KAAW,QAAA,GAAW,WAAA,GAAc,QAAA;AAC5D,IAAA,MAAM,eAAe,QAAA,IAAY,WAAA;AACjC,IAAA,MAAM,mBAAmB,YAAA,IAAgB,eAAA;AAEzC,IAAA,MAAM,YAAA,GAAe,UAAA;AAAA,MACnB,UAAA;AAAA,MACA,aAAa,MAAM,CAAA,CAAA;AAAA,MACnB,aAAa,OAAO,CAAA,CAAA;AAAA,MACpB,UAAA,IAAc,oBAAA;AAAA,MACd;AAAA,KACF;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE1G,GAAAA,CAAC,YAAA,CAAa,UAAb,EAAsB,KAAA,EAAO,cAC5B,QAAA,kBAAAA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAM,YAAA;AAAA,UACN,WAAA,EAAW,gBAAA;AAAA,UACX,SAAA,EAAW,YAAA;AAAA,UACV,GAAG,SAAA;AAAA,UAEH;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA,CAAC,YAAA,CAAa,UAAb,EAAsB,KAAA,EAAO,cAC5B,QAAA,kBAAA4C,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAM,YAAA;AAAA,QACN,WAAA,EAAW,gBAAA;AAAA,QACX,SAAA,EAAW,YAAA;AAAA,QACV,GAAG,SAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,UAAA,IAAc,CAAC,gBAAA,oBAAoB5C,IAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA;AAAA,KACxD,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,YAAA;AAKjB,IAAM,SAAA,GAAkB0G,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASM,WAAU,EAAE,IAAA,EAAM,UAAU,SAAA,EAAW,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACnE,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,eAAA,EAAgB;AAEnC,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,IAAUN,OAAA,CAAA,cAAA,CAAe,IAAI,CAAA,EAAG;AAC9B,QAAA,OAAaA,qBAAa,IAAA,EAAqD;AAAA,UAC7E,GAAG,SAAA;AAAA,UACH,GAAI,IAAA,CAAK,KAAA;AAAA,UACT,GAAA;AAAA,UACA,aAAA,EAAe,MAAA;AAAA,UACf,SAAA,EAAW,UAAA;AAAA,YACT,gBAAA;AAAA,YACA,SAAA;AAAA,YACC,KAAK,KAAA,EAAkC;AAAA;AAC1C,SACD,CAAA;AAAA,MACH;AACA,MAAA,uBACE1G,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,UAAA,CAAW,kBAAkB,SAAS,CAAA,EAAG,aAAA,EAAY,MAAA,EACnE,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAU0G,OAAA,CAAA,cAAA,CAAe,QAAQ,CAAA,EAAG;AAClC,QAAA,OAAaA,qBAAa,QAAA,EAAyD;AAAA,UACjF,GAAG,SAAA;AAAA,UACH,GAAI,QAAA,CAAS,KAAA;AAAA,UACb,GAAA;AAAA,UACA,aAAA,EAAe,MAAA;AAAA,UACf,SAAA,EAAW,UAAA;AAAA,YACT,gBAAA;AAAA,YACA,SAAA;AAAA,YACC,SAAS,KAAA,EAAkC;AAAA;AAC9C,SACD,CAAA;AAAA,MACH;AACA,MAAA,uBACE1G,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,UAAA,CAAW,kBAAkB,SAAS,CAAA,EAAG,aAAA,EAAY,MAAA,EACnE,QAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,MAAM,aAAA,GAAgB,cAAc,MAAM,CAAA;AAC1C,IAAA,uBACEA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,gBAAA,EAAkB,SAAS,CAAA;AAAA,QAChD,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,YAAA;AAKjB,IAAM,SAAA,GAAkB0G,OAAA,CAAA,UAAA;AAAA,EAC7B,SAASO,WAAU,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AAC7D,IAAA,uBACEjH,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,gBAAA,EAAkB,SAAS,CAAA;AAAA,QAChD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,SAAA,CAAU,WAAA,GAAc,YAAA;AAKjB,IAAM,UAAA,GAAmB0G,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASQ,YAAW,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AAC9D,IAAA,uBACElH,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,iBAAA,EAAmB,SAAS,CAAA;AAAA,QACjD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,aAAA;AAKlB,IAAM,gBAAA,GAAyB0G,OAAA,CAAA,UAAA,CAGpC,SAASS,iBAAAA,CAAiB,EAAE,UAAU,SAAA,EAAW,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACtE,EAAA,uBACEnH,GAAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,uBAAA,EAAyB,SAAS,CAAA;AAAA,MACvD,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAKxB,IAAM,WAAA,GAAoB0G,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASU,aAAY,EAAE,QAAA,EAAU,WAAW,GAAG,SAAA,IAAa,GAAA,EAAK;AAC/D,IAAA,uBACEpH,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA;AAAA,QAClD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,gBAAA,GAAyB0G,OAAA,CAAA,UAAA,CAGpC,SAASW,iBAAAA,CACT;AAAA,EACE,OAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAc,SAAA,GAAY,aAAA;AAAA,EAC1B,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,QAAA,EAAS,GAAI,eAAA,EAAgB;AAElD,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA+C;AAClE,IAAA,OAAA,GAAU,KAAK,CAAA;AACf,IAAA,IAAI,CAAC,MAAM,gBAAA,EAAkB;AAC3B,MAAA,WAAA,EAAY;AAAA,IACd;AAAA,EACF,CAAA;AAEA,EAAA,uBACErH,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,SAAA;AAAA,MACZ,UAAU,QAAA,IAAY,QAAA;AAAA,MACtB,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,UAAA,CAAW,iBAAA,EAAmB,SAAS,CAAA;AAAA,MACjD,GAAG,SAAA;AAAA,MAEH,sCACC4C,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,WAAA;AAAA,UACR,KAAA,EAAM,IAAA;AAAA,UACN,MAAA,EAAO,IAAA;AAAA,UACP,IAAA,EAAK,MAAA;AAAA,UACL,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,GAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe,OAAA;AAAA,UACf,aAAA,EAAY,MAAA;AAAA,UACZ,SAAA,EAAU,OAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAA5C,GAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,4BACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA;AACtC;AAAA,GAEJ;AAEJ,CAAC;AAED,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAKxB,IAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW;AAAA,EAC5C,IAAA,EAAM,SAAA;AAAA,EACN,IAAA,EAAM,SAAA;AAAA,EACN,IAAA,EAAM,SAAA;AAAA,EACN,KAAA,EAAO,UAAA;AAAA,EACP,WAAA,EAAa,gBAAA;AAAA,EACb,MAAA,EAAQ,WAAA;AAAA,EACR,WAAA,EAAa;AACf,CAAC;ACncM,IAAM,YAAA,GAAqBsH,sBAAqC,IAAI;AAE3E,IAAM,SAAA,GAA6B;AAAA,EACjC,KAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA;AAEA,SAASX,SAAAA,GAAW;AAClB,EAAA,uBACE/D,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA5C,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,wBAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,wBACtCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,GAAA,EAAI;AAAA;AAAA;AAAA,GACzC;AAEJ;AAEA,SAAS4G,YAAAA,GAAc;AACrB,EAAA,uBACEhE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA5C,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,wBAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA;AAAA;AAAA,GAC1B;AAEJ;AAEA,SAAS6G,YAAAA,GAAc;AACrB,EAAA,uBACEjE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA5C,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,2EAAA,EAA4E,CAAA;AAAA,wBACpFA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,wBACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA,GAC3C;AAEJ;AAEA,SAAS8G,WAAAA,GAAa;AACpB,EAAA,uBACElE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,WAAA;AAAA,MACR,KAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MAEV,QAAA,EAAA;AAAA,wBAAA5C,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,IAAA,EAAK,CAAA;AAAA,wBAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,wBACrCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,IAAG,IAAA,EAAK,EAAA,EAAG,OAAA,EAAQ,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA,GAC3C;AAEJ;AAEA,SAAS,iBAAiB,MAAA,EAAqB;AAC7C,EAAA,QAAQ,MAAA;AAAQ,IACd,KAAK,SAAA;AACH,MAAA,uBAAOA,GAAAA,CAAC4G,YAAAA,EAAA,EAAY,CAAA;AAAA,IACtB,KAAK,SAAA;AACH,MAAA,uBAAO5G,GAAAA,CAAC6G,YAAAA,EAAA,EAAY,CAAA;AAAA,IACtB,KAAK,QAAA;AACH,MAAA,uBAAO7G,GAAAA,CAAC8G,WAAAA,EAAA,EAAW,CAAA;AAAA,IACrB,KAAK,SAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL;AACE,MAAA,uBAAO9G,GAAAA,CAAC2G,SAAAA,EAAA,EAAS,CAAA;AAAA;AAEvB;AAKO,IAAM,SAAA,GAAkBW,mBAM7B,SAASC,UAAAA,CAAU,EAAE,KAAA,EAAO,OAAA,IAAW,GAAA,EAAK;AAC5C,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,YAAA,GAAqBD,OAAA,CAAA,MAAA;AAAA,IACzB,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,GAAW;AAAA,GAC5C;AACA,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,MAAA,CAAe,IAAA,CAAK,GAAA,EAAK,CAAA;AACpD,EAAA,MAAM,QAAA,GAAiBA,eAA6C,IAAI,CAAA;AACxE,EAAA,MAAM,WAAA,GAAoBA,eAAgB,KAAK,CAAA;AAE/C,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,MAAA,YAAA,CAAa,OAAA,GAAU,QAAA;AAAA,IACzB;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,UAAA,GAAmBA,oBAAY,MAAM;AACzC,IAAA,IAAI,QAAA,KAAa,IAAA,IAAQ,QAAA,KAAa,MAAA,EAAW;AAEjD,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB;AAEA,IAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,MAAA,QAAA,CAAS,OAAA,GAAU,WAAW,MAAM;AAClC,QAAA,OAAA,EAAQ;AACR,QAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,MACrB,GAAG,CAAC,CAAA;AACJ,MAAA;AAAA,IACF;AAEA,IAAA,YAAA,CAAa,OAAA,GAAU,KAAK,GAAA,EAAI;AAChC,IAAA,QAAA,CAAS,OAAA,GAAU,WAAW,MAAM;AAClC,MAAA,OAAA,EAAQ;AACR,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB,CAAA,EAAG,aAAa,OAAO,CAAA;AAAA,EACzB,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AAEtB,EAAA,MAAM,UAAA,GAAmBA,oBAAY,MAAM;AACzC,IAAA,IAAI,QAAA,KAAa,IAAA,IAAQ,QAAA,KAAa,MAAA,EAAW;AACjD,IAAA,IAAI,SAAS,OAAA,EAAS;AACpB,MAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,IACrB;AACA,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,EAAI,GAAI,YAAA,CAAa,OAAA;AAC1C,IAAA,YAAA,CAAa,UAAU,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,YAAA,CAAa,UAAU,OAAO,CAAA;AACjE,IAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,EACxB,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,WAAA,GAAoBA,oBAAY,MAAM;AAC1C,IAAA,IAAI,QAAA,KAAa,IAAA,IAAQ,QAAA,KAAa,MAAA,EAAW;AACjD,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,WAAA,CAAY,OAAA,GAAU,KAAA;AACtB,MAAA,UAAA,EAAW;AAAA,IACb;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,UAAU,CAAC,CAAA;AAEzB,EAAMA,kBAAU,MAAM;AACpB,IAAA,UAAA,EAAW;AACX,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,QAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,MACrB;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,MAAM,IAAA,GAAO,MAAA,KAAW,QAAA,GAAW,OAAA,GAAU,QAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,MAAA,KAAW,QAAA,GAAW,WAAA,GAAc,QAAA;AAErD,EAAA,uBACE1E,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA,EAAW,QAAA;AAAA,MACX,aAAA,EAAY,MAAA;AAAA,MACZ,QAAA,EAAU,CAAA;AAAA,MACV,YAAA,EAAc,UAAA;AAAA,MACd,YAAA,EAAc,WAAA;AAAA,MACd,cAAA,EAAgB,UAAA;AAAA,MAChB,cAAA,EAAgB,WAAA;AAAA,MAChB,OAAA,EAAS,UAAA;AAAA,MACT,MAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAW,UAAA;AAAA,QACT,UAAA;AAAA,QACA,aAAa,MAAM,CAAA;AAAA,OACrB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA5C,GAAAA,CAAC,UAAK,SAAA,EAAU,gBAAA,EAAiB,eAAY,MAAA,EAC1C,QAAA,EAAA,gBAAA,CAAiB,MAAM,CAAA,EAC1B,CAAA;AAAA,wBAEA4C,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBAAS5C,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,mBAAmB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAChD,+BAAeA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yBAAyB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EACpE,CAAA;AAAA,QAEC,0BAAUA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAoB,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAEpD,8BACCA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAW,SAAA;AAAA,YACX,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,iBAAA;AAAA,YAEV,QAAA,kBAAA4C,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,WAAA;AAAA,gBACR,KAAA,EAAM,IAAA;AAAA,gBACN,MAAA,EAAO,IAAA;AAAA,gBACP,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,WAAA,EAAY,GAAA;AAAA,gBACZ,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe,OAAA;AAAA,gBACf,aAAA,EAAY,MAAA;AAAA,gBACZ,SAAA,EAAU,OAAA;AAAA,gBAEV,QAAA,EAAA;AAAA,kCAAA5C,GAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,kCACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA;AACtC;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ,CAAC;AAED,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,IAAI,YAAA,GAAe,CAAA;AAKZ,SAAS,aAAA,CAAc;AAAA,EAC5B,QAAA;AAAA,EACA,eAAA,GAAkB,GAAA;AAAA,EAClB,eAAA,GAAkB,cAAA;AAAA,EAClB,gBAAA,GAAmB;AACrB,CAAA,EAAuB;AACrB,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUsH,OAAA,CAAA,QAAA,CAAwB,EAAE,CAAA;AAE5D,EAAA,MAAM,KAAA,GAAcA,OAAA,CAAA,WAAA,CAAY,CAAC,EAAA,KAAe;AAC9C,IAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAClB,MAAA,MAAM,QAAQ,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAC1C,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,KAAA,CAAM,OAAA,EAAQ;AAAA,MAChB;AACA,MAAA,OAAO,KAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAAA,IACvC,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAA,GAAiBA,oBAAY,MAAM;AACvC,IAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAClB,MAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,CAAA;AACjC,MAAA,OAAO,EAAC;AAAA,IACV,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,MAAA,GAAeA,OAAA,CAAA,WAAA;AAAA,IACnB,CAAC,IAAY,OAAA,KAAmC;AAC9C,MAAA,SAAA;AAAA,QAAU,CAAC,IAAA,KACT,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACd,UAAA,IAAI,CAAA,CAAE,EAAA,KAAO,EAAA,EAAI,OAAO,CAAA;AACxB,UAAA,OAAO;AAAA,YACL,GAAG,CAAA;AAAA,YACH,GAAG,OAAA;AAAA,YACH,IAAI,CAAA,CAAE,EAAA;AAAA,YACN,UAAU,OAAA,CAAQ,QAAA,KAAa,MAAA,GAAY,OAAA,CAAQ,WAAW,CAAA,CAAE,QAAA;AAAA,YAChE,UAAU,OAAA,CAAQ,QAAA,KAAa,MAAA,GAAY,OAAA,CAAQ,WAAW,CAAA,CAAE,QAAA;AAAA,YAChE,QAAQ,OAAA,CAAQ,MAAA,KAAW,MAAA,GAAY,OAAA,CAAQ,SAAS,CAAA,CAAE,MAAA;AAAA,YAC1D,YACE,OAAA,CAAQ,UAAA,KAAe,MAAA,GAAY,OAAA,CAAQ,aAAa,CAAA,CAAE;AAAA,WAC9D;AAAA,QACF,CAAC;AAAA,OACH;AAAA,IACF,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,QAAA,GAAiBA,OAAA,CAAA,WAAA;AAAA,IACrB,CAAC,OAAe,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAAA,IAC9C,CAAC,MAAM;AAAA,GACT;AAEA,EAAA,MAAM,KAAA,GAAcA,OAAA,CAAA,WAAA;AAAA,IAClB,CAAC,OAAA,KAAkC;AACjC,MAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,EAAA,IAAM,CAAA,SAAA,EAAY,EAAE,YAAY,CAAA,CAAA;AACnD,MAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,eAAA;AACrC,MAAA,MAAM,QAAA,GACJ,OAAA,CAAQ,QAAA,KAAa,MAAA,GAAY,QAAQ,QAAA,GAAW,eAAA;AACtD,MAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,IAAU,MAAA;AACjC,MAAA,MAAM,UAAA,GACJ,OAAA,CAAQ,UAAA,KAAe,MAAA,GAAY,QAAQ,UAAA,GAAa,IAAA;AAE1D,MAAA,MAAM,SAAA,GAAyB;AAAA,QAC7B,GAAG,OAAA;AAAA,QACH,EAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA,EAAW,KAAK,GAAA;AAAI,OACtB;AAEA,MAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAElB,QAAA,MAAM,iBAAiB,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,QAAQ,CAAA;AACjE,QAAA,IAAI,UAAU,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,OAAO,EAAE,CAAA;AAE5C,QAAA,IAAI,cAAA,CAAe,UAAU,gBAAA,EAAkB;AAC7C,UAAA,MAAM,MAAA,GAAS,eAAe,CAAC,CAAA;AAC/B,UAAA,IAAI,MAAA,EAAQ;AACV,YAAA,MAAA,CAAO,OAAA,IAAU;AACjB,YAAA,OAAA,GAAU,QAAQ,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,OAAO,EAAE,CAAA;AAAA,UACpD;AAAA,QACF;AAEA,QAAA,OAAO,CAAC,GAAG,OAAA,EAAS,SAAS,CAAA;AAAA,MAC/B,CAAC,CAAA;AAED,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,eAAA,EAAiB,eAAA,EAAiB,gBAAgB;AAAA,GACrD;AAEA,EAAA,MAAM,YAAA,GAAqBA,gBAAwB,MAAM;AACvD,IAAA,MAAM,EAAA,GAAK,CAAC,OAAA,KAA0B,KAAA,CAAM,OAAO,CAAA;AACnD,IAAA,EAAA,CAAG,KAAA,GAAQ,KAAA;AACX,IAAA,EAAA,CAAG,QAAA,GAAW,QAAA;AACd,IAAA,EAAA,CAAG,MAAA,GAAS,MAAA;AACZ,IAAA,EAAA,CAAG,QAAA,GAAW,QAAA;AACd,IAAA,OAAO,EAAA;AAAA,EACT,GAAG,CAAC,KAAA,EAAO,OAAO,QAAA,EAAU,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAE7C,EAAA,uBACE1E,IAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OAAO,YAAA,EAC3B,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,oBACD5C,GAAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,GAAA,KAAQ;AACtB,MAAA,MAAM,QAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa,GAAG,CAAA;AACrD,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE/B,MAAA,uBACEA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,UAAA;AAAA,YACT,oBAAA;AAAA,YACA,uBAAuB,GAAG,CAAA;AAAA,WAC5B;AAAA,UACA,IAAA,EAAK,QAAA;AAAA,UACL,YAAA,EAAY,iBAAiB,GAAG,CAAA,CAAA;AAAA,UAE/B,gBAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,IAAC,SAAA,EAAA,EAAqB,KAAA,EAAO,CAAA,EAAG,OAAA,EAAS,MAAM,KAAA,CAAM,CAAA,CAAE,EAAE,CAAA,EAAA,EAAzC,CAAA,CAAE,EAA0C,CAC7D;AAAA,SAAA;AAAA,QAVI;AAAA,OAWP;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AClYO,IAAM,QAAA,GAAiBwH,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASC,SAAAA,CACP;AAAA,IACE,MAAA,GAAS,KAAA;AAAA,IACT,OAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA,GAAS,MAAA;AAAA,IACT,QAAA,GAAW,GAAA;AAAA,IACX,QAAA,GAAW,cAAA;AAAA,IACX,MAAA;AAAA,IACA,UAAA,GAAa,IAAA;AAAA,IACb,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,WAAA,GAAoBD,oBAAY,MAAM;AAC1C,MAAA,OAAA,IAAU;AAAA,IACZ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,WAAA,GAA2B;AAAA,MAC/B,EAAA,EAAI,sBAAA;AAAA,MACJ,OAAO,OAAA,IAAW,QAAA;AAAA,MAClB,WAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAU,QAAA,IAAY,IAAA;AAAA,MACtB,QAAA;AAAA,MACA,UAAA,EAAY,QAAQ,UAAU,CAAA;AAAA,MAC9B,MAAA;AAAA,MACA,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,MACpB,OAAA,EAAS;AAAA,KACX;AAEA,IAAA,uBACExH,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,UAAA;AAAA,UACT,oBAAA;AAAA,UACA,uBAAuB,QAAQ,CAAA,CAAA;AAAA,UAC/B;AAAA,SACF;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,iBAAiB,QAAQ,CAAA,CAAA;AAAA,QACpC,GAAG,SAAA;AAAA,QAEJ,0BAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAU,KAAA,EAAO,WAAA,EAAa,SAAS,WAAA,EAAa;AAAA;AAAA,KACjE,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AAKhB,IAAM,KAAA,GAAQ;ACtEd,SAAS,QAAA,GAA2B;AACzC,EAAA,MAAM,OAAA,GAAgB0H,mBAAW,YAAY,CAAA;AAC7C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,gDAAgD,CAAA;AAAA,EAClE;AACA,EAAA,OAAO,OAAA;AACT;ACNO,IAAM,kBAAA,GACLC,OAAA,CAAA,aAAA,CAAuC,EAAE;AAE1C,IAAM,qBAAA,GAAwB,MAC7BA,OAAA,CAAA,UAAA,CAAW,kBAAkB;AAK9B,IAAM,WAAA,GAAoBA,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASC,YAAAA,CACP;AAAA,IACE,GAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,KAAA,GAAQ,UAAA;AAAA,IACR,OAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,aAAA,GAAsBD,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,CAAE,MAAA;AAAA,MAC/CA,OAAA,CAAA;AAAA,KACR;AAEA,IAAA,MAAM,YAAY,GAAA,KAAQ,MAAA,IAAa,GAAA,GAAM,CAAA,IAAK,cAAc,MAAA,GAAS,GAAA;AACzE,IAAA,MAAM,kBAAkB,SAAA,GACpB,aAAA,CAAc,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAC1B,aAAA;AACJ,IAAA,MAAM,WAAA,GAAc,SAAA,GAAY,aAAA,CAAc,MAAA,GAAS,GAAA,GAAM,CAAA;AAE7D,IAAA,MAAM,UAAA,GAAa,eAAA,CAAgB,MAAA,IAAU,WAAA,GAAc,IAAI,CAAA,GAAI,CAAA,CAAA;AAEnE,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO,EAAE,IAAA,EAAM,KAAA,EAAM,CAAA;AAAA,MACrB,CAAC,MAAM,KAAK;AAAA,KACd;AAEA,IAAA,uBACE3H,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,iBAAA,EAAmB,SAAS,CAAA;AAAA,QAClD,IAAA,EAAK,OAAA;AAAA,QACL,KAAA,EAAO;AAAA,UACL,GAAI,YAAY,MAAA,GACX;AAAA,YACC,6BACE,OAAO,OAAA,KAAY,QAAA,GAAW,CAAA,EAAG,OAAO,CAAA,EAAA,CAAA,GAAO;AAAA,cAEnD,EAAC;AAAA,UACL,GAAG;AAAA,SACL;AAAA,QACC,GAAG,SAAA;AAAA,QAEJ,0BAAA4C,IAAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,OAAO,YAAA,EACjC,QAAA,EAAA;AAAA,UAAA,eAAA,CAAgB,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,KAAU;AACrC,YAAA,MAAM,OAAA,GAAU,KAAA;AAGhB,YAAA,MAAM,UAAA,GAAkC;AAAA,cACtC,QAAQ,UAAA,GAAa,KAAA;AAAA,cACrB,GAAI,OAAA,CAAQ,KAAA,EAAO,KAAA,IAAS;AAAC,aAC/B;AACA,YAAA,OAAa+E,qBAAa,OAAA,EAAS;AAAA,cACjC,GAAA,EAAK,QAAQ,GAAA,IAAO,KAAA;AAAA,cACpB,KAAA,EAAO;AAAA,aACR,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,UACA,WAAA,GAAc,qBACb/E,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,UAAA;AAAA,gBACT,WAAA;AAAA,gBACA,cAAc,IAAI,CAAA,CAAA;AAAA,gBAClB,cAAc,KAAK,CAAA,CAAA;AAAA,gBACnB;AAAA,eACF;AAAA,cACA,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAE;AAAA,cACnB,YAAA,EAAY,IAAI,WAAW,CAAA,OAAA,CAAA;AAAA,cAC5B,QAAA,EAAA;AAAA,gBAAA,GAAA;AAAA,gBACG;AAAA;AAAA;AAAA;AACJ,SAAA,EAEJ;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AClFnB,IAAM,aAAA,GAAsBiF,sBAAyC,IAAI;AAEzE,IAAM,gBAAA,GAAmB,MACxBA,OAAA,CAAA,UAAA,CAAW,aAAa;AAMzB,SAAS,YAAY,IAAA,EAAuB;AACjD,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,EAAA;AAC9C,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AAErB,EAAA,MAAM,QAAQ,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,CAAE,OAAO,OAAO,CAAA;AACpD,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAE/B,EAAA,MAAM,SAAA,GAAY,MAAM,CAAC,CAAA;AACzB,EAAA,IAAI,CAAC,WAAW,OAAO,EAAA;AAEvB,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA;AAClC,IAAA,OAAO,MAAM,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA,CAAE,aAAY,GAAI,EAAA;AAAA,EAC7C;AAEA,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AACvC,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AAEtB,EAAA,MAAM,YAAY,KAAA,CAAM,IAAA,CAAK,SAAS,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AAC9C,EAAA,MAAM,WAAW,KAAA,CAAM,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAC,CAAA,IAAK,EAAA;AAC5C,EAAA,OAAA,CAAQ,SAAA,GAAY,UAAU,WAAA,EAAY;AAC5C;AAKA,SAAS,iBAAA,GAAoB;AAC3B,EAAA,uBACE7H,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAM,KAAA;AAAA,MACN,MAAA,EAAO,KAAA;AAAA,MACP,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MAEV,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,+GAAA,EAAgH;AAAA;AAAA,GAC1H;AAEJ;AAKO,IAAM,WAAA,GAAoB6H,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASC,YAAAA,CACP,EAAE,GAAA,EAAK,QAAQ,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,OAAA,GAAU,OAAO,MAAA,EAAQ,OAAA,EAAS,GAAG,SAAA,IAC3E,GAAA,EACA;AACA,IAAA,MAAM,UAAU,gBAAA,EAAiB;AACjC,IAAA,MAAM,WAAA,GAAc,OAAA,EAAS,WAAA,KAAgB,GAAA,GAAM,SAAA,GAAY,OAAA,CAAA;AAE/D,IAAA,MAAM,UAAA,GAAmBD,OAAA,CAAA,WAAA;AAAA,MACvB,CAAC,KAAA,KAAyD;AACxD,QAAA,OAAA,EAAS,eAAe,QAAQ,CAAA;AAChC,QAAA,MAAA,GAAS,KAAK,CAAA;AAAA,MAChB,CAAA;AAAA,MACA,CAAC,SAAS,MAAM;AAAA,KAClB;AAEA,IAAA,MAAM,WAAA,GAAoBA,OAAA,CAAA,WAAA;AAAA,MACxB,CAAC,KAAA,KAAyD;AACxD,QAAA,OAAA,EAAS,eAAe,OAAO,CAAA;AAC/B,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACA,CAAC,SAAS,OAAO;AAAA,KACnB;AAEA,IAAA,IAAI,WAAA,KAAgB,OAAA,IAAW,CAAC,GAAA,EAAK;AACnC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,YAAA,GAAe,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA;AAC7D,IAAA,MAAM,UAAA,GAAkC;AAAA,MACtC,OAAA,EAAS,WAAA,KAAgB,QAAA,GAAW,CAAA,GAAI,CAAA;AAAA,MACxC,GAAG;AAAA,KACL;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE7H,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,SAAA,EAAW,YAAA;AAAA,UACX,KAAA,EAAO,UAAA;AAAA,UACN,GAAI;AAAA;AAAA,OACP;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,GAAA;AAAA,QACA,MAAA;AAAA,QACA,KAAK,GAAA,IAAO,EAAA;AAAA,QACZ,SAAA,EAAW,YAAA;AAAA,QACX,KAAA,EAAO,UAAA;AAAA,QACP,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACR,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,cAAA,GAAuB6H,OAAA,CAAA,UAAA,CAGlC,SAASE,eAAAA,CACT,EAAE,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,OAAA,GAAU,KAAA,EAAO,GAAG,SAAA,IACpD,GAAA,EACA;AACA,EAAA,MAAM,UAAU,gBAAA,EAAiB;AACjC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUF,OAAA,CAAA,QAAA,CAAS,YAAY,MAAS,CAAA;AAEtE,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,OAAA,KAAY,MAAA,IAAa,OAAA,GAAU,CAAA,EAAG;AACxC,MAAA,MAAM,QAAQ,UAAA,CAAW,MAAM,YAAA,CAAa,IAAI,GAAG,OAAO,CAAA;AAC1D,MAAA,OAAO,MAAM,aAAa,KAAK,CAAA;AAAA,IACjC;AACA,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,WAAA,KAAgB,QAAA,EAAU;AAC/C,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,qBAAA,EAAuB,SAAS,CAAA;AAEnE,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE7H,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,eAAA;AAAA,QACV,GAAI,SAAA;AAAA,QAEJ;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,IAAC,MAAA,EAAA,EAAK,GAAA,EAAU,WAAW,eAAA,EAAkB,GAAG,WAC7C,QAAA,EACH,CAAA;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,WAAA,GAAoB6H,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASG,YAAAA,CACP;AAAA,IACE,MAAA,GAAS,QAAA;AAAA,IACT,SAAA,GAAY,YAAA;AAAA,IACZ,SAAA;AAAA,IACA,OAAA,GAAU,KAAA;AAAA,IACV,YAAA,EAAc,SAAA;AAAA,IACd,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,YAAA,GAAe,UAAA;AAAA,MACnB,kBAAA;AAAA,MACA,qBAAqB,MAAM,CAAA,CAAA;AAAA,MAC3B,qBAAqB,SAAS,CAAA,CAAA;AAAA,MAC9B;AAAA,KACF;AAEA,IAAA,MAAM,eAAA,GAAkB,SAAA,IAAa,CAAA,QAAA,EAAW,MAAM,CAAA,CAAA;AAEtD,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEhI,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,SAAA,EAAW,YAAA;AAAA,UACX,IAAA,EAAK,QAAA;AAAA,UACL,YAAA,EAAY,eAAA;AAAA,UACX,GAAI;AAAA;AAAA,OACP;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,YAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,eAAA;AAAA,QACX,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAK1B,IAAM,UAAA,GAAmB6H,OAAA,CAAA,UAAA,CAAwC,SAAS,MAAA,CACxE;AAAA,EACE,GAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,eAAe,qBAAA,EAAsB;AAC3C,EAAA,MAAM,IAAA,GAAmB,QAAA,IAAY,YAAA,CAAa,IAAA,IAAQ,IAAA;AAC1D,EAAA,MAAM,KAAA,GAAqB,SAAA,IAAa,YAAA,CAAa,KAAA,IAAS,UAAA;AAE9D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAUA,OAAA,CAAA,QAAA;AAAA,IAC1C,MAAM,SAAA,GAAY;AAAA,GACpB;AAEA,EAAMA,kBAAU,MAAM;AACpB,IAAA,cAAA,CAAe,GAAA,GAAM,YAAY,OAAO,CAAA;AAAA,EAC1C,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,IACzB,OAAO;AAAA,MACL,IAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,KAAA,EAAO,WAAW;AAAA,GAC3B;AAEA,EAAA,MAAM,QAAA,GAAW,YAAY,IAAI,CAAA;AACjC,EAAA,MAAM,iBAAA,GAAoB,aAAa,GAAA,IAAO,IAAA;AAE9C,EAAA,MAAM,WAAA,GAAc,UAAA;AAAA,IAClB,WAAA;AAAA,IACA,cAAc,IAAI,CAAA,CAAA;AAAA,IAClB,cAAc,KAAK,CAAA,CAAA;AAAA,IACnB;AAAA,GACF;AAEA,EAAA,MAAM,qBAA2D,EAAC;AAClE,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,kBAAA,CAAmB,IAAA,GAAO,KAAA;AAC1B,IAAA,kBAAA,CAAmB,YAAY,CAAA,GAAI,iBAAA;AAAA,EACrC;AAGA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE7H,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC7B,QAAA,kBAAAA,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,SAAA,EAAW,WAAA;AAAA,UACV,GAAG,kBAAA;AAAA,UACH,GAAI,SAAA;AAAA,UAEJ;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC7B,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACV,GAAG,kBAAA;AAAA,QACH,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AAGA,EAAA,MAAM,eAAA,GACJ,aACC,QAAA,GACC,QAAA,GACE,OACF,IAAA,mBAEAA,IAAC,iBAAA,EAAA,EAAkB,CAAA,CAAA;AAGvB,EAAA,MAAM,OAAA,mBACJ4C,IAAAA,CAAAkB,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,GAAA,IAAO,WAAA,KAAgB,2BACtB9D,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,MAAA;AAAA,QACA,GAAA,EAAK,OAAO,IAAA,IAAQ,EAAA;AAAA,QACpB,MAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,IAED,WAAA,KAAgB,QAAA,oBACfA,GAAAA,CAAC,kBAAgB,QAAA,EAAA,eAAA,EAAgB;AAAA,GAAA,EAErC,CAAA;AAGF,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEA,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC7B,QAAA,kBAAAA,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,WAAA;AAAA,QACV,GAAG,kBAAA;AAAA,QACH,GAAI,SAAA;AAAA,QAEJ,QAAA,EAAA;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC7B,QAAA,kBAAAA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,WAAA;AAAA,MACV,GAAG,kBAAA;AAAA,MACH,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ,CAAC,CAAA;AAED,UAAA,CAAW,WAAA,GAAc,QAAA;AAalB,IAAMiI,OAAAA,GAAS;AACtBA,OAAAA,CAAO,IAAA,GAAO,UAAA;AACdA,OAAAA,CAAO,KAAA,GAAQ,WAAA;AACfA,OAAAA,CAAO,QAAA,GAAW,cAAA;AAClBA,OAAAA,CAAO,KAAA,GAAQ,WAAA;AACfA,OAAAA,CAAO,KAAA,GAAQ,WAAA;AAER,IAAM,UAAA,GAAa;AClYnB,IAAM,gBAAA,GACLC,sBAA4C,IAAI;AAEjD,IAAM,sBAAsB,MAA6B;AAC9D,EAAA,MAAM,OAAA,GAAgBA,mBAAW,gBAAgB,CAAA;AACjD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,oBAAA,GACLA,sBAAgD,IAAI;AAErD,IAAM,0BAA0B,MAAiC;AACtE,EAAA,MAAM,OAAA,GAAgBA,mBAAW,oBAAoB,CAAA;AACrD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAKO,IAAM,aAAA,GAAsBA,OAAA,CAAA,UAAA;AAAA,EACjC,SAASC,cAAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,IAAA,MAAM;AAAA,MACJ,IAAA,GAAO,QAAA;AAAA,MACP,OAAA,GAAU,SAAA;AAAA,MACV,UAAA,GAAa,KAAA;AAAA,MACb,SAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA,EAAO,MAAA;AAAA,MACP,YAAA,EAAc,aAAA;AAAA,MACd,aAAA,EAAe,cAAA;AAAA,MACf,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,aAAa,IAAA,KAAS,UAAA;AAC5B,IAAA,MAAM,WAAA,GACJ,CAAC,UAAA,IAAc,aAAA,IAAiB,QAAQ,OAAA,CAAQ,KAAA,CAAM,WAAW,CAAA,GAAI,KAAA;AAEvE,IAAA,MAAM,QAAA,GAAW,EAAE,GAAG,SAAA,EAAU;AAChC,IAAA,OAAQ,QAAA,CAAuC,WAAA;AAG/C,IAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,oBAAA,CAA+B;AAAA,MACzE,KAAA,EAAO,UAAA,GAAc,KAAA,CAAM,KAAA,GAAiC,MAAA;AAAA,MAC5D,cAAc,UAAA,GACT,KAAA,CAAM,YAAA,IAAyC,KAChD,EAAC;AAAA,MACL,QAAA,EAAU,UAAA,GACL,KAAA,CAAM,aAAA,GACP;AAAA,KACL,CAAA;AAED,IAAA,MAAM,kBAAA,GAA2BD,OAAA,CAAA,WAAA;AAAA,MAC/B,CAAC,GAAA,KAA4B;AAC3B,QAAA,IAAI,CAAC,UAAA,IAAc,eAAA,IAAmB,SAAS,OAAO,KAAA,CAAM,kBAAkB,UAAA,EAAY;AACxF,UAAC,KAAA,CAAM,aAAA,CAAsC,GAAA,IAAO,EAAE,CAAA;AAAA,QACxD;AAAA,MACF,CAAA;AAAA,MACA,CAAC,YAAY,KAAK;AAAA,KACpB;AAGA,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,oBAAA,CAEpC;AAAA,MACA,KAAA,EAAO,CAAC,UAAA,GAAc,KAAA,CAAM,KAAA,GAA+B,MAAA;AAAA,MAC3D,YAAA,EAAc,CAAC,UAAA,GACV,KAAA,CAAM,YAAA,GACP,MAAA;AAAA,MACJ,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,cAAA,GAAuBA,gBAAQ,MAAM;AACzC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,GAAI,iBAAiB,EAAC;AAAA,MAC3D;AACA,MAAA,OAAO,WAAA,GAAc,CAAC,WAAW,CAAA,GAAI,EAAC;AAAA,IACxC,CAAA,EAAG,CAAC,UAAA,EAAY,cAAA,EAAgB,WAAW,CAAC,CAAA;AAE5C,IAAA,MAAM,UAAA,GAAmBA,OAAA,CAAA,WAAA;AAAA,MACvB,CAAC,SAAA,KAAsB;AACrB,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,MAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,cAAc,CAAA,GAAI,iBAAiB,EAAC;AAClE,UAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,QAAA,CAAS,SAAS,IACnC,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,MAAM,SAAS,CAAA,GACrC,CAAC,GAAG,SAAS,SAAS,CAAA;AAC1B,UAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACxB,CAAA,MAAO;AACL,UAAA,MAAM,gBAAgB,WAAA,KAAgB,SAAA;AACtC,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,IAAI,WAAA,EAAa;AACf,cAAA,cAAA,CAAe,EAAE,CAAA;AAAA,YACnB;AAAA,UACF,CAAA,MAAO;AACL,YAAA,cAAA,CAAe,SAAS,CAAA;AAAA,UAC1B;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA;AAAA,QACE,UAAA;AAAA,QACA,cAAA;AAAA,QACA,iBAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,eAAA,GAAwBA,eAA8B,IAAI,CAAA;AAChE,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAA,EAAK,eAAe,CAAA;AAEnD,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA,EAAS;AAAA,OACX,CAAA;AAAA,MACA,CAAC,IAAA,EAAM,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,gBAAgB,UAAU;AAAA,KACrE;AAEA,IAAA,uBACElI,GAAAA,CAAC,gBAAA,CAAiB,UAAjB,EAA0B,KAAA,EAAO,cAChC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAW,UAAA;AAAA,UACT,cAAA;AAAA,UACA,iBAAiB,OAAO,CAAA,CAAA;AAAA,UACxB;AAAA,SACF;AAAA,QACC,GAAG,QAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,WAAA;AAKrB,IAAM,aAAA,GAAsBkI,OAAA,CAAA,UAAA;AAAA,EACjC,SAASE,cAAAA,CACP,EAAE,KAAA,EAAO,UAAA,EAAY,gBAAA,GAAmB,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EACjF,GAAA,EACA;AACA,IAAA,MAAM,EAAE,cAAA,EAAgB,UAAA,EAAY,cAAA,KAAmB,mBAAA,EAAoB;AAC3E,IAAA,MAAM,MAAA,GAAS,cAAA,CAAe,QAAA,CAAS,KAAK,CAAA;AAC5C,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,gBAAA,IAAoB,cAAc,CAAA;AAE7D,IAAA,MAAM,cAAoBF,OAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,SAAA,GAAY,CAAA,qBAAA,EAAwB,KAAK,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAC9D,IAAA,MAAM,OAAA,GAAU,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAE1D,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,KAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY,WAAW,OAAO;AAAA,KAChD;AAEA,IAAA,uBACElI,GAAAA,CAAC,oBAAA,CAAqB,UAArB,EAA8B,KAAA,EAAO,cACpC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,QACrD,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,QAC9B,eAAA,EAAe,aAAa,EAAA,GAAK,MAAA;AAAA,QAChC,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,eAAA,GAAwBkI,OAAA,CAAA,UAAA,CAGnC,SAASG,gBAAAA,CACT,EAAE,KAAA,GAAQ,CAAA,EAAG,SAAA,EAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAC/C,GAAA,EACA;AACA,EAAA,MAAM,UAAA,GAAa,IAAI,KAAK,CAAA,CAAA;AAE5B,EAAA,uBACErI,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA;AAAA,MACtD,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,eAAA,CAAgB,WAAA,GAAc,kBAAA;AAKvB,IAAM,gBAAA,GAAyBkI,OAAA,CAAA,UAAA,CAGpC,SAASI,iBAAAA,CACT,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,GAAG,SAAA,IAC/D,GAAA,EACA;AACA,EAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAQ,GAAI,mBAAA,EAAoB;AACpD,EAAA,MAAM,EAAE,KAAA,EAAO,MAAA,EAAQ,YAAY,SAAA,EAAW,OAAA,KAC5C,uBAAA,EAAwB;AAE1B,EAAA,MAAM,WAAA,GAAoBJ,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,KAAA,KAA+C;AAC9C,MAAA,OAAA,GAAU,KAAK,CAAA;AACf,MAAA,IAAI,KAAA,CAAM,oBAAoB,UAAA,EAAY;AAC1C,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,UAAA,EAAY,UAAA,EAAY,KAAK;AAAA,GACzC;AAEA,EAAA,MAAM,aAAA,GAAsBA,OAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,KAAA,KAAkD;AACjD,MAAA,SAAA,GAAY,KAAK,CAAA;AACjB,MAAA,IAAI,MAAM,gBAAA,EAAkB;AAE5B,MAAA,MAAM,SAAS,OAAA,CAAQ,OAAA;AACvB,MAAA,IAAI,CAAC,MAAA,EAAQ;AAEb,MAAA,MAAM,WAAW,KAAA,CAAM,IAAA;AAAA,QACrB,MAAA,CAAO,gBAAA;AAAA,UACL;AAAA;AACF,OACF;AACA,MAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AACzD,MAAA,IAAI,YAAA,KAAiB,EAAA,IAAM,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAElD,MAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,SAAA,GAAA,CAAa,YAAA,GAAe,CAAA,IAAK,QAAA,CAAS,MAAA;AAChD,QAAA,QAAA,CAAS,SAAS,GAAG,KAAA,EAAM;AAAA,MAC7B,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,SAAA,EAAW;AAClC,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,MAAM,SAAA,GAAA,CAAa,YAAA,GAAe,CAAA,GAAI,QAAA,CAAS,UAAU,QAAA,CAAS,MAAA;AAClE,QAAA,QAAA,CAAS,SAAS,GAAG,KAAA,EAAM;AAAA,MAC7B,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,MAAA,EAAQ;AAC/B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,QAAA,CAAS,CAAC,GAAG,KAAA,EAAM;AAAA,MACrB,CAAA,MAAA,IAAW,KAAA,CAAM,GAAA,KAAQ,KAAA,EAAO;AAC9B,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,EAAG,KAAA,EAAM;AAAA,MACvC;AAAA,IACF,CAAA;AAAA,IACA,CAAC,WAAW,OAAO;AAAA,GACrB;AAEA,EAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,uBAAA,EAAyB,SAAS,CAAA;AAEpE,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACElI,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,SAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAe,MAAA;AAAA,QACf,eAAA,EAAe,OAAA;AAAA,QACf,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,QAC9B,eAAA,EAAe,aAAa,EAAA,GAAK,MAAA;AAAA,QACjC,SAAA,EAAW,cAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACV,GAAI,SAAA;AAAA,QAEJ;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,SAAA;AAAA,MACJ,IAAA,EAAK,QAAA;AAAA,MACL,eAAA,EAAe,MAAA;AAAA,MACf,eAAA,EAAe,OAAA;AAAA,MACf,QAAA,EAAU,UAAA;AAAA,MACV,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,MAC9B,eAAA,EAAe,aAAa,EAAA,GAAK,MAAA;AAAA,MACjC,SAAA,EAAW,cAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACV,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAKxB,IAAM,gBAAA,GAAyBkI,OAAA,CAAA,UAAA,CAGpC,SAASK,iBAAAA,CAAiB,EAAE,WAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACtE,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAY,SAAA,EAAW,OAAA,KAAY,uBAAA,EAAwB;AAE3E,EAAA,uBACEvI,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAI,OAAA;AAAA,MACJ,IAAA,EAAK,QAAA;AAAA,MACL,iBAAA,EAAiB,SAAA;AAAA,MACjB,QAAQ,CAAC,MAAA;AAAA,MACT,YAAA,EAAY,SAAS,MAAA,GAAS,QAAA;AAAA,MAC9B,eAAA,EAAe,aAAa,EAAA,GAAK,MAAA;AAAA,MACjC,SAAA,EAAW,UAAA,CAAW,uBAAA,EAAyB,SAAS,CAAA;AAAA,MACvD,GAAG,SAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAuB,QAAA,EAAS;AAAA;AAAA,GACjD;AAEJ,CAAC;AAED,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAKxB,IAAM,aAAA,GAAsBkI,mBAGjC,SAASM,cAAAA,CAAc,EAAE,SAAA,EAAW,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACzD,EAAA,uBACExI,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,GAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,MACrD,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAU,OAAA;AAAA,MACT,GAAG,SAAA;AAAA,MAEJ,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AAAA,GACpC;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,gBAAA;AAcrB,IAAM,SAAA,GAAY;AACzB,SAAA,CAAU,IAAA,GAAO,aAAA;AACjB,SAAA,CAAU,IAAA,GAAO,aAAA;AACjB,SAAA,CAAU,MAAA,GAAS,eAAA;AACnB,SAAA,CAAU,OAAA,GAAU,gBAAA;AACpB,SAAA,CAAU,OAAA,GAAU,gBAAA;AACpB,SAAA,CAAU,IAAA,GAAO,aAAA;ACjZV,IAAM,WAAA,GAAoByI,sBAAuC,IAAI;AAErE,SAAS,cAAA,GAAmC;AACjD,EAAA,MAAM,OAAA,GAAgBA,mBAAW,WAAW,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,sBAAsB,QAAA,EAA+C;AAC5E,EAAA,IAAI,KAAA;AACJ,EAAMA,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AAC1C,IAAA,IAAI,KAAA,IAAS,CAAOA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAC3C,IAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,IAAA,IACE,KAAA,IACA,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IACvB,CAAC,KAAA,CAAM,UAAA,IACP,CAAC,KAAA,CAAM,QAAA,EACP;AACA,MAAA,KAAA,GAAQ,KAAA,CAAM,KAAA;AACd,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,IAAS,MAAM,QAAA,EAAU;AAC3B,MAAA,KAAA,GAAQ,qBAAA,CAAsB,MAAM,QAA2B,CAAA;AAAA,IACjE;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,KAAA;AACT;AAKO,IAAM,QAAA,GAAiBA,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASC,SAAAA,CACP;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,YAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA,GAAc,YAAA;AAAA,IACd,OAAA,GAAU,MAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,cAAA,GAAiB,WAAA;AAAA,IACjB,MAAA,GAAS,KAAA;AAAA,IACT,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,cAAA,GAAuBD,gBAAQ,MAAM;AACzC,MAAA,IAAI,YAAA,KAAiB,QAAW,OAAO,YAAA;AACvC,MAAA,OAAO,qBAAA,CAAsB,QAAQ,CAAA,IAAK,EAAA;AAAA,IAC5C,CAAA,EAAG,CAAC,YAAA,EAAc,QAAQ,CAAC,CAAA;AAE3B,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,oBAAA,CAA6B;AAAA,MACrE,KAAA,EAAO,SAAA;AAAA,MACP,YAAA,EAAc,cAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,cAAoBA,OAAA,CAAA,KAAA,EAAM;AAChC,IAAA,MAAM,MAAA,GAAeA,OAAA,CAAA,OAAA;AAAA,MACnB,MAAM,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAAA,MAClC,CAAC,WAAW;AAAA,KACd;AAEA,IAAA,MAAM,OAAA,GAAgBA,eAA8B,IAAI,CAAA;AAExD,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,aAAA;AAAA,QACA,gBAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,IAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA;AAAA,QACE,aAAA;AAAA,QACA,gBAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,IAAA;AAAA,QACA,cAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,uBACEzI,GAAAA,CAAC,WAAA,CAAY,UAAZ,EAAqB,KAAA,EAAO,cAC3B,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA;AAAA,UACT,SAAA;AAAA,UACA,YAAY,WAAW,CAAA,CAAA;AAAA,UACvB,YAAY,OAAO,CAAA,CAAA;AAAA,UACnB,YAAY,IAAI,CAAA,CAAA;AAAA,UAChB;AAAA,SACF;AAAA,QACA,kBAAA,EAAkB,WAAA;AAAA,QACjB,GAAG,QAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,MAAA;AAKhB,IAAM,QAAA,GAAiByI,OAAA,CAAA,UAAA;AAAA,EAC5B,SAASE,SAAAA,CACP,EAAE,YAAA,EAAc,SAAA,EAAW,WAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAC7D,GAAA,EACA;AACA,IAAA,MAAM,EAAE,WAAA,EAAa,OAAA,EAAQ,GAAI,cAAA,EAAe;AAChD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAA,EAAK,OAAO,CAAA;AAE3C,IAAA,uBACE3I,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAK,SAAA;AAAA,QACL,kBAAA,EAAkB,WAAA;AAAA,QAClB,YAAA,EAAY,SAAA;AAAA,QACZ,kBAAA,EAAkB,WAAA;AAAA,QAClB,SAAA,EAAW,UAAA,CAAW,eAAA,EAAiB,SAAS,CAAA;AAAA,QAC/C,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,WAAA;AAKhB,IAAM,WAAA,GAAoByI,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASG,YAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,OAAA,GAAU,KAAA;AAAA,IACV,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM;AAAA,MACJ,aAAA;AAAA,MACA,gBAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACE,cAAA,EAAe;AAEnB,IAAA,MAAM,aAAa,aAAA,KAAkB,KAAA;AACrC,IAAA,MAAM,SAAA,GAAY,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC3C,IAAA,MAAM,OAAA,GAAU,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAG9C,IAAMH,kBAAU,MAAM;AACpB,MAAA,IAAI,CAAC,aAAA,IAAiB,CAAC,UAAA,EAAY;AACjC,QAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,MACxB;AAAA,IACF,GAAG,CAAC,aAAA,EAAe,KAAA,EAAO,UAAA,EAAY,gBAAgB,CAAC,CAAA;AAEvD,IAAA,MAAM,WAAA,GAAoBA,OAAA,CAAA,WAAA;AAAA,MACxB,CAAC,CAAA,KAA2C;AAC1C,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA;AAAA,QACF;AACA,QAAA,OAAA,GAAU,CAAC,CAAA;AACX,QAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,UAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,QACxB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,UAAA,EAAY,OAAA,EAAS,gBAAA,EAAkB,KAAK;AAAA,KAC/C;AAEA,IAAA,MAAM,aAAA,GAAsBA,OAAA,CAAA,WAAA;AAAA,MAC1B,CAAC,CAAA,KAA8C;AAC7C,QAAA,SAAA,GAAY,CAAC,CAAA;AACb,QAAA,IAAI,EAAE,gBAAA,EAAkB;AAExB,QAAA,MAAM,IAAA,GAAO,CAAA,CAAE,aAAA,CAAc,OAAA,CAAQ,kBAAkB,CAAA;AACvD,QAAA,IAAI,CAAC,IAAA,EAAM;AAEX,QAAA,MAAM,WAAW,KAAA,CAAM,IAAA;AAAA,UACrB,IAAA,CAAK,gBAAA;AAAA,YACH;AAAA;AACF,SACF;AAEA,QAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AAE3B,QAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,CAAA,CAAE,aAAa,CAAA;AACrD,QAAA,IAAI,iBAAiB,EAAA,EAAI;AAEzB,QAAA,IAAI,SAAA,GAAY,YAAA;AAChB,QAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,QAAA,MAAM,eAAe,WAAA,KAAgB,YAAA;AACrC,QAAA,MAAM,aAAa,WAAA,KAAgB,UAAA;AAEnC,QAAA,QAAQ,EAAE,GAAA;AAAK,UACb,KAAK,YAAA;AACH,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,SAAA,GAAA,CAAa,YAAA,GAAe,KAAK,QAAA,CAAS,MAAA;AAC1C,cAAA,UAAA,GAAa,IAAA;AAAA,YACf;AACA,YAAA;AAAA,UACF,KAAK,WAAA;AACH,YAAA,IAAI,YAAA,EAAc;AAChB,cAAA,SAAA,GAAA,CAAa,YAAA,GAAe,CAAA,GAAI,QAAA,CAAS,MAAA,IAAU,QAAA,CAAS,MAAA;AAC5D,cAAA,UAAA,GAAa,IAAA;AAAA,YACf;AACA,YAAA;AAAA,UACF,KAAK,WAAA;AACH,YAAA,IAAI,UAAA,EAAY;AACd,cAAA,SAAA,GAAA,CAAa,YAAA,GAAe,KAAK,QAAA,CAAS,MAAA;AAC1C,cAAA,UAAA,GAAa,IAAA;AAAA,YACf;AACA,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,IAAI,UAAA,EAAY;AACd,cAAA,SAAA,GAAA,CAAa,YAAA,GAAe,CAAA,GAAI,QAAA,CAAS,MAAA,IAAU,QAAA,CAAS,MAAA;AAC5D,cAAA,UAAA,GAAa,IAAA;AAAA,YACf;AACA,YAAA;AAAA,UACF,KAAK,MAAA;AACH,YAAA,SAAA,GAAY,CAAA;AACZ,YAAA,UAAA,GAAa,IAAA;AACb,YAAA;AAAA,UACF,KAAK,KAAA;AACH,YAAA,SAAA,GAAY,SAAS,MAAA,GAAS,CAAA;AAC9B,YAAA,UAAA,GAAa,IAAA;AACb,YAAA;AAAA,UACF,KAAK,OAAA;AAAA,UACL,KAAK,GAAA;AACH,YAAA,IAAI,CAAC,UAAA,EAAY;AACf,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,YACxB;AACA,YAAA;AAAA,UACF;AACE,YAAA;AAAA;AAGJ,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,MAAM,aAAA,GAAgB,SAAS,SAAS,CAAA;AACxC,UAAA,IAAI,aAAA,EAAe;AACjB,YAAA,aAAA,CAAc,KAAA,EAAM;AACpB,YAAA,IAAI,mBAAmB,WAAA,EAAa;AAClC,cAAA,MAAM,WAAA,GAAc,aAAA,CAAc,YAAA,CAAa,YAAY,CAAA;AAC3D,cAAA,IAAI,WAAA,EAAa;AACf,gBAAA,gBAAA,CAAiB,WAAW,CAAA;AAAA,cAC9B;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA;AAAA,QACE,SAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA;AAAA,QACA,gBAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA;AAE/D,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEzI,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,EAAA,EAAI,SAAA;AAAA,UACJ,IAAA,EAAK,KAAA;AAAA,UACL,eAAA,EAAe,UAAA;AAAA,UACf,eAAA,EAAe,OAAA;AAAA,UACf,QAAA,EAAU,aAAa,CAAA,GAAI,EAAA;AAAA,UAC3B,YAAA,EAAY,aAAa,QAAA,GAAW,UAAA;AAAA,UACpC,eAAA,EAAe,aAAa,EAAA,GAAK,MAAA;AAAA,UACjC,YAAA,EAAY,KAAA;AAAA,UACZ,kBAAA,EAAkB,WAAA;AAAA,UAClB,SAAA,EAAW,cAAA;AAAA,UACX,OAAA,EAAS,WAAA;AAAA,UACT,SAAA,EAAW,aAAA;AAAA,UACV,GAAI,SAAA;AAAA,UAEJ;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,SAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAK,KAAA;AAAA,QACL,eAAA,EAAe,UAAA;AAAA,QACf,eAAA,EAAe,OAAA;AAAA,QACf,QAAA,EAAU,aAAa,CAAA,GAAI,EAAA;AAAA,QAC3B,QAAA,EAAU,UAAA;AAAA,QACV,YAAA,EAAY,aAAa,QAAA,GAAW,UAAA;AAAA,QACpC,eAAA,EAAe,aAAa,EAAA,GAAK,MAAA;AAAA,QACjC,YAAA,EAAY,KAAA;AAAA,QACZ,kBAAA,EAAkB,WAAA;AAAA,QAClB,SAAA,EAAW,cAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,WAAA,GAAoByI,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASI,aAAY,EAAE,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACtE,IAAA,MAAM,EAAE,aAAA,EAAe,WAAA,EAAa,MAAA,EAAQ,MAAA,KAAW,cAAA,EAAe;AAEtE,IAAA,MAAM,aAAa,aAAA,KAAkB,KAAA;AACrC,IAAA,MAAM,SAAA,GAAY,CAAA,OAAA,EAAU,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAC3C,IAAA,MAAM,OAAA,GAAU,CAAA,YAAA,EAAe,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAE9C,IAAA,IAAI,MAAA,IAAU,CAAC,UAAA,EAAY;AACzB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,uBACE7I,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,OAAA;AAAA,QACJ,IAAA,EAAK,UAAA;AAAA,QACL,iBAAA,EAAiB,SAAA;AAAA,QACjB,QAAA,EAAU,CAAA;AAAA,QACV,QAAQ,CAAC,UAAA;AAAA,QACT,YAAA,EAAY,aAAa,QAAA,GAAW,UAAA;AAAA,QACpC,kBAAA,EAAkB,WAAA;AAAA,QAClB,SAAA,EAAW,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA;AAAA,QAClD,GAAG,SAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,aAAA,GAAsByI,mBAGjC,SAASK,cAAAA,CAAc,EAAE,SAAA,EAAW,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACzD,EAAA,uBACE9I,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,MACpD,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AAED,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,IAAA,GAAO,MAAA,CAAO,MAAA,CAAO,QAAA,EAAU;AAAA,EAC1C,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,WAAA;AAAA,EACT,OAAA,EAAS,WAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAC;ACxXD,SAAS,YAAY,IAAA,EAA+B;AAClD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,IAAA;AACrC,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,EAAU,OAAO,OAAO,IAAI,CAAA;AAChD,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,EAAA;AAC9C,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG,OAAO,KAAK,GAAA,CAAI,WAAW,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAC7D,EAAA,IAAU+I,OAAA,CAAA,cAAA,CAAe,IAAI,CAAA,IAAM,IAAA,CAAK,OAAe,QAAA,EAAU;AAC/D,IAAA,OAAO,WAAA,CAAa,IAAA,CAAK,KAAA,CAAc,QAAQ,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,EAAA;AACT;AAEA,SAAS,2BAA2B,QAAA,EAAgD;AAClF,EAAA,MAAM,GAAA,uBAAU,GAAA,EAAoB;AACpC,EAAA,SAAS,KAAK,IAAA,EAAuB;AACnC,IAAMA,OAAA,CAAA,QAAA,CAAS,OAAA,CAAQ,IAAA,EAAM,CAAC,KAAA,KAAU;AACtC,MAAA,IAAI,CAAOA,OAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG;AAClC,MAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,MAAA,IAAI,SAAS,OAAA,IAAW,KAAA,IAAS,OAAO,KAAA,CAAM,UAAU,QAAA,EAAU;AAChE,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,SAAA,IAAa,WAAA,CAAY,MAAM,QAAQ,CAAA;AAC1D,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,KAAA,EAAO,IAAI,CAAA;AAAA,QAC3B;AAAA,MACF;AACA,MAAA,IAAI,KAAA,IAAS,MAAM,QAAA,EAAU;AAC3B,QAAA,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,MACrB;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AACA,EAAA,IAAA,CAAK,QAAQ,CAAA;AACb,EAAA,OAAO,GAAA;AACT;AAEA,IAAM,aAAA,GAAsBA,sBAA4C,IAAI,CAAA;AAErE,SAAS,gBAAA,GAA+E;AAC7F,EAAA,MAAM,OAAA,GAAgBA,mBAAW,aAAa,CAAA;AAC9C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAMO,IAAM,UAAA,GAAmBA,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASC,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,UAAA,IAAc,SAAA,EAAW,QAAA,IAAY,KAAA;AAC9D,IAAA,MAAM,SAAA,GAAY,KAAA,CAAM,SAAA,IAAa,SAAA,EAAW,KAAA,IAAS,KAAA;AACzD,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,UAAA,IAAc,SAAA,EAAW,QAAA,IAAY,KAAA;AAC9D,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,IAAQ,SAAA,EAAW,IAAA;AACtC,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,MAAM,kBAAkB,CAAA;AAAA,MACxB,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEhB,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA,EAAQ,UAAA;AAAA,MACR,WAAA,GAAc,KAAA;AAAA,MACd,YAAA;AAAA,YACAC,MAAA,GAAO,IAAA;AAAA,MACP,OAAA,GAAU,SAAA;AAAA,MACV,WAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY,gBAAA;AAAA,MACZ,SAAA,EAAW,eAAA;AAAA,MACX,UAAA,EAAY,gBAAA;AAAA,MACZ,IAAA,EAAM,YAAA;AAAA,MACN,kBAAA,EAAoB,YAAA;AAAA,MACpB,GAAG;AAAA,KACL,GAAI,KAAA;AAGJ,IAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,oBAAA,CAAyC;AAAA,MACtE,KAAA,EAAO,SAAA;AAAA,MACP,YAAA;AAAA,MACA,QAAA,EAAU,CAAC,IAAA,KAAS;AAClB,QAAA,IAAI,IAAA,KAAS,UAAa,aAAA,EAAe;AACvC,UAAA,aAAA,CAAc,IAAI,CAAA;AAAA,QACpB;AAAA,MACF;AAAA,KACD,CAAA;AAGD,IAAA,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA,GAAI,oBAAA,CAA8B;AAAA,MAC7D,KAAA,EAAO,UAAA;AAAA,MACP,YAAA,EAAc,WAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUF,iBAAwB,IAAI,CAAA;AAClF,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAUA,iBAA8B,MAAM;AAC5E,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,2BAA2B,QAAQ,CAAA;AAAA,MAC5C;AACA,MAAA,2BAAW,GAAA,EAAI;AAAA,IACjB,CAAC,CAAA;AACD,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUA,iBAAmB,MAAM;AAC/D,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,MAAM,IAAA,CAAK,0BAAA,CAA2B,QAAQ,CAAA,CAAE,MAAM,CAAA;AAAA,MAC/D;AACA,MAAA,OAAO,EAAC;AAAA,IACV,CAAC,CAAA;AACD,IAAA,MAAM,CAAC,eAAe,gBAAgB,CAAA,GAAUA,iBAAsB,sBAAM,IAAI,KAAK,CAAA;AAErF,IAAA,MAAM,YAAkBA,OAAA,CAAA,KAAA,EAAM;AAC9B,IAAA,MAAM,YAAkBA,OAAA,CAAA,KAAA,EAAM;AAC9B,IAAA,MAAM,UAAA,GAAmBA,eAAiC,IAAI,CAAA;AAC9D,IAAA,MAAM,UAAA,GAAmBA,eAA8B,IAAI,CAAA;AAG3D,IAAA,MAAM,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,eAAA,KAAoBtD,WAAAA,CAAY;AAAA,MACrE,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,MAAA,EAAQ;AACtB,QAAA,cAAA,CAAe,IAAI,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,SAAA,EAAW,cAAA;AAAA,MACX,oBAAA,EAAsBC,UAAAA;AAAA,MACtB,UAAA,EAAY;AAAA,QACVC,OAAO,CAAC,CAAA;AAAA,QACRC,IAAAA,CAAK,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA;AAAA,QACnBC,KAAAA,CAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA;AAAA,QACpBqD,IAAA,CAAa;AAAA,UACX,KAAA,CAAM,EAAE,KAAA,EAAO,QAAA,EAAS,EAAG;AACzB,YAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,cACrC,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,SAAA,CAAU,KAAK,CAAA,EAAA,CAAA;AAAA,cAC/B,QAAA,EAAU,CAAA,EAAG,KAAA,CAAM,SAAA,CAAU,KAAK,CAAA,EAAA;AAAA,aACnC,CAAA;AAAA,UACH;AAAA,SACD;AAAA;AACH,KACD,CAAA;AAED,IAAA,MAAM,OAAA,GAAUnD,WAAW,eAAA,EAAiB;AAAA,MAC1C,OAAA,EAAS,MAAA;AAAA,MACT,YAAA,EAAc,IAAA;AAAA,MACd,SAAA,EAAW;AAAA,KACZ,CAAA;AAED,IAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,KAAqBE,eAAAA,CAAgB,CAAC,OAAO,CAAC,CAAA;AAGzE,IAAA,MAAM,YAAA,GAAqB8C,OAAA,CAAA,WAAA;AAAA,MACzB,CAAC,OAAA,EAAiB,SAAA,EAAmB,YAAA,KAA2B;AAC9D,QAAA,aAAA,CAAc,CAAC,IAAA,KAAS;AACtB,UAAA,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,KAAM,WAAW,OAAO,IAAA;AAC5C,UAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,UAAA,IAAA,CAAK,GAAA,CAAI,SAAS,SAAS,CAAA;AAC3B,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA;AACD,QAAA,YAAA,CAAa,CAAC,IAAA,KAAU,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,GAAI,IAAA,GAAO,CAAC,GAAG,IAAA,EAAM,OAAO,CAAE,CAAA;AAC3E,QAAA,IAAI,YAAA,EAAc;AAChB,UAAA,gBAAA,CAAiB,CAAC,IAAA,KAAS;AACzB,YAAA,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,CAAA,EAAG,OAAO,IAAA;AAC9B,YAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,YAAA,IAAA,CAAK,IAAI,OAAO,CAAA;AAChB,YAAA,OAAO,IAAA;AAAA,UACT,CAAC,CAAA;AAAA,QACH;AACA,QAAA,OAAO,MAAM;AAAA,QAEb,CAAA;AAAA,MACF,CAAA;AAAA,MACA;AAAC,KACH;AAGA,IAAMA,kBAAU,MAAM;AACpB,MAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACjC,QAAA,MAAM,MAAA,uBAAa,GAAA,EAAoB;AACvC,QAAA,MAAM,UAAoB,EAAC;AAC3B,QAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AACpC,QAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,UAAA,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,KAAA,EAAO,GAAA,CAAI,KAAK,CAAA;AAC/B,UAAA,OAAA,CAAQ,IAAA,CAAK,IAAI,KAAK,CAAA;AACtB,UAAA,IAAI,GAAA,CAAI,QAAA,EAAU,WAAA,CAAY,GAAA,CAAI,IAAI,KAAK,CAAA;AAAA,QAC7C;AACA,QAAA,aAAA,CAAc,MAAM,CAAA;AACpB,QAAA,YAAA,CAAa,OAAO,CAAA;AACpB,QAAA,gBAAA,CAAiB,WAAW,CAAA;AAAA,MAC9B;AAAA,IACF,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,IAAA,MAAM,gBAAgB,KAAA,GAAQ,UAAA,CAAW,GAAA,CAAI,KAAK,KAAK,IAAA,GAAO,IAAA;AAE9D,IAAA,MAAM,QAAA,GAAiBA,OAAA,CAAA,WAAA;AAAA,MACrB,CAAC,OAAA,KAAoB;AACnB,QAAA,aAAA,CAAc,OAAO,CAAA;AAAA,MACvB,CAAA;AAAA,MACA,CAAC,aAAa;AAAA,KAChB;AAEA,IAAA,MAAM,SAAA,GAAkBA,OAAA,CAAA,WAAA;AAAA,MACtB,CAAC,QAAA,KAAsB;AACrB,QAAA,cAAA,CAAe,QAAQ,CAAA;AACvB,QAAA,IAAI,YAAY,KAAA,EAAO;AACrB,UAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,QAC3B;AAAA,MACF,CAAA;AAAA,MACA,CAAC,gBAAgB,KAAK;AAAA,KACxB;AAEA,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,KAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA,EAAQ,QAAQ,MAAM,CAAA;AAAA,QACtB,SAAA;AAAA,QACA,gBAAA;AAAA,QACA,mBAAA;AAAA,cACAE,MAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,eAAA;AAAA,QACA,IAAA,EAAM;AAAA,UACJ,cAAc,IAAA,CAAK,YAAA;AAAA,UACnB,aAAa,IAAA,CAAK;AAAA,SACpB;AAAA,QACA,cAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA;AAAA,QACE,KAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,gBAAA;AAAA,QACAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,YAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA;AAAA,QACA,eAAA;AAAA,QACA,IAAA,CAAK,YAAA;AAAA,QACL,IAAA,CAAK,WAAA;AAAA,QACL,cAAA;AAAA,QACA,iBAAA;AAAA,QACA;AAAA;AACF,KACF;AAGA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,QAAA;AAAA,MACT;AACA,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,uBACErG,IAAAA,CAAAkB,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,0BAAAlB,KAAC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAA5C,GAAAA,CAAC,WAAA,EAAA,EAAY,WAAA,EAAa,WAAA,IAAe,MAAA,EAAW,CAAA;AAAA,4BACpDA,IAAC,UAAA,EAAA,EAAW;AAAA,WAAA,EACd,CAAA;AAAA,0BACAA,GAAAA,CAAC,YAAA,EAAA,EACC,0BAAAA,GAAAA,CAAC,aAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,wBACZ4C,IAAAA,CAAC,cAA2B,KAAA,EAAO,GAAA,CAAI,OAAO,UAAA,EAAY,GAAA,CAAI,YAAY,MAAA,EACxE,QAAA,EAAA;AAAA,4BAAA5C,GAAAA,CAAC,cAAA,EAAA,EAAgB,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,4BAC3BA,IAAC,mBAAA,EAAA,EAAoB;AAAA,WAAA,EAAA,EAFN,GAAA,CAAI,KAGrB,CACD,CAAA,EACH,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,MAEJ;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,uBACEA,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC7B,QAAA,kBAAA4C,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,WAAA,EAAa,SAAS,CAAA;AAAA,QAC5C,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,QACrC,cAAA,EAAc,YAAY,MAAA,GAAS,MAAA;AAAA,QACnC,WAAA,EAAWqG,MAAA;AAAA,QACX,cAAA,EAAc,OAAA;AAAA,QACb,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,aAAA,EAAc;AAAA,UACd,wBACCjJ,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA;AAAA,cACA,OAAO,KAAA,IAAS,EAAA;AAAA,cAChB,QAAA,EAAU,UAAA;AAAA,cACV,QAAA,EAAU,UAAA;AAAA,cACV,aAAA,EAAY;AAAA;AAAA;AACd;AAAA;AAAA,KAEJ,EACF,CAAA;AAAA,EAEJ;AACF;AAMO,IAAM,aAAA,GAAsB+I,OAAA,CAAA,UAAA;AAAA,EACjC,SAASI,cAAAA,CAAc,KAAA,EAAO,YAAA,EAAc;AAC1C,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,IAAA,MAAM,EAAE,UAAU,KAAA,EAAO,SAAA,EAAW,UAAU,OAAA,EAAS,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAE9E,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,CAAC,IAAA,KAA6B;AAC3E,MAAA,GAAA,CAAI,IAAA,CAAK,aAAa,IAAI,CAAA;AAC1B,MAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,QAAA,YAAA,CAAa,IAAgC,CAAA;AAAA,MAC/C,WAAW,YAAA,EAAc;AACvB,QAAC,aAAkE,OAAA,GAAU,IAAA;AAAA,MAC/E;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,IAAI,IAAI,UAAA,EAAY;AACpB,MAAA,GAAA,CAAI,SAAA,CAAU,CAAC,GAAA,CAAI,MAAM,CAAA;AACzB,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAGA,IAAA,MAAM,eAAA,GAAwBJ,eAAO,EAAE,CAAA;AACvC,IAAA,MAAM,gBAAA,GAAyBA,eAA6C,IAAI,CAAA;AAGhF,IAAMA,kBAAU,MAAM;AACpB,MAAA,OAAO,MAAM;AACX,QAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,UAAA,YAAA,CAAa,iBAAiB,OAAO,CAAA;AACrC,UAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAAA,QAC7B;AAAA,MACF,CAAA;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,QAAA,GAAW,GAAA;AAEjB,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AACnE,MAAA,IAAI,IAAI,UAAA,EAAY;AAEpB,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,QAAA,CAAS,aAAA,CAAc,GAAA,CAAI,CAAC,CAAC,CAAA;AAEnF,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,UAAA,GAAA,CAAI,UAAU,IAAI,CAAA;AAAA,QACpB,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACjC,UAAA,MAAM,eAAe,GAAA,CAAI,gBAAA,GAAmB,YAAY,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA,GAAI,EAAA;AACxF,UAAA,MAAM,UAAU,YAAA,GAAe,WAAA,CAAY,MAAA,GAAS,CAAA,GAAI,eAAe,CAAA,GAAI,CAAA;AAC3E,UAAA,GAAA,CAAI,mBAAA,CAAoB,WAAA,CAAY,OAAO,CAAA,IAAK,IAAI,CAAA;AAAA,QACtD;AAAA,MACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,SAAA,EAAW;AAC9B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,UAAA,GAAA,CAAI,UAAU,IAAI,CAAA;AAAA,QACpB,CAAA,MAAA,IAAW,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACjC,UAAA,MAAM,eAAe,GAAA,CAAI,gBAAA,GAAmB,YAAY,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA,GAAI,EAAA;AACxF,UAAA,MAAM,UAAU,YAAA,GAAe,CAAA,GAAI,YAAA,GAAe,CAAA,GAAI,YAAY,MAAA,GAAS,CAAA;AAC3E,UAAA,GAAA,CAAI,mBAAA,CAAoB,WAAA,CAAY,OAAO,CAAA,IAAK,IAAI,CAAA;AAAA,QACtD;AAAA,MACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,MAAA,IAAU,IAAI,MAAA,EAAQ;AACzC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,UAAA,GAAA,CAAI,mBAAA,CAAoB,WAAA,CAAY,CAAC,CAAA,IAAK,IAAI,CAAA;AAAA,QAChD;AAAA,MACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,KAAA,IAAS,IAAI,MAAA,EAAQ;AACxC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,UAAA,GAAA,CAAI,oBAAoB,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,KAAK,IAAI,CAAA;AAAA,QACrE;AAAA,MACF,WAAW,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC7C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,UAAA,GAAA,CAAI,UAAU,IAAI,CAAA;AAAA,QACpB,CAAA,MAAO;AACL,UAAA,IAAI,GAAA,CAAI,oBAAoB,CAAC,QAAA,CAAS,cAAc,GAAA,CAAI,GAAA,CAAI,gBAAgB,CAAA,EAAG;AAC7E,YAAA,GAAA,CAAI,QAAA,CAAS,IAAI,gBAAgB,CAAA;AAAA,UACnC;AACA,UAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AAAA,QACrB;AAAA,MACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,IAAI,MAAA,EAAQ;AAC3C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AAAA,MACrB,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,CAAI,MAAA,KAAW,CAAA,IAAK,CAAC,CAAA,CAAE,OAAA,IAAW,CAAC,CAAA,CAAE,OAAA,IAAW,CAAC,EAAE,MAAA,EAAQ;AAEtE,QAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,UAAA,YAAA,CAAa,iBAAiB,OAAO,CAAA;AACrC,UAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAAA,QAC7B;AACA,QAAA,eAAA,CAAgB,OAAA,IAAW,CAAA,CAAE,GAAA,CAAI,WAAA,EAAY;AAC7C,QAAA,gBAAA,CAAiB,OAAA,GAAU,WAAW,MAAM;AAC1C,UAAA,eAAA,CAAgB,OAAA,GAAU,EAAA;AAC1B,UAAA,gBAAA,CAAiB,OAAA,GAAU,IAAA;AAAA,QAC7B,GAAG,GAAG,CAAA;AAEN,QAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,IAAA,CAAK,CAAC,GAAA,KAAQ;AACtC,UAAA,MAAM,QAAQ,QAAA,CAAS,UAAA,CAAW,IAAI,GAAG,CAAA,EAAG,aAAY,IAAK,EAAA;AAC7D,UAAA,OAAO,KAAA,CAAM,UAAA,CAAW,eAAA,CAAgB,OAAO,CAAA;AAAA,QACjD,CAAC,CAAA;AAED,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,YAAA,GAAA,CAAI,SAAS,KAAK,CAAA;AAAA,UACpB;AACA,UAAA,GAAA,CAAI,oBAAoB,KAAK,CAAA;AAAA,QAC/B;AAAA,MACF;AAEA,MAAA,SAAA,GAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,oBAAA;AAAA,MACA,CAAA,oBAAA,EAAuB,IAAI,OAAO,CAAA,CAAA;AAAA,MAClC,CAAA,oBAAA,EAAuB,IAAI,IAAI,CAAA,CAAA;AAAA,MAC/B;AAAA,KACF;AAEA,IAAA,MAAM,kBAAA,GACJ,GAAA,CAAI,MAAA,IAAU,GAAA,CAAI,gBAAA,GAAmB,CAAA,EAAG,GAAA,CAAI,SAAS,CAAA,MAAA,EAAS,GAAA,CAAI,gBAAgB,CAAA,CAAA,GAAK,MAAA;AAEzF,IAAA,MAAM,gBAAA,GAAmB;AAAA,MACvB,GAAA,EAAK,SAAA;AAAA,MACL,IAAI,GAAA,CAAI,SAAA;AAAA,MACR,IAAA,EAAM,QAAA;AAAA,MACN,IAAA,EAAM,UAAA;AAAA,MACN,eAAA,EAAiB,SAAA;AAAA,MACjB,iBAAiB,GAAA,CAAI,MAAA;AAAA,MACrB,eAAA,EAAiB,GAAA,CAAI,MAAA,GAAS,GAAA,CAAI,SAAA,GAAY,MAAA;AAAA,MAC9C,uBAAA,EAAyB,kBAAA;AAAA,MACzB,cAAA,EAAgB,GAAA,CAAI,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,MACvC,eAAA,EAAiB,GAAA,CAAI,UAAA,GAAa,IAAA,GAAO,MAAA;AAAA,MACzC,kBAAA,EAAqB,GAAA,CAAY,eAAA,IAAmB,IAAA,CAAK,kBAAkB,CAAA;AAAA,MAC3E,UAAU,GAAA,CAAI,UAAA;AAAA,MACd,YAAA,EAAc,GAAA,CAAI,MAAA,GAAS,MAAA,GAAS,QAAA;AAAA,MACpC,cAAA,EAAgB,GAAA,CAAI,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,MACzC,eAAA,EAAiB,GAAA,CAAI,UAAA,GAAa,MAAA,GAAS,MAAA;AAAA,MAC3C,SAAA,EAAW,cAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,eAAe,QAAA,CAAS,iBAAA,GAC1B,QAAA,CAAS,iBAAA,CAAkB,gBAAuB,CAAA,GAClD,gBAAA;AAEJ,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBAAO/I,GAAAA,CAAC,IAAA,EAAA,EAAM,GAAG,cAAe,QAAA,EAAS,CAAA;AAAA,IAC3C;AAEA,IAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,EAAQ,GAAG,cAAe,QAAA,EAAS,CAAA;AAAA,EAC7C;AACF;AAMO,IAAM,WAAA,GAAoB+I,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASK,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,IAAA,MAAM,EAAE,WAAA,GAAc,qBAAA,EAAuB,UAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAE9E,IAAA,MAAM,WAAA,GAAc,YAAY,GAAA,CAAI,aAAA,KAAkB,IAAI,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAA;AACtF,IAAA,MAAM,gBAAgB,CAAC,WAAA;AAEvB,IAAA,uBACEpJ,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA;AAAA,UACT,kBAAA;AAAA,UACA,aAAA,IAAiB,+BAAA;AAAA,UACjB;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,WAAA,IAAe;AAAA;AAAA,KAClB;AAAA,EAEJ;AACF;AAMO,IAAM,UAAA,GAAmB+I,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASM,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEzC,IAAA,uBACErJ,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,iBAAA,EAAmB,SAAS,CAAA;AAAA,QAClD,aAAA,EAAY,MAAA;AAAA,QACX,GAAG,IAAA;AAAA,QAEH,sCACCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,GAAA;AAAA,YACZ,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YAEf,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA;AACzB;AAAA,KAEJ;AAAA,EAEJ;AACF;AAMO,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,SAAA,EAAU,EAAsB;AACvE,EAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,EAAA,IAAI,CAAC,GAAA,CAAI,MAAA,EAAQ,OAAO,IAAA;AACxB,EAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAW,SAAA,IAAa,MAAO,QAAA,EAAS,CAAA;AACzD;AAMO,IAAM,aAAA,GAAsB+I,OAAA,CAAA,UAAA;AAAA,EACjC,SAASO,cAAAA,CAAc,KAAA,EAAO,YAAA,EAAc;AAC1C,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,IAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEpD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,GAAA,CAAI,UAAA,EAAY,CAAC,IAAA,KAA6B;AAC3E,MAAA,GAAA,CAAI,IAAA,CAAK,YAAY,IAAI,CAAA;AACzB,MAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,QAAA,YAAA,CAAa,IAA6B,CAAA;AAAA,MAC5C,WAAW,YAAA,EAAc;AACvB,QAAC,aAA+D,OAAA,GAAU,IAAA;AAAA,MAC5E;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,QAAA,GAAW,GAAA;AAGjB,IAAMP,wBAAgB,MAAM;AAC1B,MAAA,IAAI,IAAI,MAAA,IAAU,GAAA,CAAI,gBAAA,IAAoB,GAAA,CAAI,WAAW,OAAA,EAAS;AAChE,QAAA,MAAM,MAAA,GAAS,GAAA,CAAI,UAAA,CAAW,OAAA,CAAQ,aAAA;AAAA,UACpC,CAAA,aAAA,EAAgB,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,gBAAgB,CAAC,CAAA,EAAA;AAAA,SAClD;AACA,QAAA,IAAI,MAAA,IAAU,OAAO,MAAA,CAAO,cAAA,KAAmB,UAAA,EAAY;AACzD,UAAA,MAAA,CAAO,cAAA,CAAe,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,GAAG,CAAC,GAAA,CAAI,MAAA,EAAQ,GAAA,CAAI,gBAAgB,CAAC,CAAA;AAGrC,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,MAAA,MAAM,WAAA,GAAc,QAAA,CAAS,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,QAAA,CAAS,aAAA,CAAc,GAAA,CAAI,CAAC,CAAC,CAAA;AACnF,MAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAE9B,MAAA,MAAM,eAAe,GAAA,CAAI,gBAAA,GACrB,YAAY,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA,GACxC,EAAA;AAEJ,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,MAAM,UAAU,YAAA,GAAe,WAAA,CAAY,MAAA,GAAS,CAAA,GAAI,eAAe,CAAA,GAAI,CAAA;AAC3E,QAAA,GAAA,CAAI,mBAAA,CAAoB,WAAA,CAAY,OAAO,CAAA,IAAK,IAAI,CAAA;AAAA,MACtD,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,SAAA,EAAW;AAC9B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,MAAM,UAAU,YAAA,GAAe,CAAA,GAAI,YAAA,GAAe,CAAA,GAAI,YAAY,MAAA,GAAS,CAAA;AAC3E,QAAA,GAAA,CAAI,mBAAA,CAAoB,WAAA,CAAY,OAAO,CAAA,IAAK,IAAI,CAAA;AAAA,MACtD,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,MAAA,EAAQ;AAC3B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,GAAA,CAAI,mBAAA,CAAoB,WAAA,CAAY,CAAC,CAAA,IAAK,IAAI,CAAA;AAAA,MAChD,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,KAAA,EAAO;AAC1B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,GAAA,CAAI,oBAAoB,WAAA,CAAY,WAAA,CAAY,MAAA,GAAS,CAAC,KAAK,IAAI,CAAA;AAAA,MACrE,WAAW,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AAC7C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,IAAI,GAAA,CAAI,oBAAoB,CAAC,QAAA,CAAS,cAAc,GAAA,CAAI,GAAA,CAAI,gBAAgB,CAAA,EAAG;AAC7E,UAAA,GAAA,CAAI,QAAA,CAAS,IAAI,gBAAgB,CAAA;AACjC,UAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AACnB,UAAA,GAAA,CAAI,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,QAChC;AAAA,MACF,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AACnB,QAAA,GAAA,CAAI,UAAA,CAAW,SAAS,KAAA,EAAM;AAAA,MAChC,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,KAAA,EAAO;AAC1B,QAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AAAA,MACrB;AAEA,MAAA,SAAA,GAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,IAAI,CAAC,GAAA,CAAI,MAAA,EAAQ,OAAO,IAAA;AAExB,IAAA,MAAM,gBAAA,GAAmB;AAAA,MACvB,GAAA,EAAK,SAAA;AAAA,MACL,IAAI,GAAA,CAAI,SAAA;AAAA,MACR,IAAA,EAAM,SAAA;AAAA,MACN,mBAAmB,GAAA,CAAI,SAAA;AAAA,MACvB,QAAA,EAAU,EAAA;AAAA,MACV,OAAO,GAAA,CAAI,cAAA;AAAA,MACX,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,MACrD,SAAA,EAAW,aAAA;AAAA,MACX,GAAG;AAAA,KACL;AAEA,IAAA,MAAM,eAAe,QAAA,CAAS,gBAAA,GAC1B,QAAA,CAAS,gBAAA,CAAiB,gBAAuB,CAAA,GACjD,gBAAA;AAEJ,IAAA,uBACE/I,GAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,cACN,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AAUA,IAAM,WAAA,GAAoB+I,OAAA,CAAA,aAAA,CAAwC,EAAE,UAAA,EAAY,OAAO,CAAA;AAEhF,IAAM,UAAA,GAAmBA,OAAA,CAAA,UAAA;AAAA,EAC9B,SAASQ,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM,MAAM,gBAAA,EAAiB;AAC7B,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA,UAAA,GAAa,KAAA;AAAA,MACb,SAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAAa,IAAI,KAAA,KAAU,KAAA;AACjC,IAAA,MAAM,aAAA,GAAgB,IAAI,gBAAA,KAAqB,KAAA;AAG/C,IAAA,MAAM,OAAA,GAAgBR,eAA8B,IAAI,CAAA;AACxD,IAAA,MAAM,SAAA,GAAY,YAAA,CAAa,OAAA,EAAS,GAAG,CAAA;AAE3C,IAAA,MAAM,EAAE,cAAa,GAAI,GAAA;AAEzB,IAAMA,kBAAU,MAAM;AACpB,MAAA,MAAM,KAAA,GACJ,SAAA,KACC,OAAO,QAAA,KAAa,QAAA,GAAW,WAAW,OAAA,CAAQ,OAAA,EAAS,WAAA,EAAa,IAAA,EAAK,IAAK,KAAA,CAAA;AACrF,MAAA,MAAM,UAAA,GAAa,YAAA,CAAa,KAAA,EAAO,KAAA,EAAO,UAAU,CAAA;AACxD,MAAA,OAAO,UAAA;AAAA,IACT,GAAG,CAAC,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,YAAY,CAAC,CAAA;AAE/C,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwC;AAC3D,MAAA,IAAI,UAAA,IAAc,IAAI,UAAA,EAAY;AAClC,MAAA,GAAA,CAAI,SAAS,KAAK,CAAA;AAClB,MAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AACnB,MAAA,GAAA,CAAI,UAAA,CAAW,SAAS,KAAA,EAAM;AAC9B,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAwC;AAChE,MAAA,IAAI,CAAC,UAAA,IAAc,CAAC,GAAA,CAAI,UAAA,EAAY;AAClC,QAAA,GAAA,CAAI,oBAAoB,KAAK,CAAA;AAAA,MAC/B;AACA,MAAA,YAAA,GAAe,CAAC,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,MAAA,GAAS,CAAA,EAAG,GAAA,CAAI,SAAS,SAAS,KAAK,CAAA,CAAA;AAE7C,IAAA,uBACE/I,IAAC,WAAA,CAAY,QAAA,EAAZ,EAAqB,KAAA,EAAO,EAAE,UAAA,EAAW,EACxC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,eAAA,EAAe,UAAA;AAAA,QACf,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,QACrC,eAAA,EAAe,aAAa,MAAA,GAAS,MAAA;AAAA,QACrC,kBAAA,EAAkB,gBAAgB,MAAA,GAAS,MAAA;AAAA,QAC3C,SAAA,EAAW,UAAA,CAAW,iBAAA,EAAmB,SAAS,CAAA;AAAA,QAClD,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAc,gBAAA;AAAA,QACb,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;AAMO,IAAM,cAAA,GAAuB+I,OAAA,CAAA,UAAA;AAAA,EAClC,SAASS,eAAAA,CAAe,KAAA,EAAO,GAAA,EAAK;AAClC,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEzC,IAAA,uBACExJ,GAAAA,CAAC,MAAA,EAAA,EAAK,GAAA,EAAU,SAAA,EAAW,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA,EAAI,GAAG,IAAA,EAC3E,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AAMO,IAAM,mBAAA,GAA4B+I,OAAA,CAAA,UAAA;AAAA,EACvC,SAASU,oBAAAA,CAAoB,KAAA,EAAO,GAAA,EAAK;AACvC,IAAA,MAAM,EAAE,UAAA,EAAW,GAAUV,OAAA,CAAA,UAAA,CAAW,WAAW,CAAA;AACnD,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,MAAK,GAAI,KAAA;AAEzC,IAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AAExB,IAAA,uBACE/I,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAW,UAAA,CAAW,2BAAA,EAA6B,SAAS,CAAA;AAAA,QAC3D,GAAG,IAAA;AAAA,QAEH,sCACCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,GAAA;AAAA,YACZ,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YAEf,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,uBAAA,EAAwB;AAAA;AAAA;AAC3C;AAAA,KAEJ;AAAA,EAEJ;AACF;AAMO,IAAM,WAAA,GAAoB+I,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASW,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAC/B,IAAA,uBAAO1J,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,IAAA,EAAK,OAAA,EAAQ,SAAA,EAAW,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EACrG;AACF;AAEO,IAAM,WAAA,GAAoB+I,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASY,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAC/B,IAAA,uBAAO3J,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,WAAW,kBAAA,EAAoB,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EACxF;AACF;AAEO,IAAM,eAAA,GAAwB+I,OAAA,CAAA,UAAA;AAAA,EACnC,SAASa,gBAAAA,CAAgB,KAAA,EAAO,GAAA,EAAK;AACnC,IAAA,MAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAC/B,IAAA,uBAAO5J,GAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,IAAA,EAAK,WAAA,EAAY,SAAA,EAAW,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,CAAA;AAAA,EAC7G;AACF;AAMO,IAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY;AAAA,EAC9C,IAAA,EAAM,UAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO,WAAA;AAAA,EACP,IAAA,EAAM,UAAA;AAAA,EACN,MAAA,EAAQ,YAAA;AAAA,EACR,OAAA,EAAS,aAAA;AAAA,EACT,IAAA,EAAM,UAAA;AAAA,EACN,QAAA,EAAU,cAAA;AAAA,EACV,aAAA,EAAe,mBAAA;AAAA,EACf,KAAA,EAAO,WAAA;AAAA,EACP,KAAA,EAAO,WAAA;AAAA,EACP,SAAA,EAAW;AACb,CAAC;ACp2BM,IAAM,iBAAA,GACL6J,sBAA6C,IAAI;AAElD,SAAS,oBAAA,GAA+C;AAC7D,EAAA,MAAM,OAAA,GAAgBA,mBAAW,iBAAiB,CAAA;AAClD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAOO,SAAS,kBAAA,CAAmB;AAAA,EACjC,UAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,aAAA,GAAgB;AAClB,CAAA,EAK0B;AACxB,EAAA,IAAI,UAAA,IAAc,CAAA,EAAG,OAAO,CAAC,CAAC,CAAA;AAE9B,EAAA,MAAM,KAAA,GAAQ,CAAC,KAAA,EAAe,GAAA,KAA0B;AACtD,IAAA,MAAM,MAAA,GAAS,MAAM,KAAA,GAAQ,CAAA;AAC7B,IAAA,OAAO,KAAA,CAAM,KAAK,EAAE,MAAA,IAAU,CAAC,CAAA,EAAG,CAAA,KAAM,KAAA,GAAQ,CAAC,CAAA;AAAA,EACnD,CAAA;AAIA,EAAA,MAAM,YAAA,GAAe,aAAA,GAAgB,CAAA,GAAI,YAAA,GAAe,CAAA,GAAI,CAAA;AAE5D,EAAA,IAAI,cAAc,YAAA,EAAc;AAC9B,IAAA,OAAO,KAAA,CAAM,GAAG,UAAU,CAAA;AAAA,EAC5B;AAEA,EAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,cAAc,CAAC,CAAA;AAC/D,EAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,GAAA,CAAI,WAAA,GAAc,cAAc,UAAU,CAAA;AAEzE,EAAA,MAAM,sBAAA,GACJ,mBAAmB,aAAA,GAAgB,CAAA;AACrC,EAAA,MAAM,uBAAA,GACJ,iBAAA,GAAoB,UAAA,IAAc,aAAA,GAAgB,CAAA,CAAA;AAEpD,EAAA,IAAI,CAAC,0BAA0B,uBAAA,EAAyB;AACtD,IAAA,MAAM,aAAA,GAAgB,aAAA,GAAgB,YAAA,GAAe,CAAA,GAAI,CAAA;AACzD,IAAA,MAAM,SAAA,GAAY,KAAA,CAAM,CAAA,EAAG,aAAa,CAAA;AACxC,IAAA,MAAMC,cAAAA,GAAgB,KAAA,CAAM,UAAA,GAAa,aAAA,GAAgB,GAAG,UAAU,CAAA;AACtE,IAAA,OAAO,CAAC,GAAG,SAAA,EAAW,cAAA,EAAgB,GAAGA,cAAa,CAAA;AAAA,EACxD;AAEA,EAAA,IAAI,sBAAA,IAA0B,CAAC,uBAAA,EAAyB;AACtD,IAAA,MAAMC,aAAAA,GAAe,KAAA,CAAM,CAAA,EAAG,aAAa,CAAA;AAC3C,IAAA,MAAM,cAAA,GAAiB,aAAA,GAAgB,YAAA,GAAe,CAAA,GAAI,CAAA;AAC1D,IAAA,MAAM,UAAA,GAAa,KAAA,CAAM,UAAA,GAAa,cAAA,GAAiB,GAAG,UAAU,CAAA;AACpE,IAAA,OAAO,CAAC,GAAGA,aAAAA,EAAc,gBAAA,EAAkB,GAAG,UAAU,CAAA;AAAA,EAC1D;AAGA,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,CAAA,EAAG,aAAa,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,gBAAA,EAAkB,iBAAiB,CAAA;AAC7D,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,UAAA,GAAa,aAAA,GAAgB,GAAG,UAAU,CAAA;AACtE,EAAA,OAAO;AAAA,IACL,GAAG,YAAA;AAAA,IACH,gBAAA;AAAA,IACA,GAAG,WAAA;AAAA,IACH,cAAA;AAAA,IACA,GAAG;AAAA,GACL;AACF;AAKO,IAAM,cAAA,GAAuBF,OAAA,CAAA,UAAA;AAAA,EAClC,SAASG,eAAAA,CACP;AAAA,IACE,KAAA;AAAA,IACA,UAAU,YAAA,GAAe,EAAA;AAAA,IACzB,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,GAAc,CAAA;AAAA,IACd,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA,GAAe,CAAA;AAAA,IACf,aAAA,GAAgB,CAAA;AAAA,IAChB,IAAA,GAAO,IAAA;AAAA,IACP,OAAA,GAAU,SAAA;AAAA,IACV,UAAA,GAAa,KAAA;AAAA,IACb,eAAA,GAAkB,KAAA;AAAA,IAClB,eAAA,GAAkB,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,IAClC,eAAA,GAAkB,KAAA;AAAA,IAClB,cAAc,SAAA,GAAY,YAAA;AAAA,IAC1B,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,CAAC,QAAA,EAAU,mBAAmB,CAAA,GAAUH,iBAAiB,YAAY,CAAA;AAE3E,IAAMA,kBAAU,MAAM;AACpB,MAAA,mBAAA,CAAoB,YAAY,CAAA;AAAA,IAClC,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,IAAA,MAAM,UAAA,GAAa,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAA,CAAK,KAAA,GAAQ,QAAQ,CAAC,CAAA;AAE1D,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,oBAAA,CAA6B;AAAA,MACjE,KAAA,EAAO,QAAA;AAAA,MACP,YAAA,EAAc,WAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,OAAA,GAAgBA,OAAA,CAAA,WAAA;AAAA,MACpB,CAAC,QAAA,KAAqB;AACpB,QAAA,IAAI,UAAA,EAAY;AAChB,QAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA,EAAG,QAAQ,GAAG,UAAU,CAAA;AAC1D,QAAA,cAAA,CAAe,OAAO,CAAA;AAAA,MACxB,CAAA;AAAA,MACA,CAAC,UAAA,EAAY,cAAA,EAAgB,UAAU;AAAA,KACzC;AAEA,IAAA,MAAM,oBAAA,GAA6BA,OAAA,CAAA,WAAA;AAAA,MACjC,CAAC,OAAA,KAAoB;AACnB,QAAA,IAAI,UAAA,EAAY;AAChB,QAAA,mBAAA,CAAoB,OAAO,CAAA;AAC3B,QAAA,gBAAA,GAAmB,OAAO,CAAA;AAE1B,QAAA,MAAM,aAAA,GAAgB,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,IAAA,CAAK,KAAA,GAAQ,OAAO,CAAC,CAAA;AAC5D,QAAA,IAAI,cAAc,aAAA,EAAe;AAC/B,UAAA,OAAA,CAAQ,aAAa,CAAA;AAAA,QACvB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,WAAA,EAAa,UAAA,EAAY,gBAAA,EAAkB,SAAS,KAAK;AAAA,KAC5D;AAEA,IAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,WAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,WAAA,EAAa,oBAAA;AAAA,QACb,IAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA;AAAA,QACE,WAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,OAAA;AAAA,QACA,oBAAA;AAAA,QACA,IAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,KAAA,GAAcA,OAAA,CAAA,OAAA;AAAA,MAClB,MACE,kBAAA,CAAmB;AAAA,QACjB,UAAA;AAAA,QACA,WAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,MACH,CAAC,UAAA,EAAY,WAAA,EAAa,YAAA,EAAc,aAAa;AAAA,KACvD;AAEA,IAAA,uBACE7J,GAAAA,CAAC,iBAAA,CAAkB,UAAlB,EAA2B,KAAA,EAAO,cACjC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,SAAA,EAAW,UAAA;AAAA,UACT,eAAA;AAAA,UACA,kBAAkB,IAAI,CAAA,CAAA;AAAA,UACtB,kBAAkB,OAAO,CAAA,CAAA;AAAA,UACzB;AAAA,SACF;AAAA,QACC,GAAG,QAAA;AAAA,QAEH,QAAA,EAAA,QAAA,GACC,QAAA,mBAEA4C,IAAAA,CAAAkB,UAAA,EACE,QAAA,EAAA;AAAA,0BAAAlB,KAAC,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAA5C,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BACZ,QAAA,kBAAAA,GAAAA,CAAC,kBAAe,CAAA,EAClB,CAAA;AAAA,YACC,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,wBAChBA,GAAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBAMC,SAAA,EAAU,0BAAA;AAAA,gBAET,QAAA,EAAA,OAAO,IAAA,KAAS,QAAA,mBACfA,GAAAA;AAAA,kBAAC,cAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAM,IAAA;AAAA,oBACN,WAAW,IAAA,KAAS,WAAA;AAAA,oBAEnB,QAAA,EAAA;AAAA;AAAA,iBACH,mBAEAA,GAAAA,CAAC,kBAAA,EAAA,EAAmB;AAAA,eAAA;AAAA,cAdpB,OAAO,SAAS,QAAA,GACZ,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA,GACZ,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,GAAG,CAAA;AAAA,aAevB,CAAA;AAAA,4BACDA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAU,4BACZ,QAAA,kBAAAA,GAAAA,CAAC,kBAAe,CAAA,EAClB;AAAA,WAAA,EACF,CAAA;AAAA,UACC,eAAA,oBACCA,GAAAA,CAAC,oBAAA,EAAA,EAAqB,SAAS,eAAA,EAAiB,CAAA;AAAA,UAEjD,eAAA,oBAAmBA,GAAAA,CAAC,gBAAA,EAAA,EAAiB;AAAA,SAAA,EACxC;AAAA;AAAA,KAEJ,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,cAAA,CAAe,WAAA,GAAc,YAAA;AAKtB,IAAM,cAAA,GAAuB6J,OAAA,CAAA,UAAA,CAGlC,SAASI,eAAAA,CAAe,EAAE,WAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACpE,EAAA,uBACEjK,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAW,UAAA,CAAW,qBAAA,EAAuB,SAAS,CAAA;AAAA,MACrD,GAAG,SAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,cAAA,GAAuB6J,OAAA,CAAA,UAAA,CAGlC,SAASK,eAAAA,CACT;AAAA,EACE,IAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,SAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,KAAe,oBAAA,EAAqB;AAClE,EAAA,MAAM,MAAA,GAAS,aAAa,WAAA,KAAgB,IAAA;AAE5C,EAAA,MAAM,WAAA,GAAoBL,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,IAAI,UAAA,EAAY;AAChB,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,QAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,MACd;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,OAAA,EAAS,IAAA,EAAM,OAAO;AAAA,GACrC;AAEA,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,qBAAA,EAAuB,SAAS,CAAA;AAE/D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE7J,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,cAAA,EAAc,SAAS,MAAA,GAAS,MAAA;AAAA,QAChC,YAAA,EAAY,SAAA;AAAA,QACZ,SAAA,EAAW,WAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACR,GAAI,SAAA;AAAA,QAEJ,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,KACf;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,cAAA,EAAc,SAAS,MAAA,GAAS,MAAA;AAAA,MAChC,YAAA,EAAY,SAAA,IAAa,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,MACrC,QAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,WAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,GACf;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,iBAAA;AAE7B,IAAM,eAAA,GAAkB,sBACtBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAU,qBAAA;AAAA,IAEV,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,iBAAA,EAAkB;AAAA;AACrC,CAAA;AAGF,IAAM,gBAAA,GAAmB,sBACvBA,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAU,qBAAA;AAAA,IAEV,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AACpC,CAAA;AAGF,IAAM,gBAAA,GAAmB,sBACvB4C,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAU,qBAAA;AAAA,IAEV,QAAA,EAAA;AAAA,sBAAA5C,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,iBAAA,EAAkB,CAAA;AAAA,sBACnCA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,kBAAA,EAAmB;AAAA;AAAA;AACtC,CAAA;AAGF,IAAM,iBAAA,GAAoB,sBACxB4C,IAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,KAAA,EAAM,IAAA;AAAA,IACN,MAAA,EAAO,IAAA;AAAA,IACP,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,MAAA;AAAA,IACL,MAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAc,OAAA;AAAA,IACd,cAAA,EAAe,OAAA;AAAA,IACf,aAAA,EAAY,MAAA;AAAA,IACZ,SAAA,EAAU,qBAAA;AAAA,IAEV,QAAA,EAAA;AAAA,sBAAA5C,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,kBAAA,EAAmB,CAAA;AAAA,sBACpCA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AAAA;AACpC,CAAA;AAMK,IAAM,cAAA,GAAuB6J,OAAA,CAAA,UAAA,CAGlC,SAASM,eAAAA,CACT,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,SAAA,IACpD,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,KAAe,oBAAA,EAAqB;AAClE,EAAA,MAAM,aAAa,WAAA,IAAe,CAAA;AAClC,EAAA,MAAM,WAAW,UAAA,IAAc,UAAA;AAE/B,EAAA,MAAM,WAAA,GAAoBN,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,QAAA,OAAA,CAAQ,cAAc,CAAC,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,WAAW;AAAA,GAC1C;AAEA,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,qBAAA,EAAuB,SAAS,CAAA;AAE/D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE7J,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAW,qBAAA;AAAA,QACX,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,QACnC,SAAA,EAAW,WAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACR,GAAI,SAAA;AAAA,QAEJ,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,eAAA,EAAA,EAAgB;AAAA;AAAA,KAChC;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,qBAAA;AAAA,MACX,QAAA;AAAA,MACA,SAAA,EAAW,WAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,eAAA,EAAA,EAAgB;AAAA;AAAA,GAChC;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,cAAA,GAAuB6J,OAAA,CAAA,UAAA,CAGlC,SAASO,eAAAA,CACT,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,SAAA,IACpD,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,UAAA,EAAY,OAAA,EAAS,UAAA,KACxC,oBAAA,EAAqB;AACvB,EAAA,MAAM,aAAa,WAAA,IAAe,UAAA;AAClC,EAAA,MAAM,WAAW,UAAA,IAAc,UAAA;AAE/B,EAAA,MAAM,WAAA,GAAoBP,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,QAAA,OAAA,CAAQ,cAAc,CAAC,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,WAAW;AAAA,GAC1C;AAEA,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,qBAAA,EAAuB,SAAS,CAAA;AAE/D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE7J,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAW,iBAAA;AAAA,QACX,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,QACnC,SAAA,EAAW,WAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACR,GAAI,SAAA;AAAA,QAEJ,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA,KACjC;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,iBAAA;AAAA,MACX,QAAA;AAAA,MACA,SAAA,EAAW,WAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA,GACjC;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,eAAA,GAAwB6J,OAAA,CAAA,UAAA,CAGnC,SAASQ,gBAAAA,CACT,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,SAAA,IACpD,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,OAAA,EAAS,UAAA,KAAe,oBAAA,EAAqB;AAClE,EAAA,MAAM,QAAA,GAAW,cAAc,WAAA,IAAe,CAAA;AAE9C,EAAA,MAAM,WAAA,GAAoBR,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACX;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,OAAA,EAAS,OAAO;AAAA,GAC7B;AAEA,EAAA,MAAM,YAAA,GAAe,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA;AAEjE,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE7J,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAW,kBAAA;AAAA,QACX,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,QACnC,SAAA,EAAW,YAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACR,GAAI,SAAA;AAAA,QAEJ,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA,KACjC;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,kBAAA;AAAA,MACX,QAAA;AAAA,MACA,SAAA,EAAW,YAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,gBAAA,EAAA,EAAiB;AAAA;AAAA,GACjC;AAEJ,CAAC;AAED,eAAA,CAAgB,WAAA,GAAc,kBAAA;AAKvB,IAAM,cAAA,GAAuB6J,OAAA,CAAA,UAAA,CAGlC,SAASS,eAAAA,CACT,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAA,EAAS,GAAG,SAAA,IACpD,GAAA,EACA;AACA,EAAA,MAAM,EAAE,WAAA,EAAa,UAAA,EAAY,OAAA,EAAS,UAAA,KACxC,oBAAA,EAAqB;AACvB,EAAA,MAAM,QAAA,GAAW,cAAc,WAAA,IAAe,UAAA;AAE9C,EAAA,MAAM,WAAA,GAAoBT,OAAA,CAAA,WAAA;AAAA,IACxB,CAAC,CAAA,KAA2C;AAC1C,MAAA,IAAI,QAAA,EAAU;AACd,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,QAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,OAAA,EAAS,OAAA,EAAS,UAAU;AAAA,GACzC;AAEA,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,qBAAA,EAAuB,SAAS,CAAA;AAE/D,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACE7J,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,YAAA,EAAW,iBAAA;AAAA,QACX,eAAA,EAAe,WAAW,MAAA,GAAS,MAAA;AAAA,QACnC,SAAA,EAAW,WAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACR,GAAI,SAAA;AAAA,QAEJ,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,iBAAA,EAAA,EAAkB;AAAA;AAAA,KAClC;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,iBAAA;AAAA,MACX,QAAA;AAAA,MACA,SAAA,EAAW,WAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,oBAAYA,GAAAA,CAAC,iBAAA,EAAA,EAAkB;AAAA;AAAA,GAClC;AAEJ,CAAC;AAED,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,kBAAA,GAA2B6J,OAAA,CAAA,UAAA,CAGtC,SAASU,mBAAAA,CAAmB,EAAE,WAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACxE,EAAA,uBACEvK,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,aAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,UAAA,CAAW,yBAAA,EAA2B,SAAS,CAAA;AAAA,MACzD,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,GACf;AAEJ,CAAC;AAED,kBAAA,CAAmB,WAAA,GAAc,qBAAA;AAK1B,IAAM,oBAAA,GAA6B6J,OAAA,CAAA,UAAA,CAGxC,SAASW,qBAAAA,CACT;AAAA,EACE,OAAA,GAAU,CAAC,EAAA,EAAI,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,EAC1B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAc,SAAA,GAAY,WAAA;AAAA,EAC1B,UAAA,EAAY,cAAA;AAAA,EACZ,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,MAAM,UAAA,EAAY,iBAAA,KAC/C,oBAAA,EAAqB;AACvB,EAAA,MAAM,WAAW,cAAA,IAAkB,iBAAA;AAEnC,EAAA,MAAM,iBAAA,GAA0BX,OAAA,CAAA,WAAA;AAAA,IAC9B,CAAC,GAAA,KAAgB;AACf,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,GAAA,EAAK,EAAE,CAAA;AAC5B,MAAA,IAAI,CAAC,KAAA,CAAM,GAAG,CAAA,EAAG;AACf,QAAA,WAAA,CAAY,GAAG,CAAA;AACf,QAAA,QAAA,GAAW,GAAG,CAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAU,WAAW;AAAA,GACxB;AAEA,EAAA,uBACEjH,IAAAA;AAAA,IAAC,MAAA,CAAO,IAAA;AAAA,IAAP;AAAA,MACC,KAAA,EAAO,OAAO,QAAQ,CAAA;AAAA,MACtB,aAAA,EAAe,iBAAA;AAAA,MACf,UAAA,EAAY,QAAA;AAAA,MACZ,IAAA;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,iCAAA,EAAmC,SAAS,CAAA;AAAA,MAElE,QAAA,EAAA;AAAA,wBAAAA,IAAAA;AAAA,UAAC,MAAA,CAAO,OAAA;AAAA,UAAP;AAAA,YACC,GAAA;AAAA,YACA,YAAA,EAAY,SAAA;AAAA,YACZ,SAAA,EAAU,oCAAA;AAAA,YACT,GAAG,SAAA;AAAA,YAEJ,QAAA,EAAA;AAAA,8BAAA5C,IAAC,MAAA,CAAO,KAAA,EAAP,EAAc,QAAA,EAAA,CAAA,EAAG,QAAQ,CAAA,OAAA,CAAA,EAAU,CAAA;AAAA,8BACpCA,GAAAA,CAAC,MAAA,CAAO,IAAA,EAAP,EAAY;AAAA;AAAA;AAAA,SACf;AAAA,wBACAA,GAAAA,CAAC,MAAA,CAAO,MAAA,EAAP,EACC,0BAAAA,GAAAA,CAAC,MAAA,CAAO,OAAA,EAAP,EAAe,SAAA,EAAU,oCAAA,EACvB,kBAAQ,GAAA,CAAI,CAAC,GAAA,qBACZ4C,IAAAA,CAAC,MAAA,CAAO,MAAP,EAAsB,KAAA,EAAO,MAAA,CAAO,GAAG,CAAA,EACtC,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,MAAA,CAAO,QAAA,EAAP,EAAiB,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAAI;AAAA,WAAA,EAAO,CAAA;AAAA,0BAC7B5C,GAAAA,CAAC,MAAA,CAAO,aAAA,EAAP,EAAqB;AAAA,SAAA,EAAA,EAFN,GAGlB,CACD,CAAA,EACH,CAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,oBAAA,CAAqB,WAAA,GAAc,uBAAA;AAK5B,IAAM,gBAAA,GAAyB6J,OAAA,CAAA,UAAA,CAGpC,SAASY,iBAAAA,CAAiB,EAAE,WAAW,QAAA,EAAU,GAAG,SAAA,EAAU,EAAG,GAAA,EAAK;AACtE,EAAA,MAAM,EAAE,UAAA,EAAY,OAAA,EAAS,UAAA,KAAe,oBAAA,EAAqB;AACjE,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAUZ,iBAAiB,EAAE,CAAA;AAE/C,EAAA,MAAM,aAAA,GAAsBA,OAAA,CAAA,WAAA;AAAA,IAC1B,CAAC,CAAA,KAA6C;AAC5C,MAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,MAAM,GAAA,GAAM,QAAA,CAAS,GAAA,EAAK,EAAE,CAAA;AAC5B,QAAA,IAAI,CAAC,KAAA,CAAM,GAAG,KAAK,GAAA,IAAO,CAAA,IAAK,OAAO,UAAA,EAAY;AAChD,UAAA,OAAA,CAAQ,GAAG,CAAA;AACX,UAAA,MAAA,CAAO,EAAE,CAAA;AAAA,QACX;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,GAAA,EAAK,UAAA,EAAY,OAAO;AAAA,GAC3B;AAEA,EAAA,uBACEjH,IAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,uBAAA,EAAyB,SAAS,CAAA;AAAA,MACvD,GAAG,SAAA;AAAA,MACL,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,wBAEC5C,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,GAAA,EAAK,UAAA;AAAA,YACL,YAAA,EAAW,cAAA;AAAA,YACX,QAAA,EAAU,UAAA;AAAA,YACV,KAAA,EAAO,GAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACtC,SAAA,EAAW,aAAA;AAAA,YACX,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA;AAAA,GACF;AAEJ,CAAC;AAED,gBAAA,CAAiB,WAAA,GAAc,mBAAA;AAKxB,IAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB;AAAA,EACtD,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,cAAA;AAAA,EACN,KAAA,EAAO,eAAA;AAAA,EACP,IAAA,EAAM,cAAA;AAAA,EACN,QAAA,EAAU,kBAAA;AAAA,EACV,UAAA,EAAY,oBAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAC;AC1vBD,IAAM,eAAA,GAAwB,sBAA8C,IAAI,CAAA;AAEzE,SAAS,kBAAA,GAA2C;AACzD,EAAA,MAAM,OAAA,GAAgB,mBAAW,eAAe,CAAA;AAChD,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,WAAA,GAAc;AAMpB,IAAM,YAAA,GAAqB,OAAA,CAAA,UAAA;AAAA,EAChC,SAAS0K,aAAAA,CAAa,KAAA,EAAO,GAAA,EAAK;AAChC,IAAA,MAAM,YAAY,YAAA,EAAa;AAE/B,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,SAAA;AAAA,MACP,YAAA,EAAc,gBAAA;AAAA,MACd,aAAA;AAAA,MACA,WAAA,EAAa,eAAA;AAAA,MACb,kBAAA,GAAqB,EAAA;AAAA,MACrB,cAAA;AAAA,MACA,MAAA,EAAQ,UAAA;AAAA,MACR,WAAA,GAAc,KAAA;AAAA,MACd,YAAA;AAAA,MACA,UAAA,EAAY,YAAA;AAAA,MACZ,SAAA,EAAW,aAAA;AAAA,MACX,WAAW,aAAA,GAAgB,KAAA;AAAA,MAC3B,OAAA,GAAU,KAAA;AAAA,MACV,MAAM,QAAA,GAAW,IAAA;AAAA,MACjB,SAAS,WAAA,GAAc,SAAA;AAAA,MACvB,MAAA,GAAS,CAAC,OAAA,EAAiB,QAAA,EAAkB,MAAA,KAAmB;AAC9D,QAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,QAAA,MAAM,CAAA,GAAI,MAAA,CAAO,WAAA,EAAY,CAAE,IAAA,EAAK;AACpC,QAAA,OACE,OAAA,CAAQ,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,KAChC,QAAA,CAAS,WAAA,EAAY,CAAE,QAAA,CAAS,CAAC,CAAA;AAAA,MAErC,CAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY,cAAA;AAAA,MACZ,kBAAA,EAAoB,mBAAA;AAAA,MACpB,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAAa,YAAA,IAAgB,SAAA,EAAW,QAAA,IAAY,KAAA;AAC1D,IAAA,MAAM,SAAA,GAAY,aAAA,IAAiB,SAAA,EAAW,KAAA,IAAS,KAAA;AACvD,IAAA,MAAM,UAAA,GAAa,cAAA,IAAmB,KAAA,CAAc,QAAA,IAAY,WAAW,QAAA,IAAY,KAAA;AACvF,IAAA,MAAM,IAAA,GAAO,YAAY,SAAA,EAAW,IAAA;AACpC,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,mBAAA;AAAA,MACA,SAAA,EAAW,KAAA,IAAS,SAAA,EAAW,eAAA,GAAkB,UAAU,cAAA,GAAiB,IAAA;AAAA,MAC5E,SAAA,EAAW,aAAA,GAAgB,SAAA,CAAU,YAAA,GAAe;AAAA,MAEnD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAEhB,IAAA,MAAMzB,SAAO,QAAA,IAAY,IAAA;AACzB,IAAA,MAAM,OAAA,GAAU,WAAA;AAChB,IAAA,MAAM,SAAA,GAAY,aAAA;AAElB,IAAA,MAAM,MAAA,GAAe,OAAA,CAAA,KAAA,EAAM,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AAC7C,IAAA,MAAM,gBAAA,GAAmB,qBAAqB,MAAM,CAAA,CAAA;AACpD,IAAA,MAAM,OAAA,GAAU,MAAA,IAAU,SAAA,EAAW,EAAA,IAAM,gBAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,uBAAuB,MAAM,CAAA,CAAA;AAG/C,IAAA,MAAM,UAAA,GAAa,SAAA,KAAc,MAAA,GAAY,SAAA,GAAY,gBAAA;AACzD,IAAA,MAAM,qBAAA,GACJ,CAAC,OAAA,IAAW,OAAA,IAAW,UAAA,KAAe,MAAA,GAClC,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,UAAU,CAAA,GAC1C,MAAA;AAEN,IAAA,MAAM,qBAAA,GACJ,kBAAA,KACC,OAAO,qBAAA,EAAuB,KAAA,KAAU,QAAA,GACrC,qBAAA,CAAsB,KAAA,GACtB,OAAO,qBAAA,EAAuB,KAAA,KAAU,QAAA,GACtC,sBAAsB,KAAA,GACtB,EAAA,CAAA;AAGR,IAAA,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,GAAI,oBAAA,CAA0B;AAAA,MACvD,KAAA,EAAO,SAAA;AAAA,MACP,cAAc,gBAAA,KAAqB,MAAA,GAAY,gBAAA,GAAmB,OAAA,GAAU,EAAC,GAAI,EAAA;AAAA,MACjF,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,MAAM,CAAC,WAAA,EAAa,mBAAmB,CAAA,GAAI,oBAAA,CAA6B;AAAA,MACtE,KAAA,EAAO,eAAA;AAAA,MACP,YAAA,EAAc,qBAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAGD,IAAA,MAAM,CAAC,MAAA,EAAQ,cAAc,CAAA,GAAI,oBAAA,CAA8B;AAAA,MAC7D,KAAA,EAAO,UAAA;AAAA,MACP,YAAA,EAAc,WAAA;AAAA,MACd,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAU,iBAAkB,KAAK,CAAA;AACnE,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAU,iBAEpD,IAAI,CAAA;AAEN,IAAA,MAAM,iBAAA,GAA0B,OAAA,CAAA,WAAA;AAAA,MAC9B,CAAC,MAAA,KAA0C;AACzC,QAAA,IAAI,UAAA,EAAY;AAChB,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,mBAAA,CAAoB,MAAM,CAAA;AAC1B,QAAA,cAAA,CAAe,IAAI,CAAA;AAAA,MACrB,CAAA;AAAA,MACA,CAAC,YAAY,cAAc;AAAA,KAC7B;AAEA,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAU,iBAAwB,IAAI,CAAA;AAClE,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAU,iBAAkB,IAAI,CAAA;AAChE,IAAA,MAAM,qBAAA,GAA8B,OAAA,CAAA,WAAA,CAAY,CAAC,GAAA,KAAiB;AAChE,MAAA,aAAA,CAAc,CAAC,IAAA,KAAU,IAAA,KAAS,GAAA,GAAM,OAAO,GAAI,CAAA;AAAA,IACrD,CAAA,EAAG,EAAE,CAAA;AAEL,IAAA,MAAM,QAAA,GAAiB,eAAgC,IAAI,CAAA;AAC3D,IAAA,MAAM,iBAAA,GAA0B,eAA8B,IAAI,CAAA;AAGlE,IAAA,MAAM;AAAA,MACJ,IAAA;AAAA,MACA,cAAA;AAAA,MACA,OAAA,EAAS;AAAA,QACPxD,WAAAA,CAAY;AAAA,MACd,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,CAAC,UAAA,EAAY;AACf,UAAA,cAAA,CAAe,IAAI,CAAA;AAAA,QACrB;AAAA,MACF,CAAA;AAAA,MACA,oBAAA,EAAsBC,UAAAA;AAAA,MACtB,SAAA,EAAW,cAAA;AAAA,MACX,UAAA,EAAY;AAAA,QACVC,OAAO,CAAC,CAAA;AAAA,QACRC,IAAAA,CAAK,EAAE,yBAAA,EAA2B,OAAA,EAAS,CAAA;AAAA,QAC3CC,KAAAA,CAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA;AAAA,QACpBqD,IAAAA,CAAa;AAAA,UACX,KAAA,CAAM,EAAE,KAAA,EAAO,QAAA,EAAS,EAAG;AACzB,YAAA,MAAA,CAAO,MAAA,CAAO,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO;AAAA,cACrC,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,SAAA,CAAU,KAAK,CAAA,EAAA;AAAA,aAChC,CAAA;AAAA,UACH;AAAA,SACD;AAAA;AACH,KACD,CAAA;AAED,IAAA,MAAM,OAAA,GAAUnD,WAAW,eAAA,EAAiB;AAAA,MAC1C,YAAA,EAAc,IAAA;AAAA,MACd,SAAA,EAAW;AAAA;AAAA,KACZ,CAAA;AAED,IAAAE,eAAAA,CAAgB,CAAC,OAAO,CAAC,CAAA;AAGzB,IAAA,MAAM,UAAA,GAAmB,OAAA,CAAA,WAAA;AAAA,MACvB,CAAC,SAAiB,QAAA,KAAqB;AACrC,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAM,aAAa,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ,EAAC;AACnD,UAAA,MAAM,MAAA,GAAS,UAAA,CAAW,QAAA,CAAS,OAAO,CAAA;AAC1C,UAAA,MAAM,OAAA,GAAU,MAAA,GACZ,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,OAAO,CAAA,GACtC,CAAC,GAAG,UAAA,EAAY,OAAO,CAAA;AAC3B,UAAA,aAAA,CAAc,OAAO,CAAA;AACrB,UAAA,mBAAA,CAAoB,EAAE,CAAA;AACtB,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,IAAI,SAAS,OAAA,EAAS;AACpB,YAAA,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,UACzB;AAAA,QACF,CAAA,MAAO;AACL,UAAA,aAAA,CAAc,OAAO,CAAA;AACrB,UAAA,mBAAA,CAAoB,YAAY,OAAO,CAAA;AACvC,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,WAAA,CAAY,IAAI,CAAA;AAChB,UAAA,IAAI,SAAS,OAAA,EAAS;AACpB,YAAA,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,UACzB;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,CAAC,OAAA,EAAS,KAAA,EAAO,aAAA,EAAe,qBAAqB,cAAc;AAAA,KACrE;AAEA,IAAA,MAAM,UAAA,GAAmB,OAAA,CAAA,WAAA;AAAA,MACvB,CAAC,OAAA,KAAoB;AACnB,QAAA,IAAI,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACnC,UAAA,aAAA,CAAc,MAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,OAAO,CAAC,CAAA;AAAA,QAClD;AAAA,MACF,CAAA;AAAA,MACA,CAAC,OAAA,EAAS,KAAA,EAAO,aAAa;AAAA,KAChC;AAEA,IAAA,MAAM,cAAA,GAAuB,oBAAY,MAAM;AAC7C,MAAA,aAAA,CAAc,OAAA,GAAU,EAAC,GAAI,EAAE,CAAA;AAC/B,MAAA,mBAAA,CAAoB,EAAE,CAAA;AACtB,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,MACzB;AAAA,IACF,CAAA,EAAG,CAAC,OAAA,EAAS,aAAA,EAAe,mBAAmB,CAAC,CAAA;AAEhD,IAAA,MAAM,YAAA,GAAqB,OAAA,CAAA,WAAA,CAAY,MAAM,MAAM;AAAA,IAAC,CAAA,EAAG,EAAE,CAAA;AACzD,IAAA,MAAM,oBAAA,GAA6B,oBAAY,MAAM;AAAA,IAAC,CAAA,EAAG,EAAE,CAAA;AAE3D,IAAA,MAAM,YAAA,GAA8C,OAAA,CAAA,OAAA;AAAA,MAClD,OAAO;AAAA,QACL,KAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA,EAAgB,mBAAA;AAAA,QAChB,MAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,QAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAY,IAAA,CAAK,YAAA;AAAA,QACjB,YAAY,IAAA,CAAK,WAAA;AAAA,QACjB,iBAAA;AAAA,QACA,UAAA;AAAA,QACA,aAAA,EAAe,qBAAA;AAAA,QACf,cAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,cACAgD,MAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA,gBAAA;AAAA,QACA,mBAAA;AAAA,QACA,iBAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,YAAA;AAAA,QACA,oBAAA;AAAA,QACA,cAAc,EAAC;AAAA,QACf,aAAA,EAAe,aAAa,CAAA,GAAI;AAAA,OAClC,CAAA;AAAA,MACA;AAAA,QACE,KAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAA;AAAA,QACA,WAAA;AAAA,QACA,mBAAA;AAAA,QACA,MAAA;AAAA,QACA,cAAA;AAAA,QACA,QAAA;AAAA,QACA,IAAA,CAAK,YAAA;AAAA,QACL,IAAA,CAAK,WAAA;AAAA,QACL,UAAA;AAAA,QACA,qBAAA;AAAA,QACA,cAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACAA,MAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,WAAA;AAAA,QACA,gBAAA;AAAA,QACA,iBAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA;AAAA,QACA,IAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA;AACF,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,UAAA;AAAA,MAClB,aAAA;AAAA,MACA,gBAAgBA,MAAI,CAAA,CAAA;AAAA,MACpB,gBAAgB,OAAO,CAAA,CAAA;AAAA,MACvB;AAAA,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB,YAAA,CAAa,GAAA,EAAK,IAAA,CAAK,YAAY,CAAA;AAEzD,IAAA,uBACEjJ,IAAC,eAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,YAAA,EAC/B,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAK,aAAA,EAAe,SAAA,EAAW,aAAc,GAAG,IAAA,EAClD,sCACC4C,IAAAA,CAAAkB,UAAA,EACE,QAAA,EAAA;AAAA,sBAAAlB,KAAC,eAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,MAAM,MAAA,GAAS,CAAA,oBACjD5C,GAAAA,CAAC,SAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAA,KAAQ;AAClB,UAAA,MAAM,MAAM,OAAA,EAAS,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,GAAG,CAAA;AAChD,UAAA,uBACEA,IAAC,WAAA,EAAA,EAAsB,KAAA,EAAO,KAC3B,QAAA,EAAA,GAAA,EAAK,KAAA,IAAS,OADC,GAElB,CAAA;AAAA,QAEJ,CAAC,CAAA,EACH,CAAA;AAAA,wBAEFA,GAAAA,CAAC,aAAA,EAAA,EAAc,WAAA,EAA0B,CAAA;AAAA,wBACzCA,IAAC,aAAA,EAAA,EAAc,CAAA;AAAA,wBACfA,IAAC,eAAA,EAAA,EAAgB;AAAA,OAAA,EACnB,CAAA;AAAA,sBACA4C,KAAC,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA5C,GAAAA,CAAC,iBAAc,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,QAC/B,OAAA,EAAS,GAAA,CAAI,CAAC,GAAA,qBACbA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YAEC,OAAO,GAAA,CAAI,KAAA;AAAA,YACX,YAAY,GAAA,CAAI,QAAA;AAAA,YAEf,QAAA,EAAA,GAAA,CAAI,SAAS,GAAA,CAAI;AAAA,WAAA;AAAA,UAJb,GAAA,CAAI;AAAA,SAMZ;AAAA,OAAA,EACH;AAAA,KAAA,EACF,GAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAMO,IAAM,eAAA,GAAwB,OAAA,CAAA,UAAA;AAAA,EACnC,SAAS2K,gBAAAA,CAAgB,KAAA,EAAO,GAAA,EAAK;AACnC,IAAA,MAAM,MAAM,kBAAA,EAAmB;AAC/B,IAAA,MAAM,EAAE,OAAA,GAAU,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAC1D,IAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,EAAK,GAAA,CAAI,UAAU,CAAA;AAEpD,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA;AAEnE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE3K,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,eAAA,EAAe,GAAA,CAAI,UAAA,GAAa,MAAA,GAAS,MAAA;AAAA,UACzC,cAAA,EAAc,GAAA,CAAI,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,UACvC,SAAA,EAAW,cAAA;AAAA,UACV,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,eAAA,EAAe,GAAA,CAAI,UAAA,GAAa,MAAA,GAAS,MAAA;AAAA,QACzC,cAAA,EAAc,GAAA,CAAI,SAAA,GAAY,MAAA,GAAS,MAAA;AAAA,QACvC,SAAA,EAAW,cAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAMO,IAAM,aAAA,GAAsB,OAAA,CAAA,UAAA;AAAA,EACjC,SAAS4K,cAAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,IAAA,MAAM,GAAA,GAAY,mBAAW,eAAe,CAAA;AAC5C,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,4CAA4C,CAAA;AAEtE,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,WAAA;AAAA,MACA,KAAA,EAAO,YAAA;AAAA,MACP,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAAa,gBAAgB,GAAA,CAAI,UAAA;AAEvC,IAAA,MAAM,oBAAoB,MAAM;AAC9B,MAAA,MAAM,SAAA,GAAY,IAAI,iBAAA,CAAkB,OAAA;AACxC,MAAA,IAAI,CAAC,SAAA,EAAW,OAAO,EAAC;AACxB,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,QACX,SAAA,CAAU,gBAAA;AAAA,UACR;AAAA;AACF,OACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAA2C;AAC/D,MAAA,IAAI,UAAA,EAAY;AAChB,MAAA,MAAM,SAAA,GAAY,EAAE,MAAA,CAAO,KAAA;AAC3B,MAAA,GAAA,CAAI,eAAe,IAAI,CAAA;AACvB,MAAA,GAAA,CAAI,eAAe,SAAS,CAAA;AAC5B,MAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,QAAA,GAAA,CAAI,UAAU,IAAI,CAAA;AAAA,MACpB;AACA,MAAA,QAAA,GAAW,CAAC,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA6C;AAClE,MAAA,IAAI,UAAA,EAAY;AAEhB,MAAA,MAAM,UAAU,iBAAA,EAAkB;AAElC,MAAA,QAAQ,EAAE,GAAA;AAAK,QACb,KAAK,WAAA,EAAa;AAChB,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,YAAA,GAAA,CAAI,kBAAkB,GAAA,CAAI,KAAA,IAAS,CAAC,GAAA,CAAI,OAAA,GAAU,aAAa,OAAO,CAAA;AACtE,YAAA;AAAA,UACF;AACA,UAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,YAAA,MAAM,YAAA,GAAe,QAAQ,SAAA,CAAU,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,IAAI,QAAQ,CAAA;AACvE,YAAA,MAAM,SAAA,GACJ,iBAAiB,EAAA,IAAM,YAAA,KAAiB,QAAQ,MAAA,GAAS,CAAA,GACrD,IACA,YAAA,GAAe,CAAA;AACrB,YAAA,MAAM,MAAA,GAAS,QAAQ,SAAS,CAAA;AAChC,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,GAAA,CAAI,WAAA,CAAY,OAAO,EAAE,CAAA;AACzB,cAAA,MAAA,CAAO,cAAA,GAAiB,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,YAC9C;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,SAAA,EAAW;AACd,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,YAAA,GAAA,CAAI,kBAAkB,GAAA,CAAI,KAAA,IAAS,CAAC,GAAA,CAAI,OAAA,GAAU,aAAa,MAAM,CAAA;AACrE,YAAA;AAAA,UACF;AACA,UAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACtB,YAAA,MAAM,YAAA,GAAe,QAAQ,SAAA,CAAU,CAAC,QAAQ,GAAA,CAAI,EAAA,KAAO,IAAI,QAAQ,CAAA;AACvE,YAAA,MAAM,YACJ,YAAA,IAAgB,CAAA,GAAI,OAAA,CAAQ,MAAA,GAAS,IAAI,YAAA,GAAe,CAAA;AAC1D,YAAA,MAAM,MAAA,GAAS,QAAQ,SAAS,CAAA;AAChC,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,GAAA,CAAI,WAAA,CAAY,OAAO,EAAE,CAAA;AACzB,cAAA,MAAA,CAAO,cAAA,GAAiB,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,YAC9C;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,MAAA,EAAQ;AACX,UAAA,IAAI,GAAA,CAAI,MAAA,IAAU,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACpC,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,MAAM,MAAA,GAAS,QAAQ,CAAC,CAAA;AACxB,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,GAAA,CAAI,WAAA,CAAY,OAAO,EAAE,CAAA;AACzB,cAAA,MAAA,CAAO,cAAA,GAAiB,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,YAC9C;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,KAAA,EAAO;AACV,UAAA,IAAI,GAAA,CAAI,MAAA,IAAU,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AACpC,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA;AACzC,YAAA,IAAI,MAAA,EAAQ;AACV,cAAA,GAAA,CAAI,WAAA,CAAY,OAAO,EAAE,CAAA;AACzB,cAAA,MAAA,CAAO,cAAA,GAAiB,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,YAC9C;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,OAAA,EAAS;AACZ,UAAA,IAAI,GAAA,CAAI,MAAA,IAAU,GAAA,CAAI,QAAA,EAAU;AAC9B,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,MAAM,QAAA,GAAW,QAAA,CAAS,cAAA,CAAe,GAAA,CAAI,QAAQ,CAAA;AACrD,YAAA,IAAI,QAAA,IAAY,QAAA,CAAS,YAAA,CAAa,eAAe,MAAM,MAAA,EAAQ;AACjE,cAAA,MAAM,GAAA,GAAM,QAAA,CAAS,YAAA,CAAa,YAAY,CAAA,IAAK,EAAA;AACnD,cAAA,MAAM,OACJ,QAAA,CAAS,YAAA,CAAa,YAAY,CAAA,IAClC,SAAS,WAAA,IACT,GAAA;AACF,cAAA,GAAA,CAAI,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,YAC1B;AAAA,UACF;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,QAAA,EAAU;AACb,UAAA,IAAI,IAAI,MAAA,EAAQ;AACd,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,YAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AACnB,YAAA,GAAA,CAAI,YAAY,IAAI,CAAA;AAAA,UACtB;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,KAAA,EAAO;AACV,UAAA,IAAI,IAAI,MAAA,EAAQ;AACd,YAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AACnB,YAAA,GAAA,CAAI,YAAY,IAAI,CAAA;AAAA,UACtB;AACA,UAAA;AAAA,QACF;AAAA,QAEA,KAAK,WAAA,EAAa;AAChB,UAAA,IACE,GAAA,CAAI,OAAA,IACJ,CAAC,GAAA,CAAI,WAAA,IACL,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,IACvB,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA,EACnB;AACA,YAAA,MAAM,UAAU,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,KAAA,CAAM,SAAS,CAAC,CAAA;AAC9C,YAAA,GAAA,CAAI,WAAW,OAAO,CAAA;AAAA,UACxB;AACA,UAAA;AAAA,QACF;AAAA;AAGF,MAAA,SAAA,GAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA0C;AAC7D,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAA0C;AAC5D,MAAA,MAAA,GAAS,CAAC,CAAA;AAAA,IACZ,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA0C;AAC7D,MAAA,IAAI,UAAA,EAAY;AAChB,MAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,QAAA,GAAA,CAAI,kBAAkB,UAAU,CAAA;AAChC,QAAA,IAAI,CAAC,GAAA,CAAI,OAAA,IAAW,GAAA,CAAI,KAAA,EAAO;AAC7B,UAAA,GAAA,CAAI,QAAA,CAAS,SAAS,MAAA,EAAO;AAAA,QAC/B;AAAA,MACF;AACA,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAkC;AACrD,MAAA,GAAA,CAAI,SAAS,OAAA,GAAU,IAAA;AACvB,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,IAAI,CAAA;AAAA,MACV,WAAW,GAAA,EAAK;AACd,QAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,UAAA,GACJ,YAAA,KAAiB,MAAA,GAAY,YAAA,GAAe,GAAA,CAAI,WAAA;AAElD,IAAA,MAAM,YAAA,GAAe,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAE/D,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE5K,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACE,GAAI;AAAA,YACH,GAAA,EAAK,WAAA;AAAA,YACL,IAAA,EAAM,UAAA;AAAA,YACN,mBAAA,EAAqB,MAAA;AAAA,YACrB,iBAAiB,GAAA,CAAI,MAAA;AAAA,YACrB,iBAAiB,GAAA,CAAI,SAAA;AAAA,YACrB,uBAAA,EAAyB,IAAI,QAAA,IAAY,MAAA;AAAA,YACzC,eAAA,EAAiB,SAAA;AAAA,YACjB,cAAA,EAAgB,IAAI,SAAA,IAAa,MAAA;AAAA,YACjC,iBAAiB,UAAA,IAAc,MAAA;AAAA,YAC/B,WAAA,EAAa,IAAI,SAAA,IAAa,MAAA;AAAA,YAC9B,oBAAoB,GAAA,CAAI,eAAA;AAAA,YACxB,eAAA,EAAiB,IAAI,UAAA,IAAc,MAAA;AAAA,YACnC,MAAM,GAAA,CAAI,IAAA;AAAA,YACV,QAAA,EAAU,IAAI,UAAA,IAAc,MAAA;AAAA,YAC5B,IAAI,GAAA,CAAI,OAAA;AAAA,YACR,YAAA,EAAc,KAAA;AAAA,YACd,UAAA,EAAY,OAAA;AAAA,YACZ,KAAA,EAAO,UAAA;AAAA,YACP,QAAA,EAAU,YAAA;AAAA,YACV,SAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAS,WAAA;AAAA,YACT,MAAA,EAAQ,UAAA;AAAA,YACR,OAAA,EAAS,WAAA;AAAA,YACT,WAAA;AAAA,YACA,SAAA,EAAW,YAAA;AAAA,YACX,GAAG;AAAA;AACL;AAAA,OACF;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,IAAA,EAAK,MAAA;AAAA,QACL,IAAA,EAAK,UAAA;AAAA,QACL,mBAAA,EAAkB,MAAA;AAAA,QAClB,iBAAe,GAAA,CAAI,MAAA;AAAA,QACnB,iBAAe,GAAA,CAAI,SAAA;AAAA,QACnB,uBAAA,EAAuB,IAAI,QAAA,IAAY,MAAA;AAAA,QACvC,eAAA,EAAc,SAAA;AAAA,QACd,cAAA,EAAc,IAAI,SAAA,IAAa,MAAA;AAAA,QAC/B,iBAAe,UAAA,IAAc,MAAA;AAAA,QAC7B,WAAA,EAAW,IAAI,SAAA,IAAa,MAAA;AAAA,QAC5B,oBAAkB,GAAA,CAAI,eAAA;AAAA,QACtB,eAAA,EAAe,IAAI,UAAA,IAAc,MAAA;AAAA,QACjC,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,QAAA,EAAU,IAAI,UAAA,IAAc,MAAA;AAAA,QAC5B,QAAA,EAAU,UAAA;AAAA,QACV,IAAI,GAAA,CAAI,OAAA;AAAA,QACR,YAAA,EAAa,KAAA;AAAA,QACb,UAAA,EAAW,OAAA;AAAA,QACX,KAAA,EAAO,UAAA;AAAA,QACP,QAAA,EAAU,YAAA;AAAA,QACV,SAAA,EAAW,aAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACT,MAAA,EAAQ,UAAA;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,WAAA;AAAA,QACA,SAAA,EAAW,YAAA;AAAA,QACV,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAMO,IAAM,eAAA,GAAwB,OAAA,CAAA,UAAA;AAAA,EACnC,SAAS6K,gBAAAA,CAAgB,KAAA,EAAO,GAAA,EAAK;AACnC,IAAA,MAAM,MAAM,kBAAA,EAAmB;AAC/B,IAAA,MAAM;AAAA,MACJ,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAAa,gBAAgB,GAAA,CAAI,UAAA;AAEvC,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,IAAI,UAAA,EAAY;AAChB,MAAA,IAAI,IAAI,MAAA,EAAQ;AACd,QAAA,GAAA,CAAI,UAAU,KAAK,CAAA;AAAA,MACrB,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,kBAAkB,UAAU,CAAA;AAAA,MAClC;AACA,MAAA,IAAI,GAAA,CAAI,SAAS,OAAA,EAAS;AACxB,QAAA,GAAA,CAAI,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,MAC7B;AACA,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA;AAEnE,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE7K,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,QAAA;AAAA,UACL,QAAA,EAAU,EAAA;AAAA,UACV,YAAA,EAAW,gBAAA;AAAA,UACX,YAAA,EAAY,GAAA,CAAI,MAAA,GAAS,MAAA,GAAS,QAAA;AAAA,UAClC,iBAAe,UAAA,IAAc,MAAA;AAAA,UAC7B,OAAA,EAAS,WAAA;AAAA,UACT,SAAA,EAAW,cAAA;AAAA,UACV,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,EAAA;AAAA,QACV,YAAA,EAAW,gBAAA;AAAA,QACX,YAAA,EAAY,GAAA,CAAI,MAAA,GAAS,MAAA,GAAS,QAAA;AAAA,QAClC,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,cAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH,sCACCA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,2BAAA;AAAA,YACV,OAAA,EAAQ,WAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,GAAA;AAAA,YACZ,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,aAAA,EAAY,MAAA;AAAA,YAEZ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,cAAA,EAAe;AAAA;AAAA;AACzB;AAAA,KAEJ;AAAA,EAEJ;AACF;AAMO,IAAM,iBAAgD,CAAC;AAAA,EAC5D,QAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,OAAO,SAAA,KAAc,MAAA,mBACnBA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAuB,QAAA,EAAS,CAAA,mBAExCA,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAS,CAAA;AAEtB;AAMO,IAAM,eAAA,GAAwB,OAAA,CAAA,UAAA;AAAA,EACnC,SAAS8K,gBAAAA,CAAgB,KAAA,EAAO,GAAA,EAAK;AACnC,IAAA,MAAM,GAAA,GAAY,mBAAW,eAAe,CAAA;AAC5C,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAExE,IAAA,MAAM,EAAE,UAAU,KAAA,EAAO,SAAA,EAAW,OAAO,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAEjE,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAgC;AACnD,MAAA,GAAA,CAAI,WAAW,IAAI,CAAA;AACnB,MAAA,GAAA,CAAI,kBAAkB,OAAA,GAAU,IAAA;AAChC,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,IAAI,CAAA;AAAA,MACV,WAAW,GAAA,EAAK;AACd,QAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAGA,IAAM,wBAAgB,MAAM;AAC1B,MAAA,IAAI,GAAA,CAAI,MAAA,IAAU,GAAA,CAAI,iBAAA,CAAkB,OAAA,EAAS;AAC/C,QAAA,MAAM,SAAA,GAAY,IAAI,iBAAA,CAAkB,OAAA;AACxC,QAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,UACvB,SAAA,CAAU,iBAA8B,iBAAiB;AAAA,SAC3D;AACA,QAAA,MAAM,iBAAiB,UAAA,CAAW,MAAA;AAAA,UAChC,CAAC,EAAA,KAAO,EAAA,CAAG,YAAA,CAAa,eAAe,CAAA,KAAM;AAAA,SAC/C;AAEA,QAAA,GAAA,CAAI,aAAA,CAAc,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEvC,QAAA,IAAI,IAAI,gBAAA,EAAkB;AACxB,UAAA,IAAI,QAAA,GAA+B,IAAA;AACnC,UAAA,IAAI,GAAA,CAAI,gBAAA,KAAqB,OAAA,IAAW,cAAA,CAAe,SAAS,CAAA,EAAG;AACjE,YAAA,QAAA,GAAW,cAAA,CAAe,CAAC,CAAA,IAAK,IAAA;AAAA,UAClC,WAAW,GAAA,CAAI,gBAAA,KAAqB,MAAA,IAAU,cAAA,CAAe,SAAS,CAAA,EAAG;AACvE,YAAA,QAAA,GAAW,cAAA,CAAe,cAAA,CAAe,MAAA,GAAS,CAAC,CAAA,IAAK,IAAA;AAAA,UAC1D,CAAA,MAAA,IAAW,GAAA,CAAI,gBAAA,KAAqB,UAAA,EAAY;AAC9C,YAAA,MAAM,aAAa,cAAA,CAAe,IAAA;AAAA,cAChC,CAAC,EAAA,KAAO,EAAA,CAAG,YAAA,CAAa,eAAe,CAAA,KAAM;AAAA,aAC/C;AACA,YAAA,QAAA,GAAW,eAAe,cAAA,CAAe,MAAA,GAAS,IAAI,cAAA,CAAe,CAAC,KAAK,IAAA,GAAO,IAAA,CAAA;AAAA,UACpF;AAEA,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,GAAA,CAAI,WAAA,CAAY,SAAS,EAAE,CAAA;AAC3B,YAAA,QAAA,CAAS,cAAA,GAAiB,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,UAChD;AACA,UAAA,GAAA,CAAI,oBAAoB,IAAI,CAAA;AAAA,QAC9B;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,sBAAA,EAAwB,SAAS,CAAA;AACnE,IAAA,MAAM,YAAA,GAAoC;AAAA,MACxC,GAAG,GAAA,CAAI,cAAA;AAAA,MACP,GAAG;AAAA,KACL;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE9K,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,IAAA,EAAK,SAAA;AAAA,UACL,IAAI,GAAA,CAAI,SAAA;AAAA,UACR,mBAAiB,GAAA,CAAI,OAAA;AAAA,UACrB,sBAAA,EAAsB,GAAA,CAAI,OAAA,GAAU,IAAA,GAAO,MAAA;AAAA,UAC3C,WAAA,EAAW,GAAA,CAAI,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,UAClC,QAAA,EAAU,EAAA;AAAA,UACV,YAAA,EAAW,MAAA;AAAA,UACX,KAAA,EAAO,YAAA;AAAA,UACP,SAAA,EAAW,cAAA;AAAA,UACV,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACEA,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,IAAA,EAAK,SAAA;AAAA,QACL,IAAI,GAAA,CAAI,SAAA;AAAA,QACR,mBAAiB,GAAA,CAAI,OAAA;AAAA,QACrB,sBAAA,EAAsB,GAAA,CAAI,OAAA,GAAU,IAAA,GAAO,MAAA;AAAA,QAC3C,WAAA,EAAW,GAAA,CAAI,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,QAClC,QAAA,EAAU,EAAA;AAAA,QACV,YAAA,EAAW,MAAA;AAAA,QACX,KAAA,EAAO,YAAA;AAAA,QACP,SAAA,EAAW,cAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAMO,IAAM,YAAA,GAAqB,OAAA,CAAA,UAAA;AAAA,EAChC,SAAS+K,aAAAA,CAAa,KAAA,EAAO,GAAA,EAAK;AAChC,IAAA,MAAM,GAAA,GAAY,mBAAW,eAAe,CAAA;AAC5C,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAErE,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,OAAA;AAAA,MACP,KAAA;AAAA,MACA,YAAY,YAAA,GAAe,KAAA;AAAA,MAC3B,OAAA,GAAU,KAAA;AAAA,MACV,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,SAAS,CAAA,EAAG,GAAA,CAAI,SAAS,CAAA,KAAA,EAAQ,kBAAA,CAAmB,OAAO,CAAC,CAAA,CAAA;AAClE,IAAA,MAAM,OAAA,GAAgB,eAA8B,IAAI,CAAA;AAGxD,IAAA,MAAM,QAAA,GAAiB,gBAAQ,MAAM;AACnC,MAAA,IAAI,OAAO,OAAO,KAAA;AAClB,MAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,QAAA;AACzC,MAAA,IAAI,OAAO,QAAA,KAAa,QAAA,EAAU,OAAO,OAAO,QAAQ,CAAA;AACxD,MAAA,OAAO,OAAA;AAAA,IACT,CAAA,EAAG,CAAC,KAAA,EAAO,QAAA,EAAU,OAAO,CAAC,CAAA;AAG7B,IAAA,MAAM,SAAA,GAAkB,gBAAQ,MAAM;AACpC,MAAA,IAAI,GAAA,CAAI,MAAA,KAAW,KAAA,EAAO,OAAO,IAAA;AACjC,MAAA,IAAI,CAAC,GAAA,CAAI,WAAA,IAAe,CAAC,GAAA,CAAI,SAAS,OAAO,IAAA;AAC7C,MAAA,OAAO,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,QAAA,EAAU,IAAI,WAAW,CAAA;AAAA,IACtD,CAAA,EAAG,CAAC,GAAA,CAAI,MAAA,EAAQ,GAAA,CAAI,WAAA,EAAa,GAAA,CAAI,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,GAAA,CAAI,WAAW,CAAC,CAAA;AAGjF,IAAA,MAAM,UAAA,GAAmB,gBAAQ,MAAM;AACrC,MAAA,IAAI,IAAI,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,EAAG;AAC3C,QAAA,OAAO,GAAA,CAAI,KAAA,CAAM,QAAA,CAAS,OAAO,CAAA;AAAA,MACnC;AACA,MAAA,OAAO,IAAI,KAAA,KAAU,OAAA;AAAA,IACvB,GAAG,CAAC,GAAA,CAAI,SAAS,GAAA,CAAI,KAAA,EAAO,OAAO,CAAC,CAAA;AAEpC,IAAA,MAAM,aAAA,GAAgB,IAAI,QAAA,KAAa,MAAA;AAEvC,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwC;AAC3D,MAAA,IAAI,YAAA,IAAgB,IAAI,UAAA,EAAY;AACpC,MAAA,GAAA,CAAI,UAAA,CAAW,SAAS,QAAQ,CAAA;AAChC,MAAA,OAAA,GAAU,CAAC,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,CAAA,KAAwC;AAChE,MAAA,IAAI,CAAC,YAAA,IAAgB,CAAC,GAAA,CAAI,UAAA,EAAY;AACpC,QAAA,GAAA,CAAI,YAAY,MAAM,CAAA;AAAA,MACxB;AACA,MAAA,YAAA,GAAe,CAAC,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,IAAA,KAAgC;AACnD,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,QAAA,GAAA,CAAI,IAAI,CAAA;AAAA,MACV,WAAW,GAAA,EAAK;AACd,QAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,mBAAA,EAAqB,SAAS,CAAA;AAE7D,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACE/K,GAAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,WAAA;AAAA,UACL,IAAA,EAAK,QAAA;AAAA,UACL,EAAA,EAAI,MAAA;AAAA,UACJ,YAAA,EAAY,OAAA;AAAA,UACZ,YAAA,EAAY,QAAA;AAAA,UACZ,eAAA,EAAe,UAAA;AAAA,UACf,iBAAe,YAAA,IAAgB,MAAA;AAAA,UAC/B,kBAAA,EAAkB,gBAAgB,MAAA,GAAS,MAAA;AAAA,UAC3C,eAAA,EAAe,eAAe,MAAA,GAAS,MAAA;AAAA,UACvC,YAAA,EAAY,aAAa,SAAA,GAAY,WAAA;AAAA,UACrC,OAAA,EAAS,WAAA;AAAA,UACT,YAAA,EAAc,gBAAA;AAAA,UACd,SAAA,EAAW,WAAA;AAAA,UACV,GAAG,IAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,EAAA,EAAI,MAAA;AAAA,QACJ,YAAA,EAAY,OAAA;AAAA,QACZ,YAAA,EAAY,QAAA;AAAA,QACZ,eAAA,EAAe,UAAA;AAAA,QACf,iBAAe,YAAA,IAAgB,MAAA;AAAA,QAC/B,kBAAA,EAAkB,gBAAgB,MAAA,GAAS,MAAA;AAAA,QAC3C,eAAA,EAAe,eAAe,MAAA,GAAS,MAAA;AAAA,QACvC,YAAA,EAAY,aAAa,SAAA,GAAY,WAAA;AAAA,QACrC,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAc,gBAAA;AAAA,QACd,SAAA,EAAW,WAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,GAAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAAA,UACf,UAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,6BAAA,EAA8B,aAAA,EAAY,QACxD,QAAA,kBAAAA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,WAAA;AAAA,cACR,KAAA,EAAM,IAAA;AAAA,cACN,MAAA,EAAO,IAAA;AAAA,cACP,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAO,cAAA;AAAA,cACP,WAAA,EAAY,KAAA;AAAA,cACZ,aAAA,EAAc,OAAA;AAAA,cACd,cAAA,EAAe,OAAA;AAAA,cAEf,QAAA,kBAAAA,GAAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AAAA,WACpC,EACF;AAAA;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAMO,IAAM,kBAAA,GAA2B,OAAA,CAAA,UAAA,CAGtC,SAASgL,mBAAAA,CAAmB,OAAO,GAAA,EAAK;AACxC,EAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AACzC,EAAA,uBACEhL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,UAAA,CAAW,4BAAA,EAA8B,SAAS,CAAA;AAAA,MAC5D,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AAEM,IAAM,aAAA,GAAsB,OAAA,CAAA,UAAA;AAAA,EACjC,SAASiL,cAAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,IAAA,MAAM,EAAE,OAAA,EAAS,SAAA,EAAW,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAClD,IAAA,MAAM,YAAkB,OAAA,CAAA,KAAA,EAAM;AAE9B,IAAA,uBACErI,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,OAAA;AAAA,QACL,iBAAA,EAAiB,UAAU,SAAA,GAAY,MAAA;AAAA,QACvC,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,QACpD,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,OAAA,oBACC5C,GAAAA,CAAC,KAAA,EAAA,EAAI,IAAI,SAAA,EAAW,SAAA,EAAU,8BAC3B,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,UAED;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAMO,IAAM,aAAA,GAAsB,OAAA,CAAA,UAAA;AAAA,EACjC,SAASkL,cAAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,IAAA,MAAM,GAAA,GAAY,mBAAW,eAAe,CAAA;AAC5C,IAAA,IAAI,CAAC,GAAA,EAAK,MAAM,IAAI,MAAM,4CAA4C,CAAA;AACtE,IAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AAGzC,IAAA,IAAI,GAAA,CAAI,UAAA,IAAc,GAAA,CAAI,SAAA,EAAW;AACnC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,uBACElL,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,cAAA;AAAA,QACL,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,QACpD,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAMO,IAAM,WAAA,GAAoB,OAAA,CAAA,UAAA;AAAA,EAC/B,SAASmL,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM,MAAM,kBAAA,EAAmB;AAC/B,IAAA,MAAM;AAAA,MACJ,KAAA,EAAO,MAAA;AAAA,MACP,QAAA;AAAA,MACA,UAAA,EAAY,YAAA;AAAA,MACZ,SAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAG;AAAA,KAAI,GAAI,KAAA;AAEb,IAAA,MAAM,UAAA,GAAa,gBAAgB,GAAA,CAAI,UAAA;AAEvC,IAAA,MAAM,YAAA,GAAe,CACnB,CAAA,KACG;AACH,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,UAAA,EAAY;AAChB,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,EAAS;AAAA,MACX,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,WAAW,MAAM,CAAA;AAAA,MACvB;AACA,MAAA,GAAA,CAAI,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AACnE,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,YAAA,CAAa,CAAC,CAAA;AAAA,MAChB;AAAA,IACF,CAAA;AAEA,IAAA,uBACEvI,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,UAAA,CAAW,kBAAA,EAAoB,SAAS,CAAA;AAAA,QAClD,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAA5C,GAAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAAA,0BAChBA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,QAAA,EAAU,aAAa,EAAA,GAAK,CAAA;AAAA,cAC5B,cAAY,CAAA,OAAA,EAAU,OAAO,QAAA,KAAa,QAAA,GAAW,WAAW,MAAM,CAAA,CAAA;AAAA,cACtE,SAAA,EAAU,yBAAA;AAAA,cACV,QAAA,EAAU,UAAA;AAAA,cACV,OAAA,EAAS,YAAA;AAAA,cACT,SAAA,EAAW,aAAA;AAAA,cACX,WAAA,EAAa,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,cACtC,QAAA,EAAA;AAAA;AAAA;AAED;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAMO,IAAM,aAAA,GAAsB,OAAA,CAAA,UAAA;AAAA,EACjC,SAASoL,cAAAA,CAAc,KAAA,EAAO,GAAA,EAAK;AACjC,IAAA,MAAM,MAAM,kBAAA,EAAmB;AAC/B,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,EAAU,YAAA;AAAA,MACV,QAAA,GAAW,CAAA;AAAA,MACX,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,UAAA,GAAa,gBAAgB,GAAA,CAAI,UAAA;AAEvC,IAAA,MAAM,WACJ,GAAA,CAAI,OAAA,GACA,KAAA,CAAM,OAAA,CAAQ,IAAI,KAAK,CAAA,IAAK,GAAA,CAAI,KAAA,CAAM,SAAS,CAAA,GAC/C,OAAA,CAAQ,GAAA,CAAI,KAAA,IAAS,IAAI,WAAW,CAAA;AAE1C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,MAAM,WAAA,GAAc,CAClB,CAAA,KACG;AACH,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,UAAA,EAAY;AAChB,MAAA,GAAA,CAAI,cAAA,EAAe;AACnB,MAAA,GAAA,CAAI,QAAA,CAAS,SAAS,KAAA,EAAM;AAC5B,MAAA,OAAA,GAAU,CAAwC,CAAA;AAAA,IACpD,CAAA;AAEA,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA8C;AACnE,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,WAAA,CAAY,CAAC,CAAA;AAAA,MACf;AACA,MAAA,SAAA,GAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,uBACEpL,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,aAAa,EAAA,GAAK,QAAA;AAAA,QAC5B,YAAA,EAAW,iBAAA;AAAA,QACX,SAAA,EAAW,UAAA,CAAW,oBAAA,EAAsB,SAAS,CAAA;AAAA,QACrD,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACX,WAAA,EAAa,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,QACpC,GAAG,IAAA;AAAA,QAEH,sCACC4C,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,WAAA;AAAA,YACR,KAAA,EAAM,IAAA;AAAA,YACN,MAAA,EAAO,IAAA;AAAA,YACP,IAAA,EAAK,MAAA;AAAA,YACL,MAAA,EAAO,cAAA;AAAA,YACP,WAAA,EAAY,GAAA;AAAA,YACZ,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,aAAA,EAAY,MAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAA5C,GAAAA,CAAC,UAAK,EAAA,EAAG,IAAA,EAAK,IAAG,GAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,CAAA;AAAA,8BACpCA,GAAAA,CAAC,MAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,IAAG,GAAA,EAAI,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA;AAAA;AACtC;AAAA,KAEJ;AAAA,EAEJ;AACF;AAwBO,IAAM,QAAA,GAAW;AACxB,QAAA,CAAS,IAAA,GAAO,YAAA;AAChB,QAAA,CAAS,OAAA,GAAU,eAAA;AACnB,QAAA,CAAS,KAAA,GAAQ,aAAA;AACjB,QAAA,CAAS,OAAA,GAAU,eAAA;AACnB,QAAA,CAAS,MAAA,GAAS,cAAA;AAClB,QAAA,CAAS,OAAA,GAAU,eAAA;AACnB,QAAA,CAAS,IAAA,GAAO,YAAA;AAChB,QAAA,CAAS,KAAA,GAAQ,aAAA;AACjB,QAAA,CAAS,UAAA,GAAa,kBAAA;AACtB,QAAA,CAAS,KAAA,GAAQ,aAAA;AACjB,QAAA,CAAS,GAAA,GAAM,WAAA;AACf,QAAA,CAAS,KAAA,GAAQ,aAAA;AAEV,IAAM,YAAA,GAAe;ACruC5B,IAAM,aAAA,GAAsBqL,sBAAyC,IAAI,CAAA;AAEzE,SAAS,iBAAiB,aAAA,EAA2C;AACnE,EAAA,MAAM,OAAA,GAAgBA,mBAAW,aAAa,CAAA;AAC9C,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,WAAW,aAAa,CAAA,4DAAA;AAAA,KAC1B;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEA,IAAM,kBAAA,GACJ,2IAAA;AAKK,IAAM,aAAwC,CAAC;AAAA,EACpD,MAAA,EAAQ,UAAA;AAAA,EACR,WAAA,GAAc,KAAA;AAAA,EACd,OAAA,EAAS,WAAA;AAAA,EACT,UAAA,GAAa,IAAA;AAAA,EACb,mBAAA,GAAsB,IAAA;AAAA,EACtB,eAAA;AAAA,EACA,aAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,UAAA,GAAa,IAAA;AAAA,EACb;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,oBAAA,CAA8B;AAAA,IACxD,KAAA,EAAO,UAAA;AAAA,IACP,YAAA,EAAc;AAAA,GACf,CAAA;AAED,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAUA,iBAAiB,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAUA,iBAAiB,EAAE,CAAA;AACnE,EAAA,MAAM,UAAA,GAAmBA,eAA2B,IAAI,CAAA;AAExD,EAAA,MAAM,UAAA,GAAmBA,oBAAY,MAAM;AACzC,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,MAAM,WAAA,GAAoBA,oBAAY,MAAM;AAC1C,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,WAAA,IAAc;AAAA,EAChB,CAAA,EAAG,CAAC,SAAA,EAAW,WAAW,CAAC,CAAA;AAE3B,EAAA,MAAM,YAAA,GAAqBA,OAAA,CAAA,OAAA;AAAA,IACzB,OAAO;AAAA,MACL,MAAA,EAAQ,CAAC,CAAC,MAAA;AAAA,MACV,MAAA,EAAQ,UAAA;AAAA,MACR,OAAA,EAAS,WAAA;AAAA,MACT,UAAA;AAAA,MACA,mBAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,MAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,mBAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACErL,GAAAA,CAAC,aAAA,CAAc,UAAd,EAAuB,KAAA,EAAO,cAC5B,QAAA,EACH,CAAA;AAEJ;AACA,UAAA,CAAW,WAAA,GAAc,aAAA;AAKlB,IAAM,aAAA,GAAsBqL,OAAA,CAAA,UAAA,CAGjC,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,YAAA,KAAiB;AACpE,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,iBAAiB,SAAS,CAAA;AACzD,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,UAAA,EAAY,YAAY,CAAA;AAEvD,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,IAAA,OAAA,GAAU,CAAC,CAAA;AACX,IAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,MAAA,MAAA,EAAO;AAAA,IACT;AAAA,EACF,CAAA;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACErL,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,eAAA,EAAc,QAAA;AAAA,QACd,OAAA,EAAS,WAAA;AAAA,QACR,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,IAAA,EAAK,QAAA;AAAA,MACL,eAAA,EAAc,QAAA;AAAA,MACd,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,eAA4C,CAAC;AAAA,EACxD,SAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,gBAAA,CAAiB,QAAQ,CAAA;AAE5C,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEA,GAAAA,CAAC,MAAA,EAAA,EAAQ,GAAI,SAAA,KAAc,MAAA,GAAY,EAAE,SAAA,EAAU,GAAI,EAAC,EACrD,QAAA,EACH,CAAA;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,aAAA,GAAsBqL,OAAA,CAAA,UAAA,CAGjC,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,OAAA,EAAS,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,YAAA,KAAiB;AAC/E,EAAA,MAAM,EAAE,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAW,GAC/C,iBAAiB,SAAS,CAAA;AAE5B,EAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwC;AAC3D,IAAA,OAAA,GAAU,CAAC,CAAA;AACX,IAAA,IAAI,CAAC,CAAA,CAAE,gBAAA,IAAoB,uBAAuB,CAAA,CAAE,MAAA,KAAW,EAAE,aAAA,EAAe;AAC9E,MAAA,OAAA,EAAQ;AAAA,IACV;AAAA,EACF,CAAA;AAEA,EAAA,MAAMC,WAAAA,GAAa;AAAA,IACjB,oBAAA;AAAA,IACA,CAAC,UAAA,IAAc,yBAAA;AAAA,IACf;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEtL,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,YAAA;AAAA,QACL,SAAA,EAAWsL,WAAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACR,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEtL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,YAAA;AAAA,MACL,SAAA,EAAWsL,WAAAA;AAAA,MACX,OAAA,EAAS,WAAA;AAAA,MACR,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,aAAA,GAAsBD,OAAA,CAAA,UAAA,CAGjC,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,YAAA,KAAiB;AACjF,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF,GAAI,iBAAiB,SAAS,CAAA;AAE9B,EAAA,MAAM,WAAA,GAAoBA,eAA8B,IAAI,CAAA;AAC5D,EAAA,MAAM,SAAA,GAAY,YAAA,CAAa,WAAA,EAAa,YAAY,CAAA;AACxD,EAAA,MAAM,cAAA,GAAuBA,eAA2B,IAAI,CAAA;AAG5D,EAAMA,kBAAU,MAAM;AACpB,IAAA,IAAI,CAAC,MAAA,EAAQ;AAGb,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,cAAA,CAAe,UAAU,QAAA,CAAS,aAAA;AAAA,IACpC;AAGA,IAAA,MAAM,mBACJ,OAAO,QAAA,KAAa,cAAc,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,EAAA;AACnE,IAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAAA,IACjC;AAGA,IAAA,MAAM,OAAA,GAAU,sBAAsB,MAAM;AAC1C,MAAA,IAAI,iBAAiB,OAAA,EAAS;AAC5B,QAAA,eAAA,CAAgB,QAAQ,KAAA,EAAM;AAAA,MAChC,CAAA,MAAA,IAAW,YAAY,OAAA,EAAS;AAC9B,QAAA,MAAM,UAAA,GAAa,YAAY,OAAA,CAAQ,gBAAA;AAAA,UACrC;AAAA,SACF;AACA,QAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,UAAA,UAAA,CAAW,CAAC,GAAG,KAAA,EAAM;AAAA,QACvB,CAAA,MAAO;AACL,UAAA,WAAA,CAAY,QAAQ,KAAA,EAAM;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,oBAAA,CAAqB,OAAO,CAAA;AAE5B,MAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,gBAAA;AAAA,MACjC;AAEA,MAAA,MAAM,cAAA,GACJ,aAAA,EAAe,OAAA,IAAW,UAAA,CAAW,WAAW,cAAA,CAAe,OAAA;AACjE,MAAA,IAAI,cAAA,IAAkB,OAAO,cAAA,CAAe,KAAA,KAAU,UAAA,EAAY;AAChE,QAAA,cAAA,CAAe,KAAA,EAAM;AAAA,MACvB;AAAA,IACF,CAAA;AAAA,EACF,GAAG,CAAC,MAAA,EAAQ,eAAA,EAAiB,aAAA,EAAe,UAAU,CAAC,CAAA;AAGvD,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAA2C;AAChE,IAAA,SAAA,GAAY,CAAC,CAAA;AACb,IAAA,IAAI,EAAE,gBAAA,EAAkB;AAExB,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,QAAA,IAAY,UAAA,EAAY;AACpC,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,OAAA,EAAQ;AACR,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,KAAA,IAAS,WAAA,CAAY,OAAA,EAAS;AAC1C,MAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,QACvB,WAAA,CAAY,OAAA,CAAQ,gBAAA,CAA8B,kBAAkB;AAAA,OACtE,CAAE,MAAA,CAAO,CAAC,EAAA,KAAO,CAAC,EAAA,CAAG,YAAA,CAAa,UAAU,CAAA,IAAK,EAAA,CAAG,YAAA,CAAa,aAAa,MAAM,MAAM,CAAA;AAE1F,MAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,cAAA,GAAiB,WAAW,CAAC,CAAA;AACnC,MAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,UAAA,CAAW,MAAA,GAAS,CAAC,CAAA;AAEtD,MAAA,IAAI,EAAE,QAAA,EAAU;AACd,QAAA,IACE,SAAS,aAAA,KAAkB,cAAA,IAC3B,QAAA,CAAS,aAAA,KAAkB,YAAY,OAAA,EACvC;AACA,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,aAAA,EAAe,KAAA,EAAM;AAAA,QACvB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAI,QAAA,CAAS,kBAAkB,aAAA,EAAe;AAC5C,UAAA,CAAA,CAAE,cAAA,EAAe;AACjB,UAAA,cAAA,EAAgB,KAAA,EAAM;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAMC,WAAAA,GAAa;AAAA,IACjB,oBAAA;AAAA,IACA,uBAAuB,IAAI,CAAA,CAAA;AAAA,IAC3B,CAAC,UAAA,IAAc,yBAAA;AAAA,IACf;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,IAAA,EAAM,QAAA;AAAA,IACN,YAAA,EAAc,IAAA;AAAA,IACd,GAAI,OAAA,GAAU,EAAE,iBAAA,EAAmB,OAAA,KAAY,EAAC;AAAA,IAChD,GAAI,aAAA,GAAgB,EAAE,kBAAA,EAAoB,aAAA,KAAkB,EAAC;AAAA,IAC7D,QAAA,EAAU;AAAA,GACZ;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEtL,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAWsL,WAAAA;AAAA,QACX,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,cAAA;AAAA,QACH,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AAEA,EAAA,uBACEtL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAWsL,WAAAA;AAAA,MACX,SAAA,EAAW,aAAA;AAAA,MACV,GAAG,cAAA;AAAA,MACH,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,gBAAA;AAKrB,IAAM,YAAA,GAAqBD,OAAA,CAAA,UAAA;AAAA,EAChC,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,uBACErL,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,CAAC,mBAAA,EAAqB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,QACnE,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,WAAA,GAAoBqL,OAAA,CAAA,UAAA,CAG/B,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACzE,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,gBAAA,CAAiB,OAAO,CAAA;AAC/C,EAAA,MAAM,SAAeA,OAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,KAAK,MAAA,IAAU,MAAA;AAErB,EAAMA,kBAAU,MAAM;AACpB,IAAA,UAAA,CAAW,EAAE,CAAA;AACb,IAAA,OAAO,MAAM,WAAW,EAAE,CAAA;AAAA,EAC5B,CAAA,EAAG,CAAC,EAAA,EAAI,UAAU,CAAC,CAAA;AAEnB,EAAA,MAAMC,WAAAA,GAAa,CAAC,kBAAA,EAAoB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE3E,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEtL,IAAC,IAAA,EAAA,EAAK,GAAA,EAAU,IAAQ,SAAA,EAAWsL,WAAAA,EAAa,GAAG,KAAA,EAChD,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEtL,IAAC,IAAA,EAAA,EAAG,GAAA,EAAU,IAAQ,SAAA,EAAWsL,WAAAA,EAAa,GAAG,KAAA,EAC9C,QAAA,EACH,CAAA;AAEJ,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,iBAAA,GAA0BD,OAAA,CAAA,UAAA,CAGrC,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACzE,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,gBAAA,CAAiB,aAAa,CAAA;AAC3D,EAAA,MAAM,SAAeA,OAAA,CAAA,KAAA,EAAM;AAC3B,EAAA,MAAM,KAAK,MAAA,IAAU,MAAA;AAErB,EAAMA,kBAAU,MAAM;AACpB,IAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,IAAA,OAAO,MAAM,iBAAiB,EAAE,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,EAAA,EAAI,gBAAgB,CAAC,CAAA;AAEzB,EAAA,MAAMC,WAAAA,GAAa,CAAC,iBAAA,EAAmB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAE1E,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEtL,IAAC,IAAA,EAAA,EAAK,GAAA,EAAU,IAAQ,SAAA,EAAWsL,WAAAA,EAAa,GAAG,KAAA,EAChD,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEtL,IAAC,GAAA,EAAA,EAAE,GAAA,EAAU,IAAQ,SAAA,EAAWsL,WAAAA,EAAa,GAAG,KAAA,EAC7C,QAAA,EACH,CAAA;AAEJ,CAAC;AACD,iBAAA,CAAkB,WAAA,GAAc,oBAAA;AAKzB,IAAM,UAAA,GAAmBD,OAAA,CAAA,UAAA;AAAA,EAC9B,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,uBACErL,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,CAAC,iBAAA,EAAmB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,QACjE,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,UAAA,CAAW,WAAA,GAAc,aAAA;AAKlB,IAAM,YAAA,GAAqBqL,OAAA,CAAA,UAAA;AAAA,EAChC,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,uBACErL,GAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,CAAC,mBAAA,EAAqB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,QACnE,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,WAAA,GAAoBqL,OAAA,CAAA,UAAA;AAAA,EAC/B,CAAC,EAAE,OAAA,GAAU,KAAA,EAAO,SAAA,EAAW,SAAS,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpE,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,CAAiB,OAAO,CAAA;AAE5C,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAA2C;AAC9D,MAAA,OAAA,GAAU,CAAC,CAAA;AACX,MAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,QAAA,OAAA,EAAQ;AAAA,MACV;AAAA,IACF,CAAA;AAEA,IAAA,MAAMC,WAAAA,GAAa,CAAC,yBAAA,EAA2B,SAAS,EACrD,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA;AAEX,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEtL,GAAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAU,SAAA,EAAWsL,aAAY,OAAA,EAAS,WAAA,EAAc,GAAG,KAAA,EAC9D,QAAA,EACH,CAAA;AAAA,IAEJ;AAEA,IAAA,uBACEtL,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAWsL,WAAAA;AAAA,QACX,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAY,KAAA,CAAM,YAAY,CAAA,IAAK,cAAA;AAAA,QAClC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,KACf;AAAA,EAEJ;AACF;AACA,WAAA,CAAY,WAAA,GAAc,cAAA;AAKnB,IAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY;AAAA,EAC9C,IAAA,EAAM,UAAA;AAAA,EACN,OAAA,EAAS,aAAA;AAAA,EACT,MAAA,EAAQ,YAAA;AAAA,EACR,OAAA,EAAS,aAAA;AAAA,EACT,OAAA,EAAS,aAAA;AAAA,EACT,MAAA,EAAQ,YAAA;AAAA,EACR,KAAA,EAAO,WAAA;AAAA,EACP,WAAA,EAAa,iBAAA;AAAA,EACb,IAAA,EAAM,UAAA;AAAA,EACN,MAAA,EAAQ,YAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAC;AAKM,IAAM,KAAA,GAAQ;AChkBrB,IAAM,eAAA,GAAkB,OAAO,MAAA,EAAQ;AAAA,EACrC,IAAA,EAAM,cAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,iBAAA,EAAmB,CAAC,IAAA,KAClB,IAAA,KAAS,SAAA,IACT,IAAA,KAAS,MAAA,IACT,IAAA,KAAS,aAAA,IACT,IAAA,KAAS,QAAA,IACT,IAAA,KAAS,YACT,IAAA,KAAS;AACb,CAAC,CAAA,CAAE,EAAE,CAAA;AAKE,IAAM,KAAA,GAAcC,OAAA,CAAA,UAAA;AAAA,EACzB,CACE;AAAA,IACE,OAAA,GAAU,QAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,WAAA,GAAc,SAAA;AAAA,IACd,MAAA,GAAS,KAAA;AAAA,IACT,MAAA,GAAS,KAAA;AAAA,IACT,OAAA,GAAU,KAAA;AAAA,IACV,SAAA;AAAA,IACA,KAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,cAAA,GAAiB,UAAA;AAAA,MACrB,UAAA;AAAA,MACA,aAAa,OAAO,CAAA,CAAA;AAAA,MACpB,aAAa,IAAI,CAAA,CAAA;AAAA,MACjB,aAAa,WAAW,CAAA,CAAA;AAAA,MACxB,MAAA,IAAU,gBAAA;AAAA,MACV;AAAA,KACF;AAEA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,uBACEvL,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,IAAA;AAAA,UACJ,GAAA;AAAA,UACA,SAAA,EAAW,cAAA;AAAA,UACX,KAAA;AAAA,UACA,EAAA;AAAA,UACC,GAAG,KAAA;AAAA,UAEH;AAAA;AAAA,OACH;AAAA,IAEJ;AAEA,IAAA,uBACE4C,IAAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,cAAA;AAAA,QACX,KAAA;AAAA,QACA,EAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,MAAA,oBAAU5C,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,eAAA,EAAgB,eAAY,MAAA,EAAO,CAAA;AAAA,UAC7D;AAAA;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;ACjEpB,IAAM,eAAqBwL,OAAA,CAAA,aAAA,CAAiC;AAAA,EAC1D,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,QAAA;AAAA,EACT,WAAA,EAAa;AACf,CAAC,CAAA;AAKM,IAAM,SAAA,GAAkBA,OAAA,CAAA,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,OAAA,GAAU,QAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,WAAA,GAAc,KAAA;AAAA,IACd,cAAA,GAAiB,KAAA;AAAA,IACjB,SAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAMF,WAAAA,GAAa;AAAA,MACjB,UAAA;AAAA,MACA,aAAa,OAAO,CAAA,CAAA;AAAA,MACpB,aAAa,IAAI,CAAA,CAAA;AAAA,MACjB,WAAA,IAAe,qBAAA;AAAA,MACf,cAAA,IAAkB,yBAAA;AAAA,MAClB;AAAA,KACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,IAAA,MAAM,YAAA,GAAqBE,OAAA,CAAA,OAAA;AAAA,MACzB,OAAO;AAAA,QACL,IAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,IAAA,EAAM,OAAA,EAAS,WAAW;AAAA,KAC7B;AAEA,IAAA,uBACExL,GAAAA,CAAC,YAAA,CAAa,QAAA,EAAb,EAAsB,OAAO,YAAA,EAC5B,QAAA,kBAAAA,GAAAA,CAAC,OAAA,EAAA,EAAM,KAAU,SAAA,EAAWsL,WAAAA,EAAa,GAAG,KAAA,EACzC,UACH,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,SAAA,CAAU,WAAA,GAAc,YAAA;AAKjB,IAAM,cAAA,GAAuBE,OAAA,CAAA,UAAA,CAGlC,CAAC,EAAE,QAAA,GAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC9D,EAAA,uBACExL,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW;AAAA,QACT,qBAAA;AAAA,QACA,QAAA,IAAY,+BAAA;AAAA,QACZ;AAAA,OACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAAA,MACV,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,cAAA,CAAe,WAAA,GAAc,iBAAA;AAKtB,IAAM,YAAA,GAAqBwL,OAAA,CAAA,UAAA,CAGhC,CAAC,EAAE,SAAA,GAAY,QAAA,EAAU,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAClE,EAAA,MAAMF,WAAAA,GAAa;AAAA,IACjB,mBAAA;AAAA,IACA,cAAc,KAAA,IAAS,wBAAA;AAAA,IACvB;AAAA,GACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,EAAA,uBACEtL,IAAC,SAAA,EAAA,EAAQ,GAAA,EAAU,WAAWsL,WAAAA,EAAa,GAAG,OAC3C,QAAA,EACH,CAAA;AAEJ,CAAC;AACD,YAAA,CAAa,WAAA,GAAc,eAAA;AAKpB,IAAM,UAAA,GAAmBE,mBAG9B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5C,EAAA,uBACExL,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAC,iBAAA,EAAmB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,aAAA;AAKlB,IAAM,UAAA,GAAmBwL,mBAG9B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5C,EAAA,uBACExL,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAC,iBAAA,EAAmB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,aAAA;AAKlB,IAAM,UAAA,GAAmBwL,mBAG9B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5C,EAAA,uBACExL,GAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,CAAC,iBAAA,EAAmB,SAAS,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,MACjE,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC;AACD,UAAA,CAAW,WAAA,GAAc,aAAA;AAKlB,IAAM,OAAA,GAAgBwL,OAAA,CAAA,UAAA;AAAA,EAC3B,CAAC,EAAE,WAAA,EAAa,eAAA,EAAiB,UAAA,GAAa,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5F,IAAA,MAAM,YAAA,GAAqBA,mBAAW,YAAY,CAAA;AAClD,IAAA,MAAM,SAAA,GAAY,mBAAmB,YAAA,CAAa,WAAA;AAElD,IAAA,MAAMF,WAAAA,GAAa;AAAA,MACjB,cAAA;AAAA,MACA,SAAA,IAAa,yBAAA;AAAA,MACb,UAAA,IAAc,wBAAA;AAAA,MACd;AAAA,KACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,IAAA,uBACEtL,IAAC,IAAA,EAAA,EAAG,GAAA,EAAU,WAAWsL,WAAAA,EAAa,GAAG,OACtC,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,UAAA;AAKf,IAAM,OAAA,GAAgBE,OAAA,CAAA,UAAA;AAAA,EAI3B,CACE;AAAA,IACE,SAAA,GAAY,KAAA;AAAA,IACZ,KAAA;AAAA,IACA,UAAA,GAAa,KAAA;AAAA,IACb,aAAA;AAAA,IACA,KAAA,GAAQ,KAAA;AAAA,IACR,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,gBAAA,GAAmB,UAAA,GACrB,aAAA,KAAkB,KAAA,GAChB,WAAA,GACA,kBAAkB,MAAA,GAClB,YAAA,GACA,MAAA,GACF,KAAA,CAAM,WAAW,CAAA;AAErB,IAAA,MAAMF,WAAAA,GAAa;AAAA,MACjB,cAAA;AAAA,MACA,SAAA,IAAa,uBAAA;AAAA,MACb,KAAA,IAAS,uBAAuB,KAAK,CAAA,CAAA;AAAA,MACrC,UAAA,IAAc,wBAAA;AAAA,MACd,aAAA,IACE,aAAA,KAAkB,MAAA,IAClB,CAAA,qBAAA,EAAwB,aAAa,CAAA,CAAA;AAAA,MACvC;AAAA,KACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAiD;AACtE,MAAA,IAAI,eAAe,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,CAAA,EAAM;AACtD,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,OAAA,GAAU,CAAsD,CAAA;AAAA,MAClE;AACA,MAAA,SAAA,GAAY,CAAC,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,uBACEtL,GAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA,EAAU,QAAA,KAAa,UAAA,GAAa,CAAA,GAAI,MAAA,CAAA;AAAA,QACxC,WAAA,EAAW,gBAAA;AAAA,QACX,SAAA,EAAWsL,WAAAA;AAAA,QACX,OAAA;AAAA,QACA,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,KAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,UAAA;AAKf,IAAM,OAAA,GAAgBE,OAAA,CAAA,UAAA;AAAA,EAC3B,CAAC,EAAE,SAAA,GAAY,KAAA,EAAO,KAAA,EAAO,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACpE,IAAA,MAAMF,WAAAA,GAAa;AAAA,MACjB,cAAA;AAAA,MACA,SAAA,IAAa,uBAAA;AAAA,MACb,KAAA,IAAS,uBAAuB,KAAK,CAAA,CAAA;AAAA,MACrC;AAAA,KACF,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AAEX,IAAA,uBACEtL,IAAC,IAAA,EAAA,EAAG,GAAA,EAAU,WAAWsL,WAAAA,EAAa,GAAG,OACtC,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AACA,OAAA,CAAQ,WAAA,GAAc,UAAA;AAKf,IAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,SAAA,EAAW;AAAA,EAC5C,IAAA,EAAM,SAAA;AAAA,EACN,SAAA,EAAW,cAAA;AAAA,EACX,OAAA,EAAS,YAAA;AAAA,EACT,KAAA,EAAO,UAAA;AAAA,EACP,KAAA,EAAO,UAAA;AAAA,EACP,KAAA,EAAO,UAAA;AAAA,EACP,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI,OAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAC","file":"index.mjs","sourcesContent":["import { Palette, ColorMode } from \"./types\";\r\n\r\nexport const lightPalette: Palette = {\r\n mode: \"light\",\r\n primary: {\r\n light: \"#818cf8\", // indigo-400\r\n main: \"#6366f1\", // indigo-500\r\n dark: \"#4f46e5\", // indigo-600\r\n contrastText: \"#ffffff\",\r\n },\r\n secondary: {\r\n light: \"#a78bfa\", // violet-400\r\n main: \"#8b5cf6\", // violet-500\r\n dark: \"#7c3aed\", // violet-600\r\n contrastText: \"#ffffff\",\r\n },\r\n error: {\r\n light: \"#f87171\", // red-400\r\n main: \"#ef4444\", // red-500\r\n dark: \"#dc2626\", // red-600\r\n contrastText: \"#ffffff\",\r\n },\r\n warning: {\r\n light: \"#fbbf24\", // amber-400\r\n main: \"#f59e0b\", // amber-500\r\n dark: \"#d97706\", // amber-600\r\n contrastText: \"#18181b\",\r\n },\r\n info: {\r\n light: \"#38bdf8\", // sky-400\r\n main: \"#0ea5e9\", // sky-500\r\n dark: \"#0284c7\", // sky-600\r\n contrastText: \"#ffffff\",\r\n },\r\n success: {\r\n light: \"#34d399\", // emerald-400\r\n main: \"#10b981\", // emerald-500\r\n dark: \"#059669\", // emerald-600\r\n contrastText: \"#ffffff\",\r\n },\r\n text: {\r\n primary: \"rgba(0, 0, 0, 0.87)\",\r\n secondary: \"rgba(0, 0, 0, 0.6)\",\r\n disabled: \"rgba(0, 0, 0, 0.38)\",\r\n },\r\n background: {\r\n default: \"#f8fafc\",\r\n paper: \"#ffffff\",\r\n surface: \"#ffffff\",\r\n },\r\n divider: \"rgba(0, 0, 0, 0.12)\",\r\n action: {\r\n active: \"rgba(0, 0, 0, 0.54)\",\r\n hover: \"rgba(0, 0, 0, 0.04)\",\r\n hoverOpacity: 0.04,\r\n selected: \"rgba(0, 0, 0, 0.08)\",\r\n selectedOpacity: 0.08,\r\n disabled: \"rgba(0, 0, 0, 0.26)\",\r\n disabledBackground: \"rgba(0, 0, 0, 0.12)\",\r\n focus: \"rgba(0, 0, 0, 0.12)\",\r\n focusOpacity: 0.12,\r\n },\r\n};\r\n\r\nexport const darkPalette: Palette = {\r\n mode: \"dark\",\r\n primary: {\r\n light: \"#a5b4fc\", // indigo-300\r\n main: \"#818cf8\", // indigo-400\r\n dark: \"#6366f1\", // indigo-500\r\n contrastText: \"#09090b\",\r\n },\r\n secondary: {\r\n light: \"#c4b5fd\", // violet-300\r\n main: \"#a78bfa\", // violet-400\r\n dark: \"#8b5cf6\", // violet-500\r\n contrastText: \"#09090b\",\r\n },\r\n error: {\r\n light: \"#fca5a5\", // red-300\r\n main: \"#f87171\", // red-400\r\n dark: \"#ef4444\", // red-500\r\n contrastText: \"#09090b\",\r\n },\r\n warning: {\r\n light: \"#fde68a\", // amber-200\r\n main: \"#fbbf24\", // amber-400\r\n dark: \"#f59e0b\", // amber-500\r\n contrastText: \"#09090b\",\r\n },\r\n info: {\r\n light: \"#7dd3fc\", // sky-300\r\n main: \"#38bdf8\", // sky-400\r\n dark: \"#0ea5e9\", // sky-500\r\n contrastText: \"#09090b\",\r\n },\r\n success: {\r\n light: \"#6ee7b7\", // emerald-300\r\n main: \"#34d399\", // emerald-400\r\n dark: \"#10b981\", // emerald-500\r\n contrastText: \"#09090b\",\r\n },\r\n text: {\r\n primary: \"rgba(255, 255, 255, 0.95)\",\r\n secondary: \"rgba(255, 255, 255, 0.7)\",\r\n disabled: \"rgba(255, 255, 255, 0.38)\",\r\n },\r\n background: {\r\n default: \"#09090b\",\r\n paper: \"#18181b\",\r\n surface: \"#18181b\",\r\n },\r\n divider: \"rgba(255, 255, 255, 0.12)\",\r\n action: {\r\n active: \"rgba(255, 255, 255, 0.7)\",\r\n hover: \"rgba(255, 255, 255, 0.08)\",\r\n hoverOpacity: 0.08,\r\n selected: \"rgba(255, 255, 255, 0.16)\",\r\n selectedOpacity: 0.16,\r\n disabled: \"rgba(255, 255, 255, 0.3)\",\r\n disabledBackground: \"rgba(255, 255, 255, 0.12)\",\r\n focus: \"rgba(255, 255, 255, 0.12)\",\r\n focusOpacity: 0.12,\r\n },\r\n};\r\n\r\nexport function createPalette(mode: ColorMode = \"light\"): Palette {\r\n return mode === \"dark\" ? darkPalette : lightPalette;\r\n}\r\n","import { TypographyTheme } from \"./types\";\r\n\r\nexport const defaultFontFamily =\r\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"';\r\n\r\nexport const defaultTypography: TypographyTheme = {\r\n fontFamily: defaultFontFamily,\r\n fontSize: 14,\r\n fontWeightLight: 300,\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 500,\r\n fontWeightBold: 700,\r\n h1: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 300,\r\n fontSize: \"6rem\",\r\n lineHeight: 1.167,\r\n letterSpacing: \"-0.01562em\",\r\n },\r\n h2: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 300,\r\n fontSize: \"3.75rem\",\r\n lineHeight: 1.2,\r\n letterSpacing: \"-0.00833em\",\r\n },\r\n h3: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"3rem\",\r\n lineHeight: 1.167,\r\n letterSpacing: \"0em\",\r\n },\r\n h4: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"2.125rem\",\r\n lineHeight: 1.235,\r\n letterSpacing: \"0.00735em\",\r\n },\r\n h5: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"1.5rem\",\r\n lineHeight: 1.334,\r\n letterSpacing: \"0em\",\r\n },\r\n h6: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"1.25rem\",\r\n lineHeight: 1.6,\r\n letterSpacing: \"0.0075em\",\r\n },\r\n subtitle1: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"1rem\",\r\n lineHeight: 1.75,\r\n letterSpacing: \"0.00938em\",\r\n },\r\n subtitle2: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.57,\r\n letterSpacing: \"0.00714em\",\r\n },\r\n body1: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"1rem\",\r\n lineHeight: 1.5,\r\n letterSpacing: \"0.00938em\",\r\n },\r\n body2: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.43,\r\n letterSpacing: \"0.01071em\",\r\n },\r\n button: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.75,\r\n letterSpacing: \"0.02857em\",\r\n textTransform: \"uppercase\",\r\n },\r\n caption: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"0.75rem\",\r\n lineHeight: 1.66,\r\n letterSpacing: \"0.03333em\",\r\n },\r\n overline: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"0.75rem\",\r\n lineHeight: 2.66,\r\n letterSpacing: \"0.08333em\",\r\n textTransform: \"uppercase\",\r\n },\r\n};\r\n","/**\r\n * Google Material Design 8px Spacing Grid Function\r\n *\r\n * Supports single and multi-argument invocations:\r\n * - spacing(1) => '8px'\r\n * - spacing(2) => '16px'\r\n * - spacing(1, 2) => '8px 16px'\r\n * - spacing(1, 2, 3, 4) => '8px 16px 24px 32px'\r\n * - spacing('auto') => 'auto'\r\n */\r\nexport function createSpacing(base = 8) {\r\n return (...factors: (number | string)[]): string => {\r\n if (factors.length === 0) return `${base}px`;\r\n\r\n return factors\r\n .map((factor) => {\r\n if (typeof factor === \"string\") return factor;\r\n return `${factor * base}px`;\r\n })\r\n .join(\" \");\r\n };\r\n}\r\n\r\nexport const defaultSpacing = createSpacing(8);\r\n","import { BreakpointKey, Breakpoints } from \"./types\";\r\n\r\nexport const defaultBreakpointValues: Record<BreakpointKey, number> = {\r\n xs: 0,\r\n sm: 600,\r\n md: 900,\r\n lg: 1200,\r\n xl: 1536,\r\n};\r\n\r\nexport const breakpointKeys: BreakpointKey[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\r\n\r\nexport function createBreakpoints(\r\n customValues?: Partial<Record<BreakpointKey, number>>\r\n): Breakpoints {\r\n const values: Record<BreakpointKey, number> = {\r\n ...defaultBreakpointValues,\r\n ...customValues,\r\n };\r\n\r\n const step = 5 / 100; // 0.05px\r\n\r\n const up = (key: BreakpointKey | number): string => {\r\n const value = typeof key === \"number\" ? key : values[key];\r\n return `@media (min-width:${value}px)`;\r\n };\r\n\r\n const down = (key: BreakpointKey | number): string => {\r\n const value = typeof key === \"number\" ? key : values[key];\r\n return `@media (max-width:${value - step}px)`;\r\n };\r\n\r\n const between = (\r\n start: BreakpointKey | number,\r\n end: BreakpointKey | number\r\n ): string => {\r\n const min = typeof start === \"number\" ? start : values[start];\r\n const max = typeof end === \"number\" ? end : values[end];\r\n return `@media (min-width:${min}px) and (max-width:${max - step}px)`;\r\n };\r\n\r\n const only = (key: BreakpointKey): string => {\r\n const index = breakpointKeys.indexOf(key);\r\n if (index === breakpointKeys.length - 1) {\r\n return up(key);\r\n }\r\n const nextKey = breakpointKeys[index + 1];\r\n return nextKey ? between(key, nextKey) : up(key);\r\n };\r\n\r\n return {\r\n values,\r\n up,\r\n down,\r\n between,\r\n only,\r\n };\r\n}\r\n\r\nexport const defaultBreakpoints = createBreakpoints();\r\n","/**\r\n * Google Material Design 24-Level Elevation Shadow Matrix\r\n *\r\n * Each shadow is composed of 3 distinct light-source formulas:\r\n * 1. Umbra: Key direct light source shadow\r\n * 2. Penumbra: Secondary ambient light shadow\r\n * 3. Ambient: Atmospheric fill shadow\r\n */\r\n\r\nconst umbra = [\r\n \"0px 0px 0px 0px\",\r\n \"0px 2px 1px -1px\",\r\n \"0px 3px 1px -2px\",\r\n \"0px 3px 3px -2px\",\r\n \"0px 2px 4px -1px\",\r\n \"0px 3px 5px -1px\",\r\n \"0px 3px 5px -1px\",\r\n \"0px 4px 5px -2px\",\r\n \"0px 5px 5px -3px\",\r\n \"0px 5px 6px -3px\",\r\n \"0px 6px 6px -3px\",\r\n \"0px 6px 7px -4px\",\r\n \"0px 7px 8px -4px\",\r\n \"0px 7px 8px -4px\",\r\n \"0px 7px 9px -4px\",\r\n \"0px 8px 9px -5px\",\r\n \"0px 8px 10px -5px\",\r\n \"0px 8px 11px -5px\",\r\n \"0px 9px 11px -5px\",\r\n \"0px 9px 12px -6px\",\r\n \"0px 10px 13px -6px\",\r\n \"0px 10px 13px -6px\",\r\n \"0px 10px 14px -6px\",\r\n \"0px 11px 14px -7px\",\r\n \"0px 11px 15px -7px\",\r\n];\r\n\r\nconst penumbra = [\r\n \"0px 0px 0px 0px\",\r\n \"0px 1px 1px 0px\",\r\n \"0px 2px 2px 0px\",\r\n \"0px 3px 4px 0px\",\r\n \"0px 4px 5px 0px\",\r\n \"0px 5px 8px 0px\",\r\n \"0px 6px 10px 0px\",\r\n \"0px 7px 10px 1px\",\r\n \"0px 8px 10px 1px\",\r\n \"0px 9px 12px 1px\",\r\n \"0px 10px 14px 1px\",\r\n \"0px 11px 15px 1px\",\r\n \"0px 12px 17px 2px\",\r\n \"0px 13px 19px 2px\",\r\n \"0px 14px 21px 2px\",\r\n \"0px 15px 22px 2px\",\r\n \"0px 16px 24px 2px\",\r\n \"0px 17px 26px 2px\",\r\n \"0px 18px 28px 2px\",\r\n \"0px 19px 29px 2px\",\r\n \"0px 20px 31px 3px\",\r\n \"0px 21px 33px 3px\",\r\n \"0px 22px 35px 3px\",\r\n \"0px 23px 36px 3px\",\r\n \"0px 24px 38px 3px\",\r\n];\r\n\r\nconst ambient = [\r\n \"0px 0px 0px 0px\",\r\n \"0px 1px 3px 0px\",\r\n \"0px 1px 5px 0px\",\r\n \"0px 1px 8px 0px\",\r\n \"0px 1px 10px 0px\",\r\n \"0px 1px 14px 0px\",\r\n \"0px 1px 18px 0px\",\r\n \"0px 2px 16px 1px\",\r\n \"0px 3px 14px 2px\",\r\n \"0px 3px 16px 2px\",\r\n \"0px 4px 18px 3px\",\r\n \"0px 4px 20px 3px\",\r\n \"0px 5px 22px 4px\",\r\n \"0px 5px 24px 4px\",\r\n \"0px 5px 26px 4px\",\r\n \"0px 6px 28px 5px\",\r\n \"0px 6px 30px 5px\",\r\n \"0px 6px 32px 5px\",\r\n \"0px 7px 34px 6px\",\r\n \"0px 7px 36px 6px\",\r\n \"0px 8px 38px 7px\",\r\n \"0px 8px 40px 7px\",\r\n \"0px 8px 42px 7px\",\r\n \"0px 9px 44px 8px\",\r\n \"0px 9px 46px 8px\",\r\n];\r\n\r\nexport function createShadows(): string[] {\r\n return umbra.map((u, i) => {\r\n if (i === 0) return \"none\";\r\n return `${u} rgba(0,0,0,0.2), ${penumbra[i]} rgba(0,0,0,0.14), ${ambient[i]} rgba(0,0,0,0.12)`;\r\n });\r\n}\r\n\r\nexport const defaultShadows = createShadows();\r\n","import { Transitions } from \"./types\";\r\n\r\nexport const defaultTransitions: Transitions = {\r\n easing: {\r\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\r\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\r\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\r\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\r\n },\r\n duration: {\r\n shortest: 150,\r\n shorter: 200,\r\n short: 250,\r\n standard: 300,\r\n complex: 375,\r\n enteringScreen: 225,\r\n leavingScreen: 195,\r\n },\r\n create(\r\n props: string | string[] = [\"all\"],\r\n options: {\r\n duration?: number | string;\r\n easing?: string;\r\n delay?: number | string;\r\n } = {}\r\n ): string {\r\n const {\r\n duration = defaultTransitions.duration.standard,\r\n easing = defaultTransitions.easing.easeInOut,\r\n delay = 0,\r\n } = options;\r\n\r\n const formatDuration = (d: number | string) =>\r\n typeof d === \"string\" ? d : `${d}ms`;\r\n\r\n const formatDelay = (d: number | string) =>\r\n typeof d === \"string\" ? d : `${d}ms`;\r\n\r\n const properties = Array.isArray(props) ? props : [props];\r\n\r\n return properties\r\n .map(\r\n (prop) =>\r\n `${prop} ${formatDuration(duration)} ${easing} ${formatDelay(delay)}`\r\n )\r\n .join(\", \");\r\n },\r\n};\r\n","import { ZIndex } from \"./types\";\r\n\r\nexport const defaultZIndex: ZIndex = {\r\n mobileStepper: 1000,\r\n fab: 1050,\r\n speedDial: 1050,\r\n appBar: 1100,\r\n drawer: 1200,\r\n modal: 1300,\r\n snackbar: 1400,\r\n tooltip: 1500,\r\n};\r\n","import { ChellaaTheme, ThemeOptions, ColorMode } from \"./types\";\r\nimport { createPalette } from \"./palette\";\r\nimport { defaultTypography } from \"./typography\";\r\nimport { defaultSpacing } from \"./spacing\";\r\nimport { defaultBreakpoints, createBreakpoints } from \"./breakpoints\";\r\nimport { defaultShadows } from \"./shadows\";\r\nimport { defaultTransitions } from \"./transitions\";\r\nimport { defaultZIndex } from \"./zIndex\";\r\n\r\n/**\r\n * Deep merge utility for theme options\r\n */\r\nfunction isObject(item: any): item is Record<string, any> {\r\n return item && typeof item === \"object\" && !Array.isArray(item);\r\n}\r\n\r\nfunction deepMerge(target: any, source: any): any {\r\n const output = { ...target };\r\n if (isObject(target) && isObject(source)) {\r\n Object.keys(source).forEach((key) => {\r\n if (isObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n } else {\r\n output[key] = deepMerge(target[key], source[key]);\r\n }\r\n } else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\r\n\r\n/**\r\n * Creates a Chellaa Material Theme with 24-level elevation shadows,\r\n * 8px spacing, and complete Google Material 3 design tokens.\r\n *\r\n * @example\r\n * const theme = createTheme({\r\n * palette: {\r\n * mode: 'dark',\r\n * primary: { main: '#6366f1' }\r\n * },\r\n * shape: { borderRadius: 8 }\r\n * });\r\n */\r\nexport function createTheme(options: ThemeOptions = {}): ChellaaTheme {\r\n const mode: ColorMode = options.palette?.mode ?? \"light\";\r\n const basePalette = createPalette(mode);\r\n\r\n const mergedPalette = options.palette\r\n ? deepMerge(basePalette, options.palette)\r\n : basePalette;\r\n\r\n const mergedTypography = options.typography\r\n ? deepMerge(defaultTypography, options.typography)\r\n : defaultTypography;\r\n\r\n const mergedBreakpoints = options.breakpoints?.values\r\n ? createBreakpoints(options.breakpoints.values as any)\r\n : defaultBreakpoints;\r\n\r\n const spacing =\r\n typeof options.spacing === \"function\"\r\n ? (options.spacing as any)\r\n : defaultSpacing;\r\n\r\n const shape = {\r\n borderRadius: options.shape?.borderRadius ?? 4,\r\n };\r\n\r\n const shadows = (options.shadows as string[]) ?? defaultShadows;\r\n const transitions = options.transitions\r\n ? deepMerge(defaultTransitions, options.transitions)\r\n : defaultTransitions;\r\n const zIndex = options.zIndex\r\n ? deepMerge(defaultZIndex, options.zIndex)\r\n : defaultZIndex;\r\n\r\n return {\r\n palette: mergedPalette,\r\n typography: mergedTypography,\r\n spacing,\r\n shape,\r\n breakpoints: mergedBreakpoints,\r\n shadows,\r\n transitions,\r\n zIndex,\r\n components: (options.components as any) ?? {},\r\n };\r\n}\r\n\r\nexport const defaultTheme = createTheme({ palette: { mode: \"light\" } });\r\nexport const defaultDarkTheme = createTheme({ palette: { mode: \"dark\" } });\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { ThemeProvider as EmotionThemeProvider } from \"@emotion/react\";\r\nimport { ChellaaTheme, ThemeOptions, ColorMode } from \"./types\";\r\nimport { createTheme, defaultTheme, defaultDarkTheme } from \"./createTheme\";\r\n\r\n// Ambient type augmentation for @emotion/react\r\ndeclare module \"@emotion/react\" {\r\n export interface Theme extends ChellaaTheme {}\r\n}\r\n\r\nexport type ThemeMode = \"light\" | \"dark\" | \"system\" | string;\r\n\r\nexport interface ThemeContextValue {\r\n theme: ThemeMode;\r\n setTheme: (theme: ThemeMode) => void;\r\n resolvedTheme: \"light\" | \"dark\";\r\n systemTheme: \"light\" | \"dark\" | undefined;\r\n activeTheme: ChellaaTheme;\r\n colorMode: ColorMode;\r\n setColorMode: (mode: ColorMode) => void;\r\n}\r\n\r\nexport const ThemeContext = React.createContext<ThemeContextValue | undefined>(\r\n undefined\r\n);\r\n\r\nexport interface ThemeProviderProps {\r\n children?: React.ReactNode;\r\n theme?: ChellaaTheme | ThemeOptions;\r\n defaultTheme?: ThemeMode;\r\n storageKey?: string;\r\n enableSystem?: boolean;\r\n tokens?: Record<string, string>;\r\n attribute?: string;\r\n}\r\n\r\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\r\n\r\nexport function ThemeProvider({\r\n children,\r\n theme: customThemeProp,\r\n defaultTheme: defaultThemeMode = \"system\",\r\n storageKey = \"chellaa-theme\",\r\n enableSystem = true,\r\n tokens,\r\n attribute = \"data-theme\",\r\n}: ThemeProviderProps) {\r\n const parentContext = React.useContext(ThemeContext);\r\n\r\n const [themeMode, setThemeModeState] = React.useState<ThemeMode>(() => {\r\n if (typeof window === \"undefined\") return defaultThemeMode;\r\n try {\r\n return (localStorage.getItem(storageKey) as ThemeMode) || defaultThemeMode;\r\n } catch {\r\n return defaultThemeMode;\r\n }\r\n });\r\n\r\n const [systemTheme, setSystemTheme] = React.useState<\r\n \"light\" | \"dark\" | undefined\r\n >(() => {\r\n if (\r\n typeof window === \"undefined\" ||\r\n !enableSystem ||\r\n typeof window.matchMedia !== \"function\"\r\n ) {\r\n return undefined;\r\n }\r\n return window.matchMedia(COLOR_SCHEME_QUERY).matches ? \"dark\" : \"light\";\r\n });\r\n\r\n // Calculate resolved theme (light or dark)\r\n const resolvedTheme: \"light\" | \"dark\" = React.useMemo(() => {\r\n if (themeMode === \"system\") {\r\n return systemTheme ?? \"light\";\r\n }\r\n return themeMode === \"dark\" ? \"dark\" : \"light\";\r\n }, [themeMode, systemTheme]);\r\n\r\n // Listen for OS system theme changes\r\n React.useEffect(() => {\r\n if (\r\n !enableSystem ||\r\n typeof window === \"undefined\" ||\r\n typeof window.matchMedia !== \"function\"\r\n ) {\r\n return;\r\n }\r\n\r\n const mediaQuery = window.matchMedia(COLOR_SCHEME_QUERY);\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n setSystemTheme(e.matches ? \"dark\" : \"light\");\r\n };\r\n\r\n if (typeof mediaQuery.addEventListener === \"function\") {\r\n mediaQuery.addEventListener(\"change\", handleChange);\r\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\r\n } else if (\r\n typeof (\r\n mediaQuery as {\r\n addListener?: (cb: (e: MediaQueryListEvent) => void) => void;\r\n }\r\n ).addListener === \"function\"\r\n ) {\r\n (\r\n mediaQuery as {\r\n addListener: (cb: (e: MediaQueryListEvent) => void) => void;\r\n }\r\n ).addListener(handleChange);\r\n return () =>\r\n (\r\n mediaQuery as {\r\n removeListener: (cb: (e: MediaQueryListEvent) => void) => void;\r\n }\r\n ).removeListener(handleChange);\r\n }\r\n }, [enableSystem]);\r\n\r\n // Compute active Emotion ChellaaTheme\r\n const activeTheme = React.useMemo<ChellaaTheme>(() => {\r\n if (customThemeProp) {\r\n // If full ChellaaTheme passed, respect its palette mode or override with resolvedTheme\r\n return createTheme({\r\n ...(customThemeProp as any),\r\n palette: {\r\n mode: resolvedTheme,\r\n ...((customThemeProp as any).palette || {}),\r\n },\r\n });\r\n }\r\n return resolvedTheme === \"dark\" ? defaultDarkTheme : defaultTheme;\r\n }, [customThemeProp, resolvedTheme]);\r\n\r\n // Apply data-theme attribute and CSS tokens to DOM\r\n React.useEffect(() => {\r\n if (typeof document === \"undefined\") return;\r\n\r\n if (!parentContext) {\r\n const root = document.documentElement;\r\n root.setAttribute(attribute, resolvedTheme);\r\n\r\n if (tokens) {\r\n for (const [key, value] of Object.entries(tokens)) {\r\n root.style.setProperty(key, value);\r\n }\r\n }\r\n }\r\n }, [resolvedTheme, parentContext, attribute, tokens]);\r\n\r\n const setTheme = React.useCallback(\r\n (newTheme: ThemeMode) => {\r\n setThemeModeState(newTheme);\r\n try {\r\n localStorage.setItem(storageKey, newTheme);\r\n } catch {\r\n // Ignore localStorage errors (e.g. private browsing mode)\r\n }\r\n },\r\n [storageKey]\r\n );\r\n\r\n const setColorMode = React.useCallback(\r\n (mode: ColorMode) => {\r\n setTheme(mode);\r\n },\r\n [setTheme]\r\n );\r\n\r\n const contextValue = React.useMemo<ThemeContextValue>(\r\n () => ({\r\n theme: themeMode,\r\n setTheme,\r\n resolvedTheme,\r\n systemTheme,\r\n activeTheme,\r\n colorMode: resolvedTheme,\r\n setColorMode,\r\n }),\r\n [themeMode, setTheme, resolvedTheme, systemTheme, activeTheme, setColorMode]\r\n );\r\n\r\n if (parentContext) {\r\n const styleObj = tokens\r\n ? (tokens as unknown as React.CSSProperties)\r\n : undefined;\r\n\r\n return (\r\n <ThemeContext.Provider value={contextValue}>\r\n <EmotionThemeProvider theme={activeTheme}>\r\n <div\r\n {...{ [attribute]: resolvedTheme }}\r\n style={styleObj}\r\n className=\"cl-theme-scope\"\r\n >\r\n {children}\r\n </div>\r\n </EmotionThemeProvider>\r\n </ThemeContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <ThemeContext.Provider value={contextValue}>\r\n <EmotionThemeProvider theme={activeTheme}>{children}</EmotionThemeProvider>\r\n </ThemeContext.Provider>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { useTheme as useEmotionTheme } from \"@emotion/react\";\r\nimport { ThemeContext, type ThemeContextValue } from \"./ThemeProvider\";\r\nimport { ChellaaTheme } from \"./types\";\r\nimport { defaultTheme } from \"./createTheme\";\r\n\r\nexport interface ExtendedThemeContextValue extends ThemeContextValue {\r\n /** The active ChellaaTheme object (colors, typography, spacing, shadows) */\r\n themeObject: ChellaaTheme;\r\n}\r\n\r\n/**\r\n * Accesses the active theme context, allowing components to read and update\r\n * the current theme mode (`light`, `dark`, `system`), resolved theme, and active ChellaaTheme.\r\n */\r\nexport function useTheme(): ExtendedThemeContextValue {\r\n const context = React.useContext(ThemeContext);\r\n const emotionTheme = useEmotionTheme() as ChellaaTheme | undefined;\r\n\r\n if (context) {\r\n return {\r\n ...context,\r\n themeObject: context.activeTheme,\r\n };\r\n }\r\n\r\n if (emotionTheme && emotionTheme.palette) {\r\n return {\r\n theme: emotionTheme.palette.mode,\r\n setTheme: () => {},\r\n resolvedTheme: emotionTheme.palette.mode,\r\n systemTheme: undefined,\r\n activeTheme: emotionTheme,\r\n colorMode: emotionTheme.palette.mode,\r\n setColorMode: () => {},\r\n themeObject: emotionTheme,\r\n };\r\n }\r\n\r\n // Graceful fallback to defaultTheme if used outside ThemeProvider\r\n return {\r\n theme: \"light\",\r\n setTheme: () => {},\r\n resolvedTheme: \"light\",\r\n systemTheme: undefined,\r\n activeTheme: defaultTheme,\r\n colorMode: \"light\",\r\n setColorMode: () => {},\r\n themeObject: defaultTheme,\r\n };\r\n}\r\n","export interface ThemeScriptProps {\n storageKey?: string;\n defaultTheme?: string;\n attribute?: string;\n nonce?: string;\n}\n\n/**\n * Inline synchronous script that prevents theme flash (FOUC) during SSR page load.\n * Place inside the `<head>` of your application layout.\n */\nexport function ThemeScript({\n storageKey = \"chellaa-theme\",\n defaultTheme = \"system\",\n attribute = \"data-theme\",\n nonce,\n}: ThemeScriptProps) {\n const scriptContent = `(function() {\n try {\n var key = '${storageKey}';\n var def = '${defaultTheme}';\n var attr = '${attribute}';\n var stored = localStorage.getItem(key);\n var theme = stored || def;\n var resolved = theme;\n if (theme === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n document.documentElement.setAttribute(attr, resolved);\n } catch (e) {}\n})();`;\n\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{ __html: scriptContent }}\n suppressHydrationWarning\n />\n );\n}\n","const defaultBlockedProps = new Set<string>([\r\n \"sx\",\r\n \"theme\",\r\n \"as\",\r\n \"ownerState\",\r\n \"slotProps\",\r\n]);\r\n\r\n/**\r\n * Creates a shouldForwardProp predicate function for Emotion styled components.\r\n * Automatically filters out transient props starting with '$' and default system props.\r\n *\r\n * @param customBlocked Array or Set of additional prop names to prevent forwarding to DOM\r\n */\r\nexport function createShouldForwardProp(\r\n customBlocked?: (string | PropertyKey)[] | Set<string | PropertyKey>\r\n): (prop: PropertyKey) => boolean {\r\n const blockedSet = new Set(defaultBlockedProps);\r\n\r\n if (customBlocked) {\r\n customBlocked.forEach((prop) => blockedSet.add(prop as string));\r\n }\r\n\r\n return (prop: PropertyKey): boolean => {\r\n if (typeof prop === \"string\" && prop.startsWith(\"$\")) {\r\n return false;\r\n }\r\n return !blockedSet.has(prop as string);\r\n };\r\n}\r\n\r\n/**\r\n * Default root shouldForwardProp filter.\r\n * Blocks 'sx', 'theme', 'as', 'ownerState', 'slotProps', and '$*'.\r\n */\r\nexport const rootShouldForwardProp = createShouldForwardProp();\r\n","import type { BreakpointKey, ChellaaTheme } from \"../theme/types\";\r\nimport { breakpointKeys } from \"../theme/breakpoints\";\r\nimport { defaultTheme } from \"../theme/createTheme\";\r\nimport type { SxProps, SxObject } from \"./types\";\r\n\r\nconst spacingProperties: Record<string, string[]> = {\r\n m: [\"margin\"],\r\n margin: [\"margin\"],\r\n mt: [\"marginTop\"],\r\n marginTop: [\"marginTop\"],\r\n mr: [\"marginRight\"],\r\n marginRight: [\"marginRight\"],\r\n mb: [\"marginBottom\"],\r\n marginBottom: [\"marginBottom\"],\r\n ml: [\"marginLeft\"],\r\n marginLeft: [\"marginLeft\"],\r\n mx: [\"marginInline\"],\r\n marginInline: [\"marginInline\"],\r\n my: [\"marginBlock\"],\r\n marginBlock: [\"marginBlock\"],\r\n\r\n p: [\"padding\"],\r\n padding: [\"padding\"],\r\n pt: [\"paddingTop\"],\r\n paddingTop: [\"paddingTop\"],\r\n pr: [\"paddingRight\"],\r\n paddingRight: [\"paddingRight\"],\r\n pb: [\"paddingBottom\"],\r\n paddingBottom: [\"paddingBottom\"],\r\n pl: [\"paddingLeft\"],\r\n paddingLeft: [\"paddingLeft\"],\r\n px: [\"paddingInline\"],\r\n paddingInline: [\"paddingInline\"],\r\n py: [\"paddingBlock\"],\r\n paddingBlock: [\"paddingBlock\"],\r\n\r\n gap: [\"gap\"],\r\n rowGap: [\"rowGap\"],\r\n columnGap: [\"columnGap\"],\r\n};\r\n\r\n/**\r\n * Resolves nested property path in theme palette (e.g. 'primary.main', 'text.secondary')\r\n */\r\nfunction resolvePalettePath(palette: ChellaaTheme[\"palette\"], path: string): string | undefined {\r\n if (!path || typeof path !== \"string\") return undefined;\r\n const parts = path.split(\".\");\r\n let current: any = palette;\r\n for (const part of parts) {\r\n if (current && typeof current === \"object\" && part in current) {\r\n current = current[part];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return typeof current === \"string\" ? current : undefined;\r\n}\r\n\r\n/**\r\n * Resolves color values against theme palette\r\n */\r\nfunction resolveColor(theme: ChellaaTheme, value: any): any {\r\n if (typeof value !== \"string\") return value;\r\n const resolved = resolvePalettePath(theme.palette, value);\r\n return resolved ?? value;\r\n}\r\n\r\n/**\r\n * Resolves z-index token names against theme.zIndex\r\n */\r\nfunction resolveZIndex(theme: ChellaaTheme, value: any): any {\r\n if (typeof value === \"string\" && value in theme.zIndex) {\r\n return theme.zIndex[value as keyof typeof theme.zIndex];\r\n }\r\n return value;\r\n}\r\n\r\n/**\r\n * Resolves a single CSS property name and value into one or more CSS declarations\r\n */\r\nfunction resolveSingleProperty(\r\n theme: ChellaaTheme,\r\n prop: string,\r\n value: any\r\n): Record<string, any> {\r\n if (value === undefined || value === null) return {};\r\n\r\n // 1. Spacing properties\r\n if (prop in spacingProperties) {\r\n const cssProps = spacingProperties[prop]!;\r\n const formatted = typeof value === \"number\" ? theme.spacing(value) : value;\r\n const result: Record<string, any> = {};\r\n for (const cssProp of cssProps) {\r\n result[cssProp] = formatted;\r\n }\r\n return result;\r\n }\r\n\r\n // 2. Background color shorthand\r\n if (prop === \"bgcolor\") {\r\n return { backgroundColor: resolveColor(theme, value) };\r\n }\r\n\r\n // 3. Color properties\r\n if (\r\n prop === \"color\" ||\r\n prop === \"backgroundColor\" ||\r\n prop === \"borderColor\" ||\r\n prop === \"outlineColor\"\r\n ) {\r\n return { [prop]: resolveColor(theme, value) };\r\n }\r\n\r\n // 4. Elevation / BoxShadow\r\n if (prop === \"elevation\") {\r\n if (typeof value === \"number\" && theme.shadows[value]) {\r\n return { boxShadow: theme.shadows[value] };\r\n }\r\n return {};\r\n }\r\n if (prop === \"boxShadow\") {\r\n if (typeof value === \"number\" && theme.shadows[value]) {\r\n return { boxShadow: theme.shadows[value] };\r\n }\r\n return { boxShadow: value };\r\n }\r\n\r\n // 5. Border radius\r\n if (prop === \"borderRadius\") {\r\n if (typeof value === \"number\") {\r\n const radius = theme.shape?.borderRadius ?? 4;\r\n return { borderRadius: `${value * radius}px` };\r\n }\r\n return { borderRadius: value };\r\n }\r\n\r\n // 6. Z-Index\r\n if (prop === \"zIndex\") {\r\n return { zIndex: resolveZIndex(theme, value) };\r\n }\r\n\r\n // 7. Standard CSS Property pass-through\r\n return { [prop]: value };\r\n}\r\n\r\nfunction isObject(val: any): val is Record<string, any> {\r\n return val !== null && typeof val === \"object\" && !Array.isArray(val);\r\n}\r\n\r\n/**\r\n * Checks if a value is responsive (either an array or breakpoint keyed object)\r\n */\r\nfunction isResponsiveValue(val: any): boolean {\r\n if (Array.isArray(val)) return true;\r\n if (isObject(val)) {\r\n return Object.keys(val).some((k) => breakpointKeys.includes(k as BreakpointKey));\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Parses an individual SxObject with the current theme\r\n */\r\nfunction parseSxObject(\r\n theme: ChellaaTheme,\r\n sxObject: SxObject\r\n): Record<string, any> {\r\n const result: Record<string, any> = {};\r\n\r\n for (const [key, value] of Object.entries(sxObject)) {\r\n if (value === undefined || value === null) continue;\r\n\r\n // Handle nested selectors / media queries (&:hover, @media, etc.)\r\n if (key.startsWith(\"&\") || key.startsWith(\"@\") || key.startsWith(\".\")) {\r\n if (typeof value === \"function\") {\r\n result[key] = parseSxObject(theme, value(theme));\r\n } else if (isObject(value)) {\r\n result[key] = parseSxObject(theme, value as SxObject);\r\n }\r\n continue;\r\n }\r\n\r\n // Handle responsive values: array syntax [val1, val2, val3]\r\n if (Array.isArray(value)) {\r\n value.forEach((bpVal, index) => {\r\n if (bpVal === undefined || bpVal === null) return;\r\n const bpKey = breakpointKeys[index];\r\n if (!bpKey) return;\r\n\r\n const resolved = resolveSingleProperty(theme, key, bpVal);\r\n if (bpKey === \"xs\") {\r\n Object.assign(result, resolved);\r\n } else {\r\n const media = theme.breakpoints.up(bpKey);\r\n result[media] = {\r\n ...(result[media] || {}),\r\n ...resolved,\r\n };\r\n }\r\n });\r\n continue;\r\n }\r\n\r\n // Handle responsive values: object syntax { xs: val1, md: val2 }\r\n if (isResponsiveValue(value)) {\r\n const respObj = value as Partial<Record<BreakpointKey, any>>;\r\n for (const [bpKey, bpVal] of Object.entries(respObj)) {\r\n if (bpVal === undefined || bpVal === null) continue;\r\n\r\n const resolved = resolveSingleProperty(theme, key, bpVal);\r\n if (bpKey === \"xs\") {\r\n Object.assign(result, resolved);\r\n } else if (breakpointKeys.includes(bpKey as BreakpointKey)) {\r\n const media = theme.breakpoints.up(bpKey as BreakpointKey);\r\n result[media] = {\r\n ...(result[media] || {}),\r\n ...resolved,\r\n };\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n // Handle nested sub-object that is not a selector or responsive breakpoint\r\n if (isObject(value)) {\r\n result[key] = parseSxObject(theme, value as SxObject);\r\n continue;\r\n }\r\n\r\n // Standard single property resolution\r\n const resolved = resolveSingleProperty(theme, key, value);\r\n Object.assign(result, resolved);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Core responsive `sx` parser function.\r\n * Evaluates `sx` prop against current theme, expanding:\r\n * - Theme spacing shortcuts (m, p, mx, my, px, py, etc.)\r\n * - Theme palette tokens (color, bgcolor: 'primary.main', 'text.secondary')\r\n * - Elevation shadows (elevation: 0..24, boxShadow: 0..24)\r\n * - Breakpoint responsive arrays ([1, 2, 4]) and objects ({ xs: 1, md: 4 })\r\n * - Pseudo-classes (&:hover, &:focus) and nested selectors\r\n * - Theme function callbacks: `(theme) => ({ ... })`\r\n * - Array of sx items: `[sx1, condition && sx2, (theme) => sx3]`\r\n */\r\nexport function parseSx(\r\n themeInput?: ChellaaTheme,\r\n sx?: SxProps\r\n): Record<string, any> {\r\n if (!sx) return {};\r\n const theme =\r\n themeInput && typeof themeInput.spacing === \"function\"\r\n ? themeInput\r\n : defaultTheme;\r\n\r\n // If sx is a function, execute with theme\r\n if (typeof sx === \"function\") {\r\n return parseSxObject(theme, sx(theme));\r\n }\r\n\r\n // If sx is an array, merge in sequence\r\n if (Array.isArray(sx)) {\r\n return sx.reduce<Record<string, any>>((acc, item) => {\r\n if (!item) return acc;\r\n const parsed = parseSx(theme, item);\r\n return deepMergeStyles(acc, parsed);\r\n }, {});\r\n }\r\n\r\n // Object sx\r\n if (isObject(sx)) {\r\n return parseSxObject(theme, sx);\r\n }\r\n\r\n return {};\r\n}\r\n\r\n/**\r\n * Deep merge utility for style objects to safely merge nested media queries and selectors\r\n */\r\nfunction deepMergeStyles(\r\n target: Record<string, any>,\r\n source: Record<string, any>\r\n): Record<string, any> {\r\n const result: Record<string, any> = { ...target };\r\n\r\n for (const [key, value] of Object.entries(source)) {\r\n if (\r\n isObject(value) &&\r\n isObject(result[key]) &&\r\n !Array.isArray(value) &&\r\n !Array.isArray(result[key])\r\n ) {\r\n result[key] = deepMergeStyles(result[key], value);\r\n } else {\r\n result[key] = value;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","import type { ChellaaTheme } from \"../theme/types\";\r\n\r\nexport interface ComponentOverrideOptions {\r\n name?: string;\r\n slot?: string;\r\n overridesResolver?: (\r\n props: any,\r\n styles: Record<string, any>\r\n ) => Record<string, any> | undefined;\r\n}\r\n\r\n/**\r\n * Resolves component-level style overrides defined in theme.components[name].styleOverrides\r\n * Supports both static style objects and dynamic functions: `({ theme, ownerState }) => ({ ... })`\r\n */\r\nexport function resolveComponentOverrides(\r\n theme: ChellaaTheme,\r\n options: ComponentOverrideOptions,\r\n props: Record<string, any>\r\n): Record<string, any> | undefined {\r\n const { name, slot = \"root\", overridesResolver } = options;\r\n if (!name || !theme.components?.[name]) {\r\n return undefined;\r\n }\r\n\r\n const componentConfig = theme.components[name];\r\n const styleOverrides = componentConfig.styleOverrides;\r\n if (!styleOverrides) {\r\n return undefined;\r\n }\r\n\r\n // If custom overrides resolver is supplied, execute it\r\n if (overridesResolver) {\r\n const resolved = overridesResolver(props, styleOverrides);\r\n if (resolved) return resolved;\r\n }\r\n\r\n // Fallback to slot-based lookup\r\n const slotLower = slot.toLowerCase();\r\n const matchedKey = Object.keys(styleOverrides).find(\r\n (k) => k.toLowerCase() === slotLower\r\n );\r\n\r\n if (matchedKey) {\r\n const override = styleOverrides[matchedKey];\r\n if (typeof override === \"function\") {\r\n return override({ theme, ownerState: props.ownerState ?? props });\r\n }\r\n return override;\r\n }\r\n\r\n return undefined;\r\n}\r\n","import React from \"react\";\r\nimport emotionStyled from \"@emotion/styled\";\r\nimport type { ChellaaTheme } from \"../theme/types\";\r\nimport { defaultTheme } from \"../theme/createTheme\";\r\nimport { rootShouldForwardProp } from \"./shouldForwardProp\";\r\nimport { parseSx } from \"./sx\";\r\nimport { resolveComponentOverrides } from \"./componentOverrides\";\r\nimport type { StyledOptions, SxProps } from \"./types\";\r\n\r\nexport type StyleInterpolation<Props extends object = {}> =\r\n | Record<string, any>\r\n | ((props: Props & { theme: ChellaaTheme }) => Record<string, any> | undefined | null | false);\r\n\r\n/**\r\n * Creates an Emotion-powered styled component with:\r\n * 1. Automatic `sx` prop parsing with responsive breakpoints & 8px theme spacing.\r\n * 2. Automatic resolution of `theme.components[name].styleOverrides[slot]`.\r\n * 3. Safe DOM prop filtering via `shouldForwardProp` preventing `sx` and private props from leaking.\r\n * 4. First-class polymorphism via `as` prop.\r\n *\r\n * @example\r\n * const MyBox = styled('div', {\r\n * name: 'ChellaaBox',\r\n * slot: 'Root'\r\n * })({\r\n * boxSizing: 'border-box'\r\n * });\r\n */\r\nexport function styled<\r\n Component extends React.ElementType,\r\n ExtraProps extends object = {}\r\n>(\r\n component: Component,\r\n options: StyledOptions<ExtraProps> = {}\r\n) {\r\n const {\r\n name,\r\n slot = \"Root\",\r\n label,\r\n target,\r\n shouldForwardProp: customShouldForwardProp,\r\n skipSx = false,\r\n } = options;\r\n\r\n const resolvedShouldForwardProp = customShouldForwardProp\r\n ? (prop: PropertyKey) =>\r\n rootShouldForwardProp(prop) && customShouldForwardProp(prop)\r\n : rootShouldForwardProp;\r\n\r\n const resolvedLabel = label ?? (name ? `${name}-${slot}` : undefined);\r\n\r\n const emotionOptions: {\r\n shouldForwardProp?: (prop: PropertyKey) => boolean;\r\n label?: string;\r\n target?: string;\r\n } = {\r\n shouldForwardProp: resolvedShouldForwardProp,\r\n };\r\n\r\n if (resolvedLabel !== undefined) {\r\n emotionOptions.label = resolvedLabel;\r\n }\r\n if (target !== undefined) {\r\n emotionOptions.target = target;\r\n }\r\n\r\n const emotionCreator = emotionStyled(component as any, emotionOptions);\r\n\r\n return <Props extends object = ExtraProps>(\r\n ...interpolations: StyleInterpolation<\r\n Props & { sx?: SxProps; as?: React.ElementType }\r\n >[]\r\n ) => {\r\n const wrappedInterpolations = interpolations.map((interpolation) => {\r\n if (typeof interpolation === \"function\") {\r\n return (rawProps: any) => {\r\n const activeTheme =\r\n rawProps.theme && typeof rawProps.theme.spacing === \"function\"\r\n ? (rawProps.theme as ChellaaTheme)\r\n : defaultTheme;\r\n return interpolation({\r\n ...rawProps,\r\n theme: activeTheme,\r\n });\r\n };\r\n }\r\n return interpolation;\r\n });\r\n\r\n return emotionCreator(\r\n // 1. Base component styles\r\n ...(wrappedInterpolations as any[]),\r\n\r\n // 2. Global theme overrides from theme.components[name].styleOverrides[slot]\r\n (props: any) => {\r\n if (!name) return null;\r\n const activeTheme =\r\n props.theme && typeof props.theme.spacing === \"function\"\r\n ? (props.theme as ChellaaTheme)\r\n : defaultTheme;\r\n return resolveComponentOverrides(activeTheme, options, props);\r\n },\r\n\r\n // 3. Local sx prop styles (highest precedence)\r\n (props: any) => {\r\n if (skipSx || !props.sx) return null;\r\n const activeTheme =\r\n props.theme && typeof props.theme.spacing === \"function\"\r\n ? (props.theme as ChellaaTheme)\r\n : defaultTheme;\r\n return parseSx(activeTheme, props.sx);\r\n }\r\n );\r\n };\r\n}\r\n","export type ClassValue =\n | string\n | number\n | boolean\n | undefined\n | null\n | Record<string, boolean | number | undefined | null>\n | ClassValue[];\n\n/**\n * Combines multiple conditional class names into a clean space-delimited string.\n * Zero external runtime dependencies.\n *\n * @example\n * classNames('cl-button', isActive && 'cl-button--active', { 'cl-button--disabled': isDisabled });\n */\nexport function classNames(...inputs: ClassValue[]): string {\n const classes: string[] = [];\n\n for (const input of inputs) {\n if (!input && input !== 0) continue;\n\n if (typeof input === \"string\" || typeof input === \"number\") {\n const trimmed = String(input).trim();\n if (trimmed) classes.push(trimmed);\n } else if (Array.isArray(input)) {\n const nested = classNames(...input);\n if (nested) classes.push(nested);\n } else if (typeof input === \"object\") {\n for (const [key, value] of Object.entries(input)) {\n if (value && key.trim()) {\n classes.push(key.trim());\n }\n }\n }\n }\n\n return classes.join(\" \");\n}\n","/**\n * Composes an optional consumer event handler with an internal library event handler.\n * If the consumer handler calls event.preventDefault(), the internal handler is skipped,\n * preserving consumer control over event delegation.\n *\n * @param originalHandler Optional consumer-provided event handler\n * @param ourHandler Internal component event handler\n * @param options Configuration options\n */\nexport function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalHandler?: ((event: E) => void) | undefined,\n ourHandler?: ((event: E) => void) | undefined,\n {\n checkForDefaultPrevented = true,\n }: { checkForDefaultPrevented?: boolean } = {},\n): (event: E) => void {\n return function handleEvent(event: E) {\n originalHandler?.(event);\n\n if (!checkForDefaultPrevented || !event.defaultPrevented) {\n ourHandler?.(event);\n }\n };\n}\n","import * as React from \"react\";\n\n/**\n * Safely extracts a ref from a React element across React 18 and React 19\n * without triggering deprecation warnings in either version.\n *\n * In React 18:\n * - `element.props.ref` logs a warning in DEV mode if accessed directly.\n * - The ref lives on `element.ref` (defaults to `null` if unspecified).\n *\n * In React 19:\n * - `element.ref` logs a warning in DEV mode because ref is now a standard prop.\n * - The ref lives on `element.props.ref` (defaults to `undefined` if unspecified).\n *\n * We inspect property descriptor getters to detect React's DEV warnings before\n * accessing the respective property, ensuring warning-free behavior across all versions.\n */\nexport function getElementRef<T = HTMLElement>(\n element: React.ReactElement,\n): React.Ref<T> | undefined {\n if (!element || !React.isValidElement(element)) {\n return undefined;\n }\n\n // React <= 18 in DEV: accessing element.props.ref triggers a warning\n const propsGetter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n const isPropsWarning = Boolean(propsGetter && \"isReactWarning\" in propsGetter);\n if (isPropsWarning) {\n const r = (element as unknown as { ref?: React.Ref<T> }).ref;\n return r ?? undefined;\n }\n\n // React 19 in DEV: accessing element.ref triggers a warning\n const elementGetter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n const isElementWarning = Boolean(elementGetter && \"isReactWarning\" in elementGetter);\n if (isElementWarning) {\n const r = (element.props as { ref?: React.Ref<T> }).ref;\n return r ?? undefined;\n }\n\n // Production or un-proxied environment\n const ref =\n (element.props as { ref?: React.Ref<T> }).ref ??\n (element as unknown as { ref?: React.Ref<T> }).ref;\n return ref ?? undefined;\n}\n","import * as React from \"react\";\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Assigns a value to a React ref (either RefCallback or MutableRefObject).\n */\nexport function setRef<T>(ref: PossibleRef<T>, value: T | null): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n}\n\n/**\n * Combines multiple React refs into a single RefCallback.\n * Handles both object refs and callback refs, with proper unmount cleanup.\n */\nexport function useMergeRefs<T>(\n ...refs: PossibleRef<T>[]\n): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback((current: T | null) => {\n for (const ref of refs) {\n setRef(ref, current);\n }\n }, refs);\n}\n","import * as React from \"react\";\nimport { classNames } from \"../utils/classNames\";\nimport { composeEventHandlers } from \"../utils/composeEventHandlers\";\nimport { getElementRef } from \"../utils/getElementRef\";\nimport { setRef } from \"../hooks/useMergeRefs\";\n\nexport interface SlotProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\n/**\n * Merges Slot props onto its immediate child element.\n * Preserves child identity, merges classNames, styles, ref forwarding, and event handlers.\n */\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>(\n function Slot(props, forwardedRef) {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n return React.cloneElement(\n children,\n mergeProps(\n slotProps,\n children.props as Record<string, unknown>,\n forwardedRef,\n getElementRef(children),\n ),\n );\n }\n\n if (React.Children.count(children) > 1) {\n React.Children.only(null); // Will throw informative React.Children.only error\n }\n\n return null;\n },\n);\n\nSlot.displayName = \"Slot\";\n\n/**\n * Merges slot parent props with child props.\n */\nfunction mergeProps(\n slotProps: Record<string, unknown>,\n childProps: Record<string, unknown>,\n slotRef: React.Ref<HTMLElement>,\n childRef?: React.Ref<HTMLElement>,\n): Record<string, unknown> {\n const overrideProps: Record<string, unknown> = { ...childProps };\n\n for (const propName in slotProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isEventHandler = /^on[A-Z]/.test(propName);\n\n if (isEventHandler) {\n if (\n typeof slotPropValue === \"function\" &&\n typeof childPropValue === \"function\"\n ) {\n overrideProps[propName] = composeEventHandlers(\n childPropValue as (event: { defaultPrevented: boolean }) => void,\n slotPropValue as (event: { defaultPrevented: boolean }) => void,\n );\n } else if (typeof slotPropValue === \"function\") {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"className\") {\n overrideProps[propName] = classNames(\n slotPropValue as string | undefined,\n childPropValue as string | undefined,\n );\n } else if (propName === \"style\") {\n overrideProps[propName] = {\n ...(slotPropValue as React.CSSProperties | undefined),\n ...(childPropValue as React.CSSProperties | undefined),\n };\n } else {\n overrideProps[propName] =\n slotPropValue !== undefined ? slotPropValue : childPropValue;\n }\n }\n\n // Ref merging\n overrideProps.ref = (node: HTMLElement | null) => {\n setRef(childRef, node);\n setRef(slotRef, node);\n };\n\n return overrideProps;\n}\n","import * as React from \"react\";\nimport type { ButtonGroupContextValue } from \"./ButtonGroup.types\";\n\nexport const ButtonGroupContext = React.createContext<\n ButtonGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access parent ButtonGroup context if present.\n */\nexport function useButtonGroupContext(): ButtonGroupContextValue | undefined {\n return React.useContext(ButtonGroupContext);\n}\n","import * as React from \"react\";\r\nimport { keyframes } from \"@emotion/react\";\r\nimport { styled } from \"../system/styled\";\r\n\r\nconst enterKeyframe = keyframes`\r\n 0% {\r\n transform: scale(0);\r\n opacity: 0.1;\r\n }\r\n 100% {\r\n transform: scale(1);\r\n opacity: 0.3;\r\n }\r\n`;\r\n\r\nconst exitKeyframe = keyframes`\r\n 0% {\r\n opacity: 0.3;\r\n }\r\n 100% {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst pulsateKeyframe = keyframes`\r\n 0% {\r\n transform: scale(1);\r\n }\r\n 50% {\r\n transform: scale(0.92);\r\n }\r\n 100% {\r\n transform: scale(1);\r\n }\r\n`;\r\n\r\nexport interface RippleItem {\r\n key: number;\r\n rippleX: number;\r\n rippleY: number;\r\n rippleSize: number;\r\n pulsating?: boolean;\r\n leaving?: boolean;\r\n}\r\n\r\nexport interface TouchRippleRef {\r\n start: (\r\n event?: React.SyntheticEvent,\r\n options?: { pulsate?: boolean; center?: boolean }\r\n ) => void;\r\n stop: (event?: React.SyntheticEvent) => void;\r\n pulsate: () => void;\r\n}\r\n\r\nexport interface TouchRippleProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n /**\r\n * If true, the ripple will center on the element rather than pointer coordinates\r\n */\r\n center?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst TouchRippleRoot = styled(\"span\", {\r\n name: \"ChellaaTouchRipple\",\r\n slot: \"Root\",\r\n})({\r\n overflow: \"hidden\",\r\n pointerEvents: \"none\",\r\n position: \"absolute\",\r\n zIndex: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n borderRadius: \"inherit\",\r\n});\r\n\r\nconst StyledRippleSpan = styled(\"span\", {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"pulsating\" && prop !== \"leaving\",\r\n})<{ pulsating?: boolean; leaving?: boolean }>(({ pulsating, leaving }) => ({\r\n position: \"absolute\",\r\n borderRadius: \"50%\",\r\n backgroundColor: \"currentColor\",\r\n opacity: 0.3,\r\n animation: `${enterKeyframe} 550ms cubic-bezier(0.4, 0, 0.2, 1)`,\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n animationDuration: \"1ms !important\",\r\n transitionDuration: \"1ms !important\",\r\n },\r\n ...(pulsating && {\r\n animation: `${pulsateKeyframe} 2500ms ease-in-out infinite 200ms`,\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n animation: \"none !important\",\r\n },\r\n }),\r\n ...(leaving && {\r\n opacity: 0,\r\n animation: `${exitKeyframe} 550ms cubic-bezier(0.4, 0, 0.2, 1) forwards`,\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n animationDuration: \"1ms !important\",\r\n transitionDuration: \"1ms !important\",\r\n },\r\n }),\r\n}));\r\n\r\n/**\r\n * TouchRipple component delivers tactile Material Design touch/click ripple animations.\r\n */\r\nexport const TouchRipple = React.forwardRef<TouchRippleRef, TouchRippleProps>(\r\n function TouchRipple(props, ref) {\r\n const { center: centerProp = false, className, ...rest } = props;\r\n const [ripples, setRipples] = React.useState<RippleItem[]>([]);\r\n const nextKey = React.useRef(0);\r\n const containerRef = React.useRef<HTMLSpanElement | null>(null);\r\n const timeoutIdsRef = React.useRef<ReturnType<typeof setTimeout>[]>([]);\r\n const isMountedRef = React.useRef(true);\r\n\r\n React.useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n timeoutIdsRef.current.forEach((id) => clearTimeout(id));\r\n timeoutIdsRef.current = [];\r\n };\r\n }, []);\r\n\r\n const start = React.useCallback(\r\n (\r\n event?: React.SyntheticEvent,\r\n options: { pulsate?: boolean; center?: boolean } = {}\r\n ) => {\r\n const { pulsate = false, center = centerProp || pulsate } = options;\r\n\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const rect = container.getBoundingClientRect();\r\n\r\n let rippleX: number;\r\n let rippleY: number;\r\n let rippleSize: number;\r\n\r\n const nativeEvent = event?.nativeEvent;\r\n let clientX: number | undefined;\r\n let clientY: number | undefined;\r\n\r\n if (\r\n nativeEvent &&\r\n \"clientX\" in nativeEvent &&\r\n \"clientY\" in nativeEvent &&\r\n typeof (nativeEvent as MouseEvent).clientX === \"number\" &&\r\n typeof (nativeEvent as MouseEvent).clientY === \"number\"\r\n ) {\r\n clientX = (nativeEvent as MouseEvent).clientX;\r\n clientY = (nativeEvent as MouseEvent).clientY;\r\n } else if (\r\n nativeEvent &&\r\n \"touches\" in nativeEvent &&\r\n (nativeEvent as TouchEvent).touches &&\r\n (nativeEvent as TouchEvent).touches.length > 0\r\n ) {\r\n const touch = (nativeEvent as TouchEvent).touches[0];\r\n if (touch) {\r\n clientX = touch.clientX;\r\n clientY = touch.clientY;\r\n }\r\n }\r\n\r\n if (center || clientX === undefined || clientY === undefined) {\r\n rippleX = Math.round(rect.width / 2);\r\n rippleY = Math.round(rect.height / 2);\r\n rippleSize = Math.max(rect.width, rect.height);\r\n } else {\r\n rippleX = Math.round(clientX - rect.left);\r\n rippleY = Math.round(clientY - rect.top);\r\n\r\n const sizeX =\r\n Math.max(Math.abs(container.clientWidth - rippleX), rippleX) * 2 + 2;\r\n const sizeY =\r\n Math.max(Math.abs(container.clientHeight - rippleY), rippleY) * 2 + 2;\r\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\r\n }\r\n\r\n const currentKey = nextKey.current;\r\n nextKey.current += 1;\r\n\r\n setRipples((prev) => [\r\n ...prev,\r\n {\r\n key: currentKey,\r\n rippleX,\r\n rippleY,\r\n rippleSize,\r\n pulsating: pulsate,\r\n leaving: false,\r\n },\r\n ]);\r\n },\r\n [centerProp]\r\n );\r\n\r\n const stop = React.useCallback(() => {\r\n setRipples((prev) => {\r\n if (prev.length === 0) return prev;\r\n return prev.map((ripple) => ({ ...ripple, leaving: true }));\r\n });\r\n\r\n const prefersReduced =\r\n typeof window !== \"undefined\" &&\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n const cleanupDelay = prefersReduced ? 10 : 550;\r\n\r\n const timerId = setTimeout(() => {\r\n if (!isMountedRef.current) return;\r\n setRipples((prev) => prev.filter((r) => !r.leaving));\r\n timeoutIdsRef.current = timeoutIdsRef.current.filter((id) => id !== timerId);\r\n }, cleanupDelay);\r\n\r\n timeoutIdsRef.current.push(timerId);\r\n }, []);\r\n\r\n const pulsate = React.useCallback(() => {\r\n start(undefined, { pulsate: true });\r\n }, [start]);\r\n\r\n React.useImperativeHandle(\r\n ref,\r\n () => ({\r\n start,\r\n stop,\r\n pulsate,\r\n }),\r\n [start, stop, pulsate]\r\n );\r\n\r\n return (\r\n <TouchRippleRoot\r\n ref={containerRef}\r\n className={className}\r\n aria-hidden=\"true\"\r\n {...rest}\r\n >\r\n {ripples.map((item) => {\r\n const style: React.CSSProperties = {\r\n width: `${item.rippleSize}px`,\r\n height: `${item.rippleSize}px`,\r\n top: `${-(item.rippleSize / 2) + item.rippleY}px`,\r\n left: `${-(item.rippleSize / 2) + item.rippleX}px`,\r\n };\r\n\r\n return (\r\n <StyledRippleSpan\r\n key={item.key}\r\n pulsating={item.pulsating}\r\n leaving={item.leaving}\r\n style={style}\r\n />\r\n );\r\n })}\r\n </TouchRippleRoot>\r\n );\r\n }\r\n);\r\n\r\nTouchRipple.displayName = \"TouchRipple\";\r\n","import * as React from \"react\";\r\nimport type { TouchRippleRef, TouchRippleProps } from \"./TouchRipple\";\r\nimport { composeEventHandlers } from \"../utils/composeEventHandlers\";\r\n\r\nexport interface UseRippleOptions {\r\n disabled?: boolean;\r\n disableRipple?: boolean;\r\n center?: boolean;\r\n}\r\n\r\nexport interface UseRippleReturn {\r\n rippleRef: React.RefObject<TouchRippleRef>;\r\n rippleProps: TouchRippleProps & { ref: React.RefObject<TouchRippleRef> };\r\n getRippleHandlers: <T extends Record<string, any>>(props?: T) => T;\r\n}\r\n\r\n/**\r\n * Hook connecting user interactions (pointer/touch/keyboard) to TouchRipple.\r\n */\r\nexport function useRipple(options: UseRippleOptions = {}): UseRippleReturn {\r\n const { disabled = false, disableRipple = false, center = false } = options;\r\n const rippleRef = React.useRef<TouchRippleRef>(null);\r\n\r\n const onMouseDown = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.start(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onMouseUp = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.stop(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onMouseLeave = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.stop(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onTouchStart = React.useCallback(\r\n (event: React.TouchEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.start(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onTouchEnd = React.useCallback(\r\n (event: React.TouchEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.stop(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent) => {\r\n if (disabled || disableRipple) return;\r\n if (event.key === \" \" || event.key === \"Enter\") {\r\n rippleRef.current?.start(undefined, { pulsate: true });\r\n }\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onKeyUp = React.useCallback(\r\n (event: React.KeyboardEvent) => {\r\n if (disabled || disableRipple) return;\r\n if (event.key === \" \" || event.key === \"Enter\") {\r\n rippleRef.current?.stop();\r\n }\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onBlur = React.useCallback(() => {\r\n rippleRef.current?.stop();\r\n }, []);\r\n\r\n const getRippleHandlers = React.useCallback(\r\n <T extends Record<string, any>>(props: T = {} as T): T => {\r\n return {\r\n ...props,\r\n onMouseDown: composeEventHandlers(props.onMouseDown, onMouseDown),\r\n onMouseUp: composeEventHandlers(props.onMouseUp, onMouseUp),\r\n onMouseLeave: composeEventHandlers(props.onMouseLeave, onMouseLeave),\r\n onTouchStart: composeEventHandlers(props.onTouchStart, onTouchStart),\r\n onTouchEnd: composeEventHandlers(props.onTouchEnd, onTouchEnd),\r\n onKeyDown: composeEventHandlers(props.onKeyDown, onKeyDown),\r\n onKeyUp: composeEventHandlers(props.onKeyUp, onKeyUp),\r\n onBlur: composeEventHandlers(props.onBlur, onBlur),\r\n };\r\n },\r\n [\r\n onMouseDown,\r\n onMouseUp,\r\n onMouseLeave,\r\n onTouchStart,\r\n onTouchEnd,\r\n onKeyDown,\r\n onKeyUp,\r\n onBlur,\r\n ]\r\n );\r\n\r\n return {\r\n rippleRef,\r\n rippleProps: {\r\n ref: rippleRef,\r\n center,\r\n },\r\n getRippleHandlers,\r\n };\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useButtonGroupContext } from \"../ButtonGroup/ButtonGroupContext\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { TouchRipple } from \"../../ripple/TouchRipple\";\r\nimport { useRipple } from \"../../ripple/useRipple\";\r\nimport type { ButtonProps } from \"./Button.types\";\r\n\r\n/**\r\n * Animated SVG spinner for loading states.\r\n */\r\nfunction ButtonSpinner() {\r\n return (\r\n <svg\r\n className=\"cl-button__spinner\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeOpacity=\"0.25\"\r\n />\r\n <path\r\n d=\"M12 3a9 9 0 0 1 9 9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nconst StyledButtonRoot = styled(\"button\", {\r\n name: \"ChellaaButton\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"isFullWidth\" &&\r\n prop !== \"isLoading\" &&\r\n prop !== \"isDisabled\" &&\r\n prop !== \"loadingText\" &&\r\n prop !== \"loadingPosition\" &&\r\n prop !== \"startIcon\" &&\r\n prop !== \"endIcon\" &&\r\n prop !== \"disableRipple\" &&\r\n prop !== \"asChild\",\r\n})({});\r\n\r\n/**\r\n * Chellaa React Button component.\r\n *\r\n * Fundamental action primitive supporting 5 variants, 5 sizes, 7 color schemes,\r\n * tactile touch ripple feedback, loading states, icons, keyboard interaction,\r\n * theme overrides, and polymorphic slot delegation via `asChild`.\r\n */\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n function Button(props, forwardedRef) {\r\n const {\r\n asChild = false,\r\n variant: variantProp,\r\n size: sizeProp,\r\n colorScheme: colorSchemeProp,\r\n isLoading = false,\r\n loadingText,\r\n loadingPosition = \"start\",\r\n isDisabled: isDisabledProp,\r\n isFullWidth = false,\r\n startIcon,\r\n endIcon,\r\n className,\r\n children,\r\n disabled: disabledProp,\r\n type = \"button\",\r\n onClick,\r\n onKeyDown,\r\n disableRipple = false,\r\n sx,\r\n ...restProps\r\n } = props;\r\n\r\n const buttonGroup = useButtonGroupContext();\r\n\r\n const variant = variantProp ?? buttonGroup?.variant ?? \"solid\";\r\n const size = sizeProp ?? buttonGroup?.size ?? \"md\";\r\n const colorScheme =\r\n colorSchemeProp ?? buttonGroup?.colorScheme ?? \"primary\";\r\n const isDisabled =\r\n isDisabledProp ?? disabledProp ?? buttonGroup?.isDisabled ?? false;\r\n const isEffectivelyDisabled = isDisabled || isLoading;\r\n\r\n const { rippleProps, getRippleHandlers } = useRipple({\r\n disabled: isEffectivelyDisabled,\r\n disableRipple,\r\n });\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n if (isEffectivelyDisabled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n onClick?.(event);\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\r\n if (isEffectivelyDisabled) {\r\n if (event.key === \" \" || event.key === \"Enter\") {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n }\r\n onKeyDown?.(event);\r\n };\r\n\r\n const buttonClassName = classNames(\r\n \"cl-button\",\r\n `cl-button--${variant}`,\r\n `cl-button--${size}`,\r\n `cl-button--${colorScheme}`,\r\n isLoading && \"cl-button--loading\",\r\n isDisabled && \"cl-button--disabled\",\r\n isFullWidth && \"cl-button--full-width\",\r\n className,\r\n );\r\n\r\n const spinner = <ButtonSpinner />;\r\n\r\n // When asChild is enabled, delegate root rendering to child via Slot\r\n if (asChild) {\r\n return (\r\n <StyledButtonRoot\r\n as={Slot}\r\n ref={forwardedRef as React.Ref<HTMLElement>}\r\n className={buttonClassName}\r\n aria-disabled={isEffectivelyDisabled ? true : undefined}\r\n aria-busy={isLoading ? true : undefined}\r\n sx={sx}\r\n onClick={\r\n handleClick as unknown as React.MouseEventHandler<HTMLElement>\r\n }\r\n onKeyDown={\r\n handleKeyDown as unknown as React.KeyboardEventHandler<HTMLElement>\r\n }\r\n {...restProps}\r\n >\r\n {children}\r\n </StyledButtonRoot>\r\n );\r\n }\r\n\r\n // Center loading state: keep button dimensions identical by visually hiding label\r\n const isCenterLoading = isLoading && loadingPosition === \"center\";\r\n\r\n const buttonHandlers = getRippleHandlers({\r\n onClick: handleClick,\r\n onKeyDown: handleKeyDown,\r\n ...restProps,\r\n });\r\n\r\n return (\r\n <StyledButtonRoot\r\n ref={forwardedRef}\r\n type={type}\r\n disabled={isEffectivelyDisabled ? true : undefined}\r\n aria-disabled={isEffectivelyDisabled ? true : undefined}\r\n aria-busy={isLoading ? true : undefined}\r\n className={buttonClassName}\r\n sx={sx}\r\n {...buttonHandlers}\r\n >\r\n {isCenterLoading ? (\r\n <>\r\n <span className=\"cl-button__spinner-wrapper--center\">\r\n {spinner}\r\n </span>\r\n <span className=\"cl-button__content--hidden\">\r\n {startIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--start\"\r\n aria-hidden=\"true\"\r\n >\r\n {startIcon}\r\n </span>\r\n )}\r\n {children !== undefined && (\r\n <span className=\"cl-button__label\">{children}</span>\r\n )}\r\n {endIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--end\"\r\n aria-hidden=\"true\"\r\n >\r\n {endIcon}\r\n </span>\r\n )}\r\n </span>\r\n </>\r\n ) : (\r\n <>\r\n {isLoading && loadingPosition === \"start\" && spinner}\r\n {!isLoading && startIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--start\"\r\n aria-hidden=\"true\"\r\n >\r\n {startIcon}\r\n </span>\r\n )}\r\n {isLoading && loadingText ? (\r\n <span className=\"cl-button__label\">{loadingText}</span>\r\n ) : children !== undefined ? (\r\n <span className=\"cl-button__label\">{children}</span>\r\n ) : null}\r\n {isLoading && loadingPosition === \"end\" && spinner}\r\n {!isLoading && endIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--end\"\r\n aria-hidden=\"true\"\r\n >\r\n {endIcon}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n {!disableRipple && !isEffectivelyDisabled && (\r\n <TouchRipple {...rippleProps} />\r\n )}\r\n </StyledButtonRoot>\r\n );\r\n },\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n ButtonGroupContextValue,\n ButtonGroupProps,\n} from \"./ButtonGroup.types\";\nimport { ButtonGroupContext } from \"./ButtonGroupContext\";\n\n/**\n * Chellaa React ButtonGroup component.\n *\n * Container primitive for grouping related buttons with unified sizing,\n * visual variants, color schemes, disabled states, and attached border management.\n */\nexport const ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n function ButtonGroup(props, forwardedRef) {\n const {\n asChild = false,\n size,\n variant,\n colorScheme,\n isDisabled,\n isAttached = false,\n orientation = \"horizontal\",\n spacing,\n className,\n style,\n children,\n role: roleProp,\n ...restProps\n } = props;\n\n const role =\n roleProp !== undefined ? roleProp : asChild ? undefined : \"group\";\n\n const contextValue = React.useMemo<ButtonGroupContextValue>(\n () => ({\n size,\n variant,\n colorScheme,\n isDisabled,\n }),\n [size, variant, colorScheme, isDisabled],\n );\n\n const groupClassName = classNames(\n \"cl-button-group\",\n `cl-button-group--${orientation}`,\n isAttached && \"cl-button-group--attached\",\n className,\n );\n\n const groupStyle: React.CSSProperties = {\n ...style,\n ...(spacing !== undefined && !isAttached\n ? { gap: typeof spacing === \"number\" ? `${spacing}px` : spacing }\n : {}),\n };\n\n if (asChild) {\n return (\n <ButtonGroupContext.Provider value={contextValue}>\n <Slot\n ref={forwardedRef as React.Ref<HTMLElement>}\n role={role}\n className={groupClassName}\n style={groupStyle}\n {...restProps}\n >\n {children}\n </Slot>\n </ButtonGroupContext.Provider>\n );\n }\n\n return (\n <ButtonGroupContext.Provider value={contextValue}>\n <div\n ref={forwardedRef}\n role={role}\n className={groupClassName}\n style={groupStyle}\n {...restProps}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n );\n },\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport interface BoxProps extends React.HTMLAttributes<HTMLElement> {\r\n /**\r\n * If true, delegating rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component to render (alias of `as`)\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component to render\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledBoxRoot = styled(\"div\", {\r\n name: \"ChellaaBox\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) => prop !== \"asChild\" && prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Universal polymorphic layout container with theme-aware `sx` styling and `asChild` composition.\r\n *\r\n * @example\r\n * <Box sx={{ p: 2, bgcolor: 'background.paper', borderRadius: 2 }}>\r\n * Content\r\n * </Box>\r\n */\r\nexport const Box = React.forwardRef<HTMLElement, BoxProps>(\r\n function Box(props, ref) {\r\n const { asChild = false, component, as, className, style, sx, children, ...rest } = props;\r\n const targetTag = component || as;\r\n const boxClassName = classNames(\"cl-box\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <StyledBoxRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={boxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledBoxRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledBoxRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={boxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledBoxRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledBoxRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={boxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledBoxRoot>\r\n );\r\n }\r\n);\r\n\r\nBox.displayName = \"Box\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { CSSProperties } from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { parseSx } from \"../../system/sx\";\r\nimport type { ResponsiveValue, SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type StackDirection = \"row\" | \"row-reverse\" | \"column\" | \"column-reverse\";\r\n\r\nexport interface StackOwnerState {\r\n direction?: ResponsiveValue<StackDirection> | undefined;\r\n spacing?: ResponsiveValue<number | string> | undefined;\r\n alignItems?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n justifyContent?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n flexWrap?: ResponsiveValue<CSSProperties[\"flexWrap\"]> | undefined;\r\n useFlexGap?: boolean | undefined;\r\n}\r\n\r\nexport interface StackProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n StackOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * Element placed between each child\r\n */\r\n divider?: React.ReactNode;\r\n /**\r\n * System-aware sx styling prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledStackRoot = styled(\"div\", {\r\n name: \"ChellaaStack\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"direction\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"alignItems\" &&\r\n prop !== \"justifyContent\" &&\r\n prop !== \"flexWrap\" &&\r\n prop !== \"useFlexGap\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ ownerState: StackOwnerState }>(({ theme, ownerState }) => {\r\n const styles: Record<string, any> = {};\r\n\r\n // 1. Responsive direction (if array or object or non-default)\r\n if (typeof ownerState.direction === \"object\") {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexDirection: ownerState.direction })\r\n );\r\n }\r\n\r\n // 2. Responsive spacing (gap)\r\n if (ownerState.spacing !== undefined && ownerState.spacing !== 0) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { gap: ownerState.spacing })\r\n );\r\n }\r\n\r\n // 3. Alignment and wrapping\r\n if (ownerState.alignItems !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { alignItems: ownerState.alignItems })\r\n );\r\n }\r\n if (ownerState.justifyContent !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { justifyContent: ownerState.justifyContent })\r\n );\r\n }\r\n if (ownerState.flexWrap !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexWrap: ownerState.flexWrap })\r\n );\r\n }\r\n\r\n return styles;\r\n});\r\n\r\n/**\r\n * 1D Flexbox layout container managing direction, spacing, alignment, and dividers.\r\n *\r\n * @example\r\n * <Stack direction=\"row\" spacing={2} alignItems=\"center\">\r\n * <Item>1</Item>\r\n * <Item>2</Item>\r\n * </Stack>\r\n */\r\nexport const Stack = React.forwardRef<HTMLElement, StackProps>(\r\n function Stack(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n direction = \"column\",\r\n spacing = 0,\r\n alignItems,\r\n justifyContent,\r\n flexWrap,\r\n useFlexGap = true,\r\n divider,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const ownerState: StackOwnerState = {\r\n direction,\r\n spacing,\r\n alignItems,\r\n justifyContent,\r\n flexWrap,\r\n useFlexGap,\r\n };\r\n\r\n const isSimpleDirection = typeof direction === \"string\";\r\n\r\n const stackClassName = classNames(\r\n \"cl-stack\",\r\n isSimpleDirection && `cl-stack--${direction}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n // Handle divider insertion between valid React children\r\n let renderedChildren = children;\r\n if (divider && !asChild) {\r\n const validChildren = React.Children.toArray(children).filter(\r\n React.isValidElement\r\n );\r\n renderedChildren = validChildren.reduce<React.ReactNode[]>(\r\n (acc, child, index) => {\r\n acc.push(child);\r\n if (index < validChildren.length - 1) {\r\n acc.push(\r\n React.isValidElement(divider)\r\n ? React.cloneElement(divider as React.ReactElement, {\r\n key: `stack-divider-${index}`,\r\n })\r\n : (\r\n <span key={`stack-divider-${index}`}>{divider}</span>\r\n )\r\n );\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n }\r\n\r\n if (asChild) {\r\n return (\r\n <StyledStackRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={stackClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledStackRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledStackRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={stackClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledStackRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledStackRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={stackClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledStackRoot>\r\n );\r\n }\r\n);\r\n\r\nStack.displayName = \"Stack\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { CSSProperties } from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { parseSx } from \"../../system/sx\";\r\nimport type { ResponsiveValue, SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type { StackDirection } from \"../Stack\";\r\n\r\nexport interface FlexOwnerState {\r\n direction?: ResponsiveValue<StackDirection> | undefined;\r\n spacing?: ResponsiveValue<number | string> | undefined;\r\n gap?: ResponsiveValue<number | string> | undefined;\r\n alignItems?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n align?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n justifyContent?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n justify?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n flexWrap?: ResponsiveValue<CSSProperties[\"flexWrap\"]> | undefined;\r\n wrap?: ResponsiveValue<CSSProperties[\"flexWrap\"]> | undefined;\r\n inline?: boolean | undefined;\r\n center?: boolean | undefined;\r\n}\r\n\r\nexport interface FlexProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n FlexOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * Element placed between each child\r\n */\r\n divider?: React.ReactNode | undefined;\r\n /**\r\n * System-aware sx styling prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledFlexRoot = styled(\"div\", {\r\n name: \"ChellaaFlex\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"direction\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"gap\" &&\r\n prop !== \"alignItems\" &&\r\n prop !== \"align\" &&\r\n prop !== \"justifyContent\" &&\r\n prop !== \"justify\" &&\r\n prop !== \"flexWrap\" &&\r\n prop !== \"wrap\" &&\r\n prop !== \"inline\" &&\r\n prop !== \"center\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ ownerState: FlexOwnerState }>(({ theme, ownerState }) => {\r\n const isCenter = ownerState.center ?? false;\r\n const styles: Record<string, any> = {};\r\n\r\n // 1. Responsive direction (if array or object)\r\n if (typeof ownerState.direction === \"object\") {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexDirection: ownerState.direction })\r\n );\r\n }\r\n\r\n // 2. Responsive gap / spacing\r\n const gapValue = ownerState.gap ?? ownerState.spacing;\r\n if (gapValue !== undefined) {\r\n Object.assign(styles, parseSx(theme, { gap: gapValue }));\r\n }\r\n\r\n // 3. Align & Justify (if not center shorthand)\r\n if (!isCenter) {\r\n const alignVal = ownerState.align ?? ownerState.alignItems;\r\n if (alignVal !== undefined) {\r\n Object.assign(styles, parseSx(theme, { alignItems: alignVal }));\r\n }\r\n\r\n const justifyVal = ownerState.justify ?? ownerState.justifyContent;\r\n if (justifyVal !== undefined) {\r\n Object.assign(styles, parseSx(theme, { justifyContent: justifyVal }));\r\n }\r\n }\r\n\r\n // 4. Wrapping\r\n const wrapVal = ownerState.wrap ?? ownerState.flexWrap;\r\n if (wrapVal !== undefined) {\r\n Object.assign(styles, parseSx(theme, { flexWrap: wrapVal }));\r\n }\r\n\r\n return styles;\r\n});\r\n\r\n/**\r\n * 1D Flexbox layout container defaulting to horizontal row flow with convenient\r\n * shorthands: `center`, `inline`, `align`, `justify`, `wrap`, and `gap`.\r\n *\r\n * @example\r\n * <Flex center gap={2}>\r\n * <Avatar />\r\n * <Text>User Name</Text>\r\n * </Flex>\r\n */\r\nexport const Flex = React.forwardRef<HTMLElement, FlexProps>(\r\n function Flex(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n direction = \"row\",\r\n spacing,\r\n gap,\r\n alignItems,\r\n align,\r\n justifyContent,\r\n justify,\r\n flexWrap,\r\n wrap,\r\n inline = false,\r\n center = false,\r\n divider,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const ownerState: FlexOwnerState = {\r\n direction,\r\n spacing,\r\n gap,\r\n alignItems,\r\n align,\r\n justifyContent,\r\n justify,\r\n flexWrap,\r\n wrap,\r\n inline,\r\n center,\r\n };\r\n\r\n const isSimpleDirection = typeof direction === \"string\";\r\n\r\n const flexClassName = classNames(\r\n \"cl-flex\",\r\n inline && \"cl-flex--inline\",\r\n center && \"cl-flex--center\",\r\n isSimpleDirection && `cl-flex--${direction}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n let renderedChildren = children;\r\n if (divider && !asChild) {\r\n const validChildren = React.Children.toArray(children).filter(\r\n React.isValidElement\r\n );\r\n renderedChildren = validChildren.reduce<React.ReactNode[]>(\r\n (acc, child, index) => {\r\n acc.push(child);\r\n if (index < validChildren.length - 1) {\r\n acc.push(\r\n React.isValidElement(divider)\r\n ? React.cloneElement(divider as React.ReactElement, {\r\n key: `flex-divider-${index}`,\r\n })\r\n : <span key={`flex-divider-${index}`}>{divider}</span>\r\n );\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n }\r\n\r\n if (asChild) {\r\n return (\r\n <StyledFlexRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={flexClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledFlexRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledFlexRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={flexClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledFlexRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledFlexRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={flexClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledFlexRoot>\r\n );\r\n }\r\n);\r\n\r\nFlex.displayName = \"Flex\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport type { BreakpointKey } from \"../../theme/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport interface ContainerOwnerState {\r\n maxWidth?: BreakpointKey | false | undefined;\r\n fixed?: boolean | undefined;\r\n disableGutters?: boolean | undefined;\r\n}\r\n\r\nexport interface ContainerProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n ContainerOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledContainerRoot = styled(\"div\", {\r\n name: \"ChellaaContainer\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"maxWidth\" &&\r\n prop !== \"fixed\" &&\r\n prop !== \"disableGutters\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Centered responsive max-width container with fluid gutters.\r\n *\r\n * @example\r\n * <Container maxWidth=\"md\">\r\n * <Typography variant=\"h1\">Header</Typography>\r\n * </Container>\r\n */\r\nexport const Container = React.forwardRef<HTMLElement, ContainerProps>(\r\n function Container(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n maxWidth = \"lg\",\r\n fixed = false,\r\n disableGutters = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const containerClassName = classNames(\r\n \"cl-container\",\r\n disableGutters && \"cl-container--disable-gutters\",\r\n fixed && \"cl-container--fixed\",\r\n maxWidth !== false && `cl-container--${maxWidth}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledContainerRoot\r\n as={Slot}\r\n ref={ref as any}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledContainerRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledContainerRoot\r\n as={targetTag}\r\n ref={ref as any}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledContainerRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledContainerRoot\r\n ref={ref as any}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledContainerRoot>\r\n );\r\n }\r\n);\r\n\r\nContainer.displayName = \"Container\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { CSSProperties } from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { parseSx } from \"../../system/sx\";\r\nimport type { ResponsiveValue, SxProps } from \"../../system/types\";\r\nimport type { BreakpointKey } from \"../../theme/types\";\r\nimport { breakpointKeys } from \"../../theme/breakpoints\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type GridSize = boolean | \"auto\" | number;\r\nexport type GridWrap = \"nowrap\" | \"wrap\" | \"wrap-reverse\";\r\nexport type GridDirection = \"row\" | \"row-reverse\" | \"column\" | \"column-reverse\";\r\n\r\nexport interface GridOwnerState {\r\n container?: boolean | undefined;\r\n item?: boolean | undefined;\r\n columns?: number | undefined;\r\n spacing?: ResponsiveValue<number | string> | undefined;\r\n rowSpacing?: ResponsiveValue<number | string> | undefined;\r\n columnSpacing?: ResponsiveValue<number | string> | undefined;\r\n direction?: ResponsiveValue<GridDirection> | undefined;\r\n wrap?: GridWrap | undefined;\r\n alignItems?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n justifyContent?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n xs?: GridSize | undefined;\r\n sm?: GridSize | undefined;\r\n md?: GridSize | undefined;\r\n lg?: GridSize | undefined;\r\n xl?: GridSize | undefined;\r\n}\r\n\r\nexport interface GridProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n GridOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction generateGridSizeStyles(\r\n size: GridSize,\r\n columns: number = 12\r\n): Record<string, any> {\r\n if (size === true) {\r\n return {\r\n flexBasis: 0,\r\n flexGrow: 1,\r\n maxWidth: \"100%\",\r\n };\r\n }\r\n\r\n if (size === \"auto\") {\r\n return {\r\n flexBasis: \"auto\",\r\n flexGrow: 0,\r\n maxWidth: \"none\",\r\n };\r\n }\r\n\r\n if (typeof size === \"number\") {\r\n const widthPercentage = `${Math.round((size / columns) * 10e7) / 10e5}%`;\r\n return {\r\n flexBasis: widthPercentage,\r\n flexGrow: 0,\r\n maxWidth: widthPercentage,\r\n };\r\n }\r\n\r\n return {};\r\n}\r\n\r\nconst StyledGridRoot = styled(\"div\", {\r\n name: \"ChellaaGrid\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"container\" &&\r\n prop !== \"item\" &&\r\n prop !== \"columns\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"rowSpacing\" &&\r\n prop !== \"columnSpacing\" &&\r\n prop !== \"direction\" &&\r\n prop !== \"wrap\" &&\r\n prop !== \"alignItems\" &&\r\n prop !== \"justifyContent\" &&\r\n prop !== \"xs\" &&\r\n prop !== \"sm\" &&\r\n prop !== \"md\" &&\r\n prop !== \"lg\" &&\r\n prop !== \"xl\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ ownerState: GridOwnerState }>(({ theme, ownerState }) => {\r\n const styles: Record<string, any> = {};\r\n const columns = ownerState.columns ?? 12;\r\n\r\n // 1. Container responsive styles\r\n if (ownerState.container) {\r\n if (typeof ownerState.direction === \"object\") {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexDirection: ownerState.direction })\r\n );\r\n }\r\n\r\n if (ownerState.spacing !== undefined) {\r\n Object.assign(styles, parseSx(theme, { gap: ownerState.spacing }));\r\n }\r\n if (ownerState.rowSpacing !== undefined) {\r\n Object.assign(styles, parseSx(theme, { rowGap: ownerState.rowSpacing }));\r\n }\r\n if (ownerState.columnSpacing !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { columnGap: ownerState.columnSpacing })\r\n );\r\n }\r\n if (ownerState.alignItems !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { alignItems: ownerState.alignItems })\r\n );\r\n }\r\n if (ownerState.justifyContent !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { justifyContent: ownerState.justifyContent })\r\n );\r\n }\r\n }\r\n\r\n // 2. Item sizing across breakpoints\r\n const bpSizes: Record<BreakpointKey, GridSize | undefined> = {\r\n xs: ownerState.xs,\r\n sm: ownerState.sm,\r\n md: ownerState.md,\r\n lg: ownerState.lg,\r\n xl: ownerState.xl,\r\n };\r\n\r\n for (const bp of breakpointKeys) {\r\n const size = bpSizes[bp];\r\n if (size !== undefined) {\r\n const sizeStyles = generateGridSizeStyles(size, columns);\r\n if (bp === \"xs\") {\r\n Object.assign(styles, sizeStyles);\r\n } else {\r\n const media = theme.breakpoints.up(bp);\r\n styles[media] = {\r\n ...(styles[media] || {}),\r\n ...sizeStyles,\r\n };\r\n }\r\n }\r\n }\r\n\r\n return styles;\r\n});\r\n\r\n/**\r\n * Material 12-column responsive layout grid.\r\n *\r\n * @example\r\n * <Grid container spacing={2}>\r\n * <Grid item xs={12} md={6}>Item 1</Grid>\r\n * <Grid item xs={12} md={6}>Item 2</Grid>\r\n * </Grid>\r\n */\r\nexport const Grid = React.forwardRef<HTMLElement, GridProps>(\r\n function Grid(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n container = false,\r\n item = false,\r\n columns = 12,\r\n spacing,\r\n rowSpacing,\r\n columnSpacing,\r\n direction = \"row\",\r\n wrap = \"wrap\",\r\n alignItems,\r\n justifyContent,\r\n xs,\r\n sm,\r\n md,\r\n lg,\r\n xl,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const ownerState: GridOwnerState = {\r\n container,\r\n item,\r\n columns,\r\n spacing,\r\n rowSpacing,\r\n columnSpacing,\r\n direction,\r\n wrap,\r\n alignItems,\r\n justifyContent,\r\n xs,\r\n sm,\r\n md,\r\n lg,\r\n xl,\r\n };\r\n\r\n const isSimpleDirection = typeof direction === \"string\";\r\n\r\n const gridClassName = classNames(\r\n \"cl-grid\",\r\n container && \"cl-grid--container\",\r\n item && \"cl-grid--item\",\r\n wrap && `cl-grid--${wrap}`,\r\n isSimpleDirection && `cl-grid--direction-${direction}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledGridRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={gridClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledGridRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledGridRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={gridClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledGridRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledGridRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={gridClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledGridRoot>\r\n );\r\n }\r\n);\r\n\r\nGrid.displayName = \"Grid\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\r\nexport type DividerVariant = \"fullWidth\" | \"inset\" | \"middle\";\r\nexport type DividerTextAlign = \"center\" | \"left\" | \"right\";\r\nexport type DividerLineStyle = \"solid\" | \"dashed\" | \"dotted\";\r\n\r\nexport interface DividerOwnerState {\r\n orientation?: DividerOrientation | undefined;\r\n variant?: DividerVariant | undefined;\r\n lineStyle?: DividerLineStyle | undefined;\r\n flexItem?: boolean | undefined;\r\n light?: boolean | undefined;\r\n textAlign?: DividerTextAlign | undefined;\r\n hasChildren?: boolean | undefined;\r\n}\r\n\r\nexport interface DividerProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n DividerOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledDividerRoot = styled(\"hr\", {\r\n name: \"ChellaaDivider\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"orientation\" &&\r\n prop !== \"variant\" &&\r\n prop !== \"lineStyle\" &&\r\n prop !== \"flexItem\" &&\r\n prop !== \"light\" &&\r\n prop !== \"textAlign\" &&\r\n prop !== \"hasChildren\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Divider visual separator for grouping, lists, toolbars, and labeled sections.\r\n *\r\n * @example\r\n * <Divider />\r\n * <Divider>OR</Divider>\r\n * <Divider orientation=\"vertical\" flexItem />\r\n */\r\nexport const Divider = React.forwardRef<HTMLElement, DividerProps>(\r\n function Divider(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n orientation = \"horizontal\",\r\n variant = \"fullWidth\",\r\n lineStyle = \"solid\",\r\n flexItem = false,\r\n light = false,\r\n textAlign = \"center\",\r\n className,\r\n style,\r\n sx,\r\n children,\r\n role: roleProp,\r\n ...rest\r\n } = props;\r\n\r\n const hasChildren = Boolean(children);\r\n\r\n const dividerClassName = classNames(\r\n \"cl-divider\",\r\n `cl-divider--${orientation}`,\r\n variant !== \"fullWidth\" && `cl-divider--${variant}`,\r\n lineStyle !== \"solid\" && `cl-divider--${lineStyle}`,\r\n flexItem && \"cl-divider--flex-item\",\r\n light && \"cl-divider--light\",\r\n hasChildren && \"cl-divider--with-children\",\r\n hasChildren && `cl-divider--align-${textAlign}`,\r\n className\r\n );\r\n\r\n // Determine default semantic tag\r\n let defaultTag: React.ElementType = \"hr\";\r\n if (orientation === \"vertical\" || hasChildren) {\r\n defaultTag = \"div\";\r\n }\r\n\r\n const targetTag = component || as || defaultTag;\r\n\r\n // Accessibility attributes\r\n const isNativeHr = targetTag === \"hr\";\r\n const role = roleProp || (isNativeHr ? undefined : \"separator\");\r\n const ariaOrientation =\r\n isNativeHr\r\n ? undefined\r\n : orientation === \"vertical\"\r\n ? \"vertical\"\r\n : undefined;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledDividerRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLHRElement>}\r\n className={dividerClassName}\r\n style={style}\r\n sx={sx}\r\n role={role}\r\n aria-orientation={ariaOrientation}\r\n {...rest}\r\n >\r\n {hasChildren ? (\r\n <span className=\"cl-divider__wrapper ChellaaDivider-wrapper\">{children}</span>\r\n ) : (\r\n children\r\n )}\r\n </StyledDividerRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledDividerRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLHRElement>}\r\n className={dividerClassName}\r\n style={style}\r\n sx={sx}\r\n role={role}\r\n aria-orientation={ariaOrientation}\r\n {...rest}\r\n >\r\n {hasChildren ? (\r\n <span className=\"cl-divider__wrapper ChellaaDivider-wrapper\">{children}</span>\r\n ) : null}\r\n </StyledDividerRoot>\r\n );\r\n }\r\n);\r\n\r\nDivider.displayName = \"Divider\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport type { TypographyVariant, ChellaaTheme } from \"../../theme/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type TypographyAlign = \"inherit\" | \"left\" | \"center\" | \"right\" | \"justify\";\r\n\r\nexport interface TypographyOwnerState {\r\n variant?: TypographyVariant | undefined;\r\n align?: TypographyAlign | undefined;\r\n color?: string | undefined;\r\n gutterBottom?: boolean | undefined;\r\n noWrap?: boolean | undefined;\r\n lineClamp?: number | undefined;\r\n}\r\n\r\nexport interface TypographyProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n TypographyOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst defaultVariantMapping: Record<TypographyVariant, React.ElementType> = {\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n h5: \"h5\",\r\n h6: \"h6\",\r\n subtitle1: \"h6\",\r\n subtitle2: \"h6\",\r\n body1: \"p\",\r\n body2: \"p\",\r\n button: \"span\",\r\n caption: \"span\",\r\n overline: \"span\",\r\n};\r\n\r\ntype PaletteWithMain =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"error\"\r\n | \"warning\"\r\n | \"info\"\r\n | \"success\";\r\n\r\nfunction isPaletteWithMain(key: string): key is PaletteWithMain {\r\n return (\r\n key === \"primary\" ||\r\n key === \"secondary\" ||\r\n key === \"error\" ||\r\n key === \"warning\" ||\r\n key === \"info\" ||\r\n key === \"success\"\r\n );\r\n}\r\n\r\nconst paletteTokenFallbackMap: Record<string, string> = {\r\n primary: \"var(--cl-color-primary-base)\",\r\n secondary: \"var(--cl-color-secondary-base)\",\r\n error: \"var(--cl-color-danger-base)\",\r\n warning: \"var(--cl-color-warning-base)\",\r\n info: \"var(--cl-color-info-base)\",\r\n success: \"var(--cl-color-success-base)\",\r\n \"text.primary\": \"var(--cl-color-fg-primary)\",\r\n \"text.secondary\": \"var(--cl-color-fg-secondary)\",\r\n \"text.disabled\": \"var(--cl-color-fg-muted)\",\r\n \"background.default\": \"var(--cl-color-bg-canvas)\",\r\n \"background.paper\": \"var(--cl-color-bg-surface)\",\r\n};\r\n\r\nfunction getNestedPaletteValue(obj: unknown, path: string): string | undefined {\r\n if (obj === null || typeof obj !== \"object\") return undefined;\r\n const parts = path.split(\".\");\r\n let current: unknown = obj;\r\n for (const part of parts) {\r\n if (current !== null && typeof current === \"object\" && part in current) {\r\n current = (current as Record<string, unknown>)[part];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return typeof current === \"string\" ? current : undefined;\r\n}\r\n\r\nexport function resolveTypographyColor(\r\n theme: ChellaaTheme,\r\n color?: string\r\n): string | undefined {\r\n if (!color || color === \"inherit\" || color === \"currentColor\") {\r\n return color;\r\n }\r\n\r\n // Check direct palette main colors (primary, secondary, error, warning, info, success)\r\n if (theme?.palette && isPaletteWithMain(color)) {\r\n const paletteColor = theme.palette[color];\r\n if (paletteColor && typeof paletteColor.main === \"string\") {\r\n return paletteColor.main;\r\n }\r\n }\r\n\r\n // Check dotted paths (text.primary, text.secondary, background.paper, etc.)\r\n if (color.includes(\".\") && theme?.palette) {\r\n const resolved = getNestedPaletteValue(theme.palette, color);\r\n if (resolved) {\r\n return resolved;\r\n }\r\n }\r\n\r\n // Fallback to documented CSS token if defined for this palette key\r\n if (color in paletteTokenFallbackMap) {\r\n return paletteTokenFallbackMap[color];\r\n }\r\n\r\n return color;\r\n}\r\n\r\nconst StyledTypographyRoot = styled(\"span\", {\r\n name: \"ChellaaTypography\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"align\" &&\r\n prop !== \"color\" &&\r\n prop !== \"gutterBottom\" &&\r\n prop !== \"noWrap\" &&\r\n prop !== \"lineClamp\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ color?: string }>(({ theme, color }) => {\r\n if (color) {\r\n return {\r\n color: resolveTypographyColor(theme, color),\r\n };\r\n }\r\n return {};\r\n});\r\n\r\n/**\r\n * Foundational Typography component supporting all Material Design 3 scale variants,\r\n * truncation, line clamping, and semantic element delegation.\r\n *\r\n * @example\r\n * <Typography variant=\"h1\">Display Header</Typography>\r\n * <Typography variant=\"body1\" color=\"text.secondary\">Body text</Typography>\r\n * <Typography noWrap>Single line truncated text</Typography>\r\n */\r\nexport const Typography = React.forwardRef<HTMLElement, TypographyProps>(\r\n function Typography(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n variant = \"body1\",\r\n align = \"inherit\",\r\n color,\r\n gutterBottom = false,\r\n noWrap = false,\r\n lineClamp,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const typographyClassName = classNames(\r\n \"cl-typography\",\r\n `cl-typography--${variant}`,\r\n align && align !== \"inherit\" && `cl-typography--align-${align}`,\r\n gutterBottom && \"cl-typography--gutter-bottom\",\r\n noWrap && \"cl-typography--no-wrap\",\r\n lineClamp !== undefined && lineClamp > 0 && \"cl-typography--line-clamp\",\r\n className\r\n );\r\n\r\n const inlineStyle: React.CSSProperties = {\r\n ...(lineClamp !== undefined && lineClamp > 0\r\n ? ({ WebkitLineClamp: lineClamp } as React.CSSProperties)\r\n : {}),\r\n ...style,\r\n };\r\n\r\n const targetTag =\r\n component || as || defaultVariantMapping[variant] || \"span\";\r\n\r\n if (asChild) {\r\n return (\r\n <StyledTypographyRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLSpanElement>}\r\n className={typographyClassName}\r\n style={inlineStyle}\r\n color={color}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledTypographyRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledTypographyRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLSpanElement>}\r\n className={typographyClassName}\r\n style={inlineStyle}\r\n color={color}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledTypographyRoot>\r\n );\r\n }\r\n);\r\n\r\nTypography.displayName = \"Typography\";\r\n","import * as React from \"react\";\r\nimport { Typography, type TypographyProps } from \"./Typography\";\r\nimport type { TypographyVariant } from \"../../theme/types\";\r\n\r\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\r\n\r\nexport interface HeadingProps extends Omit<TypographyProps, \"variant\"> {\r\n /**\r\n * Semantic heading level (1 to 6).\r\n * Determines both default HTML tag (h1..h6) and typography scale variant unless overridden.\r\n * @default 2\r\n */\r\n level?: HeadingLevel | undefined;\r\n /**\r\n * Optional visual scale variant to decouple styling from heading level.\r\n */\r\n variant?: TypographyVariant | undefined;\r\n}\r\n\r\n/**\r\n * Ergonomic semantic heading primitive.\r\n *\r\n * @example\r\n * <Heading level={1}>Page Title</Heading>\r\n * <Heading level={2} variant=\"h4\">Visually smaller Section Title</Heading>\r\n */\r\nexport const Heading = React.forwardRef<HTMLElement, HeadingProps>(\r\n function Heading(props, ref) {\r\n const { level = 2, variant, component, ...rest } = props;\r\n\r\n const levelTag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\r\n const resolvedVariant = variant || levelTag;\r\n const resolvedComponent = component || levelTag;\r\n\r\n return (\r\n <Typography\r\n ref={ref}\r\n component={resolvedComponent}\r\n variant={resolvedVariant}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nHeading.displayName = \"Heading\";\r\n","import * as React from \"react\";\r\nimport { Typography, type TypographyProps } from \"./Typography\";\r\nimport type { TypographyVariant } from \"../../theme/types\";\r\n\r\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface TextProps extends TypographyProps {\r\n /**\r\n * Shorthand text size mapping to theme typographic scale:\r\n * - \"xs\": caption (12px)\r\n * - \"sm\": body2 (14px)\r\n * - \"md\": body1 (16px)\r\n * - \"lg\": subtitle1 (16px/medium)\r\n * - \"xl\": h6 (20px)\r\n */\r\n size?: TextSize | undefined;\r\n /**\r\n * If true, renders as block element ('div' or 'p'). Otherwise renders as inline 'span'.\r\n * @default false\r\n */\r\n block?: boolean | undefined;\r\n}\r\n\r\nconst sizeToVariant: Record<TextSize, TypographyVariant> = {\r\n xs: \"caption\",\r\n sm: \"body2\",\r\n md: \"body1\",\r\n lg: \"subtitle1\",\r\n xl: \"h6\",\r\n};\r\n\r\n/**\r\n * Ergonomic inline or block textual primitive.\r\n *\r\n * @example\r\n * <Text size=\"sm\" color=\"text.secondary\">Secondary caption</Text>\r\n * <Text block noWrap>Single line block item</Text>\r\n */\r\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\r\n function Text(props, ref) {\r\n const { size, variant, block = false, component, ...rest } = props;\r\n\r\n const resolvedVariant = variant || (size ? sizeToVariant[size] : \"body1\");\r\n const defaultTag = block ? \"p\" : \"span\";\r\n const resolvedComponent = component || defaultTag;\r\n\r\n return (\r\n <Typography\r\n ref={ref}\r\n component={resolvedComponent}\r\n variant={resolvedVariant}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nText.displayName = \"Text\";\r\n","import * as React from \"react\";\r\nimport { Typography, type TypographyProps } from \"./Typography\";\r\n\r\nexport interface ParagraphProps extends TypographyProps {\r\n /**\r\n * Shorthand spacing multiplier for bottom margin (defaults to standard gutterBottom).\r\n */\r\n spacing?: number | string | undefined;\r\n}\r\n\r\n/**\r\n * Ergonomic paragraph block primitive with standard reading margins.\r\n *\r\n * @example\r\n * <Paragraph>\r\n * This is standard paragraph text with built-in reading spacing.\r\n * </Paragraph>\r\n */\r\nexport const Paragraph = React.forwardRef<HTMLElement, ParagraphProps>(\r\n function Paragraph(props, ref) {\r\n const { component = \"p\", variant = \"body1\", gutterBottom = true, ...rest } = props;\r\n\r\n return (\r\n <Typography\r\n ref={ref}\r\n component={component}\r\n variant={variant}\r\n gutterBottom={gutterBottom}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nParagraph.displayName = \"Paragraph\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type CodeColorScheme = \"default\" | \"primary\" | \"secondary\";\r\n\r\nexport interface CodeOwnerState {\r\n colorScheme?: CodeColorScheme | undefined;\r\n}\r\n\r\nexport interface CodeProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n CodeOwnerState {\r\n asChild?: boolean | undefined;\r\n component?: React.ElementType | undefined;\r\n as?: React.ElementType | undefined;\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledCodeRoot = styled(\"code\", {\r\n name: \"ChellaaCode\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"colorScheme\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Inline monospace code chip primitive for identifiers, filenames, and CLI snippets.\r\n *\r\n * @example\r\n * <Text>Run <Code>npm install</Code> to install dependencies.</Text>\r\n * <Code colorScheme=\"primary\">package.json</Code>\r\n */\r\nexport const Code = React.forwardRef<HTMLElement, CodeProps>(\r\n function Code(props, ref) {\r\n const {\r\n asChild = false,\r\n component = \"code\",\r\n as,\r\n colorScheme = \"default\",\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const codeClassName = classNames(\r\n \"cl-code\",\r\n colorScheme !== \"default\" && `cl-code--${colorScheme}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as || \"code\";\r\n\r\n if (asChild) {\r\n return (\r\n <StyledCodeRoot\r\n as={Slot}\r\n ref={ref as any}\r\n className={codeClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCodeRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledCodeRoot\r\n as={targetTag}\r\n ref={ref as any}\r\n className={codeClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCodeRoot>\r\n );\r\n }\r\n);\r\n\r\nCode.displayName = \"Code\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type KbdSize = \"sm\" | \"md\" | \"lg\";\r\nexport type KbdVariant = \"outline\" | \"subtle\" | \"solid\";\r\n\r\nexport type KbdModifier =\r\n | \"command\"\r\n | \"cmd\"\r\n | \"shift\"\r\n | \"option\"\r\n | \"alt\"\r\n | \"control\"\r\n | \"ctrl\"\r\n | \"enter\"\r\n | \"escape\"\r\n | \"esc\"\r\n | \"tab\"\r\n | \"backspace\"\r\n | \"delete\"\r\n | \"del\"\r\n | \"up\"\r\n | \"down\"\r\n | \"left\"\r\n | \"right\";\r\n\r\nexport const MODIFIER_SYMBOLS: Record<KbdModifier, string> = {\r\n command: \"⌘\",\r\n cmd: \"⌘\",\r\n shift: \"⇧\",\r\n option: \"⌥\",\r\n alt: \"⌥\",\r\n control: \"⌃\",\r\n ctrl: \"⌃\",\r\n enter: \"↵\",\r\n escape: \"Esc\",\r\n esc: \"Esc\",\r\n tab: \"⇥\",\r\n backspace: \"⌫\",\r\n delete: \"⌦\",\r\n del: \"⌦\",\r\n up: \"↑\",\r\n down: \"↓\",\r\n left: \"←\",\r\n right: \"→\",\r\n};\r\n\r\nexport interface KbdOwnerState {\r\n size?: KbdSize | undefined;\r\n variant?: KbdVariant | undefined;\r\n modifier?: KbdModifier | undefined;\r\n}\r\n\r\nexport interface KbdProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n KbdOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledKbdRoot = styled(\"kbd\", {\r\n name: \"ChellaaKbd\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"variant\" &&\r\n prop !== \"modifier\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Tactile keyboard shortcut keycap primitive representing user input keystrokes.\r\n *\r\n * @example\r\n * <Kbd>Ctrl</Kbd> + <Kbd>K</Kbd>\r\n * <Kbd modifier=\"command\" />\r\n * <Kbd size=\"sm\" variant=\"subtle\">Esc</Kbd>\r\n */\r\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\r\n function Kbd(props, ref) {\r\n const {\r\n asChild = false,\r\n component = \"kbd\",\r\n as,\r\n size = \"md\",\r\n variant = \"outline\",\r\n modifier,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const kbdClassName = classNames(\r\n \"cl-kbd\",\r\n `cl-kbd--${size}`,\r\n `cl-kbd--${variant}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as || \"kbd\";\r\n\r\n // Resolve content: children takes precedence, then modifier symbol\r\n const content = children ?? (modifier ? MODIFIER_SYMBOLS[modifier] ?? modifier : null);\r\n\r\n if (asChild) {\r\n return (\r\n <StyledKbdRoot\r\n as={Slot}\r\n ref={ref as any}\r\n className={kbdClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {content}\r\n </StyledKbdRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledKbdRoot\r\n as={targetTag}\r\n ref={ref as any}\r\n className={kbdClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {content}\r\n </StyledKbdRoot>\r\n );\r\n }\r\n);\r\n\r\nKbd.displayName = \"Kbd\";\r\n","import * as React from \"react\";\r\n\r\nexport interface FormFieldContextValue {\r\n id: string;\r\n name?: string | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n error?: boolean | undefined;\r\n labelId: string;\r\n helperTextId: string;\r\n errorMessageId: string;\r\n hasHelperText: boolean;\r\n hasErrorMessage: boolean;\r\n setHasHelperText: (has: boolean) => void;\r\n setHasErrorMessage: (has: boolean) => void;\r\n}\r\n\r\nexport const FormFieldContext = React.createContext<\r\n FormFieldContextValue | undefined\r\n>(undefined);\r\n\r\n/**\r\n * Hook to consume form field state, IDs, and validation flags.\r\n * Returns undefined if used outside a <FormField>.\r\n */\r\nexport function useFormField(): FormFieldContextValue | undefined {\r\n return React.useContext(FormFieldContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { setRef } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n InputProps,\r\n InputOwnerState,\r\n InputVariant,\r\n InputSize,\r\n} from \"./Input.types\";\r\n\r\nexport type { InputProps, InputOwnerState, InputVariant, InputSize };\r\n\r\n/**\r\n * Headless raw input primitive for backward compatibility.\r\n */\r\nexport const InputBase = React.forwardRef<\r\n HTMLInputElement,\r\n React.InputHTMLAttributes<HTMLInputElement> & { ownerState?: InputOwnerState }\r\n>(function InputBase({ className, ownerState: _ownerState, ...props }, ref) {\r\n return (\r\n <input\r\n ref={ref}\r\n className={classNames(\"cl-input__input\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nInputBase.displayName = \"InputBase\";\r\n\r\nconst StyledInputRoot = styled(\"div\", {\r\n name: \"ChellaaInput\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"size\" &&\r\n prop !== \"fullWidth\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"hasStartAdornment\" &&\r\n prop !== \"hasEndAdornment\" &&\r\n prop !== \"focused\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\" &&\r\n prop !== \"ownerState\",\r\n})({});\r\n\r\n/**\r\n * Chellaa React Input component.\r\n *\r\n * Fundamental single-line text entry primitive with Material Design 3 surface variants,\r\n * precompiled CSS cascade layers (@layer cl-components), zero-runtime static styling,\r\n * dynamic sx override bridge, and accessible form integration.\r\n */\r\nexport const Input = React.forwardRef<HTMLDivElement, InputProps>(\r\n function Input(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n variant = \"outlined\",\r\n size = \"md\",\r\n fullWidth = false,\r\n error: errorProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n startAdornment,\r\n endAdornment,\r\n clearable = false,\r\n onClear,\r\n inputRef: inputRefProp,\r\n value: valueProp,\r\n defaultValue,\r\n onChange,\r\n type: typeProp,\r\n id: idProp,\r\n className,\r\n style,\r\n sx,\r\n inputProps,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n children,\r\n ...restInputProps\r\n } = props;\r\n\r\n const id = idProp ?? (asChild ? undefined : formField?.id);\r\n const type = typeProp ?? (asChild ? undefined : \"text\");\r\n const error = errorProp ?? formField?.error ?? false;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n\r\n const ariaDescribedBy = [\r\n ariaDescribedByProp,\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n // Value tracking for clearable button\r\n const [internalValue, setInternalValue] = React.useState<string>(() => {\r\n if (valueProp !== undefined) return String(valueProp);\r\n if (defaultValue !== undefined) return String(defaultValue);\r\n return \"\";\r\n });\r\n\r\n const isControlled = valueProp !== undefined;\r\n const currentValue = isControlled ? String(valueProp ?? \"\") : internalValue;\r\n\r\n const innerInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const handleInputRef = React.useCallback(\r\n (node: HTMLInputElement | null) => {\r\n innerInputRef.current = node;\r\n if (typeof inputRefProp === \"function\") {\r\n inputRefProp(node);\r\n } else if (inputRefProp && \"current\" in inputRefProp) {\r\n (inputRefProp as React.MutableRefObject<HTMLInputElement | null>).current = node;\r\n }\r\n },\r\n [inputRefProp]\r\n );\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!isControlled) {\r\n setInternalValue(event.target.value);\r\n }\r\n onChange?.(event);\r\n };\r\n\r\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation();\r\n if (!isControlled) {\r\n setInternalValue(\"\");\r\n }\r\n if (innerInputRef.current) {\r\n innerInputRef.current.value = \"\";\r\n const event = new Event(\"input\", { bubbles: true });\r\n innerInputRef.current.dispatchEvent(event);\r\n innerInputRef.current.focus();\r\n }\r\n onClear?.();\r\n };\r\n\r\n const handleWrapperClick = () => {\r\n if (innerInputRef.current && document.activeElement !== innerInputRef.current) {\r\n innerInputRef.current.focus();\r\n }\r\n };\r\n\r\n const showClear = clearable && !disabled && !readOnly && currentValue.length > 0;\r\n\r\n const clearButton = showClear ? (\r\n <button\r\n type=\"button\"\r\n className=\"cl-input__clear\"\r\n aria-label=\"Clear input\"\r\n onClick={handleClear}\r\n >\r\n <svg\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n ) : null;\r\n\r\n const inputWrapperClassName = classNames(\r\n \"cl-input\",\r\n `cl-input--${variant}`,\r\n `cl-input--${size}`,\r\n fullWidth && \"cl-input--full-width\",\r\n error && \"cl-input--error\",\r\n disabled && \"cl-input--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const handleSlottedRef = React.useCallback(\r\n (node: HTMLElement | null) => {\r\n setRef(ref, node as HTMLDivElement | null);\r\n setRef(inputRefProp, node as HTMLInputElement | null);\r\n handleInputRef(node as HTMLInputElement | null);\r\n },\r\n [ref, inputRefProp, handleInputRef]\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={handleSlottedRef}\r\n className={inputWrapperClassName}\r\n style={style}\r\n id={id}\r\n type={type}\r\n disabled={disabled || undefined}\r\n readOnly={readOnly || undefined}\r\n required={required || undefined}\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={error ? true : undefined}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n onClick={handleWrapperClick}\r\n {...inputProps}\r\n {...restInputProps}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledInputRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={inputWrapperClassName}\r\n style={style}\r\n sx={sx}\r\n onClick={handleWrapperClick}\r\n >\r\n {startAdornment}\r\n <input\r\n ref={handleInputRef}\r\n id={id}\r\n type={type}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n aria-describedby={ariaDescribedBy}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n aria-invalid={error ? true : undefined}\r\n className=\"cl-input__input\"\r\n {...inputProps}\r\n {...restInputProps}\r\n />\r\n {clearButton}\r\n {endAdornment}\r\n </StyledInputRoot>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n","import * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Input, type InputProps } from \"./Input\";\r\n\r\nexport interface TextFieldProps extends InputProps {\r\n /**\r\n * The label text displayed above the input.\r\n */\r\n label?: React.ReactNode | undefined;\r\n /**\r\n * Explanatory helper text displayed below the input.\r\n */\r\n helperText?: React.ReactNode | undefined;\r\n /**\r\n * Error message displayed below the input when error is true.\r\n */\r\n errorMessage?: React.ReactNode | undefined;\r\n /**\r\n * If true, displays a required asterisk next to the label and marks input required.\r\n * @default false\r\n */\r\n required?: boolean | undefined;\r\n}\r\n\r\nconst StyledTextFieldRoot = styled(\"div\", {\r\n name: \"ChellaaTextField\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) => prop !== \"fullWidth\",\r\n})<{ fullWidth?: boolean }>(({ fullWidth }) => ({\r\n display: \"inline-flex\",\r\n flexDirection: \"column\",\r\n position: \"relative\",\r\n width: fullWidth ? \"100%\" : \"auto\",\r\n verticalAlign: \"top\",\r\n}));\r\n\r\nconst StyledLabel = styled(\"label\")<{ required?: boolean; error?: boolean }>(\r\n ({ theme, error }) => ({\r\n display: \"block\",\r\n fontSize: \"0.875rem\",\r\n fontWeight: 500,\r\n lineHeight: 1.4,\r\n marginBottom: theme.spacing(0.75),\r\n color: error ? theme.palette.error.main : theme.palette.text.primary,\r\n userSelect: \"none\",\r\n \"& .ChellaaTextField-requiredAsterisk\": {\r\n color: theme.palette.error.main,\r\n marginLeft: 4,\r\n },\r\n })\r\n);\r\n\r\nconst StyledHelperText = styled(\"p\")<{ error?: boolean }>(\r\n ({ theme, error }) => ({\r\n fontSize: \"0.75rem\",\r\n lineHeight: 1.4,\r\n margin: 0,\r\n marginTop: theme.spacing(0.5),\r\n color: error ? theme.palette.error.main : theme.palette.text.secondary,\r\n })\r\n);\r\n\r\n/**\r\n * Enterprise composite form control combining label, input, helper text, and validation messaging.\r\n *\r\n * @example\r\n * <TextField\r\n * label=\"Email Address\"\r\n * type=\"email\"\r\n * placeholder=\"user@example.com\"\r\n * helperText=\"We will never share your email.\"\r\n * required\r\n * />\r\n */\r\nexport const TextField = React.forwardRef<HTMLDivElement, TextFieldProps>(\r\n function TextField(props, ref) {\r\n const {\r\n id: idProp,\r\n label,\r\n helperText,\r\n errorMessage,\r\n error = false,\r\n required = false,\r\n fullWidth = false,\r\n className,\r\n style,\r\n sx,\r\n ...inputProps\r\n } = props;\r\n\r\n const generatedId = React.useId();\r\n const inputId = idProp || generatedId;\r\n const isError = Boolean(error);\r\n const activeHelperContent = isError && errorMessage ? errorMessage : helperText;\r\n const messageId = isError && errorMessage ? `${inputId}-error` : `${inputId}-helper`;\r\n\r\n return (\r\n <StyledTextFieldRoot\r\n ref={ref}\r\n fullWidth={fullWidth}\r\n className={className}\r\n style={style}\r\n sx={sx}\r\n >\r\n {label && (\r\n <StyledLabel htmlFor={inputId} error={error} required={required}>\r\n {label}\r\n {required && (\r\n <span className=\"ChellaaTextField-requiredAsterisk\" aria-hidden=\"true\">\r\n *\r\n </span>\r\n )}\r\n </StyledLabel>\r\n )}\r\n\r\n <Input\r\n id={inputId}\r\n error={error}\r\n required={required}\r\n fullWidth={fullWidth}\r\n aria-describedby={activeHelperContent ? messageId : undefined}\r\n {...inputProps}\r\n />\r\n\r\n {activeHelperContent && (\r\n <StyledHelperText\r\n id={messageId}\r\n error={error}\r\n role={isError && errorMessage ? \"alert\" : undefined}\r\n aria-live={isError && errorMessage ? \"polite\" : undefined}\r\n >\r\n {activeHelperContent}\r\n </StyledHelperText>\r\n )}\r\n </StyledTextFieldRoot>\r\n );\r\n }\r\n);\r\n\r\nTextField.displayName = \"TextField\";\r\n","import * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\n\r\nexport interface InputAdornmentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Position of the adornment within the input track.\r\n */\r\n position: \"start\" | \"end\";\r\n /**\r\n * If true, prevents pointer events on the adornment (e.g. for purely decorative icons).\r\n * @default false\r\n */\r\n disablePointerEvents?: boolean | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledAdornmentRoot = styled(\"div\", {\r\n name: \"ChellaaInputAdornment\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"position\" && prop !== \"disablePointerEvents\",\r\n})<{ position: \"start\" | \"end\"; disablePointerEvents?: boolean }>(\r\n ({ theme, position, disablePointerEvents }) => ({\r\n display: \"flex\",\r\n height: \"100%\",\r\n maxHeight: \"2em\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n whiteSpace: \"nowrap\",\r\n color: theme.palette.text.secondary,\r\n marginLeft: position === \"end\" ? theme.spacing(1) : 0,\r\n marginRight: position === \"start\" ? theme.spacing(1) : 0,\r\n pointerEvents: disablePointerEvents ? \"none\" : \"auto\",\r\n userSelect: \"none\",\r\n })\r\n);\r\n\r\nexport const InputAdornment = React.forwardRef<\r\n HTMLDivElement,\r\n InputAdornmentProps\r\n>(function InputAdornment(props, ref) {\r\n const { position, disablePointerEvents = false, children, ...rest } = props;\r\n\r\n return (\r\n <StyledAdornmentRoot\r\n ref={ref}\r\n position={position}\r\n disablePointerEvents={disablePointerEvents}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledAdornmentRoot>\r\n );\r\n});\r\n\r\nInputAdornment.displayName = \"InputAdornment\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { setRef } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n TextareaProps,\r\n TextareaOwnerState,\r\n TextareaVariant,\r\n TextareaSize,\r\n TextareaResize,\r\n} from \"./Textarea.types\";\r\n\r\nexport type {\r\n TextareaProps,\r\n TextareaOwnerState,\r\n TextareaVariant,\r\n TextareaSize,\r\n TextareaResize,\r\n};\r\n\r\nconst StyledTextareaContainer = styled(\"div\", {\r\n name: \"ChellaaTextarea\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"size\" &&\r\n prop !== \"fullWidth\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"autoResize\" &&\r\n prop !== \"resize\" &&\r\n prop !== \"hasCount\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\" &&\r\n prop !== \"ownerState\",\r\n})({});\r\n\r\n/**\r\n * Multi-line plain text editing control with Material Design surface variants,\r\n * auto-expansion support, and character counter capabilities.\r\n */\r\nexport const Textarea = React.forwardRef<HTMLDivElement, TextareaProps>(\r\n function Textarea(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n variant = \"outlined\",\r\n size = \"md\",\r\n fullWidth = false,\r\n error: errorProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n minRows = 3,\r\n maxRows,\r\n autoResize = false,\r\n resize = \"vertical\",\r\n showCount = false,\r\n maxLength,\r\n textareaRef: textareaRefProp,\r\n textareaProps = {},\r\n value: valueProp,\r\n defaultValue,\r\n onChange,\r\n id: idProp,\r\n className,\r\n style,\r\n sx,\r\n placeholder,\r\n name,\r\n rows,\r\n cols,\r\n autoFocus,\r\n onFocus,\r\n onBlur,\r\n onKeyDown,\r\n onKeyUp,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n children,\r\n ...restContainerProps\r\n } = props;\r\n\r\n const id = idProp ?? (asChild ? undefined : formField?.id);\r\n const error = errorProp ?? formField?.error ?? false;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n\r\n const ariaDescribedBy = [\r\n ariaDescribedByProp,\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const [internalValue, setInternalValue] = React.useState<string>(() => {\r\n if (valueProp !== undefined) return String(valueProp);\r\n if (defaultValue !== undefined) return String(defaultValue);\r\n return \"\";\r\n });\r\n\r\n const isControlled = valueProp !== undefined;\r\n const currentValue = isControlled ? String(valueProp ?? \"\") : internalValue;\r\n\r\n const innerTextareaRef = React.useRef<HTMLTextAreaElement | null>(null);\r\n\r\n const handleTextareaRef = React.useCallback(\r\n (node: HTMLTextAreaElement | null) => {\r\n innerTextareaRef.current = node;\r\n if (typeof textareaRefProp === \"function\") {\r\n textareaRefProp(node);\r\n } else if (textareaRefProp && \"current\" in textareaRefProp) {\r\n (textareaRefProp as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\r\n }\r\n },\r\n [textareaRefProp]\r\n );\r\n\r\n // Auto-resize calculation\r\n React.useLayoutEffect(() => {\r\n if (!autoResize || !innerTextareaRef.current) return;\r\n\r\n const textarea = innerTextareaRef.current;\r\n textarea.style.height = \"auto\";\r\n\r\n const lineHeight = parseFloat(getComputedStyle(textarea).lineHeight) || 20;\r\n const minHeight = minRows * lineHeight;\r\n const maxHeight = maxRows ? maxRows * lineHeight : Infinity;\r\n\r\n const calculatedHeight = Math.min(\r\n Math.max(textarea.scrollHeight, minHeight),\r\n maxHeight\r\n );\r\n\r\n textarea.style.height = `${calculatedHeight}px`;\r\n textarea.style.overflowY =\r\n maxRows && textarea.scrollHeight > maxHeight ? \"auto\" : \"hidden\";\r\n }, [currentValue, autoResize, minRows, maxRows]);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (!isControlled) {\r\n setInternalValue(event.target.value);\r\n }\r\n onChange?.(event);\r\n };\r\n\r\n const handleWrapperClick = () => {\r\n if (innerTextareaRef.current && document.activeElement !== innerTextareaRef.current) {\r\n innerTextareaRef.current.focus();\r\n }\r\n };\r\n\r\n const containerClassName = classNames(\r\n \"cl-textarea\",\r\n `cl-textarea--${variant}`,\r\n `cl-textarea--${size}`,\r\n fullWidth && \"cl-textarea--full-width\",\r\n error && \"cl-textarea--error\",\r\n disabled && \"cl-textarea--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const textareaStyle: React.CSSProperties = {\r\n resize: autoResize ? \"none\" : resize,\r\n };\r\n\r\n const countDisplay = showCount ? (\r\n <div className=\"cl-textarea__counter\" aria-live=\"polite\">\r\n {currentValue.length}\r\n {maxLength ? ` / ${maxLength}` : \"\"}\r\n </div>\r\n ) : null;\r\n\r\n const handleSlottedRef = React.useCallback(\r\n (node: HTMLElement | null) => {\r\n setRef(ref, node as HTMLDivElement | null);\r\n setRef(textareaRefProp, node as HTMLTextAreaElement | null);\r\n handleTextareaRef(node as HTMLTextAreaElement | null);\r\n },\r\n [ref, textareaRefProp, handleTextareaRef]\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={handleSlottedRef}\r\n className={containerClassName}\r\n style={style}\r\n id={id}\r\n name={name}\r\n placeholder={placeholder}\r\n disabled={disabled || undefined}\r\n readOnly={readOnly || undefined}\r\n required={required || undefined}\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={error ? true : undefined}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n maxLength={maxLength}\r\n rows={rows ?? (asChild ? undefined : minRows)}\r\n cols={cols}\r\n autoFocus={autoFocus}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n onKeyUp={onKeyUp}\r\n onClick={handleWrapperClick}\r\n {...textareaProps}\r\n {...restContainerProps}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledTextareaContainer\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n onClick={handleWrapperClick}\r\n {...restContainerProps}\r\n >\r\n <textarea\r\n ref={handleTextareaRef}\r\n id={id}\r\n name={name}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={error ? true : undefined}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n maxLength={maxLength}\r\n rows={rows ?? minRows}\r\n cols={cols}\r\n autoFocus={autoFocus}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n onKeyUp={onKeyUp}\r\n style={textareaStyle}\r\n className=\"cl-textarea__input\"\r\n {...textareaProps}\r\n />\r\n {countDisplay}\r\n </StyledTextareaContainer>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { FormFieldContext, type FormFieldContextValue } from \"./FormFieldContext\";\r\n\r\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\r\n id?: string | undefined;\r\n name?: string | undefined;\r\n required?: boolean | undefined;\r\n isRequired?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n isDisabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n isReadOnly?: boolean | undefined;\r\n error?: boolean | undefined;\r\n isInvalid?: boolean | undefined;\r\n fullWidth?: boolean | undefined;\r\n asChild?: boolean | undefined;\r\n component?: React.ElementType | undefined;\r\n as?: React.ElementType | undefined;\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledFormFieldRoot = styled(\"div\", {\r\n name: \"ChellaaFormField\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"fullWidth\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\" &&\r\n prop !== \"error\" &&\r\n prop !== \"isInvalid\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"isDisabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"isReadOnly\" &&\r\n prop !== \"required\" &&\r\n prop !== \"isRequired\",\r\n})({});\r\n\r\n/**\r\n * Root form control container and accessibility context provider.\r\n * Automatically generates IDs and cascades validation states to child controls.\r\n *\r\n * @example\r\n * <FormField required error={hasError}>\r\n * <FormLabel>Email Address</FormLabel>\r\n * <Input type=\"email\" placeholder=\"alex@company.com\" />\r\n * <FormHelperText>We will never share your email.</FormHelperText>\r\n * <FormErrorMessage>Invalid email address.</FormErrorMessage>\r\n * </FormField>\r\n */\r\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\r\n function FormField(props, ref) {\r\n const {\r\n id: idProp,\r\n name,\r\n required: requiredProp = false,\r\n isRequired = false,\r\n disabled: disabledProp = false,\r\n isDisabled = false,\r\n readOnly: readOnlyProp = false,\r\n isReadOnly = false,\r\n error: errorProp = false,\r\n isInvalid = false,\r\n fullWidth = false,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const required = isRequired || requiredProp;\r\n const disabled = isDisabled || disabledProp;\r\n const readOnly = isReadOnly || readOnlyProp;\r\n const error = isInvalid || errorProp;\r\n\r\n const generatedId = React.useId();\r\n const id = idProp || generatedId;\r\n const labelId = `${id}-label`;\r\n const helperTextId = `${id}-helper`;\r\n const errorMessageId = `${id}-error`;\r\n\r\n const [hasHelperText, setHasHelperText] = React.useState(false);\r\n const [hasErrorMessage, setHasErrorMessage] = React.useState(false);\r\n\r\n const contextValue: FormFieldContextValue = React.useMemo(\r\n () => ({\r\n id,\r\n name,\r\n required,\r\n disabled,\r\n readOnly,\r\n error,\r\n labelId,\r\n helperTextId,\r\n errorMessageId,\r\n hasHelperText,\r\n hasErrorMessage,\r\n setHasHelperText,\r\n setHasErrorMessage,\r\n }),\r\n [\r\n id,\r\n name,\r\n required,\r\n disabled,\r\n readOnly,\r\n error,\r\n labelId,\r\n helperTextId,\r\n errorMessageId,\r\n hasHelperText,\r\n hasErrorMessage,\r\n ]\r\n );\r\n\r\n const fieldClassName = classNames(\r\n \"cl-form-field\",\r\n fullWidth && \"cl-form-field--full-width\",\r\n error && \"cl-form-field--error\",\r\n disabled && \"cl-form-field--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <FormFieldContext.Provider value={contextValue}>\r\n <StyledFormFieldRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={fieldClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledFormFieldRoot>\r\n </FormFieldContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <FormFieldContext.Provider value={contextValue}>\r\n <StyledFormFieldRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={fieldClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledFormFieldRoot>\r\n </FormFieldContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nFormField.displayName = \"FormField\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useFormField } from \"./FormFieldContext\";\r\n\r\nexport interface FormLabelProps\r\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\r\n /**\r\n * If true, displays a required asterisk. Inherits from FormField context if omitted.\r\n */\r\n required?: boolean | undefined;\r\n /**\r\n * If true, highlights label in error palette color. Inherits from FormField context if omitted.\r\n */\r\n error?: boolean | undefined;\r\n /**\r\n * If true, styles label in disabled state. Inherits from FormField context if omitted.\r\n */\r\n disabled?: boolean | undefined;\r\n /**\r\n * If true, delegates rendering to immediate child using Slot.\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledLabelRoot = styled(\"label\", {\r\n name: \"ChellaaFormLabel\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"required\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Accessible form label automatically linked to its associated input control.\r\n *\r\n * @example\r\n * <FormLabel>Email Address</FormLabel>\r\n */\r\nexport const FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\r\n function FormLabel(props, ref) {\r\n const {\r\n htmlFor: htmlForProp,\r\n id: idProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n disabled: disabledProp,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const formField = useFormField();\r\n\r\n const htmlFor = htmlForProp ?? formField?.id;\r\n const id = idProp ?? formField?.labelId;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n\r\n const labelClassName = classNames(\r\n \"cl-form-label\",\r\n error && \"cl-form-label--error\",\r\n disabled && \"cl-form-label--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledLabelRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n htmlFor={htmlFor}\r\n id={id}\r\n className={labelClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledLabelRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledLabelRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n htmlFor={htmlFor}\r\n id={id}\r\n className={labelClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n {required && (\r\n <span className=\"cl-form-label__asterisk\" aria-hidden=\"true\">*</span>\r\n )}\r\n </StyledLabelRoot>\r\n );\r\n }\r\n);\r\n\r\nFormLabel.displayName = \"FormLabel\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useFormField } from \"./FormFieldContext\";\r\n\r\nexport interface FormHelperTextProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {\r\n /**\r\n * If true, styles helper text in disabled state.\r\n */\r\n disabled?: boolean | undefined;\r\n /**\r\n * If true, delegates rendering to immediate child using Slot.\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledHelperTextRoot = styled(\"p\", {\r\n name: \"ChellaaFormHelperText\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"disabled\" && prop !== \"asChild\" && prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Contextual explanation text rendered beneath an input control,\r\n * automatically linked via aria-describedby.\r\n *\r\n * @example\r\n * <FormHelperText>We will never share your personal email.</FormHelperText>\r\n */\r\nexport const FormHelperText = React.forwardRef<\r\n HTMLParagraphElement,\r\n FormHelperTextProps\r\n>(function FormHelperText(props, ref) {\r\n const {\r\n id: idProp,\r\n disabled: disabledProp,\r\n asChild = false,\r\n component = \"p\",\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const formField = useFormField();\r\n const setHasHelperText = formField?.setHasHelperText;\r\n\r\n React.useEffect(() => {\r\n setHasHelperText?.(true);\r\n return () => setHasHelperText?.(false);\r\n }, [setHasHelperText]);\r\n\r\n const id = idProp ?? formField?.helperTextId;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const targetTag = component || as;\r\n\r\n const helperClassName = classNames(\r\n \"cl-form-helper-text\",\r\n disabled && \"cl-form-helper-text--disabled\",\r\n className\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <StyledHelperTextRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n className={helperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledHelperTextRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledHelperTextRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n className={helperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledHelperTextRoot>\r\n );\r\n});\r\n\r\nFormHelperText.displayName = \"FormHelperText\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useFormField } from \"./FormFieldContext\";\r\n\r\nexport interface FormErrorMessageProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {\r\n /**\r\n * If true, forces the error message to mount even if error is false.\r\n * @default false\r\n */\r\n forceMount?: boolean | undefined;\r\n /**\r\n * If true, delegates rendering to immediate child using Slot.\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledErrorMessageRoot = styled(\"p\", {\r\n name: \"ChellaaFormErrorMessage\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"forceMount\" && prop !== \"asChild\" && prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Accessible error message primitive rendered conditionally when error is true,\r\n * possessing role=\"alert\" for immediate screen reader announcement.\r\n *\r\n * @example\r\n * <FormErrorMessage>Please enter a valid email address.</FormErrorMessage>\r\n */\r\nexport const FormErrorMessage = React.forwardRef<\r\n HTMLParagraphElement,\r\n FormErrorMessageProps\r\n>(function FormErrorMessage(props, ref) {\r\n const {\r\n id: idProp,\r\n forceMount = false,\r\n asChild = false,\r\n component = \"p\",\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const formField = useFormField();\r\n const isError = formField?.error ?? false;\r\n const setHasErrorMessage = formField?.setHasErrorMessage;\r\n\r\n React.useEffect(() => {\r\n if (isError || forceMount) {\r\n setHasErrorMessage?.(true);\r\n return () => setHasErrorMessage?.(false);\r\n }\r\n }, [setHasErrorMessage, isError, forceMount]);\r\n\r\n if (!isError && !forceMount) {\r\n return null;\r\n }\r\n\r\n const id = idProp ?? formField?.errorMessageId;\r\n const targetTag = component || as;\r\n\r\n const errorClassName = classNames(\"cl-form-error-message\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <StyledErrorMessageRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n className={errorClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledErrorMessageRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledErrorMessageRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n className={errorClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledErrorMessageRoot>\r\n );\r\n});\r\n\r\nFormErrorMessage.displayName = \"FormErrorMessage\";\r\n","import * as React from \"react\";\r\nimport type { CheckboxContextValue } from \"./Checkbox.types\";\r\n\r\nexport const CheckboxContext = React.createContext<\r\n CheckboxContextValue | undefined\r\n>(undefined);\r\n\r\n/**\r\n * Hook to consume parent CheckboxGroup context.\r\n * Returns undefined if the checkbox is rendered standalone.\r\n */\r\nexport function useCheckboxGroup(): CheckboxContextValue | undefined {\r\n return React.useContext(CheckboxContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useCheckboxGroup } from \"./CheckboxContext\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n CheckboxProps,\r\n CheckboxSize,\r\n CheckboxColorScheme,\r\n} from \"./Checkbox.types\";\r\n\r\nexport type { CheckboxProps, CheckboxSize, CheckboxColorScheme };\r\n\r\nconst StyledCheckboxRoot = styled(\"label\", {\r\n name: \"ChellaaCheckbox\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"error\" &&\r\n prop !== \"checked\" &&\r\n prop !== \"indeterminate\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Checkbox primitive with tri-state selection, custom color palettes,\r\n * keyboard accessibility, and automatic CheckboxGroup / FormField binding.\r\n *\r\n * @example\r\n * <Checkbox defaultChecked>Subscribe to updates</Checkbox>\r\n * <Checkbox indeterminate>Select all items</Checkbox>\r\n */\r\nexport const Checkbox = React.forwardRef<HTMLLabelElement, CheckboxProps>(\r\n function Checkbox(props, ref) {\r\n const group = useCheckboxGroup();\r\n const formField = useFormField();\r\n\r\n const {\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n indeterminate = false,\r\n onChange: onChangeProp,\r\n value: valueProp,\r\n name: nameProp,\r\n size: sizeProp,\r\n colorScheme: colorSchemeProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n inputRef: inputRefProp,\r\n inputProps = {},\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n id: idProp,\r\n ...rest\r\n } = props;\r\n\r\n // Cascade resolution: Props > Group > FormField > Defaults\r\n const isGroupControlled = group !== undefined && valueProp !== undefined;\r\n const isCheckedInGroup = isGroupControlled\r\n ? group.value.includes(valueProp)\r\n : undefined;\r\n\r\n const checked =\r\n checkedProp !== undefined ? checkedProp : isCheckedInGroup;\r\n\r\n const size = sizeProp ?? group?.size ?? \"md\";\r\n const colorScheme = colorSchemeProp ?? group?.colorScheme ?? \"primary\";\r\n const disabled =\r\n disabledProp ?? group?.disabled ?? formField?.disabled ?? false;\r\n const readOnly =\r\n readOnlyProp ?? group?.readOnly ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? group?.error ?? formField?.error ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const name = nameProp ?? group?.name ?? formField?.name;\r\n const id = idProp ?? (formField ? `${formField.id}-checkbox` : undefined);\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(\r\n defaultChecked\r\n );\r\n\r\n const isControlled = checked !== undefined;\r\n const effectiveChecked = isControlled ? checked : uncontrolledChecked;\r\n\r\n const nativeInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const mergedInputRef = useMergeRefs(nativeInputRef, inputRefProp);\r\n\r\n React.useEffect(() => {\r\n if (nativeInputRef.current) {\r\n nativeInputRef.current.indeterminate = Boolean(indeterminate);\r\n }\r\n }, [indeterminate]);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled || readOnly) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (isGroupControlled) {\r\n group.toggleValue(valueProp);\r\n } else if (!isControlled) {\r\n setUncontrolledChecked(event.target.checked);\r\n }\r\n\r\n onChangeProp?.(event);\r\n };\r\n\r\n const checkboxClassName = classNames(\r\n \"cl-checkbox\",\r\n `cl-checkbox--${size}`,\r\n `cl-checkbox--${colorScheme}`,\r\n effectiveChecked && \"cl-checkbox--checked\",\r\n indeterminate && \"cl-checkbox--indeterminate\",\r\n disabled && \"cl-checkbox--disabled\",\r\n error && \"cl-checkbox--error\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const controlBox = (\r\n <span className=\"cl-checkbox__control ChellaaCheckbox-Control\" aria-hidden=\"true\">\r\n {indeterminate ? (\r\n <svg\r\n className=\"cl-checkbox__icon ChellaaCheckbox-Icon ChellaaCheckbox-Icon--indeterminate\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n width={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n height={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\r\n </svg>\r\n ) : effectiveChecked ? (\r\n <svg\r\n className=\"cl-checkbox__icon ChellaaCheckbox-Icon ChellaaCheckbox-Icon--checked\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n width={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n height={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n ) : null}\r\n </span>\r\n );\r\n\r\n const ariaDescribedBy = [\r\n inputProps[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const nativeInputNode = (\r\n <input\r\n type=\"checkbox\"\r\n id={id}\r\n name={name}\r\n value={valueProp}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n checked={isControlled ? effectiveChecked : undefined}\r\n defaultChecked={!isControlled ? defaultChecked : undefined}\r\n onChange={handleChange}\r\n ref={mergedInputRef}\r\n aria-checked={indeterminate ? \"mixed\" : effectiveChecked}\r\n aria-invalid={error ? true : undefined}\r\n aria-describedby={ariaDescribedBy}\r\n className=\"cl-checkbox__input\"\r\n {...inputProps}\r\n />\r\n );\r\n\r\n if (asChild) {\r\n const childElement = React.isValidElement(children)\r\n ? (children as React.ReactElement<{ children?: React.ReactNode }>)\r\n : null;\r\n\r\n if (!childElement) {\r\n return (\r\n <StyledCheckboxRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={checkboxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCheckboxRoot>\r\n );\r\n }\r\n\r\n const childLabel = childElement.props.children;\r\n\r\n return (\r\n <StyledCheckboxRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={checkboxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {React.cloneElement(\r\n childElement,\r\n undefined,\r\n <>\r\n {nativeInputNode}\r\n {controlBox}\r\n {childLabel && (\r\n <span className=\"cl-checkbox__label ChellaaCheckbox-Label\">\r\n {childLabel}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n </StyledCheckboxRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledCheckboxRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={checkboxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {nativeInputNode}\r\n {controlBox}\r\n {children && (\r\n <span className=\"cl-checkbox__label ChellaaCheckbox-Label\">\r\n {children}\r\n </span>\r\n )}\r\n </StyledCheckboxRoot>\r\n );\r\n }\r\n);\r\n\r\nCheckbox.displayName = \"Checkbox\";\r\n","import * as React from \"react\";\n\nexport interface UseControllableStateParams<T> {\n value?: T | undefined;\n defaultValue?: T | (() => T) | undefined;\n onChange?: ((value: T) => void) | undefined;\n}\n\n/**\n * Manages state that can be either controlled (via `value`) or uncontrolled (via `defaultValue`).\n * When controlled, updates trigger `onChange` without mutating internal state directly.\n * When uncontrolled, internal state updates and `onChange` is notified.\n */\nexport function useControllableState<T>({\n value: valueProp,\n defaultValue,\n onChange,\n}: UseControllableStateParams<T>): [\n T,\n (nextValue: T | ((prev: T) => T)) => void,\n] {\n const isControlled = valueProp !== undefined;\n\n const [uncontrolledValue, setUncontrolledValue] = React.useState<T>(() => {\n if (defaultValue !== undefined) {\n return typeof defaultValue === \"function\"\n ? (defaultValue as () => T)()\n : defaultValue;\n }\n return undefined as unknown as T;\n });\n\n const value = isControlled ? (valueProp as T) : uncontrolledValue;\n\n const onChangeRef = React.useRef(onChange);\n React.useEffect(() => {\n onChangeRef.current = onChange;\n });\n\n const setValue = React.useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n\n if (!Object.is(value, resolvedNext)) {\n if (!isControlled) {\n setUncontrolledValue(resolvedNext);\n }\n onChangeRef.current?.(resolvedNext);\n }\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport { CheckboxContext } from \"./CheckboxContext\";\r\nimport type { CheckboxGroupProps, CheckboxContextValue } from \"./Checkbox.types\";\r\n\r\ninterface StyledCheckboxGroupRootProps {\r\n orientation?: \"vertical\" | \"horizontal\" | undefined;\r\n spacing?: number | string | undefined;\r\n}\r\n\r\nconst StyledCheckboxGroupRoot = styled(\"div\", {\r\n name: \"ChellaaCheckboxGroup\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"orientation\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<StyledCheckboxGroupRootProps>(({ theme, spacing = 2 }) => {\r\n const gapValue =\r\n typeof spacing === \"number\" ? theme.spacing(spacing) : spacing;\r\n\r\n return {\r\n gap: gapValue,\r\n };\r\n});\r\n\r\n/**\r\n * CheckboxGroup manages selection state for a set of related checkboxes,\r\n * cascading shared properties and orchestrating multi-selection arrays.\r\n *\r\n * @example\r\n * <CheckboxGroup defaultValue={['react']} onChange={(val) => console.log(val)}>\r\n * <Checkbox value=\"react\">React</Checkbox>\r\n * <Checkbox value=\"vue\">Vue</Checkbox>\r\n * <Checkbox value=\"svelte\">Svelte</Checkbox>\r\n * </CheckboxGroup>\r\n */\r\nexport const CheckboxGroup = React.forwardRef<\r\n HTMLDivElement,\r\n CheckboxGroupProps\r\n>(function CheckboxGroup(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n value: valueProp,\r\n defaultValue = [],\r\n onChange: onChangeProp,\r\n name: nameProp,\r\n size = \"md\",\r\n colorScheme = \"primary\",\r\n orientation = \"vertical\",\r\n spacing = 2,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n error: errorProp,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const name = nameProp ?? formField?.name;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n\r\n const [value, setValue] = useControllableState<string[]>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onChangeProp,\r\n });\r\n\r\n const toggleValue = React.useCallback(\r\n (itemValue: string) => {\r\n if (readOnly || disabled) return;\r\n const current = value || [];\r\n const next = current.includes(itemValue)\r\n ? current.filter((v) => v !== itemValue)\r\n : [...current, itemValue];\r\n setValue(next);\r\n },\r\n [value, setValue, readOnly, disabled]\r\n );\r\n\r\n const contextValue: CheckboxContextValue = React.useMemo(\r\n () => ({\r\n value: value || [],\r\n name,\r\n size,\r\n colorScheme,\r\n disabled,\r\n readOnly,\r\n error,\r\n toggleValue,\r\n }),\r\n [value, name, size, colorScheme, disabled, readOnly, error, toggleValue]\r\n );\r\n\r\n const groupClassName = classNames(\r\n \"cl-checkbox-group\",\r\n `cl-checkbox-group--${orientation}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <CheckboxContext.Provider value={contextValue}>\r\n <StyledCheckboxGroupRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"group\"\r\n orientation={orientation}\r\n spacing={spacing}\r\n className={groupClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCheckboxGroupRoot>\r\n </CheckboxContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <CheckboxContext.Provider value={contextValue}>\r\n <StyledCheckboxGroupRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"group\"\r\n orientation={orientation}\r\n spacing={spacing}\r\n className={groupClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCheckboxGroupRoot>\r\n </CheckboxContext.Provider>\r\n );\r\n});\r\n\r\nCheckboxGroup.displayName = \"CheckboxGroup\";\r\n","import * as React from \"react\";\r\nimport type { RadioContextValue } from \"./Radio.types\";\r\n\r\nexport const RadioContext = React.createContext<\r\n RadioContextValue | undefined\r\n>(undefined);\r\n\r\n/**\r\n * Hook to consume parent RadioGroup context.\r\n * Returns undefined if the radio is rendered standalone.\r\n */\r\nexport function useRadioGroup(): RadioContextValue | undefined {\r\n return React.useContext(RadioContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useRadioGroup } from \"./RadioContext\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n RadioProps,\r\n RadioSize,\r\n RadioColorScheme,\r\n} from \"./Radio.types\";\r\n\r\nexport type { RadioProps, RadioSize, RadioColorScheme };\r\n\r\nconst StyledRadioRoot = styled(\"label\", {\r\n name: \"ChellaaRadio\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"error\" &&\r\n prop !== \"checked\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Radio primitive for single-choice selection with animated circular dot indicator,\r\n * accessible keyboard arrow navigation, and automatic RadioGroup / FormField binding.\r\n *\r\n * @example\r\n * <Radio value=\"express\">Express Delivery</Radio>\r\n */\r\nexport const Radio = React.forwardRef<HTMLLabelElement, RadioProps>(\r\n function Radio(props, ref) {\r\n const group = useRadioGroup();\r\n const formField = useFormField();\r\n\r\n const {\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n onChange: onChangeProp,\r\n value: valueProp,\r\n name: nameProp,\r\n size: sizeProp,\r\n colorScheme: colorSchemeProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n inputRef: inputRefProp,\r\n inputProps = {},\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n id: idProp,\r\n ...rest\r\n } = props;\r\n\r\n const isGroupControlled = group !== undefined && valueProp !== undefined;\r\n const isCheckedInGroup = isGroupControlled\r\n ? group.value !== undefined && String(group.value) === String(valueProp)\r\n : undefined;\r\n\r\n const checked =\r\n checkedProp !== undefined ? checkedProp : isCheckedInGroup;\r\n\r\n const size = sizeProp ?? group?.size ?? \"md\";\r\n const colorScheme = colorSchemeProp ?? group?.colorScheme ?? \"primary\";\r\n const disabled =\r\n disabledProp ?? group?.disabled ?? formField?.disabled ?? false;\r\n const readOnly =\r\n readOnlyProp ?? group?.readOnly ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? group?.error ?? formField?.error ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const name = nameProp ?? group?.name ?? formField?.name;\r\n const id = idProp ?? (formField ? `${formField.id}-radio-${valueProp ?? \"\"}` : undefined);\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(\r\n defaultChecked\r\n );\r\n\r\n const isControlled = checked !== undefined;\r\n const effectiveChecked = isControlled ? checked : uncontrolledChecked;\r\n\r\n const nativeInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const mergedInputRef = useMergeRefs(nativeInputRef, inputRefProp);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled || readOnly) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (isGroupControlled && valueProp !== undefined) {\r\n group.onChange(valueProp);\r\n } else if (!isControlled) {\r\n setUncontrolledChecked(event.target.checked);\r\n }\r\n\r\n onChangeProp?.(event);\r\n };\r\n\r\n const radioClassName = classNames(\r\n \"cl-radio\",\r\n `cl-radio--${size}`,\r\n `cl-radio--${colorScheme}`,\r\n effectiveChecked && \"cl-radio--checked\",\r\n disabled && \"cl-radio--disabled\",\r\n error && \"cl-radio--error\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const controlBox = (\r\n <span className=\"cl-radio__control ChellaaRadio-Control\" aria-hidden=\"true\">\r\n <span className=\"cl-radio__dot ChellaaRadio-Dot\" />\r\n </span>\r\n );\r\n\r\n const ariaDescribedBy = [\r\n inputProps[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const nativeInputNode = (\r\n <input\r\n type=\"radio\"\r\n id={id}\r\n name={name}\r\n value={valueProp}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n checked={isControlled ? effectiveChecked : undefined}\r\n defaultChecked={!isControlled ? defaultChecked : undefined}\r\n onChange={handleChange}\r\n ref={mergedInputRef}\r\n aria-invalid={error ? true : undefined}\r\n aria-describedby={ariaDescribedBy}\r\n className=\"cl-radio__input\"\r\n {...inputProps}\r\n />\r\n );\r\n\r\n if (asChild) {\r\n const childElement = React.isValidElement(children)\r\n ? (children as React.ReactElement<{ children?: React.ReactNode }>)\r\n : null;\r\n\r\n if (!childElement) {\r\n return (\r\n <StyledRadioRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={radioClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledRadioRoot>\r\n );\r\n }\r\n\r\n const childLabel = childElement.props.children;\r\n\r\n return (\r\n <StyledRadioRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={radioClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {React.cloneElement(\r\n childElement,\r\n undefined,\r\n <>\r\n {nativeInputNode}\r\n {controlBox}\r\n {childLabel && (\r\n <span className=\"cl-radio__label ChellaaRadio-Label\">\r\n {childLabel}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n </StyledRadioRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledRadioRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={radioClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {nativeInputNode}\r\n {controlBox}\r\n {children && (\r\n <span className=\"cl-radio__label ChellaaRadio-Label\">\r\n {children}\r\n </span>\r\n )}\r\n </StyledRadioRoot>\r\n );\r\n }\r\n);\r\n\r\nRadio.displayName = \"Radio\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport { RadioContext } from \"./RadioContext\";\r\nimport type { RadioGroupProps, RadioContextValue } from \"./Radio.types\";\r\n\r\nconst StyledRadioGroupRoot = styled(\"div\", {\r\n name: \"ChellaaRadioGroup\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"orientation\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * RadioGroup manages single-selection state across a group of mutually exclusive Radios,\r\n * providing native roving keyboard navigation and shared property cascade.\r\n *\r\n * @example\r\n * <RadioGroup defaultValue=\"standard\" onChange={(val) => console.log(val)}>\r\n * <Radio value=\"standard\">Standard Shipping (3-5 days)</Radio>\r\n * <Radio value=\"express\">Express Shipping (1-2 days)</Radio>\r\n * <Radio value=\"overnight\">Overnight Delivery</Radio>\r\n * </RadioGroup>\r\n */\r\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\r\n function RadioGroup(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onChangeProp,\r\n name: nameProp,\r\n size = \"md\",\r\n colorScheme = \"primary\",\r\n orientation = \"vertical\",\r\n spacing = 2,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n error: errorProp,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const generatedName = React.useId();\r\n const name = nameProp || formField?.name || generatedName;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n\r\n const [value, setValue] = useControllableState<string | number | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: (val) => {\r\n if (val !== undefined) {\r\n onChangeProp?.(val);\r\n }\r\n },\r\n });\r\n\r\n const handleChange = React.useCallback(\r\n (nextValue: string | number) => {\r\n if (readOnly || disabled) return;\r\n setValue(nextValue);\r\n },\r\n [readOnly, disabled, setValue]\r\n );\r\n\r\n const contextValue: RadioContextValue = React.useMemo(\r\n () => ({\r\n value,\r\n name,\r\n size,\r\n colorScheme,\r\n disabled,\r\n readOnly,\r\n error,\r\n onChange: handleChange,\r\n }),\r\n [value, name, size, colorScheme, disabled, readOnly, error, handleChange]\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const groupClassName = classNames(\r\n \"cl-radio-group\",\r\n orientation === \"horizontal\"\r\n ? \"cl-radio-group--horizontal\"\r\n : \"cl-radio-group--vertical\",\r\n className\r\n );\r\n\r\n const gapStyle =\r\n spacing !== undefined\r\n ? {\r\n gap: typeof spacing === \"number\" ? `${spacing * 4}px` : spacing,\r\n ...style,\r\n }\r\n : style;\r\n\r\n if (asChild) {\r\n return (\r\n <RadioContext.Provider value={contextValue}>\r\n <StyledRadioGroupRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"radiogroup\"\r\n className={groupClassName}\r\n style={gapStyle}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledRadioGroupRoot>\r\n </RadioContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <RadioContext.Provider value={contextValue}>\r\n <StyledRadioGroupRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"radiogroup\"\r\n className={groupClassName}\r\n style={gapStyle}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledRadioGroupRoot>\r\n </RadioContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nRadioGroup.displayName = \"RadioGroup\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n SwitchProps,\r\n SwitchSize,\r\n SwitchColorScheme,\r\n SwitchLabelPlacement,\r\n} from \"./Switch.types\";\r\n\r\nexport type {\r\n SwitchProps,\r\n SwitchSize,\r\n SwitchColorScheme,\r\n SwitchLabelPlacement,\r\n};\r\n\r\nconst StyledSwitchRoot = styled(\"label\", {\r\n name: \"ChellaaSwitch\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"labelPlacement\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"error\" &&\r\n prop !== \"loading\" &&\r\n prop !== \"checked\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Switch primitive representing an immediate binary toggle setting.\r\n * Conforms to the W3C WAI-ARIA 1.2 Switch Pattern (`role=\"switch\"`).\r\n *\r\n * @example\r\n * <Switch defaultChecked>Enable Notifications</Switch>\r\n */\r\nexport const Switch = React.forwardRef<HTMLLabelElement, SwitchProps>(\r\n function Switch(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n onChange: onChangeProp,\r\n value,\r\n name: nameProp,\r\n size = \"md\",\r\n colorScheme = \"primary\",\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n loading = false,\r\n checkedIcon,\r\n uncheckedIcon,\r\n labelPlacement = \"end\",\r\n inputRef: inputRefProp,\r\n inputProps = {},\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n id: idProp,\r\n ...rest\r\n } = props;\r\n\r\n const disabled =\r\n disabledProp ?? formField?.disabled ?? loading ? true : false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const name = nameProp ?? formField?.name;\r\n const id = idProp ?? (formField ? `${formField.id}-switch` : undefined);\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(\r\n defaultChecked\r\n );\r\n\r\n const isControlled = checkedProp !== undefined;\r\n const effectiveChecked = isControlled ? checkedProp : uncontrolledChecked;\r\n\r\n const nativeInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const mergedInputRef = useMergeRefs(nativeInputRef, inputRefProp);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled || readOnly || loading) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!isControlled) {\r\n setUncontrolledChecked(event.target.checked);\r\n }\r\n\r\n onChangeProp?.(event);\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n if (!disabled && !readOnly && !loading) {\r\n nativeInputRef.current?.click();\r\n }\r\n } else if (event.key === \" \" && (readOnly || loading)) {\r\n event.preventDefault();\r\n }\r\n inputProps.onKeyDown?.(event);\r\n };\r\n\r\n const switchClassName = classNames(\r\n \"cl-switch\",\r\n `cl-switch--${size}`,\r\n `cl-switch--${colorScheme}`,\r\n `cl-switch--placement-${labelPlacement}`,\r\n effectiveChecked && \"cl-switch--checked\",\r\n disabled && \"cl-switch--disabled\",\r\n error && \"cl-switch--error\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const thumbIcon = loading ? (\r\n <svg\r\n className=\"cl-switch__spinner\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3\"\r\n strokeDasharray=\"40 20\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n ) : effectiveChecked ? (\r\n checkedIcon\r\n ) : (\r\n uncheckedIcon\r\n );\r\n\r\n const trackControl = (\r\n <span className=\"cl-switch__track ChellaaSwitch-Track\" aria-hidden=\"true\">\r\n <span className=\"cl-switch__thumb ChellaaSwitch-Thumb\">\r\n {thumbIcon}\r\n </span>\r\n </span>\r\n );\r\n\r\n const ariaDescribedBy = [\r\n inputProps[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const nativeInputNode = (\r\n <input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n id={id}\r\n name={name}\r\n value={value}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n checked={isControlled ? effectiveChecked : undefined}\r\n defaultChecked={!isControlled ? defaultChecked : undefined}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n ref={mergedInputRef}\r\n aria-checked={effectiveChecked}\r\n aria-invalid={error ? true : undefined}\r\n aria-describedby={ariaDescribedBy}\r\n className=\"cl-switch__input\"\r\n {...inputProps}\r\n />\r\n );\r\n\r\n if (asChild) {\r\n const childElement = React.isValidElement(children)\r\n ? (children as React.ReactElement<{ children?: React.ReactNode }>)\r\n : null;\r\n\r\n if (!childElement) {\r\n return (\r\n <StyledSwitchRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={switchClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledSwitchRoot>\r\n );\r\n }\r\n\r\n const childLabel = childElement.props.children;\r\n\r\n return (\r\n <StyledSwitchRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={switchClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {React.cloneElement(\r\n childElement,\r\n undefined,\r\n <>\r\n {nativeInputNode}\r\n {trackControl}\r\n {childLabel && (\r\n <span className=\"cl-switch__label ChellaaSwitch-Label\">\r\n {childLabel}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n </StyledSwitchRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledSwitchRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={switchClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {nativeInputNode}\r\n {trackControl}\r\n {children && (\r\n <span className=\"cl-switch__label ChellaaSwitch-Label\">\r\n {children}\r\n </span>\r\n )}\r\n </StyledSwitchRoot>\r\n );\r\n }\r\n);\r\n\r\nSwitch.displayName = \"Switch\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nimport type {\r\n PaperVariant,\r\n PaperOwnerState,\r\n PaperProps,\r\n} from \"./Paper.types\";\r\n\r\nexport type { PaperVariant, PaperOwnerState, PaperProps };\r\n\r\nconst StyledPaperRoot = styled(\"div\", {\r\n name: \"ChellaaPaper\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"elevation\" &&\r\n prop !== \"variant\" &&\r\n prop !== \"square\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Material Paper elevation surface container with 24-level elevation shadows,\r\n * dark-mode surface elevation overlays, and outlined variants.\r\n *\r\n * @example\r\n * <Paper elevation={3} sx={{ p: 2 }}>\r\n * Elevated Content\r\n * </Paper>\r\n */\r\nexport const Paper = React.forwardRef<HTMLElement, PaperProps>(\r\n function Paper(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n elevation = 1,\r\n variant = \"elevation\",\r\n square = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const clampedElevation = Math.max(0, Math.min(24, elevation));\r\n\r\n const paperClassName = classNames(\r\n \"cl-paper\",\r\n square && \"cl-paper--square\",\r\n variant === \"outlined\" ? \"cl-paper--outlined\" : `cl-paper--elevation-${clampedElevation}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledPaperRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={paperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledPaperRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledPaperRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={paperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledPaperRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledPaperRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={paperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledPaperRoot>\r\n );\r\n }\r\n);\r\n\r\nPaper.displayName = \"Paper\";\r\n","import * as React from \"react\";\r\nimport type { CardSize } from \"./Card.types\";\r\n\r\n/**\r\n * Internal context propagating Card root's `size` prop to all sub-components\r\n * (CardHeader, CardBody, CardFooter, CardActions) so they produce consistent\r\n * padding without consumers having to pass `size` to every child.\r\n */\r\nexport interface CardContextValue {\r\n size: CardSize;\r\n}\r\n\r\nexport const CardContext = React.createContext<CardContextValue>({\r\n size: \"md\",\r\n});\r\n\r\nexport function useCardContext(): CardContextValue {\r\n return React.useContext(CardContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { CardContext } from \"./CardContext\";\r\nimport type {\r\n CardProps,\r\n CardHeaderProps,\r\n CardTitleProps,\r\n CardDescriptionProps,\r\n CardMediaProps,\r\n CardBodyProps,\r\n CardFooterProps,\r\n CardActionsProps,\r\n} from \"./Card.types\";\r\n\r\n// ─── Card Root Styled Component ──────────────────────────────────────────────\r\n\r\nconst StyledCardRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"elevation\" &&\r\n prop !== \"hoverable\" &&\r\n prop !== \"square\" &&\r\n prop !== \"size\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n// ─── Card Component ──────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Material Design 3-aligned surface container with compound sub-components.\r\n * Supports 3 visual variants, numeric M3 elevation, dark-mode overlay tinting,\r\n * and an optional hoverable lift mode.\r\n *\r\n * @example\r\n * <Card hoverable>\r\n * <CardMedia image=\"/hero.jpg\" alt=\"Hero\" />\r\n * <CardHeader title=\"Title\" subheader=\"Subtitle\" />\r\n * <CardBody>Content here</CardBody>\r\n * <CardActions>\r\n * <Button>Action</Button>\r\n * </CardActions>\r\n * </Card>\r\n */\r\nexport const CardRoot = React.forwardRef<HTMLDivElement, CardProps>(\r\n function CardRoot(props, ref) {\r\n const {\r\n variant = \"elevated\",\r\n elevation = 1,\r\n size = \"md\",\r\n hoverable = false,\r\n isClickable = false,\r\n square = false,\r\n asChild = false,\r\n component,\r\n as,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const normalizedVariant = variant === \"outline\" ? \"outlined\" : variant;\r\n\r\n const cardClassName = classNames(\r\n \"cl-card\",\r\n `cl-card--${size}`,\r\n `cl-card--${normalizedVariant}`,\r\n variant === \"outline\" && \"cl-card--outline\",\r\n square && \"cl-card--square\",\r\n (hoverable || isClickable) && \"cl-card--hoverable\",\r\n isClickable && \"cl-card--clickable\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n return (\r\n <CardContext.Provider value={{ size }}>\r\n {asChild ? (\r\n <StyledCardRoot\r\n as={Slot}\r\n ref={ref}\r\n className={cardClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardRoot>\r\n ) : (\r\n <StyledCardRoot\r\n as={targetTag}\r\n ref={ref}\r\n className={cardClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardRoot>\r\n )}\r\n </CardContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nCardRoot.displayName = \"Card\";\r\n\r\n// ─── CardHeader Styled Components ────────────────────────────────────────────\r\n\r\nconst StyledCardHeaderRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Header\",\r\n shouldForwardProp: (prop) => prop !== \"cardSize\" && prop !== \"asChild\",\r\n})({});\r\n\r\n// ─── CardHeader Component ────────────────────────────────────────────────────\r\n\r\n/**\r\n * Header zone of a Card. Supports avatar, title, subheader, and trailing action slots.\r\n * Automatically inherits `size` from the parent Card via CardContext.\r\n */\r\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\r\n function CardHeader(props, ref) {\r\n const {\r\n avatar,\r\n action,\r\n title,\r\n subheader,\r\n titleTypographyProps,\r\n subheaderTypographyProps,\r\n asChild = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const headerClassName = classNames(\r\n \"cl-card__header\",\r\n \"ChellaaCard-header\",\r\n className\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <StyledCardHeaderRoot\r\n as={Slot}\r\n ref={ref}\r\n className={headerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardHeaderRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledCardHeaderRoot\r\n ref={ref}\r\n className={headerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {avatar && (\r\n <div className=\"cl-card__header-avatar ChellaaCard-headerAvatar\">\r\n {avatar}\r\n </div>\r\n )}\r\n <div className=\"cl-card__header-content ChellaaCard-headerContent\">\r\n {title != null && (\r\n <span\r\n className={classNames(\r\n \"cl-card__header-title\",\r\n \"ChellaaCard-headerTitle\",\r\n titleTypographyProps?.className\r\n )}\r\n {...titleTypographyProps}\r\n >\r\n {title}\r\n </span>\r\n )}\r\n {subheader != null && (\r\n <span\r\n className={classNames(\r\n \"cl-card__header-subheader\",\r\n \"ChellaaCard-headerSubheader\",\r\n subheaderTypographyProps?.className\r\n )}\r\n {...subheaderTypographyProps}\r\n >\r\n {subheader}\r\n </span>\r\n )}\r\n {children}\r\n </div>\r\n {action && (\r\n <div className=\"cl-card__header-action ChellaaCard-headerAction\">\r\n {action}\r\n </div>\r\n )}\r\n </StyledCardHeaderRoot>\r\n );\r\n }\r\n);\r\n\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\n// ─── CardMedia Styled Component ──────────────────────────────────────────────\r\n\r\nconst StyledCardMediaRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Media\",\r\n shouldForwardProp: (prop) => prop !== \"image\" && prop !== \"aspectRatio\",\r\n})({});\r\n\r\n// ─── CardMedia Component ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Aspect-ratio-locked media zone that bleeds edge-to-edge within the card.\r\n * Use the `image` prop for a CSS background shorthand, or place an `<img>`\r\n * child for semantic HTML (preferred for accessibility).\r\n */\r\nexport const CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(\r\n function CardMedia(props, ref) {\r\n const {\r\n image,\r\n alt,\r\n aspectRatio = \"16/9\",\r\n component,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const mediaStyle: React.CSSProperties = {\r\n ...(aspectRatio ? { aspectRatio } : {}),\r\n ...(image ? { backgroundImage: `url(${image})` } : {}),\r\n ...style,\r\n };\r\n\r\n const mediaClassName = classNames(\r\n \"cl-card__media\",\r\n \"ChellaaCard-media\",\r\n className\r\n );\r\n\r\n return (\r\n <StyledCardMediaRoot\r\n as={component}\r\n ref={ref}\r\n className={mediaClassName}\r\n style={mediaStyle}\r\n sx={sx}\r\n role={image && !children ? \"img\" : undefined}\r\n aria-label={image && !children ? alt : undefined}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardMediaRoot>\r\n );\r\n }\r\n);\r\n\r\nCardMedia.displayName = \"CardMedia\";\r\n\r\n// ─── CardBody Styled Component ───────────────────────────────────────────────\r\n\r\nconst StyledCardBodyRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Body\",\r\n shouldForwardProp: (prop) => prop !== \"cardSize\",\r\n})({});\r\n\r\n// ─── CardBody Component ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Main flexible content zone of a Card.\r\n * Inherits `size` from parent Card for consistent padding.\r\n */\r\nexport const CardBody = React.forwardRef<HTMLDivElement, CardBodyProps>(\r\n function CardBody(props, ref) {\r\n const { children, className, style, sx, ...rest } = props;\r\n const bodyClassName = classNames(\"cl-card__body\", \"ChellaaCard-body\", className);\r\n\r\n return (\r\n <StyledCardBodyRoot\r\n ref={ref}\r\n className={bodyClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardBodyRoot>\r\n );\r\n }\r\n);\r\n\r\nCardBody.displayName = \"CardBody\";\r\n\r\n// ─── CardFooter Styled Component ─────────────────────────────────────────────\r\n\r\nconst StyledCardFooterRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Footer\",\r\n shouldForwardProp: (prop) => prop !== \"divider\" && prop !== \"cardSize\",\r\n})({});\r\n\r\n// ─── CardFooter Component ────────────────────────────────────────────────────\r\n\r\n/**\r\n * Semantic footer zone of a Card. Use for metadata, tags, timestamps.\r\n * Set `divider` to render a 1px separator between the body and footer.\r\n */\r\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\r\n function CardFooter(props, ref) {\r\n const { divider = false, children, className, style, sx, ...rest } = props;\r\n const footerClassName = classNames(\r\n \"cl-card__footer\",\r\n \"ChellaaCard-footer\",\r\n divider && \"cl-card__footer--divider\",\r\n className\r\n );\r\n\r\n return (\r\n <StyledCardFooterRoot\r\n ref={ref}\r\n className={footerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardFooterRoot>\r\n );\r\n }\r\n);\r\n\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\n// ─── CardActions Styled Component ────────────────────────────────────────────\r\n\r\nconst StyledCardActionsRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Actions\",\r\n shouldForwardProp: (prop) => prop !== \"disableSpacing\" && prop !== \"cardSize\",\r\n})({});\r\n\r\n// ─── CardActions Component ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Flex action strip for Button / Link controls inside a Card.\r\n * By default applies a slight negative margin to align icon-buttons\r\n * flush to the card's padding box. Use `disableSpacing` to remove this.\r\n */\r\nexport const CardActions = React.forwardRef<HTMLDivElement, CardActionsProps>(\r\n function CardActions(props, ref) {\r\n const {\r\n disableSpacing = false,\r\n align = \"start\",\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n const actionsClassName = classNames(\r\n \"cl-card__actions\",\r\n \"ChellaaCard-actions\",\r\n `cl-card__actions--align-${align}`,\r\n disableSpacing && \"cl-card__actions--disable-spacing\",\r\n className\r\n );\r\n\r\n return (\r\n <StyledCardActionsRoot\r\n ref={ref}\r\n className={actionsClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardActionsRoot>\r\n );\r\n }\r\n);\r\n\r\nCardActions.displayName = \"CardActions\";\r\n\r\n// ─── CardTitle Styled Component ──────────────────────────────────────────────\r\n\r\nconst StyledCardTitleRoot = styled(\"h3\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Title\",\r\n shouldForwardProp: (prop) => prop !== \"asChild\",\r\n})({});\r\n\r\n// ─── CardTitle Component ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Semantic heading component for a Card, typically rendered inside CardHeader.\r\n * Supports `asChild` for slot delegation to custom heading levels.\r\n */\r\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\r\n function CardTitle({ asChild = false, className, children, style, sx, ...rest }, ref) {\r\n const titleClassName = classNames(\"cl-card__title\", className);\r\n if (asChild) {\r\n return (\r\n <StyledCardTitleRoot\r\n as={Slot}\r\n ref={ref}\r\n className={titleClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardTitleRoot>\r\n );\r\n }\r\n return (\r\n <StyledCardTitleRoot\r\n ref={ref}\r\n className={titleClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardTitleRoot>\r\n );\r\n }\r\n);\r\n\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\n// ─── CardDescription Styled Component ────────────────────────────────────────\r\n\r\nconst StyledCardDescriptionRoot = styled(\"p\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Description\",\r\n shouldForwardProp: (prop) => prop !== \"asChild\",\r\n})({});\r\n\r\n// ─── CardDescription Component ───────────────────────────────────────────────\r\n\r\n/**\r\n * Supporting subtext or subtitle paragraph for a Card.\r\n * Supports `asChild` for slot delegation.\r\n */\r\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\r\n function CardDescription({ asChild = false, className, children, style, sx, ...rest }, ref) {\r\n const descClassName = classNames(\"cl-card__description\", \"cl-card__desc\", className);\r\n if (asChild) {\r\n return (\r\n <StyledCardDescriptionRoot\r\n as={Slot}\r\n ref={ref}\r\n className={descClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardDescriptionRoot>\r\n );\r\n }\r\n return (\r\n <StyledCardDescriptionRoot\r\n ref={ref}\r\n className={descClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardDescriptionRoot>\r\n );\r\n }\r\n);\r\n\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\n// ─── Compound Export ─────────────────────────────────────────────────────────\r\n\r\nexport const Card = Object.assign(CardRoot, {\r\n Root: CardRoot,\r\n Header: CardHeader,\r\n Title: CardTitle,\r\n Description: CardDescription,\r\n Body: CardBody,\r\n Footer: CardFooter,\r\n Media: CardMedia,\r\n Actions: CardActions,\r\n});\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\n\nexport interface PortalProps {\n children?: React.ReactNode;\n container?: HTMLElement | null;\n}\n\n/**\n * Renders child elements into a DOM container outside the parent component tree (default: document.body).\n * Preserves React Context across the portal boundary and is completely SSR/hydration safe.\n */\nexport function Portal({\n children,\n container,\n}: PortalProps): React.ReactPortal | null {\n const [mounted, setMounted] = React.useState(false);\n\n React.useEffect(() => {\n setMounted(true);\n return () => setMounted(false);\n }, []);\n\n if (!mounted) {\n return null;\n }\n\n const portalContainer =\n container ?? (typeof document !== \"undefined\" ? document.body : null);\n\n if (!portalContainer) {\n return null;\n }\n\n return ReactDOM.createPortal(children, portalContainer);\n}\n\nPortal.displayName = \"Portal\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n arrow,\n useHover,\n useFocus,\n useDismiss,\n useRole,\n useInteractions,\n safePolygon,\n} from \"@floating-ui/react\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Kbd } from \"../Kbd\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { classNames } from \"../../utils/classNames\";\nimport { getElementRef } from \"../../utils/getElementRef\";\nimport type { TooltipProps } from \"./Tooltip.types\";\n\n/**\n * Tooltip provides a lightweight, accessible floating text popup anchored to a target\n * trigger element, triggered via pointer hover or keyboard focus.\n *\n * Conforms to WCAG 2.2 AA (SC 1.4.13 Content on Hover or Focus) and WAI-ARIA APG Tooltip Pattern.\n */\nexport const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(\n {\n content,\n children,\n placement = \"top\",\n openDelay = 200,\n closeDelay = 150,\n isOpen: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n hasArrow = true,\n isDisabled = false,\n offset: offsetProp = 8,\n shortcut,\n className,\n style,\n },\n forwardedRef,\n ) {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const isEffectivelyOpen = Boolean(isOpen && !isDisabled && content);\n const arrowRef = React.useRef<HTMLDivElement>(null);\n\n const {\n refs,\n floatingStyles,\n placement: actualPlacement,\n middlewareData,\n context,\n } = useFloating({\n placement,\n open: isEffectivelyOpen,\n onOpenChange: (nextOpen) => {\n if (!isDisabled && content) {\n setIsOpen(nextOpen);\n } else if (!nextOpen) {\n setIsOpen(false);\n }\n },\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(offsetProp),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 8 }),\n hasArrow ? arrow({ element: arrowRef }) : undefined,\n ].filter(Boolean),\n });\n\n const hover = useHover(context, {\n delay: {\n open: openDelay,\n close: closeDelay,\n },\n handleClose: safePolygon(),\n enabled: !isDisabled && Boolean(content),\n });\n\n const focus = useFocus(context, {\n visibleOnly: false,\n enabled: !isDisabled && Boolean(content),\n });\n\n const dismiss = useDismiss(context, {\n escapeKey: true,\n enabled: !isDisabled && Boolean(content),\n });\n\n const role = useRole(context, {\n role: \"tooltip\",\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role,\n ]);\n\n const generatedId = React.useId();\n const tooltipId = `cl-tooltip-${(context.floatingId || generatedId).replace(/:/g, \"\")}`;\n const childRef = React.isValidElement(children)\n ? getElementRef(children)\n : undefined;\n const mergedReferenceRef = useMergeRefs(refs.setReference, childRef);\n const mergedFloatingRef = useMergeRefs(refs.setFloating, forwardedRef);\n\n if (!React.isValidElement(children)) {\n return null;\n }\n\n const childProps = children.props as Record<string, unknown>;\n const childAriaDescribedBy = childProps[\"aria-describedby\"] as string | undefined;\n const mergedAriaDescribedBy = isEffectivelyOpen\n ? [childAriaDescribedBy, tooltipId].filter(Boolean).join(\" \")\n : childAriaDescribedBy;\n\n const referenceProps = getReferenceProps({\n ...childProps,\n ref: mergedReferenceRef,\n \"aria-describedby\": mergedAriaDescribedBy,\n });\n\n const clonedTrigger = React.cloneElement(children, referenceProps);\n\n return (\n <>\n {clonedTrigger}\n {isEffectivelyOpen && (\n <Portal>\n <div\n {...getFloatingProps({\n id: tooltipId,\n ref: mergedFloatingRef,\n role: \"tooltip\",\n className: classNames(\"cl-tooltip\", className),\n style: {\n ...floatingStyles,\n ...style,\n },\n })}\n data-state=\"open\"\n data-placement={actualPlacement}\n >\n <span className=\"cl-tooltip__label\">{content}</span>\n {shortcut && (\n <span className=\"cl-tooltip__shortcut\">\n <Kbd size=\"sm\">{shortcut}</Kbd>\n </span>\n )}\n {hasArrow && (\n <div\n ref={arrowRef}\n className=\"cl-tooltip__arrow\"\n aria-hidden=\"true\"\n style={{\n left:\n middlewareData.arrow?.x != null\n ? `${middlewareData.arrow.x}px`\n : undefined,\n top:\n middlewareData.arrow?.y != null\n ? `${middlewareData.arrow.y}px`\n : undefined,\n }}\n />\n )}\n </div>\n </Portal>\n )}\n </>\n );\n },\n);\n\nTooltip.displayName = \"Tooltip\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n arrow,\n useClick,\n useDismiss,\n useRole,\n useInteractions,\n FloatingFocusManager,\n type FloatingContext,\n type ExtendedRefs,\n type MiddlewareData,\n} from \"@floating-ui/react\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { composeEventHandlers } from \"../../utils/composeEventHandlers\";\nimport { classNames } from \"../../utils/classNames\";\nimport { getElementRef } from \"../../utils/getElementRef\";\nimport type {\n PopoverRootProps,\n PopoverTriggerProps,\n PopoverPortalProps,\n PopoverContentProps,\n PopoverCloseProps,\n PopoverArrowProps,\n PopoverHeaderProps,\n PopoverTitleProps,\n PopoverBodyProps,\n PopoverFooterProps,\n PopoverContextValue,\n} from \"./Popover.types\";\n\ninterface PopoverInternalContextValue extends PopoverContextValue {\n floatingContext: FloatingContext;\n getReferenceProps: (userProps?: React.HTMLProps<Element>) => Record<string, unknown>;\n getFloatingProps: (userProps?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;\n refs: ExtendedRefs<Element>;\n floatingStyles: React.CSSProperties;\n middlewareData: MiddlewareData;\n arrowRef: React.RefObject<HTMLDivElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverInternalContextValue | null>(null);\n\nexport function usePopoverContext(): PopoverInternalContextValue {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\n \"Popover compound subcomponents must be rendered within a <Popover.Root> or <Popover>\",\n );\n }\n return context;\n}\n\n/**\n * Popover.Root (or <Popover>) manages the open state and floating positioning context\n * for anchored rich interactive popup overlays.\n */\nexport function PopoverRoot({\n children,\n isOpen: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = \"bottom\",\n offset: offsetProp = 8,\n trapFocus = true,\n closeOnEsc = true,\n initialFocusRef,\n returnFocusRef,\n}: PopoverRootProps) {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const arrowRef = React.useRef<HTMLDivElement | null>(null);\n const [hasTitle, setHasTitle] = React.useState(false);\n const [hasPortalParent, setHasPortalParent] = React.useState(false);\n\n const {\n refs,\n floatingStyles,\n placement: actualPlacement,\n middlewareData,\n context: floatingContext,\n } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(offsetProp),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 8 }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const click = useClick(floatingContext);\n const dismiss = useDismiss(floatingContext, {\n escapeKey: closeOnEsc,\n outsidePress: true,\n bubbles: false,\n });\n const role = useRole(floatingContext, {\n role: \"dialog\",\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role,\n ]);\n\n const generatedId = React.useId();\n const id = `cl-popover-${(floatingContext.floatingId || generatedId).replace(/:/g, \"\")}`;\n const titleId = `cl-popover-title-${(floatingContext.floatingId || generatedId).replace(/:/g, \"\")}`;\n\n const open = React.useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = React.useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = React.useCallback(() => setIsOpen((prev) => !prev), [setIsOpen]);\n\n const contextValue: PopoverInternalContextValue = {\n isOpen,\n open,\n close,\n toggle,\n placement,\n actualPlacement,\n trapFocus,\n id,\n titleId,\n hasTitle,\n setHasTitle,\n hasPortalParent,\n setHasPortalParent,\n initialFocusRef,\n returnFocusRef,\n floatingContext,\n getReferenceProps,\n getFloatingProps,\n refs,\n floatingStyles,\n middlewareData,\n arrowRef,\n };\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n </PopoverContext.Provider>\n );\n}\n\nPopoverRoot.displayName = \"Popover.Root\";\n\n/**\n * Popover.Trigger wraps the anchor element, binding click and aria attributes.\n */\nexport const PopoverTrigger = React.forwardRef<HTMLElement, PopoverTriggerProps>(\n function PopoverTrigger({ children, asChild = false }, ref) {\n const { refs, getReferenceProps, isOpen, id } = usePopoverContext();\n\n const childRef = React.isValidElement(children)\n ? getElementRef(children)\n : undefined;\n const mergedRef = useMergeRefs(refs.setReference, childRef, ref);\n\n if (!React.isValidElement(children)) {\n return null;\n }\n\n const childProps = children.props as Record<string, unknown>;\n\n const referenceProps = getReferenceProps({\n ...childProps,\n ref: mergedRef,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? id : undefined,\n });\n\n if (asChild) {\n return <Slot {...referenceProps}>{children}</Slot>;\n }\n\n return React.cloneElement(children, referenceProps);\n },\n);\n\nPopoverTrigger.displayName = \"Popover.Trigger\";\n\n/**\n * Popover.Portal mounts popover content into document.body or a custom container.\n */\nexport function PopoverPortal({ children, container }: PopoverPortalProps) {\n const { isOpen, setHasPortalParent } = usePopoverContext();\n\n React.useEffect(() => {\n setHasPortalParent(true);\n return () => setHasPortalParent(false);\n }, [setHasPortalParent]);\n\n if (!isOpen) {\n return null;\n }\n\n return <Portal container={container ?? null}>{children}</Portal>;\n}\n\nPopoverPortal.displayName = \"Popover.Portal\";\n\n/**\n * Popover.Content renders the floating dialog container with focus trapping and styling.\n */\nexport const PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(\n {\n children,\n hasArrow = true,\n className,\n style,\n ...restProps\n },\n ref,\n ) {\n const {\n isOpen,\n id,\n titleId,\n hasTitle,\n trapFocus,\n initialFocusRef,\n returnFocusRef,\n floatingContext,\n getFloatingProps,\n refs,\n floatingStyles,\n actualPlacement,\n hasPortalParent,\n } = usePopoverContext();\n\n const mergedRef = useMergeRefs(refs.setFloating, ref);\n\n if (!isOpen) {\n return null;\n }\n\n const contentNode = (\n <FloatingFocusManager\n context={floatingContext}\n modal={trapFocus}\n disabled={!trapFocus}\n initialFocus={initialFocusRef || undefined}\n returnFocus={returnFocusRef || true}\n >\n <div\n {...getFloatingProps({\n id,\n ref: mergedRef,\n role: \"dialog\",\n \"aria-modal\": trapFocus ? \"true\" : undefined,\n \"aria-labelledby\": hasTitle ? titleId : undefined,\n className: classNames(\"cl-popover\", className),\n style: {\n ...floatingStyles,\n ...style,\n },\n tabIndex: -1,\n ...restProps,\n })}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-placement={actualPlacement}\n >\n {hasArrow && <PopoverArrow />}\n {children}\n </div>\n </FloatingFocusManager>\n );\n\n if (hasPortalParent) {\n return contentNode;\n }\n\n return <Portal>{contentNode}</Portal>;\n },\n);\n\nPopoverContent.displayName = \"Popover.Content\";\n\n/**\n * Popover.Arrow renders the directional pointer diamond.\n */\nexport const PopoverArrow = React.forwardRef<HTMLDivElement, PopoverArrowProps>(\n function PopoverArrow({ className, style, ...restProps }, ref) {\n const { arrowRef, middlewareData } = usePopoverContext();\n const mergedRef = useMergeRefs(arrowRef, ref);\n\n return (\n <div\n ref={mergedRef}\n aria-hidden=\"true\"\n className={classNames(\"cl-popover__arrow\", className)}\n style={{\n left:\n middlewareData.arrow?.x != null\n ? `${middlewareData.arrow.x}px`\n : undefined,\n top:\n middlewareData.arrow?.y != null\n ? `${middlewareData.arrow.y}px`\n : undefined,\n ...style,\n }}\n {...restProps}\n />\n );\n },\n);\n\nPopoverArrow.displayName = \"Popover.Arrow\";\n\n/**\n * Popover.Close renders a dismiss button or decorates a child button via asChild.\n */\nexport const PopoverClose = React.forwardRef<HTMLButtonElement, PopoverCloseProps>(\n function PopoverClose(\n { children, asChild = false, onClick, className, ...restProps },\n ref,\n ) {\n const { close } = usePopoverContext();\n const handleClick = composeEventHandlers(onClick, () => close());\n\n if (asChild && React.isValidElement(children)) {\n return (\n <Slot ref={ref} onClick={handleClick} {...restProps}>\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n type=\"button\"\n ref={ref}\n onClick={handleClick}\n aria-label=\"Close popover\"\n className={classNames(\"cl-popover__close\", className)}\n {...restProps}\n >\n {children || \"✕\"}\n </button>\n );\n },\n);\n\nPopoverClose.displayName = \"Popover.Close\";\n\n/**\n * Popover.Header provides the top bar of the popover.\n */\nexport const PopoverHeader = React.forwardRef<HTMLDivElement, PopoverHeaderProps>(\n function PopoverHeader({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-popover__header\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nPopoverHeader.displayName = \"Popover.Header\";\n\n/**\n * Popover.Title provides the dialog title and links via aria-labelledby.\n */\nexport const PopoverTitle = React.forwardRef<HTMLHeadingElement, PopoverTitleProps>(\n function PopoverTitle({ children, className, ...restProps }, ref) {\n const { titleId, setHasTitle } = usePopoverContext();\n\n React.useEffect(() => {\n setHasTitle(true);\n return () => setHasTitle(false);\n }, [setHasTitle]);\n\n return (\n <h3\n ref={ref}\n id={titleId}\n className={classNames(\"cl-popover__title\", className)}\n {...restProps}\n >\n {children}\n </h3>\n );\n },\n);\n\nPopoverTitle.displayName = \"Popover.Title\";\n\n/**\n * Popover.Body provides the main interactive container inside the popover.\n */\nexport const PopoverBody = React.forwardRef<HTMLDivElement, PopoverBodyProps>(\n function PopoverBody({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-popover__body\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nPopoverBody.displayName = \"Popover.Body\";\n\n/**\n * Popover.Footer provides the action footer of the popover.\n */\nexport const PopoverFooter = React.forwardRef<HTMLDivElement, PopoverFooterProps>(\n function PopoverFooter({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-popover__footer\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nPopoverFooter.displayName = \"Popover.Footer\";\n\n/**\n * Popover compound component aggregation.\n */\nexport const Popover = Object.assign(PopoverRoot, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Portal: PopoverPortal,\n Content: PopoverContent,\n Close: PopoverClose,\n Arrow: PopoverArrow,\n Header: PopoverHeader,\n Title: PopoverTitle,\n Body: PopoverBody,\n Footer: PopoverFooter,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n AlertProps,\n AlertIconProps,\n AlertTitleProps,\n AlertDescriptionProps,\n AlertBodyProps,\n AlertActionProps,\n AlertCloseButtonProps,\n AlertContextValue,\n AlertStatus,\n} from \"./Alert.types\";\n\nconst AlertContext = React.createContext<AlertContextValue | null>(null);\n\nexport function useAlertContext(): AlertContextValue {\n const context = React.useContext(AlertContext);\n if (!context) {\n throw new Error(\n \"Alert compound subcomponents must be rendered within an <Alert> or <Alert.Root>\",\n );\n }\n return context;\n}\n\n/**\n * Default status icons for built-in feedback indications.\n */\nconst InfoIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\n function InfoIcon(props, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n );\n },\n);\n\nconst SuccessIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\n function SuccessIcon(props, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n },\n);\n\nconst WarningIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\n function WarningIcon(props, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n {...props}\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n },\n);\n\nconst DangerIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\n function DangerIcon(props, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n );\n },\n);\n\nfunction getStatusIcon(\n status: AlertStatus,\n): React.ForwardRefExoticComponent<\n React.SVGAttributes<SVGSVGElement> & React.RefAttributes<SVGSVGElement>\n> {\n switch (status) {\n case \"success\":\n return SuccessIcon;\n case \"warning\":\n return WarningIcon;\n case \"danger\":\n return DangerIcon;\n case \"neutral\":\n case \"info\":\n default:\n return InfoIcon;\n }\n}\n\n/**\n * Alert.Root (or <Alert>) provides in-flow contextual feedback with accessible live-region semantics.\n */\nexport const AlertRoot = React.forwardRef<HTMLDivElement, AlertProps>(\n function AlertRoot(\n {\n children,\n status = \"info\",\n variant = \"subtle\",\n isClosable = false,\n onClose,\n asChild = false,\n role: roleProp,\n \"aria-live\": ariaLiveProp,\n className,\n ...restProps\n },\n ref,\n ) {\n const [isClosed, setIsClosed] = React.useState(false);\n\n const handleClose = React.useCallback(() => {\n if (isClosed) return;\n setIsClosed(true);\n onClose?.();\n }, [isClosed, onClose]);\n\n const contextValue = React.useMemo<AlertContextValue>(\n () => ({\n status,\n variant,\n onClose,\n handleClose,\n isClosed,\n }),\n [status, variant, onClose, handleClose, isClosed],\n );\n\n const hasExplicitClose = React.useMemo(() => {\n let found = false;\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (\n child.type === AlertCloseButton ||\n (child.type as { displayName?: string })?.displayName ===\n \"Alert.CloseButton\"\n ) {\n found = true;\n }\n }\n });\n return found;\n }, [children]);\n\n if (isClosed) {\n return null;\n }\n\n const defaultRole = status === \"danger\" ? \"alert\" : \"status\";\n const defaultAriaLive = status === \"danger\" ? \"assertive\" : \"polite\";\n const resolvedRole = roleProp ?? defaultRole;\n const resolvedAriaLive = ariaLiveProp ?? defaultAriaLive;\n\n const alertClasses = classNames(\n \"cl-alert\",\n `cl-alert--${status}`,\n `cl-alert--${variant}`,\n isClosable && \"cl-alert--closable\",\n className,\n );\n\n if (asChild) {\n return (\n <AlertContext.Provider value={contextValue}>\n <Slot\n ref={ref}\n role={resolvedRole}\n aria-live={resolvedAriaLive}\n className={alertClasses}\n {...restProps}\n >\n {children}\n </Slot>\n </AlertContext.Provider>\n );\n }\n\n return (\n <AlertContext.Provider value={contextValue}>\n <div\n ref={ref}\n role={resolvedRole}\n aria-live={resolvedAriaLive}\n className={alertClasses}\n {...restProps}\n >\n {children}\n {isClosable && !hasExplicitClose && <AlertCloseButton />}\n </div>\n </AlertContext.Provider>\n );\n },\n);\n\nAlertRoot.displayName = \"Alert.Root\";\n\n/**\n * Alert.Icon renders an accessible status indicator SVG or custom icon override.\n */\nexport const AlertIcon = React.forwardRef<SVGSVGElement, AlertIconProps>(\n function AlertIcon({ icon, children, className, ...restProps }, ref) {\n const { status } = useAlertContext();\n\n if (icon) {\n if (React.isValidElement(icon)) {\n return React.cloneElement(icon as React.ReactElement<Record<string, unknown>>, {\n ...restProps,\n ...(icon.props as Record<string, unknown>),\n ref,\n \"aria-hidden\": \"true\",\n className: classNames(\n \"cl-alert__icon\",\n className,\n (icon.props as { className?: string })?.className,\n ),\n });\n }\n return (\n <span className={classNames(\"cl-alert__icon\", className)} aria-hidden=\"true\">\n {icon}\n </span>\n );\n }\n\n if (children) {\n if (React.isValidElement(children)) {\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\n ...restProps,\n ...(children.props as Record<string, unknown>),\n ref,\n \"aria-hidden\": \"true\",\n className: classNames(\n \"cl-alert__icon\",\n className,\n (children.props as { className?: string })?.className,\n ),\n });\n }\n return (\n <span className={classNames(\"cl-alert__icon\", className)} aria-hidden=\"true\">\n {children}\n </span>\n );\n }\n\n const IconComponent = getStatusIcon(status);\n return (\n <IconComponent\n ref={ref}\n className={classNames(\"cl-alert__icon\", className)}\n {...restProps}\n />\n );\n },\n);\n\nAlertIcon.displayName = \"Alert.Icon\";\n\n/**\n * Alert.Body wraps the title and description in a flex column layout.\n */\nexport const AlertBody = React.forwardRef<HTMLDivElement, AlertBodyProps>(\n function AlertBody({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-alert__body\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nAlertBody.displayName = \"Alert.Body\";\n\n/**\n * Alert.Title renders the prominent heading for the alert notice.\n */\nexport const AlertTitle = React.forwardRef<HTMLHeadingElement, AlertTitleProps>(\n function AlertTitle({ children, className, ...restProps }, ref) {\n return (\n <h5\n ref={ref}\n className={classNames(\"cl-alert__title\", className)}\n {...restProps}\n >\n {children}\n </h5>\n );\n },\n);\n\nAlertTitle.displayName = \"Alert.Title\";\n\n/**\n * Alert.Description renders the accompanying body text for the alert notice.\n */\nexport const AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n AlertDescriptionProps\n>(function AlertDescription({ children, className, ...restProps }, ref) {\n return (\n <p\n ref={ref}\n className={classNames(\"cl-alert__description\", className)}\n {...restProps}\n >\n {children}\n </p>\n );\n});\n\nAlertDescription.displayName = \"Alert.Description\";\n\n/**\n * Alert.Action contains contextual action buttons (e.g. Retry, Learn More).\n */\nexport const AlertAction = React.forwardRef<HTMLDivElement, AlertActionProps>(\n function AlertAction({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-alert__action\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nAlertAction.displayName = \"Alert.Action\";\n\n/**\n * Alert.CloseButton renders an accessible dismiss button for the alert.\n */\nexport const AlertCloseButton = React.forwardRef<\n HTMLButtonElement,\n AlertCloseButtonProps\n>(function AlertCloseButton(\n {\n onClick,\n className,\n \"aria-label\": ariaLabel = \"Close alert\",\n children,\n disabled,\n ...restProps\n },\n ref,\n) {\n const { handleClose, isClosed } = useAlertContext();\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n handleClose();\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label={ariaLabel}\n disabled={disabled || isClosed}\n onClick={handleClick}\n className={classNames(\"cl-alert__close\", className)}\n {...restProps}\n >\n {children ?? (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"16\"\n height=\"16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n )}\n </button>\n );\n});\n\nAlertCloseButton.displayName = \"Alert.CloseButton\";\n\n/**\n * Alert compound component aggregation.\n */\nexport const Alert = Object.assign(AlertRoot, {\n Root: AlertRoot,\n Icon: AlertIcon,\n Body: AlertBody,\n Title: AlertTitle,\n Description: AlertDescription,\n Action: AlertAction,\n CloseButton: AlertCloseButton,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n ToastOptions,\n ToastRecord,\n ToastPosition,\n ToastStatus,\n ToastProviderProps,\n UseToastReturn,\n} from \"./Snackbar.types\";\n\nexport const ToastContext = React.createContext<UseToastReturn | null>(null);\n\nconst POSITIONS: ToastPosition[] = [\n \"top\",\n \"top-left\",\n \"top-right\",\n \"bottom\",\n \"bottom-left\",\n \"bottom-right\",\n];\n\nfunction InfoIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n );\n}\n\nfunction SuccessIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"m9 12 2 2 4-4\" />\n </svg>\n );\n}\n\nfunction WarningIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n}\n\nfunction DangerIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n );\n}\n\nfunction renderStatusIcon(status: ToastStatus) {\n switch (status) {\n case \"success\":\n return <SuccessIcon />;\n case \"warning\":\n return <WarningIcon />;\n case \"danger\":\n return <DangerIcon />;\n case \"neutral\":\n case \"info\":\n default:\n return <InfoIcon />;\n }\n}\n\n/**\n * Individual Toast Item with pauseable timer and accessible live-region semantics.\n */\nexport const ToastItem = React.forwardRef<\n HTMLDivElement,\n {\n toast: ToastRecord;\n onClose: () => void;\n }\n>(function ToastItem({ toast, onClose }, ref) {\n const {\n title,\n description,\n status,\n duration,\n isClosable,\n action,\n } = toast;\n\n const remainingRef = React.useRef<number>(\n typeof duration === \"number\" ? duration : 0,\n );\n const startTimeRef = React.useRef<number>(Date.now());\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const isPausedRef = React.useRef<boolean>(false);\n\n React.useEffect(() => {\n if (typeof duration === \"number\") {\n remainingRef.current = duration;\n }\n }, [duration]);\n\n const startTimer = React.useCallback(() => {\n if (duration === null || duration === undefined) return;\n\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n\n if (remainingRef.current <= 0) {\n timerRef.current = setTimeout(() => {\n onClose();\n timerRef.current = null;\n }, 0);\n return;\n }\n\n startTimeRef.current = Date.now();\n timerRef.current = setTimeout(() => {\n onClose();\n timerRef.current = null;\n }, remainingRef.current);\n }, [duration, onClose]);\n\n const pauseTimer = React.useCallback(() => {\n if (duration === null || duration === undefined) return;\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n const elapsed = Date.now() - startTimeRef.current;\n remainingRef.current = Math.max(0, remainingRef.current - elapsed);\n isPausedRef.current = true;\n }, [duration]);\n\n const resumeTimer = React.useCallback(() => {\n if (duration === null || duration === undefined) return;\n if (isPausedRef.current) {\n isPausedRef.current = false;\n startTimer();\n }\n }, [duration, startTimer]);\n\n React.useEffect(() => {\n startTimer();\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n }, [startTimer]);\n\n const role = status === \"danger\" ? \"alert\" : \"status\";\n const ariaLive = status === \"danger\" ? \"assertive\" : \"polite\";\n\n return (\n <div\n ref={ref}\n role={role}\n aria-live={ariaLive}\n aria-atomic=\"true\"\n tabIndex={0}\n onMouseEnter={pauseTimer}\n onMouseLeave={resumeTimer}\n onPointerEnter={pauseTimer}\n onPointerLeave={resumeTimer}\n onFocus={pauseTimer}\n onBlur={resumeTimer}\n className={classNames(\n \"cl-toast\",\n `cl-toast--${status}`,\n )}\n >\n <span className=\"cl-toast__icon\" aria-hidden=\"true\">\n {renderStatusIcon(status)}\n </span>\n\n <div className=\"cl-toast__content\">\n {title && <h6 className=\"cl-toast__title\">{title}</h6>}\n {description && <p className=\"cl-toast__description\">{description}</p>}\n </div>\n\n {action && <div className=\"cl-toast__action\">{action}</div>}\n\n {isClosable && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onClose}\n className=\"cl-toast__close\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"14\"\n height=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n );\n});\n\nToastItem.displayName = \"ToastItem\";\n\nlet toastCounter = 0;\n\n/**\n * ToastProvider manages notification queue, automatic dismissals, and portal layout.\n */\nexport function ToastProvider({\n children,\n defaultDuration = 5000,\n defaultPosition = \"bottom-right\",\n maxVisibleToasts = 5,\n}: ToastProviderProps) {\n const [toasts, setToasts] = React.useState<ToastRecord[]>([]);\n\n const close = React.useCallback((id: string) => {\n setToasts((prev) => {\n const match = prev.find((t) => t.id === id);\n if (match?.onClose) {\n match.onClose();\n }\n return prev.filter((t) => t.id !== id);\n });\n }, []);\n\n const closeAll = React.useCallback(() => {\n setToasts((prev) => {\n prev.forEach((t) => t.onClose?.());\n return [];\n });\n }, []);\n\n const update = React.useCallback(\n (id: string, options: Partial<ToastOptions>) => {\n setToasts((prev) =>\n prev.map((t) => {\n if (t.id !== id) return t;\n return {\n ...t,\n ...options,\n id: t.id,\n duration: options.duration !== undefined ? options.duration : t.duration,\n position: options.position !== undefined ? options.position : t.position,\n status: options.status !== undefined ? options.status : t.status,\n isClosable:\n options.isClosable !== undefined ? options.isClosable : t.isClosable,\n };\n }),\n );\n },\n [],\n );\n\n const isActive = React.useCallback(\n (id: string) => toasts.some((t) => t.id === id),\n [toasts],\n );\n\n const toast = React.useCallback(\n (options: ToastOptions): string => {\n const id = options.id ?? `cl-toast-${++toastCounter}`;\n const position = options.position ?? defaultPosition;\n const duration =\n options.duration !== undefined ? options.duration : defaultDuration;\n const status = options.status ?? \"info\";\n const isClosable =\n options.isClosable !== undefined ? options.isClosable : true;\n\n const newRecord: ToastRecord = {\n ...options,\n id,\n position,\n duration,\n status,\n isClosable,\n createdAt: Date.now(),\n };\n\n setToasts((prev) => {\n // Enforce maxVisibleToasts limit per position by removing the oldest\n const inSamePosition = prev.filter((t) => t.position === position);\n let updated = prev.filter((t) => t.id !== id);\n\n if (inSamePosition.length >= maxVisibleToasts) {\n const oldest = inSamePosition[0];\n if (oldest) {\n oldest.onClose?.();\n updated = updated.filter((t) => t.id !== oldest.id);\n }\n }\n\n return [...updated, newRecord];\n });\n\n return id;\n },\n [defaultDuration, defaultPosition, maxVisibleToasts],\n );\n\n const contextValue = React.useMemo<UseToastReturn>(() => {\n const fn = (options: ToastOptions) => toast(options);\n fn.close = close;\n fn.closeAll = closeAll;\n fn.update = update;\n fn.isActive = isActive;\n return fn as UseToastReturn;\n }, [toast, close, closeAll, update, isActive]);\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <Portal>\n {POSITIONS.map((pos) => {\n const inPos = toasts.filter((t) => t.position === pos);\n if (inPos.length === 0) return null;\n\n return (\n <div\n key={pos}\n className={classNames(\n \"cl-toast-container\",\n `cl-toast-container--${pos}`,\n )}\n role=\"region\"\n aria-label={`Notifications ${pos}`}\n >\n {inPos.map((t) => (\n <ToastItem key={t.id} toast={t} onClose={() => close(t.id)} />\n ))}\n </div>\n );\n })}\n </Portal>\n </ToastContext.Provider>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { classNames } from \"../../utils/classNames\";\nimport { ToastItem } from \"./ToastProvider\";\nimport type {\n SnackbarProps,\n ToastRecord,\n ToastPosition,\n ToastStatus,\n} from \"./Snackbar.types\";\n\n/**\n * Snackbar provides a declarative component API for viewport-anchored transient notifications.\n */\nexport const Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>(\n function Snackbar(\n {\n isOpen = false,\n message,\n description,\n status = \"info\",\n duration = 5000,\n position = \"bottom-right\",\n action,\n isClosable = true,\n onClose,\n children,\n className,\n ...restProps\n },\n ref,\n ) {\n const handleClose = React.useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n if (!isOpen) {\n return null;\n }\n\n const toastRecord: ToastRecord = {\n id: \"declarative-snackbar\",\n title: message ?? children,\n description,\n status: status as ToastStatus,\n duration: duration ?? null,\n position: position as ToastPosition,\n isClosable: Boolean(isClosable),\n action,\n createdAt: Date.now(),\n onClose: handleClose,\n };\n\n return (\n <Portal>\n <div\n className={classNames(\n \"cl-toast-container\",\n `cl-toast-container--${position}`,\n className,\n )}\n role=\"region\"\n aria-label={`Notifications ${position}`}\n {...restProps}\n >\n <ToastItem ref={ref} toast={toastRecord} onClose={handleClose} />\n </div>\n </Portal>\n );\n },\n);\n\nSnackbar.displayName = \"Snackbar\";\n\n/**\n * Toast is the approved alias for Snackbar.\n */\nexport const Toast = Snackbar;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ToastContext } from \"./ToastProvider\";\nimport type { UseToastReturn } from \"./Snackbar.types\";\n\n/**\n * Hook to imperatively trigger, update, or dismiss toast notifications.\n */\nexport function useToast(): UseToastReturn {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a <ToastProvider>\");\n }\n return context;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n AvatarGroupProps,\n AvatarGroupContextValue,\n} from \"./Avatar.types\";\n\nexport const AvatarGroupContext =\n React.createContext<AvatarGroupContextValue>({});\n\nexport const useAvatarGroupContext = (): AvatarGroupContextValue =>\n React.useContext(AvatarGroupContext);\n\n/**\n * AvatarGroup stacks multiple avatars with negative margin overlap and calculates +N excess items.\n */\nexport const AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\n function AvatarGroup(\n {\n max,\n size = \"md\",\n shape = \"circular\",\n spacing,\n className,\n style,\n children,\n ...restProps\n },\n ref,\n ) {\n const validChildren = React.Children.toArray(children).filter(\n React.isValidElement,\n );\n\n const hasExcess = max !== undefined && max > 0 && validChildren.length > max;\n const visibleChildren = hasExcess\n ? validChildren.slice(0, max)\n : validChildren;\n const excessCount = hasExcess ? validChildren.length - max : 0;\n\n const totalItems = visibleChildren.length + (excessCount > 0 ? 1 : 0);\n\n const contextValue = React.useMemo<AvatarGroupContextValue>(\n () => ({ size, shape }),\n [size, shape],\n );\n\n return (\n <div\n ref={ref}\n className={classNames(\"cl-avatar-group\", className)}\n role=\"group\"\n style={{\n ...(spacing !== undefined\n ? ({\n \"--cl-avatar-group-spacing\":\n typeof spacing === \"number\" ? `${spacing}px` : spacing,\n } as React.CSSProperties)\n : {}),\n ...style,\n }}\n {...restProps}\n >\n <AvatarGroupContext.Provider value={contextValue}>\n {visibleChildren.map((child, index) => {\n const element = child as React.ReactElement<{\n style?: React.CSSProperties;\n }>;\n const childStyle: React.CSSProperties = {\n zIndex: totalItems - index,\n ...(element.props?.style || {}),\n };\n return React.cloneElement(element, {\n key: element.key ?? index,\n style: childStyle,\n });\n })}\n {excessCount > 0 && (\n <div\n className={classNames(\n \"cl-avatar\",\n `cl-avatar--${size}`,\n `cl-avatar--${shape}`,\n \"cl-avatar-group__excess\",\n )}\n style={{ zIndex: 0 }}\n aria-label={`+${excessCount} others`}\n >\n +{excessCount}\n </div>\n )}\n </AvatarGroupContext.Provider>\n </div>\n );\n },\n);\n\nAvatarGroup.displayName = \"AvatarGroup\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { AvatarGroup, useAvatarGroupContext } from \"./AvatarGroup\";\nimport type {\n AvatarProps,\n AvatarImageProps,\n AvatarFallbackProps,\n AvatarBadgeProps,\n AvatarContextValue,\n AvatarSize,\n AvatarShape,\n ImageLoadingStatus,\n} from \"./Avatar.types\";\n\nexport const AvatarContext = React.createContext<AvatarContextValue | null>(null);\n\nexport const useAvatarContext = (): AvatarContextValue | null =>\n React.useContext(AvatarContext);\n\n/**\n * Extracts up to two uppercase initials from a given name string.\n * Handles single names, multi-word names, hyphens, and unicode characters.\n */\nexport function getInitials(name?: string): string {\n if (!name || typeof name !== \"string\") return \"\";\n const trimmed = name.trim();\n if (!trimmed) return \"\";\n\n const parts = trimmed.split(/[\\s-]+/).filter(Boolean);\n if (parts.length === 0) return \"\";\n\n const firstPart = parts[0];\n if (!firstPart) return \"\";\n\n if (parts.length === 1) {\n const chars = Array.from(firstPart);\n return chars[0] ? chars[0].toUpperCase() : \"\";\n }\n\n const lastPart = parts[parts.length - 1];\n if (!lastPart) return \"\";\n\n const firstChar = Array.from(firstPart)[0] ?? \"\";\n const lastChar = Array.from(lastPart)[0] ?? \"\";\n return (firstChar + lastChar).toUpperCase();\n}\n\n/**\n * Default generic silhouette icon SVG rendered when image and initials are absent.\n */\nfunction DefaultAvatarIcon() {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width=\"60%\"\n height=\"60%\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n );\n}\n\n/**\n * Avatar.Image renders the image element with automatic error and load management.\n */\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n function AvatarImage(\n { src, srcSet, alt, className, style, asChild = false, onLoad, onError, ...restProps },\n ref,\n ) {\n const context = useAvatarContext();\n const imageStatus = context?.imageStatus ?? (src ? \"loading\" : \"error\");\n\n const handleLoad = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\n context?.setImageStatus(\"loaded\");\n onLoad?.(event);\n },\n [context, onLoad],\n );\n\n const handleError = React.useCallback(\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\n context?.setImageStatus(\"error\");\n onError?.(event);\n },\n [context, onError],\n );\n\n if (imageStatus === \"error\" || !src) {\n return null;\n }\n\n const imageClasses = classNames(\"cl-avatar__image\", className);\n const imageStyle: React.CSSProperties = {\n opacity: imageStatus === \"loaded\" ? 1 : 0,\n ...style,\n };\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={imageClasses}\n style={imageStyle}\n {...(restProps as Record<string, unknown>)}\n />\n );\n }\n\n return (\n <img\n ref={ref}\n src={src}\n srcSet={srcSet}\n alt={alt ?? \"\"}\n className={imageClasses}\n style={imageStyle}\n onLoad={handleLoad}\n onError={handleError}\n {...restProps}\n />\n );\n },\n);\n\nAvatarImage.displayName = \"Avatar.Image\";\n\n/**\n * Avatar.Fallback renders fallback initials, icons, or custom elements when image has not loaded.\n */\nexport const AvatarFallback = React.forwardRef<\n HTMLSpanElement,\n AvatarFallbackProps\n>(function AvatarFallback(\n { children, className, delayMs, asChild = false, ...restProps },\n ref,\n) {\n const context = useAvatarContext();\n const [canRender, setCanRender] = React.useState(delayMs === undefined);\n\n React.useEffect(() => {\n if (delayMs !== undefined && delayMs > 0) {\n const timer = setTimeout(() => setCanRender(true), delayMs);\n return () => clearTimeout(timer);\n }\n setCanRender(true);\n return undefined;\n }, [delayMs]);\n\n if (context && context.imageStatus === \"loaded\") {\n return null;\n }\n\n if (!canRender) {\n return null;\n }\n\n const fallbackClasses = classNames(\"cl-avatar__fallback\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={fallbackClasses}\n {...(restProps as Record<string, unknown>)}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <span ref={ref} className={fallbackClasses} {...restProps}>\n {children}\n </span>\n );\n});\n\nAvatarFallback.displayName = \"Avatar.Fallback\";\n\n/**\n * Avatar.Badge renders presence status indicator dot anchored to an avatar corner.\n */\nexport const AvatarBadge = React.forwardRef<HTMLSpanElement, AvatarBadgeProps>(\n function AvatarBadge(\n {\n status = \"online\",\n placement = \"bottom-end\",\n className,\n asChild = false,\n \"aria-label\": ariaLabel,\n ...restProps\n },\n ref,\n ) {\n const badgeClasses = classNames(\n \"cl-avatar__badge\",\n `cl-avatar__badge--${status}`,\n `cl-avatar__badge--${placement}`,\n className,\n );\n\n const accessibleLabel = ariaLabel ?? `Status: ${status}`;\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={badgeClasses}\n role=\"status\"\n aria-label={accessibleLabel}\n {...(restProps as Record<string, unknown>)}\n />\n );\n }\n\n return (\n <span\n ref={ref}\n className={badgeClasses}\n role=\"status\"\n aria-label={accessibleLabel}\n {...restProps}\n />\n );\n },\n);\n\nAvatarBadge.displayName = \"Avatar.Badge\";\n\n/**\n * Avatar represents a user, entity, or organization identity with automated fallbacks and presence indicators.\n */\nconst AvatarBase = React.forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n {\n src,\n srcSet,\n alt,\n name,\n size: sizeProp,\n shape: shapeProp,\n fallback,\n icon,\n asChild = false,\n className,\n children,\n onError,\n onLoad,\n \"aria-label\": ariaLabel,\n ...restProps\n },\n ref,\n) {\n const groupContext = useAvatarGroupContext();\n const size: AvatarSize = sizeProp ?? groupContext.size ?? \"md\";\n const shape: AvatarShape = shapeProp ?? groupContext.shape ?? \"circular\";\n\n const [imageStatus, setImageStatus] = React.useState<ImageLoadingStatus>(\n src ? \"loading\" : \"error\",\n );\n\n React.useEffect(() => {\n setImageStatus(src ? \"loading\" : \"error\");\n }, [src]);\n\n const contextValue = React.useMemo<AvatarContextValue>(\n () => ({\n size,\n shape,\n imageStatus,\n setImageStatus,\n }),\n [size, shape, imageStatus],\n );\n\n const initials = getInitials(name);\n const computedAriaLabel = ariaLabel ?? alt ?? name;\n\n const rootClasses = classNames(\n \"cl-avatar\",\n `cl-avatar--${size}`,\n `cl-avatar--${shape}`,\n className,\n );\n\n const accessibilityProps: React.HTMLAttributes<HTMLDivElement> = {};\n if (computedAriaLabel) {\n accessibilityProps.role = \"img\";\n accessibilityProps[\"aria-label\"] = computedAriaLabel;\n }\n\n // If children are supplied, render in compound mode\n if (children) {\n if (asChild) {\n return (\n <AvatarContext.Provider value={contextValue}>\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={rootClasses}\n {...accessibilityProps}\n {...(restProps as Record<string, unknown>)}\n >\n {children}\n </Slot>\n </AvatarContext.Provider>\n );\n }\n\n return (\n <AvatarContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={rootClasses}\n {...accessibilityProps}\n {...restProps}\n >\n {children}\n </div>\n </AvatarContext.Provider>\n );\n }\n\n // Self-contained convenience rendering\n const fallbackContent =\n fallback ??\n (initials ? (\n initials\n ) : icon ? (\n icon\n ) : (\n <DefaultAvatarIcon />\n ));\n\n const content = (\n <>\n {src && imageStatus !== \"error\" && (\n <AvatarImage\n src={src}\n srcSet={srcSet}\n alt={alt ?? name ?? \"\"}\n onLoad={onLoad}\n onError={onError}\n />\n )}\n {imageStatus !== \"loaded\" && (\n <AvatarFallback>{fallbackContent}</AvatarFallback>\n )}\n </>\n );\n\n if (asChild) {\n return (\n <AvatarContext.Provider value={contextValue}>\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={rootClasses}\n {...accessibilityProps}\n {...(restProps as Record<string, unknown>)}\n >\n {content}\n </Slot>\n </AvatarContext.Provider>\n );\n }\n\n return (\n <AvatarContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={rootClasses}\n {...accessibilityProps}\n {...restProps}\n >\n {content}\n </div>\n </AvatarContext.Provider>\n );\n});\n\nAvatarBase.displayName = \"Avatar\";\n\nexport interface AvatarComponent\n extends React.ForwardRefExoticComponent<\n AvatarProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof AvatarBase;\n Image: typeof AvatarImage;\n Fallback: typeof AvatarFallback;\n Badge: typeof AvatarBadge;\n Group: typeof AvatarGroup;\n}\n\nexport const Avatar = AvatarBase as AvatarComponent;\nAvatar.Root = AvatarBase;\nAvatar.Image = AvatarImage;\nAvatar.Fallback = AvatarFallback;\nAvatar.Badge = AvatarBadge;\nAvatar.Group = AvatarGroup;\n\nexport const AvatarRoot = AvatarBase;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport type {\n AccordionRootProps,\n AccordionContextValue,\n AccordionItemProps,\n AccordionItemContextValue,\n AccordionHeaderProps,\n AccordionTriggerProps,\n AccordionContentProps,\n AccordionIconProps,\n AccordionVariant,\n AccordionType,\n} from \"./Accordion.types\";\n\nexport const AccordionContext =\n React.createContext<AccordionContextValue | null>(null);\n\nexport const useAccordionContext = (): AccordionContextValue => {\n const context = React.useContext(AccordionContext);\n if (!context) {\n throw new Error(\n \"Accordion compound components must be rendered within an Accordion.Root.\",\n );\n }\n return context;\n};\n\nexport const AccordionItemContext =\n React.createContext<AccordionItemContextValue | null>(null);\n\nexport const useAccordionItemContext = (): AccordionItemContextValue => {\n const context = React.useContext(AccordionItemContext);\n if (!context) {\n throw new Error(\n \"Accordion.Header, Accordion.Trigger, and Accordion.Content must be rendered within an Accordion.Item.\",\n );\n }\n return context;\n};\n\n/**\n * Accordion.Root provides expansion state management and keyboard navigation for accordion items.\n */\nexport const AccordionRoot = React.forwardRef<HTMLDivElement, AccordionRootProps>(\n function AccordionRoot(props, ref) {\n const {\n type = \"single\",\n variant = \"outline\",\n isDisabled = false,\n className,\n children,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...restProps\n } = props;\n\n const isMultiple = type === \"multiple\";\n const collapsible =\n !isMultiple && \"collapsible\" in props ? Boolean(props.collapsible) : false;\n\n const domProps = { ...restProps };\n delete (domProps as { collapsible?: unknown }).collapsible;\n\n // Multiple mode state\n const [multipleValues, setMultipleValues] = useControllableState<string[]>({\n value: isMultiple ? (props.value as string[] | undefined) : undefined,\n defaultValue: isMultiple\n ? (props.defaultValue as string[] | undefined) ?? []\n : [],\n onChange: isMultiple\n ? (props.onValueChange as ((val: string[]) => void) | undefined)\n : undefined,\n });\n\n const handleSingleChange = React.useCallback(\n (val: string | undefined) => {\n if (!isMultiple && \"onValueChange\" in props && typeof props.onValueChange === \"function\") {\n (props.onValueChange as (v: string) => void)(val ?? \"\");\n }\n },\n [isMultiple, props],\n );\n\n // Single mode state\n const [singleValue, setSingleValue] = useControllableState<\n string | undefined\n >({\n value: !isMultiple ? (props.value as string | undefined) : undefined,\n defaultValue: !isMultiple\n ? (props.defaultValue as string | undefined)\n : undefined,\n onChange: handleSingleChange,\n });\n\n const expandedValues = React.useMemo(() => {\n if (isMultiple) {\n return Array.isArray(multipleValues) ? multipleValues : [];\n }\n return singleValue ? [singleValue] : [];\n }, [isMultiple, multipleValues, singleValue]);\n\n const toggleItem = React.useCallback(\n (itemValue: string) => {\n if (isMultiple) {\n const current = Array.isArray(multipleValues) ? multipleValues : [];\n const next = current.includes(itemValue)\n ? current.filter((v) => v !== itemValue)\n : [...current, itemValue];\n setMultipleValues(next);\n } else {\n const isCurrentOpen = singleValue === itemValue;\n if (isCurrentOpen) {\n if (collapsible) {\n setSingleValue(\"\");\n }\n } else {\n setSingleValue(itemValue);\n }\n }\n },\n [\n isMultiple,\n multipleValues,\n setMultipleValues,\n singleValue,\n setSingleValue,\n collapsible,\n ],\n );\n\n const internalRootRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(ref, internalRootRef);\n\n const contextValue = React.useMemo<AccordionContextValue>(\n () => ({\n type: type as AccordionType,\n variant: variant as AccordionVariant,\n collapsible,\n isDisabled,\n expandedValues,\n toggleItem,\n rootRef: internalRootRef,\n }),\n [type, variant, collapsible, isDisabled, expandedValues, toggleItem],\n );\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n ref={mergedRef}\n className={classNames(\n \"cl-accordion\",\n `cl-accordion--${variant}`,\n className,\n )}\n {...domProps}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n },\n);\n\nAccordionRoot.displayName = \"Accordion\";\n\n/**\n * Accordion.Item encapsulates a single collapsible panel and header.\n */\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem(\n { value, isDisabled: itemDisabledProp = false, className, children, ...restProps },\n ref,\n ) {\n const { expandedValues, isDisabled: globalDisabled } = useAccordionContext();\n const isOpen = expandedValues.includes(value);\n const isDisabled = Boolean(itemDisabledProp || globalDisabled);\n\n const generatedId = React.useId();\n const triggerId = `cl-accordion-trigger-${value}-${generatedId}`;\n const panelId = `cl-accordion-panel-${value}-${generatedId}`;\n\n const contextValue = React.useMemo<AccordionItemContextValue>(\n () => ({\n value,\n isOpen,\n isDisabled,\n triggerId,\n panelId,\n }),\n [value, isOpen, isDisabled, triggerId, panelId],\n );\n\n return (\n <AccordionItemContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={classNames(\"cl-accordion__item\", className)}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n {...restProps}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n },\n);\n\nAccordionItem.displayName = \"Accordion.Item\";\n\n/**\n * Accordion.Header renders a semantic heading wrapper (h2 - h6) around the trigger button.\n */\nexport const AccordionHeader = React.forwardRef<\n HTMLHeadingElement,\n AccordionHeaderProps\n>(function AccordionHeader(\n { level = 3, className, children, ...restProps },\n ref,\n) {\n const HeadingTag = `h${level}` as const;\n\n return (\n <HeadingTag\n ref={ref}\n className={classNames(\"cl-accordion__header\", className)}\n {...restProps}\n >\n {children}\n </HeadingTag>\n );\n});\n\nAccordionHeader.displayName = \"Accordion.Header\";\n\n/**\n * Accordion.Trigger renders the interactive button that toggles expansion.\n */\nexport const AccordionTrigger = React.forwardRef<\n HTMLButtonElement,\n AccordionTriggerProps\n>(function AccordionTrigger(\n { asChild = false, className, children, onClick, onKeyDown, ...restProps },\n ref,\n) {\n const { toggleItem, rootRef } = useAccordionContext();\n const { value, isOpen, isDisabled, triggerId, panelId } =\n useAccordionItemContext();\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isDisabled) return;\n toggleItem(value);\n },\n [onClick, isDisabled, toggleItem, value],\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n const rootEl = rootRef.current;\n if (!rootEl) return;\n\n const triggers = Array.from(\n rootEl.querySelectorAll<HTMLButtonElement>(\n \".cl-accordion__trigger:not([disabled]):not([data-disabled])\",\n ),\n );\n const currentIndex = triggers.indexOf(event.currentTarget);\n if (currentIndex === -1 || triggers.length === 0) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const nextIndex = (currentIndex + 1) % triggers.length;\n triggers[nextIndex]?.focus();\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const prevIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n triggers[prevIndex]?.focus();\n } else if (event.key === \"Home\") {\n event.preventDefault();\n triggers[0]?.focus();\n } else if (event.key === \"End\") {\n event.preventDefault();\n triggers[triggers.length - 1]?.focus();\n }\n },\n [onKeyDown, rootRef],\n );\n\n const triggerClasses = classNames(\"cl-accordion__trigger\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n id={triggerId}\n role=\"button\"\n aria-expanded={isOpen}\n aria-controls={panelId}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={triggerClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={panelId}\n disabled={isDisabled}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={triggerClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...restProps}\n >\n {children}\n </button>\n );\n});\n\nAccordionTrigger.displayName = \"Accordion.Trigger\";\n\n/**\n * Accordion.Content renders the collapsible body region with CSS grid height transition.\n */\nexport const AccordionContent = React.forwardRef<\n HTMLDivElement,\n AccordionContentProps\n>(function AccordionContent({ className, children, ...restProps }, ref) {\n const { isOpen, isDisabled, triggerId, panelId } = useAccordionItemContext();\n\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"region\"\n aria-labelledby={triggerId}\n hidden={!isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={classNames(\"cl-accordion__content\", className)}\n {...restProps}\n >\n <div className=\"cl-accordion__inner\">{children}</div>\n </div>\n );\n});\n\nAccordionContent.displayName = \"Accordion.Content\";\n\n/**\n * Accordion.Icon renders a 16x16 chevron SVG icon that rotates 180° when expanded.\n */\nexport const AccordionIcon = React.forwardRef<\n SVGSVGElement,\n AccordionIconProps\n>(function AccordionIcon({ className, ...restProps }, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={classNames(\"cl-accordion__icon\", className)}\n aria-hidden=\"true\"\n focusable=\"false\"\n {...restProps}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n});\n\nAccordionIcon.displayName = \"Accordion.Icon\";\n\nexport interface AccordionComponent\n extends React.ForwardRefExoticComponent<\n AccordionRootProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof AccordionRoot;\n Item: typeof AccordionItem;\n Header: typeof AccordionHeader;\n Trigger: typeof AccordionTrigger;\n Content: typeof AccordionContent;\n Icon: typeof AccordionIcon;\n}\n\nexport const Accordion = AccordionRoot as AccordionComponent;\nAccordion.Root = AccordionRoot;\nAccordion.Item = AccordionItem;\nAccordion.Header = AccordionHeader;\nAccordion.Trigger = AccordionTrigger;\nAccordion.Content = AccordionContent;\nAccordion.Icon = AccordionIcon;\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { classNames } from \"../../utils/classNames\";\nimport { Slot } from \"../../primitives/Slot\";\nimport type {\n TabsRootProps,\n TabsListProps,\n TabsTriggerProps,\n TabsContentProps,\n TabsIndicatorProps,\n TabsContextValue,\n TabsOrientation,\n TabsVariant,\n TabsSize,\n TabsActivationMode,\n} from \"./Tabs.types\";\n\nexport const TabsContext = React.createContext<TabsContextValue | null>(null);\n\nexport function useTabsContext(): TabsContextValue {\n const context = React.useContext(TabsContext);\n if (!context) {\n throw new Error(\n \"Tabs compound components must be rendered inside <Tabs /> or <Tabs.Root />\",\n );\n }\n return context;\n}\n\nfunction findFirstTriggerValue(children: React.ReactNode): string | undefined {\n let found: string | undefined;\n React.Children.forEach(children, (child) => {\n if (found || !React.isValidElement(child)) return;\n const props = child.props as Record<string, unknown> | undefined;\n if (\n props &&\n typeof props.value === \"string\" &&\n !props.isDisabled &&\n !props.disabled\n ) {\n found = props.value;\n return;\n }\n if (props && props.children) {\n found = findFirstTriggerValue(props.children as React.ReactNode);\n }\n });\n return found;\n}\n\n/**\n * Tabs.Root (Tabs) provides context, state synchronization, and orientation management.\n */\nexport const TabsRoot = React.forwardRef<HTMLDivElement, TabsRootProps>(\n function TabsRoot(\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n orientation = \"horizontal\",\n variant = \"line\",\n size = \"md\",\n activationMode = \"automatic\",\n isLazy = false,\n className,\n children,\n ...domProps\n },\n ref,\n ) {\n const initialDefault = React.useMemo(() => {\n if (defaultValue !== undefined) return defaultValue;\n return findFirstTriggerValue(children) ?? \"\";\n }, [defaultValue, children]);\n\n const [selectedValue, setSelectedValue] = useControllableState<string>({\n value: valueProp,\n defaultValue: initialDefault,\n onChange: onValueChange,\n });\n\n const generatedId = React.useId();\n const baseId = React.useMemo(\n () => generatedId.replace(/:/g, \"\"),\n [generatedId],\n );\n\n const listRef = React.useRef<HTMLDivElement | null>(null);\n\n const contextValue = React.useMemo<TabsContextValue>(\n () => ({\n selectedValue,\n setSelectedValue,\n orientation: orientation as TabsOrientation,\n variant: variant as TabsVariant,\n size: size as TabsSize,\n activationMode: activationMode as TabsActivationMode,\n isLazy,\n baseId,\n listRef,\n }),\n [\n selectedValue,\n setSelectedValue,\n orientation,\n variant,\n size,\n activationMode,\n isLazy,\n baseId,\n ],\n );\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={classNames(\n \"cl-tabs\",\n `cl-tabs--${orientation}`,\n `cl-tabs--${variant}`,\n `cl-tabs--${size}`,\n className,\n )}\n data-orientation={orientation}\n {...domProps}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n },\n);\n\nTabsRoot.displayName = \"Tabs\";\n\n/**\n * Tabs.List renders the semantic role=\"tablist\" container with roving keyboard navigation.\n */\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n function TabsList(\n { \"aria-label\": ariaLabel, className, children, ...restProps },\n ref,\n ) {\n const { orientation, listRef } = useTabsContext();\n const mergedRef = useMergeRefs(ref, listRef);\n\n return (\n <div\n ref={mergedRef}\n role=\"tablist\"\n aria-orientation={orientation}\n aria-label={ariaLabel}\n data-orientation={orientation}\n className={classNames(\"cl-tabs__list\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nTabsList.displayName = \"Tabs.List\";\n\n/**\n * Tabs.Trigger renders the interactive tab button adhering to WAI-ARIA APG roving tabindex.\n */\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n function TabsTrigger(\n {\n value,\n isDisabled = false,\n asChild = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...restProps\n },\n ref,\n ) {\n const {\n selectedValue,\n setSelectedValue,\n orientation,\n activationMode,\n baseId,\n } = useTabsContext();\n\n const isSelected = selectedValue === value;\n const triggerId = `cl-tab-${baseId}-${value}`;\n const panelId = `cl-tabpanel-${baseId}-${value}`;\n\n // Auto-select first tab trigger if no value or defaultValue was passed\n React.useEffect(() => {\n if (!selectedValue && !isDisabled) {\n setSelectedValue(value);\n }\n }, [selectedValue, value, isDisabled, setSelectedValue]);\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n if (!e.defaultPrevented) {\n setSelectedValue(value);\n }\n },\n [isDisabled, onClick, setSelectedValue, value],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n const list = e.currentTarget.closest('[role=\"tablist\"]');\n if (!list) return;\n\n const triggers = Array.from(\n list.querySelectorAll<HTMLButtonElement>(\n '[role=\"tab\"]:not([disabled]):not([data-disabled])',\n ),\n );\n\n if (triggers.length === 0) return;\n\n const currentIndex = triggers.indexOf(e.currentTarget);\n if (currentIndex === -1) return;\n\n let nextIndex = currentIndex;\n let shouldMove = false;\n\n const isHorizontal = orientation === \"horizontal\";\n const isVertical = orientation === \"vertical\";\n\n switch (e.key) {\n case \"ArrowRight\":\n if (isHorizontal) {\n nextIndex = (currentIndex + 1) % triggers.length;\n shouldMove = true;\n }\n break;\n case \"ArrowLeft\":\n if (isHorizontal) {\n nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n shouldMove = true;\n }\n break;\n case \"ArrowDown\":\n if (isVertical) {\n nextIndex = (currentIndex + 1) % triggers.length;\n shouldMove = true;\n }\n break;\n case \"ArrowUp\":\n if (isVertical) {\n nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n shouldMove = true;\n }\n break;\n case \"Home\":\n nextIndex = 0;\n shouldMove = true;\n break;\n case \"End\":\n nextIndex = triggers.length - 1;\n shouldMove = true;\n break;\n case \"Enter\":\n case \" \":\n if (!isDisabled) {\n e.preventDefault();\n setSelectedValue(value);\n }\n return;\n default:\n return;\n }\n\n if (shouldMove) {\n e.preventDefault();\n const targetTrigger = triggers[nextIndex];\n if (targetTrigger) {\n targetTrigger.focus();\n if (activationMode === \"automatic\") {\n const targetValue = targetTrigger.getAttribute(\"data-value\");\n if (targetValue) {\n setSelectedValue(targetValue);\n }\n }\n }\n }\n },\n [\n onKeyDown,\n orientation,\n activationMode,\n isDisabled,\n setSelectedValue,\n value,\n ],\n );\n\n const triggerClasses = classNames(\"cl-tabs__trigger\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n id={triggerId}\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={panelId}\n tabIndex={isSelected ? 0 : -1}\n data-state={isSelected ? \"active\" : \"inactive\"}\n data-disabled={isDisabled ? \"\" : undefined}\n data-value={value}\n data-orientation={orientation}\n className={triggerClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n id={triggerId}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={panelId}\n tabIndex={isSelected ? 0 : -1}\n disabled={isDisabled}\n data-state={isSelected ? \"active\" : \"inactive\"}\n data-disabled={isDisabled ? \"\" : undefined}\n data-value={value}\n data-orientation={orientation}\n className={triggerClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...restProps}\n >\n {children}\n </button>\n );\n },\n);\n\nTabsTrigger.displayName = \"Tabs.Trigger\";\n\n/**\n * Tabs.Content renders the role=\"tabpanel\" for a corresponding tab trigger.\n */\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n function TabsContent({ value, className, children, ...restProps }, ref) {\n const { selectedValue, orientation, isLazy, baseId } = useTabsContext();\n\n const isSelected = selectedValue === value;\n const triggerId = `cl-tab-${baseId}-${value}`;\n const panelId = `cl-tabpanel-${baseId}-${value}`;\n\n if (isLazy && !isSelected) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n tabIndex={0}\n hidden={!isSelected}\n data-state={isSelected ? \"active\" : \"inactive\"}\n data-orientation={orientation}\n className={classNames(\"cl-tabs__content\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nTabsContent.displayName = \"Tabs.Content\";\n\n/**\n * Tabs.Indicator renders an optional visual indicator track.\n */\nexport const TabsIndicator = React.forwardRef<\n HTMLDivElement,\n TabsIndicatorProps\n>(function TabsIndicator({ className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={classNames(\"cl-tabs__indicator\", className)}\n {...restProps}\n />\n );\n});\n\nTabsIndicator.displayName = \"Tabs.Indicator\";\n\n/**\n * Compound export namespace adhering to Chellaa React standards.\n */\nexport const Tabs = Object.assign(TabsRoot, {\n Root: TabsRoot,\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n Indicator: TabsIndicator,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n size as floatingSize,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n SelectRootProps,\n SelectTriggerProps,\n SelectValueProps,\n SelectIconProps,\n SelectPortalProps,\n SelectContentProps,\n SelectItemProps,\n SelectItemTextProps,\n SelectItemIndicatorProps,\n SelectGroupProps,\n SelectLabelProps,\n SelectSeparatorProps,\n SelectContextValue,\n} from \"./Select.types\";\n\n/* =========================================================================\n Internal Context\n ========================================================================= */\n\ninterface InternalSelectContext<TValue extends string = string> extends SelectContextValue<TValue> {\n itemLabels: Map<string, string>;\n itemsList: string[];\n registerItem: (value: string, label: string, disabled?: boolean) => () => void;\n disabledItems: Set<string>;\n ariaDescribedBy?: string | undefined;\n getReferenceProps?: (userProps?: React.HTMLProps<Element>) => Record<string, unknown>;\n getFloatingProps?: (userProps?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;\n}\n\nfunction extractText(node: React.ReactNode): string {\n if (typeof node === \"string\") return node;\n if (typeof node === \"number\") return String(node);\n if (!node || typeof node !== \"object\") return \"\";\n if (Array.isArray(node)) return node.map(extractText).join(\"\");\n if (React.isValidElement(node) && (node.props as any)?.children) {\n return extractText((node.props as any).children);\n }\n return \"\";\n}\n\nfunction extractItemMapFromChildren(children: React.ReactNode): Map<string, string> {\n const map = new Map<string, string>();\n function walk(node: React.ReactNode) {\n React.Children.forEach(node, (child) => {\n if (!React.isValidElement(child)) return;\n const props = child.props as any;\n if (props && \"value\" in props && typeof props.value === \"string\") {\n const text = props.textValue ?? extractText(props.children);\n if (text) {\n map.set(props.value, text);\n }\n }\n if (props && props.children) {\n walk(props.children);\n }\n });\n }\n walk(children);\n return map;\n}\n\nconst SelectContext = React.createContext<InternalSelectContext | null>(null);\n\nexport function useSelectContext<TValue extends string = string>(): SelectContextValue<TValue> {\n const context = React.useContext(SelectContext);\n if (!context) {\n throw new Error(\n \"Select subcomponents must be used within a <Select> or <Select.Root> provider.\"\n );\n }\n return context as unknown as SelectContextValue<TValue>;\n}\n\n/* =========================================================================\n 1. SelectRoot / Select\n ========================================================================= */\n\nexport const SelectRoot = React.forwardRef<HTMLDivElement, SelectRootProps>(\n function SelectRoot(props, ref) {\n const formField = useFormField();\n\n const isDisabled = props.isDisabled ?? formField?.disabled ?? false;\n const isInvalid = props.isInvalid ?? formField?.error ?? false;\n const isRequired = props.isRequired ?? formField?.required ?? false;\n const name = props.name ?? formField?.name;\n const ariaDescribedBy = [\n props[\"aria-describedby\"],\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n isOpen: isOpenProp,\n defaultOpen = false,\n onOpenChange,\n size = \"md\",\n variant = \"outline\",\n placeholder,\n options,\n children,\n className,\n isDisabled: _discardDisabled,\n isInvalid: _discardInvalid,\n isRequired: _discardRequired,\n name: _discardName,\n \"aria-describedby\": _discardAria,\n ...rest\n } = props;\n\n // Controlled / Uncontrolled value\n const [value, setValueState] = useControllableState<string | undefined>({\n value: valueProp,\n defaultValue: defaultValue,\n onChange: (next) => {\n if (next !== undefined && onValueChange) {\n onValueChange(next);\n }\n },\n });\n\n // Controlled / Uncontrolled open state\n const [isOpen, setIsOpenState] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null);\n const [itemLabels, setItemLabels] = React.useState<Map<string, string>>(() => {\n if (children) {\n return extractItemMapFromChildren(children);\n }\n return new Map();\n });\n const [itemsList, setItemsList] = React.useState<string[]>(() => {\n if (children) {\n return Array.from(extractItemMapFromChildren(children).keys());\n }\n return [];\n });\n const [disabledItems, setDisabledItems] = React.useState<Set<string>>(() => new Set());\n\n const triggerId = React.useId();\n const contentId = React.useId();\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n // Floating UI positioning\n const { refs, floatingStyles, context: floatingContext } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n if (!open && !isOpen) return;\n setIsOpenState(open);\n },\n placement: \"bottom-start\",\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(4),\n flip({ padding: 8 }),\n shift({ padding: 8 }),\n floatingSize({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n minWidth: `${rects.reference.width}px`,\n });\n },\n }),\n ],\n });\n\n const dismiss = useDismiss(floatingContext, {\n enabled: isOpen,\n outsidePress: true,\n escapeKey: true,\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\n\n // Item registration helper\n const registerItem = React.useCallback(\n (itemVal: string, itemLabel: string, itemDisabled?: boolean) => {\n setItemLabels((prev) => {\n if (prev.get(itemVal) === itemLabel) return prev;\n const next = new Map(prev);\n next.set(itemVal, itemLabel);\n return next;\n });\n setItemsList((prev) => (prev.includes(itemVal) ? prev : [...prev, itemVal]));\n if (itemDisabled) {\n setDisabledItems((prev) => {\n if (prev.has(itemVal)) return prev;\n const next = new Set(prev);\n next.add(itemVal);\n return next;\n });\n }\n return () => {\n // Retain itemLabels so closed SelectTrigger can display the label\n };\n },\n []\n );\n\n // Populate from flat options if provided\n React.useEffect(() => {\n if (options && options.length > 0) {\n const newMap = new Map<string, string>();\n const newList: string[] = [];\n const newDisabled = new Set<string>();\n for (const opt of options) {\n newMap.set(opt.value, opt.label);\n newList.push(opt.value);\n if (opt.disabled) newDisabled.add(opt.value);\n }\n setItemLabels(newMap);\n setItemsList(newList);\n setDisabledItems(newDisabled);\n }\n }, [options]);\n\n const selectedLabel = value ? itemLabels.get(value) ?? null : null;\n\n const setValue = React.useCallback(\n (nextVal: string) => {\n setValueState(nextVal);\n },\n [setValueState]\n );\n\n const setIsOpen = React.useCallback(\n (nextOpen: boolean) => {\n setIsOpenState(nextOpen);\n if (nextOpen && value) {\n setHighlightedValue(value);\n }\n },\n [setIsOpenState, value]\n );\n\n const contextValue = React.useMemo<InternalSelectContext>(\n () => ({\n value,\n setValue,\n isOpen: Boolean(isOpen),\n setIsOpen,\n highlightedValue,\n setHighlightedValue,\n size,\n variant,\n isDisabled,\n isInvalid,\n isRequired,\n name,\n triggerId,\n contentId,\n triggerRef,\n contentRef,\n selectedLabel,\n registerItem,\n itemLabels,\n itemsList,\n disabledItems,\n ariaDescribedBy,\n refs: {\n setReference: refs.setReference,\n setFloating: refs.setFloating,\n },\n floatingStyles,\n getReferenceProps,\n getFloatingProps,\n }),\n [\n value,\n setValue,\n isOpen,\n setIsOpen,\n highlightedValue,\n size,\n variant,\n isDisabled,\n isInvalid,\n isRequired,\n name,\n triggerId,\n contentId,\n selectedLabel,\n registerItem,\n itemLabels,\n itemsList,\n disabledItems,\n ariaDescribedBy,\n refs.setReference,\n refs.setFloating,\n floatingStyles,\n getReferenceProps,\n getFloatingProps,\n ]\n );\n\n // Auto-render layout if flat options are provided without compound children\n const renderContent = () => {\n if (children) {\n return children;\n }\n if (options !== undefined) {\n return (\n <>\n <SelectTrigger>\n <SelectValue placeholder={placeholder ?? undefined} />\n <SelectIcon />\n </SelectTrigger>\n <SelectPortal>\n <SelectContent>\n {options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value} isDisabled={opt.disabled ?? undefined}>\n <SelectItemText>{opt.label}</SelectItemText>\n <SelectItemIndicator />\n </SelectItem>\n ))}\n </SelectContent>\n </SelectPortal>\n </>\n );\n }\n return null;\n };\n\n return (\n <SelectContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={classNames(\"cl-select\", className)}\n data-disabled={isDisabled ? \"true\" : undefined}\n data-invalid={isInvalid ? \"true\" : undefined}\n data-size={size}\n data-variant={variant}\n {...rest}\n >\n {renderContent()}\n {name && (\n <input\n type=\"hidden\"\n name={name}\n value={value ?? \"\"}\n disabled={isDisabled}\n required={isRequired}\n aria-hidden=\"true\"\n />\n )}\n </div>\n </SelectContext.Provider>\n );\n }\n);\n\n/* =========================================================================\n 2. SelectTrigger\n ========================================================================= */\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n function SelectTrigger(props, forwardedRef) {\n const ctx = useSelectContext();\n const { asChild = false, className, children, onClick, onKeyDown, ...rest } = props;\n\n const mergedRef = useMergeRefs(ctx.triggerRef, (node: HTMLElement | null) => {\n ctx.refs.setReference(node);\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node as HTMLButtonElement | null);\n } else if (forwardedRef) {\n (forwardedRef as React.MutableRefObject<HTMLButtonElement | null>).current = node as HTMLButtonElement | null;\n }\n });\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (ctx.isDisabled) return;\n ctx.setIsOpen(!ctx.isOpen);\n onClick?.(e);\n };\n\n // Type-ahead buffer for closed trigger\n const typeaheadBuffer = React.useRef(\"\");\n const typeaheadTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Cleanup pending typeahead timeout on unmount\n React.useEffect(() => {\n return () => {\n if (typeaheadTimeout.current) {\n clearTimeout(typeaheadTimeout.current);\n typeaheadTimeout.current = null;\n }\n };\n }, []);\n\n const internal = ctx as unknown as InternalSelectContext;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (ctx.isDisabled) return;\n\n const enabledList = internal.itemsList.filter((v) => !internal.disabledItems.has(v));\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n if (!ctx.isOpen) {\n ctx.setIsOpen(true);\n } else if (enabledList.length > 0) {\n const currentIndex = ctx.highlightedValue ? enabledList.indexOf(ctx.highlightedValue) : -1;\n const nextIdx = currentIndex < enabledList.length - 1 ? currentIndex + 1 : 0;\n ctx.setHighlightedValue(enabledList[nextIdx] ?? null);\n }\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n if (!ctx.isOpen) {\n ctx.setIsOpen(true);\n } else if (enabledList.length > 0) {\n const currentIndex = ctx.highlightedValue ? enabledList.indexOf(ctx.highlightedValue) : -1;\n const prevIdx = currentIndex > 0 ? currentIndex - 1 : enabledList.length - 1;\n ctx.setHighlightedValue(enabledList[prevIdx] ?? null);\n }\n } else if (e.key === \"Home\" && ctx.isOpen) {\n e.preventDefault();\n if (enabledList.length > 0) {\n ctx.setHighlightedValue(enabledList[0] ?? null);\n }\n } else if (e.key === \"End\" && ctx.isOpen) {\n e.preventDefault();\n if (enabledList.length > 0) {\n ctx.setHighlightedValue(enabledList[enabledList.length - 1] ?? null);\n }\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (!ctx.isOpen) {\n ctx.setIsOpen(true);\n } else {\n if (ctx.highlightedValue && !internal.disabledItems.has(ctx.highlightedValue)) {\n ctx.setValue(ctx.highlightedValue);\n }\n ctx.setIsOpen(false);\n }\n } else if (e.key === \"Escape\" && ctx.isOpen) {\n e.preventDefault();\n ctx.setIsOpen(false);\n } else if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n // Printable character typeahead\n if (typeaheadTimeout.current) {\n clearTimeout(typeaheadTimeout.current);\n typeaheadTimeout.current = null;\n }\n typeaheadBuffer.current += e.key.toLowerCase();\n typeaheadTimeout.current = setTimeout(() => {\n typeaheadBuffer.current = \"\";\n typeaheadTimeout.current = null;\n }, 500);\n\n const match = enabledList.find((val) => {\n const label = internal.itemLabels.get(val)?.toLowerCase() ?? \"\";\n return label.startsWith(typeaheadBuffer.current);\n });\n\n if (match) {\n if (!ctx.isOpen) {\n ctx.setValue(match);\n }\n ctx.setHighlightedValue(match);\n }\n }\n\n onKeyDown?.(e);\n };\n\n const triggerClasses = classNames(\n \"cl-select__trigger\",\n `cl-select__trigger--${ctx.variant}`,\n `cl-select__trigger--${ctx.size}`,\n className\n );\n\n const activeDescendantId =\n ctx.isOpen && ctx.highlightedValue ? `${ctx.contentId}-item-${ctx.highlightedValue}` : undefined;\n\n const baseTriggerProps = {\n ref: mergedRef,\n id: ctx.triggerId,\n type: \"button\" as const,\n role: \"combobox\",\n \"aria-haspopup\": \"listbox\" as const,\n \"aria-expanded\": ctx.isOpen,\n \"aria-controls\": ctx.isOpen ? ctx.contentId : undefined,\n \"aria-activedescendant\": activeDescendantId,\n \"aria-invalid\": ctx.isInvalid ? true : undefined,\n \"aria-required\": ctx.isRequired ? true : undefined,\n \"aria-describedby\": (ctx as any).ariaDescribedBy ?? rest[\"aria-describedby\"],\n disabled: ctx.isDisabled,\n \"data-state\": ctx.isOpen ? \"open\" : \"closed\",\n \"data-invalid\": ctx.isInvalid ? \"true\" : undefined,\n \"data-disabled\": ctx.isDisabled ? \"true\" : undefined,\n className: triggerClasses,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n ...rest,\n };\n\n const triggerProps = internal.getReferenceProps\n ? internal.getReferenceProps(baseTriggerProps as any)\n : baseTriggerProps;\n\n if (asChild) {\n return <Slot {...triggerProps}>{children}</Slot>;\n }\n\n return <button {...triggerProps}>{children}</button>;\n }\n);\n\n/* =========================================================================\n 3. SelectValue\n ========================================================================= */\n\nexport const SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(\n function SelectValue(props, ref) {\n const ctx = useSelectContext();\n const { placeholder = \"Select an option...\", children, className, ...rest } = props;\n\n const displayText = children ?? ctx.selectedLabel ?? (ctx.value ? String(ctx.value) : null);\n const isPlaceholder = !displayText;\n\n return (\n <span\n ref={ref}\n className={classNames(\n \"cl-select__value\",\n isPlaceholder && \"cl-select__value--placeholder\",\n className\n )}\n {...rest}\n >\n {displayText || placeholder}\n </span>\n );\n }\n);\n\n/* =========================================================================\n 4. SelectIcon\n ========================================================================= */\n\nexport const SelectIcon = React.forwardRef<HTMLSpanElement, SelectIconProps>(\n function SelectIcon(props, ref) {\n const { children, className, ...rest } = props;\n\n return (\n <span\n ref={ref}\n className={classNames(\"cl-select__icon\", className)}\n aria-hidden=\"true\"\n {...rest}\n >\n {children || (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M4 6l4 4 4-4\" />\n </svg>\n )}\n </span>\n );\n }\n);\n\n/* =========================================================================\n 5. SelectPortal\n ========================================================================= */\n\nexport function SelectPortal({ children, container }: SelectPortalProps) {\n const ctx = useSelectContext();\n if (!ctx.isOpen) return null;\n return <Portal container={container ?? null}>{children}</Portal>;\n}\n\n/* =========================================================================\n 6. SelectContent\n ========================================================================= */\n\nexport const SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n function SelectContent(props, forwardedRef) {\n const ctx = useSelectContext();\n const { className, children, onKeyDown, ...rest } = props;\n\n const mergedRef = useMergeRefs(ctx.contentRef, (node: HTMLElement | null) => {\n ctx.refs.setFloating(node);\n if (typeof forwardedRef === \"function\") {\n forwardedRef(node as HTMLDivElement | null);\n } else if (forwardedRef) {\n (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node as HTMLDivElement | null;\n }\n });\n\n const internal = ctx as unknown as InternalSelectContext;\n\n // Auto-scroll highlighted item into view\n React.useLayoutEffect(() => {\n if (ctx.isOpen && ctx.highlightedValue && ctx.contentRef.current) {\n const itemEl = ctx.contentRef.current.querySelector<HTMLElement>(\n `[data-value=\"${CSS.escape(ctx.highlightedValue)}\"]`\n );\n if (itemEl && typeof itemEl.scrollIntoView === \"function\") {\n itemEl.scrollIntoView({ block: \"nearest\" });\n }\n }\n }, [ctx.isOpen, ctx.highlightedValue]);\n\n // Keyboard navigation inside listbox\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n const enabledList = internal.itemsList.filter((v) => !internal.disabledItems.has(v));\n if (enabledList.length === 0) return;\n\n const currentIndex = ctx.highlightedValue\n ? enabledList.indexOf(ctx.highlightedValue)\n : -1;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIdx = currentIndex < enabledList.length - 1 ? currentIndex + 1 : 0;\n ctx.setHighlightedValue(enabledList[nextIdx] ?? null);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIdx = currentIndex > 0 ? currentIndex - 1 : enabledList.length - 1;\n ctx.setHighlightedValue(enabledList[prevIdx] ?? null);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n ctx.setHighlightedValue(enabledList[0] ?? null);\n } else if (e.key === \"End\") {\n e.preventDefault();\n ctx.setHighlightedValue(enabledList[enabledList.length - 1] ?? null);\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (ctx.highlightedValue && !internal.disabledItems.has(ctx.highlightedValue)) {\n ctx.setValue(ctx.highlightedValue);\n ctx.setIsOpen(false);\n ctx.triggerRef.current?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n ctx.setIsOpen(false);\n ctx.triggerRef.current?.focus();\n } else if (e.key === \"Tab\") {\n ctx.setIsOpen(false);\n }\n\n onKeyDown?.(e);\n };\n\n if (!ctx.isOpen) return null;\n\n const baseContentProps = {\n ref: mergedRef,\n id: ctx.contentId,\n role: \"listbox\",\n \"aria-labelledby\": ctx.triggerId,\n tabIndex: -1,\n style: ctx.floatingStyles,\n className: classNames(\"cl-select__content\", className),\n onKeyDown: handleKeyDown,\n ...rest,\n };\n\n const contentProps = internal.getFloatingProps\n ? internal.getFloatingProps(baseContentProps as any)\n : baseContentProps;\n\n return (\n <div {...contentProps}>\n {children}\n </div>\n );\n }\n);\n\n/* =========================================================================\n 7. SelectItem\n ========================================================================= */\n\ninterface InternalItemContextValue {\n isSelected: boolean;\n}\n\nconst ItemContext = React.createContext<InternalItemContextValue>({ isSelected: false });\n\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\n function SelectItem(props, ref) {\n const ctx = useSelectContext();\n const {\n value,\n isDisabled = false,\n textValue,\n children,\n className,\n onClick,\n onMouseEnter,\n ...rest\n } = props;\n\n const isSelected = ctx.value === value;\n const isHighlighted = ctx.highlightedValue === value;\n\n // Register item text for SelectValue computation\n const itemRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(itemRef, ref);\n\n const { registerItem } = ctx as unknown as InternalSelectContext;\n\n React.useEffect(() => {\n const label =\n textValue ??\n (typeof children === \"string\" ? children : itemRef.current?.textContent?.trim() ?? value);\n const unregister = registerItem(value, label, isDisabled);\n return unregister;\n }, [value, textValue, isDisabled, registerItem]);\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (isDisabled || ctx.isDisabled) return;\n ctx.setValue(value);\n ctx.setIsOpen(false);\n ctx.triggerRef.current?.focus();\n onClick?.(e);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!isDisabled && !ctx.isDisabled) {\n ctx.setHighlightedValue(value);\n }\n onMouseEnter?.(e);\n };\n\n const itemId = `${ctx.contentId}-item-${value}`;\n\n return (\n <ItemContext.Provider value={{ isSelected }}>\n <div\n ref={mergedRef}\n id={itemId}\n role=\"option\"\n data-value={value}\n aria-selected={isSelected}\n aria-disabled={isDisabled ? \"true\" : undefined}\n data-disabled={isDisabled ? \"true\" : undefined}\n data-highlighted={isHighlighted ? \"true\" : undefined}\n className={classNames(\"cl-select__item\", className)}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n {...rest}\n >\n {children}\n </div>\n </ItemContext.Provider>\n );\n }\n);\n\n/* =========================================================================\n 8. SelectItemText\n ========================================================================= */\n\nexport const SelectItemText = React.forwardRef<HTMLSpanElement, SelectItemTextProps>(\n function SelectItemText(props, ref) {\n const { children, className, ...rest } = props;\n\n return (\n <span ref={ref} className={classNames(\"cl-select__item-text\", className)} {...rest}>\n {children}\n </span>\n );\n }\n);\n\n/* =========================================================================\n 9. SelectItemIndicator\n ========================================================================= */\n\nexport const SelectItemIndicator = React.forwardRef<HTMLSpanElement, SelectItemIndicatorProps>(\n function SelectItemIndicator(props, ref) {\n const { isSelected } = React.useContext(ItemContext);\n const { children, className, ...rest } = props;\n\n if (!isSelected) return null;\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={classNames(\"cl-select__item-indicator\", className)}\n {...rest}\n >\n {children || (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"2.5 7 5.5 10 11.5 3.5\" />\n </svg>\n )}\n </span>\n );\n }\n);\n\n/* =========================================================================\n 10. SelectGroup, SelectLabel, SelectSeparator\n ========================================================================= */\n\nexport const SelectGroup = React.forwardRef<HTMLDivElement, SelectGroupProps>(\n function SelectGroup(props, ref) {\n const { className, ...rest } = props;\n return <div ref={ref} role=\"group\" className={classNames(\"cl-select__group\", className)} {...rest} />;\n }\n);\n\nexport const SelectLabel = React.forwardRef<HTMLDivElement, SelectLabelProps>(\n function SelectLabel(props, ref) {\n const { className, ...rest } = props;\n return <div ref={ref} className={classNames(\"cl-select__label\", className)} {...rest} />;\n }\n);\n\nexport const SelectSeparator = React.forwardRef<HTMLDivElement, SelectSeparatorProps>(\n function SelectSeparator(props, ref) {\n const { className, ...rest } = props;\n return <div ref={ref} role=\"separator\" className={classNames(\"cl-select__separator\", className)} {...rest} />;\n }\n);\n\n/* =========================================================================\n Compound Component Object\n ========================================================================= */\n\nexport const Select = Object.assign(SelectRoot, {\n Root: SelectRoot,\n Trigger: SelectTrigger,\n Value: SelectValue,\n Icon: SelectIcon,\n Portal: SelectPortal,\n Content: SelectContent,\n Item: SelectItem,\n ItemText: SelectItemText,\n ItemIndicator: SelectItemIndicator,\n Group: SelectGroup,\n Label: SelectLabel,\n Separator: SelectSeparator,\n});\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { Select } from \"../Select\";\nimport type {\n PaginationRootProps,\n PaginationListProps,\n PaginationItemProps,\n PaginationActionProps,\n PaginationEllipsisProps,\n PaginationSizeSelectProps,\n PaginationJumperProps,\n PaginationContextValue,\n PaginationSize,\n PaginationVariant,\n} from \"./Pagination.types\";\n\nexport const PaginationContext =\n React.createContext<PaginationContextValue | null>(null);\n\nexport function usePaginationContext(): PaginationContextValue {\n const context = React.useContext(PaginationContext);\n if (!context) {\n throw new Error(\n \"Pagination compound components must be rendered inside <Pagination /> or <Pagination.Root />\",\n );\n }\n return context;\n}\n\nexport type PaginationRangeItem = number | \"ellipsis-start\" | \"ellipsis-end\";\n\n/**\n * Calculates a windowed range of page items with ellipsis compression.\n */\nexport function getPaginationRange({\n totalPages,\n currentPage,\n siblingCount = 1,\n boundaryCount = 1,\n}: {\n totalPages: number;\n currentPage: number;\n siblingCount?: number;\n boundaryCount?: number;\n}): PaginationRangeItem[] {\n if (totalPages <= 1) return [1];\n\n const range = (start: number, end: number): number[] => {\n const length = end - start + 1;\n return Array.from({ length }, (_, i) => start + i);\n };\n\n // Max visible numbers if no ellipsis:\n // boundaries * 2 + siblings * 2 + current + 2 ellipses\n const totalNumbers = boundaryCount * 2 + siblingCount * 2 + 3;\n\n if (totalPages <= totalNumbers) {\n return range(1, totalPages);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);\n\n const shouldShowLeftEllipsis =\n leftSiblingIndex > boundaryCount + 2;\n const shouldShowRightEllipsis =\n rightSiblingIndex < totalPages - (boundaryCount + 1);\n\n if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\n const leftItemCount = boundaryCount + siblingCount * 2 + 2;\n const leftRange = range(1, leftItemCount);\n const rightBoundary = range(totalPages - boundaryCount + 1, totalPages);\n return [...leftRange, \"ellipsis-end\", ...rightBoundary];\n }\n\n if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\n const leftBoundary = range(1, boundaryCount);\n const rightItemCount = boundaryCount + siblingCount * 2 + 2;\n const rightRange = range(totalPages - rightItemCount + 1, totalPages);\n return [...leftBoundary, \"ellipsis-start\", ...rightRange];\n }\n\n // Both ellipses visible\n const leftBoundary = range(1, boundaryCount);\n const middleRange = range(leftSiblingIndex, rightSiblingIndex);\n const rightBoundary = range(totalPages - boundaryCount + 1, totalPages);\n return [\n ...leftBoundary,\n \"ellipsis-start\",\n ...middleRange,\n \"ellipsis-end\",\n ...rightBoundary,\n ];\n}\n\n/**\n * Pagination.Root (Pagination) manages pagination state, page mathematics, and accessibility landmark.\n */\nexport const PaginationRoot = React.forwardRef<HTMLElement, PaginationRootProps>(\n function PaginationRoot(\n {\n total,\n pageSize: pageSizeProp = 10,\n page: pageProp,\n defaultPage = 1,\n onPageChange,\n onPageSizeChange,\n siblingCount = 1,\n boundaryCount = 1,\n size = \"md\",\n variant = \"outline\",\n isDisabled = false,\n showSizeChanger = false,\n pageSizeOptions = [10, 20, 50, 100],\n showQuickJumper = false,\n \"aria-label\": ariaLabel = \"Pagination\",\n className,\n children,\n ...domProps\n },\n ref,\n ) {\n const [pageSize, setPageSizeInternal] = React.useState<number>(pageSizeProp);\n\n React.useEffect(() => {\n setPageSizeInternal(pageSizeProp);\n }, [pageSizeProp]);\n\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n\n const [currentPage, setCurrentPage] = useControllableState<number>({\n value: pageProp,\n defaultValue: defaultPage,\n onChange: onPageChange,\n });\n\n const setPage = React.useCallback(\n (nextPage: number) => {\n if (isDisabled) return;\n const clamped = Math.min(Math.max(1, nextPage), totalPages);\n setCurrentPage(clamped);\n },\n [isDisabled, setCurrentPage, totalPages],\n );\n\n const handlePageSizeChange = React.useCallback(\n (newSize: number) => {\n if (isDisabled) return;\n setPageSizeInternal(newSize);\n onPageSizeChange?.(newSize);\n // Reset to page 1 if current page exceeds new total pages\n const newTotalPages = Math.max(1, Math.ceil(total / newSize));\n if (currentPage > newTotalPages) {\n setPage(newTotalPages);\n }\n },\n [currentPage, isDisabled, onPageSizeChange, setPage, total],\n );\n\n const contextValue = React.useMemo<PaginationContextValue>(\n () => ({\n currentPage,\n totalPages,\n pageSize,\n setPage,\n setPageSize: handlePageSizeChange,\n size: size as PaginationSize,\n variant: variant as PaginationVariant,\n isDisabled,\n siblingCount,\n boundaryCount,\n }),\n [\n currentPage,\n totalPages,\n pageSize,\n setPage,\n handlePageSizeChange,\n size,\n variant,\n isDisabled,\n siblingCount,\n boundaryCount,\n ],\n );\n\n const items = React.useMemo(\n () =>\n getPaginationRange({\n totalPages,\n currentPage,\n siblingCount,\n boundaryCount,\n }),\n [totalPages, currentPage, siblingCount, boundaryCount],\n );\n\n return (\n <PaginationContext.Provider value={contextValue}>\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={classNames(\n \"cl-pagination\",\n `cl-pagination--${size}`,\n `cl-pagination--${variant}`,\n className,\n )}\n {...domProps}\n >\n {children ? (\n children\n ) : (\n <>\n <PaginationList>\n <li className=\"cl-pagination__list-item\">\n <PaginationPrev />\n </li>\n {items.map((item, idx) => (\n <li\n key={\n typeof item === \"number\"\n ? `page-${item}`\n : `${item}-${idx}`\n }\n className=\"cl-pagination__list-item\"\n >\n {typeof item === \"number\" ? (\n <PaginationItem\n page={item}\n isCurrent={item === currentPage}\n >\n {item}\n </PaginationItem>\n ) : (\n <PaginationEllipsis />\n )}\n </li>\n ))}\n <li className=\"cl-pagination__list-item\">\n <PaginationNext />\n </li>\n </PaginationList>\n {showSizeChanger && (\n <PaginationSizeSelect options={pageSizeOptions} />\n )}\n {showQuickJumper && <PaginationJumper />}\n </>\n )}\n </nav>\n </PaginationContext.Provider>\n );\n },\n);\n\nPaginationRoot.displayName = \"Pagination\";\n\n/**\n * Pagination.List renders the semantic <ul role=\"list\"> wrapper for page controls.\n */\nexport const PaginationList = React.forwardRef<\n HTMLUListElement,\n PaginationListProps\n>(function PaginationList({ className, children, ...restProps }, ref) {\n return (\n <ul\n ref={ref}\n role=\"list\"\n className={classNames(\"cl-pagination__list\", className)}\n {...restProps}\n >\n {children}\n </ul>\n );\n});\n\nPaginationList.displayName = \"Pagination.List\";\n\n/**\n * Pagination.Item renders a numeric page button with aria-current marking.\n */\nexport const PaginationItem = React.forwardRef<\n HTMLButtonElement,\n PaginationItemProps\n>(function PaginationItem(\n {\n page,\n isCurrent,\n asChild = false,\n className,\n children,\n onClick,\n \"aria-label\": ariaLabel,\n ...restProps\n },\n ref,\n) {\n const { currentPage, setPage, isDisabled } = usePaginationContext();\n const active = isCurrent ?? currentPage === page;\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return;\n onClick?.(e);\n if (!e.defaultPrevented) {\n setPage(page);\n }\n },\n [isDisabled, onClick, page, setPage],\n );\n\n const itemClasses = classNames(\"cl-pagination__item\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n aria-current={active ? \"page\" : undefined}\n aria-label={ariaLabel}\n className={itemClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children ?? page}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-current={active ? \"page\" : undefined}\n aria-label={ariaLabel ?? `Page ${page}`}\n disabled={isDisabled}\n className={itemClasses}\n onClick={handleClick}\n {...restProps}\n >\n {children ?? page}\n </button>\n );\n});\n\nPaginationItem.displayName = \"Pagination.Item\";\n\nconst ChevronLeftIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"cl-pagination__icon\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n);\n\nconst ChevronRightIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"cl-pagination__icon\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n);\n\nconst ChevronsLeftIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"cl-pagination__icon\"\n >\n <polyline points=\"11 17 6 12 11 7\" />\n <polyline points=\"18 17 13 12 18 7\" />\n </svg>\n);\n\nconst ChevronsRightIcon = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n className=\"cl-pagination__icon\"\n >\n <polyline points=\"13 17 18 12 13 7\" />\n <polyline points=\"6 17 11 12 6 7\" />\n </svg>\n);\n\n/**\n * Pagination.Prev navigates to the preceding page.\n */\nexport const PaginationPrev = React.forwardRef<\n HTMLButtonElement,\n PaginationActionProps\n>(function PaginationPrev(\n { asChild = false, className, children, onClick, ...restProps },\n ref,\n) {\n const { currentPage, setPage, isDisabled } = usePaginationContext();\n const isBoundary = currentPage <= 1;\n const disabled = isDisabled || isBoundary;\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n onClick?.(e);\n if (!e.defaultPrevented) {\n setPage(currentPage - 1);\n }\n },\n [disabled, onClick, setPage, currentPage],\n );\n\n const prevClasses = classNames(\"cl-pagination__prev\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n aria-label=\"Go to previous page\"\n aria-disabled={disabled ? \"true\" : undefined}\n className={prevClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children ?? <ChevronLeftIcon />}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to previous page\"\n disabled={disabled}\n className={prevClasses}\n onClick={handleClick}\n {...restProps}\n >\n {children ?? <ChevronLeftIcon />}\n </button>\n );\n});\n\nPaginationPrev.displayName = \"Pagination.Prev\";\n\n/**\n * Pagination.Next navigates to the succeeding page.\n */\nexport const PaginationNext = React.forwardRef<\n HTMLButtonElement,\n PaginationActionProps\n>(function PaginationNext(\n { asChild = false, className, children, onClick, ...restProps },\n ref,\n) {\n const { currentPage, totalPages, setPage, isDisabled } =\n usePaginationContext();\n const isBoundary = currentPage >= totalPages;\n const disabled = isDisabled || isBoundary;\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n onClick?.(e);\n if (!e.defaultPrevented) {\n setPage(currentPage + 1);\n }\n },\n [disabled, onClick, setPage, currentPage],\n );\n\n const nextClasses = classNames(\"cl-pagination__next\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n aria-label=\"Go to next page\"\n aria-disabled={disabled ? \"true\" : undefined}\n className={nextClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children ?? <ChevronRightIcon />}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to next page\"\n disabled={disabled}\n className={nextClasses}\n onClick={handleClick}\n {...restProps}\n >\n {children ?? <ChevronRightIcon />}\n </button>\n );\n});\n\nPaginationNext.displayName = \"Pagination.Next\";\n\n/**\n * Pagination.First jumps directly to the first page (Page 1).\n */\nexport const PaginationFirst = React.forwardRef<\n HTMLButtonElement,\n PaginationActionProps\n>(function PaginationFirst(\n { asChild = false, className, children, onClick, ...restProps },\n ref,\n) {\n const { currentPage, setPage, isDisabled } = usePaginationContext();\n const disabled = isDisabled || currentPage <= 1;\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n onClick?.(e);\n if (!e.defaultPrevented) {\n setPage(1);\n }\n },\n [disabled, onClick, setPage],\n );\n\n const firstClasses = classNames(\"cl-pagination__first\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n aria-label=\"Go to first page\"\n aria-disabled={disabled ? \"true\" : undefined}\n className={firstClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children ?? <ChevronsLeftIcon />}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to first page\"\n disabled={disabled}\n className={firstClasses}\n onClick={handleClick}\n {...restProps}\n >\n {children ?? <ChevronsLeftIcon />}\n </button>\n );\n});\n\nPaginationFirst.displayName = \"Pagination.First\";\n\n/**\n * Pagination.Last jumps directly to the final page.\n */\nexport const PaginationLast = React.forwardRef<\n HTMLButtonElement,\n PaginationActionProps\n>(function PaginationLast(\n { asChild = false, className, children, onClick, ...restProps },\n ref,\n) {\n const { currentPage, totalPages, setPage, isDisabled } =\n usePaginationContext();\n const disabled = isDisabled || currentPage >= totalPages;\n\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n onClick?.(e);\n if (!e.defaultPrevented) {\n setPage(totalPages);\n }\n },\n [disabled, onClick, setPage, totalPages],\n );\n\n const lastClasses = classNames(\"cl-pagination__last\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n aria-label=\"Go to last page\"\n aria-disabled={disabled ? \"true\" : undefined}\n className={lastClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children ?? <ChevronsRightIcon />}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label=\"Go to last page\"\n disabled={disabled}\n className={lastClasses}\n onClick={handleClick}\n {...restProps}\n >\n {children ?? <ChevronsRightIcon />}\n </button>\n );\n});\n\nPaginationLast.displayName = \"Pagination.Last\";\n\n/**\n * Pagination.Ellipsis renders the non-interactive truncation indicator.\n */\nexport const PaginationEllipsis = React.forwardRef<\n HTMLSpanElement,\n PaginationEllipsisProps\n>(function PaginationEllipsis({ className, children, ...restProps }, ref) {\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={classNames(\"cl-pagination__ellipsis\", className)}\n {...restProps}\n >\n {children ?? \"…\"}\n </span>\n );\n});\n\nPaginationEllipsis.displayName = \"Pagination.Ellipsis\";\n\n/**\n * Pagination.SizeSelect renders the page size dropdown reusing @chellaa/react's Select component.\n */\nexport const PaginationSizeSelect = React.forwardRef<\n HTMLButtonElement,\n PaginationSizeSelectProps\n>(function PaginationSizeSelect(\n {\n options = [10, 20, 50, 100],\n className,\n onChange,\n \"aria-label\": ariaLabel = \"Page size\",\n isDisabled: isDisabledProp,\n ...restProps\n },\n ref,\n) {\n const { pageSize, setPageSize, size, isDisabled: isContextDisabled } =\n usePaginationContext();\n const disabled = isDisabledProp ?? isContextDisabled;\n\n const handleValueChange = React.useCallback(\n (val: string) => {\n const num = parseInt(val, 10);\n if (!isNaN(num)) {\n setPageSize(num);\n onChange?.(num);\n }\n },\n [onChange, setPageSize],\n );\n\n return (\n <Select.Root\n value={String(pageSize)}\n onValueChange={handleValueChange}\n isDisabled={disabled}\n size={size}\n className={classNames(\"cl-pagination__size-select-root\", className)}\n >\n <Select.Trigger\n ref={ref}\n aria-label={ariaLabel}\n className=\"cl-pagination__size-select-trigger\"\n {...restProps}\n >\n <Select.Value>{`${pageSize} / page`}</Select.Value>\n <Select.Icon />\n </Select.Trigger>\n <Select.Portal>\n <Select.Content className=\"cl-pagination__size-select-content\">\n {options.map((opt) => (\n <Select.Item key={opt} value={String(opt)}>\n <Select.ItemText>{opt} / page</Select.ItemText>\n <Select.ItemIndicator />\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n});\n\nPaginationSizeSelect.displayName = \"Pagination.SizeSelect\";\n\n/**\n * Pagination.Jumper renders a direct page jump number input.\n */\nexport const PaginationJumper = React.forwardRef<\n HTMLSpanElement,\n PaginationJumperProps\n>(function PaginationJumper({ className, children, ...restProps }, ref) {\n const { totalPages, setPage, isDisabled } = usePaginationContext();\n const [val, setVal] = React.useState<string>(\"\");\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n const num = parseInt(val, 10);\n if (!isNaN(num) && num >= 1 && num <= totalPages) {\n setPage(num);\n setVal(\"\");\n }\n }\n },\n [val, totalPages, setPage],\n );\n\n return (\n <span\n ref={ref}\n className={classNames(\"cl-pagination__jumper\", className)}\n {...restProps}\n >\n Go to\n <input\n type=\"number\"\n min={1}\n max={totalPages}\n aria-label=\"Jump to page\"\n disabled={isDisabled}\n value={val}\n onChange={(e) => setVal(e.target.value)}\n onKeyDown={handleKeyDown}\n className=\"cl-pagination__jumper-input\"\n />\n </span>\n );\n});\n\nPaginationJumper.displayName = \"Pagination.Jumper\";\n\n/**\n * Compound export object adhering to Chellaa React component architecture.\n */\nexport const Pagination = Object.assign(PaginationRoot, {\n Root: PaginationRoot,\n List: PaginationList,\n Item: PaginationItem,\n Prev: PaginationPrev,\n Next: PaginationNext,\n First: PaginationFirst,\n Last: PaginationLast,\n Ellipsis: PaginationEllipsis,\n SizeSelect: PaginationSizeSelect,\n Jumper: PaginationJumper,\n});\n","import * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n size as floatingSize,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n ComboboxProps,\n ComboboxRootProps,\n ComboboxControlProps,\n ComboboxInputProps,\n ComboboxTriggerProps,\n ComboboxPortalProps,\n ComboboxContentProps,\n ComboboxItemProps,\n ComboboxGroupProps,\n ComboboxGroupLabelProps,\n ComboboxEmptyProps,\n ComboboxTagProps,\n ComboboxClearProps,\n ComboboxContextValue,\n} from \"./Combobox.types\";\n\ninterface InternalComboboxContext extends ComboboxContextValue {\n contentElementRef: React.MutableRefObject<HTMLDivElement | null>;\n hasOptions: boolean;\n setHasOptions: (has: boolean) => void;\n}\n\nconst ComboboxContext = React.createContext<InternalComboboxContext | null>(null);\n\nexport function useComboboxContext(): ComboboxContextValue {\n const context = React.useContext(ComboboxContext);\n if (!context) {\n throw new Error(\n \"Combobox subcomponents must be used within a <Combobox> or <Combobox.Root> provider.\"\n );\n }\n return context;\n}\n\nexport const useCombobox = useComboboxContext;\n\n/* =========================================================================\n 1. ComboboxRoot / Combobox\n ========================================================================= */\n\nexport const ComboboxRoot = React.forwardRef<HTMLDivElement, ComboboxRootProps>(\n function ComboboxRoot(props, ref) {\n const formField = useFormField();\n\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onValueChange,\n searchValue: searchValueProp,\n defaultSearchValue = \"\",\n onSearchChange,\n isOpen: isOpenProp,\n defaultOpen = false,\n onOpenChange,\n isDisabled: disabledProp,\n isInvalid: isInvalidProp,\n isLoading: isLoadingProp = false,\n isMulti = false,\n size: sizeProp = \"md\",\n variant: variantProp = \"outline\",\n filter = (itemVal: string, itemText: string, search: string) => {\n if (!search) return true;\n const q = search.toLowerCase().trim();\n return (\n itemVal.toLowerCase().includes(q) ||\n itemText.toLowerCase().includes(q)\n );\n },\n options,\n placeholder,\n className,\n children,\n id: idProp,\n name: nameProp,\n isRequired: isRequiredProp,\n \"aria-describedby\": ariaDescribedByProp,\n ...rest\n } = props;\n\n const isDisabled = disabledProp ?? formField?.disabled ?? false;\n const isInvalid = isInvalidProp ?? formField?.error ?? false;\n const isRequired = isRequiredProp ?? (props as any).required ?? formField?.required ?? false;\n const name = nameProp ?? formField?.name;\n const ariaDescribedBy = [\n ariaDescribedByProp,\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const size = sizeProp ?? \"md\";\n const variant = variantProp;\n const isLoading = isLoadingProp;\n\n const baseId = React.useId().replace(/:/g, \"\");\n const generatedInputId = `cl-combobox-input-${baseId}`;\n const inputId = idProp ?? formField?.id ?? generatedInputId;\n const listboxId = `cl-combobox-listbox-${baseId}`;\n\n // Resolve initial search label for single-select when options are available\n const initialVal = valueProp !== undefined ? valueProp : defaultValueProp;\n const initialSelectedOption =\n !isMulti && options && initialVal !== undefined\n ? options.find((o) => o.value === initialVal)\n : undefined;\n\n const resolvedDefaultSearch =\n defaultSearchValue ||\n (typeof initialSelectedOption?.label === \"string\"\n ? initialSelectedOption.label\n : typeof initialSelectedOption?.value === \"string\"\n ? initialSelectedOption.value\n : \"\");\n\n // Controlled or uncontrolled value\n const [value, setValueState] = useControllableState<any>({\n value: valueProp,\n defaultValue: defaultValueProp !== undefined ? defaultValueProp : isMulti ? [] : \"\",\n onChange: onValueChange,\n });\n\n // Controlled or uncontrolled search text\n const [searchValue, setSearchValueState] = useControllableState<string>({\n value: searchValueProp,\n defaultValue: resolvedDefaultSearch,\n onChange: onSearchChange,\n });\n\n // Controlled or uncontrolled open state\n const [isOpen, setIsOpenState] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [isFiltering, setIsFiltering] = React.useState<boolean>(false);\n const [pendingHighlight, setPendingHighlight] = React.useState<\n \"first\" | \"last\" | \"selected\" | null\n >(null);\n\n const openWithHighlight = React.useCallback(\n (target: \"first\" | \"last\" | \"selected\") => {\n if (isDisabled) return;\n setIsFiltering(false);\n setPendingHighlight(target);\n setIsOpenState(true);\n },\n [isDisabled, setIsOpenState]\n );\n\n const [activeId, setActiveId] = React.useState<string | null>(null);\n const [hasOptions, setHasOptions] = React.useState<boolean>(true);\n const setHasOptionsCallback = React.useCallback((has: boolean) => {\n setHasOptions((prev) => (prev === has ? prev : has));\n }, []);\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const contentElementRef = React.useRef<HTMLDivElement | null>(null);\n\n // Floating UI positioning\n const {\n refs,\n floatingStyles,\n context: floatingContext,\n } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n if (!isDisabled) {\n setIsOpenState(open);\n }\n },\n whileElementsMounted: autoUpdate,\n placement: \"bottom-start\",\n middleware: [\n offset(4),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 8 }),\n floatingSize({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n ],\n });\n\n const dismiss = useDismiss(floatingContext, {\n outsidePress: true,\n escapeKey: false, // Handled specifically by input keydown\n });\n\n useInteractions([dismiss]);\n\n // Selection handlers\n const selectItem = React.useCallback(\n (itemVal: string, itemText: string) => {\n if (isMulti) {\n const currentArr = Array.isArray(value) ? value : [];\n const exists = currentArr.includes(itemVal);\n const nextArr = exists\n ? currentArr.filter((v) => v !== itemVal)\n : [...currentArr, itemVal];\n setValueState(nextArr);\n setSearchValueState(\"\");\n setIsFiltering(false);\n if (inputRef.current) {\n inputRef.current.focus();\n }\n } else {\n setValueState(itemVal);\n setSearchValueState(itemText || itemVal);\n setIsFiltering(false);\n setIsOpenState(false);\n setActiveId(null);\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }\n },\n [isMulti, value, setValueState, setSearchValueState, setIsOpenState]\n );\n\n const removeItem = React.useCallback(\n (itemVal: string) => {\n if (isMulti && Array.isArray(value)) {\n setValueState(value.filter((v) => v !== itemVal));\n }\n },\n [isMulti, value, setValueState]\n );\n\n const clearSelection = React.useCallback(() => {\n setValueState(isMulti ? [] : \"\");\n setSearchValueState(\"\");\n setIsFiltering(false);\n setActiveId(null);\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, [isMulti, setValueState, setSearchValueState]);\n\n const registerItem = React.useCallback(() => () => {}, []);\n const updateItemVisibility = React.useCallback(() => {}, []);\n\n const contextValue: InternalComboboxContext = React.useMemo(\n () => ({\n value,\n selectItem,\n removeItem,\n clearSelection,\n searchValue,\n setSearchValue: setSearchValueState,\n isOpen,\n setIsOpen: setIsOpenState,\n activeId,\n setActiveId,\n inputRef,\n controlRef: refs.setReference,\n contentRef: refs.setFloating,\n contentElementRef,\n hasOptions,\n setHasOptions: setHasOptionsCallback,\n floatingStyles,\n listboxId,\n inputId,\n isMulti,\n isDisabled,\n isInvalid,\n isLoading,\n size,\n variant,\n filter,\n isFiltering,\n setIsFiltering,\n pendingHighlight,\n setPendingHighlight,\n openWithHighlight,\n ariaDescribedBy,\n isRequired,\n name,\n registerItem,\n updateItemVisibility,\n visibleItems: [],\n filteredCount: hasOptions ? 1 : 0,\n }),\n [\n value,\n selectItem,\n removeItem,\n clearSelection,\n searchValue,\n setSearchValueState,\n isOpen,\n setIsOpenState,\n activeId,\n refs.setReference,\n refs.setFloating,\n hasOptions,\n setHasOptionsCallback,\n floatingStyles,\n listboxId,\n inputId,\n isMulti,\n isDisabled,\n isInvalid,\n isLoading,\n size,\n variant,\n filter,\n isFiltering,\n pendingHighlight,\n openWithHighlight,\n ariaDescribedBy,\n isRequired,\n name,\n registerItem,\n updateItemVisibility,\n ]\n );\n\n const rootClasses = classNames(\n \"cl-combobox\",\n `cl-combobox--${size}`,\n `cl-combobox--${variant}`,\n className\n );\n\n const mergedRootRef = useMergeRefs(ref, refs.setReference);\n\n return (\n <ComboboxContext.Provider value={contextValue}>\n <div ref={mergedRootRef} className={rootClasses} {...rest}>\n {children ?? (\n <>\n <ComboboxControl>\n {isMulti && Array.isArray(value) && value.length > 0 && (\n <div className=\"cl-combobox__tags\">\n {value.map((val) => {\n const opt = options?.find((o) => o.value === val);\n return (\n <ComboboxTag key={val} value={val}>\n {opt?.label ?? val}\n </ComboboxTag>\n );\n })}\n </div>\n )}\n <ComboboxInput placeholder={placeholder} />\n <ComboboxClear />\n <ComboboxTrigger />\n </ComboboxControl>\n <ComboboxContent>\n <ComboboxEmpty>No results found.</ComboboxEmpty>\n {options?.map((opt) => (\n <ComboboxItem\n key={opt.value}\n value={opt.value}\n isDisabled={opt.disabled}\n >\n {opt.label ?? opt.value}\n </ComboboxItem>\n ))}\n </ComboboxContent>\n </>\n )}\n </div>\n </ComboboxContext.Provider>\n );\n }\n);\n\n/* =========================================================================\n 2. ComboboxControl\n ========================================================================= */\n\nexport const ComboboxControl = React.forwardRef<HTMLDivElement, ComboboxControlProps>(\n function ComboboxControl(props, ref) {\n const ctx = useComboboxContext();\n const { asChild = false, className, children, ...rest } = props;\n const combinedRef = useMergeRefs(ref, ctx.controlRef);\n\n const controlClasses = classNames(\"cl-combobox__control\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={combinedRef}\n data-disabled={ctx.isDisabled ? \"true\" : undefined}\n data-invalid={ctx.isInvalid ? \"true\" : undefined}\n className={controlClasses}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={combinedRef}\n data-disabled={ctx.isDisabled ? \"true\" : undefined}\n data-invalid={ctx.isInvalid ? \"true\" : undefined}\n className={controlClasses}\n {...rest}\n >\n {children}\n </div>\n );\n }\n);\n\n/* =========================================================================\n 3. ComboboxInput\n ========================================================================= */\n\nexport const ComboboxInput = React.forwardRef<HTMLInputElement, ComboboxInputProps>(\n function ComboboxInput(props, ref) {\n const ctx = React.useContext(ComboboxContext);\n if (!ctx) throw new Error(\"ComboboxInput must be used within Combobox\");\n\n const {\n asChild = false,\n className,\n onChange,\n onKeyDown,\n onFocus,\n onBlur,\n onClick,\n disabled: disabledProp,\n placeholder,\n value: inputValProp,\n ...rest\n } = props;\n\n const isDisabled = disabledProp ?? ctx.isDisabled;\n\n const getVisibleOptions = () => {\n const container = ctx.contentElementRef.current;\n if (!container) return [];\n return Array.from(\n container.querySelectorAll<HTMLElement>(\n '[role=\"option\"]:not([aria-disabled=\"true\"])'\n )\n );\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (isDisabled) return;\n const nextQuery = e.target.value;\n ctx.setIsFiltering(true);\n ctx.setSearchValue(nextQuery);\n if (!ctx.isOpen) {\n ctx.setIsOpen(true);\n }\n onChange?.(e);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (isDisabled) return;\n\n const options = getVisibleOptions();\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (!ctx.isOpen) {\n ctx.openWithHighlight(ctx.value && !ctx.isMulti ? \"selected\" : \"first\");\n break;\n }\n if (options.length > 0) {\n const currentIndex = options.findIndex((opt) => opt.id === ctx.activeId);\n const nextIndex =\n currentIndex === -1 || currentIndex === options.length - 1\n ? 0\n : currentIndex + 1;\n const target = options[nextIndex];\n if (target) {\n ctx.setActiveId(target.id);\n target.scrollIntoView?.({ block: \"nearest\" });\n }\n }\n break;\n }\n\n case \"ArrowUp\": {\n e.preventDefault();\n if (!ctx.isOpen) {\n ctx.openWithHighlight(ctx.value && !ctx.isMulti ? \"selected\" : \"last\");\n break;\n }\n if (options.length > 0) {\n const currentIndex = options.findIndex((opt) => opt.id === ctx.activeId);\n const prevIndex =\n currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\n const target = options[prevIndex];\n if (target) {\n ctx.setActiveId(target.id);\n target.scrollIntoView?.({ block: \"nearest\" });\n }\n }\n break;\n }\n\n case \"Home\": {\n if (ctx.isOpen && options.length > 0) {\n e.preventDefault();\n const target = options[0];\n if (target) {\n ctx.setActiveId(target.id);\n target.scrollIntoView?.({ block: \"nearest\" });\n }\n }\n break;\n }\n\n case \"End\": {\n if (ctx.isOpen && options.length > 0) {\n e.preventDefault();\n const target = options[options.length - 1];\n if (target) {\n ctx.setActiveId(target.id);\n target.scrollIntoView?.({ block: \"nearest\" });\n }\n }\n break;\n }\n\n case \"Enter\": {\n if (ctx.isOpen && ctx.activeId) {\n e.preventDefault();\n const activeEl = document.getElementById(ctx.activeId);\n if (activeEl && activeEl.getAttribute(\"aria-disabled\") !== \"true\") {\n const val = activeEl.getAttribute(\"data-value\") || \"\";\n const text =\n activeEl.getAttribute(\"data-label\") ||\n activeEl.textContent ||\n val;\n ctx.selectItem(val, text);\n }\n }\n break;\n }\n\n case \"Escape\": {\n if (ctx.isOpen) {\n e.preventDefault();\n e.stopPropagation();\n ctx.setIsOpen(false);\n ctx.setActiveId(null);\n }\n break;\n }\n\n case \"Tab\": {\n if (ctx.isOpen) {\n ctx.setIsOpen(false);\n ctx.setActiveId(null);\n }\n break;\n }\n\n case \"Backspace\": {\n if (\n ctx.isMulti &&\n !ctx.searchValue &&\n Array.isArray(ctx.value) &&\n ctx.value.length > 0\n ) {\n const lastVal = ctx.value[ctx.value.length - 1];\n ctx.removeItem(lastVal);\n }\n break;\n }\n }\n\n onKeyDown?.(e);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(e);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n if (isDisabled) return;\n if (!ctx.isOpen) {\n ctx.openWithHighlight(\"selected\");\n if (!ctx.isMulti && ctx.value) {\n ctx.inputRef.current?.select();\n }\n }\n onClick?.(e);\n };\n\n const combinedRef = (node: HTMLInputElement | null) => {\n ctx.inputRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const inputValue =\n inputValProp !== undefined ? inputValProp : ctx.searchValue;\n\n const inputClasses = classNames(\"cl-combobox__input\", className);\n\n if (asChild) {\n return (\n <Slot\n {...({\n ref: combinedRef,\n role: \"combobox\",\n \"aria-autocomplete\": \"list\",\n \"aria-expanded\": ctx.isOpen,\n \"aria-controls\": ctx.listboxId,\n \"aria-activedescendant\": ctx.activeId ?? undefined,\n \"aria-haspopup\": \"listbox\",\n \"aria-invalid\": ctx.isInvalid || undefined,\n \"aria-disabled\": isDisabled || undefined,\n \"aria-busy\": ctx.isLoading || undefined,\n \"aria-describedby\": ctx.ariaDescribedBy,\n \"aria-required\": ctx.isRequired || undefined,\n name: ctx.name,\n required: ctx.isRequired || undefined,\n id: ctx.inputId,\n autoComplete: \"off\",\n spellCheck: \"false\",\n value: inputValue,\n onChange: handleChange,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onClick: handleClick,\n placeholder,\n className: inputClasses,\n ...rest,\n } as any)}\n />\n );\n }\n\n return (\n <input\n ref={combinedRef}\n type=\"text\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={ctx.isOpen}\n aria-controls={ctx.listboxId}\n aria-activedescendant={ctx.activeId ?? undefined}\n aria-haspopup=\"listbox\"\n aria-invalid={ctx.isInvalid || undefined}\n aria-disabled={isDisabled || undefined}\n aria-busy={ctx.isLoading || undefined}\n aria-describedby={ctx.ariaDescribedBy}\n aria-required={ctx.isRequired || undefined}\n name={ctx.name}\n required={ctx.isRequired || undefined}\n disabled={isDisabled}\n id={ctx.inputId}\n autoComplete=\"off\"\n spellCheck=\"false\"\n value={inputValue}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onClick={handleClick}\n placeholder={placeholder}\n className={inputClasses}\n {...rest}\n />\n );\n }\n);\n\n/* =========================================================================\n 3. ComboboxTrigger\n ========================================================================= */\n\nexport const ComboboxTrigger = React.forwardRef<HTMLButtonElement, ComboboxTriggerProps>(\n function ComboboxTrigger(props, ref) {\n const ctx = useComboboxContext();\n const {\n asChild = false,\n className,\n onClick,\n children,\n disabled: disabledProp,\n ...rest\n } = props;\n\n const isDisabled = disabledProp ?? ctx.isDisabled;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isDisabled) return;\n if (ctx.isOpen) {\n ctx.setIsOpen(false);\n } else {\n ctx.openWithHighlight(\"selected\");\n }\n if (ctx.inputRef.current) {\n ctx.inputRef.current.focus();\n }\n onClick?.(e);\n };\n\n const triggerClasses = classNames(\"cl-combobox__trigger\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={ref}\n type=\"button\"\n tabIndex={-1}\n aria-label=\"Toggle options\"\n data-state={ctx.isOpen ? \"open\" : \"closed\"}\n aria-disabled={isDisabled || undefined}\n onClick={handleClick}\n className={triggerClasses}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n tabIndex={-1}\n aria-label=\"Toggle options\"\n data-state={ctx.isOpen ? \"open\" : \"closed\"}\n disabled={isDisabled}\n onClick={handleClick}\n className={triggerClasses}\n {...rest}\n >\n {children ?? (\n <svg\n className=\"cl-combobox__trigger-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )}\n </button>\n );\n }\n);\n\n/* =========================================================================\n 4. ComboboxPortal\n ========================================================================= */\n\nexport const ComboboxPortal: React.FC<ComboboxPortalProps> = ({\n children,\n container,\n}) => {\n return container !== undefined ? (\n <Portal container={container}>{children}</Portal>\n ) : (\n <Portal>{children}</Portal>\n );\n};\n\n/* =========================================================================\n 5. ComboboxContent\n ========================================================================= */\n\nexport const ComboboxContent = React.forwardRef<HTMLDivElement, ComboboxContentProps>(\n function ComboboxContent(props, ref) {\n const ctx = React.useContext(ComboboxContext);\n if (!ctx) throw new Error(\"ComboboxContent must be used within Combobox\");\n\n const { asChild = false, className, style, children, ...rest } = props;\n\n const combinedRef = (node: HTMLDivElement | null) => {\n ctx.contentRef(node);\n ctx.contentElementRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n // Keep track of visible option count and process pendingHighlight\n React.useLayoutEffect(() => {\n if (ctx.isOpen && ctx.contentElementRef.current) {\n const container = ctx.contentElementRef.current;\n const allOptions = Array.from(\n container.querySelectorAll<HTMLElement>('[role=\"option\"]')\n );\n const enabledOptions = allOptions.filter(\n (el) => el.getAttribute(\"aria-disabled\") !== \"true\"\n );\n\n ctx.setHasOptions(allOptions.length > 0);\n\n if (ctx.pendingHighlight) {\n let targetEl: HTMLElement | null = null;\n if (ctx.pendingHighlight === \"first\" && enabledOptions.length > 0) {\n targetEl = enabledOptions[0] ?? null;\n } else if (ctx.pendingHighlight === \"last\" && enabledOptions.length > 0) {\n targetEl = enabledOptions[enabledOptions.length - 1] ?? null;\n } else if (ctx.pendingHighlight === \"selected\") {\n const selectedEl = enabledOptions.find(\n (el) => el.getAttribute(\"aria-selected\") === \"true\"\n );\n targetEl = selectedEl ?? (enabledOptions.length > 0 ? enabledOptions[0] ?? null : null);\n }\n\n if (targetEl) {\n ctx.setActiveId(targetEl.id);\n targetEl.scrollIntoView?.({ block: \"nearest\" });\n }\n ctx.setPendingHighlight(null);\n }\n }\n });\n\n if (!ctx.isOpen) {\n return null;\n }\n\n const contentClasses = classNames(\"cl-combobox__content\", className);\n const mergedStyles: React.CSSProperties = {\n ...ctx.floatingStyles,\n ...style,\n };\n\n if (asChild) {\n return (\n <Slot\n ref={combinedRef}\n role=\"listbox\"\n id={ctx.listboxId}\n aria-labelledby={ctx.inputId}\n aria-multiselectable={ctx.isMulti ? true : undefined}\n aria-busy={ctx.isLoading ? true : undefined}\n tabIndex={-1}\n data-state=\"open\"\n style={mergedStyles}\n className={contentClasses}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={combinedRef}\n role=\"listbox\"\n id={ctx.listboxId}\n aria-labelledby={ctx.inputId}\n aria-multiselectable={ctx.isMulti ? true : undefined}\n aria-busy={ctx.isLoading ? true : undefined}\n tabIndex={-1}\n data-state=\"open\"\n style={mergedStyles}\n className={contentClasses}\n {...rest}\n >\n {children}\n </div>\n );\n }\n);\n\n/* =========================================================================\n 6. ComboboxItem\n ========================================================================= */\n\nexport const ComboboxItem = React.forwardRef<HTMLDivElement, ComboboxItemProps>(\n function ComboboxItem(props, ref) {\n const ctx = React.useContext(ComboboxContext);\n if (!ctx) throw new Error(\"ComboboxItem must be used within Combobox\");\n\n const {\n value: itemVal,\n label,\n isDisabled: itemDisabled = false,\n asChild = false,\n className,\n children,\n onClick,\n onMouseEnter,\n ...rest\n } = props;\n\n const itemId = `${ctx.listboxId}-opt-${encodeURIComponent(itemVal)}`;\n const itemRef = React.useRef<HTMLDivElement | null>(null);\n\n // Determine string text for search filtering\n const itemText = React.useMemo(() => {\n if (label) return label;\n if (typeof children === \"string\") return children;\n if (typeof children === \"number\") return String(children);\n return itemVal;\n }, [label, children, itemVal]);\n\n // Check match against current search query\n const isVisible = React.useMemo(() => {\n if (ctx.filter === false) return true;\n if (!ctx.isFiltering && !ctx.isMulti) return true;\n return ctx.filter(itemVal, itemText, ctx.searchValue);\n }, [ctx.filter, ctx.isFiltering, ctx.isMulti, itemVal, itemText, ctx.searchValue]);\n\n // Check selection state\n const isSelected = React.useMemo(() => {\n if (ctx.isMulti && Array.isArray(ctx.value)) {\n return ctx.value.includes(itemVal);\n }\n return ctx.value === itemVal;\n }, [ctx.isMulti, ctx.value, itemVal]);\n\n const isHighlighted = ctx.activeId === itemId;\n\n if (!isVisible) {\n return null;\n }\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (itemDisabled || ctx.isDisabled) return;\n ctx.selectItem(itemVal, itemText);\n onClick?.(e);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!itemDisabled && !ctx.isDisabled) {\n ctx.setActiveId(itemId);\n }\n onMouseEnter?.(e);\n };\n\n const combinedRef = (node: HTMLDivElement | null) => {\n itemRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n };\n\n const itemClasses = classNames(\"cl-combobox__item\", className);\n\n if (asChild) {\n return (\n <Slot\n ref={combinedRef}\n role=\"option\"\n id={itemId}\n data-value={itemVal}\n data-label={itemText}\n aria-selected={isSelected}\n aria-disabled={itemDisabled || undefined}\n data-highlighted={isHighlighted ? \"true\" : undefined}\n data-disabled={itemDisabled ? \"true\" : undefined}\n data-state={isSelected ? \"checked\" : \"unchecked\"}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={itemClasses}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={combinedRef}\n role=\"option\"\n id={itemId}\n data-value={itemVal}\n data-label={itemText}\n aria-selected={isSelected}\n aria-disabled={itemDisabled || undefined}\n data-highlighted={isHighlighted ? \"true\" : undefined}\n data-disabled={itemDisabled ? \"true\" : undefined}\n data-state={isSelected ? \"checked\" : \"unchecked\"}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={itemClasses}\n {...rest}\n >\n <span>{children}</span>\n {isSelected && (\n <span className=\"cl-combobox__item-indicator\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n width=\"14\"\n height=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </span>\n )}\n </div>\n );\n }\n);\n\n/* =========================================================================\n 7. ComboboxGroup & ComboboxGroupLabel\n ========================================================================= */\n\nexport const ComboboxGroupLabel = React.forwardRef<\n HTMLDivElement,\n ComboboxGroupLabelProps\n>(function ComboboxGroupLabel(props, ref) {\n const { className, children, ...rest } = props;\n return (\n <div\n ref={ref}\n className={classNames(\"cl-combobox__group-heading\", className)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport const ComboboxGroup = React.forwardRef<HTMLDivElement, ComboboxGroupProps>(\n function ComboboxGroup(props, ref) {\n const { heading, className, children, ...rest } = props;\n const headingId = React.useId();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-labelledby={heading ? headingId : undefined}\n className={classNames(\"cl-combobox__group\", className)}\n {...rest}\n >\n {heading && (\n <div id={headingId} className=\"cl-combobox__group-heading\">\n {heading}\n </div>\n )}\n {children}\n </div>\n );\n }\n);\n\n/* =========================================================================\n 8. ComboboxEmpty\n ========================================================================= */\n\nexport const ComboboxEmpty = React.forwardRef<HTMLDivElement, ComboboxEmptyProps>(\n function ComboboxEmpty(props, ref) {\n const ctx = React.useContext(ComboboxContext);\n if (!ctx) throw new Error(\"ComboboxEmpty must be used within Combobox\");\n const { className, children, ...rest } = props;\n\n // Show only when no items are visible and not in loading state\n if (ctx.hasOptions || ctx.isLoading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n role=\"presentation\"\n className={classNames(\"cl-combobox__empty\", className)}\n {...rest}\n >\n {children}\n </div>\n );\n }\n);\n\n/* =========================================================================\n 9. ComboboxTag\n ========================================================================= */\n\nexport const ComboboxTag = React.forwardRef<HTMLSpanElement, ComboboxTagProps>(\n function ComboboxTag(props, ref) {\n const ctx = useComboboxContext();\n const {\n value: tagVal,\n onRemove,\n isDisabled: disabledProp,\n className,\n children,\n ...rest} = props;\n\n const isDisabled = disabledProp ?? ctx.isDisabled;\n\n const handleRemove = (\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>\n ) => {\n e.stopPropagation();\n if (isDisabled) return;\n if (onRemove) {\n onRemove();\n } else {\n ctx.removeItem(tagVal);\n }\n ctx.inputRef.current?.focus();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleRemove(e);\n }\n };\n\n return (\n <span\n ref={ref}\n className={classNames(\"cl-combobox__tag\", className)}\n {...rest}\n >\n <span>{children}</span>\n <button\n type=\"button\"\n tabIndex={isDisabled ? -1 : 0}\n aria-label={`Remove ${typeof children === \"string\" ? children : tagVal}`}\n className=\"cl-combobox__tag-remove\"\n disabled={isDisabled}\n onClick={handleRemove}\n onKeyDown={handleKeyDown}\n onMouseDown={(e) => e.preventDefault()}\n >\n ×\n </button>\n </span>\n );\n }\n);\n\n/* =========================================================================\n 10. ComboboxClear\n ========================================================================= */\n\nexport const ComboboxClear = React.forwardRef<HTMLButtonElement, ComboboxClearProps>(\n function ComboboxClear(props, ref) {\n const ctx = useComboboxContext();\n const {\n className,\n onClick,\n onKeyDown,\n children,\n disabled: disabledProp,\n tabIndex = 0,\n ...rest\n } = props;\n\n const isDisabled = disabledProp ?? ctx.isDisabled;\n\n const hasValue =\n ctx.isMulti\n ? Array.isArray(ctx.value) && ctx.value.length > 0\n : Boolean(ctx.value || ctx.searchValue);\n\n if (!hasValue) {\n return null;\n }\n\n const handleClick = (\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>\n ) => {\n e.stopPropagation();\n if (isDisabled) return;\n ctx.clearSelection();\n ctx.inputRef.current?.focus();\n onClick?.(e as React.MouseEvent<HTMLButtonElement>);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClick(e);\n }\n onKeyDown?.(e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n tabIndex={isDisabled ? -1 : tabIndex}\n aria-label=\"Clear selection\"\n className={classNames(\"cl-combobox__clear\", className)}\n disabled={isDisabled}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseDown={(e) => e.preventDefault()}\n {...rest}\n >\n {children ?? (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"14\"\n height=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n )}\n </button>\n );\n }\n);\n\n/* =========================================================================\n Compound Object & Aliases\n ========================================================================= */\n\nexport interface ComboboxComponent\n extends React.ForwardRefExoticComponent<\n ComboboxProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof ComboboxRoot;\n Control: typeof ComboboxControl;\n Input: typeof ComboboxInput;\n Trigger: typeof ComboboxTrigger;\n Portal: typeof ComboboxPortal;\n Content: typeof ComboboxContent;\n Item: typeof ComboboxItem;\n Group: typeof ComboboxGroup;\n GroupLabel: typeof ComboboxGroupLabel;\n Empty: typeof ComboboxEmpty;\n Tag: typeof ComboboxTag;\n Clear: typeof ComboboxClear;\n}\n\nexport const Combobox = ComboboxRoot as ComboboxComponent;\nCombobox.Root = ComboboxRoot;\nCombobox.Control = ComboboxControl;\nCombobox.Input = ComboboxInput;\nCombobox.Trigger = ComboboxTrigger;\nCombobox.Portal = ComboboxPortal;\nCombobox.Content = ComboboxContent;\nCombobox.Item = ComboboxItem;\nCombobox.Group = ComboboxGroup;\nCombobox.GroupLabel = ComboboxGroupLabel;\nCombobox.Empty = ComboboxEmpty;\nCombobox.Tag = ComboboxTag;\nCombobox.Clear = ComboboxClear;\n\nexport const Autocomplete = Combobox;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport type {\n DialogBodyProps,\n DialogCloseProps,\n DialogContentProps,\n DialogDescriptionProps,\n DialogFooterProps,\n DialogHeaderProps,\n DialogOverlayProps,\n DialogPortalProps,\n DialogRootProps,\n DialogSize,\n DialogTitleProps,\n DialogTriggerProps,\n} from \"./Dialog.types\";\n\ninterface DialogContextValue {\n isOpen: boolean;\n onOpen: () => void;\n onClose: () => void;\n closeOnEsc: boolean;\n closeOnOverlayClick: boolean;\n initialFocusRef?: React.RefObject<HTMLElement | null> | undefined;\n finalFocusRef?: React.RefObject<HTMLElement | null> | undefined;\n size: DialogSize;\n isCentered: boolean;\n titleId: string;\n setTitleId: (id: string) => void;\n descriptionId: string;\n setDescriptionId: (id: string) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst DialogContext = React.createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext(componentName: string): DialogContextValue {\n const context = React.useContext(DialogContext);\n if (!context) {\n throw new Error(\n `<Dialog.${componentName}> must be used within a <Dialog.Root> or <Dialog> component.`\n );\n }\n return context;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * DialogRoot component - manages controlled/uncontrolled visibility and dialog context.\n */\nexport const DialogRoot: React.FC<DialogRootProps> = ({\n isOpen: isOpenProp,\n defaultOpen = false,\n onClose: onCloseProp,\n closeOnEsc = true,\n closeOnOverlayClick = true,\n initialFocusRef,\n finalFocusRef,\n size = \"md\",\n isCentered = true,\n children,\n}) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n });\n\n const [titleId, setTitleId] = React.useState<string>(\"\");\n const [descriptionId, setDescriptionId] = React.useState<string>(\"\");\n const triggerRef = React.useRef<HTMLElement | null>(null);\n\n const handleOpen = React.useCallback(() => {\n setIsOpen(true);\n }, [setIsOpen]);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n onCloseProp?.();\n }, [setIsOpen, onCloseProp]);\n\n const contextValue = React.useMemo<DialogContextValue>(\n () => ({\n isOpen: !!isOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n closeOnEsc,\n closeOnOverlayClick,\n initialFocusRef,\n finalFocusRef,\n size,\n isCentered,\n titleId,\n setTitleId,\n descriptionId,\n setDescriptionId,\n triggerRef,\n }),\n [\n isOpen,\n handleOpen,\n handleClose,\n closeOnEsc,\n closeOnOverlayClick,\n initialFocusRef,\n finalFocusRef,\n size,\n isCentered,\n titleId,\n descriptionId,\n ]\n );\n\n return (\n <DialogContext.Provider value={contextValue}>\n {children}\n </DialogContext.Provider>\n );\n};\nDialogRoot.displayName = \"Dialog.Root\";\n\n/**\n * DialogTrigger component - wraps or renders a button that opens the dialog.\n */\nexport const DialogTrigger = React.forwardRef<\n HTMLElement,\n DialogTriggerProps\n>(({ asChild = false, onClick, children, ...props }, forwardedRef) => {\n const { onOpen, triggerRef } = useDialogContext(\"Trigger\");\n const mergedRef = useMergeRefs(triggerRef, forwardedRef);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onOpen();\n }\n };\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={mergedRef as React.Ref<HTMLButtonElement>}\n type=\"button\"\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n});\nDialogTrigger.displayName = \"Dialog.Trigger\";\n\n/**\n * DialogPortal component - mounts dialog children into document.body or container.\n */\nexport const DialogPortal: React.FC<DialogPortalProps> = ({\n container,\n children,\n}) => {\n const { isOpen } = useDialogContext(\"Portal\");\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal {...(container !== undefined ? { container } : {})}>\n {children}\n </Portal>\n );\n};\nDialogPortal.displayName = \"Dialog.Portal\";\n\n/**\n * DialogOverlay component - background backdrop with static CSS centering.\n */\nexport const DialogOverlay = React.forwardRef<\n HTMLDivElement,\n DialogOverlayProps\n>(({ asChild = false, className, onClick, children, ...props }, forwardedRef) => {\n const { onClose, closeOnOverlayClick, isCentered } =\n useDialogContext(\"Overlay\");\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented && closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n const classNames = [\n \"cl-dialog__overlay\",\n !isCentered && \"cl-dialog__overlay--top\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={forwardedRef}\n className={classNames}\n onClick={handleClick}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={forwardedRef}\n className={classNames}\n onClick={handleClick}\n {...props}\n >\n {children}\n </div>\n );\n});\nDialogOverlay.displayName = \"Dialog.Overlay\";\n\n/**\n * DialogContent component - main dialog window with focus trap and scroll locking.\n */\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(({ asChild = false, className, children, onKeyDown, ...props }, forwardedRef) => {\n const {\n isOpen,\n onClose,\n closeOnEsc,\n size,\n isCentered,\n titleId,\n descriptionId,\n initialFocusRef,\n finalFocusRef,\n triggerRef,\n } = useDialogContext(\"Content\");\n\n const internalRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(internalRef, forwardedRef);\n const prevFocusedRef = React.useRef<HTMLElement | null>(null);\n\n // Focus management and body scroll locking\n React.useEffect(() => {\n if (!isOpen) return;\n\n // Store previous focused element before opening\n if (typeof document !== \"undefined\") {\n prevFocusedRef.current = document.activeElement as HTMLElement | null;\n }\n\n // Scroll lock on body\n const originalOverflow =\n typeof document !== \"undefined\" ? document.body.style.overflow : \"\";\n if (typeof document !== \"undefined\") {\n document.body.style.overflow = \"hidden\";\n }\n\n // Initial focus\n const frameId = requestAnimationFrame(() => {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else if (internalRef.current) {\n const focusables = internalRef.current.querySelectorAll<HTMLElement>(\n FOCUSABLE_SELECTOR\n );\n if (focusables.length > 0) {\n focusables[0]?.focus();\n } else {\n internalRef.current.focus();\n }\n }\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n // Restore scroll lock\n if (typeof document !== \"undefined\") {\n document.body.style.overflow = originalOverflow;\n }\n // Restore focus to trigger or finalFocusRef\n const elementToFocus =\n finalFocusRef?.current ?? triggerRef.current ?? prevFocusedRef.current;\n if (elementToFocus && typeof elementToFocus.focus === \"function\") {\n elementToFocus.focus();\n }\n };\n }, [isOpen, initialFocusRef, finalFocusRef, triggerRef]);\n\n // Keyboard trap and Escape listener\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"Escape\" && closeOnEsc) {\n e.stopPropagation();\n onClose();\n return;\n }\n\n if (e.key === \"Tab\" && internalRef.current) {\n const focusables = Array.from(\n internalRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n ).filter((el) => !el.hasAttribute(\"disabled\") && el.getAttribute(\"aria-hidden\") !== \"true\");\n\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const firstFocusable = focusables[0];\n const lastFocusable = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (\n document.activeElement === firstFocusable ||\n document.activeElement === internalRef.current\n ) {\n e.preventDefault();\n lastFocusable?.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n e.preventDefault();\n firstFocusable?.focus();\n }\n }\n }\n };\n\n const classNames = [\n \"cl-dialog__content\",\n `cl-dialog__content--${size}`,\n !isCentered && \"cl-dialog__content--top\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const ariaAttributes = {\n role: \"dialog\",\n \"aria-modal\": true,\n ...(titleId ? { \"aria-labelledby\": titleId } : {}),\n ...(descriptionId ? { \"aria-describedby\": descriptionId } : {}),\n tabIndex: -1,\n };\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n className={classNames}\n onKeyDown={handleKeyDown}\n {...ariaAttributes}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={mergedRef}\n className={classNames}\n onKeyDown={handleKeyDown}\n {...ariaAttributes}\n {...props}\n >\n {children}\n </div>\n );\n});\nDialogContent.displayName = \"Dialog.Content\";\n\n/**\n * DialogHeader component - header slot containing title, description, or close button.\n */\nexport const DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\"cl-dialog__header\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nDialogHeader.displayName = \"Dialog.Header\";\n\n/**\n * DialogTitle component - accessible title that binds aria-labelledby.\n */\nexport const DialogTitle = React.forwardRef<\n HTMLHeadingElement,\n DialogTitleProps\n>(({ asChild = false, id: idProp, className, children, ...props }, ref) => {\n const { setTitleId } = useDialogContext(\"Title\");\n const autoId = React.useId();\n const id = idProp ?? autoId;\n\n React.useEffect(() => {\n setTitleId(id);\n return () => setTitleId(\"\");\n }, [id, setTitleId]);\n\n const classNames = [\"cl-dialog__title\", className].filter(Boolean).join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={ref} id={id} className={classNames} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <h2 ref={ref} id={id} className={classNames} {...props}>\n {children}\n </h2>\n );\n});\nDialogTitle.displayName = \"Dialog.Title\";\n\n/**\n * DialogDescription component - accessible description that binds aria-describedby.\n */\nexport const DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(({ asChild = false, id: idProp, className, children, ...props }, ref) => {\n const { setDescriptionId } = useDialogContext(\"Description\");\n const autoId = React.useId();\n const id = idProp ?? autoId;\n\n React.useEffect(() => {\n setDescriptionId(id);\n return () => setDescriptionId(\"\");\n }, [id, setDescriptionId]);\n\n const classNames = [\"cl-dialog__desc\", className].filter(Boolean).join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={ref} id={id} className={classNames} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <p ref={ref} id={id} className={classNames} {...props}>\n {children}\n </p>\n );\n});\nDialogDescription.displayName = \"Dialog.Description\";\n\n/**\n * DialogBody component - scrollable content body.\n */\nexport const DialogBody = React.forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\"cl-dialog__body\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nDialogBody.displayName = \"Dialog.Body\";\n\n/**\n * DialogFooter component - footer slot containing actions.\n */\nexport const DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\"cl-dialog__footer\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\nDialogFooter.displayName = \"Dialog.Footer\";\n\n/**\n * DialogClose component - button that dismisses the dialog when clicked.\n */\nexport const DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(\n ({ asChild = false, className, onClick, children, ...props }, ref) => {\n const { onClose } = useDialogContext(\"Close\");\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onClose();\n }\n };\n\n const classNames = [\"cl-dialog__close-button\", className]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={ref} className={classNames} onClick={handleClick} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames}\n onClick={handleClick}\n aria-label={props[\"aria-label\"] ?? \"Close dialog\"}\n {...props}\n >\n {children ?? \"×\"}\n </button>\n );\n }\n);\nDialogClose.displayName = \"Dialog.Close\";\n\n/**\n * Compound Dialog export\n */\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Portal: DialogPortal,\n Overlay: DialogOverlay,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\n/**\n * Exact compatibility alias for Modal\n */\nexport const Modal = Dialog;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { styled } from \"../../system/styled\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type { BadgeProps } from \"./Badge.types\";\n\nconst StyledBadgeRoot = styled(\"span\", {\n name: \"ChellaaBadge\",\n slot: \"Root\",\n shouldForwardProp: (prop) =>\n prop !== \"variant\" &&\n prop !== \"size\" &&\n prop !== \"colorScheme\" &&\n prop !== \"isPill\" &&\n prop !== \"hasDot\" &&\n prop !== \"asChild\",\n})({});\n\n/**\n * Badge component - A compact visual indicator communicating status, counts, or categorization.\n */\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = \"subtle\",\n size = \"md\",\n colorScheme = \"neutral\",\n isPill = false,\n hasDot = false,\n asChild = false,\n className,\n style,\n sx,\n children,\n ...props\n },\n ref\n ) => {\n const badgeClassName = classNames(\n \"cl-badge\",\n `cl-badge--${variant}`,\n `cl-badge--${size}`,\n `cl-badge--${colorScheme}`,\n isPill && \"cl-badge--pill\",\n className\n );\n\n if (asChild) {\n return (\n <StyledBadgeRoot\n as={Slot}\n ref={ref}\n className={badgeClassName}\n style={style}\n sx={sx}\n {...props}\n >\n {children}\n </StyledBadgeRoot>\n );\n }\n\n return (\n <StyledBadgeRoot\n ref={ref}\n className={badgeClassName}\n style={style}\n sx={sx}\n {...props}\n >\n {hasDot && <span className=\"cl-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </StyledBadgeRoot>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\nimport type {\n TableCaptionProps,\n TableCellProps,\n TableContainerProps,\n TableContextValue,\n TableHeaderCellProps,\n TableRootProps,\n TableRowProps,\n TableTbodyProps,\n TableTfootProps,\n TableTheadProps,\n} from \"./Table.types\";\n\nconst TableContext = React.createContext<TableContextValue>({\n size: \"md\",\n variant: \"simple\",\n isHoverable: false,\n});\n\n/**\n * TableRoot component - Container for structured row and column data.\n */\nexport const TableRoot = React.forwardRef<HTMLTableElement, TableRootProps>(\n (\n {\n variant = \"simple\",\n size = \"md\",\n isHoverable = false,\n isStickyHeader = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const classNames = [\n \"cl-table\",\n `cl-table--${variant}`,\n `cl-table--${size}`,\n isHoverable && \"cl-table--hoverable\",\n isStickyHeader && \"cl-table--sticky-header\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const contextValue = React.useMemo<TableContextValue>(\n () => ({\n size,\n variant,\n isHoverable,\n }),\n [size, variant, isHoverable]\n );\n\n return (\n <TableContext.Provider value={contextValue}>\n <table ref={ref} className={classNames} {...props}>\n {children}\n </table>\n </TableContext.Provider>\n );\n }\n);\nTableRoot.displayName = \"Table.Root\";\n\n/**\n * TableContainer component - Responsive touch scroll container.\n */\nexport const TableContainer = React.forwardRef<\n HTMLDivElement,\n TableContainerProps\n>(({ bordered = false, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\n \"cl-table__container\",\n bordered && \"cl-table__container--bordered\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n});\nTableContainer.displayName = \"Table.Container\";\n\n/**\n * TableCaption component - Programmatic description of table data.\n */\nexport const TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n TableCaptionProps\n>(({ placement = \"bottom\", className, children, ...props }, ref) => {\n const classNames = [\n \"cl-table__caption\",\n placement === \"top\" && \"cl-table__caption--top\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <caption ref={ref} className={classNames} {...props}>\n {children}\n </caption>\n );\n});\nTableCaption.displayName = \"Table.Caption\";\n\n/**\n * TableThead component - Semantic table header section.\n */\nexport const TableThead = React.forwardRef<\n HTMLTableSectionElement,\n TableTheadProps\n>(({ className, children, ...props }, ref) => {\n return (\n <thead\n ref={ref}\n className={[\"cl-table__thead\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </thead>\n );\n});\nTableThead.displayName = \"Table.Thead\";\n\n/**\n * TableTbody component - Semantic table body section.\n */\nexport const TableTbody = React.forwardRef<\n HTMLTableSectionElement,\n TableTbodyProps\n>(({ className, children, ...props }, ref) => {\n return (\n <tbody\n ref={ref}\n className={[\"cl-table__tbody\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </tbody>\n );\n});\nTableTbody.displayName = \"Table.Tbody\";\n\n/**\n * TableTfoot component - Semantic table footer section.\n */\nexport const TableTfoot = React.forwardRef<\n HTMLTableSectionElement,\n TableTfootProps\n>(({ className, children, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n className={[\"cl-table__tfoot\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </tfoot>\n );\n});\nTableTfoot.displayName = \"Table.Tfoot\";\n\n/**\n * TableTr component - Semantic table row element.\n */\nexport const TableTr = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ isHoverable: isHoverableProp, isSelected = false, className, children, ...props }, ref) => {\n const tableContext = React.useContext(TableContext);\n const hoverable = isHoverableProp ?? tableContext.isHoverable;\n\n const classNames = [\n \"cl-table__tr\",\n hoverable && \"cl-table__tr--hoverable\",\n isSelected && \"cl-table__tr--selected\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <tr ref={ref} className={classNames} {...props}>\n {children}\n </tr>\n );\n }\n);\nTableTr.displayName = \"Table.Tr\";\n\n/**\n * TableTh component - Semantic table header cell with scope=\"col\" default.\n */\nexport const TableTh = React.forwardRef<\n HTMLTableCellElement,\n TableHeaderCellProps\n>(\n (\n {\n isNumeric = false,\n align,\n isSortable = false,\n sortDirection,\n scope = \"col\",\n className,\n children,\n tabIndex,\n onClick,\n onKeyDown,\n ...props\n },\n ref\n ) => {\n const computedAriaSort = isSortable\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : sortDirection === \"desc\"\n ? \"descending\"\n : \"none\"\n : props[\"aria-sort\"];\n\n const classNames = [\n \"cl-table__th\",\n isNumeric && \"cl-table__th--numeric\",\n align && `cl-table__th--align-${align}`,\n isSortable && \"cl-table__th--sortable\",\n sortDirection &&\n sortDirection !== \"none\" &&\n `cl-table__th--sorted-${sortDirection}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTableCellElement>) => {\n if (isSortable && (e.key === \"Enter\" || e.key === \" \")) {\n e.preventDefault();\n onClick?.(e as unknown as React.MouseEvent<HTMLTableCellElement>);\n }\n onKeyDown?.(e);\n };\n\n return (\n <th\n ref={ref}\n scope={scope}\n tabIndex={tabIndex ?? (isSortable ? 0 : undefined)}\n aria-sort={computedAriaSort}\n className={classNames}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </th>\n );\n }\n);\nTableTh.displayName = \"Table.Th\";\n\n/**\n * TableTd component - Semantic table data cell with isNumeric and align support.\n */\nexport const TableTd = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ isNumeric = false, align, className, children, ...props }, ref) => {\n const classNames = [\n \"cl-table__td\",\n isNumeric && \"cl-table__td--numeric\",\n align && `cl-table__td--align-${align}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <td ref={ref} className={classNames} {...props}>\n {children}\n </td>\n );\n }\n);\nTableTd.displayName = \"Table.Td\";\n\n/**\n * Compound Table component export\n */\nexport const Table = Object.assign(TableRoot, {\n Root: TableRoot,\n Container: TableContainer,\n Caption: TableCaption,\n Thead: TableThead,\n Tbody: TableTbody,\n Tfoot: TableTfoot,\n Tr: TableTr,\n Th: TableTh,\n Td: TableTd,\n});\n"]}
1
+ {"version":3,"sources":["../src/theme/palette.ts","../src/theme/typography.ts","../src/theme/spacing.ts","../src/theme/breakpoints.ts","../src/theme/shadows.ts","../src/theme/transitions.ts","../src/theme/zIndex.ts","../src/theme/createTheme.ts","../src/theme/ThemeProvider.tsx","../src/theme/useTheme.ts","../src/theme/ThemeScript.tsx","../src/system/shouldForwardProp.ts","../src/system/sx.ts","../src/system/componentOverrides.ts","../src/system/styled.ts","../src/utils/classNames.ts","../src/utils/composeEventHandlers.ts","../src/utils/getElementRef.ts","../src/hooks/useMergeRefs.ts","../src/primitives/Slot.tsx","../src/components/ButtonGroup/ButtonGroupContext.ts","../src/ripple/TouchRipple.tsx","../src/ripple/useRipple.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Box/Box.tsx","../src/components/Stack/Stack.tsx","../src/components/Flex/Flex.tsx","../src/components/Container/Container.tsx","../src/components/Grid/Grid.tsx","../src/components/Divider/Divider.tsx","../src/components/Typography/Typography.tsx","../src/components/Typography/Heading.tsx","../src/components/Typography/Text.tsx","../src/components/Typography/Paragraph.tsx","../src/components/Typography/Code.tsx","../src/components/Kbd/Kbd.tsx","../src/components/FormField/FormFieldContext.tsx","../src/components/Input/Input.tsx","../src/components/Input/TextField.tsx","../src/components/Input/InputAdornment.tsx","../src/components/Textarea/Textarea.tsx","../src/components/FormField/FormField.tsx","../src/components/FormField/FormLabel.tsx","../src/components/FormField/FormHelperText.tsx","../src/components/FormField/FormErrorMessage.tsx","../src/components/FormField/useFormValidation.ts","../src/components/Checkbox/CheckboxContext.tsx","../src/components/Checkbox/Checkbox.tsx","../src/hooks/useControllableState.ts","../src/components/Checkbox/CheckboxGroup.tsx","../src/components/Radio/RadioContext.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/Switch/Switch.tsx","../src/components/Paper/Paper.tsx","../src/components/Card/CardContext.ts","../src/components/Card/Card.tsx","../src/primitives/Portal.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Popover/Popover.tsx","../src/components/Alert/Alert.tsx","../src/components/Snackbar/ToastProvider.tsx","../src/components/Snackbar/Snackbar.tsx","../src/components/Snackbar/useToast.ts","../src/components/Avatar/AvatarGroup.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Badge/Badge.tsx","../src/components/Table/Table.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Progress/Progress.tsx","../src/utils/date.ts","../src/components/Calendar/Calendar.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/ContextMenu/ContextMenu.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Link/Link.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/DataGrid/DataGrid.tsx","../src/components/FileUpload/FileUpload.tsx","../src/components/Slider/Slider.tsx","../src/components/Slider/RangeSlider.tsx","../src/components/TreeView/TreeView.tsx","../src/components/Stepper/Stepper.tsx","../src/components/Carousel/Carousel.tsx","../src/components/Carousel/CarouselSlide.tsx"],"names":["React","EmotionThemeProvider","React2","useEmotionTheme","defaultTheme","jsx","isObject","resolved","React3","React4","React5","Slot","React6","React7","TouchRipple","pulsate","React8","React9","Button","React10","ButtonGroup","React11","Box","React12","Stack","React13","Flex","React14","Container","React15","Grid","React16","Divider","React17","Typography","React18","Heading","React19","Text","React20","Paragraph","React21","Code","React22","Kbd","React23","React24","InputBase","Input","jsxs","React25","TextField","React26","InputAdornment","React27","Textarea","React28","FormField","React29","FormLabel","React30","FormHelperText","React31","FormErrorMessage","React32","React33","React34","Checkbox","Fragment","React35","React36","CheckboxGroup","React37","React38","Radio","React39","RadioGroup","React40","Switch","React41","Paper","React42","React43","CardRoot","CardHeader","CardMedia","CardBody","CardFooter","CardActions","CardTitle","CardDescription","React44","React45","Tooltip","React46","useFloating","autoUpdate","offset","flip","shift","arrow","useDismiss","useRole","useInteractions","PopoverTrigger","PopoverContent","PopoverArrow","PopoverClose","PopoverHeader","PopoverTitle","PopoverBody","PopoverFooter","React47","InfoIcon","SuccessIcon","WarningIcon","DangerIcon","AlertRoot","AlertIcon","AlertBody","AlertTitle","AlertDescription","AlertAction","AlertCloseButton","React48","ToastItem","React49","Snackbar","React50","React51","AvatarGroup","React52","AvatarImage","AvatarFallback","AvatarBadge","Avatar","React53","AccordionRoot","AccordionItem","AccordionHeader","AccordionIcon","AccordionTrigger","AccordionContent","AccordionActions","AccordionExpandAll","AccordionCollapseAll","React54","TabsRoot","TabsList","TabsTrigger","TabsContent","TabsIndicator","React55","SelectRoot","size","floatingSize","SelectTrigger","SelectValue","SelectIcon","SelectContent","scrollItemIntoView","SelectItem","SelectItemText","SelectItemIndicator","SelectGroup","SelectLabel","SelectSeparator","React56","rightBoundary","leftBoundary","PaginationRoot","PaginationList","PaginationItem","PaginationPrev","PaginationNext","PaginationFirst","PaginationLast","PaginationEllipsis","PaginationSizeSelect","PaginationJumper","ComboboxRoot","ComboboxControl","ComboboxInput","ComboboxActions","ComboboxTrigger","ComboboxContent","ComboboxItem","ComboboxGroupLabel","ComboboxGroup","ComboboxEmpty","ComboboxTag","ComboboxClear","React58","classNames","React59","React60","React61","React62","React63","React64","React65","React66","React67","React68","FOCUSABLE_SELECTOR","React69","Link","React70","BreadcrumbList","BreadcrumbItem","BreadcrumbLink","BreadcrumbPage","BreadcrumbSeparator","BreadcrumbEllipsis","Breadcrumbs","React71","hh","React72","isDisabled","React73","MultiSelect","React74","DataGrid","React75","FileUpload","React76","Slider","clamp","getPrecision","roundToStep","getPercentage","getValueFromPointer","React77","RangeSlider","React78","TreeView","React79","Stepper","React80","Carousel","React81","CarouselSlide"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Palette, ColorMode } from \"./types\";\r\n\r\nexport const lightPalette: Palette = {\r\n mode: \"light\",\r\n primary: {\r\n light: \"#818cf8\", // indigo-400\r\n main: \"#6366f1\", // indigo-500\r\n dark: \"#4f46e5\", // indigo-600\r\n contrastText: \"#ffffff\",\r\n },\r\n secondary: {\r\n light: \"#a78bfa\", // violet-400\r\n main: \"#8b5cf6\", // violet-500\r\n dark: \"#7c3aed\", // violet-600\r\n contrastText: \"#ffffff\",\r\n },\r\n error: {\r\n light: \"#f87171\", // red-400\r\n main: \"#ef4444\", // red-500\r\n dark: \"#dc2626\", // red-600\r\n contrastText: \"#ffffff\",\r\n },\r\n warning: {\r\n light: \"#fbbf24\", // amber-400\r\n main: \"#f59e0b\", // amber-500\r\n dark: \"#d97706\", // amber-600\r\n contrastText: \"#18181b\",\r\n },\r\n info: {\r\n light: \"#38bdf8\", // sky-400\r\n main: \"#0ea5e9\", // sky-500\r\n dark: \"#0284c7\", // sky-600\r\n contrastText: \"#ffffff\",\r\n },\r\n success: {\r\n light: \"#34d399\", // emerald-400\r\n main: \"#10b981\", // emerald-500\r\n dark: \"#059669\", // emerald-600\r\n contrastText: \"#ffffff\",\r\n },\r\n text: {\r\n primary: \"rgba(0, 0, 0, 0.87)\",\r\n secondary: \"rgba(0, 0, 0, 0.6)\",\r\n disabled: \"rgba(0, 0, 0, 0.38)\",\r\n },\r\n background: {\r\n default: \"#f8fafc\",\r\n paper: \"#ffffff\",\r\n surface: \"#ffffff\",\r\n },\r\n divider: \"rgba(0, 0, 0, 0.12)\",\r\n action: {\r\n active: \"rgba(0, 0, 0, 0.54)\",\r\n hover: \"rgba(0, 0, 0, 0.04)\",\r\n hoverOpacity: 0.04,\r\n selected: \"rgba(0, 0, 0, 0.08)\",\r\n selectedOpacity: 0.08,\r\n disabled: \"rgba(0, 0, 0, 0.26)\",\r\n disabledBackground: \"rgba(0, 0, 0, 0.12)\",\r\n focus: \"rgba(0, 0, 0, 0.12)\",\r\n focusOpacity: 0.12,\r\n },\r\n};\r\n\r\nexport const darkPalette: Palette = {\r\n mode: \"dark\",\r\n primary: {\r\n light: \"#a5b4fc\", // indigo-300\r\n main: \"#818cf8\", // indigo-400\r\n dark: \"#6366f1\", // indigo-500\r\n contrastText: \"#09090b\",\r\n },\r\n secondary: {\r\n light: \"#c4b5fd\", // violet-300\r\n main: \"#a78bfa\", // violet-400\r\n dark: \"#8b5cf6\", // violet-500\r\n contrastText: \"#09090b\",\r\n },\r\n error: {\r\n light: \"#fca5a5\", // red-300\r\n main: \"#f87171\", // red-400\r\n dark: \"#ef4444\", // red-500\r\n contrastText: \"#09090b\",\r\n },\r\n warning: {\r\n light: \"#fde68a\", // amber-200\r\n main: \"#fbbf24\", // amber-400\r\n dark: \"#f59e0b\", // amber-500\r\n contrastText: \"#09090b\",\r\n },\r\n info: {\r\n light: \"#7dd3fc\", // sky-300\r\n main: \"#38bdf8\", // sky-400\r\n dark: \"#0ea5e9\", // sky-500\r\n contrastText: \"#09090b\",\r\n },\r\n success: {\r\n light: \"#6ee7b7\", // emerald-300\r\n main: \"#34d399\", // emerald-400\r\n dark: \"#10b981\", // emerald-500\r\n contrastText: \"#09090b\",\r\n },\r\n text: {\r\n primary: \"rgba(255, 255, 255, 0.95)\",\r\n secondary: \"rgba(255, 255, 255, 0.7)\",\r\n disabled: \"rgba(255, 255, 255, 0.38)\",\r\n },\r\n background: {\r\n default: \"#09090b\",\r\n paper: \"#18181b\",\r\n surface: \"#18181b\",\r\n },\r\n divider: \"rgba(255, 255, 255, 0.12)\",\r\n action: {\r\n active: \"rgba(255, 255, 255, 0.7)\",\r\n hover: \"rgba(255, 255, 255, 0.08)\",\r\n hoverOpacity: 0.08,\r\n selected: \"rgba(255, 255, 255, 0.16)\",\r\n selectedOpacity: 0.16,\r\n disabled: \"rgba(255, 255, 255, 0.3)\",\r\n disabledBackground: \"rgba(255, 255, 255, 0.12)\",\r\n focus: \"rgba(255, 255, 255, 0.12)\",\r\n focusOpacity: 0.12,\r\n },\r\n};\r\n\r\nexport function createPalette(mode: ColorMode = \"light\"): Palette {\r\n return mode === \"dark\" ? darkPalette : lightPalette;\r\n}\r\n","import { TypographyTheme } from \"./types\";\r\n\r\nexport const defaultFontFamily =\r\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\"';\r\n\r\nexport const defaultTypography: TypographyTheme = {\r\n fontFamily: defaultFontFamily,\r\n fontSize: 14,\r\n fontWeightLight: 300,\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 500,\r\n fontWeightBold: 700,\r\n h1: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 300,\r\n fontSize: \"6rem\",\r\n lineHeight: 1.167,\r\n letterSpacing: \"-0.01562em\",\r\n },\r\n h2: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 300,\r\n fontSize: \"3.75rem\",\r\n lineHeight: 1.2,\r\n letterSpacing: \"-0.00833em\",\r\n },\r\n h3: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"3rem\",\r\n lineHeight: 1.167,\r\n letterSpacing: \"0em\",\r\n },\r\n h4: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"2.125rem\",\r\n lineHeight: 1.235,\r\n letterSpacing: \"0.00735em\",\r\n },\r\n h5: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"1.5rem\",\r\n lineHeight: 1.334,\r\n letterSpacing: \"0em\",\r\n },\r\n h6: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"1.25rem\",\r\n lineHeight: 1.6,\r\n letterSpacing: \"0.0075em\",\r\n },\r\n subtitle1: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"1rem\",\r\n lineHeight: 1.75,\r\n letterSpacing: \"0.00938em\",\r\n },\r\n subtitle2: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.57,\r\n letterSpacing: \"0.00714em\",\r\n },\r\n body1: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"1rem\",\r\n lineHeight: 1.5,\r\n letterSpacing: \"0.00938em\",\r\n },\r\n body2: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.43,\r\n letterSpacing: \"0.01071em\",\r\n },\r\n button: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 500,\r\n fontSize: \"0.875rem\",\r\n lineHeight: 1.75,\r\n letterSpacing: \"0.02857em\",\r\n textTransform: \"uppercase\",\r\n },\r\n caption: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"0.75rem\",\r\n lineHeight: 1.66,\r\n letterSpacing: \"0.03333em\",\r\n },\r\n overline: {\r\n fontFamily: defaultFontFamily,\r\n fontWeight: 400,\r\n fontSize: \"0.75rem\",\r\n lineHeight: 2.66,\r\n letterSpacing: \"0.08333em\",\r\n textTransform: \"uppercase\",\r\n },\r\n};\r\n","/**\r\n * Google Material Design 8px Spacing Grid Function\r\n *\r\n * Supports single and multi-argument invocations:\r\n * - spacing(1) => '8px'\r\n * - spacing(2) => '16px'\r\n * - spacing(1, 2) => '8px 16px'\r\n * - spacing(1, 2, 3, 4) => '8px 16px 24px 32px'\r\n * - spacing('auto') => 'auto'\r\n */\r\nexport function createSpacing(base = 8) {\r\n return (...factors: (number | string)[]): string => {\r\n if (factors.length === 0) return `${base}px`;\r\n\r\n return factors\r\n .map((factor) => {\r\n if (typeof factor === \"string\") return factor;\r\n return `${factor * base}px`;\r\n })\r\n .join(\" \");\r\n };\r\n}\r\n\r\nexport const defaultSpacing = createSpacing(8);\r\n","import { BreakpointKey, Breakpoints } from \"./types\";\r\n\r\nexport const defaultBreakpointValues: Record<BreakpointKey, number> = {\r\n xs: 0,\r\n sm: 600,\r\n md: 900,\r\n lg: 1200,\r\n xl: 1536,\r\n};\r\n\r\nexport const breakpointKeys: BreakpointKey[] = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\"];\r\n\r\nexport function createBreakpoints(\r\n customValues?: Partial<Record<BreakpointKey, number>>\r\n): Breakpoints {\r\n const values: Record<BreakpointKey, number> = {\r\n ...defaultBreakpointValues,\r\n ...customValues,\r\n };\r\n\r\n const step = 5 / 100; // 0.05px\r\n\r\n const up = (key: BreakpointKey | number): string => {\r\n const value = typeof key === \"number\" ? key : values[key];\r\n return `@media (min-width:${value}px)`;\r\n };\r\n\r\n const down = (key: BreakpointKey | number): string => {\r\n const value = typeof key === \"number\" ? key : values[key];\r\n return `@media (max-width:${value - step}px)`;\r\n };\r\n\r\n const between = (\r\n start: BreakpointKey | number,\r\n end: BreakpointKey | number\r\n ): string => {\r\n const min = typeof start === \"number\" ? start : values[start];\r\n const max = typeof end === \"number\" ? end : values[end];\r\n return `@media (min-width:${min}px) and (max-width:${max - step}px)`;\r\n };\r\n\r\n const only = (key: BreakpointKey): string => {\r\n const index = breakpointKeys.indexOf(key);\r\n if (index === breakpointKeys.length - 1) {\r\n return up(key);\r\n }\r\n const nextKey = breakpointKeys[index + 1];\r\n return nextKey ? between(key, nextKey) : up(key);\r\n };\r\n\r\n return {\r\n values,\r\n up,\r\n down,\r\n between,\r\n only,\r\n };\r\n}\r\n\r\nexport const defaultBreakpoints = createBreakpoints();\r\n","/**\r\n * Google Material Design 24-Level Elevation Shadow Matrix\r\n *\r\n * Each shadow is composed of 3 distinct light-source formulas:\r\n * 1. Umbra: Key direct light source shadow\r\n * 2. Penumbra: Secondary ambient light shadow\r\n * 3. Ambient: Atmospheric fill shadow\r\n */\r\n\r\nconst umbra = [\r\n \"0px 0px 0px 0px\",\r\n \"0px 2px 1px -1px\",\r\n \"0px 3px 1px -2px\",\r\n \"0px 3px 3px -2px\",\r\n \"0px 2px 4px -1px\",\r\n \"0px 3px 5px -1px\",\r\n \"0px 3px 5px -1px\",\r\n \"0px 4px 5px -2px\",\r\n \"0px 5px 5px -3px\",\r\n \"0px 5px 6px -3px\",\r\n \"0px 6px 6px -3px\",\r\n \"0px 6px 7px -4px\",\r\n \"0px 7px 8px -4px\",\r\n \"0px 7px 8px -4px\",\r\n \"0px 7px 9px -4px\",\r\n \"0px 8px 9px -5px\",\r\n \"0px 8px 10px -5px\",\r\n \"0px 8px 11px -5px\",\r\n \"0px 9px 11px -5px\",\r\n \"0px 9px 12px -6px\",\r\n \"0px 10px 13px -6px\",\r\n \"0px 10px 13px -6px\",\r\n \"0px 10px 14px -6px\",\r\n \"0px 11px 14px -7px\",\r\n \"0px 11px 15px -7px\",\r\n];\r\n\r\nconst penumbra = [\r\n \"0px 0px 0px 0px\",\r\n \"0px 1px 1px 0px\",\r\n \"0px 2px 2px 0px\",\r\n \"0px 3px 4px 0px\",\r\n \"0px 4px 5px 0px\",\r\n \"0px 5px 8px 0px\",\r\n \"0px 6px 10px 0px\",\r\n \"0px 7px 10px 1px\",\r\n \"0px 8px 10px 1px\",\r\n \"0px 9px 12px 1px\",\r\n \"0px 10px 14px 1px\",\r\n \"0px 11px 15px 1px\",\r\n \"0px 12px 17px 2px\",\r\n \"0px 13px 19px 2px\",\r\n \"0px 14px 21px 2px\",\r\n \"0px 15px 22px 2px\",\r\n \"0px 16px 24px 2px\",\r\n \"0px 17px 26px 2px\",\r\n \"0px 18px 28px 2px\",\r\n \"0px 19px 29px 2px\",\r\n \"0px 20px 31px 3px\",\r\n \"0px 21px 33px 3px\",\r\n \"0px 22px 35px 3px\",\r\n \"0px 23px 36px 3px\",\r\n \"0px 24px 38px 3px\",\r\n];\r\n\r\nconst ambient = [\r\n \"0px 0px 0px 0px\",\r\n \"0px 1px 3px 0px\",\r\n \"0px 1px 5px 0px\",\r\n \"0px 1px 8px 0px\",\r\n \"0px 1px 10px 0px\",\r\n \"0px 1px 14px 0px\",\r\n \"0px 1px 18px 0px\",\r\n \"0px 2px 16px 1px\",\r\n \"0px 3px 14px 2px\",\r\n \"0px 3px 16px 2px\",\r\n \"0px 4px 18px 3px\",\r\n \"0px 4px 20px 3px\",\r\n \"0px 5px 22px 4px\",\r\n \"0px 5px 24px 4px\",\r\n \"0px 5px 26px 4px\",\r\n \"0px 6px 28px 5px\",\r\n \"0px 6px 30px 5px\",\r\n \"0px 6px 32px 5px\",\r\n \"0px 7px 34px 6px\",\r\n \"0px 7px 36px 6px\",\r\n \"0px 8px 38px 7px\",\r\n \"0px 8px 40px 7px\",\r\n \"0px 8px 42px 7px\",\r\n \"0px 9px 44px 8px\",\r\n \"0px 9px 46px 8px\",\r\n];\r\n\r\nexport function createShadows(): string[] {\r\n return umbra.map((u, i) => {\r\n if (i === 0) return \"none\";\r\n return `${u} rgba(0,0,0,0.2), ${penumbra[i]} rgba(0,0,0,0.14), ${ambient[i]} rgba(0,0,0,0.12)`;\r\n });\r\n}\r\n\r\nexport const defaultShadows = createShadows();\r\n","import { Transitions } from \"./types\";\r\n\r\nexport const defaultTransitions: Transitions = {\r\n easing: {\r\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\r\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\r\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\r\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\r\n },\r\n duration: {\r\n shortest: 150,\r\n shorter: 200,\r\n short: 250,\r\n standard: 300,\r\n complex: 375,\r\n enteringScreen: 225,\r\n leavingScreen: 195,\r\n },\r\n create(\r\n props: string | string[] = [\"all\"],\r\n options: {\r\n duration?: number | string;\r\n easing?: string;\r\n delay?: number | string;\r\n } = {}\r\n ): string {\r\n const {\r\n duration = defaultTransitions.duration.standard,\r\n easing = defaultTransitions.easing.easeInOut,\r\n delay = 0,\r\n } = options;\r\n\r\n const formatDuration = (d: number | string) =>\r\n typeof d === \"string\" ? d : `${d}ms`;\r\n\r\n const formatDelay = (d: number | string) =>\r\n typeof d === \"string\" ? d : `${d}ms`;\r\n\r\n const properties = Array.isArray(props) ? props : [props];\r\n\r\n return properties\r\n .map(\r\n (prop) =>\r\n `${prop} ${formatDuration(duration)} ${easing} ${formatDelay(delay)}`\r\n )\r\n .join(\", \");\r\n },\r\n};\r\n","import { ZIndex } from \"./types\";\r\n\r\nexport const defaultZIndex: ZIndex = {\r\n mobileStepper: 1000,\r\n fab: 1050,\r\n speedDial: 1050,\r\n appBar: 1100,\r\n drawer: 1200,\r\n modal: 1300,\r\n snackbar: 1400,\r\n tooltip: 1500,\r\n};\r\n","import { ChellaaTheme, ThemeOptions, ColorMode } from \"./types\";\r\nimport { createPalette } from \"./palette\";\r\nimport { defaultTypography } from \"./typography\";\r\nimport { defaultSpacing } from \"./spacing\";\r\nimport { defaultBreakpoints, createBreakpoints } from \"./breakpoints\";\r\nimport { defaultShadows } from \"./shadows\";\r\nimport { defaultTransitions } from \"./transitions\";\r\nimport { defaultZIndex } from \"./zIndex\";\r\n\r\n/**\r\n * Deep merge utility for theme options\r\n */\r\nfunction isObject(item: any): item is Record<string, any> {\r\n return item && typeof item === \"object\" && !Array.isArray(item);\r\n}\r\n\r\nfunction deepMerge(target: any, source: any): any {\r\n const output = { ...target };\r\n if (isObject(target) && isObject(source)) {\r\n Object.keys(source).forEach((key) => {\r\n if (isObject(source[key])) {\r\n if (!(key in target)) {\r\n Object.assign(output, { [key]: source[key] });\r\n } else {\r\n output[key] = deepMerge(target[key], source[key]);\r\n }\r\n } else {\r\n Object.assign(output, { [key]: source[key] });\r\n }\r\n });\r\n }\r\n return output;\r\n}\r\n\r\n/**\r\n * Creates a Chellaa Material Theme with 24-level elevation shadows,\r\n * 8px spacing, and complete Google Material 3 design tokens.\r\n *\r\n * @example\r\n * const theme = createTheme({\r\n * palette: {\r\n * mode: 'dark',\r\n * primary: { main: '#6366f1' }\r\n * },\r\n * shape: { borderRadius: 8 }\r\n * });\r\n */\r\nexport function createTheme(options: ThemeOptions = {}): ChellaaTheme {\r\n const mode: ColorMode = options.palette?.mode ?? \"light\";\r\n const basePalette = createPalette(mode);\r\n\r\n const mergedPalette = options.palette\r\n ? deepMerge(basePalette, options.palette)\r\n : basePalette;\r\n\r\n const mergedTypography = options.typography\r\n ? deepMerge(defaultTypography, options.typography)\r\n : defaultTypography;\r\n\r\n const mergedBreakpoints = options.breakpoints?.values\r\n ? createBreakpoints(options.breakpoints.values as any)\r\n : defaultBreakpoints;\r\n\r\n const spacing =\r\n typeof options.spacing === \"function\"\r\n ? (options.spacing as any)\r\n : defaultSpacing;\r\n\r\n const shape = {\r\n borderRadius: options.shape?.borderRadius ?? 4,\r\n };\r\n\r\n const shadows = (options.shadows as string[]) ?? defaultShadows;\r\n const transitions = options.transitions\r\n ? deepMerge(defaultTransitions, options.transitions)\r\n : defaultTransitions;\r\n const zIndex = options.zIndex\r\n ? deepMerge(defaultZIndex, options.zIndex)\r\n : defaultZIndex;\r\n\r\n return {\r\n palette: mergedPalette,\r\n typography: mergedTypography,\r\n spacing,\r\n shape,\r\n breakpoints: mergedBreakpoints,\r\n shadows,\r\n transitions,\r\n zIndex,\r\n components: (options.components as any) ?? {},\r\n };\r\n}\r\n\r\nexport const defaultTheme = createTheme({ palette: { mode: \"light\" } });\r\nexport const defaultDarkTheme = createTheme({ palette: { mode: \"dark\" } });\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { ThemeProvider as EmotionThemeProvider } from \"@emotion/react\";\r\nimport { ChellaaTheme, ThemeOptions, ColorMode } from \"./types\";\r\nimport { createTheme, defaultTheme, defaultDarkTheme } from \"./createTheme\";\r\n\r\n// Ambient type augmentation for @emotion/react\r\ndeclare module \"@emotion/react\" {\r\n export interface Theme extends ChellaaTheme {}\r\n}\r\n\r\nexport type ThemeMode = \"light\" | \"dark\" | \"system\" | string;\r\n\r\nexport interface ThemeContextValue {\r\n theme: ThemeMode;\r\n setTheme: (theme: ThemeMode) => void;\r\n resolvedTheme: \"light\" | \"dark\";\r\n systemTheme: \"light\" | \"dark\" | undefined;\r\n activeTheme: ChellaaTheme;\r\n colorMode: ColorMode;\r\n setColorMode: (mode: ColorMode) => void;\r\n}\r\n\r\nexport const ThemeContext = React.createContext<ThemeContextValue | undefined>(\r\n undefined\r\n);\r\n\r\nexport interface ThemeProviderProps {\r\n children?: React.ReactNode;\r\n theme?: ChellaaTheme | ThemeOptions;\r\n defaultTheme?: ThemeMode;\r\n storageKey?: string;\r\n enableSystem?: boolean;\r\n tokens?: Record<string, string>;\r\n attribute?: string;\r\n}\r\n\r\nconst COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\r\n\r\nexport function ThemeProvider({\r\n children,\r\n theme: customThemeProp,\r\n defaultTheme: defaultThemeMode = \"system\",\r\n storageKey = \"chellaa-theme\",\r\n enableSystem = true,\r\n tokens,\r\n attribute = \"data-theme\",\r\n}: ThemeProviderProps) {\r\n const parentContext = React.useContext(ThemeContext);\r\n\r\n const [themeMode, setThemeModeState] = React.useState<ThemeMode>(() => {\r\n if (typeof window === \"undefined\") return defaultThemeMode;\r\n try {\r\n return (localStorage.getItem(storageKey) as ThemeMode) || defaultThemeMode;\r\n } catch {\r\n return defaultThemeMode;\r\n }\r\n });\r\n\r\n const [systemTheme, setSystemTheme] = React.useState<\r\n \"light\" | \"dark\" | undefined\r\n >(() => {\r\n if (\r\n typeof window === \"undefined\" ||\r\n !enableSystem ||\r\n typeof window.matchMedia !== \"function\"\r\n ) {\r\n return undefined;\r\n }\r\n return window.matchMedia(COLOR_SCHEME_QUERY).matches ? \"dark\" : \"light\";\r\n });\r\n\r\n // Calculate resolved theme (light or dark)\r\n const resolvedTheme: \"light\" | \"dark\" = React.useMemo(() => {\r\n if (themeMode === \"system\") {\r\n return systemTheme ?? \"light\";\r\n }\r\n return themeMode === \"dark\" ? \"dark\" : \"light\";\r\n }, [themeMode, systemTheme]);\r\n\r\n // Listen for OS system theme changes\r\n React.useEffect(() => {\r\n if (\r\n !enableSystem ||\r\n typeof window === \"undefined\" ||\r\n typeof window.matchMedia !== \"function\"\r\n ) {\r\n return;\r\n }\r\n\r\n const mediaQuery = window.matchMedia(COLOR_SCHEME_QUERY);\r\n const handleChange = (e: MediaQueryListEvent) => {\r\n setSystemTheme(e.matches ? \"dark\" : \"light\");\r\n };\r\n\r\n if (typeof mediaQuery.addEventListener === \"function\") {\r\n mediaQuery.addEventListener(\"change\", handleChange);\r\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\r\n } else if (\r\n typeof (\r\n mediaQuery as {\r\n addListener?: (cb: (e: MediaQueryListEvent) => void) => void;\r\n }\r\n ).addListener === \"function\"\r\n ) {\r\n (\r\n mediaQuery as {\r\n addListener: (cb: (e: MediaQueryListEvent) => void) => void;\r\n }\r\n ).addListener(handleChange);\r\n return () =>\r\n (\r\n mediaQuery as {\r\n removeListener: (cb: (e: MediaQueryListEvent) => void) => void;\r\n }\r\n ).removeListener(handleChange);\r\n }\r\n }, [enableSystem]);\r\n\r\n // Compute active Emotion ChellaaTheme\r\n const activeTheme = React.useMemo<ChellaaTheme>(() => {\r\n if (customThemeProp) {\r\n // If full ChellaaTheme passed, respect its palette mode or override with resolvedTheme\r\n return createTheme({\r\n ...(customThemeProp as any),\r\n palette: {\r\n mode: resolvedTheme,\r\n ...((customThemeProp as any).palette || {}),\r\n },\r\n });\r\n }\r\n return resolvedTheme === \"dark\" ? defaultDarkTheme : defaultTheme;\r\n }, [customThemeProp, resolvedTheme]);\r\n\r\n // Apply data-theme attribute and CSS tokens to DOM\r\n React.useEffect(() => {\r\n if (typeof document === \"undefined\") return;\r\n\r\n if (!parentContext) {\r\n const root = document.documentElement;\r\n root.setAttribute(attribute, resolvedTheme);\r\n\r\n if (tokens) {\r\n for (const [key, value] of Object.entries(tokens)) {\r\n root.style.setProperty(key, value);\r\n }\r\n }\r\n }\r\n }, [resolvedTheme, parentContext, attribute, tokens]);\r\n\r\n const setTheme = React.useCallback(\r\n (newTheme: ThemeMode) => {\r\n setThemeModeState(newTheme);\r\n try {\r\n localStorage.setItem(storageKey, newTheme);\r\n } catch {\r\n // Ignore localStorage errors (e.g. private browsing mode)\r\n }\r\n },\r\n [storageKey]\r\n );\r\n\r\n const setColorMode = React.useCallback(\r\n (mode: ColorMode) => {\r\n setTheme(mode);\r\n },\r\n [setTheme]\r\n );\r\n\r\n const contextValue = React.useMemo<ThemeContextValue>(\r\n () => ({\r\n theme: themeMode,\r\n setTheme,\r\n resolvedTheme,\r\n systemTheme,\r\n activeTheme,\r\n colorMode: resolvedTheme,\r\n setColorMode,\r\n }),\r\n [themeMode, setTheme, resolvedTheme, systemTheme, activeTheme, setColorMode]\r\n );\r\n\r\n if (parentContext) {\r\n const styleObj = tokens\r\n ? (tokens as unknown as React.CSSProperties)\r\n : undefined;\r\n\r\n return (\r\n <ThemeContext.Provider value={contextValue}>\r\n <EmotionThemeProvider theme={activeTheme}>\r\n <div\r\n {...{ [attribute]: resolvedTheme }}\r\n style={styleObj}\r\n className=\"cl-theme-scope\"\r\n >\r\n {children}\r\n </div>\r\n </EmotionThemeProvider>\r\n </ThemeContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <ThemeContext.Provider value={contextValue}>\r\n <EmotionThemeProvider theme={activeTheme}>{children}</EmotionThemeProvider>\r\n </ThemeContext.Provider>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { useTheme as useEmotionTheme } from \"@emotion/react\";\r\nimport { ThemeContext, type ThemeContextValue } from \"./ThemeProvider\";\r\nimport { ChellaaTheme } from \"./types\";\r\nimport { defaultTheme } from \"./createTheme\";\r\n\r\nexport interface ExtendedThemeContextValue extends ThemeContextValue {\r\n /** The active ChellaaTheme object (colors, typography, spacing, shadows) */\r\n themeObject: ChellaaTheme;\r\n}\r\n\r\n/**\r\n * Accesses the active theme context, allowing components to read and update\r\n * the current theme mode (`light`, `dark`, `system`), resolved theme, and active ChellaaTheme.\r\n */\r\nexport function useTheme(): ExtendedThemeContextValue {\r\n const context = React.useContext(ThemeContext);\r\n const emotionTheme = useEmotionTheme() as ChellaaTheme | undefined;\r\n\r\n if (context) {\r\n return {\r\n ...context,\r\n themeObject: context.activeTheme,\r\n };\r\n }\r\n\r\n if (emotionTheme && emotionTheme.palette) {\r\n return {\r\n theme: emotionTheme.palette.mode,\r\n setTheme: () => {},\r\n resolvedTheme: emotionTheme.palette.mode,\r\n systemTheme: undefined,\r\n activeTheme: emotionTheme,\r\n colorMode: emotionTheme.palette.mode,\r\n setColorMode: () => {},\r\n themeObject: emotionTheme,\r\n };\r\n }\r\n\r\n // Graceful fallback to defaultTheme if used outside ThemeProvider\r\n return {\r\n theme: \"light\",\r\n setTheme: () => {},\r\n resolvedTheme: \"light\",\r\n systemTheme: undefined,\r\n activeTheme: defaultTheme,\r\n colorMode: \"light\",\r\n setColorMode: () => {},\r\n themeObject: defaultTheme,\r\n };\r\n}\r\n","export interface ThemeScriptProps {\n storageKey?: string;\n defaultTheme?: string;\n attribute?: string;\n nonce?: string;\n}\n\n/**\n * Inline synchronous script that prevents theme flash (FOUC) during SSR page load.\n * Place inside the `<head>` of your application layout.\n */\nexport function ThemeScript({\n storageKey = \"chellaa-theme\",\n defaultTheme = \"system\",\n attribute = \"data-theme\",\n nonce,\n}: ThemeScriptProps) {\n const scriptContent = `(function() {\n try {\n var key = '${storageKey}';\n var def = '${defaultTheme}';\n var attr = '${attribute}';\n var stored = localStorage.getItem(key);\n var theme = stored || def;\n var resolved = theme;\n if (theme === 'system') {\n resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n document.documentElement.setAttribute(attr, resolved);\n } catch (e) {}\n})();`;\n\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{ __html: scriptContent }}\n suppressHydrationWarning\n />\n );\n}\n","const defaultBlockedProps = new Set<string>([\r\n \"sx\",\r\n \"theme\",\r\n \"as\",\r\n \"ownerState\",\r\n \"slotProps\",\r\n]);\r\n\r\n/**\r\n * Creates a shouldForwardProp predicate function for Emotion styled components.\r\n * Automatically filters out transient props starting with '$' and default system props.\r\n *\r\n * @param customBlocked Array or Set of additional prop names to prevent forwarding to DOM\r\n */\r\nexport function createShouldForwardProp(\r\n customBlocked?: (string | PropertyKey)[] | Set<string | PropertyKey>\r\n): (prop: PropertyKey) => boolean {\r\n const blockedSet = new Set(defaultBlockedProps);\r\n\r\n if (customBlocked) {\r\n customBlocked.forEach((prop) => blockedSet.add(prop as string));\r\n }\r\n\r\n return (prop: PropertyKey): boolean => {\r\n if (typeof prop === \"string\" && prop.startsWith(\"$\")) {\r\n return false;\r\n }\r\n return !blockedSet.has(prop as string);\r\n };\r\n}\r\n\r\n/**\r\n * Default root shouldForwardProp filter.\r\n * Blocks 'sx', 'theme', 'as', 'ownerState', 'slotProps', and '$*'.\r\n */\r\nexport const rootShouldForwardProp = createShouldForwardProp();\r\n","import type { BreakpointKey, ChellaaTheme } from \"../theme/types\";\r\nimport { breakpointKeys } from \"../theme/breakpoints\";\r\nimport { defaultTheme } from \"../theme/createTheme\";\r\nimport type { SxProps, SxObject } from \"./types\";\r\n\r\nconst spacingProperties: Record<string, string[]> = {\r\n m: [\"margin\"],\r\n margin: [\"margin\"],\r\n mt: [\"marginTop\"],\r\n marginTop: [\"marginTop\"],\r\n mr: [\"marginRight\"],\r\n marginRight: [\"marginRight\"],\r\n mb: [\"marginBottom\"],\r\n marginBottom: [\"marginBottom\"],\r\n ml: [\"marginLeft\"],\r\n marginLeft: [\"marginLeft\"],\r\n mx: [\"marginInline\"],\r\n marginInline: [\"marginInline\"],\r\n my: [\"marginBlock\"],\r\n marginBlock: [\"marginBlock\"],\r\n\r\n p: [\"padding\"],\r\n padding: [\"padding\"],\r\n pt: [\"paddingTop\"],\r\n paddingTop: [\"paddingTop\"],\r\n pr: [\"paddingRight\"],\r\n paddingRight: [\"paddingRight\"],\r\n pb: [\"paddingBottom\"],\r\n paddingBottom: [\"paddingBottom\"],\r\n pl: [\"paddingLeft\"],\r\n paddingLeft: [\"paddingLeft\"],\r\n px: [\"paddingInline\"],\r\n paddingInline: [\"paddingInline\"],\r\n py: [\"paddingBlock\"],\r\n paddingBlock: [\"paddingBlock\"],\r\n\r\n gap: [\"gap\"],\r\n rowGap: [\"rowGap\"],\r\n columnGap: [\"columnGap\"],\r\n};\r\n\r\n/**\r\n * Resolves nested property path in theme palette (e.g. 'primary.main', 'text.secondary')\r\n */\r\nfunction resolvePalettePath(palette: ChellaaTheme[\"palette\"], path: string): string | undefined {\r\n if (!path || typeof path !== \"string\") return undefined;\r\n const parts = path.split(\".\");\r\n let current: any = palette;\r\n for (const part of parts) {\r\n if (current && typeof current === \"object\" && part in current) {\r\n current = current[part];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return typeof current === \"string\" ? current : undefined;\r\n}\r\n\r\n/**\r\n * Resolves color values against theme palette\r\n */\r\nfunction resolveColor(theme: ChellaaTheme, value: any): any {\r\n if (typeof value !== \"string\") return value;\r\n const resolved = resolvePalettePath(theme.palette, value);\r\n return resolved ?? value;\r\n}\r\n\r\n/**\r\n * Resolves z-index token names against theme.zIndex\r\n */\r\nfunction resolveZIndex(theme: ChellaaTheme, value: any): any {\r\n if (typeof value === \"string\" && value in theme.zIndex) {\r\n return theme.zIndex[value as keyof typeof theme.zIndex];\r\n }\r\n return value;\r\n}\r\n\r\n/**\r\n * Resolves a single CSS property name and value into one or more CSS declarations\r\n */\r\nfunction resolveSingleProperty(\r\n theme: ChellaaTheme,\r\n prop: string,\r\n value: any\r\n): Record<string, any> {\r\n if (value === undefined || value === null) return {};\r\n\r\n // 1. Spacing properties\r\n if (prop in spacingProperties) {\r\n const cssProps = spacingProperties[prop]!;\r\n const formatted = typeof value === \"number\" ? theme.spacing(value) : value;\r\n const result: Record<string, any> = {};\r\n for (const cssProp of cssProps) {\r\n result[cssProp] = formatted;\r\n }\r\n return result;\r\n }\r\n\r\n // 2. Background color shorthand\r\n if (prop === \"bgcolor\") {\r\n return { backgroundColor: resolveColor(theme, value) };\r\n }\r\n\r\n // 3. Color properties\r\n if (\r\n prop === \"color\" ||\r\n prop === \"backgroundColor\" ||\r\n prop === \"borderColor\" ||\r\n prop === \"outlineColor\"\r\n ) {\r\n return { [prop]: resolveColor(theme, value) };\r\n }\r\n\r\n // 4. Elevation / BoxShadow\r\n if (prop === \"elevation\") {\r\n if (typeof value === \"number\" && theme.shadows[value]) {\r\n return { boxShadow: theme.shadows[value] };\r\n }\r\n return {};\r\n }\r\n if (prop === \"boxShadow\") {\r\n if (typeof value === \"number\" && theme.shadows[value]) {\r\n return { boxShadow: theme.shadows[value] };\r\n }\r\n return { boxShadow: value };\r\n }\r\n\r\n // 5. Border radius\r\n if (prop === \"borderRadius\") {\r\n if (typeof value === \"number\") {\r\n const radius = theme.shape?.borderRadius ?? 4;\r\n return { borderRadius: `${value * radius}px` };\r\n }\r\n return { borderRadius: value };\r\n }\r\n\r\n // 6. Z-Index\r\n if (prop === \"zIndex\") {\r\n return { zIndex: resolveZIndex(theme, value) };\r\n }\r\n\r\n // 7. Standard CSS Property pass-through\r\n return { [prop]: value };\r\n}\r\n\r\nfunction isObject(val: any): val is Record<string, any> {\r\n return val !== null && typeof val === \"object\" && !Array.isArray(val);\r\n}\r\n\r\n/**\r\n * Checks if a value is responsive (either an array or breakpoint keyed object)\r\n */\r\nfunction isResponsiveValue(val: any): boolean {\r\n if (Array.isArray(val)) return true;\r\n if (isObject(val)) {\r\n return Object.keys(val).some((k) => breakpointKeys.includes(k as BreakpointKey));\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Parses an individual SxObject with the current theme\r\n */\r\nfunction parseSxObject(\r\n theme: ChellaaTheme,\r\n sxObject: SxObject\r\n): Record<string, any> {\r\n const result: Record<string, any> = {};\r\n\r\n for (const [key, value] of Object.entries(sxObject)) {\r\n if (value === undefined || value === null) continue;\r\n\r\n // Handle nested selectors / media queries (&:hover, @media, etc.)\r\n if (key.startsWith(\"&\") || key.startsWith(\"@\") || key.startsWith(\".\")) {\r\n if (typeof value === \"function\") {\r\n result[key] = parseSxObject(theme, value(theme));\r\n } else if (isObject(value)) {\r\n result[key] = parseSxObject(theme, value as SxObject);\r\n }\r\n continue;\r\n }\r\n\r\n // Handle responsive values: array syntax [val1, val2, val3]\r\n if (Array.isArray(value)) {\r\n value.forEach((bpVal, index) => {\r\n if (bpVal === undefined || bpVal === null) return;\r\n const bpKey = breakpointKeys[index];\r\n if (!bpKey) return;\r\n\r\n const resolved = resolveSingleProperty(theme, key, bpVal);\r\n if (bpKey === \"xs\") {\r\n Object.assign(result, resolved);\r\n } else {\r\n const media = theme.breakpoints.up(bpKey);\r\n result[media] = {\r\n ...(result[media] || {}),\r\n ...resolved,\r\n };\r\n }\r\n });\r\n continue;\r\n }\r\n\r\n // Handle responsive values: object syntax { xs: val1, md: val2 }\r\n if (isResponsiveValue(value)) {\r\n const respObj = value as Partial<Record<BreakpointKey, any>>;\r\n for (const [bpKey, bpVal] of Object.entries(respObj)) {\r\n if (bpVal === undefined || bpVal === null) continue;\r\n\r\n const resolved = resolveSingleProperty(theme, key, bpVal);\r\n if (bpKey === \"xs\") {\r\n Object.assign(result, resolved);\r\n } else if (breakpointKeys.includes(bpKey as BreakpointKey)) {\r\n const media = theme.breakpoints.up(bpKey as BreakpointKey);\r\n result[media] = {\r\n ...(result[media] || {}),\r\n ...resolved,\r\n };\r\n }\r\n }\r\n continue;\r\n }\r\n\r\n // Handle nested sub-object that is not a selector or responsive breakpoint\r\n if (isObject(value)) {\r\n result[key] = parseSxObject(theme, value as SxObject);\r\n continue;\r\n }\r\n\r\n // Standard single property resolution\r\n const resolved = resolveSingleProperty(theme, key, value);\r\n Object.assign(result, resolved);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n * Core responsive `sx` parser function.\r\n * Evaluates `sx` prop against current theme, expanding:\r\n * - Theme spacing shortcuts (m, p, mx, my, px, py, etc.)\r\n * - Theme palette tokens (color, bgcolor: 'primary.main', 'text.secondary')\r\n * - Elevation shadows (elevation: 0..24, boxShadow: 0..24)\r\n * - Breakpoint responsive arrays ([1, 2, 4]) and objects ({ xs: 1, md: 4 })\r\n * - Pseudo-classes (&:hover, &:focus) and nested selectors\r\n * - Theme function callbacks: `(theme) => ({ ... })`\r\n * - Array of sx items: `[sx1, condition && sx2, (theme) => sx3]`\r\n */\r\nexport function parseSx(\r\n themeInput?: ChellaaTheme,\r\n sx?: SxProps\r\n): Record<string, any> {\r\n if (!sx) return {};\r\n const theme =\r\n themeInput && typeof themeInput.spacing === \"function\"\r\n ? themeInput\r\n : defaultTheme;\r\n\r\n // If sx is a function, execute with theme\r\n if (typeof sx === \"function\") {\r\n return parseSxObject(theme, sx(theme));\r\n }\r\n\r\n // If sx is an array, merge in sequence\r\n if (Array.isArray(sx)) {\r\n return sx.reduce<Record<string, any>>((acc, item) => {\r\n if (!item) return acc;\r\n const parsed = parseSx(theme, item);\r\n return deepMergeStyles(acc, parsed);\r\n }, {});\r\n }\r\n\r\n // Object sx\r\n if (isObject(sx)) {\r\n return parseSxObject(theme, sx);\r\n }\r\n\r\n return {};\r\n}\r\n\r\n/**\r\n * Deep merge utility for style objects to safely merge nested media queries and selectors\r\n */\r\nfunction deepMergeStyles(\r\n target: Record<string, any>,\r\n source: Record<string, any>\r\n): Record<string, any> {\r\n const result: Record<string, any> = { ...target };\r\n\r\n for (const [key, value] of Object.entries(source)) {\r\n if (\r\n isObject(value) &&\r\n isObject(result[key]) &&\r\n !Array.isArray(value) &&\r\n !Array.isArray(result[key])\r\n ) {\r\n result[key] = deepMergeStyles(result[key], value);\r\n } else {\r\n result[key] = value;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n","import type { ChellaaTheme } from \"../theme/types\";\r\n\r\nexport interface ComponentOverrideOptions {\r\n name?: string;\r\n slot?: string;\r\n overridesResolver?: (\r\n props: any,\r\n styles: Record<string, any>\r\n ) => Record<string, any> | undefined;\r\n}\r\n\r\n/**\r\n * Resolves component-level style overrides defined in theme.components[name].styleOverrides\r\n * Supports both static style objects and dynamic functions: `({ theme, ownerState }) => ({ ... })`\r\n */\r\nexport function resolveComponentOverrides(\r\n theme: ChellaaTheme,\r\n options: ComponentOverrideOptions,\r\n props: Record<string, any>\r\n): Record<string, any> | undefined {\r\n const { name, slot = \"root\", overridesResolver } = options;\r\n if (!name || !theme.components?.[name]) {\r\n return undefined;\r\n }\r\n\r\n const componentConfig = theme.components[name];\r\n const styleOverrides = componentConfig.styleOverrides;\r\n if (!styleOverrides) {\r\n return undefined;\r\n }\r\n\r\n // If custom overrides resolver is supplied, execute it\r\n if (overridesResolver) {\r\n const resolved = overridesResolver(props, styleOverrides);\r\n if (resolved) return resolved;\r\n }\r\n\r\n // Fallback to slot-based lookup\r\n const slotLower = slot.toLowerCase();\r\n const matchedKey = Object.keys(styleOverrides).find(\r\n (k) => k.toLowerCase() === slotLower\r\n );\r\n\r\n if (matchedKey) {\r\n const override = styleOverrides[matchedKey];\r\n if (typeof override === \"function\") {\r\n return override({ theme, ownerState: props.ownerState ?? props });\r\n }\r\n return override;\r\n }\r\n\r\n return undefined;\r\n}\r\n","import React from \"react\";\r\nimport emotionStyled from \"@emotion/styled\";\r\nimport type { ChellaaTheme } from \"../theme/types\";\r\nimport { defaultTheme } from \"../theme/createTheme\";\r\nimport { rootShouldForwardProp } from \"./shouldForwardProp\";\r\nimport { parseSx } from \"./sx\";\r\nimport { resolveComponentOverrides } from \"./componentOverrides\";\r\nimport type { StyledOptions, SxProps } from \"./types\";\r\n\r\nexport type StyleInterpolation<Props extends object = {}> =\r\n | Record<string, any>\r\n | ((props: Props & { theme: ChellaaTheme }) => Record<string, any> | undefined | null | false);\r\n\r\n/**\r\n * Creates an Emotion-powered styled component with:\r\n * 1. Automatic `sx` prop parsing with responsive breakpoints & 8px theme spacing.\r\n * 2. Automatic resolution of `theme.components[name].styleOverrides[slot]`.\r\n * 3. Safe DOM prop filtering via `shouldForwardProp` preventing `sx` and private props from leaking.\r\n * 4. First-class polymorphism via `as` prop.\r\n *\r\n * @example\r\n * const MyBox = styled('div', {\r\n * name: 'ChellaaBox',\r\n * slot: 'Root'\r\n * })({\r\n * boxSizing: 'border-box'\r\n * });\r\n */\r\nexport function styled<\r\n Component extends React.ElementType,\r\n ExtraProps extends object = {}\r\n>(\r\n component: Component,\r\n options: StyledOptions<ExtraProps> = {}\r\n) {\r\n const {\r\n name,\r\n slot = \"Root\",\r\n label,\r\n target,\r\n shouldForwardProp: customShouldForwardProp,\r\n skipSx = false,\r\n } = options;\r\n\r\n const resolvedShouldForwardProp = customShouldForwardProp\r\n ? (prop: PropertyKey) =>\r\n rootShouldForwardProp(prop) && customShouldForwardProp(prop)\r\n : rootShouldForwardProp;\r\n\r\n const resolvedLabel = label ?? (name ? `${name}-${slot}` : undefined);\r\n\r\n const emotionOptions: {\r\n shouldForwardProp?: (prop: PropertyKey) => boolean;\r\n label?: string;\r\n target?: string;\r\n } = {\r\n shouldForwardProp: resolvedShouldForwardProp,\r\n };\r\n\r\n if (resolvedLabel !== undefined) {\r\n emotionOptions.label = resolvedLabel;\r\n }\r\n if (target !== undefined) {\r\n emotionOptions.target = target;\r\n }\r\n\r\n const emotionCreator = emotionStyled(component as any, emotionOptions);\r\n\r\n return <Props extends object = ExtraProps>(\r\n ...interpolations: StyleInterpolation<\r\n Props & { sx?: SxProps; as?: React.ElementType }\r\n >[]\r\n ) => {\r\n const wrappedInterpolations = interpolations.map((interpolation) => {\r\n if (typeof interpolation === \"function\") {\r\n return (rawProps: any) => {\r\n const activeTheme =\r\n rawProps.theme && typeof rawProps.theme.spacing === \"function\"\r\n ? (rawProps.theme as ChellaaTheme)\r\n : defaultTheme;\r\n return interpolation({\r\n ...rawProps,\r\n theme: activeTheme,\r\n });\r\n };\r\n }\r\n return interpolation;\r\n });\r\n\r\n return emotionCreator(\r\n // 1. Base component styles\r\n ...(wrappedInterpolations as any[]),\r\n\r\n // 2. Global theme overrides from theme.components[name].styleOverrides[slot]\r\n (props: any) => {\r\n if (!name) return null;\r\n const activeTheme =\r\n props.theme && typeof props.theme.spacing === \"function\"\r\n ? (props.theme as ChellaaTheme)\r\n : defaultTheme;\r\n return resolveComponentOverrides(activeTheme, options, props);\r\n },\r\n\r\n // 3. Local sx prop styles (highest precedence)\r\n (props: any) => {\r\n if (skipSx || !props.sx) return null;\r\n const activeTheme =\r\n props.theme && typeof props.theme.spacing === \"function\"\r\n ? (props.theme as ChellaaTheme)\r\n : defaultTheme;\r\n return parseSx(activeTheme, props.sx);\r\n }\r\n );\r\n };\r\n}\r\n","export type ClassValue =\n | string\n | number\n | boolean\n | undefined\n | null\n | Record<string, boolean | number | undefined | null>\n | ClassValue[];\n\n/**\n * Combines multiple conditional class names into a clean space-delimited string.\n * Zero external runtime dependencies.\n *\n * @example\n * classNames('cl-button', isActive && 'cl-button--active', { 'cl-button--disabled': isDisabled });\n */\nexport function classNames(...inputs: ClassValue[]): string {\n const classes: string[] = [];\n\n for (const input of inputs) {\n if (!input && input !== 0) continue;\n\n if (typeof input === \"string\" || typeof input === \"number\") {\n const trimmed = String(input).trim();\n if (trimmed) classes.push(trimmed);\n } else if (Array.isArray(input)) {\n const nested = classNames(...input);\n if (nested) classes.push(nested);\n } else if (typeof input === \"object\") {\n for (const [key, value] of Object.entries(input)) {\n if (value && key.trim()) {\n classes.push(key.trim());\n }\n }\n }\n }\n\n return classes.join(\" \");\n}\n","/**\n * Composes an optional consumer event handler with an internal library event handler.\n * If the consumer handler calls event.preventDefault(), the internal handler is skipped,\n * preserving consumer control over event delegation.\n *\n * @param originalHandler Optional consumer-provided event handler\n * @param ourHandler Internal component event handler\n * @param options Configuration options\n */\nexport function composeEventHandlers<E extends { defaultPrevented: boolean }>(\n originalHandler?: ((event: E) => void) | undefined,\n ourHandler?: ((event: E) => void) | undefined,\n {\n checkForDefaultPrevented = true,\n }: { checkForDefaultPrevented?: boolean } = {},\n): (event: E) => void {\n return function handleEvent(event: E) {\n originalHandler?.(event);\n\n if (!checkForDefaultPrevented || !event.defaultPrevented) {\n ourHandler?.(event);\n }\n };\n}\n","import * as React from \"react\";\r\n\r\n/**\r\n * Safely extracts a ref from a React element across React 18 and React 19\r\n * without triggering deprecation warnings in either version.\r\n *\r\n * In React 18:\r\n * - `element.props.ref` logs a warning in DEV mode if accessed directly.\r\n * - The ref lives on `element.ref` (defaults to `null` if unspecified).\r\n *\r\n * In React 19:\r\n * - `element.ref` logs a warning in DEV mode because ref is now a standard prop.\r\n * - The ref lives on `element.props.ref` (defaults to `undefined` if unspecified).\r\n *\r\n * We inspect property descriptor getters to detect React's DEV warnings before\r\n * accessing the respective property, ensuring warning-free behavior across all versions.\r\n */\r\nexport function getElementRef<T = HTMLElement>(\r\n element: React.ReactElement,\r\n): React.Ref<T> | undefined {\r\n if (!element || !React.isValidElement(element)) {\r\n return undefined;\r\n }\r\n\r\n // React <= 18 in DEV: accessing element.props.ref triggers a warning\r\n const propsGetter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\r\n const isPropsWarning = Boolean(propsGetter && \"isReactWarning\" in propsGetter);\r\n if (isPropsWarning) {\r\n const r = (element as unknown as { ref?: React.Ref<T> }).ref;\r\n return r ?? undefined;\r\n }\r\n\r\n // React 19 in DEV: accessing element.ref triggers a warning\r\n const elementGetter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\r\n const isElementWarning = Boolean(elementGetter && \"isReactWarning\" in elementGetter);\r\n if (isElementWarning) {\r\n const r = (element.props as { ref?: React.Ref<T> }).ref;\r\n return r ?? undefined;\r\n }\r\n\r\n // Production or un-proxied environment\r\n const ref =\r\n (element.props as { ref?: React.Ref<T> }).ref ??\r\n (element as unknown as { ref?: React.Ref<T> }).ref;\r\n return ref ?? undefined;\r\n}\r\n","import * as React from \"react\";\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Assigns a value to a React ref (either RefCallback or MutableRefObject).\n */\nexport function setRef<T>(ref: PossibleRef<T>, value: T | null): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref !== null && ref !== undefined) {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n}\n\n/**\n * Combines multiple React refs into a single RefCallback.\n * Handles both object refs and callback refs, with proper unmount cleanup.\n */\nexport function useMergeRefs<T>(\n ...refs: PossibleRef<T>[]\n): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback((current: T | null) => {\n for (const ref of refs) {\n setRef(ref, current);\n }\n }, refs);\n}\n","import * as React from \"react\";\r\nimport { classNames } from \"../utils/classNames\";\r\nimport { composeEventHandlers } from \"../utils/composeEventHandlers\";\r\nimport { getElementRef } from \"../utils/getElementRef\";\r\nimport { setRef } from \"../hooks/useMergeRefs\";\r\n\r\nexport interface SlotProps extends React.HTMLAttributes<HTMLElement> {\r\n children?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Merges Slot props onto its immediate child element.\r\n * Preserves child identity, merges classNames, styles, ref forwarding, and event handlers.\r\n */\r\nexport const Slot = React.forwardRef<HTMLElement, SlotProps>(\r\n function Slot(props, forwardedRef) {\r\n const { children, ...slotProps } = props;\r\n\r\n if (React.isValidElement(children)) {\r\n return React.cloneElement(\r\n children,\r\n mergeProps(\r\n slotProps,\r\n children.props as Record<string, unknown>,\r\n forwardedRef,\r\n getElementRef(children),\r\n ),\r\n );\r\n }\r\n\r\n if (React.Children.count(children) > 1) {\r\n React.Children.only(null); // Will throw informative React.Children.only error\r\n }\r\n\r\n return null;\r\n },\r\n);\r\n\r\nSlot.displayName = \"Slot\";\r\n\r\n/**\r\n * Merges slot parent props with child props.\r\n */\r\nfunction mergeProps(\r\n slotProps: Record<string, unknown>,\r\n childProps: Record<string, unknown>,\r\n slotRef: React.Ref<HTMLElement>,\r\n childRef?: React.Ref<HTMLElement>,\r\n): Record<string, unknown> {\r\n const overrideProps: Record<string, unknown> = { ...childProps };\r\n\r\n for (const propName in slotProps) {\r\n const slotPropValue = slotProps[propName];\r\n const childPropValue = childProps[propName];\r\n\r\n const isEventHandler = /^on[A-Z]/.test(propName);\r\n\r\n if (isEventHandler) {\r\n if (\r\n typeof slotPropValue === \"function\" &&\r\n typeof childPropValue === \"function\"\r\n ) {\r\n overrideProps[propName] = composeEventHandlers(\r\n childPropValue as (event: { defaultPrevented: boolean }) => void,\r\n slotPropValue as (event: { defaultPrevented: boolean }) => void,\r\n );\r\n } else if (typeof slotPropValue === \"function\") {\r\n overrideProps[propName] = slotPropValue;\r\n }\r\n } else if (propName === \"className\") {\r\n overrideProps[propName] = classNames(\r\n slotPropValue as string | undefined,\r\n childPropValue as string | undefined,\r\n );\r\n } else if (propName === \"style\") {\r\n overrideProps[propName] = {\r\n ...(slotPropValue as React.CSSProperties | undefined),\r\n ...(childPropValue as React.CSSProperties | undefined),\r\n };\r\n } else {\r\n overrideProps[propName] =\r\n slotPropValue !== undefined ? slotPropValue : childPropValue;\r\n }\r\n }\r\n\r\n // Ref merging\r\n overrideProps.ref = (node: HTMLElement | null) => {\r\n setRef(childRef, node);\r\n setRef(slotRef, node);\r\n };\r\n\r\n return overrideProps;\r\n}\r\n","import * as React from \"react\";\nimport type { ButtonGroupContextValue } from \"./ButtonGroup.types\";\n\nexport const ButtonGroupContext = React.createContext<\n ButtonGroupContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access parent ButtonGroup context if present.\n */\nexport function useButtonGroupContext(): ButtonGroupContextValue | undefined {\n return React.useContext(ButtonGroupContext);\n}\n","import * as React from \"react\";\r\nimport { keyframes } from \"@emotion/react\";\r\nimport { styled } from \"../system/styled\";\r\n\r\nconst enterKeyframe = keyframes`\r\n 0% {\r\n transform: scale(0);\r\n opacity: 0.1;\r\n }\r\n 100% {\r\n transform: scale(1);\r\n opacity: 0.3;\r\n }\r\n`;\r\n\r\nconst exitKeyframe = keyframes`\r\n 0% {\r\n opacity: 0.3;\r\n }\r\n 100% {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nconst pulsateKeyframe = keyframes`\r\n 0% {\r\n transform: scale(1);\r\n }\r\n 50% {\r\n transform: scale(0.92);\r\n }\r\n 100% {\r\n transform: scale(1);\r\n }\r\n`;\r\n\r\nexport interface RippleItem {\r\n key: number;\r\n rippleX: number;\r\n rippleY: number;\r\n rippleSize: number;\r\n pulsating?: boolean;\r\n leaving?: boolean;\r\n}\r\n\r\nexport interface TouchRippleRef {\r\n start: (\r\n event?: React.SyntheticEvent,\r\n options?: { pulsate?: boolean; center?: boolean }\r\n ) => void;\r\n stop: (event?: React.SyntheticEvent) => void;\r\n pulsate: () => void;\r\n}\r\n\r\nexport interface TouchRippleProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n /**\r\n * If true, the ripple will center on the element rather than pointer coordinates\r\n */\r\n center?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst TouchRippleRoot = styled(\"span\", {\r\n name: \"ChellaaTouchRipple\",\r\n slot: \"Root\",\r\n})({\r\n overflow: \"hidden\",\r\n pointerEvents: \"none\",\r\n position: \"absolute\",\r\n zIndex: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n borderRadius: \"inherit\",\r\n});\r\n\r\nconst StyledRippleSpan = styled(\"span\", {\r\n shouldForwardProp: (prop) =>\r\n prop !== \"pulsating\" && prop !== \"leaving\",\r\n})<{ pulsating?: boolean; leaving?: boolean }>(({ pulsating, leaving }) => ({\r\n position: \"absolute\",\r\n borderRadius: \"50%\",\r\n backgroundColor: \"currentColor\",\r\n opacity: 0.3,\r\n animation: `${enterKeyframe} 550ms cubic-bezier(0.4, 0, 0.2, 1)`,\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n animationDuration: \"1ms !important\",\r\n transitionDuration: \"1ms !important\",\r\n },\r\n ...(pulsating && {\r\n animation: `${pulsateKeyframe} 2500ms ease-in-out infinite 200ms`,\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n animation: \"none !important\",\r\n },\r\n }),\r\n ...(leaving && {\r\n opacity: 0,\r\n animation: `${exitKeyframe} 550ms cubic-bezier(0.4, 0, 0.2, 1) forwards`,\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n animationDuration: \"1ms !important\",\r\n transitionDuration: \"1ms !important\",\r\n },\r\n }),\r\n}));\r\n\r\n/**\r\n * TouchRipple component delivers tactile Material Design touch/click ripple animations.\r\n */\r\nexport const TouchRipple = React.forwardRef<TouchRippleRef, TouchRippleProps>(\r\n function TouchRipple(props, ref) {\r\n const { center: centerProp = false, className, ...rest } = props;\r\n const [ripples, setRipples] = React.useState<RippleItem[]>([]);\r\n const nextKey = React.useRef(0);\r\n const containerRef = React.useRef<HTMLSpanElement | null>(null);\r\n const timeoutIdsRef = React.useRef<ReturnType<typeof setTimeout>[]>([]);\r\n const isMountedRef = React.useRef(true);\r\n\r\n React.useEffect(() => {\r\n isMountedRef.current = true;\r\n return () => {\r\n isMountedRef.current = false;\r\n timeoutIdsRef.current.forEach((id) => clearTimeout(id));\r\n timeoutIdsRef.current = [];\r\n };\r\n }, []);\r\n\r\n const start = React.useCallback(\r\n (\r\n event?: React.SyntheticEvent,\r\n options: { pulsate?: boolean; center?: boolean } = {}\r\n ) => {\r\n const { pulsate = false, center = centerProp || pulsate } = options;\r\n\r\n const container = containerRef.current;\r\n if (!container) return;\r\n\r\n const rect = container.getBoundingClientRect();\r\n\r\n let rippleX: number;\r\n let rippleY: number;\r\n let rippleSize: number;\r\n\r\n const nativeEvent = event?.nativeEvent;\r\n let clientX: number | undefined;\r\n let clientY: number | undefined;\r\n\r\n if (\r\n nativeEvent &&\r\n \"clientX\" in nativeEvent &&\r\n \"clientY\" in nativeEvent &&\r\n typeof (nativeEvent as MouseEvent).clientX === \"number\" &&\r\n typeof (nativeEvent as MouseEvent).clientY === \"number\"\r\n ) {\r\n clientX = (nativeEvent as MouseEvent).clientX;\r\n clientY = (nativeEvent as MouseEvent).clientY;\r\n } else if (\r\n nativeEvent &&\r\n \"touches\" in nativeEvent &&\r\n (nativeEvent as TouchEvent).touches &&\r\n (nativeEvent as TouchEvent).touches.length > 0\r\n ) {\r\n const touch = (nativeEvent as TouchEvent).touches[0];\r\n if (touch) {\r\n clientX = touch.clientX;\r\n clientY = touch.clientY;\r\n }\r\n }\r\n\r\n if (center || clientX === undefined || clientY === undefined) {\r\n rippleX = Math.round(rect.width / 2);\r\n rippleY = Math.round(rect.height / 2);\r\n rippleSize = Math.max(rect.width, rect.height);\r\n } else {\r\n rippleX = Math.round(clientX - rect.left);\r\n rippleY = Math.round(clientY - rect.top);\r\n\r\n const sizeX =\r\n Math.max(Math.abs(container.clientWidth - rippleX), rippleX) * 2 + 2;\r\n const sizeY =\r\n Math.max(Math.abs(container.clientHeight - rippleY), rippleY) * 2 + 2;\r\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\r\n }\r\n\r\n const currentKey = nextKey.current;\r\n nextKey.current += 1;\r\n\r\n setRipples((prev) => [\r\n ...prev,\r\n {\r\n key: currentKey,\r\n rippleX,\r\n rippleY,\r\n rippleSize,\r\n pulsating: pulsate,\r\n leaving: false,\r\n },\r\n ]);\r\n },\r\n [centerProp]\r\n );\r\n\r\n const stop = React.useCallback(() => {\r\n setRipples((prev) => {\r\n if (prev.length === 0) return prev;\r\n return prev.map((ripple) => ({ ...ripple, leaving: true }));\r\n });\r\n\r\n const prefersReduced =\r\n typeof window !== \"undefined\" &&\r\n window.matchMedia &&\r\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\r\n const cleanupDelay = prefersReduced ? 10 : 550;\r\n\r\n const timerId = setTimeout(() => {\r\n if (!isMountedRef.current) return;\r\n setRipples((prev) => prev.filter((r) => !r.leaving));\r\n timeoutIdsRef.current = timeoutIdsRef.current.filter((id) => id !== timerId);\r\n }, cleanupDelay);\r\n\r\n timeoutIdsRef.current.push(timerId);\r\n }, []);\r\n\r\n const pulsate = React.useCallback(() => {\r\n start(undefined, { pulsate: true });\r\n }, [start]);\r\n\r\n React.useImperativeHandle(\r\n ref,\r\n () => ({\r\n start,\r\n stop,\r\n pulsate,\r\n }),\r\n [start, stop, pulsate]\r\n );\r\n\r\n return (\r\n <TouchRippleRoot\r\n ref={containerRef}\r\n className={className}\r\n aria-hidden=\"true\"\r\n {...rest}\r\n >\r\n {ripples.map((item) => {\r\n const style: React.CSSProperties = {\r\n width: `${item.rippleSize}px`,\r\n height: `${item.rippleSize}px`,\r\n top: `${-(item.rippleSize / 2) + item.rippleY}px`,\r\n left: `${-(item.rippleSize / 2) + item.rippleX}px`,\r\n };\r\n\r\n return (\r\n <StyledRippleSpan\r\n key={item.key}\r\n pulsating={item.pulsating}\r\n leaving={item.leaving}\r\n style={style}\r\n />\r\n );\r\n })}\r\n </TouchRippleRoot>\r\n );\r\n }\r\n);\r\n\r\nTouchRipple.displayName = \"TouchRipple\";\r\n","import * as React from \"react\";\r\nimport type { TouchRippleRef, TouchRippleProps } from \"./TouchRipple\";\r\nimport { composeEventHandlers } from \"../utils/composeEventHandlers\";\r\n\r\nexport interface UseRippleOptions {\r\n disabled?: boolean;\r\n disableRipple?: boolean;\r\n center?: boolean;\r\n}\r\n\r\nexport interface UseRippleReturn {\r\n rippleRef: React.RefObject<TouchRippleRef>;\r\n rippleProps: TouchRippleProps & { ref: React.RefObject<TouchRippleRef> };\r\n getRippleHandlers: <T extends Record<string, any>>(props?: T) => T;\r\n}\r\n\r\n/**\r\n * Hook connecting user interactions (pointer/touch/keyboard) to TouchRipple.\r\n */\r\nexport function useRipple(options: UseRippleOptions = {}): UseRippleReturn {\r\n const { disabled = false, disableRipple = false, center = false } = options;\r\n const rippleRef = React.useRef<TouchRippleRef>(null);\r\n\r\n const onMouseDown = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.start(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onMouseUp = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.stop(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onMouseLeave = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.stop(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onTouchStart = React.useCallback(\r\n (event: React.TouchEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.start(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onTouchEnd = React.useCallback(\r\n (event: React.TouchEvent) => {\r\n if (disabled || disableRipple) return;\r\n rippleRef.current?.stop(event);\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent) => {\r\n if (disabled || disableRipple) return;\r\n if (event.key === \" \" || event.key === \"Enter\") {\r\n rippleRef.current?.start(undefined, { pulsate: true });\r\n }\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onKeyUp = React.useCallback(\r\n (event: React.KeyboardEvent) => {\r\n if (disabled || disableRipple) return;\r\n if (event.key === \" \" || event.key === \"Enter\") {\r\n rippleRef.current?.stop();\r\n }\r\n },\r\n [disabled, disableRipple]\r\n );\r\n\r\n const onBlur = React.useCallback(() => {\r\n rippleRef.current?.stop();\r\n }, []);\r\n\r\n const getRippleHandlers = React.useCallback(\r\n <T extends Record<string, any>>(props: T = {} as T): T => {\r\n return {\r\n ...props,\r\n onMouseDown: composeEventHandlers(props.onMouseDown, onMouseDown),\r\n onMouseUp: composeEventHandlers(props.onMouseUp, onMouseUp),\r\n onMouseLeave: composeEventHandlers(props.onMouseLeave, onMouseLeave),\r\n onTouchStart: composeEventHandlers(props.onTouchStart, onTouchStart),\r\n onTouchEnd: composeEventHandlers(props.onTouchEnd, onTouchEnd),\r\n onKeyDown: composeEventHandlers(props.onKeyDown, onKeyDown),\r\n onKeyUp: composeEventHandlers(props.onKeyUp, onKeyUp),\r\n onBlur: composeEventHandlers(props.onBlur, onBlur),\r\n };\r\n },\r\n [\r\n onMouseDown,\r\n onMouseUp,\r\n onMouseLeave,\r\n onTouchStart,\r\n onTouchEnd,\r\n onKeyDown,\r\n onKeyUp,\r\n onBlur,\r\n ]\r\n );\r\n\r\n return {\r\n rippleRef,\r\n rippleProps: {\r\n ref: rippleRef,\r\n center,\r\n },\r\n getRippleHandlers,\r\n };\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useButtonGroupContext } from \"../ButtonGroup/ButtonGroupContext\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { TouchRipple } from \"../../ripple/TouchRipple\";\r\nimport { useRipple } from \"../../ripple/useRipple\";\r\nimport type { ButtonProps } from \"./Button.types\";\r\n\r\n/**\r\n * Animated SVG spinner for loading states.\r\n */\r\nfunction ButtonSpinner() {\r\n return (\r\n <svg\r\n className=\"cl-button__spinner\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeOpacity=\"0.25\"\r\n />\r\n <path\r\n d=\"M12 3a9 9 0 0 1 9 9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n\r\nconst StyledButtonRoot = styled(\"button\", {\r\n name: \"ChellaaButton\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"isFullWidth\" &&\r\n prop !== \"isLoading\" &&\r\n prop !== \"isDisabled\" &&\r\n prop !== \"loadingText\" &&\r\n prop !== \"loadingPosition\" &&\r\n prop !== \"startIcon\" &&\r\n prop !== \"endIcon\" &&\r\n prop !== \"disableRipple\" &&\r\n prop !== \"asChild\",\r\n})({});\r\n\r\n/**\r\n * Chellaa React Button component.\r\n *\r\n * Fundamental action primitive supporting 5 variants, 5 sizes, 7 color schemes,\r\n * tactile touch ripple feedback, loading states, icons, keyboard interaction,\r\n * theme overrides, and polymorphic slot delegation via `asChild`.\r\n */\r\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n function Button(props, forwardedRef) {\r\n const {\r\n asChild = false,\r\n variant: variantProp,\r\n size: sizeProp,\r\n colorScheme: colorSchemeProp,\r\n isLoading = false,\r\n loadingText,\r\n loadingPosition = \"start\",\r\n isDisabled: isDisabledProp,\r\n isFullWidth = false,\r\n startIcon,\r\n endIcon,\r\n className,\r\n children,\r\n disabled: disabledProp,\r\n type = \"button\",\r\n onClick,\r\n onKeyDown,\r\n disableRipple = false,\r\n sx,\r\n ...restProps\r\n } = props;\r\n\r\n const buttonGroup = useButtonGroupContext();\r\n\r\n const variant = variantProp ?? buttonGroup?.variant ?? \"solid\";\r\n const size = sizeProp ?? buttonGroup?.size ?? \"md\";\r\n const colorScheme =\r\n colorSchemeProp ?? buttonGroup?.colorScheme ?? \"primary\";\r\n const isDisabled =\r\n isDisabledProp ?? disabledProp ?? buttonGroup?.isDisabled ?? false;\r\n const isEffectivelyDisabled = isDisabled || isLoading;\r\n\r\n const { rippleProps, getRippleHandlers } = useRipple({\r\n disabled: isEffectivelyDisabled,\r\n disableRipple,\r\n });\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n if (isEffectivelyDisabled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n onClick?.(event);\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\r\n if (isEffectivelyDisabled) {\r\n if (event.key === \" \" || event.key === \"Enter\") {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n }\r\n onKeyDown?.(event);\r\n };\r\n\r\n const buttonClassName = classNames(\r\n \"cl-button\",\r\n `cl-button--${variant}`,\r\n `cl-button--${size}`,\r\n `cl-button--${colorScheme}`,\r\n isLoading && \"cl-button--loading\",\r\n isDisabled && \"cl-button--disabled\",\r\n isFullWidth && \"cl-button--full-width\",\r\n className,\r\n );\r\n\r\n const spinner = <ButtonSpinner />;\r\n\r\n // When asChild is enabled, delegate root rendering to child via Slot\r\n if (asChild) {\r\n return (\r\n <StyledButtonRoot\r\n as={Slot}\r\n ref={forwardedRef as React.Ref<HTMLElement>}\r\n className={buttonClassName}\r\n aria-disabled={isEffectivelyDisabled ? true : undefined}\r\n aria-busy={isLoading ? true : undefined}\r\n sx={sx}\r\n onClick={\r\n handleClick as unknown as React.MouseEventHandler<HTMLElement>\r\n }\r\n onKeyDown={\r\n handleKeyDown as unknown as React.KeyboardEventHandler<HTMLElement>\r\n }\r\n {...restProps}\r\n >\r\n {children}\r\n </StyledButtonRoot>\r\n );\r\n }\r\n\r\n // Center loading state: keep button dimensions identical by visually hiding label\r\n const isCenterLoading = isLoading && loadingPosition === \"center\";\r\n\r\n const buttonHandlers = getRippleHandlers({\r\n onClick: handleClick,\r\n onKeyDown: handleKeyDown,\r\n ...restProps,\r\n });\r\n\r\n return (\r\n <StyledButtonRoot\r\n ref={forwardedRef}\r\n type={type}\r\n disabled={isEffectivelyDisabled ? true : undefined}\r\n aria-disabled={isEffectivelyDisabled ? true : undefined}\r\n aria-busy={isLoading ? true : undefined}\r\n className={buttonClassName}\r\n sx={sx}\r\n {...buttonHandlers}\r\n >\r\n {isCenterLoading ? (\r\n <>\r\n <span className=\"cl-button__spinner-wrapper--center\">\r\n {spinner}\r\n </span>\r\n <span className=\"cl-button__content--hidden\">\r\n {startIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--start\"\r\n aria-hidden=\"true\"\r\n >\r\n {startIcon}\r\n </span>\r\n )}\r\n {children !== undefined && (\r\n <span className=\"cl-button__label\">{children}</span>\r\n )}\r\n {endIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--end\"\r\n aria-hidden=\"true\"\r\n >\r\n {endIcon}\r\n </span>\r\n )}\r\n </span>\r\n </>\r\n ) : (\r\n <>\r\n {isLoading && loadingPosition === \"start\" && spinner}\r\n {!isLoading && startIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--start\"\r\n aria-hidden=\"true\"\r\n >\r\n {startIcon}\r\n </span>\r\n )}\r\n {isLoading && loadingText ? (\r\n <span className=\"cl-button__label\">{loadingText}</span>\r\n ) : children !== undefined ? (\r\n <span className=\"cl-button__label\">{children}</span>\r\n ) : null}\r\n {isLoading && loadingPosition === \"end\" && spinner}\r\n {!isLoading && endIcon && (\r\n <span\r\n className=\"cl-button__icon cl-button__icon--end\"\r\n aria-hidden=\"true\"\r\n >\r\n {endIcon}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n {!disableRipple && !isEffectivelyDisabled && (\r\n <TouchRipple {...rippleProps} />\r\n )}\r\n </StyledButtonRoot>\r\n );\r\n },\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n ButtonGroupContextValue,\n ButtonGroupProps,\n} from \"./ButtonGroup.types\";\nimport { ButtonGroupContext } from \"./ButtonGroupContext\";\n\n/**\n * Chellaa React ButtonGroup component.\n *\n * Container primitive for grouping related buttons with unified sizing,\n * visual variants, color schemes, disabled states, and attached border management.\n */\nexport const ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n function ButtonGroup(props, forwardedRef) {\n const {\n asChild = false,\n size,\n variant,\n colorScheme,\n isDisabled,\n isAttached = false,\n orientation = \"horizontal\",\n spacing,\n className,\n style,\n children,\n role: roleProp,\n ...restProps\n } = props;\n\n const role =\n roleProp !== undefined ? roleProp : asChild ? undefined : \"group\";\n\n const contextValue = React.useMemo<ButtonGroupContextValue>(\n () => ({\n size,\n variant,\n colorScheme,\n isDisabled,\n }),\n [size, variant, colorScheme, isDisabled],\n );\n\n const groupClassName = classNames(\n \"cl-button-group\",\n `cl-button-group--${orientation}`,\n isAttached && \"cl-button-group--attached\",\n className,\n );\n\n const groupStyle: React.CSSProperties = {\n ...style,\n ...(spacing !== undefined && !isAttached\n ? { gap: typeof spacing === \"number\" ? `${spacing}px` : spacing }\n : {}),\n };\n\n if (asChild) {\n return (\n <ButtonGroupContext.Provider value={contextValue}>\n <Slot\n ref={forwardedRef as React.Ref<HTMLElement>}\n role={role}\n className={groupClassName}\n style={groupStyle}\n {...restProps}\n >\n {children}\n </Slot>\n </ButtonGroupContext.Provider>\n );\n }\n\n return (\n <ButtonGroupContext.Provider value={contextValue}>\n <div\n ref={forwardedRef}\n role={role}\n className={groupClassName}\n style={groupStyle}\n {...restProps}\n >\n {children}\n </div>\n </ButtonGroupContext.Provider>\n );\n },\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport interface BoxProps extends React.HTMLAttributes<HTMLElement> {\r\n /**\r\n * If true, delegating rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component to render (alias of `as`)\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component to render\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledBoxRoot = styled(\"div\", {\r\n name: \"ChellaaBox\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) => prop !== \"asChild\" && prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Universal polymorphic layout container with theme-aware `sx` styling and `asChild` composition.\r\n *\r\n * @example\r\n * <Box sx={{ p: 2, bgcolor: 'background.paper', borderRadius: 2 }}>\r\n * Content\r\n * </Box>\r\n */\r\nexport const Box = React.forwardRef<HTMLElement, BoxProps>(\r\n function Box(props, ref) {\r\n const { asChild = false, component, as, className, style, sx, children, ...rest } = props;\r\n const targetTag = component || as;\r\n const boxClassName = classNames(\"cl-box\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <StyledBoxRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={boxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledBoxRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledBoxRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={boxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledBoxRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledBoxRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={boxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledBoxRoot>\r\n );\r\n }\r\n);\r\n\r\nBox.displayName = \"Box\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { CSSProperties } from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { parseSx } from \"../../system/sx\";\r\nimport type { ResponsiveValue, SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type StackDirection = \"row\" | \"row-reverse\" | \"column\" | \"column-reverse\";\r\n\r\nexport interface StackOwnerState {\r\n direction?: ResponsiveValue<StackDirection> | undefined;\r\n spacing?: ResponsiveValue<number | string> | undefined;\r\n alignItems?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n justifyContent?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n flexWrap?: ResponsiveValue<CSSProperties[\"flexWrap\"]> | undefined;\r\n useFlexGap?: boolean | undefined;\r\n}\r\n\r\nexport interface StackProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n StackOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * Element placed between each child\r\n */\r\n divider?: React.ReactNode;\r\n /**\r\n * System-aware sx styling prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledStackRoot = styled(\"div\", {\r\n name: \"ChellaaStack\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"direction\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"alignItems\" &&\r\n prop !== \"justifyContent\" &&\r\n prop !== \"flexWrap\" &&\r\n prop !== \"useFlexGap\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ ownerState: StackOwnerState }>(({ theme, ownerState }) => {\r\n const styles: Record<string, any> = {};\r\n\r\n // 1. Responsive direction (if array or object or non-default)\r\n if (typeof ownerState.direction === \"object\") {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexDirection: ownerState.direction })\r\n );\r\n }\r\n\r\n // 2. Responsive spacing (gap)\r\n if (ownerState.spacing !== undefined && ownerState.spacing !== 0) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { gap: ownerState.spacing })\r\n );\r\n }\r\n\r\n // 3. Alignment and wrapping\r\n if (ownerState.alignItems !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { alignItems: ownerState.alignItems })\r\n );\r\n }\r\n if (ownerState.justifyContent !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { justifyContent: ownerState.justifyContent })\r\n );\r\n }\r\n if (ownerState.flexWrap !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexWrap: ownerState.flexWrap })\r\n );\r\n }\r\n\r\n return styles;\r\n});\r\n\r\n/**\r\n * 1D Flexbox layout container managing direction, spacing, alignment, and dividers.\r\n *\r\n * @example\r\n * <Stack direction=\"row\" spacing={2} alignItems=\"center\">\r\n * <Item>1</Item>\r\n * <Item>2</Item>\r\n * </Stack>\r\n */\r\nexport const Stack = React.forwardRef<HTMLElement, StackProps>(\r\n function Stack(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n direction = \"column\",\r\n spacing = 0,\r\n alignItems,\r\n justifyContent,\r\n flexWrap,\r\n useFlexGap = true,\r\n divider,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const ownerState: StackOwnerState = {\r\n direction,\r\n spacing,\r\n alignItems,\r\n justifyContent,\r\n flexWrap,\r\n useFlexGap,\r\n };\r\n\r\n const isSimpleDirection = typeof direction === \"string\";\r\n\r\n const stackClassName = classNames(\r\n \"cl-stack\",\r\n isSimpleDirection && `cl-stack--${direction}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n // Handle divider insertion between valid React children\r\n let renderedChildren = children;\r\n if (divider && !asChild) {\r\n const validChildren = React.Children.toArray(children).filter(\r\n React.isValidElement\r\n );\r\n renderedChildren = validChildren.reduce<React.ReactNode[]>(\r\n (acc, child, index) => {\r\n acc.push(child);\r\n if (index < validChildren.length - 1) {\r\n acc.push(\r\n React.isValidElement(divider)\r\n ? React.cloneElement(divider as React.ReactElement, {\r\n key: `stack-divider-${index}`,\r\n })\r\n : (\r\n <span key={`stack-divider-${index}`}>{divider}</span>\r\n )\r\n );\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n }\r\n\r\n if (asChild) {\r\n return (\r\n <StyledStackRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={stackClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledStackRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledStackRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={stackClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledStackRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledStackRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={stackClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledStackRoot>\r\n );\r\n }\r\n);\r\n\r\nStack.displayName = \"Stack\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { CSSProperties } from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { parseSx } from \"../../system/sx\";\r\nimport type { ResponsiveValue, SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type { StackDirection } from \"../Stack\";\r\n\r\nexport interface FlexOwnerState {\r\n direction?: ResponsiveValue<StackDirection> | undefined;\r\n spacing?: ResponsiveValue<number | string> | undefined;\r\n gap?: ResponsiveValue<number | string> | undefined;\r\n alignItems?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n align?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n justifyContent?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n justify?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n flexWrap?: ResponsiveValue<CSSProperties[\"flexWrap\"]> | undefined;\r\n wrap?: ResponsiveValue<CSSProperties[\"flexWrap\"]> | undefined;\r\n inline?: boolean | undefined;\r\n center?: boolean | undefined;\r\n}\r\n\r\nexport interface FlexProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n FlexOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Underlying HTML element or component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * Element placed between each child\r\n */\r\n divider?: React.ReactNode | undefined;\r\n /**\r\n * System-aware sx styling prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledFlexRoot = styled(\"div\", {\r\n name: \"ChellaaFlex\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"direction\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"gap\" &&\r\n prop !== \"alignItems\" &&\r\n prop !== \"align\" &&\r\n prop !== \"justifyContent\" &&\r\n prop !== \"justify\" &&\r\n prop !== \"flexWrap\" &&\r\n prop !== \"wrap\" &&\r\n prop !== \"inline\" &&\r\n prop !== \"center\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ ownerState: FlexOwnerState }>(({ theme, ownerState }) => {\r\n const isCenter = ownerState.center ?? false;\r\n const styles: Record<string, any> = {};\r\n\r\n // 1. Responsive direction (if array or object)\r\n if (typeof ownerState.direction === \"object\") {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexDirection: ownerState.direction })\r\n );\r\n }\r\n\r\n // 2. Responsive gap / spacing\r\n const gapValue = ownerState.gap ?? ownerState.spacing;\r\n if (gapValue !== undefined) {\r\n Object.assign(styles, parseSx(theme, { gap: gapValue }));\r\n }\r\n\r\n // 3. Align & Justify (if not center shorthand)\r\n if (!isCenter) {\r\n const alignVal = ownerState.align ?? ownerState.alignItems;\r\n if (alignVal !== undefined) {\r\n Object.assign(styles, parseSx(theme, { alignItems: alignVal }));\r\n }\r\n\r\n const justifyVal = ownerState.justify ?? ownerState.justifyContent;\r\n if (justifyVal !== undefined) {\r\n Object.assign(styles, parseSx(theme, { justifyContent: justifyVal }));\r\n }\r\n }\r\n\r\n // 4. Wrapping\r\n const wrapVal = ownerState.wrap ?? ownerState.flexWrap;\r\n if (wrapVal !== undefined) {\r\n Object.assign(styles, parseSx(theme, { flexWrap: wrapVal }));\r\n }\r\n\r\n return styles;\r\n});\r\n\r\n/**\r\n * 1D Flexbox layout container defaulting to horizontal row flow with convenient\r\n * shorthands: `center`, `inline`, `align`, `justify`, `wrap`, and `gap`.\r\n *\r\n * @example\r\n * <Flex center gap={2}>\r\n * <Avatar />\r\n * <Text>User Name</Text>\r\n * </Flex>\r\n */\r\nexport const Flex = React.forwardRef<HTMLElement, FlexProps>(\r\n function Flex(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n direction = \"row\",\r\n spacing,\r\n gap,\r\n alignItems,\r\n align,\r\n justifyContent,\r\n justify,\r\n flexWrap,\r\n wrap,\r\n inline = false,\r\n center = false,\r\n divider,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const ownerState: FlexOwnerState = {\r\n direction,\r\n spacing,\r\n gap,\r\n alignItems,\r\n align,\r\n justifyContent,\r\n justify,\r\n flexWrap,\r\n wrap,\r\n inline,\r\n center,\r\n };\r\n\r\n const isSimpleDirection = typeof direction === \"string\";\r\n\r\n const flexClassName = classNames(\r\n \"cl-flex\",\r\n inline && \"cl-flex--inline\",\r\n center && \"cl-flex--center\",\r\n isSimpleDirection && `cl-flex--${direction}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n let renderedChildren = children;\r\n if (divider && !asChild) {\r\n const validChildren = React.Children.toArray(children).filter(\r\n React.isValidElement\r\n );\r\n renderedChildren = validChildren.reduce<React.ReactNode[]>(\r\n (acc, child, index) => {\r\n acc.push(child);\r\n if (index < validChildren.length - 1) {\r\n acc.push(\r\n React.isValidElement(divider)\r\n ? React.cloneElement(divider as React.ReactElement, {\r\n key: `flex-divider-${index}`,\r\n })\r\n : <span key={`flex-divider-${index}`}>{divider}</span>\r\n );\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n }\r\n\r\n if (asChild) {\r\n return (\r\n <StyledFlexRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={flexClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledFlexRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledFlexRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={flexClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledFlexRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledFlexRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={flexClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {renderedChildren}\r\n </StyledFlexRoot>\r\n );\r\n }\r\n);\r\n\r\nFlex.displayName = \"Flex\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport type { BreakpointKey } from \"../../theme/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport interface ContainerOwnerState {\r\n maxWidth?: BreakpointKey | false | undefined;\r\n fixed?: boolean | undefined;\r\n disableGutters?: boolean | undefined;\r\n}\r\n\r\nexport interface ContainerProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n ContainerOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledContainerRoot = styled(\"div\", {\r\n name: \"ChellaaContainer\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"maxWidth\" &&\r\n prop !== \"fixed\" &&\r\n prop !== \"disableGutters\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Centered responsive max-width container with fluid gutters.\r\n *\r\n * @example\r\n * <Container maxWidth=\"md\">\r\n * <Typography variant=\"h1\">Header</Typography>\r\n * </Container>\r\n */\r\nexport const Container = React.forwardRef<HTMLElement, ContainerProps>(\r\n function Container(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n maxWidth = \"lg\",\r\n fixed = false,\r\n disableGutters = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const containerClassName = classNames(\r\n \"cl-container\",\r\n disableGutters && \"cl-container--disable-gutters\",\r\n fixed && \"cl-container--fixed\",\r\n maxWidth !== false && `cl-container--${maxWidth}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledContainerRoot\r\n as={Slot}\r\n ref={ref as any}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledContainerRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledContainerRoot\r\n as={targetTag}\r\n ref={ref as any}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledContainerRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledContainerRoot\r\n ref={ref as any}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledContainerRoot>\r\n );\r\n }\r\n);\r\n\r\nContainer.displayName = \"Container\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport type { CSSProperties } from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { parseSx } from \"../../system/sx\";\r\nimport type { ResponsiveValue, SxProps } from \"../../system/types\";\r\nimport type { BreakpointKey } from \"../../theme/types\";\r\nimport { breakpointKeys } from \"../../theme/breakpoints\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type GridSize = boolean | \"auto\" | number;\r\nexport type GridWrap = \"nowrap\" | \"wrap\" | \"wrap-reverse\";\r\nexport type GridDirection = \"row\" | \"row-reverse\" | \"column\" | \"column-reverse\";\r\n\r\nexport interface GridOwnerState {\r\n container?: boolean | undefined;\r\n item?: boolean | undefined;\r\n columns?: number | undefined;\r\n spacing?: ResponsiveValue<number | string> | undefined;\r\n rowSpacing?: ResponsiveValue<number | string> | undefined;\r\n columnSpacing?: ResponsiveValue<number | string> | undefined;\r\n direction?: ResponsiveValue<GridDirection> | undefined;\r\n wrap?: GridWrap | undefined;\r\n alignItems?: ResponsiveValue<CSSProperties[\"alignItems\"]> | undefined;\r\n justifyContent?: ResponsiveValue<CSSProperties[\"justifyContent\"]> | undefined;\r\n xs?: GridSize | undefined;\r\n sm?: GridSize | undefined;\r\n md?: GridSize | undefined;\r\n lg?: GridSize | undefined;\r\n xl?: GridSize | undefined;\r\n}\r\n\r\nexport interface GridProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n GridOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction generateGridSizeStyles(\r\n size: GridSize,\r\n columns: number = 12\r\n): Record<string, any> {\r\n if (size === true) {\r\n return {\r\n flexBasis: 0,\r\n flexGrow: 1,\r\n maxWidth: \"100%\",\r\n };\r\n }\r\n\r\n if (size === \"auto\") {\r\n return {\r\n flexBasis: \"auto\",\r\n flexGrow: 0,\r\n maxWidth: \"none\",\r\n };\r\n }\r\n\r\n if (typeof size === \"number\") {\r\n const widthPercentage = `${Math.round((size / columns) * 10e7) / 10e5}%`;\r\n return {\r\n flexBasis: widthPercentage,\r\n flexGrow: 0,\r\n maxWidth: widthPercentage,\r\n };\r\n }\r\n\r\n return {};\r\n}\r\n\r\nconst StyledGridRoot = styled(\"div\", {\r\n name: \"ChellaaGrid\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"container\" &&\r\n prop !== \"item\" &&\r\n prop !== \"columns\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"rowSpacing\" &&\r\n prop !== \"columnSpacing\" &&\r\n prop !== \"direction\" &&\r\n prop !== \"wrap\" &&\r\n prop !== \"alignItems\" &&\r\n prop !== \"justifyContent\" &&\r\n prop !== \"xs\" &&\r\n prop !== \"sm\" &&\r\n prop !== \"md\" &&\r\n prop !== \"lg\" &&\r\n prop !== \"xl\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ ownerState: GridOwnerState }>(({ theme, ownerState }) => {\r\n const styles: Record<string, any> = {};\r\n const columns = ownerState.columns ?? 12;\r\n\r\n // 1. Container responsive styles\r\n if (ownerState.container) {\r\n if (typeof ownerState.direction === \"object\") {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { flexDirection: ownerState.direction })\r\n );\r\n }\r\n\r\n if (ownerState.spacing !== undefined) {\r\n Object.assign(styles, parseSx(theme, { gap: ownerState.spacing }));\r\n }\r\n if (ownerState.rowSpacing !== undefined) {\r\n Object.assign(styles, parseSx(theme, { rowGap: ownerState.rowSpacing }));\r\n }\r\n if (ownerState.columnSpacing !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { columnGap: ownerState.columnSpacing })\r\n );\r\n }\r\n if (ownerState.alignItems !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { alignItems: ownerState.alignItems })\r\n );\r\n }\r\n if (ownerState.justifyContent !== undefined) {\r\n Object.assign(\r\n styles,\r\n parseSx(theme, { justifyContent: ownerState.justifyContent })\r\n );\r\n }\r\n }\r\n\r\n // 2. Item sizing across breakpoints\r\n const bpSizes: Record<BreakpointKey, GridSize | undefined> = {\r\n xs: ownerState.xs,\r\n sm: ownerState.sm,\r\n md: ownerState.md,\r\n lg: ownerState.lg,\r\n xl: ownerState.xl,\r\n };\r\n\r\n for (const bp of breakpointKeys) {\r\n const size = bpSizes[bp];\r\n if (size !== undefined) {\r\n const sizeStyles = generateGridSizeStyles(size, columns);\r\n if (bp === \"xs\") {\r\n Object.assign(styles, sizeStyles);\r\n } else {\r\n const media = theme.breakpoints.up(bp);\r\n styles[media] = {\r\n ...(styles[media] || {}),\r\n ...sizeStyles,\r\n };\r\n }\r\n }\r\n }\r\n\r\n return styles;\r\n});\r\n\r\n/**\r\n * Material 12-column responsive layout grid.\r\n *\r\n * @example\r\n * <Grid container spacing={2}>\r\n * <Grid item xs={12} md={6}>Item 1</Grid>\r\n * <Grid item xs={12} md={6}>Item 2</Grid>\r\n * </Grid>\r\n */\r\nexport const Grid = React.forwardRef<HTMLElement, GridProps>(\r\n function Grid(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n container = false,\r\n item = false,\r\n columns = 12,\r\n spacing,\r\n rowSpacing,\r\n columnSpacing,\r\n direction = \"row\",\r\n wrap = \"wrap\",\r\n alignItems,\r\n justifyContent,\r\n xs,\r\n sm,\r\n md,\r\n lg,\r\n xl,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const ownerState: GridOwnerState = {\r\n container,\r\n item,\r\n columns,\r\n spacing,\r\n rowSpacing,\r\n columnSpacing,\r\n direction,\r\n wrap,\r\n alignItems,\r\n justifyContent,\r\n xs,\r\n sm,\r\n md,\r\n lg,\r\n xl,\r\n };\r\n\r\n const isSimpleDirection = typeof direction === \"string\";\r\n\r\n const gridClassName = classNames(\r\n \"cl-grid\",\r\n container && \"cl-grid--container\",\r\n item && \"cl-grid--item\",\r\n wrap && `cl-grid--${wrap}`,\r\n isSimpleDirection && `cl-grid--direction-${direction}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledGridRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={gridClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledGridRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledGridRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={gridClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledGridRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledGridRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={gridClassName}\r\n style={style}\r\n ownerState={ownerState}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledGridRoot>\r\n );\r\n }\r\n);\r\n\r\nGrid.displayName = \"Grid\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\r\nexport type DividerVariant = \"fullWidth\" | \"inset\" | \"middle\";\r\nexport type DividerTextAlign = \"center\" | \"left\" | \"right\";\r\nexport type DividerLineStyle = \"solid\" | \"dashed\" | \"dotted\";\r\n\r\nexport interface DividerOwnerState {\r\n orientation?: DividerOrientation | undefined;\r\n variant?: DividerVariant | undefined;\r\n lineStyle?: DividerLineStyle | undefined;\r\n flexItem?: boolean | undefined;\r\n light?: boolean | undefined;\r\n textAlign?: DividerTextAlign | undefined;\r\n hasChildren?: boolean | undefined;\r\n}\r\n\r\nexport interface DividerProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n DividerOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledDividerRoot = styled(\"hr\", {\r\n name: \"ChellaaDivider\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"orientation\" &&\r\n prop !== \"variant\" &&\r\n prop !== \"lineStyle\" &&\r\n prop !== \"flexItem\" &&\r\n prop !== \"light\" &&\r\n prop !== \"textAlign\" &&\r\n prop !== \"hasChildren\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Divider visual separator for grouping, lists, toolbars, and labeled sections.\r\n *\r\n * @example\r\n * <Divider />\r\n * <Divider>OR</Divider>\r\n * <Divider orientation=\"vertical\" flexItem />\r\n */\r\nexport const Divider = React.forwardRef<HTMLElement, DividerProps>(\r\n function Divider(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n orientation = \"horizontal\",\r\n variant = \"fullWidth\",\r\n lineStyle = \"solid\",\r\n flexItem = false,\r\n light = false,\r\n textAlign = \"center\",\r\n className,\r\n style,\r\n sx,\r\n children,\r\n role: roleProp,\r\n ...rest\r\n } = props;\r\n\r\n const hasChildren = Boolean(children);\r\n\r\n const dividerClassName = classNames(\r\n \"cl-divider\",\r\n `cl-divider--${orientation}`,\r\n variant !== \"fullWidth\" && `cl-divider--${variant}`,\r\n lineStyle !== \"solid\" && `cl-divider--${lineStyle}`,\r\n flexItem && \"cl-divider--flex-item\",\r\n light && \"cl-divider--light\",\r\n hasChildren && \"cl-divider--with-children\",\r\n hasChildren && `cl-divider--align-${textAlign}`,\r\n className\r\n );\r\n\r\n // Determine default semantic tag\r\n let defaultTag: React.ElementType = \"hr\";\r\n if (orientation === \"vertical\" || hasChildren) {\r\n defaultTag = \"div\";\r\n }\r\n\r\n const targetTag = component || as || defaultTag;\r\n\r\n // Accessibility attributes\r\n const isNativeHr = targetTag === \"hr\";\r\n const role = roleProp || (isNativeHr ? undefined : \"separator\");\r\n const ariaOrientation =\r\n isNativeHr\r\n ? undefined\r\n : orientation === \"vertical\"\r\n ? \"vertical\"\r\n : undefined;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledDividerRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLHRElement>}\r\n className={dividerClassName}\r\n style={style}\r\n sx={sx}\r\n role={role}\r\n aria-orientation={ariaOrientation}\r\n {...rest}\r\n >\r\n {hasChildren ? (\r\n <span className=\"cl-divider__wrapper ChellaaDivider-wrapper\">{children}</span>\r\n ) : (\r\n children\r\n )}\r\n </StyledDividerRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledDividerRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLHRElement>}\r\n className={dividerClassName}\r\n style={style}\r\n sx={sx}\r\n role={role}\r\n aria-orientation={ariaOrientation}\r\n {...rest}\r\n >\r\n {hasChildren ? (\r\n <span className=\"cl-divider__wrapper ChellaaDivider-wrapper\">{children}</span>\r\n ) : null}\r\n </StyledDividerRoot>\r\n );\r\n }\r\n);\r\n\r\nDivider.displayName = \"Divider\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport type { TypographyVariant, ChellaaTheme } from \"../../theme/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type TypographyAlign = \"inherit\" | \"left\" | \"center\" | \"right\" | \"justify\";\r\n\r\nexport interface TypographyOwnerState {\r\n variant?: TypographyVariant | undefined;\r\n align?: TypographyAlign | undefined;\r\n color?: string | undefined;\r\n gutterBottom?: boolean | undefined;\r\n noWrap?: boolean | undefined;\r\n lineClamp?: number | undefined;\r\n}\r\n\r\nexport interface TypographyProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n TypographyOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst defaultVariantMapping: Record<TypographyVariant, React.ElementType> = {\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n h5: \"h5\",\r\n h6: \"h6\",\r\n subtitle1: \"h6\",\r\n subtitle2: \"h6\",\r\n body1: \"p\",\r\n body2: \"p\",\r\n button: \"span\",\r\n caption: \"span\",\r\n overline: \"span\",\r\n};\r\n\r\ntype PaletteWithMain =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"error\"\r\n | \"warning\"\r\n | \"info\"\r\n | \"success\";\r\n\r\nfunction isPaletteWithMain(key: string): key is PaletteWithMain {\r\n return (\r\n key === \"primary\" ||\r\n key === \"secondary\" ||\r\n key === \"error\" ||\r\n key === \"warning\" ||\r\n key === \"info\" ||\r\n key === \"success\"\r\n );\r\n}\r\n\r\nconst paletteTokenFallbackMap: Record<string, string> = {\r\n primary: \"var(--cl-color-primary-base)\",\r\n secondary: \"var(--cl-color-secondary-base)\",\r\n error: \"var(--cl-color-danger-base)\",\r\n warning: \"var(--cl-color-warning-base)\",\r\n info: \"var(--cl-color-info-base)\",\r\n success: \"var(--cl-color-success-base)\",\r\n \"text.primary\": \"var(--cl-color-fg-primary)\",\r\n \"text.secondary\": \"var(--cl-color-fg-secondary)\",\r\n \"text.disabled\": \"var(--cl-color-fg-muted)\",\r\n \"background.default\": \"var(--cl-color-bg-canvas)\",\r\n \"background.paper\": \"var(--cl-color-bg-surface)\",\r\n};\r\n\r\nfunction getNestedPaletteValue(obj: unknown, path: string): string | undefined {\r\n if (obj === null || typeof obj !== \"object\") return undefined;\r\n const parts = path.split(\".\");\r\n let current: unknown = obj;\r\n for (const part of parts) {\r\n if (current !== null && typeof current === \"object\" && part in current) {\r\n current = (current as Record<string, unknown>)[part];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return typeof current === \"string\" ? current : undefined;\r\n}\r\n\r\nexport function resolveTypographyColor(\r\n theme: ChellaaTheme,\r\n color?: string\r\n): string | undefined {\r\n if (!color || color === \"inherit\" || color === \"currentColor\") {\r\n return color;\r\n }\r\n\r\n // Check direct palette main colors (primary, secondary, error, warning, info, success)\r\n if (theme?.palette && isPaletteWithMain(color)) {\r\n const paletteColor = theme.palette[color];\r\n if (paletteColor && typeof paletteColor.main === \"string\") {\r\n return paletteColor.main;\r\n }\r\n }\r\n\r\n // Check dotted paths (text.primary, text.secondary, background.paper, etc.)\r\n if (color.includes(\".\") && theme?.palette) {\r\n const resolved = getNestedPaletteValue(theme.palette, color);\r\n if (resolved) {\r\n return resolved;\r\n }\r\n }\r\n\r\n // Fallback to documented CSS token if defined for this palette key\r\n if (color in paletteTokenFallbackMap) {\r\n return paletteTokenFallbackMap[color];\r\n }\r\n\r\n return color;\r\n}\r\n\r\nconst StyledTypographyRoot = styled(\"span\", {\r\n name: \"ChellaaTypography\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"align\" &&\r\n prop !== \"color\" &&\r\n prop !== \"gutterBottom\" &&\r\n prop !== \"noWrap\" &&\r\n prop !== \"lineClamp\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<{ color?: string }>(({ theme, color }) => {\r\n if (color) {\r\n return {\r\n color: resolveTypographyColor(theme, color),\r\n };\r\n }\r\n return {};\r\n});\r\n\r\n/**\r\n * Foundational Typography component supporting all Material Design 3 scale variants,\r\n * truncation, line clamping, and semantic element delegation.\r\n *\r\n * @example\r\n * <Typography variant=\"h1\">Display Header</Typography>\r\n * <Typography variant=\"body1\" color=\"text.secondary\">Body text</Typography>\r\n * <Typography noWrap>Single line truncated text</Typography>\r\n */\r\nexport const Typography = React.forwardRef<HTMLElement, TypographyProps>(\r\n function Typography(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n variant = \"body1\",\r\n align = \"inherit\",\r\n color,\r\n gutterBottom = false,\r\n noWrap = false,\r\n lineClamp,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const typographyClassName = classNames(\r\n \"cl-typography\",\r\n `cl-typography--${variant}`,\r\n align && align !== \"inherit\" && `cl-typography--align-${align}`,\r\n gutterBottom && \"cl-typography--gutter-bottom\",\r\n noWrap && \"cl-typography--no-wrap\",\r\n lineClamp !== undefined && lineClamp > 0 && \"cl-typography--line-clamp\",\r\n className\r\n );\r\n\r\n const inlineStyle: React.CSSProperties = {\r\n ...(lineClamp !== undefined && lineClamp > 0\r\n ? ({ WebkitLineClamp: lineClamp } as React.CSSProperties)\r\n : {}),\r\n ...style,\r\n };\r\n\r\n const targetTag =\r\n component || as || defaultVariantMapping[variant] || \"span\";\r\n\r\n if (asChild) {\r\n return (\r\n <StyledTypographyRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLSpanElement>}\r\n className={typographyClassName}\r\n style={inlineStyle}\r\n color={color}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledTypographyRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledTypographyRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLSpanElement>}\r\n className={typographyClassName}\r\n style={inlineStyle}\r\n color={color}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledTypographyRoot>\r\n );\r\n }\r\n);\r\n\r\nTypography.displayName = \"Typography\";\r\n","import * as React from \"react\";\r\nimport { Typography, type TypographyProps } from \"./Typography\";\r\nimport type { TypographyVariant } from \"../../theme/types\";\r\n\r\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\r\n\r\nexport interface HeadingProps extends Omit<TypographyProps, \"variant\"> {\r\n /**\r\n * Semantic heading level (1 to 6).\r\n * Determines both default HTML tag (h1..h6) and typography scale variant unless overridden.\r\n * @default 2\r\n */\r\n level?: HeadingLevel | undefined;\r\n /**\r\n * Optional visual scale variant to decouple styling from heading level.\r\n */\r\n variant?: TypographyVariant | undefined;\r\n}\r\n\r\n/**\r\n * Ergonomic semantic heading primitive.\r\n *\r\n * @example\r\n * <Heading level={1}>Page Title</Heading>\r\n * <Heading level={2} variant=\"h4\">Visually smaller Section Title</Heading>\r\n */\r\nexport const Heading = React.forwardRef<HTMLElement, HeadingProps>(\r\n function Heading(props, ref) {\r\n const { level = 2, variant, component, ...rest } = props;\r\n\r\n const levelTag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\r\n const resolvedVariant = variant || levelTag;\r\n const resolvedComponent = component || levelTag;\r\n\r\n return (\r\n <Typography\r\n ref={ref}\r\n component={resolvedComponent}\r\n variant={resolvedVariant}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nHeading.displayName = \"Heading\";\r\n","import * as React from \"react\";\r\nimport { Typography, type TypographyProps } from \"./Typography\";\r\nimport type { TypographyVariant } from \"../../theme/types\";\r\n\r\nexport type TextSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface TextProps extends TypographyProps {\r\n /**\r\n * Shorthand text size mapping to theme typographic scale:\r\n * - \"xs\": caption (12px)\r\n * - \"sm\": body2 (14px)\r\n * - \"md\": body1 (16px)\r\n * - \"lg\": subtitle1 (16px/medium)\r\n * - \"xl\": h6 (20px)\r\n */\r\n size?: TextSize | undefined;\r\n /**\r\n * If true, renders as block element ('div' or 'p'). Otherwise renders as inline 'span'.\r\n * @default false\r\n */\r\n block?: boolean | undefined;\r\n}\r\n\r\nconst sizeToVariant: Record<TextSize, TypographyVariant> = {\r\n xs: \"caption\",\r\n sm: \"body2\",\r\n md: \"body1\",\r\n lg: \"subtitle1\",\r\n xl: \"h6\",\r\n};\r\n\r\n/**\r\n * Ergonomic inline or block textual primitive.\r\n *\r\n * @example\r\n * <Text size=\"sm\" color=\"text.secondary\">Secondary caption</Text>\r\n * <Text block noWrap>Single line block item</Text>\r\n */\r\nexport const Text = React.forwardRef<HTMLElement, TextProps>(\r\n function Text(props, ref) {\r\n const { size, variant, block = false, component, ...rest } = props;\r\n\r\n const resolvedVariant = variant || (size ? sizeToVariant[size] : \"body1\");\r\n const defaultTag = block ? \"p\" : \"span\";\r\n const resolvedComponent = component || defaultTag;\r\n\r\n return (\r\n <Typography\r\n ref={ref}\r\n component={resolvedComponent}\r\n variant={resolvedVariant}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nText.displayName = \"Text\";\r\n","import * as React from \"react\";\r\nimport { Typography, type TypographyProps } from \"./Typography\";\r\n\r\nexport interface ParagraphProps extends TypographyProps {\r\n /**\r\n * Shorthand spacing multiplier for bottom margin (defaults to standard gutterBottom).\r\n */\r\n spacing?: number | string | undefined;\r\n}\r\n\r\n/**\r\n * Ergonomic paragraph block primitive with standard reading margins.\r\n *\r\n * @example\r\n * <Paragraph>\r\n * This is standard paragraph text with built-in reading spacing.\r\n * </Paragraph>\r\n */\r\nexport const Paragraph = React.forwardRef<HTMLElement, ParagraphProps>(\r\n function Paragraph(props, ref) {\r\n const { component = \"p\", variant = \"body1\", gutterBottom = true, ...rest } = props;\r\n\r\n return (\r\n <Typography\r\n ref={ref}\r\n component={component}\r\n variant={variant}\r\n gutterBottom={gutterBottom}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nParagraph.displayName = \"Paragraph\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type CodeColorScheme = \"default\" | \"primary\" | \"secondary\";\r\n\r\nexport interface CodeOwnerState {\r\n colorScheme?: CodeColorScheme | undefined;\r\n}\r\n\r\nexport interface CodeProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n CodeOwnerState {\r\n asChild?: boolean | undefined;\r\n component?: React.ElementType | undefined;\r\n as?: React.ElementType | undefined;\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledCodeRoot = styled(\"code\", {\r\n name: \"ChellaaCode\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"colorScheme\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Inline monospace code chip primitive for identifiers, filenames, and CLI snippets.\r\n *\r\n * @example\r\n * <Text>Run <Code>npm install</Code> to install dependencies.</Text>\r\n * <Code colorScheme=\"primary\">package.json</Code>\r\n */\r\nexport const Code = React.forwardRef<HTMLElement, CodeProps>(\r\n function Code(props, ref) {\r\n const {\r\n asChild = false,\r\n component = \"code\",\r\n as,\r\n colorScheme = \"default\",\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const codeClassName = classNames(\r\n \"cl-code\",\r\n colorScheme !== \"default\" && `cl-code--${colorScheme}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as || \"code\";\r\n\r\n if (asChild) {\r\n return (\r\n <StyledCodeRoot\r\n as={Slot}\r\n ref={ref as any}\r\n className={codeClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCodeRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledCodeRoot\r\n as={targetTag}\r\n ref={ref as any}\r\n className={codeClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCodeRoot>\r\n );\r\n }\r\n);\r\n\r\nCode.displayName = \"Code\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nexport type KbdSize = \"sm\" | \"md\" | \"lg\";\r\nexport type KbdVariant = \"outline\" | \"subtle\" | \"solid\";\r\n\r\nexport type KbdModifier =\r\n | \"command\"\r\n | \"cmd\"\r\n | \"shift\"\r\n | \"option\"\r\n | \"alt\"\r\n | \"control\"\r\n | \"ctrl\"\r\n | \"enter\"\r\n | \"escape\"\r\n | \"esc\"\r\n | \"tab\"\r\n | \"backspace\"\r\n | \"delete\"\r\n | \"del\"\r\n | \"up\"\r\n | \"down\"\r\n | \"left\"\r\n | \"right\";\r\n\r\nexport const MODIFIER_SYMBOLS: Record<KbdModifier, string> = {\r\n command: \"⌘\",\r\n cmd: \"⌘\",\r\n shift: \"⇧\",\r\n option: \"⌥\",\r\n alt: \"⌥\",\r\n control: \"⌃\",\r\n ctrl: \"⌃\",\r\n enter: \"↵\",\r\n escape: \"Esc\",\r\n esc: \"Esc\",\r\n tab: \"⇥\",\r\n backspace: \"⌫\",\r\n delete: \"⌦\",\r\n del: \"⌦\",\r\n up: \"↑\",\r\n down: \"↓\",\r\n left: \"←\",\r\n right: \"→\",\r\n};\r\n\r\nexport interface KbdOwnerState {\r\n size?: KbdSize | undefined;\r\n variant?: KbdVariant | undefined;\r\n modifier?: KbdModifier | undefined;\r\n}\r\n\r\nexport interface KbdProps\r\n extends React.HTMLAttributes<HTMLElement>,\r\n KbdOwnerState {\r\n /**\r\n * If true, delegate rendering to immediate child element using Slot\r\n */\r\n asChild?: boolean;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledKbdRoot = styled(\"kbd\", {\r\n name: \"ChellaaKbd\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"variant\" &&\r\n prop !== \"modifier\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Tactile keyboard shortcut keycap primitive representing user input keystrokes.\r\n *\r\n * @example\r\n * <Kbd>Ctrl</Kbd> + <Kbd>K</Kbd>\r\n * <Kbd modifier=\"command\" />\r\n * <Kbd size=\"sm\" variant=\"subtle\">Esc</Kbd>\r\n */\r\nexport const Kbd = React.forwardRef<HTMLElement, KbdProps>(\r\n function Kbd(props, ref) {\r\n const {\r\n asChild = false,\r\n component = \"kbd\",\r\n as,\r\n size = \"md\",\r\n variant = \"outline\",\r\n modifier,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const kbdClassName = classNames(\r\n \"cl-kbd\",\r\n `cl-kbd--${size}`,\r\n `cl-kbd--${variant}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as || \"kbd\";\r\n\r\n // Resolve content: children takes precedence, then modifier symbol\r\n const content = children ?? (modifier ? MODIFIER_SYMBOLS[modifier] ?? modifier : null);\r\n\r\n if (asChild) {\r\n return (\r\n <StyledKbdRoot\r\n as={Slot}\r\n ref={ref as any}\r\n className={kbdClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {content}\r\n </StyledKbdRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledKbdRoot\r\n as={targetTag}\r\n ref={ref as any}\r\n className={kbdClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {content}\r\n </StyledKbdRoot>\r\n );\r\n }\r\n);\r\n\r\nKbd.displayName = \"Kbd\";\r\n","import * as React from \"react\";\r\n\r\nexport interface FormFieldContextValue {\r\n id: string;\r\n name?: string | undefined;\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n error?: boolean | undefined;\r\n errorMessage?: string | undefined;\r\n isValidating?: boolean | undefined;\r\n isTouched?: boolean | undefined;\r\n isDirty?: boolean | undefined;\r\n labelId: string;\r\n helperTextId: string;\r\n errorMessageId: string;\r\n hasHelperText: boolean;\r\n hasErrorMessage: boolean;\r\n setHasHelperText: (has: boolean) => void;\r\n setHasErrorMessage: (has: boolean) => void;\r\n}\r\n\r\nexport const FormFieldContext = React.createContext<\r\n FormFieldContextValue | undefined\r\n>(undefined);\r\n\r\n/**\r\n * Hook to consume form field state, IDs, and validation flags.\r\n * Returns undefined if used outside a <FormField>.\r\n */\r\nexport function useFormField(): FormFieldContextValue | undefined {\r\n return React.useContext(FormFieldContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { setRef } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n InputProps,\r\n InputOwnerState,\r\n InputVariant,\r\n InputSize,\r\n} from \"./Input.types\";\r\n\r\nexport type { InputProps, InputOwnerState, InputVariant, InputSize };\r\n\r\n/**\r\n * Headless raw input primitive for backward compatibility.\r\n */\r\nexport const InputBase = React.forwardRef<\r\n HTMLInputElement,\r\n React.InputHTMLAttributes<HTMLInputElement> & { ownerState?: InputOwnerState }\r\n>(function InputBase({ className, ownerState: _ownerState, ...props }, ref) {\r\n return (\r\n <input\r\n ref={ref}\r\n className={classNames(\"cl-input__input\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\n\r\nInputBase.displayName = \"InputBase\";\r\n\r\nconst StyledInputRoot = styled(\"div\", {\r\n name: \"ChellaaInput\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"size\" &&\r\n prop !== \"fullWidth\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"hasStartAdornment\" &&\r\n prop !== \"hasEndAdornment\" &&\r\n prop !== \"focused\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\" &&\r\n prop !== \"ownerState\",\r\n})({});\r\n\r\n/**\r\n * Chellaa React Input component.\r\n *\r\n * Fundamental single-line text entry primitive with Material Design 3 surface variants,\r\n * precompiled CSS cascade layers (@layer cl-components), zero-runtime static styling,\r\n * dynamic sx override bridge, and accessible form integration.\r\n */\r\nexport const Input = React.forwardRef<HTMLDivElement, InputProps>(\r\n function Input(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n variant = \"outlined\",\r\n size = \"md\",\r\n fullWidth = false,\r\n error: errorProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n startAdornment,\r\n endAdornment,\r\n clearable = false,\r\n onClear,\r\n inputRef: inputRefProp,\r\n value: valueProp,\r\n defaultValue,\r\n onChange,\r\n type: typeProp,\r\n id: idProp,\r\n className,\r\n style,\r\n sx,\r\n inputProps,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n children,\r\n ...restInputProps\r\n } = props;\r\n\r\n const id = idProp ?? (asChild ? undefined : formField?.id);\r\n const type = typeProp ?? (asChild ? undefined : \"text\");\r\n const error = errorProp ?? formField?.error ?? false;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n\r\n const ariaDescribedBy = [\r\n ariaDescribedByProp,\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n // Value tracking for clearable button\r\n const [internalValue, setInternalValue] = React.useState<string>(() => {\r\n if (valueProp !== undefined) return String(valueProp);\r\n if (defaultValue !== undefined) return String(defaultValue);\r\n return \"\";\r\n });\r\n\r\n const isControlled = valueProp !== undefined;\r\n const currentValue = isControlled ? String(valueProp ?? \"\") : internalValue;\r\n\r\n const innerInputRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const handleInputRef = React.useCallback(\r\n (node: HTMLInputElement | null) => {\r\n innerInputRef.current = node;\r\n if (typeof inputRefProp === \"function\") {\r\n inputRefProp(node);\r\n } else if (inputRefProp && \"current\" in inputRefProp) {\r\n (inputRefProp as React.MutableRefObject<HTMLInputElement | null>).current = node;\r\n }\r\n },\r\n [inputRefProp]\r\n );\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!isControlled) {\r\n setInternalValue(event.target.value);\r\n }\r\n onChange?.(event);\r\n };\r\n\r\n const handleClear = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n e.stopPropagation();\r\n if (!isControlled) {\r\n setInternalValue(\"\");\r\n }\r\n if (innerInputRef.current) {\r\n innerInputRef.current.value = \"\";\r\n const event = new Event(\"input\", { bubbles: true });\r\n innerInputRef.current.dispatchEvent(event);\r\n innerInputRef.current.focus();\r\n }\r\n onClear?.();\r\n };\r\n\r\n const handleWrapperClick = () => {\r\n if (innerInputRef.current && document.activeElement !== innerInputRef.current) {\r\n innerInputRef.current.focus();\r\n }\r\n };\r\n\r\n const showClear = clearable && !disabled && !readOnly && currentValue.length > 0;\r\n\r\n const clearButton = showClear ? (\r\n <button\r\n type=\"button\"\r\n className=\"cl-input__clear\"\r\n aria-label=\"Clear input\"\r\n onClick={handleClear}\r\n >\r\n <svg\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n ) : null;\r\n\r\n const inputWrapperClassName = classNames(\r\n \"cl-input\",\r\n `cl-input--${variant}`,\r\n `cl-input--${size}`,\r\n fullWidth && \"cl-input--full-width\",\r\n error && \"cl-input--error\",\r\n disabled && \"cl-input--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const handleSlottedRef = React.useCallback(\r\n (node: HTMLElement | null) => {\r\n setRef(ref, node as HTMLDivElement | null);\r\n setRef(inputRefProp, node as HTMLInputElement | null);\r\n handleInputRef(node as HTMLInputElement | null);\r\n },\r\n [ref, inputRefProp, handleInputRef]\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={handleSlottedRef}\r\n className={inputWrapperClassName}\r\n style={style}\r\n id={id}\r\n type={type}\r\n disabled={disabled || undefined}\r\n readOnly={readOnly || undefined}\r\n required={required || undefined}\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={error ? true : undefined}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n onClick={handleWrapperClick}\r\n {...inputProps}\r\n {...restInputProps}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledInputRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={inputWrapperClassName}\r\n style={style}\r\n sx={sx}\r\n onClick={handleWrapperClick}\r\n >\r\n {startAdornment}\r\n <input\r\n ref={handleInputRef}\r\n id={id}\r\n type={type}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n aria-describedby={ariaDescribedBy}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n aria-invalid={error ? true : undefined}\r\n className=\"cl-input__input\"\r\n {...inputProps}\r\n {...restInputProps}\r\n />\r\n {clearButton}\r\n {endAdornment}\r\n </StyledInputRoot>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n","import * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Input, type InputProps } from \"./Input\";\r\n\r\nexport interface TextFieldProps extends InputProps {\r\n /**\r\n * The label text displayed above the input.\r\n */\r\n label?: React.ReactNode | undefined;\r\n /**\r\n * Explanatory helper text displayed below the input.\r\n */\r\n helperText?: React.ReactNode | undefined;\r\n /**\r\n * Error message displayed below the input when error is true.\r\n */\r\n errorMessage?: React.ReactNode | undefined;\r\n /**\r\n * If true, displays a required asterisk next to the label and marks input required.\r\n * @default false\r\n */\r\n required?: boolean | undefined;\r\n}\r\n\r\nconst StyledTextFieldRoot = styled(\"div\", {\r\n name: \"ChellaaTextField\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) => prop !== \"fullWidth\",\r\n})<{ fullWidth?: boolean }>(({ fullWidth }) => ({\r\n display: \"inline-flex\",\r\n flexDirection: \"column\",\r\n position: \"relative\",\r\n width: fullWidth ? \"100%\" : \"auto\",\r\n verticalAlign: \"top\",\r\n}));\r\n\r\nconst StyledLabel = styled(\"label\")<{ required?: boolean; error?: boolean }>(\r\n ({ theme, error }) => ({\r\n display: \"block\",\r\n fontSize: \"0.875rem\",\r\n fontWeight: 500,\r\n lineHeight: 1.4,\r\n marginBottom: theme.spacing(0.75),\r\n color: error ? theme.palette.error.main : theme.palette.text.primary,\r\n userSelect: \"none\",\r\n \"& .ChellaaTextField-requiredAsterisk\": {\r\n color: theme.palette.error.main,\r\n marginLeft: 4,\r\n },\r\n })\r\n);\r\n\r\nconst StyledHelperText = styled(\"p\")<{ error?: boolean }>(\r\n ({ theme, error }) => ({\r\n fontSize: \"0.75rem\",\r\n lineHeight: 1.4,\r\n margin: 0,\r\n marginTop: theme.spacing(0.5),\r\n color: error ? theme.palette.error.main : theme.palette.text.secondary,\r\n })\r\n);\r\n\r\n/**\r\n * Enterprise composite form control combining label, input, helper text, and validation messaging.\r\n *\r\n * @example\r\n * <TextField\r\n * label=\"Email Address\"\r\n * type=\"email\"\r\n * placeholder=\"user@example.com\"\r\n * helperText=\"We will never share your email.\"\r\n * required\r\n * />\r\n */\r\nexport const TextField = React.forwardRef<HTMLDivElement, TextFieldProps>(\r\n function TextField(props, ref) {\r\n const {\r\n id: idProp,\r\n label,\r\n helperText,\r\n errorMessage,\r\n error = false,\r\n required = false,\r\n fullWidth = false,\r\n className,\r\n style,\r\n sx,\r\n ...inputProps\r\n } = props;\r\n\r\n const generatedId = React.useId();\r\n const inputId = idProp || generatedId;\r\n const isError = Boolean(error);\r\n const activeHelperContent = isError && errorMessage ? errorMessage : helperText;\r\n const messageId = isError && errorMessage ? `${inputId}-error` : `${inputId}-helper`;\r\n\r\n return (\r\n <StyledTextFieldRoot\r\n ref={ref}\r\n fullWidth={fullWidth}\r\n className={className}\r\n style={style}\r\n sx={sx}\r\n >\r\n {label && (\r\n <StyledLabel htmlFor={inputId} error={error} required={required}>\r\n {label}\r\n {required && (\r\n <span className=\"ChellaaTextField-requiredAsterisk\" aria-hidden=\"true\">\r\n *\r\n </span>\r\n )}\r\n </StyledLabel>\r\n )}\r\n\r\n <Input\r\n id={inputId}\r\n error={error}\r\n required={required}\r\n fullWidth={fullWidth}\r\n aria-describedby={activeHelperContent ? messageId : undefined}\r\n {...inputProps}\r\n />\r\n\r\n {activeHelperContent && (\r\n <StyledHelperText\r\n id={messageId}\r\n error={error}\r\n role={isError && errorMessage ? \"alert\" : undefined}\r\n aria-live={isError && errorMessage ? \"polite\" : undefined}\r\n >\r\n {activeHelperContent}\r\n </StyledHelperText>\r\n )}\r\n </StyledTextFieldRoot>\r\n );\r\n }\r\n);\r\n\r\nTextField.displayName = \"TextField\";\r\n","import * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\n\r\nexport interface InputAdornmentProps\r\n extends React.HTMLAttributes<HTMLDivElement> {\r\n /**\r\n * Position of the adornment within the input track.\r\n */\r\n position: \"start\" | \"end\";\r\n /**\r\n * If true, prevents pointer events on the adornment (e.g. for purely decorative icons).\r\n * @default false\r\n */\r\n disablePointerEvents?: boolean | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst StyledAdornmentRoot = styled(\"div\", {\r\n name: \"ChellaaInputAdornment\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"position\" && prop !== \"disablePointerEvents\",\r\n})<{ position: \"start\" | \"end\"; disablePointerEvents?: boolean }>(\r\n ({ theme, position, disablePointerEvents }) => ({\r\n display: \"flex\",\r\n height: \"100%\",\r\n maxHeight: \"2em\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n whiteSpace: \"nowrap\",\r\n color: theme.palette.text.secondary,\r\n marginLeft: position === \"end\" ? theme.spacing(1) : 0,\r\n marginRight: position === \"start\" ? theme.spacing(1) : 0,\r\n pointerEvents: disablePointerEvents ? \"none\" : \"auto\",\r\n userSelect: \"none\",\r\n })\r\n);\r\n\r\nexport const InputAdornment = React.forwardRef<\r\n HTMLDivElement,\r\n InputAdornmentProps\r\n>(function InputAdornment(props, ref) {\r\n const { position, disablePointerEvents = false, children, ...rest } = props;\r\n\r\n return (\r\n <StyledAdornmentRoot\r\n ref={ref}\r\n position={position}\r\n disablePointerEvents={disablePointerEvents}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledAdornmentRoot>\r\n );\r\n});\r\n\r\nInputAdornment.displayName = \"InputAdornment\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { setRef } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n TextareaProps,\r\n TextareaOwnerState,\r\n TextareaVariant,\r\n TextareaSize,\r\n TextareaResize,\r\n} from \"./Textarea.types\";\r\n\r\nexport type {\r\n TextareaProps,\r\n TextareaOwnerState,\r\n TextareaVariant,\r\n TextareaSize,\r\n TextareaResize,\r\n};\r\n\r\nconst StyledTextareaContainer = styled(\"div\", {\r\n name: \"ChellaaTextarea\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"size\" &&\r\n prop !== \"fullWidth\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"autoResize\" &&\r\n prop !== \"resize\" &&\r\n prop !== \"hasCount\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\" &&\r\n prop !== \"ownerState\",\r\n})({});\r\n\r\n/**\r\n * Multi-line plain text editing control with Material Design surface variants,\r\n * auto-expansion support, and character counter capabilities.\r\n */\r\nexport const Textarea = React.forwardRef<HTMLDivElement, TextareaProps>(\r\n function Textarea(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n variant = \"outlined\",\r\n size = \"md\",\r\n fullWidth = false,\r\n error: errorProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n minRows = 3,\r\n maxRows,\r\n autoResize = false,\r\n resize = \"vertical\",\r\n showCount = false,\r\n maxLength,\r\n textareaRef: textareaRefProp,\r\n textareaProps = {},\r\n value: valueProp,\r\n defaultValue,\r\n onChange,\r\n id: idProp,\r\n className,\r\n style,\r\n sx,\r\n placeholder,\r\n name,\r\n rows,\r\n cols,\r\n autoFocus,\r\n onFocus,\r\n onBlur,\r\n onKeyDown,\r\n onKeyUp,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n children,\r\n ...restContainerProps\r\n } = props;\r\n\r\n const id = idProp ?? (asChild ? undefined : formField?.id);\r\n const error = errorProp ?? formField?.error ?? false;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n\r\n const ariaDescribedBy = [\r\n ariaDescribedByProp,\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const [internalValue, setInternalValue] = React.useState<string>(() => {\r\n if (valueProp !== undefined) return String(valueProp);\r\n if (defaultValue !== undefined) return String(defaultValue);\r\n return \"\";\r\n });\r\n\r\n const isControlled = valueProp !== undefined;\r\n const currentValue = isControlled ? String(valueProp ?? \"\") : internalValue;\r\n\r\n const innerTextareaRef = React.useRef<HTMLTextAreaElement | null>(null);\r\n\r\n const handleTextareaRef = React.useCallback(\r\n (node: HTMLTextAreaElement | null) => {\r\n innerTextareaRef.current = node;\r\n if (typeof textareaRefProp === \"function\") {\r\n textareaRefProp(node);\r\n } else if (textareaRefProp && \"current\" in textareaRefProp) {\r\n (textareaRefProp as React.MutableRefObject<HTMLTextAreaElement | null>).current = node;\r\n }\r\n },\r\n [textareaRefProp]\r\n );\r\n\r\n // Auto-resize calculation\r\n React.useLayoutEffect(() => {\r\n if (!autoResize || !innerTextareaRef.current) return;\r\n\r\n const textarea = innerTextareaRef.current;\r\n textarea.style.height = \"auto\";\r\n\r\n const lineHeight = parseFloat(getComputedStyle(textarea).lineHeight) || 20;\r\n const minHeight = minRows * lineHeight;\r\n const maxHeight = maxRows ? maxRows * lineHeight : Infinity;\r\n\r\n const calculatedHeight = Math.min(\r\n Math.max(textarea.scrollHeight, minHeight),\r\n maxHeight\r\n );\r\n\r\n textarea.style.height = `${calculatedHeight}px`;\r\n textarea.style.overflowY =\r\n maxRows && textarea.scrollHeight > maxHeight ? \"auto\" : \"hidden\";\r\n }, [currentValue, autoResize, minRows, maxRows]);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n if (!isControlled) {\r\n setInternalValue(event.target.value);\r\n }\r\n onChange?.(event);\r\n };\r\n\r\n const handleWrapperClick = () => {\r\n if (innerTextareaRef.current && document.activeElement !== innerTextareaRef.current) {\r\n innerTextareaRef.current.focus();\r\n }\r\n };\r\n\r\n const containerClassName = classNames(\r\n \"cl-textarea\",\r\n `cl-textarea--${variant}`,\r\n `cl-textarea--${size}`,\r\n fullWidth && \"cl-textarea--full-width\",\r\n error && \"cl-textarea--error\",\r\n disabled && \"cl-textarea--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const textareaStyle: React.CSSProperties = {\r\n resize: autoResize ? \"none\" : resize,\r\n };\r\n\r\n const countDisplay = showCount ? (\r\n <div className=\"cl-textarea__counter\" aria-live=\"polite\">\r\n {currentValue.length}\r\n {maxLength ? ` / ${maxLength}` : \"\"}\r\n </div>\r\n ) : null;\r\n\r\n const handleSlottedRef = React.useCallback(\r\n (node: HTMLElement | null) => {\r\n setRef(ref, node as HTMLDivElement | null);\r\n setRef(textareaRefProp, node as HTMLTextAreaElement | null);\r\n handleTextareaRef(node as HTMLTextAreaElement | null);\r\n },\r\n [ref, textareaRefProp, handleTextareaRef]\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={handleSlottedRef}\r\n className={containerClassName}\r\n style={style}\r\n id={id}\r\n name={name}\r\n placeholder={placeholder}\r\n disabled={disabled || undefined}\r\n readOnly={readOnly || undefined}\r\n required={required || undefined}\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={error ? true : undefined}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n maxLength={maxLength}\r\n rows={rows ?? (asChild ? undefined : minRows)}\r\n cols={cols}\r\n autoFocus={autoFocus}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n onKeyUp={onKeyUp}\r\n onClick={handleWrapperClick}\r\n {...textareaProps}\r\n {...restContainerProps}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledTextareaContainer\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={containerClassName}\r\n style={style}\r\n sx={sx}\r\n onClick={handleWrapperClick}\r\n {...restContainerProps}\r\n >\r\n <textarea\r\n ref={handleTextareaRef}\r\n id={id}\r\n name={name}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n aria-describedby={ariaDescribedBy}\r\n aria-invalid={error ? true : undefined}\r\n value={valueProp}\r\n defaultValue={defaultValue}\r\n onChange={handleChange}\r\n maxLength={maxLength}\r\n rows={rows ?? minRows}\r\n cols={cols}\r\n autoFocus={autoFocus}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n onKeyUp={onKeyUp}\r\n style={textareaStyle}\r\n className=\"cl-textarea__input\"\r\n {...textareaProps}\r\n />\r\n {countDisplay}\r\n </StyledTextareaContainer>\r\n );\r\n }\r\n);\r\n\r\nTextarea.displayName = \"Textarea\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { FormFieldContext, type FormFieldContextValue } from \"./FormFieldContext\";\r\nimport type {\r\n FieldValidationError,\r\n FieldValidationResult,\r\n} from \"./FormValidation.types\";\r\n\r\nexport interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {\r\n id?: string | undefined;\r\n name?: string | undefined;\r\n required?: boolean | undefined;\r\n isRequired?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n isDisabled?: boolean | undefined;\r\n readOnly?: boolean | undefined;\r\n isReadOnly?: boolean | undefined;\r\n error?: boolean | undefined;\r\n isInvalid?: boolean | undefined;\r\n errorMessage?: string | FieldValidationError | undefined;\r\n validationResult?: FieldValidationResult | undefined;\r\n isValidating?: boolean | undefined;\r\n isTouched?: boolean | undefined;\r\n isDirty?: boolean | undefined;\r\n fullWidth?: boolean | undefined;\r\n asChild?: boolean | undefined;\r\n component?: React.ElementType | undefined;\r\n as?: React.ElementType | undefined;\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledFormFieldRoot = styled(\"div\", {\r\n name: \"ChellaaFormField\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"fullWidth\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\" &&\r\n prop !== \"error\" &&\r\n prop !== \"isInvalid\" &&\r\n prop !== \"errorMessage\" &&\r\n prop !== \"validationResult\" &&\r\n prop !== \"isValidating\" &&\r\n prop !== \"isTouched\" &&\r\n prop !== \"isDirty\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"isDisabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"isReadOnly\" &&\r\n prop !== \"required\" &&\r\n prop !== \"isRequired\",\r\n})({});\r\n\r\n/**\r\n * Root form control container and accessibility context provider.\r\n * Automatically generates IDs and cascades validation states to child controls.\r\n *\r\n * @example\r\n * <FormField required error={hasError}>\r\n * <FormLabel>Email Address</FormLabel>\r\n * <Input type=\"email\" placeholder=\"alex@company.com\" />\r\n * <FormHelperText>We will never share your email.</FormHelperText>\r\n * <FormErrorMessage>Invalid email address.</FormErrorMessage>\r\n * </FormField>\r\n */\r\nexport const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(\r\n function FormField(props, ref) {\r\n const {\r\n id: idProp,\r\n name,\r\n required: requiredProp = false,\r\n isRequired = false,\r\n disabled: disabledProp = false,\r\n isDisabled = false,\r\n readOnly: readOnlyProp = false,\r\n isReadOnly = false,\r\n error: errorProp = false,\r\n isInvalid = false,\r\n errorMessage: errorMessageProp,\r\n validationResult,\r\n isValidating = false,\r\n isTouched = false,\r\n isDirty = false,\r\n fullWidth = false,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const resolvedErrorMessage =\r\n typeof errorMessageProp === \"string\"\r\n ? errorMessageProp\r\n : errorMessageProp?.message ??\r\n (validationResult && !validationResult.valid\r\n ? validationResult.error.message\r\n : undefined);\r\n\r\n const required = isRequired || requiredProp;\r\n const disabled = isDisabled || disabledProp;\r\n const readOnly = isReadOnly || readOnlyProp;\r\n const error =\r\n isInvalid ||\r\n errorProp ||\r\n (validationResult ? !validationResult.valid : Boolean(resolvedErrorMessage));\r\n\r\n const generatedId = React.useId();\r\n const id = idProp || generatedId;\r\n const labelId = `${id}-label`;\r\n const helperTextId = `${id}-helper`;\r\n const errorMessageId = `${id}-error`;\r\n\r\n const [hasHelperText, setHasHelperText] = React.useState(false);\r\n const [hasErrorMessage, setHasErrorMessage] = React.useState(false);\r\n\r\n const contextValue: FormFieldContextValue = React.useMemo(\r\n () => ({\r\n id,\r\n name,\r\n required,\r\n disabled,\r\n readOnly,\r\n error,\r\n errorMessage: resolvedErrorMessage,\r\n isValidating,\r\n isTouched,\r\n isDirty,\r\n labelId,\r\n helperTextId,\r\n errorMessageId,\r\n hasHelperText,\r\n hasErrorMessage,\r\n setHasHelperText,\r\n setHasErrorMessage,\r\n }),\r\n [\r\n id,\r\n name,\r\n required,\r\n disabled,\r\n readOnly,\r\n error,\r\n resolvedErrorMessage,\r\n isValidating,\r\n isTouched,\r\n isDirty,\r\n labelId,\r\n helperTextId,\r\n errorMessageId,\r\n hasHelperText,\r\n hasErrorMessage,\r\n ]\r\n );\r\n\r\n const fieldClassName = classNames(\r\n \"cl-form-field\",\r\n fullWidth && \"cl-form-field--full-width\",\r\n error && \"cl-form-field--error\",\r\n disabled && \"cl-form-field--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <FormFieldContext.Provider value={contextValue}>\r\n <StyledFormFieldRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={fieldClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledFormFieldRoot>\r\n </FormFieldContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <FormFieldContext.Provider value={contextValue}>\r\n <StyledFormFieldRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={fieldClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledFormFieldRoot>\r\n </FormFieldContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nFormField.displayName = \"FormField\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useFormField } from \"./FormFieldContext\";\r\n\r\nexport interface FormLabelProps\r\n extends React.LabelHTMLAttributes<HTMLLabelElement> {\r\n /**\r\n * If true, displays a required asterisk. Inherits from FormField context if omitted.\r\n */\r\n required?: boolean | undefined;\r\n /**\r\n * If true, highlights label in error palette color. Inherits from FormField context if omitted.\r\n */\r\n error?: boolean | undefined;\r\n /**\r\n * If true, styles label in disabled state. Inherits from FormField context if omitted.\r\n */\r\n disabled?: boolean | undefined;\r\n /**\r\n * If true, delegates rendering to immediate child using Slot.\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledLabelRoot = styled(\"label\", {\r\n name: \"ChellaaFormLabel\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"required\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Accessible form label automatically linked to its associated input control.\r\n *\r\n * @example\r\n * <FormLabel>Email Address</FormLabel>\r\n */\r\nexport const FormLabel = React.forwardRef<HTMLLabelElement, FormLabelProps>(\r\n function FormLabel(props, ref) {\r\n const {\r\n htmlFor: htmlForProp,\r\n id: idProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n disabled: disabledProp,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const formField = useFormField();\r\n\r\n const htmlFor = htmlForProp ?? formField?.id;\r\n const id = idProp ?? formField?.labelId;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n\r\n const labelClassName = classNames(\r\n \"cl-form-label\",\r\n error && \"cl-form-label--error\",\r\n disabled && \"cl-form-label--disabled\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledLabelRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n htmlFor={htmlFor}\r\n id={id}\r\n className={labelClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledLabelRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledLabelRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n htmlFor={htmlFor}\r\n id={id}\r\n className={labelClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n {required && (\r\n <span className=\"cl-form-label__asterisk\" aria-hidden=\"true\">*</span>\r\n )}\r\n </StyledLabelRoot>\r\n );\r\n }\r\n);\r\n\r\nFormLabel.displayName = \"FormLabel\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useFormField } from \"./FormFieldContext\";\r\n\r\nexport interface FormHelperTextProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {\r\n /**\r\n * If true, styles helper text in disabled state.\r\n */\r\n disabled?: boolean | undefined;\r\n /**\r\n * If true, delegates rendering to immediate child using Slot.\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledHelperTextRoot = styled(\"p\", {\r\n name: \"ChellaaFormHelperText\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"disabled\" && prop !== \"asChild\" && prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Contextual explanation text rendered beneath an input control,\r\n * automatically linked via aria-describedby.\r\n *\r\n * @example\r\n * <FormHelperText>We will never share your personal email.</FormHelperText>\r\n */\r\nexport const FormHelperText = React.forwardRef<\r\n HTMLParagraphElement,\r\n FormHelperTextProps\r\n>(function FormHelperText(props, ref) {\r\n const {\r\n id: idProp,\r\n disabled: disabledProp,\r\n asChild = false,\r\n component = \"p\",\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const formField = useFormField();\r\n const setHasHelperText = formField?.setHasHelperText;\r\n\r\n React.useEffect(() => {\r\n setHasHelperText?.(true);\r\n return () => setHasHelperText?.(false);\r\n }, [setHasHelperText]);\r\n\r\n const id = idProp ?? formField?.helperTextId;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const targetTag = component || as;\r\n\r\n const helperClassName = classNames(\r\n \"cl-form-helper-text\",\r\n disabled && \"cl-form-helper-text--disabled\",\r\n className\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <StyledHelperTextRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n className={helperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledHelperTextRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledHelperTextRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n className={helperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledHelperTextRoot>\r\n );\r\n});\r\n\r\nFormHelperText.displayName = \"FormHelperText\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport type { SxProps } from \"../../system/types\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useFormField } from \"./FormFieldContext\";\r\n\r\nexport interface FormErrorMessageProps\r\n extends React.HTMLAttributes<HTMLParagraphElement> {\r\n /**\r\n * If true, forces the error message to mount even if error is false.\r\n * @default false\r\n */\r\n forceMount?: boolean | undefined;\r\n /**\r\n * If true, delegates rendering to immediate child using Slot.\r\n */\r\n asChild?: boolean | undefined;\r\n /**\r\n * The underlying HTML element or component\r\n */\r\n component?: React.ElementType | undefined;\r\n /**\r\n * Alias for component\r\n */\r\n as?: React.ElementType | undefined;\r\n /**\r\n * The system-aware sx prop\r\n */\r\n sx?: SxProps;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nconst StyledErrorMessageRoot = styled(\"p\", {\r\n name: \"ChellaaFormErrorMessage\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"forceMount\" && prop !== \"asChild\" && prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Accessible error message primitive rendered conditionally when error is true,\r\n * possessing role=\"alert\" for immediate screen reader announcement.\r\n *\r\n * @example\r\n * <FormErrorMessage>Please enter a valid email address.</FormErrorMessage>\r\n */\r\nexport const FormErrorMessage = React.forwardRef<\r\n HTMLParagraphElement,\r\n FormErrorMessageProps\r\n>(function FormErrorMessage(props, ref) {\r\n const {\r\n id: idProp,\r\n forceMount = false,\r\n asChild = false,\r\n component = \"p\",\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const formField = useFormField();\r\n const isError = formField?.error ?? false;\r\n const setHasErrorMessage = formField?.setHasErrorMessage;\r\n\r\n const content = children ?? formField?.errorMessage;\r\n\r\n React.useEffect(() => {\r\n if ((isError && content) || forceMount) {\r\n setHasErrorMessage?.(true);\r\n return () => setHasErrorMessage?.(false);\r\n }\r\n }, [setHasErrorMessage, isError, content, forceMount]);\r\n\r\n if ((!isError || !content) && !forceMount) {\r\n return null;\r\n }\r\n\r\n const id = idProp ?? formField?.errorMessageId;\r\n const targetTag = component || as;\r\n\r\n const errorClassName = classNames(\"cl-form-error-message\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <StyledErrorMessageRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n className={errorClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {content}\r\n </StyledErrorMessageRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledErrorMessageRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLParagraphElement>}\r\n id={id}\r\n role=\"alert\"\r\n aria-live=\"polite\"\r\n className={errorClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {content}\r\n </StyledErrorMessageRoot>\r\n );\r\n});\r\n\r\nFormErrorMessage.displayName = \"FormErrorMessage\";\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport type {\n FieldValidationError,\n FieldValidator,\n UseFormValidationOptions,\n UseFormValidationReturn,\n} from \"./FormValidation.types\";\n\n/**\n * Hook providing framework-agnostic form state management, validation lifecycle,\n * async race-condition safety, and accessible error/focus integration.\n */\nexport function useFormValidation<TValues extends Record<string, unknown>>(\n options: UseFormValidationOptions<TValues>\n): UseFormValidationReturn<TValues> {\n const {\n initialValues,\n validators = {} as Partial<{ [P in keyof TValues]: FieldValidator<TValues[P]> }>,\n validateOn = \"blur\",\n onSubmit,\n focusFirstInvalid = true,\n } = options;\n\n const [values, setValues] = React.useState<TValues>(initialValues);\n const [errors, setErrors] = React.useState<Partial<Record<keyof TValues, string>>>({});\n const [touched, setTouchedState] = React.useState<Partial<Record<keyof TValues, boolean>>>({});\n const [dirty, setDirtyState] = React.useState<Partial<Record<keyof TValues, boolean>>>({});\n const [isValidating, setIsValidating] = React.useState<Partial<Record<keyof TValues, boolean>>>({});\n const [isSubmitting, setIsSubmitting] = React.useState<boolean>(false);\n\n // Per-field request ID sequence to prevent stale async validations from overwriting newer state\n const validationRequestIdRef = React.useRef<Record<string, number>>({});\n const valuesRef = React.useRef<TValues>(values);\n valuesRef.current = values;\n\n const validatorsRef = React.useRef<Partial<{ [P in keyof TValues]: FieldValidator<TValues[P]> }>>(validators);\n validatorsRef.current = validators;\n\n const validateFieldInternal = React.useCallback(\n async <K extends keyof TValues>(field: K, val: TValues[K]): Promise<boolean> => {\n const validator = validatorsRef.current?.[field];\n if (!validator) {\n setErrors((prev) => {\n if (!prev[field]) return prev;\n const next = { ...prev };\n delete next[field];\n return next;\n });\n return true;\n }\n\n const fieldKey = String(field);\n const requestId = (validationRequestIdRef.current[fieldKey] || 0) + 1;\n validationRequestIdRef.current[fieldKey] = requestId;\n\n try {\n const resultOrPromise = validator(val);\n\n if (resultOrPromise instanceof Promise) {\n setIsValidating((prev) => ({ ...prev, [field]: true }));\n const result = await resultOrPromise;\n\n // Discard stale async promise result\n if (validationRequestIdRef.current[fieldKey] !== requestId) {\n return false;\n }\n\n setIsValidating((prev) => ({ ...prev, [field]: false }));\n\n if (!result.valid) {\n setErrors((prev) => ({ ...prev, [field]: result.error.message }));\n return false;\n } else {\n setErrors((prev) => {\n if (!prev[field]) return prev;\n const next = { ...prev };\n delete next[field];\n return next;\n });\n return true;\n }\n } else {\n // Synchronous validator\n if (!resultOrPromise.valid) {\n setErrors((prev) => ({ ...prev, [field]: resultOrPromise.error.message }));\n return false;\n } else {\n setErrors((prev) => {\n if (!prev[field]) return prev;\n const next = { ...prev };\n delete next[field];\n return next;\n });\n return true;\n }\n }\n } catch (err) {\n if (validationRequestIdRef.current[fieldKey] === requestId) {\n setIsValidating((prev) => ({ ...prev, [field]: false }));\n const message = err instanceof Error ? err.message : \"Validation failed\";\n setErrors((prev) => ({ ...prev, [field]: message }));\n }\n return false;\n }\n },\n []\n );\n\n const setValue = React.useCallback(\n async <K extends keyof TValues>(field: K, value: TValues[K]) => {\n setValues((prev) => {\n const next = { ...prev, [field]: value };\n return next;\n });\n\n setDirtyState((prev) => ({\n ...prev,\n [field]: value !== initialValues[field],\n }));\n\n if (validateOn === \"change\") {\n await validateFieldInternal(field, value);\n }\n },\n [initialValues, validateOn, validateFieldInternal]\n );\n\n const setTouched = React.useCallback(\n <K extends keyof TValues>(field: K, isFieldTouched: boolean = true) => {\n setTouchedState((prev) => ({ ...prev, [field]: isFieldTouched }));\n },\n []\n );\n\n const setError = React.useCallback(\n <K extends keyof TValues>(field: K, error?: string | FieldValidationError) => {\n if (!error) {\n setErrors((prev) => {\n if (!prev[field]) return prev;\n const next = { ...prev };\n delete next[field];\n return next;\n });\n } else {\n const message = typeof error === \"string\" ? error : error.message;\n setErrors((prev) => ({ ...prev, [field]: message }));\n }\n },\n []\n );\n\n const clearError = React.useCallback(<K extends keyof TValues>(field: K) => {\n setErrors((prev) => {\n if (!prev[field]) return prev;\n const next = { ...prev };\n delete next[field];\n return next;\n });\n }, []);\n\n const validateField = React.useCallback(\n async <K extends keyof TValues>(field: K): Promise<boolean> => {\n return validateFieldInternal(field, valuesRef.current[field]);\n },\n [validateFieldInternal]\n );\n\n const validateAll = React.useCallback(async (): Promise<boolean> => {\n const fieldKeys = Object.keys(validatorsRef.current) as Array<keyof TValues>;\n const results = await Promise.all(\n fieldKeys.map((key) => validateFieldInternal(key, valuesRef.current[key]))\n );\n return results.every(Boolean);\n }, [validateFieldInternal]);\n\n const handleSubmit = React.useCallback(\n async (e?: React.FormEvent) => {\n if (e && typeof e.preventDefault === \"function\") {\n e.preventDefault();\n }\n\n // Mark all fields with validators as touched on submit\n const allTouched: Partial<Record<keyof TValues, boolean>> = {};\n (Object.keys(validatorsRef.current) as Array<keyof TValues>).forEach((key) => {\n allTouched[key] = true;\n });\n setTouchedState((prev) => ({ ...prev, ...allTouched }));\n\n const isValidForm = await validateAll();\n\n if (!isValidForm) {\n if (focusFirstInvalid && typeof document !== \"undefined\") {\n // Find first field that has an error in state or DOM\n setTimeout(() => {\n const firstErrorField = (Object.keys(validatorsRef.current) as Array<keyof TValues>).find(\n (key) => {\n const el =\n document.querySelector<HTMLElement>(`[name=\"${String(key)}\"]`) ??\n document.getElementById(String(key));\n return el && (el.getAttribute(\"aria-invalid\") === \"true\" || el.classList.contains(\"cl-input--error\"));\n }\n );\n\n if (firstErrorField) {\n const el =\n document.querySelector<HTMLElement>(`[name=\"${String(firstErrorField)}\"]`) ??\n document.getElementById(String(firstErrorField));\n el?.focus();\n }\n }, 0);\n }\n return;\n }\n\n if (onSubmit) {\n setIsSubmitting(true);\n try {\n await onSubmit(valuesRef.current);\n } finally {\n setIsSubmitting(false);\n }\n }\n },\n [validateAll, focusFirstInvalid, onSubmit]\n );\n\n const reset = React.useCallback(\n (nextValues?: Partial<TValues>) => {\n setValues({ ...initialValues, ...nextValues });\n setErrors({});\n setTouchedState({});\n setDirtyState({});\n setIsValidating({});\n setIsSubmitting(false);\n validationRequestIdRef.current = {};\n },\n [initialValues]\n );\n\n const isValid = React.useMemo(() => Object.keys(errors).length === 0, [errors]);\n\n const getFieldProps = React.useCallback(\n <K extends keyof TValues>(field: K): { name: string; isInvalid: boolean; errorMessage?: string } => {\n const fieldKey = String(field);\n const isFieldInvalid = Boolean(errors[field]);\n const errMsg = errors[field];\n\n return {\n name: fieldKey,\n isInvalid: isFieldInvalid,\n ...(errMsg ? { errorMessage: errMsg } : {}),\n };\n },\n [errors]\n );\n\n const getInputProps = React.useCallback(\n <K extends keyof TValues>(field: K) => {\n const fieldKey = String(field);\n\n return {\n name: fieldKey,\n value: values[field],\n onChange: (\n e:\n | React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>\n | TValues[K]\n ) => {\n let nextVal: TValues[K];\n if (e && typeof e === \"object\" && \"target\" in e) {\n const target = e.target as HTMLInputElement;\n if (target.type === \"checkbox\") {\n nextVal = target.checked as unknown as TValues[K];\n } else {\n nextVal = target.value as unknown as TValues[K];\n }\n } else {\n nextVal = e;\n }\n void setValue(field, nextVal);\n },\n onBlur: () => {\n setTouched(field, true);\n if (validateOn === \"blur\") {\n void validateFieldInternal(field, valuesRef.current[field]);\n }\n },\n };\n },\n [values, setValue, setTouched, validateOn, validateFieldInternal]\n );\n\n return {\n values,\n errors,\n touched,\n dirty,\n isValidating,\n isSubmitting,\n isValid,\n setValue,\n setTouched,\n setError,\n clearError,\n validateField,\n validateAll,\n handleSubmit,\n reset,\n getFieldProps,\n getInputProps,\n };\n}\n","import * as React from \"react\";\r\nimport type { CheckboxContextValue } from \"./Checkbox.types\";\r\n\r\nexport const CheckboxContext = React.createContext<\r\n CheckboxContextValue | undefined\r\n>(undefined);\r\n\r\n/**\r\n * Hook to consume parent CheckboxGroup context.\r\n * Returns undefined if the checkbox is rendered standalone.\r\n */\r\nexport function useCheckboxGroup(): CheckboxContextValue | undefined {\r\n return React.useContext(CheckboxContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useCheckboxGroup } from \"./CheckboxContext\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n CheckboxProps,\r\n CheckboxSize,\r\n CheckboxColorScheme,\r\n} from \"./Checkbox.types\";\r\n\r\nexport type { CheckboxProps, CheckboxSize, CheckboxColorScheme };\r\n\r\nconst StyledCheckboxRoot = styled(\"label\", {\r\n name: \"ChellaaCheckbox\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"error\" &&\r\n prop !== \"checked\" &&\r\n prop !== \"indeterminate\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Checkbox primitive with tri-state selection, custom color palettes,\r\n * keyboard accessibility, and automatic CheckboxGroup / FormField binding.\r\n *\r\n * @example\r\n * <Checkbox defaultChecked>Subscribe to updates</Checkbox>\r\n * <Checkbox indeterminate>Select all items</Checkbox>\r\n */\r\nexport const Checkbox = React.forwardRef<HTMLLabelElement, CheckboxProps>(\r\n function Checkbox(props, ref) {\r\n const group = useCheckboxGroup();\r\n const formField = useFormField();\r\n\r\n const {\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n indeterminate = false,\r\n onChange: onChangeProp,\r\n value: valueProp,\r\n name: nameProp,\r\n size: sizeProp,\r\n colorScheme: colorSchemeProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n inputRef: inputRefProp,\r\n inputProps = {},\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n id: idProp,\r\n ...rest\r\n } = props;\r\n\r\n // Cascade resolution: Props > Group > FormField > Defaults\r\n const isGroupControlled = group !== undefined && valueProp !== undefined;\r\n const isCheckedInGroup = isGroupControlled\r\n ? group.value.includes(valueProp)\r\n : undefined;\r\n\r\n const checked =\r\n checkedProp !== undefined ? checkedProp : isCheckedInGroup;\r\n\r\n const size = sizeProp ?? group?.size ?? \"md\";\r\n const colorScheme = colorSchemeProp ?? group?.colorScheme ?? \"primary\";\r\n const disabled =\r\n disabledProp ?? group?.disabled ?? formField?.disabled ?? false;\r\n const readOnly =\r\n readOnlyProp ?? group?.readOnly ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? group?.error ?? formField?.error ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const name = nameProp ?? group?.name ?? formField?.name;\r\n const id = idProp ?? (formField ? `${formField.id}-checkbox` : undefined);\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(\r\n defaultChecked\r\n );\r\n\r\n const isControlled = checked !== undefined;\r\n const effectiveChecked = isControlled ? checked : uncontrolledChecked;\r\n\r\n const nativeInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const mergedInputRef = useMergeRefs(nativeInputRef, inputRefProp);\r\n\r\n React.useEffect(() => {\r\n if (nativeInputRef.current) {\r\n nativeInputRef.current.indeterminate = Boolean(indeterminate);\r\n }\r\n }, [indeterminate]);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled || readOnly) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (isGroupControlled) {\r\n group.toggleValue(valueProp);\r\n } else if (!isControlled) {\r\n setUncontrolledChecked(event.target.checked);\r\n }\r\n\r\n onChangeProp?.(event);\r\n };\r\n\r\n const checkboxClassName = classNames(\r\n \"cl-checkbox\",\r\n `cl-checkbox--${size}`,\r\n `cl-checkbox--${colorScheme}`,\r\n effectiveChecked && \"cl-checkbox--checked\",\r\n indeterminate && \"cl-checkbox--indeterminate\",\r\n disabled && \"cl-checkbox--disabled\",\r\n error && \"cl-checkbox--error\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const controlBox = (\r\n <span className=\"cl-checkbox__control ChellaaCheckbox-Control\" aria-hidden=\"true\">\r\n {indeterminate ? (\r\n <svg\r\n className=\"cl-checkbox__icon ChellaaCheckbox-Icon ChellaaCheckbox-Icon--indeterminate\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n width={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n height={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n >\r\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\r\n </svg>\r\n ) : effectiveChecked ? (\r\n <svg\r\n className=\"cl-checkbox__icon ChellaaCheckbox-Icon ChellaaCheckbox-Icon--checked\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n width={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n height={size === \"lg\" ? 18 : size === \"sm\" ? 12 : 14}\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n ) : null}\r\n </span>\r\n );\r\n\r\n const ariaDescribedBy = [\r\n inputProps[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const nativeInputNode = (\r\n <input\r\n type=\"checkbox\"\r\n id={id}\r\n name={name}\r\n value={valueProp}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n checked={isControlled ? effectiveChecked : undefined}\r\n defaultChecked={!isControlled ? defaultChecked : undefined}\r\n onChange={handleChange}\r\n ref={mergedInputRef}\r\n aria-checked={indeterminate ? \"mixed\" : effectiveChecked}\r\n aria-invalid={error ? true : undefined}\r\n aria-describedby={ariaDescribedBy}\r\n className=\"cl-checkbox__input\"\r\n {...inputProps}\r\n />\r\n );\r\n\r\n if (asChild) {\r\n const childElement = React.isValidElement(children)\r\n ? (children as React.ReactElement<{ children?: React.ReactNode }>)\r\n : null;\r\n\r\n if (!childElement) {\r\n return (\r\n <StyledCheckboxRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={checkboxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCheckboxRoot>\r\n );\r\n }\r\n\r\n const childLabel = childElement.props.children;\r\n\r\n return (\r\n <StyledCheckboxRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={checkboxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {React.cloneElement(\r\n childElement,\r\n undefined,\r\n <>\r\n {nativeInputNode}\r\n {controlBox}\r\n {childLabel && (\r\n <span className=\"cl-checkbox__label ChellaaCheckbox-Label\">\r\n {childLabel}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n </StyledCheckboxRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledCheckboxRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={checkboxClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {nativeInputNode}\r\n {controlBox}\r\n {children && (\r\n <span className=\"cl-checkbox__label ChellaaCheckbox-Label\">\r\n {children}\r\n </span>\r\n )}\r\n </StyledCheckboxRoot>\r\n );\r\n }\r\n);\r\n\r\nCheckbox.displayName = \"Checkbox\";\r\n","import * as React from \"react\";\n\nexport interface UseControllableStateParams<T> {\n value?: T | undefined;\n defaultValue?: T | (() => T) | undefined;\n onChange?: ((value: T) => void) | undefined;\n}\n\n/**\n * Manages state that can be either controlled (via `value`) or uncontrolled (via `defaultValue`).\n * When controlled, updates trigger `onChange` without mutating internal state directly.\n * When uncontrolled, internal state updates and `onChange` is notified.\n */\nexport function useControllableState<T>({\n value: valueProp,\n defaultValue,\n onChange,\n}: UseControllableStateParams<T>): [\n T,\n (nextValue: T | ((prev: T) => T)) => void,\n] {\n const isControlled = valueProp !== undefined;\n\n const [uncontrolledValue, setUncontrolledValue] = React.useState<T>(() => {\n if (defaultValue !== undefined) {\n return typeof defaultValue === \"function\"\n ? (defaultValue as () => T)()\n : defaultValue;\n }\n return undefined as unknown as T;\n });\n\n const value = isControlled ? (valueProp as T) : uncontrolledValue;\n\n const onChangeRef = React.useRef(onChange);\n React.useEffect(() => {\n onChangeRef.current = onChange;\n });\n\n const setValue = React.useCallback(\n (next: T | ((prev: T) => T)) => {\n const resolvedNext =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n\n if (!Object.is(value, resolvedNext)) {\n if (!isControlled) {\n setUncontrolledValue(resolvedNext);\n }\n onChangeRef.current?.(resolvedNext);\n }\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport { CheckboxContext } from \"./CheckboxContext\";\r\nimport type { CheckboxGroupProps, CheckboxContextValue } from \"./Checkbox.types\";\r\n\r\ninterface StyledCheckboxGroupRootProps {\r\n orientation?: \"vertical\" | \"horizontal\" | undefined;\r\n spacing?: number | string | undefined;\r\n}\r\n\r\nconst StyledCheckboxGroupRoot = styled(\"div\", {\r\n name: \"ChellaaCheckboxGroup\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"orientation\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})<StyledCheckboxGroupRootProps>(({ theme, spacing = 2 }) => {\r\n const gapValue =\r\n typeof spacing === \"number\" ? theme.spacing(spacing) : spacing;\r\n\r\n return {\r\n gap: gapValue,\r\n };\r\n});\r\n\r\n/**\r\n * CheckboxGroup manages selection state for a set of related checkboxes,\r\n * cascading shared properties and orchestrating multi-selection arrays.\r\n *\r\n * @example\r\n * <CheckboxGroup defaultValue={['react']} onChange={(val) => console.log(val)}>\r\n * <Checkbox value=\"react\">React</Checkbox>\r\n * <Checkbox value=\"vue\">Vue</Checkbox>\r\n * <Checkbox value=\"svelte\">Svelte</Checkbox>\r\n * </CheckboxGroup>\r\n */\r\nexport const CheckboxGroup = React.forwardRef<\r\n HTMLDivElement,\r\n CheckboxGroupProps\r\n>(function CheckboxGroup(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n value: valueProp,\r\n defaultValue = [],\r\n onChange: onChangeProp,\r\n name: nameProp,\r\n size = \"md\",\r\n colorScheme = \"primary\",\r\n orientation = \"vertical\",\r\n spacing = 2,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n error: errorProp,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const name = nameProp ?? formField?.name;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n\r\n const [value, setValue] = useControllableState<string[]>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onChangeProp,\r\n });\r\n\r\n const toggleValue = React.useCallback(\r\n (itemValue: string) => {\r\n if (readOnly || disabled) return;\r\n const current = value || [];\r\n const next = current.includes(itemValue)\r\n ? current.filter((v) => v !== itemValue)\r\n : [...current, itemValue];\r\n setValue(next);\r\n },\r\n [value, setValue, readOnly, disabled]\r\n );\r\n\r\n const contextValue: CheckboxContextValue = React.useMemo(\r\n () => ({\r\n value: value || [],\r\n name,\r\n size,\r\n colorScheme,\r\n disabled,\r\n readOnly,\r\n error,\r\n toggleValue,\r\n }),\r\n [value, name, size, colorScheme, disabled, readOnly, error, toggleValue]\r\n );\r\n\r\n const groupClassName = classNames(\r\n \"cl-checkbox-group\",\r\n `cl-checkbox-group--${orientation}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <CheckboxContext.Provider value={contextValue}>\r\n <StyledCheckboxGroupRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"group\"\r\n orientation={orientation}\r\n spacing={spacing}\r\n className={groupClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCheckboxGroupRoot>\r\n </CheckboxContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <CheckboxContext.Provider value={contextValue}>\r\n <StyledCheckboxGroupRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"group\"\r\n orientation={orientation}\r\n spacing={spacing}\r\n className={groupClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCheckboxGroupRoot>\r\n </CheckboxContext.Provider>\r\n );\r\n});\r\n\r\nCheckboxGroup.displayName = \"CheckboxGroup\";\r\n","import * as React from \"react\";\r\nimport type { RadioContextValue } from \"./Radio.types\";\r\n\r\nexport const RadioContext = React.createContext<\r\n RadioContextValue | undefined\r\n>(undefined);\r\n\r\n/**\r\n * Hook to consume parent RadioGroup context.\r\n * Returns undefined if the radio is rendered standalone.\r\n */\r\nexport function useRadioGroup(): RadioContextValue | undefined {\r\n return React.useContext(RadioContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useRadioGroup } from \"./RadioContext\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n RadioProps,\r\n RadioSize,\r\n RadioColorScheme,\r\n} from \"./Radio.types\";\r\n\r\nexport type { RadioProps, RadioSize, RadioColorScheme };\r\n\r\nconst StyledRadioRoot = styled(\"label\", {\r\n name: \"ChellaaRadio\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"error\" &&\r\n prop !== \"checked\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Radio primitive for single-choice selection with animated circular dot indicator,\r\n * accessible keyboard arrow navigation, and automatic RadioGroup / FormField binding.\r\n *\r\n * @example\r\n * <Radio value=\"express\">Express Delivery</Radio>\r\n */\r\nexport const Radio = React.forwardRef<HTMLLabelElement, RadioProps>(\r\n function Radio(props, ref) {\r\n const group = useRadioGroup();\r\n const formField = useFormField();\r\n\r\n const {\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n onChange: onChangeProp,\r\n value: valueProp,\r\n name: nameProp,\r\n size: sizeProp,\r\n colorScheme: colorSchemeProp,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n inputRef: inputRefProp,\r\n inputProps = {},\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n id: idProp,\r\n ...rest\r\n } = props;\r\n\r\n const isGroupControlled = group !== undefined && valueProp !== undefined;\r\n const isCheckedInGroup = isGroupControlled\r\n ? group.value !== undefined && String(group.value) === String(valueProp)\r\n : undefined;\r\n\r\n const checked =\r\n checkedProp !== undefined ? checkedProp : isCheckedInGroup;\r\n\r\n const size = sizeProp ?? group?.size ?? \"md\";\r\n const colorScheme = colorSchemeProp ?? group?.colorScheme ?? \"primary\";\r\n const disabled =\r\n disabledProp ?? group?.disabled ?? formField?.disabled ?? false;\r\n const readOnly =\r\n readOnlyProp ?? group?.readOnly ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? group?.error ?? formField?.error ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const name = nameProp ?? group?.name ?? formField?.name;\r\n const id = idProp ?? (formField ? `${formField.id}-radio-${valueProp ?? \"\"}` : undefined);\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(\r\n defaultChecked\r\n );\r\n\r\n const isControlled = checked !== undefined;\r\n const effectiveChecked = isControlled ? checked : uncontrolledChecked;\r\n\r\n const nativeInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const mergedInputRef = useMergeRefs(nativeInputRef, inputRefProp);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled || readOnly) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (isGroupControlled && valueProp !== undefined) {\r\n group.onChange(valueProp);\r\n } else if (!isControlled) {\r\n setUncontrolledChecked(event.target.checked);\r\n }\r\n\r\n onChangeProp?.(event);\r\n };\r\n\r\n const radioClassName = classNames(\r\n \"cl-radio\",\r\n `cl-radio--${size}`,\r\n `cl-radio--${colorScheme}`,\r\n effectiveChecked && \"cl-radio--checked\",\r\n disabled && \"cl-radio--disabled\",\r\n error && \"cl-radio--error\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const controlBox = (\r\n <span className=\"cl-radio__control ChellaaRadio-Control\" aria-hidden=\"true\">\r\n <span className=\"cl-radio__dot ChellaaRadio-Dot\" />\r\n </span>\r\n );\r\n\r\n const ariaDescribedBy = [\r\n inputProps[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const nativeInputNode = (\r\n <input\r\n type=\"radio\"\r\n id={id}\r\n name={name}\r\n value={valueProp}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n checked={isControlled ? effectiveChecked : undefined}\r\n defaultChecked={!isControlled ? defaultChecked : undefined}\r\n onChange={handleChange}\r\n ref={mergedInputRef}\r\n aria-invalid={error ? true : undefined}\r\n aria-describedby={ariaDescribedBy}\r\n className=\"cl-radio__input\"\r\n {...inputProps}\r\n />\r\n );\r\n\r\n if (asChild) {\r\n const childElement = React.isValidElement(children)\r\n ? (children as React.ReactElement<{ children?: React.ReactNode }>)\r\n : null;\r\n\r\n if (!childElement) {\r\n return (\r\n <StyledRadioRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={radioClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledRadioRoot>\r\n );\r\n }\r\n\r\n const childLabel = childElement.props.children;\r\n\r\n return (\r\n <StyledRadioRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={radioClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {React.cloneElement(\r\n childElement,\r\n undefined,\r\n <>\r\n {nativeInputNode}\r\n {controlBox}\r\n {childLabel && (\r\n <span className=\"cl-radio__label ChellaaRadio-Label\">\r\n {childLabel}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n </StyledRadioRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledRadioRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={radioClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {nativeInputNode}\r\n {controlBox}\r\n {children && (\r\n <span className=\"cl-radio__label ChellaaRadio-Label\">\r\n {children}\r\n </span>\r\n )}\r\n </StyledRadioRoot>\r\n );\r\n }\r\n);\r\n\r\nRadio.displayName = \"Radio\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport { RadioContext } from \"./RadioContext\";\r\nimport type { RadioGroupProps, RadioContextValue } from \"./Radio.types\";\r\n\r\nconst StyledRadioGroupRoot = styled(\"div\", {\r\n name: \"ChellaaRadioGroup\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"orientation\" &&\r\n prop !== \"spacing\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"error\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * RadioGroup manages single-selection state across a group of mutually exclusive Radios,\r\n * providing native roving keyboard navigation and shared property cascade.\r\n *\r\n * @example\r\n * <RadioGroup defaultValue=\"standard\" onChange={(val) => console.log(val)}>\r\n * <Radio value=\"standard\">Standard Shipping (3-5 days)</Radio>\r\n * <Radio value=\"express\">Express Shipping (1-2 days)</Radio>\r\n * <Radio value=\"overnight\">Overnight Delivery</Radio>\r\n * </RadioGroup>\r\n */\r\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\r\n function RadioGroup(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n value: valueProp,\r\n defaultValue,\r\n onChange: onChangeProp,\r\n name: nameProp,\r\n size = \"md\",\r\n colorScheme = \"primary\",\r\n orientation = \"vertical\",\r\n spacing = 2,\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n error: errorProp,\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n\r\n const generatedName = React.useId();\r\n const name = nameProp || formField?.name || generatedName;\r\n const disabled = disabledProp ?? formField?.disabled ?? false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n\r\n const [value, setValue] = useControllableState<string | number | undefined>({\r\n value: valueProp,\r\n defaultValue,\r\n onChange: (val) => {\r\n if (val !== undefined) {\r\n onChangeProp?.(val);\r\n }\r\n },\r\n });\r\n\r\n const handleChange = React.useCallback(\r\n (nextValue: string | number) => {\r\n if (readOnly || disabled) return;\r\n setValue(nextValue);\r\n },\r\n [readOnly, disabled, setValue]\r\n );\r\n\r\n const contextValue: RadioContextValue = React.useMemo(\r\n () => ({\r\n value,\r\n name,\r\n size,\r\n colorScheme,\r\n disabled,\r\n readOnly,\r\n error,\r\n onChange: handleChange,\r\n }),\r\n [value, name, size, colorScheme, disabled, readOnly, error, handleChange]\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const groupClassName = classNames(\r\n \"cl-radio-group\",\r\n orientation === \"horizontal\"\r\n ? \"cl-radio-group--horizontal\"\r\n : \"cl-radio-group--vertical\",\r\n className\r\n );\r\n\r\n const gapStyle =\r\n spacing !== undefined\r\n ? {\r\n gap: typeof spacing === \"number\" ? `${spacing * 4}px` : spacing,\r\n ...style,\r\n }\r\n : style;\r\n\r\n if (asChild) {\r\n return (\r\n <RadioContext.Provider value={contextValue}>\r\n <StyledRadioGroupRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"radiogroup\"\r\n className={groupClassName}\r\n style={gapStyle}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledRadioGroupRoot>\r\n </RadioContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <RadioContext.Provider value={contextValue}>\r\n <StyledRadioGroupRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n role=\"radiogroup\"\r\n className={groupClassName}\r\n style={gapStyle}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledRadioGroupRoot>\r\n </RadioContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nRadioGroup.displayName = \"RadioGroup\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport type {\r\n SwitchProps,\r\n SwitchSize,\r\n SwitchColorScheme,\r\n SwitchLabelPlacement,\r\n} from \"./Switch.types\";\r\n\r\nexport type {\r\n SwitchProps,\r\n SwitchSize,\r\n SwitchColorScheme,\r\n SwitchLabelPlacement,\r\n};\r\n\r\nconst StyledSwitchRoot = styled(\"label\", {\r\n name: \"ChellaaSwitch\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"size\" &&\r\n prop !== \"labelPlacement\" &&\r\n prop !== \"disabled\" &&\r\n prop !== \"readOnly\" &&\r\n prop !== \"error\" &&\r\n prop !== \"loading\" &&\r\n prop !== \"checked\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Switch primitive representing an immediate binary toggle setting.\r\n * Conforms to the W3C WAI-ARIA 1.2 Switch Pattern (`role=\"switch\"`).\r\n *\r\n * @example\r\n * <Switch defaultChecked>Enable Notifications</Switch>\r\n */\r\nexport const Switch = React.forwardRef<HTMLLabelElement, SwitchProps>(\r\n function Switch(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n checked: checkedProp,\r\n defaultChecked = false,\r\n onChange: onChangeProp,\r\n value,\r\n name: nameProp,\r\n size = \"md\",\r\n colorScheme = \"primary\",\r\n disabled: disabledProp,\r\n readOnly: readOnlyProp,\r\n required: requiredProp,\r\n error: errorProp,\r\n loading = false,\r\n checkedIcon,\r\n uncheckedIcon,\r\n labelPlacement = \"end\",\r\n inputRef: inputRefProp,\r\n inputProps = {},\r\n asChild = false,\r\n component,\r\n as,\r\n children,\r\n className,\r\n style,\r\n sx,\r\n id: idProp,\r\n ...rest\r\n } = props;\r\n\r\n const disabled =\r\n disabledProp ?? formField?.disabled ?? loading ? true : false;\r\n const readOnly = readOnlyProp ?? formField?.readOnly ?? false;\r\n const error = errorProp ?? formField?.error ?? false;\r\n const required = requiredProp ?? formField?.required ?? false;\r\n const name = nameProp ?? formField?.name;\r\n const id = idProp ?? (formField ? `${formField.id}-switch` : undefined);\r\n\r\n const [uncontrolledChecked, setUncontrolledChecked] = React.useState<boolean>(\r\n defaultChecked\r\n );\r\n\r\n const isControlled = checkedProp !== undefined;\r\n const effectiveChecked = isControlled ? checkedProp : uncontrolledChecked;\r\n\r\n const nativeInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const mergedInputRef = useMergeRefs(nativeInputRef, inputRefProp);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (disabled || readOnly || loading) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!isControlled) {\r\n setUncontrolledChecked(event.target.checked);\r\n }\r\n\r\n onChangeProp?.(event);\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n if (!disabled && !readOnly && !loading) {\r\n nativeInputRef.current?.click();\r\n }\r\n } else if (event.key === \" \" && (readOnly || loading)) {\r\n event.preventDefault();\r\n }\r\n inputProps.onKeyDown?.(event);\r\n };\r\n\r\n const switchClassName = classNames(\r\n \"cl-switch\",\r\n `cl-switch--${size}`,\r\n `cl-switch--${colorScheme}`,\r\n `cl-switch--placement-${labelPlacement}`,\r\n effectiveChecked && \"cl-switch--checked\",\r\n disabled && \"cl-switch--disabled\",\r\n error && \"cl-switch--error\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n const thumbIcon = loading ? (\r\n <svg\r\n className=\"cl-switch__spinner\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"3\"\r\n strokeDasharray=\"40 20\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n ) : effectiveChecked ? (\r\n checkedIcon\r\n ) : (\r\n uncheckedIcon\r\n );\r\n\r\n const trackControl = (\r\n <span className=\"cl-switch__track ChellaaSwitch-Track\" aria-hidden=\"true\">\r\n <span className=\"cl-switch__thumb ChellaaSwitch-Thumb\">\r\n {thumbIcon}\r\n </span>\r\n </span>\r\n );\r\n\r\n const ariaDescribedBy = [\r\n inputProps[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const nativeInputNode = (\r\n <input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n id={id}\r\n name={name}\r\n value={value}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n required={required}\r\n checked={isControlled ? effectiveChecked : undefined}\r\n defaultChecked={!isControlled ? defaultChecked : undefined}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n ref={mergedInputRef}\r\n aria-checked={effectiveChecked}\r\n aria-invalid={error ? true : undefined}\r\n aria-describedby={ariaDescribedBy}\r\n className=\"cl-switch__input\"\r\n {...inputProps}\r\n />\r\n );\r\n\r\n if (asChild) {\r\n const childElement = React.isValidElement(children)\r\n ? (children as React.ReactElement<{ children?: React.ReactNode }>)\r\n : null;\r\n\r\n if (!childElement) {\r\n return (\r\n <StyledSwitchRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={switchClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledSwitchRoot>\r\n );\r\n }\r\n\r\n const childLabel = childElement.props.children;\r\n\r\n return (\r\n <StyledSwitchRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={switchClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {React.cloneElement(\r\n childElement,\r\n undefined,\r\n <>\r\n {nativeInputNode}\r\n {trackControl}\r\n {childLabel && (\r\n <span className=\"cl-switch__label ChellaaSwitch-Label\">\r\n {childLabel}\r\n </span>\r\n )}\r\n </>\r\n )}\r\n </StyledSwitchRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledSwitchRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLLabelElement>}\r\n className={switchClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {nativeInputNode}\r\n {trackControl}\r\n {children && (\r\n <span className=\"cl-switch__label ChellaaSwitch-Label\">\r\n {children}\r\n </span>\r\n )}\r\n </StyledSwitchRoot>\r\n );\r\n }\r\n);\r\n\r\nSwitch.displayName = \"Switch\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\n\r\nimport type {\r\n PaperVariant,\r\n PaperOwnerState,\r\n PaperProps,\r\n} from \"./Paper.types\";\r\n\r\nexport type { PaperVariant, PaperOwnerState, PaperProps };\r\n\r\nconst StyledPaperRoot = styled(\"div\", {\r\n name: \"ChellaaPaper\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"elevation\" &&\r\n prop !== \"variant\" &&\r\n prop !== \"square\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n/**\r\n * Material Paper elevation surface container with 24-level elevation shadows,\r\n * dark-mode surface elevation overlays, and outlined variants.\r\n *\r\n * @example\r\n * <Paper elevation={3} sx={{ p: 2 }}>\r\n * Elevated Content\r\n * </Paper>\r\n */\r\nexport const Paper = React.forwardRef<HTMLElement, PaperProps>(\r\n function Paper(props, ref) {\r\n const {\r\n asChild = false,\r\n component,\r\n as,\r\n elevation = 1,\r\n variant = \"elevation\",\r\n square = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const clampedElevation = Math.max(0, Math.min(24, elevation));\r\n\r\n const paperClassName = classNames(\r\n \"cl-paper\",\r\n square && \"cl-paper--square\",\r\n variant === \"outlined\" ? \"cl-paper--outlined\" : `cl-paper--elevation-${clampedElevation}`,\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n if (asChild) {\r\n return (\r\n <StyledPaperRoot\r\n as={Slot}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={paperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledPaperRoot>\r\n );\r\n }\r\n\r\n if (targetTag) {\r\n return (\r\n <StyledPaperRoot\r\n as={targetTag}\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={paperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledPaperRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledPaperRoot\r\n ref={ref as React.Ref<HTMLDivElement>}\r\n className={paperClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledPaperRoot>\r\n );\r\n }\r\n);\r\n\r\nPaper.displayName = \"Paper\";\r\n","import * as React from \"react\";\r\nimport type { CardSize } from \"./Card.types\";\r\n\r\n/**\r\n * Internal context propagating Card root's `size` prop to all sub-components\r\n * (CardHeader, CardBody, CardFooter, CardActions) so they produce consistent\r\n * padding without consumers having to pass `size` to every child.\r\n */\r\nexport interface CardContextValue {\r\n size: CardSize;\r\n}\r\n\r\nexport const CardContext = React.createContext<CardContextValue>({\r\n size: \"md\",\r\n});\r\n\r\nexport function useCardContext(): CardContextValue {\r\n return React.useContext(CardContext);\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { CardContext } from \"./CardContext\";\r\nimport type {\r\n CardProps,\r\n CardHeaderProps,\r\n CardTitleProps,\r\n CardDescriptionProps,\r\n CardMediaProps,\r\n CardBodyProps,\r\n CardFooterProps,\r\n CardActionsProps,\r\n} from \"./Card.types\";\r\n\r\n// ─── Card Root Styled Component ──────────────────────────────────────────────\r\n\r\nconst StyledCardRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"elevation\" &&\r\n prop !== \"hoverable\" &&\r\n prop !== \"square\" &&\r\n prop !== \"size\" &&\r\n prop !== \"asChild\" &&\r\n prop !== \"component\",\r\n})({});\r\n\r\n// ─── Card Component ──────────────────────────────────────────────────────────\r\n\r\n/**\r\n * Material Design 3-aligned surface container with compound sub-components.\r\n * Supports 3 visual variants, numeric M3 elevation, dark-mode overlay tinting,\r\n * and an optional hoverable lift mode.\r\n *\r\n * @example\r\n * <Card hoverable>\r\n * <CardMedia image=\"/hero.jpg\" alt=\"Hero\" />\r\n * <CardHeader title=\"Title\" subheader=\"Subtitle\" />\r\n * <CardBody>Content here</CardBody>\r\n * <CardActions>\r\n * <Button>Action</Button>\r\n * </CardActions>\r\n * </Card>\r\n */\r\nexport const CardRoot = React.forwardRef<HTMLDivElement, CardProps>(\r\n function CardRoot(props, ref) {\r\n const {\r\n variant = \"elevated\",\r\n elevation = 1,\r\n size = \"md\",\r\n hoverable = false,\r\n isClickable = false,\r\n square = false,\r\n asChild = false,\r\n component,\r\n as,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const normalizedVariant = variant === \"outline\" ? \"outlined\" : variant;\r\n\r\n const cardClassName = classNames(\r\n \"cl-card\",\r\n `cl-card--${size}`,\r\n `cl-card--${normalizedVariant}`,\r\n variant === \"outline\" && \"cl-card--outline\",\r\n square && \"cl-card--square\",\r\n (hoverable || isClickable) && \"cl-card--hoverable\",\r\n isClickable && \"cl-card--clickable\",\r\n className\r\n );\r\n\r\n const targetTag = component || as;\r\n\r\n return (\r\n <CardContext.Provider value={{ size }}>\r\n {asChild ? (\r\n <StyledCardRoot\r\n as={Slot}\r\n ref={ref}\r\n className={cardClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardRoot>\r\n ) : (\r\n <StyledCardRoot\r\n as={targetTag}\r\n ref={ref}\r\n className={cardClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardRoot>\r\n )}\r\n </CardContext.Provider>\r\n );\r\n }\r\n);\r\n\r\nCardRoot.displayName = \"Card\";\r\n\r\n// ─── CardHeader Styled Components ────────────────────────────────────────────\r\n\r\nconst StyledCardHeaderRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Header\",\r\n shouldForwardProp: (prop) => prop !== \"cardSize\" && prop !== \"asChild\",\r\n})({});\r\n\r\n// ─── CardHeader Component ────────────────────────────────────────────────────\r\n\r\n/**\r\n * Header zone of a Card. Supports avatar, title, subheader, and trailing action slots.\r\n * Automatically inherits `size` from the parent Card via CardContext.\r\n */\r\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\r\n function CardHeader(props, ref) {\r\n const {\r\n avatar,\r\n action,\r\n title,\r\n subheader,\r\n titleTypographyProps,\r\n subheaderTypographyProps,\r\n asChild = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const headerClassName = classNames(\r\n \"cl-card__header\",\r\n \"ChellaaCard-header\",\r\n className\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <StyledCardHeaderRoot\r\n as={Slot}\r\n ref={ref}\r\n className={headerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardHeaderRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledCardHeaderRoot\r\n ref={ref}\r\n className={headerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {avatar && (\r\n <div className=\"cl-card__header-avatar ChellaaCard-headerAvatar\">\r\n {avatar}\r\n </div>\r\n )}\r\n <div className=\"cl-card__header-content ChellaaCard-headerContent\">\r\n {title != null && (\r\n <span\r\n className={classNames(\r\n \"cl-card__header-title\",\r\n \"ChellaaCard-headerTitle\",\r\n titleTypographyProps?.className\r\n )}\r\n {...titleTypographyProps}\r\n >\r\n {title}\r\n </span>\r\n )}\r\n {subheader != null && (\r\n <span\r\n className={classNames(\r\n \"cl-card__header-subheader\",\r\n \"ChellaaCard-headerSubheader\",\r\n subheaderTypographyProps?.className\r\n )}\r\n {...subheaderTypographyProps}\r\n >\r\n {subheader}\r\n </span>\r\n )}\r\n {children}\r\n </div>\r\n {action && (\r\n <div className=\"cl-card__header-action ChellaaCard-headerAction\">\r\n {action}\r\n </div>\r\n )}\r\n </StyledCardHeaderRoot>\r\n );\r\n }\r\n);\r\n\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\n// ─── CardMedia Styled Component ──────────────────────────────────────────────\r\n\r\nconst StyledCardMediaRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Media\",\r\n shouldForwardProp: (prop) => prop !== \"image\" && prop !== \"aspectRatio\",\r\n})({});\r\n\r\n// ─── CardMedia Component ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Aspect-ratio-locked media zone that bleeds edge-to-edge within the card.\r\n * Use the `image` prop for a CSS background shorthand, or place an `<img>`\r\n * child for semantic HTML (preferred for accessibility).\r\n */\r\nexport const CardMedia = React.forwardRef<HTMLDivElement, CardMediaProps>(\r\n function CardMedia(props, ref) {\r\n const {\r\n image,\r\n alt,\r\n aspectRatio = \"16/9\",\r\n component,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...rest\r\n } = props;\r\n\r\n const mediaStyle: React.CSSProperties = {\r\n ...(aspectRatio ? { aspectRatio } : {}),\r\n ...(image ? { backgroundImage: `url(${image})` } : {}),\r\n ...style,\r\n };\r\n\r\n const mediaClassName = classNames(\r\n \"cl-card__media\",\r\n \"ChellaaCard-media\",\r\n className\r\n );\r\n\r\n return (\r\n <StyledCardMediaRoot\r\n as={component}\r\n ref={ref}\r\n className={mediaClassName}\r\n style={mediaStyle}\r\n sx={sx}\r\n role={image && !children ? \"img\" : undefined}\r\n aria-label={image && !children ? alt : undefined}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardMediaRoot>\r\n );\r\n }\r\n);\r\n\r\nCardMedia.displayName = \"CardMedia\";\r\n\r\n// ─── CardBody Styled Component ───────────────────────────────────────────────\r\n\r\nconst StyledCardBodyRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Body\",\r\n shouldForwardProp: (prop) => prop !== \"cardSize\",\r\n})({});\r\n\r\n// ─── CardBody Component ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Main flexible content zone of a Card.\r\n * Inherits `size` from parent Card for consistent padding.\r\n */\r\nexport const CardBody = React.forwardRef<HTMLDivElement, CardBodyProps>(\r\n function CardBody(props, ref) {\r\n const { children, className, style, sx, ...rest } = props;\r\n const bodyClassName = classNames(\"cl-card__body\", \"ChellaaCard-body\", className);\r\n\r\n return (\r\n <StyledCardBodyRoot\r\n ref={ref}\r\n className={bodyClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardBodyRoot>\r\n );\r\n }\r\n);\r\n\r\nCardBody.displayName = \"CardBody\";\r\n\r\n// ─── CardFooter Styled Component ─────────────────────────────────────────────\r\n\r\nconst StyledCardFooterRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Footer\",\r\n shouldForwardProp: (prop) => prop !== \"divider\" && prop !== \"cardSize\",\r\n})({});\r\n\r\n// ─── CardFooter Component ────────────────────────────────────────────────────\r\n\r\n/**\r\n * Semantic footer zone of a Card. Use for metadata, tags, timestamps.\r\n * Set `divider` to render a 1px separator between the body and footer.\r\n */\r\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\r\n function CardFooter(props, ref) {\r\n const { divider = false, children, className, style, sx, ...rest } = props;\r\n const footerClassName = classNames(\r\n \"cl-card__footer\",\r\n \"ChellaaCard-footer\",\r\n divider && \"cl-card__footer--divider\",\r\n className\r\n );\r\n\r\n return (\r\n <StyledCardFooterRoot\r\n ref={ref}\r\n className={footerClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardFooterRoot>\r\n );\r\n }\r\n);\r\n\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\n// ─── CardActions Styled Component ────────────────────────────────────────────\r\n\r\nconst StyledCardActionsRoot = styled(\"div\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Actions\",\r\n shouldForwardProp: (prop) => prop !== \"disableSpacing\" && prop !== \"cardSize\",\r\n})({});\r\n\r\n// ─── CardActions Component ───────────────────────────────────────────────────\r\n\r\n/**\r\n * Flex action strip for Button / Link controls inside a Card.\r\n * By default applies a slight negative margin to align icon-buttons\r\n * flush to the card's padding box. Use `disableSpacing` to remove this.\r\n */\r\nexport const CardActions = React.forwardRef<HTMLDivElement, CardActionsProps>(\r\n function CardActions(props, ref) {\r\n const {\r\n disableSpacing = false,\r\n align = \"start\",\r\n children,\r\n className,\r\n style,\r\n sx,\r\n ...rest\r\n } = props;\r\n const actionsClassName = classNames(\r\n \"cl-card__actions\",\r\n \"ChellaaCard-actions\",\r\n `cl-card__actions--align-${align}`,\r\n disableSpacing && \"cl-card__actions--disable-spacing\",\r\n className\r\n );\r\n\r\n return (\r\n <StyledCardActionsRoot\r\n ref={ref}\r\n className={actionsClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardActionsRoot>\r\n );\r\n }\r\n);\r\n\r\nCardActions.displayName = \"CardActions\";\r\n\r\n// ─── CardTitle Styled Component ──────────────────────────────────────────────\r\n\r\nconst StyledCardTitleRoot = styled(\"h3\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Title\",\r\n shouldForwardProp: (prop) => prop !== \"asChild\",\r\n})({});\r\n\r\n// ─── CardTitle Component ─────────────────────────────────────────────────────\r\n\r\n/**\r\n * Semantic heading component for a Card, typically rendered inside CardHeader.\r\n * Supports `asChild` for slot delegation to custom heading levels.\r\n */\r\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\r\n function CardTitle({ asChild = false, className, children, style, sx, ...rest }, ref) {\r\n const titleClassName = classNames(\"cl-card__title\", className);\r\n if (asChild) {\r\n return (\r\n <StyledCardTitleRoot\r\n as={Slot}\r\n ref={ref}\r\n className={titleClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardTitleRoot>\r\n );\r\n }\r\n return (\r\n <StyledCardTitleRoot\r\n ref={ref}\r\n className={titleClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardTitleRoot>\r\n );\r\n }\r\n);\r\n\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\n// ─── CardDescription Styled Component ────────────────────────────────────────\r\n\r\nconst StyledCardDescriptionRoot = styled(\"p\", {\r\n name: \"ChellaaCard\",\r\n slot: \"Description\",\r\n shouldForwardProp: (prop) => prop !== \"asChild\",\r\n})({});\r\n\r\n// ─── CardDescription Component ───────────────────────────────────────────────\r\n\r\n/**\r\n * Supporting subtext or subtitle paragraph for a Card.\r\n * Supports `asChild` for slot delegation.\r\n */\r\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\r\n function CardDescription({ asChild = false, className, children, style, sx, ...rest }, ref) {\r\n const descClassName = classNames(\"cl-card__description\", \"cl-card__desc\", className);\r\n if (asChild) {\r\n return (\r\n <StyledCardDescriptionRoot\r\n as={Slot}\r\n ref={ref}\r\n className={descClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardDescriptionRoot>\r\n );\r\n }\r\n return (\r\n <StyledCardDescriptionRoot\r\n ref={ref}\r\n className={descClassName}\r\n style={style}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {children}\r\n </StyledCardDescriptionRoot>\r\n );\r\n }\r\n);\r\n\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\n// ─── Compound Export ─────────────────────────────────────────────────────────\r\n\r\nexport const Card = Object.assign(CardRoot, {\r\n Root: CardRoot,\r\n Header: CardHeader,\r\n Title: CardTitle,\r\n Description: CardDescription,\r\n Body: CardBody,\r\n Footer: CardFooter,\r\n Media: CardMedia,\r\n Actions: CardActions,\r\n});\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\n\r\nexport interface PortalProps {\r\n children?: React.ReactNode;\r\n container?: HTMLElement | null;\r\n}\r\n\r\n/**\r\n * Renders child elements into a DOM container outside the parent component tree (default: document.body).\r\n * Preserves React Context across the portal boundary and is completely SSR/hydration safe.\r\n */\r\nexport function Portal({\r\n children,\r\n container,\r\n}: PortalProps): React.ReactPortal | null {\r\n const [mounted, setMounted] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n setMounted(true);\r\n return () => setMounted(false);\r\n }, []);\r\n\r\n if (!mounted) {\r\n return null;\r\n }\r\n\r\n const portalContainer =\r\n container ?? (typeof document !== \"undefined\" ? document.body : null);\r\n\r\n if (!portalContainer) {\r\n return null;\r\n }\r\n\r\n return ReactDOM.createPortal(children, portalContainer);\r\n}\r\n\r\nPortal.displayName = \"Portal\";\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n arrow,\n useHover,\n useFocus,\n useDismiss,\n useRole,\n useInteractions,\n safePolygon,\n} from \"@floating-ui/react\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Kbd } from \"../Kbd\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { classNames } from \"../../utils/classNames\";\nimport { getElementRef } from \"../../utils/getElementRef\";\nimport type { TooltipProps } from \"./Tooltip.types\";\n\n/**\n * Tooltip provides a lightweight, accessible floating text popup anchored to a target\n * trigger element, triggered via pointer hover or keyboard focus.\n *\n * Conforms to WCAG 2.2 AA (SC 1.4.13 Content on Hover or Focus) and WAI-ARIA APG Tooltip Pattern.\n */\nexport const Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(\n {\n content,\n children,\n placement = \"top\",\n openDelay = 200,\n closeDelay = 150,\n isOpen: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n hasArrow = true,\n isDisabled = false,\n offset: offsetProp = 8,\n shortcut,\n className,\n style,\n },\n forwardedRef,\n ) {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const isEffectivelyOpen = Boolean(isOpen && !isDisabled && content);\n const arrowRef = React.useRef<HTMLDivElement>(null);\n\n const {\n refs,\n floatingStyles,\n placement: actualPlacement,\n middlewareData,\n context,\n isPositioned,\n } = useFloating({\n placement,\n open: isEffectivelyOpen,\n onOpenChange: (nextOpen) => {\n if (!isDisabled && content) {\n setIsOpen(nextOpen);\n } else if (!nextOpen) {\n setIsOpen(false);\n }\n },\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(offsetProp),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 8 }),\n hasArrow ? arrow({ element: arrowRef }) : undefined,\n ].filter(Boolean),\n });\n\n const hover = useHover(context, {\n delay: {\n open: openDelay,\n close: closeDelay,\n },\n handleClose: safePolygon(),\n enabled: !isDisabled && Boolean(content),\n });\n\n const focus = useFocus(context, {\n visibleOnly: false,\n enabled: !isDisabled && Boolean(content),\n });\n\n const dismiss = useDismiss(context, {\n escapeKey: true,\n enabled: !isDisabled && Boolean(content),\n });\n\n const role = useRole(context, {\n role: \"tooltip\",\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n hover,\n focus,\n dismiss,\n role,\n ]);\n\n const generatedId = React.useId();\n const tooltipId = `cl-tooltip-${(context.floatingId || generatedId).replace(/:/g, \"\")}`;\n const childRef = React.isValidElement(children)\n ? getElementRef(children)\n : undefined;\n const mergedReferenceRef = useMergeRefs(refs.setReference, childRef);\n const mergedFloatingRef = useMergeRefs(refs.setFloating, forwardedRef);\n\n if (!React.isValidElement(children)) {\n return null;\n }\n\n const childProps = children.props as Record<string, unknown>;\n const childAriaDescribedBy = childProps[\"aria-describedby\"] as\n string | undefined;\n const mergedAriaDescribedBy = isEffectivelyOpen\n ? [childAriaDescribedBy, tooltipId].filter(Boolean).join(\" \")\n : childAriaDescribedBy;\n\n const referenceProps = getReferenceProps({\n ...childProps,\n ref: mergedReferenceRef,\n \"aria-describedby\": mergedAriaDescribedBy,\n });\n\n const clonedTrigger = React.cloneElement(children, referenceProps);\n\n return (\n <>\n {clonedTrigger}\n {isEffectivelyOpen && (\n <Portal>\n <div\n {...getFloatingProps({\n id: tooltipId,\n ref: mergedFloatingRef,\n role: \"tooltip\",\n className: classNames(\"cl-tooltip\", className),\n style: {\n ...floatingStyles,\n ...style,\n },\n })}\n data-state=\"open\"\n data-placement={actualPlacement}\n data-positioned={isPositioned ? \"true\" : undefined}\n >\n <span className=\"cl-tooltip__label\">{content}</span>\n {shortcut && (\n <span className=\"cl-tooltip__shortcut\">\n <Kbd size=\"sm\">{shortcut}</Kbd>\n </span>\n )}\n {hasArrow && (\n <div\n ref={arrowRef}\n className=\"cl-tooltip__arrow\"\n aria-hidden=\"true\"\n style={{\n left:\n middlewareData.arrow?.x != null\n ? `${middlewareData.arrow.x}px`\n : undefined,\n top:\n middlewareData.arrow?.y != null\n ? `${middlewareData.arrow.y}px`\n : undefined,\n }}\n />\n )}\n </div>\n </Portal>\n )}\n </>\n );\n },\n);\n\nTooltip.displayName = \"Tooltip\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n arrow,\n useClick,\n useDismiss,\n useRole,\n useInteractions,\n FloatingFocusManager,\n type FloatingContext,\n type ExtendedRefs,\n type MiddlewareData,\n} from \"@floating-ui/react\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { composeEventHandlers } from \"../../utils/composeEventHandlers\";\nimport { classNames } from \"../../utils/classNames\";\nimport { getElementRef } from \"../../utils/getElementRef\";\nimport type {\n PopoverRootProps,\n PopoverTriggerProps,\n PopoverPortalProps,\n PopoverContentProps,\n PopoverCloseProps,\n PopoverArrowProps,\n PopoverHeaderProps,\n PopoverTitleProps,\n PopoverBodyProps,\n PopoverFooterProps,\n PopoverContextValue,\n} from \"./Popover.types\";\n\ninterface PopoverInternalContextValue extends PopoverContextValue {\n floatingContext: FloatingContext;\n getReferenceProps: (\n userProps?: React.HTMLProps<Element>,\n ) => Record<string, unknown>;\n getFloatingProps: (\n userProps?: React.HTMLProps<HTMLElement>,\n ) => Record<string, unknown>;\n refs: ExtendedRefs<Element>;\n floatingStyles: React.CSSProperties;\n middlewareData: MiddlewareData;\n arrowRef: React.RefObject<HTMLDivElement | null>;\n hasCustomReference?: boolean;\n}\n\nconst PopoverContext = React.createContext<PopoverInternalContextValue | null>(\n null,\n);\n\nexport function usePopoverContext(): PopoverInternalContextValue {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\n \"Popover compound subcomponents must be rendered within a <Popover.Root> or <Popover>\",\n );\n }\n return context;\n}\n\n/**\n * Popover.Root (or <Popover>) manages the open state and floating positioning context\n * for anchored rich interactive popup overlays.\n */\nexport function PopoverRoot({\n children,\n isOpen: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = \"bottom\",\n offset: offsetProp = 8,\n trapFocus = true,\n closeOnEsc = true,\n initialFocusRef,\n returnFocusRef,\n referenceElement,\n}: PopoverRootProps) {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const arrowRef = React.useRef<HTMLDivElement | null>(null);\n const [hasTitle, setHasTitle] = React.useState(false);\n const [hasPortalParent, setHasPortalParent] = React.useState(false);\n\n const {\n refs,\n floatingStyles,\n placement: actualPlacement,\n middlewareData,\n context: floatingContext,\n isPositioned,\n } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(offsetProp),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: 8 }),\n arrow({ element: arrowRef }),\n ],\n });\n\n // Attach custom reference element if provided\n React.useEffect(() => {\n if (referenceElement) {\n const node =\n \"current\" in referenceElement ? referenceElement.current : referenceElement;\n if (node) {\n refs.setReference(node);\n }\n }\n }, [referenceElement, refs]);\n\n const click = useClick(floatingContext);\n const dismiss = useDismiss(floatingContext, {\n escapeKey: closeOnEsc,\n outsidePress: true,\n bubbles: false,\n });\n const role = useRole(floatingContext, {\n role: \"dialog\",\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n click,\n dismiss,\n role,\n ]);\n\n const generatedId = React.useId();\n const id = `cl-popover-${(floatingContext.floatingId || generatedId).replace(/:/g, \"\")}`;\n const titleId = `cl-popover-title-${(floatingContext.floatingId || generatedId).replace(/:/g, \"\")}`;\n\n const open = React.useCallback(() => setIsOpen(true), [setIsOpen]);\n const close = React.useCallback(() => setIsOpen(false), [setIsOpen]);\n const toggle = React.useCallback(\n () => setIsOpen((prev) => !prev),\n [setIsOpen],\n );\n\n const contextValue: PopoverInternalContextValue = {\n isOpen,\n open,\n close,\n toggle,\n placement,\n actualPlacement,\n trapFocus,\n id,\n titleId,\n hasTitle,\n setHasTitle,\n hasPortalParent,\n setHasPortalParent,\n initialFocusRef,\n returnFocusRef,\n floatingContext,\n getReferenceProps,\n getFloatingProps,\n refs,\n floatingStyles,\n middlewareData,\n arrowRef,\n isPositioned,\n hasCustomReference: Boolean(referenceElement),\n };\n\n return (\n <PopoverContext.Provider value={contextValue}>\n {children}\n </PopoverContext.Provider>\n );\n}\n\nPopoverRoot.displayName = \"Popover.Root\";\n\n/**\n * Popover.Trigger wraps the anchor element, binding click and aria attributes.\n */\nexport const PopoverTrigger = React.forwardRef<\n HTMLElement,\n PopoverTriggerProps\n>(function PopoverTrigger({ children, asChild = false }, ref) {\n const { refs, getReferenceProps, isOpen, id, hasCustomReference } = usePopoverContext();\n\n const childRef = React.isValidElement(children)\n ? getElementRef(children)\n : undefined;\n const mergedRef = useMergeRefs(\n hasCustomReference ? null : refs.setReference,\n childRef,\n ref,\n );\n\n if (!React.isValidElement(children)) {\n return null;\n }\n\n const childProps = children.props as Record<string, unknown>;\n\n const referenceProps = getReferenceProps({\n ...childProps,\n ref: mergedRef,\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? id : undefined,\n });\n\n if (asChild) {\n return <Slot {...referenceProps}>{children}</Slot>;\n }\n\n return React.cloneElement(children, referenceProps);\n});\n\nPopoverTrigger.displayName = \"Popover.Trigger\";\n\n/**\n * Popover.Portal mounts popover content into document.body or a custom container.\n */\nexport function PopoverPortal({ children, container }: PopoverPortalProps) {\n const { isOpen, setHasPortalParent } = usePopoverContext();\n\n React.useEffect(() => {\n setHasPortalParent(true);\n return () => setHasPortalParent(false);\n }, [setHasPortalParent]);\n\n if (!isOpen) {\n return null;\n }\n\n return <Portal container={container ?? null}>{children}</Portal>;\n}\n\nPopoverPortal.displayName = \"Popover.Portal\";\n\n/**\n * Popover.Content renders the floating dialog container with focus trapping and styling.\n */\nexport const PopoverContent = React.forwardRef<\n HTMLDivElement,\n PopoverContentProps\n>(function PopoverContent(\n { children, hasArrow = true, className, style, ...restProps },\n ref,\n) {\n const {\n isOpen,\n id,\n titleId,\n hasTitle,\n trapFocus,\n initialFocusRef,\n returnFocusRef,\n floatingContext,\n getFloatingProps,\n refs,\n floatingStyles,\n actualPlacement,\n hasPortalParent,\n isPositioned,\n } = usePopoverContext();\n\n const mergedRef = useMergeRefs(refs.setFloating, ref);\n\n if (!isOpen) {\n return null;\n }\n\n const contentNode = (\n <FloatingFocusManager\n context={floatingContext}\n modal={trapFocus}\n disabled={!trapFocus}\n initialFocus={initialFocusRef || undefined}\n returnFocus={returnFocusRef || true}\n >\n <div\n {...getFloatingProps({\n id,\n ref: mergedRef,\n role: \"dialog\",\n \"aria-modal\": trapFocus ? \"true\" : undefined,\n \"aria-labelledby\": hasTitle ? titleId : undefined,\n className: classNames(\"cl-popover\", className),\n style: {\n ...floatingStyles,\n ...style,\n },\n tabIndex: -1,\n ...restProps,\n })}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-placement={actualPlacement}\n data-positioned={isPositioned ? \"true\" : undefined}\n >\n {hasArrow && <PopoverArrow />}\n {children}\n </div>\n </FloatingFocusManager>\n );\n\n if (hasPortalParent) {\n return contentNode;\n }\n\n return <Portal>{contentNode}</Portal>;\n});\n\nPopoverContent.displayName = \"Popover.Content\";\n\n/**\n * Popover.Arrow renders the directional pointer diamond.\n */\nexport const PopoverArrow = React.forwardRef<HTMLDivElement, PopoverArrowProps>(\n function PopoverArrow({ className, style, ...restProps }, ref) {\n const { arrowRef, middlewareData } = usePopoverContext();\n const mergedRef = useMergeRefs(arrowRef, ref);\n\n return (\n <div\n ref={mergedRef}\n aria-hidden=\"true\"\n className={classNames(\"cl-popover__arrow\", className)}\n style={{\n left:\n middlewareData.arrow?.x != null\n ? `${middlewareData.arrow.x}px`\n : undefined,\n top:\n middlewareData.arrow?.y != null\n ? `${middlewareData.arrow.y}px`\n : undefined,\n ...style,\n }}\n {...restProps}\n />\n );\n },\n);\n\nPopoverArrow.displayName = \"Popover.Arrow\";\n\n/**\n * Popover.Close renders a dismiss button or decorates a child button via asChild.\n */\nexport const PopoverClose = React.forwardRef<\n HTMLButtonElement,\n PopoverCloseProps\n>(function PopoverClose(\n { children, asChild = false, onClick, className, ...restProps },\n ref,\n) {\n const { close } = usePopoverContext();\n const handleClick = composeEventHandlers(onClick, () => close());\n\n if (asChild && React.isValidElement(children)) {\n return (\n <Slot ref={ref} onClick={handleClick} {...restProps}>\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n type=\"button\"\n ref={ref}\n onClick={handleClick}\n aria-label=\"Close popover\"\n className={classNames(\"cl-popover__close\", className)}\n {...restProps}\n >\n {children || \"✕\"}\n </button>\n );\n});\n\nPopoverClose.displayName = \"Popover.Close\";\n\n/**\n * Popover.Header provides the top bar of the popover.\n */\nexport const PopoverHeader = React.forwardRef<\n HTMLDivElement,\n PopoverHeaderProps\n>(function PopoverHeader({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-popover__header\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n});\n\nPopoverHeader.displayName = \"Popover.Header\";\n\n/**\n * Popover.Title provides the dialog title and links via aria-labelledby.\n */\nexport const PopoverTitle = React.forwardRef<\n HTMLHeadingElement,\n PopoverTitleProps\n>(function PopoverTitle({ children, className, ...restProps }, ref) {\n const { titleId, setHasTitle } = usePopoverContext();\n\n React.useEffect(() => {\n setHasTitle(true);\n return () => setHasTitle(false);\n }, [setHasTitle]);\n\n return (\n <h3\n ref={ref}\n id={titleId}\n className={classNames(\"cl-popover__title\", className)}\n {...restProps}\n >\n {children}\n </h3>\n );\n});\n\nPopoverTitle.displayName = \"Popover.Title\";\n\n/**\n * Popover.Body provides the main interactive container inside the popover.\n */\nexport const PopoverBody = React.forwardRef<HTMLDivElement, PopoverBodyProps>(\n function PopoverBody({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-popover__body\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n },\n);\n\nPopoverBody.displayName = \"Popover.Body\";\n\n/**\n * Popover.Footer provides the action footer of the popover.\n */\nexport const PopoverFooter = React.forwardRef<\n HTMLDivElement,\n PopoverFooterProps\n>(function PopoverFooter({ children, className, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-popover__footer\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n});\n\nPopoverFooter.displayName = \"Popover.Footer\";\n\n/**\n * Popover compound component aggregation.\n */\nexport const Popover = Object.assign(PopoverRoot, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Portal: PopoverPortal,\n Content: PopoverContent,\n Close: PopoverClose,\n Arrow: PopoverArrow,\n Header: PopoverHeader,\n Title: PopoverTitle,\n Body: PopoverBody,\n Footer: PopoverFooter,\n});\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type {\r\n AlertProps,\r\n AlertIconProps,\r\n AlertTitleProps,\r\n AlertDescriptionProps,\r\n AlertBodyProps,\r\n AlertActionProps,\r\n AlertCloseButtonProps,\r\n AlertContextValue,\r\n AlertStatus,\r\n} from \"./Alert.types\";\r\n\r\nconst AlertContext = React.createContext<AlertContextValue | null>(null);\r\n\r\nexport function useAlertContext(): AlertContextValue {\r\n const context = React.useContext(AlertContext);\r\n if (!context) {\r\n throw new Error(\r\n \"Alert compound subcomponents must be rendered within an <Alert> or <Alert.Root>\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\n/**\r\n * Default status icons for built-in feedback indications.\r\n */\r\nconst InfoIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\r\n function InfoIcon(props, ref) {\r\n return (\r\n <svg\r\n ref={ref}\r\n viewBox=\"0 0 24 24\"\r\n width=\"20\"\r\n height=\"20\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...props}\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n );\r\n },\r\n);\r\n\r\nconst SuccessIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\r\n function SuccessIcon(props, ref) {\r\n return (\r\n <svg\r\n ref={ref}\r\n viewBox=\"0 0 24 24\"\r\n width=\"20\"\r\n height=\"20\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...props}\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"m9 12 2 2 4-4\" />\r\n </svg>\r\n );\r\n },\r\n);\r\n\r\nconst WarningIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\r\n function WarningIcon(props, ref) {\r\n return (\r\n <svg\r\n ref={ref}\r\n viewBox=\"0 0 24 24\"\r\n width=\"20\"\r\n height=\"20\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...props}\r\n >\r\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\r\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n );\r\n },\r\n);\r\n\r\nconst DangerIcon = React.forwardRef<SVGSVGElement, React.SVGAttributes<SVGSVGElement>>(\r\n function DangerIcon(props, ref) {\r\n return (\r\n <svg\r\n ref={ref}\r\n viewBox=\"0 0 24 24\"\r\n width=\"20\"\r\n height=\"20\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n {...props}\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\r\n </svg>\r\n );\r\n },\r\n);\r\n\r\nfunction getStatusIcon(\r\n status: AlertStatus,\r\n): React.ForwardRefExoticComponent<\r\n React.SVGAttributes<SVGSVGElement> & React.RefAttributes<SVGSVGElement>\r\n> {\r\n switch (status) {\r\n case \"success\":\r\n return SuccessIcon;\r\n case \"warning\":\r\n return WarningIcon;\r\n case \"danger\":\r\n return DangerIcon;\r\n case \"neutral\":\r\n case \"info\":\r\n default:\r\n return InfoIcon;\r\n }\r\n}\r\n\r\n/**\r\n * Alert.Root (or <Alert>) provides in-flow contextual feedback with accessible live-region semantics.\r\n */\r\nexport const AlertRoot = React.forwardRef<HTMLDivElement, AlertProps>(\r\n function AlertRoot(\r\n {\r\n children,\r\n status = \"info\",\r\n variant = \"subtle\",\r\n isClosable = false,\r\n onClose,\r\n asChild = false,\r\n role: roleProp,\r\n \"aria-live\": ariaLiveProp,\r\n className,\r\n ...restProps\r\n },\r\n ref,\r\n ) {\r\n const [isClosed, setIsClosed] = React.useState(false);\r\n\r\n const handleClose = React.useCallback(() => {\r\n if (isClosed) return;\r\n setIsClosed(true);\r\n onClose?.();\r\n }, [isClosed, onClose]);\r\n\r\n const contextValue = React.useMemo<AlertContextValue>(\r\n () => ({\r\n status,\r\n variant,\r\n onClose,\r\n handleClose,\r\n isClosed,\r\n }),\r\n [status, variant, onClose, handleClose, isClosed],\r\n );\r\n\r\n const hasExplicitClose = React.useMemo(() => {\r\n let found = false;\r\n React.Children.forEach(children, (child) => {\r\n if (React.isValidElement(child)) {\r\n if (\r\n child.type === AlertCloseButton ||\r\n (child.type as { displayName?: string })?.displayName ===\r\n \"Alert.CloseButton\"\r\n ) {\r\n found = true;\r\n }\r\n }\r\n });\r\n return found;\r\n }, [children]);\r\n\r\n if (isClosed) {\r\n return null;\r\n }\r\n\r\n const defaultRole = status === \"danger\" ? \"alert\" : \"status\";\r\n const defaultAriaLive = status === \"danger\" ? \"assertive\" : \"polite\";\r\n const resolvedRole = roleProp ?? defaultRole;\r\n const resolvedAriaLive = ariaLiveProp ?? defaultAriaLive;\r\n\r\n const alertClasses = classNames(\r\n \"cl-alert\",\r\n `cl-alert--${status}`,\r\n `cl-alert--${variant}`,\r\n isClosable && \"cl-alert--closable\",\r\n className,\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <AlertContext.Provider value={contextValue}>\r\n <Slot\r\n ref={ref}\r\n role={resolvedRole}\r\n aria-live={resolvedAriaLive}\r\n className={alertClasses}\r\n {...restProps}\r\n >\r\n {children}\r\n </Slot>\r\n </AlertContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <AlertContext.Provider value={contextValue}>\r\n <div\r\n ref={ref}\r\n role={resolvedRole}\r\n aria-live={resolvedAriaLive}\r\n className={alertClasses}\r\n {...restProps}\r\n >\r\n {children}\r\n {isClosable && !hasExplicitClose && <AlertCloseButton />}\r\n </div>\r\n </AlertContext.Provider>\r\n );\r\n },\r\n);\r\n\r\nAlertRoot.displayName = \"Alert.Root\";\r\n\r\n/**\r\n * Alert.Icon renders an accessible status indicator SVG or custom icon override.\r\n */\r\nexport const AlertIcon = React.forwardRef<SVGSVGElement, AlertIconProps>(\r\n function AlertIcon({ icon, children, className, ...restProps }, ref) {\r\n const { status } = useAlertContext();\r\n\r\n if (icon) {\r\n if (React.isValidElement(icon)) {\r\n return React.cloneElement(icon as React.ReactElement<Record<string, unknown>>, {\r\n ...restProps,\r\n ...(icon.props as Record<string, unknown>),\r\n ref,\r\n \"aria-hidden\": \"true\",\r\n className: classNames(\r\n \"cl-alert__icon\",\r\n className,\r\n (icon.props as { className?: string })?.className,\r\n ),\r\n });\r\n }\r\n return (\r\n <span className={classNames(\"cl-alert__icon\", className)} aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n );\r\n }\r\n\r\n if (children) {\r\n if (React.isValidElement(children)) {\r\n return React.cloneElement(children as React.ReactElement<Record<string, unknown>>, {\r\n ...restProps,\r\n ...(children.props as Record<string, unknown>),\r\n ref,\r\n \"aria-hidden\": \"true\",\r\n className: classNames(\r\n \"cl-alert__icon\",\r\n className,\r\n (children.props as { className?: string })?.className,\r\n ),\r\n });\r\n }\r\n return (\r\n <span className={classNames(\"cl-alert__icon\", className)} aria-hidden=\"true\">\r\n {children}\r\n </span>\r\n );\r\n }\r\n\r\n const IconComponent = getStatusIcon(status);\r\n return (\r\n <IconComponent\r\n ref={ref}\r\n className={classNames(\"cl-alert__icon\", className)}\r\n {...restProps}\r\n />\r\n );\r\n },\r\n);\r\n\r\nAlertIcon.displayName = \"Alert.Icon\";\r\n\r\n/**\r\n * Alert.Body wraps the title and description in a flex column layout.\r\n */\r\nexport const AlertBody = React.forwardRef<HTMLDivElement, AlertBodyProps>(\r\n function AlertBody({ children, className, ...restProps }, ref) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={classNames(\"cl-alert__body\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nAlertBody.displayName = \"Alert.Body\";\r\n\r\n/**\r\n * Alert.Title renders the prominent heading for the alert notice.\r\n */\r\nexport const AlertTitle = React.forwardRef<HTMLHeadingElement, AlertTitleProps>(\r\n function AlertTitle({ children, className, ...restProps }, ref) {\r\n return (\r\n <h5\r\n ref={ref}\r\n className={classNames(\"cl-alert__title\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </h5>\r\n );\r\n },\r\n);\r\n\r\nAlertTitle.displayName = \"Alert.Title\";\r\n\r\n/**\r\n * Alert.Description renders the accompanying body text for the alert notice.\r\n */\r\nexport const AlertDescription = React.forwardRef<\r\n HTMLParagraphElement,\r\n AlertDescriptionProps\r\n>(function AlertDescription({ children, className, ...restProps }, ref) {\r\n return (\r\n <p\r\n ref={ref}\r\n className={classNames(\"cl-alert__description\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </p>\r\n );\r\n});\r\n\r\nAlertDescription.displayName = \"Alert.Description\";\r\n\r\n/**\r\n * Alert.Action contains contextual action buttons (e.g. Retry, Learn More).\r\n */\r\nexport const AlertAction = React.forwardRef<HTMLDivElement, AlertActionProps>(\r\n function AlertAction({ children, className, ...restProps }, ref) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={classNames(\"cl-alert__action\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nAlertAction.displayName = \"Alert.Action\";\r\n\r\n/**\r\n * Alert.CloseButton renders an accessible dismiss button for the alert.\r\n */\r\nexport const AlertCloseButton = React.forwardRef<\r\n HTMLButtonElement,\r\n AlertCloseButtonProps\r\n>(function AlertCloseButton(\r\n {\r\n onClick,\r\n className,\r\n \"aria-label\": ariaLabel = \"Close alert\",\r\n children,\r\n disabled,\r\n ...restProps\r\n },\r\n ref,\r\n) {\r\n const { handleClose, isClosed } = useAlertContext();\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n onClick?.(event);\r\n if (!event.defaultPrevented) {\r\n handleClose();\r\n }\r\n };\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-label={ariaLabel}\r\n disabled={disabled || isClosed}\r\n onClick={handleClick}\r\n className={classNames(\"cl-alert__close\", className)}\r\n {...restProps}\r\n >\r\n {children ?? (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"16\"\r\n height=\"16\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n )}\r\n </button>\r\n );\r\n});\r\n\r\nAlertCloseButton.displayName = \"Alert.CloseButton\";\r\n\r\n/**\r\n * Alert compound component aggregation.\r\n */\r\nexport const Alert = Object.assign(AlertRoot, {\r\n Root: AlertRoot,\r\n Icon: AlertIcon,\r\n Body: AlertBody,\r\n Title: AlertTitle,\r\n Description: AlertDescription,\r\n Action: AlertAction,\r\n CloseButton: AlertCloseButton,\r\n});\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Portal } from \"../../primitives/Portal\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type {\r\n ToastOptions,\r\n ToastRecord,\r\n ToastPosition,\r\n ToastStatus,\r\n ToastProviderProps,\r\n UseToastReturn,\r\n} from \"./Snackbar.types\";\r\n\r\nexport const ToastContext = React.createContext<UseToastReturn | null>(null);\r\n\r\nconst POSITIONS: ToastPosition[] = [\r\n \"top\",\r\n \"top-left\",\r\n \"top-right\",\r\n \"bottom\",\r\n \"bottom-left\",\r\n \"bottom-right\",\r\n];\r\n\r\nfunction InfoIcon() {\r\n return (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction SuccessIcon() {\r\n return (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <path d=\"m9 12 2 2 4-4\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction WarningIcon() {\r\n return (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\r\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\r\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction DangerIcon() {\r\n return (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"18\"\r\n height=\"18\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\r\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\r\n </svg>\r\n );\r\n}\r\n\r\nfunction renderStatusIcon(status: ToastStatus) {\r\n switch (status) {\r\n case \"success\":\r\n return <SuccessIcon />;\r\n case \"warning\":\r\n return <WarningIcon />;\r\n case \"danger\":\r\n return <DangerIcon />;\r\n case \"neutral\":\r\n case \"info\":\r\n default:\r\n return <InfoIcon />;\r\n }\r\n}\r\n\r\n/**\r\n * Individual Toast Item with pauseable timer and accessible live-region semantics.\r\n */\r\nexport const ToastItem = React.forwardRef<\r\n HTMLDivElement,\r\n {\r\n toast: ToastRecord;\r\n onClose: () => void;\r\n }\r\n>(function ToastItem({ toast, onClose }, ref) {\r\n const {\r\n title,\r\n description,\r\n status,\r\n duration,\r\n isClosable,\r\n action,\r\n } = toast;\r\n\r\n const remainingRef = React.useRef<number>(\r\n typeof duration === \"number\" ? duration : 0,\r\n );\r\n const startTimeRef = React.useRef<number>(Date.now());\r\n const timerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const isPausedRef = React.useRef<boolean>(false);\r\n\r\n React.useEffect(() => {\r\n if (typeof duration === \"number\") {\r\n remainingRef.current = duration;\r\n }\r\n }, [duration]);\r\n\r\n const startTimer = React.useCallback(() => {\r\n if (duration === null || duration === undefined) return;\r\n\r\n if (timerRef.current) {\r\n clearTimeout(timerRef.current);\r\n timerRef.current = null;\r\n }\r\n\r\n if (remainingRef.current <= 0) {\r\n timerRef.current = setTimeout(() => {\r\n onClose();\r\n timerRef.current = null;\r\n }, 0);\r\n return;\r\n }\r\n\r\n startTimeRef.current = Date.now();\r\n timerRef.current = setTimeout(() => {\r\n onClose();\r\n timerRef.current = null;\r\n }, remainingRef.current);\r\n }, [duration, onClose]);\r\n\r\n const pauseTimer = React.useCallback(() => {\r\n if (duration === null || duration === undefined) return;\r\n if (timerRef.current) {\r\n clearTimeout(timerRef.current);\r\n timerRef.current = null;\r\n }\r\n const elapsed = Date.now() - startTimeRef.current;\r\n remainingRef.current = Math.max(0, remainingRef.current - elapsed);\r\n isPausedRef.current = true;\r\n }, [duration]);\r\n\r\n const resumeTimer = React.useCallback(() => {\r\n if (duration === null || duration === undefined) return;\r\n if (isPausedRef.current) {\r\n isPausedRef.current = false;\r\n startTimer();\r\n }\r\n }, [duration, startTimer]);\r\n\r\n React.useEffect(() => {\r\n startTimer();\r\n return () => {\r\n if (timerRef.current) {\r\n clearTimeout(timerRef.current);\r\n timerRef.current = null;\r\n }\r\n };\r\n }, [startTimer]);\r\n\r\n const role = status === \"danger\" ? \"alert\" : \"status\";\r\n const ariaLive = status === \"danger\" ? \"assertive\" : \"polite\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role={role}\r\n aria-live={ariaLive}\r\n aria-atomic=\"true\"\r\n tabIndex={0}\r\n onMouseEnter={pauseTimer}\r\n onMouseLeave={resumeTimer}\r\n onPointerEnter={pauseTimer}\r\n onPointerLeave={resumeTimer}\r\n onFocus={pauseTimer}\r\n onBlur={resumeTimer}\r\n className={classNames(\r\n \"cl-toast\",\r\n `cl-toast--${status}`,\r\n )}\r\n >\r\n <span className=\"cl-toast__icon\" aria-hidden=\"true\">\r\n {renderStatusIcon(status)}\r\n </span>\r\n\r\n <div className=\"cl-toast__content\">\r\n {title && <h6 className=\"cl-toast__title\">{title}</h6>}\r\n {description && <p className=\"cl-toast__description\">{description}</p>}\r\n </div>\r\n\r\n {action && <div className=\"cl-toast__action\">{action}</div>}\r\n\r\n {isClosable && (\r\n <button\r\n type=\"button\"\r\n aria-label=\"Dismiss\"\r\n onClick={onClose}\r\n className=\"cl-toast__close\"\r\n >\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"14\"\r\n height=\"14\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n );\r\n});\r\n\r\nToastItem.displayName = \"ToastItem\";\r\n\r\nlet toastCounter = 0;\r\n\r\n/**\r\n * ToastProvider manages notification queue, automatic dismissals, and portal layout.\r\n */\r\nexport function ToastProvider({\r\n children,\r\n defaultDuration = 5000,\r\n defaultPosition = \"bottom-right\",\r\n maxVisibleToasts = 5,\r\n}: ToastProviderProps) {\r\n const [toasts, setToasts] = React.useState<ToastRecord[]>([]);\r\n\r\n const close = React.useCallback((id: string) => {\r\n setToasts((prev) => {\r\n const match = prev.find((t) => t.id === id);\r\n if (match?.onClose) {\r\n match.onClose();\r\n }\r\n return prev.filter((t) => t.id !== id);\r\n });\r\n }, []);\r\n\r\n const closeAll = React.useCallback(() => {\r\n setToasts((prev) => {\r\n prev.forEach((t) => t.onClose?.());\r\n return [];\r\n });\r\n }, []);\r\n\r\n const update = React.useCallback(\r\n (id: string, options: Partial<ToastOptions>) => {\r\n setToasts((prev) =>\r\n prev.map((t) => {\r\n if (t.id !== id) return t;\r\n return {\r\n ...t,\r\n ...options,\r\n id: t.id,\r\n duration: options.duration !== undefined ? options.duration : t.duration,\r\n position: options.position !== undefined ? options.position : t.position,\r\n status: options.status !== undefined ? options.status : t.status,\r\n isClosable:\r\n options.isClosable !== undefined ? options.isClosable : t.isClosable,\r\n };\r\n }),\r\n );\r\n },\r\n [],\r\n );\r\n\r\n const isActive = React.useCallback(\r\n (id: string) => toasts.some((t) => t.id === id),\r\n [toasts],\r\n );\r\n\r\n const toast = React.useCallback(\r\n (options: ToastOptions): string => {\r\n const id = options.id ?? `cl-toast-${++toastCounter}`;\r\n const position = options.position ?? defaultPosition;\r\n const duration =\r\n options.duration !== undefined ? options.duration : defaultDuration;\r\n const status = options.status ?? \"info\";\r\n const isClosable =\r\n options.isClosable !== undefined ? options.isClosable : true;\r\n\r\n const newRecord: ToastRecord = {\r\n ...options,\r\n id,\r\n position,\r\n duration,\r\n status,\r\n isClosable,\r\n createdAt: Date.now(),\r\n };\r\n\r\n setToasts((prev) => {\r\n // Enforce maxVisibleToasts limit per position by removing the oldest\r\n const inSamePosition = prev.filter((t) => t.position === position);\r\n let updated = prev.filter((t) => t.id !== id);\r\n\r\n if (inSamePosition.length >= maxVisibleToasts) {\r\n const oldest = inSamePosition[0];\r\n if (oldest) {\r\n oldest.onClose?.();\r\n updated = updated.filter((t) => t.id !== oldest.id);\r\n }\r\n }\r\n\r\n return [...updated, newRecord];\r\n });\r\n\r\n return id;\r\n },\r\n [defaultDuration, defaultPosition, maxVisibleToasts],\r\n );\r\n\r\n const contextValue = React.useMemo<UseToastReturn>(() => {\r\n const fn = (options: ToastOptions) => toast(options);\r\n fn.close = close;\r\n fn.closeAll = closeAll;\r\n fn.update = update;\r\n fn.isActive = isActive;\r\n return fn as UseToastReturn;\r\n }, [toast, close, closeAll, update, isActive]);\r\n\r\n return (\r\n <ToastContext.Provider value={contextValue}>\r\n {children}\r\n <Portal>\r\n {POSITIONS.map((pos) => {\r\n const inPos = toasts.filter((t) => t.position === pos);\r\n if (inPos.length === 0) return null;\r\n\r\n return (\r\n <div\r\n key={pos}\r\n className={classNames(\r\n \"cl-toast-container\",\r\n `cl-toast-container--${pos}`,\r\n )}\r\n role=\"region\"\r\n aria-label={`Notifications ${pos}`}\r\n >\r\n {inPos.map((t) => (\r\n <ToastItem key={t.id} toast={t} onClose={() => close(t.id)} />\r\n ))}\r\n </div>\r\n );\r\n })}\r\n </Portal>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { Portal } from \"../../primitives/Portal\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { ToastItem } from \"./ToastProvider\";\r\nimport type {\r\n SnackbarProps,\r\n ToastRecord,\r\n ToastPosition,\r\n ToastStatus,\r\n} from \"./Snackbar.types\";\r\n\r\n/**\r\n * Snackbar provides a declarative component API for viewport-anchored transient notifications.\r\n */\r\nexport const Snackbar = React.forwardRef<HTMLDivElement, SnackbarProps>(\r\n function Snackbar(\r\n {\r\n isOpen = false,\r\n message,\r\n description,\r\n status = \"info\",\r\n duration = 5000,\r\n position = \"bottom-right\",\r\n action,\r\n isClosable = true,\r\n onClose,\r\n children,\r\n className,\r\n ...restProps\r\n },\r\n ref,\r\n ) {\r\n const handleClose = React.useCallback(() => {\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n const toastRecord: ToastRecord = {\r\n id: \"declarative-snackbar\",\r\n title: message ?? children,\r\n description,\r\n status: status as ToastStatus,\r\n duration: duration ?? null,\r\n position: position as ToastPosition,\r\n isClosable: Boolean(isClosable),\r\n action,\r\n createdAt: Date.now(),\r\n onClose: handleClose,\r\n };\r\n\r\n return (\r\n <Portal>\r\n <div\r\n className={classNames(\r\n \"cl-toast-container\",\r\n `cl-toast-container--${position}`,\r\n className,\r\n )}\r\n role=\"region\"\r\n aria-label={`Notifications ${position}`}\r\n {...restProps}\r\n >\r\n <ToastItem ref={ref} toast={toastRecord} onClose={handleClose} />\r\n </div>\r\n </Portal>\r\n );\r\n },\r\n);\r\n\r\nSnackbar.displayName = \"Snackbar\";\r\n\r\n/**\r\n * Toast is the approved alias for Snackbar.\r\n */\r\nexport const Toast = Snackbar;\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { ToastContext } from \"./ToastProvider\";\r\nimport type { UseToastReturn } from \"./Snackbar.types\";\r\n\r\n/**\r\n * Hook to imperatively trigger, update, or dismiss toast notifications.\r\n */\r\nexport function useToast(): UseToastReturn {\r\n const context = React.useContext(ToastContext);\r\n if (!context) {\r\n throw new Error(\"useToast must be used within a <ToastProvider>\");\r\n }\r\n return context;\r\n}\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type {\r\n AvatarGroupProps,\r\n AvatarGroupContextValue,\r\n} from \"./Avatar.types\";\r\n\r\nexport const AvatarGroupContext =\r\n React.createContext<AvatarGroupContextValue>({});\r\n\r\nexport const useAvatarGroupContext = (): AvatarGroupContextValue =>\r\n React.useContext(AvatarGroupContext);\r\n\r\n/**\r\n * AvatarGroup stacks multiple avatars with negative margin overlap and calculates +N excess items.\r\n */\r\nexport const AvatarGroup = React.forwardRef<HTMLDivElement, AvatarGroupProps>(\r\n function AvatarGroup(\r\n {\r\n max,\r\n size = \"md\",\r\n shape = \"circular\",\r\n spacing,\r\n className,\r\n style,\r\n children,\r\n ...restProps\r\n },\r\n ref,\r\n ) {\r\n const validChildren = React.Children.toArray(children).filter(\r\n React.isValidElement,\r\n );\r\n\r\n const hasExcess = max !== undefined && max > 0 && validChildren.length > max;\r\n const visibleChildren = hasExcess\r\n ? validChildren.slice(0, max)\r\n : validChildren;\r\n const excessCount = hasExcess ? validChildren.length - max : 0;\r\n\r\n const totalItems = visibleChildren.length + (excessCount > 0 ? 1 : 0);\r\n\r\n const contextValue = React.useMemo<AvatarGroupContextValue>(\r\n () => ({ size, shape }),\r\n [size, shape],\r\n );\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={classNames(\"cl-avatar-group\", className)}\r\n role=\"group\"\r\n style={{\r\n ...(spacing !== undefined\r\n ? ({\r\n \"--cl-avatar-group-spacing\":\r\n typeof spacing === \"number\" ? `${spacing}px` : spacing,\r\n } as React.CSSProperties)\r\n : {}),\r\n ...style,\r\n }}\r\n {...restProps}\r\n >\r\n <AvatarGroupContext.Provider value={contextValue}>\r\n {visibleChildren.map((child, index) => {\r\n const element = child as React.ReactElement<{\r\n style?: React.CSSProperties;\r\n }>;\r\n const childStyle: React.CSSProperties = {\r\n zIndex: totalItems - index,\r\n ...(element.props?.style || {}),\r\n };\r\n return React.cloneElement(element, {\r\n key: element.key ?? index,\r\n style: childStyle,\r\n });\r\n })}\r\n {excessCount > 0 && (\r\n <div\r\n className={classNames(\r\n \"cl-avatar\",\r\n `cl-avatar--${size}`,\r\n `cl-avatar--${shape}`,\r\n \"cl-avatar-group__excess\",\r\n )}\r\n style={{ zIndex: 0 }}\r\n aria-label={`+${excessCount} others`}\r\n >\r\n +{excessCount}\r\n </div>\r\n )}\r\n </AvatarGroupContext.Provider>\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nAvatarGroup.displayName = \"AvatarGroup\";\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { AvatarGroup, useAvatarGroupContext } from \"./AvatarGroup\";\r\nimport type {\r\n AvatarProps,\r\n AvatarImageProps,\r\n AvatarFallbackProps,\r\n AvatarBadgeProps,\r\n AvatarContextValue,\r\n AvatarSize,\r\n AvatarShape,\r\n ImageLoadingStatus,\r\n} from \"./Avatar.types\";\r\n\r\nexport const AvatarContext = React.createContext<AvatarContextValue | null>(null);\r\n\r\nexport const useAvatarContext = (): AvatarContextValue | null =>\r\n React.useContext(AvatarContext);\r\n\r\n/**\r\n * Extracts up to two uppercase initials from a given name string.\r\n * Handles single names, multi-word names, hyphens, and unicode characters.\r\n */\r\nexport function getInitials(name?: string): string {\r\n if (!name || typeof name !== \"string\") return \"\";\r\n const trimmed = name.trim();\r\n if (!trimmed) return \"\";\r\n\r\n const parts = trimmed.split(/[\\s-]+/).filter(Boolean);\r\n if (parts.length === 0) return \"\";\r\n\r\n const firstPart = parts[0];\r\n if (!firstPart) return \"\";\r\n\r\n if (parts.length === 1) {\r\n const chars = Array.from(firstPart);\r\n return chars[0] ? chars[0].toUpperCase() : \"\";\r\n }\r\n\r\n const lastPart = parts[parts.length - 1];\r\n if (!lastPart) return \"\";\r\n\r\n const firstChar = Array.from(firstPart)[0] ?? \"\";\r\n const lastChar = Array.from(lastPart)[0] ?? \"\";\r\n return (firstChar + lastChar).toUpperCase();\r\n}\r\n\r\n/**\r\n * Default generic silhouette icon SVG rendered when image and initials are absent.\r\n */\r\nfunction DefaultAvatarIcon() {\r\n return (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n width=\"60%\"\r\n height=\"60%\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\r\n </svg>\r\n );\r\n}\r\n\r\n/**\r\n * Avatar.Image renders the image element with automatic error and load management.\r\n */\r\nexport const AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\r\n function AvatarImage(\r\n { src, srcSet, alt, className, style, asChild = false, onLoad, onError, ...restProps },\r\n ref,\r\n ) {\r\n const context = useAvatarContext();\r\n const imageStatus = context?.imageStatus ?? (src ? \"loading\" : \"error\");\r\n\r\n const handleLoad = React.useCallback(\r\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\r\n context?.setImageStatus(\"loaded\");\r\n onLoad?.(event);\r\n },\r\n [context, onLoad],\r\n );\r\n\r\n const handleError = React.useCallback(\r\n (event: React.SyntheticEvent<HTMLImageElement, Event>) => {\r\n context?.setImageStatus(\"error\");\r\n onError?.(event);\r\n },\r\n [context, onError],\r\n );\r\n\r\n if (imageStatus === \"error\" || !src) {\r\n return null;\r\n }\r\n\r\n const imageClasses = classNames(\"cl-avatar__image\", className);\r\n const imageStyle: React.CSSProperties = {\r\n opacity: imageStatus === \"loaded\" ? 1 : 0,\r\n ...style,\r\n };\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n className={imageClasses}\r\n style={imageStyle}\r\n {...(restProps as Record<string, unknown>)}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <img\r\n ref={ref}\r\n src={src}\r\n srcSet={srcSet}\r\n alt={alt ?? \"\"}\r\n className={imageClasses}\r\n style={imageStyle}\r\n onLoad={handleLoad}\r\n onError={handleError}\r\n {...restProps}\r\n />\r\n );\r\n },\r\n);\r\n\r\nAvatarImage.displayName = \"Avatar.Image\";\r\n\r\n/**\r\n * Avatar.Fallback renders fallback initials, icons, or custom elements when image has not loaded.\r\n */\r\nexport const AvatarFallback = React.forwardRef<\r\n HTMLSpanElement,\r\n AvatarFallbackProps\r\n>(function AvatarFallback(\r\n { children, className, delayMs, asChild = false, ...restProps },\r\n ref,\r\n) {\r\n const context = useAvatarContext();\r\n const [canRender, setCanRender] = React.useState(delayMs === undefined);\r\n\r\n React.useEffect(() => {\r\n if (delayMs !== undefined && delayMs > 0) {\r\n const timer = setTimeout(() => setCanRender(true), delayMs);\r\n return () => clearTimeout(timer);\r\n }\r\n setCanRender(true);\r\n return undefined;\r\n }, [delayMs]);\r\n\r\n if (context && context.imageStatus === \"loaded\") {\r\n return null;\r\n }\r\n\r\n if (!canRender) {\r\n return null;\r\n }\r\n\r\n const fallbackClasses = classNames(\"cl-avatar__fallback\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n className={fallbackClasses}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <span ref={ref} className={fallbackClasses} {...restProps}>\r\n {children}\r\n </span>\r\n );\r\n});\r\n\r\nAvatarFallback.displayName = \"Avatar.Fallback\";\r\n\r\n/**\r\n * Avatar.Badge renders presence status indicator dot anchored to an avatar corner.\r\n */\r\nexport const AvatarBadge = React.forwardRef<HTMLSpanElement, AvatarBadgeProps>(\r\n function AvatarBadge(\r\n {\r\n status = \"online\",\r\n placement = \"bottom-end\",\r\n className,\r\n asChild = false,\r\n \"aria-label\": ariaLabel,\r\n ...restProps\r\n },\r\n ref,\r\n ) {\r\n const badgeClasses = classNames(\r\n \"cl-avatar__badge\",\r\n `cl-avatar__badge--${status}`,\r\n `cl-avatar__badge--${placement}`,\r\n className,\r\n );\r\n\r\n const accessibleLabel = ariaLabel ?? `Status: ${status}`;\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n className={badgeClasses}\r\n role=\"status\"\r\n aria-label={accessibleLabel}\r\n {...(restProps as Record<string, unknown>)}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={badgeClasses}\r\n role=\"status\"\r\n aria-label={accessibleLabel}\r\n {...restProps}\r\n />\r\n );\r\n },\r\n);\r\n\r\nAvatarBadge.displayName = \"Avatar.Badge\";\r\n\r\n/**\r\n * Avatar represents a user, entity, or organization identity with automated fallbacks and presence indicators.\r\n */\r\nconst AvatarBase = React.forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\r\n {\r\n src,\r\n srcSet,\r\n alt,\r\n name,\r\n size: sizeProp,\r\n shape: shapeProp,\r\n fallback,\r\n icon,\r\n asChild = false,\r\n className,\r\n children,\r\n onError,\r\n onLoad,\r\n \"aria-label\": ariaLabel,\r\n ...restProps\r\n },\r\n ref,\r\n) {\r\n const groupContext = useAvatarGroupContext();\r\n const size: AvatarSize = sizeProp ?? groupContext.size ?? \"md\";\r\n const shape: AvatarShape = shapeProp ?? groupContext.shape ?? \"circular\";\r\n\r\n const [imageStatus, setImageStatus] = React.useState<ImageLoadingStatus>(\r\n src ? \"loading\" : \"error\",\r\n );\r\n\r\n React.useEffect(() => {\r\n setImageStatus(src ? \"loading\" : \"error\");\r\n }, [src]);\r\n\r\n const contextValue = React.useMemo<AvatarContextValue>(\r\n () => ({\r\n size,\r\n shape,\r\n imageStatus,\r\n setImageStatus,\r\n }),\r\n [size, shape, imageStatus],\r\n );\r\n\r\n const initials = getInitials(name);\r\n const computedAriaLabel = ariaLabel ?? alt ?? name;\r\n\r\n const rootClasses = classNames(\r\n \"cl-avatar\",\r\n `cl-avatar--${size}`,\r\n `cl-avatar--${shape}`,\r\n className,\r\n );\r\n\r\n const accessibilityProps: React.HTMLAttributes<HTMLDivElement> = {};\r\n if (computedAriaLabel) {\r\n accessibilityProps.role = \"img\";\r\n accessibilityProps[\"aria-label\"] = computedAriaLabel;\r\n }\r\n\r\n // If children are supplied, render in compound mode\r\n if (children) {\r\n if (asChild) {\r\n return (\r\n <AvatarContext.Provider value={contextValue}>\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n className={rootClasses}\r\n {...accessibilityProps}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children}\r\n </Slot>\r\n </AvatarContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <AvatarContext.Provider value={contextValue}>\r\n <div\r\n ref={ref}\r\n className={rootClasses}\r\n {...accessibilityProps}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n </AvatarContext.Provider>\r\n );\r\n }\r\n\r\n // Self-contained convenience rendering\r\n const fallbackContent =\r\n fallback ??\r\n (initials ? (\r\n initials\r\n ) : icon ? (\r\n icon\r\n ) : (\r\n <DefaultAvatarIcon />\r\n ));\r\n\r\n const content = (\r\n <>\r\n {src && imageStatus !== \"error\" && (\r\n <AvatarImage\r\n src={src}\r\n srcSet={srcSet}\r\n alt={alt ?? name ?? \"\"}\r\n onLoad={onLoad}\r\n onError={onError}\r\n />\r\n )}\r\n {imageStatus !== \"loaded\" && (\r\n <AvatarFallback>{fallbackContent}</AvatarFallback>\r\n )}\r\n </>\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <AvatarContext.Provider value={contextValue}>\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n className={rootClasses}\r\n {...accessibilityProps}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {content}\r\n </Slot>\r\n </AvatarContext.Provider>\r\n );\r\n }\r\n\r\n return (\r\n <AvatarContext.Provider value={contextValue}>\r\n <div\r\n ref={ref}\r\n className={rootClasses}\r\n {...accessibilityProps}\r\n {...restProps}\r\n >\r\n {content}\r\n </div>\r\n </AvatarContext.Provider>\r\n );\r\n});\r\n\r\nAvatarBase.displayName = \"Avatar\";\r\n\r\nexport interface AvatarComponent\r\n extends React.ForwardRefExoticComponent<\r\n AvatarProps & React.RefAttributes<HTMLDivElement>\r\n > {\r\n Root: typeof AvatarBase;\r\n Image: typeof AvatarImage;\r\n Fallback: typeof AvatarFallback;\r\n Badge: typeof AvatarBadge;\r\n Group: typeof AvatarGroup;\r\n}\r\n\r\nexport const Avatar = AvatarBase as AvatarComponent;\r\nAvatar.Root = AvatarBase;\r\nAvatar.Image = AvatarImage;\r\nAvatar.Fallback = AvatarFallback;\r\nAvatar.Badge = AvatarBadge;\r\nAvatar.Group = AvatarGroup;\r\n\r\nexport const AvatarRoot = AvatarBase;\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport type {\n AccordionRootProps,\n AccordionContextValue,\n AccordionItemProps,\n AccordionItemContextValue,\n AccordionHeaderProps,\n AccordionTriggerProps,\n AccordionContentProps,\n AccordionIconProps,\n AccordionActionsProps,\n AccordionExpandAllProps,\n AccordionCollapseAllProps,\n AccordionVariant,\n AccordionType,\n AccordionSize,\n AccordionIndicatorPosition,\n} from \"./Accordion.types\";\n\nexport const AccordionContext =\n React.createContext<AccordionContextValue | null>(null);\n\nexport const useAccordionContext = (): AccordionContextValue => {\n const context = React.useContext(AccordionContext);\n if (!context) {\n throw new Error(\n \"Accordion compound components must be rendered within an Accordion.Root.\",\n );\n }\n return context;\n};\n\nexport const AccordionItemContext =\n React.createContext<AccordionItemContextValue | null>(null);\n\nexport const useAccordionItemContext = (): AccordionItemContextValue => {\n const context = React.useContext(AccordionItemContext);\n if (!context) {\n throw new Error(\n \"Accordion.Header, Accordion.Trigger, and Accordion.Content must be rendered within an Accordion.Item.\",\n );\n }\n return context;\n};\n\n/**\n * Accordion.Root provides expansion state management, variant theming, and keyboard navigation.\n */\nexport const AccordionRoot = React.forwardRef<HTMLDivElement, AccordionRootProps>(\n function AccordionRoot(props, ref) {\n const {\n type = \"single\",\n variant = \"default\",\n size = \"md\",\n indicatorPosition = \"end\",\n isDisabled = false,\n className,\n children,\n value: _value,\n defaultValue: _defaultValue,\n onValueChange: _onValueChange,\n ...restProps\n } = props;\n\n const isMultiple = type === \"multiple\";\n const collapsible =\n !isMultiple && \"collapsible\" in props ? Boolean(props.collapsible) : false;\n\n const domProps = { ...restProps };\n delete (domProps as { collapsible?: unknown }).collapsible;\n\n // Multiple mode state\n const [multipleValues, setMultipleValues] = useControllableState<string[]>({\n value: isMultiple ? (props.value as string[] | undefined) : undefined,\n defaultValue: isMultiple\n ? (props.defaultValue as string[] | undefined) ?? []\n : [],\n onChange: isMultiple\n ? (props.onValueChange as ((val: string[]) => void) | undefined)\n : undefined,\n });\n\n const handleSingleChange = React.useCallback(\n (val: string | undefined) => {\n if (!isMultiple && \"onValueChange\" in props && typeof props.onValueChange === \"function\") {\n (props.onValueChange as (v: string) => void)(val ?? \"\");\n }\n },\n [isMultiple, props],\n );\n\n // Single mode state\n const [singleValue, setSingleValue] = useControllableState<\n string | undefined\n >({\n value: !isMultiple ? (props.value as string | undefined) : undefined,\n defaultValue: !isMultiple\n ? (props.defaultValue as string | undefined)\n : undefined,\n onChange: handleSingleChange,\n });\n\n const expandedValues = React.useMemo(() => {\n if (isMultiple) {\n return Array.isArray(multipleValues) ? multipleValues : [];\n }\n return singleValue ? [singleValue] : [];\n }, [isMultiple, multipleValues, singleValue]);\n\n // Item registry for expandAll / collapseAll operations\n const registeredItemsRef = React.useRef<Map<string, { isDisabled: boolean }>>(\n new Map(),\n );\n\n const registerItem = React.useCallback(\n (itemVal: string, itemDisabled: boolean) => {\n registeredItemsRef.current.set(itemVal, { isDisabled: itemDisabled });\n return () => {\n registeredItemsRef.current.delete(itemVal);\n };\n },\n [],\n );\n\n const toggleItem = React.useCallback(\n (itemValue: string) => {\n if (isMultiple) {\n const current = Array.isArray(multipleValues) ? multipleValues : [];\n const next = current.includes(itemValue)\n ? current.filter((v) => v !== itemValue)\n : [...current, itemValue];\n setMultipleValues(next);\n } else {\n const isCurrentOpen = singleValue === itemValue;\n if (isCurrentOpen) {\n if (collapsible) {\n setSingleValue(\"\");\n }\n } else {\n setSingleValue(itemValue);\n }\n }\n },\n [\n isMultiple,\n multipleValues,\n setMultipleValues,\n singleValue,\n setSingleValue,\n collapsible,\n ],\n );\n\n const expandAll = React.useCallback(() => {\n const eligibleValues: string[] = [];\n registeredItemsRef.current.forEach((info, val) => {\n if (!info.isDisabled && !isDisabled) {\n eligibleValues.push(val);\n }\n });\n\n if (isMultiple) {\n setMultipleValues(eligibleValues);\n } else if (eligibleValues.length > 0) {\n const firstVal = eligibleValues[0]!;\n setSingleValue(firstVal);\n }\n }, [isDisabled, isMultiple, setMultipleValues, setSingleValue]);\n\n const collapseAll = React.useCallback(() => {\n if (isMultiple) {\n setMultipleValues([]);\n } else if (collapsible) {\n setSingleValue(\"\");\n }\n }, [isMultiple, collapsible, setMultipleValues, setSingleValue]);\n\n const internalRootRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(ref, internalRootRef);\n\n const contextValue = React.useMemo<AccordionContextValue>(\n () => ({\n type: type as AccordionType,\n variant: variant as AccordionVariant,\n size: size as AccordionSize,\n indicatorPosition: indicatorPosition as AccordionIndicatorPosition,\n collapsible,\n isDisabled,\n expandedValues,\n toggleItem,\n expandAll,\n collapseAll,\n registerItem,\n rootRef: internalRootRef,\n }),\n [\n type,\n variant,\n size,\n indicatorPosition,\n collapsible,\n isDisabled,\n expandedValues,\n toggleItem,\n expandAll,\n collapseAll,\n registerItem,\n ],\n );\n\n // Normalize variant class mapping for legacy and new naming conventions\n const variantClass = `cl-accordion--${variant}`;\n const legacyVariantClass =\n variant === \"default\"\n ? \"cl-accordion--outline\"\n : variant === \"outline\"\n ? \"cl-accordion--default\"\n : variant === \"borderless\"\n ? \"cl-accordion--flush\"\n : variant === \"flush\"\n ? \"cl-accordion--borderless\"\n : undefined;\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n ref={mergedRef}\n className={classNames(\n \"cl-accordion\",\n variantClass,\n legacyVariantClass,\n `cl-accordion--size-${size}`,\n isDisabled && \"cl-accordion--disabled\",\n className,\n )}\n {...domProps}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n },\n);\n\nAccordionRoot.displayName = \"Accordion\";\n\n/**\n * Accordion.Item encapsulates a single collapsible panel and header.\n */\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n function AccordionItem(\n { value, isDisabled: itemDisabledProp = false, className, children, ...restProps },\n ref,\n ) {\n const { expandedValues, isDisabled: globalDisabled, registerItem } =\n useAccordionContext();\n const isOpen = expandedValues.includes(value);\n const isDisabled = Boolean(itemDisabledProp || globalDisabled);\n\n React.useEffect(() => {\n return registerItem(value, isDisabled);\n }, [registerItem, value, isDisabled]);\n\n const generatedId = React.useId();\n const triggerId = `cl-accordion-trigger-${value}-${generatedId}`;\n const panelId = `cl-accordion-panel-${value}-${generatedId}`;\n\n const contextValue = React.useMemo<AccordionItemContextValue>(\n () => ({\n value,\n isOpen,\n isDisabled,\n triggerId,\n panelId,\n }),\n [value, isOpen, isDisabled, triggerId, panelId],\n );\n\n return (\n <AccordionItemContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={classNames(\n \"cl-accordion__item\",\n isOpen && \"cl-accordion__item--open\",\n isDisabled && \"cl-accordion__item--disabled\",\n className,\n )}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n {...restProps}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n },\n);\n\nAccordionItem.displayName = \"Accordion.Item\";\n\n/**\n * Accordion.Header renders a semantic heading wrapper (h2 - h6) around the trigger button.\n */\nexport const AccordionHeader = React.forwardRef<\n HTMLHeadingElement,\n AccordionHeaderProps\n>(function AccordionHeader(\n { level = 3, className, children, ...restProps },\n ref,\n) {\n const HeadingTag = `h${level}` as const;\n\n return (\n <HeadingTag\n ref={ref}\n className={classNames(\"cl-accordion__header\", className)}\n {...restProps}\n >\n {children}\n </HeadingTag>\n );\n});\n\nAccordionHeader.displayName = \"Accordion.Header\";\n\n/**\n * Accordion.Icon renders a chevron SVG icon that smoothly rotates 180° when expanded.\n */\nexport const AccordionIcon = React.forwardRef<\n SVGSVGElement,\n AccordionIconProps\n>(function AccordionIcon({ className, ...restProps }, ref) {\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={classNames(\"cl-accordion__icon\", className)}\n aria-hidden=\"true\"\n focusable=\"false\"\n {...restProps}\n >\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n});\n\nAccordionIcon.displayName = \"Accordion.Icon\";\n\n/**\n * Accordion.Trigger renders the interactive button that toggles expansion.\n * Supports structured titles, descriptions, leading icons, badges, and custom indicators.\n */\nexport const AccordionTrigger = React.forwardRef<\n HTMLButtonElement,\n AccordionTriggerProps\n>(function AccordionTrigger(\n {\n asChild = false,\n title,\n description,\n leadingIcon,\n trailingBadge,\n indicator,\n indicatorPosition: triggerIndicatorPosition,\n hideIndicator = false,\n className,\n children,\n onClick,\n onKeyDown,\n ...restProps\n },\n ref,\n) {\n const { toggleItem, rootRef, indicatorPosition: rootIndicatorPosition } =\n useAccordionContext();\n const { value, isOpen, isDisabled, triggerId, panelId } =\n useAccordionItemContext();\n\n const effectiveIndicatorPos =\n triggerIndicatorPosition ?? rootIndicatorPosition ?? \"end\";\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isDisabled) return;\n toggleItem(value);\n },\n [onClick, isDisabled, toggleItem, value],\n );\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n\n const rootEl = rootRef.current;\n if (!rootEl) return;\n\n const triggers = Array.from(\n rootEl.querySelectorAll<HTMLButtonElement>(\n \".cl-accordion__trigger:not([disabled]):not([data-disabled])\",\n ),\n );\n const currentIndex = triggers.indexOf(event.currentTarget);\n if (currentIndex === -1 || triggers.length === 0) return;\n\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n const nextIndex = (currentIndex + 1) % triggers.length;\n triggers[nextIndex]?.focus();\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n const prevIndex = (currentIndex - 1 + triggers.length) % triggers.length;\n triggers[prevIndex]?.focus();\n } else if (event.key === \"Home\") {\n event.preventDefault();\n triggers[0]?.focus();\n } else if (event.key === \"End\") {\n event.preventDefault();\n triggers[triggers.length - 1]?.focus();\n }\n },\n [onKeyDown, rootRef],\n );\n\n const triggerClasses = classNames(\n \"cl-accordion__trigger\",\n isOpen && \"cl-accordion__trigger--open\",\n isDisabled && \"cl-accordion__trigger--disabled\",\n effectiveIndicatorPos === \"start\" && \"cl-accordion__trigger--indicator-start\",\n className,\n );\n\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n id={triggerId}\n role=\"button\"\n aria-expanded={isOpen}\n aria-controls={panelId}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={triggerClasses}\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler<HTMLElement>}\n {...(restProps as Record<string, unknown>)}\n >\n {children}\n </Slot>\n );\n }\n\n // Determine whether to use structured layout composition\n const hasStructuredLayout = Boolean(\n title !== undefined ||\n description !== undefined ||\n leadingIcon !== undefined ||\n trailingBadge !== undefined ||\n indicator !== undefined,\n );\n\n if (hasStructuredLayout) {\n const renderedTitle = title ?? children;\n const renderedIndicator =\n !hideIndicator &&\n (typeof indicator === \"function\" ? (\n indicator({ isOpen })\n ) : indicator !== undefined ? (\n indicator\n ) : (\n <AccordionIcon />\n ));\n\n return (\n <button\n ref={ref}\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={panelId}\n disabled={isDisabled}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={triggerClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...restProps}\n >\n {effectiveIndicatorPos === \"start\" && renderedIndicator}\n {leadingIcon && (\n <span className=\"cl-accordion__leading-icon\" aria-hidden=\"true\">\n {leadingIcon}\n </span>\n )}\n <div className=\"cl-accordion__trigger-text\">\n <span className=\"cl-accordion__title\">{renderedTitle}</span>\n {description && (\n <span className=\"cl-accordion__description\">{description}</span>\n )}\n </div>\n {trailingBadge && (\n <span className=\"cl-accordion__badge\">{trailingBadge}</span>\n )}\n {effectiveIndicatorPos === \"end\" && renderedIndicator}\n </button>\n );\n }\n\n return (\n <button\n ref={ref}\n id={triggerId}\n type=\"button\"\n aria-expanded={isOpen}\n aria-controls={panelId}\n disabled={isDisabled}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={triggerClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...restProps}\n >\n {children}\n </button>\n );\n});\n\nAccordionTrigger.displayName = \"Accordion.Trigger\";\n\n/**\n * Accordion.Content renders the collapsible body region with pure CSS grid height transitions.\n */\nexport const AccordionContent = React.forwardRef<\n HTMLDivElement,\n AccordionContentProps\n>(function AccordionContent({ className, children, ...restProps }, ref) {\n const { isOpen, isDisabled, triggerId, panelId } = useAccordionItemContext();\n\n return (\n <div\n ref={ref}\n id={panelId}\n role=\"region\"\n aria-labelledby={triggerId}\n hidden={!isOpen}\n data-state={isOpen ? \"open\" : \"closed\"}\n data-disabled={isDisabled ? \"\" : undefined}\n className={classNames(\"cl-accordion__content\", className)}\n {...restProps}\n >\n <div className=\"cl-accordion__inner\">{children}</div>\n </div>\n );\n});\n\nAccordionContent.displayName = \"Accordion.Content\";\n\n/**\n * Accordion.Actions provides an optional container for bulk operations (Expand All / Collapse All).\n */\nexport const AccordionActions = React.forwardRef<\n HTMLDivElement,\n AccordionActionsProps\n>(function AccordionActions({ className, children, ...restProps }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(\"cl-accordion__actions\", className)}\n {...restProps}\n >\n {children}\n </div>\n );\n});\n\nAccordionActions.displayName = \"Accordion.Actions\";\n\n/**\n * Accordion.ExpandAll triggers expansion of all eligible items in the accordion.\n */\nexport const AccordionExpandAll = React.forwardRef<\n HTMLButtonElement,\n AccordionExpandAllProps\n>(function AccordionExpandAll(\n { className, children = \"Expand All\", onClick, ...restProps },\n ref,\n) {\n const { expandAll } = useAccordionContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n expandAll();\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames(\"cl-accordion__action-btn\", className)}\n onClick={handleClick}\n {...restProps}\n >\n {children}\n </button>\n );\n});\n\nAccordionExpandAll.displayName = \"Accordion.ExpandAll\";\n\n/**\n * Accordion.CollapseAll triggers collapse of all expanded items in the accordion.\n */\nexport const AccordionCollapseAll = React.forwardRef<\n HTMLButtonElement,\n AccordionCollapseAllProps\n>(function AccordionCollapseAll(\n { className, children = \"Collapse All\", onClick, ...restProps },\n ref,\n) {\n const { collapseAll } = useAccordionContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n collapseAll();\n }\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames(\"cl-accordion__action-btn\", className)}\n onClick={handleClick}\n {...restProps}\n >\n {children}\n </button>\n );\n});\n\nAccordionCollapseAll.displayName = \"Accordion.CollapseAll\";\n\nexport interface AccordionComponent\n extends React.ForwardRefExoticComponent<\n AccordionRootProps & React.RefAttributes<HTMLDivElement>\n > {\n Root: typeof AccordionRoot;\n Item: typeof AccordionItem;\n Header: typeof AccordionHeader;\n Trigger: typeof AccordionTrigger;\n Content: typeof AccordionContent;\n Icon: typeof AccordionIcon;\n Actions: typeof AccordionActions;\n ExpandAll: typeof AccordionExpandAll;\n CollapseAll: typeof AccordionCollapseAll;\n}\n\nexport const Accordion = AccordionRoot as AccordionComponent;\nAccordion.Root = AccordionRoot;\nAccordion.Item = AccordionItem;\nAccordion.Header = AccordionHeader;\nAccordion.Trigger = AccordionTrigger;\nAccordion.Content = AccordionContent;\nAccordion.Icon = AccordionIcon;\nAccordion.Actions = AccordionActions;\nAccordion.ExpandAll = AccordionExpandAll;\nAccordion.CollapseAll = AccordionCollapseAll;\n","import * as React from \"react\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport type {\r\n TabsRootProps,\r\n TabsListProps,\r\n TabsTriggerProps,\r\n TabsContentProps,\r\n TabsIndicatorProps,\r\n TabsContextValue,\r\n TabsOrientation,\r\n TabsVariant,\r\n TabsSize,\r\n TabsActivationMode,\r\n} from \"./Tabs.types\";\r\n\r\nexport const TabsContext = React.createContext<TabsContextValue | null>(null);\r\n\r\nexport function useTabsContext(): TabsContextValue {\r\n const context = React.useContext(TabsContext);\r\n if (!context) {\r\n throw new Error(\r\n \"Tabs compound components must be rendered inside <Tabs /> or <Tabs.Root />\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\nfunction findFirstTriggerValue(children: React.ReactNode): string | undefined {\r\n let found: string | undefined;\r\n React.Children.forEach(children, (child) => {\r\n if (found || !React.isValidElement(child)) return;\r\n const props = child.props as Record<string, unknown> | undefined;\r\n if (\r\n props &&\r\n typeof props.value === \"string\" &&\r\n !props.isDisabled &&\r\n !props.disabled\r\n ) {\r\n found = props.value;\r\n return;\r\n }\r\n if (props && props.children) {\r\n found = findFirstTriggerValue(props.children as React.ReactNode);\r\n }\r\n });\r\n return found;\r\n}\r\n\r\n/**\r\n * Tabs.Root (Tabs) provides context, state synchronization, and orientation management.\r\n */\r\nexport const TabsRoot = React.forwardRef<HTMLDivElement, TabsRootProps>(\r\n function TabsRoot(\r\n {\r\n value: valueProp,\r\n defaultValue,\r\n onValueChange,\r\n orientation = \"horizontal\",\r\n variant = \"line\",\r\n size = \"md\",\r\n activationMode = \"automatic\",\r\n isLazy = false,\r\n className,\r\n children,\r\n ...domProps\r\n },\r\n ref,\r\n ) {\r\n const initialDefault = React.useMemo(() => {\r\n if (defaultValue !== undefined) return defaultValue;\r\n return findFirstTriggerValue(children) ?? \"\";\r\n }, [defaultValue, children]);\r\n\r\n const [selectedValue, setSelectedValue] = useControllableState<string>({\r\n value: valueProp,\r\n defaultValue: initialDefault,\r\n onChange: onValueChange,\r\n });\r\n\r\n const generatedId = React.useId();\r\n const baseId = React.useMemo(\r\n () => generatedId.replace(/:/g, \"\"),\r\n [generatedId],\r\n );\r\n\r\n const listRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n const contextValue = React.useMemo<TabsContextValue>(\r\n () => ({\r\n selectedValue,\r\n setSelectedValue,\r\n orientation: orientation as TabsOrientation,\r\n variant: variant as TabsVariant,\r\n size: size as TabsSize,\r\n activationMode: activationMode as TabsActivationMode,\r\n isLazy,\r\n baseId,\r\n listRef,\r\n }),\r\n [\r\n selectedValue,\r\n setSelectedValue,\r\n orientation,\r\n variant,\r\n size,\r\n activationMode,\r\n isLazy,\r\n baseId,\r\n ],\r\n );\r\n\r\n return (\r\n <TabsContext.Provider value={contextValue}>\r\n <div\r\n ref={ref}\r\n className={classNames(\r\n \"cl-tabs\",\r\n `cl-tabs--${orientation}`,\r\n `cl-tabs--${variant}`,\r\n `cl-tabs--${size}`,\r\n className,\r\n )}\r\n data-orientation={orientation}\r\n {...domProps}\r\n >\r\n {children}\r\n </div>\r\n </TabsContext.Provider>\r\n );\r\n },\r\n);\r\n\r\nTabsRoot.displayName = \"Tabs\";\r\n\r\n/**\r\n * Tabs.List renders the semantic role=\"tablist\" container with roving keyboard navigation.\r\n */\r\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\r\n function TabsList(\r\n { \"aria-label\": ariaLabel, className, children, ...restProps },\r\n ref,\r\n ) {\r\n const { orientation, listRef } = useTabsContext();\r\n const mergedRef = useMergeRefs(ref, listRef);\r\n\r\n return (\r\n <div\r\n ref={mergedRef}\r\n role=\"tablist\"\r\n aria-orientation={orientation}\r\n aria-label={ariaLabel}\r\n data-orientation={orientation}\r\n className={classNames(\"cl-tabs__list\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTabsList.displayName = \"Tabs.List\";\r\n\r\n/**\r\n * Tabs.Trigger renders the interactive tab button adhering to WAI-ARIA APG roving tabindex.\r\n */\r\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\r\n function TabsTrigger(\r\n {\r\n value,\r\n isDisabled = false,\r\n asChild = false,\r\n className,\r\n children,\r\n onClick,\r\n onKeyDown,\r\n ...restProps\r\n },\r\n ref,\r\n ) {\r\n const {\r\n selectedValue,\r\n setSelectedValue,\r\n orientation,\r\n activationMode,\r\n baseId,\r\n } = useTabsContext();\r\n\r\n const isSelected = selectedValue === value;\r\n const triggerId = `cl-tab-${baseId}-${value}`;\r\n const panelId = `cl-tabpanel-${baseId}-${value}`;\r\n\r\n // Auto-select first tab trigger if no value or defaultValue was passed\r\n React.useEffect(() => {\r\n if (!selectedValue && !isDisabled) {\r\n setSelectedValue(value);\r\n }\r\n }, [selectedValue, value, isDisabled, setSelectedValue]);\r\n\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (isDisabled) {\r\n e.preventDefault();\r\n return;\r\n }\r\n onClick?.(e);\r\n if (!e.defaultPrevented) {\r\n setSelectedValue(value);\r\n }\r\n },\r\n [isDisabled, onClick, setSelectedValue, value],\r\n );\r\n\r\n const handleKeyDown = React.useCallback(\r\n (e: React.KeyboardEvent<HTMLButtonElement>) => {\r\n onKeyDown?.(e);\r\n if (e.defaultPrevented) return;\r\n\r\n const list = e.currentTarget.closest('[role=\"tablist\"]');\r\n if (!list) return;\r\n\r\n const triggers = Array.from(\r\n list.querySelectorAll<HTMLButtonElement>(\r\n '[role=\"tab\"]:not([disabled]):not([data-disabled])',\r\n ),\r\n );\r\n\r\n if (triggers.length === 0) return;\r\n\r\n const currentIndex = triggers.indexOf(e.currentTarget);\r\n if (currentIndex === -1) return;\r\n\r\n let nextIndex = currentIndex;\r\n let shouldMove = false;\r\n\r\n const isHorizontal = orientation === \"horizontal\";\r\n const isVertical = orientation === \"vertical\";\r\n\r\n switch (e.key) {\r\n case \"ArrowRight\":\r\n if (isHorizontal) {\r\n nextIndex = (currentIndex + 1) % triggers.length;\r\n shouldMove = true;\r\n }\r\n break;\r\n case \"ArrowLeft\":\r\n if (isHorizontal) {\r\n nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\r\n shouldMove = true;\r\n }\r\n break;\r\n case \"ArrowDown\":\r\n if (isVertical) {\r\n nextIndex = (currentIndex + 1) % triggers.length;\r\n shouldMove = true;\r\n }\r\n break;\r\n case \"ArrowUp\":\r\n if (isVertical) {\r\n nextIndex = (currentIndex - 1 + triggers.length) % triggers.length;\r\n shouldMove = true;\r\n }\r\n break;\r\n case \"Home\":\r\n nextIndex = 0;\r\n shouldMove = true;\r\n break;\r\n case \"End\":\r\n nextIndex = triggers.length - 1;\r\n shouldMove = true;\r\n break;\r\n case \"Enter\":\r\n case \" \":\r\n if (!isDisabled) {\r\n e.preventDefault();\r\n setSelectedValue(value);\r\n }\r\n return;\r\n default:\r\n return;\r\n }\r\n\r\n if (shouldMove) {\r\n e.preventDefault();\r\n const targetTrigger = triggers[nextIndex];\r\n if (targetTrigger) {\r\n targetTrigger.focus();\r\n if (activationMode === \"automatic\") {\r\n const targetValue = targetTrigger.getAttribute(\"data-value\");\r\n if (targetValue) {\r\n setSelectedValue(targetValue);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n [\r\n onKeyDown,\r\n orientation,\r\n activationMode,\r\n isDisabled,\r\n setSelectedValue,\r\n value,\r\n ],\r\n );\r\n\r\n const triggerClasses = classNames(\"cl-tabs__trigger\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n id={triggerId}\r\n role=\"tab\"\r\n aria-selected={isSelected}\r\n aria-controls={panelId}\r\n tabIndex={isSelected ? 0 : -1}\r\n data-state={isSelected ? \"active\" : \"inactive\"}\r\n data-disabled={isDisabled ? \"\" : undefined}\r\n data-value={value}\r\n data-orientation={orientation}\r\n className={triggerClasses}\r\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\r\n onKeyDown={handleKeyDown as unknown as React.KeyboardEventHandler<HTMLElement>}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n id={triggerId}\r\n type=\"button\"\r\n role=\"tab\"\r\n aria-selected={isSelected}\r\n aria-controls={panelId}\r\n tabIndex={isSelected ? 0 : -1}\r\n disabled={isDisabled}\r\n data-state={isSelected ? \"active\" : \"inactive\"}\r\n data-disabled={isDisabled ? \"\" : undefined}\r\n data-value={value}\r\n data-orientation={orientation}\r\n className={triggerClasses}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n {...restProps}\r\n >\r\n {children}\r\n </button>\r\n );\r\n },\r\n);\r\n\r\nTabsTrigger.displayName = \"Tabs.Trigger\";\r\n\r\n/**\r\n * Tabs.Content renders the role=\"tabpanel\" for a corresponding tab trigger.\r\n */\r\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\r\n function TabsContent({ value, className, children, ...restProps }, ref) {\r\n const { selectedValue, orientation, isLazy, baseId } = useTabsContext();\r\n\r\n const isSelected = selectedValue === value;\r\n const triggerId = `cl-tab-${baseId}-${value}`;\r\n const panelId = `cl-tabpanel-${baseId}-${value}`;\r\n\r\n if (isLazy && !isSelected) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n id={panelId}\r\n role=\"tabpanel\"\r\n aria-labelledby={triggerId}\r\n tabIndex={0}\r\n hidden={!isSelected}\r\n data-state={isSelected ? \"active\" : \"inactive\"}\r\n data-orientation={orientation}\r\n className={classNames(\"cl-tabs__content\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nTabsContent.displayName = \"Tabs.Content\";\r\n\r\n/**\r\n * Tabs.Indicator renders an optional visual indicator track.\r\n */\r\nexport const TabsIndicator = React.forwardRef<\r\n HTMLDivElement,\r\n TabsIndicatorProps\r\n>(function TabsIndicator({ className, ...restProps }, ref) {\r\n return (\r\n <div\r\n ref={ref}\r\n aria-hidden=\"true\"\r\n className={classNames(\"cl-tabs__indicator\", className)}\r\n {...restProps}\r\n />\r\n );\r\n});\r\n\r\nTabsIndicator.displayName = \"Tabs.Indicator\";\r\n\r\n/**\r\n * Compound export namespace adhering to Chellaa React standards.\r\n */\r\nexport const Tabs = Object.assign(TabsRoot, {\r\n Root: TabsRoot,\r\n List: TabsList,\r\n Trigger: TabsTrigger,\r\n Content: TabsContent,\r\n Indicator: TabsIndicator,\r\n});\r\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport {\r\n useFloating,\r\n autoUpdate,\r\n offset,\r\n flip,\r\n shift,\r\n size as floatingSize,\r\n useDismiss,\r\n useInteractions,\r\n} from \"@floating-ui/react\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport { Portal } from \"../../primitives/Portal\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type {\r\n SelectRootProps,\r\n SelectTriggerProps,\r\n SelectValueProps,\r\n SelectIconProps,\r\n SelectPortalProps,\r\n SelectContentProps,\r\n SelectItemProps,\r\n SelectItemTextProps,\r\n SelectItemIndicatorProps,\r\n SelectGroupProps,\r\n SelectLabelProps,\r\n SelectSeparatorProps,\r\n SelectContextValue,\r\n} from \"./Select.types\";\r\n\r\n/* =========================================================================\r\n Internal Context\r\n ========================================================================= */\r\n\r\ninterface InternalSelectContext<TValue extends string = string> extends SelectContextValue<TValue> {\r\n itemLabels: Map<string, string>;\r\n itemsList: string[];\r\n registerItem: (value: string, label: string, disabled?: boolean) => () => void;\r\n disabledItems: Set<string>;\r\n ariaDescribedBy?: string | undefined;\r\n getReferenceProps?: (userProps?: React.HTMLProps<Element>) => Record<string, unknown>;\r\n getFloatingProps?: (userProps?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;\r\n isPositioned: boolean;\r\n}\r\n\r\nfunction extractText(node: React.ReactNode): string {\r\n if (typeof node === \"string\") return node;\r\n if (typeof node === \"number\") return String(node);\r\n if (!node || typeof node !== \"object\") return \"\";\r\n if (Array.isArray(node)) return node.map(extractText).join(\"\");\r\n if (React.isValidElement(node) && (node.props as any)?.children) {\r\n return extractText((node.props as any).children);\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction extractItemMapFromChildren(children: React.ReactNode): Map<string, string> {\r\n const map = new Map<string, string>();\r\n function walk(node: React.ReactNode) {\r\n React.Children.forEach(node, (child) => {\r\n if (!React.isValidElement(child)) return;\r\n const props = child.props as any;\r\n if (props && \"value\" in props && typeof props.value === \"string\") {\r\n const text = props.textValue ?? extractText(props.children);\r\n if (text) {\r\n map.set(props.value, text);\r\n }\r\n }\r\n if (props && props.children) {\r\n walk(props.children);\r\n }\r\n });\r\n }\r\n walk(children);\r\n return map;\r\n}\r\n\r\nconst SelectContext = React.createContext<InternalSelectContext | null>(null);\r\n\r\nexport function useSelectContext<TValue extends string = string>(): SelectContextValue<TValue> {\r\n const context = React.useContext(SelectContext);\r\n if (!context) {\r\n throw new Error(\r\n \"Select subcomponents must be used within a <Select> or <Select.Root> provider.\"\r\n );\r\n }\r\n return context as unknown as SelectContextValue<TValue>;\r\n}\r\n\r\n/* =========================================================================\r\n 1. SelectRoot / Select\r\n ========================================================================= */\r\n\r\nexport const SelectRoot = React.forwardRef<HTMLDivElement, SelectRootProps>(\r\n function SelectRoot(props, ref) {\r\n const formField = useFormField();\r\n\r\n const isDisabled = props.isDisabled ?? formField?.disabled ?? false;\r\n const isInvalid = props.isInvalid ?? formField?.error ?? false;\r\n const isRequired = props.isRequired ?? formField?.required ?? false;\r\n const name = props.name ?? formField?.name;\r\n const ariaDescribedBy = [\r\n props[\"aria-describedby\"],\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const {\r\n value: valueProp,\r\n defaultValue,\r\n onValueChange,\r\n isOpen: isOpenProp,\r\n defaultOpen = false,\r\n onOpenChange,\r\n size = \"md\",\r\n variant = \"outline\",\r\n placeholder,\r\n options,\r\n children,\r\n className,\r\n isDisabled: _discardDisabled,\r\n isInvalid: _discardInvalid,\r\n isRequired: _discardRequired,\r\n name: _discardName,\r\n \"aria-describedby\": _discardAria,\r\n ...rest\r\n } = props;\r\n\r\n // Controlled / Uncontrolled value\r\n const [value, setValueState] = useControllableState<string | undefined>({\r\n value: valueProp,\r\n defaultValue: defaultValue,\r\n onChange: (next) => {\r\n if (next !== undefined && onValueChange) {\r\n onValueChange(next);\r\n }\r\n },\r\n });\r\n\r\n // Controlled / Uncontrolled open state\r\n const [isOpen, setIsOpenState] = useControllableState<boolean>({\r\n value: isOpenProp,\r\n defaultValue: defaultOpen,\r\n onChange: onOpenChange,\r\n });\r\n\r\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null);\r\n const [itemLabels, setItemLabels] = React.useState<Map<string, string>>(() => {\r\n if (children) {\r\n return extractItemMapFromChildren(children);\r\n }\r\n return new Map();\r\n });\r\n const [itemsList, setItemsList] = React.useState<string[]>(() => {\r\n if (children) {\r\n return Array.from(extractItemMapFromChildren(children).keys());\r\n }\r\n return [];\r\n });\r\n const [disabledItems, setDisabledItems] = React.useState<Set<string>>(() => new Set());\r\n\r\n const triggerId = React.useId();\r\n const contentId = React.useId();\r\n const triggerRef = React.useRef<HTMLButtonElement | null>(null);\r\n const contentRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Floating UI positioning\r\n const { refs, floatingStyles, isPositioned, context: floatingContext } = useFloating({\r\n open: isOpen,\r\n onOpenChange: (open) => {\r\n if (!open && !isOpen) return;\r\n setIsOpenState(open);\r\n },\r\n placement: \"bottom-start\",\r\n whileElementsMounted: autoUpdate,\r\n middleware: [\r\n offset(4),\r\n flip({ padding: 8 }),\r\n shift({ padding: 8 }),\r\n floatingSize({\r\n apply({ rects, elements }) {\r\n Object.assign(elements.floating.style, {\r\n width: `${rects.reference.width}px`,\r\n minWidth: `${rects.reference.width}px`,\r\n });\r\n },\r\n }),\r\n ],\r\n });\r\n\r\n const dismiss = useDismiss(floatingContext, {\r\n enabled: isOpen,\r\n outsidePress: true,\r\n escapeKey: true,\r\n });\r\n\r\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\r\n\r\n // Item registration helper\r\n const registerItem = React.useCallback(\r\n (itemVal: string, itemLabel: string, itemDisabled?: boolean) => {\r\n setItemLabels((prev) => {\r\n if (prev.get(itemVal) === itemLabel) return prev;\r\n const next = new Map(prev);\r\n next.set(itemVal, itemLabel);\r\n return next;\r\n });\r\n setItemsList((prev) => (prev.includes(itemVal) ? prev : [...prev, itemVal]));\r\n if (itemDisabled) {\r\n setDisabledItems((prev) => {\r\n if (prev.has(itemVal)) return prev;\r\n const next = new Set(prev);\r\n next.add(itemVal);\r\n return next;\r\n });\r\n }\r\n return () => {\r\n // Retain itemLabels so closed SelectTrigger can display the label\r\n };\r\n },\r\n []\r\n );\r\n\r\n // Populate from flat options if provided\r\n React.useEffect(() => {\r\n if (options && options.length > 0) {\r\n const newMap = new Map<string, string>();\r\n const newList: string[] = [];\r\n const newDisabled = new Set<string>();\r\n for (const opt of options) {\r\n newMap.set(opt.value, opt.label);\r\n newList.push(opt.value);\r\n if (opt.disabled) newDisabled.add(opt.value);\r\n }\r\n setItemLabels(newMap);\r\n setItemsList(newList);\r\n setDisabledItems(newDisabled);\r\n }\r\n }, [options]);\r\n\r\n const selectedLabel = value ? itemLabels.get(value) ?? null : null;\r\n\r\n const setValue = React.useCallback(\r\n (nextVal: string) => {\r\n setValueState(nextVal);\r\n },\r\n [setValueState]\r\n );\r\n\r\n const setIsOpen = React.useCallback(\r\n (nextOpen: boolean) => {\r\n setIsOpenState(nextOpen);\r\n if (nextOpen && value) {\r\n setHighlightedValue(value);\r\n }\r\n },\r\n [setIsOpenState, value]\r\n );\r\n\r\n const contextValue = React.useMemo<InternalSelectContext>(\r\n () => ({\r\n value,\r\n setValue,\r\n isOpen: Boolean(isOpen),\r\n setIsOpen,\r\n highlightedValue,\r\n setHighlightedValue,\r\n size,\r\n variant,\r\n isDisabled,\r\n isInvalid,\r\n isRequired,\r\n name,\r\n triggerId,\r\n contentId,\r\n triggerRef,\r\n contentRef,\r\n selectedLabel,\r\n registerItem,\r\n itemLabels,\r\n itemsList,\r\n disabledItems,\r\n ariaDescribedBy,\r\n refs: {\r\n setReference: refs.setReference,\r\n setFloating: refs.setFloating,\r\n },\r\n floatingStyles,\r\n isPositioned,\r\n getReferenceProps,\r\n getFloatingProps,\r\n }),\r\n [\r\n value,\r\n setValue,\r\n isOpen,\r\n setIsOpen,\r\n highlightedValue,\r\n size,\r\n variant,\r\n isDisabled,\r\n isInvalid,\r\n isRequired,\r\n name,\r\n triggerId,\r\n contentId,\r\n selectedLabel,\r\n registerItem,\r\n itemLabels,\r\n itemsList,\r\n disabledItems,\r\n ariaDescribedBy,\r\n refs.setReference,\r\n refs.setFloating,\r\n floatingStyles,\r\n isPositioned,\r\n getReferenceProps,\r\n getFloatingProps,\r\n ]\r\n );\r\n\r\n // Auto-render layout if flat options are provided without compound children\r\n const renderContent = () => {\r\n if (children) {\r\n return children;\r\n }\r\n if (options !== undefined) {\r\n return (\r\n <>\r\n <SelectTrigger>\r\n <SelectValue placeholder={placeholder ?? undefined} />\r\n <SelectIcon />\r\n </SelectTrigger>\r\n <SelectPortal>\r\n <SelectContent>\r\n {options.map((opt) => (\r\n <SelectItem key={opt.value} value={opt.value} isDisabled={opt.disabled ?? undefined}>\r\n <SelectItemText>{opt.label}</SelectItemText>\r\n <SelectItemIndicator />\r\n </SelectItem>\r\n ))}\r\n </SelectContent>\r\n </SelectPortal>\r\n </>\r\n );\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n <SelectContext.Provider value={contextValue}>\r\n <div\r\n ref={ref}\r\n className={classNames(\"cl-select\", className)}\r\n data-disabled={isDisabled ? \"true\" : undefined}\r\n data-invalid={isInvalid ? \"true\" : undefined}\r\n data-size={size}\r\n data-variant={variant}\r\n {...rest}\r\n >\r\n {renderContent()}\r\n {name && (\r\n <input\r\n type=\"hidden\"\r\n name={name}\r\n value={value ?? \"\"}\r\n disabled={isDisabled}\r\n required={isRequired}\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </div>\r\n </SelectContext.Provider>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 2. SelectTrigger\r\n ========================================================================= */\r\n\r\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\r\n function SelectTrigger(props, forwardedRef) {\r\n const ctx = useSelectContext();\r\n const { asChild = false, className, children, onClick, onKeyDown, ...rest } = props;\r\n\r\n const mergedRef = useMergeRefs(ctx.triggerRef, (node: HTMLElement | null) => {\r\n ctx.refs.setReference(node);\r\n if (typeof forwardedRef === \"function\") {\r\n forwardedRef(node as HTMLButtonElement | null);\r\n } else if (forwardedRef) {\r\n (forwardedRef as React.MutableRefObject<HTMLButtonElement | null>).current = node as HTMLButtonElement | null;\r\n }\r\n });\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (ctx.isDisabled) return;\r\n ctx.setIsOpen(!ctx.isOpen);\r\n onClick?.(e);\r\n };\r\n\r\n // Type-ahead buffer for closed trigger\r\n const typeaheadBuffer = React.useRef(\"\");\r\n const typeaheadTimeout = React.useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n // Cleanup pending typeahead timeout on unmount\r\n React.useEffect(() => {\r\n return () => {\r\n if (typeaheadTimeout.current) {\r\n clearTimeout(typeaheadTimeout.current);\r\n typeaheadTimeout.current = null;\r\n }\r\n };\r\n }, []);\r\n\r\n const internal = ctx as unknown as InternalSelectContext;\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\r\n if (ctx.isDisabled) return;\r\n\r\n const enabledList = internal.itemsList.filter((v) => !internal.disabledItems.has(v));\r\n\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n if (!ctx.isOpen) {\r\n ctx.setIsOpen(true);\r\n } else if (enabledList.length > 0) {\r\n const currentIndex = ctx.highlightedValue ? enabledList.indexOf(ctx.highlightedValue) : -1;\r\n const nextIdx = currentIndex < enabledList.length - 1 ? currentIndex + 1 : 0;\r\n ctx.setHighlightedValue(enabledList[nextIdx] ?? null);\r\n }\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n if (!ctx.isOpen) {\r\n ctx.setIsOpen(true);\r\n } else if (enabledList.length > 0) {\r\n const currentIndex = ctx.highlightedValue ? enabledList.indexOf(ctx.highlightedValue) : -1;\r\n const prevIdx = currentIndex > 0 ? currentIndex - 1 : enabledList.length - 1;\r\n ctx.setHighlightedValue(enabledList[prevIdx] ?? null);\r\n }\r\n } else if (e.key === \"Home\" && ctx.isOpen) {\r\n e.preventDefault();\r\n if (enabledList.length > 0) {\r\n ctx.setHighlightedValue(enabledList[0] ?? null);\r\n }\r\n } else if (e.key === \"End\" && ctx.isOpen) {\r\n e.preventDefault();\r\n if (enabledList.length > 0) {\r\n ctx.setHighlightedValue(enabledList[enabledList.length - 1] ?? null);\r\n }\r\n } else if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n if (!ctx.isOpen) {\r\n ctx.setIsOpen(true);\r\n } else {\r\n if (ctx.highlightedValue && !internal.disabledItems.has(ctx.highlightedValue)) {\r\n ctx.setValue(ctx.highlightedValue);\r\n }\r\n ctx.setIsOpen(false);\r\n }\r\n } else if (e.key === \"Escape\" && ctx.isOpen) {\r\n e.preventDefault();\r\n ctx.setIsOpen(false);\r\n } else if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\r\n // Printable character typeahead\r\n if (typeaheadTimeout.current) {\r\n clearTimeout(typeaheadTimeout.current);\r\n typeaheadTimeout.current = null;\r\n }\r\n typeaheadBuffer.current += e.key.toLowerCase();\r\n typeaheadTimeout.current = setTimeout(() => {\r\n typeaheadBuffer.current = \"\";\r\n typeaheadTimeout.current = null;\r\n }, 500);\r\n\r\n const match = enabledList.find((val) => {\r\n const label = internal.itemLabels.get(val)?.toLowerCase() ?? \"\";\r\n return label.startsWith(typeaheadBuffer.current);\r\n });\r\n\r\n if (match) {\r\n if (!ctx.isOpen) {\r\n ctx.setValue(match);\r\n }\r\n ctx.setHighlightedValue(match);\r\n }\r\n }\r\n\r\n onKeyDown?.(e);\r\n };\r\n\r\n const triggerClasses = classNames(\r\n \"cl-select__trigger\",\r\n `cl-select__trigger--${ctx.variant}`,\r\n `cl-select__trigger--${ctx.size}`,\r\n className\r\n );\r\n\r\n const activeDescendantId =\r\n ctx.isOpen && ctx.highlightedValue ? `${ctx.contentId}-item-${ctx.highlightedValue}` : undefined;\r\n\r\n const baseTriggerProps = {\r\n ref: mergedRef,\r\n id: ctx.triggerId,\r\n type: \"button\" as const,\r\n role: \"combobox\",\r\n \"aria-haspopup\": \"listbox\" as const,\r\n \"aria-expanded\": ctx.isOpen,\r\n \"aria-controls\": ctx.isOpen ? ctx.contentId : undefined,\r\n \"aria-activedescendant\": activeDescendantId,\r\n \"aria-invalid\": ctx.isInvalid ? true : undefined,\r\n \"aria-required\": ctx.isRequired ? true : undefined,\r\n \"aria-describedby\": (ctx as any).ariaDescribedBy ?? rest[\"aria-describedby\"],\r\n disabled: ctx.isDisabled,\r\n \"data-state\": ctx.isOpen ? \"open\" : \"closed\",\r\n \"data-invalid\": ctx.isInvalid ? \"true\" : undefined,\r\n \"data-disabled\": ctx.isDisabled ? \"true\" : undefined,\r\n className: triggerClasses,\r\n onClick: handleClick,\r\n onKeyDown: handleKeyDown,\r\n ...rest,\r\n };\r\n\r\n const triggerProps = internal.getReferenceProps\r\n ? internal.getReferenceProps(baseTriggerProps as any)\r\n : baseTriggerProps;\r\n\r\n if (asChild) {\r\n return <Slot {...triggerProps}>{children}</Slot>;\r\n }\r\n\r\n return <button {...triggerProps}>{children}</button>;\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 3. SelectValue\r\n ========================================================================= */\r\n\r\nexport const SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(\r\n function SelectValue(props, ref) {\r\n const ctx = useSelectContext();\r\n const { placeholder = \"Select an option...\", children, className, ...rest } = props;\r\n\r\n const displayText = children ?? ctx.selectedLabel ?? (ctx.value ? String(ctx.value) : null);\r\n const isPlaceholder = !displayText;\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={classNames(\r\n \"cl-select__value\",\r\n isPlaceholder && \"cl-select__value--placeholder\",\r\n className\r\n )}\r\n {...rest}\r\n >\r\n {displayText || placeholder}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 4. SelectIcon\r\n ========================================================================= */\r\n\r\nexport const SelectIcon = React.forwardRef<HTMLSpanElement, SelectIconProps>(\r\n function SelectIcon(props, ref) {\r\n const { children, className, ...rest } = props;\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={classNames(\"cl-select__icon\", className)}\r\n aria-hidden=\"true\"\r\n {...rest}\r\n >\r\n {children || (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <path d=\"M4 6l4 4 4-4\" />\r\n </svg>\r\n )}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 5. SelectPortal\r\n ========================================================================= */\r\n\r\nexport function SelectPortal({ children, container }: SelectPortalProps) {\r\n const ctx = useSelectContext();\r\n if (!ctx.isOpen) return null;\r\n return <Portal container={container ?? null}>{children}</Portal>;\r\n}\r\n\r\n/* =========================================================================\r\n 6. SelectContent\r\n ========================================================================= */\r\n\r\nexport const SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\r\n function SelectContent(props, forwardedRef) {\r\n const ctx = useSelectContext();\r\n const { className, style, children, onKeyDown, ...rest } = props;\r\n\r\n const mergedRef = useMergeRefs(ctx.contentRef, (node: HTMLElement | null) => {\r\n ctx.refs.setFloating(node);\r\n if (typeof forwardedRef === \"function\") {\r\n forwardedRef(node as HTMLDivElement | null);\r\n } else if (forwardedRef) {\r\n (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = node as HTMLDivElement | null;\r\n }\r\n });\r\n\r\n const internal = ctx as unknown as InternalSelectContext;\r\n\r\nfunction scrollItemIntoView(container: HTMLElement, item: HTMLElement) {\r\n const containerRect = container.getBoundingClientRect();\r\n const itemRect = item.getBoundingClientRect();\r\n\r\n if (itemRect.top < containerRect.top) {\r\n container.scrollTop -= containerRect.top - itemRect.top;\r\n } else if (itemRect.bottom > containerRect.bottom) {\r\n container.scrollTop += itemRect.bottom - containerRect.bottom;\r\n }\r\n}\r\n\r\n // Auto-scroll highlighted item into view within the dropdown list container only\r\n React.useLayoutEffect(() => {\r\n if (ctx.isOpen && internal.isPositioned && ctx.highlightedValue && ctx.contentRef.current) {\r\n const itemEl = ctx.contentRef.current.querySelector<HTMLElement>(\r\n `[data-value=\"${CSS.escape(ctx.highlightedValue)}\"]`\r\n );\r\n if (itemEl && ctx.contentRef.current) {\r\n scrollItemIntoView(ctx.contentRef.current, itemEl);\r\n }\r\n }\r\n }, [ctx.isOpen, internal.isPositioned, ctx.highlightedValue]);\r\n\r\n // Keyboard navigation inside listbox\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\r\n const enabledList = internal.itemsList.filter((v) => !internal.disabledItems.has(v));\r\n if (enabledList.length === 0) return;\r\n\r\n const currentIndex = ctx.highlightedValue\r\n ? enabledList.indexOf(ctx.highlightedValue)\r\n : -1;\r\n\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n const nextIdx = currentIndex < enabledList.length - 1 ? currentIndex + 1 : 0;\r\n ctx.setHighlightedValue(enabledList[nextIdx] ?? null);\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n const prevIdx = currentIndex > 0 ? currentIndex - 1 : enabledList.length - 1;\r\n ctx.setHighlightedValue(enabledList[prevIdx] ?? null);\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n ctx.setHighlightedValue(enabledList[0] ?? null);\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n ctx.setHighlightedValue(enabledList[enabledList.length - 1] ?? null);\r\n } else if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n if (ctx.highlightedValue && !internal.disabledItems.has(ctx.highlightedValue)) {\r\n ctx.setValue(ctx.highlightedValue);\r\n ctx.setIsOpen(false);\r\n ctx.triggerRef.current?.focus();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n ctx.setIsOpen(false);\r\n ctx.triggerRef.current?.focus();\r\n } else if (e.key === \"Tab\") {\r\n ctx.setIsOpen(false);\r\n }\r\n\r\n onKeyDown?.(e);\r\n };\r\n\r\n if (!ctx.isOpen) return null;\r\n\r\n const isPositioned = internal.isPositioned;\r\n\r\n const baseContentProps = {\r\n ref: mergedRef,\r\n id: ctx.contentId,\r\n role: \"listbox\",\r\n \"aria-labelledby\": ctx.triggerId,\r\n tabIndex: -1,\r\n style: {\r\n ...ctx.floatingStyles,\r\n ...style,\r\n },\r\n \"data-positioned\": isPositioned ? \"true\" : undefined,\r\n className: classNames(\"cl-select__content\", className),\r\n onKeyDown: handleKeyDown,\r\n ...rest,\r\n };\r\n\r\n const contentProps = internal.getFloatingProps\r\n ? internal.getFloatingProps(baseContentProps as any)\r\n : baseContentProps;\r\n\r\n return (\r\n <div {...contentProps}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 7. SelectItem\r\n ========================================================================= */\r\n\r\ninterface InternalItemContextValue {\r\n isSelected: boolean;\r\n}\r\n\r\nconst ItemContext = React.createContext<InternalItemContextValue>({ isSelected: false });\r\n\r\nexport const SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(\r\n function SelectItem(props, ref) {\r\n const ctx = useSelectContext();\r\n const {\r\n value,\r\n isDisabled = false,\r\n textValue,\r\n children,\r\n className,\r\n onClick,\r\n onMouseEnter,\r\n ...rest\r\n } = props;\r\n\r\n const isSelected = ctx.value === value;\r\n const isHighlighted = ctx.highlightedValue === value;\r\n\r\n // Register item text for SelectValue computation\r\n const itemRef = React.useRef<HTMLDivElement | null>(null);\r\n const mergedRef = useMergeRefs(itemRef, ref);\r\n\r\n const { registerItem } = ctx as unknown as InternalSelectContext;\r\n\r\n React.useEffect(() => {\r\n const label =\r\n textValue ??\r\n (typeof children === \"string\" ? children : itemRef.current?.textContent?.trim() ?? value);\r\n const unregister = registerItem(value, label, isDisabled);\r\n return unregister;\r\n }, [value, textValue, isDisabled, registerItem]);\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (isDisabled || ctx.isDisabled) return;\r\n ctx.setValue(value);\r\n ctx.setIsOpen(false);\r\n ctx.triggerRef.current?.focus();\r\n onClick?.(e);\r\n };\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!isDisabled && !ctx.isDisabled) {\r\n ctx.setHighlightedValue(value);\r\n }\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const itemId = `${ctx.contentId}-item-${value}`;\r\n\r\n return (\r\n <ItemContext.Provider value={{ isSelected }}>\r\n <div\r\n ref={mergedRef}\r\n id={itemId}\r\n role=\"option\"\r\n data-value={value}\r\n aria-selected={isSelected}\r\n aria-disabled={isDisabled ? \"true\" : undefined}\r\n data-disabled={isDisabled ? \"true\" : undefined}\r\n data-highlighted={isHighlighted ? \"true\" : undefined}\r\n className={classNames(\"cl-select__item\", className)}\r\n onClick={handleClick}\r\n onMouseEnter={handleMouseEnter}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n </ItemContext.Provider>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 8. SelectItemText\r\n ========================================================================= */\r\n\r\nexport const SelectItemText = React.forwardRef<HTMLSpanElement, SelectItemTextProps>(\r\n function SelectItemText(props, ref) {\r\n const { children, className, ...rest } = props;\r\n\r\n return (\r\n <span ref={ref} className={classNames(\"cl-select__item-text\", className)} {...rest}>\r\n {children}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 9. SelectItemIndicator\r\n ========================================================================= */\r\n\r\nexport const SelectItemIndicator = React.forwardRef<HTMLSpanElement, SelectItemIndicatorProps>(\r\n function SelectItemIndicator(props, ref) {\r\n const { isSelected } = React.useContext(ItemContext);\r\n const { children, className, ...rest } = props;\r\n\r\n if (!isSelected) return null;\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n aria-hidden=\"true\"\r\n className={classNames(\"cl-select__item-indicator\", className)}\r\n {...rest}\r\n >\r\n {children || (\r\n <svg\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"2.5 7 5.5 10 11.5 3.5\" />\r\n </svg>\r\n )}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 10. SelectGroup, SelectLabel, SelectSeparator\r\n ========================================================================= */\r\n\r\nexport const SelectGroup = React.forwardRef<HTMLDivElement, SelectGroupProps>(\r\n function SelectGroup(props, ref) {\r\n const { className, ...rest } = props;\r\n return <div ref={ref} role=\"group\" className={classNames(\"cl-select__group\", className)} {...rest} />;\r\n }\r\n);\r\n\r\nexport const SelectLabel = React.forwardRef<HTMLDivElement, SelectLabelProps>(\r\n function SelectLabel(props, ref) {\r\n const { className, ...rest } = props;\r\n return <div ref={ref} className={classNames(\"cl-select__label\", className)} {...rest} />;\r\n }\r\n);\r\n\r\nexport const SelectSeparator = React.forwardRef<HTMLDivElement, SelectSeparatorProps>(\r\n function SelectSeparator(props, ref) {\r\n const { className, ...rest } = props;\r\n return <div ref={ref} role=\"separator\" className={classNames(\"cl-select__separator\", className)} {...rest} />;\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n Compound Component Object\r\n ========================================================================= */\r\n\r\nexport const Select = Object.assign(SelectRoot, {\r\n Root: SelectRoot,\r\n Trigger: SelectTrigger,\r\n Value: SelectValue,\r\n Icon: SelectIcon,\r\n Portal: SelectPortal,\r\n Content: SelectContent,\r\n Item: SelectItem,\r\n ItemText: SelectItemText,\r\n ItemIndicator: SelectItemIndicator,\r\n Group: SelectGroup,\r\n Label: SelectLabel,\r\n Separator: SelectSeparator,\r\n});\r\n","import * as React from \"react\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { Select } from \"../Select\";\r\nimport type {\r\n PaginationRootProps,\r\n PaginationListProps,\r\n PaginationItemProps,\r\n PaginationActionProps,\r\n PaginationEllipsisProps,\r\n PaginationSizeSelectProps,\r\n PaginationJumperProps,\r\n PaginationContextValue,\r\n PaginationSize,\r\n PaginationVariant,\r\n} from \"./Pagination.types\";\r\n\r\nexport const PaginationContext =\r\n React.createContext<PaginationContextValue | null>(null);\r\n\r\nexport function usePaginationContext(): PaginationContextValue {\r\n const context = React.useContext(PaginationContext);\r\n if (!context) {\r\n throw new Error(\r\n \"Pagination compound components must be rendered inside <Pagination /> or <Pagination.Root />\",\r\n );\r\n }\r\n return context;\r\n}\r\n\r\nexport type PaginationRangeItem = number | \"ellipsis-start\" | \"ellipsis-end\";\r\n\r\n/**\r\n * Calculates a windowed range of page items with ellipsis compression.\r\n */\r\nexport function getPaginationRange({\r\n totalPages,\r\n currentPage,\r\n siblingCount = 1,\r\n boundaryCount = 1,\r\n}: {\r\n totalPages: number;\r\n currentPage: number;\r\n siblingCount?: number;\r\n boundaryCount?: number;\r\n}): PaginationRangeItem[] {\r\n if (totalPages <= 1) return [1];\r\n\r\n const range = (start: number, end: number): number[] => {\r\n const length = end - start + 1;\r\n return Array.from({ length }, (_, i) => start + i);\r\n };\r\n\r\n // Max visible numbers if no ellipsis:\r\n // boundaries * 2 + siblings * 2 + current + 2 ellipses\r\n const totalNumbers = boundaryCount * 2 + siblingCount * 2 + 3;\r\n\r\n if (totalPages <= totalNumbers) {\r\n return range(1, totalPages);\r\n }\r\n\r\n const leftSiblingIndex = Math.max(currentPage - siblingCount, 1);\r\n const rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages);\r\n\r\n const shouldShowLeftEllipsis =\r\n leftSiblingIndex > boundaryCount + 2;\r\n const shouldShowRightEllipsis =\r\n rightSiblingIndex < totalPages - (boundaryCount + 1);\r\n\r\n if (!shouldShowLeftEllipsis && shouldShowRightEllipsis) {\r\n const leftItemCount = boundaryCount + siblingCount * 2 + 2;\r\n const leftRange = range(1, leftItemCount);\r\n const rightBoundary = range(totalPages - boundaryCount + 1, totalPages);\r\n return [...leftRange, \"ellipsis-end\", ...rightBoundary];\r\n }\r\n\r\n if (shouldShowLeftEllipsis && !shouldShowRightEllipsis) {\r\n const leftBoundary = range(1, boundaryCount);\r\n const rightItemCount = boundaryCount + siblingCount * 2 + 2;\r\n const rightRange = range(totalPages - rightItemCount + 1, totalPages);\r\n return [...leftBoundary, \"ellipsis-start\", ...rightRange];\r\n }\r\n\r\n // Both ellipses visible\r\n const leftBoundary = range(1, boundaryCount);\r\n const middleRange = range(leftSiblingIndex, rightSiblingIndex);\r\n const rightBoundary = range(totalPages - boundaryCount + 1, totalPages);\r\n return [\r\n ...leftBoundary,\r\n \"ellipsis-start\",\r\n ...middleRange,\r\n \"ellipsis-end\",\r\n ...rightBoundary,\r\n ];\r\n}\r\n\r\n/**\r\n * Pagination.Root (Pagination) manages pagination state, page mathematics, and accessibility landmark.\r\n */\r\nexport const PaginationRoot = React.forwardRef<HTMLElement, PaginationRootProps>(\r\n function PaginationRoot(\r\n {\r\n total,\r\n pageSize: pageSizeProp = 10,\r\n page: pageProp,\r\n defaultPage = 1,\r\n onPageChange,\r\n onPageSizeChange,\r\n siblingCount = 1,\r\n boundaryCount = 1,\r\n size = \"md\",\r\n variant = \"outline\",\r\n isDisabled = false,\r\n showSizeChanger = false,\r\n pageSizeOptions = [10, 20, 50, 100],\r\n showQuickJumper = false,\r\n \"aria-label\": ariaLabel = \"Pagination\",\r\n className,\r\n children,\r\n ...domProps\r\n },\r\n ref,\r\n ) {\r\n const [pageSize, setPageSizeInternal] = React.useState<number>(pageSizeProp);\r\n\r\n React.useEffect(() => {\r\n setPageSizeInternal(pageSizeProp);\r\n }, [pageSizeProp]);\r\n\r\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\r\n\r\n const [currentPage, setCurrentPage] = useControllableState<number>({\r\n value: pageProp,\r\n defaultValue: defaultPage,\r\n onChange: onPageChange,\r\n });\r\n\r\n const setPage = React.useCallback(\r\n (nextPage: number) => {\r\n if (isDisabled) return;\r\n const clamped = Math.min(Math.max(1, nextPage), totalPages);\r\n setCurrentPage(clamped);\r\n },\r\n [isDisabled, setCurrentPage, totalPages],\r\n );\r\n\r\n const handlePageSizeChange = React.useCallback(\r\n (newSize: number) => {\r\n if (isDisabled) return;\r\n setPageSizeInternal(newSize);\r\n onPageSizeChange?.(newSize);\r\n // Reset to page 1 if current page exceeds new total pages\r\n const newTotalPages = Math.max(1, Math.ceil(total / newSize));\r\n if (currentPage > newTotalPages) {\r\n setPage(newTotalPages);\r\n }\r\n },\r\n [currentPage, isDisabled, onPageSizeChange, setPage, total],\r\n );\r\n\r\n const contextValue = React.useMemo<PaginationContextValue>(\r\n () => ({\r\n currentPage,\r\n totalPages,\r\n pageSize,\r\n setPage,\r\n setPageSize: handlePageSizeChange,\r\n size: size as PaginationSize,\r\n variant: variant as PaginationVariant,\r\n isDisabled,\r\n siblingCount,\r\n boundaryCount,\r\n }),\r\n [\r\n currentPage,\r\n totalPages,\r\n pageSize,\r\n setPage,\r\n handlePageSizeChange,\r\n size,\r\n variant,\r\n isDisabled,\r\n siblingCount,\r\n boundaryCount,\r\n ],\r\n );\r\n\r\n const items = React.useMemo(\r\n () =>\r\n getPaginationRange({\r\n totalPages,\r\n currentPage,\r\n siblingCount,\r\n boundaryCount,\r\n }),\r\n [totalPages, currentPage, siblingCount, boundaryCount],\r\n );\r\n\r\n return (\r\n <PaginationContext.Provider value={contextValue}>\r\n <nav\r\n ref={ref}\r\n aria-label={ariaLabel}\r\n className={classNames(\r\n \"cl-pagination\",\r\n `cl-pagination--${size}`,\r\n `cl-pagination--${variant}`,\r\n className,\r\n )}\r\n {...domProps}\r\n >\r\n {children ? (\r\n children\r\n ) : (\r\n <>\r\n <PaginationList>\r\n <li className=\"cl-pagination__list-item\">\r\n <PaginationPrev />\r\n </li>\r\n {items.map((item, idx) => (\r\n <li\r\n key={\r\n typeof item === \"number\"\r\n ? `page-${item}`\r\n : `${item}-${idx}`\r\n }\r\n className=\"cl-pagination__list-item\"\r\n >\r\n {typeof item === \"number\" ? (\r\n <PaginationItem\r\n page={item}\r\n isCurrent={item === currentPage}\r\n >\r\n {item}\r\n </PaginationItem>\r\n ) : (\r\n <PaginationEllipsis />\r\n )}\r\n </li>\r\n ))}\r\n <li className=\"cl-pagination__list-item\">\r\n <PaginationNext />\r\n </li>\r\n </PaginationList>\r\n {showSizeChanger && (\r\n <PaginationSizeSelect options={pageSizeOptions} />\r\n )}\r\n {showQuickJumper && <PaginationJumper />}\r\n </>\r\n )}\r\n </nav>\r\n </PaginationContext.Provider>\r\n );\r\n },\r\n);\r\n\r\nPaginationRoot.displayName = \"Pagination\";\r\n\r\n/**\r\n * Pagination.List renders the semantic <ul role=\"list\"> wrapper for page controls.\r\n */\r\nexport const PaginationList = React.forwardRef<\r\n HTMLUListElement,\r\n PaginationListProps\r\n>(function PaginationList({ className, children, ...restProps }, ref) {\r\n return (\r\n <ul\r\n ref={ref}\r\n role=\"list\"\r\n className={classNames(\"cl-pagination__list\", className)}\r\n {...restProps}\r\n >\r\n {children}\r\n </ul>\r\n );\r\n});\r\n\r\nPaginationList.displayName = \"Pagination.List\";\r\n\r\n/**\r\n * Pagination.Item renders a numeric page button with aria-current marking.\r\n */\r\nexport const PaginationItem = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationItemProps\r\n>(function PaginationItem(\r\n {\r\n page,\r\n isCurrent,\r\n asChild = false,\r\n className,\r\n children,\r\n onClick,\r\n \"aria-label\": ariaLabel,\r\n ...restProps\r\n },\r\n ref,\r\n) {\r\n const { currentPage, setPage, isDisabled } = usePaginationContext();\r\n const active = isCurrent ?? currentPage === page;\r\n\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (isDisabled) return;\r\n onClick?.(e);\r\n if (!e.defaultPrevented) {\r\n setPage(page);\r\n }\r\n },\r\n [isDisabled, onClick, page, setPage],\r\n );\r\n\r\n const itemClasses = classNames(\"cl-pagination__item\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n aria-current={active ? \"page\" : undefined}\r\n aria-label={ariaLabel}\r\n className={itemClasses}\r\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children ?? page}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-current={active ? \"page\" : undefined}\r\n aria-label={ariaLabel ?? `Page ${page}`}\r\n disabled={isDisabled}\r\n className={itemClasses}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n {children ?? page}\r\n </button>\r\n );\r\n});\r\n\r\nPaginationItem.displayName = \"Pagination.Item\";\r\n\r\nconst ChevronLeftIcon = () => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n className=\"cl-pagination__icon\"\r\n >\r\n <polyline points=\"15 18 9 12 15 6\" />\r\n </svg>\r\n);\r\n\r\nconst ChevronRightIcon = () => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n className=\"cl-pagination__icon\"\r\n >\r\n <polyline points=\"9 18 15 12 9 6\" />\r\n </svg>\r\n);\r\n\r\nconst ChevronsLeftIcon = () => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n className=\"cl-pagination__icon\"\r\n >\r\n <polyline points=\"11 17 6 12 11 7\" />\r\n <polyline points=\"18 17 13 12 18 7\" />\r\n </svg>\r\n);\r\n\r\nconst ChevronsRightIcon = () => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n className=\"cl-pagination__icon\"\r\n >\r\n <polyline points=\"13 17 18 12 13 7\" />\r\n <polyline points=\"6 17 11 12 6 7\" />\r\n </svg>\r\n);\r\n\r\n/**\r\n * Pagination.Prev navigates to the preceding page.\r\n */\r\nexport const PaginationPrev = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationActionProps\r\n>(function PaginationPrev(\r\n { asChild = false, className, children, onClick, ...restProps },\r\n ref,\r\n) {\r\n const { currentPage, setPage, isDisabled } = usePaginationContext();\r\n const isBoundary = currentPage <= 1;\r\n const disabled = isDisabled || isBoundary;\r\n\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (disabled) return;\r\n onClick?.(e);\r\n if (!e.defaultPrevented) {\r\n setPage(currentPage - 1);\r\n }\r\n },\r\n [disabled, onClick, setPage, currentPage],\r\n );\r\n\r\n const prevClasses = classNames(\"cl-pagination__prev\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n aria-label=\"Go to previous page\"\r\n aria-disabled={disabled ? \"true\" : undefined}\r\n className={prevClasses}\r\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children ?? <ChevronLeftIcon />}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-label=\"Go to previous page\"\r\n disabled={disabled}\r\n className={prevClasses}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n {children ?? <ChevronLeftIcon />}\r\n </button>\r\n );\r\n});\r\n\r\nPaginationPrev.displayName = \"Pagination.Prev\";\r\n\r\n/**\r\n * Pagination.Next navigates to the succeeding page.\r\n */\r\nexport const PaginationNext = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationActionProps\r\n>(function PaginationNext(\r\n { asChild = false, className, children, onClick, ...restProps },\r\n ref,\r\n) {\r\n const { currentPage, totalPages, setPage, isDisabled } =\r\n usePaginationContext();\r\n const isBoundary = currentPage >= totalPages;\r\n const disabled = isDisabled || isBoundary;\r\n\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (disabled) return;\r\n onClick?.(e);\r\n if (!e.defaultPrevented) {\r\n setPage(currentPage + 1);\r\n }\r\n },\r\n [disabled, onClick, setPage, currentPage],\r\n );\r\n\r\n const nextClasses = classNames(\"cl-pagination__next\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n aria-label=\"Go to next page\"\r\n aria-disabled={disabled ? \"true\" : undefined}\r\n className={nextClasses}\r\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children ?? <ChevronRightIcon />}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-label=\"Go to next page\"\r\n disabled={disabled}\r\n className={nextClasses}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n {children ?? <ChevronRightIcon />}\r\n </button>\r\n );\r\n});\r\n\r\nPaginationNext.displayName = \"Pagination.Next\";\r\n\r\n/**\r\n * Pagination.First jumps directly to the first page (Page 1).\r\n */\r\nexport const PaginationFirst = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationActionProps\r\n>(function PaginationFirst(\r\n { asChild = false, className, children, onClick, ...restProps },\r\n ref,\r\n) {\r\n const { currentPage, setPage, isDisabled } = usePaginationContext();\r\n const disabled = isDisabled || currentPage <= 1;\r\n\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (disabled) return;\r\n onClick?.(e);\r\n if (!e.defaultPrevented) {\r\n setPage(1);\r\n }\r\n },\r\n [disabled, onClick, setPage],\r\n );\r\n\r\n const firstClasses = classNames(\"cl-pagination__first\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n aria-label=\"Go to first page\"\r\n aria-disabled={disabled ? \"true\" : undefined}\r\n className={firstClasses}\r\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children ?? <ChevronsLeftIcon />}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-label=\"Go to first page\"\r\n disabled={disabled}\r\n className={firstClasses}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n {children ?? <ChevronsLeftIcon />}\r\n </button>\r\n );\r\n});\r\n\r\nPaginationFirst.displayName = \"Pagination.First\";\r\n\r\n/**\r\n * Pagination.Last jumps directly to the final page.\r\n */\r\nexport const PaginationLast = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationActionProps\r\n>(function PaginationLast(\r\n { asChild = false, className, children, onClick, ...restProps },\r\n ref,\r\n) {\r\n const { currentPage, totalPages, setPage, isDisabled } =\r\n usePaginationContext();\r\n const disabled = isDisabled || currentPage >= totalPages;\r\n\r\n const handleClick = React.useCallback(\r\n (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (disabled) return;\r\n onClick?.(e);\r\n if (!e.defaultPrevented) {\r\n setPage(totalPages);\r\n }\r\n },\r\n [disabled, onClick, setPage, totalPages],\r\n );\r\n\r\n const lastClasses = classNames(\"cl-pagination__last\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref as React.Ref<HTMLElement>}\r\n aria-label=\"Go to last page\"\r\n aria-disabled={disabled ? \"true\" : undefined}\r\n className={lastClasses}\r\n onClick={handleClick as unknown as React.MouseEventHandler<HTMLElement>}\r\n {...(restProps as Record<string, unknown>)}\r\n >\r\n {children ?? <ChevronsRightIcon />}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n aria-label=\"Go to last page\"\r\n disabled={disabled}\r\n className={lastClasses}\r\n onClick={handleClick}\r\n {...restProps}\r\n >\r\n {children ?? <ChevronsRightIcon />}\r\n </button>\r\n );\r\n});\r\n\r\nPaginationLast.displayName = \"Pagination.Last\";\r\n\r\n/**\r\n * Pagination.Ellipsis renders the non-interactive truncation indicator.\r\n */\r\nexport const PaginationEllipsis = React.forwardRef<\r\n HTMLSpanElement,\r\n PaginationEllipsisProps\r\n>(function PaginationEllipsis({ className, children, ...restProps }, ref) {\r\n return (\r\n <span\r\n ref={ref}\r\n aria-hidden=\"true\"\r\n className={classNames(\"cl-pagination__ellipsis\", className)}\r\n {...restProps}\r\n >\r\n {children ?? \"…\"}\r\n </span>\r\n );\r\n});\r\n\r\nPaginationEllipsis.displayName = \"Pagination.Ellipsis\";\r\n\r\n/**\r\n * Pagination.SizeSelect renders the page size dropdown reusing @chellaa/react's Select component.\r\n */\r\nexport const PaginationSizeSelect = React.forwardRef<\r\n HTMLButtonElement,\r\n PaginationSizeSelectProps\r\n>(function PaginationSizeSelect(\r\n {\r\n options = [10, 20, 50, 100],\r\n className,\r\n onChange,\r\n \"aria-label\": ariaLabel = \"Page size\",\r\n isDisabled: isDisabledProp,\r\n ...restProps\r\n },\r\n ref,\r\n) {\r\n const { pageSize, setPageSize, size, isDisabled: isContextDisabled } =\r\n usePaginationContext();\r\n const disabled = isDisabledProp ?? isContextDisabled;\r\n\r\n const handleValueChange = React.useCallback(\r\n (val: string) => {\r\n const num = parseInt(val, 10);\r\n if (!isNaN(num)) {\r\n setPageSize(num);\r\n onChange?.(num);\r\n }\r\n },\r\n [onChange, setPageSize],\r\n );\r\n\r\n return (\r\n <Select.Root\r\n value={String(pageSize)}\r\n onValueChange={handleValueChange}\r\n isDisabled={disabled}\r\n size={size}\r\n className={classNames(\"cl-pagination__size-select-root\", className)}\r\n >\r\n <Select.Trigger\r\n ref={ref}\r\n aria-label={ariaLabel}\r\n className=\"cl-pagination__size-select-trigger\"\r\n {...restProps}\r\n >\r\n <Select.Value>{`${pageSize} / page`}</Select.Value>\r\n <Select.Icon />\r\n </Select.Trigger>\r\n <Select.Portal>\r\n <Select.Content className=\"cl-pagination__size-select-content\">\r\n {options.map((opt) => (\r\n <Select.Item key={opt} value={String(opt)}>\r\n <Select.ItemText>{opt} / page</Select.ItemText>\r\n <Select.ItemIndicator />\r\n </Select.Item>\r\n ))}\r\n </Select.Content>\r\n </Select.Portal>\r\n </Select.Root>\r\n );\r\n});\r\n\r\nPaginationSizeSelect.displayName = \"Pagination.SizeSelect\";\r\n\r\n/**\r\n * Pagination.Jumper renders a direct page jump number input.\r\n */\r\nexport const PaginationJumper = React.forwardRef<\r\n HTMLSpanElement,\r\n PaginationJumperProps\r\n>(function PaginationJumper({ className, children, ...restProps }, ref) {\r\n const { totalPages, setPage, isDisabled } = usePaginationContext();\r\n const [val, setVal] = React.useState<string>(\"\");\r\n\r\n const handleKeyDown = React.useCallback(\r\n (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n const num = parseInt(val, 10);\r\n if (!isNaN(num) && num >= 1 && num <= totalPages) {\r\n setPage(num);\r\n setVal(\"\");\r\n }\r\n }\r\n },\r\n [val, totalPages, setPage],\r\n );\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={classNames(\"cl-pagination__jumper\", className)}\r\n {...restProps}\r\n >\r\n Go to\r\n <input\r\n type=\"number\"\r\n min={1}\r\n max={totalPages}\r\n aria-label=\"Jump to page\"\r\n disabled={isDisabled}\r\n value={val}\r\n onChange={(e) => setVal(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n className=\"cl-pagination__jumper-input\"\r\n />\r\n </span>\r\n );\r\n});\r\n\r\nPaginationJumper.displayName = \"Pagination.Jumper\";\r\n\r\n/**\r\n * Compound export object adhering to Chellaa React component architecture.\r\n */\r\nexport const Pagination = Object.assign(PaginationRoot, {\r\n Root: PaginationRoot,\r\n List: PaginationList,\r\n Item: PaginationItem,\r\n Prev: PaginationPrev,\r\n Next: PaginationNext,\r\n First: PaginationFirst,\r\n Last: PaginationLast,\r\n Ellipsis: PaginationEllipsis,\r\n SizeSelect: PaginationSizeSelect,\r\n Jumper: PaginationJumper,\r\n});\r\n","import * as React from \"react\";\r\nimport {\r\n useFloating,\r\n autoUpdate,\r\n offset,\r\n flip,\r\n shift,\r\n size as floatingSize,\r\n useDismiss,\r\n useInteractions,\r\n} from \"@floating-ui/react\";\r\nimport { useControllableState } from \"../../hooks/useControllableState\";\r\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\r\nimport { useFormField } from \"../FormField/FormFieldContext\";\r\nimport { Portal } from \"../../primitives/Portal\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type {\r\n ComboboxProps,\r\n ComboboxRootProps,\r\n ComboboxControlProps,\r\n ComboboxInputProps,\r\n ComboboxActionsProps,\r\n ComboboxTriggerProps,\r\n ComboboxPortalProps,\r\n ComboboxContentProps,\r\n ComboboxItemProps,\r\n ComboboxGroupProps,\r\n ComboboxGroupLabelProps,\r\n ComboboxEmptyProps,\r\n ComboboxTagProps,\r\n ComboboxClearProps,\r\n ComboboxContextValue,\r\n} from \"./Combobox.types\";\r\n\r\ninterface InternalComboboxContext extends ComboboxContextValue {\r\n contentElementRef: React.MutableRefObject<HTMLDivElement | null>;\r\n hasOptions: boolean;\r\n setHasOptions: (has: boolean) => void;\r\n}\r\n\r\nconst ComboboxContext = React.createContext<InternalComboboxContext | null>(null);\r\n\r\nexport function useComboboxContext(): ComboboxContextValue {\r\n const context = React.useContext(ComboboxContext);\r\n if (!context) {\r\n throw new Error(\r\n \"Combobox subcomponents must be used within a <Combobox> or <Combobox.Root> provider.\"\r\n );\r\n }\r\n return context;\r\n}\r\n\r\nexport const useCombobox = useComboboxContext;\r\n\r\nfunction scrollItemIntoView(container: HTMLElement, item: HTMLElement) {\r\n const containerRect = container.getBoundingClientRect();\r\n const itemRect = item.getBoundingClientRect();\r\n\r\n if (itemRect.top < containerRect.top) {\r\n container.scrollTop -= containerRect.top - itemRect.top;\r\n } else if (itemRect.bottom > containerRect.bottom) {\r\n container.scrollTop += itemRect.bottom - containerRect.bottom;\r\n }\r\n}\r\n\r\n/* =========================================================================\r\n 1. ComboboxRoot / Combobox\r\n ========================================================================= */\r\n\r\nexport const ComboboxRoot = React.forwardRef<HTMLDivElement, ComboboxRootProps>(\r\n function ComboboxRoot(props, ref) {\r\n const formField = useFormField();\r\n\r\n const {\r\n value: valueProp,\r\n defaultValue: defaultValueProp,\r\n onValueChange,\r\n searchValue: searchValueProp,\r\n defaultSearchValue = \"\",\r\n onSearchChange,\r\n isOpen: isOpenProp,\r\n defaultOpen = false,\r\n onOpenChange,\r\n isDisabled: disabledProp,\r\n isInvalid: isInvalidProp,\r\n isLoading: isLoadingProp = false,\r\n isMulti = false,\r\n size: sizeProp = \"md\",\r\n variant: variantProp = \"outline\",\r\n filter = (itemVal: string, itemText: string, search: string) => {\r\n if (!search) return true;\r\n const q = search.toLowerCase().trim();\r\n return (\r\n itemVal.toLowerCase().includes(q) ||\r\n itemText.toLowerCase().includes(q)\r\n );\r\n },\r\n options,\r\n placeholder,\r\n className,\r\n children,\r\n id: idProp,\r\n name: nameProp,\r\n isRequired: isRequiredProp,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n ...rest\r\n } = props;\r\n\r\n const isDisabled = disabledProp ?? formField?.disabled ?? false;\r\n const isInvalid = isInvalidProp ?? formField?.error ?? false;\r\n const isRequired = isRequiredProp ?? (props as any).required ?? formField?.required ?? false;\r\n const name = nameProp ?? formField?.name;\r\n const ariaDescribedBy = [\r\n ariaDescribedByProp,\r\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\r\n formField?.hasHelperText ? formField.helperTextId : null,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const size = sizeProp ?? \"md\";\r\n const variant = variantProp;\r\n const isLoading = isLoadingProp;\r\n\r\n const baseId = React.useId().replace(/:/g, \"\");\r\n const generatedInputId = `cl-combobox-input-${baseId}`;\r\n const inputId = idProp ?? formField?.id ?? generatedInputId;\r\n const listboxId = `cl-combobox-listbox-${baseId}`;\r\n\r\n // Resolve initial search label for single-select when options are available\r\n const initialVal = valueProp !== undefined ? valueProp : defaultValueProp;\r\n const initialSelectedOption =\r\n !isMulti && options && initialVal !== undefined\r\n ? options.find((o) => o.value === initialVal)\r\n : undefined;\r\n\r\n const resolvedDefaultSearch =\r\n defaultSearchValue ||\r\n (typeof initialSelectedOption?.label === \"string\"\r\n ? initialSelectedOption.label\r\n : typeof initialSelectedOption?.value === \"string\"\r\n ? initialSelectedOption.value\r\n : \"\");\r\n\r\n // Controlled or uncontrolled value\r\n const [value, setValueState] = useControllableState<any>({\r\n value: valueProp,\r\n defaultValue: defaultValueProp !== undefined ? defaultValueProp : isMulti ? [] : \"\",\r\n onChange: onValueChange,\r\n });\r\n\r\n // Controlled or uncontrolled search text\r\n const [searchValue, setSearchValueState] = useControllableState<string>({\r\n value: searchValueProp,\r\n defaultValue: resolvedDefaultSearch,\r\n onChange: onSearchChange,\r\n });\r\n\r\n // Controlled or uncontrolled open state\r\n const [isOpen, setIsOpenState] = useControllableState<boolean>({\r\n value: isOpenProp,\r\n defaultValue: defaultOpen,\r\n onChange: onOpenChange,\r\n });\r\n\r\n const [isFiltering, setIsFiltering] = React.useState<boolean>(false);\r\n const [pendingHighlight, setPendingHighlight] = React.useState<\r\n \"first\" | \"last\" | \"selected\" | null\r\n >(null);\r\n\r\n const openWithHighlight = React.useCallback(\r\n (target: \"first\" | \"last\" | \"selected\") => {\r\n if (isDisabled) return;\r\n setIsFiltering(false);\r\n setPendingHighlight(target);\r\n setIsOpenState(true);\r\n },\r\n [isDisabled, setIsOpenState]\r\n );\r\n\r\n const [activeId, setActiveId] = React.useState<string | null>(null);\r\n const [hasOptions, setHasOptions] = React.useState<boolean>(true);\r\n const setHasOptionsCallback = React.useCallback((has: boolean) => {\r\n setHasOptions((prev) => (prev === has ? prev : has));\r\n }, []);\r\n\r\n const inputRef = React.useRef<HTMLInputElement | null>(null);\r\n const contentElementRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Floating UI positioning\r\n const {\r\n refs,\r\n floatingStyles,\r\n isPositioned,\r\n context: floatingContext,\r\n } = useFloating({\r\n open: isOpen,\r\n onOpenChange: (open) => {\r\n if (!isDisabled) {\r\n setIsOpenState(open);\r\n }\r\n },\r\n whileElementsMounted: autoUpdate,\r\n placement: \"bottom-start\",\r\n middleware: [\r\n offset(4),\r\n flip({ fallbackAxisSideDirection: \"start\" }),\r\n shift({ padding: 8 }),\r\n floatingSize({\r\n apply({ rects, elements }) {\r\n Object.assign(elements.floating.style, {\r\n width: `${rects.reference.width}px`,\r\n });\r\n },\r\n }),\r\n ],\r\n });\r\n\r\n const dismiss = useDismiss(floatingContext, {\r\n outsidePress: true,\r\n escapeKey: false, // Handled specifically by input keydown\r\n });\r\n\r\n useInteractions([dismiss]);\r\n\r\n // Selection handlers\r\n const selectItem = React.useCallback(\r\n (itemVal: string, itemText: string) => {\r\n if (isMulti) {\r\n const currentArr = Array.isArray(value) ? value : [];\r\n const exists = currentArr.includes(itemVal);\r\n const nextArr = exists\r\n ? currentArr.filter((v) => v !== itemVal)\r\n : [...currentArr, itemVal];\r\n setValueState(nextArr);\r\n setSearchValueState(\"\");\r\n setIsFiltering(false);\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n } else {\r\n setValueState(itemVal);\r\n setSearchValueState(itemText || itemVal);\r\n setIsFiltering(false);\r\n setIsOpenState(false);\r\n setActiveId(null);\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }\r\n },\r\n [isMulti, value, setValueState, setSearchValueState, setIsOpenState]\r\n );\r\n\r\n const removeItem = React.useCallback(\r\n (itemVal: string) => {\r\n if (isMulti && Array.isArray(value)) {\r\n setValueState(value.filter((v) => v !== itemVal));\r\n }\r\n },\r\n [isMulti, value, setValueState]\r\n );\r\n\r\n const clearSelection = React.useCallback(() => {\r\n setValueState(isMulti ? [] : \"\");\r\n setSearchValueState(\"\");\r\n setIsFiltering(false);\r\n setActiveId(null);\r\n if (inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, [isMulti, setValueState, setSearchValueState]);\r\n\r\n const registerItem = React.useCallback(() => () => {}, []);\r\n const updateItemVisibility = React.useCallback(() => {}, []);\r\n\r\n const contextValue: InternalComboboxContext = React.useMemo(\r\n () => ({\r\n value,\r\n selectItem,\r\n removeItem,\r\n clearSelection,\r\n searchValue,\r\n setSearchValue: setSearchValueState,\r\n isOpen,\r\n setIsOpen: setIsOpenState,\r\n activeId,\r\n setActiveId,\r\n inputRef,\r\n controlRef: refs.setReference,\r\n contentRef: refs.setFloating,\r\n contentElementRef,\r\n hasOptions,\r\n setHasOptions: setHasOptionsCallback,\r\n floatingStyles,\r\n listboxId,\r\n inputId,\r\n isMulti,\r\n isDisabled,\r\n isInvalid,\r\n isLoading,\r\n size,\r\n variant,\r\n filter,\r\n isFiltering,\r\n setIsFiltering,\r\n pendingHighlight,\r\n setPendingHighlight,\r\n openWithHighlight,\r\n ariaDescribedBy,\r\n isRequired,\r\n name,\r\n registerItem,\r\n updateItemVisibility,\r\n visibleItems: [],\r\n filteredCount: hasOptions ? 1 : 0,\r\n placeholder,\r\n isPositioned,\r\n }),\r\n [\r\n value,\r\n selectItem,\r\n removeItem,\r\n clearSelection,\r\n searchValue,\r\n setSearchValueState,\r\n isOpen,\r\n setIsOpenState,\r\n activeId,\r\n refs.setReference,\r\n refs.setFloating,\r\n hasOptions,\r\n setHasOptionsCallback,\r\n floatingStyles,\r\n listboxId,\r\n inputId,\r\n isMulti,\r\n isDisabled,\r\n isInvalid,\r\n isLoading,\r\n size,\r\n variant,\r\n filter,\r\n isFiltering,\r\n pendingHighlight,\r\n openWithHighlight,\r\n ariaDescribedBy,\r\n isRequired,\r\n name,\r\n registerItem,\r\n updateItemVisibility,\r\n placeholder,\r\n isPositioned,\r\n ]\r\n );\r\n\r\n const rootClasses = classNames(\r\n \"cl-combobox\",\r\n `cl-combobox--${size}`,\r\n `cl-combobox--${variant}`,\r\n className\r\n );\r\n\r\n const mergedRootRef = useMergeRefs(ref, refs.setReference);\r\n\r\n return (\r\n <ComboboxContext.Provider value={contextValue}>\r\n <div ref={mergedRootRef} className={rootClasses} {...rest}>\r\n {children ?? (\r\n <>\r\n <ComboboxControl>\r\n {isMulti && Array.isArray(value) && value.length > 0 && (\r\n <div className=\"cl-combobox__tags\">\r\n {value.map((val) => {\r\n const opt = options?.find((o) => o.value === val);\r\n return (\r\n <ComboboxTag key={val} value={val}>\r\n {opt?.label ?? val}\r\n </ComboboxTag>\r\n );\r\n })}\r\n </div>\r\n )}\r\n <ComboboxInput placeholder={placeholder} />\r\n <ComboboxActions>\r\n <ComboboxClear />\r\n <ComboboxTrigger />\r\n </ComboboxActions>\r\n </ComboboxControl>\r\n <ComboboxContent>\r\n <ComboboxEmpty>No results found.</ComboboxEmpty>\r\n {options?.map((opt) => (\r\n <ComboboxItem\r\n key={opt.value}\r\n value={opt.value}\r\n isDisabled={opt.disabled}\r\n >\r\n {opt.label ?? opt.value}\r\n </ComboboxItem>\r\n ))}\r\n </ComboboxContent>\r\n </>\r\n )}\r\n </div>\r\n </ComboboxContext.Provider>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 2. ComboboxControl\r\n ========================================================================= */\r\n\r\nexport const ComboboxControl = React.forwardRef<HTMLDivElement, ComboboxControlProps>(\r\n function ComboboxControl(props, ref) {\r\n const ctx = useComboboxContext();\r\n const { asChild = false, className, children, ...rest } = props;\r\n const combinedRef = useMergeRefs(ref, ctx.controlRef);\r\n\r\n const controlClasses = classNames(\"cl-combobox__control\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={combinedRef}\r\n data-disabled={ctx.isDisabled ? \"true\" : undefined}\r\n data-invalid={ctx.isInvalid ? \"true\" : undefined}\r\n className={controlClasses}\r\n {...rest}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={combinedRef}\r\n data-disabled={ctx.isDisabled ? \"true\" : undefined}\r\n data-invalid={ctx.isInvalid ? \"true\" : undefined}\r\n className={controlClasses}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 3. ComboboxInput\r\n ========================================================================= */\r\n\r\nexport const ComboboxInput = React.forwardRef<HTMLInputElement, ComboboxInputProps>(\r\n function ComboboxInput(props, ref) {\r\n const ctx = React.useContext(ComboboxContext);\r\n if (!ctx) throw new Error(\"ComboboxInput must be used within Combobox\");\r\n\r\n const {\r\n asChild = false,\r\n className,\r\n onChange,\r\n onKeyDown,\r\n onFocus,\r\n onBlur,\r\n onClick,\r\n disabled: disabledProp,\r\n placeholder,\r\n value: inputValProp,\r\n ...rest\r\n } = props;\r\n\r\n const isDisabled = disabledProp ?? ctx.isDisabled;\r\n\r\n const getVisibleOptions = () => {\r\n const container = ctx.contentElementRef.current;\r\n if (!container) return [];\r\n return Array.from(\r\n container.querySelectorAll<HTMLElement>(\r\n '[role=\"option\"]:not([aria-disabled=\"true\"])'\r\n )\r\n );\r\n };\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n if (isDisabled) return;\r\n const nextQuery = e.target.value;\r\n ctx.setIsFiltering(true);\r\n ctx.setSearchValue(nextQuery);\r\n if (!ctx.isOpen) {\r\n ctx.setIsOpen(true);\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (isDisabled) return;\r\n\r\n const options = getVisibleOptions();\r\n\r\n switch (e.key) {\r\n case \"ArrowDown\": {\r\n e.preventDefault();\r\n if (!ctx.isOpen) {\r\n ctx.openWithHighlight(ctx.value && !ctx.isMulti ? \"selected\" : \"first\");\r\n break;\r\n }\r\n if (options.length > 0) {\r\n const currentIndex = options.findIndex((opt) => opt.id === ctx.activeId);\r\n const nextIndex =\r\n currentIndex === -1 || currentIndex === options.length - 1\r\n ? 0\r\n : currentIndex + 1;\r\n const target = options[nextIndex];\r\n if (target) {\r\n ctx.setActiveId(target.id);\r\n if (ctx.contentElementRef.current) {\r\n scrollItemIntoView(ctx.contentElementRef.current, target);\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case \"ArrowUp\": {\r\n e.preventDefault();\r\n if (!ctx.isOpen) {\r\n ctx.openWithHighlight(ctx.value && !ctx.isMulti ? \"selected\" : \"last\");\r\n break;\r\n }\r\n if (options.length > 0) {\r\n const currentIndex = options.findIndex((opt) => opt.id === ctx.activeId);\r\n const prevIndex =\r\n currentIndex <= 0 ? options.length - 1 : currentIndex - 1;\r\n const target = options[prevIndex];\r\n if (target) {\r\n ctx.setActiveId(target.id);\r\n if (ctx.contentElementRef.current) {\r\n scrollItemIntoView(ctx.contentElementRef.current, target);\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case \"Home\": {\r\n if (ctx.isOpen && options.length > 0) {\r\n e.preventDefault();\r\n const target = options[0];\r\n if (target) {\r\n ctx.setActiveId(target.id);\r\n if (ctx.contentElementRef.current) {\r\n scrollItemIntoView(ctx.contentElementRef.current, target);\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case \"End\": {\r\n if (ctx.isOpen && options.length > 0) {\r\n e.preventDefault();\r\n const target = options[options.length - 1];\r\n if (target) {\r\n ctx.setActiveId(target.id);\r\n if (ctx.contentElementRef.current) {\r\n scrollItemIntoView(ctx.contentElementRef.current, target);\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case \"Enter\": {\r\n if (ctx.isOpen && ctx.activeId) {\r\n e.preventDefault();\r\n const activeEl = document.getElementById(ctx.activeId);\r\n if (activeEl && activeEl.getAttribute(\"aria-disabled\") !== \"true\") {\r\n const val = activeEl.getAttribute(\"data-value\") || \"\";\r\n const text =\r\n activeEl.getAttribute(\"data-label\") ||\r\n activeEl.textContent ||\r\n val;\r\n ctx.selectItem(val, text);\r\n }\r\n }\r\n break;\r\n }\r\n\r\n case \"Escape\": {\r\n if (ctx.isOpen) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n ctx.setIsOpen(false);\r\n ctx.setActiveId(null);\r\n }\r\n break;\r\n }\r\n\r\n case \"Tab\": {\r\n if (ctx.isOpen) {\r\n ctx.setIsOpen(false);\r\n ctx.setActiveId(null);\r\n }\r\n break;\r\n }\r\n\r\n case \"Backspace\": {\r\n if (\r\n ctx.isMulti &&\r\n !ctx.searchValue &&\r\n Array.isArray(ctx.value) &&\r\n ctx.value.length > 0\r\n ) {\r\n const lastVal = ctx.value[ctx.value.length - 1];\r\n ctx.removeItem(lastVal);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n onKeyDown?.(e);\r\n };\r\n\r\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\r\n onFocus?.(e);\r\n };\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\r\n onBlur?.(e);\r\n };\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\r\n if (isDisabled) return;\r\n if (!ctx.isOpen) {\r\n ctx.openWithHighlight(\"selected\");\r\n if (!ctx.isMulti && ctx.value) {\r\n ctx.inputRef.current?.select();\r\n }\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n const combinedRef = (node: HTMLInputElement | null) => {\r\n ctx.inputRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n };\r\n\r\n const inputValue =\r\n inputValProp !== undefined ? inputValProp : ctx.searchValue;\r\n\r\n const resolvedPlaceholder =\r\n placeholder !== undefined ? placeholder : ctx.placeholder;\r\n\r\n const inputClasses = classNames(\"cl-combobox__input\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n {...({\r\n ref: combinedRef,\r\n role: \"combobox\",\r\n \"aria-autocomplete\": \"list\",\r\n \"aria-expanded\": ctx.isOpen,\r\n \"aria-controls\": ctx.listboxId,\r\n \"aria-activedescendant\": ctx.activeId ?? undefined,\r\n \"aria-haspopup\": \"listbox\",\r\n \"aria-invalid\": ctx.isInvalid || undefined,\r\n \"aria-disabled\": isDisabled || undefined,\r\n \"aria-busy\": ctx.isLoading || undefined,\r\n \"aria-describedby\": ctx.ariaDescribedBy,\r\n \"aria-required\": ctx.isRequired || undefined,\r\n name: ctx.name,\r\n required: ctx.isRequired || undefined,\r\n id: ctx.inputId,\r\n autoComplete: \"off\",\r\n spellCheck: \"false\",\r\n value: inputValue,\r\n onChange: handleChange,\r\n onKeyDown: handleKeyDown,\r\n onFocus: handleFocus,\r\n onBlur: handleBlur,\r\n onClick: handleClick,\r\n placeholder: resolvedPlaceholder,\r\n className: inputClasses,\r\n ...rest,\r\n } as any)}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <input\r\n ref={combinedRef}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-expanded={ctx.isOpen}\r\n aria-controls={ctx.listboxId}\r\n aria-activedescendant={ctx.activeId ?? undefined}\r\n aria-haspopup=\"listbox\"\r\n aria-invalid={ctx.isInvalid || undefined}\r\n aria-disabled={isDisabled || undefined}\r\n aria-busy={ctx.isLoading || undefined}\r\n aria-describedby={ctx.ariaDescribedBy}\r\n aria-required={ctx.isRequired || undefined}\r\n name={ctx.name}\r\n required={ctx.isRequired || undefined}\r\n disabled={isDisabled}\r\n id={ctx.inputId}\r\n autoComplete=\"off\"\r\n spellCheck=\"false\"\r\n value={inputValue}\r\n onChange={handleChange}\r\n onKeyDown={handleKeyDown}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n onClick={handleClick}\r\n placeholder={resolvedPlaceholder}\r\n className={inputClasses}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 3b. ComboboxActions\r\n ========================================================================= */\r\n\r\nexport const ComboboxActions = React.forwardRef<HTMLDivElement, ComboboxActionsProps>(\r\n function ComboboxActions(props, ref) {\r\n const { asChild = false, className, children, ...rest } = props;\r\n const actionClasses = classNames(\"cl-combobox__actions\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot ref={ref} className={actionClasses} {...rest}>\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <div ref={ref} className={actionClasses} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 4. ComboboxTrigger\r\n ========================================================================= */\r\n\r\nexport const ComboboxTrigger = React.forwardRef<HTMLButtonElement, ComboboxTriggerProps>(\r\n function ComboboxTrigger(props, ref) {\r\n const ctx = useComboboxContext();\r\n const {\r\n asChild = false,\r\n className,\r\n onClick,\r\n children,\r\n disabled: disabledProp,\r\n ...rest\r\n } = props;\r\n\r\n const isDisabled = disabledProp ?? ctx.isDisabled;\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (isDisabled) return;\r\n if (ctx.isOpen) {\r\n ctx.setIsOpen(false);\r\n } else {\r\n ctx.openWithHighlight(\"selected\");\r\n }\r\n if (ctx.inputRef.current) {\r\n ctx.inputRef.current.focus();\r\n }\r\n onClick?.(e);\r\n };\r\n\r\n const triggerClasses = classNames(\"cl-combobox__trigger\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={ref}\r\n type=\"button\"\r\n tabIndex={-1}\r\n aria-label=\"Toggle options\"\r\n data-state={ctx.isOpen ? \"open\" : \"closed\"}\r\n aria-disabled={isDisabled || undefined}\r\n onClick={handleClick}\r\n className={triggerClasses}\r\n {...rest}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n tabIndex={-1}\r\n aria-label=\"Toggle options\"\r\n data-state={ctx.isOpen ? \"open\" : \"closed\"}\r\n disabled={isDisabled}\r\n onClick={handleClick}\r\n className={triggerClasses}\r\n {...rest}\r\n >\r\n {children ?? (\r\n <svg\r\n className=\"cl-combobox__trigger-icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <path d=\"M6 9l6 6 6-6\" />\r\n </svg>\r\n )}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 4. ComboboxPortal\r\n ========================================================================= */\r\n\r\nexport const ComboboxPortal: React.FC<ComboboxPortalProps> = ({\r\n children,\r\n container,\r\n}) => {\r\n return container !== undefined ? (\r\n <Portal container={container}>{children}</Portal>\r\n ) : (\r\n <Portal>{children}</Portal>\r\n );\r\n};\r\n\r\n/* =========================================================================\r\n 5. ComboboxContent\r\n ========================================================================= */\r\n\r\nexport const ComboboxContent = React.forwardRef<HTMLDivElement, ComboboxContentProps>(\r\n function ComboboxContent(props, ref) {\r\n const ctx = React.useContext(ComboboxContext);\r\n if (!ctx) throw new Error(\"ComboboxContent must be used within Combobox\");\r\n\r\n const { asChild = false, className, style, children, ...rest } = props;\r\n\r\n const combinedRef = (node: HTMLDivElement | null) => {\r\n ctx.contentRef(node);\r\n ctx.contentElementRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n };\r\n\r\n // Keep track of visible option count and process pendingHighlight\r\n React.useLayoutEffect(() => {\r\n if (ctx.isOpen && ctx.contentElementRef.current) {\r\n const container = ctx.contentElementRef.current;\r\n const allOptions = Array.from(\r\n container.querySelectorAll<HTMLElement>('[role=\"option\"]')\r\n );\r\n const enabledOptions = allOptions.filter(\r\n (el) => el.getAttribute(\"aria-disabled\") !== \"true\"\r\n );\r\n\r\n ctx.setHasOptions(allOptions.length > 0);\r\n\r\n if (ctx.pendingHighlight) {\r\n let targetEl: HTMLElement | null = null;\r\n if (ctx.pendingHighlight === \"first\" && enabledOptions.length > 0) {\r\n targetEl = enabledOptions[0] ?? null;\r\n } else if (ctx.pendingHighlight === \"last\" && enabledOptions.length > 0) {\r\n targetEl = enabledOptions[enabledOptions.length - 1] ?? null;\r\n } else if (ctx.pendingHighlight === \"selected\") {\r\n const selectedEl = enabledOptions.find(\r\n (el) => el.getAttribute(\"aria-selected\") === \"true\"\r\n );\r\n targetEl = selectedEl ?? (enabledOptions.length > 0 ? enabledOptions[0] ?? null : null);\r\n }\r\n\r\n if (targetEl) {\r\n ctx.setActiveId(targetEl.id);\r\n scrollItemIntoView(container, targetEl);\r\n }\r\n ctx.setPendingHighlight(null);\r\n }\r\n }\r\n });\r\n\r\n if (!ctx.isOpen) {\r\n return null;\r\n }\r\n\r\n const contentClasses = classNames(\"cl-combobox__content\", className);\r\n const mergedStyles: React.CSSProperties = {\r\n ...ctx.floatingStyles,\r\n ...style,\r\n };\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={combinedRef}\r\n role=\"listbox\"\r\n id={ctx.listboxId}\r\n aria-labelledby={ctx.inputId}\r\n aria-multiselectable={ctx.isMulti ? true : undefined}\r\n aria-busy={ctx.isLoading ? true : undefined}\r\n tabIndex={-1}\r\n data-state=\"open\"\r\n data-positioned={ctx.isPositioned ? \"true\" : undefined}\r\n style={mergedStyles}\r\n className={contentClasses}\r\n {...rest}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={combinedRef}\r\n role=\"listbox\"\r\n id={ctx.listboxId}\r\n aria-labelledby={ctx.inputId}\r\n aria-multiselectable={ctx.isMulti ? true : undefined}\r\n aria-busy={ctx.isLoading ? true : undefined}\r\n tabIndex={-1}\r\n data-state=\"open\"\r\n data-positioned={ctx.isPositioned ? \"true\" : undefined}\r\n style={mergedStyles}\r\n className={contentClasses}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 6. ComboboxItem\r\n ========================================================================= */\r\n\r\nexport const ComboboxItem = React.forwardRef<HTMLDivElement, ComboboxItemProps>(\r\n function ComboboxItem(props, ref) {\r\n const ctx = React.useContext(ComboboxContext);\r\n if (!ctx) throw new Error(\"ComboboxItem must be used within Combobox\");\r\n\r\n const {\r\n value: itemVal,\r\n label,\r\n isDisabled: itemDisabled = false,\r\n asChild = false,\r\n className,\r\n children,\r\n onClick,\r\n onMouseEnter,\r\n ...rest\r\n } = props;\r\n\r\n const itemId = `${ctx.listboxId}-opt-${encodeURIComponent(itemVal)}`;\r\n const itemRef = React.useRef<HTMLDivElement | null>(null);\r\n\r\n // Determine string text for search filtering\r\n const itemText = React.useMemo(() => {\r\n if (label) return label;\r\n if (typeof children === \"string\") return children;\r\n if (typeof children === \"number\") return String(children);\r\n return itemVal;\r\n }, [label, children, itemVal]);\r\n\r\n // Check match against current search query\r\n const isVisible = React.useMemo(() => {\r\n if (ctx.filter === false) return true;\r\n if (!ctx.isFiltering && !ctx.isMulti) return true;\r\n return ctx.filter(itemVal, itemText, ctx.searchValue);\r\n }, [ctx.filter, ctx.isFiltering, ctx.isMulti, itemVal, itemText, ctx.searchValue]);\r\n\r\n // Check selection state\r\n const isSelected = React.useMemo(() => {\r\n if (ctx.isMulti && Array.isArray(ctx.value)) {\r\n return ctx.value.includes(itemVal);\r\n }\r\n return ctx.value === itemVal;\r\n }, [ctx.isMulti, ctx.value, itemVal]);\r\n\r\n const isHighlighted = ctx.activeId === itemId;\r\n\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (itemDisabled || ctx.isDisabled) return;\r\n ctx.selectItem(itemVal, itemText);\r\n onClick?.(e);\r\n };\r\n\r\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\r\n if (!itemDisabled && !ctx.isDisabled) {\r\n ctx.setActiveId(itemId);\r\n }\r\n onMouseEnter?.(e);\r\n };\r\n\r\n const combinedRef = (node: HTMLDivElement | null) => {\r\n itemRef.current = node;\r\n if (typeof ref === \"function\") {\r\n ref(node);\r\n } else if (ref) {\r\n ref.current = node;\r\n }\r\n };\r\n\r\n const itemClasses = classNames(\"cl-combobox__item\", className);\r\n\r\n if (asChild) {\r\n return (\r\n <Slot\r\n ref={combinedRef}\r\n role=\"option\"\r\n id={itemId}\r\n data-value={itemVal}\r\n data-label={itemText}\r\n aria-selected={isSelected}\r\n aria-disabled={itemDisabled || undefined}\r\n data-highlighted={isHighlighted ? \"true\" : undefined}\r\n data-disabled={itemDisabled ? \"true\" : undefined}\r\n data-state={isSelected ? \"checked\" : \"unchecked\"}\r\n onClick={handleClick}\r\n onMouseEnter={handleMouseEnter}\r\n className={itemClasses}\r\n {...rest}\r\n >\r\n {children}\r\n </Slot>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={combinedRef}\r\n role=\"option\"\r\n id={itemId}\r\n data-value={itemVal}\r\n data-label={itemText}\r\n aria-selected={isSelected}\r\n aria-disabled={itemDisabled || undefined}\r\n data-highlighted={isHighlighted ? \"true\" : undefined}\r\n data-disabled={itemDisabled ? \"true\" : undefined}\r\n data-state={isSelected ? \"checked\" : \"unchecked\"}\r\n onClick={handleClick}\r\n onMouseEnter={handleMouseEnter}\r\n className={itemClasses}\r\n {...rest}\r\n >\r\n <span>{children}</span>\r\n {isSelected && (\r\n <span className=\"cl-combobox__item-indicator\" aria-hidden=\"true\">\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"14\"\r\n height=\"14\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 7. ComboboxGroup & ComboboxGroupLabel\r\n ========================================================================= */\r\n\r\nexport const ComboboxGroupLabel = React.forwardRef<\r\n HTMLDivElement,\r\n ComboboxGroupLabelProps\r\n>(function ComboboxGroupLabel(props, ref) {\r\n const { className, children, ...rest } = props;\r\n return (\r\n <div\r\n ref={ref}\r\n className={classNames(\"cl-combobox__group-heading\", className)}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nexport const ComboboxGroup = React.forwardRef<HTMLDivElement, ComboboxGroupProps>(\r\n function ComboboxGroup(props, ref) {\r\n const { heading, className, children, ...rest } = props;\r\n const headingId = React.useId();\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n aria-labelledby={heading ? headingId : undefined}\r\n className={classNames(\"cl-combobox__group\", className)}\r\n {...rest}\r\n >\r\n {heading && (\r\n <div id={headingId} className=\"cl-combobox__group-heading\">\r\n {heading}\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 8. ComboboxEmpty\r\n ========================================================================= */\r\n\r\nexport const ComboboxEmpty = React.forwardRef<HTMLDivElement, ComboboxEmptyProps>(\r\n function ComboboxEmpty(props, ref) {\r\n const ctx = React.useContext(ComboboxContext);\r\n if (!ctx) throw new Error(\"ComboboxEmpty must be used within Combobox\");\r\n const { className, children, ...rest } = props;\r\n\r\n // Show only when no items are visible and not in loading state\r\n if (ctx.hasOptions || ctx.isLoading) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"presentation\"\r\n className={classNames(\"cl-combobox__empty\", className)}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 9. ComboboxTag\r\n ========================================================================= */\r\n\r\nexport const ComboboxTag = React.forwardRef<HTMLSpanElement, ComboboxTagProps>(\r\n function ComboboxTag(props, ref) {\r\n const ctx = useComboboxContext();\r\n const {\r\n value: tagVal,\r\n onRemove,\r\n isDisabled: disabledProp,\r\n className,\r\n children,\r\n ...rest} = props;\r\n\r\n const isDisabled = disabledProp ?? ctx.isDisabled;\r\n\r\n const handleRemove = (\r\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>\r\n ) => {\r\n e.stopPropagation();\r\n if (isDisabled) return;\r\n if (onRemove) {\r\n onRemove();\r\n } else {\r\n ctx.removeItem(tagVal);\r\n }\r\n ctx.inputRef.current?.focus();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleRemove(e);\r\n }\r\n };\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={classNames(\"cl-combobox__tag\", className)}\r\n {...rest}\r\n >\r\n <span className=\"cl-combobox__tag-label\">{children}</span>\r\n <button\r\n type=\"button\"\r\n tabIndex={isDisabled ? -1 : 0}\r\n aria-label={`Remove ${typeof children === \"string\" ? children : tagVal}`}\r\n className=\"cl-combobox__tag-remove\"\r\n disabled={isDisabled}\r\n onClick={handleRemove}\r\n onKeyDown={handleKeyDown}\r\n onMouseDown={(e) => e.preventDefault()}\r\n >\r\n ×\r\n </button>\r\n </span>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n 10. ComboboxClear\r\n ========================================================================= */\r\n\r\nexport const ComboboxClear = React.forwardRef<HTMLButtonElement, ComboboxClearProps>(\r\n function ComboboxClear(props, ref) {\r\n const ctx = useComboboxContext();\r\n const {\r\n className,\r\n onClick,\r\n onKeyDown,\r\n children,\r\n disabled: disabledProp,\r\n tabIndex = 0,\r\n ...rest\r\n } = props;\r\n\r\n const isDisabled = disabledProp ?? ctx.isDisabled;\r\n\r\n const hasValue =\r\n ctx.isMulti\r\n ? Array.isArray(ctx.value) && ctx.value.length > 0\r\n : Boolean(ctx.value || ctx.searchValue);\r\n\r\n if (!hasValue) {\r\n return null;\r\n }\r\n\r\n const handleClick = (\r\n e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLButtonElement>\r\n ) => {\r\n e.stopPropagation();\r\n if (isDisabled) return;\r\n ctx.clearSelection();\r\n ctx.inputRef.current?.focus();\r\n onClick?.(e as React.MouseEvent<HTMLButtonElement>);\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleClick(e);\r\n }\r\n onKeyDown?.(e);\r\n };\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type=\"button\"\r\n tabIndex={isDisabled ? -1 : tabIndex}\r\n aria-label=\"Clear selection\"\r\n className={classNames(\"cl-combobox__clear\", className)}\r\n disabled={isDisabled}\r\n onClick={handleClick}\r\n onKeyDown={handleKeyDown}\r\n onMouseDown={(e) => e.preventDefault()}\r\n {...rest}\r\n >\r\n {children ?? (\r\n <svg\r\n viewBox=\"0 0 24 24\"\r\n width=\"14\"\r\n height=\"14\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n >\r\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\r\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\r\n </svg>\r\n )}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\n/* =========================================================================\r\n Compound Object & Aliases\r\n ========================================================================= */\r\n\r\nexport interface ComboboxComponent\r\n extends React.ForwardRefExoticComponent<\r\n ComboboxProps & React.RefAttributes<HTMLDivElement>\r\n > {\r\n Root: typeof ComboboxRoot;\r\n Control: typeof ComboboxControl;\r\n Input: typeof ComboboxInput;\r\n Actions: typeof ComboboxActions;\r\n Trigger: typeof ComboboxTrigger;\r\n Portal: typeof ComboboxPortal;\r\n Content: typeof ComboboxContent;\r\n Item: typeof ComboboxItem;\r\n Group: typeof ComboboxGroup;\r\n GroupLabel: typeof ComboboxGroupLabel;\r\n Empty: typeof ComboboxEmpty;\r\n Tag: typeof ComboboxTag;\r\n Clear: typeof ComboboxClear;\r\n}\r\n\r\nexport const Combobox = ComboboxRoot as ComboboxComponent;\r\nCombobox.Root = ComboboxRoot;\r\nCombobox.Control = ComboboxControl;\r\nCombobox.Input = ComboboxInput;\r\nCombobox.Actions = ComboboxActions;\r\nCombobox.Trigger = ComboboxTrigger;\r\nCombobox.Portal = ComboboxPortal;\r\nCombobox.Content = ComboboxContent;\r\nCombobox.Item = ComboboxItem;\r\nCombobox.Group = ComboboxGroup;\r\nCombobox.GroupLabel = ComboboxGroupLabel;\r\nCombobox.Empty = ComboboxEmpty;\r\nCombobox.Tag = ComboboxTag;\r\nCombobox.Clear = ComboboxClear;\r\n\r\nexport const Autocomplete = Combobox;\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport type {\n DialogBodyProps,\n DialogCloseProps,\n DialogContentProps,\n DialogDescriptionProps,\n DialogFooterProps,\n DialogHeaderProps,\n DialogOverlayProps,\n DialogPortalProps,\n DialogRootProps,\n DialogSize,\n DialogTitleProps,\n DialogTriggerProps,\n} from \"./Dialog.types\";\n\ninterface DialogContextValue {\n isOpen: boolean;\n onOpen: () => void;\n onClose: () => void;\n closeOnEsc: boolean;\n closeOnOverlayClick: boolean;\n initialFocusRef?: React.RefObject<HTMLElement | null> | undefined;\n finalFocusRef?: React.RefObject<HTMLElement | null> | undefined;\n size: DialogSize;\n isCentered: boolean;\n titleId: string;\n setTitleId: (id: string) => void;\n descriptionId: string;\n setDescriptionId: (id: string) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst DialogContext = React.createContext<DialogContextValue | null>(null);\n\nfunction useDialogContext(componentName: string): DialogContextValue {\n const context = React.useContext(DialogContext);\n if (!context) {\n throw new Error(\n `<Dialog.${componentName}> must be used within a <Dialog.Root> or <Dialog> component.`,\n );\n }\n return context;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n// Reference-counted body scroll lock manager with scrollbar compensation\nlet activeScrollLockCount = 0;\nlet originalBodyOverflow = \"\";\nlet originalBodyPaddingRight = \"\";\n\nexport function acquireBodyScrollLock(): void {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n if (activeScrollLockCount === 0) {\n originalBodyOverflow = document.body.style.overflow;\n originalBodyPaddingRight = document.body.style.paddingRight;\n\n // Calculate vertical scrollbar width to prevent horizontal layout shift\n const scrollbarWidth =\n window.innerWidth - document.documentElement.clientWidth;\n\n if (scrollbarWidth > 0) {\n const computedPaddingRight =\n parseFloat(window.getComputedStyle(document.body).paddingRight) || 0;\n document.body.style.paddingRight = `${computedPaddingRight + scrollbarWidth}px`;\n }\n\n document.body.style.overflow = \"hidden\";\n }\n\n activeScrollLockCount++;\n}\n\nexport function releaseBodyScrollLock(): void {\n if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n return;\n }\n\n activeScrollLockCount = Math.max(0, activeScrollLockCount - 1);\n\n if (activeScrollLockCount === 0) {\n document.body.style.overflow = originalBodyOverflow;\n document.body.style.paddingRight = originalBodyPaddingRight;\n originalBodyOverflow = \"\";\n originalBodyPaddingRight = \"\";\n }\n}\n\n/** @internal Reset helper for testing */\nexport function __resetBodyScrollLockForTesting(): void {\n activeScrollLockCount = 0;\n originalBodyOverflow = \"\";\n originalBodyPaddingRight = \"\";\n}\n\n/**\n * DialogRoot component - manages controlled/uncontrolled visibility and dialog context.\n */\nexport const DialogRoot: React.FC<DialogRootProps> = ({\n isOpen: isOpenProp,\n defaultOpen = false,\n onClose: onCloseProp,\n closeOnEsc = true,\n closeOnOverlayClick = true,\n initialFocusRef,\n finalFocusRef,\n size = \"md\",\n isCentered = true,\n children,\n}) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n });\n\n const [titleId, setTitleId] = React.useState<string>(\"\");\n const [descriptionId, setDescriptionId] = React.useState<string>(\"\");\n const triggerRef = React.useRef<HTMLElement | null>(null);\n\n const handleOpen = React.useCallback(() => {\n setIsOpen(true);\n }, [setIsOpen]);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n onCloseProp?.();\n }, [setIsOpen, onCloseProp]);\n\n const contextValue = React.useMemo<DialogContextValue>(\n () => ({\n isOpen: !!isOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n closeOnEsc,\n closeOnOverlayClick,\n initialFocusRef,\n finalFocusRef,\n size,\n isCentered,\n titleId,\n setTitleId,\n descriptionId,\n setDescriptionId,\n triggerRef,\n }),\n [\n isOpen,\n handleOpen,\n handleClose,\n closeOnEsc,\n closeOnOverlayClick,\n initialFocusRef,\n finalFocusRef,\n size,\n isCentered,\n titleId,\n descriptionId,\n ],\n );\n\n return (\n <DialogContext.Provider value={contextValue}>\n {children}\n </DialogContext.Provider>\n );\n};\nDialogRoot.displayName = \"Dialog.Root\";\n\n/**\n * DialogTrigger component - wraps or renders a button that opens the dialog.\n */\nexport const DialogTrigger = React.forwardRef<HTMLElement, DialogTriggerProps>(\n ({ asChild = false, onClick, children, ...props }, forwardedRef) => {\n const { onOpen, triggerRef } = useDialogContext(\"Trigger\");\n const mergedRef = useMergeRefs(triggerRef, forwardedRef);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onOpen();\n }\n };\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={mergedRef as React.Ref<HTMLButtonElement>}\n type=\"button\"\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\nDialogTrigger.displayName = \"Dialog.Trigger\";\n\n/**\n * DialogPortal component - mounts dialog children into document.body or container.\n */\nexport const DialogPortal: React.FC<DialogPortalProps> = ({\n container,\n children,\n}) => {\n const { isOpen } = useDialogContext(\"Portal\");\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal {...(container !== undefined ? { container } : {})}>\n {children}\n </Portal>\n );\n};\nDialogPortal.displayName = \"Dialog.Portal\";\n\n/**\n * DialogOverlay component - background backdrop with static CSS centering.\n */\nexport const DialogOverlay = React.forwardRef<\n HTMLDivElement,\n DialogOverlayProps\n>(\n (\n { asChild = false, className, onClick, children, ...props },\n forwardedRef,\n ) => {\n const { onClose, closeOnOverlayClick, isCentered } =\n useDialogContext(\"Overlay\");\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (\n !e.defaultPrevented &&\n closeOnOverlayClick &&\n e.target === e.currentTarget\n ) {\n onClose();\n }\n };\n\n const classNames = [\n \"cl-dialog__overlay\",\n !isCentered && \"cl-dialog__overlay--top\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={forwardedRef}\n className={classNames}\n onClick={handleClick}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={forwardedRef}\n className={classNames}\n onClick={handleClick}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDialogOverlay.displayName = \"Dialog.Overlay\";\n\n/**\n * DialogContent component - main dialog window with focus trap and scroll locking.\n */\nexport const DialogContent = React.forwardRef<\n HTMLDivElement,\n DialogContentProps\n>(\n (\n { asChild = false, className, children, onKeyDown, ...props },\n forwardedRef,\n ) => {\n const {\n isOpen,\n onClose,\n closeOnEsc,\n size,\n isCentered,\n titleId,\n descriptionId,\n initialFocusRef,\n finalFocusRef,\n triggerRef,\n } = useDialogContext(\"Content\");\n\n const internalRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(internalRef, forwardedRef);\n const prevFocusedRef = React.useRef<HTMLElement | null>(null);\n\n // Body scroll lock lifecycle (ref-counted with scrollbar compensation)\n React.useEffect(() => {\n if (!isOpen) return;\n\n acquireBodyScrollLock();\n\n return () => {\n releaseBodyScrollLock();\n };\n }, [isOpen]);\n\n // Focus management lifecycle\n React.useEffect(() => {\n if (!isOpen) return;\n\n // Store previous focused element before opening\n if (typeof document !== \"undefined\") {\n prevFocusedRef.current = document.activeElement as HTMLElement | null;\n }\n\n // Initial focus\n const frameId = requestAnimationFrame(() => {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else if (internalRef.current) {\n const focusables =\n internalRef.current.querySelectorAll<HTMLElement>(\n FOCUSABLE_SELECTOR,\n );\n if (focusables.length > 0) {\n focusables[0]?.focus();\n } else {\n internalRef.current.focus();\n }\n }\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n // Restore focus to trigger or finalFocusRef\n const elementToFocus =\n finalFocusRef?.current ??\n triggerRef.current ??\n prevFocusedRef.current;\n if (elementToFocus && typeof elementToFocus.focus === \"function\") {\n elementToFocus.focus();\n }\n };\n }, [isOpen, initialFocusRef, finalFocusRef, triggerRef]);\n\n // Keyboard trap and Escape listener\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"Escape\" && closeOnEsc) {\n e.stopPropagation();\n onClose();\n return;\n }\n\n if (e.key === \"Tab\" && internalRef.current) {\n const focusables = Array.from(\n internalRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter(\n (el) =>\n !el.hasAttribute(\"disabled\") &&\n el.getAttribute(\"aria-hidden\") !== \"true\",\n );\n\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const firstFocusable = focusables[0];\n const lastFocusable = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (\n document.activeElement === firstFocusable ||\n document.activeElement === internalRef.current\n ) {\n e.preventDefault();\n lastFocusable?.focus();\n }\n } else {\n if (document.activeElement === lastFocusable) {\n e.preventDefault();\n firstFocusable?.focus();\n }\n }\n }\n };\n\n const classNames = [\n \"cl-dialog__content\",\n `cl-dialog__content--${size}`,\n !isCentered && \"cl-dialog__content--top\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n const ariaAttributes = {\n role: \"dialog\",\n \"aria-modal\": true,\n ...(titleId ? { \"aria-labelledby\": titleId } : {}),\n ...(descriptionId ? { \"aria-describedby\": descriptionId } : {}),\n tabIndex: -1,\n };\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n className={classNames}\n onKeyDown={handleKeyDown}\n {...ariaAttributes}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={mergedRef}\n className={classNames}\n onKeyDown={handleKeyDown}\n {...ariaAttributes}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDialogContent.displayName = \"Dialog.Content\";\n\n/**\n * DialogHeader component - header slot containing title, description, or close button.\n */\nexport const DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\"cl-dialog__header\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDialogHeader.displayName = \"Dialog.Header\";\n\n/**\n * DialogTitle component - accessible title that binds aria-labelledby.\n */\nexport const DialogTitle = React.forwardRef<\n HTMLHeadingElement,\n DialogTitleProps\n>(({ asChild = false, id: idProp, className, children, ...props }, ref) => {\n const { setTitleId } = useDialogContext(\"Title\");\n const autoId = React.useId();\n const id = idProp ?? autoId;\n\n React.useEffect(() => {\n setTitleId(id);\n return () => setTitleId(\"\");\n }, [id, setTitleId]);\n\n const classNames = [\"cl-dialog__title\", className].filter(Boolean).join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={ref} id={id} className={classNames} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <h2 ref={ref} id={id} className={classNames} {...props}>\n {children}\n </h2>\n );\n});\nDialogTitle.displayName = \"Dialog.Title\";\n\n/**\n * DialogDescription component - accessible description that binds aria-describedby.\n */\nexport const DialogDescription = React.forwardRef<\n HTMLParagraphElement,\n DialogDescriptionProps\n>(({ asChild = false, id: idProp, className, children, ...props }, ref) => {\n const { setDescriptionId } = useDialogContext(\"Description\");\n const autoId = React.useId();\n const id = idProp ?? autoId;\n\n React.useEffect(() => {\n setDescriptionId(id);\n return () => setDescriptionId(\"\");\n }, [id, setDescriptionId]);\n\n const classNames = [\"cl-dialog__desc\", className].filter(Boolean).join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={ref} id={id} className={classNames} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <p ref={ref} id={id} className={classNames} {...props}>\n {children}\n </p>\n );\n});\nDialogDescription.displayName = \"Dialog.Description\";\n\n/**\n * DialogBody component - scrollable content body.\n */\nexport const DialogBody = React.forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\"cl-dialog__body\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDialogBody.displayName = \"Dialog.Body\";\n\n/**\n * DialogFooter component - footer slot containing actions.\n */\nexport const DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={[\"cl-dialog__footer\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDialogFooter.displayName = \"Dialog.Footer\";\n\n/**\n * DialogClose component - button that dismisses the dialog when clicked.\n */\nexport const DialogClose = React.forwardRef<\n HTMLButtonElement,\n DialogCloseProps\n>(({ asChild = false, className, onClick, children, ...props }, ref) => {\n const { onClose } = useDialogContext(\"Close\");\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onClose();\n }\n };\n\n const classNames = [\"cl-dialog__close-button\", className]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={ref} className={classNames} onClick={handleClick} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames}\n onClick={handleClick}\n aria-label={props[\"aria-label\"] ?? \"Close dialog\"}\n {...props}\n >\n {children ?? \"×\"}\n </button>\n );\n});\nDialogClose.displayName = \"Dialog.Close\";\n\n/**\n * Compound Dialog export\n */\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Portal: DialogPortal,\n Overlay: DialogOverlay,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\n/**\n * Exact compatibility alias for Modal\n */\nexport const Modal = Dialog;\n","\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport { styled } from \"../../system/styled\";\r\nimport { Slot } from \"../../primitives/Slot\";\r\nimport { classNames } from \"../../utils/classNames\";\r\nimport type { BadgeProps } from \"./Badge.types\";\r\n\r\nconst StyledBadgeRoot = styled(\"span\", {\r\n name: \"ChellaaBadge\",\r\n slot: \"Root\",\r\n shouldForwardProp: (prop) =>\r\n prop !== \"variant\" &&\r\n prop !== \"size\" &&\r\n prop !== \"colorScheme\" &&\r\n prop !== \"isPill\" &&\r\n prop !== \"hasDot\" &&\r\n prop !== \"asChild\",\r\n})({});\r\n\r\n/**\r\n * Badge component - A compact visual indicator communicating status, counts, or categorization.\r\n */\r\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\r\n (\r\n {\r\n variant = \"subtle\",\r\n size = \"md\",\r\n colorScheme = \"neutral\",\r\n isPill = false,\r\n hasDot = false,\r\n asChild = false,\r\n className,\r\n style,\r\n sx,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const badgeClassName = classNames(\r\n \"cl-badge\",\r\n `cl-badge--${variant}`,\r\n `cl-badge--${size}`,\r\n `cl-badge--${colorScheme}`,\r\n isPill && \"cl-badge--pill\",\r\n className\r\n );\r\n\r\n if (asChild) {\r\n return (\r\n <StyledBadgeRoot\r\n as={Slot}\r\n ref={ref}\r\n className={badgeClassName}\r\n style={style}\r\n sx={sx}\r\n {...props}\r\n >\r\n {children}\r\n </StyledBadgeRoot>\r\n );\r\n }\r\n\r\n return (\r\n <StyledBadgeRoot\r\n ref={ref}\r\n className={badgeClassName}\r\n style={style}\r\n sx={sx}\r\n {...props}\r\n >\r\n {hasDot && <span className=\"cl-badge__dot\" aria-hidden=\"true\" />}\r\n {children}\r\n </StyledBadgeRoot>\r\n );\r\n }\r\n);\r\n\r\nBadge.displayName = \"Badge\";\r\n","import * as React from \"react\";\r\nimport type {\r\n TableCaptionProps,\r\n TableCellProps,\r\n TableContainerProps,\r\n TableContextValue,\r\n TableHeaderCellProps,\r\n TableRootProps,\r\n TableRowProps,\r\n TableTbodyProps,\r\n TableTfootProps,\r\n TableTheadProps,\r\n} from \"./Table.types\";\r\n\r\nconst TableContext = React.createContext<TableContextValue>({\r\n size: \"md\",\r\n variant: \"simple\",\r\n isHoverable: false,\r\n});\r\n\r\n/**\r\n * TableRoot component - Container for structured row and column data.\r\n */\r\nexport const TableRoot = React.forwardRef<HTMLTableElement, TableRootProps>(\r\n (\r\n {\r\n variant = \"simple\",\r\n size = \"md\",\r\n isHoverable = false,\r\n isStickyHeader = false,\r\n className,\r\n children,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const classNames = [\r\n \"cl-table\",\r\n `cl-table--${variant}`,\r\n `cl-table--${size}`,\r\n isHoverable && \"cl-table--hoverable\",\r\n isStickyHeader && \"cl-table--sticky-header\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const contextValue = React.useMemo<TableContextValue>(\r\n () => ({\r\n size,\r\n variant,\r\n isHoverable,\r\n }),\r\n [size, variant, isHoverable]\r\n );\r\n\r\n return (\r\n <TableContext.Provider value={contextValue}>\r\n <table ref={ref} className={classNames} {...props}>\r\n {children}\r\n </table>\r\n </TableContext.Provider>\r\n );\r\n }\r\n);\r\nTableRoot.displayName = \"Table.Root\";\r\n\r\n/**\r\n * TableContainer component - Responsive touch scroll container.\r\n */\r\nexport const TableContainer = React.forwardRef<\r\n HTMLDivElement,\r\n TableContainerProps\r\n>(({ bordered = false, className, children, ...props }, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\r\n \"cl-table__container\",\r\n bordered && \"cl-table__container--bordered\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\nTableContainer.displayName = \"Table.Container\";\r\n\r\n/**\r\n * TableCaption component - Programmatic description of table data.\r\n */\r\nexport const TableCaption = React.forwardRef<\r\n HTMLTableCaptionElement,\r\n TableCaptionProps\r\n>(({ placement = \"bottom\", className, children, ...props }, ref) => {\r\n const classNames = [\r\n \"cl-table__caption\",\r\n placement === \"top\" && \"cl-table__caption--top\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <caption ref={ref} className={classNames} {...props}>\r\n {children}\r\n </caption>\r\n );\r\n});\r\nTableCaption.displayName = \"Table.Caption\";\r\n\r\n/**\r\n * TableThead component - Semantic table header section.\r\n */\r\nexport const TableThead = React.forwardRef<\r\n HTMLTableSectionElement,\r\n TableTheadProps\r\n>(({ className, children, ...props }, ref) => {\r\n return (\r\n <thead\r\n ref={ref}\r\n className={[\"cl-table__thead\", className].filter(Boolean).join(\" \")}\r\n {...props}\r\n >\r\n {children}\r\n </thead>\r\n );\r\n});\r\nTableThead.displayName = \"Table.Thead\";\r\n\r\n/**\r\n * TableTbody component - Semantic table body section.\r\n */\r\nexport const TableTbody = React.forwardRef<\r\n HTMLTableSectionElement,\r\n TableTbodyProps\r\n>(({ className, children, ...props }, ref) => {\r\n return (\r\n <tbody\r\n ref={ref}\r\n className={[\"cl-table__tbody\", className].filter(Boolean).join(\" \")}\r\n {...props}\r\n >\r\n {children}\r\n </tbody>\r\n );\r\n});\r\nTableTbody.displayName = \"Table.Tbody\";\r\n\r\n/**\r\n * TableTfoot component - Semantic table footer section.\r\n */\r\nexport const TableTfoot = React.forwardRef<\r\n HTMLTableSectionElement,\r\n TableTfootProps\r\n>(({ className, children, ...props }, ref) => {\r\n return (\r\n <tfoot\r\n ref={ref}\r\n className={[\"cl-table__tfoot\", className].filter(Boolean).join(\" \")}\r\n {...props}\r\n >\r\n {children}\r\n </tfoot>\r\n );\r\n});\r\nTableTfoot.displayName = \"Table.Tfoot\";\r\n\r\n/**\r\n * TableTr component - Semantic table row element.\r\n */\r\nexport const TableTr = React.forwardRef<HTMLTableRowElement, TableRowProps>(\r\n ({ isHoverable: isHoverableProp, isSelected = false, className, children, ...props }, ref) => {\r\n const tableContext = React.useContext(TableContext);\r\n const hoverable = isHoverableProp ?? tableContext.isHoverable;\r\n\r\n const classNames = [\r\n \"cl-table__tr\",\r\n hoverable && \"cl-table__tr--hoverable\",\r\n isSelected && \"cl-table__tr--selected\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <tr ref={ref} className={classNames} {...props}>\r\n {children}\r\n </tr>\r\n );\r\n }\r\n);\r\nTableTr.displayName = \"Table.Tr\";\r\n\r\n/**\r\n * TableTh component - Semantic table header cell with scope=\"col\" default.\r\n */\r\nexport const TableTh = React.forwardRef<\r\n HTMLTableCellElement,\r\n TableHeaderCellProps\r\n>(\r\n (\r\n {\r\n isNumeric = false,\r\n align,\r\n isSortable = false,\r\n sortDirection,\r\n scope = \"col\",\r\n className,\r\n children,\r\n tabIndex,\r\n onClick,\r\n onKeyDown,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const computedAriaSort = isSortable\r\n ? sortDirection === \"asc\"\r\n ? \"ascending\"\r\n : sortDirection === \"desc\"\r\n ? \"descending\"\r\n : \"none\"\r\n : props[\"aria-sort\"];\r\n\r\n const classNames = [\r\n \"cl-table__th\",\r\n isNumeric && \"cl-table__th--numeric\",\r\n align && `cl-table__th--align-${align}`,\r\n isSortable && \"cl-table__th--sortable\",\r\n sortDirection &&\r\n sortDirection !== \"none\" &&\r\n `cl-table__th--sorted-${sortDirection}`,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTableCellElement>) => {\r\n if (isSortable && (e.key === \"Enter\" || e.key === \" \")) {\r\n e.preventDefault();\r\n onClick?.(e as unknown as React.MouseEvent<HTMLTableCellElement>);\r\n }\r\n onKeyDown?.(e);\r\n };\r\n\r\n return (\r\n <th\r\n ref={ref}\r\n scope={scope}\r\n tabIndex={tabIndex ?? (isSortable ? 0 : undefined)}\r\n aria-sort={computedAriaSort}\r\n className={classNames}\r\n onClick={onClick}\r\n onKeyDown={handleKeyDown}\r\n {...props}\r\n >\r\n {children}\r\n </th>\r\n );\r\n }\r\n);\r\nTableTh.displayName = \"Table.Th\";\r\n\r\n/**\r\n * TableTd component - Semantic table data cell with isNumeric and align support.\r\n */\r\nexport const TableTd = React.forwardRef<HTMLTableCellElement, TableCellProps>(\r\n ({ isNumeric = false, align, className, children, ...props }, ref) => {\r\n const classNames = [\r\n \"cl-table__td\",\r\n isNumeric && \"cl-table__td--numeric\",\r\n align && `cl-table__td--align-${align}`,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \");\r\n\r\n return (\r\n <td ref={ref} className={classNames} {...props}>\r\n {children}\r\n </td>\r\n );\r\n }\r\n);\r\nTableTd.displayName = \"Table.Td\";\r\n\r\n/**\r\n * Compound Table component export\r\n */\r\nexport const Table = Object.assign(TableRoot, {\r\n Root: TableRoot,\r\n Container: TableContainer,\r\n Caption: TableCaption,\r\n Thead: TableThead,\r\n Tbody: TableTbody,\r\n Tfoot: TableTfoot,\r\n Tr: TableTr,\r\n Th: TableTh,\r\n Td: TableTd,\r\n});\r\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport type { SpinnerProps } from \"./Spinner.types\";\n\n/**\n * Spinner indicates indeterminate background activity or content loading.\n *\n * @example\n * ```tsx\n * <Spinner size=\"md\" colorScheme=\"primary\" label=\"Loading content...\" />\n * ```\n */\nexport const Spinner = React.forwardRef<SVGSVGElement, SpinnerProps>(\n (\n {\n size = \"md\",\n colorScheme = \"primary\",\n label = \"Loading...\",\n thickness = 3,\n className,\n ...rest\n },\n ref,\n ) => {\n const hasLabel = Boolean(label && label.trim().length > 0);\n\n const a11yProps = hasLabel\n ? {\n role: \"status\",\n \"aria-label\": label,\n }\n : {\n \"aria-hidden\": true as const,\n };\n\n return (\n <svg\n ref={ref}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={classNames(\n \"cl-spinner\",\n `cl-spinner--${size}`,\n `cl-spinner--${colorScheme}`,\n className,\n )}\n {...a11yProps}\n {...rest}\n >\n {hasLabel && <title>{label}</title>}\n {/* Track circle */}\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n className=\"cl-spinner__track\"\n />\n {/* Animated head circle segment */}\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth={thickness}\n strokeDasharray=\"45 35\"\n className=\"cl-spinner__head\"\n />\n </svg>\n );\n },\n);\n\nSpinner.displayName = \"Spinner\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport type { SkeletonProps } from \"./Skeleton.types\";\n\nfunction formatDimension(dim?: string | number): string | undefined {\n if (dim === undefined || dim === null) return undefined;\n if (typeof dim === \"number\") return `${dim}px`;\n return dim;\n}\n\n/**\n * Skeleton displays a placeholder preview of content while data is loading.\n *\n * @example\n * ```tsx\n * <Skeleton variant=\"circular\" width={40} height={40} />\n * <Skeleton variant=\"rectangular\" width=\"100%\" height={200} />\n * <Skeleton isLoaded={!isLoading}><ProfileCard /></Skeleton>\n * ```\n */\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n width,\n height,\n isLoaded = false,\n animation = \"pulse\",\n children,\n className,\n style,\n ...rest\n },\n ref,\n ) => {\n if (isLoaded) {\n return <>{children}</>;\n }\n\n const inlineStyles: React.CSSProperties = {\n ...style,\n width: formatDimension(width) ?? style?.width,\n height: formatDimension(height) ?? style?.height,\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"cl-skeleton\",\n `cl-skeleton--${variant}`,\n `cl-skeleton--${animation}`,\n className,\n )}\n style={inlineStyles}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport type { ProgressProps, ProgressSize } from \"./Progress.types\";\n\nconst CIRCLE_RADIUS = 18;\nconst CIRCUMFERENCE = 2 * Math.PI * CIRCLE_RADIUS; // ~113.097\n\nfunction getStrokeWidth(size: ProgressSize): number {\n switch (size) {\n case \"xs\":\n return 3;\n case \"sm\":\n return 3.5;\n case \"lg\":\n return 5;\n case \"md\":\n default:\n return 4;\n }\n}\n\n/**\n * Progress communicates the status of a deterministic or indeterminate background process.\n *\n * @example\n * ```tsx\n * <Progress value={45} colorScheme=\"primary\" />\n * <Progress variant=\"circular\" value={75} showValueLabel />\n * <Progress variant=\"linear\" hasStripe isAnimated />\n * ```\n */\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n value,\n min = 0,\n max = 100,\n size = \"md\",\n variant = \"linear\",\n colorScheme = \"primary\",\n hasStripe = false,\n isAnimated = false,\n showValueLabel = false,\n valueText,\n className,\n ...rest\n },\n ref,\n ) => {\n const isIndeterminate = value === undefined || isNaN(value);\n\n // Guard against invalid range\n const safeMin = Math.min(min, max);\n const safeMax = Math.max(min, max) === safeMin ? safeMin + 100 : Math.max(min, max);\n\n // Calculate clamped value and percentage\n const clampedValue = isIndeterminate\n ? 0\n : Math.min(Math.max(value as number, safeMin), safeMax);\n const percentage = isIndeterminate\n ? 0\n : ((clampedValue - safeMin) / (safeMax - safeMin)) * 100;\n\n const formattedPercent = `${Math.round(percentage)}%`;\n\n // ARIA Attributes\n const a11yProps: React.HTMLAttributes<HTMLDivElement> = {\n role: \"progressbar\",\n ...(isIndeterminate\n ? {}\n : {\n \"aria-valuemin\": safeMin,\n \"aria-valuemax\": safeMax,\n \"aria-valuenow\": clampedValue,\n \"aria-valuetext\": valueText ?? formattedPercent,\n }),\n };\n\n if (variant === \"circular\") {\n const strokeWidth = getStrokeWidth(size);\n const dashOffset = isIndeterminate\n ? undefined\n : CIRCUMFERENCE - (percentage / 100) * CIRCUMFERENCE;\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"cl-progress\",\n \"cl-progress--circular\",\n `cl-progress--${size}`,\n `cl-progress--${colorScheme}`,\n isIndeterminate && \"cl-progress--indeterminate\",\n className,\n )}\n {...a11yProps}\n {...rest}\n >\n <svg className=\"cl-progress__svg\" viewBox=\"0 0 48 48\">\n <circle\n className=\"cl-progress__circle-track\"\n cx=\"24\"\n cy=\"24\"\n r={CIRCLE_RADIUS}\n strokeWidth={strokeWidth}\n />\n <circle\n className=\"cl-progress__circle-head\"\n cx=\"24\"\n cy=\"24\"\n r={CIRCLE_RADIUS}\n strokeWidth={strokeWidth}\n strokeDasharray={isIndeterminate ? undefined : CIRCUMFERENCE}\n strokeDashoffset={dashOffset}\n />\n </svg>\n {showValueLabel && !isIndeterminate && (\n <span className=\"cl-progress__circular-label\">{formattedPercent}</span>\n )}\n </div>\n );\n }\n\n // Linear Variant\n return (\n <div\n ref={ref}\n className={classNames(\n \"cl-progress\",\n \"cl-progress--linear\",\n `cl-progress--${size}`,\n `cl-progress--${colorScheme}`,\n isIndeterminate && \"cl-progress--indeterminate\",\n className,\n )}\n {...a11yProps}\n {...rest}\n >\n <div className=\"cl-progress__track\">\n <div\n className={classNames(\n \"cl-progress__bar\",\n hasStripe && \"cl-progress__bar--striped\",\n isAnimated && \"cl-progress__bar--animated\",\n isIndeterminate && \"cl-progress__bar--indeterminate\",\n )}\n style={{\n width: isIndeterminate ? undefined : `${percentage}%`,\n }}\n />\n </div>\n {showValueLabel && !isIndeterminate && (\n <span className=\"cl-progress__label\">{formattedPercent}</span>\n )}\n </div>\n );\n },\n);\n\nProgress.displayName = \"Progress\";\n","/**\n * Chellaa React — Pure Date Utilities\n * Zero-dependency, timezone-safe date manipulation strictly operating on local calendar dates.\n */\n\nexport interface CalendarGridDay {\n date: Date;\n dayNumber: number;\n isCurrentMonth: boolean;\n isToday: boolean;\n isPrevMonth: boolean;\n isNextMonth: boolean;\n}\n\n/**\n * Determines whether a given year is a leap year according to Gregorian calendar rules.\n */\nexport function isLeapYear(year: number): boolean {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\n/**\n * Returns the number of days in the specified month (0-indexed: 0 = January, 11 = December).\n */\nexport function getDaysInMonth(year: number, monthIndex: number): number {\n const normalizedMonth = ((monthIndex % 12) + 12) % 12;\n const daysMap = [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n return daysMap[normalizedMonth] ?? 31;\n}\n\n/**\n * Creates a Date instance representing the given year, 0-indexed month, and day in local time.\n */\nexport function createLocalDate(year: number, monthIndex: number, day: number): Date {\n return new Date(year, monthIndex, day, 0, 0, 0, 0);\n}\n\n/**\n * Compares two dates by calendar day (ignoring time components).\n */\nexport function isSameDay(a?: Date | null, b?: Date | null): boolean {\n if (!a || !b) return false;\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\n/**\n * Compares whether two dates fall in the same calendar month and year.\n */\nexport function isSameMonth(a?: Date | null, b?: Date | null): boolean {\n if (!a || !b) return false;\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\n/**\n * Returns true if calendar day `a` is strictly before calendar day `b`.\n */\nexport function isDateBefore(a: Date, b: Date): boolean {\n const da = new Date(a.getFullYear(), a.getMonth(), a.getDate()).getTime();\n const db = new Date(b.getFullYear(), b.getMonth(), b.getDate()).getTime();\n return da < db;\n}\n\n/**\n * Returns true if calendar day `a` is strictly after calendar day `b`.\n */\nexport function isDateAfter(a: Date, b: Date): boolean {\n const da = new Date(a.getFullYear(), a.getMonth(), a.getDate()).getTime();\n const db = new Date(b.getFullYear(), b.getMonth(), b.getDate()).getTime();\n return da > db;\n}\n\n/**\n * Checks whether a date falls within inclusive min and max bounds.\n */\nexport function isDateInRange(\n date: Date,\n minDate?: Date | null,\n maxDate?: Date | null,\n): boolean {\n if (minDate && isDateBefore(date, minDate)) return false;\n if (maxDate && isDateAfter(date, maxDate)) return false;\n return true;\n}\n\n/**\n * Adds or subtracts days from a given date safely.\n */\nexport function addDays(date: Date, amount: number): Date {\n const result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n return result;\n}\n\n/**\n * Adds or subtracts months from a given date, clamping the day to the last valid day of target month.\n */\nexport function addMonths(date: Date, amount: number): Date {\n const targetYear = date.getFullYear();\n const targetMonth = date.getMonth() + amount;\n const originalDay = date.getDate();\n\n const temp = new Date(targetYear, targetMonth, 1);\n const maxDays = getDaysInMonth(temp.getFullYear(), temp.getMonth());\n const clampedDay = Math.min(originalDay, maxDays);\n\n return new Date(temp.getFullYear(), temp.getMonth(), clampedDay);\n}\n\n/**\n * Adds or subtracts years from a given date, handling Feb 29 leap years properly.\n */\nexport function addYears(date: Date, amount: number): Date {\n return addMonths(date, amount * 12);\n}\n\n/**\n * Generates an authoritative 6-row × 7-day (42 cells) calendar matrix for stable UI layout.\n */\nexport function getCalendarGrid(\n year: number,\n monthIndex: number,\n firstDayOfWeek: 0 | 1 | 6 = 0,\n): CalendarGridDay[] {\n const daysInCurrentMonth = getDaysInMonth(year, monthIndex);\n const firstOfMonth = new Date(year, monthIndex, 1);\n const startDayOfWeek = firstOfMonth.getDay(); // 0 (Sun) .. 6 (Sat)\n\n // Calculate leading offset from previous month\n const offset = (startDayOfWeek - firstDayOfWeek + 7) % 7;\n\n const prevMonthDate = new Date(year, monthIndex - 1, 1);\n const prevMonthYear = prevMonthDate.getFullYear();\n const prevMonthIndex = prevMonthDate.getMonth();\n const daysInPrevMonth = getDaysInMonth(prevMonthYear, prevMonthIndex);\n\n const today = new Date();\n const cells: CalendarGridDay[] = [];\n\n // 1. Leading days from previous month\n for (let i = offset - 1; i >= 0; i--) {\n const day = daysInPrevMonth - i;\n const date = new Date(prevMonthYear, prevMonthIndex, day);\n cells.push({\n date,\n dayNumber: day,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n isPrevMonth: true,\n isNextMonth: false,\n });\n }\n\n // 2. Days in current month\n for (let day = 1; day <= daysInCurrentMonth; day++) {\n const date = new Date(year, monthIndex, day);\n cells.push({\n date,\n dayNumber: day,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n isPrevMonth: false,\n isNextMonth: false,\n });\n }\n\n // 3. Trailing days from next month to fill complete 42 cells (6 full weeks)\n const nextMonthDate = new Date(year, monthIndex + 1, 1);\n const nextMonthYear = nextMonthDate.getFullYear();\n const nextMonthIndex = nextMonthDate.getMonth();\n const remainingCells = 42 - cells.length;\n\n for (let day = 1; day <= remainingCells; day++) {\n const date = new Date(nextMonthYear, nextMonthIndex, day);\n cells.push({\n date,\n dayNumber: day,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n isPrevMonth: false,\n isNextMonth: true,\n });\n }\n\n return cells;\n}\n\n/**\n * Returns localized weekday abbreviations and full names ordered by `firstDayOfWeek`.\n */\nexport function getWeekdayLabels(\n locale = \"en-US\",\n firstDayOfWeek: 0 | 1 | 6 = 0,\n): { key: number; narrow: string; short: string; long: string }[] {\n // 2026-01-04 was a Sunday\n const baseSunday = new Date(2026, 0, 4);\n const labels: { key: number; narrow: string; short: string; long: string }[] = [];\n\n const narrowFormatter = new Intl.DateTimeFormat(locale, { weekday: \"narrow\" });\n const shortFormatter = new Intl.DateTimeFormat(locale, { weekday: \"short\" });\n const longFormatter = new Intl.DateTimeFormat(locale, { weekday: \"long\" });\n\n for (let i = 0; i < 7; i++) {\n const dayIndex = (firstDayOfWeek + i) % 7;\n const date = addDays(baseSunday, dayIndex);\n labels.push({\n key: dayIndex,\n narrow: narrowFormatter.format(date),\n short: shortFormatter.format(date),\n long: longFormatter.format(date),\n });\n }\n\n return labels;\n}\n\n/**\n * Returns localized month name.\n */\nexport function getMonthLabel(\n year: number,\n monthIndex: number,\n locale = \"en-US\",\n style: \"long\" | \"short\" = \"long\",\n): string {\n const date = new Date(year, monthIndex, 1);\n return new Intl.DateTimeFormat(locale, { month: style }).format(date);\n}\n\n/**\n * Formats a local date without UTC shifts.\n */\nexport function formatLocalDate(\n date?: Date | null,\n format = \"YYYY-MM-DD\",\n locale = \"en-US\",\n): string {\n if (!date || isNaN(date.getTime())) return \"\";\n\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n\n if (format === \"YYYY-MM-DD\") {\n return `${y}-${m}-${d}`;\n }\n if (format === \"MM/DD/YYYY\") {\n return `${m}/${d}/${y}`;\n }\n if (format === \"DD/MM/YYYY\") {\n return `${d}/${m}/${y}`;\n }\n\n return new Intl.DateTimeFormat(locale, {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).format(date);\n}\n\n/**\n * Parses user input strings into a valid local Date or returns null.\n */\nexport function parseLocalDate(str?: string | null): Date | null {\n if (!str || typeof str !== \"string\") return null;\n const trimmed = str.trim();\n if (!trimmed) return null;\n\n // Pattern 1: YYYY-MM-DD\n const isoMatch = /^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/.exec(trimmed);\n if (isoMatch && isoMatch[1] && isoMatch[2] && isoMatch[3]) {\n const year = parseInt(isoMatch[1], 10);\n const month = parseInt(isoMatch[2], 10) - 1;\n const day = parseInt(isoMatch[3], 10);\n if (month >= 0 && month <= 11 && day >= 1 && day <= getDaysInMonth(year, month)) {\n return new Date(year, month, day);\n }\n return null;\n }\n\n // Pattern 2: MM/DD/YYYY\n const slashMatch = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/.exec(trimmed);\n if (slashMatch && slashMatch[1] && slashMatch[2] && slashMatch[3]) {\n const p1 = parseInt(slashMatch[1], 10);\n const p2 = parseInt(slashMatch[2], 10);\n const year = parseInt(slashMatch[3], 10);\n const month = p1 - 1;\n const day = p2;\n if (month >= 0 && month <= 11 && day >= 1 && day <= getDaysInMonth(year, month)) {\n return new Date(year, month, day);\n }\n return null;\n }\n\n // Pattern 3: YYYY/MM/DD\n const slashIsoMatch = /^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})$/.exec(trimmed);\n if (slashIsoMatch && slashIsoMatch[1] && slashIsoMatch[2] && slashIsoMatch[3]) {\n const year = parseInt(slashIsoMatch[1], 10);\n const month = parseInt(slashIsoMatch[2], 10) - 1;\n const day = parseInt(slashIsoMatch[3], 10);\n if (month >= 0 && month <= 11 && day >= 1 && day <= getDaysInMonth(year, month)) {\n return new Date(year, month, day);\n }\n return null;\n }\n\n return null;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport {\n addDays,\n addMonths,\n addYears,\n getCalendarGrid,\n getMonthLabel,\n getWeekdayLabels,\n isDateAfter,\n isDateBefore,\n isDateInRange,\n isSameDay,\n isSameMonth,\n} from \"../../utils/date\";\nimport type { CalendarProps, DateRange } from \"./Calendar.types\";\n\n/**\n * Calendar provides an accessible WAI-ARIA APG compliant grid for selecting single calendar dates.\n *\n * @example\n * ```tsx\n * <Calendar value={selectedDate} onValueChange={setSelectedDate} />\n * ```\n */\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n isRange = false,\n rangeValue: rangeValueProp,\n defaultRangeValue,\n onRangeChange,\n minDate,\n maxDate,\n isDateDisabled,\n firstDayOfWeek = 0,\n locale = \"en-US\",\n defaultFocusedDate,\n className,\n \"aria-label\": ariaLabel = \"Calendar\",\n ...rest\n },\n ref,\n ) => {\n // 1. Controlled / Uncontrolled Selection State (Single Date)\n const [selectedDate, setSelectedDate] = useControllableState<Date | null>({\n value: valueProp,\n defaultValue: defaultValue ?? null,\n onChange: (val) => {\n if (val) {\n onValueChange?.(val);\n }\n },\n });\n\n // 1b. Controlled / Uncontrolled Selection State (Date Range)\n const [range, setRange] = useControllableState<DateRange | null>({\n value: rangeValueProp,\n defaultValue: defaultRangeValue ?? null,\n onChange: (val) => {\n if (val) {\n onRangeChange?.(val);\n }\n },\n });\n\n // 2. Visible Month & Year in View\n const [viewDate, setViewDate] = React.useState<Date>(() => {\n return (\n (isRange ? range?.startDate ?? range?.endDate : selectedDate) ??\n defaultFocusedDate ??\n new Date()\n );\n });\n\n // 3. Focused Date for Roving Tabindex\n const [focusedDate, setFocusedDate] = React.useState<Date>(() => {\n return (\n (isRange ? range?.startDate ?? range?.endDate : selectedDate) ??\n defaultFocusedDate ??\n new Date()\n );\n });\n\n // Track when calendar is focused to maintain keyboard focus across renders\n const [isGridFocused, setIsGridFocused] = React.useState(false);\n const activeDayButtonRef = React.useRef<HTMLButtonElement | null>(null);\n\n // Keep view synced if controlled value changes to a different month\n React.useEffect(() => {\n if (!isRange && valueProp && !isSameMonth(valueProp, viewDate)) {\n setViewDate(valueProp);\n setFocusedDate(valueProp);\n } else if (isRange && rangeValueProp?.startDate && !isSameMonth(rangeValueProp.startDate, viewDate)) {\n setViewDate(rangeValueProp.startDate);\n setFocusedDate(rangeValueProp.startDate);\n }\n }, [isRange, valueProp, rangeValueProp]);\n\n // Keep active day button focused when navigating via keyboard\n React.useEffect(() => {\n if (isGridFocused && activeDayButtonRef.current) {\n activeDayButtonRef.current.focus();\n }\n }, [focusedDate, viewDate, isGridFocused]);\n\n const viewYear = viewDate.getFullYear();\n const viewMonth = viewDate.getMonth();\n\n // Check if a specific date is disabled\n const checkIsDisabled = React.useCallback(\n (date: Date) => {\n if (!isDateInRange(date, minDate, maxDate)) return true;\n if (isDateDisabled && isDateDisabled(date)) return true;\n return false;\n },\n [minDate, maxDate, isDateDisabled],\n );\n\n // Navigation callbacks\n const handlePrevMonth = React.useCallback(() => {\n setViewDate((prev) => addMonths(prev, -1));\n }, []);\n\n const handleNextMonth = React.useCallback(() => {\n setViewDate((prev) => addMonths(prev, 1));\n }, []);\n\n // Date selection handler\n const handleSelectDate = React.useCallback(\n (targetDate: Date) => {\n if (checkIsDisabled(targetDate)) return;\n\n if (isRange) {\n let nextRange: DateRange;\n const currentStart = range?.startDate;\n const currentEnd = range?.endDate;\n\n if (!currentStart || (currentStart && currentEnd)) {\n // First click in range mode: starts range\n nextRange = { startDate: targetDate, endDate: null };\n } else {\n // Second click in range mode: completes range\n if (isDateBefore(targetDate, currentStart)) {\n nextRange = { startDate: targetDate, endDate: currentStart };\n } else {\n nextRange = { startDate: currentStart, endDate: targetDate };\n }\n }\n\n setRange(nextRange);\n setFocusedDate(targetDate);\n if (!isSameMonth(targetDate, viewDate)) {\n setViewDate(targetDate);\n }\n } else {\n setSelectedDate(targetDate);\n setFocusedDate(targetDate);\n\n // If selecting a leading or trailing day from another month, adjust view\n if (!isSameMonth(targetDate, viewDate)) {\n setViewDate(targetDate);\n }\n }\n },\n [checkIsDisabled, isRange, range, setRange, setSelectedDate, viewDate],\n );\n\n // WAI-ARIA Grid Keyboard Navigation\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n let nextDate: Date | null = null;\n\n switch (e.key) {\n case \"ArrowLeft\":\n nextDate = addDays(focusedDate, -1);\n break;\n case \"ArrowRight\":\n nextDate = addDays(focusedDate, 1);\n break;\n case \"ArrowUp\":\n nextDate = addDays(focusedDate, -7);\n break;\n case \"ArrowDown\":\n nextDate = addDays(focusedDate, 7);\n break;\n case \"Home\": {\n const dayOfWeek = (focusedDate.getDay() - firstDayOfWeek + 7) % 7;\n nextDate = addDays(focusedDate, -dayOfWeek);\n break;\n }\n case \"End\": {\n const dayOfWeek = (focusedDate.getDay() - firstDayOfWeek + 7) % 7;\n nextDate = addDays(focusedDate, 6 - dayOfWeek);\n break;\n }\n case \"PageUp\":\n nextDate = e.shiftKey ? addYears(focusedDate, -1) : addMonths(focusedDate, -1);\n break;\n case \"PageDown\":\n nextDate = e.shiftKey ? addYears(focusedDate, 1) : addMonths(focusedDate, 1);\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n handleSelectDate(focusedDate);\n return;\n default:\n return;\n }\n\n if (nextDate) {\n e.preventDefault();\n setFocusedDate(nextDate);\n setIsGridFocused(true);\n\n if (!isSameMonth(nextDate, viewDate)) {\n setViewDate(nextDate);\n }\n }\n },\n [firstDayOfWeek, focusedDate, handleSelectDate, viewDate],\n );\n\n // Compute calendar grid (42 cells)\n const gridDays = React.useMemo(() => {\n return getCalendarGrid(viewYear, viewMonth, firstDayOfWeek);\n }, [viewYear, viewMonth, firstDayOfWeek]);\n\n // Compute weekday labels\n const weekdayLabels = React.useMemo(() => {\n return getWeekdayLabels(locale, firstDayOfWeek);\n }, [locale, firstDayOfWeek]);\n\n // Format current month and year title\n const monthTitle = `${getMonthLabel(viewYear, viewMonth, locale)} ${viewYear}`;\n\n // Group grid cells into 6 rows\n const rows = React.useMemo(() => {\n const result: (typeof gridDays)[] = [];\n for (let i = 0; i < gridDays.length; i += 7) {\n result.push(gridDays.slice(i, i + 7));\n }\n return result;\n }, [gridDays]);\n\n return (\n <div ref={ref} className={classNames(\"cl-calendar\", className)} {...rest}>\n {/* Header with Month/Year and Navigation Buttons */}\n <div className=\"cl-calendar__header\">\n <div className=\"cl-calendar__title\" role=\"heading\" aria-level={2}>\n {monthTitle}\n </div>\n <div className=\"cl-calendar__nav\">\n <button\n type=\"button\"\n className=\"cl-calendar__nav-btn cl-calendar__nav-btn--prev\"\n onClick={handlePrevMonth}\n aria-label=\"Previous month\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z\"\n />\n </svg>\n </button>\n <button\n type=\"button\"\n className=\"cl-calendar__nav-btn cl-calendar__nav-btn--next\"\n onClick={handleNextMonth}\n aria-label=\"Next month\"\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z\"\n />\n </svg>\n </button>\n </div>\n </div>\n\n {/* Calendar Grid Table */}\n <table\n className=\"cl-calendar__grid\"\n role=\"grid\"\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n >\n <thead className=\"cl-calendar__weekdays\">\n <tr role=\"row\">\n {weekdayLabels.map((wd) => (\n <th\n key={wd.key}\n role=\"columnheader\"\n className=\"cl-calendar__weekday\"\n abbr={wd.long}\n title={wd.long}\n >\n {wd.short}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((row, rowIndex) => (\n <tr key={rowIndex} role=\"row\" className=\"cl-calendar__row\">\n {row.map((day) => {\n const startDate = isRange ? range?.startDate : null;\n const endDate = isRange ? range?.endDate : null;\n\n const isRangeStart = Boolean(startDate && isSameDay(day.date, startDate));\n const isRangeEnd = Boolean(endDate && isSameDay(day.date, endDate));\n const isInRange = Boolean(\n startDate &&\n endDate &&\n isDateAfter(day.date, startDate) &&\n isDateBefore(day.date, endDate),\n );\n\n const isSelected = isRange\n ? isRangeStart || isRangeEnd\n : isSameDay(day.date, selectedDate);\n const isFocused = isSameDay(day.date, focusedDate);\n const isDisabled = checkIsDisabled(day.date);\n\n const fullDayLabel = new Intl.DateTimeFormat(locale, {\n dateStyle: \"full\",\n }).format(day.date);\n\n return (\n <td\n key={day.date.toISOString()}\n role=\"gridcell\"\n className={classNames(\n \"cl-calendar__cell\",\n isRange && isInRange && \"cl-calendar__cell--in-range\",\n isRange && isRangeStart && \"cl-calendar__cell--range-start\",\n isRange && isRangeEnd && \"cl-calendar__cell--range-end\",\n )}\n aria-selected={isSelected}\n >\n <button\n ref={isFocused ? activeDayButtonRef : null}\n type=\"button\"\n tabIndex={isFocused ? 0 : -1}\n className={classNames(\n \"cl-calendar__day\",\n day.isToday && \"cl-calendar__day--today\",\n !day.isCurrentMonth && \"cl-calendar__day--outside\",\n isSelected && \"cl-calendar__day--selected\",\n isRange && isRangeStart && \"cl-calendar__day--range-start\",\n isRange && isRangeEnd && \"cl-calendar__day--range-end\",\n isRange && isInRange && \"cl-calendar__day--in-range\",\n isDisabled && \"cl-calendar__day--disabled\",\n )}\n disabled={isDisabled}\n aria-disabled={isDisabled ? \"true\" : undefined}\n aria-current={day.isToday ? \"date\" : undefined}\n aria-label={fullDayLabel}\n onClick={() => handleSelectDate(day.date)}\n onFocus={() => {\n setFocusedDate(day.date);\n setIsGridFocused(true);\n }}\n onBlur={() => setIsGridFocused(false)}\n >\n {day.dayNumber}\n </button>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport { formatLocalDate, isDateInRange, isSameDay, parseLocalDate } from \"../../utils/date\";\nimport { Calendar } from \"../Calendar/Calendar\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport {\n Popover,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n} from \"../Popover\";\nimport type { DatePickerProps } from \"./DatePicker.types\";\n\n/**\n * DatePicker combines a formatted text input with an anchored calendar popover dropdown.\n *\n * @example\n * ```tsx\n * <DatePicker value={date} onValueChange={setDate} />\n * <DatePicker format=\"MM/DD/YYYY\" isClearable />\n * ```\n */\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n format = \"YYYY-MM-DD\",\n placeholder,\n isOpen: isOpenProp,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n isInvalid = false,\n isClearable = true,\n minDate,\n maxDate,\n isDateDisabled,\n firstDayOfWeek = 0,\n locale = \"en-US\",\n size = \"md\",\n id,\n name,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref,\n ) => {\n // 1. FormField cascade integration\n const formField = useFormField();\n const effectiveId = id ?? formField?.id;\n const effectiveDisabled = isDisabled || (formField?.disabled ?? false);\n const effectiveInvalid = isInvalid || (formField?.error ?? false);\n\n // 2. Controlled / Uncontrolled Selection State\n const [selectedDate, setSelectedDate] = useControllableState<Date | null>({\n value: valueProp,\n defaultValue: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n // 3. Controlled / Uncontrolled Open State\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n // 4. Synchronize manual input text representation\n const [inputValue, setInputValue] = React.useState<string>(() => {\n return formatLocalDate(selectedDate, format, locale);\n });\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const controlRef = React.useRef<HTMLDivElement | null>(null);\n\n // Sync input text when selectedDate changes externally\n React.useEffect(() => {\n setInputValue(formatLocalDate(selectedDate, format, locale));\n }, [selectedDate, format, locale]);\n\n // Handle Calendar Date Selection\n const handleCalendarSelect = React.useCallback(\n (newDate: Date) => {\n setSelectedDate(newDate);\n setInputValue(formatLocalDate(newDate, format, locale));\n setIsOpen(false);\n inputRef.current?.focus();\n },\n [format, locale, setSelectedDate, setIsOpen],\n );\n\n // Commit typed input value\n const commitInputValue = React.useCallback(\n (rawText: string) => {\n const trimmed = rawText.trim();\n if (!trimmed) {\n if (isClearable) {\n if (selectedDate !== null) {\n setSelectedDate(null);\n }\n setInputValue(\"\");\n } else {\n setInputValue(formatLocalDate(selectedDate, format, locale));\n }\n return;\n }\n\n const parsed = parseLocalDate(trimmed);\n if (\n parsed &&\n isDateInRange(parsed, minDate, maxDate) &&\n (!isDateDisabled || !isDateDisabled(parsed))\n ) {\n if (!selectedDate || !isSameDay(parsed, selectedDate)) {\n setSelectedDate(parsed);\n }\n setInputValue(formatLocalDate(parsed, format, locale));\n } else {\n // Revert to last valid selected date string\n setInputValue(formatLocalDate(selectedDate, format, locale));\n }\n },\n [format, isClearable, isDateDisabled, locale, maxDate, minDate, selectedDate, setSelectedDate],\n );\n\n // Handle Manual Input Changes\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n },\n [],\n );\n\n // Handle Input Blur\n const handleInputBlur = React.useCallback(() => {\n commitInputValue(inputValue);\n }, [commitInputValue, inputValue]);\n\n // Handle Enter & ArrowDown Key on Input\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitInputValue(inputValue);\n setIsOpen(false);\n } else if (e.key === \"ArrowDown\" && !isOpen && !effectiveDisabled) {\n e.preventDefault();\n setIsOpen(true);\n }\n },\n [commitInputValue, effectiveDisabled, inputValue, isOpen, setIsOpen],\n );\n\n // Handle Clear Button Action\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setSelectedDate(null);\n setInputValue(\"\");\n inputRef.current?.focus();\n },\n [setSelectedDate],\n );\n\n const handleOpenChange = React.useCallback(\n (nextOpen: boolean) => {\n if (effectiveDisabled) return;\n setIsOpen(nextOpen);\n if (!nextOpen) {\n inputRef.current?.focus();\n }\n },\n [effectiveDisabled, setIsOpen],\n );\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"cl-datepicker\",\n `cl-datepicker--${size}`,\n effectiveInvalid && \"cl-datepicker--invalid\",\n className,\n )}\n {...rest}\n >\n <Popover\n isOpen={effectiveDisabled ? false : isOpen}\n onOpenChange={handleOpenChange}\n placement=\"bottom-start\"\n offset={4}\n trapFocus={false}\n returnFocusRef={inputRef}\n referenceElement={controlRef}\n >\n <div ref={controlRef} className=\"cl-datepicker__control\">\n {/* Left Calendar Trigger Button */}\n <button\n type=\"button\"\n className=\"cl-datepicker__icon-btn\"\n aria-label={isOpen ? \"Close calendar\" : \"Open calendar\"}\n disabled={effectiveDisabled}\n tabIndex={-1}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!effectiveDisabled) {\n setIsOpen((prev) => !prev);\n inputRef.current?.focus();\n }\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\" />\n </svg>\n </button>\n\n {/* Text Input */}\n <input\n ref={inputRef}\n id={effectiveId}\n name={name}\n type=\"text\"\n disabled={effectiveDisabled}\n aria-disabled={effectiveDisabled ? \"true\" : undefined}\n aria-invalid={effectiveInvalid ? \"true\" : undefined}\n aria-label={ariaLabel ?? \"Choose date\"}\n placeholder={placeholder ?? format}\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n className=\"cl-datepicker__input\"\n autoComplete=\"off\"\n />\n\n {/* Action Buttons: Clear & Open Trigger */}\n <div className=\"cl-datepicker__actions\">\n {isClearable && selectedDate && !effectiveDisabled && (\n <button\n type=\"button\"\n className=\"cl-datepicker__clear-btn\"\n aria-label=\"Clear date\"\n onClick={handleClear}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\" />\n </svg>\n </button>\n )}\n\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"cl-datepicker__toggle-btn\"\n aria-label={isOpen ? \"Close calendar\" : \"Toggle calendar\"}\n disabled={effectiveDisabled}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path\n fillRule=\"evenodd\"\n d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"\n />\n </svg>\n </button>\n </PopoverTrigger>\n </div>\n </div>\n\n {/* Floating Calendar Overlay */}\n <PopoverPortal>\n <PopoverContent className=\"cl-datepicker__popover\" hasArrow={false}>\n <Calendar\n value={selectedDate}\n onValueChange={handleCalendarSelect}\n minDate={minDate}\n maxDate={maxDate}\n isDateDisabled={isDateDisabled}\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n defaultFocusedDate={selectedDate ?? undefined}\n />\n </PopoverContent>\n </PopoverPortal>\n </Popover>\n </div>\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n type Placement,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport type {\n DropdownMenuRootProps,\n DropdownMenuTriggerProps,\n DropdownMenuContentProps,\n DropdownMenuItemProps,\n DropdownMenuCheckboxItemProps,\n DropdownMenuRadioGroupProps,\n DropdownMenuRadioItemProps,\n DropdownMenuSeparatorProps,\n DropdownMenuLabelProps,\n DropdownMenuSide,\n DropdownMenuAlign,\n} from \"./DropdownMenu.types\";\n\nexport interface MenuItemRecord {\n id: string;\n ref: React.RefObject<HTMLElement | null>;\n disabled: boolean;\n textValue: string;\n}\n\nexport interface DropdownMenuContextValue {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n contentRef: React.MutableRefObject<HTMLDivElement | null>;\n registerItem: (item: MenuItemRecord) => () => void;\n activeIndex: number;\n setActiveIndex: React.Dispatch<React.SetStateAction<number>>;\n focusItem: (index: number) => void;\n items: MenuItemRecord[];\n onOpenViaKeyboard: () => void;\n}\n\nexport const DropdownMenuContext =\n React.createContext<DropdownMenuContextValue | null>(null);\n\nexport function useDropdownMenuContext(componentName: string): DropdownMenuContextValue {\n const context = React.useContext(DropdownMenuContext);\n if (!context) {\n throw new Error(\n `<DropdownMenu.${componentName}> must be used within a <DropdownMenu> or <DropdownMenuRoot>.`,\n );\n }\n return context;\n}\n\ninterface RadioGroupContextValue {\n value?: string;\n onValueChange?: (val: string) => void;\n}\n\nexport const DropdownMenuRadioContext =\n React.createContext<RadioGroupContextValue | null>(null);\n\nfunction toPlacement(\n side: DropdownMenuSide = \"bottom\",\n align: DropdownMenuAlign = \"start\",\n): Placement {\n if (align === \"center\") {\n return side;\n }\n return `${side}-${align}` as Placement;\n}\n\n/**\n * DropdownMenuRoot component managing open state, keyboard navigation, and item registration.\n */\nexport const DropdownMenuRoot: React.FC<DropdownMenuRootProps> = ({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n}) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const [items, setItems] = React.useState<MenuItemRecord[]>([]);\n const [activeIndex, setActiveIndex] = React.useState<number>(-1);\n\n const registerItem = React.useCallback((item: MenuItemRecord) => {\n setItems((prev) => {\n const exists = prev.findIndex((i) => i.id === item.id);\n if (exists !== -1) {\n const copy = [...prev];\n copy[exists] = item;\n return copy;\n }\n return [...prev, item];\n });\n\n return () => {\n setItems((prev) => prev.filter((i) => i.id !== item.id));\n };\n }, []);\n\n const focusItem = React.useCallback(\n (index: number) => {\n if (index >= 0 && index < items.length) {\n setActiveIndex(index);\n items[index]?.ref.current?.focus();\n }\n },\n [items],\n );\n\n const onOpenViaKeyboard = React.useCallback(() => {\n setIsOpen(true);\n // Find first enabled item\n const firstEnabled = items.findIndex((i) => !i.disabled);\n if (firstEnabled !== -1) {\n setActiveIndex(firstEnabled);\n }\n }, [items, setIsOpen]);\n\n // When menu closes, reset active index\n React.useEffect(() => {\n if (!isOpen) {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n const contextValue = React.useMemo<DropdownMenuContextValue>(\n () => ({\n isOpen: !!isOpen,\n setIsOpen,\n triggerRef,\n contentRef,\n registerItem,\n activeIndex,\n setActiveIndex,\n focusItem,\n items,\n onOpenViaKeyboard,\n }),\n [\n isOpen,\n setIsOpen,\n registerItem,\n activeIndex,\n setActiveIndex,\n focusItem,\n items,\n onOpenViaKeyboard,\n ],\n );\n\n return (\n <DropdownMenuContext.Provider value={contextValue}>\n {children}\n </DropdownMenuContext.Provider>\n );\n};\nDropdownMenuRoot.displayName = \"DropdownMenu.Root\";\n\n/**\n * DropdownMenuTrigger - button that toggles the dropdown menu.\n */\nexport const DropdownMenuTrigger = React.forwardRef<\n HTMLElement,\n DropdownMenuTriggerProps\n>(({ asChild = false, onClick, onKeyDown, children, className, ...props }, forwardedRef) => {\n const { isOpen, setIsOpen, triggerRef, onOpenViaKeyboard } =\n useDropdownMenuContext(\"Trigger\");\n const mergedRef = useMergeRefs(triggerRef, forwardedRef);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"ArrowDown\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onOpenViaKeyboard();\n }\n };\n\n const triggerClasses = [\n \"cl-dropdown-menu__trigger\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={triggerClasses}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={mergedRef as React.Ref<HTMLButtonElement>}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={triggerClasses}\n {...props}\n >\n {children}\n </button>\n );\n});\nDropdownMenuTrigger.displayName = \"DropdownMenu.Trigger\";\n\n/**\n * DropdownMenuContent - floating panel containing menu items.\n */\nexport const DropdownMenuContent = React.forwardRef<\n HTMLDivElement,\n DropdownMenuContentProps\n>(\n (\n {\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n collisionPadding = 8,\n asChild = false,\n className,\n children,\n onKeyDown,\n ...props\n },\n forwardedRef,\n ) => {\n const {\n isOpen,\n setIsOpen,\n triggerRef,\n contentRef,\n } = useDropdownMenuContext(\"Content\");\n\n const placement = toPlacement(side, align);\n\n const {\n refs,\n floatingStyles,\n isPositioned,\n } = useFloating({\n placement,\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset({ mainAxis: sideOffset, crossAxis: alignOffset }),\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: collisionPadding }),\n ],\n });\n\n const [contentElement, setContentElement] =\n React.useState<HTMLDivElement | null>(null);\n\n // Sync floating reference with trigger element\n React.useEffect(() => {\n if (triggerRef.current) {\n refs.setReference(triggerRef.current);\n }\n }, [refs, triggerRef]);\n\n const setRefCallback = React.useCallback(\n (node: HTMLDivElement | null) => {\n contentRef.current = node;\n refs.setFloating(node);\n setContentElement(node);\n },\n [contentRef, refs],\n );\n\n const mergedRef = useMergeRefs(setRefCallback, forwardedRef);\n\n // Typeahead buffer & timer\n const typeaheadBufferRef = React.useRef(\"\");\n const typeaheadTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Initial focus when opened and portal content element is mounted\n React.useEffect(() => {\n if (isOpen && contentElement) {\n const focusFirst = () => {\n if (!contentElement) return;\n const enabledItems = Array.from(\n contentElement.querySelectorAll<HTMLElement>(\n '[role^=\"menuitem\"]:not([aria-disabled=\"true\"]):not([data-disabled=\"true\"])',\n ),\n );\n if (enabledItems.length > 0) {\n enabledItems[0]?.focus();\n } else {\n contentElement.focus();\n }\n };\n\n focusFirst();\n const frame = requestAnimationFrame(focusFirst);\n return () => cancelAnimationFrame(frame);\n }\n return undefined;\n }, [isOpen, contentElement]);\n\n // Outside click dismissal\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (\n target &&\n contentRef.current &&\n !contentRef.current.contains(target) &&\n triggerRef.current &&\n !triggerRef.current.contains(target)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n };\n }, [isOpen, contentRef, triggerRef, setIsOpen]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || !contentRef.current) return;\n\n const enabledItems = Array.from(\n contentRef.current.querySelectorAll<HTMLElement>(\n '[role^=\"menuitem\"]:not([aria-disabled=\"true\"]):not([data-disabled=\"true\"])',\n ),\n );\n\n if (enabledItems.length === 0 && e.key !== \"Escape\") return;\n\n const currentFocused = document.activeElement as HTMLElement | null;\n const currentIndex = currentFocused ? enabledItems.indexOf(currentFocused) : -1;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % enabledItems.length;\n enabledItems[nextIndex]?.focus();\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex =\n currentIndex === -1\n ? enabledItems.length - 1\n : (currentIndex - 1 + enabledItems.length) % enabledItems.length;\n enabledItems[prevIndex]?.focus();\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n enabledItems[0]?.focus();\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n enabledItems[enabledItems.length - 1]?.focus();\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n\n if (e.key === \"Tab\") {\n setIsOpen(false);\n return;\n }\n\n // Typeahead character matching\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n if (typeaheadTimerRef.current) {\n clearTimeout(typeaheadTimerRef.current);\n }\n\n typeaheadBufferRef.current += e.key.toLowerCase();\n const buffer = typeaheadBufferRef.current;\n\n typeaheadTimerRef.current = setTimeout(() => {\n typeaheadBufferRef.current = \"\";\n }, 500);\n\n const startIndex = currentIndex >= 0 ? currentIndex + 1 : 0;\n const reordered = [\n ...enabledItems.slice(startIndex),\n ...enabledItems.slice(0, startIndex),\n ];\n\n const match = reordered.find((it) =>\n it.textContent?.trim().toLowerCase().startsWith(buffer),\n );\n\n if (match) {\n match.focus();\n }\n }\n };\n\n if (!isOpen) return null;\n\n const contentClasses = [\n \"cl-dropdown-menu__content\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <Portal>\n <div\n ref={mergedRef}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n data-positioned={isPositioned ? \"true\" : \"false\"}\n data-side={side}\n data-align={align}\n style={{\n ...floatingStyles,\n ...props.style,\n }}\n className={contentClasses}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </Portal>\n );\n },\n);\nDropdownMenuContent.displayName = \"DropdownMenu.Content\";\n\nlet itemIdCounter = 0;\n\n/**\n * DropdownMenuItem - selectable action inside menu.\n */\nexport const DropdownMenuItem = React.forwardRef<\n HTMLDivElement,\n DropdownMenuItemProps\n>(\n (\n {\n disabled = false,\n inset = false,\n onSelect,\n closeOnSelect = true,\n asChild = false,\n className,\n children,\n onClick,\n onKeyDown,\n onMouseEnter,\n ...props\n },\n forwardedRef,\n ) => {\n const {\n setIsOpen,\n triggerRef,\n registerItem,\n } = useDropdownMenuContext(\"Item\");\n\n const idRef = React.useRef<string>(\"\");\n if (!idRef.current) {\n idRef.current = `cl-dropdown-item-${++itemIdCounter}`;\n }\n\n const internalRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(internalRef, forwardedRef);\n\n // Extract text content for typeahead\n const [textValue, setTextValue] = React.useState(\"\");\n\n React.useEffect(() => {\n if (internalRef.current) {\n setTextValue(internalRef.current.textContent?.trim() || \"\");\n }\n }, [children]);\n\n React.useEffect(() => {\n return registerItem({\n id: idRef.current,\n ref: internalRef,\n disabled,\n textValue,\n });\n }, [registerItem, disabled, textValue]);\n\n const handleSelect = () => {\n if (disabled) return;\n onSelect?.();\n if (closeOnSelect) {\n setIsOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (e.defaultPrevented || disabled) return;\n handleSelect();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelect();\n }\n };\n\n const [isFocused, setIsFocused] = React.useState(false);\n\n const handleFocus = (e: React.FocusEvent<HTMLDivElement>) => {\n props.onFocus?.(e);\n if (!disabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n props.onBlur?.(e);\n setIsFocused(false);\n };\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLDivElement>) => {\n onMouseEnter?.(e);\n if (!disabled && internalRef.current) {\n internalRef.current.focus();\n }\n };\n\n const itemClasses = [\n \"cl-dropdown-menu__item\",\n disabled && \"cl-dropdown-menu__item--disabled\",\n inset && \"cl-dropdown-menu__item--inset\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n ref={mergedRef}\n role=\"menuitem\"\n id={idRef.current}\n tabIndex={disabled ? -1 : (isFocused ? 0 : -1)}\n aria-disabled={disabled ? \"true\" : undefined}\n data-highlighted={isFocused ? \"true\" : undefined}\n data-disabled={disabled ? \"true\" : undefined}\n className={itemClasses}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDropdownMenuItem.displayName = \"DropdownMenu.Item\";\n\n/**\n * DropdownMenuCheckboxItem - togglable checkbox item.\n */\nexport const DropdownMenuCheckboxItem = React.forwardRef<\n HTMLDivElement,\n DropdownMenuCheckboxItemProps\n>(\n (\n {\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n closeOnSelect = false,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const [isChecked, setIsChecked] = useControllableState<boolean>({\n value: controlledChecked,\n defaultValue: defaultChecked,\n onChange: onCheckedChange,\n });\n\n const handleSelect = () => {\n setIsChecked(!isChecked);\n };\n\n return (\n <DropdownMenuItem\n ref={forwardedRef}\n role=\"menuitemcheckbox\"\n aria-checked={!!isChecked}\n closeOnSelect={closeOnSelect}\n onSelect={handleSelect}\n {...props}\n >\n <span\n className=\"cl-dropdown-menu__item-indicator\"\n aria-hidden=\"true\"\n >\n {isChecked ? \"✓\" : \"\"}\n </span>\n {children}\n </DropdownMenuItem>\n );\n },\n);\nDropdownMenuCheckboxItem.displayName = \"DropdownMenu.CheckboxItem\";\n\n/**\n * DropdownMenuRadioGroup - container for mutually exclusive radio items.\n */\nexport const DropdownMenuRadioGroup = React.forwardRef<\n HTMLDivElement,\n DropdownMenuRadioGroupProps\n>(\n (\n {\n value: controlledValue,\n defaultValue,\n onValueChange,\n className,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const [value, setValue] = useControllableState<string>({\n value: controlledValue,\n defaultValue: defaultValue ?? \"\",\n onChange: onValueChange,\n });\n\n const groupClasses = [\n \"cl-dropdown-menu__radio-group\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <DropdownMenuRadioContext.Provider value={{ value, onValueChange: setValue }}>\n <div\n ref={forwardedRef}\n role=\"group\"\n className={groupClasses}\n {...props}\n >\n {children}\n </div>\n </DropdownMenuRadioContext.Provider>\n );\n },\n);\nDropdownMenuRadioGroup.displayName = \"DropdownMenu.RadioGroup\";\n\n/**\n * DropdownMenuRadioItem - single radio option inside a DropdownMenuRadioGroup.\n */\nexport const DropdownMenuRadioItem = React.forwardRef<\n HTMLDivElement,\n DropdownMenuRadioItemProps\n>(\n (\n {\n value,\n closeOnSelect = false,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const group = React.useContext(DropdownMenuRadioContext);\n const isChecked = group?.value === value;\n\n const handleSelect = () => {\n group?.onValueChange?.(value);\n };\n\n return (\n <DropdownMenuItem\n ref={forwardedRef}\n role=\"menuitemradio\"\n aria-checked={isChecked}\n closeOnSelect={closeOnSelect}\n onSelect={handleSelect}\n {...props}\n >\n <span\n className=\"cl-dropdown-menu__item-indicator\"\n aria-hidden=\"true\"\n >\n {isChecked ? \"●\" : \"\"}\n </span>\n {children}\n </DropdownMenuItem>\n );\n },\n);\nDropdownMenuRadioItem.displayName = \"DropdownMenu.RadioItem\";\n\n/**\n * DropdownMenuSeparator - visual and semantic separator between items.\n */\nexport const DropdownMenuSeparator = React.forwardRef<\n HTMLDivElement,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => {\n const separatorClasses = [\n \"cl-dropdown-menu__separator\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n ref={forwardedRef}\n role=\"separator\"\n className={separatorClasses}\n {...props}\n />\n );\n});\nDropdownMenuSeparator.displayName = \"DropdownMenu.Separator\";\n\n/**\n * DropdownMenuLabel - non-interactive section header inside a menu.\n */\nexport const DropdownMenuLabel = React.forwardRef<\n HTMLDivElement,\n DropdownMenuLabelProps\n>(({ inset = false, className, children, ...props }, forwardedRef) => {\n const labelClasses = [\n \"cl-dropdown-menu__label\",\n inset && \"cl-dropdown-menu__label--inset\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n ref={forwardedRef}\n role=\"presentation\"\n className={labelClasses}\n {...props}\n >\n {children}\n </div>\n );\n});\nDropdownMenuLabel.displayName = \"DropdownMenu.Label\";\n\n/**\n * DropdownMenu Compound Component\n */\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n Root: DropdownMenuRoot,\n Trigger: DropdownMenuTrigger,\n Content: DropdownMenuContent,\n Item: DropdownMenuItem,\n CheckboxItem: DropdownMenuCheckboxItem,\n RadioGroup: DropdownMenuRadioGroup,\n RadioItem: DropdownMenuRadioItem,\n Separator: DropdownMenuSeparator,\n Label: DropdownMenuLabel,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n flip,\n shift,\n type VirtualElement,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport {\n DropdownMenuContext,\n type DropdownMenuContextValue,\n type MenuItemRecord,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuLabel,\n} from \"../DropdownMenu/DropdownMenu\";\nimport type {\n ContextMenuRootProps,\n ContextMenuTriggerProps,\n ContextMenuContentProps,\n} from \"./ContextMenu.types\";\n\ninterface ContextMenuInternalValue {\n virtualRef: React.MutableRefObject<VirtualElement | null>;\n}\n\nconst ContextMenuPrivateContext =\n React.createContext<ContextMenuInternalValue | null>(null);\n\nfunction useContextMenuPrivate(): ContextMenuInternalValue {\n const context = React.useContext(ContextMenuPrivateContext);\n if (!context) {\n throw new Error(\n \"ContextMenu subcomponents must be used within a <ContextMenu> or <ContextMenuRoot>.\",\n );\n }\n return context;\n}\n\n/**\n * ContextMenuRoot - manages open state, virtual pointer anchor, and roving focus.\n */\nexport const ContextMenuRoot: React.FC<ContextMenuRootProps> = ({\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n children,\n}) => {\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: controlledOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n const virtualRef = React.useRef<VirtualElement | null>(null);\n const [items, setItems] = React.useState<MenuItemRecord[]>([]);\n const [activeIndex, setActiveIndex] = React.useState<number>(-1);\n\n const registerItem = React.useCallback((item: MenuItemRecord) => {\n setItems((prev) => {\n const exists = prev.findIndex((i) => i.id === item.id);\n if (exists !== -1) {\n const copy = [...prev];\n copy[exists] = item;\n return copy;\n }\n return [...prev, item];\n });\n\n return () => {\n setItems((prev) => prev.filter((i) => i.id !== item.id));\n };\n }, []);\n\n const focusItem = React.useCallback(\n (index: number) => {\n if (index >= 0 && index < items.length) {\n setActiveIndex(index);\n items[index]?.ref.current?.focus();\n }\n },\n [items],\n );\n\n const onOpenViaKeyboard = React.useCallback(() => {\n setIsOpen(true);\n const firstEnabled = items.findIndex((i) => !i.disabled);\n if (firstEnabled !== -1) {\n setActiveIndex(firstEnabled);\n }\n }, [items, setIsOpen]);\n\n React.useEffect(() => {\n if (!isOpen) {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n const menuContextValue = React.useMemo<DropdownMenuContextValue>(\n () => ({\n isOpen: !!isOpen,\n setIsOpen,\n triggerRef,\n contentRef,\n registerItem,\n activeIndex,\n setActiveIndex,\n focusItem,\n items,\n onOpenViaKeyboard,\n }),\n [\n isOpen,\n setIsOpen,\n registerItem,\n activeIndex,\n setActiveIndex,\n focusItem,\n items,\n onOpenViaKeyboard,\n ],\n );\n\n const privateValue = React.useMemo(\n () => ({\n virtualRef,\n }),\n [],\n );\n\n return (\n <ContextMenuPrivateContext.Provider value={privateValue}>\n <DropdownMenuContext.Provider value={menuContextValue}>\n {children}\n </DropdownMenuContext.Provider>\n </ContextMenuPrivateContext.Provider>\n );\n};\nContextMenuRoot.displayName = \"ContextMenu.Root\";\n\n/**\n * ContextMenuTrigger - region that opens menu upon right-click or Shift+F10 / ContextMenu key.\n */\nexport const ContextMenuTrigger = React.forwardRef<\n HTMLDivElement,\n ContextMenuTriggerProps\n>(\n (\n {\n disabled = false,\n asChild = false,\n className,\n onContextMenu,\n onKeyDown,\n children,\n ...props\n },\n forwardedRef,\n ) => {\n const { setIsOpen, triggerRef, onOpenViaKeyboard } =\n React.useContext(DropdownMenuContext) as DropdownMenuContextValue;\n const { virtualRef } = useContextMenuPrivate();\n const mergedRef = useMergeRefs(triggerRef, forwardedRef);\n\n const handleContextMenu = (e: React.MouseEvent<HTMLDivElement>) => {\n onContextMenu?.(e);\n if (e.defaultPrevented || disabled) return;\n\n e.preventDefault();\n\n virtualRef.current = {\n getBoundingClientRect() {\n return {\n x: e.clientX,\n y: e.clientY,\n top: e.clientY,\n bottom: e.clientY,\n left: e.clientX,\n right: e.clientX,\n width: 0,\n height: 0,\n };\n },\n };\n\n setIsOpen(true);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n\n if (\n e.key === \"ContextMenu\" ||\n (e.shiftKey && (e.key === \"F10\" || e.keyCode === 121))\n ) {\n e.preventDefault();\n\n const rect =\n triggerRef.current?.getBoundingClientRect() ?? {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0,\n };\n\n const x = rect.left + 8;\n const y = rect.top + 8;\n\n virtualRef.current = {\n getBoundingClientRect() {\n return {\n x,\n y,\n top: y,\n bottom: y,\n left: x,\n right: x,\n width: 0,\n height: 0,\n };\n },\n };\n\n onOpenViaKeyboard();\n }\n };\n\n const triggerClasses = [\n \"cl-context-menu__trigger\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n className={triggerClasses}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={mergedRef}\n tabIndex={0}\n onContextMenu={handleContextMenu}\n onKeyDown={handleKeyDown}\n className={triggerClasses}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nContextMenuTrigger.displayName = \"ContextMenu.Trigger\";\n\n/**\n * ContextMenuContent - floating panel positioned at the virtual coordinates.\n */\nexport const ContextMenuContent = React.forwardRef<\n HTMLDivElement,\n ContextMenuContentProps\n>(\n (\n {\n collisionPadding = 8,\n asChild = false,\n className,\n children,\n onKeyDown,\n ...props\n },\n forwardedRef,\n ) => {\n const {\n isOpen,\n setIsOpen,\n triggerRef,\n contentRef,\n } = React.useContext(DropdownMenuContext) as DropdownMenuContextValue;\n\n const { virtualRef } = useContextMenuPrivate();\n\n const {\n refs,\n floatingStyles,\n isPositioned,\n } = useFloating({\n placement: \"bottom-start\",\n open: isOpen,\n onOpenChange: setIsOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n flip({ fallbackAxisSideDirection: \"start\" }),\n shift({ padding: collisionPadding }),\n ],\n });\n\n const [contentElement, setContentElement] =\n React.useState<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (virtualRef.current) {\n refs.setReference(virtualRef.current);\n }\n }, [refs, virtualRef, isOpen]);\n\n const setRefCallback = React.useCallback(\n (node: HTMLDivElement | null) => {\n contentRef.current = node;\n refs.setFloating(node);\n setContentElement(node);\n },\n [contentRef, refs],\n );\n\n const mergedRef = useMergeRefs(setRefCallback, forwardedRef);\n\n // Typeahead buffer & timer\n const typeaheadBufferRef = React.useRef(\"\");\n const typeaheadTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Focus first item when opened and portal content element is mounted\n React.useEffect(() => {\n if (isOpen && contentElement) {\n const focusFirst = () => {\n if (!contentElement) return;\n const enabledItems = Array.from(\n contentElement.querySelectorAll<HTMLElement>(\n '[role^=\"menuitem\"]:not([aria-disabled=\"true\"]):not([data-disabled=\"true\"])',\n ),\n );\n if (enabledItems.length > 0) {\n enabledItems[0]?.focus();\n } else {\n contentElement.focus();\n }\n };\n\n focusFirst();\n const frame = requestAnimationFrame(focusFirst);\n return () => cancelAnimationFrame(frame);\n }\n return undefined;\n }, [isOpen, contentElement]);\n\n // Outside click dismissal\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node | null;\n if (\n target &&\n contentRef.current &&\n !contentRef.current.contains(target) &&\n triggerRef.current &&\n !triggerRef.current.contains(target)\n ) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"pointerdown\", handlePointerDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n };\n }, [isOpen, contentRef, triggerRef, setIsOpen]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || !contentRef.current) return;\n\n const enabledItems = Array.from(\n contentRef.current.querySelectorAll<HTMLElement>(\n '[role^=\"menuitem\"]:not([aria-disabled=\"true\"]):not([data-disabled=\"true\"])',\n ),\n );\n\n if (enabledItems.length === 0 && e.key !== \"Escape\") return;\n\n const currentFocused = document.activeElement as HTMLElement | null;\n const currentIndex = currentFocused ? enabledItems.indexOf(currentFocused) : -1;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextIndex =\n currentIndex === -1 ? 0 : (currentIndex + 1) % enabledItems.length;\n enabledItems[nextIndex]?.focus();\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevIndex =\n currentIndex === -1\n ? enabledItems.length - 1\n : (currentIndex - 1 + enabledItems.length) % enabledItems.length;\n enabledItems[prevIndex]?.focus();\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n enabledItems[0]?.focus();\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n enabledItems[enabledItems.length - 1]?.focus();\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setIsOpen(false);\n triggerRef.current?.focus();\n return;\n }\n\n if (e.key === \"Tab\") {\n setIsOpen(false);\n return;\n }\n\n // Typeahead\n if (e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {\n if (typeaheadTimerRef.current) {\n clearTimeout(typeaheadTimerRef.current);\n }\n\n typeaheadBufferRef.current += e.key.toLowerCase();\n const buffer = typeaheadBufferRef.current;\n\n typeaheadTimerRef.current = setTimeout(() => {\n typeaheadBufferRef.current = \"\";\n }, 500);\n\n const startIndex = currentIndex >= 0 ? currentIndex + 1 : 0;\n const reordered = [\n ...enabledItems.slice(startIndex),\n ...enabledItems.slice(0, startIndex),\n ];\n\n const match = reordered.find((it) =>\n it.textContent?.trim().toLowerCase().startsWith(buffer),\n );\n\n if (match) {\n match.focus();\n }\n }\n };\n\n if (!isOpen) return null;\n\n const contentClasses = [\n \"cl-context-menu__content\",\n \"cl-dropdown-menu__content\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <Portal>\n <div\n ref={mergedRef}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n data-positioned={isPositioned ? \"true\" : \"false\"}\n style={{\n ...floatingStyles,\n ...props.style,\n }}\n className={contentClasses}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </Portal>\n );\n },\n);\nContextMenuContent.displayName = \"ContextMenu.Content\";\n\nexport const ContextMenuItem = DropdownMenuItem;\nexport const ContextMenuCheckboxItem = DropdownMenuCheckboxItem;\nexport const ContextMenuRadioGroup = DropdownMenuRadioGroup;\nexport const ContextMenuRadioItem = DropdownMenuRadioItem;\nexport const ContextMenuSeparator = DropdownMenuSeparator;\nexport const ContextMenuLabel = DropdownMenuLabel;\n\nexport const ContextMenu = Object.assign(ContextMenuRoot, {\n Root: ContextMenuRoot,\n Trigger: ContextMenuTrigger,\n Content: ContextMenuContent,\n Item: ContextMenuItem,\n CheckboxItem: ContextMenuCheckboxItem,\n RadioGroup: ContextMenuRadioGroup,\n RadioItem: ContextMenuRadioItem,\n Separator: ContextMenuSeparator,\n Label: ContextMenuLabel,\n});\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { Slot } from \"../../primitives/Slot\";\nimport {\n acquireBodyScrollLock,\n releaseBodyScrollLock,\n} from \"../Dialog/Dialog\";\nimport type {\n DrawerRootProps,\n DrawerTriggerProps,\n DrawerPortalProps,\n DrawerOverlayProps,\n DrawerContentProps,\n DrawerHeaderProps,\n DrawerTitleProps,\n DrawerDescriptionProps,\n DrawerBodyProps,\n DrawerFooterProps,\n DrawerCloseProps,\n DrawerPlacement,\n DrawerSize,\n} from \"./Drawer.types\";\n\ninterface DrawerContextValue {\n isOpen: boolean;\n onOpen: () => void;\n onClose: () => void;\n closeOnEsc: boolean;\n closeOnOverlayClick: boolean;\n placement: DrawerPlacement;\n size: DrawerSize;\n titleId: string;\n setTitleId: (id: string) => void;\n descriptionId: string;\n setDescriptionId: (id: string) => void;\n initialFocusRef?: React.RefObject<HTMLElement | null> | undefined;\n finalFocusRef?: React.RefObject<HTMLElement | null> | undefined;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n}\n\nconst DrawerContext = React.createContext<DrawerContextValue | null>(null);\n\nexport function useDrawerContext(componentName: string): DrawerContextValue {\n const context = React.useContext(DrawerContext);\n if (!context) {\n throw new Error(\n `<Drawer.${componentName}> must be used within a <Drawer> or <DrawerRoot> component.`,\n );\n }\n return context;\n}\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * DrawerRoot component - manages controlled/uncontrolled visibility, placement, and focus refs.\n */\nexport const DrawerRoot: React.FC<DrawerRootProps> = ({\n open: controlledOpen,\n isOpen: legacyOpen,\n defaultOpen = false,\n onOpenChange,\n onClose: onCloseProp,\n placement = \"right\",\n size = \"md\",\n closeOnEsc = true,\n closeOnOverlayClick = true,\n initialFocusRef,\n finalFocusRef,\n children,\n}) => {\n const effectiveOpen = controlledOpen !== undefined ? controlledOpen : legacyOpen;\n\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: effectiveOpen,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const [titleId, setTitleId] = React.useState<string>(\"\");\n const [descriptionId, setDescriptionId] = React.useState<string>(\"\");\n const triggerRef = React.useRef<HTMLElement | null>(null);\n\n const handleOpen = React.useCallback(() => {\n setIsOpen(true);\n }, [setIsOpen]);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n onCloseProp?.();\n }, [setIsOpen, onCloseProp]);\n\n const contextValue = React.useMemo<DrawerContextValue>(\n () => ({\n isOpen: !!isOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n closeOnEsc,\n closeOnOverlayClick,\n placement,\n size,\n titleId,\n setTitleId,\n descriptionId,\n setDescriptionId,\n initialFocusRef,\n finalFocusRef,\n triggerRef,\n }),\n [\n isOpen,\n handleOpen,\n handleClose,\n closeOnEsc,\n closeOnOverlayClick,\n placement,\n size,\n titleId,\n descriptionId,\n initialFocusRef,\n finalFocusRef,\n ],\n );\n\n return (\n <DrawerContext.Provider value={contextValue}>\n {children}\n </DrawerContext.Provider>\n );\n};\nDrawerRoot.displayName = \"Drawer.Root\";\n\n/**\n * DrawerTrigger - button or custom element that opens the drawer.\n */\nexport const DrawerTrigger = React.forwardRef<HTMLElement, DrawerTriggerProps>(\n ({ asChild = false, onClick, children, className, ...props }, forwardedRef) => {\n const { onOpen, triggerRef } = useDrawerContext(\"Trigger\");\n const mergedRef = useMergeRefs(triggerRef, forwardedRef);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onOpen();\n }\n };\n\n const triggerClasses = [\n \"cl-drawer__trigger\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={mergedRef}\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n className={triggerClasses}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={mergedRef as React.Ref<HTMLButtonElement>}\n type=\"button\"\n aria-haspopup=\"dialog\"\n onClick={handleClick}\n className={triggerClasses}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\nDrawerTrigger.displayName = \"Drawer.Trigger\";\n\n/**\n * DrawerPortal - mounts drawer children into document.body or container.\n */\nexport const DrawerPortal: React.FC<DrawerPortalProps> = ({\n container,\n children,\n}) => {\n const { isOpen } = useDrawerContext(\"Portal\");\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal {...(container !== undefined ? { container } : {})}>\n {children}\n </Portal>\n );\n};\nDrawerPortal.displayName = \"Drawer.Portal\";\n\n/**\n * DrawerOverlay - background backdrop with dismissal click handling.\n */\nexport const DrawerOverlay = React.forwardRef<\n HTMLDivElement,\n DrawerOverlayProps\n>(\n (\n { asChild = false, className, onClick, children, ...props },\n forwardedRef,\n ) => {\n const { onClose, closeOnOverlayClick } = useDrawerContext(\"Overlay\");\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(e);\n if (\n !e.defaultPrevented &&\n closeOnOverlayClick &&\n e.target === e.currentTarget\n ) {\n onClose();\n }\n };\n\n const classNames = [\n \"cl-drawer__overlay\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={forwardedRef}\n className={classNames}\n onClick={handleClick}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <div\n ref={forwardedRef}\n className={classNames}\n onClick={handleClick}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDrawerOverlay.displayName = \"Drawer.Overlay\";\n\n/**\n * DrawerContent - edge-anchored sliding modal panel with focus trapping and body scroll locking.\n */\nexport const DrawerContent = React.forwardRef<\n HTMLDivElement,\n DrawerContentProps\n>(\n (\n {\n placement: propPlacement,\n size: propSize,\n asChild = false,\n className,\n children,\n onKeyDown,\n ...props\n },\n forwardedRef,\n ) => {\n const {\n isOpen,\n onClose,\n closeOnEsc,\n placement: contextPlacement,\n size: contextSize,\n titleId,\n descriptionId,\n initialFocusRef,\n finalFocusRef,\n triggerRef,\n } = useDrawerContext(\"Content\");\n\n const placement = propPlacement ?? contextPlacement;\n const size = propSize ?? contextSize;\n\n const internalRef = React.useRef<HTMLDivElement | null>(null);\n const mergedRef = useMergeRefs(internalRef, forwardedRef);\n const prevFocusedRef = React.useRef<HTMLElement | null>(null);\n\n // Reuse Dialog's shared reference-counted body scroll lock\n React.useEffect(() => {\n if (!isOpen) return;\n\n acquireBodyScrollLock();\n\n return () => {\n releaseBodyScrollLock();\n };\n }, [isOpen]);\n\n // Focus management lifecycle\n React.useEffect(() => {\n if (!isOpen) return;\n\n if (typeof document !== \"undefined\") {\n prevFocusedRef.current = document.activeElement as HTMLElement | null;\n }\n\n const frameId = requestAnimationFrame(() => {\n if (initialFocusRef?.current) {\n initialFocusRef.current.focus();\n } else if (internalRef.current) {\n const focusables =\n internalRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR);\n if (focusables.length > 0) {\n focusables[0]?.focus();\n } else {\n internalRef.current.focus();\n }\n }\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n const elementToFocus =\n finalFocusRef?.current ??\n triggerRef.current ??\n prevFocusedRef.current;\n if (elementToFocus && typeof elementToFocus.focus === \"function\") {\n elementToFocus.focus();\n }\n };\n }, [isOpen, initialFocusRef, finalFocusRef, triggerRef]);\n\n // Keyboard trap and Escape listener\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented) return;\n\n if (e.key === \"Escape\" && closeOnEsc) {\n e.stopPropagation();\n onClose();\n return;\n }\n\n if (e.key === \"Tab\" && internalRef.current) {\n const focusables = Array.from(\n internalRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter(\n (el) =>\n !el.hasAttribute(\"disabled\") &&\n el.getAttribute(\"aria-hidden\") !== \"true\",\n );\n\n if (focusables.length === 0) {\n e.preventDefault();\n return;\n }\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n if (e.shiftKey) {\n if (document.activeElement === first) {\n e.preventDefault();\n last?.focus();\n }\n } else {\n if (document.activeElement === last) {\n e.preventDefault();\n first?.focus();\n }\n }\n }\n };\n\n const contentClasses = [\n \"cl-drawer__content\",\n `cl-drawer__content--${placement}`,\n `cl-drawer__content--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n ref={mergedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-placement={placement}\n data-size={size}\n {...(titleId ? { \"aria-labelledby\": titleId } : {})}\n {...(descriptionId ? { \"aria-describedby\": descriptionId } : {})}\n className={contentClasses}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\nDrawerContent.displayName = \"Drawer.Content\";\n\n/**\n * DrawerHeader - header section containing title and optional close button.\n */\nexport const DrawerHeader = React.forwardRef<HTMLDivElement, DrawerHeaderProps>(\n ({ className, children, ...props }, forwardedRef) => {\n const classNames = [\n \"cl-drawer__header\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div ref={forwardedRef} className={classNames} {...props}>\n {children}\n </div>\n );\n },\n);\nDrawerHeader.displayName = \"Drawer.Header\";\n\nlet titleIdCounter = 0;\n\n/**\n * DrawerTitle - accessible dialog heading.\n */\nexport const DrawerTitle = React.forwardRef<\n HTMLHeadingElement,\n DrawerTitleProps\n>(({ asChild = false, id: propId, className, children, ...props }, forwardedRef) => {\n const { setTitleId } = useDrawerContext(\"Title\");\n const autoIdRef = React.useRef<string>(\"\");\n\n if (!autoIdRef.current) {\n autoIdRef.current = propId || `cl-drawer-title-${++titleIdCounter}`;\n }\n\n const titleId = propId || autoIdRef.current;\n\n React.useEffect(() => {\n setTitleId(titleId);\n return () => {\n setTitleId(\"\");\n };\n }, [titleId, setTitleId]);\n\n const classNames = [\n \"cl-drawer__title\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={forwardedRef} id={titleId} className={classNames} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <h2 ref={forwardedRef} id={titleId} className={classNames} {...props}>\n {children}\n </h2>\n );\n});\nDrawerTitle.displayName = \"Drawer.Title\";\n\nlet descriptionIdCounter = 0;\n\n/**\n * DrawerDescription - accessible dialog description paragraph.\n */\nexport const DrawerDescription = React.forwardRef<\n HTMLParagraphElement,\n DrawerDescriptionProps\n>(({ asChild = false, id: propId, className, children, ...props }, forwardedRef) => {\n const { setDescriptionId } = useDrawerContext(\"Description\");\n const autoIdRef = React.useRef<string>(\"\");\n\n if (!autoIdRef.current) {\n autoIdRef.current = propId || `cl-drawer-desc-${++descriptionIdCounter}`;\n }\n\n const descId = propId || autoIdRef.current;\n\n React.useEffect(() => {\n setDescriptionId(descId);\n return () => {\n setDescriptionId(\"\");\n };\n }, [descId, setDescriptionId]);\n\n const classNames = [\n \"cl-drawer__description\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot ref={forwardedRef} id={descId} className={classNames} {...props}>\n {children}\n </Slot>\n );\n }\n\n return (\n <p ref={forwardedRef} id={descId} className={classNames} {...props}>\n {children}\n </p>\n );\n});\nDrawerDescription.displayName = \"Drawer.Description\";\n\n/**\n * DrawerBody - scrollable main content area.\n */\nexport const DrawerBody = React.forwardRef<HTMLDivElement, DrawerBodyProps>(\n ({ className, children, ...props }, forwardedRef) => {\n const classNames = [\n \"cl-drawer__body\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div ref={forwardedRef} className={classNames} {...props}>\n {children}\n </div>\n );\n },\n);\nDrawerBody.displayName = \"Drawer.Body\";\n\n/**\n * DrawerFooter - bottom action buttons container.\n */\nexport const DrawerFooter = React.forwardRef<HTMLDivElement, DrawerFooterProps>(\n ({ className, children, ...props }, forwardedRef) => {\n const classNames = [\n \"cl-drawer__footer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div ref={forwardedRef} className={classNames} {...props}>\n {children}\n </div>\n );\n },\n);\nDrawerFooter.displayName = \"Drawer.Footer\";\n\n/**\n * DrawerClose - button that triggers drawer dismissal.\n */\nexport const DrawerClose = React.forwardRef<\n HTMLButtonElement,\n DrawerCloseProps\n>(({ asChild = false, onClick, children, className, ...props }, forwardedRef) => {\n const { onClose } = useDrawerContext(\"Close\");\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (!e.defaultPrevented) {\n onClose();\n }\n };\n\n const classNames = [\n \"cl-drawer__close\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (asChild) {\n return (\n <Slot\n ref={forwardedRef}\n type=\"button\"\n aria-label=\"Close drawer\"\n onClick={handleClick}\n className={classNames}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <button\n ref={forwardedRef}\n type=\"button\"\n aria-label=\"Close drawer\"\n onClick={handleClick}\n className={classNames}\n {...props}\n >\n {children || \"✕\"}\n </button>\n );\n});\nDrawerClose.displayName = \"Drawer.Close\";\n\n/**\n * Drawer Compound Component\n */\nexport const Drawer = Object.assign(DrawerRoot, {\n Root: DrawerRoot,\n Trigger: DrawerTrigger,\n Portal: DrawerPortal,\n Overlay: DrawerOverlay,\n Content: DrawerContent,\n Header: DrawerHeader,\n Title: DrawerTitle,\n Description: DrawerDescription,\n Body: DrawerBody,\n Footer: DrawerFooter,\n Close: DrawerClose,\n});\n\n/**\n * Sheet alias\n */\nexport const Sheet = Drawer;\nexport const SheetRoot = DrawerRoot;\nexport const SheetTrigger = DrawerTrigger;\nexport const SheetPortal = DrawerPortal;\nexport const SheetOverlay = DrawerOverlay;\nexport const SheetContent = DrawerContent;\nexport const SheetHeader = DrawerHeader;\nexport const SheetTitle = DrawerTitle;\nexport const SheetDescription = DrawerDescription;\nexport const SheetBody = DrawerBody;\nexport const SheetFooter = DrawerFooter;\nexport const SheetClose = DrawerClose;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { styled } from \"../../system/styled\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport type { LinkProps, LinkUnderline, LinkColorScheme } from \"./Link.types\";\n\nexport type { LinkProps, LinkUnderline, LinkColorScheme };\n\nconst StyledLinkRoot = styled(\"a\", {\n name: \"ChellaaLink\",\n slot: \"Root\",\n shouldForwardProp: (prop) =>\n prop !== \"underline\" &&\n prop !== \"colorScheme\" &&\n prop !== \"isExternal\" &&\n prop !== \"showExternalIcon\" &&\n prop !== \"isDisabled\" &&\n prop !== \"asChild\" &&\n prop !== \"component\",\n})({});\n\n/**\n * Accessible external link icon (rendered with aria-hidden=\"true\").\n */\nfunction ExternalLinkIcon() {\n return (\n <svg\n className=\"cl-link__external-icon\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n );\n}\n\n/**\n * Link component styling native anchor elements with design system tokens,\n * underline variants, security guards for external destinations, and Slot composition.\n *\n * @example\n * ```tsx\n * <Link href=\"/docs\">Documentation</Link>\n * <Link href=\"https://github.com\" isExternal>GitHub</Link>\n * ```\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function Link(props, forwardedRef) {\n const {\n underline = \"hover\",\n colorScheme = \"primary\",\n isExternal = false,\n showExternalIcon = true,\n isDisabled = false,\n asChild = false,\n component = \"a\",\n as,\n href,\n target: targetProp,\n rel: relProp,\n onClick,\n className,\n children,\n style,\n sx,\n ...rest\n } = props;\n\n // Secure rel calculation\n const isBlank = targetProp === \"_blank\" || isExternal;\n const target = targetProp ?? (isExternal ? \"_blank\" : undefined);\n\n let rel = relProp;\n if (isBlank) {\n const parts = new Set((relProp ?? \"\").split(\" \").filter(Boolean));\n parts.add(\"noopener\");\n parts.add(\"noreferrer\");\n rel = Array.from(parts).join(\" \");\n }\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n };\n\n const linkClasses = classNames(\n \"cl-link\",\n `cl-link--underline-${underline}`,\n `cl-link--color-${colorScheme}`,\n isDisabled && \"cl-link--disabled\",\n className,\n );\n\n const targetTag = component || as;\n\n if (asChild) {\n return (\n <StyledLinkRoot\n as={Slot}\n ref={forwardedRef}\n href={isDisabled ? undefined : href}\n target={target}\n rel={rel}\n onClick={handleClick}\n aria-disabled={isDisabled ? \"true\" : undefined}\n tabIndex={isDisabled ? -1 : props.tabIndex}\n className={linkClasses}\n style={style}\n sx={sx}\n {...rest}\n >\n {children}\n </StyledLinkRoot>\n );\n }\n\n return (\n <StyledLinkRoot\n as={targetTag}\n ref={forwardedRef}\n href={isDisabled ? undefined : href}\n target={target}\n rel={rel}\n onClick={handleClick}\n aria-disabled={isDisabled ? \"true\" : undefined}\n tabIndex={isDisabled ? -1 : props.tabIndex}\n className={linkClasses}\n style={style}\n sx={sx}\n {...rest}\n >\n {children}\n {isExternal && showExternalIcon && <ExternalLinkIcon />}\n </StyledLinkRoot>\n );\n },\n);\n\nLink.displayName = \"Link\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { styled } from \"../../system/styled\";\nimport { Slot } from \"../../primitives/Slot\";\nimport { classNames } from \"../../utils/classNames\";\nimport { Link } from \"../Link/Link\";\nimport type {\n BreadcrumbsProps,\n BreadcrumbListProps,\n BreadcrumbItemProps,\n BreadcrumbLinkProps,\n BreadcrumbPageProps,\n BreadcrumbSeparatorProps,\n BreadcrumbEllipsisProps,\n} from \"./Breadcrumbs.types\";\n\ninterface BreadcrumbsContextValue {\n separator: React.ReactNode;\n}\n\nconst BreadcrumbsContext = React.createContext<BreadcrumbsContextValue>({\n separator: \"/\",\n});\n\nconst StyledBreadcrumbsRoot = styled(\"nav\", {\n name: \"ChellaaBreadcrumbs\",\n slot: \"Root\",\n})({});\n\n/**\n * Default Chevron Separator Icon.\n */\nfunction DefaultChevronSeparator() {\n return (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n );\n}\n\n/**\n * Breadcrumbs navigation landmark container.\n *\n * @example\n * ```tsx\n * <Breadcrumbs>\n * <BreadcrumbList>\n * <BreadcrumbItem>\n * <BreadcrumbLink href=\"/\">Home</BreadcrumbLink>\n * </BreadcrumbItem>\n * <BreadcrumbSeparator />\n * <BreadcrumbItem>\n * <BreadcrumbPage>Settings</BreadcrumbPage>\n * </BreadcrumbItem>\n * </BreadcrumbList>\n * </Breadcrumbs>\n * ```\n */\nexport const BreadcrumbsRoot = React.forwardRef<HTMLElement, BreadcrumbsProps>(\n function Breadcrumbs(\n {\n \"aria-label\": ariaLabel = \"Breadcrumb\",\n separator = <DefaultChevronSeparator />,\n className,\n children,\n style,\n sx,\n ...rest\n },\n ref,\n ) {\n const contextValue = React.useMemo(() => ({ separator }), [separator]);\n\n return (\n <BreadcrumbsContext.Provider value={contextValue}>\n <StyledBreadcrumbsRoot\n as=\"nav\"\n ref={ref}\n aria-label={ariaLabel}\n className={classNames(\"cl-breadcrumb\", className)}\n style={style}\n sx={sx}\n {...rest}\n >\n {children}\n </StyledBreadcrumbsRoot>\n </BreadcrumbsContext.Provider>\n );\n },\n);\n\nBreadcrumbsRoot.displayName = \"Breadcrumbs\";\n\n/**\n * Ordered list container for breadcrumb items.\n */\nexport const BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(\n function BreadcrumbList({ className, children, ...props }, ref) {\n return (\n <ol\n ref={ref}\n className={classNames(\"cl-breadcrumb__list\", className)}\n {...props}\n >\n {children}\n </ol>\n );\n },\n);\n\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\n/**\n * Individual item wrapper inside the breadcrumb list.\n */\nexport const BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n function BreadcrumbItem({ className, children, ...props }, ref) {\n return (\n <li\n ref={ref}\n className={classNames(\"cl-breadcrumb__item\", className)}\n {...props}\n >\n {children}\n </li>\n );\n },\n);\n\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\n/**\n * Navigable link inside a breadcrumb item.\n */\nexport const BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n function BreadcrumbLink({ asChild = false, className, colorScheme = \"subtle\", ...props }, ref) {\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n className={classNames(\"cl-breadcrumb__link\", className)}\n {...props}\n />\n );\n }\n\n return (\n <Link\n ref={ref}\n colorScheme={colorScheme}\n className={classNames(\"cl-breadcrumb__link\", className)}\n {...props}\n />\n );\n },\n);\n\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\n/**\n * Terminal current page indicator inside the breadcrumb list.\n * Automatically marks with aria-current=\"page\" and prevents link navigation.\n */\nexport const BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(\n function BreadcrumbPage({ asChild = false, className, children, ...props }, ref) {\n if (asChild) {\n return (\n <Slot\n ref={ref as React.Ref<HTMLElement>}\n aria-current=\"page\"\n className={classNames(\"cl-breadcrumb__page\", className)}\n {...props}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={classNames(\"cl-breadcrumb__page\", className)}\n {...props}\n >\n {children}\n </span>\n );\n },\n);\n\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\n/**\n * Visual separator element between breadcrumb items, hidden from assistive technology.\n */\nexport const BreadcrumbSeparator = React.forwardRef<HTMLLIElement, BreadcrumbSeparatorProps>(\n function BreadcrumbSeparator({ className, children, ...props }, ref) {\n const { separator: defaultSeparator } = React.useContext(BreadcrumbsContext);\n\n return (\n <li\n ref={ref}\n role=\"presentation\"\n aria-hidden=\"true\"\n className={classNames(\"cl-breadcrumb__separator\", className)}\n {...props}\n >\n {children ?? defaultSeparator}\n </li>\n );\n },\n);\n\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\n/**\n * Collapsed items indicator (ellipsis) for long breadcrumb chains.\n */\nexport const BreadcrumbEllipsis = React.forwardRef<HTMLSpanElement, BreadcrumbEllipsisProps>(\n function BreadcrumbEllipsis(\n { \"aria-label\": ariaLabel = \"More breadcrumb items\", className, ...props },\n ref,\n ) {\n return (\n <span\n ref={ref}\n role=\"presentation\"\n className={classNames(\"cl-breadcrumb__ellipsis\", className)}\n {...props}\n >\n <span className=\"cl-sr-only\">{ariaLabel}</span>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"1\" />\n <circle cx=\"19\" cy=\"12\" r=\"1\" />\n <circle cx=\"5\" cy=\"12\" r=\"1\" />\n </svg>\n </span>\n );\n },\n);\n\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\n/**\n * Breadcrumbs Compound Component\n */\nexport const Breadcrumbs = Object.assign(BreadcrumbsRoot, {\n Root: BreadcrumbsRoot,\n List: BreadcrumbList,\n Item: BreadcrumbItem,\n Link: BreadcrumbLink,\n Page: BreadcrumbPage,\n Separator: BreadcrumbSeparator,\n Ellipsis: BreadcrumbEllipsis,\n});\n\nexport const Breadcrumb = Breadcrumbs;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport { formatLocalDate } from \"../../utils/date\";\nimport { Calendar } from \"../Calendar/Calendar\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport {\n Popover,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n} from \"../Popover\";\nimport type { DateRange, DateRangePickerProps } from \"./DateRangePicker.types\";\n\nfunction formatRangeString(\n range: DateRange | null,\n format: string,\n locale: string,\n separator: string\n): string {\n if (!range?.startDate) return \"\";\n const startStr = formatLocalDate(range.startDate, format, locale);\n if (!range.endDate) return `${startStr}${separator}...`;\n const endStr = formatLocalDate(range.endDate, format, locale);\n return `${startStr}${separator}${endStr}`;\n}\n\n/**\n * DateRangePicker combines formatted range input display with an anchored calendar popover dropdown\n * supporting dual-date range selection, bounds constraints, keyboard navigation, and FormField integration.\n *\n * @example\n * ```tsx\n * <DateRangePicker\n * value={dateRange}\n * onValueChange={setDateRange}\n * rangeSeparator=\" to \"\n * />\n * ```\n */\nexport const DateRangePicker = React.forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n format = \"YYYY-MM-DD\",\n rangeSeparator = \" – \",\n placeholder,\n isOpen: isOpenProp,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n isInvalid = false,\n isClearable = true,\n minDate,\n maxDate,\n isDateDisabled,\n firstDayOfWeek = 0,\n locale = \"en-US\",\n defaultFocusedDate,\n size = \"md\",\n id,\n name,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n ) => {\n // 1. FormField cascade integration\n const formField = useFormField();\n const effectiveId = id ?? formField?.id;\n const effectiveDisabled = isDisabled || (formField?.disabled ?? false);\n const effectiveInvalid = isInvalid || (formField?.error ?? false);\n\n // 2. Controlled / Uncontrolled Selection State\n const [selectedRange, setSelectedRange] = useControllableState<DateRange | null>({\n value: valueProp,\n defaultValue: defaultValue ?? null,\n onChange: onValueChange,\n });\n\n // 3. Controlled / Uncontrolled Open State\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const controlRef = React.useRef<HTMLDivElement | null>(null);\n\n // Formatted text representation\n const displayValue = React.useMemo(() => {\n return formatRangeString(selectedRange, format, locale, rangeSeparator);\n }, [selectedRange, format, locale, rangeSeparator]);\n\n // Handle Range Selection from Calendar\n const handleRangeChange = React.useCallback(\n (newRange: DateRange) => {\n setSelectedRange(newRange);\n // Automatically close when both start and end date are selected\n if (newRange.startDate && newRange.endDate) {\n setTimeout(() => {\n setIsOpen(false);\n inputRef.current?.focus();\n }, 120);\n }\n },\n [setSelectedRange, setIsOpen]\n );\n\n // Clear range\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (effectiveDisabled) return;\n const emptyRange: DateRange = { startDate: null, endDate: null };\n setSelectedRange(emptyRange);\n inputRef.current?.focus();\n },\n [effectiveDisabled, setSelectedRange]\n );\n\n // Keyboard navigation from input\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === \"ArrowDown\" || e.key === \"Enter\") {\n if (!isOpen) {\n e.preventDefault();\n setIsOpen(true);\n }\n } else if (e.key === \"Escape\" && isOpen) {\n e.preventDefault();\n setIsOpen(false);\n }\n },\n [effectiveDisabled, isOpen, setIsOpen]\n );\n\n // Accessible description wiring\n const ariaDescribedBy = [\n rest[\"aria-describedby\"],\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const hasValue = Boolean(selectedRange?.startDate);\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"cl-daterangepicker\",\n `cl-daterangepicker--${size}`,\n effectiveDisabled && \"cl-daterangepicker--disabled\",\n effectiveInvalid && \"cl-daterangepicker--error\",\n isOpen && \"cl-daterangepicker--open\",\n className\n )}\n {...rest}\n >\n <Popover\n isOpen={effectiveDisabled ? false : isOpen}\n onOpenChange={(nextOpen) => {\n if (!effectiveDisabled) {\n setIsOpen(nextOpen);\n }\n }}\n placement=\"bottom-start\"\n offset={4}\n trapFocus={false}\n returnFocusRef={inputRef}\n referenceElement={controlRef}\n >\n <div ref={controlRef} className=\"cl-daterangepicker__control\">\n {/* Left Calendar Trigger Button */}\n <button\n type=\"button\"\n className=\"cl-daterangepicker__icon-btn\"\n aria-label={isOpen ? \"Close calendar\" : \"Open calendar\"}\n disabled={effectiveDisabled}\n tabIndex={-1}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!effectiveDisabled) {\n setIsOpen((prev) => !prev);\n inputRef.current?.focus();\n }\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z\" />\n </svg>\n </button>\n\n {/* Read-only formatted range input */}\n <input\n ref={inputRef}\n id={effectiveId}\n name={name}\n type=\"text\"\n readOnly\n disabled={effectiveDisabled}\n aria-disabled={effectiveDisabled ? \"true\" : undefined}\n aria-invalid={effectiveInvalid ? \"true\" : undefined}\n aria-label={ariaLabel ?? \"Date range\"}\n aria-describedby={ariaDescribedBy}\n placeholder={placeholder ?? `${format}${rangeSeparator}${format}`}\n value={displayValue}\n onClick={() => {\n if (!effectiveDisabled && !isOpen) {\n setIsOpen(true);\n }\n }}\n onKeyDown={handleInputKeyDown}\n className=\"cl-daterangepicker__input\"\n autoComplete=\"off\"\n />\n\n {/* Action buttons: Clear & Open Toggle */}\n <div className=\"cl-daterangepicker__actions\">\n {isClearable && hasValue && !effectiveDisabled && (\n <button\n type=\"button\"\n className=\"cl-daterangepicker__clear-btn\"\n aria-label=\"Clear date range\"\n onClick={handleClear}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\" />\n </svg>\n </button>\n )}\n\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"cl-daterangepicker__toggle-btn\"\n aria-label={isOpen ? \"Close calendar\" : \"Toggle calendar\"}\n disabled={effectiveDisabled}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <path\n fillRule=\"evenodd\"\n d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"\n />\n </svg>\n </button>\n </PopoverTrigger>\n </div>\n </div>\n\n {/* Floating Calendar Overlay */}\n <PopoverPortal>\n <PopoverContent className=\"cl-daterangepicker__popover\" hasArrow={false}>\n <Calendar\n isRange\n rangeValue={selectedRange}\n onRangeChange={handleRangeChange}\n minDate={minDate}\n maxDate={maxDate}\n isDateDisabled={isDateDisabled}\n firstDayOfWeek={firstDayOfWeek}\n locale={locale}\n defaultFocusedDate={selectedRange?.startDate ?? defaultFocusedDate}\n />\n </PopoverContent>\n </PopoverPortal>\n </Popover>\n </div>\n );\n }\n);\n\nDateRangePicker.displayName = \"DateRangePicker\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport {\n Popover,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n} from \"../Popover\";\nimport type { TimeFormat, TimePickerProps } from \"./TimePicker.types\";\n\ninterface ParsedTime {\n hours: number; // 0-23\n minutes: number; // 0-59\n}\n\nfunction parse24HourTime(str?: string | null): ParsedTime | null {\n if (!str) return null;\n const match = /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/.exec(str.trim());\n if (!match) return null;\n return {\n hours: parseInt(match[1]!, 10),\n minutes: parseInt(match[2]!, 10),\n };\n}\n\nfunction formatTimeString(\n parsed: ParsedTime | null,\n format: TimeFormat\n): string {\n if (!parsed) return \"\";\n const { hours, minutes } = parsed;\n const mm = String(minutes).padStart(2, \"0\");\n\n if (format === \"24h\") {\n const hh = String(hours).padStart(2, \"0\");\n return `${hh}:${mm}`;\n }\n\n const period = hours >= 12 ? \"PM\" : \"AM\";\n const h12 = hours % 12 === 0 ? 12 : hours % 12;\n const hh = String(h12).padStart(2, \"0\");\n return `${hh}:${mm} ${period}`;\n}\n\nfunction to24HourString(hours: number, minutes: number): string {\n const hh = String(hours).padStart(2, \"0\");\n const mm = String(minutes).padStart(2, \"0\");\n return `${hh}:${mm}`;\n}\n\nfunction isTimeWithinBounds(\n hours: number,\n minutes: number,\n minTime?: string,\n maxTime?: string\n): boolean {\n const totalMinutes = hours * 60 + minutes;\n\n if (minTime) {\n const minParsed = parse24HourTime(minTime);\n if (minParsed && totalMinutes < minParsed.hours * 60 + minParsed.minutes) {\n return false;\n }\n }\n\n if (maxTime) {\n const maxParsed = parse24HourTime(maxTime);\n if (maxParsed && totalMinutes > maxParsed.hours * 60 + maxParsed.minutes) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * TimePicker provides an accessible time selection input and anchored column popover\n * supporting 12-hour AM/PM and 24-hour display modes, configurable minute stepping,\n * boundary validation, keyboard stepping, and FormField integration.\n *\n * @example\n * ```tsx\n * <TimePicker value=\"14:30\" onValueChange={setTime} />\n * <TimePicker format=\"24h\" minuteStep={15} />\n * ```\n */\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value: valueProp,\n defaultValue,\n onValueChange,\n format = \"12h\",\n minuteStep = 5,\n minTime,\n maxTime,\n isOpen: isOpenProp,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n isReadOnly = false,\n isInvalid = false,\n isClearable = true,\n placeholder,\n size = \"md\",\n id,\n name,\n className,\n \"aria-label\": ariaLabel,\n ...rest\n },\n ref\n ) => {\n // 1. FormField Context\n const formField = useFormField();\n const effectiveId = id ?? formField?.id;\n const effectiveDisabled = isDisabled || (formField?.disabled ?? false);\n const effectiveInvalid = isInvalid || (formField?.error ?? false);\n const effectiveReadOnly = isReadOnly || (formField?.readOnly ?? false);\n\n // 2. Selection State (always stored as \"HH:mm\" 24h string internally)\n const [selectedTime, setSelectedTime] = useControllableState<string | null>({\n value: valueProp,\n defaultValue: defaultValue ?? null,\n onChange: (val) => {\n if (val !== undefined && val !== null) {\n onValueChange?.(val);\n } else {\n onValueChange?.(\"\");\n }\n },\n });\n\n // 3. Popover Open State\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n const parsedTime = React.useMemo(\n () => parse24HourTime(selectedTime),\n [selectedTime]\n );\n\n // 4. Formatted Display Value\n const displayValue = React.useMemo(() => {\n return formatTimeString(parsedTime, format);\n }, [parsedTime, format]);\n\n const [inputValue, setInputValue] = React.useState<string>(displayValue);\n\n React.useEffect(() => {\n setInputValue(displayValue);\n }, [displayValue]);\n\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const controlRef = React.useRef<HTMLDivElement | null>(null);\n\n // Time commit helper\n const commitTime = React.useCallback(\n (h: number, m: number) => {\n if (!isTimeWithinBounds(h, m, minTime, maxTime)) return;\n const newTimeStr = to24HourString(h, m);\n setSelectedTime(newTimeStr);\n },\n [minTime, maxTime, setSelectedTime]\n );\n\n // Increment / Decrement stepping\n const stepMinutes = React.useCallback(\n (direction: 1 | -1) => {\n const current = parsedTime ?? { hours: 12, minutes: 0 };\n let total = current.hours * 60 + current.minutes + direction * minuteStep;\n if (total < 0) total += 24 * 60;\n total = total % (24 * 60);\n\n const newH = Math.floor(total / 60);\n const newM = total % 60;\n commitTime(newH, newM);\n },\n [parsedTime, minuteStep, commitTime]\n );\n\n // Clear\n const handleClear = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n if (effectiveDisabled || effectiveReadOnly) return;\n setSelectedTime(null);\n setInputValue(\"\");\n inputRef.current?.focus();\n },\n [effectiveDisabled, effectiveReadOnly, setSelectedTime]\n );\n\n // Keyboard navigation in input\n const handleInputKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (effectiveDisabled || effectiveReadOnly) return;\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n stepMinutes(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n stepMinutes(-1);\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n } else if (e.key === \"Escape\" && isOpen) {\n e.preventDefault();\n setIsOpen(false);\n }\n },\n [effectiveDisabled, effectiveReadOnly, stepMinutes, setIsOpen, isOpen]\n );\n\n // Manual typing blur commit\n const handleInputBlur = React.useCallback(() => {\n const trimmed = inputValue.trim();\n if (!trimmed) {\n if (isClearable) {\n setSelectedTime(null);\n } else {\n setInputValue(displayValue);\n }\n return;\n }\n\n // Try parsing 24h or 12h string\n let parsed: ParsedTime | null = parse24HourTime(trimmed);\n if (!parsed) {\n // Try parsing 12h format like \"2:30 pm\"\n const match12 = /^([0-1]?[0-9]):([0-5][0-9])\\s*([ap]m)?$/i.exec(trimmed);\n if (match12) {\n let h = parseInt(match12[1]!, 10);\n const m = parseInt(match12[2]!, 10);\n const p = match12[3]?.toLowerCase();\n\n if (p === \"pm\" && h < 12) h += 12;\n if (p === \"am\" && h === 12) h = 0;\n if (h >= 0 && h < 24) {\n parsed = { hours: h, minutes: m };\n }\n }\n }\n\n if (parsed && isTimeWithinBounds(parsed.hours, parsed.minutes, minTime, maxTime)) {\n commitTime(parsed.hours, parsed.minutes);\n } else {\n setInputValue(displayValue);\n }\n }, [inputValue, isClearable, displayValue, minTime, maxTime, commitTime, setSelectedTime]);\n\n // Accessible description wiring\n const ariaDescribedBy = [\n rest[\"aria-describedby\"],\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // Minute list options\n const minuteOptions = React.useMemo(() => {\n const options: number[] = [];\n const step = Math.max(1, Math.min(60, minuteStep));\n for (let m = 0; m < 60; m += step) {\n options.push(m);\n }\n return options;\n }, [minuteStep]);\n\n // Hours list options\n const hourOptions = React.useMemo(() => {\n if (format === \"24h\") {\n return Array.from({ length: 24 }, (_, i) => i);\n }\n return Array.from({ length: 12 }, (_, i) => (i === 0 ? 12 : i));\n }, [format]);\n\n const currentHour = parsedTime?.hours ?? 12;\n const currentMinute = parsedTime?.minutes ?? 0;\n const currentPeriod = currentHour >= 12 ? \"PM\" : \"AM\";\n const current12Hour = currentHour % 12 === 0 ? 12 : currentHour % 12;\n\n const hasValue = Boolean(selectedTime);\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"cl-timepicker\",\n `cl-timepicker--${size}`,\n effectiveDisabled && \"cl-timepicker--disabled\",\n effectiveInvalid && \"cl-timepicker--error\",\n isOpen && \"cl-timepicker--open\",\n className\n )}\n {...rest}\n >\n <Popover\n isOpen={effectiveDisabled ? false : isOpen}\n onOpenChange={(nextOpen) => {\n if (!effectiveDisabled) {\n setIsOpen(nextOpen);\n }\n }}\n placement=\"bottom-start\"\n offset={4}\n trapFocus={false}\n returnFocusRef={inputRef}\n referenceElement={controlRef}\n >\n <div ref={controlRef} className=\"cl-timepicker__control\">\n {/* Clock Trigger Icon Button (Left) */}\n <button\n type=\"button\"\n className=\"cl-timepicker__icon-btn\"\n aria-label={isOpen ? \"Close time picker\" : \"Open time picker\"}\n disabled={effectiveDisabled}\n tabIndex={-1}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!effectiveDisabled) {\n setIsOpen((prev) => !prev);\n inputRef.current?.focus();\n }\n }}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" aria-hidden=\"true\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <polyline points=\"12 6 12 12 16 14\" />\n </svg>\n </button>\n\n {/* Input Surface */}\n <input\n ref={inputRef}\n id={effectiveId}\n name={name}\n type=\"text\"\n readOnly={effectiveReadOnly}\n disabled={effectiveDisabled}\n aria-disabled={effectiveDisabled ? \"true\" : undefined}\n aria-invalid={effectiveInvalid ? \"true\" : undefined}\n aria-label={ariaLabel ?? \"Choose time\"}\n aria-describedby={ariaDescribedBy}\n placeholder={placeholder ?? (format === \"12h\" ? \"hh:mm AM/PM\" : \"HH:mm\")}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n onClick={() => {\n if (!effectiveDisabled && !isOpen) {\n setIsOpen(true);\n }\n }}\n className=\"cl-timepicker__input\"\n autoComplete=\"off\"\n />\n\n {/* Action buttons: Clear & Open Toggle */}\n <div className=\"cl-timepicker__actions\">\n {isClearable && hasValue && !effectiveDisabled && !effectiveReadOnly && (\n <button\n type=\"button\"\n className=\"cl-timepicker__clear-btn\"\n aria-label=\"Clear time\"\n onClick={handleClear}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z\" />\n </svg>\n </button>\n )}\n\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"cl-timepicker__toggle-btn\"\n aria-label={isOpen ? \"Close time picker\" : \"Toggle time picker\"}\n disabled={effectiveDisabled}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <path\n fillRule=\"evenodd\"\n d=\"M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z\"\n />\n </svg>\n </button>\n </PopoverTrigger>\n </div>\n </div>\n\n {/* Floating Time Dropdown Columns */}\n <PopoverPortal>\n <PopoverContent className=\"cl-timepicker__popover\" hasArrow={false}>\n <div className=\"cl-timepicker__columns\" role=\"dialog\" aria-label=\"Time options\">\n {/* Hours column */}\n <div className=\"cl-timepicker__column\" role=\"listbox\" aria-label=\"Hours\">\n <div className=\"cl-timepicker__column-title\">Hrs</div>\n {hourOptions.map((hour) => {\n let h24: number;\n if (format === \"24h\") {\n h24 = hour;\n } else {\n h24 = currentPeriod === \"PM\" ? (hour === 12 ? 12 : hour + 12) : (hour === 12 ? 0 : hour);\n }\n const isSelected =\n format === \"24h\"\n ? parsedTime?.hours === hour\n : current12Hour === hour;\n const isDisabled = !isTimeWithinBounds(h24, currentMinute, minTime, maxTime);\n\n return (\n <button\n key={hour}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={classNames(\n \"cl-timepicker__option\",\n isSelected && \"cl-timepicker__option--selected\"\n )}\n onClick={() => {\n commitTime(h24, currentMinute);\n }}\n >\n {String(hour).padStart(2, \"0\")}\n </button>\n );\n })}\n </div>\n\n {/* Minutes column */}\n <div className=\"cl-timepicker__column\" role=\"listbox\" aria-label=\"Minutes\">\n <div className=\"cl-timepicker__column-title\">Min</div>\n {minuteOptions.map((min) => {\n const isSelected = parsedTime?.minutes === min;\n const isDisabled = !isTimeWithinBounds(currentHour, min, minTime, maxTime);\n\n return (\n <button\n key={min}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={classNames(\n \"cl-timepicker__option\",\n isSelected && \"cl-timepicker__option--selected\"\n )}\n onClick={() => {\n commitTime(currentHour, min);\n }}\n >\n {String(min).padStart(2, \"0\")}\n </button>\n );\n })}\n </div>\n\n {/* Period column (12h only) */}\n {format === \"12h\" && (\n <div className=\"cl-timepicker__column\" role=\"listbox\" aria-label=\"Period\">\n <div className=\"cl-timepicker__column-title\">AM/PM</div>\n {([\"AM\", \"PM\"] as const).map((period) => {\n const isSelected = currentPeriod === period;\n let h24: number;\n if (period === \"AM\") {\n h24 = current12Hour === 12 ? 0 : current12Hour;\n } else {\n h24 = current12Hour === 12 ? 12 : current12Hour + 12;\n }\n const isDisabled = !isTimeWithinBounds(h24, currentMinute, minTime, maxTime);\n\n return (\n <button\n key={period}\n type=\"button\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={classNames(\n \"cl-timepicker__option\",\n isSelected && \"cl-timepicker__option--selected\"\n )}\n onClick={() => {\n commitTime(h24, currentMinute);\n }}\n >\n {period}\n </button>\n );\n })}\n </div>\n )}\n </div>\n </PopoverContent>\n </PopoverPortal>\n </Popover>\n </div>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n","import * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n size as floatingSize,\n useDismiss,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useMergeRefs } from \"../../hooks/useMergeRefs\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport { Portal } from \"../../primitives/Portal\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n MultiSelectProps,\n MultiSelectOption,\n} from \"./MultiSelect.types\";\n\nexport const MultiSelect = React.forwardRef(function MultiSelect<TValue = string>(\n props: MultiSelectProps<TValue>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {\n options = [],\n value: valueProp,\n defaultValue,\n onValueChange,\n placeholder = \"Select options...\",\n searchPlaceholder = \"Search options...\",\n isSearchable = true,\n isClearable = true,\n isOpen: isOpenProp,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n isInvalid = false,\n isLoading = false,\n emptyMessage = \"No options found.\",\n size = \"md\",\n variant = \"outline\",\n maxTagCount,\n className,\n id,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": ariaDescribedByProp,\n ...rest\n } = props;\n\n // 1. FormField cascade\n const formField = useFormField();\n const effectiveId = id ?? formField?.id;\n const effectiveDisabled = isDisabled || (formField?.disabled ?? false);\n const effectiveInvalid = isInvalid || (formField?.error ?? false);\n const ariaDescribedBy = [\n ariaDescribedByProp,\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // 2. Selection state\n const [selectedValues, setSelectedValues] = useControllableState<TValue[]>({\n value: valueProp,\n defaultValue: defaultValue ?? [],\n onChange: onValueChange,\n });\n\n // 3. Open state\n const [isOpen, setIsOpen] = useControllableState<boolean>({\n value: isOpenProp,\n defaultValue: defaultOpen,\n onChange: onOpenChange,\n });\n\n // 4. Search and active index\n const [searchQuery, setSearchQuery] = React.useState<string>(\"\");\n const [activeIndex, setActiveIndex] = React.useState<number>(-1);\n\n const controlRef = React.useRef<HTMLDivElement | null>(null);\n const searchInputRef = React.useRef<HTMLInputElement | null>(null);\n const listRef = React.useRef<HTMLDivElement | null>(null);\n\n // 5. Floating positioning\n const { refs, floatingStyles, context } = useFloating({\n open: isOpen,\n onOpenChange: (open) => {\n if (effectiveDisabled) return;\n setIsOpen(open);\n if (!open) {\n setSearchQuery(\"\");\n setActiveIndex(-1);\n }\n },\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(4),\n flip({ padding: 8 }),\n shift({ padding: 8 }),\n floatingSize({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${Math.max(rects.reference.width, 220)}px`,\n });\n },\n }),\n ],\n });\n\n const dismiss = useDismiss(context);\n const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);\n const mergedControlRef = useMergeRefs(ref, controlRef, refs.setReference);\n\n // Filtered options based on search query\n const filteredOptions = React.useMemo(() => {\n if (!searchQuery.trim()) return options;\n const query = searchQuery.toLowerCase();\n return options.filter((opt) => opt.label.toLowerCase().includes(query));\n }, [options, searchQuery]);\n\n // Map values to options\n const selectedOptions = React.useMemo(() => {\n return selectedValues\n .map((val) => options.find((opt) => opt.value === val))\n .filter((opt): opt is MultiSelectOption<TValue> => opt !== undefined);\n }, [options, selectedValues]);\n\n // Focus search input when opened\n React.useEffect(() => {\n if (isOpen && isSearchable) {\n const timer = setTimeout(() => {\n searchInputRef.current?.focus();\n }, 30);\n return () => clearTimeout(timer);\n }\n }, [isOpen, isSearchable]);\n\n const toggleOption = (val: TValue) => {\n if (effectiveDisabled) return;\n const exists = selectedValues.some((v) => v === val);\n let next: TValue[];\n if (exists) {\n next = selectedValues.filter((v) => v !== val);\n } else {\n next = [...selectedValues, val];\n }\n setSelectedValues(next);\n };\n\n const removeOption = (val: TValue, e?: React.MouseEvent) => {\n if (e) e.stopPropagation();\n if (effectiveDisabled) return;\n setSelectedValues(selectedValues.filter((v) => v !== val));\n };\n\n const clearAll = (e?: React.MouseEvent) => {\n if (e) e.stopPropagation();\n if (effectiveDisabled) return;\n setSelectedValues([]);\n };\n\n // Keyboard navigation on trigger\n const handleControlKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (effectiveDisabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \" || e.key === \"ArrowDown\") {\n e.preventDefault();\n setIsOpen(true);\n }\n };\n\n // Keyboard navigation in search input / listbox\n const handleSearchKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n e.preventDefault();\n setIsOpen(false);\n controlRef.current?.focus();\n return;\n }\n\n if (e.key === \"Backspace\" && searchQuery === \"\" && selectedValues.length > 0) {\n e.preventDefault();\n const lastVal = selectedValues[selectedValues.length - 1];\n if (lastVal !== undefined) {\n removeOption(lastVal);\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActiveIndex((prev) => {\n const next = prev < filteredOptions.length - 1 ? prev + 1 : 0;\n return next;\n });\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActiveIndex((prev) => {\n const next = prev > 0 ? prev - 1 : filteredOptions.length - 1;\n return next;\n });\n return;\n }\n\n if (e.key === \"Enter\" && activeIndex >= 0 && activeIndex < filteredOptions.length) {\n e.preventDefault();\n const option = filteredOptions[activeIndex];\n if (option && !option.disabled) {\n toggleOption(option.value);\n }\n }\n };\n\n const visibleTags = React.useMemo(() => {\n if (maxTagCount !== undefined && selectedOptions.length > maxTagCount) {\n return selectedOptions.slice(0, maxTagCount);\n }\n return selectedOptions;\n }, [selectedOptions, maxTagCount]);\n\n const excessCount = selectedOptions.length - visibleTags.length;\n\n return (\n <div\n {...rest}\n id={effectiveId}\n className={classNames(\n \"cl-multiselect\",\n `cl-multiselect--${size}`,\n `cl-multiselect--${variant}`,\n isOpen && \"cl-multiselect--open\",\n effectiveDisabled && \"cl-multiselect--disabled\",\n effectiveInvalid && \"cl-multiselect--error\",\n className\n )}\n >\n {/* Control Surface */}\n <div\n {...getReferenceProps()}\n ref={mergedControlRef}\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-disabled={effectiveDisabled ? true : undefined}\n aria-invalid={effectiveInvalid ? true : undefined}\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n tabIndex={effectiveDisabled ? -1 : 0}\n onKeyDown={handleControlKeyDown}\n onClick={() => {\n if (!effectiveDisabled) {\n setIsOpen(!isOpen);\n }\n }}\n className=\"cl-multiselect__control\"\n >\n <div className=\"cl-multiselect__tags\">\n {visibleTags.length === 0 ? (\n <span className=\"cl-multiselect__placeholder\">{placeholder}</span>\n ) : (\n visibleTags.map((opt) => (\n <span key={String(opt.value)} className=\"cl-multiselect__tag\">\n <span className=\"cl-multiselect__tag-label\">{opt.label}</span>\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={effectiveDisabled}\n aria-label={`Remove ${opt.label}`}\n className=\"cl-multiselect__tag-remove\"\n onClick={(e) => removeOption(opt.value, e)}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </span>\n ))\n )}\n\n {excessCount > 0 && (\n <span className=\"cl-multiselect__tag cl-multiselect__tag--excess\">\n +{excessCount} more\n </span>\n )}\n </div>\n\n <div className=\"cl-multiselect__actions\">\n {isClearable && selectedValues.length > 0 && !effectiveDisabled && (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label=\"Clear all selections\"\n className=\"cl-multiselect__clear\"\n onClick={clearAll}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n\n <span className=\"cl-multiselect__arrow\" aria-hidden=\"true\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </span>\n </div>\n </div>\n\n {/* Popover */}\n {isOpen && !effectiveDisabled && (\n <Portal>\n <div\n {...getFloatingProps()}\n ref={refs.setFloating}\n style={floatingStyles}\n className=\"cl-multiselect__popover\"\n >\n {isSearchable && (\n <div className=\"cl-multiselect__search-wrapper\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n placeholder={searchPlaceholder}\n onChange={(e) => {\n setSearchQuery(e.target.value);\n setActiveIndex(0);\n }}\n onKeyDown={handleSearchKeyDown}\n className=\"cl-multiselect__search-input\"\n aria-label={searchPlaceholder}\n />\n </div>\n )}\n\n <div\n ref={listRef}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n className=\"cl-multiselect__list\"\n >\n {isLoading ? (\n <div className=\"cl-multiselect__loading\">Loading options...</div>\n ) : filteredOptions.length === 0 ? (\n <div className=\"cl-multiselect__empty\">{emptyMessage}</div>\n ) : (\n filteredOptions.map((opt, idx) => {\n const isSelected = selectedValues.some((v) => v === opt.value);\n const isHighlighted = idx === activeIndex;\n\n return (\n <div\n key={String(opt.value)}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={opt.disabled ? true : undefined}\n className={classNames(\n \"cl-multiselect__option\",\n isSelected && \"cl-multiselect__option--selected\",\n isHighlighted && \"cl-multiselect__option--active\",\n opt.disabled && \"cl-multiselect__option--disabled\"\n )}\n onMouseEnter={() => {\n if (!opt.disabled) setActiveIndex(idx);\n }}\n onClick={() => {\n if (!opt.disabled) {\n toggleOption(opt.value);\n searchInputRef.current?.focus();\n }\n }}\n >\n <span className=\"cl-multiselect__checkbox\" aria-hidden=\"true\">\n {isSelected && (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n <div className=\"cl-multiselect__option-content\">\n <span className=\"cl-multiselect__option-label\">{opt.label}</span>\n {opt.description && (\n <span className=\"cl-multiselect__option-desc\">{opt.description}</span>\n )}\n </div>\n </div>\n );\n })\n )}\n </div>\n </div>\n </Portal>\n )}\n </div>\n );\n}) as <TValue = string>(\n props: MultiSelectProps<TValue> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement;\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { Checkbox } from \"../Checkbox/Checkbox\";\nimport { Pagination } from \"../Pagination/Pagination\";\nimport { Spinner } from \"../Spinner/Spinner\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n DataGridProps,\n DataGridSort,\n} from \"./DataGrid.types\";\n\nexport const DataGrid = React.forwardRef(function DataGrid<\n TRow,\n TKey extends string = string\n>(\n props: DataGridProps<TRow, TKey>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {\n columns,\n data = [],\n getRowId,\n sort: sortProp,\n defaultSort,\n onSortChange,\n isSelectable = false,\n selectedRowIds: selectedRowIdsProp,\n defaultSelectedRowIds,\n onSelectionChange,\n selectOnRowClick = false,\n variant = \"simple\",\n size = \"md\",\n isStickyHeader = false,\n maxHeight,\n isLoading = false,\n emptyText = \"No data available.\",\n pagination,\n className,\n \"aria-label\": ariaLabel = \"Data Grid\",\n ...rest\n } = props;\n\n // 1. Controlled / uncontrolled sort\n const [currentSort, setCurrentSort] = useControllableState<DataGridSort<TKey> | null>({\n value: sortProp,\n defaultValue: defaultSort ?? null,\n onChange: onSortChange,\n });\n\n // 2. Controlled / uncontrolled selection\n const [selectedIds, setSelectedIds] = useControllableState<(string | number)[]>({\n value: selectedRowIdsProp,\n defaultValue: defaultSelectedRowIds ?? [],\n onChange: onSelectionChange,\n });\n\n // 3. Sorting operation\n const sortedData = React.useMemo(() => {\n if (!currentSort) return data;\n\n const column = columns.find((c) => c.key === currentSort.columnKey);\n if (!column || !column.isSortable) return data;\n\n const directionMultiplier = currentSort.direction === \"asc\" ? 1 : -1;\n\n return [...data].sort((a, b) => {\n if (column.comparator) {\n return column.comparator(a, b) * directionMultiplier;\n }\n\n let valA: unknown;\n let valB: unknown;\n\n if (column.accessor) {\n valA = column.accessor(a, 0);\n valB = column.accessor(b, 0);\n } else {\n valA = (a as Record<string, unknown>)[column.key];\n valB = (b as Record<string, unknown>)[column.key];\n }\n\n if (valA == null && valB == null) return 0;\n if (valA == null) return 1;\n if (valB == null) return -1;\n\n if (typeof valA === \"number\" && typeof valB === \"number\") {\n return (valA - valB) * directionMultiplier;\n }\n\n return String(valA).localeCompare(String(valB)) * directionMultiplier;\n });\n }, [data, currentSort, columns]);\n\n // 4. Pagination slicing\n const displayedData = React.useMemo(() => {\n if (!pagination) return sortedData;\n const startIndex = (pagination.page - 1) * pagination.pageSize;\n return sortedData.slice(startIndex, startIndex + pagination.pageSize);\n }, [sortedData, pagination]);\n\n // 5. Selection helpers\n const displayedRowIds = React.useMemo(() => {\n return displayedData.map((row, idx) => getRowId(row, idx));\n }, [displayedData, getRowId]);\n\n const isAllSelected =\n displayedRowIds.length > 0 &&\n displayedRowIds.every((id) => selectedIds.includes(id));\n\n const isSomeSelected =\n displayedRowIds.some((id) => selectedIds.includes(id)) && !isAllSelected;\n\n const handleToggleAll = () => {\n if (isAllSelected) {\n setSelectedIds(selectedIds.filter((id) => !displayedRowIds.includes(id)));\n } else {\n const merged = Array.from(new Set([...selectedIds, ...displayedRowIds]));\n setSelectedIds(merged);\n }\n };\n\n const handleToggleRow = (id: string | number) => {\n if (selectedIds.includes(id)) {\n setSelectedIds(selectedIds.filter((item) => item !== id));\n } else {\n setSelectedIds([...selectedIds, id]);\n }\n };\n\n const handleSortClick = (columnKey: TKey) => {\n let nextSort: DataGridSort<TKey> | null = null;\n if (!currentSort || currentSort.columnKey !== columnKey) {\n nextSort = { columnKey, direction: \"asc\" };\n } else if (currentSort.direction === \"asc\") {\n nextSort = { columnKey, direction: \"desc\" };\n } else {\n nextSort = null;\n }\n setCurrentSort(nextSort);\n };\n\n const totalColumns = columns.length + (isSelectable ? 1 : 0);\n\n return (\n <div\n {...rest}\n ref={ref}\n className={classNames(\n \"cl-datagrid\",\n `cl-datagrid--${variant}`,\n `cl-datagrid--${size}`,\n isStickyHeader && \"cl-datagrid--sticky-header\",\n className\n )}\n >\n {/* Table Container / Region */}\n <div\n className=\"cl-datagrid__container\"\n style={maxHeight ? { maxHeight, overflowY: \"auto\" } : undefined}\n tabIndex={0}\n role=\"region\"\n aria-label={ariaLabel}\n >\n <table className=\"cl-datagrid__table\" role=\"grid\" aria-label={ariaLabel}>\n <thead className=\"cl-datagrid__thead\">\n <tr className=\"cl-datagrid__tr\">\n {isSelectable && (\n <th\n className=\"cl-datagrid__th cl-datagrid__th--select\"\n scope=\"col\"\n style={{ width: \"48px\" }}\n >\n <Checkbox\n aria-label=\"Select all rows\"\n checked={isAllSelected}\n indeterminate={isSomeSelected}\n onChange={handleToggleAll}\n />\n </th>\n )}\n\n {columns.map((col) => {\n const isCurrentSort = currentSort?.columnKey === col.key;\n const ariaSort: \"ascending\" | \"descending\" | \"none\" | undefined =\n col.isSortable\n ? isCurrentSort\n ? currentSort.direction === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : \"none\"\n : undefined;\n\n return (\n <th\n key={col.key}\n scope=\"col\"\n aria-sort={ariaSort}\n className={classNames(\n \"cl-datagrid__th\",\n col.isSortable && \"cl-datagrid__th--sortable\",\n isCurrentSort && \"cl-datagrid__th--sorted\",\n col.align && `cl-datagrid__th--align-${col.align}`\n )}\n style={col.width ? { width: col.width } : undefined}\n >\n {col.isSortable ? (\n <button\n type=\"button\"\n className=\"cl-datagrid__sort-btn\"\n onClick={() => handleSortClick(col.key)}\n aria-label={`Sort by ${String(col.header)}`}\n >\n <span className=\"cl-datagrid__header-text\">{col.header}</span>\n <span className=\"cl-datagrid__sort-icon\" aria-hidden=\"true\">\n {isCurrentSort ? (\n currentSort.direction === \"asc\" ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M18 15l-6-6-6 6\" />\n </svg>\n ) : (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n )\n ) : (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" opacity=\"0.4\">\n <path d=\"M7 15l5 5 5-5M7 9l5-5 5 5\" />\n </svg>\n )}\n </span>\n </button>\n ) : (\n <span className=\"cl-datagrid__header-text\">{col.header}</span>\n )}\n </th>\n );\n })}\n </tr>\n </thead>\n\n <tbody className=\"cl-datagrid__tbody\">\n {isLoading ? (\n <tr className=\"cl-datagrid__tr cl-datagrid__tr--loading\">\n <td colSpan={totalColumns} className=\"cl-datagrid__td cl-datagrid__td--loading\">\n <div className=\"cl-datagrid__loading-wrapper\">\n <Spinner size=\"md\" colorScheme=\"primary\" />\n <span>Loading data...</span>\n </div>\n </td>\n </tr>\n ) : displayedData.length === 0 ? (\n <tr className=\"cl-datagrid__tr cl-datagrid__tr--empty\">\n <td colSpan={totalColumns} className=\"cl-datagrid__td cl-datagrid__td--empty\">\n <div className=\"cl-datagrid__empty-wrapper\">{emptyText}</div>\n </td>\n </tr>\n ) : (\n displayedData.map((row, rowIndex) => {\n const rowId = getRowId(row, rowIndex);\n const isSelected = selectedIds.includes(rowId);\n\n return (\n <tr\n key={String(rowId)}\n aria-selected={isSelectable ? isSelected : undefined}\n className={classNames(\n \"cl-datagrid__tr\",\n isSelected && \"cl-datagrid__tr--selected\",\n selectOnRowClick && \"cl-datagrid__tr--clickable\"\n )}\n onClick={() => {\n if (selectOnRowClick && isSelectable) {\n handleToggleRow(rowId);\n }\n }}\n >\n {isSelectable && (\n <td className=\"cl-datagrid__td cl-datagrid__td--select\">\n <Checkbox\n aria-label={`Select row ${String(rowId)}`}\n checked={isSelected}\n onChange={() => handleToggleRow(rowId)}\n onClick={(e) => e.stopPropagation()}\n />\n </td>\n )}\n\n {columns.map((col) => {\n let cellContent: React.ReactNode;\n const rawVal = col.accessor\n ? col.accessor(row, rowIndex)\n : (row as Record<string, unknown>)[col.key];\n\n if (col.cell) {\n cellContent = col.cell({ row, value: rawVal, rowIndex });\n } else {\n cellContent = rawVal as React.ReactNode;\n }\n\n return (\n <td\n key={col.key}\n className={classNames(\n \"cl-datagrid__td\",\n col.align && `cl-datagrid__td--align-${col.align}`\n )}\n >\n {cellContent}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Pagination Footer */}\n {pagination && (\n <div className=\"cl-datagrid__footer\">\n <Pagination\n total={pagination.total ?? sortedData.length}\n pageSize={pagination.pageSize}\n page={pagination.page}\n onPageChange={pagination.onPageChange}\n size={size === \"lg\" ? \"md\" : \"sm\"}\n />\n </div>\n )}\n </div>\n );\n}) as <TRow, TKey extends string = string>(\n props: DataGridProps<TRow, TKey> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement;\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n FileUploadProps,\n FileValidationError,\n} from \"./FileUpload.types\";\n\nfunction defaultFormatBytes(bytes: number): string {\n if (bytes === 0) return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;\n}\n\nfunction matchesAccept(file: File, acceptString?: string): boolean {\n if (!acceptString) return true;\n const rules = acceptString.split(\",\").map((rule) => rule.trim().toLowerCase());\n\n const fileName = file.name.toLowerCase();\n const fileType = file.type.toLowerCase();\n\n return rules.some((rule) => {\n if (rule.startsWith(\".\")) {\n return fileName.endsWith(rule);\n }\n if (rule.endsWith(\"/*\")) {\n const prefix = rule.slice(0, -2);\n return fileType.startsWith(prefix);\n }\n return fileType === rule;\n });\n}\n\nexport const FileUpload = React.forwardRef<HTMLDivElement, FileUploadProps>(\n function FileUpload(props, ref) {\n const {\n value: valueProp,\n defaultValue,\n onValueChange,\n onValidationErrors,\n isMultiple = false,\n accept,\n maxSize,\n maxFiles,\n isDisabled = false,\n isInvalid = false,\n dropzoneText = \"Click or drag files here to upload\",\n dropzoneHint,\n browseText = \"Browse Files\",\n showFileList = true,\n formatFileSize = defaultFormatBytes,\n className,\n id,\n \"aria-label\": ariaLabel = \"File Upload\",\n \"aria-describedby\": ariaDescribedByProp,\n ...rest\n } = props;\n\n // 1. FormField integration\n const formField = useFormField();\n const effectiveId = id ?? formField?.id;\n const effectiveDisabled = isDisabled || (formField?.disabled ?? false);\n const effectiveInvalid = isInvalid || (formField?.error ?? false);\n const ariaDescribedBy = [\n ariaDescribedByProp,\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n // 2. Controlled / uncontrolled file selection\n const [files, setFiles] = useControllableState<File[]>({\n value: valueProp,\n defaultValue: defaultValue ?? [],\n onChange: onValueChange,\n });\n\n const [isDragging, setIsDragging] = React.useState<boolean>(false);\n const [localErrors, setLocalErrors] = React.useState<string[]>([]);\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n\n const validateAndAddFiles = (incomingList: FileList | File[]) => {\n if (effectiveDisabled) return;\n\n const incoming = Array.from(incomingList);\n const validFiles: File[] = [];\n const errorList: FileValidationError[] = [];\n const errorMessages: string[] = [];\n\n // Check max count\n const totalCount = isMultiple ? files.length + incoming.length : incoming.length;\n const firstIncoming = incoming[0];\n if (maxFiles !== undefined && totalCount > maxFiles && firstIncoming) {\n const error: FileValidationError = {\n file: firstIncoming,\n code: \"too-many-files\",\n message: `Maximum of ${maxFiles} file(s) allowed.`,\n };\n errorList.push(error);\n errorMessages.push(error.message);\n }\n\n for (const file of incoming) {\n // Check accepted type\n if (!matchesAccept(file, accept)) {\n const error: FileValidationError = {\n file,\n code: \"file-invalid-type\",\n message: `File type '${file.type || file.name}' is not accepted.`,\n };\n errorList.push(error);\n errorMessages.push(error.message);\n continue;\n }\n\n // Check max size\n if (maxSize !== undefined && file.size > maxSize) {\n const error: FileValidationError = {\n file,\n code: \"file-too-large\",\n message: `File '${file.name}' (${formatFileSize(file.size)}) exceeds maximum limit of ${formatFileSize(maxSize)}.`,\n };\n errorList.push(error);\n errorMessages.push(error.message);\n continue;\n }\n\n validFiles.push(file);\n }\n\n if (errorList.length > 0) {\n setLocalErrors(errorMessages);\n onValidationErrors?.(errorList);\n } else {\n setLocalErrors([]);\n }\n\n if (validFiles.length > 0) {\n const firstValid = validFiles[0];\n const next = isMultiple ? [...files, ...validFiles] : (firstValid ? [firstValid] : []);\n setFiles(next);\n }\n };\n\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n validateAndAddFiles(e.target.files);\n // Reset file input value so selecting the same file again triggers change\n e.target.value = \"\";\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!effectiveDisabled) {\n setIsDragging(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n if (!effectiveDisabled && e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n validateAndAddFiles(e.dataTransfer.files);\n }\n };\n\n const handleRemoveFile = (index: number) => {\n if (effectiveDisabled) return;\n const next = files.filter((_, idx) => idx !== index);\n setFiles(next);\n if (next.length === 0) {\n setLocalErrors([]);\n }\n };\n\n const triggerBrowse = () => {\n if (!effectiveDisabled) {\n inputRef.current?.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (effectiveDisabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n triggerBrowse();\n }\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n id={effectiveId}\n className={classNames(\n \"cl-fileupload\",\n effectiveDisabled && \"cl-fileupload--disabled\",\n effectiveInvalid && \"cl-fileupload--error\",\n className\n )}\n >\n {/* Hidden File Input */}\n <input\n ref={inputRef}\n type=\"file\"\n multiple={isMultiple}\n accept={accept}\n disabled={effectiveDisabled}\n onChange={handleFileInputChange}\n tabIndex={-1}\n aria-hidden=\"true\"\n style={{ display: \"none\" }}\n />\n\n {/* Dropzone Interactive Area */}\n <div\n role=\"button\"\n tabIndex={effectiveDisabled ? -1 : 0}\n aria-disabled={effectiveDisabled ? true : undefined}\n aria-invalid={effectiveInvalid ? true : undefined}\n aria-describedby={ariaDescribedBy}\n aria-label={ariaLabel}\n onKeyDown={handleKeyDown}\n onClick={triggerBrowse}\n onDragOver={handleDragOver}\n onDragEnter={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={classNames(\n \"cl-fileupload__dropzone\",\n isDragging && \"cl-fileupload__dropzone--dragging\"\n )}\n >\n <div className=\"cl-fileupload__icon\" aria-hidden=\"true\">\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"1.75\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n </div>\n\n <div className=\"cl-fileupload__content\">\n <span className=\"cl-fileupload__prompt\">{dropzoneText}</span>\n {dropzoneHint && (\n <span className=\"cl-fileupload__hint\">{dropzoneHint}</span>\n )}\n </div>\n\n <span className=\"cl-fileupload__browse-btn\" aria-hidden=\"true\">\n {browseText}\n </span>\n </div>\n\n {/* Validation Errors Display */}\n {localErrors.length > 0 && (\n <div className=\"cl-fileupload__errors\" role=\"alert\">\n {localErrors.map((msg, i) => (\n <span key={i} className=\"cl-fileupload__error-item\">\n {msg}\n </span>\n ))}\n </div>\n )}\n\n {/* Selected Files List */}\n {showFileList && files.length > 0 && (\n <ul className=\"cl-fileupload__list\" aria-label=\"Selected files\">\n {files.map((file, idx) => (\n <li key={`${file.name}-${file.size}-${idx}`} className=\"cl-fileupload__item\">\n <div className=\"cl-fileupload__file-info\">\n <span className=\"cl-fileupload__file-icon\" aria-hidden=\"true\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n </svg>\n </span>\n <span className=\"cl-fileupload__file-name\">{file.name}</span>\n <span className=\"cl-fileupload__file-size\">\n ({formatFileSize(file.size)})\n </span>\n </div>\n\n {!effectiveDisabled && (\n <button\n type=\"button\"\n aria-label={`Remove file ${file.name}`}\n className=\"cl-fileupload__remove-btn\"\n onClick={() => handleRemoveFile(idx)}\n >\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n);\n","import * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport type { SliderProps } from \"./Slider.types\";\n\nfunction clamp(val: number, min: number, max: number): number {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction getPrecision(step: number): number {\n const stepStr = step.toString();\n const dotIndex = stepStr.indexOf(\".\");\n return dotIndex >= 0 ? stepStr.length - dotIndex - 1 : 0;\n}\n\nfunction roundToStep(val: number, min: number, max: number, step: number): number {\n if (step <= 0) return clamp(val, min, max);\n const clamped = clamp(val, min, max);\n const stepsCount = Math.round((clamped - min) / step);\n const stepped = min + stepsCount * step;\n const precision = getPrecision(step);\n return Number(clamp(stepped, min, max).toFixed(precision));\n}\n\nfunction getPercentage(val: number, min: number, max: number): number {\n if (max <= min) return 0;\n return ((val - min) / (max - min)) * 100;\n}\n\nfunction getValueFromPointer(\n clientX: number,\n trackRect: DOMRect,\n min: number,\n max: number,\n step: number\n): number {\n const width = trackRect.width;\n if (width <= 0) return min;\n const ratio = clamp((clientX - trackRect.left) / width, 0, 1);\n const rawValue = min + ratio * (max - min);\n return roundToStep(rawValue, min, max, step);\n}\n\nexport const Slider = React.forwardRef<HTMLDivElement, SliderProps>(\n function Slider(props, ref) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n isDisabled: isDisabledProp,\n isInvalid: isInvalidProp,\n size = \"md\",\n colorScheme = \"primary\",\n marks,\n \"aria-label\": ariaLabelProp,\n \"aria-labelledby\": ariaLabelledByProp,\n \"aria-describedby\": ariaDescribedByProp,\n getAriaValueText,\n className,\n style,\n ...restProps\n } = props;\n\n const formField = useFormField();\n const isDisabled = isDisabledProp ?? formField?.disabled ?? false;\n const isInvalid = isInvalidProp ?? formField?.error ?? false;\n\n const ariaDescribedBy = [\n ariaDescribedByProp,\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const isControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = React.useState<number>(() => {\n const initial = defaultValue !== undefined ? defaultValue : min;\n return roundToStep(initial, min, max, step);\n });\n\n const rawValue = isControlled ? (valueProp as number) : uncontrolledValue;\n const safeValue = roundToStep(rawValue, min, max, step);\n\n const trackRef = React.useRef<HTMLDivElement | null>(null);\n const thumbRef = React.useRef<HTMLDivElement | null>(null);\n\n const updateValue = React.useCallback(\n (nextVal: number) => {\n const stepped = roundToStep(nextVal, min, max, step);\n if (stepped !== safeValue) {\n if (!isControlled) {\n setUncontrolledValue(stepped);\n }\n onChange?.(stepped);\n }\n },\n [isControlled, max, min, onChange, safeValue, step]\n );\n\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (isDisabled || e.button !== 0) return;\n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const nextVal = getValueFromPointer(e.clientX, rect, min, max, step);\n updateValue(nextVal);\n thumbRef.current?.focus();\n\n const onPointerMove = (moveEvent: PointerEvent) => {\n const currentRect = track.getBoundingClientRect();\n const moveVal = getValueFromPointer(moveEvent.clientX, currentRect, min, max, step);\n updateValue(moveVal);\n };\n\n const onPointerUp = () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", onPointerUp);\n };\n\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", onPointerUp);\n },\n [isDisabled, max, min, step, updateValue]\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n const pageStep = Math.max(step * 10, (max - min) / 10);\n let nextVal: number | null = null;\n\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n nextVal = safeValue + step;\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n nextVal = safeValue - step;\n break;\n case \"PageUp\":\n nextVal = safeValue + pageStep;\n break;\n case \"PageDown\":\n nextVal = safeValue - pageStep;\n break;\n case \"Home\":\n nextVal = min;\n break;\n case \"End\":\n nextVal = max;\n break;\n default:\n return;\n }\n\n if (nextVal !== null) {\n e.preventDefault();\n updateValue(nextVal);\n }\n },\n [isDisabled, max, min, safeValue, step, updateValue]\n );\n\n const percentage = getPercentage(safeValue, min, max);\n\n const accessibleName =\n ariaLabelProp ?? (!ariaLabelledByProp && !formField?.labelId ? \"Slider\" : undefined);\n const labelledBy = ariaLabelledByProp ?? (formField ? formField.labelId : undefined);\n\n const rootClasses = classNames(\n \"cl-slider\",\n `cl-slider--${size}`,\n `cl-slider--${colorScheme}`,\n isDisabled && \"cl-slider--disabled\",\n isInvalid && \"cl-slider--invalid\",\n className\n );\n\n return (\n <div\n ref={ref}\n className={rootClasses}\n style={style}\n {...restProps}\n >\n <div\n ref={trackRef}\n className=\"cl-slider__track-wrapper\"\n onPointerDown={handlePointerDown}\n >\n <div className=\"cl-slider__track\">\n <div\n className=\"cl-slider__filled-track\"\n style={{ width: `${percentage}%` }}\n />\n </div>\n\n <div\n ref={thumbRef}\n role=\"slider\"\n tabIndex={isDisabled ? -1 : 0}\n className=\"cl-slider__thumb\"\n style={{ left: `${percentage}%` }}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={safeValue}\n aria-valuetext={getAriaValueText ? getAriaValueText(safeValue) : undefined}\n aria-label={accessibleName}\n aria-labelledby={labelledBy}\n aria-describedby={ariaDescribedBy}\n aria-disabled={isDisabled ? true : undefined}\n aria-invalid={isInvalid ? true : undefined}\n onKeyDown={handleKeyDown}\n />\n </div>\n\n {marks && marks.length > 0 && (\n <div className=\"cl-slider__marks-container\" aria-hidden=\"true\">\n {marks.map((mark) => {\n const markPct = getPercentage(mark.value, min, max);\n return (\n <React.Fragment key={mark.value}>\n <span\n className=\"cl-slider__mark-point\"\n style={{ left: `${markPct}%` }}\n />\n {mark.label !== undefined && (\n <span\n className=\"cl-slider__mark-label\"\n style={{ left: `${markPct}%` }}\n >\n {mark.label}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\n","import * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { useFormField } from \"../FormField/FormFieldContext\";\nimport type { RangeSliderProps } from \"./Slider.types\";\n\nfunction clamp(val: number, min: number, max: number): number {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction getPrecision(step: number): number {\n const stepStr = step.toString();\n const dotIndex = stepStr.indexOf(\".\");\n return dotIndex >= 0 ? stepStr.length - dotIndex - 1 : 0;\n}\n\nfunction roundToStep(val: number, min: number, max: number, step: number): number {\n if (step <= 0) return clamp(val, min, max);\n const clamped = clamp(val, min, max);\n const stepsCount = Math.round((clamped - min) / step);\n const stepped = min + stepsCount * step;\n const precision = getPrecision(step);\n return Number(clamp(stepped, min, max).toFixed(precision));\n}\n\nfunction getPercentage(val: number, min: number, max: number): number {\n if (max <= min) return 0;\n return ((val - min) / (max - min)) * 100;\n}\n\nfunction getValueFromPointer(\n clientX: number,\n trackRect: DOMRect,\n min: number,\n max: number,\n step: number\n): number {\n const width = trackRect.width;\n if (width <= 0) return min;\n const ratio = clamp((clientX - trackRect.left) / width, 0, 1);\n const rawValue = min + ratio * (max - min);\n return roundToStep(rawValue, min, max, step);\n}\n\nexport const RangeSlider = React.forwardRef<HTMLDivElement, RangeSliderProps>(\n function RangeSlider(props, ref) {\n const {\n value: valueProp,\n defaultValue,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n minDistance = 0,\n isDisabled: isDisabledProp,\n isInvalid: isInvalidProp,\n size = \"md\",\n colorScheme = \"primary\",\n marks,\n minAriaLabel = \"Minimum value\",\n maxAriaLabel = \"Maximum value\",\n \"aria-describedby\": ariaDescribedByProp,\n getAriaValueText,\n className,\n style,\n ...restProps\n } = props;\n\n const formField = useFormField();\n const isDisabled = isDisabledProp ?? formField?.disabled ?? false;\n const isInvalid = isInvalidProp ?? formField?.error ?? false;\n\n const ariaDescribedBy = [\n ariaDescribedByProp,\n formField?.error && formField?.hasErrorMessage ? formField.errorMessageId : null,\n formField?.hasHelperText ? formField.helperTextId : null,\n ]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const isControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = React.useState<[number, number]>(() => {\n const initial = defaultValue !== undefined ? defaultValue : [min, max];\n const low = roundToStep(initial[0] ?? min, min, max, step);\n const high = roundToStep(initial[1] ?? max, min, max, step);\n if (low > high - minDistance) {\n return [Math.max(min, high - minDistance), high];\n }\n return [low, high];\n });\n\n const currentValues = isControlled ? (valueProp as [number, number]) : uncontrolledValue;\n const safeLow = roundToStep(currentValues[0] ?? min, min, max, step);\n const safeHigh = Math.max(\n safeLow + minDistance,\n roundToStep(currentValues[1] ?? max, min, max, step)\n );\n\n const trackRef = React.useRef<HTMLDivElement | null>(null);\n const lowerThumbRef = React.useRef<HTMLDivElement | null>(null);\n const upperThumbRef = React.useRef<HTMLDivElement | null>(null);\n\n const updateThumb = React.useCallback(\n (thumbIndex: 0 | 1, nextVal: number) => {\n let newLow = safeLow;\n let newHigh = safeHigh;\n\n if (thumbIndex === 0) {\n const clamped = Math.min(roundToStep(nextVal, min, max, step), safeHigh - minDistance);\n newLow = Math.max(clamped, min);\n } else {\n const clamped = Math.max(roundToStep(nextVal, min, max, step), safeLow + minDistance);\n newHigh = Math.min(clamped, max);\n }\n\n if (newLow !== safeLow || newHigh !== safeHigh) {\n const nextRange: [number, number] = [newLow, newHigh];\n if (!isControlled) {\n setUncontrolledValue(nextRange);\n }\n onChange?.(nextRange);\n }\n },\n [isControlled, max, min, minDistance, onChange, safeHigh, safeLow, step]\n );\n\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent<HTMLDivElement>) => {\n if (isDisabled || e.button !== 0) return;\n const track = trackRef.current;\n if (!track) return;\n\n const rect = track.getBoundingClientRect();\n const pointerVal = getValueFromPointer(e.clientX, rect, min, max, step);\n\n const dist0 = Math.abs(pointerVal - safeLow);\n const dist1 = Math.abs(pointerVal - safeHigh);\n const activeThumbIndex: 0 | 1 =\n dist0 < dist1 ? 0 : dist1 < dist0 ? 1 : pointerVal >= safeHigh ? 1 : 0;\n\n updateThumb(activeThumbIndex, pointerVal);\n if (activeThumbIndex === 0) {\n lowerThumbRef.current?.focus();\n } else {\n upperThumbRef.current?.focus();\n }\n\n const onPointerMove = (moveEvent: PointerEvent) => {\n const currentRect = track.getBoundingClientRect();\n const moveVal = getValueFromPointer(moveEvent.clientX, currentRect, min, max, step);\n updateThumb(activeThumbIndex, moveVal);\n };\n\n const onPointerUp = () => {\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", onPointerUp);\n };\n\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", onPointerUp);\n },\n [isDisabled, max, min, safeHigh, safeLow, step, updateThumb]\n );\n\n const handleKeyDown = React.useCallback(\n (thumbIndex: 0 | 1, e: React.KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n const pageStep = Math.max(step * 10, (max - min) / 10);\n let nextVal: number | null = null;\n\n const currentVal = thumbIndex === 0 ? safeLow : safeHigh;\n\n switch (e.key) {\n case \"ArrowRight\":\n case \"ArrowUp\":\n nextVal = currentVal + step;\n break;\n case \"ArrowLeft\":\n case \"ArrowDown\":\n nextVal = currentVal - step;\n break;\n case \"PageUp\":\n nextVal = currentVal + pageStep;\n break;\n case \"PageDown\":\n nextVal = currentVal - pageStep;\n break;\n case \"Home\":\n nextVal = thumbIndex === 0 ? min : safeLow + minDistance;\n break;\n case \"End\":\n nextVal = thumbIndex === 0 ? safeHigh - minDistance : max;\n break;\n default:\n return;\n }\n\n if (nextVal !== null) {\n e.preventDefault();\n updateThumb(thumbIndex, nextVal);\n }\n },\n [isDisabled, max, min, minDistance, safeHigh, safeLow, step, updateThumb]\n );\n\n const lowPct = getPercentage(safeLow, min, max);\n const highPct = getPercentage(safeHigh, min, max);\n\n const rootClasses = classNames(\n \"cl-range-slider\",\n `cl-range-slider--${size}`,\n `cl-range-slider--${colorScheme}`,\n isDisabled && \"cl-range-slider--disabled\",\n isInvalid && \"cl-range-slider--invalid\",\n className\n );\n\n return (\n <div\n ref={ref}\n className={rootClasses}\n style={style}\n {...restProps}\n >\n <div\n ref={trackRef}\n className=\"cl-range-slider__track-wrapper\"\n onPointerDown={handlePointerDown}\n >\n <div className=\"cl-range-slider__track\">\n <div\n className=\"cl-range-slider__range\"\n style={{\n left: `${lowPct}%`,\n width: `${Math.max(0, highPct - lowPct)}%`,\n }}\n />\n </div>\n\n <div\n ref={lowerThumbRef}\n role=\"slider\"\n tabIndex={isDisabled ? -1 : 0}\n className=\"cl-range-slider__thumb cl-range-slider__thumb--lower\"\n style={{ left: `${lowPct}%` }}\n aria-valuemin={min}\n aria-valuemax={safeHigh - minDistance}\n aria-valuenow={safeLow}\n aria-valuetext={\n getAriaValueText ? getAriaValueText(safeLow, 0) : undefined\n }\n aria-label={minAriaLabel}\n aria-describedby={ariaDescribedBy}\n aria-disabled={isDisabled ? true : undefined}\n aria-invalid={isInvalid ? true : undefined}\n onKeyDown={(e) => handleKeyDown(0, e)}\n />\n\n <div\n ref={upperThumbRef}\n role=\"slider\"\n tabIndex={isDisabled ? -1 : 0}\n className=\"cl-range-slider__thumb cl-range-slider__thumb--upper\"\n style={{ left: `${highPct}%` }}\n aria-valuemin={safeLow + minDistance}\n aria-valuemax={max}\n aria-valuenow={safeHigh}\n aria-valuetext={\n getAriaValueText ? getAriaValueText(safeHigh, 1) : undefined\n }\n aria-label={maxAriaLabel}\n aria-describedby={ariaDescribedBy}\n aria-disabled={isDisabled ? true : undefined}\n aria-invalid={isInvalid ? true : undefined}\n onKeyDown={(e) => handleKeyDown(1, e)}\n />\n </div>\n\n {marks && marks.length > 0 && (\n <div className=\"cl-range-slider__marks-container\" aria-hidden=\"true\">\n {marks.map((mark) => {\n const markPct = getPercentage(mark.value, min, max);\n return (\n <React.Fragment key={mark.value}>\n <span\n className=\"cl-range-slider__mark-point\"\n style={{ left: `${markPct}%` }}\n />\n {mark.label !== undefined && (\n <span\n className=\"cl-range-slider__mark-label\"\n style={{ left: `${markPct}%` }}\n >\n {mark.label}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </div>\n )}\n </div>\n );\n }\n);\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n TreeViewProps,\n TreeNode,\n TreeNodeState,\n} from \"./TreeView.types\";\n\ninterface FlattenedNode<TData> {\n node: TreeNode<TData>;\n level: number;\n parentId: string | null;\n}\n\nfunction getAllNodeIds<T>(nodes: TreeNode<T>[]): string[] {\n const ids: string[] = [];\n function traverse(list: TreeNode<T>[]) {\n for (const item of list) {\n ids.push(item.id);\n if (item.children && item.children.length > 0) {\n traverse(item.children);\n }\n }\n }\n traverse(nodes);\n return ids;\n}\n\nfunction getDescendantIds<T>(node: TreeNode<T>): string[] {\n const ids: string[] = [];\n function traverse(children: TreeNode<T>[]) {\n for (const child of children) {\n ids.push(child.id);\n if (child.children && child.children.length > 0) {\n traverse(child.children);\n }\n }\n }\n if (node.children) {\n traverse(node.children);\n }\n return ids;\n}\n\nexport const TreeView = React.forwardRef(function TreeView<TData = unknown>(\n props: TreeViewProps<TData>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {\n nodes = [],\n expandedIds: expandedIdsProp,\n defaultExpandedIds,\n onExpandedChange,\n selectedIds: selectedIdsProp,\n defaultSelectedIds,\n onSelectionChange,\n selectionMode = \"single\",\n indentSize = 20,\n defaultExpandAll = false,\n renderNode,\n emptyMessage = \"No items available\",\n ariaLabel = \"Tree View\",\n className,\n ...rest\n } = props;\n\n const initialExpanded = React.useMemo(() => {\n if (defaultExpandAll) {\n return getAllNodeIds(nodes);\n }\n return defaultExpandedIds ?? [];\n }, [defaultExpandAll, defaultExpandedIds, nodes]);\n\n const [expandedIds, setExpandedIds] = useControllableState<string[]>({\n value: expandedIdsProp,\n defaultValue: initialExpanded,\n onChange: onExpandedChange,\n });\n\n const [selectedIds, setSelectedIds] = useControllableState<string[]>({\n value: selectedIdsProp,\n defaultValue: defaultSelectedIds ?? [],\n onChange: onSelectionChange,\n });\n\n const nodeRefs = React.useRef<Map<string, HTMLElement>>(new Map());\n\n // Flatten currently visible nodes for keyboard navigation\n const visibleNodes = React.useMemo(() => {\n const flattened: FlattenedNode<TData>[] = [];\n const expandedSet = new Set(expandedIds);\n\n function walk(list: TreeNode<TData>[], level: number, parentId: string | null) {\n for (const item of list) {\n flattened.push({ node: item, level, parentId });\n if (\n item.children &&\n item.children.length > 0 &&\n expandedSet.has(item.id)\n ) {\n walk(item.children, level + 1, item.id);\n }\n }\n }\n\n walk(nodes, 1, null);\n return flattened;\n }, [nodes, expandedIds]);\n\n // Track focused node ID for roving tabIndex\n const [focusedId, setFocusedId] = React.useState<string | null>(() => {\n return visibleNodes.length > 0 ? (visibleNodes[0]?.node.id ?? null) : null;\n });\n\n // Keep focused ID valid within visible nodes and recover focus to visible ancestor if collapsed\n React.useEffect(() => {\n if (visibleNodes.length === 0) {\n setFocusedId(null);\n return;\n }\n if (!focusedId) return;\n\n const isCurrentFocusedVisible = visibleNodes.some((vn) => vn.node.id === focusedId);\n if (!isCurrentFocusedVisible) {\n // Find which visible node was the ancestor of the now-hidden focused node\n let targetId: string | null = null;\n for (const item of visibleNodes) {\n const descendants = getDescendantIds(item.node);\n if (descendants.includes(focusedId)) {\n targetId = item.node.id;\n break;\n }\n }\n const finalId = targetId ?? visibleNodes[0]?.node.id ?? null;\n if (finalId) {\n setFocusedId(finalId);\n nodeRefs.current.get(finalId)?.focus();\n }\n }\n }, [visibleNodes, focusedId]);\n\n const toggleExpand = React.useCallback(\n (node: TreeNode<TData>) => {\n if (!node.children || node.children.length === 0 || node.disabled) return;\n const isExpanded = expandedIds.includes(node.id);\n let newExpanded: string[];\n\n if (isExpanded) {\n // If currently focused node is inside the collapsing branch, move focus to this parent\n const descendants = getDescendantIds(node);\n if (focusedId && descendants.includes(focusedId)) {\n setFocusedId(node.id);\n nodeRefs.current.get(node.id)?.focus();\n }\n newExpanded = expandedIds.filter((id) => id !== node.id);\n } else {\n newExpanded = [...expandedIds, node.id];\n }\n\n setExpandedIds(newExpanded);\n },\n [expandedIds, focusedId, setExpandedIds]\n );\n\n const handleSelect = React.useCallback(\n (node: TreeNode<TData>) => {\n if (node.disabled || selectionMode === \"none\") return;\n\n if (selectionMode === \"single\") {\n setSelectedIds([node.id]);\n } else if (selectionMode === \"multi\") {\n if (selectedIds.includes(node.id)) {\n setSelectedIds(selectedIds.filter((id) => id !== node.id));\n } else {\n setSelectedIds([...selectedIds, node.id]);\n }\n }\n },\n [selectionMode, selectedIds, setSelectedIds]\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent, item: FlattenedNode<TData>) => {\n const { node, parentId } = item;\n const currentIndex = visibleNodes.findIndex((vn) => vn.node.id === node.id);\n const isExpanded = expandedIds.includes(node.id);\n const hasChildren = Boolean(node.children && node.children.length > 0);\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (currentIndex < visibleNodes.length - 1) {\n const nextNode = visibleNodes[currentIndex + 1];\n if (nextNode) {\n setFocusedId(nextNode.node.id);\n nodeRefs.current.get(nextNode.node.id)?.focus();\n }\n }\n break;\n }\n\n case \"ArrowUp\": {\n e.preventDefault();\n if (currentIndex > 0) {\n const prevNode = visibleNodes[currentIndex - 1];\n if (prevNode) {\n setFocusedId(prevNode.node.id);\n nodeRefs.current.get(prevNode.node.id)?.focus();\n }\n }\n break;\n }\n\n case \"ArrowRight\": {\n e.preventDefault();\n if (hasChildren) {\n if (!isExpanded) {\n toggleExpand(node);\n } else if (currentIndex < visibleNodes.length - 1) {\n const firstChild = visibleNodes[currentIndex + 1];\n if (firstChild) {\n setFocusedId(firstChild.node.id);\n nodeRefs.current.get(firstChild.node.id)?.focus();\n }\n }\n }\n break;\n }\n\n case \"ArrowLeft\": {\n e.preventDefault();\n if (hasChildren && isExpanded) {\n toggleExpand(node);\n } else if (parentId) {\n setFocusedId(parentId);\n nodeRefs.current.get(parentId)?.focus();\n }\n break;\n }\n\n case \"Home\": {\n e.preventDefault();\n const first = visibleNodes[0];\n if (first) {\n setFocusedId(first.node.id);\n nodeRefs.current.get(first.node.id)?.focus();\n }\n break;\n }\n\n case \"End\": {\n e.preventDefault();\n const last = visibleNodes[visibleNodes.length - 1];\n if (last) {\n setFocusedId(last.node.id);\n nodeRefs.current.get(last.node.id)?.focus();\n }\n break;\n }\n\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n handleSelect(node);\n break;\n }\n\n default:\n break;\n }\n },\n [visibleNodes, expandedIds, toggleExpand, handleSelect]\n );\n\n const renderTreeGroup = (items: TreeNode<TData>[], level: number): React.ReactNode => {\n return (\n <ul\n role={level === 1 ? \"tree\" : \"group\"}\n aria-label={level === 1 ? ariaLabel : undefined}\n className={classNames(\n \"cl-treeview__group\",\n level === 1 && \"cl-treeview__root-group\"\n )}\n >\n {items.map((node) => {\n const hasChildren = Boolean(node.children && node.children.length > 0);\n const isExpanded = expandedIds.includes(node.id);\n const isSelected = selectedIds.includes(node.id);\n const isFocused = focusedId === node.id || (!focusedId && visibleNodes[0]?.node.id === node.id);\n const isDisabled = Boolean(node.disabled);\n\n const state: TreeNodeState = {\n isExpanded,\n isSelected,\n isFocused,\n isDisabled,\n hasChildren,\n level,\n };\n\n const flattenedItem: FlattenedNode<TData> = {\n node,\n level,\n parentId: null,\n };\n\n return (\n <li\n key={node.id}\n role=\"treeitem\"\n id={`cl-treeview-node-${node.id}`}\n ref={(el) => {\n if (el) {\n nodeRefs.current.set(node.id, el);\n } else {\n nodeRefs.current.delete(node.id);\n }\n }}\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-selected={selectionMode !== \"none\" ? isSelected : undefined}\n aria-disabled={isDisabled ? true : undefined}\n aria-level={level}\n tabIndex={isFocused ? 0 : -1}\n className={classNames(\n \"cl-treeview__node\",\n isSelected && \"cl-treeview__node--selected\",\n isDisabled && \"cl-treeview__node--disabled\",\n isFocused && \"cl-treeview__node--focused\"\n )}\n onFocus={() => setFocusedId(node.id)}\n onKeyDown={(e) => {\n const currentFlat = visibleNodes.find((vn) => vn.node.id === node.id) ?? flattenedItem;\n handleKeyDown(e, currentFlat);\n }}\n onClick={(e) => {\n e.stopPropagation();\n setFocusedId(node.id);\n if (!isDisabled) {\n handleSelect(node);\n }\n }}\n >\n <div\n className=\"cl-treeview__node-content\"\n style={{ paddingLeft: `${(level - 1) * indentSize}px` }}\n >\n {hasChildren ? (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label={isExpanded ? `Collapse ${typeof node.label === \"string\" ? node.label : \"node\"}` : `Expand ${typeof node.label === \"string\" ? node.label : \"node\"}`}\n className={classNames(\n \"cl-treeview__toggle-btn\",\n isExpanded && \"cl-treeview__toggle-btn--expanded\"\n )}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n toggleExpand(node);\n }}\n >\n <svg\n className=\"cl-treeview__chevron-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M6 4L10 8L6 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n ) : (\n <span className=\"cl-treeview__toggle-placeholder\" aria-hidden=\"true\" />\n )}\n\n {node.icon && (\n <span className=\"cl-treeview__node-icon\" aria-hidden=\"true\">\n {node.icon}\n </span>\n )}\n\n {renderNode ? (\n renderNode(node, state)\n ) : (\n <span className=\"cl-treeview__node-label\">{node.label}</span>\n )}\n </div>\n\n {hasChildren && isExpanded && node.children && (\n renderTreeGroup(node.children, level + 1)\n )}\n </li>\n );\n })}\n </ul>\n );\n };\n\n return (\n <div\n ref={ref}\n className={classNames(\"cl-treeview\", className)}\n {...rest}\n >\n {nodes.length === 0 ? (\n <div className=\"cl-treeview__empty\" role=\"status\">{emptyMessage}</div>\n ) : (\n renderTreeGroup(nodes, 1)\n )}\n </div>\n );\n}) as <TData = unknown>(\n props: TreeViewProps<TData> & { ref?: React.Ref<HTMLDivElement> }\n) => React.ReactElement;\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n StepperProps,\n StepItem,\n} from \"./Stepper.types\";\n\nexport const Stepper = React.forwardRef<HTMLElement, StepperProps>(\n function Stepper(props, ref) {\n const {\n steps = [],\n activeStep: activeStepProp,\n defaultActiveStep = 0,\n onStepChange,\n orientation = \"horizontal\",\n size = \"md\",\n isClickable = false,\n ariaLabel = \"Progress\",\n className,\n ...rest\n } = props;\n\n const [activeStep, setActiveStep] = useControllableState<string | number>({\n value: activeStepProp,\n defaultValue: defaultActiveStep,\n onChange: onStepChange,\n });\n\n // Resolve numerical active index\n const activeIndex = React.useMemo(() => {\n const foundIndex = steps.findIndex((s) => s.id === activeStep);\n if (foundIndex !== -1) return foundIndex;\n if (typeof activeStep === \"number\" && activeStep >= 0 && activeStep < steps.length) {\n return activeStep;\n }\n return 0;\n }, [steps, activeStep]);\n\n const handleStepClick = (step: StepItem, index: number) => {\n if (step.disabled) return;\n const canClick =\n typeof isClickable === \"function\" ? isClickable(step, index) : isClickable;\n if (canClick) {\n setActiveStep(step.id);\n }\n };\n\n return (\n <nav\n ref={ref}\n aria-label={ariaLabel}\n className={classNames(\n \"cl-stepper\",\n `cl-stepper--${orientation}`,\n `cl-stepper--${size}`,\n className\n )}\n {...rest}\n >\n <ol className=\"cl-stepper__list\">\n {steps.map((step, index) => {\n const isCurrent = index === activeIndex;\n const isError = Boolean(step.error);\n const isCompleted =\n !isError &&\n (step.completed === true ||\n (step.completed === undefined && index < activeIndex));\n const isDisabled = Boolean(step.disabled);\n\n const isInteractive =\n typeof isClickable === \"function\"\n ? isClickable(step, index)\n : isClickable;\n\n let status = \"upcoming\";\n if (isError) status = \"error\";\n else if (isCurrent) status = \"current\";\n else if (isCompleted) status = \"completed\";\n if (isDisabled) status = \"disabled\";\n\n const stepNumber = index + 1;\n\n const renderIndicatorContent = () => {\n if (isError) {\n return (\n <svg\n className=\"cl-stepper__status-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle cx=\"8\" cy=\"8\" r=\"6.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 4.5V8.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n\n if (isCompleted) {\n return (\n <svg\n className=\"cl-stepper__status-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M13.5 4.5L6.5 11.5L3 8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n }\n\n if (step.icon) {\n return step.icon;\n }\n\n return stepNumber;\n };\n\n const triggerContent = (\n <>\n <span\n className={classNames(\n \"cl-stepper__indicator\",\n `cl-stepper__indicator--${status}`\n )}\n aria-hidden=\"true\"\n >\n {renderIndicatorContent()}\n </span>\n\n <div className=\"cl-stepper__content\">\n <div className=\"cl-stepper__label-row\">\n <span className=\"cl-stepper__label\">{step.label}</span>\n {step.optional && (\n <span className=\"cl-stepper__optional\" aria-label=\"Optional\">\n (Optional)\n </span>\n )}\n </div>\n {step.description && (\n <span className=\"cl-stepper__description\">\n {step.description}\n </span>\n )}\n </div>\n </>\n );\n\n return (\n <li\n key={step.id}\n className={classNames(\n \"cl-stepper__item\",\n `cl-stepper__item--${status}`,\n isCurrent && \"cl-stepper__item--current\"\n )}\n aria-current={isCurrent ? \"step\" : undefined}\n >\n {isInteractive ? (\n <button\n type=\"button\"\n className=\"cl-stepper__trigger\"\n disabled={isDisabled}\n onClick={() => handleStepClick(step, index)}\n aria-current={isCurrent ? \"step\" : undefined}\n >\n {triggerContent}\n </button>\n ) : (\n <div className=\"cl-stepper__trigger-static\">\n {triggerContent}\n </div>\n )}\n\n {index < steps.length - 1 && (\n <div\n className={classNames(\n \"cl-stepper__connector\",\n isCompleted && \"cl-stepper__connector--completed\"\n )}\n aria-hidden=\"true\"\n >\n <div className=\"cl-stepper__connector-line\" />\n </div>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n }\n);\n\nStepper.displayName = \"Stepper\";\n","import * as React from \"react\";\nimport { useControllableState } from \"../../hooks/useControllableState\";\nimport { classNames } from \"../../utils/classNames\";\nimport type {\n CarouselProps,\n CarouselSlideData,\n} from \"./Carousel.types\";\n\nexport const Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n function Carousel(props, ref) {\n const {\n slides,\n children,\n activeSlide: activeSlideProp,\n defaultActiveSlide = 0,\n onSlideChange,\n loop = false,\n showControls = true,\n showPagination = true,\n autoPlay = false,\n autoPlayInterval = 5000,\n pauseOnHover = true,\n pauseOnFocus = true,\n isDisabled = false,\n ariaLabel = \"Content Carousel\",\n className,\n ...rest\n } = props;\n\n // Normalize slides array from slides prop or children\n const normalizedSlides = React.useMemo<{\n content: React.ReactNode;\n ariaLabel?: string | undefined;\n }[]>(() => {\n if (slides && slides.length > 0) {\n return slides.map((item) => {\n if (\n typeof item === \"object\" &&\n item !== null &&\n \"content\" in item\n ) {\n const slideData = item as CarouselSlideData;\n return {\n content: slideData.content,\n ariaLabel: slideData.ariaLabel,\n };\n }\n return { content: item, ariaLabel: undefined };\n });\n }\n\n if (children) {\n return React.Children.toArray(children).map((child) => ({\n content: child,\n ariaLabel: undefined,\n }));\n }\n\n return [];\n }, [slides, children]);\n\n const totalSlides = normalizedSlides.length;\n\n const [activeSlide, setActiveSlide] = useControllableState<number>({\n value: activeSlideProp,\n defaultValue: defaultActiveSlide,\n onChange: onSlideChange,\n });\n\n // Safely clamp active slide index\n const clampedActiveIndex = React.useMemo(() => {\n if (totalSlides === 0) return 0;\n return Math.max(0, Math.min(activeSlide, totalSlides - 1));\n }, [activeSlide, totalSlides]);\n\n // Autoplay & motion state\n const [isPlaying, setIsPlaying] = React.useState(autoPlay);\n const [isHovered, setIsHovered] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const [prefersReducedMotion, setPrefersReducedMotion] = React.useState(false);\n\n React.useEffect(() => {\n if (typeof window === \"undefined\" || !window.matchMedia) return;\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n setPrefersReducedMotion(mediaQuery.matches);\n\n const listener = (e: MediaQueryListEvent) => {\n setPrefersReducedMotion(e.matches);\n };\n mediaQuery.addEventListener?.(\"change\", listener);\n return () => mediaQuery.removeEventListener?.(\"change\", listener);\n }, []);\n\n const goToNext = React.useCallback(() => {\n if (totalSlides <= 1 || isDisabled) return;\n if (clampedActiveIndex < totalSlides - 1) {\n setActiveSlide(clampedActiveIndex + 1);\n } else if (loop) {\n setActiveSlide(0);\n }\n }, [totalSlides, isDisabled, clampedActiveIndex, loop, setActiveSlide]);\n\n const goToPrev = React.useCallback(() => {\n if (totalSlides <= 1 || isDisabled) return;\n if (clampedActiveIndex > 0) {\n setActiveSlide(clampedActiveIndex - 1);\n } else if (loop) {\n setActiveSlide(totalSlides - 1);\n }\n }, [totalSlides, isDisabled, clampedActiveIndex, loop, setActiveSlide]);\n\n const goToSlide = React.useCallback(\n (index: number) => {\n if (isDisabled) return;\n const target = Math.max(0, Math.min(index, totalSlides - 1));\n setActiveSlide(target);\n },\n [isDisabled, totalSlides, setActiveSlide]\n );\n\n // Autoplay timer effect\n React.useEffect(() => {\n if (\n !autoPlay ||\n !isPlaying ||\n isDisabled ||\n totalSlides <= 1 ||\n prefersReducedMotion ||\n (pauseOnHover && isHovered) ||\n (pauseOnFocus && isFocused)\n ) {\n return;\n }\n\n const timer = setInterval(() => {\n goToNext();\n }, autoPlayInterval);\n\n return () => clearInterval(timer);\n }, [\n autoPlay,\n isPlaying,\n isDisabled,\n totalSlides,\n prefersReducedMotion,\n pauseOnHover,\n isHovered,\n pauseOnFocus,\n isFocused,\n autoPlayInterval,\n goToNext,\n ]);\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isDisabled || totalSlides <= 1) return;\n\n switch (e.key) {\n case \"ArrowLeft\":\n e.preventDefault();\n goToPrev();\n break;\n case \"ArrowRight\":\n e.preventDefault();\n goToNext();\n break;\n case \"Home\":\n e.preventDefault();\n goToSlide(0);\n break;\n case \"End\":\n e.preventDefault();\n goToSlide(totalSlides - 1);\n break;\n default:\n break;\n }\n };\n\n // Touch & pointer gesture swiping\n const touchStartX = React.useRef<number | null>(null);\n\n const handlePointerDown = (e: React.PointerEvent) => {\n if (isDisabled) return;\n touchStartX.current = e.clientX;\n };\n\n const handlePointerUp = (e: React.PointerEvent) => {\n if (isDisabled || touchStartX.current === null) return;\n const diffX = e.clientX - touchStartX.current;\n touchStartX.current = null;\n\n if (Math.abs(diffX) > 40) {\n if (diffX < 0) {\n goToNext();\n } else {\n goToPrev();\n }\n }\n };\n\n const isPrevDisabled =\n isDisabled || (!loop && clampedActiveIndex === 0) || totalSlides <= 1;\n const isNextDisabled =\n isDisabled ||\n (!loop && clampedActiveIndex === totalSlides - 1) ||\n totalSlides <= 1;\n\n return (\n <div\n ref={ref}\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label={ariaLabel}\n tabIndex={0}\n className={classNames(\n \"cl-carousel\",\n isDisabled && \"cl-carousel--disabled\",\n className\n )}\n onKeyDown={handleKeyDown}\n onPointerDown={handlePointerDown}\n onPointerUp={handlePointerUp}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n {...rest}\n >\n <div className=\"cl-carousel__viewport\">\n <div\n className=\"cl-carousel__track\"\n aria-live={isPlaying ? \"off\" : \"polite\"}\n style={{\n transform: `translateX(-${clampedActiveIndex * 100}%)`,\n }}\n >\n {normalizedSlides.map((slide, index) => {\n const isActive = index === clampedActiveIndex;\n const label = slide.ariaLabel ?? `${index + 1} of ${totalSlides}`;\n\n return (\n <div\n key={index}\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={label}\n aria-hidden={isActive ? \"false\" : \"true\"}\n className={classNames(\n \"cl-carousel__slide\",\n isActive && \"cl-carousel__slide--active\"\n )}\n >\n {slide.content}\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Previous & Next Control Buttons */}\n {showControls && totalSlides > 0 && (\n <div className=\"cl-carousel__controls\" aria-label=\"Carousel navigation\">\n <button\n type=\"button\"\n className=\"cl-carousel__arrow-btn cl-carousel__arrow-btn--prev\"\n aria-label=\"Previous slide\"\n disabled={isPrevDisabled}\n onClick={goToPrev}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M10 12L6 8L10 4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {autoPlay && (\n <button\n type=\"button\"\n className=\"cl-carousel__autoplay-btn\"\n aria-label={\n isPlaying\n ? \"Pause automatic slide rotation\"\n : \"Start automatic slide rotation\"\n }\n onClick={() => setIsPlaying((p) => !p)}\n >\n {isPlaying ? (\n <svg viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <rect x=\"3\" y=\"3\" width=\"3.5\" height=\"10\" rx=\"1\" />\n <rect x=\"9.5\" y=\"3\" width=\"3.5\" height=\"10\" rx=\"1\" />\n </svg>\n ) : (\n <svg viewBox=\"0 0 16 16\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4.5 3.5V12.5L12 8L4.5 3.5Z\" />\n </svg>\n )}\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"cl-carousel__arrow-btn cl-carousel__arrow-btn--next\"\n aria-label=\"Next slide\"\n disabled={isNextDisabled}\n onClick={goToNext}\n >\n <svg viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n <path\n d=\"M6 4L10 8L6 12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n )}\n\n {/* Pagination Indicators */}\n {showPagination && totalSlides > 1 && (\n <div className=\"cl-carousel__pagination\" role=\"group\" aria-label=\"Slides pagination\">\n {normalizedSlides.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n className={classNames(\n \"cl-carousel__dot-btn\",\n i === clampedActiveIndex && \"cl-carousel__dot-btn--active\"\n )}\n aria-label={`Go to slide ${i + 1}`}\n aria-current={i === clampedActiveIndex ? \"true\" : undefined}\n disabled={isDisabled}\n onClick={() => goToSlide(i)}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nCarousel.displayName = \"Carousel\";\n","import * as React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport type { CarouselSlideProps } from \"./Carousel.types\";\n\nexport const CarouselSlide = React.forwardRef<HTMLDivElement, CarouselSlideProps>(\n function CarouselSlide(props, ref) {\n const { children, className, ...rest } = props;\n return (\n <div\n ref={ref}\n className={classNames(\"cl-carousel__slide\", className)}\n {...rest}\n >\n {children}\n </div>\n );\n }\n);\n\nCarouselSlide.displayName = \"CarouselSlide\";\n"]}