@bsginstitute/bsg-integra 0.0.5 → 0.0.6
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,"file":"bsginstitute-bsg-integra.mjs","sources":["../../../projects/bsg-integra/src/lib/components/accordion/accordion.variants.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion.component.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion-item.component.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion-trigger.component.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion-content.component.ts","../../../projects/bsg-integra/src/lib/components/alert/alert.variants.ts","../../../projects/bsg-integra/src/lib/components/alert/alert.component.ts","../../../projects/bsg-integra/src/lib/components/avatar/avatar.variants.ts","../../../projects/bsg-integra/src/lib/components/avatar/avatar.component.ts","../../../projects/bsg-integra/src/lib/components/badge/badge.variants.ts","../../../projects/bsg-integra/src/lib/components/badge/badge.component.ts","../../../projects/bsg-integra/src/lib/components/button/button.variants.ts","../../../projects/bsg-integra/src/lib/components/button/button.component.ts","../../../projects/bsg-integra/src/lib/components/card/card.variants.ts","../../../projects/bsg-integra/src/lib/components/card/card.component.ts","../../../projects/bsg-integra/src/lib/components/carousel/carousel.variants.ts","../../../projects/bsg-integra/src/lib/components/carousel/carousel.component.ts","../../../projects/bsg-integra/src/lib/components/checkbox/checkbox.component.ts","../../../projects/bsg-integra/src/lib/components/collapsible/collapsible.component.ts","../../../projects/bsg-integra/src/lib/components/collapsible/collapsible-trigger.directive.ts","../../../projects/bsg-integra/src/lib/components/collapsible/collapsible-content.component.ts","../../../projects/bsg-integra/src/lib/components/combobox/combobox.variants.ts","../../../projects/bsg-integra/src/lib/components/combobox/combobox.component.ts","../../../projects/bsg-integra/src/lib/components/dialog/dialog.variants.ts","../../../projects/bsg-integra/src/lib/components/dialog/dialog.component.ts","../../../projects/bsg-integra/src/lib/components/input/input.component.ts","../../../projects/bsg-integra/src/lib/components/label/label.variants.ts","../../../projects/bsg-integra/src/lib/components/label/label.component.ts","../../../projects/bsg-integra/src/lib/components/radio/radio.variants.ts","../../../projects/bsg-integra/src/lib/components/radio/radio.component.ts","../../../projects/bsg-integra/src/lib/components/radio-group/radio-group.variants.ts","../../../projects/bsg-integra/src/lib/components/radio-group/radio-group.component.ts","../../../projects/bsg-integra/src/lib/components/select/select.variants.ts","../../../projects/bsg-integra/src/lib/components/select/select.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar.service.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/side-navbar.variants.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-provider.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-header.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-content.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-footer.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group-label.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group-content.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group-action.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-item.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-button.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-action.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-badge.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-sub.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-sub-item.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-sub-button.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-separator.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-trigger.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-rail.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-inset.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/index.ts","../../../projects/bsg-integra/src/lib/components/skeleton/skeleton.variants.ts","../../../projects/bsg-integra/src/lib/components/skeleton/skeleton.component.ts","../../../projects/bsg-integra/src/lib/components/spinner/spinner.variants.ts","../../../projects/bsg-integra/src/lib/components/spinner/spinner.component.ts","../../../projects/bsg-integra/src/lib/components/switch/switch.variants.ts","../../../projects/bsg-integra/src/lib/components/switch/switch.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tab-navigation.variants.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs-list.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs-trigger.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs-content.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tab-navigation.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/index.ts","../../../projects/bsg-integra/src/lib/components/table/table.variants.ts","../../../projects/bsg-integra/src/lib/components/table/table.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-header.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-body.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-footer.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-row.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-head.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-cell.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-card.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-card-header.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-card-footer.component.ts","../../../projects/bsg-integra/src/lib/components/pagination/pagination.variants.ts","../../../projects/bsg-integra/src/lib/components/pagination/pagination.component.ts","../../../projects/bsg-integra/src/lib/components/separator/separator.variants.ts","../../../projects/bsg-integra/src/lib/components/separator/separator.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-container.component.ts","../../../projects/bsg-integra/src/lib/components/table/index.ts","../../../projects/bsg-integra/src/lib/components/textarea/textarea.component.ts","../../../projects/bsg-integra/src/lib/components/timepicker/timepicker.variants.ts","../../../projects/bsg-integra/src/lib/components/timepicker/timepicker.component.ts","../../../projects/bsg-integra/src/lib/components/toast/toast.variants.ts","../../../projects/bsg-integra/src/lib/components/toast/toast.component.ts","../../../projects/bsg-integra/src/lib/components/tooltip/tooltip.variants.ts","../../../projects/bsg-integra/src/lib/components/tooltip/tooltip.component.ts","../../../projects/bsg-integra/src/public-api.ts","../../../projects/bsg-integra/src/bsginstitute-bsg-integra.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Accordion container variants\n *\n * Controls the overall accordion container layout and typography\n */\nexport const accordionVariants = cva(\n clsx(\n // Layout\n 'w-full',\n ),\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border border-border rounded-lg p-2',\n elevated: 'shadow-md rounded-lg p-2',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Accordion item variants\n *\n * Controls the individual accordion item styles\n */\nexport const accordionItemVariants = cva(\n clsx(\n // Border\n 'border-b border-border',\n // Last item has no border\n 'last:border-b-0',\n ),\n);\n\n/**\n * Accordion trigger variants\n *\n * Controls the clickable header button\n */\nexport const accordionTriggerVariants = cva(\n clsx(\n // Layout\n 'flex flex-1 items-center justify-between w-full',\n // Spacing\n 'py-4 px-2',\n // Typography\n 'font-medium text-left',\n // Transitions\n 'transition-all duration-200',\n // Hover\n 'hover:underline',\n // Focus\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n // Chevron\n '[&>svg]:shrink-0 [&>svg]:ml-auto [&>svg]:h-4 [&>svg]:w-4',\n ),\n);\n\n/**\n * Accordion content variants\n *\n * Controls the collapsible content area\n */\nexport const accordionContentVariants = cva(\n clsx(\n // Animation\n 'overflow-hidden',\n // Typography\n 'text-sm text-muted-foreground',\n\n 'py-2 px-2',\n ),\n);\n","import { Component, computed, input, OnInit, signal } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { accordionVariants } from './accordion.variants';\n\nexport type AccordionVariant = 'default' | 'bordered' | 'elevated';\nexport type AccordionType = 'single' | 'multiple';\n\nexport type AccordionVariantsProps = VariantProps<typeof accordionVariants>;\n\n/**\n * Accordion Component - Container for accordion items\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-accordion [type]=\"'single'\" [collapsible]=\"true\">\n * <bsg-accordion-item value=\"item-1\">\n * <bsg-accordion-trigger>Trigger text</bsg-accordion-trigger>\n * <bsg-accordion-content>Content here</bsg-accordion-content>\n * </bsg-accordion-item>\n * </bsg-accordion>\n * ```\n */\n@Component({\n selector: 'bsg-accordion',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionComponent implements OnInit {\n /** Accordion variant */\n readonly variant = input<AccordionVariant>('default');\n\n /** Type: 'single' allows one item open, 'multiple' allows multiple */\n readonly type = input<AccordionType>('single');\n\n /** If type is 'single', allows collapsing the open item */\n readonly collapsible = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Default value(s) - item value(s) to be open by default */\n readonly defaultValue = input<string | string[]>();\n\n // Internal state for tracking open items\n private readonly openItems = signal<Set<string>>(new Set());\n\n // Computed container classes\n readonly containerClasses = computed(() =>\n clsx(\n accordionVariants({\n variant: this.variant(),\n }),\n this.className(),\n ),\n );\n\n // Initialize default open items\n ngOnInit(): void {\n const defaultVal = this.defaultValue();\n if (defaultVal) {\n const values = Array.isArray(defaultVal) ? defaultVal : [defaultVal];\n this.openItems.set(new Set(values));\n }\n }\n\n // Check if an item is open\n isItemOpen(value: string): boolean {\n return this.openItems().has(value);\n }\n\n // Toggle an item open/closed\n toggleItem(value: string): void {\n const current = new Set(this.openItems());\n const isOpen = current.has(value);\n\n if (this.type() === 'single') {\n // Single mode: only one item open at a time\n if (isOpen) {\n if (this.collapsible()) {\n current.delete(value);\n }\n } else {\n current.clear();\n current.add(value);\n }\n } else {\n // Multiple mode: toggle the item\n if (isOpen) {\n current.delete(value);\n } else {\n current.add(value);\n }\n }\n\n this.openItems.set(current);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { accordionItemVariants } from './accordion.variants';\nimport { AccordionComponent } from './accordion.component';\n\n/**\n * AccordionItem Component - Individual accordion item container\n *\n * Usage:\n * ```html\n * <bsg-accordion-item value=\"item-1\">\n * <bsg-accordion-trigger>Question?</bsg-accordion-trigger>\n * <bsg-accordion-content>Answer</bsg-accordion-content>\n * </bsg-accordion-item>\n * ```\n */\n@Component({\n selector: 'bsg-accordion-item',\n standalone: true,\n template: `\n <div [class]=\"itemClasses()\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionItemComponent {\n /** Unique value for this accordion item */\n readonly value = input.required<string>();\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Inject parent accordion\n readonly accordion = inject(AccordionComponent);\n\n // Computed classes\n readonly itemClasses = computed(() =>\n clsx(accordionItemVariants(), this.className()),\n );\n\n // Check if this item is open\n isOpen(): boolean {\n return this.accordion.isItemOpen(this.value());\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { accordionTriggerVariants } from './accordion.variants';\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { AccordionComponent } from './accordion.component';\n\n/**\n * AccordionTrigger Component - Clickable header for accordion items\n *\n * Usage:\n * ```html\n * <bsg-accordion-trigger>\n * Click me to expand\n * </bsg-accordion-trigger>\n * ```\n */\n@Component({\n selector: 'bsg-accordion-trigger',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n [attr.aria-expanded]=\"isOpen()\"\n (click)=\"toggle()\"\n >\n <ng-content />\n <svg\n [class]=\"chevronClasses()\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionTriggerComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Inject parent item and accordion\n readonly item = inject(AccordionItemComponent);\n readonly accordion = inject(AccordionComponent);\n\n // Computed classes for trigger button\n readonly triggerClasses = computed(() =>\n clsx(accordionTriggerVariants(), this.className()),\n );\n\n // Computed classes for chevron icon\n readonly chevronClasses = computed(() =>\n clsx(\n 'transition-transform duration-200',\n this.isOpen() ? 'rotate-180' : '',\n ),\n );\n\n // Check if this item is open\n isOpen(): boolean {\n return this.item.isOpen();\n }\n\n // Toggle this item\n toggle(): void {\n this.accordion.toggleItem(this.item.value());\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { accordionContentVariants } from './accordion.variants';\nimport { AccordionItemComponent } from './accordion-item.component';\n\n/**\n * AccordionContent Component - Collapsible content area\n *\n * Usage:\n * ```html\n * <bsg-accordion-content>\n * Your content here\n * </bsg-accordion-content>\n * ```\n */\n@Component({\n selector: 'bsg-accordion-content',\n standalone: true,\n template: `\n @if (isOpen()) {\n <div [class]=\"contentClasses()\">\n <div class=\"pb-4 pt-0\">\n <ng-content />\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionContentComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Inject parent item\n readonly item = inject(AccordionItemComponent);\n\n // Computed classes\n readonly contentClasses = computed(() =>\n clsx(accordionContentVariants(), this.className()),\n );\n\n // Check if this item is open\n isOpen(): boolean {\n return this.item.isOpen();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Alert container variants\n *\n * Controls the overall alert container layout and colors\n */\nexport const alertVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center gap-2.5',\n // Spacing\n 'py-3 px-4',\n // Border\n 'rounded',\n // Typography\n 'text-sm font-medium tracking-tight',\n // Box model\n 'box-border',\n ),\n {\n variants: {\n variant: {\n default: 'text-muted-foreground',\n info: 'bg-info/20 text-info',\n success: 'bg-success/20 text-success',\n warning: 'bg-warning/20 text-warning',\n destructive: 'bg-destructive/20 text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Alert icon variants\n *\n * Controls the alert icon styles\n */\nexport const alertIconVariants = cva(clsx('shrink-0 w-6 h-6'));\n\n/**\n * Alert content variants\n *\n * Controls the alert content text area\n */\nexport const alertContentVariants = cva(clsx('flex-1 text-left'));\n\n/**\n * Alert close button variants\n *\n * Controls the dismissible close button\n */\nexport const alertCloseVariants = cva(\n clsx(\n // Layout\n 'shrink-0 flex items-center justify-center',\n // Size\n 'w-2 h-2',\n // Spacing\n 'p-0',\n // Border\n 'border-0 rounded-sm',\n // Background\n 'bg-transparent',\n // Cursor\n 'cursor-pointer',\n // Hover\n 'hover:opacity-80',\n // Focus\n 'focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',\n ),\n);\n","import { Component, computed, input, output, signal } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n alertVariants,\n alertIconVariants,\n alertContentVariants,\n alertCloseVariants,\n} from './alert.variants';\n\nexport type AlertVariant =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\nexport type AlertVariantsProps = VariantProps<typeof alertVariants>;\n\n/**\n * Alert Component - Display contextual feedback messages\n *\n * Usage:\n * ```html\n * <bsg-alert [variant]=\"'success'\" [dismissible]=\"true\" [content]=\"'Success message!'\" />\n * ```\n */\n@Component({\n selector: 'bsg-alert',\n standalone: true,\n template: `\n @if (!dismissed()) {\n <div [class]=\"alertClasses()\" [attr.role]=\"'alert'\">\n <!-- Icon for default variant -->\n @if (variant() === 'default') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.2904 1.13038C12.7758 0.738816 15.3201 1.21183 17.4994 2.46924C17.9776 2.74518 18.1423 3.35617 17.8666 3.83448C17.5906 4.31285 16.9788 4.4767 16.5004 4.20069C14.7174 3.17195 12.6354 2.78567 10.602 3.10596C8.5685 3.42633 6.70596 4.43431 5.32559 5.96143C3.94523 7.48862 3.12994 9.44313 3.01602 11.4985C2.90213 13.554 3.49639 15.587 4.69961 17.2573C5.90283 18.9276 7.64271 20.1352 9.62832 20.6782C11.6139 21.2212 13.726 21.0672 15.6117 20.2417C17.4976 19.4162 19.0436 17.9684 19.9916 16.1411C20.9395 14.3139 21.2317 12.2168 20.8207 10.1997C20.7105 9.65867 21.06 9.13044 21.601 9.02003C22.1421 8.90976 22.6704 9.25918 22.7807 9.8003C23.283 12.2657 22.9247 14.8286 21.766 17.062C20.6073 19.2954 18.7184 21.0647 16.4135 22.0737C14.1087 23.0826 11.5277 23.2705 9.10098 22.6069C6.67406 21.9432 4.54717 20.4678 3.07656 18.4263C1.60598 16.3847 0.879785 13.9004 1.01895 11.3882C1.15814 8.87595 2.15504 6.48722 3.84219 4.62061C5.52932 2.75412 7.80509 1.52194 10.2904 1.13038ZM21.2934 3.29249C21.6839 2.90241 22.317 2.90215 22.7074 3.29249C23.0979 3.68301 23.0979 4.317 22.7074 4.70753L12.7074 14.7075C12.317 15.0978 11.6839 15.0976 11.2934 14.7075L8.29336 11.7075C7.90284 11.317 7.90284 10.683 8.29336 10.2925C8.6839 9.90241 9.31704 9.90215 9.70742 10.2925L12.0004 12.5855L21.2934 3.29249Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n\n <!-- Icon for info variant -->\n @if (variant() === 'info') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 16V12M12 8H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Icon for success variant -->\n @if (variant() === 'success') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 6L9 17L4 12\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Icon for warning variant -->\n @if (variant() === 'warning') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 9V13M12.0001 17H12.0101M21.7301 18L13.7301 4C13.5556 3.6922 13.3027 3.43618 12.997 3.25806C12.6913 3.07995 12.3438 2.9861 11.9901 2.9861C11.6363 2.9861 11.2888 3.07995 10.9831 3.25806C10.6774 3.43618 10.4245 3.6922 10.2501 4L2.25005 18C2.07373 18.3054 1.98128 18.6519 1.98206 19.0045C1.98284 19.3571 2.07683 19.7032 2.2545 20.0078C2.43217 20.3124 2.6872 20.5646 2.99375 20.7388C3.30029 20.9131 3.64746 21.0032 4.00005 21H20.0001C20.351 20.9996 20.6956 20.907 20.9993 20.7313C21.3031 20.5556 21.5553 20.3031 21.7306 19.9991C21.9059 19.6951 21.9981 19.3504 21.998 18.9995C21.9979 18.6486 21.9055 18.3039 21.7301 18Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Icon for destructive variant -->\n @if (variant() === 'destructive') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.929 4.929L19.07 19.071M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Content -->\n <span [class]=\"contentClasses()\">{{ content() }}</span>\n\n <!-- Close button (only if dismissible) -->\n @if (dismissible()) {\n <button\n type=\"button\"\n [class]=\"closeClasses()\"\n (click)=\"handleDismiss()\"\n [attr.aria-label]=\"'Close alert'\"\n >\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.02459 0.167369C7.24775 -0.0557898 7.60947 -0.0557898 7.83263 0.167369C8.05579 0.390529 8.05579 0.752255 7.83263 0.975414L4.80804 4L7.83263 7.02459C8.05579 7.24775 8.05579 7.60947 7.83263 7.83263C7.60947 8.05579 7.24775 8.05579 7.02459 7.83263L4 4.80804L0.975414 7.83263C0.752255 8.05579 0.390529 8.05579 0.167369 7.83263C-0.0557898 7.60947 -0.0557898 7.24775 0.167369 7.02459L3.19196 4L0.167369 0.975414C-0.0557898 0.752255 -0.0557898 0.390529 0.167369 0.167369C0.390529 -0.0557898 0.752255 -0.0557898 0.975414 0.167369L4 3.19196L7.02459 0.167369Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n </button>\n }\n </div>\n }\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AlertComponent {\n /** Alert variant */\n readonly variant = input<AlertVariant>('default');\n\n /** Whether the alert can be dismissed */\n readonly dismissible = input<boolean>(false);\n\n /** Alert message content */\n readonly content = input<string>('Componente de alerta Default');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Dismiss event */\n readonly dismiss = output<void>();\n\n /** Internal dismissed state */\n protected readonly dismissed = signal<boolean>(false);\n\n // Computed container classes\n readonly alertClasses = computed(() =>\n clsx(\n alertVariants({\n variant: this.variant(),\n }),\n this.className(),\n ),\n );\n\n // Computed icon classes\n readonly iconClasses = computed(() => alertIconVariants());\n\n // Computed content classes\n readonly contentClasses = computed(() => alertContentVariants());\n\n // Computed close button classes\n readonly closeClasses = computed(() => alertCloseVariants());\n\n // Computed icon color based on variant\n readonly iconColor = computed(() => {\n const colorMap = {\n default: '#0284C7', // Sky-600\n info: '#2563EB', // Blue-600\n success: '#16A34A', // Green-600\n warning: '#CA8A04', // Yellow-600\n destructive: '#DC2626', // Red-600\n };\n return colorMap[this.variant()];\n });\n\n handleDismiss(): void {\n this.dismissed.set(true);\n this.dismiss.emit();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Avatar container variants\n *\n * Controls the avatar size and base styles\n */\nexport const avatarVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center justify-center shrink-0',\n // Shape\n 'rounded-full overflow-hidden',\n // Position\n 'relative',\n // Box model\n 'box-border',\n // Non-interactive\n 'pointer-events-none select-none',\n ),\n {\n variants: {\n size: {\n xs: 'w-6 h-6', // 24px\n sm: 'w-8 h-8', // 32px\n md: 'w-10 h-10', // 40px\n lg: 'w-12 h-12', // 48px\n xl: 'w-16 h-16', // 64px\n },\n type: {\n default: 'bg-transparent',\n fallback: 'bg-primary',\n image: 'bg-muted',\n },\n },\n defaultVariants: {\n size: 'md',\n type: 'default',\n },\n },\n);\n\n/**\n * Avatar initials variants\n *\n * Controls the initials text styles for fallback type\n */\nexport const avatarInitialsVariants = cva(\n clsx(\n // Color\n 'text-primary-foreground',\n // Typography\n 'font-sans font-normal tracking-wide',\n // Layout\n 'flex items-center justify-center w-full h-full',\n // Text\n 'text-center',\n ),\n {\n variants: {\n size: {\n xs: 'text-xs leading-[17px]', // 12px\n sm: 'text-sm leading-[21px]', // 14px\n md: 'text-lg leading-[27px]', // 18px\n lg: 'text-2xl leading-[27px]', // 24px\n xl: 'text-4xl leading-[27px]', // 36px\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Avatar icon variants\n *\n * Controls the SVG icon styles for default type\n */\nexport const avatarIconVariants = cva(clsx('w-full h-full block'));\n\n/**\n * Avatar image variants\n *\n * Controls the img element styles for image type\n */\nexport const avatarImgVariants = cva(\n clsx('w-full h-full block object-cover object-center'),\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n avatarVariants,\n avatarInitialsVariants,\n avatarIconVariants,\n avatarImgVariants,\n} from './avatar.variants';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarType = 'default' | 'fallback';\n\nexport type AvatarVariantsProps = VariantProps<typeof avatarVariants>;\n\n/**\n * Avatar Component - Display user profile images, icons, or initials\n *\n * Usage:\n * ```html\n * <!-- With image -->\n * <bsg-avatar [image]=\"'path/to/image.jpg'\" [size]=\"'lg'\" />\n *\n * <!-- With initials -->\n * <bsg-avatar [type]=\"'fallback'\" [initials]=\"'JD'\" [size]=\"'md'\" />\n *\n * <!-- Default icon -->\n * <bsg-avatar [size]=\"'sm'\" />\n * ```\n */\n@Component({\n selector: 'bsg-avatar',\n standalone: true,\n template: `\n <!-- Fallback Type: Initials -->\n @if (type() === 'fallback') {\n <div\n [class]=\"avatarClasses()\"\n [attr.role]=\"'img'\"\n [attr.aria-label]=\"'Avatar with initials ' + initials()\"\n >\n <span [class]=\"initialsClasses()\">{{ initials() }}</span>\n </div>\n }\n\n <!-- Default Type: Image or Icon -->\n @if (type() === 'default' && !image()) {\n <div\n [class]=\"avatarClasses()\"\n [attr.role]=\"'img'\"\n [attr.aria-label]=\"'User avatar'\"\n >\n <!-- User Icon SVG - scaled per size -->\n <svg\n [class]=\"iconClasses()\"\n [attr.viewBox]=\"iconViewBox()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"iconCenter()\"\n [attr.cy]=\"iconCenter()\"\n [attr.r]=\"iconCenter()\"\n fill=\"white\"\n />\n <circle\n [attr.cx]=\"iconCenter()\"\n [attr.cy]=\"headCenterY()\"\n [attr.r]=\"headRadius()\"\n fill=\"#7c3aed\"\n />\n <path [attr.d]=\"bodyPath()\" fill=\"#7c3aed\" />\n </svg>\n </div>\n }\n\n <!-- Default Type: Image -->\n @if (type() === 'default' && image()) {\n <div\n [class]=\"avatarImageClasses()\"\n [attr.role]=\"'img'\"\n [attr.aria-label]=\"'User avatar'\"\n >\n <img [src]=\"image()\" [alt]=\"'User avatar'\" [class]=\"imgClasses()\" />\n </div>\n }\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class AvatarComponent {\n /** Avatar size */\n readonly size = input<AvatarSize>('md');\n\n /** Avatar type */\n readonly type = input<AvatarType>('default');\n\n /** Initials text (only for fallback type) */\n readonly initials = input<string>('JC');\n\n /** Image URL (only for default type) */\n readonly image = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Computed container classes for fallback and default icon\n readonly avatarClasses = computed(() =>\n clsx(\n avatarVariants({\n size: this.size(),\n type: this.type(),\n }),\n this.className(),\n ),\n );\n\n // Computed container classes for image type\n readonly avatarImageClasses = computed(() =>\n clsx(\n avatarVariants({\n size: this.size(),\n type: 'image',\n }),\n this.className(),\n ),\n );\n\n // Computed initials classes\n readonly initialsClasses = computed(() =>\n avatarInitialsVariants({\n size: this.size(),\n }),\n );\n\n // Computed icon classes\n readonly iconClasses = computed(() => avatarIconVariants());\n\n // Computed image classes\n readonly imgClasses = computed(() => avatarImgVariants());\n\n // SVG geometry calculations based on size\n readonly dimensions = computed(() => {\n const sizeMap: Record<AvatarSize, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 64,\n };\n return sizeMap[this.size()];\n });\n\n readonly iconViewBox = computed(() => {\n const dim = this.dimensions();\n return `0 0 ${dim} ${dim}`;\n });\n\n readonly iconCenter = computed(() => this.dimensions() / 2);\n\n // Head circle position and radius (based on Figma proportions)\n readonly headCenterY = computed(() => {\n const ratios: Record<AvatarSize, number> = {\n xs: 9.75, // 9.75/24 = 0.40625\n sm: 13, // 13/32 = 0.40625\n md: 16.25, // 16.25/40 = 0.40625\n lg: 19.5, // 19.5/48 = 0.40625\n xl: 26, // 26/64 = 0.40625\n };\n return ratios[this.size()];\n });\n\n readonly headRadius = computed(() => {\n const ratios: Record<AvatarSize, number> = {\n xs: 5.25, // 5.25/24 = 0.21875\n sm: 7, // 7/32 = 0.21875\n md: 8.75, // 8.75/40 = 0.21875\n lg: 10.5, // 10.5/48 = 0.21875\n xl: 14, // 14/64 = 0.21875\n };\n return ratios[this.size()];\n });\n\n // Body path (from Figma SVG, scaled per size)\n readonly bodyPath = computed(() => {\n const paths: Record<AvatarSize, string> = {\n xs: 'M12.0039 15.75C15.6502 15.75 18.9921 17.0517 21.5918 19.2148C19.4018 22.1206 15.9228 24 12.0039 24C8.08479 24 4.60503 22.1208 2.41504 19.2148C5.01478 17.0514 8.35733 15.75 12.0039 15.75Z',\n sm: 'M16.0039 21C20.8658 21 25.3218 22.7357 28.7881 25.6201C25.8681 29.4944 21.2291 32 16.0039 32C10.7785 32 6.13874 29.4947 3.21875 25.6201C6.68509 22.7354 11.1417 21 16.0039 21Z',\n md: 'M20.0039 26.25C26.0814 26.25 31.6515 28.4197 35.9844 32.0254C32.3344 36.8682 26.5354 40 20.0039 40C13.4725 40 7.67346 36.8682 4.02344 32.0254C8.3563 28.4197 13.9264 26.25 20.0039 26.25Z',\n lg: 'M24.0039 31.5C31.2968 31.5 37.9813 34.103 43.1807 38.4297C38.8007 44.2414 31.8419 48 24.0039 48C16.1659 48 9.20715 44.2414 4.82715 38.4297C10.0265 34.103 16.711 31.5 24.0039 31.5Z',\n xl: 'M32.0078 42C41.7319 42 50.6445 45.4711 57.5771 51.2402C51.7371 58.9891 42.4584 64 32.0078 64C21.557 64 12.2775 58.9893 6.4375 51.2402C13.3702 45.4708 22.2834 42 32.0078 42Z',\n };\n return paths[this.size()];\n });\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const badgeVariants = cva(\n clsx(\n // Base\n 'inline-flex items-center justify-center shrink-0 box-border',\n 'font-sans font-normal tracking-[0.05px]',\n 'rounded-full',\n // Non-interactive\n 'pointer-events-none select-none',\n ),\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n success: 'bg-success text-success-foreground',\n outline: 'bg-background text-foreground border border-border',\n },\n\n size: {\n dot: 'w-3 h-3', // 12x12\n default: '',\n large: '',\n },\n\n layout: {\n text: '',\n 'text-icon': '',\n },\n },\n\n compoundVariants: [\n // Dot + outline: que sea huequito con borde\n {\n variant: 'outline',\n size: 'dot',\n class: 'bg-transparent border border-border',\n },\n\n // Default size \"text\" (pequeño)\n {\n size: 'default',\n layout: 'text',\n class: clsx(\n 'px-2 py-[2px]',\n 'text-xs leading-[17px]',\n 'min-h-[15px]',\n 'whitespace-nowrap',\n ),\n },\n\n // Large size \"text\" (grande real)\n {\n size: 'large',\n layout: 'text',\n class: clsx(\n 'h-7', // 28px\n 'px-5 py-2', // 20px 8px\n 'text-sm leading-[21px]',\n 'whitespace-nowrap',\n ),\n },\n\n // Text-icon (Figma): grande + gap\n {\n layout: 'text-icon',\n class: clsx(\n 'h-7', // 28px\n 'px-5 py-2', // 20px 8px\n 'text-sm leading-[21px]',\n 'whitespace-nowrap',\n 'gap-2.5', // 10px\n ),\n },\n ],\n\n defaultVariants: {\n variant: 'default',\n size: 'default',\n layout: 'text',\n },\n },\n);\n\nexport type BadgeVariantsProps = VariantProps<typeof badgeVariants>;\n\nexport const badgeIconVariants = cva(\n clsx(\n 'shrink-0 w-4 h-4',\n // ya usamos gap en el wrapper, NO margin-right aquí\n ),\n);\n\nexport type BadgeIconVariantsProps = VariantProps<typeof badgeIconVariants>;\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { badgeIconVariants, badgeVariants } from './badge.variants';\n\nexport type BadgeVariant =\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'success';\n\nexport type BadgeSize = 'dot' | 'default' | 'large';\nexport type BadgeLayout = 'text' | 'text-icon';\n\n/**\n * Badge Component\n *\n * A badge component for displaying status indicators, counters, and labels.\n *\n * Usage:\n * ```html\n * <bsg-badge variant=\"default\" size=\"default\" value=\"10\"></bsg-badge>\n * <bsg-badge variant=\"success\" size=\"dot\"></bsg-badge>\n * <bsg-badge variant=\"destructive\" size=\"large\" layout=\"text-icon\" value=\"Alert\"></bsg-badge>\n * ```\n */\n@Component({\n selector: 'bsg-badge',\n standalone: true,\n template: `\n @if (size() === 'dot') {\n <span\n [class]=\"badgeClasses()\"\n role=\"status\"\n aria-label=\"Badge indicator\"\n ></span>\n } @else {\n <span\n [class]=\"badgeClasses()\"\n role=\"status\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @if (layout() === 'text-icon') {\n <svg\n [class]=\"iconClasses()\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12 7.33334C12 4.75601 9.91066 2.66667 7.33334 2.66667C4.75601 2.66667 2.66667 4.75601 2.66667 7.33334C2.66667 9.91066 4.75601 12 7.33334 12C9.91066 12 12 9.91066 12 7.33334ZM13.3333 7.33334C13.3333 8.74998 12.8412 10.051 12.0202 11.0775L14.4714 13.5286C14.7317 13.789 14.7317 14.211 14.4714 14.4714C14.211 14.7317 13.789 14.7317 13.5286 14.4714L11.0775 12.0202C10.051 12.8412 8.74998 13.3333 7.33334 13.3333C4.01963 13.3333 1.33334 10.647 1.33334 7.33334C1.33334 4.01963 4.01963 1.33334 7.33334 1.33334C10.647 1.33334 13.3333 4.01963 13.3333 7.33334Z\"\n fill=\"currentColor\"\n />\n </svg>\n }\n {{ value() }}\n </span>\n }\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class BadgeComponent {\n /** Badge semantic variant */\n readonly variant = input<BadgeVariant>('default');\n\n /** Badge size */\n readonly size = input<BadgeSize>('default');\n\n /** Badge layout type */\n readonly layout = input<BadgeLayout>('text');\n\n /** Badge value/content */\n readonly value = input<string | number>('10');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed aria-label for accessibility */\n readonly ariaLabel = computed(() => String(this.value()));\n\n /** Computed badge classes */\n readonly badgeClasses = computed(() =>\n clsx(\n badgeVariants({\n variant: this.variant(),\n size: this.size(),\n layout: this.layout(),\n }),\n this.className(),\n ),\n );\n\n /** Computed icon classes */\n readonly iconClasses = computed(() => clsx(badgeIconVariants()));\n}\n","// projects/bsg-integra/src/lib/components/button/button.variants.ts\nimport { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const buttonVariants = cva(\n clsx(\n 'inline-flex items-center justify-center',\n 'gap-2.5',\n 'text-sm font-medium leading-normal tracking-tight',\n 'cursor-pointer',\n 'transition-all duration-200',\n 'whitespace-nowrap',\n 'border-0',\n 'outline-none',\n 'relative', // ✅ para posicionar spinner\n ),\n {\n variants: {\n size: {\n sm: 'h-[27px] py-2 px-4',\n md: 'h-[35px] py-3 px-6',\n lg: 'h-[43px] py-4 px-8',\n },\n variant: {\n default: clsx(\n 'bg-violet-600 text-white',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-violet-900 focus-visible:ring-2 focus-visible:ring-violet-600 focus-visible:ring-offset-2',\n ),\n secondary: clsx(\n 'bg-blue-600 text-white',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-blue-700 focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2',\n ),\n outline: clsx(\n 'bg-transparent text-violet-600 border border-violet-600',\n 'hover:bg-violet-50',\n 'active:bg-violet-100',\n 'focus-visible:border-violet-900 focus-visible:text-violet-900 focus-visible:ring-2 focus-visible:ring-violet-600 focus-visible:ring-offset-2',\n ),\n ghost: clsx(\n 'bg-violet-100 text-slate-800',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-violet-200 focus-visible:ring-2 focus-visible:ring-violet-600 focus-visible:ring-offset-2',\n ),\n link: clsx(\n 'bg-transparent text-blue-600',\n 'hover:opacity-90',\n 'active:underline',\n 'focus-visible:text-blue-700 focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2',\n ),\n destructive: clsx(\n 'bg-red-600 text-white',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-red-700 focus-visible:ring-2 focus-visible:ring-red-600 focus-visible:ring-offset-2',\n ),\n },\n shape: {\n rectangular: 'rounded-md',\n pill: 'rounded-full',\n icon: 'rounded-md',\n 'icon-text': 'rounded-md',\n 'icon-only': 'rounded-full',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n compoundVariants: [\n { shape: 'icon', size: 'sm', class: 'w-[27px] h-[27px] p-2' },\n { shape: 'icon', size: 'md', class: 'w-[35px] h-[35px] p-2' },\n { shape: 'icon', size: 'lg', class: 'w-[43px] h-[43px] p-2' },\n\n {\n shape: 'icon-only',\n size: 'sm',\n class: 'w-[27px] h-[27px] min-w-[27px] min-h-[27px] p-0',\n },\n {\n shape: 'icon-only',\n size: 'md',\n class: 'w-[35px] h-[35px] min-w-[35px] min-h-[35px] p-0',\n },\n {\n shape: 'icon-only',\n size: 'lg',\n class: 'w-[43px] h-[43px] min-w-[43px] min-h-[43px] p-0',\n },\n\n {\n shape: 'icon-only',\n variant: 'outline',\n class:\n 'bg-transparent border border-slate-300 text-purple-600 hover:opacity-90 active:border-purple-600 focus-visible:border-slate-500 focus-visible:text-purple-800 focus-visible:ring-2 focus-visible:ring-purple-600 focus-visible:ring-offset-2',\n },\n {\n shape: 'icon-only',\n variant: 'default',\n class: 'bg-violet-600 text-white border border-violet-600',\n },\n {\n shape: 'icon-only',\n variant: 'secondary',\n class: 'bg-blue-600 text-white border border-blue-600',\n },\n {\n shape: 'icon-only',\n variant: 'ghost',\n class: 'bg-violet-100 text-slate-800 border border-violet-100',\n },\n {\n shape: 'icon-only',\n variant: 'link',\n class: 'bg-transparent text-blue-600 border border-transparent',\n },\n {\n shape: 'icon-only',\n variant: 'destructive',\n class: 'bg-red-600 text-white border border-red-600',\n },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'default',\n shape: 'rectangular',\n disabled: false,\n },\n },\n);\n\nexport const buttonIconVariants = cva(\n clsx('inline-flex items-center justify-center shrink-0 leading-none'),\n {\n variants: {\n position: {\n left: '-mr-0.5',\n right: '-ml-0.5',\n center: 'm-0',\n },\n },\n defaultVariants: {\n position: 'left',\n },\n },\n);\n\nexport const buttonLabelVariants = cva(clsx('inline-block'));\n\nexport const buttonIconOnlyVariants = cva(\n clsx('flex items-center justify-center leading-none'),\n {\n variants: {\n size: { sm: '', md: '', lg: '' },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\n/** ✅ nuevo: spinner overlay centrado */\nexport const buttonSpinnerVariants = cva(\n clsx('absolute inset-0 flex items-center justify-center'),\n {\n variants: {\n shape: {\n rectangular: '',\n pill: '',\n icon: '',\n 'icon-text': '',\n 'icon-only': '',\n },\n },\n defaultVariants: {\n shape: 'rectangular',\n },\n },\n);\n","import { Component, computed, input, output } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n buttonIconOnlyVariants,\n buttonIconVariants,\n buttonLabelVariants,\n buttonSpinnerVariants,\n buttonVariants,\n} from './button.variants';\n\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type ButtonVariant =\n | 'default'\n | 'secondary'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'destructive';\nexport type ButtonShape =\n | 'rectangular'\n | 'pill'\n | 'icon'\n | 'icon-text'\n | 'icon-only';\n\nexport type ButtonVariantsProps = VariantProps<typeof buttonVariants>;\n\n@Component({\n selector: 'bsg-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n (click)=\"handleClick($event)\"\n [class]=\"buttonClasses()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled()\"\n [attr.aria-busy]=\"spinner() ? 'true' : null\"\n [attr.aria-label]=\"\n ariaLabel() ?? (isIconButton() ? label() || 'Icon button' : null)\n \"\n [style.width.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.minWidth.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.height.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.minHeight.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.padding]=\"isIconButton() ? '0' : null\"\n >\n <!-- Spinner -->\n @if (spinner()) {\n <span\n [class]=\"spinnerClasses()\"\n [style.fontSize.px]=\"spinnerPx()\"\n [attr.aria-hidden]=\"'true'\"\n >\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </span>\n }\n\n <!-- Icon-only / Icon button content -->\n @if (isIconButton()) {\n <span\n [class]=\"iconOnlyClasses()\"\n [style.fontSize.px]=\"iconFontPx()\"\n [style.lineHeight]=\"1\"\n [style.opacity]=\"spinner() ? 0 : 1\"\n >\n <ng-content></ng-content>\n </span>\n } @else {\n <span\n class=\"bsg-btn-icon\"\n [class]=\"iconClasses('left')\"\n [style.opacity]=\"spinner() ? 0 : 1\"\n >\n <ng-content select=\"[left-icon]\"></ng-content>\n </span>\n\n <span [class]=\"labelClasses()\" [style.opacity]=\"spinner() ? 0 : 1\">{{\n label()\n }}</span>\n\n <span\n class=\"bsg-btn-icon\"\n [class]=\"iconClasses('right')\"\n [style.opacity]=\"spinner() ? 0 : 1\"\n >\n <ng-content select=\"[right-icon]\"></ng-content>\n </span>\n }\n </button>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .bsg-btn-icon:empty {\n display: none;\n }\n\n :host ::ng-deep i {\n color: inherit;\n }\n `,\n})\nexport class ButtonComponent {\n readonly size = input<ButtonSize>('md');\n readonly variant = input<ButtonVariant>('default');\n readonly shape = input<ButtonShape>('rectangular');\n readonly label = input<string>('Boton');\n readonly disabled = input<boolean>(false);\n\n /** ✅ nuevo: muestra spinner y bloquea click */\n readonly spinner = input<boolean>(false);\n\n /** Accesibilidad para icon buttons */\n readonly ariaLabel = input<string | null>(null);\n\n readonly className = input<string>();\n readonly Click = output<Event>();\n\n readonly isDisabled = computed(() => this.disabled() || this.spinner());\n readonly isIconButton = computed(\n () => this.shape() === 'icon-only' || this.shape() === 'icon',\n );\n\n readonly buttonSquarePx = computed(() =>\n this.size() === 'sm' ? 27 : this.size() === 'lg' ? 43 : 35,\n );\n readonly iconFontPx = computed(() =>\n this.size() === 'sm' ? 15 : this.size() === 'lg' ? 22 : 18,\n );\n readonly spinnerPx = computed(() =>\n this.size() === 'sm' ? 14 : this.size() === 'lg' ? 20 : 16,\n );\n\n readonly buttonClasses = computed(() =>\n clsx(\n buttonVariants({\n size: this.size(),\n variant: this.variant(),\n shape: this.shape(),\n disabled: this.isDisabled(),\n }),\n this.className(),\n ),\n );\n\n readonly labelClasses = computed(() => clsx(buttonLabelVariants()));\n readonly iconOnlyClasses = computed(() =>\n clsx(buttonIconOnlyVariants({ size: this.size() })),\n );\n readonly spinnerClasses = computed(() =>\n clsx(buttonSpinnerVariants({ shape: this.shape() })),\n );\n\n iconClasses(position: 'left' | 'right' | 'center'): string {\n return clsx(buttonIconVariants({ position }));\n }\n\n handleClick(event: Event): void {\n if (!this.isDisabled()) this.Click.emit(event);\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Card container variants\n *\n * Controls the overall card container layout and styling\n */\nexport const cardVariants = cva(\n clsx(\n // Layout\n 'flex flex-col',\n // Size\n 'w-[393px]',\n // Padding\n 'py-6 px-5',\n // Gap\n 'gap-4',\n // Border\n 'rounded-lg',\n // Background\n 'bg-card',\n // Transition\n 'transition-all duration-200',\n ),\n {\n variants: {\n variant: {\n default: 'border border-border',\n },\n contentVariant: {\n default: '',\n metric: clsx(\n 'items-center justify-center',\n 'px-[89px] py-4',\n 'min-h-[87px]',\n 'bg-destructive/10 border border-destructive/30',\n ),\n infoDate: clsx(\n 'items-center justify-center',\n 'px-2 py-[17px]',\n 'gap-2',\n 'min-h-[84px]',\n 'w-fit max-w-[101px]',\n 'bg-info/10 border-0',\n ),\n infoCurrency: clsx(\n 'items-start justify-start',\n 'p-4',\n 'gap-4',\n 'min-h-[90px]',\n 'w-fit max-w-[273px]',\n 'bg-info/30 border-0',\n ),\n placeholder: clsx(\n 'w-[277px] min-h-[225px]',\n 'border border-border',\n 'bg-transparent',\n 'p-0',\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n contentVariant: 'default',\n },\n },\n);\n\n/**\n * Card header row variants\n *\n * Controls the header row layout\n */\nexport const cardHeaderRowVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-between',\n // Gap\n 'gap-2',\n ),\n);\n\n/**\n * Card header variants\n *\n * Controls the header text styling\n */\nexport const cardHeaderVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Gap\n 'gap-2',\n // Typography\n 'text-sm font-normal leading-normal',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card info icon variants\n *\n * Controls the info icon styling\n */\nexport const cardInfoIconVariants = cva(\n clsx(\n // Size\n 'w-[17px] h-[17px]',\n // Layout\n 'shrink-0',\n ),\n);\n\n/**\n * Card action icon variants\n *\n * Controls the action icon styling (phone, etc.)\n */\nexport const cardActionIconVariants = cva(\n clsx(\n // Size\n 'w-5 h-5',\n // Layout\n 'shrink-0',\n ),\n);\n\n/**\n * Card value variants\n *\n * Controls the main value styling\n */\nexport const cardValueVariants = cva(\n clsx(\n // Typography\n 'text-[32px] font-extrabold leading-[1.2]',\n // Color\n 'text-card-foreground',\n ),\n);\n\n/**\n * Card helper row variants\n *\n * Controls the helper row layout\n */\nexport const cardHelperRowVariants = cva(\n clsx(\n // Layout\n 'flex items-baseline',\n // Gap\n 'gap-2',\n ),\n);\n\n/**\n * Card helper variants\n *\n * Controls the helper text styling (percentage change)\n */\nexport const cardHelperVariants = cva(\n clsx(\n // Typography\n 'text-sm font-medium leading-normal',\n // Layout\n 'shrink-0',\n // Default color (green for positive)\n 'text-success',\n ),\n);\n\n/**\n * Card helper description variants\n *\n * Controls the helper description text styling\n */\nexport const cardHelperDescriptionVariants = cva(\n clsx(\n // Typography\n 'text-[13px] font-normal leading-normal',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card metric title variants\n *\n * Controls the metric title styling\n */\nexport const cardMetricTitleVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-xs font-medium leading-normal text-center',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card metric value variants\n *\n * Controls the metric value styling\n */\nexport const cardMetricValueVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-2xl font-bold leading-normal text-center',\n // Color\n 'text-destructive',\n ),\n);\n\n/**\n * Card info label variants\n *\n * Controls the info label styling (for infoDate)\n */\nexport const cardInfoLabelVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-xs font-medium leading-normal text-center',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card info text variants\n *\n * Controls the info text styling (for infoDate)\n */\nexport const cardInfoTextVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-sm font-bold leading-normal text-center',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card currency label variants\n *\n * Controls the currency label styling\n */\nexport const cardCurrencyLabelVariants = cva(\n clsx(\n // Layout\n 'flex',\n // Typography\n 'text-sm font-medium leading-normal',\n // Color\n 'text-foreground',\n ),\n);\n\n/**\n * Card currency content variants\n *\n * Controls the currency content row layout\n */\nexport const cardCurrencyContentVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Gap\n 'gap-2',\n ),\n);\n\n/**\n * Card currency icon variants\n *\n * Controls the currency icon styling\n */\nexport const cardCurrencyIconVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center justify-center shrink-0',\n // Size\n 'w-[21px] h-[21px]',\n ),\n);\n\n/**\n * Card currency text variants\n *\n * Controls the currency text styling\n */\nexport const cardCurrencyTextVariants = cva(\n clsx(\n // Layout\n 'flex',\n // Typography\n 'text-xl font-bold leading-normal',\n // Color\n 'text-info',\n ),\n);\n\n/**\n * Slot header/body/footer variants (estilo shadcn)\n * Son “wrappers” que te permiten componer cards personalizadas.\n */\nexport const cardSlotHeaderVariants = cva(\n clsx('flex items-start justify-between', 'gap-2'),\n);\n\nexport const cardSlotBodyVariants = cva(\n clsx('flex flex-col', 'gap-4', 'min-w-0'),\n);\n\nexport const cardSlotFooterVariants = cva(\n clsx('flex items-center justify-end', 'gap-2', 'pt-2'),\n);\n","import { Component, computed, contentChildren, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n cardActionIconVariants,\n cardCurrencyContentVariants,\n cardCurrencyIconVariants,\n cardCurrencyLabelVariants,\n cardCurrencyTextVariants,\n cardHeaderRowVariants,\n cardHeaderVariants,\n cardHelperDescriptionVariants,\n cardHelperRowVariants,\n cardHelperVariants,\n cardInfoIconVariants,\n cardInfoLabelVariants,\n cardInfoTextVariants,\n cardMetricTitleVariants,\n cardMetricValueVariants,\n cardSlotBodyVariants,\n cardSlotFooterVariants,\n cardSlotHeaderVariants,\n cardValueVariants,\n cardVariants,\n} from './card.variants';\n\nexport type CardVariant = 'default';\nexport type CardContentVariant =\n | 'default'\n | 'metric'\n | 'infoDate'\n | 'infoCurrency'\n | 'placeholder';\n\nexport type CardVariantsProps = VariantProps<typeof cardVariants>;\n\n// Icon for infoCurrency variant (circle-dollar-sign from lucide)\nconst currencyIcon = `<svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_currency)\">\n<path d=\"M18.375 10.5C18.375 6.15076 14.8492 2.625 10.5 2.625C6.15076 2.625 2.625 6.15076 2.625 10.5C2.625 14.8492 6.15076 18.375 10.5 18.375C14.8492 18.375 18.375 14.8492 18.375 10.5ZM13.125 12.25C13.125 12.0179 13.0327 11.7954 12.8687 11.6313C12.7046 11.4673 12.4821 11.375 12.25 11.375H11.375V13.125H12.25C12.4821 13.125 12.7046 13.0327 12.8687 12.8687C13.0327 12.7046 13.125 12.4821 13.125 12.25ZM14.875 12.25C14.875 12.9462 14.5982 13.6137 14.106 14.106C13.6137 14.5982 12.9462 14.875 12.25 14.875H11.375V15.75C11.375 16.2332 10.9832 16.625 10.5 16.625C10.0168 16.625 9.625 16.2332 9.625 15.75V14.875H7C6.51675 14.875 6.125 14.4832 6.125 14C6.125 13.5168 6.51675 13.125 7 13.125H9.625V11.375H8.75C8.05381 11.375 7.38633 11.0982 6.89404 10.606C6.46337 10.1753 6.19754 9.61057 6.13782 9.00977L6.125 8.75C6.125 8.05381 6.40176 7.38633 6.89404 6.89404C7.38633 6.40176 8.05381 6.125 8.75 6.125H9.625V5.25C9.625 4.76675 10.0168 4.375 10.5 4.375C10.9832 4.375 11.375 4.76675 11.375 5.25V6.125H14C14.4832 6.125 14.875 6.51675 14.875 7C14.875 7.48325 14.4832 7.875 14 7.875H11.375V9.625H12.25C12.9462 9.625 13.6137 9.90176 14.106 10.394C14.5982 10.8863 14.875 11.5538 14.875 12.25ZM20.125 10.5C20.125 15.8157 15.8157 20.125 10.5 20.125C5.18426 20.125 0.875 15.8157 0.875 10.5C0.875 5.18426 5.18426 0.875 10.5 0.875C15.8157 0.875 20.125 5.18426 20.125 10.5ZM7.87927 8.8363C7.89913 9.03668 7.98772 9.22503 8.13135 9.36865C8.29544 9.53275 8.51794 9.625 8.75 9.625H9.625V7.875H8.75C8.51794 7.875 8.29544 7.96725 8.13135 8.13135C7.96725 8.29544 7.875 8.51794 7.875 8.75L7.87927 8.8363Z\" fill=\"#2563EB\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_currency\">\n<rect width=\"21\" height=\"21\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>`;\n\n/**\n * Slots estilo shadcn:\n * <bsg-card-header>, <bsg-card-body>, <bsg-card-footer>\n */\n@Component({\n selector: 'bsg-card-header',\n standalone: true,\n template: `<div [class]=\"classes()\"><ng-content></ng-content></div>`,\n})\nexport class CardHeaderComponent {\n readonly className = input<string>();\n readonly classes = computed(() =>\n clsx(cardSlotHeaderVariants(), this.className()),\n );\n}\n\n@Component({\n selector: 'bsg-card-body',\n standalone: true,\n template: `<div [class]=\"classes()\"><ng-content></ng-content></div>`,\n})\nexport class CardBodyComponent {\n readonly className = input<string>();\n readonly classes = computed(() =>\n clsx(cardSlotBodyVariants(), this.className()),\n );\n}\n\n@Component({\n selector: 'bsg-card-footer',\n standalone: true,\n template: `<div [class]=\"classes()\"><ng-content></ng-content></div>`,\n})\nexport class CardFooterComponent {\n readonly className = input<string>();\n readonly classes = computed(() =>\n clsx(cardSlotFooterVariants(), this.className()),\n );\n}\n\n/**\n * Card Component - Container\n */\n@Component({\n selector: 'bsg-card',\n standalone: true,\n template: `\n <div [class]=\"cardClasses()\">\n <!-- Si hay slots, usamos layout personalizable -->\n @if (hasSlots()) {\n <ng-content select=\"bsg-card-header\"></ng-content>\n <ng-content select=\"bsg-card-body\"></ng-content>\n <ng-content select=\"bsg-card-footer\"></ng-content>\n } @else {\n <!-- Si NO hay slots, mantenemos comportamiento actual -->\n\n <!-- DEFAULT Content Variant -->\n @if (contentVariant() === 'default') {\n <div [class]=\"headerRowClasses()\">\n <div [class]=\"headerClasses()\">{{ header() }}</div>\n\n <svg\n [class]=\"infoIconClasses()\"\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_info)\">\n <path\n d=\"M14.875 8.5C14.875 4.97919 12.0208 2.125 8.49999 2.125C4.97918 2.125 2.12499 4.97919 2.12499 8.5C2.12499 12.0208 4.97918 14.875 8.49999 14.875C12.0208 14.875 14.875 12.0208 14.875 8.5ZM7.79166 11.3333V8.5C7.79166 8.1088 8.10879 7.79167 8.49999 7.79167C8.8912 7.79167 9.20833 8.1088 9.20833 8.5V11.3333C9.20833 11.7245 8.8912 12.0417 8.49999 12.0417C8.10879 12.0417 7.79166 11.7245 7.79166 11.3333ZM8.50691 4.95834C8.89811 4.95834 9.21525 5.27547 9.21525 5.66667C9.21525 6.05787 8.89811 6.375 8.50691 6.375H8.49999C8.10879 6.375 7.79166 6.05787 7.79166 5.66667C7.79166 5.27547 8.10879 4.95834 8.49999 4.95834H8.50691ZM16.2917 8.5C16.2917 12.8032 12.8032 16.2917 8.49999 16.2917C4.19678 16.2917 0.708328 12.8032 0.708328 8.5C0.708328 4.19678 4.19678 0.708336 8.49999 0.708336C12.8032 0.708336 16.2917 4.19678 16.2917 8.5Z\"\n fill=\"#B0B6BF\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_info\">\n <rect width=\"17\" height=\"17\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n\n @if (icon() === 'phone') {\n <svg\n [class]=\"actionIconClasses()\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_phone)\">\n <path\n d=\"M6.66668 3.33334C6.66668 3.11232 6.57882 2.90042 6.42254 2.74414C6.28575 2.60736 6.10637 2.52298 5.91554 2.50407L5.83334 2.5H3.33334C3.11233 2.5 2.90043 2.58786 2.74415 2.74414C2.58787 2.90042 2.50001 3.11232 2.50001 3.33334C2.50001 7.09057 3.99282 10.6937 6.64959 13.3504C9.30635 16.0072 12.9094 17.5 16.6667 17.5C16.8877 17.5 17.0996 17.4121 17.2559 17.2559C17.4122 17.0996 17.5 16.8877 17.5 16.6667V14.1667C17.5 13.9457 17.4122 13.7338 17.2559 13.5775C17.0996 13.4212 16.8877 13.3333 16.6667 13.3333H14.1667C14.0373 13.3333 13.9097 13.3634 13.794 13.4212C13.6782 13.4791 13.5778 13.5635 13.5002 13.667L13.4961 13.6727L13.1999 14.0584C12.9705 14.3597 12.646 14.5745 12.2787 14.6663C11.9112 14.7581 11.5234 14.7218 11.1792 14.5638L5.45086 8.85173C5.28225 8.50579 5.23852 8.11213 5.32716 7.73763C5.41587 7.36306 5.63158 7.0305 5.93751 6.79688L6.33302 6.49984C6.43652 6.42222 6.52093 6.32177 6.57879 6.20606C6.63664 6.09035 6.66668 5.96271 6.66668 5.83334V3.33334Z\"\n fill=\"#9333EA\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_phone\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n }\n </div>\n\n <div [class]=\"valueClasses()\">{{ value() }}</div>\n\n <div [class]=\"helperRowClasses()\">\n <div [class]=\"helperClasses()\">{{ helper() }}</div>\n <div [class]=\"helperDescriptionClasses()\">\n {{ helperDescription() }}\n </div>\n </div>\n }\n\n @if (contentVariant() === 'metric') {\n <div [class]=\"metricTitleClasses()\">{{ metricTitle() }}</div>\n <div [class]=\"metricValueClasses()\">{{ metricValue() }}</div>\n }\n\n @if (contentVariant() === 'infoDate') {\n <div [class]=\"infoLabelClasses()\">{{ dateLabel() }}</div>\n <div [class]=\"infoTextClasses()\">{{ dateText() }}</div>\n }\n\n @if (contentVariant() === 'infoCurrency') {\n <div [class]=\"currencyLabelClasses()\">{{ currencyLabel() }}</div>\n <div [class]=\"currencyContentClasses()\">\n <span\n [class]=\"currencyIconClasses()\"\n [innerHTML]=\"getCurrencyIcon()\"\n ></span>\n <span [class]=\"currencyTextClasses()\">{{ currencyText() }}</span>\n </div>\n }\n\n <!-- placeholder: sin contenido interno (solo estilos del container) -->\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class CardComponent {\n constructor(private sanitizer: DomSanitizer) {}\n\n readonly variant = input<CardVariant>('default');\n readonly contentVariant = input<CardContentVariant>('default');\n readonly className = input<string>();\n\n // metric\n readonly metricTitle = input<string>('');\n readonly metricValue = input<string | number>('');\n\n // infoDate\n readonly dateLabel = input<string>('');\n readonly dateText = input<string>('');\n\n // infoCurrency\n readonly currencyLabel = input<string>('');\n readonly currencyText = input<string>('');\n\n // default\n readonly header = input<string>('Actividades Totales');\n readonly value = input<string | number>('21');\n readonly helper = input<string>('+15.2%');\n readonly icon = input<string>('phone');\n readonly helperDescription = input<string>('respecto al mes anterior');\n\n // detectar slots\n readonly slotHeaders = contentChildren(CardHeaderComponent);\n readonly slotBodies = contentChildren(CardBodyComponent);\n readonly slotFooters = contentChildren(CardFooterComponent);\n\n readonly hasSlots = computed(() => {\n return (\n this.slotHeaders().length > 0 ||\n this.slotBodies().length > 0 ||\n this.slotFooters().length > 0\n );\n });\n\n // Computed classes\n readonly cardClasses = computed(() =>\n clsx(\n cardVariants({\n variant: this.variant(),\n contentVariant: this.contentVariant(),\n }),\n this.className(),\n ),\n );\n\n readonly headerRowClasses = computed(() => clsx(cardHeaderRowVariants()));\n readonly headerClasses = computed(() => clsx(cardHeaderVariants()));\n readonly infoIconClasses = computed(() => clsx(cardInfoIconVariants()));\n readonly actionIconClasses = computed(() => clsx(cardActionIconVariants()));\n readonly valueClasses = computed(() => clsx(cardValueVariants()));\n readonly helperRowClasses = computed(() => clsx(cardHelperRowVariants()));\n readonly helperClasses = computed(() => clsx(cardHelperVariants()));\n readonly helperDescriptionClasses = computed(() =>\n clsx(cardHelperDescriptionVariants()),\n );\n readonly metricTitleClasses = computed(() => clsx(cardMetricTitleVariants()));\n readonly metricValueClasses = computed(() => clsx(cardMetricValueVariants()));\n readonly infoLabelClasses = computed(() => clsx(cardInfoLabelVariants()));\n readonly infoTextClasses = computed(() => clsx(cardInfoTextVariants()));\n readonly currencyLabelClasses = computed(() =>\n clsx(cardCurrencyLabelVariants()),\n );\n readonly currencyContentClasses = computed(() =>\n clsx(cardCurrencyContentVariants()),\n );\n readonly currencyIconClasses = computed(() =>\n clsx(cardCurrencyIconVariants()),\n );\n readonly currencyTextClasses = computed(() =>\n clsx(cardCurrencyTextVariants()),\n );\n\n getCurrencyIcon(): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(currencyIcon);\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const carouselContainerVariants = cva(clsx('flex flex-col', 'w-full'));\n\nexport const carouselRootVariants = cva(\n clsx(\n 'relative',\n 'flex items-center',\n 'w-full',\n 'min-h-[260px]',\n // deja espacio para flechas\n 'px-10 sm:px-11 md:px-[52px] lg:px-[60px]',\n 'select-none',\n ),\n);\n\nexport const carouselViewportVariants = cva(\n clsx('overflow-hidden', 'flex-1', 'min-w-0', 'relative', 'select-none'),\n);\n\nexport const carouselTrackVariants = cva(\n clsx(\n 'flex',\n 'gap-3 sm:gap-4 md:gap-5 lg:gap-[30px]',\n 'transition-transform duration-300 ease-in-out',\n 'will-change-transform',\n 'w-full',\n 'select-none',\n ),\n);\n\n/**\n * Flechas circulares reales (no “se deforman”)\n * Chevron centrado (solo 1 svg)\n */\nexport const carouselArrowVariants = cva(\n clsx(\n 'absolute top-1/2 -translate-y-1/2',\n 'z-20',\n 'shrink-0',\n 'flex items-center justify-center',\n\n // Tamaño\n 'w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 lg:w-[41px] lg:h-[41px]',\n\n // Forma\n 'rounded-full bg-background border border-border',\n\n // Color del icono\n 'text-primary',\n\n // Interacción\n 'cursor-pointer p-0',\n 'transition-opacity duration-200',\n 'disabled:opacity-40 disabled:cursor-not-allowed',\n 'hover:not-disabled:opacity-80',\n\n 'focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2',\n 'focus:not-focus-visible:outline-none',\n ),\n {\n variants: {\n direction: {\n prev: 'left-2.5',\n next: 'right-2.5',\n },\n },\n defaultVariants: {\n direction: 'prev',\n },\n },\n);\n\nexport const carouselChevronVariants = cva(\n clsx(\n 'block',\n 'w-4 h-4 sm:w-5 sm:h-5 md:w-[22px] md:h-[22px] lg:w-6 lg:h-6',\n 'pointer-events-none',\n ),\n);\n\nexport const carouselIndicatorsVariants = cva(\n clsx(\n 'flex items-center justify-center',\n 'gap-3 sm:gap-5',\n 'mt-4 sm:mt-6',\n 'w-full',\n 'pointer-events-auto',\n ),\n);\n\nexport const carouselIndicatorVariants = cva(\n clsx(\n 'w-2.5 h-2.5 sm:w-3 sm:h-3',\n 'rounded-full',\n 'bg-primary',\n 'border-0',\n 'p-0',\n 'cursor-pointer',\n 'transition-opacity duration-200',\n 'shrink-0',\n 'hover:opacity-60',\n 'focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2',\n 'focus:not-focus-visible:outline-none',\n ),\n {\n variants: {\n active: {\n true: 'opacity-100',\n false: 'opacity-40',\n },\n },\n defaultVariants: {\n active: false,\n },\n },\n);\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n carouselArrowVariants,\n carouselChevronVariants,\n carouselContainerVariants,\n carouselIndicatorsVariants,\n carouselIndicatorVariants,\n carouselRootVariants,\n carouselTrackVariants,\n carouselViewportVariants,\n} from './carousel.variants';\n\nexport type CarouselArrowVariantsProps = VariantProps<\n typeof carouselArrowVariants\n>;\nexport type CarouselIndicatorVariantsProps = VariantProps<\n typeof carouselIndicatorVariants\n>;\n\n@Component({\n selector: 'bsg-carousel-item',\n standalone: true,\n template: '<ng-content></ng-content>',\n styles: `\n :host {\n display: block;\n flex: 0 0\n calc(\n (\n 100% - (var(--carousel-items-per-view, 2) - 1) *\n var(--carousel-gap, 30px)\n ) /\n var(--carousel-items-per-view, 2)\n );\n min-width: 0;\n box-sizing: border-box;\n }\n `,\n})\nexport class CarouselItemComponent {\n constructor(public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'bsg-carousel',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <div [class]=\"rootClasses()\">\n <!-- Prev -->\n @if (showArrows()) {\n <button\n [class]=\"arrowClasses('prev')\"\n (click)=\"previous()\"\n [disabled]=\"!loop() && currentIndex() === 0\"\n aria-label=\"Previous slide\"\n type=\"button\"\n >\n <svg\n [class]=\"chevronClasses()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M14.293 5.29295C14.6835 4.90243 15.3165 4.90243 15.707 5.29295C16.0976 5.68348 16.0976 6.31649 15.707 6.70702L10.4141 12L15.707 17.293C16.0976 17.6835 16.0976 18.3165 15.707 18.707C15.3165 19.0975 14.6835 19.0975 14.293 18.707L8.29297 12.707C7.90245 12.3165 7.90245 11.6835 8.29297 11.293L14.293 5.29295Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n }\n\n <!-- Viewport -->\n <div [class]=\"viewportClasses()\" #viewportElement>\n <div\n #trackElement\n [class]=\"trackClasses()\"\n [style.transform]=\"translateX()\"\n [style.transition]=\"'transform 0.3s ease-in-out'\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Next -->\n @if (showArrows()) {\n <button\n [class]=\"arrowClasses('next')\"\n (click)=\"next()\"\n [disabled]=\"!loop() && currentIndex() >= maxIndex()\"\n aria-label=\"Next slide\"\n type=\"button\"\n >\n <svg\n [class]=\"chevronClasses()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M9.70699 18.707C9.31646 19.0976 8.68345 19.0976 8.29292 18.707C7.9024 18.3165 7.9024 17.6835 8.29292 17.293L13.5859 12L8.29292 6.70705C7.9024 6.31652 7.9024 5.68351 8.29292 5.29298C8.68345 4.90246 9.31646 4.90246 9.70699 5.29298L15.707 11.293C16.0975 11.6835 16.0975 12.3165 15.707 12.707L9.70699 18.707Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n }\n </div>\n\n <!-- Indicators -->\n @if (showIndicators()) {\n <div [class]=\"indicatorsClasses()\">\n @for (page of pages(); track page; let i = $index) {\n <button\n [class]=\"indicatorClasses(i === currentIndex())\"\n (click)=\"goToSlide(i)\"\n [attr.aria-label]=\"'Go to slide ' + (i + 1)\"\n type=\"button\"\n ></button>\n }\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class CarouselComponent implements AfterContentInit {\n readonly itemsPerView = input<number>(2);\n readonly showArrows = input<boolean>(true);\n readonly showIndicators = input<boolean>(true);\n readonly loop = input<boolean>(false);\n readonly className = input<string>();\n\n // Preferimos leer items proyectados, pero si no usas <bsg-carousel-item>, hacemos fallback al DOM.\n readonly items = contentChildren(CarouselItemComponent);\n readonly viewportElement = viewChild<ElementRef>('viewportElement');\n readonly trackElement = viewChild<ElementRef>('trackElement');\n\n readonly currentIndex = signal<number>(0);\n readonly totalItems = signal<number>(0);\n readonly gap = signal<number>(30);\n\n private document = inject(DOCUMENT);\n\n constructor(\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n ) {\n // CSS vars para el flex-basis del item\n effect(() => {\n const rootElement = this.elementRef.nativeElement;\n if (rootElement) {\n rootElement.style.setProperty(\n '--carousel-items-per-view',\n `${this.itemsPerView()}`,\n );\n rootElement.style.setProperty('--carousel-gap', `${this.gap()}px`);\n }\n });\n\n // Recalcular cuando cambie el contenido o itemsPerView\n effect(() => {\n void this.itemsPerView();\n void this.items().length;\n queueMicrotask(() => this.refreshMeasurements());\n });\n\n // Clamp del índice cuando cambien páginas\n effect(() => {\n const max = this.maxIndex();\n if (this.currentIndex() > max) {\n this.currentIndex.set(max);\n }\n });\n }\n\n ngAfterContentInit(): void {\n // Espera a que el DOM proyectado exista\n setTimeout(() => {\n this.refreshMeasurements();\n this.cdr.detectChanges();\n });\n }\n\n // ✅ Páginas reales (mínimo 1)\n readonly pages = computed(() => {\n const total = this.totalItems();\n const perView = Math.max(1, this.itemsPerView());\n const pageCount = Math.max(1, Math.ceil(total / perView));\n return Array.from({ length: pageCount }, (_, i) => i);\n });\n\n readonly maxIndex = computed(() => Math.max(0, this.pages().length - 1));\n\n /**\n * ✅ Movimiento por PÁGINA (corrige tu bug):\n * Antes movías por 1 item (itemWidth+gap) pero tu maxIndex era por páginas.\n */\n readonly translateX = computed(() => {\n const viewport = this.viewportElement()?.nativeElement as\n | HTMLElement\n | undefined;\n if (!viewport) return 'translateX(0px)';\n\n const viewportWidth = viewport.clientWidth;\n if (!viewportWidth) return 'translateX(0px)';\n\n // Para que la próxima página alinee perfecto: ancho del viewport + gap\n const step = viewportWidth + this.gap();\n const offset = -this.currentIndex() * step;\n return `translateX(${offset}px)`;\n });\n\n // Classes\n readonly containerClasses = computed(() =>\n clsx(carouselContainerVariants(), this.className()),\n );\n readonly rootClasses = computed(() => clsx(carouselRootVariants()));\n readonly viewportClasses = computed(() => clsx(carouselViewportVariants()));\n readonly trackClasses = computed(() => clsx(carouselTrackVariants()));\n readonly indicatorsClasses = computed(() =>\n clsx(carouselIndicatorsVariants()),\n );\n readonly chevronClasses = computed(() => clsx(carouselChevronVariants()));\n\n arrowClasses(direction: 'prev' | 'next'): string {\n return clsx(carouselArrowVariants({ direction }));\n }\n\n indicatorClasses(active: boolean): string {\n return clsx(carouselIndicatorVariants({ active }));\n }\n\n private refreshMeasurements(): void {\n // totalItems desde <bsg-carousel-item>\n const fromComponents = this.items().length;\n\n // fallback: si no usan bsg-carousel-item, contamos hijos reales del track\n const track = this.trackElement()?.nativeElement as HTMLElement | undefined;\n const fromDom = track?.children?.length ?? 0;\n\n this.totalItems.set(fromComponents || fromDom);\n\n this.updateGapFromTrack();\n }\n\n private updateGapFromTrack(): void {\n const track = this.trackElement()?.nativeElement as HTMLElement | undefined;\n if (!track || !this.document.defaultView) return;\n\n const computedGap = this.document.defaultView.getComputedStyle(track).gap;\n const gapValue = parseFloat(computedGap);\n if (!isNaN(gapValue)) this.gap.set(gapValue);\n }\n\n next(): void {\n if (this.currentIndex() < this.maxIndex()) {\n this.currentIndex.update((i) => i + 1);\n } else if (this.loop()) {\n this.currentIndex.set(0);\n }\n this.cdr.detectChanges();\n }\n\n previous(): void {\n if (this.currentIndex() > 0) {\n this.currentIndex.update((i) => i - 1);\n } else if (this.loop()) {\n this.currentIndex.set(this.maxIndex());\n }\n this.cdr.detectChanges();\n }\n\n goToSlide(index: number): void {\n if (index >= 0 && index <= this.maxIndex()) {\n this.currentIndex.set(index);\n this.cdr.detectChanges();\n }\n }\n\n @HostListener('window:resize')\n onResize(): void {\n this.refreshMeasurements();\n this.cdr.detectChanges();\n }\n}\n","import {\n Component,\n input,\n forwardRef,\n signal,\n HostBinding,\n linkedSignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const checkboxVariants = cva(\n clsx(\n // Base styles\n 'peer shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none appearance-none',\n // Background\n 'bg-transparent dark:bg-input/30',\n // Checked state - usando data-state en lugar de :checked\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n 'data-[state=checked]:border-primary',\n 'dark:data-[state=checked]:bg-primary',\n // Focus state\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // Disabled state\n 'disabled:cursor-not-allowed disabled:opacity-50',\n // Invalid state\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40',\n 'aria-invalid:border-destructive',\n ),\n {\n variants: {\n size: {\n sm: 'size-3',\n default: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type CheckboxSize = VariantProps<typeof checkboxVariants>['size'];\n\n@Component({\n selector: 'bsg-checkbox',\n standalone: true,\n imports: [],\n template: `\n <span class=\"relative inline-flex\" data-slot=\"checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"inputId()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.data-state]=\"checked() ? 'checked' : 'unchecked'\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [checked]=\"checked()\"\n [class]=\"computedClasses\"\n (change)=\"onCheckboxChange($event)\"\n (blur)=\"onTouched()\"\n />\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center text-current\"\n data-slot=\"checkbox-indicator\"\n [class.opacity-100]=\"checked()\"\n [class.opacity-0]=\"!checked()\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [class]=\"iconSize\"\n aria-hidden=\"true\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n </span>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n inputId = input<string>();\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n ariaInvalid = input<boolean>();\n size = input<CheckboxSize>('default');\n className = input<string>();\n\n @HostBinding('class') get hostClasses(): string {\n return 'inline-block';\n }\n\n checked = signal(false);\n\n // Internal disabled state for ControlValueAccessor, synced with input\n disabledState = linkedSignal(() => this.disabled());\n\n // Store callbacks as signals for better reactivity\n private onChangeCallback = signal<(value: boolean) => void>(() => {});\n private onTouchedCallback = signal<() => void>(() => {});\n\n get computedClasses(): string {\n return clsx(\n checkboxVariants({\n size: this.size(),\n }),\n this.className(),\n );\n }\n\n get iconSize(): string {\n const sizes = {\n sm: 'size-2.5',\n default: 'size-3.5',\n lg: 'size-4',\n };\n return sizes[this.size() || 'default'];\n }\n\n onCheckboxChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n this.onChangeCallback()(input.checked);\n }\n\n onTouched(): void {\n this.onTouchedCallback()();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeCallback.set(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback.set(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n}\n","import {\n Component,\n input,\n output,\n signal,\n computed,\n effect,\n ContentChild,\n AfterContentInit,\n} from '@angular/core';\nimport { clsx } from 'clsx';\n\n/**\n * Collapsible Component - Following shadcn/ui pattern\n *\n * A component that can be expanded or collapsed.\n * Based on Radix UI Collapsible primitive.\n *\n * @example\n * ```html\n * <bsg-collapsible [open]=\"isOpen\" (openChange)=\"isOpen = $event\">\n * <button bsgCollapsibleTrigger>Toggle</button>\n * <bsg-collapsible-content>\n * Hidden content here\n * </bsg-collapsible-content>\n * </bsg-collapsible>\n * ```\n */\n@Component({\n selector: 'bsg-collapsible',\n standalone: true,\n template: `\n <div\n [class]=\"containerClasses()\"\n [attr.data-state]=\"dataState()\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n >\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n host: {\n '(document:keydown)': 'onKeydown($event)',\n },\n})\nexport class CollapsibleComponent implements AfterContentInit {\n /** Whether the collapsible is open (controlled mode) */\n readonly open = input<boolean | undefined>(undefined);\n\n /** Default open state (uncontrolled mode) */\n readonly defaultOpen = input<boolean>(false);\n\n /** Whether the collapsible is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when open state changes */\n readonly openChange = output<boolean>();\n\n // Internal state\n private readonly _isOpen = signal<boolean>(false);\n\n // Computed state that respects controlled vs uncontrolled\n readonly isOpen = computed(() => {\n const controlled = this.open();\n return controlled !== undefined ? controlled : this._isOpen();\n });\n\n readonly dataState = computed(() => (this.isOpen() ? 'open' : 'closed'));\n\n readonly containerClasses = computed(() =>\n clsx('group/collapsible', this.className()),\n );\n\n constructor() {\n // Sync controlled state\n effect(() => {\n const controlled = this.open();\n if (controlled !== undefined) {\n this._isOpen.set(controlled);\n }\n });\n }\n\n ngAfterContentInit(): void {\n // Initialize with defaultOpen if not controlled\n if (this.open() === undefined) {\n this._isOpen.set(this.defaultOpen());\n }\n }\n\n /**\n * Toggle the collapsible state\n */\n toggle(): void {\n if (this.disabled()) return;\n\n const newState = !this.isOpen();\n this._isOpen.set(newState);\n this.openChange.emit(newState);\n }\n\n /**\n * Set the collapsible state\n */\n setOpen(open: boolean): void {\n if (this.disabled()) return;\n\n this._isOpen.set(open);\n this.openChange.emit(open);\n }\n\n onKeydown(event: KeyboardEvent): void {\n // Handle keyboard events if needed\n }\n}\n","import {\n Directive,\n inject,\n HostListener,\n input,\n computed,\n} from '@angular/core';\nimport { CollapsibleComponent } from './collapsible.component';\n\n/**\n * CollapsibleTrigger Directive - Following shadcn/ui pattern\n *\n * Directive that makes an element toggle the parent collapsible.\n *\n * @example\n * ```html\n * <bsg-collapsible>\n * <button bsgCollapsibleTrigger>Toggle</button>\n * <bsg-collapsible-content>Content</bsg-collapsible-content>\n * </bsg-collapsible>\n * ```\n */\n@Directive({\n selector: '[bsgCollapsibleTrigger]',\n standalone: true,\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.aria-expanded]': 'isExpanded()',\n role: 'button',\n },\n})\nexport class CollapsibleTriggerDirective {\n private readonly collapsible = inject(CollapsibleComponent, {\n optional: true,\n });\n\n /** Whether the trigger is disabled independently */\n readonly disabled = input<boolean>(false);\n\n readonly isDisabled = computed(\n () => this.disabled() || this.collapsible?.disabled() || false,\n );\n\n readonly isExpanded = computed(() => this.collapsible?.isOpen() || false);\n\n readonly dataState = computed(() =>\n this.collapsible?.isOpen() ? 'open' : 'closed',\n );\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this.isDisabled()) return;\n\n event.preventDefault();\n this.collapsible?.toggle();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.collapsible?.toggle();\n }\n }\n}\n","import {\n Component,\n input,\n computed,\n inject,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n effect,\n signal,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport { CollapsibleComponent } from './collapsible.component';\n\n/**\n * CollapsibleContent Component - Following shadcn/ui pattern\n *\n * The content that is shown/hidden when the collapsible is toggled.\n * Includes animation support.\n *\n * @example\n * ```html\n * <bsg-collapsible>\n * <button bsgCollapsibleTrigger>Toggle</button>\n * <bsg-collapsible-content>\n * This content will be animated in/out\n * </bsg-collapsible-content>\n * </bsg-collapsible>\n * ```\n */\n@Component({\n selector: 'bsg-collapsible-content',\n standalone: true,\n template: `\n @if (shouldRender()) {\n <div\n [class]=\"contentClasses()\"\n [attr.data-state]=\"dataState()\"\n [style.--radix-collapsible-content-height]=\"contentHeight()\"\n [attr.hidden]=\"isHidden() ? '' : null\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n div {\n overflow: hidden;\n }\n\n div[data-state='open'] {\n animation: collapsible-down 200ms ease-out;\n }\n\n div[data-state='closed'] {\n animation: collapsible-up 200ms ease-out;\n }\n\n @keyframes collapsible-down {\n from {\n height: 0;\n opacity: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n opacity: 1;\n }\n }\n\n @keyframes collapsible-up {\n from {\n height: var(--radix-collapsible-content-height);\n opacity: 1;\n }\n to {\n height: 0;\n opacity: 0;\n }\n }\n `,\n})\nexport class CollapsibleContentComponent implements AfterViewInit, OnDestroy {\n private readonly collapsible = inject(CollapsibleComponent, {\n optional: true,\n });\n private readonly elementRef = inject(ElementRef);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Force mount (always render even when closed) */\n readonly forceMount = input<boolean>(false);\n\n // Internal state\n private readonly _contentHeight = signal<string>('auto');\n private readonly _shouldRender = signal<boolean>(false);\n private animationTimeout: ReturnType<typeof setTimeout> | null = null;\n\n readonly isOpen = computed(() => this.collapsible?.isOpen() || false);\n\n readonly dataState = computed(() => (this.isOpen() ? 'open' : 'closed'));\n\n readonly isHidden = computed(() => !this.isOpen() && !this.forceMount());\n\n readonly shouldRender = computed(() => {\n if (this.forceMount()) return true;\n return this._shouldRender();\n });\n\n readonly contentHeight = computed(() => this._contentHeight());\n\n readonly contentClasses = computed(() =>\n clsx(\n 'overflow-hidden',\n 'data-[state=closed]:animate-collapsible-up',\n 'data-[state=open]:animate-collapsible-down',\n this.className(),\n ),\n );\n\n constructor() {\n // Effect to handle rendering based on open state\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n // Show immediately when opening\n this._shouldRender.set(true);\n } else {\n // Delay hiding for animation\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n }\n this.animationTimeout = setTimeout(() => {\n if (!this.isOpen()) {\n this._shouldRender.set(false);\n }\n }, 200); // Match animation duration\n }\n });\n }\n\n ngAfterViewInit(): void {\n // Initialize render state\n this._shouldRender.set(this.isOpen() || this.forceMount());\n this.measureHeight();\n }\n\n ngOnDestroy(): void {\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n }\n }\n\n private measureHeight(): void {\n requestAnimationFrame(() => {\n const element = this.elementRef.nativeElement.querySelector('div');\n if (element) {\n this._contentHeight.set(`${element.scrollHeight}px`);\n }\n });\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Combobox wrapper variants\n *\n * Controls the overall combobox container layout\n */\nexport const comboboxWrapperVariants = cva(\n clsx(\n // Layout\n 'relative',\n 'inline-block',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/**\n * Combobox trigger variants\n *\n * Controls the clickable trigger button\n */\nexport const comboboxTriggerVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-center w-full',\n // Gap\n 'gap-3',\n // Border\n 'rounded-md border',\n // Background\n 'bg-transparent',\n // Typography\n 'text-base font-normal leading-6 tracking-[0.05px]',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus\n 'focus:outline-none',\n // Hover (only when not disabled)\n 'hover:not-disabled:opacity-90',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 py-1 px-3',\n md: 'h-10 py-1 px-3',\n lg: 'h-12 py-1 px-3',\n },\n state: {\n default: 'border-border text-foreground',\n hover: 'border-border text-foreground opacity-90',\n focus: 'border-primary text-foreground',\n disabled:\n 'border-border text-foreground opacity-40 cursor-not-allowed pointer-events-none',\n error: 'border-destructive text-destructive',\n },\n open: {\n true: 'border-primary',\n false: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n state: 'default',\n open: false,\n },\n },\n);\n\n/**\n * Combobox dropdown variants\n *\n * Controls the dropdown menu container\n */\nexport const comboboxDropdownVariants = cva(\n clsx(\n // Position\n 'absolute top-full mt-1 left-0',\n // Z-index\n 'z-50',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Shadow\n 'shadow-lg',\n // Overflow\n 'overflow-hidden',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/**\n * Combobox search wrapper variants\n *\n * Controls the search input container\n */\nexport const comboboxSearchWrapperVariants = cva(\n clsx(\n // Padding\n 'p-2',\n // Border\n 'border-b border-muted',\n ),\n);\n\n/**\n * Combobox search input variants\n *\n * Controls the search input field\n */\nexport const comboboxSearchInputVariants = cva(\n clsx(\n // Layout\n 'w-full',\n // Padding\n 'py-1.5 px-2.5',\n // Border\n 'rounded border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-sm font-normal leading-5 text-foreground',\n // Placeholder\n 'placeholder:text-muted-foreground',\n // Transition\n 'transition-all duration-200',\n // Focus\n 'focus:outline-none focus:border-primary',\n // Disabled\n 'disabled:opacity-40 disabled:cursor-not-allowed',\n ),\n);\n\n/**\n * Combobox options container variants\n *\n * Controls the scrollable options list\n */\nexport const comboboxOptionsContainerVariants = cva(\n clsx(\n // Max height and scroll\n 'max-h-[200px] overflow-y-auto',\n ),\n);\n\n/**\n * Combobox option variants\n *\n * Controls individual dropdown options\n */\nexport const comboboxOptionVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Size\n 'min-h-8',\n // Padding\n 'py-1 px-3',\n // Typography\n 'text-base font-normal leading-6 tracking-[0.05px] text-foreground',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-colors duration-200',\n // Hover\n 'hover:bg-muted/50',\n ),\n {\n variants: {\n selected: {\n true: 'bg-muted hover:bg-muted',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n },\n },\n);\n\n/**\n * Combobox empty state variants\n *\n * Controls the empty state message\n */\nexport const comboboxEmptyStateVariants = cva(\n clsx(\n // Padding\n 'py-4 px-3',\n // Typography\n 'text-sm font-normal text-muted-foreground text-center',\n ),\n);\n\n/**\n * Combobox error message variants\n *\n * Controls the error message display\n */\nexport const comboboxErrorMessageVariants = cva(\n clsx(\n // Margin\n 'mt-1.5',\n // Typography\n 'text-xs font-normal leading-[1.4] text-destructive',\n ),\n);\n\n/**\n * Combobox value text variants\n *\n * Controls the selected value display\n */\nexport const comboboxValueVariants = cva(\n clsx(\n // Layout\n 'flex-1 text-left',\n ),\n);\n\n/**\n * Combobox icon variants\n *\n * Controls the chevron icon\n */\nexport const comboboxIconVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-3.5 h-2',\n ),\n);\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n HostListener,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n comboboxDropdownVariants,\n comboboxEmptyStateVariants,\n comboboxErrorMessageVariants,\n comboboxIconVariants,\n comboboxOptionsContainerVariants,\n comboboxOptionVariants,\n comboboxSearchInputVariants,\n comboboxSearchWrapperVariants,\n comboboxTriggerVariants,\n comboboxValueVariants,\n comboboxWrapperVariants,\n} from './combobox.variants';\n\nexport type ComboboxSize = 'sm' | 'md' | 'lg';\nexport type ComboboxState =\n | 'default'\n | 'hover'\n | 'focus'\n | 'disabled'\n | 'error';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport type ComboboxWrapperVariantsProps = VariantProps<\n typeof comboboxWrapperVariants\n>;\nexport type ComboboxTriggerVariantsProps = VariantProps<\n typeof comboboxTriggerVariants\n>;\n\n/**\n * Combobox Component - Searchable dropdown select\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-combobox\n * [options]=\"options\"\n * [placeholder]=\"'Select...'\"\n * [size]=\"'md'\"\n * (valueChange)=\"onValueChange($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-combobox',\n standalone: true,\n imports: [CommonModule, FormsModule],\n template: `\n <div [class]=\"wrapperClasses()\">\n <!-- Combobox trigger -->\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"state() === 'disabled'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-disabled]=\"state() === 'disabled'\"\n (click)=\"toggleDropdown($event)\"\n >\n <span [class]=\"valueClasses()\">{{ selectedLabel() }}</span>\n <svg\n [class]=\"iconClasses()\"\n width=\"14\"\n height=\"8\"\n viewBox=\"0 0 14 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.2929 0.292893C12.6834 -0.0976311 13.3164 -0.0976311 13.707 0.292893C14.0975 0.683417 14.0975 1.31643 13.707 1.70696L7.70696 7.70696C7.31643 8.09748 6.68342 8.09748 6.29289 7.70696L0.292893 1.70696C-0.0976311 1.31643 -0.0976311 0.683417 0.292893 0.292893C0.683418 -0.0976311 1.31643 -0.0976311 1.70696 0.292893L6.99992 5.58586L12.2929 0.292893Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n </button>\n\n <!-- Dropdown menu with search -->\n @if (isOpen()) {\n <div [class]=\"dropdownClasses()\" role=\"listbox\">\n <!-- Search input -->\n <div [class]=\"searchWrapperClasses()\">\n <input\n type=\"text\"\n [class]=\"searchInputClasses()\"\n [disabled]=\"state() === 'disabled'\"\n placeholder=\"Buscar...\"\n [ngModel]=\"searchText()\"\n (ngModelChange)=\"searchText.set($event)\"\n (keydown.escape)=\"closeDropdown()\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Search options\"\n />\n </div>\n\n <!-- Options list -->\n <div [class]=\"optionsContainerClasses()\">\n @for (option of filteredOptions(); track option.value) {\n <div\n [class]=\"getOptionClasses(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"selectedValue() === option.value\"\n (click)=\"selectOption($event, option)\"\n >\n {{ option.label }}\n </div>\n }\n\n <!-- Empty state -->\n @if (filteredOptions().length === 0) {\n <div [class]=\"emptyStateClasses()\">Sin resultados</div>\n }\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (state() === 'error' && errorMessage()) {\n <div [class]=\"errorMessageClasses()\">\n {{ errorMessage() }}\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class ComboboxComponent {\n /** Size of the combobox */\n readonly size = input<ComboboxSize>('sm');\n\n /** Current state */\n readonly state = input<ComboboxState>('default');\n\n /** List of options */\n readonly options = input<ComboboxOption[]>([\n { value: '1', label: 'Opcion 1' },\n { value: '2', label: 'Opcion 2' },\n { value: '3', label: 'Opcion 3' },\n { value: '4', label: 'Opcion 4' },\n ]);\n\n /** Currently selected value (two-way binding supported) */\n readonly selectedValue = model<string>('');\n\n /** Placeholder text */\n readonly placeholder = input<string>('Selecciona');\n\n /** Dropdown open state (two-way binding supported) */\n readonly open = model<boolean>(false);\n\n /** Error message (shown when state is 'error') */\n readonly errorMessage = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<ComboboxOption>();\n\n /** Open state change event */\n readonly openChange = output<boolean>();\n\n /** Internal open state */\n readonly isOpen = signal<boolean>(false);\n\n /** Search text for filtering */\n readonly searchText = signal<string>('');\n\n constructor() {\n // Sync isOpen with open input\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n // Computed classes\n readonly wrapperClasses = computed(() =>\n clsx(\n comboboxWrapperVariants({\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n readonly triggerClasses = computed(() =>\n clsx(\n comboboxTriggerVariants({\n size: this.size(),\n state: this.state(),\n open: this.isOpen(),\n }),\n ),\n );\n\n readonly dropdownClasses = computed(() =>\n clsx(\n comboboxDropdownVariants({\n size: this.size(),\n }),\n ),\n );\n\n readonly searchWrapperClasses = computed(() =>\n clsx(comboboxSearchWrapperVariants()),\n );\n\n readonly searchInputClasses = computed(() =>\n clsx(comboboxSearchInputVariants()),\n );\n\n readonly optionsContainerClasses = computed(() =>\n clsx(comboboxOptionsContainerVariants()),\n );\n\n readonly emptyStateClasses = computed(() =>\n clsx(comboboxEmptyStateVariants()),\n );\n\n readonly errorMessageClasses = computed(() =>\n clsx(comboboxErrorMessageVariants()),\n );\n\n readonly valueClasses = computed(() => clsx(comboboxValueVariants()));\n\n readonly iconClasses = computed(() => clsx(comboboxIconVariants()));\n\n readonly selectedLabel = computed(() => {\n const value = this.selectedValue();\n if (!value) {\n return this.placeholder();\n }\n\n const selected = this.options().find((opt) => opt.value === value);\n return selected ? selected.label : this.placeholder();\n });\n\n readonly iconColor = computed(() => {\n if (this.state() === 'error') {\n return 'currentColor';\n }\n return '#64748B'; // neutral-500\n });\n\n readonly filteredOptions = computed(() => {\n const term = this.searchText().trim().toLowerCase();\n\n if (!term) return this.options();\n\n return this.options().filter((option) =>\n option.label.toLowerCase().includes(term),\n );\n });\n\n getOptionClasses(value: string): string {\n return clsx(\n comboboxOptionVariants({\n selected: this.selectedValue() === value,\n }),\n );\n }\n\n toggleDropdown(event: MouseEvent): void {\n event.stopPropagation();\n\n if (this.state() === 'disabled') {\n return;\n }\n\n const newState = !this.isOpen();\n this.isOpen.set(newState);\n this.open.set(newState);\n if (newState) {\n this.searchText.set('');\n }\n this.openChange.emit(newState);\n }\n\n closeDropdown(): void {\n this.isOpen.set(false);\n this.open.set(false);\n this.searchText.set('');\n\n this.openChange.emit(false);\n }\n\n selectOption(event: MouseEvent, option: ComboboxOption): void {\n event.stopPropagation();\n\n if (this.state() === 'disabled') {\n return;\n }\n\n // Update internal state\n this.selectedValue.set(option.value);\n this.isOpen.set(false);\n this.open.set(false);\n this.searchText.set('');\n\n // Emit events\n this.valueChange.emit(option.value);\n this.selectionChange.emit(option);\n this.openChange.emit(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const hostElement = (event.currentTarget as Document).querySelector(\n 'bsg-combobox',\n );\n\n // Check if click is outside the combobox\n if (hostElement && !hostElement.contains(target) && this.isOpen()) {\n this.closeDropdown();\n }\n }\n}\n","// projects/bsg-integra/src/lib/components/dialog/dialog.variants.ts\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Dialog overlay variants\n */\nexport const dialogOverlayVariants = cva(\n clsx(\n 'fixed inset-0',\n 'z-[9999]',\n 'flex justify-center',\n 'items-start sm:items-center',\n 'overflow-y-auto',\n 'bg-black/50',\n 'p-4 md:p-3',\n 'box-border',\n 'animate-in fade-in duration-200',\n 'select-none',\n ),\n);\n\n/**\n * Dialog content variants\n */\nexport const dialogContentVariants = cva(\n clsx(\n 'relative',\n 'flex flex-col',\n 'shrink-0',\n 'bg-card',\n 'rounded-xl',\n 'shadow-xl',\n 'max-h-[90vh]',\n 'w-full',\n 'box-border',\n 'animate-in zoom-in-95 duration-200',\n 'select-text',\n 'focus:outline-none',\n ),\n {\n variants: {\n size: {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n '3xl': 'max-w-3xl',\n '4xl': 'max-w-4xl',\n full: 'max-w-[calc(100vw-2rem)]',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n },\n);\n\nexport type DialogContentVariantsProps = VariantProps<\n typeof dialogContentVariants\n>;\n\n/**\n * Dialog header variants\n */\nexport const dialogHeaderVariants = cva(\n clsx(\n 'flex items-center',\n 'min-h-[57px]',\n 'px-[17px] py-5 md:px-3.5 md:py-4',\n 'rounded-t-xl',\n 'box-border',\n 'font-sans text-base font-semibold leading-normal',\n 'md:text-sm',\n ),\n {\n variants: {\n tone: {\n brand: 'bg-brand text-brand-foreground',\n info: 'bg-primary/20 text-primary',\n secondary: 'bg-primary/20 text-primary',\n },\n },\n defaultVariants: {\n tone: 'brand',\n },\n },\n);\n\nexport type DialogHeaderVariantsProps = VariantProps<\n typeof dialogHeaderVariants\n>;\n\n/**\n * Dialog body variants\n */\nexport const dialogBodyVariants = cva(\n clsx(\n 'flex-1',\n 'px-[23px] py-5 md:px-3.5 md:py-4',\n 'box-border',\n 'font-sans text-sm font-medium leading-normal',\n 'md:text-[13px]',\n 'text-muted-foreground',\n ),\n {\n variants: {\n scrollable: {\n true: 'overflow-y-auto max-h-[calc(90vh-200px)] md:max-h-[calc(95vh-180px)]',\n false: 'overflow-y-visible',\n },\n },\n defaultVariants: {\n scrollable: false,\n },\n },\n);\n\nexport type DialogBodyVariantsProps = VariantProps<typeof dialogBodyVariants>;\n\n/**\n * Dialog footer variants\n */\nexport const dialogFooterVariants = cva(\n clsx(\n 'flex items-center justify-end flex-nowrap',\n 'gap-8 md:gap-5',\n 'px-[23px] py-5 md:px-3.5 md:py-4',\n 'border-t border-border',\n 'box-border',\n 'w-full',\n ),\n);\n\nexport type DialogFooterVariantsProps = VariantProps<\n typeof dialogFooterVariants\n>;\n","// projects/bsg-integra/src/lib/components/dialog/dialog.component.ts\nimport {\n Component,\n computed,\n HostListener,\n input,\n output,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n dialogBodyVariants,\n dialogContentVariants,\n dialogFooterVariants,\n dialogHeaderVariants,\n dialogOverlayVariants,\n} from './dialog.variants';\n\nexport type DialogSize =\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl'\n | 'full';\n\nexport type DialogHeaderTone = 'brand' | 'info' | 'secondary';\n\n@Component({\n selector: 'bsg-dialog',\n standalone: true,\n template: `\n @if (open()) {\n <!-- Dialog Overlay -->\n <div [class]=\"overlayClasses()\" (click)=\"onOverlayClick()\">\n <!-- Dialog Content -->\n <div\n [class]=\"contentClasses()\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n aria-labelledby=\"dialog-title\"\n [style.width]=\"'100%'\"\n [style.maxWidth]=\"contentMaxWidth()\"\n [style.minWidth]=\"'280px'\"\n [style.margin]=\"'24px auto'\"\n [style.flex]=\"'0 0 auto'\"\n >\n <!-- Dialog Header -->\n <div [class]=\"headerClasses()\">\n <ng-content select=\"[dialog-header]\"></ng-content>\n </div>\n\n <!-- Dialog Body -->\n <div [class]=\"bodyClasses()\">\n <ng-content select=\"[dialog-body]\"></ng-content>\n </div>\n\n <!-- Dialog Footer -->\n @if (hasFooter()) {\n <div [class]=\"footerClasses()\">\n <ng-content select=\"[dialog-footer]\"></ng-content>\n </div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DialogComponent {\n /** Controls dialog visibility */\n readonly open = input<boolean>(false);\n\n /** Dialog size */\n readonly size = input<DialogSize>('lg');\n\n /** Header tone/theme */\n readonly headerTone = input<DialogHeaderTone>('brand');\n\n /** Enable scrollable body */\n readonly scrollable = input<boolean>(false);\n\n /** Allow dismissing via ESC or backdrop click */\n readonly dismissible = input<boolean>(true);\n\n /** Whether footer content is present */\n readonly hasFooter = input<boolean>(true);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Close event */\n readonly closeDialog = output<void>();\n\n // Computed classes\n readonly overlayClasses = computed(() => clsx(dialogOverlayVariants()));\n\n readonly contentClasses = computed(() =>\n clsx(dialogContentVariants({ size: this.size() }), this.className()),\n );\n\n readonly headerClasses = computed(() =>\n clsx(dialogHeaderVariants({ tone: this.headerTone() })),\n );\n\n readonly bodyClasses = computed(() =>\n clsx(dialogBodyVariants({ scrollable: this.scrollable() })),\n );\n\n readonly footerClasses = computed(() => clsx(dialogFooterVariants()));\n\n // Fallback sizing (prevents min-content collapse in some Storybook setups)\n readonly contentMaxWidth = computed(() => {\n const map: Record<DialogSize, string> = {\n sm: '384px',\n md: '448px',\n lg: '512px',\n xl: '576px',\n '2xl': '672px',\n '3xl': '768px',\n '4xl': '896px',\n full: 'calc(100vw - 2rem)',\n };\n return map[this.size()];\n });\n\n onOverlayClick(): void {\n if (this.dismissible()) this.close();\n }\n\n close(): void {\n this.closeDialog.emit();\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n if (this.open() && this.dismissible()) this.close();\n }\n}\n","import {\n Component,\n input,\n forwardRef,\n HostBinding,\n signal,\n linkedSignal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const inputVariants = cva(\n clsx(\n // Layout & sizing\n 'w-full min-w-0',\n // Border & radius\n 'rounded-md border border-input',\n // Spacing\n 'px-3',\n // Typography\n 'text-base md:text-sm',\n // Colors\n 'bg-transparent text-foreground',\n 'placeholder:text-muted-foreground',\n // Effects\n 'shadow-xs transition-[color,box-shadow] outline-none',\n // Focus state\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // Disabled state\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // File input styles\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent',\n 'file:text-sm file:font-medium file:text-foreground',\n // Selection styles\n 'selection:bg-primary selection:text-primary-foreground',\n // Dark mode\n 'dark:bg-input/30',\n // Invalid state\n 'aria-invalid:border-destructive aria-invalid:ring-destructive/20',\n 'dark:aria-invalid:ring-destructive/40',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 py-1 text-xs',\n default: 'h-9 py-1',\n lg: 'h-11 py-2 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type InputSize = VariantProps<typeof inputVariants>['size'];\n\n@Component({\n selector: 'bsg-input',\n standalone: true,\n imports: [],\n template: `\n <input\n [type]=\"type()\"\n [class]=\"computedClasses\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"onFocus()\"\n />\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n})\nexport class InputComponent implements ControlValueAccessor, Validator {\n type = input<string>('text');\n placeholder = input<string>('');\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n readonly = input<boolean>(false);\n ariaInvalid = input<boolean>();\n size = input<InputSize>('default');\n className = input<string>();\n\n @HostBinding('class') get hostClasses(): string {\n return 'block';\n }\n\n value = signal('');\n\n // Internal disabled state for ControlValueAccessor, synced with input\n disabledState = linkedSignal(() => this.disabled());\n\n // Store callbacks as signals for better reactivity\n private onChangeCallback = signal<(value: string) => void>(() => {});\n private onTouchedCallback = signal<() => void>(() => {});\n\n get computedClasses(): string {\n return clsx(\n inputVariants({\n size: this.size(),\n }),\n this.className(),\n );\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value.set(input.value);\n this.onChangeCallback()(input.value);\n }\n\n onTouched(): void {\n this.onTouchedCallback()();\n }\n\n onFocus(): void {\n // Hook for focus event if needed\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeCallback.set(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback.set(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n // HTML5 validation support\n if (this.required() && !control.value) {\n return { required: true };\n }\n\n // Email validation for type=\"email\"\n if (this.type() === 'email' && control.value) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(control.value)) {\n return { email: true };\n }\n }\n\n // URL validation for type=\"url\"\n if (this.type() === 'url' && control.value) {\n const urlRegex = /^https?:\\/\\/.+/;\n if (!urlRegex.test(control.value)) {\n return { url: true };\n }\n }\n\n return null;\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Label variants\n *\n * Controls the label text styling\n */\nexport const labelVariants = cva(\n clsx(\n // Display\n 'inline',\n // Typography\n 'text-sm',\n 'font-inherit',\n // Color\n 'text-foreground',\n ),\n);\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { labelVariants } from './label.variants';\n\n/**\n * Label Component\n *\n * A simple text label component following shadcn/ui pattern.\n *\n * Usage:\n * ```html\n * <bsg-label text=\"My Label\"></bsg-label>\n * <bsg-label text=\"Custom styled\" className=\"font-bold\"></bsg-label>\n * ```\n */\n@Component({\n selector: 'bsg-label',\n standalone: true,\n template: `<span [class]=\"computedClasses()\">{{ text() }}</span>`,\n})\nexport class LabelComponent {\n /** Label text content */\n readonly text = input<string>('Etiqueta');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed classes combining variants and custom className */\n readonly computedClasses = computed(() =>\n clsx(labelVariants(), this.className()),\n );\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Radio wrapper variants\n *\n * Controls the overall radio button container layout and sizing\n */\nexport const radioWrapperVariants = cva(\n clsx(\n // Layout\n 'relative inline-flex items-center justify-center',\n // Interaction\n 'cursor-pointer',\n // Box sizing\n 'box-border',\n ),\n {\n variants: {\n size: {\n sm: 'w-4 h-4', // 16px\n md: 'w-5 h-5', // 20px\n },\n state: {\n default: '',\n hover: '',\n checked: '',\n disabled: 'cursor-not-allowed pointer-events-none',\n focus: '', // Focus state increases size\n },\n },\n compoundVariants: [\n // Focus state increases wrapper size to accommodate focus ring\n {\n size: 'sm',\n state: 'focus',\n class: 'w-[22px] h-[22px]',\n },\n {\n size: 'md',\n state: 'focus',\n class: 'w-[26px] h-[26px]',\n },\n ],\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n },\n);\n\n/**\n * Radio focus ring variants\n *\n * Controls the outer focus ring that appears in focus state\n */\nexport const radioFocusRingVariants = cva(\n clsx(\n // Position\n 'absolute top-0 left-0',\n // Interaction\n 'pointer-events-none',\n ),\n {\n variants: {\n size: {\n sm: 'w-[22px] h-[22px]',\n md: 'w-[26px] h-[26px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Radio outer circle variants\n *\n * Controls the main outer circle of the radio button\n */\nexport const radioOuterVariants = cva(\n clsx(\n // Position - centered\n 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n // Transitions\n 'transition-all duration-200 ease-in-out',\n ),\n {\n variants: {\n size: {\n sm: 'w-4 h-4', // 16px\n md: 'w-5 h-5', // 20px\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Radio inner dot variants\n *\n * Controls the inner checked indicator dot\n */\nexport const radioInnerVariants = cva(\n clsx(\n // Position - centered\n 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n // Interaction\n 'pointer-events-none',\n // Transitions\n 'transition-all duration-200 ease-in-out',\n ),\n {\n variants: {\n size: {\n sm: 'w-[10px] h-[10px]',\n md: 'w-[14px] h-[14px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n radioFocusRingVariants,\n radioInnerVariants,\n radioOuterVariants,\n radioWrapperVariants,\n} from './radio.variants';\n\nexport type RadioSize = 'sm' | 'md';\nexport type RadioState = 'default' | 'hover' | 'checked' | 'disabled' | 'focus';\n\nexport type RadioWrapperVariantsProps = VariantProps<\n typeof radioWrapperVariants\n>;\nexport type RadioFocusRingVariantsProps = VariantProps<\n typeof radioFocusRingVariants\n>;\nexport type RadioOuterVariantsProps = VariantProps<typeof radioOuterVariants>;\nexport type RadioInnerVariantsProps = VariantProps<typeof radioInnerVariants>;\n\n/**\n * Radio Component - Custom radio button with various states\n *\n * Usage:\n * ```html\n * <bsg-radio [size]=\"'md'\" [state]=\"'default'\" [checked]=\"false\"></bsg-radio>\n * ```\n */\n@Component({\n selector: 'bsg-radio',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n [class]=\"wrapperClasses()\"\n (click)=\"handleClick()\"\n [attr.role]=\"'radio'\"\n [attr.aria-checked]=\"currentState() === 'checked'\"\n [attr.aria-disabled]=\"currentState() === 'disabled'\"\n [attr.tabindex]=\"currentState() === 'disabled' ? -1 : 0\"\n >\n <!-- Focus ring (outer) -->\n <svg\n *ngIf=\"currentState() === 'focus'\"\n [class]=\"focusRingClasses()\"\n [attr.width]=\"focusRingSize()\"\n [attr.height]=\"focusRingSize()\"\n [attr.viewBox]=\"'0 0 ' + focusRingSize() + ' ' + focusRingSize()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"focusRingSize() / 2\"\n [attr.cy]=\"focusRingSize() / 2\"\n [attr.r]=\"focusRingSize() / 2 - 0.5\"\n class=\"stroke-primary\"\n stroke-width=\"1\"\n />\n </svg>\n\n <!-- Outer circle -->\n <svg\n [class]=\"outerClasses()\"\n [attr.width]=\"outerSize()\"\n [attr.height]=\"outerSize()\"\n [attr.viewBox]=\"'0 0 ' + outerSize() + ' ' + outerSize()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"outerSize() / 2\"\n [attr.cy]=\"outerSize() / 2\"\n [attr.r]=\"outerSize() / 2 - 0.5\"\n [class]=\"outerCircleClasses()\"\n stroke-width=\"1\"\n />\n </svg>\n\n <!-- Inner dot (indicator) for checked state -->\n <svg\n *ngIf=\"currentState() === 'checked'\"\n [class]=\"innerClasses()\"\n [attr.width]=\"innerSize()\"\n [attr.height]=\"innerSize()\"\n [attr.viewBox]=\"'0 0 ' + innerSize() + ' ' + innerSize()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"innerSize() / 2\"\n [attr.cy]=\"innerSize() / 2\"\n [attr.r]=\"innerSize() / 2 - 0.5\"\n class=\"fill-primary stroke-primary\"\n stroke-width=\"1\"\n />\n </svg>\n </div>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n /* Accessibility - keyboard focus */\n .radio-wrapper:focus-visible {\n outline: none;\n }\n `,\n})\nexport class RadioComponent {\n /** Radio size */\n readonly size = input<RadioSize>('md');\n\n /** Radio state (external input) */\n readonly state = input<RadioState>('default');\n\n /** Checked state (external input) */\n readonly checked = input<boolean>(false);\n\n /** Additional CSS classes for wrapper */\n readonly className = input<string>();\n\n /** Emits when state changes */\n readonly stateChange = output<RadioState>();\n\n /** Emits when checked state changes */\n readonly checkedChange = output<boolean>();\n\n /** Emits when value changes */\n readonly valueChange = output<boolean>();\n\n // Internal writable signals for state management\n private readonly internalState = signal<RadioState>('default');\n private readonly internalChecked = signal<boolean>(false);\n\n // Sync external inputs with internal state\n constructor() {\n effect(() => {\n this.internalState.set(this.state());\n });\n\n effect(() => {\n this.internalChecked.set(this.checked());\n });\n }\n\n // Current state computed from internal signal\n readonly currentState = computed(() => this.internalState());\n readonly currentChecked = computed(() => this.internalChecked());\n\n // Computed wrapper classes\n readonly wrapperClasses = computed(() =>\n clsx(\n radioWrapperVariants({\n size: this.size(),\n state: this.currentState(),\n }),\n this.className(),\n ),\n );\n\n // Computed focus ring classes\n readonly focusRingClasses = computed(() =>\n radioFocusRingVariants({\n size: this.size(),\n }),\n );\n\n // Computed outer circle classes\n readonly outerClasses = computed(() =>\n radioOuterVariants({\n size: this.size(),\n }),\n );\n\n // Computed inner dot classes\n readonly innerClasses = computed(() =>\n radioInnerVariants({\n size: this.size(),\n }),\n );\n\n // Outer circle size\n readonly outerSize = computed(() => {\n return this.size() === 'sm' ? 16 : 20;\n });\n\n // Inner dot size (when checked)\n readonly innerSize = computed(() => {\n return this.size() === 'sm' ? 10 : 14;\n });\n\n // Focus ring size (3px larger on each side = 6px total)\n readonly focusRingSize = computed(() => {\n return this.size() === 'sm' ? 22 : 26;\n });\n\n // Outer circle classes based on state (using semantic tokens)\n readonly outerCircleClasses = computed(() => {\n const current = this.currentState();\n if (current === 'disabled') {\n return 'stroke-muted-foreground fill-muted-foreground';\n }\n if (current === 'hover') {\n return 'stroke-primary/70 fill-none';\n }\n if (current === 'checked') {\n return 'stroke-primary fill-none';\n }\n if (current === 'focus') {\n return 'stroke-muted-foreground fill-none';\n }\n return 'stroke-muted-foreground fill-none'; // default\n });\n\n // Handle click events\n handleClick(): void {\n if (this.currentState() === 'disabled') {\n return;\n }\n\n const newState: RadioState =\n this.currentState() === 'checked' ? 'default' : 'checked';\n const newChecked = !this.currentChecked();\n\n // Update internal state\n this.internalState.set(newState);\n this.internalChecked.set(newChecked);\n\n // Emit events\n this.stateChange.emit(newState);\n this.checkedChange.emit(newChecked);\n this.valueChange.emit(newChecked);\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Radio Group container variants\n *\n * Controls the overall radio group layout, orientation, and spacing\n */\nexport const radioGroupVariants = cva(\n clsx(\n // Layout\n 'flex',\n // Box sizing\n 'box-border',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-start',\n },\n size: {\n sm: '', // Spacing handled via compoundVariants\n md: '',\n },\n },\n compoundVariants: [\n // Horizontal spacing\n {\n orientation: 'horizontal',\n size: 'sm',\n class: 'gap-3', // 12px\n },\n {\n orientation: 'horizontal',\n size: 'md',\n class: 'gap-[15px]', // 15px\n },\n // Vertical spacing\n {\n orientation: 'vertical',\n size: 'sm',\n class: 'gap-3', // 12px\n },\n {\n orientation: 'vertical',\n size: 'md',\n class: 'gap-3', // 12px\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n size: 'md',\n },\n },\n);\n\n/**\n * Radio Option variants (container for radio + label)\n *\n * Controls the layout and spacing between radio button and its label\n */\nexport const radioOptionVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center',\n // Interaction\n 'cursor-pointer',\n // Box sizing\n 'box-border',\n // Prevent text selection\n 'select-none',\n ),\n {\n variants: {\n size: {\n sm: 'gap-2', // 8px\n md: 'gap-3', // 12px\n },\n disabled: {\n true: 'cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n);\n\n/**\n * Radio Label variants\n *\n * Controls the text styling for radio button labels\n */\nexport const radioLabelVariants = cva(\n clsx(\n // Typography\n 'font-normal',\n 'tracking-[0.05px]',\n // Color (semantic token)\n 'text-foreground',\n ),\n {\n variants: {\n size: {\n sm: 'text-sm leading-[21px]', // 14px / 21px\n md: 'text-base leading-6', // 16px / 24px\n },\n disabled: {\n true: 'text-muted-foreground opacity-60',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n);\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { RadioComponent, RadioSize } from '../radio/radio.component';\nimport {\n radioGroupVariants,\n radioLabelVariants,\n radioOptionVariants,\n} from './radio-group.variants';\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface RadioGroupOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport type RadioGroupVariantsProps = VariantProps<typeof radioGroupVariants>;\nexport type RadioOptionVariantsProps = VariantProps<typeof radioOptionVariants>;\nexport type RadioLabelVariantsProps = VariantProps<typeof radioLabelVariants>;\n\n/**\n * RadioGroup Component - Container for radio button options\n *\n * Usage:\n * ```html\n * <bsg-radio-group\n * [options]=\"myOptions\"\n * [selectedValue]=\"selectedVal\"\n * (valueChange)=\"onValueChange($event)\"\n * ></bsg-radio-group>\n * ```\n */\n@Component({\n selector: 'bsg-radio-group',\n standalone: true,\n imports: [CommonModule, RadioComponent],\n template: `\n <div [class]=\"groupClasses()\" [attr.role]=\"'radiogroup'\">\n <label\n *ngFor=\"let option of options(); let i = index\"\n [class]=\"getOptionClasses(option)\"\n (click)=\"selectOption(option.value)\"\n >\n <bsg-radio\n [size]=\"size()\"\n [state]=\"getRadioState(option.value, option.disabled)\"\n [checked]=\"currentSelectedValue() === option.value\"\n ></bsg-radio>\n <span [class]=\"getLabelClasses(option)\">{{ option.label }}</span>\n </label>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class RadioGroupComponent {\n /** Size of the radio buttons */\n readonly size = input<RadioSize>('md');\n\n /** Layout orientation */\n readonly orientation = input<RadioGroupOrientation>('horizontal');\n\n /** List of options */\n readonly options = input<RadioGroupOption[]>([\n { value: '1', label: 'Uno' },\n { value: '2', label: 'Dos' },\n { value: '3', label: 'Tres' },\n ]);\n\n /** Currently selected value (external input) */\n readonly selectedValue = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<RadioGroupOption>();\n\n // Internal writable signal for selected value\n private readonly internalSelectedValue = signal<string>('');\n\n // Sync external input with internal state\n constructor() {\n effect(() => {\n this.internalSelectedValue.set(this.selectedValue());\n });\n }\n\n // Current selected value computed from internal signal\n readonly currentSelectedValue = computed(() => this.internalSelectedValue());\n\n // Computed group classes\n readonly groupClasses = computed(() =>\n clsx(\n radioGroupVariants({\n orientation: this.orientation(),\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n // Get option classes for a specific option\n getOptionClasses(option: RadioGroupOption): string {\n return radioOptionVariants({\n size: this.size(),\n disabled: option.disabled || false,\n });\n }\n\n // Get label classes for a specific option\n getLabelClasses(option: RadioGroupOption): string {\n return radioLabelVariants({\n size: this.size(),\n disabled: option.disabled || false,\n });\n }\n\n // Get radio state based on value and disabled status\n getRadioState(\n value: string,\n disabled?: boolean,\n ): 'default' | 'checked' | 'disabled' {\n if (disabled) {\n return 'disabled';\n }\n return this.currentSelectedValue() === value ? 'checked' : 'default';\n }\n\n // Handle option selection\n selectOption(value: string): void {\n const option = this.options().find((opt) => opt.value === value);\n\n if (option && !option.disabled) {\n // Update internal state\n this.internalSelectedValue.set(value);\n\n // Emit events\n this.valueChange.emit(value);\n this.selectionChange.emit(option);\n }\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Select wrapper variants\n *\n * Controls the overall select container layout\n */\nexport const selectWrapperVariants = cva(\n clsx(\n // Layout\n 'relative inline-block box-border',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Select trigger variants\n *\n * Controls the clickable select button\n */\nexport const selectTriggerVariants = cva(\n clsx(\n // Layout\n 'flex justify-center items-center gap-3 w-full',\n // Border\n 'rounded-md border',\n // Background\n 'bg-transparent',\n // Typography\n 'font-sans text-base font-normal leading-6 tracking-[0.05px]',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 px-3 py-1',\n md: 'h-10 px-3 py-1',\n lg: 'h-12 px-3 py-1',\n },\n state: {\n default: 'border-border text-foreground hover:opacity-90',\n hover: 'border-border text-foreground opacity-90',\n focus: 'border-primary text-foreground',\n disabled:\n 'opacity-40 cursor-not-allowed pointer-events-none border-border text-foreground',\n error: 'border-destructive text-destructive',\n },\n open: {\n true: 'border-primary',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n open: false,\n },\n },\n);\n\n/**\n * Select value variants\n *\n * Controls the selected value text display\n */\nexport const selectValueVariants = cva(\n clsx(\n // Layout\n 'flex-1 text-left',\n // Typography\n 'truncate',\n ),\n);\n\n/**\n * Select icon variants\n *\n * Controls the chevron icon\n */\nexport const selectIconVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-3.5 h-2',\n // Transition\n 'transition-transform duration-200',\n ),\n {\n variants: {\n open: {\n true: 'rotate-180',\n false: '',\n },\n state: {\n default: 'text-muted-foreground',\n hover: 'text-muted-foreground',\n focus: 'text-muted-foreground',\n disabled: 'text-muted-foreground',\n error: 'text-destructive',\n },\n },\n defaultVariants: {\n open: false,\n state: 'default',\n },\n },\n);\n\n/**\n * Select dropdown variants\n *\n * Controls the dropdown menu container\n */\nexport const selectDropdownVariants = cva(\n clsx(\n // Position\n 'absolute top-[calc(100%+4px)] left-0 z-50',\n // Border\n 'rounded-md border border-border',\n // Background (semantic token)\n 'bg-popover',\n // Text color (semantic token)\n 'text-popover-foreground',\n // Shadow (semantic token)\n 'shadow-(--shadow-dropdown)',\n // Layout\n 'overflow-hidden box-border',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Select option variants\n *\n * Controls individual dropdown options\n */\nexport const selectOptionVariants = cva(\n clsx(\n // Spacing\n 'px-3 py-1',\n // Typography\n 'font-sans text-base font-normal leading-6 tracking-[0.05px]',\n 'text-popover-foreground',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-colors duration-200',\n // Hover\n 'hover:bg-accent hover:text-accent-foreground',\n ),\n {\n variants: {\n selected: {\n true: 'bg-accent text-accent-foreground',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n },\n },\n);\n\n/**\n * Select error message variants\n *\n * Controls the error message text\n */\nexport const selectErrorVariants = cva(\n clsx(\n // Spacing\n 'mt-1.5',\n // Typography\n 'font-sans text-xs font-normal leading-snug',\n 'text-destructive',\n ),\n);\n","import {\n Component,\n computed,\n effect,\n HostListener,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n selectDropdownVariants,\n selectErrorVariants,\n selectIconVariants,\n selectOptionVariants,\n selectTriggerVariants,\n selectValueVariants,\n selectWrapperVariants,\n} from './select.variants';\n\nexport type SelectSize = 'sm' | 'md' | 'lg';\nexport type SelectState = 'default' | 'focus' | 'disabled' | 'error';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport type SelectTriggerVariantsProps = VariantProps<\n typeof selectTriggerVariants\n>;\n\n/**\n * Select Component - Custom dropdown select\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-select\n * [options]=\"options\"\n * [placeholder]=\"'Select an option'\"\n * (selectionChange)=\"onSelect($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-select',\n standalone: true,\n template: `\n <div [class]=\"wrapperClasses()\">\n <!-- Select trigger -->\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"state() === 'disabled'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-disabled]=\"state() === 'disabled'\"\n (click)=\"toggleDropdown()\"\n >\n <span [class]=\"valueClasses()\">{{ selectedLabel() }}</span>\n <svg\n [class]=\"iconClasses()\"\n width=\"14\"\n height=\"8\"\n viewBox=\"0 0 14 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12.2929 0.292893C12.6834 -0.0976311 13.3164 -0.0976311 13.707 0.292893C14.0975 0.683417 14.0975 1.31643 13.707 1.70696L7.70696 7.70696C7.31643 8.09748 6.68342 8.09748 6.29289 7.70696L0.292893 1.70696C-0.0976311 1.31643 -0.0976311 0.683417 0.292893 0.292893C0.683418 -0.0976311 1.31643 -0.0976311 1.70696 0.292893L6.99992 5.58586L12.2929 0.292893Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n\n <!-- Dropdown menu -->\n @if (isOpen()) {\n <div [class]=\"dropdownClasses()\" role=\"listbox\">\n @for (option of options(); track option.value) {\n <div\n [class]=\"getOptionClasses(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"currentSelectedValue() === option.value\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </div>\n }\n </div>\n }\n\n <!-- Error message -->\n @if (state() === 'error' && errorMessage()) {\n <div [class]=\"errorClasses()\">\n {{ errorMessage() }}\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class SelectComponent {\n /** Size of the select */\n readonly size = input<SelectSize>('md');\n\n /** Current state */\n readonly state = input<SelectState>('default');\n\n /** List of options */\n readonly options = input<SelectOption[]>([]);\n\n /** Currently selected value */\n readonly selectedValue = input<string>('');\n\n /** Placeholder text */\n readonly placeholder = input<string>('Selecciona');\n\n /** Error message (shown when state is 'error') */\n readonly errorMessage = input<string>('');\n\n /** Additional CSS classes for wrapper */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<SelectOption>();\n\n /** Open state change event */\n readonly openChange = output<boolean>();\n\n // Internal state for dropdown open/close\n private readonly _isOpen = signal<boolean>(false);\n\n // Internal state for selected value\n private readonly _internalSelectedValue = signal<string>('');\n\n // Sync external input with internal state\n constructor() {\n effect(() => {\n this._internalSelectedValue.set(this.selectedValue());\n });\n }\n\n // Expose isOpen as readonly\n readonly isOpen = this._isOpen.asReadonly();\n\n // Expose current selected value\n readonly currentSelectedValue = computed(() => this._internalSelectedValue());\n\n // Computed wrapper classes\n readonly wrapperClasses = computed(() =>\n clsx(\n selectWrapperVariants({\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n // Computed trigger classes\n readonly triggerClasses = computed(() =>\n clsx(\n selectTriggerVariants({\n size: this.size(),\n state: this.state(),\n open: this.isOpen(),\n }),\n ),\n );\n\n // Computed value classes\n readonly valueClasses = computed(() => clsx(selectValueVariants()));\n\n // Computed icon classes\n readonly iconClasses = computed(() =>\n clsx(\n selectIconVariants({\n open: this.isOpen(),\n state: this.state(),\n }),\n ),\n );\n\n // Computed dropdown classes\n readonly dropdownClasses = computed(() =>\n clsx(\n selectDropdownVariants({\n size: this.size(),\n }),\n ),\n );\n\n // Computed error classes\n readonly errorClasses = computed(() => clsx(selectErrorVariants()));\n\n // Get selected option label\n readonly selectedLabel = computed(() => {\n const value = this.currentSelectedValue();\n if (!value) {\n return this.placeholder();\n }\n\n const selected = this.options().find((opt) => opt.value === value);\n return selected ? selected.label : this.placeholder();\n });\n\n // Get option classes based on selection state\n getOptionClasses(value: string): string {\n return clsx(\n selectOptionVariants({\n selected: this.currentSelectedValue() === value,\n }),\n );\n }\n\n // Toggle dropdown open/close\n toggleDropdown(): void {\n if (this.state() === 'disabled') {\n return;\n }\n\n const newState = !this._isOpen();\n this._isOpen.set(newState);\n this.openChange.emit(newState);\n }\n\n // Select an option\n selectOption(option: SelectOption): void {\n if (this.state() === 'disabled') {\n return;\n }\n\n this._internalSelectedValue.set(option.value);\n this._isOpen.set(false);\n this.valueChange.emit(option.value);\n this.selectionChange.emit(option);\n this.openChange.emit(false);\n }\n\n // Close dropdown when clicking outside\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const hostElement = target.closest('bsg-select');\n\n if (!hostElement && this._isOpen()) {\n this._isOpen.set(false);\n this.openChange.emit(false);\n }\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\n\nexport type SidebarState = 'expanded' | 'collapsed';\nexport type SidebarSide = 'left' | 'right';\nexport type SidebarVariant = 'sidebar' | 'floating' | 'inset';\nexport type SidebarCollapsible = 'offcanvas' | 'icon' | 'none';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar:state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; // 7 days\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\n/**\n * Sidebar Service - Manages sidebar state following shadcn pattern\n *\n * This service provides reactive state management for the sidebar component,\n * similar to React's useSidebar hook in shadcn/ui.\n */\n@Injectable()\nexport class SidebarService {\n // Core state signals\n private readonly _state = signal<SidebarState>('expanded');\n private readonly _open = signal<boolean>(true);\n private readonly _openMobile = signal<boolean>(false);\n private readonly _isMobile = signal<boolean>(false);\n\n // Configuration\n readonly side = signal<SidebarSide>('left');\n readonly variant = signal<SidebarVariant>('sidebar');\n readonly collapsible = signal<SidebarCollapsible>('icon');\n\n // Constants exposed\n readonly SIDEBAR_WIDTH = SIDEBAR_WIDTH;\n readonly SIDEBAR_WIDTH_MOBILE = SIDEBAR_WIDTH_MOBILE;\n readonly SIDEBAR_WIDTH_ICON = SIDEBAR_WIDTH_ICON;\n readonly SIDEBAR_KEYBOARD_SHORTCUT = SIDEBAR_KEYBOARD_SHORTCUT;\n\n // Computed values\n readonly state = computed(() => this._state());\n readonly open = computed(() => this._open());\n readonly openMobile = computed(() => this._openMobile());\n readonly isMobile = computed(() => this._isMobile());\n\n /**\n * Set sidebar open state\n */\n setOpen(open: boolean): void {\n this._open.set(open);\n this._state.set(open ? 'expanded' : 'collapsed');\n\n // Persist state to cookie\n this.persistState(open);\n }\n\n /**\n * Set mobile sidebar open state\n */\n setOpenMobile(open: boolean): void {\n this._openMobile.set(open);\n }\n\n /**\n * Toggle sidebar state\n */\n toggle(): void {\n if (this._isMobile()) {\n this._openMobile.update((v) => !v);\n } else {\n this._open.update((v) => {\n const newValue = !v;\n this._state.set(newValue ? 'expanded' : 'collapsed');\n this.persistState(newValue);\n return newValue;\n });\n }\n }\n\n /**\n * Set mobile detection\n */\n setIsMobile(isMobile: boolean): void {\n this._isMobile.set(isMobile);\n }\n\n /**\n * Configure sidebar\n */\n configure(config: {\n side?: SidebarSide;\n variant?: SidebarVariant;\n collapsible?: SidebarCollapsible;\n defaultOpen?: boolean;\n }): void {\n if (config.side) this.side.set(config.side);\n if (config.variant) this.variant.set(config.variant);\n if (config.collapsible) this.collapsible.set(config.collapsible);\n if (config.defaultOpen !== undefined) {\n this._open.set(config.defaultOpen);\n this._state.set(config.defaultOpen ? 'expanded' : 'collapsed');\n }\n }\n\n /**\n * Initialize from stored state (cookie)\n */\n initializeFromStorage(): void {\n const storedState = this.getStoredState();\n if (storedState !== null) {\n this._open.set(storedState);\n this._state.set(storedState ? 'expanded' : 'collapsed');\n }\n }\n\n /**\n * Persist state to cookie\n */\n private persistState(open: boolean): void {\n if (typeof document !== 'undefined') {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n }\n }\n\n /**\n * Get stored state from cookie\n */\n private getStoredState(): boolean | null {\n if (typeof document === 'undefined') return null;\n\n const cookies = document.cookie.split(';');\n for (const cookie of cookies) {\n const [name, value] = cookie.trim().split('=');\n if (name === SIDEBAR_COOKIE_NAME) {\n return value === 'true';\n }\n }\n return null;\n }\n}\n","import { cva } from 'class-variance-authority';\n\n/**\n * Sidebar CSS Variables (following shadcn pattern)\n * These should be defined in your global CSS:\n *\n * :root {\n * --sidebar-width: 16rem;\n * --sidebar-width-icon: 3rem;\n * --sidebar: oklch(0.985 0 0);\n * --sidebar-foreground: oklch(0.145 0 0);\n * --sidebar-primary: oklch(0.205 0 0);\n * --sidebar-primary-foreground: oklch(0.985 0 0);\n * --sidebar-accent: oklch(0.97 0 0);\n * --sidebar-accent-foreground: oklch(0.205 0 0);\n * --sidebar-border: oklch(0.922 0 0);\n * --sidebar-ring: oklch(0.708 0 0);\n * }\n */\n\n/**\n * Sidebar Provider wrapper variants\n */\nexport const sidebarProviderVariants = cva(\n [\n 'group/sidebar-wrapper',\n 'flex',\n 'min-h-svh',\n 'w-full',\n 'has-[[data-variant=inset]]:bg-sidebar',\n ].join(' '),\n);\n\n/**\n * Sidebar container variants (following shadcn pattern)\n */\nexport const sidebarVariants = cva(\n [\n 'flex',\n 'h-full',\n 'w-[--sidebar-width]',\n 'flex-col',\n 'bg-sidebar',\n 'text-sidebar-foreground',\n ].join(' '),\n {\n variants: {\n collapsible: {\n none: '',\n offcanvas: [\n 'fixed',\n 'inset-y-0',\n 'z-10',\n 'hidden',\n 'flex-col',\n '-translate-x-full',\n 'border-r',\n 'transition-transform',\n 'duration-200',\n 'ease-linear',\n 'md:flex',\n 'md:translate-x-0',\n 'group-data-[state=expanded]/sidebar-wrapper:translate-x-0',\n ].join(' '),\n icon: [\n 'transition-[width]',\n 'duration-200',\n 'ease-linear',\n 'group-data-[state=collapsed]/sidebar-wrapper:w-[--sidebar-width-icon]',\n ].join(' '),\n },\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n variant: {\n sidebar: 'border-r border-sidebar-border',\n floating: 'm-2 rounded-lg border border-sidebar-border shadow',\n inset: 'border-r border-sidebar-border',\n },\n },\n defaultVariants: {\n collapsible: 'icon',\n side: 'left',\n variant: 'sidebar',\n },\n },\n);\n\n/**\n * Sidebar wrapper (outermost container) - Fixed positioning wrapper\n */\nexport const sidebarWrapperVariants = cva(\n [\n 'group',\n 'peer',\n 'text-sidebar-foreground',\n // CSS Variables\n '[--sidebar-width:16rem]',\n '[--sidebar-width-icon:3rem]',\n ].join(' '),\n {\n variants: {\n side: {\n left: '',\n right: '',\n },\n },\n defaultVariants: {\n side: 'left',\n },\n },\n);\n\n/**\n * Sidebar header variants\n */\nexport const sidebarHeaderVariants = cva(\n ['flex', 'flex-col', 'gap-2', 'p-2'].join(' '),\n);\n\n/**\n * Sidebar content variants\n */\nexport const sidebarContentVariants = cva(\n [\n 'flex',\n 'min-h-0',\n 'flex-1',\n 'flex-col',\n 'gap-2',\n 'overflow-auto',\n 'group-data-[collapsible=icon]:overflow-hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar footer variants\n */\nexport const sidebarFooterVariants = cva(\n ['flex', 'flex-col', 'gap-2', 'p-2'].join(' '),\n);\n\n/**\n * Sidebar group variants\n */\nexport const sidebarGroupVariants = cva(\n ['relative', 'flex', 'w-full', 'min-w-0', 'flex-col', 'p-2'].join(' '),\n);\n\n/**\n * Sidebar group label variants\n */\nexport const sidebarGroupLabelVariants = cva(\n [\n 'flex',\n 'h-8',\n 'shrink-0',\n 'items-center',\n 'rounded-md',\n 'px-2',\n 'text-xs',\n 'font-medium',\n 'text-sidebar-foreground/70',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-[margin,opacity]',\n 'duration-200',\n 'ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // When collapsed (icon mode)\n 'group-data-[collapsible=icon]:-mt-8',\n 'group-data-[collapsible=icon]:opacity-0',\n ].join(' '),\n);\n\n/**\n * Sidebar group action variants\n */\nexport const sidebarGroupActionVariants = cva(\n [\n 'absolute',\n 'right-3',\n 'top-3.5',\n 'flex',\n 'aspect-square',\n 'w-5',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'text-sidebar-foreground',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-transform',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // After group label adjustment\n 'after:absolute',\n 'after:-inset-2',\n 'after:md:hidden',\n // When collapsed\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar group content variants\n */\nexport const sidebarGroupContentVariants = cva(['w-full', 'text-sm'].join(' '));\n\n/**\n * Sidebar menu variants\n */\nexport const sidebarMenuVariants = cva(\n ['flex', 'w-full', 'min-w-0', 'flex-col', 'gap-1'].join(' '),\n);\n\n/**\n * Sidebar menu item variants\n */\nexport const sidebarMenuItemVariants = cva(\n ['group/menu-item', 'relative'].join(' '),\n);\n\n/**\n * Sidebar menu button variants (main CVA definition following shadcn)\n */\nexport const sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'flex',\n 'w-full',\n 'items-center',\n 'gap-2',\n 'overflow-hidden',\n 'rounded-md',\n 'p-2',\n 'text-left',\n 'text-sm',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-[width,height,padding,background-color,color]',\n 'duration-150',\n // Cursor\n 'cursor-pointer',\n // Hover state\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n // Focus state\n 'focus-visible:ring-2',\n // Active state (pressed)\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n // Disabled state\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n // With menu action\n 'group-has-[[data-sidebar=menu-action]]/menu-item:pr-8',\n // aria-disabled\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n // data-active (selected state)\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-accent-foreground',\n // data-state open (for collapsible)\n 'data-[state=open]:hover:bg-sidebar-accent',\n 'data-[state=open]:hover:text-sidebar-accent-foreground',\n // Icon mode collapsed\n 'group-data-[collapsible=icon]:!size-8',\n 'group-data-[collapsible=icon]:!p-2',\n // Truncate last span\n '[&>span:last-child]:truncate',\n // SVG sizing\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n ].join(' '),\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline: [\n 'bg-background',\n 'shadow-[0_0_0_1px_hsl(var(--sidebar-border))]',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n ].join(' '),\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\n/**\n * Sidebar menu action variants\n */\nexport const sidebarMenuActionVariants = cva(\n [\n 'absolute',\n 'right-1',\n 'top-1.5',\n 'flex',\n 'aspect-square',\n 'w-5',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'text-sidebar-foreground',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-transform',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // After pseudo element for larger touch target\n 'after:absolute',\n 'after:-inset-2',\n 'after:md:hidden',\n // Hidden in icon mode\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n {\n variants: {\n showOnHover: {\n true: [\n 'group-focus-within/menu-item:opacity-100',\n 'group-hover/menu-item:opacity-100',\n 'data-[state=open]:opacity-100',\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'md:opacity-0',\n ].join(' '),\n false: '',\n },\n },\n defaultVariants: {\n showOnHover: false,\n },\n },\n);\n\n/**\n * Sidebar menu badge variants\n */\nexport const sidebarMenuBadgeVariants = cva(\n [\n 'pointer-events-none',\n 'absolute',\n 'right-1',\n 'top-1/2',\n '-translate-y-1/2',\n 'flex',\n 'h-5',\n 'min-w-5',\n 'select-none',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'px-1',\n 'text-xs',\n 'font-medium',\n 'tabular-nums',\n 'text-sidebar-foreground',\n 'transition-colors',\n 'duration-150',\n // Peer adjustments (when button is hovered)\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n // Hidden in icon mode\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar menu skeleton variants\n */\nexport const sidebarMenuSkeletonVariants = cva(\n ['flex', 'h-8', 'items-center', 'gap-2', 'rounded-md', 'px-2'].join(' '),\n {\n variants: {\n showIcon: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n showIcon: false,\n },\n },\n);\n\n/**\n * Sidebar menu sub (submenu container)\n */\nexport const sidebarMenuSubVariants = cva(\n [\n 'mx-3.5',\n 'flex',\n 'min-w-0',\n 'translate-x-px',\n 'flex-col',\n 'gap-1',\n 'border-l',\n 'border-sidebar-border',\n 'px-2.5',\n 'py-0.5',\n // Hidden in icon mode\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar menu sub item variants\n */\nexport const sidebarMenuSubItemVariants = cva(\n ['group/menu-sub-item', 'relative'].join(' '),\n);\n\n/**\n * Sidebar menu sub button variants\n */\nexport const sidebarMenuSubButtonVariants = cva(\n [\n 'flex',\n 'h-7',\n 'w-full',\n 'min-w-0',\n 'items-center',\n 'gap-2',\n '-translate-x-px',\n 'overflow-hidden',\n 'rounded-md',\n 'px-2',\n 'text-sidebar-foreground',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-[background-color,color]',\n 'duration-150',\n // Cursor\n 'cursor-pointer',\n // Hover\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n // Focus\n 'focus-visible:ring-2',\n // Active (pressed)\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n // Disabled\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n // aria-disabled\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n // Truncate\n '[&>span:last-child]:truncate',\n // SVG\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:text-sidebar-accent-foreground',\n // data-active (selected state)\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-accent-foreground',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Sidebar separator variants\n */\nexport const sidebarSeparatorVariants = cva(\n ['mx-2', 'w-auto', 'bg-sidebar-border'].join(' '),\n);\n\n/**\n * Sidebar trigger button variants\n */\nexport const sidebarTriggerVariants = cva(['h-7', 'w-7'].join(' '));\n\n/**\n * Sidebar rail variants (hover area to expand)\n */\nexport const sidebarRailVariants = cva(\n [\n 'absolute',\n 'inset-y-0',\n 'z-20',\n 'hidden',\n 'w-4',\n '-translate-x-1/2',\n 'transition-all',\n 'ease-linear',\n 'after:absolute',\n 'after:inset-y-0',\n 'after:left-1/2',\n 'after:w-[2px]',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:right-0',\n 'group-data-[side=right]:left-0',\n 'sm:flex',\n // Cursor changes when collapsible\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize',\n '[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n '[[data-side=left][data-state=expanded]_&]:cursor-w-resize',\n '[[data-side=right][data-state=expanded]_&]:cursor-e-resize',\n // On hover expand collapsed\n '[[data-side=left]_&]:hover:after:left-full',\n '[[data-side=right]_&]:hover:after:right-full',\n 'group-data-[collapsible=offcanvas]:translate-x-0',\n 'group-data-[collapsible=offcanvas]:after:left-full',\n 'group-data-[collapsible=offcanvas]:hover:bg-sidebar',\n ].join(' '),\n);\n\n/**\n * Sidebar inset variants (main content area)\n */\nexport const sidebarInsetVariants = cva(\n [\n 'relative',\n 'flex',\n 'min-h-svh',\n 'flex-1',\n 'flex-col',\n 'bg-background',\n // When peer sidebar is inset variant\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))]',\n 'md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2',\n 'md:peer-data-[variant=inset]:m-2',\n 'md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl',\n 'md:peer-data-[variant=inset]:shadow',\n ].join(' '),\n);\n\n/**\n * Sidebar chevron icon variants\n */\nexport const sidebarChevronVariants = cva(\n ['ml-auto', 'transition-transform', 'duration-200'].join(' '),\n {\n variants: {\n open: {\n true: 'rotate-90',\n false: '',\n },\n },\n defaultVariants: {\n open: false,\n },\n },\n);\n\n// Re-export for backwards compatibility\nexport { sidebarMenuButtonVariants as sidebarMenuButtonTextVariants };\n","import {\n Component,\n input,\n output,\n computed,\n effect,\n OnInit,\n OnDestroy,\n PLATFORM_ID,\n inject,\n HostListener,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { clsx } from 'clsx';\nimport {\n SidebarService,\n SidebarState,\n SidebarSide,\n SidebarVariant,\n SidebarCollapsible,\n} from './sidebar.service';\nimport { sidebarProviderVariants } from './side-navbar.variants';\n\n/**\n * SidebarProvider Component - Following shadcn/ui pattern\n *\n * Wraps the sidebar and provides context for state management.\n * Must wrap both Sidebar and SidebarInset components.\n *\n * @example\n * ```html\n * <bsg-sidebar-provider [defaultOpen]=\"true\">\n * <bsg-sidebar>\n * <!-- sidebar content -->\n * </bsg-sidebar>\n * <bsg-sidebar-inset>\n * <!-- main content -->\n * </bsg-sidebar-inset>\n * </bsg-sidebar-provider>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-provider',\n standalone: true,\n providers: [SidebarService],\n template: `\n <div\n [style]=\"providerStyles()\"\n [class]=\"providerClasses()\"\n [attr.data-state]=\"sidebarService.state()\"\n [attr.data-collapsible]=\"\n sidebarService.state() === 'collapsed'\n ? sidebarService.collapsible()\n : ''\n \"\n >\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarProviderComponent implements OnInit, OnDestroy {\n protected readonly sidebarService = inject(SidebarService);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Default open state */\n readonly defaultOpen = input<boolean>(true);\n\n /** Open state (controlled mode) */\n readonly open = input<boolean | undefined>(undefined);\n\n /** Emits when open state changes */\n readonly openChange = output<boolean>();\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Custom styles */\n readonly style = input<Record<string, string>>();\n\n private mediaQueryList: MediaQueryList | null = null;\n\n // Computed classes\n readonly providerClasses = computed(() =>\n clsx(sidebarProviderVariants(), this.className()),\n );\n\n // Computed styles\n readonly providerStyles = computed(() => {\n const baseStyles = {\n '--sidebar-width': this.sidebarService.SIDEBAR_WIDTH,\n '--sidebar-width-icon': this.sidebarService.SIDEBAR_WIDTH_ICON,\n };\n return { ...baseStyles, ...this.style() };\n });\n\n constructor() {\n // Effect to sync controlled open state\n effect(() => {\n const controlledOpen = this.open();\n if (controlledOpen !== undefined) {\n this.sidebarService.setOpen(controlledOpen);\n }\n });\n\n // Effect to emit changes\n effect(() => {\n this.openChange.emit(this.sidebarService.open());\n });\n }\n\n ngOnInit(): void {\n // Initialize service\n this.sidebarService.configure({\n defaultOpen: this.defaultOpen(),\n });\n\n // Try to restore from storage\n this.sidebarService.initializeFromStorage();\n\n // Set up mobile detection\n if (isPlatformBrowser(this.platformId)) {\n this.setupMobileDetection();\n }\n }\n\n ngOnDestroy(): void {\n if (this.mediaQueryList) {\n this.mediaQueryList.removeEventListener('change', this.handleMediaChange);\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (\n event.key === this.sidebarService.SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n this.sidebarService.toggle();\n }\n }\n\n private setupMobileDetection(): void {\n this.mediaQueryList = window.matchMedia('(max-width: 768px)');\n this.sidebarService.setIsMobile(this.mediaQueryList.matches);\n this.mediaQueryList.addEventListener('change', this.handleMediaChange);\n }\n\n private handleMediaChange = (event: MediaQueryListEvent): void => {\n this.sidebarService.setIsMobile(event.matches);\n };\n}\n","import { Component, input, computed, inject } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport {\n SidebarService,\n SidebarSide,\n SidebarVariant,\n SidebarCollapsible,\n} from './sidebar.service';\nimport {\n sidebarVariants,\n sidebarWrapperVariants,\n} from './side-navbar.variants';\n\nexport type SidebarVariantsProps = VariantProps<typeof sidebarVariants>;\n\n/**\n * Sidebar Component - Following shadcn/ui pattern\n *\n * The main sidebar container component that handles the visual structure.\n * Must be used inside a SidebarProvider.\n *\n * @example\n * ```html\n * <bsg-sidebar-provider>\n * <bsg-sidebar side=\"left\" variant=\"sidebar\" collapsible=\"icon\">\n * <bsg-sidebar-header>\n * <!-- header content -->\n * </bsg-sidebar-header>\n * <bsg-sidebar-content>\n * <!-- main sidebar content -->\n * </bsg-sidebar-content>\n * <bsg-sidebar-footer>\n * <!-- footer content -->\n * </bsg-sidebar-footer>\n * </bsg-sidebar>\n * </bsg-sidebar-provider>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar',\n standalone: true,\n template: `\n <div\n [class]=\"wrapperClasses()\"\n [attr.data-state]=\"sidebarService.state()\"\n [attr.data-collapsible]=\"\n sidebarService.state() === 'collapsed' ? collapsible() : ''\n \"\n [attr.data-variant]=\"variant()\"\n [attr.data-side]=\"side()\"\n >\n <div [class]=\"sidebarClasses()\" data-sidebar=\"sidebar\">\n <ng-content />\n </div>\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarComponent {\n protected readonly sidebarService = inject(SidebarService);\n\n /** Which side the sidebar is on */\n readonly side = input<SidebarSide>('left');\n\n /** Visual variant */\n readonly variant = input<SidebarVariant>('sidebar');\n\n /** Collapsible behavior */\n readonly collapsible = input<SidebarCollapsible>('icon');\n\n /** Additional CSS classes for wrapper */\n readonly className = input<string>();\n\n /** Additional CSS classes for inner sidebar */\n readonly sidebarClassName = input<string>();\n\n // Computed classes for wrapper\n readonly wrapperClasses = computed(() =>\n clsx(\n sidebarWrapperVariants({\n side: this.side(),\n }),\n this.className(),\n ),\n );\n\n // Computed classes for sidebar\n readonly sidebarClasses = computed(() =>\n clsx(\n sidebarVariants({\n collapsible: this.collapsible(),\n side: this.side(),\n variant: this.variant(),\n }),\n this.sidebarClassName(),\n ),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarHeaderVariants } from './side-navbar.variants';\n\n/**\n * SidebarHeader Component - Following shadcn/ui pattern\n *\n * Container for header content in the sidebar (logo, branding, etc.)\n *\n * @example\n * ```html\n * <bsg-sidebar-header>\n * <div class=\"flex items-center gap-2\">\n * <img src=\"logo.svg\" alt=\"Logo\" />\n * <span>My App</span>\n * </div>\n * </bsg-sidebar-header>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-header',\n standalone: true,\n template: `\n <div [class]=\"headerClasses()\" data-sidebar=\"header\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarHeaderComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly headerClasses = computed(() =>\n clsx(sidebarHeaderVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarContentVariants } from './side-navbar.variants';\n\n/**\n * SidebarContent Component - Following shadcn/ui pattern\n *\n * Scrollable container for the main sidebar content.\n *\n * @example\n * ```html\n * <bsg-sidebar-content>\n * <bsg-sidebar-group>\n * <!-- group content -->\n * </bsg-sidebar-group>\n * </bsg-sidebar-content>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-content',\n standalone: true,\n template: `\n <div [class]=\"contentClasses()\" data-sidebar=\"content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarContentComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly contentClasses = computed(() =>\n clsx(sidebarContentVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarFooterVariants } from './side-navbar.variants';\n\n/**\n * SidebarFooter Component - Following shadcn/ui pattern\n *\n * Container for footer content in the sidebar (user info, settings, etc.)\n *\n * @example\n * ```html\n * <bsg-sidebar-footer>\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>\n * <span>Settings</span>\n * </bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * </bsg-sidebar-footer>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-footer',\n standalone: true,\n template: `\n <div [class]=\"footerClasses()\" data-sidebar=\"footer\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarFooterComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly footerClasses = computed(() =>\n clsx(sidebarFooterVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroup Component - Following shadcn/ui pattern\n *\n * Groups related menu items together with an optional label.\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-content>\n * <bsg-sidebar-menu>\n * <!-- menu items -->\n * </bsg-sidebar-menu>\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group',\n standalone: true,\n template: `\n <div [class]=\"groupClasses()\" data-sidebar=\"group\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly groupClasses = computed(() =>\n clsx(sidebarGroupVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupLabelVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroupLabel Component - Following shadcn/ui pattern\n *\n * Label for a sidebar group. Automatically hides when sidebar is collapsed.\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-content>\n * <!-- content -->\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group-label',\n standalone: true,\n template: `\n <div [class]=\"labelClasses()\" data-sidebar=\"group-label\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupLabelComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly labelClasses = computed(() =>\n clsx(sidebarGroupLabelVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupContentVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroupContent Component - Following shadcn/ui pattern\n *\n * Container for the content within a sidebar group.\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-content>\n * <bsg-sidebar-menu>\n * <!-- menu items -->\n * </bsg-sidebar-menu>\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group-content',\n standalone: true,\n template: `\n <div [class]=\"contentClasses()\" data-sidebar=\"group-content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupContentComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly contentClasses = computed(() =>\n clsx(sidebarGroupContentVariants(), this.className()),\n );\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupActionVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroupAction Component - Following shadcn/ui pattern\n *\n * Action button positioned in the group header (e.g., \"Add\" button).\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-action title=\"Add Project\" (actionClick)=\"addProject()\">\n * <svg><!-- plus icon --></svg>\n * </bsg-sidebar-group-action>\n * <bsg-sidebar-group-content>\n * <!-- content -->\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group-action',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"actionClasses()\"\n [title]=\"title()\"\n data-sidebar=\"group-action\"\n (click)=\"actionClick.emit($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupActionComponent {\n /** Title/tooltip for the action button */\n readonly title = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when action is clicked */\n readonly actionClick = output<MouseEvent>();\n\n readonly actionClasses = computed(() =>\n clsx(sidebarGroupActionVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenu Component - Following shadcn/ui pattern\n *\n * Container for menu items. Renders as a ul element.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Home</bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Settings</bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu',\n standalone: true,\n template: `\n <ul [class]=\"menuClasses()\" data-sidebar=\"menu\">\n <ng-content />\n </ul>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly menuClasses = computed(() =>\n clsx(sidebarMenuVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuItemVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuItem Component - Following shadcn/ui pattern\n *\n * Container for a single menu item. Renders as an li element.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>\n * <svg><!-- icon --></svg>\n * <span>Home</span>\n * </bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-item',\n standalone: true,\n template: `\n <li [class]=\"itemClasses()\" data-sidebar=\"menu-item\">\n <ng-content />\n </li>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuItemComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly itemClasses = computed(() =>\n clsx(sidebarMenuItemVariants(), this.className()),\n );\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport { sidebarMenuButtonVariants } from './side-navbar.variants';\n\nexport type SidebarMenuButtonVariantsProps = VariantProps<\n typeof sidebarMenuButtonVariants\n>;\n\n/**\n * SidebarMenuButton Component - Following shadcn/ui pattern\n *\n * Interactive button for menu items. Supports variants for size and style.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-button\n * [isActive]=\"true\"\n * variant=\"default\"\n * size=\"default\"\n * (buttonClick)=\"navigate()\"\n * >\n * <svg><!-- icon --></svg>\n * <span>Home</span>\n * </bsg-sidebar-menu-button>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [attr.data-sidebar]=\"'menu-button'\"\n [attr.data-size]=\"size()\"\n [attr.data-active]=\"isActive()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuButtonComponent {\n /** Whether the button is active */\n readonly isActive = input<boolean>(false);\n\n /** Visual variant */\n readonly variant = input<'default' | 'outline'>('default');\n\n /** Size variant */\n readonly size = input<'default' | 'sm' | 'lg'>('default');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Tooltip text (for collapsed state) */\n readonly tooltip = input<string>();\n\n /** Emits when button is clicked */\n readonly buttonClick = output<MouseEvent>();\n\n readonly buttonClasses = computed(() =>\n clsx(\n sidebarMenuButtonVariants({\n variant: this.variant(),\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.buttonClick.emit(event);\n }\n }\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport { sidebarMenuActionVariants } from './side-navbar.variants';\n\nexport type SidebarMenuActionVariantsProps = VariantProps<\n typeof sidebarMenuActionVariants\n>;\n\n/**\n * SidebarMenuAction Component - Following shadcn/ui pattern\n *\n * Action button that appears alongside menu items (e.g., more options).\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Project</bsg-sidebar-menu-button>\n * <bsg-sidebar-menu-action [showOnHover]=\"true\" (actionClick)=\"openMenu()\">\n * <svg><!-- more icon --></svg>\n * </bsg-sidebar-menu-action>\n * </bsg-sidebar-menu-item>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-action',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"actionClasses()\"\n data-sidebar=\"menu-action\"\n (click)=\"actionClick.emit($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuActionComponent {\n /** Show only on hover */\n readonly showOnHover = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when action is clicked */\n readonly actionClick = output<MouseEvent>();\n\n readonly actionClasses = computed(() =>\n clsx(\n sidebarMenuActionVariants({\n showOnHover: this.showOnHover(),\n }),\n this.className(),\n ),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuBadgeVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuBadge Component - Following shadcn/ui pattern\n *\n * Badge that appears alongside menu items (e.g., notification count).\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>\n * <svg><!-- icon --></svg>\n * <span>Inbox</span>\n * </bsg-sidebar-menu-button>\n * <bsg-sidebar-menu-badge>5</bsg-sidebar-menu-badge>\n * </bsg-sidebar-menu-item>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-badge',\n standalone: true,\n template: `\n <div [class]=\"badgeClasses()\" data-sidebar=\"menu-badge\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuBadgeComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly badgeClasses = computed(() =>\n clsx(sidebarMenuBadgeVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuSubVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuSub Component - Following shadcn/ui pattern\n *\n * Container for submenu items. Used for nested navigation.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Parent</bsg-sidebar-menu-button>\n * <bsg-sidebar-menu-sub>\n * <bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-button>Child 1</bsg-sidebar-menu-sub-button>\n * </bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-button>Child 2</bsg-sidebar-menu-sub-button>\n * </bsg-sidebar-menu-sub-item>\n * </bsg-sidebar-menu-sub>\n * </bsg-sidebar-menu-item>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-sub',\n standalone: true,\n template: `\n <ul [class]=\"subMenuClasses()\" data-sidebar=\"menu-sub\">\n <ng-content />\n </ul>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuSubComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly subMenuClasses = computed(() =>\n clsx(sidebarMenuSubVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuSubItemVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuSubItem Component - Following shadcn/ui pattern\n *\n * Container for a single submenu item. Renders as an li element.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-sub>\n * <bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-button>\n * <span>Child Item</span>\n * </bsg-sidebar-menu-sub-button>\n * </bsg-sidebar-menu-sub-item>\n * </bsg-sidebar-menu-sub>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-sub-item',\n standalone: true,\n template: `\n <li [class]=\"itemClasses()\" data-sidebar=\"menu-sub-item\">\n <ng-content />\n </li>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuSubItemComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly itemClasses = computed(() =>\n clsx(sidebarMenuSubItemVariants(), this.className()),\n );\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport { sidebarMenuSubButtonVariants } from './side-navbar.variants';\n\nexport type SidebarMenuSubButtonVariantsProps = VariantProps<\n typeof sidebarMenuSubButtonVariants\n>;\n\n/**\n * SidebarMenuSubButton Component - Following shadcn/ui pattern\n *\n * Interactive button for submenu items.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-sub-button\n * [isActive]=\"true\"\n * size=\"md\"\n * (buttonClick)=\"navigate()\"\n * >\n * <span>Child Item</span>\n * </bsg-sidebar-menu-sub-button>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-sub-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n data-sidebar=\"menu-sub-button\"\n [attr.data-active]=\"isActive()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuSubButtonComponent {\n /** Whether the button is active */\n readonly isActive = input<boolean>(false);\n\n /** Size variant */\n readonly size = input<'sm' | 'md'>('md');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when button is clicked */\n readonly buttonClick = output<MouseEvent>();\n\n readonly buttonClasses = computed(() =>\n clsx(\n sidebarMenuSubButtonVariants({\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.buttonClick.emit(event);\n }\n }\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarSeparatorVariants } from './side-navbar.variants';\n\n/**\n * SidebarSeparator Component - Following shadcn/ui pattern\n *\n * Visual separator between menu items or groups.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>...</bsg-sidebar-menu-item>\n * <bsg-sidebar-separator />\n * <bsg-sidebar-menu-item>...</bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-separator',\n standalone: true,\n template: ` <hr [class]=\"separatorClasses()\" data-sidebar=\"separator\" /> `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarSeparatorComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly separatorClasses = computed(() =>\n clsx(sidebarSeparatorVariants(), this.className()),\n );\n}\n","import { Component, input, computed, inject } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { SidebarService } from './sidebar.service';\nimport { sidebarTriggerVariants } from './side-navbar.variants';\n\n/**\n * SidebarTrigger Component - Following shadcn/ui pattern\n *\n * Button to toggle the sidebar open/closed state.\n *\n * @example\n * ```html\n * <header>\n * <bsg-sidebar-trigger />\n * <h1>My App</h1>\n * </header>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-trigger',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n data-sidebar=\"trigger\"\n (click)=\"toggle()\"\n [attr.aria-label]=\"\n sidebarService.open() ? 'Close sidebar' : 'Open sidebar'\n \"\n [attr.aria-expanded]=\"sidebarService.open()\"\n >\n @if (hasContent) {\n <ng-content />\n } @else {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-4\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </svg>\n }\n <span class=\"sr-only\">Toggle Sidebar</span>\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n `,\n})\nexport class SidebarTriggerComponent {\n protected readonly sidebarService = inject(SidebarService);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Whether the trigger has projected content */\n hasContent = false;\n\n readonly triggerClasses = computed(() =>\n clsx(\n sidebarTriggerVariants(),\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium',\n 'ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'hover:bg-accent hover:text-accent-foreground',\n this.className(),\n ),\n );\n\n toggle(): void {\n this.sidebarService.toggle();\n }\n}\n","import { Component, input, computed, inject } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { SidebarService } from './sidebar.service';\nimport { sidebarRailVariants } from './side-navbar.variants';\n\n/**\n * SidebarRail Component - Following shadcn/ui pattern\n *\n * Hover/click area on the edge of the sidebar to toggle collapse.\n *\n * @example\n * ```html\n * <bsg-sidebar>\n * <bsg-sidebar-content>...</bsg-sidebar-content>\n * <bsg-sidebar-rail />\n * </bsg-sidebar>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-rail',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"railClasses()\"\n data-sidebar=\"rail\"\n [attr.aria-label]=\"'Toggle Sidebar'\"\n [attr.tabindex]=\"-1\"\n (click)=\"toggle()\"\n ></button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarRailComponent {\n protected readonly sidebarService = inject(SidebarService);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly railClasses = computed(() =>\n clsx(sidebarRailVariants(), this.className()),\n );\n\n toggle(): void {\n this.sidebarService.toggle();\n }\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarInsetVariants } from './side-navbar.variants';\n\n/**\n * SidebarInset Component - Following shadcn/ui pattern\n *\n * Main content area that sits alongside the sidebar.\n * Adjusts its margins based on sidebar state.\n *\n * @example\n * ```html\n * <bsg-sidebar-provider>\n * <bsg-sidebar>...</bsg-sidebar>\n * <bsg-sidebar-inset>\n * <header>\n * <bsg-sidebar-trigger />\n * </header>\n * <main>\n * <!-- page content -->\n * </main>\n * </bsg-sidebar-inset>\n * </bsg-sidebar-provider>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-inset',\n standalone: true,\n template: `\n <main [class]=\"insetClasses()\">\n <ng-content />\n </main>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarInsetComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly insetClasses = computed(() =>\n clsx(sidebarInsetVariants(), this.className()),\n );\n}\n","// Service exports\nexport {\n SidebarService,\n type SidebarState,\n type SidebarSide,\n type SidebarVariant,\n type SidebarCollapsible,\n} from './sidebar.service';\n\n// Component exports - Following shadcn/ui modular pattern\nexport { SidebarProviderComponent } from './sidebar-provider.component';\nexport { SidebarComponent } from './sidebar.component';\nexport { SidebarHeaderComponent } from './sidebar-header.component';\nexport { SidebarContentComponent } from './sidebar-content.component';\nexport { SidebarFooterComponent } from './sidebar-footer.component';\nexport { SidebarGroupComponent } from './sidebar-group.component';\nexport { SidebarGroupLabelComponent } from './sidebar-group-label.component';\nexport { SidebarGroupContentComponent } from './sidebar-group-content.component';\nexport { SidebarGroupActionComponent } from './sidebar-group-action.component';\nexport { SidebarMenuComponent } from './sidebar-menu.component';\nexport { SidebarMenuItemComponent } from './sidebar-menu-item.component';\nexport {\n SidebarMenuButtonComponent,\n type SidebarMenuButtonVariantsProps,\n} from './sidebar-menu-button.component';\nexport {\n SidebarMenuActionComponent,\n type SidebarMenuActionVariantsProps,\n} from './sidebar-menu-action.component';\nexport { SidebarMenuBadgeComponent } from './sidebar-menu-badge.component';\nexport { SidebarMenuSubComponent } from './sidebar-menu-sub.component';\nexport { SidebarMenuSubItemComponent } from './sidebar-menu-sub-item.component';\nexport {\n SidebarMenuSubButtonComponent,\n type SidebarMenuSubButtonVariantsProps,\n} from './sidebar-menu-sub-button.component';\nexport { SidebarSeparatorComponent } from './sidebar-separator.component';\nexport { SidebarTriggerComponent } from './sidebar-trigger.component';\nexport { SidebarRailComponent } from './sidebar-rail.component';\nexport { SidebarInsetComponent } from './sidebar-inset.component';\n\n// Variant exports (following shadcn pattern)\nexport {\n sidebarProviderVariants,\n sidebarVariants,\n sidebarWrapperVariants,\n sidebarHeaderVariants,\n sidebarContentVariants,\n sidebarFooterVariants,\n sidebarGroupVariants,\n sidebarGroupLabelVariants,\n sidebarGroupActionVariants,\n sidebarGroupContentVariants,\n sidebarMenuVariants,\n sidebarMenuItemVariants,\n sidebarMenuButtonVariants,\n sidebarMenuActionVariants,\n sidebarMenuBadgeVariants,\n sidebarMenuSkeletonVariants,\n sidebarMenuSubVariants,\n sidebarMenuSubItemVariants,\n sidebarMenuSubButtonVariants,\n sidebarSeparatorVariants,\n sidebarTriggerVariants,\n sidebarRailVariants,\n sidebarInsetVariants,\n sidebarChevronVariants,\n} from './side-navbar.variants';\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Skeleton variants\n */\nexport const skeletonVariants = cva(\n clsx(\n // Base (semantic token for skeleton background)\n 'block bg-muted border-none shrink-0',\n // Animation\n 'animate-pulse',\n // Non-interactive\n 'pointer-events-none select-none',\n ),\n {\n variants: {\n type: {\n text: 'rounded w-full h-3.5',\n circular: 'rounded-full w-10 h-10 aspect-square shrink-0',\n rectangular: 'rounded-lg w-full h-[100px]',\n },\n },\n defaultVariants: {\n type: 'rectangular',\n },\n },\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { skeletonVariants } from './skeleton.variants';\n\nexport type SkeletonType = 'text' | 'circular' | 'rectangular';\nexport type SkeletonVariantsProps = VariantProps<typeof skeletonVariants>;\n\n@Component({\n selector: 'bsg-skeleton',\n standalone: true,\n template: `\n <div\n [class]=\"skeletonClasses()\"\n [style.width]=\"computedWidth()\"\n [style.height]=\"computedHeight()\"\n role=\"presentation\"\n aria-busy=\"true\"\n aria-label=\"Loading placeholder\"\n ></div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class SkeletonComponent {\n /** Skeleton type */\n readonly type = input<SkeletonType>('rectangular');\n\n /** Width (auto, px, %, rem, etc.) */\n readonly width = input<string | number>('auto');\n\n /** Height (auto, px, %, rem, etc.) */\n readonly height = input<string | number>('auto');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed skeleton classes */\n readonly skeletonClasses = computed(() =>\n clsx(skeletonVariants({ type: this.type() }), this.className()),\n );\n\n /** Computed width */\n readonly computedWidth = computed(() => {\n const w = this.width();\n if (w === 'auto') return undefined;\n if (typeof w === 'number') return `${w}px`;\n return w;\n });\n\n /** Computed height */\n readonly computedHeight = computed(() => {\n const h = this.height();\n if (h === 'auto') return undefined;\n if (typeof h === 'number') return `${h}px`;\n return h;\n });\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Spinner variants\n *\n * Controls the spinner appearance including size and color variants.\n * Based on shadcn/ui spinner pattern.\n */\nexport const spinnerVariants = cva(\n clsx(\n // Base animation\n 'animate-spin',\n // Accessibility\n 'shrink-0',\n ),\n {\n variants: {\n /**\n * Size variants\n * Following shadcn/ui pattern: size-3, size-4 (default), size-6, size-8\n */\n size: {\n xs: 'size-3',\n sm: 'size-4',\n md: 'size-6',\n lg: 'size-8',\n xl: 'size-10',\n },\n /**\n * Color variants using design tokens\n */\n variant: {\n default: 'text-foreground',\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n muted: 'text-muted-foreground',\n destructive: 'text-destructive',\n success: 'text-success',\n warning: 'text-warning',\n info: 'text-info',\n brand: 'text-brand',\n },\n },\n defaultVariants: {\n size: 'sm',\n variant: 'primary',\n },\n },\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { spinnerVariants } from './spinner.variants';\n\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SpinnerVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'muted'\n | 'destructive'\n | 'success'\n | 'warning'\n | 'info'\n | 'brand';\n\nexport type SpinnerVariantsProps = VariantProps<typeof spinnerVariants>;\n\n/**\n * Spinner Component\n *\n * A loading indicator that shows a spinning animation.\n * Based on shadcn/ui spinner pattern using an SVG loader icon.\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <bsg-spinner />\n *\n * <!-- With size -->\n * <bsg-spinner size=\"lg\" />\n *\n * <!-- With variant (color) -->\n * <bsg-spinner variant=\"destructive\" />\n *\n * <!-- Custom aria-label -->\n * <bsg-spinner ariaLabel=\"Processing request...\" />\n * ```\n */\n@Component({\n selector: 'bsg-spinner',\n standalone: true,\n template: `\n <svg\n [class]=\"spinnerClasses()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n role=\"status\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n `,\n})\nexport class SpinnerComponent {\n /** Spinner size */\n readonly size = input<SpinnerSize>('sm');\n\n /** Spinner color variant */\n readonly variant = input<SpinnerVariant>('primary');\n\n /** Accessibility label for screen readers */\n readonly ariaLabel = input<string>('Loading');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed spinner classes */\n readonly spinnerClasses = computed(() =>\n clsx(\n spinnerVariants({\n size: this.size(),\n variant: this.variant(),\n }),\n this.className(),\n ),\n );\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Switch root variants\n *\n * Based on shadcn/ui Switch component\n * Controls the main switch button/track element\n */\nexport const switchRootVariants = cva(\n clsx(\n // Layout\n 'inline-flex shrink-0 items-center',\n // Size (shadcn default)\n 'h-5 w-9',\n // Border & Shape\n 'rounded-full border border-transparent',\n // Shadow (semantic token)\n 'shadow-(--shadow-xs)',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus (semantic tokens)\n 'outline-none',\n 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n // Remove tap highlight on mobile\n '[&]:tap-highlight-transparent',\n ),\n {\n variants: {\n checked: {\n true: 'bg-primary',\n false: 'bg-input',\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: '',\n },\n size: {\n sm: 'h-4 w-7',\n default: 'h-5 w-9',\n lg: 'h-6 w-11',\n },\n },\n defaultVariants: {\n checked: false,\n disabled: false,\n size: 'default',\n },\n },\n);\n\n/**\n * Switch thumb variants\n *\n * Controls the circular toggle indicator\n */\nexport const switchThumbVariants = cva(\n clsx(\n // Layout\n 'pointer-events-none block rounded-full',\n // Background (semantic token)\n 'bg-background',\n // Shadow (semantic token)\n 'shadow-(--shadow-lg)',\n // Ring\n 'ring-0',\n // Transition\n 'transition-transform duration-200',\n ),\n {\n variants: {\n checked: {\n true: 'translate-x-full',\n false: 'translate-x-0',\n },\n size: {\n sm: 'size-3 data-[checked=true]:translate-x-5',\n default: 'size-4 data-[checked=true]:translate-x-4',\n lg: 'size-5 data-[checked=true]:translate-x-5',\n },\n },\n defaultVariants: {\n checked: false,\n size: 'default',\n },\n },\n);\n","import {\n Component,\n computed,\n input,\n output,\n model,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { switchRootVariants, switchThumbVariants } from './switch.variants';\n\nexport type SwitchSize = 'sm' | 'default' | 'lg';\n\nexport type SwitchVariantsProps = VariantProps<typeof switchRootVariants>;\n\n/**\n * Switch Component - Toggle control based on shadcn/ui\n *\n * A control that allows the user to toggle between checked and not checked.\n *\n * Usage:\n * ```html\n * <bsg-switch [(checked)]=\"isEnabled\" />\n * <bsg-switch [checked]=\"value\" (checkedChange)=\"onToggle($event)\" />\n * <bsg-switch [disabled]=\"true\" />\n * <bsg-switch size=\"lg\" />\n * ```\n */\n@Component({\n selector: 'bsg-switch',\n standalone: true,\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [class]=\"rootClasses()\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.data-state]=\"checked() ? 'checked' : 'unchecked'\"\n [attr.data-disabled]=\"disabled() || null\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown.space)=\"onKeydown($event)\"\n (keydown.enter)=\"onKeydown($event)\"\n >\n <span\n [class]=\"thumbClasses()\"\n [attr.data-state]=\"checked() ? 'checked' : 'unchecked'\"\n [attr.data-checked]=\"checked()\"\n ></span>\n </button>\n `,\n styles: `\n :host {\n display: inline-flex;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SwitchComponent {\n /** Whether the switch is in the checked (on) state - supports two-way binding */\n readonly checked = model<boolean>(false);\n\n /** Whether the switch is disabled and non-interactive */\n readonly disabled = input<boolean>(false);\n\n /** Size variant of the switch */\n readonly size = input<SwitchSize>('default');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Event emitted when the switch state changes */\n readonly checkedChange = output<boolean>();\n\n // Computed root classes\n readonly rootClasses = computed(() =>\n clsx(\n switchRootVariants({\n checked: this.checked(),\n disabled: this.disabled(),\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n // Computed thumb classes\n readonly thumbClasses = computed(() =>\n clsx(\n switchThumbVariants({\n checked: this.checked(),\n size: this.size(),\n }),\n ),\n );\n\n /** Toggle the switch state */\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.checkedChange.emit(newValue);\n }\n\n /** Handle keyboard events (space and enter) */\n onKeydown(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n if (this.disabled()) {\n return;\n }\n // Prevent default to avoid page scroll on space\n keyboardEvent.preventDefault();\n this.toggle();\n }\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\nimport { clsx } from 'clsx';\n\n/**\n * Tabs Root Component\n *\n * The root container for a set of tabs. Manages the active tab state.\n *\n * Usage:\n * ```html\n * <bsg-tabs [defaultValue]=\"0\" (valueChange)=\"onTabChange($event)\">\n * <bsg-tabs-list>\n * <bsg-tabs-trigger [value]=\"0\">Tab 1</bsg-tabs-trigger>\n * <bsg-tabs-trigger [value]=\"1\">Tab 2</bsg-tabs-trigger>\n * </bsg-tabs-list>\n * <bsg-tabs-content [value]=\"0\">Content 1</bsg-tabs-content>\n * <bsg-tabs-content [value]=\"1\">Content 2</bsg-tabs-content>\n * </bsg-tabs>\n * ```\n */\n@Component({\n selector: 'bsg-tabs',\n standalone: true,\n template: `\n <div [class]=\"computedClasses()\" data-orientation=\"horizontal\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TabsComponent {\n /** Default active tab value */\n readonly defaultValue = input<number | string>(0);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Controlled value (if you want to control the tab from outside) */\n readonly value = input<number | string | null>(null);\n\n /** Event emitted when tab changes */\n readonly valueChange = output<number | string>();\n\n // Internal state for active tab\n private readonly _internalValue = signal<number | string | null>(null);\n\n // Computed active value (uses controlled value if set, otherwise internal state, otherwise default)\n readonly activeValue = computed(() => {\n const controlled = this.value();\n if (controlled !== null) return controlled;\n\n const internal = this._internalValue();\n if (internal !== null) return internal;\n\n return this.defaultValue();\n });\n\n // Computed classes\n readonly computedClasses = computed(() => clsx(this.className()));\n\n /**\n * Set the active tab value\n */\n setValue(value: number | string): void {\n // Only update if it's not a controlled component\n if (this.value() === null) {\n this._internalValue.set(value);\n }\n this.valueChange.emit(value);\n }\n\n /**\n * Get the current active tab value\n */\n getValue(): number | string {\n return this.activeValue();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n// Type definitions\nexport type TabSize = 'sm' | 'md' | 'lg';\nexport type TabVariant = 'text' | 'icon-text';\nexport type TabLayout = 'default' | 'carousel';\nexport type TabColor =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\n/**\n * Tab Navigation container variants\n *\n * Controls the overall tab navigation container layout\n */\nexport const tabNavigationVariants = cva(\n clsx(\n // Layout\n 'flex',\n 'gap-2',\n 'items-start',\n ),\n {\n variants: {\n layout: {\n default: 'flex-wrap',\n carousel: clsx(\n 'overflow-x-auto',\n 'overflow-y-hidden',\n 'flex-nowrap',\n 'scroll-smooth',\n // Hide scrollbar - navigation is via buttons\n '[scrollbar-width:none]',\n '[&::-webkit-scrollbar]:hidden',\n ),\n },\n },\n defaultVariants: {\n layout: 'default',\n },\n },\n);\n\n/**\n * Tab Item variants\n *\n * Controls the individual tab button styles with size, variant, and color combinations\n */\nexport const tabItemVariants = cva(\n clsx(\n // Base layout\n 'flex',\n 'justify-center',\n 'items-center',\n 'rounded-lg',\n 'border-none',\n // Typography\n 'font-medium',\n 'text-sm',\n // Interaction\n 'cursor-pointer',\n 'transition-all',\n 'duration-200',\n // Box model\n 'box-border',\n 'relative',\n // Focus visible (semantic token)\n 'focus-visible:outline-2',\n 'focus-visible:outline-offset-2',\n 'focus-visible:outline-ring',\n ),\n {\n variants: {\n variant: {\n text: 'gap-2.5',\n 'icon-text': 'flex-col gap-0',\n },\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n color: {\n default: clsx(\n // Inactive state (semantic tokens)\n 'bg-primary/10',\n 'text-primary',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-primary',\n 'data-[active=true]:text-primary-foreground',\n ),\n info: clsx(\n // Inactive state (semantic tokens)\n 'bg-info/10',\n 'text-info',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-info',\n 'data-[active=true]:text-info-foreground',\n ),\n success: clsx(\n // Inactive state (semantic tokens)\n 'bg-success/10',\n 'text-success',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-success',\n 'data-[active=true]:text-success-foreground',\n ),\n warning: clsx(\n // Inactive state (semantic tokens)\n 'bg-warning/10',\n 'text-warning',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-warning',\n 'data-[active=true]:text-warning-foreground',\n ),\n destructive: clsx(\n // Inactive state (semantic tokens)\n 'bg-destructive/10',\n 'text-destructive',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-destructive',\n 'data-[active=true]:text-destructive-foreground',\n ),\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n compoundVariants: [\n // Size + Variant: text\n {\n variant: 'text',\n size: 'sm',\n class: 'px-4 py-2 min-h-[29px]',\n },\n {\n variant: 'text',\n size: 'md',\n class: 'px-6 py-3 min-h-[35px]',\n },\n {\n variant: 'text',\n size: 'lg',\n class: 'px-8 py-4 min-h-[43px]',\n },\n // Size + Variant: icon-text\n {\n variant: 'icon-text',\n size: 'sm',\n class: 'px-[18px] py-2 min-h-[80px] w-[168px]',\n },\n {\n variant: 'icon-text',\n size: 'md',\n class: 'px-[26px] py-[13px] min-h-[88px] w-[184px]',\n },\n {\n variant: 'icon-text',\n size: 'lg',\n class: 'px-[34px] py-[17px] min-h-[96px] w-[200px]',\n },\n ],\n defaultVariants: {\n variant: 'text',\n size: 'md',\n color: 'default',\n disabled: false,\n },\n },\n);\n\n/**\n * Tab Icon Circle variants\n *\n * Controls the circular icon container in icon-text variant\n */\nexport const tabIconCircleVariants = cva(\n clsx(\n // Size and shape\n 'size-8',\n 'rounded-full',\n // Layout\n 'flex',\n 'items-center',\n 'justify-center',\n 'shrink-0',\n // Transition\n 'transition-colors',\n 'duration-200',\n ),\n {\n variants: {\n color: {\n default:\n 'bg-primary/20 group-data-[active=true]:bg-primary-foreground/20',\n info: 'bg-info/20 group-data-[active=true]:bg-info-foreground/20',\n success:\n 'bg-success/20 group-data-[active=true]:bg-success-foreground/20',\n warning:\n 'bg-warning/20 group-data-[active=true]:bg-warning-foreground/20',\n destructive:\n 'bg-destructive/20 group-data-[active=true]:bg-destructive-foreground/20',\n },\n },\n defaultVariants: {\n color: 'default',\n },\n },\n);\n\n/**\n * Tab Icon Content variants\n *\n * Controls the icon + label container layout\n */\nexport const tabIconContentVariants = cva(\n clsx('flex', 'flex-col', 'items-center', 'justify-center', 'w-full'),\n);\n\n/**\n * Tab Label variants\n *\n * Controls the label text in icon-text variant\n */\nexport const tabLabelVariants = cva(\n clsx('text-xs', 'font-semibold', 'leading-normal', 'text-center', 'mt-1'),\n);\n\n/**\n * Tab Text Content variants\n *\n * Controls the text content in text variant\n */\nexport const tabTextContentVariants = cva(clsx('whitespace-nowrap'));\n","import {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n OnDestroy,\n signal,\n viewChild,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n type TabLayout,\n tabNavigationVariants,\n} from './tab-navigation.variants';\n\n/**\n * Tabs List Component\n *\n * Container for tab triggers. This is where you place your bsg-tabs-trigger components.\n *\n * Usage:\n * ```html\n * <bsg-tabs-list>\n * <bsg-tabs-trigger [value]=\"0\">Tab 1</bsg-tabs-trigger>\n * <bsg-tabs-trigger [value]=\"1\">Tab 2</bsg-tabs-trigger>\n * </bsg-tabs-list>\n * ```\n *\n * Carousel layout with navigation buttons:\n * ```html\n * <bsg-tabs-list layout=\"carousel\">\n * <bsg-tabs-trigger [value]=\"0\">Tab 1</bsg-tabs-trigger>\n * <bsg-tabs-trigger [value]=\"1\">Tab 2</bsg-tabs-trigger>\n * <!-- Many more tabs... -->\n * </bsg-tabs-list>\n * ```\n */\n@Component({\n selector: 'bsg-tabs-list',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <!-- Previous Button - Only shown in carousel mode -->\n @if (isCarousel()) {\n <button\n type=\"button\"\n class=\"carousel-nav-btn carousel-nav-btn--prev\"\n (click)=\"scrollLeft()\"\n [disabled]=\"!canScrollLeft()\"\n aria-label=\"Previous tabs\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n }\n\n <!-- Tabs Container -->\n <div\n #scrollContainer\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n aria-label=\"Tab navigation\"\n data-orientation=\"horizontal\"\n [class]=\"computedClasses()\"\n (scroll)=\"onScroll()\"\n >\n <ng-content />\n </div>\n\n <!-- Next Button - Only shown in carousel mode -->\n @if (isCarousel()) {\n <button\n type=\"button\"\n class=\"carousel-nav-btn carousel-nav-btn--next\"\n (click)=\"scrollRight()\"\n [disabled]=\"!canScrollRight()\"\n aria-label=\"Next tabs\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n }\n\n .carousel-nav-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: 1px solid hsl(var(--border));\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n }\n\n .carousel-nav-btn:hover:not(:disabled) {\n background-color: hsl(var(--accent));\n color: hsl(var(--accent-foreground));\n }\n\n .carousel-nav-btn:focus-visible {\n outline: 2px solid hsl(var(--ring));\n outline-offset: 2px;\n }\n\n .carousel-nav-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n `,\n})\nexport class TabsListComponent implements AfterViewInit, OnDestroy {\n /** Layout mode: default (wraps) or carousel (scrolls horizontally) */\n readonly layout = input<TabLayout>('default');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // ViewChild for scroll container\n readonly scrollContainer =\n viewChild<ElementRef<HTMLDivElement>>('scrollContainer');\n\n // Signals for button visibility\n readonly canScrollLeft = signal(false);\n readonly canScrollRight = signal(false);\n\n // ResizeObserver for detecting content changes\n private resizeObserver: ResizeObserver | null = null;\n\n constructor() {\n // Effect to check scroll position on layout change\n effect(() => {\n const isCarousel = this.layout() === 'carousel';\n if (isCarousel) {\n // Delay to ensure DOM is ready\n setTimeout(() => this.updateScrollButtons(), 100);\n }\n });\n }\n\n ngAfterViewInit(): void {\n // Initialize scroll buttons after view is ready\n this.setupResizeObserver();\n // Multiple checks to ensure content is rendered\n setTimeout(() => this.updateScrollButtons(), 0);\n setTimeout(() => this.updateScrollButtons(), 100);\n setTimeout(() => this.updateScrollButtons(), 500);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private setupResizeObserver(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (!container) return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateScrollButtons();\n });\n\n this.resizeObserver.observe(container);\n\n // Also observe children for content changes\n const children = container.children;\n for (let i = 0; i < children.length; i++) {\n this.resizeObserver.observe(children[i]);\n }\n }\n\n // Computed: is carousel mode\n readonly isCarousel = computed(() => this.layout() === 'carousel');\n\n // Container classes\n readonly containerClasses = computed(() =>\n clsx('relative', 'flex', 'items-center', this.isCarousel() ? 'gap-3' : ''),\n );\n\n // Computed classes using the existing tabNavigationVariants\n readonly computedClasses = computed(() =>\n clsx(\n tabNavigationVariants({\n layout: this.layout(),\n }),\n this.isCarousel() ? 'flex-1 min-w-0' : '',\n this.className(),\n ),\n );\n\n // Scroll left\n scrollLeft(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (container) {\n const scrollAmount = container.clientWidth * 0.8;\n container.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n }\n }\n\n // Scroll right\n scrollRight(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (container) {\n const scrollAmount = container.clientWidth * 0.8;\n container.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n }\n }\n\n // Handle scroll event\n onScroll(): void {\n this.updateScrollButtons();\n }\n\n // Update button visibility based on scroll position\n private updateScrollButtons(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (!container) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = container;\n\n // Can scroll left if not at start\n this.canScrollLeft.set(scrollLeft > 0);\n\n // Can scroll right if not at end (with small tolerance)\n this.canScrollRight.set(scrollLeft < scrollWidth - clientWidth - 1);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { TabsComponent } from './tabs.component';\nimport {\n tabIconCircleVariants,\n tabIconContentVariants,\n tabItemVariants,\n tabLabelVariants,\n tabTextContentVariants,\n type TabColor,\n type TabSize,\n type TabVariant,\n} from './tab-navigation.variants';\n\nexport type TabsTriggerVariantsProps = VariantProps<typeof tabItemVariants>;\n\n/**\n * Tabs Trigger Component\n *\n * A clickable tab that activates its associated content panel.\n *\n * Usage for text variant:\n * ```html\n * <bsg-tabs-trigger [value]=\"0\">\n * Tab Label\n * </bsg-tabs-trigger>\n * ```\n *\n * Usage for icon-text variant:\n * ```html\n * <bsg-tabs-trigger [value]=\"0\" variant=\"icon-text\">\n * <svg slot=\"icon\">...</svg>\n * <span slot=\"label\">Tab Label</span>\n * </bsg-tabs-trigger>\n * ```\n */\n@Component({\n selector: 'bsg-tabs-trigger',\n standalone: true,\n template: `\n <button\n type=\"button\"\n role=\"tab\"\n [class]=\"computedClasses()\"\n class=\"group\"\n [attr.aria-selected]=\"isActive()\"\n [attr.aria-controls]=\"'tabpanel-' + value()\"\n [attr.id]=\"'tab-' + value()\"\n [attr.data-state]=\"isActive() ? 'active' : 'inactive'\"\n [attr.data-active]=\"isActive()\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"isActive() ? 0 : -1\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick()\"\n >\n @if (variant() === 'icon-text') {\n <!-- Icon-text variant layout -->\n <div [class]=\"iconContentClasses()\">\n <div [class]=\"iconCircleClasses()\">\n <ng-content select=\"[slot='icon']\" />\n </div>\n <span [class]=\"labelClasses()\">\n <ng-content select=\"[slot='label']\" />\n </span>\n </div>\n } @else {\n <!-- Text variant layout -->\n <span [class]=\"textContentClasses()\">\n <ng-content />\n </span>\n }\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TabsTriggerComponent {\n // Inject parent tabs component\n private readonly tabs = inject(TabsComponent, { optional: true });\n\n /** The value that identifies this tab */\n readonly value = input.required<number | string>();\n\n /** Tab visual variant */\n readonly variant = input<TabVariant>('text');\n\n /** Tab size variant */\n readonly size = input<TabSize>('md');\n\n /** Tab color scheme */\n readonly color = input<TabColor>('default');\n\n /** Whether the tab is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Computed: is this tab active?\n readonly isActive = computed(() => {\n if (!this.tabs) return false;\n return this.tabs.activeValue() === this.value();\n });\n\n // Computed tab button classes\n readonly computedClasses = computed(() =>\n clsx(\n tabItemVariants({\n variant: this.variant(),\n size: this.size(),\n color: this.color(),\n disabled: this.disabled(),\n }),\n this.className(),\n ),\n );\n\n // Computed icon content classes\n readonly iconContentClasses = computed(() => clsx(tabIconContentVariants()));\n\n // Computed icon circle classes\n readonly iconCircleClasses = computed(() =>\n clsx(\n tabIconCircleVariants({\n color: this.color(),\n }),\n ),\n );\n\n // Computed label classes\n readonly labelClasses = computed(() => clsx(tabLabelVariants()));\n\n // Computed text content classes\n readonly textContentClasses = computed(() => clsx(tabTextContentVariants()));\n\n // Handle click\n handleClick(): void {\n if (!this.disabled() && this.tabs) {\n this.tabs.setValue(this.value());\n }\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { TabsComponent } from './tabs.component';\n\n/**\n * Tabs Content Component\n *\n * A container for tab panel content. Only displays when its value matches the active tab.\n *\n * Usage:\n * ```html\n * <bsg-tabs-content [value]=\"0\">\n * <p>Content for tab 0</p>\n * </bsg-tabs-content>\n * ```\n */\n@Component({\n selector: 'bsg-tabs-content',\n standalone: true,\n template: `\n @if (isActive()) {\n <div\n role=\"tabpanel\"\n [id]=\"'tabpanel-' + value()\"\n [attr.aria-labelledby]=\"'tab-' + value()\"\n [attr.data-state]=\"isActive() ? 'active' : 'inactive'\"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"0\"\n [class]=\"computedClasses()\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TabsContentComponent {\n // Inject parent tabs component\n private readonly tabs = inject(TabsComponent, { optional: true });\n\n /** The value that identifies which tab this content belongs to */\n readonly value = input.required<number | string>();\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Computed: is this content active?\n readonly isActive = computed(() => {\n if (!this.tabs) return false;\n return this.tabs.activeValue() === this.value();\n });\n\n // Computed classes with default mt-2\n readonly computedClasses = computed(() => clsx('mt-2', this.className()));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n computed,\n contentChildren,\n Directive,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n type TabColor,\n type TabSize,\n type TabVariant,\n tabIconCircleVariants,\n tabIconContentVariants,\n tabItemVariants,\n tabLabelVariants,\n tabNavigationVariants,\n tabTextContentVariants,\n} from './tab-navigation.variants';\n\n/**\n * Directive to mark content that should be projected into a specific tab panel\n *\n * Usage:\n * ```html\n * <bsg-tab-navigation [tabs]=\"tabs\">\n * <ng-template bsgTabContent>Content for tab 0</ng-template>\n * <ng-template bsgTabContent>Content for tab 1</ng-template>\n * </bsg-tab-navigation>\n * ```\n */\n@Directive({\n selector: '[bsgTabContent]',\n standalone: true,\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<unknown>) {}\n}\n\nexport interface TabItem {\n label: string;\n count?: number;\n icon?: boolean;\n}\n\nexport type TabItemVariantsProps = VariantProps<typeof tabItemVariants>;\n\n/**\n * Tab Navigation Component\n *\n * A tabbed navigation component with support for text and icon-text variants.\n * Follows the shadcn/ui tabs pattern with separated TabsList and TabsContent.\n *\n * Usage:\n * ```html\n * <bsg-tab-navigation\n * [tabs]=\"tabs\"\n * [variant]=\"'text'\"\n * [size]=\"'md'\"\n * [color]=\"'default'\"\n * [activeIndex]=\"0\"\n * (tabChange)=\"onTabChange($event)\"\n * >\n * <ng-template bsgTabContent>Content for first tab</ng-template>\n * <ng-template bsgTabContent>Content for second tab</ng-template>\n * </bsg-tab-navigation>\n * ```\n */\n@Component({\n selector: 'bsg-tab-navigation',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <!-- Tabs Root -->\n <div [class]=\"containerClasses()\" data-orientation=\"horizontal\">\n <!-- Tabs List -->\n <div\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n aria-label=\"Tab navigation\"\n data-orientation=\"horizontal\"\n [class]=\"tabsListClasses()\"\n >\n @for (tab of tabs(); track $index) {\n <!-- Tabs Trigger -->\n <button\n type=\"button\"\n role=\"tab\"\n [class]=\"getTabClasses($index)\"\n class=\"group\"\n [attr.aria-selected]=\"$index === internalActiveIndex()\"\n [attr.aria-controls]=\"'tabpanel-' + $index\"\n [attr.id]=\"'tab-' + $index\"\n [attr.data-state]=\"\n $index === internalActiveIndex() ? 'active' : 'inactive'\n \"\n [attr.data-active]=\"$index === internalActiveIndex()\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"$index === internalActiveIndex() ? 0 : -1\"\n [disabled]=\"disabled()\"\n (click)=\"handleTabClick($index)\"\n >\n @if (variant() === 'icon-text') {\n <div [class]=\"iconContentClasses()\">\n <div [class]=\"getIconCircleClasses()\">\n <svg\n class=\"block\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\n [attr.stroke]=\"getIconStroke($index)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n <span [class]=\"labelClasses()\">{{ tab.label }}</span>\n </div>\n } @else {\n <span [class]=\"textContentClasses()\">\n {{ tab.label }}\n @if (tab.count !== undefined) {\n ({{ tab.count }})\n }\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Tabs Content Panels -->\n @for (tab of tabs(); track $index) {\n <div\n role=\"tabpanel\"\n [id]=\"'tabpanel-' + $index\"\n [attr.aria-labelledby]=\"'tab-' + $index\"\n [attr.data-state]=\"\n $index === internalActiveIndex() ? 'active' : 'inactive'\n \"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"0\"\n [attr.hidden]=\"$index !== internalActiveIndex() ? true : null\"\n [class]=\"tabContentClasses()\"\n >\n @if ($index === internalActiveIndex() && tabContents()[$index]) {\n <ng-container *ngTemplateOutlet=\"tabContents()[$index].template\" />\n }\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TabNavigationComponent {\n /** Tab size variant */\n readonly size = input<TabSize>('md');\n\n /** Tab visual variant */\n readonly variant = input<TabVariant>('text');\n\n /** Tab color scheme */\n readonly color = input<TabColor>('default');\n\n /** Whether all tabs are disabled */\n readonly disabled = input<boolean>(false);\n\n /** List of tab items */\n readonly tabs = input<TabItem[]>([\n { label: 'Solicitudes Realizadas', count: 3 },\n { label: 'Información del cliente' },\n ]);\n\n /** Active tab index */\n readonly activeIndex = input<number>(0);\n\n /** Additional CSS classes for container */\n readonly className = input<string>();\n\n /** Tab change event */\n readonly tabChange = output<number>();\n\n /** Content children (tab content templates) */\n readonly tabContents = contentChildren(TabContentDirective);\n\n // Internal state for active tab\n private readonly _activeIndex = signal<number | null>(null);\n\n // Computed active index (uses internal state if set, otherwise input)\n readonly internalActiveIndex = computed(() => {\n const internal = this._activeIndex();\n return internal !== null ? internal : this.activeIndex();\n });\n\n // Computed container classes\n readonly containerClasses = computed(() => clsx(this.className()));\n\n // Computed tabs list classes\n readonly tabsListClasses = computed(() => clsx(tabNavigationVariants()));\n\n // Computed tab content classes\n readonly tabContentClasses = computed(() => clsx('mt-2'));\n\n // Computed icon content classes\n readonly iconContentClasses = computed(() => clsx(tabIconContentVariants()));\n\n // Computed label classes\n readonly labelClasses = computed(() => clsx(tabLabelVariants()));\n\n // Computed text content classes\n readonly textContentClasses = computed(() => clsx(tabTextContentVariants()));\n\n // Get tab button classes for a specific index\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getTabClasses(index: number): string {\n return clsx(\n tabItemVariants({\n variant: this.variant(),\n size: this.size(),\n color: this.color(),\n disabled: this.disabled(),\n }),\n );\n }\n\n // Get icon circle classes\n getIconCircleClasses(): string {\n return clsx(\n tabIconCircleVariants({\n color: this.color(),\n }),\n );\n }\n\n // Get icon stroke color based on active state (uses currentColor to inherit from parent)\n getIconStroke(_index: number): string {\n return 'currentColor';\n }\n\n // Handle tab click\n handleTabClick(index: number): void {\n if (!this.disabled() && index !== this.internalActiveIndex()) {\n this._activeIndex.set(index);\n this.tabChange.emit(index);\n }\n }\n}\n","// New composable components (shadcn/ui pattern)\nexport * from './tabs.component';\nexport * from './tabs-list.component';\nexport * from './tabs-trigger.component';\nexport * from './tabs-content.component';\n\n// Legacy monolithic component (deprecated, use new components above)\nexport * from './tab-navigation.component';\n\n// Variants and types\nexport * from './tab-navigation.variants';\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Table wrapper variants\n *\n * Container with subtle shadow for depth and rounded corners\n * for a modern, polished look\n */\nexport const tableWrapperVariants = cva(\n clsx(\n 'relative',\n 'w-full',\n 'overflow-auto',\n 'rounded-xl',\n 'border',\n 'border-slate-200',\n 'bg-white',\n // Subtle shadow for depth perception\n 'shadow-sm',\n // Smooth scrollbar for better UX\n 'scrollbar-thin',\n 'scrollbar-thumb-slate-300',\n 'scrollbar-track-transparent',\n ),\n);\n\n/**\n * Table variants\n *\n * Clean table with proper spacing and typography\n */\nexport const tableVariants = cva(\n clsx(\n 'w-full',\n 'caption-bottom',\n 'text-sm',\n 'border-collapse',\n 'border-spacing-0',\n 'font-sans',\n ),\n);\n\n/**\n * Table Header variants\n *\n * Distinct header with subtle background gradient\n * and clear visual separation from body\n */\nexport const tableHeaderVariants = cva(\n clsx(\n // Subtle gradient for visual interest\n 'bg-gradient-to-b',\n 'from-blue-50',\n 'to-blue-50/70',\n // Border for separation\n '[&_tr]:border-b',\n '[&_tr]:border-slate-200',\n // Sticky header for long tables\n 'sticky',\n 'top-0',\n 'z-10',\n // Backdrop blur for when scrolling\n 'backdrop-blur-sm',\n ),\n);\n\n/**\n * Table Body variants\n *\n * Clean body with alternating row colors option\n */\nexport const tableBodyVariants = cva(\n clsx(\n '[&_tr:last-child]:border-0',\n // Smooth transitions for row interactions\n '[&_tr]:transition-colors',\n '[&_tr]:duration-150',\n '[&_tr]:ease-in-out',\n ),\n);\n\n/**\n * Table Footer variants\n *\n * Distinct footer for totals and summaries\n */\nexport const tableFooterVariants = cva(\n clsx(\n 'bg-gradient-to-t',\n 'from-slate-50',\n 'to-slate-50/50',\n 'border-t-2',\n 'border-slate-200',\n 'font-semibold',\n '[&>tr]:last:border-b-0',\n ),\n);\n\n/**\n * Table Row variants\n *\n * Interactive rows with clear hover and selected states\n * Following UX best practices for discoverability\n */\nexport const tableRowVariants = cva(\n clsx(\n 'border-b',\n 'border-slate-100',\n // Smooth transition for hover effect\n 'transition-all',\n 'duration-150',\n 'ease-in-out',\n // Hover state - subtle but noticeable\n 'hover:bg-slate-50/80',\n // Selected state - clear visual feedback\n 'data-[state=selected]:bg-blue-50/60',\n 'data-[state=selected]:border-blue-100',\n // Focus within for keyboard navigation\n 'focus-within:bg-slate-50/50',\n // Cursor hint for clickable rows\n 'cursor-default',\n ),\n);\n\n/**\n * Table Head variants\n *\n * Clear, readable headers with proper hierarchy\n * Using semibold weight and blue accent for brand consistency\n */\nexport const tableHeadVariants = cva(\n clsx(\n // Vertical rhythm\n 'h-12',\n 'px-4',\n 'py-3',\n // Alignment\n 'text-left',\n 'align-middle',\n // Typography - clear hierarchy\n 'font-semibold',\n 'text-blue-700',\n 'text-xs',\n 'uppercase',\n 'tracking-wide',\n // Prevent text wrapping for cleaner look\n 'whitespace-nowrap',\n // Checkbox alignment\n '[&:has([role=checkbox])]:pr-0',\n // Sort indicator space\n '[&:has(button)]:pr-2',\n ),\n);\n\n/**\n * Table Cell variants\n *\n * Readable cells with proper spacing and alignment\n */\nexport const tableCellVariants = cva(\n clsx(\n // Generous padding for readability\n 'px-4',\n 'py-4',\n // Alignment\n 'align-middle',\n // Typography - optimized for scanning\n 'text-slate-600',\n 'text-sm',\n 'font-normal',\n // Line height for multi-line content\n 'leading-relaxed',\n // Checkbox alignment\n '[&:has([role=checkbox])]:pr-0',\n // First column emphasis\n '[&:first-child]:font-medium',\n '[&:first-child]:text-slate-900',\n ),\n);\n\n/**\n * Table Card Header variants\n *\n * Prominent header with semantic colors and clear hierarchy\n * Following UX principles for visual weight distribution\n */\nexport const tableCardHeaderVariants = cva(\n clsx(\n 'flex',\n 'items-center',\n 'gap-3',\n 'px-5',\n 'py-4',\n // Gradient for visual interest\n 'bg-gradient-to-r',\n // Rounded top corners\n 'rounded-t-xl',\n // Subtle bottom border\n 'border-b',\n ),\n {\n variants: {\n color: {\n default: clsx(\n 'from-slate-100',\n 'to-slate-50',\n 'border-slate-200/50',\n ),\n info: clsx('from-blue-100', 'to-blue-50', 'border-blue-200/50'),\n success: clsx(\n 'from-green-100',\n 'to-green-50',\n 'border-green-200/50',\n ),\n warning: clsx(\n 'from-amber-100',\n 'to-amber-50',\n 'border-amber-200/50',\n ),\n destructive: clsx('from-red-100', 'to-red-50', 'border-red-200/50'),\n },\n },\n defaultVariants: {\n color: 'info',\n },\n },\n);\n\n/**\n * Table Card Footer variants\n *\n * Clean footer area for pagination and actions\n */\nexport const tableCardFooterVariants = cva(\n clsx(\n 'flex',\n 'items-center',\n 'justify-between',\n 'gap-3',\n 'px-5',\n 'py-4',\n 'bg-slate-50/50',\n 'border-t',\n 'border-slate-200',\n 'rounded-b-xl',\n ),\n);\n\n/**\n * Table Pagination wrapper variants\n *\n * Clean pagination area with proper spacing\n */\nexport const tablePaginationVariants = cva(\n clsx('px-4', 'py-3', 'border-t', 'border-slate-100', 'bg-slate-50/30'),\n);\n\n/**\n * Table Empty State variants\n *\n * For when table has no data\n */\nexport const tableEmptyStateVariants = cva(\n clsx('py-12', 'px-4', 'text-center', 'text-slate-400', 'text-sm'),\n);\n\n/**\n * Table Loading State variants\n *\n * For skeleton loading states\n */\nexport const tableLoadingVariants = cva(\n clsx('animate-pulse', 'bg-slate-100', 'rounded'),\n);\n\n/**\n * Striped table modifier\n *\n * Apply to tbody for alternating row colors\n */\nexport const tableStripedVariants = cva(\n clsx('[&>tr:nth-child(even)]:bg-slate-50/50'),\n);\n\n/**\n * Compact table modifier\n *\n * Reduced padding for dense data\n */\nexport const tableCompactVariants = cva(\n clsx(\n '[&_th]:py-2',\n '[&_th]:px-3',\n '[&_td]:py-2',\n '[&_td]:px-3',\n '[&_th]:text-xs',\n '[&_td]:text-xs',\n ),\n);\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableVariants, tableWrapperVariants } from './table.variants';\n\n/**\n * Table Component\n *\n * A responsive table wrapper with semantic HTML table element.\n * Follows shadcn/ui table structure.\n *\n * Usage:\n * ```html\n * <bsg-table>\n * <bsg-table-caption>A list of your recent invoices.</bsg-table-caption>\n * <bsg-table-header>\n * <bsg-table-row>\n * <bsg-table-head>Invoice</bsg-table-head>\n * <bsg-table-head>Status</bsg-table-head>\n * </bsg-table-row>\n * </bsg-table-header>\n * <bsg-table-body>\n * <bsg-table-row>\n * <bsg-table-cell>INV001</bsg-table-cell>\n * <bsg-table-cell>Paid</bsg-table-cell>\n * </bsg-table-row>\n * </bsg-table-body>\n * </bsg-table>\n * ```\n */\n@Component({\n selector: 'bsg-table',\n standalone: true,\n template: `\n <div [class]=\"wrapperClasses()\">\n <table [class]=\"tableClasses()\">\n <ng-content />\n </table>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableComponent {\n /** Additional CSS classes for wrapper */\n readonly wrapperClassName = input<string>();\n\n /** Additional CSS classes for table */\n readonly className = input<string>();\n\n readonly wrapperClasses = computed(() =>\n clsx(tableWrapperVariants(), this.wrapperClassName()),\n );\n\n readonly tableClasses = computed(() =>\n clsx(tableVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableHeaderVariants } from './table.variants';\n\n/**\n * Table Header Component\n *\n * Wraps table header rows (thead element).\n *\n * Usage:\n * ```html\n * <bsg-table-header>\n * <bsg-table-row>\n * <bsg-table-head>Column 1</bsg-table-head>\n * <bsg-table-head>Column 2</bsg-table-head>\n * </bsg-table-row>\n * </bsg-table-header>\n * ```\n */\n@Component({\n selector: 'bsg-table-header',\n standalone: true,\n template: `\n <thead [class]=\"computedClasses()\">\n <ng-content />\n </thead>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableHeaderComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly computedClasses = computed(() =>\n clsx(tableHeaderVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableBodyVariants } from './table.variants';\n\n/**\n * Table Body Component\n *\n * Wraps table body rows (tbody element).\n *\n * Usage:\n * ```html\n * <bsg-table-body>\n * <bsg-table-row>\n * <bsg-table-cell>Cell 1</bsg-table-cell>\n * <bsg-table-cell>Cell 2</bsg-table-cell>\n * </bsg-table-row>\n * </bsg-table-body>\n * ```\n */\n@Component({\n selector: 'bsg-table-body',\n standalone: true,\n template: `\n <tbody [class]=\"computedClasses()\">\n <ng-content />\n </tbody>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableBodyComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly computedClasses = computed(() =>\n clsx(tableBodyVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableFooterVariants } from './table.variants';\n\n/**\n * Table Footer Component\n *\n * Wraps table footer rows (tfoot element).\n *\n * Usage:\n * ```html\n * <bsg-table-footer>\n * <bsg-table-row>\n * <bsg-table-cell colSpan=\"3\">Total</bsg-table-cell>\n * <bsg-table-cell>$2,500.00</bsg-table-cell>\n * </bsg-table-row>\n * </bsg-table-footer>\n * ```\n */\n@Component({\n selector: 'bsg-table-footer',\n standalone: true,\n template: `\n <tfoot [class]=\"computedClasses()\">\n <ng-content />\n </tfoot>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableFooterComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly computedClasses = computed(() =>\n clsx(tableFooterVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableRowVariants } from './table.variants';\n\n/**\n * Table Row Component\n *\n * A table row element (tr).\n *\n * Usage:\n * ```html\n * <bsg-table-row>\n * <bsg-table-cell>Cell 1</bsg-table-cell>\n * <bsg-table-cell>Cell 2</bsg-table-cell>\n * </bsg-table-row>\n * ```\n */\n@Component({\n selector: 'bsg-table-row',\n standalone: true,\n template: `\n <tr\n [class]=\"computedClasses()\"\n [attr.data-state]=\"selected() ? 'selected' : null\"\n >\n <ng-content />\n </tr>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableRowComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Whether the row is selected */\n readonly selected = input<boolean>(false);\n\n readonly computedClasses = computed(() =>\n clsx(tableRowVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableHeadVariants } from './table.variants';\n\n/**\n * Table Head Component\n *\n * A table header cell element (th).\n *\n * Usage:\n * ```html\n * <bsg-table-head>Column Name</bsg-table-head>\n * <bsg-table-head className=\"w-[100px]\">ID</bsg-table-head>\n * <bsg-table-head className=\"text-right\">Amount</bsg-table-head>\n * ```\n */\n@Component({\n selector: 'bsg-table-head',\n standalone: true,\n template: `\n <th\n [class]=\"computedClasses()\"\n [attr.colspan]=\"colSpan()\"\n [scope]=\"scope()\"\n >\n <ng-content />\n </th>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableHeadComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Column span */\n readonly colSpan = input<number>();\n\n /** Scope attribute for accessibility */\n readonly scope = input<'col' | 'row' | 'colgroup' | 'rowgroup'>('col');\n\n readonly computedClasses = computed(() =>\n clsx(tableHeadVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableCellVariants } from './table.variants';\n\n/**\n * Table Cell Component\n *\n * A table data cell element (td).\n *\n * Usage:\n * ```html\n * <bsg-table-cell>Cell content</bsg-table-cell>\n * <bsg-table-cell className=\"font-medium\">Bold content</bsg-table-cell>\n * <bsg-table-cell className=\"text-right\">$250.00</bsg-table-cell>\n * <bsg-table-cell [colSpan]=\"3\">Spanning cell</bsg-table-cell>\n * ```\n */\n@Component({\n selector: 'bsg-table-cell',\n standalone: true,\n template: `\n <td [class]=\"computedClasses()\" [attr.colspan]=\"colSpan()\">\n <ng-content />\n </td>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableCellComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Column span */\n readonly colSpan = input<number>();\n\n readonly computedClasses = computed(() =>\n clsx(tableCellVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\n\n/**\n * Table Card Component\n *\n * A wrapper that provides a polished card container for tables,\n * using content projection for header and footer sections.\n *\n * UX Considerations:\n * - Clear visual hierarchy with prominent header\n * - Consistent spacing and alignment\n * - Subtle shadows for depth without distraction\n * - Flexible composition with header/footer slots\n *\n * Usage:\n * ```html\n * <bsg-table-card>\n * <bsg-tableCard-header title=\"My Table Title\">\n * <button slot=\"action\">New Item</button>\n * </bsg-tableCard-header>\n *\n * <bsg-table>\n * ...\n * </bsg-table>\n *\n * <bsg-tableCard-footer>\n * <span>Showing 1-10 of 100</span>\n * </bsg-tableCard-footer>\n * </bsg-table-card>\n * ```\n */\n@Component({\n selector: 'bsg-table-card',\n standalone: true,\n template: `\n <div [class]=\"cardClasses()\">\n <!-- Header slot -->\n <ng-content select=\"bsg-tableCard-header\" />\n\n <!-- Content wrapper - removes nested borders/shadows -->\n <div\n class=\"[&>bsg-table]:rounded-none [&>bsg-table>div]:rounded-none [&>bsg-table>div]:border-0 [&>bsg-table>div]:shadow-none\"\n >\n <ng-content />\n </div>\n\n <!-- Footer slot -->\n <ng-content select=\"bsg-tableCard-footer\" />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableCardComponent {\n /** Additional CSS classes for the card container */\n readonly className = input<string>();\n\n readonly cardClasses = computed(() =>\n clsx(\n 'w-full',\n 'rounded-xl',\n 'border',\n 'border-slate-200',\n 'bg-white',\n 'shadow-sm',\n 'overflow-hidden',\n 'transition-shadow',\n 'duration-200',\n 'hover:shadow-md',\n this.className(),\n ),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableCardHeaderVariants } from './table.variants';\n\nexport type TableCardHeaderColor =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\n/**\n * Table Card Header Component\n *\n * Header section for table cards with content projection for icon and title.\n *\n * Usage:\n * ```html\n * <!-- Simple title -->\n * <bsg-tableCard-header>\n * <span>Titulo de la Tabla</span>\n * </bsg-tableCard-header>\n *\n * <!-- With icon and title -->\n * <bsg-tableCard-header color=\"info\">\n * <svg class=\"size-5\">...</svg>\n * <span>Titulo de la Tabla</span>\n * </bsg-tableCard-header>\n *\n * <!-- With icon, title and action -->\n * <bsg-tableCard-header color=\"success\">\n * <svg class=\"size-5\">...</svg>\n * <span>Titulo de la Tabla</span>\n * <button slot=\"action\">Nueva Accion</button>\n * </bsg-tableCard-header>\n * ```\n */\n@Component({\n selector: 'bsg-tableCard-header',\n standalone: true,\n template: `\n <div [class]=\"headerClasses()\">\n <!-- Content (icon + title) -->\n <div [class]=\"contentClasses()\">\n <ng-content />\n </div>\n\n <!-- Action slot -->\n <div class=\"ml-auto flex items-center gap-2\">\n <ng-content select=\"[slot='action']\" />\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableCardHeaderComponent {\n /** Semantic color variant */\n readonly color = input<TableCardHeaderColor>('info');\n\n /** Additional CSS classes for header */\n readonly className = input<string>();\n\n readonly headerClasses = computed(() =>\n clsx(tableCardHeaderVariants({ color: this.color() }), this.className()),\n );\n\n readonly contentClasses = computed(() => {\n const colorMap: Record<TableCardHeaderColor, string> = {\n default: 'text-slate-800',\n info: 'text-blue-800',\n success: 'text-green-800',\n warning: 'text-amber-800',\n destructive: 'text-red-800',\n };\n\n return clsx(\n 'flex',\n 'items-center',\n 'gap-3',\n 'flex-1',\n 'text-base',\n 'font-semibold',\n 'leading-tight',\n 'tracking-tight',\n colorMap[this.color()],\n );\n });\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableCardFooterVariants } from './table.variants';\n\n/**\n * Table Card Footer Component\n *\n * Footer section for table cards, typically used for pagination,\n * summary info, or action buttons.\n *\n * Usage:\n * ```html\n * <bsg-tableCard-footer>\n * <span>Showing 1-10 of 100</span>\n * <div>\n * <button>Previous</button>\n * <button>Next</button>\n * </div>\n * </bsg-tableCard-footer>\n * ```\n */\n@Component({\n selector: 'bsg-tableCard-footer',\n standalone: true,\n template: `\n <div [class]=\"footerClasses()\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableCardFooterComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly footerClasses = computed(() =>\n clsx(tableCardFooterVariants(), this.className()),\n );\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Pagination container variants\n *\n * Main wrapper for the pagination component\n */\nexport const paginationContainerVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-4',\n // Size\n 'h-[29px]',\n // Typography\n 'font-sans',\n // Responsive\n 'max-md:flex-wrap max-md:h-auto max-md:gap-3',\n ),\n);\n\n/**\n * Pagination section left variants\n *\n * Contains page number input\n */\nexport const paginationSectionLeftVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-2',\n ),\n);\n\n/**\n * Pagination section middle variants\n *\n * Contains page size selector\n */\nexport const paginationSectionMiddleVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-2.5',\n ),\n);\n\n/**\n * Pagination section right variants\n *\n * Contains range label and navigation controls\n */\nexport const paginationSectionRightVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-[17px]',\n // Positioning\n 'ml-auto',\n // Responsive\n 'max-md:ml-0 max-md:w-full max-md:justify-between',\n ),\n);\n\n/**\n * Pagination label variants\n *\n * Standard label text style\n */\nexport const paginationLabelVariants = cva(\n clsx(\n // Typography\n 'text-muted-foreground text-[13px] font-medium leading-normal tracking-[-0.26px]',\n ),\n);\n\n/**\n * Pagination range label variants\n *\n * Range display text (e.g., \"1 - 5 de 5 ítems\")\n */\nexport const paginationRangeLabelVariants = cva(\n clsx(\n // Typography\n 'text-muted-foreground text-[13px] font-medium leading-normal tracking-[-0.26px]',\n // Text behavior\n 'whitespace-nowrap',\n ),\n);\n\n/**\n * Pagination input variants\n *\n * Page number input field\n */\nexport const paginationInputVariants = cva(\n clsx(\n // Size\n 'w-[42px] h-[29px]',\n // Spacing\n 'px-2',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-muted-foreground font-sans text-[13px] font-medium leading-normal tracking-[-0.26px] text-center',\n // Focus\n 'outline-none',\n // Transitions\n 'transition-all duration-200',\n // Remove number input spinners\n '[appearance:textfield]',\n '[&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:appearance-none',\n // States\n 'hover:enabled:border-muted-foreground/30',\n 'focus:border-ring focus:ring-2 focus:ring-ring/30',\n 'disabled:bg-muted disabled:cursor-not-allowed disabled:opacity-50',\n ),\n);\n\n/**\n * Pagination select wrapper variants\n *\n * Wrapper for the select dropdown\n */\nexport const paginationSelectWrapperVariants = cva(\n clsx(\n // Position\n 'relative',\n // Display\n 'inline-block',\n ),\n);\n\n/**\n * Pagination select variants\n *\n * Page size select dropdown\n */\nexport const paginationSelectVariants = cva(\n clsx(\n // Size\n 'w-[47px] h-[29px]',\n // Spacing\n 'pl-2 pr-6',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-muted-foreground font-sans text-[13px] font-medium leading-normal tracking-[-0.26px]',\n // Focus\n 'outline-none',\n // Cursor\n 'cursor-pointer',\n // Appearance\n 'appearance-none',\n // Transitions\n 'transition-all duration-200',\n // States\n 'hover:enabled:border-muted-foreground/30',\n 'focus:border-ring focus:ring-2 focus:ring-ring/30',\n ),\n);\n\n/**\n * Pagination select icon variants\n *\n * Dropdown chevron icon\n */\nexport const paginationSelectIconVariants = cva(\n clsx(\n // Position\n 'absolute right-[7px] top-1/2 -translate-y-1/2',\n // Pointer events\n 'pointer-events-none',\n ),\n);\n\n/**\n * Pagination navigation controls variants\n *\n * Container for navigation buttons\n */\nexport const paginationNavControlsVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-[7px]',\n ),\n);\n\n/**\n * Pagination navigation button variants\n *\n * Navigation buttons (first, prev, next, last, refresh)\n */\nexport const paginationNavButtonVariants = cva(\n clsx(\n // Size\n 'w-[29px] h-[29px]',\n // Layout\n 'flex items-center justify-center',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Cursor\n 'cursor-pointer',\n // Focus\n 'outline-none',\n // Spacing\n 'p-0',\n // Transitions\n 'transition-all duration-200',\n // States\n 'hover:enabled:bg-muted hover:enabled:border-muted-foreground/30',\n 'active:enabled:bg-muted/80',\n 'focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30',\n 'disabled:cursor-not-allowed disabled:opacity-40',\n // Disabled SVG color\n '[&:disabled_svg_path]:fill-muted-foreground',\n ),\n {\n variants: {\n isRefresh: {\n true: 'w-[30px]',\n false: '',\n },\n },\n defaultVariants: {\n isRefresh: false,\n },\n },\n);\n","import {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n paginationContainerVariants,\n paginationInputVariants,\n paginationLabelVariants,\n paginationNavButtonVariants,\n paginationNavControlsVariants,\n paginationRangeLabelVariants,\n paginationSectionLeftVariants,\n paginationSectionMiddleVariants,\n paginationSectionRightVariants,\n paginationSelectIconVariants,\n paginationSelectVariants,\n paginationSelectWrapperVariants,\n} from './pagination.variants';\n\nexport interface PaginationChangeEvent {\n currentPage: number;\n pageSize: number;\n}\n\n@Component({\n selector: 'bsg-pagination',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <!-- Left section: Current page -->\n <div [class]=\"sectionLeftClasses()\">\n <span [class]=\"labelClasses()\">Página</span>\n <input\n type=\"number\"\n [class]=\"inputClasses()\"\n [value]=\"pageInputValue()\"\n [min]=\"1\"\n [max]=\"resolvedTotalPages()\"\n (focus)=\"onPageInputFocus()\"\n (input)=\"onPageInputChange($event)\"\n (keydown.enter)=\"onPageInputBlur()\"\n (blur)=\"onPageInputBlur()\"\n [disabled]=\"resolvedTotalPages() === 0\"\n />\n <span [class]=\"labelClasses()\">de {{ resolvedTotalPages() }}</span>\n </div>\n\n <!-- Middle section: Page size selector -->\n <div [class]=\"sectionMiddleClasses()\">\n <div [class]=\"selectWrapperClasses()\">\n <select\n [class]=\"selectClasses()\"\n [value]=\"pageSizeSig()\"\n (change)=\"onPageSizeSelectChange($event)\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n\n <svg\n [class]=\"selectIconClasses()\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.8081 5.18312C11.0522 4.93904 11.4478 4.93904 11.6919 5.18312C11.936 5.4272 11.936 5.82283 11.6919 6.06691L7.94191 9.81691C7.69783 10.061 7.3022 10.061 7.05812 9.81691L3.30812 6.06691C3.06404 5.82283 3.06404 5.4272 3.30812 5.18312C3.5522 4.93904 3.94783 4.93904 4.19191 5.18312L7.50001 8.49122L10.8081 5.18312Z\"\n fill=\"#848485\"\n />\n </svg>\n </div>\n <span [class]=\"labelClasses()\">ítems por página</span>\n </div>\n\n <!-- Right section: Range label and navigation -->\n <div [class]=\"sectionRightClasses()\">\n <span [class]=\"rangeLabelClasses()\">{{ computedRangeLabel() }}</span>\n\n <div [class]=\"navControlsClasses()\">\n <!-- First page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"pageSig() === 1 || resolvedTotalPages() === 0\"\n (click)=\"goToFirstPage()\"\n aria-label=\"Primera página\"\n >\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.43312 3.93312C6.6772 3.68904 7.07283 3.68904 7.31691 3.93312C7.56099 4.1772 7.56099 4.57283 7.31691 4.81691L4.6338 7.50001L7.31691 10.1831C7.56099 10.4272 7.56099 10.8228 7.31691 11.0669C7.07283 11.311 6.6772 11.311 6.43312 11.0669L3.30812 7.94191C3.06404 7.69783 3.06404 7.3022 3.30812 7.05812L6.43312 3.93312ZM10.8081 3.93312C11.0522 3.68904 11.4478 3.68904 11.6919 3.93312C11.936 4.1772 11.936 4.57283 11.6919 4.81691L9.0088 7.50001L11.6919 10.1831C11.936 10.4272 11.936 10.8228 11.6919 11.0669C11.4478 11.311 11.0522 11.311 10.8081 11.0669L7.68312 7.94191C7.43904 7.69783 7.43904 7.3022 7.68312 7.05812L10.8081 3.93312Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Previous page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"pageSig() === 1 || resolvedTotalPages() === 0\"\n (click)=\"goToPreviousPage()\"\n aria-label=\"Página anterior\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.33754 3.08754C8.56535 2.85974 8.93461 2.85974 9.16241 3.08754C9.39022 3.31535 9.39022 3.68461 9.16241 3.91241L6.07485 6.99998L9.16241 10.0875C9.39022 10.3153 9.39022 10.6846 9.16241 10.9124C8.93461 11.1402 8.56535 11.1402 8.33754 10.9124L4.83754 7.41241C4.60974 7.18461 4.60974 6.81535 4.83754 6.58754L8.33754 3.08754Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Next page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"\n pageSig() >= resolvedTotalPages() || resolvedTotalPages() === 0\n \"\n (click)=\"goToNextPage()\"\n aria-label=\"Página siguiente\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.52864 3.52864C5.78899 3.26829 6.21099 3.26829 6.47134 3.52864L10.4713 7.52864C10.7317 7.78899 10.7317 8.211 10.4713 8.47134L6.47134 12.4713C6.21099 12.7317 5.78899 12.7317 5.52864 12.4713C5.26829 12.211 5.26829 11.789 5.52864 11.5286L9.05728 7.99999L5.52864 4.47134C5.26829 4.21099 5.26829 3.78899 5.52864 3.52864Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Last page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"\n pageSig() >= resolvedTotalPages() || resolvedTotalPages() === 0\n \"\n (click)=\"goToLastPage()\"\n aria-label=\"Última página\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.52864 4.19532C3.78899 3.93497 4.21099 3.93497 4.47134 4.19532L7.80468 7.52866C8.06503 7.78901 8.06503 8.21102 7.80468 8.47136L4.47134 11.8047C4.21099 12.065 3.78899 12.065 3.52864 11.8047C3.26829 11.5443 3.26829 11.1223 3.52864 10.862L6.39062 8.00001L3.52864 5.13803C3.26829 4.87768 3.26829 4.45567 3.52864 4.19532ZM8.1953 4.19532C8.45565 3.93497 8.87766 3.93497 9.13801 4.19532L12.4713 7.52866C12.7317 7.78901 12.7317 8.21102 12.4713 8.47136L9.13801 11.8047C8.87766 12.065 8.45565 12.065 8.1953 11.8047C7.93495 11.5443 7.93495 11.1223 8.1953 10.862L11.0573 8.00001L8.1953 5.13803C7.93495 4.87768 7.93495 4.45567 8.1953 4.19532Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Refresh -->\n <button\n type=\"button\"\n [class]=\"refreshButtonClasses()\"\n (click)=\"onRefresh()\"\n aria-label=\"Refrescar\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.16663 12.25V9.33332C1.16663 9.01116 1.42779 8.74999 1.74996 8.74999H4.66663C4.98879 8.74999 5.24996 9.01116 5.24996 9.33332C5.24996 9.65549 4.98879 9.91666 4.66663 9.91666H3.15816L3.47376 10.2322L3.65491 10.3992C4.57867 11.2098 5.76662 11.6612 7.0011 11.6661C8.23836 11.6658 9.42511 11.1749 10.3 10.3C11.1752 9.42487 11.6666 8.23767 11.6666 6.99999C11.6666 6.67782 11.9278 6.41666 12.25 6.41666C12.5721 6.41666 12.8333 6.67782 12.8333 6.99999C12.8333 8.54709 12.2188 10.0309 11.1249 11.1249C10.0309 12.2189 8.54706 12.8333 6.99996 12.8333H6.99768C5.48052 12.8276 4.02054 12.2721 2.88529 11.2759L2.65572 11.064L2.33329 10.7415V12.25C2.33329 12.5722 2.07213 12.8333 1.74996 12.8333C1.42779 12.8333 1.16663 12.5722 1.16663 12.25ZM1.16663 6.99999C1.16663 5.45289 1.78108 3.96903 2.87504 2.87507C3.969 1.78111 5.45286 1.16666 6.99996 1.16666H7.00224L7.30473 1.1752C8.71256 1.24848 10.055 1.79424 11.1146 2.72411L11.3442 2.93603L11.6666 3.25845V1.74999C11.6666 1.42782 11.9278 1.16666 12.25 1.16666C12.5721 1.16666 12.8333 1.42782 12.8333 1.74999V4.66666C12.8333 4.98882 12.5721 5.24999 12.25 5.24999H9.33329C9.01113 5.24999 8.74996 4.98882 8.74996 4.66666C8.74996 4.34449 9.01113 4.08332 9.33329 4.08332H10.8418L10.5262 3.76773L10.345 3.60082C9.4211 2.79008 8.23293 2.33809 6.99825 2.33332C5.76119 2.33378 4.57468 2.82517 3.69991 3.69994C2.82474 4.57511 2.33329 5.76231 2.33329 6.99999C2.33329 7.32216 2.07213 7.58332 1.74996 7.58332C1.42779 7.58332 1.16663 7.32216 1.16663 6.99999Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class PaginationComponent {\n /** Inputs (API existente) */\n readonly currentPage = input<number>(1);\n readonly totalPages = input<number>(1); // se mantiene, pero se \"resuelve\" automáticamente\n readonly pageSize = input<number>(5);\n readonly pageSizeOptions = input<number[]>([5, 10, 20]);\n readonly totalItems = input<number>(5);\n readonly rangeLabel = input<string>(''); // se mantiene, pero ahora el label se calcula\n readonly className = input<string>();\n\n /** Outputs (API existente) */\n readonly pageChange = output<number>();\n readonly pageSizeChange = output<number>();\n readonly paginationChange = output<PaginationChangeEvent>();\n readonly refresh = output<void>();\n\n /** Estado interno (para que el componente funcione sin que el padre lo controle) */\n readonly pageSig = signal<number>(1);\n readonly pageSizeSig = signal<number>(5);\n\n /** Buffer para edición del input */\n private readonly tempPageValue = signal<string>('');\n\n constructor() {\n // Sincroniza estado interno si el padre cambia inputs desde afuera (Storybook Controls o app real)\n effect(() => {\n this.pageSig.set(this.currentPage());\n });\n\n effect(() => {\n this.pageSizeSig.set(this.pageSize());\n });\n\n // Si cambia pageSizeOptions y el pageSize actual ya no existe, cae al primero\n effect(() => {\n const opts = this.pageSizeOptions();\n if (opts.length === 0) return;\n\n const current = this.pageSizeSig();\n if (!opts.includes(current)) {\n this.setPageSize(opts[0]);\n }\n });\n }\n\n /** Total pages calculado con totalItems/pageSize */\n readonly resolvedTotalPages = computed(() => {\n const totalItems = this.totalItems();\n const size = this.pageSizeSig();\n\n if (totalItems > 0 && size > 0) {\n return Math.max(0, Math.ceil(totalItems / size));\n }\n\n // fallback si no hay totalItems (o es 0) => respeta el input\n return Math.max(0, this.totalPages());\n });\n\n /** Range label calculado (siempre) */\n readonly computedRangeLabel = computed(() => {\n const total = this.totalItems();\n const page = this.pageSig();\n const size = this.pageSizeSig();\n\n if (total <= 0 || size <= 0 || this.resolvedTotalPages() === 0) {\n return `0 - 0 de ${Math.max(0, total)} ítems`;\n }\n\n const start = (page - 1) * size + 1;\n const end = Math.min(total, page * size);\n return `${start} - ${end} de ${total} ítems`;\n });\n\n /** Valor visible en el input de página */\n readonly pageInputValue = computed(() => {\n const tmp = this.tempPageValue();\n return tmp !== '' ? tmp : String(this.pageSig());\n });\n\n // Classes\n readonly containerClasses = computed(() =>\n clsx(paginationContainerVariants(), this.className()),\n );\n readonly sectionLeftClasses = computed(() =>\n clsx(paginationSectionLeftVariants()),\n );\n readonly sectionMiddleClasses = computed(() =>\n clsx(paginationSectionMiddleVariants()),\n );\n readonly sectionRightClasses = computed(() =>\n clsx(paginationSectionRightVariants()),\n );\n readonly labelClasses = computed(() => clsx(paginationLabelVariants()));\n readonly rangeLabelClasses = computed(() =>\n clsx(paginationRangeLabelVariants()),\n );\n readonly inputClasses = computed(() => clsx(paginationInputVariants()));\n readonly selectWrapperClasses = computed(() =>\n clsx(paginationSelectWrapperVariants()),\n );\n readonly selectClasses = computed(() => clsx(paginationSelectVariants()));\n readonly selectIconClasses = computed(() =>\n clsx(paginationSelectIconVariants()),\n );\n readonly navControlsClasses = computed(() =>\n clsx(paginationNavControlsVariants()),\n );\n readonly navButtonClasses = computed(() =>\n clsx(paginationNavButtonVariants({ isRefresh: false })),\n );\n readonly refreshButtonClasses = computed(() =>\n clsx(paginationNavButtonVariants({ isRefresh: true })),\n );\n\n // Navigation\n goToFirstPage(): void {\n if (this.resolvedTotalPages() > 0) this.updatePage(1);\n }\n\n goToPreviousPage(): void {\n if (this.pageSig() > 1) this.updatePage(this.pageSig() - 1);\n }\n\n goToNextPage(): void {\n if (this.pageSig() < this.resolvedTotalPages())\n this.updatePage(this.pageSig() + 1);\n }\n\n goToLastPage(): void {\n const last = this.resolvedTotalPages();\n if (last > 0) this.updatePage(last);\n }\n\n // Page input handling\n onPageInputFocus(): void {\n this.tempPageValue.set(String(this.pageSig()));\n }\n\n onPageInputChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n this.tempPageValue.set(inputEl.value);\n }\n\n onPageInputBlur(): void {\n const tempValue = this.tempPageValue().trim();\n if (tempValue === '') {\n this.tempPageValue.set('');\n return;\n }\n\n let page = parseInt(tempValue, 10);\n if (Number.isNaN(page)) {\n this.tempPageValue.set('');\n return;\n }\n\n page = Math.max(1, Math.min(page, this.resolvedTotalPages() || 1));\n this.updatePage(page);\n this.tempPageValue.set('');\n }\n\n // Page size change\n onPageSizeSelectChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newSize = parseInt(select.value, 10);\n if (Number.isNaN(newSize) || newSize <= 0) return;\n\n if (newSize !== this.pageSizeSig()) {\n this.setPageSize(newSize);\n }\n }\n\n private setPageSize(newSize: number): void {\n this.pageSizeSig.set(newSize);\n\n // Ajusta página actual si se sale del rango con el nuevo totalPages\n const max = this.resolvedTotalPages();\n const nextPage = Math.max(1, Math.min(this.pageSig(), max || 1));\n\n // Si prefieres resetear siempre a 1 al cambiar tamaño, cambia por: this.updatePage(1)\n this.pageSig.set(nextPage);\n\n this.pageSizeChange.emit(newSize);\n this.paginationChange.emit({ currentPage: nextPage, pageSize: newSize });\n\n // Si el clamp cambió la página, también notificamos pageChange\n if (nextPage !== this.currentPage()) {\n this.pageChange.emit(nextPage);\n }\n }\n\n onRefresh(): void {\n this.refresh.emit();\n }\n\n private updatePage(page: number): void {\n const max = this.resolvedTotalPages();\n const clamped = Math.max(1, Math.min(page, max || 1));\n\n this.pageSig.set(clamped);\n this.tempPageValue.set('');\n\n this.pageChange.emit(clamped);\n this.paginationChange.emit({\n currentPage: clamped,\n pageSize: this.pageSizeSig(),\n });\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Separator variants\n *\n * Controls the visual separator line between content sections\n */\nexport const separatorVariants = cva(\n clsx(\n // Base\n 'shrink-0',\n // Background color (semantic token)\n 'bg-border',\n // Reset\n 'border-none',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'w-full h-px',\n vertical: 'h-full w-px self-stretch',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { separatorVariants } from './separator.variants';\n\nexport type SeparatorOrientation = 'horizontal' | 'vertical';\n\nexport type SeparatorVariantsProps = VariantProps<typeof separatorVariants>;\n\n/**\n * Separator Component\n *\n * A visual divider between content sections.\n *\n * Usage:\n * ```html\n * <bsg-separator />\n * <bsg-separator orientation=\"vertical\" />\n * ```\n */\n@Component({\n selector: 'bsg-separator',\n standalone: true,\n template: `\n <div\n [class]=\"separatorClasses()\"\n role=\"separator\"\n [attr.aria-orientation]=\"orientation()\"\n ></div>\n `,\n styles: `\n :host {\n display: block;\n }\n\n :host([orientation='vertical']) {\n display: inline-block;\n height: 100%;\n }\n `,\n})\nexport class SeparatorComponent {\n /** Separator orientation */\n readonly orientation = input<SeparatorOrientation>('horizontal');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed separator classes */\n readonly separatorClasses = computed(() =>\n clsx(\n separatorVariants({ orientation: this.orientation() }),\n this.className(),\n ),\n );\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BadgeComponent } from '../badge/badge.component';\nimport {\n ButtonComponent,\n ButtonSize,\n ButtonVariant,\n} from '../button/button.component';\nimport { LabelComponent } from '../label/label.component';\nimport { PaginationComponent } from '../pagination/pagination.component';\nimport { SeparatorComponent } from '../separator/separator.component';\nimport {\n TabItem,\n TabNavigationComponent,\n} from '../tab-navigation/tab-navigation.component';\n\nexport type TableVariant =\n | 'table-actions'\n | 'table-basic'\n | 'table-tabs'\n | 'list-content';\n\nexport interface TableColumn {\n key: string;\n label: string;\n width?: string;\n}\n\nexport interface TableRow {\n [key: string]: any;\n}\n\nexport interface ListItem {\n text: string;\n}\n\nexport interface TabConfig extends TabItem {\n tableData?: {\n columns: TableColumn[];\n rows: TableRow[];\n };\n}\n\nexport interface TableAction {\n label: string;\n variant?: 'approve' | 'reject' | 'view';\n onClick?: () => void;\n}\n\n/**\n * @deprecated Use the new composable table components (TableComponent, TableHeader, TableBody, etc.) instead.\n * This component is kept for backwards compatibility.\n */\n@Component({\n selector: 'bsg-table-container',\n standalone: true,\n imports: [\n TabNavigationComponent,\n PaginationComponent,\n SeparatorComponent,\n LabelComponent,\n ButtonComponent,\n BadgeComponent,\n ],\n template: `\n <div class=\"table\" [class]=\"containerClasses\">\n <!-- Header -->\n <div\n class=\"table-header\"\n [class.table-header-collapsible]=\"isCollapsible\"\n >\n <!-- Icon -->\n @if (!isCollapsible) {\n <div class=\"table-icon\">\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"14\" cy=\"14\" r=\"14\" fill=\"#2563EB\" />\n </svg>\n <svg\n class=\"table-check-icon\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_check)\">\n <path\n d=\"M6.43155 0.706459C7.98492 0.461733 9.5751 0.757369 10.9372 1.54325C11.2361 1.71571 11.339 2.09758 11.1667 2.39652C10.9942 2.6955 10.6118 2.79791 10.3128 2.6254C9.19841 1.98244 7.89713 1.74102 6.62625 1.9412C5.35534 2.14143 4.19126 2.77142 3.32852 3.72587C2.4658 4.68036 1.95624 5.90193 1.88504 7.18656C1.81386 8.47123 2.18527 9.74182 2.93729 10.7858C3.6893 11.8297 4.77673 12.5845 6.01773 12.9239C7.25873 13.2632 8.57877 13.167 9.75736 12.651C10.936 12.1351 11.9023 11.2303 12.4948 10.0882C13.0872 8.94613 13.2698 7.63546 13.013 6.37479C12.9441 6.03664 13.1625 5.7065 13.5006 5.63749C13.8389 5.56857 14.169 5.78696 14.2379 6.12516C14.5519 7.66605 14.328 9.26786 13.6038 10.6637C12.8796 12.0596 11.699 13.1654 10.2585 13.7961C8.818 14.4266 7.20487 14.5441 5.68814 14.1293C4.17132 13.7145 2.84201 12.7923 1.92288 11.5164C1.00377 10.2404 0.549897 8.68771 0.636872 7.11759C0.72387 5.54744 1.34693 4.05449 2.4014 2.88786C3.45585 1.7213 4.87821 0.951184 6.43155 0.706459ZM13.3084 2.05778C13.5525 1.81398 13.9482 1.81382 14.1922 2.05778C14.4362 2.30185 14.4362 2.6981 14.1922 2.94218L7.94217 9.19218C7.69818 9.43613 7.30247 9.43597 7.05838 9.19218L5.18338 7.31718C4.9393 7.0731 4.9393 6.67686 5.18338 6.43278C5.42747 6.18898 5.82318 6.18882 6.06717 6.43278L7.50028 7.86588L13.3084 2.05778Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_check\">\n <rect width=\"15\" height=\"15\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n }\n\n <!-- Title -->\n <h2 class=\"table-title\">{{ title }}</h2>\n\n <!-- Header Actions (e.g., \"Nuevo mensaje\" button) -->\n @if (headerAction && !isCollapsible) {\n <div class=\"table-header-actions\">\n <bsg-button\n [label]=\"headerAction.label\"\n [variant]=\"headerAction.variant || 'default'\"\n [size]=\"headerAction.size || 'md'\"\n (onClick)=\"onHeaderAction()\"\n ></bsg-button>\n </div>\n }\n\n <!-- Chevron Icon for Collapsible Mode (right side) -->\n @if (isCollapsible) {\n <button\n type=\"button\"\n class=\"table-collapse-chevron\"\n [class.table-chevron-expanded]=\"isExpanded\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"isExpanded\"\n [attr.aria-label]=\"isExpanded ? 'Contraer' : 'Expandir'\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.3691 8.22462C11.7618 7.90427 12.3408 7.92686 12.707 8.29298L18.707 14.293C19.0975 14.6835 19.0975 15.3165 18.707 15.707C18.3164 16.0976 17.6834 16.0976 17.2929 15.707L11.9999 10.4141L6.70696 15.707C6.31643 16.0976 5.68342 16.0976 5.29289 15.707C4.90237 15.3165 4.90237 14.6835 5.29289 14.293L11.2929 8.29298L11.3691 8.22462Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n }\n </div>\n\n <!-- Body -->\n <div class=\"table-body\">\n <!-- Table Variants (table-basic, table-actions) -->\n @if (variant === 'table-basic' || variant === 'table-actions') {\n <div class=\"table-content\">\n <!-- Table Header -->\n <div class=\"table-content-header\">\n @for (column of tableColumns; track column.key) {\n <div\n class=\"table-header-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n {{ column.label }}\n </div>\n }\n @if (variant === 'table-actions' && showActionsColumn) {\n <div\n class=\"table-header-cell table-actions-header\"\n [style.width]=\"actionsColumnWidth || 'auto'\"\n >\n {{ actionsColumnLabel || 'Acciones' }}\n </div>\n }\n </div>\n\n <bsg-separator></bsg-separator>\n\n <!-- Table Rows -->\n <div class=\"table-content-body\">\n @for (row of tableRows; track $index; let i = $index) {\n <div class=\"table-row\">\n @for (column of tableColumns; track column.key) {\n <div\n class=\"table-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n <!-- Render badge if specified -->\n @if (row[column.key + '_badge']) {\n <bsg-badge\n [variant]=\"row[column.key + '_badge_variant'] || 'default'\"\n [value]=\"row[column.key]\"\n [size]=\"row[column.key + '_badge_size'] || 'default'\"\n ></bsg-badge>\n } @else if (row[column.key + '_label']) {\n <!-- Render label if specified -->\n <bsg-label [text]=\"row[column.key]\"></bsg-label>\n } @else {\n <!-- Render plain text otherwise -->\n <span>{{ row[column.key] }}</span>\n }\n </div>\n }\n\n <!-- Actions Column (for table-actions variant) -->\n @if (variant === 'table-actions' && row['actions']) {\n <div\n class=\"table-cell table-actions-cell\"\n [style.width]=\"actionsColumnWidth || 'auto'\"\n >\n <div class=\"table-actions\">\n @for (action of row['actions']; track $index) {\n <bsg-button\n [label]=\"action.label\"\n [variant]=\"getActionVariant(action.variant)\"\n [size]=\"'md'\"\n [shape]=\"'rectangular'\"\n (onClick)=\"onRowAction(i, action)\"\n class=\"table-action-btn\"\n ></bsg-button>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Pagination -->\n @if (tablePagination) {\n <div class=\"table-pagination\">\n <bsg-separator></bsg-separator>\n <bsg-pagination\n [currentPage]=\"tablePagination.currentPage\"\n [totalPages]=\"tablePagination.totalPages\"\n [pageSize]=\"tablePagination.pageSize\"\n [pageSizeOptions]=\"tablePagination.pageSizeOptions\"\n [totalItems]=\"tablePagination.totalItems\"\n [rangeLabel]=\"tablePagination.rangeLabel\"\n (pageChange)=\"onTablePageChange($event)\"\n (pageSizeChange)=\"onTablePageSizeChange($event)\"\n (refresh)=\"onTableRefresh()\"\n ></bsg-pagination>\n </div>\n }\n </div>\n }\n\n <!-- List Variant (list-content) -->\n @if (variant === 'list-content') {\n <div class=\"table-list\">\n @for (item of listItems; track $index; let i = $index) {\n <div class=\"table-list-item\">\n <div class=\"table-list-number\">\n <svg\n width=\"27\"\n height=\"26\"\n viewBox=\"0 0 27 26\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <ellipse cx=\"13.5\" cy=\"13\" rx=\"13.5\" ry=\"13\" fill=\"#2563EB\" />\n </svg>\n <span class=\"table-list-number-text\">{{ i + 1 }}</span>\n </div>\n <div class=\"table-list-text\">{{ item.text }}</div>\n </div>\n }\n </div>\n }\n\n <!-- Tabs Variant (table-tabs) -->\n @if (variant === 'table-tabs') {\n <div class=\"table-tabs-wrapper\">\n <!-- Tab Navigation -->\n <bsg-tab-navigation\n [tabs]=\"tabs\"\n [activeIndex]=\"activeTabIndex\"\n [size]=\"'md'\"\n [variant]=\"'text'\"\n (tabChange)=\"onTabChange($event)\"\n ></bsg-tab-navigation>\n\n <!-- Tab Content -->\n <div class=\"table-tab-content\">\n @for (tab of tabs; track $index; let i = $index) {\n @if (i === activeTabIndex && tab.tableData) {\n <div class=\"table-content\">\n <!-- Table Header -->\n <div class=\"table-content-header\">\n @for (column of tab.tableData.columns; track column.key) {\n <div\n class=\"table-header-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n {{ column.label }}\n </div>\n }\n </div>\n\n <bsg-separator></bsg-separator>\n\n <!-- Table Rows -->\n <div class=\"table-content-body\">\n @for (row of tab.tableData.rows; track $index) {\n <div class=\"table-row\">\n @for (column of tab.tableData.columns; track column.key) {\n <div\n class=\"table-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n <!-- Render badge if specified -->\n @if (row[column.key + '_badge']) {\n <bsg-badge\n [variant]=\"row[column.key + '_badge_variant'] || 'default'\"\n [value]=\"row[column.key]\"\n [size]=\"row[column.key + '_badge_size'] || 'default'\"\n ></bsg-badge>\n } @else if (row[column.key + '_label']) {\n <!-- Render label if specified -->\n <bsg-label [text]=\"row[column.key]\"></bsg-label>\n } @else {\n <!-- Render plain text otherwise -->\n <span>{{ row[column.key] }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Pagination for this tab -->\n @if (tabsPagination && tabsPagination[i]) {\n <div class=\"table-pagination\">\n <bsg-separator></bsg-separator>\n <bsg-pagination\n [currentPage]=\"tabsPagination[i].currentPage\"\n [totalPages]=\"tabsPagination[i].totalPages\"\n [pageSize]=\"tabsPagination[i].pageSize\"\n [pageSizeOptions]=\"tabsPagination[i].pageSizeOptions\"\n [totalItems]=\"tabsPagination[i].totalItems\"\n [rangeLabel]=\"tabsPagination[i].rangeLabel\"\n (pageChange)=\"onTabPageChange(i, $event)\"\n (pageSizeChange)=\"onTabPageSizeChange(i, $event)\"\n (refresh)=\"onTabRefresh(i)\"\n ></bsg-pagination>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n `,\n styleUrls: ['./table.css'],\n})\nexport class TableContainerComponent {\n /** Container title */\n @Input() title: string = 'Título del Contenedor';\n\n /** Display variant */\n @Input() variant: TableVariant = 'table-basic';\n\n /** Header action button (e.g., \"Nuevo mensaje\") */\n @Input() headerAction?: {\n label: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n };\n\n // Collapsible mode inputs\n @Input() isCollapsible: boolean = false;\n @Input() isExpanded: boolean = true;\n\n @Input() disableExpansion: boolean = false;\n\n // Table variant inputs\n @Input() tableColumns: TableColumn[] = [];\n @Input() tableRows: TableRow[] = [];\n @Input() tablePagination?: {\n currentPage: number;\n totalPages: number;\n pageSize: number;\n pageSizeOptions: number[];\n totalItems: number;\n rangeLabel: string;\n };\n\n // Table-actions specific\n @Input() showActionsColumn: boolean = true;\n @Input() actionsColumnLabel: string = 'Acciones';\n @Input() actionsColumnWidth: string = '200px';\n\n // List variant inputs\n @Input() listItems: ListItem[] = [];\n\n // Tabs variant inputs\n @Input() tabs: TabConfig[] = [];\n @Input() activeTabIndex: number = 0;\n @Input() tabsPagination: any[] = [];\n\n // Events\n @Output() headerActionClick = new EventEmitter<void>();\n @Output() collapseToggle = new EventEmitter<boolean>();\n @Output() tabChange = new EventEmitter<number>();\n @Output() tablePageChange = new EventEmitter<number>();\n @Output() tablePageSizeChange = new EventEmitter<number>();\n @Output() tableRefresh = new EventEmitter<void>();\n @Output() tabPageChange = new EventEmitter<{\n tabIndex: number;\n page: number;\n }>();\n @Output() tabPageSizeChange = new EventEmitter<{\n tabIndex: number;\n pageSize: number;\n }>();\n @Output() tabRefresh = new EventEmitter<number>();\n @Output() rowAction = new EventEmitter<{\n rowIndex: number;\n action: TableAction;\n }>();\n\n get containerClasses(): string[] {\n const classes = [`table-${this.variant}`];\n if (this.isCollapsible && !this.isExpanded) {\n classes.push('table-collapsed');\n }\n return classes;\n }\n\n toggleCollapse(): void {\n this.isExpanded = !this.isExpanded;\n this.collapseToggle.emit(this.isExpanded);\n }\n\n onHeaderAction(): void {\n this.headerActionClick.emit();\n }\n\n onTabChange(index: number): void {\n this.activeTabIndex = index;\n this.tabChange.emit(index);\n }\n\n onTablePageChange(page: number): void {\n this.tablePageChange.emit(page);\n }\n\n onTablePageSizeChange(pageSize: number): void {\n this.tablePageSizeChange.emit(pageSize);\n }\n\n onTableRefresh(): void {\n this.tableRefresh.emit();\n }\n\n onTabPageChange(tabIndex: number, page: number): void {\n this.tabPageChange.emit({ tabIndex, page });\n }\n\n onTabPageSizeChange(tabIndex: number, pageSize: number): void {\n this.tabPageSizeChange.emit({ tabIndex, pageSize });\n }\n\n onTabRefresh(tabIndex: number): void {\n this.tabRefresh.emit(tabIndex);\n }\n\n onRowAction(rowIndex: number, action: TableAction): void {\n this.rowAction.emit({ rowIndex, action });\n if (action.onClick) {\n action.onClick();\n }\n }\n\n getActionVariant(actionVariant?: string): ButtonVariant {\n switch (actionVariant) {\n case 'approve':\n return 'default'; // Green variant\n case 'reject':\n return 'destructive'; // Red variant\n case 'view':\n return 'ghost'; // Light blue variant\n default:\n return 'default';\n }\n }\n}\n","// Table components (shadcn-style primitives)\nexport { TableComponent } from './table.component';\nexport { TableHeaderComponent } from './table-header.component';\nexport { TableBodyComponent } from './table-body.component';\nexport { TableFooterComponent } from './table-footer.component';\nexport { TableRowComponent } from './table-row.component';\nexport { TableHeadComponent } from './table-head.component';\nexport { TableCellComponent } from './table-cell.component';\n\n// Table Card components\nexport { TableCardComponent } from './table-card.component';\nexport {\n TableCardHeaderComponent,\n type TableCardHeaderColor,\n} from './table-card-header.component';\nexport { TableCardFooterComponent } from './table-card-footer.component';\n\n// Legacy table container (for backwards compatibility)\nexport {\n TableContainerComponent,\n type TableVariant,\n type TableColumn,\n type TableRow,\n type ListItem,\n type TabConfig,\n type TableAction,\n} from './table-container.component';\n\n// Variants\nexport {\n // Core table variants\n tableVariants,\n tableWrapperVariants,\n tableHeaderVariants,\n tableBodyVariants,\n tableFooterVariants,\n tableRowVariants,\n tableHeadVariants,\n tableCellVariants,\n // Card variants\n tableCardHeaderVariants,\n tableCardFooterVariants,\n // Utility variants\n tablePaginationVariants,\n tableEmptyStateVariants,\n tableLoadingVariants,\n // Modifier variants\n tableStripedVariants,\n tableCompactVariants,\n} from './table.variants';\n","import {\n Component,\n forwardRef,\n HostBinding,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const textareaVariants = cva(\n clsx(\n // Layout & sizing\n 'w-full min-w-0',\n 'min-h-[80px]',\n // Border & radius\n 'rounded-md border border-input',\n // Spacing\n 'px-3 py-2',\n // Typography\n 'text-base md:text-sm',\n // Colors\n 'bg-transparent text-foreground',\n 'placeholder:text-muted-foreground',\n // Effects\n 'shadow-xs transition-[color,box-shadow] outline-none',\n // Resize behavior\n 'resize-y',\n // Focus state\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // Disabled state\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // Selection styles\n 'selection:bg-primary selection:text-primary-foreground',\n // Dark mode\n 'dark:bg-input/30',\n // Invalid state\n 'aria-invalid:border-destructive aria-invalid:ring-destructive/20',\n 'dark:aria-invalid:ring-destructive/40',\n ),\n {\n variants: {\n size: {\n sm: 'min-h-[60px] py-1 text-xs',\n default: 'min-h-[80px] py-2',\n lg: 'min-h-[120px] py-3 text-base',\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n },\n defaultVariants: {\n size: 'default',\n resize: 'vertical',\n },\n },\n);\n\nexport type TextareaSize = VariantProps<typeof textareaVariants>['size'];\nexport type TextareaResize = VariantProps<typeof textareaVariants>['resize'];\n\n@Component({\n selector: 'bsg-textarea',\n standalone: true,\n imports: [],\n template: `\n <textarea\n [class]=\"computedClasses\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"onFocus()\"\n ></textarea>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent implements ControlValueAccessor, Validator {\n placeholder = input<string>('');\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n readonly = input<boolean>(false);\n rows = input<number>(3);\n ariaInvalid = input<boolean>();\n size = input<TextareaSize>('default');\n resize = input<TextareaResize>('vertical');\n className = input<string>();\n\n @HostBinding('class') get hostClasses(): string {\n return 'block';\n }\n\n value = signal('');\n\n // Internal disabled state for ControlValueAccessor, synced with input\n disabledState = linkedSignal(() => this.disabled());\n\n // Store callbacks as signals for better reactivity\n private onChangeCallback = signal<(value: string) => void>(() => {});\n private onTouchedCallback = signal<() => void>(() => {});\n\n get computedClasses(): string {\n return clsx(\n textareaVariants({\n size: this.size(),\n resize: this.resize(),\n }),\n this.className(),\n );\n }\n\n onInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n this.value.set(textarea.value);\n this.onChangeCallback()(textarea.value);\n }\n\n onTouched(): void {\n this.onTouchedCallback()();\n }\n\n onFocus(): void {\n // Hook for focus event if needed\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeCallback.set(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback.set(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n // HTML5 validation support\n if (this.required() && !control.value) {\n return { required: true };\n }\n\n // Min/max length validation could be added here if needed\n return null;\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * TimePicker field container variants\n *\n * Controls the outer container including label and error\n */\nexport const timepickerFieldVariants = cva(\n clsx(\n // Layout\n 'flex flex-col gap-1.5',\n ),\n);\n\n/**\n * TimePicker label variants\n */\nexport const timepickerLabelVariants = cva(\n clsx(\n // Typography\n 'text-sm font-medium leading-5',\n // Color\n 'text-foreground',\n // Spacing\n 'mb-0.5',\n ),\n);\n\n/**\n * TimePicker wrapper variants\n *\n * Controls the input wrapper with size and state variants\n */\nexport const timepickerWrapperVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center gap-3',\n // Shape\n 'rounded-md',\n // Border\n 'border',\n // Position\n 'relative',\n // Transition\n 'transition-all duration-200',\n // Width\n 'w-full',\n // Background\n 'bg-background',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 py-1 px-2 pr-2 pl-3',\n md: 'h-10 py-1 px-2 pr-2 pl-3',\n lg: 'h-12 py-1 px-2 pr-2 pl-3',\n },\n state: {\n default: 'border-input hover:border-ring/50',\n hover: 'border-ring/50',\n focus: 'border-ring ring-2 ring-offset-2 ring-ring',\n disabled:\n 'border-input opacity-40 cursor-not-allowed pointer-events-none',\n error: 'border-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n },\n);\n\n/**\n * TimePicker input field variants\n */\nexport const timepickerInputVariants = cva(\n clsx(\n // Layout\n 'flex-1',\n // Reset\n 'border-none outline-none bg-transparent',\n // Typography\n 'text-base font-normal leading-6 tracking-tight',\n // Color (semantic token)\n 'text-foreground',\n // Placeholder (semantic token)\n 'placeholder:text-muted-foreground',\n // Cursor\n 'cursor-pointer',\n // Disabled\n 'disabled:cursor-not-allowed',\n ),\n {\n variants: {\n state: {\n default: '',\n hover: '',\n focus: 'text-foreground',\n disabled: 'cursor-not-allowed',\n error: 'text-destructive placeholder:text-destructive',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n },\n);\n\n/**\n * TimePicker icon button variants\n */\nexport const timepickerIconButtonVariants = cva(\n clsx(\n // Size\n 'shrink-0 size-6 mr-1',\n // Layout\n 'flex items-center justify-center',\n // Reset\n 'bg-transparent border-none p-0',\n // Cursor\n 'cursor-pointer',\n // Color (semantic token)\n 'text-muted-foreground',\n // Transition\n 'transition-opacity duration-200',\n // Hover\n 'hover:opacity-70 hover:text-foreground',\n // Disabled\n 'disabled:cursor-not-allowed disabled:opacity-40',\n ),\n);\n\n/**\n * TimePicker dropdown variants\n */\nexport const timepickerDropdownVariants = cva(\n clsx(\n // Position\n 'absolute top-[calc(100%+4px)] left-0 z-[10000]',\n // Shape\n 'rounded-md',\n // Border (semantic token)\n 'border border-border',\n // Background (semantic token)\n 'bg-popover',\n // Text color (semantic token)\n 'text-popover-foreground',\n // Shadow (semantic token)\n 'shadow-(--shadow-dropdown)',\n // Layout\n 'flex flex-col overflow-hidden',\n ),\n {\n variants: {\n size: {\n sm: 'w-40',\n md: 'w-44',\n lg: 'w-52',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * TimePicker selection area variants\n */\nexport const timepickerSelectionAreaVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-center gap-2',\n // Spacing\n 'p-2',\n // Border (semantic token)\n 'border-b border-border',\n ),\n);\n\n/**\n * TimePicker column variants\n */\nexport const timepickerColumnVariants = cva(\n clsx(\n // Layout\n 'flex flex-col flex-1',\n ),\n);\n\n/**\n * TimePicker column header variants\n */\nexport const timepickerColumnHeaderVariants = cva(\n clsx(\n // Typography\n 'text-xs font-semibold uppercase tracking-wide',\n // Color (semantic token)\n 'text-muted-foreground',\n // Alignment\n 'text-center',\n // Spacing\n 'py-1',\n ),\n);\n\n/**\n * TimePicker list variants\n */\nexport const timepickerListVariants = cva(\n clsx(\n // Size\n 'max-h-40',\n // Scroll\n 'overflow-y-auto',\n // Layout\n 'flex flex-col gap-0.5',\n // Spacing\n 'py-1',\n // Scrollbar (semantic token for thumb color)\n 'scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent',\n ),\n);\n\n/**\n * TimePicker option variants\n */\nexport const timepickerOptionVariants = cva(\n clsx(\n // Spacing\n 'p-2',\n // Typography\n 'text-sm font-normal leading-5',\n // Color (semantic token)\n 'text-foreground',\n // Alignment\n 'text-center',\n // Cursor\n 'cursor-pointer',\n // Shape\n 'rounded',\n // Size\n 'min-h-8',\n // Layout\n 'flex items-center justify-center',\n // Transition\n 'transition-all duration-150',\n ),\n {\n variants: {\n selected: {\n true: 'bg-primary text-primary-foreground font-medium hover:bg-primary/90',\n false: 'hover:bg-accent',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed text-muted-foreground hover:bg-transparent',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n disabled: false,\n },\n },\n);\n\n/**\n * TimePicker separator variants\n */\nexport const timepickerSeparatorVariants = cva(\n clsx(\n // Typography\n 'text-xl font-medium',\n // Color (semantic token)\n 'text-muted-foreground',\n // Position\n 'mt-5',\n ),\n);\n\n/**\n * TimePicker actions container variants\n */\nexport const timepickerActionsVariants = cva(\n clsx(\n // Layout\n 'flex gap-2',\n // Spacing\n 'p-2',\n // Border (semantic token)\n 'border-t border-border',\n ),\n);\n\n/**\n * TimePicker action button variants\n */\nexport const timepickerActionButtonVariants = cva(\n clsx(\n // Layout\n 'flex-1',\n // Spacing\n 'py-2 px-3',\n // Typography\n 'text-[13px] font-medium leading-[18px]',\n // Border (semantic token)\n 'border border-input',\n // Shape\n 'rounded',\n // Background\n 'bg-transparent',\n // Color (semantic token)\n 'text-foreground',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-150',\n // Alignment\n 'text-center',\n // Hover (semantic tokens)\n 'hover:bg-accent hover:border-ring/50',\n // Active (semantic token)\n 'active:bg-accent',\n // Disabled\n 'disabled:opacity-40 disabled:cursor-not-allowed',\n ),\n);\n\n/**\n * TimePicker error message variants\n */\nexport const timepickerErrorMessageVariants = cva(\n clsx(\n // Typography\n 'text-xs font-normal leading-4',\n // Color (semantic token)\n 'text-destructive',\n // Spacing\n 'mt-1',\n ),\n);\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n OnInit,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n timepickerActionButtonVariants,\n timepickerActionsVariants,\n timepickerColumnHeaderVariants,\n timepickerColumnVariants,\n timepickerDropdownVariants,\n timepickerErrorMessageVariants,\n timepickerFieldVariants,\n timepickerIconButtonVariants,\n timepickerInputVariants,\n timepickerLabelVariants,\n timepickerListVariants,\n timepickerOptionVariants,\n timepickerSelectionAreaVariants,\n timepickerSeparatorVariants,\n timepickerWrapperVariants,\n} from './timepicker.variants';\n\nexport type TimePickerSize = 'sm' | 'md' | 'lg';\nexport type TimePickerState =\n | 'default'\n | 'hover'\n | 'focus'\n | 'disabled'\n | 'error';\n\nexport type TimePickerWrapperVariantsProps = VariantProps<\n typeof timepickerWrapperVariants\n>;\n\n/**\n * TimePicker Component\n *\n * A time selection component with dropdown for hours and minutes.\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-timepicker\n * [size]=\"'md'\"\n * [value]=\"'14:30'\"\n * [label]=\"'Select time'\"\n * (valueChange)=\"onTimeChange($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-timepicker',\n standalone: true,\n template: `\n <div [class]=\"fieldClasses()\">\n <!-- Optional Label -->\n @if (label()) {\n <label [class]=\"labelClasses()\">{{ label() }}</label>\n }\n\n <!-- TimePicker Input Wrapper -->\n <div [class]=\"wrapperClasses()\">\n <!-- Time Input Field -->\n <input\n #timeInput\n type=\"text\"\n [class]=\"inputClasses()\"\n [value]=\"timeValue()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"state() === 'disabled'\"\n [attr.aria-invalid]=\"state() === 'error'\"\n [attr.aria-describedby]=\"\n state() === 'error' && errorMessage() ? errorMessageId : null\n \"\n (click)=\"openDropdown()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n readonly\n />\n\n <!-- Clock Icon Button -->\n <button\n type=\"button\"\n [class]=\"iconButtonClasses()\"\n [disabled]=\"state() === 'disabled'\"\n (click)=\"toggleDropdown()\"\n [attr.aria-label]=\"\n isOpen() ? 'Cerrar selector de hora' : 'Abrir selector de hora'\n \"\n [attr.aria-pressed]=\"isOpen()\"\n >\n <svg\n class=\"w-4 h-4 shrink-0\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n />\n <path\n d=\"M12 6V12L16 16\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n\n <!-- Dropdown -->\n @if (isOpen()) {\n <div\n [class]=\"dropdownClasses()\"\n role=\"dialog\"\n aria-label=\"Selector de hora\"\n >\n <!-- Time Selection Area -->\n <div [class]=\"selectionAreaClasses()\">\n <!-- Hours Column -->\n <div [class]=\"columnClasses()\">\n <div [class]=\"columnHeaderClasses()\">Horas</div>\n <div [class]=\"listClasses()\" #hoursList>\n @for (hour of availableHours; track hour) {\n <div\n [class]=\"\n getOptionClasses(\n selectedHour() === hour,\n isHourDisabled(hour)\n )\n \"\n [attr.data-value]=\"hour\"\n (click)=\"selectHour(hour)\"\n >\n {{ formatNumber(hour) }}\n </div>\n }\n </div>\n </div>\n\n <!-- Separator -->\n <div [class]=\"separatorClasses()\">:</div>\n\n <!-- Minutes Column -->\n <div [class]=\"columnClasses()\">\n <div [class]=\"columnHeaderClasses()\">Minutos</div>\n <div [class]=\"listClasses()\" #minutesList>\n @for (minute of availableMinutes(); track minute) {\n <div\n [class]=\"\n getOptionClasses(\n selectedMinute() === minute,\n isMinuteDisabled(minute)\n )\n \"\n [attr.data-value]=\"minute\"\n (click)=\"selectMinute(minute)\"\n >\n {{ formatNumber(minute) }}\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div [class]=\"actionsClasses()\">\n <button\n type=\"button\"\n [class]=\"actionButtonClasses()\"\n (click)=\"selectNow()\"\n [disabled]=\"state() === 'disabled'\"\n >\n Ahora\n </button>\n <button\n type=\"button\"\n [class]=\"actionButtonClasses()\"\n (click)=\"clearTime()\"\n [disabled]=\"state() === 'disabled'\"\n >\n Limpiar\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Error Message -->\n @if (state() === 'error' && errorMessage()) {\n <span [class]=\"errorMessageClasses()\" [attr.id]=\"errorMessageId\">\n {{ errorMessage() }}\n </span>\n }\n </div>\n `,\n})\nexport class TimePickerComponent implements OnInit {\n private readonly elementRef = inject(ElementRef);\n\n /** Size of the input */\n readonly size = input<TimePickerSize>('md');\n\n /** Current state */\n readonly state = input<TimePickerState>('default');\n\n /** Selected time in HH:mm format */\n readonly value = input<string>('');\n\n /** Placeholder text */\n readonly placeholder = input<string>('HH:mm');\n\n /** Optional label */\n readonly label = input<string>('');\n\n /** Error message */\n readonly errorMessage = input<string>('');\n\n /** Minimum time (HH:mm format) */\n readonly minTime = input<string>('');\n\n /** Maximum time (HH:mm format) */\n readonly maxTime = input<string>('');\n\n /** Step for minutes */\n readonly stepMinutes = input<number>(1);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<{ hour: number; minute: number }>();\n\n /** Open state change event */\n readonly openChange = output<boolean>();\n\n @ViewChild('hoursList') hoursList: ElementRef | undefined;\n @ViewChild('minutesList') minutesList: ElementRef | undefined;\n\n // Internal state\n readonly isOpen = signal<boolean>(false);\n readonly selectedHour = signal<number>(0);\n readonly selectedMinute = signal<number>(0);\n readonly isFocused = signal<boolean>(false);\n readonly internalValue = signal<string>('');\n\n readonly errorMessageId = `timepicker-error-${Math.random().toString(36).substr(2, 9)}`;\n\n constructor() {\n // Sync internal value with input value\n effect(() => {\n const val = this.value();\n if (val) {\n this.internalValue.set(val);\n const parsed = this.parseTime(val);\n this.selectedHour.set(parsed.hour);\n this.selectedMinute.set(parsed.minute);\n }\n });\n }\n\n // Available hours (0-23)\n readonly availableHours = Array.from({ length: 24 }, (_, i) => i);\n\n // Available minutes based on step\n readonly availableMinutes = computed(() => {\n const minutes: number[] = [];\n for (let i = 0; i < 60; i += this.stepMinutes()) {\n minutes.push(i);\n }\n return minutes;\n });\n\n // Computed time value - uses internal value for display\n readonly timeValue = computed(() => this.internalValue());\n\n // Computed display state\n readonly displayState = computed<TimePickerState>(() => {\n if (this.state() === 'error') return 'error';\n if (this.isFocused() && this.state() !== 'disabled') return 'focus';\n return this.state();\n });\n\n // Computed classes\n readonly fieldClasses = computed(() => clsx(timepickerFieldVariants()));\n\n readonly labelClasses = computed(() => clsx(timepickerLabelVariants()));\n\n readonly wrapperClasses = computed(() =>\n clsx(\n timepickerWrapperVariants({\n size: this.size(),\n state: this.displayState(),\n }),\n this.className(),\n ),\n );\n\n readonly inputClasses = computed(() =>\n clsx(timepickerInputVariants({ state: this.displayState() })),\n );\n\n readonly iconButtonClasses = computed(() =>\n clsx(\n timepickerIconButtonVariants(),\n this.state() === 'error' && 'text-destructive',\n ),\n );\n\n readonly dropdownClasses = computed(() =>\n clsx(timepickerDropdownVariants({ size: this.size() })),\n );\n\n readonly selectionAreaClasses = computed(() =>\n clsx(timepickerSelectionAreaVariants()),\n );\n\n readonly columnClasses = computed(() => clsx(timepickerColumnVariants()));\n\n readonly columnHeaderClasses = computed(() =>\n clsx(timepickerColumnHeaderVariants()),\n );\n\n readonly listClasses = computed(() => clsx(timepickerListVariants()));\n\n readonly separatorClasses = computed(() =>\n clsx(timepickerSeparatorVariants()),\n );\n\n readonly actionsClasses = computed(() => clsx(timepickerActionsVariants()));\n\n readonly actionButtonClasses = computed(() =>\n clsx(timepickerActionButtonVariants()),\n );\n\n readonly errorMessageClasses = computed(() =>\n clsx(timepickerErrorMessageVariants()),\n );\n\n readonly iconColor = computed(() =>\n this.state() === 'error' ? 'currentColor' : 'currentColor',\n );\n\n getOptionClasses(selected: boolean, disabled: boolean): string {\n return clsx(timepickerOptionVariants({ selected, disabled }));\n }\n\n ngOnInit(): void {\n // Initial sync is handled by effect in constructor\n }\n\n parseTime(time: string): { hour: number; minute: number } {\n if (!time) {\n return { hour: 0, minute: 0 };\n }\n const [h, m] = time.split(':').map(Number);\n return { hour: isNaN(h) ? 0 : h, minute: isNaN(m) ? 0 : m };\n }\n\n formatNumber(value: number): string {\n return String(value).padStart(2, '0');\n }\n\n isHourDisabled(hour: number): boolean {\n const min = this.minTime();\n const max = this.maxTime();\n\n if (!min && !max) return false;\n\n const minParsed = this.parseTime(min);\n const maxParsed = this.parseTime(max);\n\n if (min && hour < minParsed.hour) return true;\n if (max && hour > maxParsed.hour) return true;\n\n return false;\n }\n\n isMinuteDisabled(minute: number): boolean {\n const min = this.minTime();\n const max = this.maxTime();\n\n if (!min && !max) return false;\n\n const minParsed = this.parseTime(min);\n const maxParsed = this.parseTime(max);\n\n if (\n min &&\n this.selectedHour() === minParsed.hour &&\n minute < minParsed.minute\n ) {\n return true;\n }\n\n if (\n max &&\n this.selectedHour() === maxParsed.hour &&\n minute > maxParsed.minute\n ) {\n return true;\n }\n\n return false;\n }\n\n selectHour(hour: number): void {\n if (this.state() === 'disabled' || this.isHourDisabled(hour)) return;\n this.selectedHour.set(hour);\n this.updateTimeValue();\n }\n\n selectMinute(minute: number): void {\n if (this.state() === 'disabled' || this.isMinuteDisabled(minute)) return;\n this.selectedMinute.set(minute);\n this.updateTimeValue();\n }\n\n selectNow(): void {\n if (this.state() === 'disabled') return;\n\n const now = new Date();\n const hour = now.getHours();\n const minute = now.getMinutes();\n const snappedMinute =\n Math.round(minute / this.stepMinutes()) * this.stepMinutes();\n\n this.selectedHour.set(hour);\n this.selectedMinute.set(Math.min(snappedMinute, 59));\n this.updateTimeValue();\n\n // Scroll to show selected values\n this.scrollToSelected();\n }\n\n /** Scroll both lists to show the selected values centered */\n private scrollToSelected(): void {\n // Use setTimeout to allow Angular to render the changes first\n setTimeout(() => {\n this.scrollToElement(this.hoursList, this.selectedHour());\n this.scrollToElement(this.minutesList, this.selectedMinute());\n }, 0);\n }\n\n /** Scroll a list to center the element with the given value */\n private scrollToElement(\n listRef: ElementRef | undefined,\n value: number,\n ): void {\n if (!listRef?.nativeElement) return;\n\n const listElement = listRef.nativeElement as HTMLElement;\n const optionElement = listElement.querySelector(\n `[data-value=\"${value}\"]`,\n ) as HTMLElement;\n\n if (optionElement) {\n // Calculate scroll position to center the element\n const listHeight = listElement.clientHeight;\n const optionTop = optionElement.offsetTop;\n const optionHeight = optionElement.offsetHeight;\n\n // Scroll to center the option in the list\n const scrollTop = optionTop - listHeight / 2 + optionHeight / 2;\n listElement.scrollTo({\n top: Math.max(0, scrollTop),\n behavior: 'smooth',\n });\n }\n }\n\n clearTime(): void {\n if (this.state() === 'disabled') return;\n\n this.selectedHour.set(0);\n this.selectedMinute.set(0);\n this.internalValue.set('');\n this.valueChange.emit('');\n this.selectionChange.emit({ hour: 0, minute: 0 });\n }\n\n updateTimeValue(): void {\n const newValue = `${this.formatNumber(this.selectedHour())}:${this.formatNumber(this.selectedMinute())}`;\n this.internalValue.set(newValue);\n this.valueChange.emit(newValue);\n this.selectionChange.emit({\n hour: this.selectedHour(),\n minute: this.selectedMinute(),\n });\n }\n\n toggleDropdown(): void {\n if (this.state() === 'disabled') return;\n const wasOpen = this.isOpen();\n this.isOpen.update((v) => !v);\n this.openChange.emit(this.isOpen());\n\n // Scroll to selected values when opening\n if (!wasOpen && this.internalValue()) {\n this.scrollToSelected();\n }\n }\n\n openDropdown(): void {\n if (this.state() === 'disabled') return;\n if (!this.isOpen()) {\n this.isOpen.set(true);\n this.openChange.emit(true);\n\n // Scroll to selected values when opening\n if (this.internalValue()) {\n this.scrollToSelected();\n }\n }\n }\n\n closeDropdown(): void {\n this.isOpen.set(false);\n this.isFocused.set(false);\n this.openChange.emit(false);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const hostElement = this.elementRef.nativeElement;\n\n // Check if click is outside the component\n if (!hostElement.contains(target) && this.isOpen()) {\n this.closeDropdown();\n }\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Toast container variants\n *\n * Controls the overall toast container styles\n */\nexport const toastVariants = cva(\n clsx(\n // Layout\n 'relative inline-flex items-center justify-center',\n // Spacing\n 'gap-2.5 h-10 py-3 pr-4 pl-7',\n // Shape\n 'rounded',\n // Border\n 'border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-sm font-medium leading-normal tracking-tight',\n ),\n {\n variants: {\n variant: {\n default: 'text-sky-600',\n info: 'text-blue-600',\n success: 'text-green-600',\n warning: 'text-yellow-600',\n destructive: 'text-red-600',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Toast accent variants\n *\n * Controls the left accent bar\n */\nexport const toastAccentVariants = cva(\n clsx(\n // Position\n 'absolute left-0 top-0',\n // Size\n 'w-2 h-full',\n // Shape\n 'rounded-l',\n ),\n {\n variants: {\n variant: {\n default: 'bg-sky-200',\n info: 'bg-blue-200',\n success: 'bg-green-200',\n warning: 'bg-yellow-200',\n destructive: 'bg-red-200',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Toast icon variants\n *\n * Controls the icon styling\n */\nexport const toastIconVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-6 h-6',\n ),\n);\n\n/**\n * Toast content variants\n *\n * Controls the text content area\n */\nexport const toastContentVariants = cva(\n clsx(\n // Layout\n 'flex-shrink',\n // Typography\n 'text-left whitespace-nowrap',\n ),\n);\n\n/**\n * Toast close button variants\n *\n * Controls the close/dismiss button\n */\nexport const toastCloseVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-2 h-2 p-0',\n // Reset\n 'border-none bg-transparent',\n // Cursor\n 'cursor-pointer',\n // Layout\n 'flex items-center justify-center',\n // Hover\n 'hover:opacity-80',\n // Focus\n 'focus:outline-none',\n 'focus-visible:outline-2 focus-visible:outline-current focus-visible:outline-offset-2 focus-visible:rounded-sm',\n ),\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n toastAccentVariants,\n toastCloseVariants,\n toastContentVariants,\n toastIconVariants,\n toastVariants,\n} from './toast.variants';\n\nexport type ToastVariant =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\nexport type ToastVariantsProps = VariantProps<typeof toastVariants>;\n\n/**\n * Toast Component\n *\n * A notification component for displaying brief messages to users.\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-toast\n * variant=\"success\"\n * content=\"Operation completed successfully\"\n * [dismissible]=\"true\"\n * (dismiss)=\"onDismiss()\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-toast',\n standalone: true,\n template: `\n @if (!dismissed()) {\n <div [class]=\"toastClasses()\" role=\"status\" aria-live=\"polite\">\n <div [class]=\"accentClasses()\"></div>\n\n <!-- Icon based on variant -->\n @switch (variant()) {\n @case ('default') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.2904 1.13038C12.7758 0.738816 15.3201 1.21183 17.4994 2.46924C17.9776 2.74518 18.1423 3.35617 17.8666 3.83448C17.5906 4.31285 16.9788 4.4767 16.5004 4.20069C14.7174 3.17195 12.6354 2.78567 10.602 3.10596C8.5685 3.42633 6.70596 4.43431 5.32559 5.96143C3.94523 7.48862 3.12994 9.44313 3.01602 11.4985C2.90213 13.554 3.49639 15.587 4.69961 17.2573C5.90283 18.9276 7.64271 20.1352 9.62832 20.6782C11.6139 21.2212 13.726 21.0672 15.6117 20.2417C17.4976 19.4162 19.0436 17.9684 19.9916 16.1411C20.9395 14.3139 21.2317 12.2168 20.8207 10.1997C20.7105 9.65867 21.06 9.13044 21.601 9.02003C22.1421 8.90976 22.6704 9.25918 22.7807 9.8003C23.283 12.2657 22.9247 14.8286 21.766 17.062C20.6073 19.2954 18.7184 21.0647 16.4135 22.0737C14.1087 23.0826 11.5277 23.2705 9.10098 22.6069C6.67406 21.9432 4.54717 20.4678 3.07656 18.4263C1.60598 16.3847 0.879785 13.9004 1.01895 11.3882C1.15814 8.87595 2.15504 6.48722 3.84219 4.62061C5.52932 2.75412 7.80509 1.52194 10.2904 1.13038ZM21.2934 3.29249C21.6839 2.90241 22.317 2.90215 22.7074 3.29249C23.0979 3.68301 23.0979 4.317 22.7074 4.70753L12.7074 14.7075C12.317 15.0978 11.6839 15.0976 11.2934 14.7075L8.29336 11.7075C7.90284 11.317 7.90284 10.683 8.29336 10.2925C8.6839 9.90241 9.31704 9.90215 9.70742 10.2925L12.0004 12.5855L21.2934 3.29249Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n @case ('info') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 16V12M12 8H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n @case ('success') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 6L9 17L4 12\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n @case ('warning') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 9V13M12.0001 17H12.0101M21.7301 18L13.7301 4C13.5556 3.6922 13.3027 3.43618 12.997 3.25806C12.6913 3.07995 12.3438 2.9861 11.9901 2.9861C11.6363 2.9861 11.2888 3.07995 10.9831 3.25806C10.6774 3.43618 10.4245 3.6922 10.2501 4L2.25005 18C2.07373 18.3054 1.98128 18.6519 1.98206 19.0045C1.98284 19.3571 2.07683 19.7032 2.2545 20.0078C2.43217 20.3124 2.6872 20.5646 2.99375 20.7388C3.30029 20.9131 3.64746 21.0032 4.00005 21H20.0001C20.351 20.9996 20.6956 20.907 20.9993 20.7313C21.3031 20.5556 21.5553 20.3031 21.7306 19.9991C21.9059 19.6951 21.9981 19.3504 21.998 18.9995C21.9979 18.6486 21.9055 18.3039 21.7301 18Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n @case ('destructive') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.929 4.929L19.07 19.071M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n }\n\n <!-- Content -->\n <span [class]=\"contentClasses()\">{{ content() }}</span>\n\n <!-- Close button -->\n @if (dismissible()) {\n <button\n type=\"button\"\n [class]=\"closeClasses()\"\n (click)=\"dismissToast()\"\n aria-label=\"Close toast\"\n >\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.02459 0.167369C7.24775 -0.0557898 7.60947 -0.0557898 7.83263 0.167369C8.05579 0.390529 8.05579 0.752255 7.83263 0.975414L4.80804 4L7.83263 7.02459C8.05579 7.24775 8.05579 7.60947 7.83263 7.83263C7.60947 8.05579 7.24775 8.05579 7.02459 7.83263L4 4.80804L0.975414 7.83263C0.752255 8.05579 0.390529 8.05579 0.167369 7.83263C-0.0557898 7.60947 -0.0557898 7.24775 0.167369 7.02459L3.19196 4L0.167369 0.975414C-0.0557898 0.752255 -0.0557898 0.390529 0.167369 0.167369C0.390529 -0.0557898 0.752255 -0.0557898 0.975414 0.167369L4 3.19196L7.02459 0.167369Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n </button>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent {\n /** Toast variant */\n readonly variant = input<ToastVariant>('default');\n\n /** Whether the toast can be dismissed */\n readonly dismissible = input<boolean>(false);\n\n /** Toast message content */\n readonly content = input<string>('Componente de toast Default');\n\n /** Additional CSS classes for the toast container */\n readonly className = input<string>();\n\n /** Dismiss event */\n readonly dismiss = output<void>();\n\n /** Internal dismissed state */\n readonly dismissed = signal<boolean>(false);\n\n // Computed classes\n readonly toastClasses = computed(() =>\n clsx(toastVariants({ variant: this.variant() }), this.className()),\n );\n\n readonly accentClasses = computed(() =>\n clsx(toastAccentVariants({ variant: this.variant() })),\n );\n\n readonly iconClasses = computed(() => clsx(toastIconVariants()));\n\n readonly contentClasses = computed(() => clsx(toastContentVariants()));\n\n readonly closeClasses = computed(() => clsx(toastCloseVariants()));\n\n readonly iconColor = computed(() => {\n const colorMap: Record<ToastVariant, string> = {\n default: '#0284C7', // Sky-600\n info: '#2563EB', // Blue-600\n success: '#16A34A', // Green-600\n warning: '#CA8A04', // Yellow-600\n destructive: '#DC2626', // Red-600\n };\n return colorMap[this.variant()];\n });\n\n dismissToast(): void {\n this.dismissed.set(true);\n this.dismiss.emit();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Tooltip trigger variants\n *\n * Controls the wrapper element that triggers the tooltip\n */\nexport const tooltipTriggerVariants = cva(\n clsx(\n // Layout\n 'relative inline-block',\n // Cursor\n 'cursor-pointer',\n // Focus\n 'outline-none',\n 'focus:outline-2 focus:outline-ring focus:outline-offset-2 focus:rounded',\n ),\n);\n\n/**\n * Tooltip content variants\n *\n * Controls the floating tooltip overlay\n */\nexport const tooltipContentVariants = cva(\n clsx(\n // Position\n 'absolute z-50',\n // Colors (semantic tokens)\n 'bg-tooltip text-tooltip-foreground',\n // Shape (using border token)\n 'rounded-(--border-tooltip-radius)',\n // Spacing\n 'px-3 py-1.5',\n // Typography\n 'text-xs font-medium leading-normal',\n // Behavior\n 'whitespace-nowrap pointer-events-none select-none',\n // Shadow (semantic token)\n 'shadow-(--shadow-tooltip)',\n // Animation\n 'animate-in fade-in-0 zoom-in-95',\n ),\n {\n variants: {\n placement: {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n },\n },\n defaultVariants: {\n placement: 'top',\n },\n },\n);\n\n/**\n * Tooltip arrow variants\n *\n * Controls the arrow/pointer element\n */\nexport const tooltipArrowVariants = cva(\n clsx(\n // Position\n 'absolute',\n // Size\n 'size-2',\n // Color (semantic token - matches tooltip background)\n 'bg-tooltip',\n // Shape\n 'rounded-px rotate-45',\n ),\n {\n variants: {\n placement: {\n top: '-bottom-1 left-1/2 -translate-x-1/2',\n bottom: '-top-1 left-1/2 -translate-x-1/2',\n left: '-right-1 top-1/2 -translate-y-1/2',\n right: '-left-1 top-1/2 -translate-y-1/2',\n },\n },\n defaultVariants: {\n placement: 'top',\n },\n },\n);\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n input,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n tooltipArrowVariants,\n tooltipContentVariants,\n tooltipTriggerVariants,\n} from './tooltip.variants';\n\nexport type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';\n\nexport type TooltipContentVariantsProps = VariantProps<\n typeof tooltipContentVariants\n>;\n\n/**\n * Tooltip Component\n *\n * A floating label that appears on hover/focus to provide additional information.\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-tooltip content=\"Tooltip text\" placement=\"top\">\n * <button>Hover me</button>\n * </bsg-tooltip>\n * ```\n */\n@Component({\n selector: 'bsg-tooltip',\n standalone: true,\n template: `\n <div\n [class]=\"triggerClasses()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (mousedown)=\"onMouseDown()\"\n tabindex=\"0\"\n [attr.aria-describedby]=\"tooltipId\"\n #triggerElement\n >\n <ng-content />\n\n @if (isVisible() && !disabled()) {\n <div\n [class]=\"contentClasses()\"\n [attr.id]=\"tooltipId\"\n role=\"tooltip\"\n #tooltipElement\n >\n <div class=\"flex items-center gap-1.5\">\n {{ content() }}\n </div>\n <div [class]=\"arrowClasses()\"></div>\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n position: relative;\n display: inline-block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements AfterContentInit {\n /** Tooltip content text */\n readonly content = input<string>('');\n\n /** Tooltip placement */\n readonly placement = input<TooltipPlacement>('top');\n\n /** Whether the tooltip is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes for the trigger */\n readonly triggerClassName = input<string>();\n\n /** Additional CSS classes for the content */\n readonly contentClassName = input<string>();\n\n @ViewChild('triggerElement') triggerElement!: ElementRef;\n @ViewChild('tooltipElement') tooltipElement!: ElementRef;\n\n readonly tooltipId = `tooltip-${Math.random().toString(36).substr(2, 9)}`;\n\n // Internal state\n readonly isVisible = signal<boolean>(false);\n private justClicked = false;\n private isMouseHovering = false;\n private hideTimeout: ReturnType<typeof setTimeout> | undefined;\n\n // Computed classes\n readonly triggerClasses = computed(() =>\n clsx(tooltipTriggerVariants(), this.triggerClassName()),\n );\n\n readonly contentClasses = computed(() =>\n clsx(\n tooltipContentVariants({ placement: this.placement() }),\n this.contentClassName(),\n ),\n );\n\n readonly arrowClasses = computed(() =>\n clsx(tooltipArrowVariants({ placement: this.placement() })),\n );\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit(): void {\n // Ensure trigger is focusable\n if (this.triggerElement) {\n const el = this.triggerElement.nativeElement;\n if (!el.getAttribute('tabindex')) {\n el.setAttribute('tabindex', '0');\n }\n }\n }\n\n /**\n * Handle mouse enter: show tooltip\n */\n onMouseEnter(): void {\n this.isMouseHovering = true;\n this.show();\n }\n\n /**\n * Handle mouse leave: hide tooltip\n */\n onMouseLeave(): void {\n this.isMouseHovering = false;\n this.hide();\n }\n\n /**\n * Handle focus: show tooltip only if triggered by keyboard\n */\n onFocus(): void {\n if (this.justClicked) {\n this.justClicked = false;\n return;\n }\n this.show();\n }\n\n /**\n * Handle blur: hide tooltip\n */\n onBlur(): void {\n this.isMouseHovering = false;\n this.justClicked = false;\n this.hide();\n }\n\n /**\n * Track mouse down to detect click-triggered focus\n */\n onMouseDown(): void {\n this.justClicked = true;\n setTimeout(() => {\n this.justClicked = false;\n }, 0);\n }\n\n private show(): void {\n if (this.disabled()) {\n return;\n }\n clearTimeout(this.hideTimeout);\n this.isVisible.set(true);\n this.cdr.markForCheck();\n }\n\n private hide(): void {\n this.hideTimeout = setTimeout(() => {\n this.isVisible.set(false);\n this.cdr.markForCheck();\n }, 0);\n }\n}\n","/*\n * Public API Surface of bsg-integra\n */\n\n// Components\nexport * from './lib/components/accordion';\nexport * from './lib/components/alert';\nexport * from './lib/components/avatar';\nexport * from './lib/components/badge';\nexport * from './lib/components/button';\nexport * from './lib/components/card';\nexport * from './lib/components/carousel';\nexport * from './lib/components/checkbox';\nexport * from './lib/components/collapsible';\nexport * from './lib/components/combobox';\nexport * from './lib/components/dialog';\nexport * from './lib/components/input';\nexport * from './lib/components/label';\nexport * from './lib/components/radio';\nexport * from './lib/components/radio-group';\nexport * from './lib/components/select';\nexport * from './lib/components/side-navbar';\nexport * from './lib/components/skeleton';\nexport * from './lib/components/spinner';\nexport * from './lib/components/switch';\nexport * from './lib/components/tab-navigation';\nexport * from './lib/components/table';\nexport * from './lib/components/textarea';\nexport * from './lib/components/timepicker';\nexport * from './lib/components/toast';\nexport * from './lib/components/tooltip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;AAGA;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI;AACF;AACA,QAAQ,CACT,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,qCAAqC;AAC/C,YAAA,QAAQ,EAAE,0BAA0B;AACrC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,wBAAwB;AACxB;AACA,iBAAiB,CAClB;AAGH;;;;AAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,iDAAiD;AACjD;AACA,WAAW;AACX;AACA,uBAAuB;AACvB;AACA,6BAA6B;AAC7B;AACA,iBAAiB;AACjB;AACA,qGAAqG;AACrG;AACA,0DAA0D,CAC3D;AAGH;;;;AAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,iBAAiB;AACjB;AACA,+BAA+B,EAE/B,WAAW,CACZ;;ACpEH;;;;;;;;;;;;AAYG;MAeU,kBAAkB,CAAA;;AAEpB,IAAA,OAAO,GAAG,KAAK,CAAmB,SAAS,mDAAC;;AAG5C,IAAA,IAAI,GAAG,KAAK,CAAgB,QAAQ,gDAAC;;AAGrC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;IAGnC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,YAAY,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAqB;;AAGjC,IAAA,SAAS,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,qDAAC;;IAGlD,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CACF,iBAAiB,CAAC;AAChB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,4DACF;;IAGD,QAAQ,GAAA;AACN,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE;QACtC,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,UAAU,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC;IACF;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;IACpC;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE;;YAE5B,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,oBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;gBACvB;YACF;iBAAO;gBACL,OAAO,CAAC,KAAK,EAAE;AACf,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACpB;QACF;aAAO;;YAEL,IAAI,MAAM,EAAE;AACV,gBAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACvB;iBAAO;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;YACpB;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B;wGApEW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXnB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACzBH;;;;;;;;;;AAUG;MAeU,sBAAsB,CAAA;;AAExB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC;;AAGtC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,uDAChD;;IAGD,MAAM,GAAA;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAChD;wGAlBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXvB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACjBH;;;;;;;;;AASG;MAkCU,yBAAyB,CAAA;;IAE3B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,IAAI,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACrC,IAAA,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC;;AAGtC,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,0DACnD;;IAGQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,mCAAmC,EACnC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,GAAG,EAAE,CAClC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;;IAGD,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAC3B;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9C;wGA7BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9B1B;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjCrC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACrCH;;;;;;;;;AASG;MAmBU,yBAAyB,CAAA;;IAE3B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,IAAI,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAGrC,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,0DACnD;;IAGD,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IAC3B;wGAfW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAf1B;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlBrC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,QAAA,EACN;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACvBH;;;;AAIG;AACI,MAAM,aAAa,GAAG,GAAG,CAC9B,IAAI;AACF;AACA,kCAAkC;AAClC;AACA,WAAW;AACX;AACA,SAAS;AACT;AACA,oCAAoC;AACpC;AACA,YAAY,CACb,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,OAAO,EAAE,4BAA4B;AACrC,YAAA,WAAW,EAAE,oCAAoC;AAClD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAE7D;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAEhE;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,2CAA2C;AAC3C;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,qBAAqB;AACrB;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB;AACA,kBAAkB;AAClB;AACA,iGAAiG,CAClG;;ACvDH;;;;;;;AAOG;MA0IU,cAAc,CAAA;;AAEhB,IAAA,OAAO,GAAG,KAAK,CAAe,SAAS,mDAAC;;AAGxC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;AAGnC,IAAA,OAAO,GAAG,KAAK,CAAS,8BAA8B,mDAAC;;IAGvD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,OAAO,GAAG,MAAM,EAAQ;;AAGd,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;;IAG5C,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CACF,aAAa,CAAC;AACZ,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,wDACF;;IAGQ,WAAW,GAAG,QAAQ,CAAC,MAAM,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGjD,cAAc,GAAG,QAAQ,CAAC,MAAM,oBAAoB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGvD,YAAY,GAAG,QAAQ,CAAC,MAAM,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGnD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS;SACvB;AACD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACjC,IAAA,CAAC,qDAAC;IAEF,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;wGArDW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtIf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+HT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAzI1B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+HT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AC1JH;;;;AAIG;AACI,MAAM,cAAc,GAAG,GAAG,CAC/B,IAAI;AACF;AACA,kDAAkD;AAClD;AACA,8BAA8B;AAC9B;AACA,UAAU;AACV;AACA,YAAY;AACZ;AACA,iCAAiC,CAClC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,WAAW;YACf,EAAE,EAAE,WAAW;YACf,EAAE,EAAE,WAAW;AAChB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,yBAAyB;AACzB;AACA,qCAAqC;AACrC;AACA,gDAAgD;AAChD;AACA,aAAa,CACd,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,yBAAyB;YAC7B,EAAE,EAAE,yBAAyB;AAC9B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAEjE;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI,CAAC,gDAAgD,CAAC;;ACzExD;;;;;;;;;;;;;;AAcG;MAgEU,eAAe,CAAA;;AAEjB,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC;;AAG9B,IAAA,IAAI,GAAG,KAAK,CAAa,SAAS,gDAAC;;AAGnC,IAAA,QAAQ,GAAG,KAAK,CAAS,IAAI,oDAAC;;AAG9B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;IAGzB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CACF,cAAc,CAAC;AACb,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,yDACF;;IAGQ,kBAAkB,GAAG,QAAQ,CAAC,MACrC,IAAI,CACF,cAAc,CAAC;AACb,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,EAAE,OAAO;AACd,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,8DACF;;AAGQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,sBAAsB,CAAC;AACrB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,2DACH;;IAGQ,WAAW,GAAG,QAAQ,CAAC,MAAM,kBAAkB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGlD,UAAU,GAAG,QAAQ,CAAC,MAAM,iBAAiB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGhD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;SACP;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,sDAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAA,OAAO,CAAA,IAAA,EAAO,GAAG,CAAA,CAAA,EAAI,GAAG,EAAE;AAC5B,IAAA,CAAC,uDAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,sDAAC;;AAGlD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,MAAM,GAA+B;YACzC,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,EAAE;SACP;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,IAAA,CAAC,uDAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,MAAM,GAA+B;YACzC,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,IAAI;YACR,EAAE,EAAE,EAAE;SACP;AACD,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC5B,IAAA,CAAC,sDAAC;;AAGO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,KAAK,GAA+B;AACxC,YAAA,EAAE,EAAE,4LAA4L;AAChM,YAAA,EAAE,EAAE,gLAAgL;AACpL,YAAA,EAAE,EAAE,2LAA2L;AAC/L,YAAA,EAAE,EAAE,qLAAqL;AACzL,YAAA,EAAE,EAAE,8KAA8K;SACnL;AACD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,IAAA,CAAC,oDAAC;wGAvGS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5DhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FAOU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA/D3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;ACnFI,MAAM,aAAa,GAAG,GAAG,CAC9B,IAAI;AACF;AACA,6DAA6D,EAC7D,yCAAyC,EACzC,cAAc;AACd;AACA,iCAAiC,CAClC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,SAAS,EAAE,wCAAwC;AACnD,YAAA,WAAW,EAAE,4CAA4C;AACzD,YAAA,OAAO,EAAE,oCAAoC;AAC7C,YAAA,OAAO,EAAE,oDAAoD;AAC9D,SAAA;AAED,QAAA,IAAI,EAAE;YACJ,GAAG,EAAE,SAAS;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AAED,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,WAAW,EAAE,EAAE;AAChB,SAAA;AACF,KAAA;AAED,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE,qCAAqC;AAC7C,SAAA;;AAGD,QAAA;AACE,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,IAAI,CACT,eAAe,EACf,wBAAwB,EACxB,cAAc,EACd,mBAAmB,CACpB;AACF,SAAA;;AAGD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,IAAI,CACT,KAAK;AACL,YAAA,WAAW;YACX,wBAAwB,EACxB,mBAAmB,CACpB;AACF,SAAA;;AAGD,QAAA;AACE,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,KAAK,EAAE,IAAI,CACT,KAAK;AACL,YAAA,WAAW;AACX,YAAA,wBAAwB,EACxB,mBAAmB,EACnB,SAAS,CACV;AACF,SAAA;AACF,KAAA;AAED,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACF,CAAA;AAKI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI,CACF,kBAAkB,CAEnB;;AC/EH;;;;;;;;;;;AAWG;MA2CU,cAAc,CAAA;;AAEhB,IAAA,OAAO,GAAG,KAAK,CAAe,SAAS,mDAAC;;AAGxC,IAAA,IAAI,GAAG,KAAK,CAAY,SAAS,gDAAC;;AAGlC,IAAA,MAAM,GAAG,KAAK,CAAc,MAAM,kDAAC;;AAGnC,IAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,iDAAC;;IAGpC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,qDAAC;;IAGhD,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CACF,aAAa,CAAC;AACZ,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,wDACF;;AAGQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;wGAhCrD,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvCf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBA1C1B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AC7DH;AAIO,MAAM,cAAc,GAAG,GAAG,CAC/B,IAAI,CACF,yCAAyC,EACzC,SAAS,EACT,mDAAmD,EACnD,gBAAgB,EAChB,6BAA6B,EAC7B,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,UAAU,CACX,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,EAAE,EAAE,oBAAoB;AACzB,SAAA;AACD,QAAA,OAAO,EAAE;YACP,OAAO,EAAE,IAAI,CACX,0BAA0B,EAC1B,kBAAkB,EAClB,oDAAoD,EACpD,4GAA4G,CAC7G;YACD,SAAS,EAAE,IAAI,CACb,wBAAwB,EACxB,kBAAkB,EAClB,oDAAoD,EACpD,wGAAwG,CACzG;YACD,OAAO,EAAE,IAAI,CACX,yDAAyD,EACzD,oBAAoB,EACpB,sBAAsB,EACtB,8IAA8I,CAC/I;YACD,KAAK,EAAE,IAAI,CACT,8BAA8B,EAC9B,kBAAkB,EAClB,oDAAoD,EACpD,4GAA4G,CAC7G;YACD,IAAI,EAAE,IAAI,CACR,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EAClB,0GAA0G,CAC3G;YACD,WAAW,EAAE,IAAI,CACf,uBAAuB,EACvB,kBAAkB,EAClB,oDAAoD,EACpD,sGAAsG,CACvG;AACF,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,WAAW,EAAE,cAAc;AAC5B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,mDAAmD;AACzD,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;QAChB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE;QAC7D,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE;QAC7D,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE;AAE7D,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,iDAAiD;AACzD,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,iDAAiD;AACzD,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,iDAAiD;AACzD,SAAA;AAED,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EACH,8OAA8O;AACjP,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,mDAAmD;AAC3D,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,+CAA+C;AACvD,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,uDAAuD;AAC/D,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,wDAAwD;AAChE,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,KAAK,EAAE,6CAA6C;AACrD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI,CAAC,+DAA+D,CAAC,EACrE;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAE,KAAK;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,MAAM;AACjB,KAAA;AACF,CAAA;AAGI,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AAEpD,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI,CAAC,+CAA+C,CAAC,EACrD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,KAAA;AACD,IAAA,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAChC,CAAA;AAGH;AACO,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI,CAAC,mDAAmD,CAAC,EACzD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,WAAW,EAAE,EAAE;AAChB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,aAAa;AACrB,KAAA;AACF,CAAA;;MCzEU,eAAe,CAAA;AACjB,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC;AAC9B,IAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,mDAAC;AACzC,IAAA,KAAK,GAAG,KAAK,CAAc,aAAa,iDAAC;AACzC,IAAA,KAAK,GAAG,KAAK,CAAS,OAAO,iDAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;AAGhC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,IAAA,SAAS,GAAG,KAAK,CAAgB,IAAI,qDAAC;IAEtC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC3B,KAAK,GAAG,MAAM,EAAS;AAEvB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,sDAAC;IAC9D,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,MAAM,wDAC9D;AAEQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,0DAC3D;AACQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAC7B,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,sDAC3D;AACQ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAC5B,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,qDAC3D;IAEQ,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CACF,cAAc,CAAC;AACb,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;AAC5B,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,yDACF;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC1D,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpD;IACQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrD;AAED,IAAA,WAAW,CAAC,QAAqC,EAAA;QAC/C,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C;AAEA,IAAA,WAAW,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAChD;wGAzDW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3EhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA,CAAA;;4FAeU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA9E3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gGAAA,CAAA,EAAA;;;ACxFH;;;;AAIG;AACI,MAAM,YAAY,GAAG,GAAG,CAC7B,IAAI;AACF;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,YAAY;AACZ;AACA,SAAS;AACT;AACA,6BAA6B,CAC9B,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,sBAAsB;AAChC,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,IAAI,CACV,6BAA6B,EAC7B,gBAAgB,EAChB,cAAc,EACd,gDAAgD,CACjD;AACD,YAAA,QAAQ,EAAE,IAAI,CACZ,6BAA6B,EAC7B,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,qBAAqB,CACtB;AACD,YAAA,YAAY,EAAE,IAAI,CAChB,2BAA2B,EAC3B,KAAK,EACL,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,qBAAqB,CACtB;YACD,WAAW,EAAE,IAAI,CACf,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,CACN;AACF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,cAAc,EAAE,SAAS;AAC1B,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,mCAAmC;AACnC;AACA,OAAO,CACR;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,OAAO;AACP;AACA,oCAAoC;AACpC;AACA,uBAAuB,CACxB;AAGH;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,UAAU,CACX;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,SAAS;AACT;AACA,UAAU,CACX;AAGH;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI;AACF;AACA,0CAA0C;AAC1C;AACA,sBAAsB,CACvB;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,qBAAqB;AACrB;AACA,OAAO,CACR;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,oCAAoC;AACpC;AACA,UAAU;AACV;AACA,cAAc,CACf;AAGH;;;;AAIG;AACI,MAAM,6BAA6B,GAAG,GAAG,CAC9C,IAAI;AACF;AACA,wCAAwC;AACxC;AACA,uBAAuB,CACxB;AAGH;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,qBAAqB;AACrB;AACA,gDAAgD;AAChD;AACA,uBAAuB,CACxB;AAGH;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,qBAAqB;AACrB;AACA,+CAA+C;AAC/C;AACA,kBAAkB,CACnB;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,qBAAqB;AACrB;AACA,gDAAgD;AAChD;AACA,uBAAuB,CACxB;AAGH;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,qBAAqB;AACrB;AACA,8CAA8C;AAC9C;AACA,uBAAuB,CACxB;AAGH;;;;AAIG;AACI,MAAM,yBAAyB,GAAG,GAAG,CAC1C,IAAI;AACF;AACA,MAAM;AACN;AACA,oCAAoC;AACpC;AACA,iBAAiB,CAClB;AAGH;;;;AAIG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAC5C,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,OAAO,CACR;AAGH;;;;AAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,kDAAkD;AAClD;AACA,mBAAmB,CACpB;AAGH;;;;AAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,MAAM;AACN;AACA,kCAAkC;AAClC;AACA,WAAW,CACZ;AAGH;;;AAGG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC;AAG5C,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,SAAS,CAAC;AAGpC,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI,CAAC,+BAA+B,EAAE,OAAO,EAAE,MAAM,CAAC;;AC/RxD;AACA,MAAM,YAAY,GAAG,CAAA;;;;;;;;;OASd;AAEP;;;AAGG;MAMU,mBAAmB,CAAA;IACrB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,mDACjD;wGAJU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2NAFpB,CAAA,wDAAA,CAA0D,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEzD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,wDAAA,CAA0D;AACrE,iBAAA;;MAaY,iBAAiB,CAAA;IACnB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,mDAC/C;wGAJU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,yNAFlB,CAAA,wDAAA,CAA0D,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEzD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,wDAAA,CAA0D;AACrE,iBAAA;;MAaY,mBAAmB,CAAA;IACrB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAC3B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAC1B,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,mDACjD;wGAJU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2NAFpB,CAAA,wDAAA,CAA0D,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEzD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,wDAAA,CAA0D;AACrE,iBAAA;;AAQD;;AAEG;MAyGU,aAAa,CAAA;AACJ,IAAA,SAAA;AAApB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAiB;AAErC,IAAA,OAAO,GAAG,KAAK,CAAc,SAAS,mDAAC;AACvC,IAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,0DAAC;IACrD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,WAAW,GAAG,KAAK,CAAkB,EAAE,uDAAC;;AAGxC,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,qDAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;;AAG5B,IAAA,aAAa,GAAG,KAAK,CAAS,EAAE,yDAAC;AACjC,IAAA,YAAY,GAAG,KAAK,CAAS,EAAE,wDAAC;;AAGhC,IAAA,MAAM,GAAG,KAAK,CAAS,qBAAqB,kDAAC;AAC7C,IAAA,KAAK,GAAG,KAAK,CAAkB,IAAI,iDAAC;AACpC,IAAA,MAAM,GAAG,KAAK,CAAS,QAAQ,kDAAC;AAChC,IAAA,IAAI,GAAG,KAAK,CAAS,OAAO,gDAAC;AAC7B,IAAA,iBAAiB,GAAG,KAAK,CAAS,0BAA0B,6DAAC;;AAG7D,IAAA,WAAW,GAAG,eAAe,CAAC,mBAAmB,uDAAC;AAClD,IAAA,UAAU,GAAG,eAAe,CAAC,iBAAiB,sDAAC;AAC/C,IAAA,WAAW,GAAG,eAAe,CAAC,mBAAmB,uDAAC;AAElD,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,QACE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,GAAG,CAAC;AAEjC,IAAA,CAAC,oDAAC;;IAGO,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CACF,YAAY,CAAC;AACX,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;AACtC,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,uDACF;AAEQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC1D,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9D,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAClE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACxD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC1D,IAAA,wBAAwB,GAAG,QAAQ,CAAC,MAC3C,IAAI,CAAC,6BAA6B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACtC;AACQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACpE,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACpE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9D,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAClC;AACQ,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MACzC,IAAI,CAAC,2BAA2B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpC;AACQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjC;AACQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjC;IAED,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,YAAY,CAAC;IAC7D;wGA/EW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,s7DA2Be,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EACpB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAChB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlIhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8FT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAxGzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8FT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;8/CAkCsC,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACpB,iBAAiB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAChB,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9NrD,MAAM,yBAAyB,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;AAErE,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI,CACF,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,eAAe;AACf;AACA,0CAA0C,EAC1C,aAAa,CACd;AAGI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;MAG5D,qBAAqB,GAAG,GAAG,CACtC,IAAI,CACF,MAAM,EACN,uCAAuC,EACvC,+CAA+C,EAC/C,uBAAuB,EACvB,QAAQ,EACR,aAAa,CACd;AAGH;;;AAGG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI,CACF,mCAAmC,EACnC,MAAM,EACN,UAAU,EACV,kCAAkC;AAElC;AACA,6DAA6D;AAE7D;AACA,iDAAiD;AAEjD;AACA,cAAc;AAEd;AACA,oBAAoB,EACpB,iCAAiC,EACjC,iDAAiD,EACjD,+BAA+B,EAE/B,mFAAmF,EACnF,sCAAsC,CACvC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,MAAM;AAClB,KAAA;AACF,CAAA;AAGI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI,CACF,OAAO,EACP,6DAA6D,EAC7D,qBAAqB,CACtB;AAGI,MAAM,0BAA0B,GAAG,GAAG,CAC3C,IAAI,CACF,kCAAkC,EAClC,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,qBAAqB,CACtB;AAGI,MAAM,yBAAyB,GAAG,GAAG,CAC1C,IAAI,CACF,2BAA2B,EAC3B,cAAc,EACd,YAAY,EACZ,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,iCAAiC,EACjC,UAAU,EACV,kBAAkB,EAClB,mFAAmF,EACnF,sCAAsC,CACvC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,MAAM,EAAE,KAAK;AACd,KAAA;AACF,CAAA;;MC7DU,qBAAqB,CAAA;AACb,IAAA,UAAA;AAAnB,IAAA,WAAA,CAAmB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAe;wGADjC,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,6EAjBtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0LAAA,CAAA,EAAA,CAAA;;4FAiB1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApBjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,QAAA,EACN,2BAA2B,EAAA,MAAA,EAAA,CAAA,0LAAA,CAAA,EAAA;;MA6G1B,iBAAiB,CAAA;AAmBlB,IAAA,GAAA;AACA,IAAA,UAAA;AAnBD,IAAA,YAAY,GAAG,KAAK,CAAS,CAAC,wDAAC;AAC/B,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,cAAc,GAAG,KAAK,CAAU,IAAI,0DAAC;AACrC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,gDAAC;IAC5B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,KAAK,GAAG,eAAe,CAAC,qBAAqB,iDAAC;AAC9C,IAAA,eAAe,GAAG,SAAS,CAAa,iBAAiB,2DAAC;AAC1D,IAAA,YAAY,GAAG,SAAS,CAAa,cAAc,wDAAC;AAEpD,IAAA,YAAY,GAAG,MAAM,CAAS,CAAC,wDAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAS,CAAC,sDAAC;AAC9B,IAAA,GAAG,GAAG,MAAM,CAAS,EAAE,+CAAC;AAEzB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEnC,WAAA,CACU,GAAsB,EACtB,UAAsB,EAAA;QADtB,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,UAAU,GAAV,UAAU;;QAGlB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;YACjD,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,KAAK,CAAC,WAAW,CAC3B,2BAA2B,EAC3B,CAAA,EAAG,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,CACzB;AACD,gBAAA,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAA,EAAA,CAAI,CAAC;YACpE;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,KAAK,IAAI,CAAC,YAAY,EAAE;AACxB,YAAA,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;YACxB,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAClD,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG,EAAE;AAC7B,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;;QAEhB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;;AAGS,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AAChD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC;AACzD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACvD,IAAA,CAAC,iDAAC;IAEO,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAExE;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAE5B;AACb,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,iBAAiB;AAEvC,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW;AAC1C,QAAA,IAAI,CAAC,aAAa;AAAE,YAAA,OAAO,iBAAiB;;QAG5C,MAAM,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI;QAC1C,OAAO,CAAA,WAAA,EAAc,MAAM,CAAA,GAAA,CAAK;AAClC,IAAA,CAAC,sDAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,4DACpD;AACQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC1D,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAClE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC5D,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnC;AACQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEzE,IAAA,YAAY,CAAC,SAA0B,EAAA;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACnD;AAEA,IAAA,gBAAgB,CAAC,MAAe,EAAA;QAC9B,OAAO,IAAI,CAAC,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD;IAEQ,mBAAmB,GAAA;;QAEzB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;;QAG1C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAwC;QAC3E,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;QAE5C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC;QAE9C,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,aAAwC;QAC3E,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW;YAAE;AAE1C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG;AACzE,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9C;IAEA,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;IACF;IAGA,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC1B;wGA9JW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAQK,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7F5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxF7B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;gqBAegC,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACL,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACpB,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;sBAgJ3D,YAAY;uBAAC,eAAe;;;ACjSxB,MAAM,gBAAgB,GAAG,GAAG,CACjC,IAAI;AACF;AACA,0GAA0G;AAC1G;AACA,iCAAiC;AACjC;AACA,8EAA8E,EAC9E,qCAAqC,EACrC,sCAAsC;AACtC;AACA,+EAA+E;AAC/E;AACA,iDAAiD;AACjD;AACA,wEAAwE,EACxE,iCAAiC,CAClC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,EAAE,EAAE,QAAQ;AACb,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;MA0DU,iBAAiB,CAAA;IAC5B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAe,SAAS,gDAAC;IACrC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,IAA0B,WAAW,GAAA;AACnC,QAAA,OAAO,cAAc;IACvB;AAEA,IAAA,OAAO,GAAG,MAAM,CAAC,KAAK,mDAAC;;IAGvB,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG3C,gBAAgB,GAAG,MAAM,CAA2B,MAAK,EAAE,CAAC,4DAAC;IAC7D,iBAAiB,GAAG,MAAM,CAAa,MAAK,EAAE,CAAC,6DAAC;AAExD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CACT,gBAAgB,CAAC;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,SAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB;IACH;AAEA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,EAAE,EAAE,QAAQ;SACb;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACxC;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACxC;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAC5B;;AAGA,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;wGAhEW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EARjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/CS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FAcU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArD7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCT,EAAA,SAAA,EAMU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;sBAUA,WAAW;uBAAC,OAAO;;;AC/FtB;;;;;;;;;;;;;;;AAeG;MAsBU,oBAAoB,CAAA;;AAEtB,IAAA,IAAI,GAAG,KAAK,CAAsB,SAAS,gDAAC;;AAG5C,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;AAGnC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,UAAU,GAAG,MAAM,EAAW;;AAGtB,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,mDAAC;;AAGxC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AAC9B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE;AAC9B,QAAA,OAAO,UAAU,KAAK,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;AAC/D,IAAA,CAAC,kDAAC;IAEO,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE/D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,4DAC5C;AAED,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE;AAC9B,YAAA,IAAI,UAAU,KAAK,SAAS,EAAE;AAC5B,gBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC;IACF;AAEA;;AAEG;IACH,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;AAEA;;AAEG;AACH,IAAA,OAAO,CAAC,IAAa,EAAA;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;;IAE9B;wGAvEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBrB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAUU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBArBhC,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,QAAA,EACN;;;;;;;;GAQT,EAAA,IAAA,EAMK;AACJ,wBAAA,oBAAoB,EAAE,mBAAmB;AAC1C,qBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtCH;;;;;;;;;;;;AAYG;MAWU,2BAA2B,CAAA;AACrB,IAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE;AAC1D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;;AAGO,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAEhC,UAAU,GAAG,QAAQ,CAC5B,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,KAAK,sDAC/D;AAEQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,KAAK,sDAAC;IAEhE,SAAS,GAAG,QAAQ,CAAC,MAC5B,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC/C;AAGD,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QAEvB,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;IAC5B;AAGA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AAEvB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE;QAC5B;IACF;wGAlCW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,aAAa;AAClC,wBAAA,sBAAsB,EAAE,0BAA0B;AAClD,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA;AACF,iBAAA;;sBAmBE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAQhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AC5CrC;;;;;;;;;;;;;;;AAeG;MAwDU,2BAA2B,CAAA;AACrB,IAAA,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE;AAC1D,QAAA,QAAQ,EAAE,IAAI;AACf,KAAA,CAAC;AACe,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;IAGvC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;;AAG1B,IAAA,cAAc,GAAG,MAAM,CAAS,MAAM,0DAAC;AACvC,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,yDAAC;IAC/C,gBAAgB,GAAyC,IAAI;AAE5D,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,KAAK,kDAAC;IAE5D,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE/D,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oDAAC;AAE/D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,OAAO,IAAI;AAClC,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;AAC7B,IAAA,CAAC,wDAAC;IAEO,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAErD,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,iBAAiB,EACjB,4CAA4C,EAC5C,4CAA4C,EAC5C,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;AAED,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YAE5B,IAAI,MAAM,EAAE;;AAEV,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAC9B;iBAAO;;AAEL,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,oBAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACrC;AACA,gBAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,MAAK;AACtC,oBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;oBAC/B;AACF,gBAAA,CAAC,EAAE,GAAG,CAAC,CAAC;YACV;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;;AAEb,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1D,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrC;IACF;IAEQ,aAAa,GAAA;QACnB,qBAAqB,CAAC,MAAK;AACzB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;YAClE,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA,EAAG,OAAO,CAAC,YAAY,CAAA,EAAA,CAAI,CAAC;YACtD;AACF,QAAA,CAAC,CAAC;IACJ;wGAhFW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApD5B;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qYAAA,CAAA,EAAA,CAAA;;4FAyCU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvDvC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qYAAA,CAAA,EAAA;;;ACzCH;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,UAAU,EACV,cAAc,CACf,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACpB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,yCAAyC;AACzC;AACA,OAAO;AACP;AACA,mBAAmB;AACnB;AACA,gBAAgB;AAChB;AACA,mDAAmD;AACnD;AACA,gBAAgB;AAChB;AACA,6BAA6B;AAC7B;AACA,oBAAoB;AACpB;AACA,+BAA+B,CAChC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,EAAE,EAAE,gBAAgB;AACrB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,+BAA+B;AACxC,YAAA,KAAK,EAAE,0CAA0C;AACjD,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,QAAQ,EACN,iFAAiF;AACnF,YAAA,KAAK,EAAE,qCAAqC;AAC7C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,KAAK;AACZ,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,+BAA+B;AAC/B;AACA,MAAM;AACN;AACA,iCAAiC;AACjC;AACA,eAAe;AACf;AACA,WAAW;AACX;AACA,iBAAiB,CAClB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACpB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,6BAA6B,GAAG,GAAG,CAC9C,IAAI;AACF;AACA,KAAK;AACL;AACA,uBAAuB,CACxB;AAGH;;;;AAIG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAC5C,IAAI;AACF;AACA,QAAQ;AACR;AACA,eAAe;AACf;AACA,8BAA8B;AAC9B;AACA,eAAe;AACf;AACA,+CAA+C;AAC/C;AACA,mCAAmC;AACnC;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC;AACA,iDAAiD,CAClD;AAGH;;;;AAIG;AACI,MAAM,gCAAgC,GAAG,GAAG,CACjD,IAAI;AACF;AACA,+BAA+B,CAChC;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,SAAS;AACT;AACA,WAAW;AACX;AACA,mEAAmE;AACnE;AACA,gBAAgB;AAChB;AACA,gCAAgC;AAChC;AACA,mBAAmB,CACpB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,0BAA0B,GAAG,GAAG,CAC3C,IAAI;AACF;AACA,WAAW;AACX;AACA,uDAAuD,CACxD;AAGH;;;;AAIG;AACI,MAAM,4BAA4B,GAAG,GAAG,CAC7C,IAAI;AACF;AACA,QAAQ;AACR;AACA,oDAAoD,CACrD;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,kBAAkB,CACnB;AAGH;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,oBAAoB,CACrB;;AC9MH;;;;;;;;;;;;AAYG;MAsFU,iBAAiB,CAAA;;AAEnB,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,gDAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,iDAAC;;IAGvC,OAAO,GAAG,KAAK,CAAmB;AACzC,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;AACjC,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;AACjC,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;AACjC,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;AAClC,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGO,IAAA,aAAa,GAAG,KAAK,CAAS,EAAE,yDAAC;;AAGjC,IAAA,WAAW,GAAG,KAAK,CAAS,YAAY,uDAAC;;AAGzC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,gDAAC;;AAG5B,IAAA,YAAY,GAAG,KAAK,CAAS,EAAE,wDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAU;;IAG9B,eAAe,GAAG,MAAM,EAAkB;;IAG1C,UAAU,GAAG,MAAM,EAAW;;AAG9B,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,kDAAC;;AAG/B,IAAA,UAAU,GAAG,MAAM,CAAS,EAAE,sDAAC;AAExC,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAA,CAAC,CAAC;IACJ;;IAGS,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,uBAAuB,CAAC;AACtB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;IAEQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,uBAAuB,CAAC;AACtB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;KACpB,CAAC,CACH,0DACF;IAEQ,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CACF,wBAAwB,CAAC;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;KAClB,CAAC,CACH,2DACF;AAEQ,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,6BAA6B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACtC;AAEQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,2BAA2B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpC;AAEQ,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,gCAAgC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACzC;AAEQ,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,0BAA0B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnC;AAEQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,4BAA4B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrC;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE1D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;QAClC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AAClE,QAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AACvD,IAAA,CAAC,yDAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE;AAC5B,YAAA,OAAO,cAAc;QACvB;QACA,OAAO,SAAS,CAAC;AACnB,IAAA,CAAC,qDAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAEnD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE;QAEhC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAClC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC1C;AACH,IAAA,CAAC,2DAAC;AAEF,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CACT,sBAAsB,CAAC;AACrB,YAAA,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK;AACzC,SAAA,CAAC,CACH;IACH;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;IAEA,YAAY,CAAC,KAAiB,EAAE,MAAsB,EAAA;QACpD,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;YAC/B;QACF;;QAGA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;;QAGvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;AAGA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,WAAW,GAAI,KAAK,CAAC,aAA0B,CAAC,aAAa,CACjE,cAAc,CACf;;AAGD,QAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjE,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;wGAjMW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjFlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0ET,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA3ES,YAAY,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAkFxB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArF7B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0ET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;sBA6LA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACxU5C;AAIA;;AAEG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI,CACF,eAAe,EACf,UAAU,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,iCAAiC,EACjC,aAAa,CACd;AAGH;;AAEG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI,CACF,UAAU,EACV,eAAe,EACf,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,oCAAoC,EACpC,aAAa,EACb,oBAAoB,CACrB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,IAAI,EAAE,0BAA0B;AACjC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAOH;;AAEG;MACU,oBAAoB,GAAG,GAAG,CACrC,IAAI,CACF,mBAAmB,EACnB,cAAc,EACd,kCAAkC,EAClC,cAAc,EACd,YAAY,EACZ,kDAAkD,EAClD,YAAY,CACb,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,IAAI,EAAE,4BAA4B;AAClC,YAAA,SAAS,EAAE,4BAA4B;AACxC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,OAAO;AACd,KAAA;AACF,CAAA;AAOH;;AAEG;MACU,kBAAkB,GAAG,GAAG,CACnC,IAAI,CACF,QAAQ,EACR,kCAAkC,EAClC,YAAY,EACZ,8CAA8C,EAC9C,gBAAgB,EAChB,uBAAuB,CACxB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,sEAAsE;AAC5E,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AAKH;;AAEG;MACU,oBAAoB,GAAG,GAAG,CACrC,IAAI,CACF,2CAA2C,EAC3C,gBAAgB,EAChB,kCAAkC,EAClC,wBAAwB,EACxB,YAAY,EACZ,QAAQ,CACT;;ACpIH;MAsEa,eAAe,CAAA;;AAEjB,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,gDAAC;;AAG5B,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC;;AAG9B,IAAA,UAAU,GAAG,KAAK,CAAmB,OAAO,sDAAC;;AAG7C,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,sDAAC;;AAGlC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;;AAGlC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,qDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAQ;;AAG5B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE9D,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrE;IAEQ,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxD;IAEQ,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5D;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG5D,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,GAAG,GAA+B;AACtC,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,IAAI,EAAE,oBAAoB;SAC3B;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,2DAAC;IAEF,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;IACtC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IACzB;IAGA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE;IACrD;wGApEW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAzC3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,EAAA,CAAA;AACF,iBAAA;;sBAkEE,YAAY;uBAAC,yBAAyB;;;ACpHlC,MAAM,aAAa,GAAG,GAAG,CAC9B,IAAI;AACF;AACA,gBAAgB;AAChB;AACA,gCAAgC;AAChC;AACA,MAAM;AACN;AACA,sBAAsB;AACtB;AACA,gCAAgC,EAChC,mCAAmC;AACnC;AACA,sDAAsD;AACtD;AACA,+EAA+E;AAC/E;AACA,8EAA8E;AAC9E;AACA,6DAA6D,EAC7D,oDAAoD;AACpD;AACA,wDAAwD;AACxD;AACA,kBAAkB;AAClB;AACA,kEAAkE,EAClE,uCAAuC,CACxC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;MA0CU,cAAc,CAAA;AACzB,IAAA,IAAI,GAAG,KAAK,CAAS,MAAM,gDAAC;AAC5B,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAChC,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAY,SAAS,gDAAC;IAClC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,IAA0B,WAAW,GAAA;AACnC,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;;IAGlB,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG3C,gBAAgB,GAAG,MAAM,CAA0B,MAAK,EAAE,CAAC,4DAAC;IAC5D,iBAAiB,GAAG,MAAM,CAAa,MAAK,EAAE,CAAC,6DAAC;AAExD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CACT,aAAa,CAAC;AACZ,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,SAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB;IACH;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACtC;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAC5B;IAEA,OAAO,GAAA;;IAEP;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;;AAGA,IAAA,QAAQ,CAAC,OAAwB,EAAA;;QAE/B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACrC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;;QAGA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;YAC5C,MAAM,UAAU,GAAG,4BAA4B;YAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnC,gBAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;YACxB;QACF;;QAGA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;YAC1C,MAAM,QAAQ,GAAG,gBAAgB;YACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjC,gBAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE;YACtB;QACF;AAEA,QAAA,OAAO,IAAI;IACb;wGAvFW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAbd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BS;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAmBU,cAAc,EAAA,UAAA,EAAA,CAAA;kBArC1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EACD;;;;;;;;;;;;;;GAcT,EAAA,SAAA,EAMU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAYA,WAAW;uBAAC,OAAO;;;AC7GtB;;;;AAIG;AACI,MAAM,aAAa,GAAG,GAAG,CAC9B,IAAI;AACF;AACA,QAAQ;AACR;AACA,SAAS,EACT,cAAc;AACd;AACA,iBAAiB,CAClB;;ACbH;;;;;;;;;;AAUG;MAMU,cAAc,CAAA;;AAEhB,IAAA,IAAI,GAAG,KAAK,CAAS,UAAU,gDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DACxC;wGAVU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,0UAFf,CAAA,qDAAA,CAAuD,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEtD,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,qDAAA,CAAuD;AAClE,iBAAA;;;AChBD;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,kDAAkD;AAClD;AACA,gBAAgB;AAChB;AACA,YAAY,CACb,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;AACd,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,wCAAwC;YAClD,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,uBAAuB;AACvB;AACA,qBAAqB,CACtB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACxB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,6DAA6D;AAC7D;AACA,yCAAyC,CAC1C,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,6DAA6D;AAC7D;AACA,qBAAqB;AACrB;AACA,yCAAyC,CAC1C,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACxB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;;AC/FH;;;;;;;AAOG;MAkFU,cAAc,CAAA;;AAEhB,IAAA,IAAI,GAAG,KAAK,CAAY,IAAI,gDAAC;;AAG7B,IAAA,KAAK,GAAG,KAAK,CAAa,SAAS,iDAAC;;AAGpC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;IAG/B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAc;;IAGlC,aAAa,GAAG,MAAM,EAAW;;IAGjC,WAAW,GAAG,MAAM,EAAW;;AAGvB,IAAA,aAAa,GAAG,MAAM,CAAa,SAAS,yDAAC;AAC7C,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,2DAAC;;AAGzD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACtC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1C,QAAA,CAAC,CAAC;IACJ;;IAGS,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACnD,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGvD,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,oBAAoB,CAAC;AACnB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;;AAGQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,sBAAsB,CAAC;AACrB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,4DACH;;AAGQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,kBAAkB,CAAC;AACjB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,wDACH;;AAGQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,kBAAkB,CAAC;AACjB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,wDACH;;AAGQ,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACvC,IAAA,CAAC,qDAAC;;AAGO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACvC,IAAA,CAAC,qDAAC;;AAGO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AACvC,IAAA,CAAC,yDAAC;;AAGO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;AACnC,QAAA,IAAI,OAAO,KAAK,UAAU,EAAE;AAC1B,YAAA,OAAO,+CAA+C;QACxD;AACA,QAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,YAAA,OAAO,6BAA6B;QACtC;AACA,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,YAAA,OAAO,0BAA0B;QACnC;AACA,QAAA,IAAI,OAAO,KAAK,OAAO,EAAE;AACvB,YAAA,OAAO,mCAAmC;QAC5C;QACA,OAAO,mCAAmC,CAAC;AAC7C,IAAA,CAAC,8DAAC;;IAGF,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,UAAU,EAAE;YACtC;QACF;AAEA,QAAA,MAAM,QAAQ,GACZ,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS;AAC3D,QAAA,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;;AAGzC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC;;AAGpC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC;wGA5HW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7Ef;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlES,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FA8EX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjF1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA;;;ACxGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,MAAM;AACN;AACA,YAAY,CACb,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,uBAAuB;AACnC,YAAA,QAAQ,EAAE,sBAAsB;AACjC,SAAA;AACD,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACP,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,YAAY;AACpB,SAAA;;AAED,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,OAAO;AACf,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC,IAAI;AACF;AACA,0BAA0B;AAC1B;AACA,gBAAgB;AAChB;AACA,YAAY;AACZ;AACA,aAAa,CACd,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;AACZ,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,aAAa,EACb,mBAAmB;AACnB;AACA,iBAAiB,CAClB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;YACJ,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,kCAAkC;AACxC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;;ACzFH;;;;;;;;;;;AAWG;MA2BU,mBAAmB,CAAA;;AAErB,IAAA,IAAI,GAAG,KAAK,CAAY,IAAI,gDAAC;;AAG7B,IAAA,WAAW,GAAG,KAAK,CAAwB,YAAY,uDAAC;;IAGxD,OAAO,GAAG,KAAK,CAAqB;AAC3C,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9B,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGO,IAAA,aAAa,GAAG,KAAK,CAAS,EAAE,yDAAC;;IAGjC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAU;;IAG9B,eAAe,GAAG,MAAM,EAAoB;;AAGpC,IAAA,qBAAqB,GAAG,MAAM,CAAS,EAAE,iEAAC;;AAG3D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACtD,QAAA,CAAC,CAAC;IACJ;;IAGS,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGnE,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CACF,kBAAkB,CAAC;AACjB,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,wDACF;;AAGD,IAAA,gBAAgB,CAAC,MAAwB,EAAA;AACvC,QAAA,OAAO,mBAAmB,CAAC;AACzB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;AACnC,SAAA,CAAC;IACJ;;AAGA,IAAA,eAAe,CAAC,MAAwB,EAAA;AACtC,QAAA,OAAO,kBAAkB,CAAC;AACxB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;AACnC,SAAA,CAAC;IACJ;;IAGA,aAAa,CACX,KAAa,EACb,QAAkB,EAAA;QAElB,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,KAAK,KAAK,GAAG,SAAS,GAAG,SAAS;IACtE;;AAGA,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AAEhE,QAAA,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;AAE9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGrC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC;IACF;wGAzFW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBpB;;;;;;;;;;;;;;;GAeT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAhBS,YAAY,8JAAE,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAuB3B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1B/B,SAAS;+BACE,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,QAAA,EAC7B;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AC1DH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,kCAAkC,CACnC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACpB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,+CAA+C;AAC/C;AACA,mBAAmB;AACnB;AACA,gBAAgB;AAChB;AACA,6DAA6D;AAC7D;AACA,gBAAgB;AAChB;AACA,6BAA6B;AAC7B;AACA,6FAA6F,CAC9F,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,EAAE,EAAE,gBAAgB;AACrB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,gDAAgD;AACzD,YAAA,KAAK,EAAE,0CAA0C;AACjD,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,QAAQ,EACN,iFAAiF;AACnF,YAAA,KAAK,EAAE,qCAAqC;AAC7C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,KAAK;AACZ,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC,IAAI;AACF;AACA,kBAAkB;AAClB;AACA,UAAU,CACX;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,oBAAoB;AACpB;AACA,mCAAmC,CACpC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,uBAAuB;AAChC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,KAAK,EAAE,kBAAkB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,2CAA2C;AAC3C;AACA,iCAAiC;AACjC;AACA,YAAY;AACZ;AACA,yBAAyB;AACzB;AACA,4BAA4B;AAC5B;AACA,4BAA4B,CAC7B,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,eAAe;AACpB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,WAAW;AACX;AACA,6DAA6D,EAC7D,yBAAyB;AACzB;AACA,gBAAgB;AAChB;AACA,gCAAgC;AAChC;AACA,8CAA8C,CAC/C,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,kCAAkC;AACxC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC,IAAI;AACF;AACA,QAAQ;AACR;AACA,4CAA4C,EAC5C,kBAAkB,CACnB;;ACzKH;;;;;;;;;;;AAWG;MA+DU,eAAe,CAAA;;AAEjB,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC;;AAG9B,IAAA,KAAK,GAAG,KAAK,CAAc,SAAS,iDAAC;;AAGrC,IAAA,OAAO,GAAG,KAAK,CAAiB,EAAE,mDAAC;;AAGnC,IAAA,aAAa,GAAG,KAAK,CAAS,EAAE,yDAAC;;AAGjC,IAAA,WAAW,GAAG,KAAK,CAAS,YAAY,uDAAC;;AAGzC,IAAA,YAAY,GAAG,KAAK,CAAS,EAAE,wDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAU;;IAG9B,eAAe,GAAG,MAAM,EAAgB;;IAGxC,UAAU,GAAG,MAAM,EAAW;;AAGtB,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,mDAAC;;AAGhC,IAAA,sBAAsB,GAAG,MAAM,CAAS,EAAE,kEAAC;;AAG5D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AACvD,QAAA,CAAC,CAAC;IACJ;;AAGS,IAAA,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;;IAGlC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGpE,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,qBAAqB,CAAC;AACpB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;;IAGQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,qBAAqB,CAAC;AACpB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;KACpB,CAAC,CACH,0DACF;;AAGQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG1D,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CACF,kBAAkB,CAAC;AACjB,QAAA,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;AACnB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;KACpB,CAAC,CACH,uDACF;;IAGQ,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CACF,sBAAsB,CAAC;AACrB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;KAClB,CAAC,CACH,2DACF;;AAGQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG1D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE;QACzC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;QAC3B;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;AAClE,QAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AACvD,IAAA,CAAC,yDAAC;;AAGF,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CACT,oBAAoB,CAAC;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,KAAK;AAChD,SAAA,CAAC,CACH;IACH;;IAGA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;YAC/B;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;;AAGA,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,EAAE;YAC/B;QACF;QAEA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;;AAIA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;QAEhD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;IACF;wGAtJW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3DhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FAOU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA9D3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;sBAoJA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACjP5C,MAAM,mBAAmB,GAAG,eAAe;AAC3C,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAChD,MAAM,aAAa,GAAG,OAAO;AAC7B,MAAM,oBAAoB,GAAG,OAAO;AACpC,MAAM,kBAAkB,GAAG,MAAM;AACjC,MAAM,yBAAyB,GAAG,GAAG;AAErC;;;;;AAKG;MAEU,cAAc,CAAA;;AAER,IAAA,MAAM,GAAG,MAAM,CAAe,UAAU,kDAAC;AACzC,IAAA,KAAK,GAAG,MAAM,CAAU,IAAI,iDAAC;AAC7B,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,uDAAC;AACpC,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;;AAG1C,IAAA,IAAI,GAAG,MAAM,CAAc,MAAM,gDAAC;AAClC,IAAA,OAAO,GAAG,MAAM,CAAiB,SAAS,mDAAC;AAC3C,IAAA,WAAW,GAAG,MAAM,CAAqB,MAAM,uDAAC;;IAGhD,aAAa,GAAG,aAAa;IAC7B,oBAAoB,GAAG,oBAAoB;IAC3C,kBAAkB,GAAG,kBAAkB;IACvC,yBAAyB,GAAG,yBAAyB;;IAGrD,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACrC,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IACnC,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAC/C,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEpD;;AAEG;AACH,IAAA,OAAO,CAAC,IAAa,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;;AAGhD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;AAEA;;AAEG;AACH,IAAA,aAAa,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC;aAAO;YACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAI;AACtB,gBAAA,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AACpD,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;AAC3B,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,CAAC;QACJ;IACF;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,QAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC9B;AAEA;;AAEG;AACH,IAAA,SAAS,CAAC,MAKT,EAAA;QACC,IAAI,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3C,IAAI,MAAM,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QACpD,IAAI,MAAM,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;AAChE,QAAA,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;QAChE;IACF;AAEA;;AAEG;IACH,qBAAqB,GAAA;AACnB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,GAAG,WAAW,CAAC;QACzD;IACF;AAEA;;AAEG;AACK,IAAA,YAAY,CAAC,IAAa,EAAA;AAChC,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,QAAQ,CAAC,MAAM,GAAG,CAAA,EAAG,mBAAmB,IAAI,IAAI,CAAA,kBAAA,EAAqB,sBAAsB,CAAA,CAAE;QAC/F;IACF;AAEA;;AAEG;IACK,cAAc,GAAA;QACpB,IAAI,OAAO,QAAQ,KAAK,WAAW;AAAE,YAAA,OAAO,IAAI;QAEhD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1C,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,YAAA,IAAI,IAAI,KAAK,mBAAmB,EAAE;gBAChC,OAAO,KAAK,KAAK,MAAM;YACzB;QACF;AACA,QAAA,OAAO,IAAI;IACb;wGArHW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAd,cAAc,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;AClBD;;;;;;;;;;;;;;;;AAgBG;AAEH;;AAEG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC;IACE,uBAAuB;IACvB,MAAM;IACN,WAAW;IACX,QAAQ;IACR,uCAAuC;AACxC,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,eAAe,GAAG,GAAG,CAChC;IACE,MAAM;IACN,QAAQ;IACR,qBAAqB;IACrB,UAAU;IACV,YAAY;IACZ,yBAAyB;AAC1B,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,SAAS,EAAE;gBACT,OAAO;gBACP,WAAW;gBACX,MAAM;gBACN,QAAQ;gBACR,UAAU;gBACV,mBAAmB;gBACnB,UAAU;gBACV,sBAAsB;gBACtB,cAAc;gBACd,aAAa;gBACb,SAAS;gBACT,kBAAkB;gBAClB,2DAA2D;aAC5D,CAAC,IAAI,CAAC,GAAG,CAAC;AACX,YAAA,IAAI,EAAE;gBACJ,oBAAoB;gBACpB,cAAc;gBACd,aAAa;gBACb,uEAAuE;aACxE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,gCAAgC;AACzC,YAAA,QAAQ,EAAE,oDAAoD;AAC9D,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC;IACE,OAAO;IACP,MAAM;IACN,yBAAyB;;IAEzB,yBAAyB;IACzB,6BAA6B;AAC9B,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,MAAM;AACb,KAAA;AACF,CAAA;AAGH;;AAEG;MACU,qBAAqB,GAAG,GAAG,CACtC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAGhD;;AAEG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC;IACE,MAAM;IACN,SAAS;IACT,QAAQ;IACR,UAAU;IACV,OAAO;IACP,eAAe;IACf,+CAA+C;AAChD,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;MACU,qBAAqB,GAAG,GAAG,CACtC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAGhD;;AAEG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAGxE;;AAEG;AACI,MAAM,yBAAyB,GAAG,GAAG,CAC1C;IACE,MAAM;IACN,KAAK;IACL,UAAU;IACV,cAAc;IACd,YAAY;IACZ,MAAM;IACN,SAAS;IACT,aAAa;IACb,4BAA4B;IAC5B,cAAc;IACd,mBAAmB;IACnB,6BAA6B;IAC7B,cAAc;IACd,aAAa;IACb,sBAAsB;IACtB,gBAAgB;IAChB,kBAAkB;;IAElB,qCAAqC;IACrC,yCAAyC;AAC1C,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,0BAA0B,GAAG,GAAG,CAC3C;IACE,UAAU;IACV,SAAS;IACT,SAAS;IACT,MAAM;IACN,eAAe;IACf,KAAK;IACL,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,KAAK;IACL,yBAAyB;IACzB,cAAc;IACd,mBAAmB;IACnB,sBAAsB;IACtB,yBAAyB;IACzB,sCAAsC;IACtC,sBAAsB;IACtB,gBAAgB;IAChB,kBAAkB;;IAElB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;;IAEjB,sCAAsC;AACvC,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAE9E;;AAEG;MACU,mBAAmB,GAAG,GAAG,CACpC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAG9D;;AAEG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAG3C;;AAEG;AACI,MAAM,yBAAyB,GAAG,GAAG,CAC1C;IACE,kBAAkB;IAClB,MAAM;IACN,QAAQ;IACR,cAAc;IACd,OAAO;IACP,iBAAiB;IACjB,YAAY;IACZ,KAAK;IACL,WAAW;IACX,SAAS;IACT,cAAc;IACd,mBAAmB;IACnB,0DAA0D;IAC1D,cAAc;;IAEd,gBAAgB;;IAEhB,yBAAyB;IACzB,sCAAsC;;IAEtC,sBAAsB;;IAEtB,0BAA0B;IAC1B,uCAAuC;;IAEvC,8BAA8B;IAC9B,qBAAqB;IACrB,6BAA6B;;IAE7B,uDAAuD;;IAEvD,mCAAmC;IACnC,0BAA0B;;IAE1B,sCAAsC;IACtC,gCAAgC;IAChC,mDAAmD;;IAEnD,2CAA2C;IAC3C,wDAAwD;;IAExD,uCAAuC;IACvC,oCAAoC;;IAEpC,8BAA8B;;IAE9B,gBAAgB;IAChB,kBAAkB;AACnB,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,8DAA8D;AACvE,YAAA,OAAO,EAAE;gBACP,eAAe;gBACf,+CAA+C;gBAC/C,yBAAyB;gBACzB,sCAAsC;gBACtC,qDAAqD;aACtD,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,iDAAiD;AACtD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,yBAAyB,GAAG,GAAG,CAC1C;IACE,UAAU;IACV,SAAS;IACT,SAAS;IACT,MAAM;IACN,eAAe;IACf,KAAK;IACL,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,KAAK;IACL,yBAAyB;IACzB,cAAc;IACd,mBAAmB;IACnB,sBAAsB;IACtB,yBAAyB;IACzB,sCAAsC;IACtC,sBAAsB;IACtB,uDAAuD;IACvD,gBAAgB;IAChB,kBAAkB;;IAElB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;;IAEjB,sCAAsC;AACvC,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE;gBACJ,0CAA0C;gBAC1C,mCAAmC;gBACnC,+BAA+B;gBAC/B,oEAAoE;gBACpE,cAAc;aACf,CAAC,IAAI,CAAC,GAAG,CAAC;AACX,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC;IACE,qBAAqB;IACrB,UAAU;IACV,SAAS;IACT,SAAS;IACT,kBAAkB;IAClB,MAAM;IACN,KAAK;IACL,SAAS;IACT,aAAa;IACb,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,MAAM;IACN,SAAS;IACT,aAAa;IACb,cAAc;IACd,yBAAyB;IACzB,mBAAmB;IACnB,cAAc;;IAEd,uDAAuD;IACvD,oEAAoE;;IAEpE,sCAAsC;AACvC,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAC5C,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EACxE;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC;IACE,QAAQ;IACR,MAAM;IACN,SAAS;IACT,gBAAgB;IAChB,UAAU;IACV,OAAO;IACP,UAAU;IACV,uBAAuB;IACvB,QAAQ;IACR,QAAQ;;IAER,sCAAsC;AACvC,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,0BAA0B,GAAG,GAAG,CAC3C,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAG/C;;AAEG;AACI,MAAM,4BAA4B,GAAG,GAAG,CAC7C;IACE,MAAM;IACN,KAAK;IACL,QAAQ;IACR,SAAS;IACT,cAAc;IACd,OAAO;IACP,iBAAiB;IACjB,iBAAiB;IACjB,YAAY;IACZ,MAAM;IACN,yBAAyB;IACzB,cAAc;IACd,mBAAmB;IACnB,qCAAqC;IACrC,cAAc;;IAEd,gBAAgB;;IAEhB,yBAAyB;IACzB,sCAAsC;;IAEtC,sBAAsB;;IAEtB,0BAA0B;IAC1B,uCAAuC;;IAEvC,8BAA8B;IAC9B,qBAAqB;IACrB,6BAA6B;;IAE7B,mCAAmC;IACnC,0BAA0B;;IAE1B,8BAA8B;;IAE9B,gBAAgB;IAChB,kBAAkB;IAClB,wCAAwC;;IAExC,sCAAsC;IACtC,gCAAgC;IAChC,mDAAmD;AACpD,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,CAAC,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAGnD;;AAEG;AACI,MAAM,sBAAsB,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAElE;;AAEG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC;IACE,UAAU;IACV,WAAW;IACX,MAAM;IACN,QAAQ;IACR,KAAK;IACL,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,eAAe;IACf,+BAA+B;IAC/B,gCAAgC;IAChC,gCAAgC;IAChC,SAAS;;IAET,4DAA4D;IAC5D,6DAA6D;IAC7D,2DAA2D;IAC3D,4DAA4D;;IAE5D,4CAA4C;IAC5C,8CAA8C;IAC9C,kDAAkD;IAClD,oDAAoD;IACpD,qDAAqD;AACtD,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC;IACE,UAAU;IACV,MAAM;IACN,WAAW;IACX,QAAQ;IACR,UAAU;IACV,eAAe;;IAEf,iEAAiE;IACjE,+DAA+D;IAC/D,kCAAkC;IAClC,mCAAmC;IACnC,yCAAyC;IACzC,qCAAqC;AACtC,CAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAGb;;AAEG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,CAAC,SAAS,EAAE,sBAAsB,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC7D;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,KAAK;AACZ,KAAA;AACF,CAAA;;AC9iBH;;;;;;;;;;;;;;;;;AAiBG;MAyBU,wBAAwB,CAAA;AAChB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACzC,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;;AAGxC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;;AAGlC,IAAA,IAAI,GAAG,KAAK,CAAsB,SAAS,gDAAC;;IAG5C,UAAU,GAAG,MAAM,EAAW;;IAG9B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAA0B;IAExC,cAAc,GAA0B,IAAI;;AAG3C,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAClD;;AAGQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,aAAa;AACpD,YAAA,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB;SAC/D;QACD,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;AAC3C,IAAA,CAAC,0DAAC;AAEF,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAClD,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAChC,SAAA,CAAC;;AAGF,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;;AAG3C,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;QAC3E;IACF;AAGA,IAAA,aAAa,CAAC,KAAoB,EAAA;QAChC,IACE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,yBAAyB;aAC1D,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAChC;YACA,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QAC9B;IACF;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC;IACxE;AAEQ,IAAA,iBAAiB,GAAG,CAAC,KAA0B,KAAU;QAC/D,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AAChD,IAAA,CAAC;wGA1FU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EArBxB,CAAC,cAAc,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACjB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAxBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cACpB,IAAI,EAAA,SAAA,EACL,CAAC,cAAc,CAAC,EAAA,QAAA,EACjB;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;sBA8EA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACxH5C;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAyBU,gBAAgB,CAAA;AACR,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;;AAGjD,IAAA,IAAI,GAAG,KAAK,CAAc,MAAM,gDAAC;;AAGjC,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,mDAAC;;AAG1C,IAAA,WAAW,GAAG,KAAK,CAAqB,MAAM,uDAAC;;IAG/C,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAGlC,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,sBAAsB,CAAC;AACrB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;;IAGQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,eAAe,CAAC;AACd,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,KAAA,CAAC,EACF,IAAI,CAAC,gBAAgB,EAAE,CACxB,0DACF;wGAtCU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBjB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxB5B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACpDH;;;;;;;;;;;;;;AAcG;MAeU,sBAAsB,CAAA;;IAExB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,yDAChD;wGANU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXvB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtBH;;;;;;;;;;;;;AAaG;MAeU,uBAAuB,CAAA;;IAEzB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,0DACjD;wGANU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXxB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACrBH;;;;;;;;;;;;;;;;;AAiBG;MAeU,sBAAsB,CAAA;;IAExB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,yDAChD;wGANU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXvB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACzBH;;;;;;;;;;;;;;;;AAgBG;MAeU,qBAAqB,CAAA;;IAEvB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,wDAC/C;wGANU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXtB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACxBH;;;;;;;;;;;;;;AAcG;MAeU,0BAA0B,CAAA;;IAE5B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,wDACpD;wGANU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX3B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtBH;;;;;;;;;;;;;;;;AAgBG;MAeU,4BAA4B,CAAA;;IAE9B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,2BAA2B,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,0DACtD;wGANU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX7B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAdxC,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACxBH;;;;;;;;;;;;;;;;;AAiBG;MAqBU,2BAA2B,CAAA;;AAE7B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;IAGzB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAc;AAElC,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,yDACrD;wGAZU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjB5B;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBApBvC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AC/BH;;;;;;;;;;;;;;;;AAgBG;MAeU,oBAAoB,CAAA;;IAEtB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,uDAC9C;wGANU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXrB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACxBH;;;;;;;;;;;;;;;;AAgBG;MAeU,wBAAwB,CAAA;;IAE1B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,uDAClD;wGANU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACnBH;;;;;;;;;;;;;;;;;AAiBG;MAwBU,0BAA0B,CAAA;;AAE5B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;AAGhC,IAAA,OAAO,GAAG,KAAK,CAAwB,SAAS,mDAAC;;AAGjD,IAAA,IAAI,GAAG,KAAK,CAA0B,SAAS,gDAAC;;AAGhD,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAGzB,WAAW,GAAG,MAAM,EAAc;IAElC,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CACF,yBAAyB,CAAC;AACxB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,yDACF;AAED,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B;IACF;wGApCW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApB3B;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAvBtC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AClCH;;;;;;;;;;;;;;AAcG;MAoBU,0BAA0B,CAAA;;AAE5B,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;IAGnC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAc;IAElC,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CACF,yBAAyB,CAAC;AACxB,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAChC,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,yDACF;wGAjBU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhB3B;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAnBtC,SAAS;+BACE,yBAAyB,EAAA,UAAA,EACvB,IAAI,EAAA,QAAA,EACN;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AChCH;;;;;;;;;;;;;;;AAeG;MAeU,yBAAyB,CAAA;;IAE3B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,wDACnD;wGANU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX1B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAdrC,SAAS;+BACE,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACvBH;;;;;;;;;;;;;;;;;;;AAmBG;MAeU,uBAAuB,CAAA;;IAEzB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,0DACjD;wGANU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXxB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AC3BH;;;;;;;;;;;;;;;AAeG;MAeU,2BAA2B,CAAA;;IAE7B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,0BAA0B,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,uDACrD;wGANU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAX5B;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;+BACE,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AClBH;;;;;;;;;;;;;;;AAeG;MAuBU,6BAA6B,CAAA;;AAE/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;AAGhC,IAAA,IAAI,GAAG,KAAK,CAAc,IAAI,gDAAC;;AAG/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAc;IAElC,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CACF,4BAA4B,CAAC;AAC3B,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,yDACF;AAED,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B;IACF;wGA7BW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnB9B;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAtBzC,SAAS;+BACE,6BAA6B,EAAA,UAAA,EAC3B,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACpCH;;;;;;;;;;;;;AAaG;MAWU,yBAAyB,CAAA;;IAE3B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,wBAAwB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,4DACnD;wGANU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,iOAP1B,CAAA,8DAAA,CAAgE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAO/D,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;+BACE,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,QAAA,EACN,CAAA,8DAAA,CAAgE,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AChB5E;;;;;;;;;;;;AAYG;MAsDU,uBAAuB,CAAA;AACf,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;;IAGjD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAGpC,UAAU,GAAG,KAAK;IAET,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,sBAAsB,EAAE,EACxB,0FAA0F,EAC1F,0CAA0C,EAC1C,qGAAqG,EACrG,kDAAkD,EAClD,8CAA8C,EAC9C,IAAI,CAAC,SAAS,EAAE,CACjB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;IAC9B;wGAvBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlDxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA,CAAA;;4FAkBU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArDnC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sKAAA,CAAA,EAAA;;;AChDH;;;;;;;;;;;;AAYG;MAoBU,oBAAoB,CAAA;AACZ,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;;IAGjD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,uDAC9C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;IAC9B;wGAZW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBrB;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnBhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AC1BH;;;;;;;;;;;;;;;;;;;;AAoBG;MAeU,qBAAqB,CAAA;;IAEvB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,wDAC/C;wGANU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXtB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EACjB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AChCH;;ACGA;;AAEG;AACI,MAAM,gBAAgB,GAAG,GAAG,CACjC,IAAI;AACF;AACA,qCAAqC;AACrC;AACA,eAAe;AACf;AACA,iCAAiC,CAClC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,QAAQ,EAAE,+CAA+C;AACzD,YAAA,WAAW,EAAE,6BAA6B;AAC3C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,aAAa;AACpB,KAAA;AACF,CAAA;;MCCU,iBAAiB,CAAA;;AAEnB,IAAA,IAAI,GAAG,KAAK,CAAe,aAAa,gDAAC;;AAGzC,IAAA,KAAK,GAAG,KAAK,CAAkB,MAAM,iDAAC;;AAGtC,IAAA,MAAM,GAAG,KAAK,CAAkB,MAAM,kDAAC;;IAGvC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChE;;AAGQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,KAAK,MAAM;AAAE,YAAA,OAAO,SAAS;QAClC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;AAC1C,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,yDAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACvB,IAAI,CAAC,KAAK,MAAM;AAAE,YAAA,OAAO,SAAS;QAClC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,CAAA,EAAG,CAAC,CAAA,EAAA,CAAI;AAC1C,QAAA,OAAO,CAAC;AACV,IAAA,CAAC,0DAAC;wGAhCS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBlB;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN;;;;;;;;;AAST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACjBH;;;;;AAKG;AACI,MAAM,eAAe,GAAG,GAAG,CAChC,IAAI;AACF;AACA,cAAc;AACd;AACA,UAAU,CACX,EACD;AACE,IAAA,QAAQ,EAAE;AACR;;;AAGG;AACH,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACD;;AAEG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,KAAK,EAAE,uBAAuB;AAC9B,YAAA,WAAW,EAAE,kBAAkB;AAC/B,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;;AC7BH;;;;;;;;;;;;;;;;;;;;AAoBG;MA4BU,gBAAgB,CAAA;;AAElB,IAAA,IAAI,GAAG,KAAK,CAAc,IAAI,gDAAC;;AAG/B,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,mDAAC;;AAG1C,IAAA,SAAS,GAAG,KAAK,CAAS,SAAS,qDAAC;;IAGpC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,eAAe,CAAC;AACd,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACxB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;wGAtBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBjB;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wEAAA,CAAA,EAAA,CAAA;;4FASU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA3B5B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wEAAA,CAAA,EAAA;;;ACvDH;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,mCAAmC;AACnC;AACA,SAAS;AACT;AACA,wCAAwC;AACxC;AACA,sBAAsB;AACtB;AACA,gBAAgB;AAChB;AACA,6BAA6B;AAC7B;AACA,cAAc,EACd,+GAA+G;AAC/G;AACA,+BAA+B,CAChC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,EAAE,EAAE,UAAU;AACf,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC,IAAI;AACF;AACA,wCAAwC;AACxC;AACA,eAAe;AACf;AACA,sBAAsB;AACtB;AACA,QAAQ;AACR;AACA,mCAAmC,CACpC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,KAAK,EAAE,eAAe;AACvB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,0CAA0C;AAC9C,YAAA,OAAO,EAAE,0CAA0C;AACnD,YAAA,EAAE,EAAE,0CAA0C;AAC/C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,KAAK;AACd,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;;ACvEH;;;;;;;;;;;;AAYG;MAgCU,eAAe,CAAA;;AAEjB,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;;AAG/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;AAGhC,IAAA,IAAI,GAAG,KAAK,CAAa,SAAS,gDAAC;;IAGnC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,aAAa,GAAG,MAAM,EAAW;;IAGjC,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CACF,kBAAkB,CAAC;AACjB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AAClB,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,uDACF;;IAGQ,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CACF,mBAAmB,CAAC;AAClB,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;KAClB,CAAC,CACH,wDACF;;IAGD,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AACA,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC;;AAGA,IAAA,SAAS,CAAC,KAAY,EAAA;QACpB,MAAM,aAAa,GAAG,KAAsB;AAC5C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;;QAEA,aAAa,CAAC,cAAc,EAAE;QAC9B,IAAI,CAAC,MAAM,EAAE;IACf;wGAzDW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA5BhB;;;;;;;;;;;;;;;;;;;;AAoBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAQU,eAAe,EAAA,UAAA,EAAA,CAAA;kBA/B3B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;GAoBT,EAAA,eAAA,EAMgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;;ACvDjD;;;;;;;;;;;;;;;;AAgBG;MAeU,aAAa,CAAA;;AAEf,IAAA,YAAY,GAAG,KAAK,CAAkB,CAAC,wDAAC;;IAGxC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,KAAK,GAAG,KAAK,CAAyB,IAAI,iDAAC;;IAG3C,WAAW,GAAG,MAAM,EAAmB;;AAG/B,IAAA,cAAc,GAAG,MAAM,CAAyB,IAAI,0DAAC;;AAG7D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;QAC/B,IAAI,UAAU,KAAK,IAAI;AAAE,YAAA,OAAO,UAAU;AAE1C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;QACtC,IAAI,QAAQ,KAAK,IAAI;AAAE,YAAA,OAAO,QAAQ;AAEtC,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AAC5B,IAAA,CAAC,uDAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,2DAAC;AAEjE;;AAEG;AACH,IAAA,QAAQ,CAAC,KAAsB,EAAA;;AAE7B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;QAChC;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC9B;AAEA;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE;IAC3B;wGA9CW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXd;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAdzB,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACbH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,MAAM,EACN,OAAO,EACP,aAAa,CACd,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,IAAI,CACZ,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,eAAe;;YAEf,wBAAwB,EACxB,+BAA+B,CAChC;AACF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,eAAe,GAAG,GAAG,CAChC,IAAI;AACF;AACA,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,aAAa;AACb;AACA,aAAa,EACb,SAAS;AACT;AACA,gBAAgB,EAChB,gBAAgB,EAChB,cAAc;AACd;AACA,YAAY,EACZ,UAAU;AACV;AACA,yBAAyB,EACzB,gCAAgC,EAChC,4BAA4B,CAC7B,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,WAAW,EAAE,gBAAgB;AAC9B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACP,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,IAAI;;AAEX,YAAA,eAAe,EACf,cAAc,EACd,sDAAsD,EACtD,qDAAqD;;YAErD,+BAA+B,EAC/B,4CAA4C,CAC7C;AACD,YAAA,IAAI,EAAE,IAAI;;AAER,YAAA,YAAY,EACZ,WAAW,EACX,sDAAsD,EACtD,qDAAqD;;YAErD,4BAA4B,EAC5B,yCAAyC,CAC1C;AACD,YAAA,OAAO,EAAE,IAAI;;AAEX,YAAA,eAAe,EACf,cAAc,EACd,sDAAsD,EACtD,qDAAqD;;YAErD,+BAA+B,EAC/B,4CAA4C,CAC7C;AACD,YAAA,OAAO,EAAE,IAAI;;AAEX,YAAA,eAAe,EACf,cAAc,EACd,sDAAsD,EACtD,qDAAqD;;YAErD,+BAA+B,EAC/B,4CAA4C,CAC7C;AACD,YAAA,WAAW,EAAE,IAAI;;AAEf,YAAA,mBAAmB,EACnB,kBAAkB,EAClB,sDAAsD,EACtD,qDAAqD;;YAErD,mCAAmC,EACnC,gDAAgD,CACjD;AACF,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,mDAAmD;AACzD,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,wBAAwB;AAChC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,wBAAwB;AAChC,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,wBAAwB;AAChC,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,uCAAuC;AAC/C,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,4CAA4C;AACpD,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,4CAA4C;AACpD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,qBAAqB,GAAG,GAAG,CACtC,IAAI;AACF;AACA,QAAQ,EACR,cAAc;AACd;AACA,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,UAAU;AACV;AACA,mBAAmB,EACnB,cAAc,CACf,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EACL,iEAAiE;AACnE,YAAA,IAAI,EAAE,2DAA2D;AACjE,YAAA,OAAO,EACL,iEAAiE;AACnE,YAAA,OAAO,EACL,iEAAiE;AACnE,YAAA,WAAW,EACT,yEAAyE;AAC5E,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,CAAC;AAGtE;;;;AAIG;AACI,MAAM,gBAAgB,GAAG,GAAG,CACjC,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,CAAC;AAG3E;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;;ACvOnE;;;;;;;;;;;;;;;;;;;;;AAqBG;MA6GU,iBAAiB,CAAA;;AAEnB,IAAA,MAAM,GAAG,KAAK,CAAY,SAAS,kDAAC;;IAGpC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,eAAe,GACtB,SAAS,CAA6B,iBAAiB,2DAAC;;AAGjD,IAAA,aAAa,GAAG,MAAM,CAAC,KAAK,yDAAC;AAC7B,IAAA,cAAc,GAAG,MAAM,CAAC,KAAK,0DAAC;;IAG/B,cAAc,GAA0B,IAAI;AAEpD,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;YACV,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,UAAU;YAC/C,IAAI,UAAU,EAAE;;gBAEd,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC;YACnD;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;;QAEb,IAAI,CAAC,mBAAmB,EAAE;;QAE1B,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC/C,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC;QACjD,UAAU,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC;IACnD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;IACnC;IAEQ,mBAAmB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;AACvD,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;YAC5C,IAAI,CAAC,mBAAmB,EAAE;AAC5B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;;AAGtC,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ;AACnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1C;IACF;;AAGS,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,UAAU,sDAAC;;AAGzD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,GAAG,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3E;;IAGQ,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CACF,qBAAqB,CAAC;AACpB,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;KACtB,CAAC,EACF,IAAI,CAAC,UAAU,EAAE,GAAG,gBAAgB,GAAG,EAAE,EACzC,IAAI,CAAC,SAAS,EAAE,CACjB,2DACF;;IAGD,UAAU,GAAA;QACR,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;QACvD,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG;AAChD,YAAA,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACjE;IACF;;IAGA,WAAW,GAAA;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;QACvD,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,GAAG,GAAG;AAChD,YAAA,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAChE;IACF;;IAGA,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;IAC5B;;IAGQ,mBAAmB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa;AACvD,QAAA,IAAI,CAAC,SAAS;YAAE;QAEhB,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,SAAS;;QAG1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;;AAGtC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;IACrE;wGAjHW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzGlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2mBAAA,CAAA,EAAA,CAAA;;4FAwCU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA5G7B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiET,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2mBAAA,CAAA,EAAA;qSAiDuC,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC3I3D;;;;;;;;;;;;;;;;;;;AAmBG;MA6CU,oBAAoB,CAAA;;IAEd,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGxD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;;AAGzC,IAAA,OAAO,GAAG,KAAK,CAAa,MAAM,mDAAC;;AAGnC,IAAA,IAAI,GAAG,KAAK,CAAU,IAAI,gDAAC;;AAG3B,IAAA,KAAK,GAAG,KAAK,CAAW,SAAS,iDAAC;;AAGlC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAGhC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;AACjD,IAAA,CAAC,oDAAC;;IAGO,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CACF,eAAe,CAAC;AACd,QAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,2DACF;;AAGQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAGnE,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CACF,qBAAqB,CAAC;AACpB,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;KACpB,CAAC,CACH,6DACF;;AAGQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGvD,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG5E,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC;IACF;wGAhEW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzCrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA5ChC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtEH;;;;;;;;;;;AAWG;MAyBU,oBAAoB,CAAA;;IAEd,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGxD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;;IAGzC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;AACjD,IAAA,CAAC,oDAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAAC;wGAjB9D,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBrB;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxBhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACRH;;;;;;;;;;AAUG;MAKU,mBAAmB,CAAA;AACX,IAAA,QAAA;AAAnB,IAAA,WAAA,CAAmB,QAA8B,EAAA;QAA9B,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAyB;wGADzC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAaD;;;;;;;;;;;;;;;;;;;;AAoBG;MAkGU,sBAAsB,CAAA;;AAExB,IAAA,IAAI,GAAG,KAAK,CAAU,IAAI,gDAAC;;AAG3B,IAAA,OAAO,GAAG,KAAK,CAAa,MAAM,mDAAC;;AAGnC,IAAA,KAAK,GAAG,KAAK,CAAW,SAAS,iDAAC;;AAGlC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAGhC,IAAI,GAAG,KAAK,CAAY;AAC/B,QAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAC,EAAE;QAC7C,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACrC,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGO,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,uDAAC;;IAG9B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,SAAS,GAAG,MAAM,EAAU;;AAG5B,IAAA,WAAW,GAAG,eAAe,CAAC,mBAAmB,uDAAC;;AAG1C,IAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,wDAAC;;AAGlD,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACpC,QAAA,OAAO,QAAQ,KAAK,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;AAC1D,IAAA,CAAC,+DAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,4DAAC;;AAGzD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG/D,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGhD,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGnE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGvD,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;;AAI5E,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,OAAO,IAAI,CACT,eAAe,CAAC;AACd,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC1B,SAAA,CAAC,CACH;IACH;;IAGA,oBAAoB,GAAA;QAClB,OAAO,IAAI,CACT,qBAAqB,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACpB,SAAA,CAAC,CACH;IACH;;AAGA,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,cAAc;IACvB;;AAGA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC5D,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B;IACF;wGA3FW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EA6BM,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1HhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvFS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FA8Ff,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAjGlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;0yBAoCsC,mBAAmB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvM5D;;ACGA;;;;;AAKG;MACU,oBAAoB,GAAG,GAAG,CACrC,IAAI,CACF,UAAU,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,UAAU;AACV;AACA,WAAW;AACX;AACA,gBAAgB,EAChB,2BAA2B,EAC3B,6BAA6B,CAC9B;AAGH;;;;AAIG;MACU,aAAa,GAAG,GAAG,CAC9B,IAAI,CACF,QAAQ,EACR,gBAAgB,EAChB,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,CACZ;AAGH;;;;;AAKG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC,IAAI;AACF;AACA,kBAAkB,EAClB,cAAc,EACd,eAAe;AACf;AACA,iBAAiB,EACjB,yBAAyB;AACzB;AACA,QAAQ,EACR,OAAO,EACP,MAAM;AACN;AACA,kBAAkB,CACnB;AAGH;;;;AAIG;MACU,iBAAiB,GAAG,GAAG,CAClC,IAAI,CACF,4BAA4B;AAC5B;AACA,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,CACrB;AAGH;;;;AAIG;MACU,mBAAmB,GAAG,GAAG,CACpC,IAAI,CACF,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,wBAAwB,CACzB;AAGH;;;;;AAKG;AACI,MAAM,gBAAgB,GAAG,GAAG,CACjC,IAAI,CACF,UAAU,EACV,kBAAkB;AAClB;AACA,gBAAgB,EAChB,cAAc,EACd,aAAa;AACb;AACA,sBAAsB;AACtB;AACA,qCAAqC,EACrC,uCAAuC;AACvC;AACA,6BAA6B;AAC7B;AACA,gBAAgB,CACjB;AAGH;;;;;AAKG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI;AACF;AACA,MAAM,EACN,MAAM,EACN,MAAM;AACN;AACA,WAAW,EACX,cAAc;AACd;AACA,eAAe,EACf,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe;AACf;AACA,mBAAmB;AACnB;AACA,+BAA+B;AAC/B;AACA,sBAAsB,CACvB;AAGH;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI;AACF;AACA,MAAM,EACN,MAAM;AACN;AACA,cAAc;AACd;AACA,gBAAgB,EAChB,SAAS,EACT,aAAa;AACb;AACA,iBAAiB;AACjB;AACA,+BAA+B;AAC/B;AACA,6BAA6B,EAC7B,gCAAgC,CACjC;AAGH;;;;;AAKG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI,CACF,MAAM,EACN,cAAc,EACd,OAAO,EACP,MAAM,EACN,MAAM;AACN;AACA,kBAAkB;AAClB;AACA,cAAc;AACd;AACA,UAAU,CACX,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;YACL,OAAO,EAAE,IAAI,CACX,gBAAgB,EAChB,aAAa,EACb,qBAAqB,CACtB;YACD,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,oBAAoB,CAAC;YAC/D,OAAO,EAAE,IAAI,CACX,gBAAgB,EAChB,aAAa,EACb,qBAAqB,CACtB;YACD,OAAO,EAAE,IAAI,CACX,gBAAgB,EAChB,aAAa,EACb,qBAAqB,CACtB;YACD,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,mBAAmB,CAAC;AACpE,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,MAAM;AACd,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI,CACF,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,cAAc,CACf;AAGH;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;AAGxE;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,CAAC;AAGnE;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,CAAC;AAGlD;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI,CAAC,uCAAuC,CAAC;AAG/C;;;;AAIG;MACU,oBAAoB,GAAG,GAAG,CACrC,IAAI,CACF,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,CACjB;;ACtSH;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;MAiBU,cAAc,CAAA;;IAEhB,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAGlC,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,0DACtD;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,wDACxC;wGAbU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAbf;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,SAAS;+BACE,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,QAAA,EACN;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AClCH;;;;;;;;;;;;;;AAcG;MAeU,oBAAoB,CAAA;;IAEtB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAC9C;wGANU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXrB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtBH;;;;;;;;;;;;;;AAcG;MAeU,kBAAkB,CAAA;;IAEpB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAC5C;wGANU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXnB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtBH;;;;;;;;;;;;;;AAcG;MAeU,oBAAoB,CAAA;;IAEtB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAC9C;wGANU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXrB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAdhC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACtBH;;;;;;;;;;;;AAYG;MAkBU,iBAAiB,CAAA;;IAEnB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAG3B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAEhC,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAC3C;wGATU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAdlB;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN;;;;;;;AAOT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACvBH;;;;;;;;;;;AAWG;MAmBU,kBAAkB,CAAA;;IAEpB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;AAGzB,IAAA,KAAK,GAAG,KAAK,CAA0C,KAAK,iDAAC;AAE7D,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAC5C;wGAZU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfnB;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlB9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACvBH;;;;;;;;;;;;AAYG;MAeU,kBAAkB,CAAA;;IAEpB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEzB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,2DAC5C;wGATU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXnB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FAOU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAd9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;ACrBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;MA0BU,kBAAkB,CAAA;;IAEpB,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CACF,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,IAAI,CAAC,SAAS,EAAE,CACjB,uDACF;wGAlBU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBnB;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAzB9B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACvCH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;MAuBU,wBAAwB,CAAA;;AAE1B,IAAA,KAAK,GAAG,KAAK,CAAuB,MAAM,iDAAC;;IAG3C,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAE3B,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACzE;AAEQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,QAAQ,GAAyC;AACrD,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,WAAW,EAAE,cAAc;SAC5B;QAED,OAAO,IAAI,CACT,MAAM,EACN,cAAc,EACd,OAAO,EACP,QAAQ,EACR,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CACvB;AACH,IAAA,CAAC,0DAAC;wGA/BS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBzB;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAtBpC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;AAYT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AChDH;;;;;;;;;;;;;;;;AAgBG;MAeU,wBAAwB,CAAA;;IAE1B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,uBAAuB,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,yDAClD;wGANU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXzB;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,QAAA,EACN;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACzBH;;;;AAIG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAC5C,IAAI;AACF;AACA,yBAAyB;AACzB;AACA,UAAU;AACV;AACA,WAAW;AACX;AACA,6CAA6C,CAC9C,CACF;AAED;;;;AAIG;AACI,MAAM,6BAA6B,GAAG,GAAG,CAC9C,IAAI;AACF;AACA,yBAAyB,CAC1B,CACF;AAED;;;;AAIG;AACI,MAAM,+BAA+B,GAAG,GAAG,CAChD,IAAI;AACF;AACA,2BAA2B,CAC5B,CACF;AAED;;;;AAIG;AACI,MAAM,8BAA8B,GAAG,GAAG,CAC/C,IAAI;AACF;AACA,8BAA8B;AAC9B;AACA,SAAS;AACT;AACA,kDAAkD,CACnD,CACF;AAED;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,iFAAiF,CAClF,CACF;AAED;;;;AAIG;AACI,MAAM,4BAA4B,GAAG,GAAG,CAC7C,IAAI;AACF;AACA,iFAAiF;AACjF;AACA,mBAAmB,CACpB,CACF;AAED;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,MAAM;AACN;AACA,iCAAiC;AACjC;AACA,eAAe;AACf;AACA,uGAAuG;AACvG;AACA,cAAc;AACd;AACA,6BAA6B;AAC7B;AACA,wBAAwB,EACxB,gDAAgD,EAChD,gDAAgD;AAChD;AACA,0CAA0C,EAC1C,mDAAmD,EACnD,mEAAmE,CACpE,CACF;AAED;;;;AAIG;AACI,MAAM,+BAA+B,GAAG,GAAG,CAChD,IAAI;AACF;AACA,UAAU;AACV;AACA,cAAc,CACf,CACF;AAED;;;;AAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,WAAW;AACX;AACA,iCAAiC;AACjC;AACA,eAAe;AACf;AACA,2FAA2F;AAC3F;AACA,cAAc;AACd;AACA,gBAAgB;AAChB;AACA,iBAAiB;AACjB;AACA,6BAA6B;AAC7B;AACA,0CAA0C,EAC1C,mDAAmD,CACpD,CACF;AAED;;;;AAIG;AACI,MAAM,4BAA4B,GAAG,GAAG,CAC7C,IAAI;AACF;AACA,+CAA+C;AAC/C;AACA,qBAAqB,CACtB,CACF;AAED;;;;AAIG;AACI,MAAM,6BAA6B,GAAG,GAAG,CAC9C,IAAI;AACF;AACA,6BAA6B,CAC9B,CACF;AAED;;;;AAIG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAC5C,IAAI;AACF;AACA,mBAAmB;AACnB;AACA,kCAAkC;AAClC;AACA,iCAAiC;AACjC;AACA,eAAe;AACf;AACA,gBAAgB;AAChB;AACA,cAAc;AACd;AACA,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA,iEAAiE,EACjE,4BAA4B,EAC5B,2EAA2E,EAC3E,iDAAiD;AACjD;AACA,6CAA6C,CAC9C,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA,CACF;;MCvBY,mBAAmB,CAAA;;AAErB,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,uDAAC;AAC9B,IAAA,UAAU,GAAG,KAAK,CAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;IAC3B,eAAe,GAAG,KAAK,CAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9C,IAAA,UAAU,GAAG,KAAK,CAAS,CAAC,sDAAC;AAC7B,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC;IAC/B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,UAAU,GAAG,MAAM,EAAU;IAC7B,cAAc,GAAG,MAAM,EAAU;IACjC,gBAAgB,GAAG,MAAM,EAAyB;IAClD,OAAO,GAAG,MAAM,EAAQ;;AAGxB,IAAA,OAAO,GAAG,MAAM,CAAS,CAAC,mDAAC;AAC3B,IAAA,WAAW,GAAG,MAAM,CAAS,CAAC,uDAAC;;AAGvB,IAAA,aAAa,GAAG,MAAM,CAAS,EAAE,yDAAC;AAEnD,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACtC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvC,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;AACnC,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE;AAEvB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;;AAGS,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AACpC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAE/B,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;QAClD;;QAGA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,IAAA,CAAC,8DAAC;;AAGO,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAE/B,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE;YAC9D,OAAO,CAAA,SAAA,EAAY,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA,MAAA,CAAQ;QAC/C;QAEA,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;AACxC,QAAA,OAAO,GAAG,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,IAAA,EAAO,KAAK,QAAQ;AAC9C,IAAA,CAAC,8DAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE;AAChC,QAAA,OAAO,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAClD,IAAA,CAAC,0DAAC;;AAGO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,2BAA2B,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,4DACtD;AACQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,6BAA6B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACtC;AACQ,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,+BAA+B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxC;AACQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,8BAA8B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvC;AACQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9D,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,4BAA4B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrC;AACQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC9D,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,+BAA+B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxC;AACQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAChE,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,4BAA4B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACrC;AACQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,6BAA6B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACtC;AACQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,2BAA2B,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,4DACxD;AACQ,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,2BAA2B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,gEACvD;;IAGD,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACvD;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC;IAEA,YAAY,GAAA;AACV,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACtC,IAAI,IAAI,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACrC;;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD;AAEA,IAAA,iBAAiB,CAAC,KAAY,EAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAA0B;QAChD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC;IAEA,eAAe,GAAA;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE;AAC7C,QAAA,IAAI,SAAS,KAAK,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B;QACF;QAEA,IAAI,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;AAClC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B;QACF;QAEA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B;;AAGA,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA2B;QAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;YAAE;AAE3C,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAC3B;IACF;AAEQ,IAAA,WAAW,CAAC,OAAe,EAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;;AAG7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;;AAGhE,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;;AAGxE,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAChC;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,YAAA,WAAW,EAAE,OAAO;AACpB,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE;AAC7B,SAAA,CAAC;IACJ;wGA/MW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjLpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0KT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAOU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBApL/B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0KT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;ACvMH;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI;AACF;AACA,UAAU;AACV;AACA,WAAW;AACX;AACA,aAAa,CACd,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,aAAa;AACzB,YAAA,QAAQ,EAAE,0BAA0B;AACrC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,YAAY;AAC1B,KAAA;AACF,CAAA,CACF;;ACnBD;;;;;;;;;;AAUG;MAsBU,kBAAkB,CAAA;;AAEpB,IAAA,WAAW,GAAG,KAAK,CAAuB,YAAY,uDAAC;;IAGvD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CACF,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EACtD,IAAI,CAAC,SAAS,EAAE,CACjB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;wGAbU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBnB;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,CAAA;;4FAYU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBArB9B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,QAAA,EACN;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;;;ACmBH;;;AAGG;MA+SU,uBAAuB,CAAA;;IAEzB,KAAK,GAAW,uBAAuB;;IAGvC,OAAO,GAAiB,aAAa;;AAGrC,IAAA,YAAY;;IAOZ,aAAa,GAAY,KAAK;IAC9B,UAAU,GAAY,IAAI;IAE1B,gBAAgB,GAAY,KAAK;;IAGjC,YAAY,GAAkB,EAAE;IAChC,SAAS,GAAe,EAAE;AAC1B,IAAA,eAAe;;IAUf,iBAAiB,GAAY,IAAI;IACjC,kBAAkB,GAAW,UAAU;IACvC,kBAAkB,GAAW,OAAO;;IAGpC,SAAS,GAAe,EAAE;;IAG1B,IAAI,GAAgB,EAAE;IACtB,cAAc,GAAW,CAAC;IAC1B,cAAc,GAAU,EAAE;;AAGzB,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAQ;AAC5C,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW;AAC5C,IAAA,SAAS,GAAG,IAAI,YAAY,EAAU;AACtC,IAAA,eAAe,GAAG,IAAI,YAAY,EAAU;AAC5C,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU;AAChD,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AACvC,IAAA,aAAa,GAAG,IAAI,YAAY,EAGtC;AACM,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAG1C;AACM,IAAA,UAAU,GAAG,IAAI,YAAY,EAAU;AACvC,IAAA,SAAS,GAAG,IAAI,YAAY,EAGlC;AAEJ,IAAA,IAAI,gBAAgB,GAAA;QAClB,MAAM,OAAO,GAAG,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,OAAO,CAAA,CAAE,CAAC;QACzC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC1C,YAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;QACjC;AACA,QAAA,OAAO,OAAO;IAChB;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;IAC/B;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,iBAAiB,CAAC,IAAY,EAAA;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;AAEA,IAAA,qBAAqB,CAAC,QAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;IACzC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,eAAe,CAAC,QAAgB,EAAE,IAAY,EAAA;QAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC7C;IAEA,mBAAmB,CAAC,QAAgB,EAAE,QAAgB,EAAA;QACpD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrD;AAEA,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAChC;IAEA,WAAW,CAAC,QAAgB,EAAE,MAAmB,EAAA;QAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACzC,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,CAAC,OAAO,EAAE;QAClB;IACF;AAEA,IAAA,gBAAgB,CAAC,aAAsB,EAAA;QACrC,QAAQ,aAAa;AACnB,YAAA,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;AACnB,YAAA,KAAK,QAAQ;gBACX,OAAO,aAAa,CAAC;AACvB,YAAA,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC;AACjB,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;wGAlIW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnSxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgST,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,krHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAvSC,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,kBAAkB,gGAClB,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAqSL,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA9SnC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,sBAAsB;wBACtB,mBAAmB;wBACnB,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,cAAc;qBACf,EAAA,QAAA,EACS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgST,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,krHAAA,CAAA,EAAA;;sBAKA;;sBAGA;;sBAGA;;sBAOA;;sBACA;;sBAEA;;sBAGA;;sBACA;;sBACA;;sBAUA;;sBACA;;sBACA;;sBAGA;;sBAGA;;sBACA;;sBACA;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAIA;;sBAIA;;sBACA;;;AC/ZH;;ACmBO,MAAM,gBAAgB,GAAG,GAAG,CACjC,IAAI;AACF;AACA,gBAAgB,EAChB,cAAc;AACd;AACA,gCAAgC;AAChC;AACA,WAAW;AACX;AACA,sBAAsB;AACtB;AACA,gCAAgC,EAChC,mCAAmC;AACnC;AACA,sDAAsD;AACtD;AACA,UAAU;AACV;AACA,+EAA+E;AAC/E;AACA,8EAA8E;AAC9E;AACA,wDAAwD;AACxD;AACA,kBAAkB;AAClB;AACA,kEAAkE,EAClE,uCAAuC,CACxC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,2BAA2B;AAC/B,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,EAAE,EAAE,8BAA8B;AACnC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,UAAU;AACnB,KAAA;AACF,CAAA;MA2CU,iBAAiB,CAAA;AAC5B,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,uDAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,gDAAC;IACvB,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAe,SAAS,gDAAC;AACrC,IAAA,MAAM,GAAG,KAAK,CAAiB,UAAU,kDAAC;IAC1C,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAE3B,IAAA,IAA0B,WAAW,GAAA;AACnC,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,iDAAC;;IAGlB,aAAa,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;IAG3C,gBAAgB,GAAG,MAAM,CAA0B,MAAK,EAAE,CAAC,4DAAC;IAC5D,iBAAiB,GAAG,MAAM,CAAa,MAAK,EAAE,CAAC,6DAAC;AAExD,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CACT,gBAAgB,CAAC;AACf,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,SAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB;IACH;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA6B;QACpD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;IACzC;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,iBAAiB,EAAE,EAAE;IAC5B;IAEA,OAAO,GAAA;;IAEP;;AAGA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAChC;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;IACpC;;AAGA,IAAA,QAAQ,CAAC,OAAwB,EAAA;;QAE/B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACrC,YAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC3B;;AAGA,QAAA,OAAO,IAAI;IACb;wGA1EW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAbjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BS;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FAmBU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArC7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EACD;;;;;;;;;;;;;;GAcT,EAAA,SAAA,EAMU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;AACtB,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAaA,WAAW;uBAAC,OAAO;;;ACtHtB;;;;AAIG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,uBAAuB,CACxB;AAGH;;AAEG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,+BAA+B;AAC/B;AACA,iBAAiB;AACjB;AACA,QAAQ,CACT;AAGH;;;;AAIG;AACI,MAAM,yBAAyB,GAAG,GAAG,CAC1C,IAAI;AACF;AACA,gCAAgC;AAChC;AACA,YAAY;AACZ;AACA,QAAQ;AACR;AACA,UAAU;AACV;AACA,6BAA6B;AAC7B;AACA,QAAQ;AACR;AACA,eAAe,CAChB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,yBAAyB;AAC7B,YAAA,EAAE,EAAE,0BAA0B;AAC9B,YAAA,EAAE,EAAE,0BAA0B;AAC/B,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,mCAAmC;AAC5C,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,KAAK,EAAE,4CAA4C;AACnD,YAAA,QAAQ,EACN,gEAAgE;AAClE,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,uBAAuB,GAAG,GAAG,CACxC,IAAI;AACF;AACA,QAAQ;AACR;AACA,yCAAyC;AACzC;AACA,gDAAgD;AAChD;AACA,iBAAiB;AACjB;AACA,mCAAmC;AACnC;AACA,gBAAgB;AAChB;AACA,6BAA6B,CAC9B,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,KAAK,EAAE,iBAAiB;AACxB,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,KAAK,EAAE,+CAA+C;AACvD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,4BAA4B,GAAG,GAAG,CAC7C,IAAI;AACF;AACA,sBAAsB;AACtB;AACA,kCAAkC;AAClC;AACA,gCAAgC;AAChC;AACA,gBAAgB;AAChB;AACA,uBAAuB;AACvB;AACA,iCAAiC;AACjC;AACA,wCAAwC;AACxC;AACA,iDAAiD,CAClD;AAGH;;AAEG;AACI,MAAM,0BAA0B,GAAG,GAAG,CAC3C,IAAI;AACF;AACA,gDAAgD;AAChD;AACA,YAAY;AACZ;AACA,sBAAsB;AACtB;AACA,YAAY;AACZ;AACA,yBAAyB;AACzB;AACA,4BAA4B;AAC5B;AACA,+BAA+B,CAChC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,EAAE,EAAE,MAAM;AACV,YAAA,EAAE,EAAE,MAAM;AACX,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,+BAA+B,GAAG,GAAG,CAChD,IAAI;AACF;AACA,wCAAwC;AACxC;AACA,KAAK;AACL;AACA,wBAAwB,CACzB;AAGH;;AAEG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,sBAAsB,CACvB;AAGH;;AAEG;AACI,MAAM,8BAA8B,GAAG,GAAG,CAC/C,IAAI;AACF;AACA,+CAA+C;AAC/C;AACA,uBAAuB;AACvB;AACA,aAAa;AACb;AACA,MAAM,CACP;AAGH;;AAEG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,UAAU;AACV;AACA,iBAAiB;AACjB;AACA,uBAAuB;AACvB;AACA,MAAM;AACN;AACA,mEAAmE,CACpE;AAGH;;AAEG;AACI,MAAM,wBAAwB,GAAG,GAAG,CACzC,IAAI;AACF;AACA,KAAK;AACL;AACA,+BAA+B;AAC/B;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,gBAAgB;AAChB;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,kCAAkC;AAClC;AACA,6BAA6B,CAC9B,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,oEAAoE;AAC1E,YAAA,KAAK,EAAE,iBAAiB;AACzB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,0EAA0E;AAChF,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,KAAK;AAChB,KAAA;AACF,CAAA;AAGH;;AAEG;AACI,MAAM,2BAA2B,GAAG,GAAG,CAC5C,IAAI;AACF;AACA,qBAAqB;AACrB;AACA,uBAAuB;AACvB;AACA,MAAM,CACP;AAGH;;AAEG;AACI,MAAM,yBAAyB,GAAG,GAAG,CAC1C,IAAI;AACF;AACA,YAAY;AACZ;AACA,KAAK;AACL;AACA,wBAAwB,CACzB;AAGH;;AAEG;AACI,MAAM,8BAA8B,GAAG,GAAG,CAC/C,IAAI;AACF;AACA,QAAQ;AACR;AACA,WAAW;AACX;AACA,wCAAwC;AACxC;AACA,qBAAqB;AACrB;AACA,SAAS;AACT;AACA,gBAAgB;AAChB;AACA,iBAAiB;AACjB;AACA,gBAAgB;AAChB;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,sCAAsC;AACtC;AACA,kBAAkB;AAClB;AACA,iDAAiD,CAClD;AAGH;;AAEG;AACI,MAAM,8BAA8B,GAAG,GAAG,CAC/C,IAAI;AACF;AACA,+BAA+B;AAC/B;AACA,kBAAkB;AAClB;AACA,MAAM,CACP;;ACxSH;;;;;;;;;;;;;;AAcG;MA0JU,mBAAmB,CAAA;AACb,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;;AAGvC,IAAA,IAAI,GAAG,KAAK,CAAiB,IAAI,gDAAC;;AAGlC,IAAA,KAAK,GAAG,KAAK,CAAkB,SAAS,iDAAC;;AAGzC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGzB,IAAA,WAAW,GAAG,KAAK,CAAS,OAAO,uDAAC;;AAGpC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;;AAGzB,IAAA,YAAY,GAAG,KAAK,CAAS,EAAE,wDAAC;;AAGhC,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;;AAG3B,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;;AAG3B,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,uDAAC;;IAG9B,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,WAAW,GAAG,MAAM,EAAU;;IAG9B,eAAe,GAAG,MAAM,EAAoC;;IAG5D,UAAU,GAAG,MAAM,EAAW;AAEf,IAAA,SAAS;AACP,IAAA,WAAW;;AAG5B,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,kDAAC;AAC/B,IAAA,YAAY,GAAG,MAAM,CAAS,CAAC,wDAAC;AAChC,IAAA,cAAc,GAAG,MAAM,CAAS,CAAC,0DAAC;AAClC,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;AAClC,IAAA,aAAa,GAAG,MAAM,CAAS,EAAE,yDAAC;AAElC,IAAA,cAAc,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAEvF,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;YACxB,IAAI,GAAG,EAAE;AACP,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;;IAGS,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;;AAGxD,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QACxC,MAAM,OAAO,GAAa,EAAE;AAC5B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC/C,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjB;AACA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC,4DAAC;;IAGO,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAGhD,IAAA,YAAY,GAAG,QAAQ,CAAkB,MAAK;AACrD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO;AAAE,YAAA,OAAO,OAAO;QAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU;AAAE,YAAA,OAAO,OAAO;AACnE,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE;AACrB,IAAA,CAAC,wDAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;IAE9D,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,yBAAyB,CAAC;AACxB,QAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,KAAA,CAAC,EACF,IAAI,CAAC,SAAS,EAAE,CACjB,0DACF;IAEQ,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC9D;IAEQ,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CACF,4BAA4B,EAAE,EAC9B,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,IAAI,kBAAkB,CAC/C,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;IAEQ,eAAe,GAAG,QAAQ,CAAC,MAClC,IAAI,CAAC,0BAA0B,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxD;AAEQ,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,+BAA+B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACxC;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEhE,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,8BAA8B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE5D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,2BAA2B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACpC;AAEQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElE,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,8BAA8B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvC;AAEQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,8BAA8B,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvC;IAEQ,SAAS,GAAG,QAAQ,CAAC,MAC5B,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,GAAG,cAAc,GAAG,cAAc,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC3D;IAED,gBAAgB,CAAC,QAAiB,EAAE,QAAiB,EAAA;QACnD,OAAO,IAAI,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D;IAEA,QAAQ,GAAA;;IAER;AAEA,IAAA,SAAS,CAAC,IAAY,EAAA;QACpB,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;QAC/B;AACA,QAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1C,QAAA,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IAC7D;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACvC;AAEA,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAErC,QAAA,IAAI,GAAG,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAC7C,QAAA,IAAI,GAAG,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AAE7C,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,KAAK;QAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAErC,QAAA,IACE,GAAG;AACH,YAAA,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,CAAC,IAAI;AACtC,YAAA,MAAM,GAAG,SAAS,CAAC,MAAM,EACzB;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IACE,GAAG;AACH,YAAA,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,CAAC,IAAI;AACtC,YAAA,MAAM,GAAG,SAAS,CAAC,MAAM,EACzB;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAAE;AAClE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU;YAAE;AAEjC,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;AAC/B,QAAA,MAAM,aAAa,GACjB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAE9D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,eAAe,EAAE;;QAGtB,IAAI,CAAC,gBAAgB,EAAE;IACzB;;IAGQ,gBAAgB,GAAA;;QAEtB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;AACzD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/D,CAAC,EAAE,CAAC,CAAC;IACP;;IAGQ,eAAe,CACrB,OAA+B,EAC/B,KAAa,EAAA;QAEb,IAAI,CAAC,OAAO,EAAE,aAAa;YAAE;AAE7B,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,aAA4B;QACxD,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAC7C,CAAA,aAAA,EAAgB,KAAK,CAAA,EAAA,CAAI,CACX;QAEhB,IAAI,aAAa,EAAE;;AAEjB,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY;AAC3C,YAAA,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS;AACzC,YAAA,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY;;YAG/C,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;YAC/D,WAAW,CAAC,QAAQ,CAAC;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAC3B,gBAAA,QAAQ,EAAE,QAAQ;AACnB,aAAA,CAAC;QACJ;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU;YAAE;AAEjC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACnD;IAEA,eAAe,GAAA;QACb,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA,CAAE;AACxG,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;AACzB,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;AAC9B,SAAA,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU;YAAE;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;;QAGnC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACpC,IAAI,CAAC,gBAAgB,EAAE;QACzB;IACF;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,UAAU;YAAE;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG1B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,IAAI,CAAC,gBAAgB,EAAE;YACzB;QACF;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAGA,IAAA,eAAe,CAAC,KAAiB,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;;AAGjD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAClD,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;wGAzVW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtJpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAzJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoJT,EAAA,CAAA;AACF,iBAAA;;sBA2CE,SAAS;uBAAC,WAAW;;sBACrB,SAAS;uBAAC,aAAa;;sBAqSvB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;ACliB5C;;;;AAIG;AACI,MAAM,aAAa,GAAG,GAAG,CAC9B,IAAI;AACF;AACA,kDAAkD;AAClD;AACA,6BAA6B;AAC7B;AACA,SAAS;AACT;AACA,sBAAsB;AACtB;AACA,eAAe;AACf;AACA,mDAAmD,CACpD,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,WAAW,EAAE,cAAc;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,CACpC,IAAI;AACF;AACA,uBAAuB;AACvB;AACA,YAAY;AACZ;AACA,WAAW,CACZ,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,WAAW,EAAE,YAAY;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AACnB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,iBAAiB,GAAG,GAAG,CAClC,IAAI;AACF;AACA,kBAAkB,CACnB;AAGH;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,aAAa;AACb;AACA,6BAA6B,CAC9B;AAGH;;;;AAIG;AACI,MAAM,kBAAkB,GAAG,GAAG,CACnC,IAAI;AACF;AACA,sBAAsB;AACtB;AACA,4BAA4B;AAC5B;AACA,gBAAgB;AAChB;AACA,kCAAkC;AAClC;AACA,kBAAkB;AAClB;AACA,oBAAoB,EACpB,+GAA+G,CAChH;;ACxFH;;;;;;;;;;;;;;AAcG;MAkIU,cAAc,CAAA;;AAEhB,IAAA,OAAO,GAAG,KAAK,CAAe,SAAS,mDAAC;;AAGxC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,uDAAC;;AAGnC,IAAA,OAAO,GAAG,KAAK,CAAS,6BAA6B,mDAAC;;IAGtD,SAAS,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAG3B,OAAO,GAAG,MAAM,EAAQ;;AAGxB,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;;IAGlC,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACnE;IAEQ,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvD;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvD,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEzD,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GAAiC;YAC7C,OAAO,EAAE,SAAS;YAClB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,SAAS;SACvB;AACD,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACjC,IAAA,CAAC,qDAAC;IAEF,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;wGAhDW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9Hf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAGU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAjI1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2HT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA;;;ACvKD;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,uBAAuB;AACvB;AACA,gBAAgB;AAChB;AACA,cAAc,EACd,yEAAyE,CAC1E;AAGH;;;;AAIG;AACI,MAAM,sBAAsB,GAAG,GAAG,CACvC,IAAI;AACF;AACA,eAAe;AACf;AACA,oCAAoC;AACpC;AACA,mCAAmC;AACnC;AACA,aAAa;AACb;AACA,oCAAoC;AACpC;AACA,mDAAmD;AACnD;AACA,2BAA2B;AAC3B;AACA,iCAAiC,CAClC,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,GAAG,EAAE,4CAA4C;AACjD,YAAA,MAAM,EAAE,yCAAyC;AACjD,YAAA,IAAI,EAAE,0CAA0C;AAChD,YAAA,KAAK,EAAE,yCAAyC;AACjD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA;AAGH;;;;AAIG;AACI,MAAM,oBAAoB,GAAG,GAAG,CACrC,IAAI;AACF;AACA,UAAU;AACV;AACA,QAAQ;AACR;AACA,YAAY;AACZ;AACA,sBAAsB,CACvB,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,GAAG,EAAE,qCAAqC;AAC1C,YAAA,MAAM,EAAE,kCAAkC;AAC1C,YAAA,IAAI,EAAE,mCAAmC;AACzC,YAAA,KAAK,EAAE,kCAAkC;AAC1C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA;;AC9DH;;;;;;;;;;;AAWG;MAyCU,gBAAgB,CAAA;AA2CP,IAAA,GAAA;;AAzCX,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;;AAG3B,IAAA,SAAS,GAAG,KAAK,CAAmB,KAAK,qDAAC;;AAG1C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;;IAGhC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;;IAGlC,gBAAgB,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEd,IAAA,cAAc;AACd,IAAA,cAAc;AAElC,IAAA,SAAS,GAAG,CAAA,QAAA,EAAW,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;;AAGhE,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;IACnC,WAAW,GAAG,KAAK;IACnB,eAAe,GAAG,KAAK;AACvB,IAAA,WAAW;;AAGV,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,0DACxD;IAEQ,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CACF,sBAAsB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,EACvD,IAAI,CAAC,gBAAgB,EAAE,CACxB,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACF;IAEQ,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAC5D;AAED,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;IAAsB;IAE7C,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa;YAC5C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AAChC,gBAAA,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;YAClC;QACF;IACF;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC3B,IAAI,CAAC,IAAI,EAAE;IACb;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC5B,IAAI,CAAC,IAAI,EAAE;IACb;AAEA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;YACxB;QACF;QACA,IAAI,CAAC,IAAI,EAAE;IACb;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,IAAI,EAAE;IACb;AAEA;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAC1B,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,IAAI,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AACA,QAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;IAEQ,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QACzB,CAAC,EAAE,CAAC,CAAC;IACP;wGAnHW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FASU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAxC5B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BT,EAAA,eAAA,EAOgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA;;sBAkB9C,SAAS;uBAAC,gBAAgB;;sBAC1B,SAAS;uBAAC,gBAAgB;;;AC9F7B;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"bsginstitute-bsg-integra.mjs","sources":["../../../projects/bsg-integra/src/lib/components/accordion/accordion.variants.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion.component.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion-item.component.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion-trigger.component.ts","../../../projects/bsg-integra/src/lib/components/accordion/accordion-content.component.ts","../../../projects/bsg-integra/src/lib/components/alert/alert.variants.ts","../../../projects/bsg-integra/src/lib/components/alert/alert.component.ts","../../../projects/bsg-integra/src/lib/components/avatar/avatar.variants.ts","../../../projects/bsg-integra/src/lib/components/avatar/avatar.component.ts","../../../projects/bsg-integra/src/lib/components/badge/badge.variants.ts","../../../projects/bsg-integra/src/lib/components/badge/badge.component.ts","../../../projects/bsg-integra/src/lib/components/button/button.variants.ts","../../../projects/bsg-integra/src/lib/components/button/button.component.ts","../../../projects/bsg-integra/src/lib/components/card/card.variants.ts","../../../projects/bsg-integra/src/lib/components/card/card.component.ts","../../../projects/bsg-integra/src/lib/components/carousel/carousel.variants.ts","../../../projects/bsg-integra/src/lib/components/carousel/carousel.component.ts","../../../projects/bsg-integra/src/lib/components/checkbox/checkbox.component.ts","../../../projects/bsg-integra/src/lib/components/collapsible/collapsible.component.ts","../../../projects/bsg-integra/src/lib/components/collapsible/collapsible-trigger.directive.ts","../../../projects/bsg-integra/src/lib/components/collapsible/collapsible-content.component.ts","../../../projects/bsg-integra/src/lib/components/combobox/combobox.variants.ts","../../../projects/bsg-integra/src/lib/components/combobox/combobox.component.ts","../../../projects/bsg-integra/src/lib/components/dialog/dialog.variants.ts","../../../projects/bsg-integra/src/lib/components/dialog/dialog.component.ts","../../../projects/bsg-integra/src/lib/components/input/input.component.ts","../../../projects/bsg-integra/src/lib/components/label/label.variants.ts","../../../projects/bsg-integra/src/lib/components/label/label.component.ts","../../../projects/bsg-integra/src/lib/components/radio/radio.variants.ts","../../../projects/bsg-integra/src/lib/components/radio/radio.component.ts","../../../projects/bsg-integra/src/lib/components/radio-group/radio-group.variants.ts","../../../projects/bsg-integra/src/lib/components/radio-group/radio-group.component.ts","../../../projects/bsg-integra/src/lib/components/select/select.variants.ts","../../../projects/bsg-integra/src/lib/components/select/select.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar.service.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/side-navbar.variants.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-provider.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-header.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-content.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-footer.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group-label.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group-content.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-group-action.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-item.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-button.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-action.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-badge.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-sub.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-sub-item.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-menu-sub-button.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-separator.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-trigger.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-rail.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/sidebar-inset.component.ts","../../../projects/bsg-integra/src/lib/components/side-navbar/index.ts","../../../projects/bsg-integra/src/lib/components/skeleton/skeleton.variants.ts","../../../projects/bsg-integra/src/lib/components/skeleton/skeleton.component.ts","../../../projects/bsg-integra/src/lib/components/spinner/spinner.variants.ts","../../../projects/bsg-integra/src/lib/components/spinner/spinner.component.ts","../../../projects/bsg-integra/src/lib/components/switch/switch.variants.ts","../../../projects/bsg-integra/src/lib/components/switch/switch.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tab-navigation.variants.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs-list.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs-trigger.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tabs-content.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/tab-navigation.component.ts","../../../projects/bsg-integra/src/lib/components/tab-navigation/index.ts","../../../projects/bsg-integra/src/lib/components/table/table.variants.ts","../../../projects/bsg-integra/src/lib/components/table/table.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-header.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-body.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-footer.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-row.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-head.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-cell.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-card.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-card-header.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-card-footer.component.ts","../../../projects/bsg-integra/src/lib/components/pagination/pagination.variants.ts","../../../projects/bsg-integra/src/lib/components/pagination/pagination.component.ts","../../../projects/bsg-integra/src/lib/components/separator/separator.variants.ts","../../../projects/bsg-integra/src/lib/components/separator/separator.component.ts","../../../projects/bsg-integra/src/lib/components/table/table-container.component.ts","../../../projects/bsg-integra/src/lib/components/table/index.ts","../../../projects/bsg-integra/src/lib/components/textarea/textarea.component.ts","../../../projects/bsg-integra/src/lib/components/timepicker/timepicker.variants.ts","../../../projects/bsg-integra/src/lib/components/timepicker/timepicker.component.ts","../../../projects/bsg-integra/src/lib/components/toast/toast.variants.ts","../../../projects/bsg-integra/src/lib/components/toast/toast.component.ts","../../../projects/bsg-integra/src/lib/components/tooltip/tooltip.variants.ts","../../../projects/bsg-integra/src/lib/components/tooltip/tooltip.component.ts","../../../projects/bsg-integra/src/public-api.ts","../../../projects/bsg-integra/src/bsginstitute-bsg-integra.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Accordion container variants\n *\n * Controls the overall accordion container layout and typography\n */\nexport const accordionVariants = cva(\n clsx(\n // Layout\n 'w-full',\n ),\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border border-border rounded-lg p-2',\n elevated: 'shadow-md rounded-lg p-2',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Accordion item variants\n *\n * Controls the individual accordion item styles\n */\nexport const accordionItemVariants = cva(\n clsx(\n // Border\n 'border-b border-border',\n // Last item has no border\n 'last:border-b-0',\n ),\n);\n\n/**\n * Accordion trigger variants\n *\n * Controls the clickable header button\n */\nexport const accordionTriggerVariants = cva(\n clsx(\n // Layout\n 'flex flex-1 items-center justify-between w-full',\n // Spacing\n 'py-4 px-2',\n // Typography\n 'font-medium text-left',\n // Transitions\n 'transition-all duration-200',\n // Hover\n 'hover:underline',\n // Focus\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n // Chevron\n '[&>svg]:shrink-0 [&>svg]:ml-auto [&>svg]:h-4 [&>svg]:w-4',\n ),\n);\n\n/**\n * Accordion content variants\n *\n * Controls the collapsible content area\n */\nexport const accordionContentVariants = cva(\n clsx(\n // Animation\n 'overflow-hidden',\n // Typography\n 'text-sm text-muted-foreground',\n\n 'py-2 px-2',\n ),\n);\n","import { Component, computed, input, OnInit, signal } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { accordionVariants } from './accordion.variants';\n\nexport type AccordionVariant = 'default' | 'bordered' | 'elevated';\nexport type AccordionType = 'single' | 'multiple';\n\nexport type AccordionVariantsProps = VariantProps<typeof accordionVariants>;\n\n/**\n * Accordion Component - Container for accordion items\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-accordion [type]=\"'single'\" [collapsible]=\"true\">\n * <bsg-accordion-item value=\"item-1\">\n * <bsg-accordion-trigger>Trigger text</bsg-accordion-trigger>\n * <bsg-accordion-content>Content here</bsg-accordion-content>\n * </bsg-accordion-item>\n * </bsg-accordion>\n * ```\n */\n@Component({\n selector: 'bsg-accordion',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionComponent implements OnInit {\n /** Accordion variant */\n readonly variant = input<AccordionVariant>('default');\n\n /** Type: 'single' allows one item open, 'multiple' allows multiple */\n readonly type = input<AccordionType>('single');\n\n /** If type is 'single', allows collapsing the open item */\n readonly collapsible = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Default value(s) - item value(s) to be open by default */\n readonly defaultValue = input<string | string[]>();\n\n // Internal state for tracking open items\n private readonly openItems = signal<Set<string>>(new Set());\n\n // Computed container classes\n readonly containerClasses = computed(() =>\n clsx(\n accordionVariants({\n variant: this.variant(),\n }),\n this.className(),\n ),\n );\n\n // Initialize default open items\n ngOnInit(): void {\n const defaultVal = this.defaultValue();\n if (defaultVal) {\n const values = Array.isArray(defaultVal) ? defaultVal : [defaultVal];\n this.openItems.set(new Set(values));\n }\n }\n\n // Check if an item is open\n isItemOpen(value: string): boolean {\n return this.openItems().has(value);\n }\n\n // Toggle an item open/closed\n toggleItem(value: string): void {\n const current = new Set(this.openItems());\n const isOpen = current.has(value);\n\n if (this.type() === 'single') {\n // Single mode: only one item open at a time\n if (isOpen) {\n if (this.collapsible()) {\n current.delete(value);\n }\n } else {\n current.clear();\n current.add(value);\n }\n } else {\n // Multiple mode: toggle the item\n if (isOpen) {\n current.delete(value);\n } else {\n current.add(value);\n }\n }\n\n this.openItems.set(current);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { accordionItemVariants } from './accordion.variants';\nimport { AccordionComponent } from './accordion.component';\n\n/**\n * AccordionItem Component - Individual accordion item container\n *\n * Usage:\n * ```html\n * <bsg-accordion-item value=\"item-1\">\n * <bsg-accordion-trigger>Question?</bsg-accordion-trigger>\n * <bsg-accordion-content>Answer</bsg-accordion-content>\n * </bsg-accordion-item>\n * ```\n */\n@Component({\n selector: 'bsg-accordion-item',\n standalone: true,\n template: `\n <div [class]=\"itemClasses()\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionItemComponent {\n /** Unique value for this accordion item */\n readonly value = input.required<string>();\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Inject parent accordion\n readonly accordion = inject(AccordionComponent);\n\n // Computed classes\n readonly itemClasses = computed(() =>\n clsx(accordionItemVariants(), this.className()),\n );\n\n // Check if this item is open\n isOpen(): boolean {\n return this.accordion.isItemOpen(this.value());\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { accordionTriggerVariants } from './accordion.variants';\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { AccordionComponent } from './accordion.component';\n\n/**\n * AccordionTrigger Component - Clickable header for accordion items\n *\n * Usage:\n * ```html\n * <bsg-accordion-trigger>\n * Click me to expand\n * </bsg-accordion-trigger>\n * ```\n */\n@Component({\n selector: 'bsg-accordion-trigger',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n [attr.aria-expanded]=\"isOpen()\"\n (click)=\"toggle()\"\n >\n <ng-content />\n <svg\n [class]=\"chevronClasses()\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionTriggerComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Inject parent item and accordion\n readonly item = inject(AccordionItemComponent);\n readonly accordion = inject(AccordionComponent);\n\n // Computed classes for trigger button\n readonly triggerClasses = computed(() =>\n clsx(accordionTriggerVariants(), this.className()),\n );\n\n // Computed classes for chevron icon\n readonly chevronClasses = computed(() =>\n clsx(\n 'transition-transform duration-200',\n this.isOpen() ? 'rotate-180' : '',\n ),\n );\n\n // Check if this item is open\n isOpen(): boolean {\n return this.item.isOpen();\n }\n\n // Toggle this item\n toggle(): void {\n this.accordion.toggleItem(this.item.value());\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { accordionContentVariants } from './accordion.variants';\nimport { AccordionItemComponent } from './accordion-item.component';\n\n/**\n * AccordionContent Component - Collapsible content area\n *\n * Usage:\n * ```html\n * <bsg-accordion-content>\n * Your content here\n * </bsg-accordion-content>\n * ```\n */\n@Component({\n selector: 'bsg-accordion-content',\n standalone: true,\n template: `\n @if (isOpen()) {\n <div [class]=\"contentClasses()\">\n <div class=\"pb-4 pt-0\">\n <ng-content />\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AccordionContentComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Inject parent item\n readonly item = inject(AccordionItemComponent);\n\n // Computed classes\n readonly contentClasses = computed(() =>\n clsx(accordionContentVariants(), this.className()),\n );\n\n // Check if this item is open\n isOpen(): boolean {\n return this.item.isOpen();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Alert container variants\n *\n * Controls the overall alert container layout and colors\n */\nexport const alertVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center gap-2.5',\n // Spacing\n 'py-3 px-4',\n // Border\n 'rounded',\n // Typography\n 'text-sm font-medium tracking-tight',\n // Box model\n 'box-border',\n ),\n {\n variants: {\n variant: {\n default: 'text-muted-foreground',\n info: 'bg-info/20 text-info',\n success: 'bg-success/20 text-success',\n warning: 'bg-warning/20 text-warning',\n destructive: 'bg-destructive/20 text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Alert icon variants\n *\n * Controls the alert icon styles\n */\nexport const alertIconVariants = cva(clsx('shrink-0 w-6 h-6'));\n\n/**\n * Alert content variants\n *\n * Controls the alert content text area\n */\nexport const alertContentVariants = cva(clsx('flex-1 text-left'));\n\n/**\n * Alert close button variants\n *\n * Controls the dismissible close button\n */\nexport const alertCloseVariants = cva(\n clsx(\n // Layout\n 'shrink-0 flex items-center justify-center',\n // Size\n 'w-2 h-2',\n // Spacing\n 'p-0',\n // Border\n 'border-0 rounded-sm',\n // Background\n 'bg-transparent',\n // Cursor\n 'cursor-pointer',\n // Hover\n 'hover:opacity-80',\n // Focus\n 'focus:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2',\n ),\n);\n","import { Component, computed, input, output, signal } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n alertVariants,\n alertIconVariants,\n alertContentVariants,\n alertCloseVariants,\n} from './alert.variants';\n\nexport type AlertVariant =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\nexport type AlertVariantsProps = VariantProps<typeof alertVariants>;\n\n/**\n * Alert Component - Display contextual feedback messages\n *\n * Usage:\n * ```html\n * <bsg-alert [variant]=\"'success'\" [dismissible]=\"true\" [content]=\"'Success message!'\" />\n * ```\n */\n@Component({\n selector: 'bsg-alert',\n standalone: true,\n template: `\n @if (!dismissed()) {\n <div [class]=\"alertClasses()\" [attr.role]=\"'alert'\">\n <!-- Icon for default variant -->\n @if (variant() === 'default') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.2904 1.13038C12.7758 0.738816 15.3201 1.21183 17.4994 2.46924C17.9776 2.74518 18.1423 3.35617 17.8666 3.83448C17.5906 4.31285 16.9788 4.4767 16.5004 4.20069C14.7174 3.17195 12.6354 2.78567 10.602 3.10596C8.5685 3.42633 6.70596 4.43431 5.32559 5.96143C3.94523 7.48862 3.12994 9.44313 3.01602 11.4985C2.90213 13.554 3.49639 15.587 4.69961 17.2573C5.90283 18.9276 7.64271 20.1352 9.62832 20.6782C11.6139 21.2212 13.726 21.0672 15.6117 20.2417C17.4976 19.4162 19.0436 17.9684 19.9916 16.1411C20.9395 14.3139 21.2317 12.2168 20.8207 10.1997C20.7105 9.65867 21.06 9.13044 21.601 9.02003C22.1421 8.90976 22.6704 9.25918 22.7807 9.8003C23.283 12.2657 22.9247 14.8286 21.766 17.062C20.6073 19.2954 18.7184 21.0647 16.4135 22.0737C14.1087 23.0826 11.5277 23.2705 9.10098 22.6069C6.67406 21.9432 4.54717 20.4678 3.07656 18.4263C1.60598 16.3847 0.879785 13.9004 1.01895 11.3882C1.15814 8.87595 2.15504 6.48722 3.84219 4.62061C5.52932 2.75412 7.80509 1.52194 10.2904 1.13038ZM21.2934 3.29249C21.6839 2.90241 22.317 2.90215 22.7074 3.29249C23.0979 3.68301 23.0979 4.317 22.7074 4.70753L12.7074 14.7075C12.317 15.0978 11.6839 15.0976 11.2934 14.7075L8.29336 11.7075C7.90284 11.317 7.90284 10.683 8.29336 10.2925C8.6839 9.90241 9.31704 9.90215 9.70742 10.2925L12.0004 12.5855L21.2934 3.29249Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n\n <!-- Icon for info variant -->\n @if (variant() === 'info') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 16V12M12 8H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Icon for success variant -->\n @if (variant() === 'success') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 6L9 17L4 12\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Icon for warning variant -->\n @if (variant() === 'warning') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 9V13M12.0001 17H12.0101M21.7301 18L13.7301 4C13.5556 3.6922 13.3027 3.43618 12.997 3.25806C12.6913 3.07995 12.3438 2.9861 11.9901 2.9861C11.6363 2.9861 11.2888 3.07995 10.9831 3.25806C10.6774 3.43618 10.4245 3.6922 10.2501 4L2.25005 18C2.07373 18.3054 1.98128 18.6519 1.98206 19.0045C1.98284 19.3571 2.07683 19.7032 2.2545 20.0078C2.43217 20.3124 2.6872 20.5646 2.99375 20.7388C3.30029 20.9131 3.64746 21.0032 4.00005 21H20.0001C20.351 20.9996 20.6956 20.907 20.9993 20.7313C21.3031 20.5556 21.5553 20.3031 21.7306 19.9991C21.9059 19.6951 21.9981 19.3504 21.998 18.9995C21.9979 18.6486 21.9055 18.3039 21.7301 18Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Icon for destructive variant -->\n @if (variant() === 'destructive') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.929 4.929L19.07 19.071M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n\n <!-- Content -->\n <span [class]=\"contentClasses()\">{{ content() }}</span>\n\n <!-- Close button (only if dismissible) -->\n @if (dismissible()) {\n <button\n type=\"button\"\n [class]=\"closeClasses()\"\n (click)=\"handleDismiss()\"\n [attr.aria-label]=\"'Close alert'\"\n >\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.02459 0.167369C7.24775 -0.0557898 7.60947 -0.0557898 7.83263 0.167369C8.05579 0.390529 8.05579 0.752255 7.83263 0.975414L4.80804 4L7.83263 7.02459C8.05579 7.24775 8.05579 7.60947 7.83263 7.83263C7.60947 8.05579 7.24775 8.05579 7.02459 7.83263L4 4.80804L0.975414 7.83263C0.752255 8.05579 0.390529 8.05579 0.167369 7.83263C-0.0557898 7.60947 -0.0557898 7.24775 0.167369 7.02459L3.19196 4L0.167369 0.975414C-0.0557898 0.752255 -0.0557898 0.390529 0.167369 0.167369C0.390529 -0.0557898 0.752255 -0.0557898 0.975414 0.167369L4 3.19196L7.02459 0.167369Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n </button>\n }\n </div>\n }\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class AlertComponent {\n /** Alert variant */\n readonly variant = input<AlertVariant>('default');\n\n /** Whether the alert can be dismissed */\n readonly dismissible = input<boolean>(false);\n\n /** Alert message content */\n readonly content = input<string>('Componente de alerta Default');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Dismiss event */\n readonly dismiss = output<void>();\n\n /** Internal dismissed state */\n protected readonly dismissed = signal<boolean>(false);\n\n // Computed container classes\n readonly alertClasses = computed(() =>\n clsx(\n alertVariants({\n variant: this.variant(),\n }),\n this.className(),\n ),\n );\n\n // Computed icon classes\n readonly iconClasses = computed(() => alertIconVariants());\n\n // Computed content classes\n readonly contentClasses = computed(() => alertContentVariants());\n\n // Computed close button classes\n readonly closeClasses = computed(() => alertCloseVariants());\n\n // Computed icon color based on variant\n readonly iconColor = computed(() => {\n const colorMap = {\n default: '#0284C7', // Sky-600\n info: '#2563EB', // Blue-600\n success: '#16A34A', // Green-600\n warning: '#CA8A04', // Yellow-600\n destructive: '#DC2626', // Red-600\n };\n return colorMap[this.variant()];\n });\n\n handleDismiss(): void {\n this.dismissed.set(true);\n this.dismiss.emit();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Avatar container variants\n *\n * Controls the avatar size and base styles\n */\nexport const avatarVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center justify-center shrink-0',\n // Shape\n 'rounded-full overflow-hidden',\n // Position\n 'relative',\n // Box model\n 'box-border',\n // Non-interactive\n 'pointer-events-none select-none',\n ),\n {\n variants: {\n size: {\n xs: 'w-6 h-6', // 24px\n sm: 'w-8 h-8', // 32px\n md: 'w-10 h-10', // 40px\n lg: 'w-12 h-12', // 48px\n xl: 'w-16 h-16', // 64px\n },\n type: {\n default: 'bg-transparent',\n fallback: 'bg-primary',\n image: 'bg-muted',\n },\n },\n defaultVariants: {\n size: 'md',\n type: 'default',\n },\n },\n);\n\n/**\n * Avatar initials variants\n *\n * Controls the initials text styles for fallback type\n */\nexport const avatarInitialsVariants = cva(\n clsx(\n // Color\n 'text-primary-foreground',\n // Typography\n 'font-sans font-normal tracking-wide',\n // Layout\n 'flex items-center justify-center w-full h-full',\n // Text\n 'text-center',\n ),\n {\n variants: {\n size: {\n xs: 'text-xs leading-[17px]', // 12px\n sm: 'text-sm leading-[21px]', // 14px\n md: 'text-lg leading-[27px]', // 18px\n lg: 'text-2xl leading-[27px]', // 24px\n xl: 'text-4xl leading-[27px]', // 36px\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Avatar icon variants\n *\n * Controls the SVG icon styles for default type\n */\nexport const avatarIconVariants = cva(clsx('w-full h-full block'));\n\n/**\n * Avatar image variants\n *\n * Controls the img element styles for image type\n */\nexport const avatarImgVariants = cva(\n clsx('w-full h-full block object-cover object-center'),\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n avatarVariants,\n avatarInitialsVariants,\n avatarIconVariants,\n avatarImgVariants,\n} from './avatar.variants';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarType = 'default' | 'fallback';\n\nexport type AvatarVariantsProps = VariantProps<typeof avatarVariants>;\n\n/**\n * Avatar Component - Display user profile images, icons, or initials\n *\n * Usage:\n * ```html\n * <!-- With image -->\n * <bsg-avatar [image]=\"'path/to/image.jpg'\" [size]=\"'lg'\" />\n *\n * <!-- With initials -->\n * <bsg-avatar [type]=\"'fallback'\" [initials]=\"'JD'\" [size]=\"'md'\" />\n *\n * <!-- Default icon -->\n * <bsg-avatar [size]=\"'sm'\" />\n * ```\n */\n@Component({\n selector: 'bsg-avatar',\n standalone: true,\n template: `\n <!-- Fallback Type: Initials -->\n @if (type() === 'fallback') {\n <div\n [class]=\"avatarClasses()\"\n [attr.role]=\"'img'\"\n [attr.aria-label]=\"'Avatar with initials ' + initials()\"\n >\n <span [class]=\"initialsClasses()\">{{ initials() }}</span>\n </div>\n }\n\n <!-- Default Type: Image or Icon -->\n @if (type() === 'default' && !image()) {\n <div\n [class]=\"avatarClasses()\"\n [attr.role]=\"'img'\"\n [attr.aria-label]=\"'User avatar'\"\n >\n <!-- User Icon SVG - scaled per size -->\n <svg\n [class]=\"iconClasses()\"\n [attr.viewBox]=\"iconViewBox()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"iconCenter()\"\n [attr.cy]=\"iconCenter()\"\n [attr.r]=\"iconCenter()\"\n fill=\"white\"\n />\n <circle\n [attr.cx]=\"iconCenter()\"\n [attr.cy]=\"headCenterY()\"\n [attr.r]=\"headRadius()\"\n fill=\"#7c3aed\"\n />\n <path [attr.d]=\"bodyPath()\" fill=\"#7c3aed\" />\n </svg>\n </div>\n }\n\n <!-- Default Type: Image -->\n @if (type() === 'default' && image()) {\n <div\n [class]=\"avatarImageClasses()\"\n [attr.role]=\"'img'\"\n [attr.aria-label]=\"'User avatar'\"\n >\n <img [src]=\"image()\" [alt]=\"'User avatar'\" [class]=\"imgClasses()\" />\n </div>\n }\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class AvatarComponent {\n /** Avatar size */\n readonly size = input<AvatarSize>('md');\n\n /** Avatar type */\n readonly type = input<AvatarType>('default');\n\n /** Initials text (only for fallback type) */\n readonly initials = input<string>('JC');\n\n /** Image URL (only for default type) */\n readonly image = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Computed container classes for fallback and default icon\n readonly avatarClasses = computed(() =>\n clsx(\n avatarVariants({\n size: this.size(),\n type: this.type(),\n }),\n this.className(),\n ),\n );\n\n // Computed container classes for image type\n readonly avatarImageClasses = computed(() =>\n clsx(\n avatarVariants({\n size: this.size(),\n type: 'image',\n }),\n this.className(),\n ),\n );\n\n // Computed initials classes\n readonly initialsClasses = computed(() =>\n avatarInitialsVariants({\n size: this.size(),\n }),\n );\n\n // Computed icon classes\n readonly iconClasses = computed(() => avatarIconVariants());\n\n // Computed image classes\n readonly imgClasses = computed(() => avatarImgVariants());\n\n // SVG geometry calculations based on size\n readonly dimensions = computed(() => {\n const sizeMap: Record<AvatarSize, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 48,\n xl: 64,\n };\n return sizeMap[this.size()];\n });\n\n readonly iconViewBox = computed(() => {\n const dim = this.dimensions();\n return `0 0 ${dim} ${dim}`;\n });\n\n readonly iconCenter = computed(() => this.dimensions() / 2);\n\n // Head circle position and radius (based on Figma proportions)\n readonly headCenterY = computed(() => {\n const ratios: Record<AvatarSize, number> = {\n xs: 9.75, // 9.75/24 = 0.40625\n sm: 13, // 13/32 = 0.40625\n md: 16.25, // 16.25/40 = 0.40625\n lg: 19.5, // 19.5/48 = 0.40625\n xl: 26, // 26/64 = 0.40625\n };\n return ratios[this.size()];\n });\n\n readonly headRadius = computed(() => {\n const ratios: Record<AvatarSize, number> = {\n xs: 5.25, // 5.25/24 = 0.21875\n sm: 7, // 7/32 = 0.21875\n md: 8.75, // 8.75/40 = 0.21875\n lg: 10.5, // 10.5/48 = 0.21875\n xl: 14, // 14/64 = 0.21875\n };\n return ratios[this.size()];\n });\n\n // Body path (from Figma SVG, scaled per size)\n readonly bodyPath = computed(() => {\n const paths: Record<AvatarSize, string> = {\n xs: 'M12.0039 15.75C15.6502 15.75 18.9921 17.0517 21.5918 19.2148C19.4018 22.1206 15.9228 24 12.0039 24C8.08479 24 4.60503 22.1208 2.41504 19.2148C5.01478 17.0514 8.35733 15.75 12.0039 15.75Z',\n sm: 'M16.0039 21C20.8658 21 25.3218 22.7357 28.7881 25.6201C25.8681 29.4944 21.2291 32 16.0039 32C10.7785 32 6.13874 29.4947 3.21875 25.6201C6.68509 22.7354 11.1417 21 16.0039 21Z',\n md: 'M20.0039 26.25C26.0814 26.25 31.6515 28.4197 35.9844 32.0254C32.3344 36.8682 26.5354 40 20.0039 40C13.4725 40 7.67346 36.8682 4.02344 32.0254C8.3563 28.4197 13.9264 26.25 20.0039 26.25Z',\n lg: 'M24.0039 31.5C31.2968 31.5 37.9813 34.103 43.1807 38.4297C38.8007 44.2414 31.8419 48 24.0039 48C16.1659 48 9.20715 44.2414 4.82715 38.4297C10.0265 34.103 16.711 31.5 24.0039 31.5Z',\n xl: 'M32.0078 42C41.7319 42 50.6445 45.4711 57.5771 51.2402C51.7371 58.9891 42.4584 64 32.0078 64C21.557 64 12.2775 58.9893 6.4375 51.2402C13.3702 45.4708 22.2834 42 32.0078 42Z',\n };\n return paths[this.size()];\n });\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const badgeVariants = cva(\n clsx(\n // Base\n 'inline-flex items-center justify-center shrink-0 box-border',\n 'font-sans font-normal tracking-[0.05px]',\n 'rounded-full',\n // Non-interactive\n 'pointer-events-none select-none',\n ),\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n destructive: 'bg-destructive text-destructive-foreground',\n success: 'bg-success text-success-foreground',\n outline: 'bg-background text-foreground border border-border',\n },\n\n size: {\n dot: 'w-3 h-3', // 12x12\n default: '',\n large: '',\n },\n\n layout: {\n text: '',\n 'text-icon': '',\n },\n },\n\n compoundVariants: [\n // Dot + outline: que sea huequito con borde\n {\n variant: 'outline',\n size: 'dot',\n class: 'bg-transparent border border-border',\n },\n\n // Default size \"text\" (pequeño)\n {\n size: 'default',\n layout: 'text',\n class: clsx(\n 'px-2 py-[2px]',\n 'text-xs leading-[17px]',\n 'min-h-[15px]',\n 'whitespace-nowrap',\n ),\n },\n\n // Large size \"text\" (grande real)\n {\n size: 'large',\n layout: 'text',\n class: clsx(\n 'h-7', // 28px\n 'px-5 py-2', // 20px 8px\n 'text-sm leading-[21px]',\n 'whitespace-nowrap',\n ),\n },\n\n // Text-icon (Figma): grande + gap\n {\n layout: 'text-icon',\n class: clsx(\n 'h-7', // 28px\n 'px-5 py-2', // 20px 8px\n 'text-sm leading-[21px]',\n 'whitespace-nowrap',\n 'gap-2.5', // 10px\n ),\n },\n ],\n\n defaultVariants: {\n variant: 'default',\n size: 'default',\n layout: 'text',\n },\n },\n);\n\nexport type BadgeVariantsProps = VariantProps<typeof badgeVariants>;\n\nexport const badgeIconVariants = cva(\n clsx(\n 'shrink-0 w-4 h-4',\n // ya usamos gap en el wrapper, NO margin-right aquí\n ),\n);\n\nexport type BadgeIconVariantsProps = VariantProps<typeof badgeIconVariants>;\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { badgeIconVariants, badgeVariants } from './badge.variants';\n\nexport type BadgeVariant =\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'success';\n\nexport type BadgeSize = 'dot' | 'default' | 'large';\nexport type BadgeLayout = 'text' | 'text-icon';\n\n/**\n * Badge Component\n *\n * A badge component for displaying status indicators, counters, and labels.\n *\n * Usage:\n * ```html\n * <bsg-badge variant=\"default\" size=\"default\" value=\"10\"></bsg-badge>\n * <bsg-badge variant=\"success\" size=\"dot\"></bsg-badge>\n * <bsg-badge variant=\"destructive\" size=\"large\" layout=\"text-icon\" value=\"Alert\"></bsg-badge>\n * ```\n */\n@Component({\n selector: 'bsg-badge',\n standalone: true,\n template: `\n @if (size() === 'dot') {\n <span\n [class]=\"badgeClasses()\"\n role=\"status\"\n aria-label=\"Badge indicator\"\n ></span>\n } @else {\n <span\n [class]=\"badgeClasses()\"\n role=\"status\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n @if (layout() === 'text-icon') {\n <svg\n [class]=\"iconClasses()\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12 7.33334C12 4.75601 9.91066 2.66667 7.33334 2.66667C4.75601 2.66667 2.66667 4.75601 2.66667 7.33334C2.66667 9.91066 4.75601 12 7.33334 12C9.91066 12 12 9.91066 12 7.33334ZM13.3333 7.33334C13.3333 8.74998 12.8412 10.051 12.0202 11.0775L14.4714 13.5286C14.7317 13.789 14.7317 14.211 14.4714 14.4714C14.211 14.7317 13.789 14.7317 13.5286 14.4714L11.0775 12.0202C10.051 12.8412 8.74998 13.3333 7.33334 13.3333C4.01963 13.3333 1.33334 10.647 1.33334 7.33334C1.33334 4.01963 4.01963 1.33334 7.33334 1.33334C10.647 1.33334 13.3333 4.01963 13.3333 7.33334Z\"\n fill=\"currentColor\"\n />\n </svg>\n }\n {{ value() }}\n </span>\n }\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class BadgeComponent {\n /** Badge semantic variant */\n readonly variant = input<BadgeVariant>('default');\n\n /** Badge size */\n readonly size = input<BadgeSize>('default');\n\n /** Badge layout type */\n readonly layout = input<BadgeLayout>('text');\n\n /** Badge value/content */\n readonly value = input<string | number>('10');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed aria-label for accessibility */\n readonly ariaLabel = computed(() => String(this.value()));\n\n /** Computed badge classes */\n readonly badgeClasses = computed(() =>\n clsx(\n badgeVariants({\n variant: this.variant(),\n size: this.size(),\n layout: this.layout(),\n }),\n this.className(),\n ),\n );\n\n /** Computed icon classes */\n readonly iconClasses = computed(() => clsx(badgeIconVariants()));\n}\n","// projects/bsg-integra/src/lib/components/button/button.variants.ts\nimport { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const buttonVariants = cva(\n clsx(\n 'inline-flex items-center justify-center',\n 'gap-2.5',\n 'text-sm font-medium leading-normal tracking-tight',\n 'cursor-pointer',\n 'transition-all duration-200',\n 'whitespace-nowrap',\n 'border-0',\n 'outline-none',\n 'relative', // ✅ para posicionar spinner\n ),\n {\n variants: {\n size: {\n sm: 'h-[27px] py-2 px-4',\n md: 'h-[35px] py-3 px-6',\n lg: 'h-[43px] py-4 px-8',\n },\n variant: {\n default: clsx(\n 'bg-violet-600 text-white',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-violet-900 focus-visible:ring-2 focus-visible:ring-violet-600 focus-visible:ring-offset-2',\n ),\n secondary: clsx(\n 'bg-blue-600 text-white',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-blue-700 focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2',\n ),\n outline: clsx(\n 'bg-transparent text-violet-600 border border-violet-600',\n 'hover:bg-violet-50',\n 'active:bg-violet-100',\n 'focus-visible:border-violet-900 focus-visible:text-violet-900 focus-visible:ring-2 focus-visible:ring-violet-600 focus-visible:ring-offset-2',\n ),\n ghost: clsx(\n 'bg-violet-100 text-slate-800',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-violet-200 focus-visible:ring-2 focus-visible:ring-violet-600 focus-visible:ring-offset-2',\n ),\n link: clsx(\n 'bg-transparent text-blue-600',\n 'hover:opacity-90',\n 'active:underline',\n 'focus-visible:text-blue-700 focus-visible:ring-2 focus-visible:ring-blue-600 focus-visible:ring-offset-2',\n ),\n destructive: clsx(\n 'bg-red-600 text-white',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus-visible:bg-red-700 focus-visible:ring-2 focus-visible:ring-red-600 focus-visible:ring-offset-2',\n ),\n },\n shape: {\n rectangular: 'rounded-md',\n pill: 'rounded-full',\n icon: 'rounded-md',\n 'icon-text': 'rounded-md',\n 'icon-only': 'rounded-full',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n compoundVariants: [\n { shape: 'icon', size: 'sm', class: 'w-[27px] h-[27px] p-2' },\n { shape: 'icon', size: 'md', class: 'w-[35px] h-[35px] p-2' },\n { shape: 'icon', size: 'lg', class: 'w-[43px] h-[43px] p-2' },\n\n {\n shape: 'icon-only',\n size: 'sm',\n class: 'w-[27px] h-[27px] min-w-[27px] min-h-[27px] p-0',\n },\n {\n shape: 'icon-only',\n size: 'md',\n class: 'w-[35px] h-[35px] min-w-[35px] min-h-[35px] p-0',\n },\n {\n shape: 'icon-only',\n size: 'lg',\n class: 'w-[43px] h-[43px] min-w-[43px] min-h-[43px] p-0',\n },\n\n {\n shape: 'icon-only',\n variant: 'outline',\n class:\n 'bg-transparent border border-slate-300 text-purple-600 hover:opacity-90 active:border-purple-600 focus-visible:border-slate-500 focus-visible:text-purple-800 focus-visible:ring-2 focus-visible:ring-purple-600 focus-visible:ring-offset-2',\n },\n {\n shape: 'icon-only',\n variant: 'default',\n class: 'bg-violet-600 text-white border border-violet-600',\n },\n {\n shape: 'icon-only',\n variant: 'secondary',\n class: 'bg-blue-600 text-white border border-blue-600',\n },\n {\n shape: 'icon-only',\n variant: 'ghost',\n class: 'bg-violet-100 text-slate-800 border border-violet-100',\n },\n {\n shape: 'icon-only',\n variant: 'link',\n class: 'bg-transparent text-blue-600 border border-transparent',\n },\n {\n shape: 'icon-only',\n variant: 'destructive',\n class: 'bg-red-600 text-white border border-red-600',\n },\n ],\n defaultVariants: {\n size: 'md',\n variant: 'default',\n shape: 'rectangular',\n disabled: false,\n },\n },\n);\n\nexport const buttonIconVariants = cva(\n clsx('inline-flex items-center justify-center shrink-0 leading-none'),\n {\n variants: {\n position: {\n left: '-mr-0.5',\n right: '-ml-0.5',\n center: 'm-0',\n },\n },\n defaultVariants: {\n position: 'left',\n },\n },\n);\n\nexport const buttonLabelVariants = cva(clsx('inline-block'));\n\nexport const buttonIconOnlyVariants = cva(\n clsx('flex items-center justify-center leading-none'),\n {\n variants: {\n size: { sm: '', md: '', lg: '' },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\n/** ✅ nuevo: spinner overlay centrado */\nexport const buttonSpinnerVariants = cva(\n clsx('absolute inset-0 flex items-center justify-center'),\n {\n variants: {\n shape: {\n rectangular: '',\n pill: '',\n icon: '',\n 'icon-text': '',\n 'icon-only': '',\n },\n },\n defaultVariants: {\n shape: 'rectangular',\n },\n },\n);\n","import { Component, computed, input, output } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n buttonIconOnlyVariants,\n buttonIconVariants,\n buttonLabelVariants,\n buttonSpinnerVariants,\n buttonVariants,\n} from './button.variants';\n\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type ButtonVariant =\n | 'default'\n | 'secondary'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'destructive';\nexport type ButtonShape =\n | 'rectangular'\n | 'pill'\n | 'icon'\n | 'icon-text'\n | 'icon-only';\n\nexport type ButtonVariantsProps = VariantProps<typeof buttonVariants>;\n\n@Component({\n selector: 'bsg-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n (click)=\"handleClick($event)\"\n [class]=\"buttonClasses()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled()\"\n [attr.aria-busy]=\"spinner() ? 'true' : null\"\n [attr.aria-label]=\"\n ariaLabel() ?? (isIconButton() ? label() || 'Icon button' : null)\n \"\n [style.width.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.minWidth.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.height.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.minHeight.px]=\"isIconButton() ? buttonSquarePx() : null\"\n [style.padding]=\"isIconButton() ? '0' : null\"\n >\n <!-- Spinner -->\n @if (spinner()) {\n <span\n [class]=\"spinnerClasses()\"\n [style.fontSize.px]=\"spinnerPx()\"\n [attr.aria-hidden]=\"'true'\"\n >\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n </span>\n }\n\n <!-- Icon-only / Icon button content -->\n @if (isIconButton()) {\n <span\n [class]=\"iconOnlyClasses()\"\n [style.fontSize.px]=\"iconFontPx()\"\n [style.lineHeight]=\"1\"\n [style.opacity]=\"spinner() ? 0 : 1\"\n >\n <ng-content></ng-content>\n </span>\n } @else {\n <span\n class=\"bsg-btn-icon\"\n [class]=\"iconClasses('left')\"\n [style.opacity]=\"spinner() ? 0 : 1\"\n >\n <ng-content select=\"[left-icon]\"></ng-content>\n </span>\n\n <span [class]=\"labelClasses()\" [style.opacity]=\"spinner() ? 0 : 1\">{{\n label()\n }}</span>\n\n <span\n class=\"bsg-btn-icon\"\n [class]=\"iconClasses('right')\"\n [style.opacity]=\"spinner() ? 0 : 1\"\n >\n <ng-content select=\"[right-icon]\"></ng-content>\n </span>\n }\n </button>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n .bsg-btn-icon:empty {\n display: none;\n }\n\n :host ::ng-deep i {\n color: inherit;\n }\n `,\n})\nexport class ButtonComponent {\n readonly size = input<ButtonSize>('md');\n readonly variant = input<ButtonVariant>('default');\n readonly shape = input<ButtonShape>('rectangular');\n readonly label = input<string>('Boton');\n readonly disabled = input<boolean>(false);\n\n /** ✅ nuevo: muestra spinner y bloquea click */\n readonly spinner = input<boolean>(false);\n\n /** Accesibilidad para icon buttons */\n readonly ariaLabel = input<string | null>(null);\n\n readonly className = input<string>();\n readonly Click = output<Event>();\n\n readonly isDisabled = computed(() => this.disabled() || this.spinner());\n readonly isIconButton = computed(\n () => this.shape() === 'icon-only' || this.shape() === 'icon',\n );\n\n readonly buttonSquarePx = computed(() =>\n this.size() === 'sm' ? 27 : this.size() === 'lg' ? 43 : 35,\n );\n readonly iconFontPx = computed(() =>\n this.size() === 'sm' ? 15 : this.size() === 'lg' ? 22 : 18,\n );\n readonly spinnerPx = computed(() =>\n this.size() === 'sm' ? 14 : this.size() === 'lg' ? 20 : 16,\n );\n\n readonly buttonClasses = computed(() =>\n clsx(\n buttonVariants({\n size: this.size(),\n variant: this.variant(),\n shape: this.shape(),\n disabled: this.isDisabled(),\n }),\n this.className(),\n ),\n );\n\n readonly labelClasses = computed(() => clsx(buttonLabelVariants()));\n readonly iconOnlyClasses = computed(() =>\n clsx(buttonIconOnlyVariants({ size: this.size() })),\n );\n readonly spinnerClasses = computed(() =>\n clsx(buttonSpinnerVariants({ shape: this.shape() })),\n );\n\n iconClasses(position: 'left' | 'right' | 'center'): string {\n return clsx(buttonIconVariants({ position }));\n }\n\n handleClick(event: Event): void {\n if (!this.isDisabled()) this.Click.emit(event);\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Card container variants\n *\n * Controls the overall card container layout and styling\n */\nexport const cardVariants = cva(\n clsx(\n // Layout\n 'flex flex-col',\n // Size\n 'w-[393px]',\n // Padding\n 'py-6 px-5',\n // Gap\n 'gap-4',\n // Border\n 'rounded-lg',\n // Background\n 'bg-card',\n // Transition\n 'transition-all duration-200',\n ),\n {\n variants: {\n variant: {\n default: 'border border-border',\n },\n contentVariant: {\n default: '',\n metric: clsx(\n 'items-center justify-center',\n 'px-[89px] py-4',\n 'min-h-[87px]',\n 'bg-destructive/10 border border-destructive/30',\n ),\n infoDate: clsx(\n 'items-center justify-center',\n 'px-2 py-[17px]',\n 'gap-2',\n 'min-h-[84px]',\n 'w-fit max-w-[101px]',\n 'bg-info/10 border-0',\n ),\n infoCurrency: clsx(\n 'items-start justify-start',\n 'p-4',\n 'gap-4',\n 'min-h-[90px]',\n 'w-fit max-w-[273px]',\n 'bg-info/30 border-0',\n ),\n placeholder: clsx(\n 'w-[277px] min-h-[225px]',\n 'border border-border',\n 'bg-transparent',\n 'p-0',\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n contentVariant: 'default',\n },\n },\n);\n\n/**\n * Card header row variants\n *\n * Controls the header row layout\n */\nexport const cardHeaderRowVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-between',\n // Gap\n 'gap-2',\n ),\n);\n\n/**\n * Card header variants\n *\n * Controls the header text styling\n */\nexport const cardHeaderVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Gap\n 'gap-2',\n // Typography\n 'text-sm font-normal leading-normal',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card info icon variants\n *\n * Controls the info icon styling\n */\nexport const cardInfoIconVariants = cva(\n clsx(\n // Size\n 'w-[17px] h-[17px]',\n // Layout\n 'shrink-0',\n ),\n);\n\n/**\n * Card action icon variants\n *\n * Controls the action icon styling (phone, etc.)\n */\nexport const cardActionIconVariants = cva(\n clsx(\n // Size\n 'w-5 h-5',\n // Layout\n 'shrink-0',\n ),\n);\n\n/**\n * Card value variants\n *\n * Controls the main value styling\n */\nexport const cardValueVariants = cva(\n clsx(\n // Typography\n 'text-[32px] font-extrabold leading-[1.2]',\n // Color\n 'text-card-foreground',\n ),\n);\n\n/**\n * Card helper row variants\n *\n * Controls the helper row layout\n */\nexport const cardHelperRowVariants = cva(\n clsx(\n // Layout\n 'flex items-baseline',\n // Gap\n 'gap-2',\n ),\n);\n\n/**\n * Card helper variants\n *\n * Controls the helper text styling (percentage change)\n */\nexport const cardHelperVariants = cva(\n clsx(\n // Typography\n 'text-sm font-medium leading-normal',\n // Layout\n 'shrink-0',\n // Default color (green for positive)\n 'text-success',\n ),\n);\n\n/**\n * Card helper description variants\n *\n * Controls the helper description text styling\n */\nexport const cardHelperDescriptionVariants = cva(\n clsx(\n // Typography\n 'text-[13px] font-normal leading-normal',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card metric title variants\n *\n * Controls the metric title styling\n */\nexport const cardMetricTitleVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-xs font-medium leading-normal text-center',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card metric value variants\n *\n * Controls the metric value styling\n */\nexport const cardMetricValueVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-2xl font-bold leading-normal text-center',\n // Color\n 'text-destructive',\n ),\n);\n\n/**\n * Card info label variants\n *\n * Controls the info label styling (for infoDate)\n */\nexport const cardInfoLabelVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-xs font-medium leading-normal text-center',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card info text variants\n *\n * Controls the info text styling (for infoDate)\n */\nexport const cardInfoTextVariants = cva(\n clsx(\n // Layout\n 'flex justify-center',\n // Typography\n 'text-sm font-bold leading-normal text-center',\n // Color\n 'text-muted-foreground',\n ),\n);\n\n/**\n * Card currency label variants\n *\n * Controls the currency label styling\n */\nexport const cardCurrencyLabelVariants = cva(\n clsx(\n // Layout\n 'flex',\n // Typography\n 'text-sm font-medium leading-normal',\n // Color\n 'text-foreground',\n ),\n);\n\n/**\n * Card currency content variants\n *\n * Controls the currency content row layout\n */\nexport const cardCurrencyContentVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Gap\n 'gap-2',\n ),\n);\n\n/**\n * Card currency icon variants\n *\n * Controls the currency icon styling\n */\nexport const cardCurrencyIconVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center justify-center shrink-0',\n // Size\n 'w-[21px] h-[21px]',\n ),\n);\n\n/**\n * Card currency text variants\n *\n * Controls the currency text styling\n */\nexport const cardCurrencyTextVariants = cva(\n clsx(\n // Layout\n 'flex',\n // Typography\n 'text-xl font-bold leading-normal',\n // Color\n 'text-info',\n ),\n);\n\n/**\n * Slot header/body/footer variants (estilo shadcn)\n * Son “wrappers” que te permiten componer cards personalizadas.\n */\nexport const cardSlotHeaderVariants = cva(\n clsx('flex items-start justify-between', 'gap-2'),\n);\n\nexport const cardSlotBodyVariants = cva(\n clsx('flex flex-col', 'gap-4', 'min-w-0'),\n);\n\nexport const cardSlotFooterVariants = cva(\n clsx('flex items-center justify-end', 'gap-2', 'pt-2'),\n);\n","import { Component, computed, contentChildren, input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n cardActionIconVariants,\n cardCurrencyContentVariants,\n cardCurrencyIconVariants,\n cardCurrencyLabelVariants,\n cardCurrencyTextVariants,\n cardHeaderRowVariants,\n cardHeaderVariants,\n cardHelperDescriptionVariants,\n cardHelperRowVariants,\n cardHelperVariants,\n cardInfoIconVariants,\n cardInfoLabelVariants,\n cardInfoTextVariants,\n cardMetricTitleVariants,\n cardMetricValueVariants,\n cardSlotBodyVariants,\n cardSlotFooterVariants,\n cardSlotHeaderVariants,\n cardValueVariants,\n cardVariants,\n} from './card.variants';\n\nexport type CardVariant = 'default';\nexport type CardContentVariant =\n | 'default'\n | 'metric'\n | 'infoDate'\n | 'infoCurrency'\n | 'placeholder';\n\nexport type CardVariantsProps = VariantProps<typeof cardVariants>;\n\n// Icon for infoCurrency variant (circle-dollar-sign from lucide)\nconst currencyIcon = `<svg width=\"21\" height=\"21\" viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<g clip-path=\"url(#clip0_currency)\">\n<path d=\"M18.375 10.5C18.375 6.15076 14.8492 2.625 10.5 2.625C6.15076 2.625 2.625 6.15076 2.625 10.5C2.625 14.8492 6.15076 18.375 10.5 18.375C14.8492 18.375 18.375 14.8492 18.375 10.5ZM13.125 12.25C13.125 12.0179 13.0327 11.7954 12.8687 11.6313C12.7046 11.4673 12.4821 11.375 12.25 11.375H11.375V13.125H12.25C12.4821 13.125 12.7046 13.0327 12.8687 12.8687C13.0327 12.7046 13.125 12.4821 13.125 12.25ZM14.875 12.25C14.875 12.9462 14.5982 13.6137 14.106 14.106C13.6137 14.5982 12.9462 14.875 12.25 14.875H11.375V15.75C11.375 16.2332 10.9832 16.625 10.5 16.625C10.0168 16.625 9.625 16.2332 9.625 15.75V14.875H7C6.51675 14.875 6.125 14.4832 6.125 14C6.125 13.5168 6.51675 13.125 7 13.125H9.625V11.375H8.75C8.05381 11.375 7.38633 11.0982 6.89404 10.606C6.46337 10.1753 6.19754 9.61057 6.13782 9.00977L6.125 8.75C6.125 8.05381 6.40176 7.38633 6.89404 6.89404C7.38633 6.40176 8.05381 6.125 8.75 6.125H9.625V5.25C9.625 4.76675 10.0168 4.375 10.5 4.375C10.9832 4.375 11.375 4.76675 11.375 5.25V6.125H14C14.4832 6.125 14.875 6.51675 14.875 7C14.875 7.48325 14.4832 7.875 14 7.875H11.375V9.625H12.25C12.9462 9.625 13.6137 9.90176 14.106 10.394C14.5982 10.8863 14.875 11.5538 14.875 12.25ZM20.125 10.5C20.125 15.8157 15.8157 20.125 10.5 20.125C5.18426 20.125 0.875 15.8157 0.875 10.5C0.875 5.18426 5.18426 0.875 10.5 0.875C15.8157 0.875 20.125 5.18426 20.125 10.5ZM7.87927 8.8363C7.89913 9.03668 7.98772 9.22503 8.13135 9.36865C8.29544 9.53275 8.51794 9.625 8.75 9.625H9.625V7.875H8.75C8.51794 7.875 8.29544 7.96725 8.13135 8.13135C7.96725 8.29544 7.875 8.51794 7.875 8.75L7.87927 8.8363Z\" fill=\"#2563EB\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_currency\">\n<rect width=\"21\" height=\"21\" fill=\"white\"/>\n</clipPath>\n</defs>\n</svg>`;\n\n/**\n * Slots estilo shadcn:\n * <bsg-card-header>, <bsg-card-body>, <bsg-card-footer>\n */\n@Component({\n selector: 'bsg-card-header',\n standalone: true,\n template: `<div [class]=\"classes()\"><ng-content></ng-content></div>`,\n})\nexport class CardHeaderComponent {\n readonly className = input<string>();\n readonly classes = computed(() =>\n clsx(cardSlotHeaderVariants(), this.className()),\n );\n}\n\n@Component({\n selector: 'bsg-card-body',\n standalone: true,\n template: `<div [class]=\"classes()\"><ng-content></ng-content></div>`,\n})\nexport class CardBodyComponent {\n readonly className = input<string>();\n readonly classes = computed(() =>\n clsx(cardSlotBodyVariants(), this.className()),\n );\n}\n\n@Component({\n selector: 'bsg-card-footer',\n standalone: true,\n template: `<div [class]=\"classes()\"><ng-content></ng-content></div>`,\n})\nexport class CardFooterComponent {\n readonly className = input<string>();\n readonly classes = computed(() =>\n clsx(cardSlotFooterVariants(), this.className()),\n );\n}\n\n/**\n * Card Component - Container\n */\n@Component({\n selector: 'bsg-card',\n standalone: true,\n template: `\n <div [class]=\"cardClasses()\">\n <!-- Si hay slots, usamos layout personalizable -->\n @if (hasSlots()) {\n <ng-content select=\"bsg-card-header\"></ng-content>\n <ng-content select=\"bsg-card-body\"></ng-content>\n <ng-content select=\"bsg-card-footer\"></ng-content>\n } @else {\n <!-- Si NO hay slots, mantenemos comportamiento actual -->\n\n <!-- DEFAULT Content Variant -->\n @if (contentVariant() === 'default') {\n <div [class]=\"headerRowClasses()\">\n <div [class]=\"headerClasses()\">{{ header() }}</div>\n\n <svg\n [class]=\"infoIconClasses()\"\n width=\"17\"\n height=\"17\"\n viewBox=\"0 0 17 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_info)\">\n <path\n d=\"M14.875 8.5C14.875 4.97919 12.0208 2.125 8.49999 2.125C4.97918 2.125 2.12499 4.97919 2.12499 8.5C2.12499 12.0208 4.97918 14.875 8.49999 14.875C12.0208 14.875 14.875 12.0208 14.875 8.5ZM7.79166 11.3333V8.5C7.79166 8.1088 8.10879 7.79167 8.49999 7.79167C8.8912 7.79167 9.20833 8.1088 9.20833 8.5V11.3333C9.20833 11.7245 8.8912 12.0417 8.49999 12.0417C8.10879 12.0417 7.79166 11.7245 7.79166 11.3333ZM8.50691 4.95834C8.89811 4.95834 9.21525 5.27547 9.21525 5.66667C9.21525 6.05787 8.89811 6.375 8.50691 6.375H8.49999C8.10879 6.375 7.79166 6.05787 7.79166 5.66667C7.79166 5.27547 8.10879 4.95834 8.49999 4.95834H8.50691ZM16.2917 8.5C16.2917 12.8032 12.8032 16.2917 8.49999 16.2917C4.19678 16.2917 0.708328 12.8032 0.708328 8.5C0.708328 4.19678 4.19678 0.708336 8.49999 0.708336C12.8032 0.708336 16.2917 4.19678 16.2917 8.5Z\"\n fill=\"#B0B6BF\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_info\">\n <rect width=\"17\" height=\"17\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n\n @if (icon() === 'phone') {\n <svg\n [class]=\"actionIconClasses()\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_phone)\">\n <path\n d=\"M6.66668 3.33334C6.66668 3.11232 6.57882 2.90042 6.42254 2.74414C6.28575 2.60736 6.10637 2.52298 5.91554 2.50407L5.83334 2.5H3.33334C3.11233 2.5 2.90043 2.58786 2.74415 2.74414C2.58787 2.90042 2.50001 3.11232 2.50001 3.33334C2.50001 7.09057 3.99282 10.6937 6.64959 13.3504C9.30635 16.0072 12.9094 17.5 16.6667 17.5C16.8877 17.5 17.0996 17.4121 17.2559 17.2559C17.4122 17.0996 17.5 16.8877 17.5 16.6667V14.1667C17.5 13.9457 17.4122 13.7338 17.2559 13.5775C17.0996 13.4212 16.8877 13.3333 16.6667 13.3333H14.1667C14.0373 13.3333 13.9097 13.3634 13.794 13.4212C13.6782 13.4791 13.5778 13.5635 13.5002 13.667L13.4961 13.6727L13.1999 14.0584C12.9705 14.3597 12.646 14.5745 12.2787 14.6663C11.9112 14.7581 11.5234 14.7218 11.1792 14.5638L5.45086 8.85173C5.28225 8.50579 5.23852 8.11213 5.32716 7.73763C5.41587 7.36306 5.63158 7.0305 5.93751 6.79688L6.33302 6.49984C6.43652 6.42222 6.52093 6.32177 6.57879 6.20606C6.63664 6.09035 6.66668 5.96271 6.66668 5.83334V3.33334Z\"\n fill=\"#9333EA\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_phone\">\n <rect width=\"20\" height=\"20\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n }\n </div>\n\n <div [class]=\"valueClasses()\">{{ value() }}</div>\n\n <div [class]=\"helperRowClasses()\">\n <div [class]=\"helperClasses()\">{{ helper() }}</div>\n <div [class]=\"helperDescriptionClasses()\">\n {{ helperDescription() }}\n </div>\n </div>\n }\n\n @if (contentVariant() === 'metric') {\n <div [class]=\"metricTitleClasses()\">{{ metricTitle() }}</div>\n <div [class]=\"metricValueClasses()\">{{ metricValue() }}</div>\n }\n\n @if (contentVariant() === 'infoDate') {\n <div [class]=\"infoLabelClasses()\">{{ dateLabel() }}</div>\n <div [class]=\"infoTextClasses()\">{{ dateText() }}</div>\n }\n\n @if (contentVariant() === 'infoCurrency') {\n <div [class]=\"currencyLabelClasses()\">{{ currencyLabel() }}</div>\n <div [class]=\"currencyContentClasses()\">\n <span\n [class]=\"currencyIconClasses()\"\n [innerHTML]=\"getCurrencyIcon()\"\n ></span>\n <span [class]=\"currencyTextClasses()\">{{ currencyText() }}</span>\n </div>\n }\n\n <!-- placeholder: sin contenido interno (solo estilos del container) -->\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class CardComponent {\n constructor(private sanitizer: DomSanitizer) {}\n\n readonly variant = input<CardVariant>('default');\n readonly contentVariant = input<CardContentVariant>('default');\n readonly className = input<string>();\n\n // metric\n readonly metricTitle = input<string>('');\n readonly metricValue = input<string | number>('');\n\n // infoDate\n readonly dateLabel = input<string>('');\n readonly dateText = input<string>('');\n\n // infoCurrency\n readonly currencyLabel = input<string>('');\n readonly currencyText = input<string>('');\n\n // default\n readonly header = input<string>('Actividades Totales');\n readonly value = input<string | number>('21');\n readonly helper = input<string>('+15.2%');\n readonly icon = input<string>('phone');\n readonly helperDescription = input<string>('respecto al mes anterior');\n\n // detectar slots\n readonly slotHeaders = contentChildren(CardHeaderComponent);\n readonly slotBodies = contentChildren(CardBodyComponent);\n readonly slotFooters = contentChildren(CardFooterComponent);\n\n readonly hasSlots = computed(() => {\n return (\n this.slotHeaders().length > 0 ||\n this.slotBodies().length > 0 ||\n this.slotFooters().length > 0\n );\n });\n\n // Computed classes\n readonly cardClasses = computed(() =>\n clsx(\n cardVariants({\n variant: this.variant(),\n contentVariant: this.contentVariant(),\n }),\n this.className(),\n ),\n );\n\n readonly headerRowClasses = computed(() => clsx(cardHeaderRowVariants()));\n readonly headerClasses = computed(() => clsx(cardHeaderVariants()));\n readonly infoIconClasses = computed(() => clsx(cardInfoIconVariants()));\n readonly actionIconClasses = computed(() => clsx(cardActionIconVariants()));\n readonly valueClasses = computed(() => clsx(cardValueVariants()));\n readonly helperRowClasses = computed(() => clsx(cardHelperRowVariants()));\n readonly helperClasses = computed(() => clsx(cardHelperVariants()));\n readonly helperDescriptionClasses = computed(() =>\n clsx(cardHelperDescriptionVariants()),\n );\n readonly metricTitleClasses = computed(() => clsx(cardMetricTitleVariants()));\n readonly metricValueClasses = computed(() => clsx(cardMetricValueVariants()));\n readonly infoLabelClasses = computed(() => clsx(cardInfoLabelVariants()));\n readonly infoTextClasses = computed(() => clsx(cardInfoTextVariants()));\n readonly currencyLabelClasses = computed(() =>\n clsx(cardCurrencyLabelVariants()),\n );\n readonly currencyContentClasses = computed(() =>\n clsx(cardCurrencyContentVariants()),\n );\n readonly currencyIconClasses = computed(() =>\n clsx(cardCurrencyIconVariants()),\n );\n readonly currencyTextClasses = computed(() =>\n clsx(cardCurrencyTextVariants()),\n );\n\n getCurrencyIcon(): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(currencyIcon);\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const carouselContainerVariants = cva(clsx('flex flex-col', 'w-full'));\n\nexport const carouselRootVariants = cva(\n clsx(\n 'relative',\n 'flex items-center',\n 'w-full',\n 'min-h-[260px]',\n // deja espacio para flechas\n 'px-10 sm:px-11 md:px-[52px] lg:px-[60px]',\n 'select-none',\n ),\n);\n\nexport const carouselViewportVariants = cva(\n clsx('overflow-hidden', 'flex-1', 'min-w-0', 'relative', 'select-none'),\n);\n\nexport const carouselTrackVariants = cva(\n clsx(\n 'flex',\n 'gap-3 sm:gap-4 md:gap-5 lg:gap-[30px]',\n 'transition-transform duration-300 ease-in-out',\n 'will-change-transform',\n 'w-full',\n 'select-none',\n ),\n);\n\n/**\n * Flechas circulares reales (no “se deforman”)\n * Chevron centrado (solo 1 svg)\n */\nexport const carouselArrowVariants = cva(\n clsx(\n 'absolute top-1/2 -translate-y-1/2',\n 'z-20',\n 'shrink-0',\n 'flex items-center justify-center',\n\n // Tamaño\n 'w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 lg:w-[41px] lg:h-[41px]',\n\n // Forma\n 'rounded-full bg-background border border-border',\n\n // Color del icono\n 'text-primary',\n\n // Interacción\n 'cursor-pointer p-0',\n 'transition-opacity duration-200',\n 'disabled:opacity-40 disabled:cursor-not-allowed',\n 'hover:not-disabled:opacity-80',\n\n 'focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2',\n 'focus:not-focus-visible:outline-none',\n ),\n {\n variants: {\n direction: {\n prev: 'left-2.5',\n next: 'right-2.5',\n },\n },\n defaultVariants: {\n direction: 'prev',\n },\n },\n);\n\nexport const carouselChevronVariants = cva(\n clsx(\n 'block',\n 'w-4 h-4 sm:w-5 sm:h-5 md:w-[22px] md:h-[22px] lg:w-6 lg:h-6',\n 'pointer-events-none',\n ),\n);\n\nexport const carouselIndicatorsVariants = cva(\n clsx(\n 'flex items-center justify-center',\n 'gap-3 sm:gap-5',\n 'mt-4 sm:mt-6',\n 'w-full',\n 'pointer-events-auto',\n ),\n);\n\nexport const carouselIndicatorVariants = cva(\n clsx(\n 'w-2.5 h-2.5 sm:w-3 sm:h-3',\n 'rounded-full',\n 'bg-primary',\n 'border-0',\n 'p-0',\n 'cursor-pointer',\n 'transition-opacity duration-200',\n 'shrink-0',\n 'hover:opacity-60',\n 'focus-visible:outline-2 focus-visible:outline-ring focus-visible:outline-offset-2',\n 'focus:not-focus-visible:outline-none',\n ),\n {\n variants: {\n active: {\n true: 'opacity-100',\n false: 'opacity-40',\n },\n },\n defaultVariants: {\n active: false,\n },\n },\n);\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n carouselArrowVariants,\n carouselChevronVariants,\n carouselContainerVariants,\n carouselIndicatorsVariants,\n carouselIndicatorVariants,\n carouselRootVariants,\n carouselTrackVariants,\n carouselViewportVariants,\n} from './carousel.variants';\n\nexport type CarouselArrowVariantsProps = VariantProps<\n typeof carouselArrowVariants\n>;\nexport type CarouselIndicatorVariantsProps = VariantProps<\n typeof carouselIndicatorVariants\n>;\n\n@Component({\n selector: 'bsg-carousel-item',\n standalone: true,\n template: '<ng-content></ng-content>',\n styles: `\n :host {\n display: block;\n flex: 0 0\n calc(\n (\n 100% - (var(--carousel-items-per-view, 2) - 1) *\n var(--carousel-gap, 30px)\n ) /\n var(--carousel-items-per-view, 2)\n );\n min-width: 0;\n box-sizing: border-box;\n }\n `,\n})\nexport class CarouselItemComponent {\n constructor(public elementRef: ElementRef) {}\n}\n\n@Component({\n selector: 'bsg-carousel',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <div [class]=\"rootClasses()\">\n <!-- Prev -->\n @if (showArrows()) {\n <button\n [class]=\"arrowClasses('prev')\"\n (click)=\"previous()\"\n [disabled]=\"!loop() && currentIndex() === 0\"\n aria-label=\"Previous slide\"\n type=\"button\"\n >\n <svg\n [class]=\"chevronClasses()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M14.293 5.29295C14.6835 4.90243 15.3165 4.90243 15.707 5.29295C16.0976 5.68348 16.0976 6.31649 15.707 6.70702L10.4141 12L15.707 17.293C16.0976 17.6835 16.0976 18.3165 15.707 18.707C15.3165 19.0975 14.6835 19.0975 14.293 18.707L8.29297 12.707C7.90245 12.3165 7.90245 11.6835 8.29297 11.293L14.293 5.29295Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n }\n\n <!-- Viewport -->\n <div [class]=\"viewportClasses()\" #viewportElement>\n <div\n #trackElement\n [class]=\"trackClasses()\"\n [style.transform]=\"translateX()\"\n [style.transition]=\"'transform 0.3s ease-in-out'\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Next -->\n @if (showArrows()) {\n <button\n [class]=\"arrowClasses('next')\"\n (click)=\"next()\"\n [disabled]=\"!loop() && currentIndex() >= maxIndex()\"\n aria-label=\"Next slide\"\n type=\"button\"\n >\n <svg\n [class]=\"chevronClasses()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M9.70699 18.707C9.31646 19.0976 8.68345 19.0976 8.29292 18.707C7.9024 18.3165 7.9024 17.6835 8.29292 17.293L13.5859 12L8.29292 6.70705C7.9024 6.31652 7.9024 5.68351 8.29292 5.29298C8.68345 4.90246 9.31646 4.90246 9.70699 5.29298L15.707 11.293C16.0975 11.6835 16.0975 12.3165 15.707 12.707L9.70699 18.707Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n }\n </div>\n\n <!-- Indicators -->\n @if (showIndicators()) {\n <div [class]=\"indicatorsClasses()\">\n @for (page of pages(); track page; let i = $index) {\n <button\n [class]=\"indicatorClasses(i === currentIndex())\"\n (click)=\"goToSlide(i)\"\n [attr.aria-label]=\"'Go to slide ' + (i + 1)\"\n type=\"button\"\n ></button>\n }\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class CarouselComponent implements AfterContentInit {\n readonly itemsPerView = input<number>(2);\n readonly showArrows = input<boolean>(true);\n readonly showIndicators = input<boolean>(true);\n readonly loop = input<boolean>(false);\n readonly className = input<string>();\n\n // Preferimos leer items proyectados, pero si no usas <bsg-carousel-item>, hacemos fallback al DOM.\n readonly items = contentChildren(CarouselItemComponent);\n readonly viewportElement = viewChild<ElementRef>('viewportElement');\n readonly trackElement = viewChild<ElementRef>('trackElement');\n\n readonly currentIndex = signal<number>(0);\n readonly totalItems = signal<number>(0);\n readonly gap = signal<number>(30);\n\n private document = inject(DOCUMENT);\n\n constructor(\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n ) {\n // CSS vars para el flex-basis del item\n effect(() => {\n const rootElement = this.elementRef.nativeElement;\n if (rootElement) {\n rootElement.style.setProperty(\n '--carousel-items-per-view',\n `${this.itemsPerView()}`,\n );\n rootElement.style.setProperty('--carousel-gap', `${this.gap()}px`);\n }\n });\n\n // Recalcular cuando cambie el contenido o itemsPerView\n effect(() => {\n void this.itemsPerView();\n void this.items().length;\n queueMicrotask(() => this.refreshMeasurements());\n });\n\n // Clamp del índice cuando cambien páginas\n effect(() => {\n const max = this.maxIndex();\n if (this.currentIndex() > max) {\n this.currentIndex.set(max);\n }\n });\n }\n\n ngAfterContentInit(): void {\n // Espera a que el DOM proyectado exista\n setTimeout(() => {\n this.refreshMeasurements();\n this.cdr.detectChanges();\n });\n }\n\n // ✅ Páginas reales (mínimo 1)\n readonly pages = computed(() => {\n const total = this.totalItems();\n const perView = Math.max(1, this.itemsPerView());\n const pageCount = Math.max(1, Math.ceil(total / perView));\n return Array.from({ length: pageCount }, (_, i) => i);\n });\n\n readonly maxIndex = computed(() => Math.max(0, this.pages().length - 1));\n\n /**\n * ✅ Movimiento por PÁGINA (corrige tu bug):\n * Antes movías por 1 item (itemWidth+gap) pero tu maxIndex era por páginas.\n */\n readonly translateX = computed(() => {\n const viewport = this.viewportElement()?.nativeElement as\n | HTMLElement\n | undefined;\n if (!viewport) return 'translateX(0px)';\n\n const viewportWidth = viewport.clientWidth;\n if (!viewportWidth) return 'translateX(0px)';\n\n // Para que la próxima página alinee perfecto: ancho del viewport + gap\n const step = viewportWidth + this.gap();\n const offset = -this.currentIndex() * step;\n return `translateX(${offset}px)`;\n });\n\n // Classes\n readonly containerClasses = computed(() =>\n clsx(carouselContainerVariants(), this.className()),\n );\n readonly rootClasses = computed(() => clsx(carouselRootVariants()));\n readonly viewportClasses = computed(() => clsx(carouselViewportVariants()));\n readonly trackClasses = computed(() => clsx(carouselTrackVariants()));\n readonly indicatorsClasses = computed(() =>\n clsx(carouselIndicatorsVariants()),\n );\n readonly chevronClasses = computed(() => clsx(carouselChevronVariants()));\n\n arrowClasses(direction: 'prev' | 'next'): string {\n return clsx(carouselArrowVariants({ direction }));\n }\n\n indicatorClasses(active: boolean): string {\n return clsx(carouselIndicatorVariants({ active }));\n }\n\n private refreshMeasurements(): void {\n // totalItems desde <bsg-carousel-item>\n const fromComponents = this.items().length;\n\n // fallback: si no usan bsg-carousel-item, contamos hijos reales del track\n const track = this.trackElement()?.nativeElement as HTMLElement | undefined;\n const fromDom = track?.children?.length ?? 0;\n\n this.totalItems.set(fromComponents || fromDom);\n\n this.updateGapFromTrack();\n }\n\n private updateGapFromTrack(): void {\n const track = this.trackElement()?.nativeElement as HTMLElement | undefined;\n if (!track || !this.document.defaultView) return;\n\n const computedGap = this.document.defaultView.getComputedStyle(track).gap;\n const gapValue = parseFloat(computedGap);\n if (!isNaN(gapValue)) this.gap.set(gapValue);\n }\n\n next(): void {\n if (this.currentIndex() < this.maxIndex()) {\n this.currentIndex.update((i) => i + 1);\n } else if (this.loop()) {\n this.currentIndex.set(0);\n }\n this.cdr.detectChanges();\n }\n\n previous(): void {\n if (this.currentIndex() > 0) {\n this.currentIndex.update((i) => i - 1);\n } else if (this.loop()) {\n this.currentIndex.set(this.maxIndex());\n }\n this.cdr.detectChanges();\n }\n\n goToSlide(index: number): void {\n if (index >= 0 && index <= this.maxIndex()) {\n this.currentIndex.set(index);\n this.cdr.detectChanges();\n }\n }\n\n @HostListener('window:resize')\n onResize(): void {\n this.refreshMeasurements();\n this.cdr.detectChanges();\n }\n}\n","import {\n Component,\n input,\n forwardRef,\n signal,\n HostBinding,\n linkedSignal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const checkboxVariants = cva(\n clsx(\n // Base styles\n 'peer shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none appearance-none',\n // Background\n 'bg-transparent dark:bg-input/30',\n // Checked state - usando data-state en lugar de :checked\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n 'data-[state=checked]:border-primary',\n 'dark:data-[state=checked]:bg-primary',\n // Focus state\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // Disabled state\n 'disabled:cursor-not-allowed disabled:opacity-50',\n // Invalid state\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40',\n 'aria-invalid:border-destructive',\n ),\n {\n variants: {\n size: {\n sm: 'size-3',\n default: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type CheckboxSize = VariantProps<typeof checkboxVariants>['size'];\n\n@Component({\n selector: 'bsg-checkbox',\n standalone: true,\n imports: [],\n template: `\n <span class=\"relative inline-flex\" data-slot=\"checkbox\">\n <input\n type=\"checkbox\"\n [id]=\"inputId()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [attr.data-state]=\"checked() ? 'checked' : 'unchecked'\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [checked]=\"checked()\"\n [class]=\"computedClasses\"\n (change)=\"onCheckboxChange($event)\"\n (blur)=\"onTouched()\"\n />\n <span\n class=\"pointer-events-none absolute inset-0 flex items-center justify-center text-current\"\n data-slot=\"checkbox-indicator\"\n [class.opacity-100]=\"checked()\"\n [class.opacity-0]=\"!checked()\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n [class]=\"iconSize\"\n aria-hidden=\"true\"\n >\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n </span>\n </span>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n inputId = input<string>();\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n ariaInvalid = input<boolean>();\n size = input<CheckboxSize>('default');\n className = input<string>();\n\n @HostBinding('class') get hostClasses(): string {\n return 'inline-block';\n }\n\n checked = signal(false);\n\n // Internal disabled state for ControlValueAccessor, synced with input\n disabledState = linkedSignal(() => this.disabled());\n\n // Store callbacks as signals for better reactivity\n private onChangeCallback = signal<(value: boolean) => void>(() => {});\n private onTouchedCallback = signal<() => void>(() => {});\n\n get computedClasses(): string {\n return clsx(\n checkboxVariants({\n size: this.size(),\n }),\n this.className(),\n );\n }\n\n get iconSize(): string {\n const sizes = {\n sm: 'size-2.5',\n default: 'size-3.5',\n lg: 'size-4',\n };\n return sizes[this.size() || 'default'];\n }\n\n onCheckboxChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked.set(input.checked);\n this.onChangeCallback()(input.checked);\n }\n\n onTouched(): void {\n this.onTouchedCallback()();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChangeCallback.set(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback.set(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n}\n","import {\n Component,\n input,\n output,\n signal,\n computed,\n effect,\n ContentChild,\n AfterContentInit,\n} from '@angular/core';\nimport { clsx } from 'clsx';\n\n/**\n * Collapsible Component - Following shadcn/ui pattern\n *\n * A component that can be expanded or collapsed.\n * Based on Radix UI Collapsible primitive.\n *\n * @example\n * ```html\n * <bsg-collapsible [open]=\"isOpen\" (openChange)=\"isOpen = $event\">\n * <button bsgCollapsibleTrigger>Toggle</button>\n * <bsg-collapsible-content>\n * Hidden content here\n * </bsg-collapsible-content>\n * </bsg-collapsible>\n * ```\n */\n@Component({\n selector: 'bsg-collapsible',\n standalone: true,\n template: `\n <div\n [class]=\"containerClasses()\"\n [attr.data-state]=\"dataState()\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n >\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n host: {\n '(document:keydown)': 'onKeydown($event)',\n },\n})\nexport class CollapsibleComponent implements AfterContentInit {\n /** Whether the collapsible is open (controlled mode) */\n readonly open = input<boolean | undefined>(undefined);\n\n /** Default open state (uncontrolled mode) */\n readonly defaultOpen = input<boolean>(false);\n\n /** Whether the collapsible is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when open state changes */\n readonly openChange = output<boolean>();\n\n // Internal state\n private readonly _isOpen = signal<boolean>(false);\n\n // Computed state that respects controlled vs uncontrolled\n readonly isOpen = computed(() => {\n const controlled = this.open();\n return controlled !== undefined ? controlled : this._isOpen();\n });\n\n readonly dataState = computed(() => (this.isOpen() ? 'open' : 'closed'));\n\n readonly containerClasses = computed(() =>\n clsx('group/collapsible', this.className()),\n );\n\n constructor() {\n // Sync controlled state\n effect(() => {\n const controlled = this.open();\n if (controlled !== undefined) {\n this._isOpen.set(controlled);\n }\n });\n }\n\n ngAfterContentInit(): void {\n // Initialize with defaultOpen if not controlled\n if (this.open() === undefined) {\n this._isOpen.set(this.defaultOpen());\n }\n }\n\n /**\n * Toggle the collapsible state\n */\n toggle(): void {\n if (this.disabled()) return;\n\n const newState = !this.isOpen();\n this._isOpen.set(newState);\n this.openChange.emit(newState);\n }\n\n /**\n * Set the collapsible state\n */\n setOpen(open: boolean): void {\n if (this.disabled()) return;\n\n this._isOpen.set(open);\n this.openChange.emit(open);\n }\n\n onKeydown(event: KeyboardEvent): void {\n // Handle keyboard events if needed\n }\n}\n","import {\n Directive,\n inject,\n HostListener,\n input,\n computed,\n} from '@angular/core';\nimport { CollapsibleComponent } from './collapsible.component';\n\n/**\n * CollapsibleTrigger Directive - Following shadcn/ui pattern\n *\n * Directive that makes an element toggle the parent collapsible.\n *\n * @example\n * ```html\n * <bsg-collapsible>\n * <button bsgCollapsibleTrigger>Toggle</button>\n * <bsg-collapsible-content>Content</bsg-collapsible-content>\n * </bsg-collapsible>\n * ```\n */\n@Directive({\n selector: '[bsgCollapsibleTrigger]',\n standalone: true,\n host: {\n '[attr.data-state]': 'dataState()',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.aria-expanded]': 'isExpanded()',\n role: 'button',\n },\n})\nexport class CollapsibleTriggerDirective {\n private readonly collapsible = inject(CollapsibleComponent, {\n optional: true,\n });\n\n /** Whether the trigger is disabled independently */\n readonly disabled = input<boolean>(false);\n\n readonly isDisabled = computed(\n () => this.disabled() || this.collapsible?.disabled() || false,\n );\n\n readonly isExpanded = computed(() => this.collapsible?.isOpen() || false);\n\n readonly dataState = computed(() =>\n this.collapsible?.isOpen() ? 'open' : 'closed',\n );\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (this.isDisabled()) return;\n\n event.preventDefault();\n this.collapsible?.toggle();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.isDisabled()) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.collapsible?.toggle();\n }\n }\n}\n","import {\n Component,\n input,\n computed,\n inject,\n ElementRef,\n AfterViewInit,\n OnDestroy,\n effect,\n signal,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport { CollapsibleComponent } from './collapsible.component';\n\n/**\n * CollapsibleContent Component - Following shadcn/ui pattern\n *\n * The content that is shown/hidden when the collapsible is toggled.\n * Includes animation support.\n *\n * @example\n * ```html\n * <bsg-collapsible>\n * <button bsgCollapsibleTrigger>Toggle</button>\n * <bsg-collapsible-content>\n * This content will be animated in/out\n * </bsg-collapsible-content>\n * </bsg-collapsible>\n * ```\n */\n@Component({\n selector: 'bsg-collapsible-content',\n standalone: true,\n template: `\n @if (shouldRender()) {\n <div\n [class]=\"contentClasses()\"\n [attr.data-state]=\"dataState()\"\n [style.--radix-collapsible-content-height]=\"contentHeight()\"\n [attr.hidden]=\"isHidden() ? '' : null\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n\n div {\n overflow: hidden;\n }\n\n div[data-state='open'] {\n animation: collapsible-down 200ms ease-out;\n }\n\n div[data-state='closed'] {\n animation: collapsible-up 200ms ease-out;\n }\n\n @keyframes collapsible-down {\n from {\n height: 0;\n opacity: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n opacity: 1;\n }\n }\n\n @keyframes collapsible-up {\n from {\n height: var(--radix-collapsible-content-height);\n opacity: 1;\n }\n to {\n height: 0;\n opacity: 0;\n }\n }\n `,\n})\nexport class CollapsibleContentComponent implements AfterViewInit, OnDestroy {\n private readonly collapsible = inject(CollapsibleComponent, {\n optional: true,\n });\n private readonly elementRef = inject(ElementRef);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Force mount (always render even when closed) */\n readonly forceMount = input<boolean>(false);\n\n // Internal state\n private readonly _contentHeight = signal<string>('auto');\n private readonly _shouldRender = signal<boolean>(false);\n private animationTimeout: ReturnType<typeof setTimeout> | null = null;\n\n readonly isOpen = computed(() => this.collapsible?.isOpen() || false);\n\n readonly dataState = computed(() => (this.isOpen() ? 'open' : 'closed'));\n\n readonly isHidden = computed(() => !this.isOpen() && !this.forceMount());\n\n readonly shouldRender = computed(() => {\n if (this.forceMount()) return true;\n return this._shouldRender();\n });\n\n readonly contentHeight = computed(() => this._contentHeight());\n\n readonly contentClasses = computed(() =>\n clsx(\n 'overflow-hidden',\n 'data-[state=closed]:animate-collapsible-up',\n 'data-[state=open]:animate-collapsible-down',\n this.className(),\n ),\n );\n\n constructor() {\n // Effect to handle rendering based on open state\n effect(() => {\n const isOpen = this.isOpen();\n\n if (isOpen) {\n // Show immediately when opening\n this._shouldRender.set(true);\n } else {\n // Delay hiding for animation\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n }\n this.animationTimeout = setTimeout(() => {\n if (!this.isOpen()) {\n this._shouldRender.set(false);\n }\n }, 200); // Match animation duration\n }\n });\n }\n\n ngAfterViewInit(): void {\n // Initialize render state\n this._shouldRender.set(this.isOpen() || this.forceMount());\n this.measureHeight();\n }\n\n ngOnDestroy(): void {\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n }\n }\n\n private measureHeight(): void {\n requestAnimationFrame(() => {\n const element = this.elementRef.nativeElement.querySelector('div');\n if (element) {\n this._contentHeight.set(`${element.scrollHeight}px`);\n }\n });\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Combobox wrapper variants\n *\n * Controls the overall combobox container layout\n */\nexport const comboboxWrapperVariants = cva(\n clsx(\n // Layout\n 'relative',\n 'inline-block',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/**\n * Combobox trigger variants\n *\n * Controls the clickable trigger button\n */\nexport const comboboxTriggerVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-center w-full',\n // Gap\n 'gap-3',\n // Border\n 'rounded-md border',\n // Background\n 'bg-transparent',\n // Typography\n 'text-base font-normal leading-6 tracking-[0.05px]',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus\n 'focus:outline-none',\n // Hover (only when not disabled)\n 'hover:not-disabled:opacity-90',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 py-1 px-3',\n md: 'h-10 py-1 px-3',\n lg: 'h-12 py-1 px-3',\n },\n state: {\n default: 'border-border text-foreground',\n hover: 'border-border text-foreground opacity-90',\n focus: 'border-primary text-foreground',\n disabled:\n 'border-border text-foreground opacity-40 cursor-not-allowed pointer-events-none',\n error: 'border-destructive text-destructive',\n },\n open: {\n true: 'border-primary',\n false: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n state: 'default',\n open: false,\n },\n },\n);\n\n/**\n * Combobox dropdown variants\n *\n * Controls the dropdown menu container\n */\nexport const comboboxDropdownVariants = cva(\n clsx(\n // Position\n 'absolute top-full mt-1 left-0',\n // Z-index\n 'z-50',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Shadow\n 'shadow-lg',\n // Overflow\n 'overflow-hidden',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n);\n\n/**\n * Combobox search wrapper variants\n *\n * Controls the search input container\n */\nexport const comboboxSearchWrapperVariants = cva(\n clsx(\n // Padding\n 'p-2',\n // Border\n 'border-b border-muted',\n ),\n);\n\n/**\n * Combobox search input variants\n *\n * Controls the search input field\n */\nexport const comboboxSearchInputVariants = cva(\n clsx(\n // Layout\n 'w-full',\n // Padding\n 'py-1.5 px-2.5',\n // Border\n 'rounded border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-sm font-normal leading-5 text-foreground',\n // Placeholder\n 'placeholder:text-muted-foreground',\n // Transition\n 'transition-all duration-200',\n // Focus\n 'focus:outline-none focus:border-primary',\n // Disabled\n 'disabled:opacity-40 disabled:cursor-not-allowed',\n ),\n);\n\n/**\n * Combobox options container variants\n *\n * Controls the scrollable options list\n */\nexport const comboboxOptionsContainerVariants = cva(\n clsx(\n // Max height and scroll\n 'max-h-[200px] overflow-y-auto',\n ),\n);\n\n/**\n * Combobox option variants\n *\n * Controls individual dropdown options\n */\nexport const comboboxOptionVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Size\n 'min-h-8',\n // Padding\n 'py-1 px-3',\n // Typography\n 'text-base font-normal leading-6 tracking-[0.05px] text-foreground',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-colors duration-200',\n // Hover\n 'hover:bg-muted/50',\n ),\n {\n variants: {\n selected: {\n true: 'bg-muted hover:bg-muted',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n },\n },\n);\n\n/**\n * Combobox empty state variants\n *\n * Controls the empty state message\n */\nexport const comboboxEmptyStateVariants = cva(\n clsx(\n // Padding\n 'py-4 px-3',\n // Typography\n 'text-sm font-normal text-muted-foreground text-center',\n ),\n);\n\n/**\n * Combobox error message variants\n *\n * Controls the error message display\n */\nexport const comboboxErrorMessageVariants = cva(\n clsx(\n // Margin\n 'mt-1.5',\n // Typography\n 'text-xs font-normal leading-[1.4] text-destructive',\n ),\n);\n\n/**\n * Combobox value text variants\n *\n * Controls the selected value display\n */\nexport const comboboxValueVariants = cva(\n clsx(\n // Layout\n 'flex-1 text-left',\n ),\n);\n\n/**\n * Combobox icon variants\n *\n * Controls the chevron icon\n */\nexport const comboboxIconVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-3.5 h-2',\n ),\n);\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n HostListener,\n input,\n model,\n output,\n signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n comboboxDropdownVariants,\n comboboxEmptyStateVariants,\n comboboxErrorMessageVariants,\n comboboxIconVariants,\n comboboxOptionsContainerVariants,\n comboboxOptionVariants,\n comboboxSearchInputVariants,\n comboboxSearchWrapperVariants,\n comboboxTriggerVariants,\n comboboxValueVariants,\n comboboxWrapperVariants,\n} from './combobox.variants';\n\nexport type ComboboxSize = 'sm' | 'md' | 'lg';\nexport type ComboboxState =\n | 'default'\n | 'hover'\n | 'focus'\n | 'disabled'\n | 'error';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport type ComboboxWrapperVariantsProps = VariantProps<\n typeof comboboxWrapperVariants\n>;\nexport type ComboboxTriggerVariantsProps = VariantProps<\n typeof comboboxTriggerVariants\n>;\n\n/**\n * Combobox Component - Searchable dropdown select\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-combobox\n * [options]=\"options\"\n * [placeholder]=\"'Select...'\"\n * [size]=\"'md'\"\n * (valueChange)=\"onValueChange($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-combobox',\n standalone: true,\n imports: [CommonModule, FormsModule],\n template: `\n <div [class]=\"wrapperClasses()\">\n <!-- Combobox trigger -->\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"state() === 'disabled'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-disabled]=\"state() === 'disabled'\"\n (click)=\"toggleDropdown($event)\"\n >\n <span [class]=\"valueClasses()\">{{ selectedLabel() }}</span>\n <svg\n [class]=\"iconClasses()\"\n width=\"14\"\n height=\"8\"\n viewBox=\"0 0 14 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.2929 0.292893C12.6834 -0.0976311 13.3164 -0.0976311 13.707 0.292893C14.0975 0.683417 14.0975 1.31643 13.707 1.70696L7.70696 7.70696C7.31643 8.09748 6.68342 8.09748 6.29289 7.70696L0.292893 1.70696C-0.0976311 1.31643 -0.0976311 0.683417 0.292893 0.292893C0.683418 -0.0976311 1.31643 -0.0976311 1.70696 0.292893L6.99992 5.58586L12.2929 0.292893Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n </button>\n\n <!-- Dropdown menu with search -->\n @if (isOpen()) {\n <div [class]=\"dropdownClasses()\" role=\"listbox\">\n <!-- Search input -->\n <div [class]=\"searchWrapperClasses()\">\n <input\n type=\"text\"\n [class]=\"searchInputClasses()\"\n [disabled]=\"state() === 'disabled'\"\n placeholder=\"Buscar...\"\n [ngModel]=\"searchText()\"\n (ngModelChange)=\"searchText.set($event)\"\n (keydown.escape)=\"closeDropdown()\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Search options\"\n />\n </div>\n\n <!-- Options list -->\n <div [class]=\"optionsContainerClasses()\">\n @for (option of filteredOptions(); track option.value) {\n <div\n [class]=\"getOptionClasses(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"selectedValue() === option.value\"\n (click)=\"selectOption($event, option)\"\n >\n {{ option.label }}\n </div>\n }\n\n <!-- Empty state -->\n @if (filteredOptions().length === 0) {\n <div [class]=\"emptyStateClasses()\">Sin resultados</div>\n }\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (state() === 'error' && errorMessage()) {\n <div [class]=\"errorMessageClasses()\">\n {{ errorMessage() }}\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class ComboboxComponent {\n /** Size of the combobox */\n readonly size = input<ComboboxSize>('sm');\n\n /** Current state */\n readonly state = input<ComboboxState>('default');\n\n /** List of options */\n readonly options = input<ComboboxOption[]>([\n { value: '1', label: 'Opcion 1' },\n { value: '2', label: 'Opcion 2' },\n { value: '3', label: 'Opcion 3' },\n { value: '4', label: 'Opcion 4' },\n ]);\n\n /** Currently selected value (two-way binding supported) */\n readonly selectedValue = model<string>('');\n\n /** Placeholder text */\n readonly placeholder = input<string>('Selecciona');\n\n /** Dropdown open state (two-way binding supported) */\n readonly open = model<boolean>(false);\n\n /** Error message (shown when state is 'error') */\n readonly errorMessage = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<ComboboxOption>();\n\n /** Open state change event */\n readonly openChange = output<boolean>();\n\n /** Internal open state */\n readonly isOpen = signal<boolean>(false);\n\n /** Search text for filtering */\n readonly searchText = signal<string>('');\n\n constructor() {\n // Sync isOpen with open input\n effect(() => {\n this.isOpen.set(this.open());\n });\n }\n\n // Computed classes\n readonly wrapperClasses = computed(() =>\n clsx(\n comboboxWrapperVariants({\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n readonly triggerClasses = computed(() =>\n clsx(\n comboboxTriggerVariants({\n size: this.size(),\n state: this.state(),\n open: this.isOpen(),\n }),\n ),\n );\n\n readonly dropdownClasses = computed(() =>\n clsx(\n comboboxDropdownVariants({\n size: this.size(),\n }),\n ),\n );\n\n readonly searchWrapperClasses = computed(() =>\n clsx(comboboxSearchWrapperVariants()),\n );\n\n readonly searchInputClasses = computed(() =>\n clsx(comboboxSearchInputVariants()),\n );\n\n readonly optionsContainerClasses = computed(() =>\n clsx(comboboxOptionsContainerVariants()),\n );\n\n readonly emptyStateClasses = computed(() =>\n clsx(comboboxEmptyStateVariants()),\n );\n\n readonly errorMessageClasses = computed(() =>\n clsx(comboboxErrorMessageVariants()),\n );\n\n readonly valueClasses = computed(() => clsx(comboboxValueVariants()));\n\n readonly iconClasses = computed(() => clsx(comboboxIconVariants()));\n\n readonly selectedLabel = computed(() => {\n const value = this.selectedValue();\n if (!value) {\n return this.placeholder();\n }\n\n const selected = this.options().find((opt) => opt.value === value);\n return selected ? selected.label : this.placeholder();\n });\n\n readonly iconColor = computed(() => {\n if (this.state() === 'error') {\n return 'currentColor';\n }\n return '#64748B'; // neutral-500\n });\n\n readonly filteredOptions = computed(() => {\n const term = this.searchText().trim().toLowerCase();\n\n if (!term) return this.options();\n\n return this.options().filter((option) =>\n option.label.toLowerCase().includes(term),\n );\n });\n\n getOptionClasses(value: string): string {\n return clsx(\n comboboxOptionVariants({\n selected: this.selectedValue() === value,\n }),\n );\n }\n\n toggleDropdown(event: MouseEvent): void {\n event.stopPropagation();\n\n if (this.state() === 'disabled') {\n return;\n }\n\n const newState = !this.isOpen();\n this.isOpen.set(newState);\n this.open.set(newState);\n if (newState) {\n this.searchText.set('');\n }\n this.openChange.emit(newState);\n }\n\n closeDropdown(): void {\n this.isOpen.set(false);\n this.open.set(false);\n this.searchText.set('');\n\n this.openChange.emit(false);\n }\n\n selectOption(event: MouseEvent, option: ComboboxOption): void {\n event.stopPropagation();\n\n if (this.state() === 'disabled') {\n return;\n }\n\n // Update internal state\n this.selectedValue.set(option.value);\n this.isOpen.set(false);\n this.open.set(false);\n this.searchText.set('');\n\n // Emit events\n this.valueChange.emit(option.value);\n this.selectionChange.emit(option);\n this.openChange.emit(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const hostElement = (event.currentTarget as Document).querySelector(\n 'bsg-combobox',\n );\n\n // Check if click is outside the combobox\n if (hostElement && !hostElement.contains(target) && this.isOpen()) {\n this.closeDropdown();\n }\n }\n}\n","// projects/bsg-integra/src/lib/components/dialog/dialog.variants.ts\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Dialog overlay variants\n */\nexport const dialogOverlayVariants = cva(\n clsx(\n 'fixed inset-0',\n 'z-[9999]',\n 'flex justify-center',\n 'items-start sm:items-center',\n 'overflow-y-auto',\n 'bg-black/50',\n 'p-4 md:p-3',\n 'box-border',\n 'animate-in fade-in duration-200',\n 'select-none',\n ),\n);\n\n/**\n * Dialog content variants\n */\nexport const dialogContentVariants = cva(\n clsx(\n 'relative',\n 'flex flex-col',\n 'shrink-0',\n 'bg-card',\n 'rounded-xl',\n 'shadow-xl',\n 'max-h-[90vh]',\n 'w-full',\n 'box-border',\n 'animate-in zoom-in-95 duration-200',\n 'select-text',\n 'focus:outline-none',\n ),\n {\n variants: {\n size: {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-2xl',\n '3xl': 'max-w-3xl',\n '4xl': 'max-w-4xl',\n full: 'max-w-[calc(100vw-2rem)]',\n },\n },\n defaultVariants: {\n size: 'lg',\n },\n },\n);\n\nexport type DialogContentVariantsProps = VariantProps<\n typeof dialogContentVariants\n>;\n\n/**\n * Dialog header variants\n */\nexport const dialogHeaderVariants = cva(\n clsx(\n 'flex items-center',\n 'min-h-[57px]',\n 'px-[17px] py-5 md:px-3.5 md:py-4',\n 'rounded-t-xl',\n 'box-border',\n 'font-sans text-base font-semibold leading-normal',\n 'md:text-sm',\n ),\n {\n variants: {\n tone: {\n brand: 'bg-brand text-brand-foreground',\n info: 'bg-primary/20 text-primary',\n secondary: 'bg-primary/20 text-primary',\n },\n },\n defaultVariants: {\n tone: 'brand',\n },\n },\n);\n\nexport type DialogHeaderVariantsProps = VariantProps<\n typeof dialogHeaderVariants\n>;\n\n/**\n * Dialog body variants\n */\nexport const dialogBodyVariants = cva(\n clsx(\n 'flex-1',\n 'px-[23px] py-5 md:px-3.5 md:py-4',\n 'box-border',\n 'font-sans text-sm font-medium leading-normal',\n 'md:text-[13px]',\n 'text-muted-foreground',\n ),\n {\n variants: {\n scrollable: {\n true: 'overflow-y-auto max-h-[calc(90vh-200px)] md:max-h-[calc(95vh-180px)]',\n false: 'overflow-y-visible',\n },\n },\n defaultVariants: {\n scrollable: false,\n },\n },\n);\n\nexport type DialogBodyVariantsProps = VariantProps<typeof dialogBodyVariants>;\n\n/**\n * Dialog footer variants\n */\nexport const dialogFooterVariants = cva(\n clsx(\n 'flex items-center justify-end flex-nowrap',\n 'gap-8 md:gap-5',\n 'px-[23px] py-5 md:px-3.5 md:py-4',\n 'border-t border-border',\n 'box-border',\n 'w-full',\n ),\n);\n\nexport type DialogFooterVariantsProps = VariantProps<\n typeof dialogFooterVariants\n>;\n","// projects/bsg-integra/src/lib/components/dialog/dialog.component.ts\nimport {\n Component,\n computed,\n HostListener,\n input,\n output,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n dialogBodyVariants,\n dialogContentVariants,\n dialogFooterVariants,\n dialogHeaderVariants,\n dialogOverlayVariants,\n} from './dialog.variants';\n\nexport type DialogSize =\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl'\n | 'full';\n\nexport type DialogHeaderTone = 'brand' | 'info' | 'secondary';\n\n@Component({\n selector: 'bsg-dialog',\n standalone: true,\n template: `\n @if (open()) {\n <!-- Dialog Overlay -->\n <div [class]=\"overlayClasses()\" (click)=\"onOverlayClick()\">\n <!-- Dialog Content -->\n <div\n [class]=\"contentClasses()\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n aria-labelledby=\"dialog-title\"\n [style.width]=\"'100%'\"\n [style.maxWidth]=\"contentMaxWidth()\"\n [style.minWidth]=\"'280px'\"\n [style.margin]=\"'24px auto'\"\n [style.flex]=\"'0 0 auto'\"\n >\n <!-- Dialog Header -->\n <div [class]=\"headerClasses()\">\n <ng-content select=\"[dialog-header]\"></ng-content>\n </div>\n\n <!-- Dialog Body -->\n <div [class]=\"bodyClasses()\">\n <ng-content select=\"[dialog-body]\"></ng-content>\n </div>\n\n <!-- Dialog Footer -->\n @if (hasFooter()) {\n <div [class]=\"footerClasses()\">\n <ng-content select=\"[dialog-footer]\"></ng-content>\n </div>\n }\n </div>\n </div>\n }\n `,\n})\nexport class DialogComponent {\n /** Controls dialog visibility */\n readonly open = input<boolean>(false);\n\n /** Dialog size */\n readonly size = input<DialogSize>('lg');\n\n /** Header tone/theme */\n readonly headerTone = input<DialogHeaderTone>('brand');\n\n /** Enable scrollable body */\n readonly scrollable = input<boolean>(false);\n\n /** Allow dismissing via ESC or backdrop click */\n readonly dismissible = input<boolean>(true);\n\n /** Whether footer content is present */\n readonly hasFooter = input<boolean>(true);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Close event */\n readonly closeDialog = output<void>();\n\n // Computed classes\n readonly overlayClasses = computed(() => clsx(dialogOverlayVariants()));\n\n readonly contentClasses = computed(() =>\n clsx(dialogContentVariants({ size: this.size() }), this.className()),\n );\n\n readonly headerClasses = computed(() =>\n clsx(dialogHeaderVariants({ tone: this.headerTone() })),\n );\n\n readonly bodyClasses = computed(() =>\n clsx(dialogBodyVariants({ scrollable: this.scrollable() })),\n );\n\n readonly footerClasses = computed(() => clsx(dialogFooterVariants()));\n\n // Fallback sizing (prevents min-content collapse in some Storybook setups)\n readonly contentMaxWidth = computed(() => {\n const map: Record<DialogSize, string> = {\n sm: '384px',\n md: '448px',\n lg: '512px',\n xl: '576px',\n '2xl': '672px',\n '3xl': '768px',\n '4xl': '896px',\n full: 'calc(100vw - 2rem)',\n };\n return map[this.size()];\n });\n\n onOverlayClick(): void {\n if (this.dismissible()) this.close();\n }\n\n close(): void {\n this.closeDialog.emit();\n }\n\n @HostListener('document:keydown.escape')\n onEscapeKey(): void {\n if (this.open() && this.dismissible()) this.close();\n }\n}\n","import {\n Component,\n input,\n forwardRef,\n HostBinding,\n signal,\n linkedSignal,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR,\n NG_VALIDATORS,\n Validator,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const inputVariants = cva(\n clsx(\n // Layout & sizing\n 'w-full min-w-0',\n // Border & radius\n 'rounded-md border border-input',\n // Spacing\n 'px-3',\n // Typography\n 'text-base md:text-sm',\n // Colors\n 'bg-transparent text-foreground',\n 'placeholder:text-muted-foreground',\n // Effects\n 'shadow-xs transition-[color,box-shadow] outline-none',\n // Focus state\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // Disabled state\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // File input styles\n 'file:inline-flex file:h-7 file:border-0 file:bg-transparent',\n 'file:text-sm file:font-medium file:text-foreground',\n // Selection styles\n 'selection:bg-primary selection:text-primary-foreground',\n // Dark mode\n 'dark:bg-input/30',\n // Invalid state\n 'aria-invalid:border-destructive aria-invalid:ring-destructive/20',\n 'dark:aria-invalid:ring-destructive/40',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 py-1 text-xs',\n default: 'h-9 py-1',\n lg: 'h-11 py-2 text-base',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type InputSize = VariantProps<typeof inputVariants>['size'];\n\n@Component({\n selector: 'bsg-input',\n standalone: true,\n imports: [],\n template: `\n <input\n [type]=\"type()\"\n [class]=\"computedClasses\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"onFocus()\"\n />\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => InputComponent),\n multi: true,\n },\n ],\n})\nexport class InputComponent implements ControlValueAccessor, Validator {\n type = input<string>('text');\n placeholder = input<string>('');\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n readonly = input<boolean>(false);\n ariaInvalid = input<boolean>();\n size = input<InputSize>('default');\n className = input<string>();\n\n @HostBinding('class') get hostClasses(): string {\n return 'block';\n }\n\n value = signal('');\n\n // Internal disabled state for ControlValueAccessor, synced with input\n disabledState = linkedSignal(() => this.disabled());\n\n // Store callbacks as signals for better reactivity\n private onChangeCallback = signal<(value: string) => void>(() => {});\n private onTouchedCallback = signal<() => void>(() => {});\n\n get computedClasses(): string {\n return clsx(\n inputVariants({\n size: this.size(),\n }),\n this.className(),\n );\n }\n\n onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.value.set(input.value);\n this.onChangeCallback()(input.value);\n }\n\n onTouched(): void {\n this.onTouchedCallback()();\n }\n\n onFocus(): void {\n // Hook for focus event if needed\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeCallback.set(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback.set(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n // HTML5 validation support\n if (this.required() && !control.value) {\n return { required: true };\n }\n\n // Email validation for type=\"email\"\n if (this.type() === 'email' && control.value) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(control.value)) {\n return { email: true };\n }\n }\n\n // URL validation for type=\"url\"\n if (this.type() === 'url' && control.value) {\n const urlRegex = /^https?:\\/\\/.+/;\n if (!urlRegex.test(control.value)) {\n return { url: true };\n }\n }\n\n return null;\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Label variants\n *\n * Controls the label text styling\n */\nexport const labelVariants = cva(\n clsx(\n // Display\n 'inline',\n // Typography\n 'text-sm',\n 'font-inherit',\n // Color\n 'text-foreground',\n ),\n);\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { labelVariants } from './label.variants';\n\n/**\n * Label Component\n *\n * A simple text label component following shadcn/ui pattern.\n *\n * Usage:\n * ```html\n * <bsg-label text=\"My Label\"></bsg-label>\n * <bsg-label text=\"Custom styled\" className=\"font-bold\"></bsg-label>\n * ```\n */\n@Component({\n selector: 'bsg-label',\n standalone: true,\n template: `<span [class]=\"computedClasses()\">{{ text() }}</span>`,\n})\nexport class LabelComponent {\n /** Label text content */\n readonly text = input<string>('Etiqueta');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed classes combining variants and custom className */\n readonly computedClasses = computed(() =>\n clsx(labelVariants(), this.className()),\n );\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Radio wrapper variants\n *\n * Controls the overall radio button container layout and sizing\n */\nexport const radioWrapperVariants = cva(\n clsx(\n // Layout\n 'relative inline-flex items-center justify-center',\n // Interaction\n 'cursor-pointer',\n // Box sizing\n 'box-border',\n ),\n {\n variants: {\n size: {\n sm: 'w-4 h-4', // 16px\n md: 'w-5 h-5', // 20px\n },\n state: {\n default: '',\n hover: '',\n checked: '',\n disabled: 'cursor-not-allowed pointer-events-none',\n focus: '', // Focus state increases size\n },\n },\n compoundVariants: [\n // Focus state increases wrapper size to accommodate focus ring\n {\n size: 'sm',\n state: 'focus',\n class: 'w-[22px] h-[22px]',\n },\n {\n size: 'md',\n state: 'focus',\n class: 'w-[26px] h-[26px]',\n },\n ],\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n },\n);\n\n/**\n * Radio focus ring variants\n *\n * Controls the outer focus ring that appears in focus state\n */\nexport const radioFocusRingVariants = cva(\n clsx(\n // Position\n 'absolute top-0 left-0',\n // Interaction\n 'pointer-events-none',\n ),\n {\n variants: {\n size: {\n sm: 'w-[22px] h-[22px]',\n md: 'w-[26px] h-[26px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Radio outer circle variants\n *\n * Controls the main outer circle of the radio button\n */\nexport const radioOuterVariants = cva(\n clsx(\n // Position - centered\n 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n // Transitions\n 'transition-all duration-200 ease-in-out',\n ),\n {\n variants: {\n size: {\n sm: 'w-4 h-4', // 16px\n md: 'w-5 h-5', // 20px\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Radio inner dot variants\n *\n * Controls the inner checked indicator dot\n */\nexport const radioInnerVariants = cva(\n clsx(\n // Position - centered\n 'absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2',\n // Interaction\n 'pointer-events-none',\n // Transitions\n 'transition-all duration-200 ease-in-out',\n ),\n {\n variants: {\n size: {\n sm: 'w-[10px] h-[10px]',\n md: 'w-[14px] h-[14px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n radioFocusRingVariants,\n radioInnerVariants,\n radioOuterVariants,\n radioWrapperVariants,\n} from './radio.variants';\n\nexport type RadioSize = 'sm' | 'md';\nexport type RadioState = 'default' | 'hover' | 'checked' | 'disabled' | 'focus';\n\nexport type RadioWrapperVariantsProps = VariantProps<\n typeof radioWrapperVariants\n>;\nexport type RadioFocusRingVariantsProps = VariantProps<\n typeof radioFocusRingVariants\n>;\nexport type RadioOuterVariantsProps = VariantProps<typeof radioOuterVariants>;\nexport type RadioInnerVariantsProps = VariantProps<typeof radioInnerVariants>;\n\n/**\n * Radio Component - Custom radio button with various states\n *\n * Usage:\n * ```html\n * <bsg-radio [size]=\"'md'\" [state]=\"'default'\" [checked]=\"false\"></bsg-radio>\n * ```\n */\n@Component({\n selector: 'bsg-radio',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n [class]=\"wrapperClasses()\"\n (click)=\"handleClick()\"\n [attr.role]=\"'radio'\"\n [attr.aria-checked]=\"currentState() === 'checked'\"\n [attr.aria-disabled]=\"currentState() === 'disabled'\"\n [attr.tabindex]=\"currentState() === 'disabled' ? -1 : 0\"\n >\n <!-- Focus ring (outer) -->\n <svg\n *ngIf=\"currentState() === 'focus'\"\n [class]=\"focusRingClasses()\"\n [attr.width]=\"focusRingSize()\"\n [attr.height]=\"focusRingSize()\"\n [attr.viewBox]=\"'0 0 ' + focusRingSize() + ' ' + focusRingSize()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"focusRingSize() / 2\"\n [attr.cy]=\"focusRingSize() / 2\"\n [attr.r]=\"focusRingSize() / 2 - 0.5\"\n class=\"stroke-primary\"\n stroke-width=\"1\"\n />\n </svg>\n\n <!-- Outer circle -->\n <svg\n [class]=\"outerClasses()\"\n [attr.width]=\"outerSize()\"\n [attr.height]=\"outerSize()\"\n [attr.viewBox]=\"'0 0 ' + outerSize() + ' ' + outerSize()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"outerSize() / 2\"\n [attr.cy]=\"outerSize() / 2\"\n [attr.r]=\"outerSize() / 2 - 0.5\"\n [class]=\"outerCircleClasses()\"\n stroke-width=\"1\"\n />\n </svg>\n\n <!-- Inner dot (indicator) for checked state -->\n <svg\n *ngIf=\"currentState() === 'checked'\"\n [class]=\"innerClasses()\"\n [attr.width]=\"innerSize()\"\n [attr.height]=\"innerSize()\"\n [attr.viewBox]=\"'0 0 ' + innerSize() + ' ' + innerSize()\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n [attr.cx]=\"innerSize() / 2\"\n [attr.cy]=\"innerSize() / 2\"\n [attr.r]=\"innerSize() / 2 - 0.5\"\n class=\"fill-primary stroke-primary\"\n stroke-width=\"1\"\n />\n </svg>\n </div>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n\n /* Accessibility - keyboard focus */\n .radio-wrapper:focus-visible {\n outline: none;\n }\n `,\n})\nexport class RadioComponent {\n /** Radio size */\n readonly size = input<RadioSize>('md');\n\n /** Radio state (external input) */\n readonly state = input<RadioState>('default');\n\n /** Checked state (external input) */\n readonly checked = input<boolean>(false);\n\n /** Additional CSS classes for wrapper */\n readonly className = input<string>();\n\n /** Emits when state changes */\n readonly stateChange = output<RadioState>();\n\n /** Emits when checked state changes */\n readonly checkedChange = output<boolean>();\n\n /** Emits when value changes */\n readonly valueChange = output<boolean>();\n\n // Internal writable signals for state management\n private readonly internalState = signal<RadioState>('default');\n private readonly internalChecked = signal<boolean>(false);\n\n // Sync external inputs with internal state\n constructor() {\n effect(() => {\n this.internalState.set(this.state());\n });\n\n effect(() => {\n this.internalChecked.set(this.checked());\n });\n }\n\n // Current state computed from internal signal\n readonly currentState = computed(() => this.internalState());\n readonly currentChecked = computed(() => this.internalChecked());\n\n // Computed wrapper classes\n readonly wrapperClasses = computed(() =>\n clsx(\n radioWrapperVariants({\n size: this.size(),\n state: this.currentState(),\n }),\n this.className(),\n ),\n );\n\n // Computed focus ring classes\n readonly focusRingClasses = computed(() =>\n radioFocusRingVariants({\n size: this.size(),\n }),\n );\n\n // Computed outer circle classes\n readonly outerClasses = computed(() =>\n radioOuterVariants({\n size: this.size(),\n }),\n );\n\n // Computed inner dot classes\n readonly innerClasses = computed(() =>\n radioInnerVariants({\n size: this.size(),\n }),\n );\n\n // Outer circle size\n readonly outerSize = computed(() => {\n return this.size() === 'sm' ? 16 : 20;\n });\n\n // Inner dot size (when checked)\n readonly innerSize = computed(() => {\n return this.size() === 'sm' ? 10 : 14;\n });\n\n // Focus ring size (3px larger on each side = 6px total)\n readonly focusRingSize = computed(() => {\n return this.size() === 'sm' ? 22 : 26;\n });\n\n // Outer circle classes based on state (using semantic tokens)\n readonly outerCircleClasses = computed(() => {\n const current = this.currentState();\n if (current === 'disabled') {\n return 'stroke-muted-foreground fill-muted-foreground';\n }\n if (current === 'hover') {\n return 'stroke-primary/70 fill-none';\n }\n if (current === 'checked') {\n return 'stroke-primary fill-none';\n }\n if (current === 'focus') {\n return 'stroke-muted-foreground fill-none';\n }\n return 'stroke-muted-foreground fill-none'; // default\n });\n\n // Handle click events\n handleClick(): void {\n if (this.currentState() === 'disabled') {\n return;\n }\n\n const newState: RadioState =\n this.currentState() === 'checked' ? 'default' : 'checked';\n const newChecked = !this.currentChecked();\n\n // Update internal state\n this.internalState.set(newState);\n this.internalChecked.set(newChecked);\n\n // Emit events\n this.stateChange.emit(newState);\n this.checkedChange.emit(newChecked);\n this.valueChange.emit(newChecked);\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Radio Group container variants\n *\n * Controls the overall radio group layout, orientation, and spacing\n */\nexport const radioGroupVariants = cva(\n clsx(\n // Layout\n 'flex',\n // Box sizing\n 'box-border',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-start',\n },\n size: {\n sm: '', // Spacing handled via compoundVariants\n md: '',\n },\n },\n compoundVariants: [\n // Horizontal spacing\n {\n orientation: 'horizontal',\n size: 'sm',\n class: 'gap-3', // 12px\n },\n {\n orientation: 'horizontal',\n size: 'md',\n class: 'gap-[15px]', // 15px\n },\n // Vertical spacing\n {\n orientation: 'vertical',\n size: 'sm',\n class: 'gap-3', // 12px\n },\n {\n orientation: 'vertical',\n size: 'md',\n class: 'gap-3', // 12px\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n size: 'md',\n },\n },\n);\n\n/**\n * Radio Option variants (container for radio + label)\n *\n * Controls the layout and spacing between radio button and its label\n */\nexport const radioOptionVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center',\n // Interaction\n 'cursor-pointer',\n // Box sizing\n 'box-border',\n // Prevent text selection\n 'select-none',\n ),\n {\n variants: {\n size: {\n sm: 'gap-2', // 8px\n md: 'gap-3', // 12px\n },\n disabled: {\n true: 'cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n);\n\n/**\n * Radio Label variants\n *\n * Controls the text styling for radio button labels\n */\nexport const radioLabelVariants = cva(\n clsx(\n // Typography\n 'font-normal',\n 'tracking-[0.05px]',\n // Color (semantic token)\n 'text-foreground',\n ),\n {\n variants: {\n size: {\n sm: 'text-sm leading-[21px]', // 14px / 21px\n md: 'text-base leading-6', // 16px / 24px\n },\n disabled: {\n true: 'text-muted-foreground opacity-60',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n disabled: false,\n },\n },\n);\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { RadioComponent, RadioSize } from '../radio/radio.component';\nimport {\n radioGroupVariants,\n radioLabelVariants,\n radioOptionVariants,\n} from './radio-group.variants';\n\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface RadioGroupOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport type RadioGroupVariantsProps = VariantProps<typeof radioGroupVariants>;\nexport type RadioOptionVariantsProps = VariantProps<typeof radioOptionVariants>;\nexport type RadioLabelVariantsProps = VariantProps<typeof radioLabelVariants>;\n\n/**\n * RadioGroup Component - Container for radio button options\n *\n * Usage:\n * ```html\n * <bsg-radio-group\n * [options]=\"myOptions\"\n * [selectedValue]=\"selectedVal\"\n * (valueChange)=\"onValueChange($event)\"\n * ></bsg-radio-group>\n * ```\n */\n@Component({\n selector: 'bsg-radio-group',\n standalone: true,\n imports: [CommonModule, RadioComponent],\n template: `\n <div [class]=\"groupClasses()\" [attr.role]=\"'radiogroup'\">\n <label\n *ngFor=\"let option of options(); let i = index\"\n [class]=\"getOptionClasses(option)\"\n (click)=\"selectOption(option.value)\"\n >\n <bsg-radio\n [size]=\"size()\"\n [state]=\"getRadioState(option.value, option.disabled)\"\n [checked]=\"currentSelectedValue() === option.value\"\n ></bsg-radio>\n <span [class]=\"getLabelClasses(option)\">{{ option.label }}</span>\n </label>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class RadioGroupComponent {\n /** Size of the radio buttons */\n readonly size = input<RadioSize>('md');\n\n /** Layout orientation */\n readonly orientation = input<RadioGroupOrientation>('horizontal');\n\n /** List of options */\n readonly options = input<RadioGroupOption[]>([\n { value: '1', label: 'Uno' },\n { value: '2', label: 'Dos' },\n { value: '3', label: 'Tres' },\n ]);\n\n /** Currently selected value (external input) */\n readonly selectedValue = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<RadioGroupOption>();\n\n // Internal writable signal for selected value\n private readonly internalSelectedValue = signal<string>('');\n\n // Sync external input with internal state\n constructor() {\n effect(() => {\n this.internalSelectedValue.set(this.selectedValue());\n });\n }\n\n // Current selected value computed from internal signal\n readonly currentSelectedValue = computed(() => this.internalSelectedValue());\n\n // Computed group classes\n readonly groupClasses = computed(() =>\n clsx(\n radioGroupVariants({\n orientation: this.orientation(),\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n // Get option classes for a specific option\n getOptionClasses(option: RadioGroupOption): string {\n return radioOptionVariants({\n size: this.size(),\n disabled: option.disabled || false,\n });\n }\n\n // Get label classes for a specific option\n getLabelClasses(option: RadioGroupOption): string {\n return radioLabelVariants({\n size: this.size(),\n disabled: option.disabled || false,\n });\n }\n\n // Get radio state based on value and disabled status\n getRadioState(\n value: string,\n disabled?: boolean,\n ): 'default' | 'checked' | 'disabled' {\n if (disabled) {\n return 'disabled';\n }\n return this.currentSelectedValue() === value ? 'checked' : 'default';\n }\n\n // Handle option selection\n selectOption(value: string): void {\n const option = this.options().find((opt) => opt.value === value);\n\n if (option && !option.disabled) {\n // Update internal state\n this.internalSelectedValue.set(value);\n\n // Emit events\n this.valueChange.emit(value);\n this.selectionChange.emit(option);\n }\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Select wrapper variants\n *\n * Controls the overall select container layout\n */\nexport const selectWrapperVariants = cva(\n clsx(\n // Layout\n 'relative inline-block box-border',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Select trigger variants\n *\n * Controls the clickable select button\n */\nexport const selectTriggerVariants = cva(\n clsx(\n // Layout\n 'flex justify-center items-center gap-3 w-full',\n // Border\n 'rounded-md border',\n // Background\n 'bg-transparent',\n // Typography\n 'font-sans text-base font-normal leading-6 tracking-[0.05px]',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus\n 'focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 px-3 py-1',\n md: 'h-10 px-3 py-1',\n lg: 'h-12 px-3 py-1',\n },\n state: {\n default: 'border-border text-foreground hover:opacity-90',\n hover: 'border-border text-foreground opacity-90',\n focus: 'border-primary text-foreground',\n disabled:\n 'opacity-40 cursor-not-allowed pointer-events-none border-border text-foreground',\n error: 'border-destructive text-destructive',\n },\n open: {\n true: 'border-primary',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n open: false,\n },\n },\n);\n\n/**\n * Select value variants\n *\n * Controls the selected value text display\n */\nexport const selectValueVariants = cva(\n clsx(\n // Layout\n 'flex-1 text-left',\n // Typography\n 'truncate',\n ),\n);\n\n/**\n * Select icon variants\n *\n * Controls the chevron icon\n */\nexport const selectIconVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-3.5 h-2',\n // Transition\n 'transition-transform duration-200',\n ),\n {\n variants: {\n open: {\n true: 'rotate-180',\n false: '',\n },\n state: {\n default: 'text-muted-foreground',\n hover: 'text-muted-foreground',\n focus: 'text-muted-foreground',\n disabled: 'text-muted-foreground',\n error: 'text-destructive',\n },\n },\n defaultVariants: {\n open: false,\n state: 'default',\n },\n },\n);\n\n/**\n * Select dropdown variants\n *\n * Controls the dropdown menu container\n */\nexport const selectDropdownVariants = cva(\n clsx(\n // Position\n 'absolute top-[calc(100%+4px)] left-0 z-50',\n // Border\n 'rounded-md border border-border',\n // Background (semantic token)\n 'bg-popover',\n // Text color (semantic token)\n 'text-popover-foreground',\n // Shadow (semantic token)\n 'shadow-(--shadow-dropdown)',\n // Layout\n 'overflow-hidden box-border',\n ),\n {\n variants: {\n size: {\n sm: 'min-w-[133px]',\n md: 'min-w-[132px]',\n lg: 'min-w-[133px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Select option variants\n *\n * Controls individual dropdown options\n */\nexport const selectOptionVariants = cva(\n clsx(\n // Spacing\n 'px-3 py-1',\n // Typography\n 'font-sans text-base font-normal leading-6 tracking-[0.05px]',\n 'text-popover-foreground',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-colors duration-200',\n // Hover\n 'hover:bg-accent hover:text-accent-foreground',\n ),\n {\n variants: {\n selected: {\n true: 'bg-accent text-accent-foreground',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n },\n },\n);\n\n/**\n * Select error message variants\n *\n * Controls the error message text\n */\nexport const selectErrorVariants = cva(\n clsx(\n // Spacing\n 'mt-1.5',\n // Typography\n 'font-sans text-xs font-normal leading-snug',\n 'text-destructive',\n ),\n);\n","import {\n Component,\n computed,\n effect,\n HostListener,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n selectDropdownVariants,\n selectErrorVariants,\n selectIconVariants,\n selectOptionVariants,\n selectTriggerVariants,\n selectValueVariants,\n selectWrapperVariants,\n} from './select.variants';\n\nexport type SelectSize = 'sm' | 'md' | 'lg';\nexport type SelectState = 'default' | 'focus' | 'disabled' | 'error';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport type SelectTriggerVariantsProps = VariantProps<\n typeof selectTriggerVariants\n>;\n\n/**\n * Select Component - Custom dropdown select\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-select\n * [options]=\"options\"\n * [placeholder]=\"'Select an option'\"\n * (selectionChange)=\"onSelect($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-select',\n standalone: true,\n template: `\n <div [class]=\"wrapperClasses()\">\n <!-- Select trigger -->\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n [disabled]=\"state() === 'disabled'\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-disabled]=\"state() === 'disabled'\"\n (click)=\"toggleDropdown()\"\n >\n <span [class]=\"valueClasses()\">{{ selectedLabel() }}</span>\n <svg\n [class]=\"iconClasses()\"\n width=\"14\"\n height=\"8\"\n viewBox=\"0 0 14 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12.2929 0.292893C12.6834 -0.0976311 13.3164 -0.0976311 13.707 0.292893C14.0975 0.683417 14.0975 1.31643 13.707 1.70696L7.70696 7.70696C7.31643 8.09748 6.68342 8.09748 6.29289 7.70696L0.292893 1.70696C-0.0976311 1.31643 -0.0976311 0.683417 0.292893 0.292893C0.683418 -0.0976311 1.31643 -0.0976311 1.70696 0.292893L6.99992 5.58586L12.2929 0.292893Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n\n <!-- Dropdown menu -->\n @if (isOpen()) {\n <div [class]=\"dropdownClasses()\" role=\"listbox\">\n @for (option of options(); track option.value) {\n <div\n [class]=\"getOptionClasses(option.value)\"\n role=\"option\"\n [attr.aria-selected]=\"currentSelectedValue() === option.value\"\n (click)=\"selectOption(option)\"\n >\n {{ option.label }}\n </div>\n }\n </div>\n }\n\n <!-- Error message -->\n @if (state() === 'error' && errorMessage()) {\n <div [class]=\"errorClasses()\">\n {{ errorMessage() }}\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class SelectComponent {\n /** Size of the select */\n readonly size = input<SelectSize>('md');\n\n /** Current state */\n readonly state = input<SelectState>('default');\n\n /** List of options */\n readonly options = input<SelectOption[]>([]);\n\n /** Currently selected value */\n readonly selectedValue = input<string>('');\n\n /** Placeholder text */\n readonly placeholder = input<string>('Selecciona');\n\n /** Error message (shown when state is 'error') */\n readonly errorMessage = input<string>('');\n\n /** Additional CSS classes for wrapper */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<SelectOption>();\n\n /** Open state change event */\n readonly openChange = output<boolean>();\n\n // Internal state for dropdown open/close\n private readonly _isOpen = signal<boolean>(false);\n\n // Internal state for selected value\n private readonly _internalSelectedValue = signal<string>('');\n\n // Sync external input with internal state\n constructor() {\n effect(() => {\n this._internalSelectedValue.set(this.selectedValue());\n });\n }\n\n // Expose isOpen as readonly\n readonly isOpen = this._isOpen.asReadonly();\n\n // Expose current selected value\n readonly currentSelectedValue = computed(() => this._internalSelectedValue());\n\n // Computed wrapper classes\n readonly wrapperClasses = computed(() =>\n clsx(\n selectWrapperVariants({\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n // Computed trigger classes\n readonly triggerClasses = computed(() =>\n clsx(\n selectTriggerVariants({\n size: this.size(),\n state: this.state(),\n open: this.isOpen(),\n }),\n ),\n );\n\n // Computed value classes\n readonly valueClasses = computed(() => clsx(selectValueVariants()));\n\n // Computed icon classes\n readonly iconClasses = computed(() =>\n clsx(\n selectIconVariants({\n open: this.isOpen(),\n state: this.state(),\n }),\n ),\n );\n\n // Computed dropdown classes\n readonly dropdownClasses = computed(() =>\n clsx(\n selectDropdownVariants({\n size: this.size(),\n }),\n ),\n );\n\n // Computed error classes\n readonly errorClasses = computed(() => clsx(selectErrorVariants()));\n\n // Get selected option label\n readonly selectedLabel = computed(() => {\n const value = this.currentSelectedValue();\n if (!value) {\n return this.placeholder();\n }\n\n const selected = this.options().find((opt) => opt.value === value);\n return selected ? selected.label : this.placeholder();\n });\n\n // Get option classes based on selection state\n getOptionClasses(value: string): string {\n return clsx(\n selectOptionVariants({\n selected: this.currentSelectedValue() === value,\n }),\n );\n }\n\n // Toggle dropdown open/close\n toggleDropdown(): void {\n if (this.state() === 'disabled') {\n return;\n }\n\n const newState = !this._isOpen();\n this._isOpen.set(newState);\n this.openChange.emit(newState);\n }\n\n // Select an option\n selectOption(option: SelectOption): void {\n if (this.state() === 'disabled') {\n return;\n }\n\n this._internalSelectedValue.set(option.value);\n this._isOpen.set(false);\n this.valueChange.emit(option.value);\n this.selectionChange.emit(option);\n this.openChange.emit(false);\n }\n\n // Close dropdown when clicking outside\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const hostElement = target.closest('bsg-select');\n\n if (!hostElement && this._isOpen()) {\n this._isOpen.set(false);\n this.openChange.emit(false);\n }\n }\n}\n","import { computed, Injectable, signal } from '@angular/core';\n\nexport type SidebarState = 'expanded' | 'collapsed';\nexport type SidebarSide = 'left' | 'right';\nexport type SidebarVariant = 'sidebar' | 'floating' | 'inset';\nexport type SidebarCollapsible = 'offcanvas' | 'icon' | 'none';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar:state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; // 7 days\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\n/**\n * Sidebar Service - Manages sidebar state following shadcn pattern\n *\n * This service provides reactive state management for the sidebar component,\n * similar to React's useSidebar hook in shadcn/ui.\n */\n@Injectable()\nexport class SidebarService {\n // Core state signals\n private readonly _state = signal<SidebarState>('expanded');\n private readonly _open = signal<boolean>(true);\n private readonly _openMobile = signal<boolean>(false);\n private readonly _isMobile = signal<boolean>(false);\n\n // Configuration\n readonly side = signal<SidebarSide>('left');\n readonly variant = signal<SidebarVariant>('sidebar');\n readonly collapsible = signal<SidebarCollapsible>('icon');\n\n // Constants exposed\n readonly SIDEBAR_WIDTH = SIDEBAR_WIDTH;\n readonly SIDEBAR_WIDTH_MOBILE = SIDEBAR_WIDTH_MOBILE;\n readonly SIDEBAR_WIDTH_ICON = SIDEBAR_WIDTH_ICON;\n readonly SIDEBAR_KEYBOARD_SHORTCUT = SIDEBAR_KEYBOARD_SHORTCUT;\n\n // Computed values\n readonly state = computed(() => this._state());\n readonly open = computed(() => this._open());\n readonly openMobile = computed(() => this._openMobile());\n readonly isMobile = computed(() => this._isMobile());\n\n /**\n * Set sidebar open state\n */\n setOpen(open: boolean): void {\n this._open.set(open);\n this._state.set(open ? 'expanded' : 'collapsed');\n\n // Persist state to cookie\n this.persistState(open);\n }\n\n /**\n * Set mobile sidebar open state\n */\n setOpenMobile(open: boolean): void {\n this._openMobile.set(open);\n }\n\n /**\n * Toggle sidebar state\n */\n toggle(): void {\n if (this._isMobile()) {\n this._openMobile.update((v) => !v);\n } else {\n this._open.update((v) => {\n const newValue = !v;\n this._state.set(newValue ? 'expanded' : 'collapsed');\n this.persistState(newValue);\n return newValue;\n });\n }\n }\n\n /**\n * Set mobile detection\n */\n setIsMobile(isMobile: boolean): void {\n this._isMobile.set(isMobile);\n }\n\n /**\n * Configure sidebar\n */\n configure(config: {\n side?: SidebarSide;\n variant?: SidebarVariant;\n collapsible?: SidebarCollapsible;\n defaultOpen?: boolean;\n }): void {\n if (config.side) this.side.set(config.side);\n if (config.variant) this.variant.set(config.variant);\n if (config.collapsible) this.collapsible.set(config.collapsible);\n if (config.defaultOpen !== undefined) {\n this._open.set(config.defaultOpen);\n this._state.set(config.defaultOpen ? 'expanded' : 'collapsed');\n }\n }\n\n /**\n * Initialize from stored state (cookie)\n */\n initializeFromStorage(): void {\n const storedState = this.getStoredState();\n if (storedState !== null) {\n this._open.set(storedState);\n this._state.set(storedState ? 'expanded' : 'collapsed');\n }\n }\n\n /**\n * Persist state to cookie\n */\n private persistState(open: boolean): void {\n if (typeof document !== 'undefined') {\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${open}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n }\n }\n\n /**\n * Get stored state from cookie\n */\n private getStoredState(): boolean | null {\n if (typeof document === 'undefined') return null;\n\n const cookies = document.cookie.split(';');\n for (const cookie of cookies) {\n const [name, value] = cookie.trim().split('=');\n if (name === SIDEBAR_COOKIE_NAME) {\n return value === 'true';\n }\n }\n return null;\n }\n}\n","import { cva } from 'class-variance-authority';\n\n/**\n * Sidebar CSS Variables (following shadcn pattern)\n * These should be defined in your global CSS:\n *\n * :root {\n * --sidebar-width: 16rem;\n * --sidebar-width-icon: 3rem;\n * --sidebar: oklch(0.985 0 0);\n * --sidebar-foreground: oklch(0.145 0 0);\n * --sidebar-primary: oklch(0.205 0 0);\n * --sidebar-primary-foreground: oklch(0.985 0 0);\n * --sidebar-accent: oklch(0.97 0 0);\n * --sidebar-accent-foreground: oklch(0.205 0 0);\n * --sidebar-border: oklch(0.922 0 0);\n * --sidebar-ring: oklch(0.708 0 0);\n * }\n */\n\n/**\n * Sidebar Provider wrapper variants\n */\nexport const sidebarProviderVariants = cva(\n [\n 'group/sidebar-wrapper',\n 'flex',\n 'min-h-svh',\n 'w-full',\n 'has-[[data-variant=inset]]:bg-sidebar',\n ].join(' '),\n);\n\n/**\n * Sidebar container variants (following shadcn pattern)\n */\nexport const sidebarVariants = cva(\n [\n 'flex',\n 'h-full',\n 'w-[--sidebar-width]',\n 'flex-col',\n 'bg-sidebar',\n 'text-sidebar-foreground',\n ].join(' '),\n {\n variants: {\n collapsible: {\n none: '',\n offcanvas: [\n 'fixed',\n 'inset-y-0',\n 'z-10',\n 'hidden',\n 'flex-col',\n '-translate-x-full',\n 'border-r',\n 'transition-transform',\n 'duration-200',\n 'ease-linear',\n 'md:flex',\n 'md:translate-x-0',\n 'group-data-[state=expanded]/sidebar-wrapper:translate-x-0',\n ].join(' '),\n icon: [\n 'transition-[width]',\n 'duration-200',\n 'ease-linear',\n 'group-data-[state=collapsed]/sidebar-wrapper:w-[--sidebar-width-icon]',\n ].join(' '),\n },\n side: {\n left: 'left-0',\n right: 'right-0',\n },\n variant: {\n sidebar: 'border-r border-sidebar-border',\n floating: 'm-2 rounded-lg border border-sidebar-border shadow',\n inset: 'border-r border-sidebar-border',\n },\n },\n defaultVariants: {\n collapsible: 'icon',\n side: 'left',\n variant: 'sidebar',\n },\n },\n);\n\n/**\n * Sidebar wrapper (outermost container) - Fixed positioning wrapper\n */\nexport const sidebarWrapperVariants = cva(\n [\n 'group',\n 'peer',\n 'text-sidebar-foreground',\n // CSS Variables\n '[--sidebar-width:16rem]',\n '[--sidebar-width-icon:3rem]',\n ].join(' '),\n {\n variants: {\n side: {\n left: '',\n right: '',\n },\n },\n defaultVariants: {\n side: 'left',\n },\n },\n);\n\n/**\n * Sidebar header variants\n */\nexport const sidebarHeaderVariants = cva(\n ['flex', 'flex-col', 'gap-2', 'p-2'].join(' '),\n);\n\n/**\n * Sidebar content variants\n */\nexport const sidebarContentVariants = cva(\n [\n 'flex',\n 'min-h-0',\n 'flex-1',\n 'flex-col',\n 'gap-2',\n 'overflow-auto',\n 'group-data-[collapsible=icon]:overflow-hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar footer variants\n */\nexport const sidebarFooterVariants = cva(\n ['flex', 'flex-col', 'gap-2', 'p-2'].join(' '),\n);\n\n/**\n * Sidebar group variants\n */\nexport const sidebarGroupVariants = cva(\n ['relative', 'flex', 'w-full', 'min-w-0', 'flex-col', 'p-2'].join(' '),\n);\n\n/**\n * Sidebar group label variants\n */\nexport const sidebarGroupLabelVariants = cva(\n [\n 'flex',\n 'h-8',\n 'shrink-0',\n 'items-center',\n 'rounded-md',\n 'px-2',\n 'text-xs',\n 'font-medium',\n 'text-sidebar-foreground/70',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-[margin,opacity]',\n 'duration-200',\n 'ease-linear',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // When collapsed (icon mode)\n 'group-data-[collapsible=icon]:-mt-8',\n 'group-data-[collapsible=icon]:opacity-0',\n ].join(' '),\n);\n\n/**\n * Sidebar group action variants\n */\nexport const sidebarGroupActionVariants = cva(\n [\n 'absolute',\n 'right-3',\n 'top-3.5',\n 'flex',\n 'aspect-square',\n 'w-5',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'text-sidebar-foreground',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-transform',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // After group label adjustment\n 'after:absolute',\n 'after:-inset-2',\n 'after:md:hidden',\n // When collapsed\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar group content variants\n */\nexport const sidebarGroupContentVariants = cva(['w-full', 'text-sm'].join(' '));\n\n/**\n * Sidebar menu variants\n */\nexport const sidebarMenuVariants = cva(\n ['flex', 'w-full', 'min-w-0', 'flex-col', 'gap-1'].join(' '),\n);\n\n/**\n * Sidebar menu item variants\n */\nexport const sidebarMenuItemVariants = cva(\n ['group/menu-item', 'relative'].join(' '),\n);\n\n/**\n * Sidebar menu button variants (main CVA definition following shadcn)\n */\nexport const sidebarMenuButtonVariants = cva(\n [\n 'peer/menu-button',\n 'flex',\n 'w-full',\n 'items-center',\n 'gap-2',\n 'overflow-hidden',\n 'rounded-md',\n 'p-2',\n 'text-left',\n 'text-sm',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-[width,height,padding,background-color,color]',\n 'duration-150',\n // Cursor\n 'cursor-pointer',\n // Hover state\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n // Focus state\n 'focus-visible:ring-2',\n // Active state (pressed)\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n // Disabled state\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n // With menu action\n 'group-has-[[data-sidebar=menu-action]]/menu-item:pr-8',\n // aria-disabled\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n // data-active (selected state)\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-accent-foreground',\n // data-state open (for collapsible)\n 'data-[state=open]:hover:bg-sidebar-accent',\n 'data-[state=open]:hover:text-sidebar-accent-foreground',\n // Icon mode collapsed\n 'group-data-[collapsible=icon]:!size-8',\n 'group-data-[collapsible=icon]:!p-2',\n // Truncate last span\n '[&>span:last-child]:truncate',\n // SVG sizing\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n ].join(' '),\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline: [\n 'bg-background',\n 'shadow-[0_0_0_1px_hsl(var(--sidebar-border))]',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n ].join(' '),\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\n/**\n * Sidebar menu action variants\n */\nexport const sidebarMenuActionVariants = cva(\n [\n 'absolute',\n 'right-1',\n 'top-1.5',\n 'flex',\n 'aspect-square',\n 'w-5',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'p-0',\n 'text-sidebar-foreground',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-transform',\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n 'focus-visible:ring-2',\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n // After pseudo element for larger touch target\n 'after:absolute',\n 'after:-inset-2',\n 'after:md:hidden',\n // Hidden in icon mode\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n {\n variants: {\n showOnHover: {\n true: [\n 'group-focus-within/menu-item:opacity-100',\n 'group-hover/menu-item:opacity-100',\n 'data-[state=open]:opacity-100',\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'md:opacity-0',\n ].join(' '),\n false: '',\n },\n },\n defaultVariants: {\n showOnHover: false,\n },\n },\n);\n\n/**\n * Sidebar menu badge variants\n */\nexport const sidebarMenuBadgeVariants = cva(\n [\n 'pointer-events-none',\n 'absolute',\n 'right-1',\n 'top-1/2',\n '-translate-y-1/2',\n 'flex',\n 'h-5',\n 'min-w-5',\n 'select-none',\n 'items-center',\n 'justify-center',\n 'rounded-md',\n 'px-1',\n 'text-xs',\n 'font-medium',\n 'tabular-nums',\n 'text-sidebar-foreground',\n 'transition-colors',\n 'duration-150',\n // Peer adjustments (when button is hovered)\n 'peer-hover/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n // Hidden in icon mode\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar menu skeleton variants\n */\nexport const sidebarMenuSkeletonVariants = cva(\n ['flex', 'h-8', 'items-center', 'gap-2', 'rounded-md', 'px-2'].join(' '),\n {\n variants: {\n showIcon: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n showIcon: false,\n },\n },\n);\n\n/**\n * Sidebar menu sub (submenu container)\n */\nexport const sidebarMenuSubVariants = cva(\n [\n 'mx-3.5',\n 'flex',\n 'min-w-0',\n 'translate-x-px',\n 'flex-col',\n 'gap-1',\n 'border-l',\n 'border-sidebar-border',\n 'px-2.5',\n 'py-0.5',\n // Hidden in icon mode\n 'group-data-[collapsible=icon]:hidden',\n ].join(' '),\n);\n\n/**\n * Sidebar menu sub item variants\n */\nexport const sidebarMenuSubItemVariants = cva(\n ['group/menu-sub-item', 'relative'].join(' '),\n);\n\n/**\n * Sidebar menu sub button variants\n */\nexport const sidebarMenuSubButtonVariants = cva(\n [\n 'flex',\n 'h-7',\n 'w-full',\n 'min-w-0',\n 'items-center',\n 'gap-2',\n '-translate-x-px',\n 'overflow-hidden',\n 'rounded-md',\n 'px-2',\n 'text-sidebar-foreground',\n 'outline-none',\n 'ring-sidebar-ring',\n 'transition-[background-color,color]',\n 'duration-150',\n // Cursor\n 'cursor-pointer',\n // Hover\n 'hover:bg-sidebar-accent',\n 'hover:text-sidebar-accent-foreground',\n // Focus\n 'focus-visible:ring-2',\n // Active (pressed)\n 'active:bg-sidebar-accent',\n 'active:text-sidebar-accent-foreground',\n // Disabled\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n // aria-disabled\n 'aria-disabled:pointer-events-none',\n 'aria-disabled:opacity-50',\n // Truncate\n '[&>span:last-child]:truncate',\n // SVG\n '[&>svg]:size-4',\n '[&>svg]:shrink-0',\n '[&>svg]:text-sidebar-accent-foreground',\n // data-active (selected state)\n 'data-[active=true]:bg-sidebar-accent',\n 'data-[active=true]:font-medium',\n 'data-[active=true]:text-sidebar-accent-foreground',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * Sidebar separator variants\n */\nexport const sidebarSeparatorVariants = cva(\n ['mx-2', 'w-auto', 'bg-sidebar-border'].join(' '),\n);\n\n/**\n * Sidebar trigger button variants\n */\nexport const sidebarTriggerVariants = cva(['h-7', 'w-7'].join(' '));\n\n/**\n * Sidebar rail variants (hover area to expand)\n */\nexport const sidebarRailVariants = cva(\n [\n 'absolute',\n 'inset-y-0',\n 'z-20',\n 'hidden',\n 'w-4',\n '-translate-x-1/2',\n 'transition-all',\n 'ease-linear',\n 'after:absolute',\n 'after:inset-y-0',\n 'after:left-1/2',\n 'after:w-[2px]',\n 'hover:after:bg-sidebar-border',\n 'group-data-[side=left]:right-0',\n 'group-data-[side=right]:left-0',\n 'sm:flex',\n // Cursor changes when collapsible\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize',\n '[[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n '[[data-side=left][data-state=expanded]_&]:cursor-w-resize',\n '[[data-side=right][data-state=expanded]_&]:cursor-e-resize',\n // On hover expand collapsed\n '[[data-side=left]_&]:hover:after:left-full',\n '[[data-side=right]_&]:hover:after:right-full',\n 'group-data-[collapsible=offcanvas]:translate-x-0',\n 'group-data-[collapsible=offcanvas]:after:left-full',\n 'group-data-[collapsible=offcanvas]:hover:bg-sidebar',\n ].join(' '),\n);\n\n/**\n * Sidebar inset variants (main content area)\n */\nexport const sidebarInsetVariants = cva(\n [\n 'relative',\n 'flex',\n 'min-h-svh',\n 'flex-1',\n 'flex-col',\n 'bg-background',\n // When peer sidebar is inset variant\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))]',\n 'md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2',\n 'md:peer-data-[variant=inset]:m-2',\n 'md:peer-data-[variant=inset]:ml-0',\n 'md:peer-data-[variant=inset]:rounded-xl',\n 'md:peer-data-[variant=inset]:shadow',\n ].join(' '),\n);\n\n/**\n * Sidebar chevron icon variants\n */\nexport const sidebarChevronVariants = cva(\n ['ml-auto', 'transition-transform', 'duration-200'].join(' '),\n {\n variants: {\n open: {\n true: 'rotate-90',\n false: '',\n },\n },\n defaultVariants: {\n open: false,\n },\n },\n);\n\n// Re-export for backwards compatibility\nexport { sidebarMenuButtonVariants as sidebarMenuButtonTextVariants };\n","import {\n Component,\n input,\n output,\n computed,\n effect,\n OnInit,\n OnDestroy,\n PLATFORM_ID,\n inject,\n HostListener,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { clsx } from 'clsx';\nimport {\n SidebarService,\n SidebarState,\n SidebarSide,\n SidebarVariant,\n SidebarCollapsible,\n} from './sidebar.service';\nimport { sidebarProviderVariants } from './side-navbar.variants';\n\n/**\n * SidebarProvider Component - Following shadcn/ui pattern\n *\n * Wraps the sidebar and provides context for state management.\n * Must wrap both Sidebar and SidebarInset components.\n *\n * @example\n * ```html\n * <bsg-sidebar-provider [defaultOpen]=\"true\">\n * <bsg-sidebar>\n * <!-- sidebar content -->\n * </bsg-sidebar>\n * <bsg-sidebar-inset>\n * <!-- main content -->\n * </bsg-sidebar-inset>\n * </bsg-sidebar-provider>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-provider',\n standalone: true,\n providers: [SidebarService],\n template: `\n <div\n [style]=\"providerStyles()\"\n [class]=\"providerClasses()\"\n [attr.data-state]=\"sidebarService.state()\"\n [attr.data-collapsible]=\"\n sidebarService.state() === 'collapsed'\n ? sidebarService.collapsible()\n : ''\n \"\n >\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarProviderComponent implements OnInit, OnDestroy {\n protected readonly sidebarService = inject(SidebarService);\n private readonly platformId = inject(PLATFORM_ID);\n\n /** Default open state */\n readonly defaultOpen = input<boolean>(true);\n\n /** Open state (controlled mode) */\n readonly open = input<boolean | undefined>(undefined);\n\n /** Emits when open state changes */\n readonly openChange = output<boolean>();\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Custom styles */\n readonly style = input<Record<string, string>>();\n\n private mediaQueryList: MediaQueryList | null = null;\n\n // Computed classes\n readonly providerClasses = computed(() =>\n clsx(sidebarProviderVariants(), this.className()),\n );\n\n // Computed styles\n readonly providerStyles = computed(() => {\n const baseStyles = {\n '--sidebar-width': this.sidebarService.SIDEBAR_WIDTH,\n '--sidebar-width-icon': this.sidebarService.SIDEBAR_WIDTH_ICON,\n };\n return { ...baseStyles, ...this.style() };\n });\n\n constructor() {\n // Effect to sync controlled open state\n effect(() => {\n const controlledOpen = this.open();\n if (controlledOpen !== undefined) {\n this.sidebarService.setOpen(controlledOpen);\n }\n });\n\n // Effect to emit changes\n effect(() => {\n this.openChange.emit(this.sidebarService.open());\n });\n }\n\n ngOnInit(): void {\n // Initialize service\n this.sidebarService.configure({\n defaultOpen: this.defaultOpen(),\n });\n\n // Try to restore from storage\n this.sidebarService.initializeFromStorage();\n\n // Set up mobile detection\n if (isPlatformBrowser(this.platformId)) {\n this.setupMobileDetection();\n }\n }\n\n ngOnDestroy(): void {\n if (this.mediaQueryList) {\n this.mediaQueryList.removeEventListener('change', this.handleMediaChange);\n }\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if (\n event.key === this.sidebarService.SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n this.sidebarService.toggle();\n }\n }\n\n private setupMobileDetection(): void {\n this.mediaQueryList = window.matchMedia('(max-width: 768px)');\n this.sidebarService.setIsMobile(this.mediaQueryList.matches);\n this.mediaQueryList.addEventListener('change', this.handleMediaChange);\n }\n\n private handleMediaChange = (event: MediaQueryListEvent): void => {\n this.sidebarService.setIsMobile(event.matches);\n };\n}\n","import { Component, input, computed, inject } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport {\n SidebarService,\n SidebarSide,\n SidebarVariant,\n SidebarCollapsible,\n} from './sidebar.service';\nimport {\n sidebarVariants,\n sidebarWrapperVariants,\n} from './side-navbar.variants';\n\nexport type SidebarVariantsProps = VariantProps<typeof sidebarVariants>;\n\n/**\n * Sidebar Component - Following shadcn/ui pattern\n *\n * The main sidebar container component that handles the visual structure.\n * Must be used inside a SidebarProvider.\n *\n * @example\n * ```html\n * <bsg-sidebar-provider>\n * <bsg-sidebar side=\"left\" variant=\"sidebar\" collapsible=\"icon\">\n * <bsg-sidebar-header>\n * <!-- header content -->\n * </bsg-sidebar-header>\n * <bsg-sidebar-content>\n * <!-- main sidebar content -->\n * </bsg-sidebar-content>\n * <bsg-sidebar-footer>\n * <!-- footer content -->\n * </bsg-sidebar-footer>\n * </bsg-sidebar>\n * </bsg-sidebar-provider>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar',\n standalone: true,\n template: `\n <div\n [class]=\"wrapperClasses()\"\n [attr.data-state]=\"sidebarService.state()\"\n [attr.data-collapsible]=\"\n sidebarService.state() === 'collapsed' ? collapsible() : ''\n \"\n [attr.data-variant]=\"variant()\"\n [attr.data-side]=\"side()\"\n >\n <div [class]=\"sidebarClasses()\" data-sidebar=\"sidebar\">\n <ng-content />\n </div>\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarComponent {\n protected readonly sidebarService = inject(SidebarService);\n\n /** Which side the sidebar is on */\n readonly side = input<SidebarSide>('left');\n\n /** Visual variant */\n readonly variant = input<SidebarVariant>('sidebar');\n\n /** Collapsible behavior */\n readonly collapsible = input<SidebarCollapsible>('icon');\n\n /** Additional CSS classes for wrapper */\n readonly className = input<string>();\n\n /** Additional CSS classes for inner sidebar */\n readonly sidebarClassName = input<string>();\n\n // Computed classes for wrapper\n readonly wrapperClasses = computed(() =>\n clsx(\n sidebarWrapperVariants({\n side: this.side(),\n }),\n this.className(),\n ),\n );\n\n // Computed classes for sidebar\n readonly sidebarClasses = computed(() =>\n clsx(\n sidebarVariants({\n collapsible: this.collapsible(),\n side: this.side(),\n variant: this.variant(),\n }),\n this.sidebarClassName(),\n ),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarHeaderVariants } from './side-navbar.variants';\n\n/**\n * SidebarHeader Component - Following shadcn/ui pattern\n *\n * Container for header content in the sidebar (logo, branding, etc.)\n *\n * @example\n * ```html\n * <bsg-sidebar-header>\n * <div class=\"flex items-center gap-2\">\n * <img src=\"logo.svg\" alt=\"Logo\" />\n * <span>My App</span>\n * </div>\n * </bsg-sidebar-header>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-header',\n standalone: true,\n template: `\n <div [class]=\"headerClasses()\" data-sidebar=\"header\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarHeaderComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly headerClasses = computed(() =>\n clsx(sidebarHeaderVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarContentVariants } from './side-navbar.variants';\n\n/**\n * SidebarContent Component - Following shadcn/ui pattern\n *\n * Scrollable container for the main sidebar content.\n *\n * @example\n * ```html\n * <bsg-sidebar-content>\n * <bsg-sidebar-group>\n * <!-- group content -->\n * </bsg-sidebar-group>\n * </bsg-sidebar-content>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-content',\n standalone: true,\n template: `\n <div [class]=\"contentClasses()\" data-sidebar=\"content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarContentComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly contentClasses = computed(() =>\n clsx(sidebarContentVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarFooterVariants } from './side-navbar.variants';\n\n/**\n * SidebarFooter Component - Following shadcn/ui pattern\n *\n * Container for footer content in the sidebar (user info, settings, etc.)\n *\n * @example\n * ```html\n * <bsg-sidebar-footer>\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>\n * <span>Settings</span>\n * </bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * </bsg-sidebar-footer>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-footer',\n standalone: true,\n template: `\n <div [class]=\"footerClasses()\" data-sidebar=\"footer\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarFooterComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly footerClasses = computed(() =>\n clsx(sidebarFooterVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroup Component - Following shadcn/ui pattern\n *\n * Groups related menu items together with an optional label.\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-content>\n * <bsg-sidebar-menu>\n * <!-- menu items -->\n * </bsg-sidebar-menu>\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group',\n standalone: true,\n template: `\n <div [class]=\"groupClasses()\" data-sidebar=\"group\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly groupClasses = computed(() =>\n clsx(sidebarGroupVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupLabelVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroupLabel Component - Following shadcn/ui pattern\n *\n * Label for a sidebar group. Automatically hides when sidebar is collapsed.\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-content>\n * <!-- content -->\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group-label',\n standalone: true,\n template: `\n <div [class]=\"labelClasses()\" data-sidebar=\"group-label\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupLabelComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly labelClasses = computed(() =>\n clsx(sidebarGroupLabelVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupContentVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroupContent Component - Following shadcn/ui pattern\n *\n * Container for the content within a sidebar group.\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-content>\n * <bsg-sidebar-menu>\n * <!-- menu items -->\n * </bsg-sidebar-menu>\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group-content',\n standalone: true,\n template: `\n <div [class]=\"contentClasses()\" data-sidebar=\"group-content\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupContentComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly contentClasses = computed(() =>\n clsx(sidebarGroupContentVariants(), this.className()),\n );\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarGroupActionVariants } from './side-navbar.variants';\n\n/**\n * SidebarGroupAction Component - Following shadcn/ui pattern\n *\n * Action button positioned in the group header (e.g., \"Add\" button).\n *\n * @example\n * ```html\n * <bsg-sidebar-group>\n * <bsg-sidebar-group-label>Projects</bsg-sidebar-group-label>\n * <bsg-sidebar-group-action title=\"Add Project\" (actionClick)=\"addProject()\">\n * <svg><!-- plus icon --></svg>\n * </bsg-sidebar-group-action>\n * <bsg-sidebar-group-content>\n * <!-- content -->\n * </bsg-sidebar-group-content>\n * </bsg-sidebar-group>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-group-action',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"actionClasses()\"\n [title]=\"title()\"\n data-sidebar=\"group-action\"\n (click)=\"actionClick.emit($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarGroupActionComponent {\n /** Title/tooltip for the action button */\n readonly title = input<string>('');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when action is clicked */\n readonly actionClick = output<MouseEvent>();\n\n readonly actionClasses = computed(() =>\n clsx(sidebarGroupActionVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenu Component - Following shadcn/ui pattern\n *\n * Container for menu items. Renders as a ul element.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Home</bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Settings</bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu',\n standalone: true,\n template: `\n <ul [class]=\"menuClasses()\" data-sidebar=\"menu\">\n <ng-content />\n </ul>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly menuClasses = computed(() =>\n clsx(sidebarMenuVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuItemVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuItem Component - Following shadcn/ui pattern\n *\n * Container for a single menu item. Renders as an li element.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>\n * <svg><!-- icon --></svg>\n * <span>Home</span>\n * </bsg-sidebar-menu-button>\n * </bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-item',\n standalone: true,\n template: `\n <li [class]=\"itemClasses()\" data-sidebar=\"menu-item\">\n <ng-content />\n </li>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuItemComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly itemClasses = computed(() =>\n clsx(sidebarMenuItemVariants(), this.className()),\n );\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport { sidebarMenuButtonVariants } from './side-navbar.variants';\n\nexport type SidebarMenuButtonVariantsProps = VariantProps<\n typeof sidebarMenuButtonVariants\n>;\n\n/**\n * SidebarMenuButton Component - Following shadcn/ui pattern\n *\n * Interactive button for menu items. Supports variants for size and style.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-button\n * [isActive]=\"true\"\n * variant=\"default\"\n * size=\"default\"\n * (buttonClick)=\"navigate()\"\n * >\n * <svg><!-- icon --></svg>\n * <span>Home</span>\n * </bsg-sidebar-menu-button>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [attr.data-sidebar]=\"'menu-button'\"\n [attr.data-size]=\"size()\"\n [attr.data-active]=\"isActive()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuButtonComponent {\n /** Whether the button is active */\n readonly isActive = input<boolean>(false);\n\n /** Visual variant */\n readonly variant = input<'default' | 'outline'>('default');\n\n /** Size variant */\n readonly size = input<'default' | 'sm' | 'lg'>('default');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Tooltip text (for collapsed state) */\n readonly tooltip = input<string>();\n\n /** Emits when button is clicked */\n readonly buttonClick = output<MouseEvent>();\n\n readonly buttonClasses = computed(() =>\n clsx(\n sidebarMenuButtonVariants({\n variant: this.variant(),\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.buttonClick.emit(event);\n }\n }\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport { sidebarMenuActionVariants } from './side-navbar.variants';\n\nexport type SidebarMenuActionVariantsProps = VariantProps<\n typeof sidebarMenuActionVariants\n>;\n\n/**\n * SidebarMenuAction Component - Following shadcn/ui pattern\n *\n * Action button that appears alongside menu items (e.g., more options).\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Project</bsg-sidebar-menu-button>\n * <bsg-sidebar-menu-action [showOnHover]=\"true\" (actionClick)=\"openMenu()\">\n * <svg><!-- more icon --></svg>\n * </bsg-sidebar-menu-action>\n * </bsg-sidebar-menu-item>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-action',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"actionClasses()\"\n data-sidebar=\"menu-action\"\n (click)=\"actionClick.emit($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuActionComponent {\n /** Show only on hover */\n readonly showOnHover = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when action is clicked */\n readonly actionClick = output<MouseEvent>();\n\n readonly actionClasses = computed(() =>\n clsx(\n sidebarMenuActionVariants({\n showOnHover: this.showOnHover(),\n }),\n this.className(),\n ),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuBadgeVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuBadge Component - Following shadcn/ui pattern\n *\n * Badge that appears alongside menu items (e.g., notification count).\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>\n * <svg><!-- icon --></svg>\n * <span>Inbox</span>\n * </bsg-sidebar-menu-button>\n * <bsg-sidebar-menu-badge>5</bsg-sidebar-menu-badge>\n * </bsg-sidebar-menu-item>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-badge',\n standalone: true,\n template: `\n <div [class]=\"badgeClasses()\" data-sidebar=\"menu-badge\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuBadgeComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly badgeClasses = computed(() =>\n clsx(sidebarMenuBadgeVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuSubVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuSub Component - Following shadcn/ui pattern\n *\n * Container for submenu items. Used for nested navigation.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-item>\n * <bsg-sidebar-menu-button>Parent</bsg-sidebar-menu-button>\n * <bsg-sidebar-menu-sub>\n * <bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-button>Child 1</bsg-sidebar-menu-sub-button>\n * </bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-button>Child 2</bsg-sidebar-menu-sub-button>\n * </bsg-sidebar-menu-sub-item>\n * </bsg-sidebar-menu-sub>\n * </bsg-sidebar-menu-item>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-sub',\n standalone: true,\n template: `\n <ul [class]=\"subMenuClasses()\" data-sidebar=\"menu-sub\">\n <ng-content />\n </ul>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuSubComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly subMenuClasses = computed(() =>\n clsx(sidebarMenuSubVariants(), this.className()),\n );\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarMenuSubItemVariants } from './side-navbar.variants';\n\n/**\n * SidebarMenuSubItem Component - Following shadcn/ui pattern\n *\n * Container for a single submenu item. Renders as an li element.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-sub>\n * <bsg-sidebar-menu-sub-item>\n * <bsg-sidebar-menu-sub-button>\n * <span>Child Item</span>\n * </bsg-sidebar-menu-sub-button>\n * </bsg-sidebar-menu-sub-item>\n * </bsg-sidebar-menu-sub>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-sub-item',\n standalone: true,\n template: `\n <li [class]=\"itemClasses()\" data-sidebar=\"menu-sub-item\">\n <ng-content />\n </li>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuSubItemComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly itemClasses = computed(() =>\n clsx(sidebarMenuSubItemVariants(), this.className()),\n );\n}\n","import { Component, input, output, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { type VariantProps } from 'class-variance-authority';\nimport { sidebarMenuSubButtonVariants } from './side-navbar.variants';\n\nexport type SidebarMenuSubButtonVariantsProps = VariantProps<\n typeof sidebarMenuSubButtonVariants\n>;\n\n/**\n * SidebarMenuSubButton Component - Following shadcn/ui pattern\n *\n * Interactive button for submenu items.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu-sub-button\n * [isActive]=\"true\"\n * size=\"md\"\n * (buttonClick)=\"navigate()\"\n * >\n * <span>Child Item</span>\n * </bsg-sidebar-menu-sub-button>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-menu-sub-button',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n data-sidebar=\"menu-sub-button\"\n [attr.data-active]=\"isActive()\"\n [disabled]=\"disabled()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\"\n >\n <ng-content />\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarMenuSubButtonComponent {\n /** Whether the button is active */\n readonly isActive = input<boolean>(false);\n\n /** Size variant */\n readonly size = input<'sm' | 'md'>('md');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Emits when button is clicked */\n readonly buttonClick = output<MouseEvent>();\n\n readonly buttonClasses = computed(() =>\n clsx(\n sidebarMenuSubButtonVariants({\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.buttonClick.emit(event);\n }\n }\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarSeparatorVariants } from './side-navbar.variants';\n\n/**\n * SidebarSeparator Component - Following shadcn/ui pattern\n *\n * Visual separator between menu items or groups.\n *\n * @example\n * ```html\n * <bsg-sidebar-menu>\n * <bsg-sidebar-menu-item>...</bsg-sidebar-menu-item>\n * <bsg-sidebar-separator />\n * <bsg-sidebar-menu-item>...</bsg-sidebar-menu-item>\n * </bsg-sidebar-menu>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-separator',\n standalone: true,\n template: ` <hr [class]=\"separatorClasses()\" data-sidebar=\"separator\" /> `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarSeparatorComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly separatorClasses = computed(() =>\n clsx(sidebarSeparatorVariants(), this.className()),\n );\n}\n","import { Component, input, computed, inject } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { SidebarService } from './sidebar.service';\nimport { sidebarTriggerVariants } from './side-navbar.variants';\n\n/**\n * SidebarTrigger Component - Following shadcn/ui pattern\n *\n * Button to toggle the sidebar open/closed state.\n *\n * @example\n * ```html\n * <header>\n * <bsg-sidebar-trigger />\n * <h1>My App</h1>\n * </header>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-trigger',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"triggerClasses()\"\n data-sidebar=\"trigger\"\n (click)=\"toggle()\"\n [attr.aria-label]=\"\n sidebarService.open() ? 'Close sidebar' : 'Open sidebar'\n \"\n [attr.aria-expanded]=\"sidebarService.open()\"\n >\n @if (hasContent) {\n <ng-content />\n } @else {\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"size-4\"\n >\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n </svg>\n }\n <span class=\"sr-only\">Toggle Sidebar</span>\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n `,\n})\nexport class SidebarTriggerComponent {\n protected readonly sidebarService = inject(SidebarService);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Whether the trigger has projected content */\n hasContent = false;\n\n readonly triggerClasses = computed(() =>\n clsx(\n sidebarTriggerVariants(),\n 'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium',\n 'ring-offset-background transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'hover:bg-accent hover:text-accent-foreground',\n this.className(),\n ),\n );\n\n toggle(): void {\n this.sidebarService.toggle();\n }\n}\n","import { Component, input, computed, inject } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { SidebarService } from './sidebar.service';\nimport { sidebarRailVariants } from './side-navbar.variants';\n\n/**\n * SidebarRail Component - Following shadcn/ui pattern\n *\n * Hover/click area on the edge of the sidebar to toggle collapse.\n *\n * @example\n * ```html\n * <bsg-sidebar>\n * <bsg-sidebar-content>...</bsg-sidebar-content>\n * <bsg-sidebar-rail />\n * </bsg-sidebar>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-rail',\n standalone: true,\n template: `\n <button\n type=\"button\"\n [class]=\"railClasses()\"\n data-sidebar=\"rail\"\n [attr.aria-label]=\"'Toggle Sidebar'\"\n [attr.tabindex]=\"-1\"\n (click)=\"toggle()\"\n ></button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarRailComponent {\n protected readonly sidebarService = inject(SidebarService);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly railClasses = computed(() =>\n clsx(sidebarRailVariants(), this.className()),\n );\n\n toggle(): void {\n this.sidebarService.toggle();\n }\n}\n","import { Component, input, computed } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { sidebarInsetVariants } from './side-navbar.variants';\n\n/**\n * SidebarInset Component - Following shadcn/ui pattern\n *\n * Main content area that sits alongside the sidebar.\n * Adjusts its margins based on sidebar state.\n *\n * @example\n * ```html\n * <bsg-sidebar-provider>\n * <bsg-sidebar>...</bsg-sidebar>\n * <bsg-sidebar-inset>\n * <header>\n * <bsg-sidebar-trigger />\n * </header>\n * <main>\n * <!-- page content -->\n * </main>\n * </bsg-sidebar-inset>\n * </bsg-sidebar-provider>\n * ```\n */\n@Component({\n selector: 'bsg-sidebar-inset',\n standalone: true,\n template: `\n <main [class]=\"insetClasses()\">\n <ng-content />\n </main>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class SidebarInsetComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly insetClasses = computed(() =>\n clsx(sidebarInsetVariants(), this.className()),\n );\n}\n","// Service exports\nexport {\n SidebarService,\n type SidebarState,\n type SidebarSide,\n type SidebarVariant,\n type SidebarCollapsible,\n} from './sidebar.service';\n\n// Component exports - Following shadcn/ui modular pattern\nexport { SidebarProviderComponent } from './sidebar-provider.component';\nexport { SidebarComponent } from './sidebar.component';\nexport { SidebarHeaderComponent } from './sidebar-header.component';\nexport { SidebarContentComponent } from './sidebar-content.component';\nexport { SidebarFooterComponent } from './sidebar-footer.component';\nexport { SidebarGroupComponent } from './sidebar-group.component';\nexport { SidebarGroupLabelComponent } from './sidebar-group-label.component';\nexport { SidebarGroupContentComponent } from './sidebar-group-content.component';\nexport { SidebarGroupActionComponent } from './sidebar-group-action.component';\nexport { SidebarMenuComponent } from './sidebar-menu.component';\nexport { SidebarMenuItemComponent } from './sidebar-menu-item.component';\nexport {\n SidebarMenuButtonComponent,\n type SidebarMenuButtonVariantsProps,\n} from './sidebar-menu-button.component';\nexport {\n SidebarMenuActionComponent,\n type SidebarMenuActionVariantsProps,\n} from './sidebar-menu-action.component';\nexport { SidebarMenuBadgeComponent } from './sidebar-menu-badge.component';\nexport { SidebarMenuSubComponent } from './sidebar-menu-sub.component';\nexport { SidebarMenuSubItemComponent } from './sidebar-menu-sub-item.component';\nexport {\n SidebarMenuSubButtonComponent,\n type SidebarMenuSubButtonVariantsProps,\n} from './sidebar-menu-sub-button.component';\nexport { SidebarSeparatorComponent } from './sidebar-separator.component';\nexport { SidebarTriggerComponent } from './sidebar-trigger.component';\nexport { SidebarRailComponent } from './sidebar-rail.component';\nexport { SidebarInsetComponent } from './sidebar-inset.component';\n\n// Variant exports (following shadcn pattern)\nexport {\n sidebarProviderVariants,\n sidebarVariants,\n sidebarWrapperVariants,\n sidebarHeaderVariants,\n sidebarContentVariants,\n sidebarFooterVariants,\n sidebarGroupVariants,\n sidebarGroupLabelVariants,\n sidebarGroupActionVariants,\n sidebarGroupContentVariants,\n sidebarMenuVariants,\n sidebarMenuItemVariants,\n sidebarMenuButtonVariants,\n sidebarMenuActionVariants,\n sidebarMenuBadgeVariants,\n sidebarMenuSkeletonVariants,\n sidebarMenuSubVariants,\n sidebarMenuSubItemVariants,\n sidebarMenuSubButtonVariants,\n sidebarSeparatorVariants,\n sidebarTriggerVariants,\n sidebarRailVariants,\n sidebarInsetVariants,\n sidebarChevronVariants,\n} from './side-navbar.variants';\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Skeleton variants\n */\nexport const skeletonVariants = cva(\n clsx(\n // Base (semantic token for skeleton background)\n 'block bg-muted border-none shrink-0',\n // Animation\n 'animate-pulse',\n // Non-interactive\n 'pointer-events-none select-none',\n ),\n {\n variants: {\n type: {\n text: 'rounded w-full h-3.5',\n circular: 'rounded-full w-10 h-10 aspect-square shrink-0',\n rectangular: 'rounded-lg w-full h-[100px]',\n },\n },\n defaultVariants: {\n type: 'rectangular',\n },\n },\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { skeletonVariants } from './skeleton.variants';\n\nexport type SkeletonType = 'text' | 'circular' | 'rectangular';\nexport type SkeletonVariantsProps = VariantProps<typeof skeletonVariants>;\n\n@Component({\n selector: 'bsg-skeleton',\n standalone: true,\n template: `\n <div\n [class]=\"skeletonClasses()\"\n [style.width]=\"computedWidth()\"\n [style.height]=\"computedHeight()\"\n role=\"presentation\"\n aria-busy=\"true\"\n aria-label=\"Loading placeholder\"\n ></div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class SkeletonComponent {\n /** Skeleton type */\n readonly type = input<SkeletonType>('rectangular');\n\n /** Width (auto, px, %, rem, etc.) */\n readonly width = input<string | number>('auto');\n\n /** Height (auto, px, %, rem, etc.) */\n readonly height = input<string | number>('auto');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed skeleton classes */\n readonly skeletonClasses = computed(() =>\n clsx(skeletonVariants({ type: this.type() }), this.className()),\n );\n\n /** Computed width */\n readonly computedWidth = computed(() => {\n const w = this.width();\n if (w === 'auto') return undefined;\n if (typeof w === 'number') return `${w}px`;\n return w;\n });\n\n /** Computed height */\n readonly computedHeight = computed(() => {\n const h = this.height();\n if (h === 'auto') return undefined;\n if (typeof h === 'number') return `${h}px`;\n return h;\n });\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Spinner variants\n *\n * Controls the spinner appearance including size and color variants.\n * Based on shadcn/ui spinner pattern.\n */\nexport const spinnerVariants = cva(\n clsx(\n // Base animation\n 'animate-spin',\n // Accessibility\n 'shrink-0',\n ),\n {\n variants: {\n /**\n * Size variants\n * Following shadcn/ui pattern: size-3, size-4 (default), size-6, size-8\n */\n size: {\n xs: 'size-3',\n sm: 'size-4',\n md: 'size-6',\n lg: 'size-8',\n xl: 'size-10',\n },\n /**\n * Color variants using design tokens\n */\n variant: {\n default: 'text-foreground',\n primary: 'text-primary',\n secondary: 'text-secondary-foreground',\n muted: 'text-muted-foreground',\n destructive: 'text-destructive',\n success: 'text-success',\n warning: 'text-warning',\n info: 'text-info',\n brand: 'text-brand',\n },\n },\n defaultVariants: {\n size: 'sm',\n variant: 'primary',\n },\n },\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { spinnerVariants } from './spinner.variants';\n\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SpinnerVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'muted'\n | 'destructive'\n | 'success'\n | 'warning'\n | 'info'\n | 'brand';\n\nexport type SpinnerVariantsProps = VariantProps<typeof spinnerVariants>;\n\n/**\n * Spinner Component\n *\n * A loading indicator that shows a spinning animation.\n * Based on shadcn/ui spinner pattern using an SVG loader icon.\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <bsg-spinner />\n *\n * <!-- With size -->\n * <bsg-spinner size=\"lg\" />\n *\n * <!-- With variant (color) -->\n * <bsg-spinner variant=\"destructive\" />\n *\n * <!-- Custom aria-label -->\n * <bsg-spinner ariaLabel=\"Processing request...\" />\n * ```\n */\n@Component({\n selector: 'bsg-spinner',\n standalone: true,\n template: `\n <svg\n [class]=\"spinnerClasses()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n role=\"status\"\n [attr.aria-label]=\"ariaLabel()\"\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n `,\n styles: `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n `,\n})\nexport class SpinnerComponent {\n /** Spinner size */\n readonly size = input<SpinnerSize>('sm');\n\n /** Spinner color variant */\n readonly variant = input<SpinnerVariant>('primary');\n\n /** Accessibility label for screen readers */\n readonly ariaLabel = input<string>('Loading');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed spinner classes */\n readonly spinnerClasses = computed(() =>\n clsx(\n spinnerVariants({\n size: this.size(),\n variant: this.variant(),\n }),\n this.className(),\n ),\n );\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Switch root variants\n *\n * Based on shadcn/ui Switch component\n * Controls the main switch button/track element\n */\nexport const switchRootVariants = cva(\n clsx(\n // Layout\n 'inline-flex shrink-0 items-center',\n // Size (shadcn default)\n 'h-5 w-9',\n // Border & Shape\n 'rounded-full border border-transparent',\n // Shadow (semantic token)\n 'shadow-(--shadow-xs)',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus (semantic tokens)\n 'outline-none',\n 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n // Remove tap highlight on mobile\n '[&]:tap-highlight-transparent',\n ),\n {\n variants: {\n checked: {\n true: 'bg-primary',\n false: 'bg-input',\n },\n disabled: {\n true: 'cursor-not-allowed opacity-50',\n false: '',\n },\n size: {\n sm: 'h-4 w-7',\n default: 'h-5 w-9',\n lg: 'h-6 w-11',\n },\n },\n defaultVariants: {\n checked: false,\n disabled: false,\n size: 'default',\n },\n },\n);\n\n/**\n * Switch thumb variants\n *\n * Controls the circular toggle indicator\n */\nexport const switchThumbVariants = cva(\n clsx(\n // Layout\n 'pointer-events-none block rounded-full',\n // Background (semantic token)\n 'bg-background',\n // Shadow (semantic token)\n 'shadow-(--shadow-lg)',\n // Ring\n 'ring-0',\n // Transition\n 'transition-transform duration-200',\n ),\n {\n variants: {\n checked: {\n true: 'translate-x-full',\n false: 'translate-x-0',\n },\n size: {\n sm: 'size-3 data-[checked=true]:translate-x-5',\n default: 'size-4 data-[checked=true]:translate-x-4',\n lg: 'size-5 data-[checked=true]:translate-x-5',\n },\n },\n defaultVariants: {\n checked: false,\n size: 'default',\n },\n },\n);\n","import {\n Component,\n computed,\n input,\n output,\n model,\n ChangeDetectionStrategy,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { switchRootVariants, switchThumbVariants } from './switch.variants';\n\nexport type SwitchSize = 'sm' | 'default' | 'lg';\n\nexport type SwitchVariantsProps = VariantProps<typeof switchRootVariants>;\n\n/**\n * Switch Component - Toggle control based on shadcn/ui\n *\n * A control that allows the user to toggle between checked and not checked.\n *\n * Usage:\n * ```html\n * <bsg-switch [(checked)]=\"isEnabled\" />\n * <bsg-switch [checked]=\"value\" (checkedChange)=\"onToggle($event)\" />\n * <bsg-switch [disabled]=\"true\" />\n * <bsg-switch size=\"lg\" />\n * ```\n */\n@Component({\n selector: 'bsg-switch',\n standalone: true,\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [class]=\"rootClasses()\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.data-state]=\"checked() ? 'checked' : 'unchecked'\"\n [attr.data-disabled]=\"disabled() || null\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown.space)=\"onKeydown($event)\"\n (keydown.enter)=\"onKeydown($event)\"\n >\n <span\n [class]=\"thumbClasses()\"\n [attr.data-state]=\"checked() ? 'checked' : 'unchecked'\"\n [attr.data-checked]=\"checked()\"\n ></span>\n </button>\n `,\n styles: `\n :host {\n display: inline-flex;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SwitchComponent {\n /** Whether the switch is in the checked (on) state - supports two-way binding */\n readonly checked = model<boolean>(false);\n\n /** Whether the switch is disabled and non-interactive */\n readonly disabled = input<boolean>(false);\n\n /** Size variant of the switch */\n readonly size = input<SwitchSize>('default');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Event emitted when the switch state changes */\n readonly checkedChange = output<boolean>();\n\n // Computed root classes\n readonly rootClasses = computed(() =>\n clsx(\n switchRootVariants({\n checked: this.checked(),\n disabled: this.disabled(),\n size: this.size(),\n }),\n this.className(),\n ),\n );\n\n // Computed thumb classes\n readonly thumbClasses = computed(() =>\n clsx(\n switchThumbVariants({\n checked: this.checked(),\n size: this.size(),\n }),\n ),\n );\n\n /** Toggle the switch state */\n toggle(): void {\n if (this.disabled()) {\n return;\n }\n const newValue = !this.checked();\n this.checked.set(newValue);\n this.checkedChange.emit(newValue);\n }\n\n /** Handle keyboard events (space and enter) */\n onKeydown(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n if (this.disabled()) {\n return;\n }\n // Prevent default to avoid page scroll on space\n keyboardEvent.preventDefault();\n this.toggle();\n }\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\nimport { clsx } from 'clsx';\n\n/**\n * Tabs Root Component\n *\n * The root container for a set of tabs. Manages the active tab state.\n *\n * Usage:\n * ```html\n * <bsg-tabs [defaultValue]=\"0\" (valueChange)=\"onTabChange($event)\">\n * <bsg-tabs-list>\n * <bsg-tabs-trigger [value]=\"0\">Tab 1</bsg-tabs-trigger>\n * <bsg-tabs-trigger [value]=\"1\">Tab 2</bsg-tabs-trigger>\n * </bsg-tabs-list>\n * <bsg-tabs-content [value]=\"0\">Content 1</bsg-tabs-content>\n * <bsg-tabs-content [value]=\"1\">Content 2</bsg-tabs-content>\n * </bsg-tabs>\n * ```\n */\n@Component({\n selector: 'bsg-tabs',\n standalone: true,\n template: `\n <div [class]=\"computedClasses()\" data-orientation=\"horizontal\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TabsComponent {\n /** Default active tab value */\n readonly defaultValue = input<number | string>(0);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Controlled value (if you want to control the tab from outside) */\n readonly value = input<number | string | null>(null);\n\n /** Event emitted when tab changes */\n readonly valueChange = output<number | string>();\n\n // Internal state for active tab\n private readonly _internalValue = signal<number | string | null>(null);\n\n // Computed active value (uses controlled value if set, otherwise internal state, otherwise default)\n readonly activeValue = computed(() => {\n const controlled = this.value();\n if (controlled !== null) return controlled;\n\n const internal = this._internalValue();\n if (internal !== null) return internal;\n\n return this.defaultValue();\n });\n\n // Computed classes\n readonly computedClasses = computed(() => clsx(this.className()));\n\n /**\n * Set the active tab value\n */\n setValue(value: number | string): void {\n // Only update if it's not a controlled component\n if (this.value() === null) {\n this._internalValue.set(value);\n }\n this.valueChange.emit(value);\n }\n\n /**\n * Get the current active tab value\n */\n getValue(): number | string {\n return this.activeValue();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n// Type definitions\nexport type TabSize = 'sm' | 'md' | 'lg';\nexport type TabVariant = 'text' | 'icon-text';\nexport type TabLayout = 'default' | 'carousel';\nexport type TabColor =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\n/**\n * Tab Navigation container variants\n *\n * Controls the overall tab navigation container layout\n */\nexport const tabNavigationVariants = cva(\n clsx(\n // Layout\n 'flex',\n 'gap-2',\n 'items-start',\n ),\n {\n variants: {\n layout: {\n default: 'flex-wrap',\n carousel: clsx(\n 'overflow-x-auto',\n 'overflow-y-hidden',\n 'flex-nowrap',\n 'scroll-smooth',\n // Hide scrollbar - navigation is via buttons\n '[scrollbar-width:none]',\n '[&::-webkit-scrollbar]:hidden',\n ),\n },\n },\n defaultVariants: {\n layout: 'default',\n },\n },\n);\n\n/**\n * Tab Item variants\n *\n * Controls the individual tab button styles with size, variant, and color combinations\n */\nexport const tabItemVariants = cva(\n clsx(\n // Base layout\n 'flex',\n 'justify-center',\n 'items-center',\n 'rounded-lg',\n 'border-none',\n // Typography\n 'font-medium',\n 'text-sm',\n // Interaction\n 'cursor-pointer',\n 'transition-all',\n 'duration-200',\n // Box model\n 'box-border',\n 'relative',\n // Focus visible (semantic token)\n 'focus-visible:outline-2',\n 'focus-visible:outline-offset-2',\n 'focus-visible:outline-ring',\n ),\n {\n variants: {\n variant: {\n text: 'gap-2.5',\n 'icon-text': 'flex-col gap-0',\n },\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n color: {\n default: clsx(\n // Inactive state (semantic tokens)\n 'bg-primary/10',\n 'text-primary',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-primary',\n 'data-[active=true]:text-primary-foreground',\n ),\n info: clsx(\n // Inactive state (semantic tokens)\n 'bg-info/10',\n 'text-info',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-info',\n 'data-[active=true]:text-info-foreground',\n ),\n success: clsx(\n // Inactive state (semantic tokens)\n 'bg-success/10',\n 'text-success',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-success',\n 'data-[active=true]:text-success-foreground',\n ),\n warning: clsx(\n // Inactive state (semantic tokens)\n 'bg-warning/10',\n 'text-warning',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-warning',\n 'data-[active=true]:text-warning-foreground',\n ),\n destructive: clsx(\n // Inactive state (semantic tokens)\n 'bg-destructive/10',\n 'text-destructive',\n 'hover:not-disabled:not-[data-active=true]:opacity-70',\n 'hover:not-disabled:not-[data-active=true]:underline',\n // Active state (semantic tokens)\n 'data-[active=true]:bg-destructive',\n 'data-[active=true]:text-destructive-foreground',\n ),\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n compoundVariants: [\n // Size + Variant: text\n {\n variant: 'text',\n size: 'sm',\n class: 'px-4 py-2 min-h-[29px]',\n },\n {\n variant: 'text',\n size: 'md',\n class: 'px-6 py-3 min-h-[35px]',\n },\n {\n variant: 'text',\n size: 'lg',\n class: 'px-8 py-4 min-h-[43px]',\n },\n // Size + Variant: icon-text\n {\n variant: 'icon-text',\n size: 'sm',\n class: 'px-[18px] py-2 min-h-[80px] w-[168px]',\n },\n {\n variant: 'icon-text',\n size: 'md',\n class: 'px-[26px] py-[13px] min-h-[88px] w-[184px]',\n },\n {\n variant: 'icon-text',\n size: 'lg',\n class: 'px-[34px] py-[17px] min-h-[96px] w-[200px]',\n },\n ],\n defaultVariants: {\n variant: 'text',\n size: 'md',\n color: 'default',\n disabled: false,\n },\n },\n);\n\n/**\n * Tab Icon Circle variants\n *\n * Controls the circular icon container in icon-text variant\n */\nexport const tabIconCircleVariants = cva(\n clsx(\n // Size and shape\n 'size-8',\n 'rounded-full',\n // Layout\n 'flex',\n 'items-center',\n 'justify-center',\n 'shrink-0',\n // Transition\n 'transition-colors',\n 'duration-200',\n ),\n {\n variants: {\n color: {\n default:\n 'bg-primary/20 group-data-[active=true]:bg-primary-foreground/20',\n info: 'bg-info/20 group-data-[active=true]:bg-info-foreground/20',\n success:\n 'bg-success/20 group-data-[active=true]:bg-success-foreground/20',\n warning:\n 'bg-warning/20 group-data-[active=true]:bg-warning-foreground/20',\n destructive:\n 'bg-destructive/20 group-data-[active=true]:bg-destructive-foreground/20',\n },\n },\n defaultVariants: {\n color: 'default',\n },\n },\n);\n\n/**\n * Tab Icon Content variants\n *\n * Controls the icon + label container layout\n */\nexport const tabIconContentVariants = cva(\n clsx('flex', 'flex-col', 'items-center', 'justify-center', 'w-full'),\n);\n\n/**\n * Tab Label variants\n *\n * Controls the label text in icon-text variant\n */\nexport const tabLabelVariants = cva(\n clsx('text-xs', 'font-semibold', 'leading-normal', 'text-center', 'mt-1'),\n);\n\n/**\n * Tab Text Content variants\n *\n * Controls the text content in text variant\n */\nexport const tabTextContentVariants = cva(clsx('whitespace-nowrap'));\n","import {\n AfterViewInit,\n Component,\n computed,\n effect,\n ElementRef,\n input,\n OnDestroy,\n signal,\n viewChild,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n type TabLayout,\n tabNavigationVariants,\n} from './tab-navigation.variants';\n\n/**\n * Tabs List Component\n *\n * Container for tab triggers. This is where you place your bsg-tabs-trigger components.\n *\n * Usage:\n * ```html\n * <bsg-tabs-list>\n * <bsg-tabs-trigger [value]=\"0\">Tab 1</bsg-tabs-trigger>\n * <bsg-tabs-trigger [value]=\"1\">Tab 2</bsg-tabs-trigger>\n * </bsg-tabs-list>\n * ```\n *\n * Carousel layout with navigation buttons:\n * ```html\n * <bsg-tabs-list layout=\"carousel\">\n * <bsg-tabs-trigger [value]=\"0\">Tab 1</bsg-tabs-trigger>\n * <bsg-tabs-trigger [value]=\"1\">Tab 2</bsg-tabs-trigger>\n * <!-- Many more tabs... -->\n * </bsg-tabs-list>\n * ```\n */\n@Component({\n selector: 'bsg-tabs-list',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <!-- Previous Button - Only shown in carousel mode -->\n @if (isCarousel()) {\n <button\n type=\"button\"\n class=\"carousel-nav-btn carousel-nav-btn--prev\"\n (click)=\"scrollLeft()\"\n [disabled]=\"!canScrollLeft()\"\n aria-label=\"Previous tabs\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"m15 18-6-6 6-6\" />\n </svg>\n </button>\n }\n\n <!-- Tabs Container -->\n <div\n #scrollContainer\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n aria-label=\"Tab navigation\"\n data-orientation=\"horizontal\"\n [class]=\"computedClasses()\"\n (scroll)=\"onScroll()\"\n >\n <ng-content />\n </div>\n\n <!-- Next Button - Only shown in carousel mode -->\n @if (isCarousel()) {\n <button\n type=\"button\"\n class=\"carousel-nav-btn carousel-nav-btn--next\"\n (click)=\"scrollRight()\"\n [disabled]=\"!canScrollRight()\"\n aria-label=\"Next tabs\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </button>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n }\n\n .carousel-nav-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n border: 1px solid hsl(var(--border));\n background-color: hsl(var(--background));\n color: hsl(var(--foreground));\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n }\n\n .carousel-nav-btn:hover:not(:disabled) {\n background-color: hsl(var(--accent));\n color: hsl(var(--accent-foreground));\n }\n\n .carousel-nav-btn:focus-visible {\n outline: 2px solid hsl(var(--ring));\n outline-offset: 2px;\n }\n\n .carousel-nav-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n pointer-events: none;\n }\n `,\n})\nexport class TabsListComponent implements AfterViewInit, OnDestroy {\n /** Layout mode: default (wraps) or carousel (scrolls horizontally) */\n readonly layout = input<TabLayout>('default');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // ViewChild for scroll container\n readonly scrollContainer =\n viewChild<ElementRef<HTMLDivElement>>('scrollContainer');\n\n // Signals for button visibility\n readonly canScrollLeft = signal(false);\n readonly canScrollRight = signal(false);\n\n // ResizeObserver for detecting content changes\n private resizeObserver: ResizeObserver | null = null;\n\n constructor() {\n // Effect to check scroll position on layout change\n effect(() => {\n const isCarousel = this.layout() === 'carousel';\n if (isCarousel) {\n // Delay to ensure DOM is ready\n setTimeout(() => this.updateScrollButtons(), 100);\n }\n });\n }\n\n ngAfterViewInit(): void {\n // Initialize scroll buttons after view is ready\n this.setupResizeObserver();\n // Multiple checks to ensure content is rendered\n setTimeout(() => this.updateScrollButtons(), 0);\n setTimeout(() => this.updateScrollButtons(), 100);\n setTimeout(() => this.updateScrollButtons(), 500);\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private setupResizeObserver(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (!container) return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateScrollButtons();\n });\n\n this.resizeObserver.observe(container);\n\n // Also observe children for content changes\n const children = container.children;\n for (let i = 0; i < children.length; i++) {\n this.resizeObserver.observe(children[i]);\n }\n }\n\n // Computed: is carousel mode\n readonly isCarousel = computed(() => this.layout() === 'carousel');\n\n // Container classes\n readonly containerClasses = computed(() =>\n clsx('relative', 'flex', 'items-center', this.isCarousel() ? 'gap-3' : ''),\n );\n\n // Computed classes using the existing tabNavigationVariants\n readonly computedClasses = computed(() =>\n clsx(\n tabNavigationVariants({\n layout: this.layout(),\n }),\n this.isCarousel() ? 'flex-1 min-w-0' : '',\n this.className(),\n ),\n );\n\n // Scroll left\n scrollLeft(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (container) {\n const scrollAmount = container.clientWidth * 0.8;\n container.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n }\n }\n\n // Scroll right\n scrollRight(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (container) {\n const scrollAmount = container.clientWidth * 0.8;\n container.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n }\n }\n\n // Handle scroll event\n onScroll(): void {\n this.updateScrollButtons();\n }\n\n // Update button visibility based on scroll position\n private updateScrollButtons(): void {\n const container = this.scrollContainer()?.nativeElement;\n if (!container) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = container;\n\n // Can scroll left if not at start\n this.canScrollLeft.set(scrollLeft > 0);\n\n // Can scroll right if not at end (with small tolerance)\n this.canScrollRight.set(scrollLeft < scrollWidth - clientWidth - 1);\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { TabsComponent } from './tabs.component';\nimport {\n tabIconCircleVariants,\n tabIconContentVariants,\n tabItemVariants,\n tabLabelVariants,\n tabTextContentVariants,\n type TabColor,\n type TabSize,\n type TabVariant,\n} from './tab-navigation.variants';\n\nexport type TabsTriggerVariantsProps = VariantProps<typeof tabItemVariants>;\n\n/**\n * Tabs Trigger Component\n *\n * A clickable tab that activates its associated content panel.\n *\n * Usage for text variant:\n * ```html\n * <bsg-tabs-trigger [value]=\"0\">\n * Tab Label\n * </bsg-tabs-trigger>\n * ```\n *\n * Usage for icon-text variant:\n * ```html\n * <bsg-tabs-trigger [value]=\"0\" variant=\"icon-text\">\n * <svg slot=\"icon\">...</svg>\n * <span slot=\"label\">Tab Label</span>\n * </bsg-tabs-trigger>\n * ```\n */\n@Component({\n selector: 'bsg-tabs-trigger',\n standalone: true,\n template: `\n <button\n type=\"button\"\n role=\"tab\"\n [class]=\"computedClasses()\"\n class=\"group\"\n [attr.aria-selected]=\"isActive()\"\n [attr.aria-controls]=\"'tabpanel-' + value()\"\n [attr.id]=\"'tab-' + value()\"\n [attr.data-state]=\"isActive() ? 'active' : 'inactive'\"\n [attr.data-active]=\"isActive()\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"isActive() ? 0 : -1\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick()\"\n >\n @if (variant() === 'icon-text') {\n <!-- Icon-text variant layout -->\n <div [class]=\"iconContentClasses()\">\n <div [class]=\"iconCircleClasses()\">\n <ng-content select=\"[slot='icon']\" />\n </div>\n <span [class]=\"labelClasses()\">\n <ng-content select=\"[slot='label']\" />\n </span>\n </div>\n } @else {\n <!-- Text variant layout -->\n <span [class]=\"textContentClasses()\">\n <ng-content />\n </span>\n }\n </button>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TabsTriggerComponent {\n // Inject parent tabs component\n private readonly tabs = inject(TabsComponent, { optional: true });\n\n /** The value that identifies this tab */\n readonly value = input.required<number | string>();\n\n /** Tab visual variant */\n readonly variant = input<TabVariant>('text');\n\n /** Tab size variant */\n readonly size = input<TabSize>('md');\n\n /** Tab color scheme */\n readonly color = input<TabColor>('default');\n\n /** Whether the tab is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Computed: is this tab active?\n readonly isActive = computed(() => {\n if (!this.tabs) return false;\n return this.tabs.activeValue() === this.value();\n });\n\n // Computed tab button classes\n readonly computedClasses = computed(() =>\n clsx(\n tabItemVariants({\n variant: this.variant(),\n size: this.size(),\n color: this.color(),\n disabled: this.disabled(),\n }),\n this.className(),\n ),\n );\n\n // Computed icon content classes\n readonly iconContentClasses = computed(() => clsx(tabIconContentVariants()));\n\n // Computed icon circle classes\n readonly iconCircleClasses = computed(() =>\n clsx(\n tabIconCircleVariants({\n color: this.color(),\n }),\n ),\n );\n\n // Computed label classes\n readonly labelClasses = computed(() => clsx(tabLabelVariants()));\n\n // Computed text content classes\n readonly textContentClasses = computed(() => clsx(tabTextContentVariants()));\n\n // Handle click\n handleClick(): void {\n if (!this.disabled() && this.tabs) {\n this.tabs.setValue(this.value());\n }\n }\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { TabsComponent } from './tabs.component';\n\n/**\n * Tabs Content Component\n *\n * A container for tab panel content. Only displays when its value matches the active tab.\n *\n * Usage:\n * ```html\n * <bsg-tabs-content [value]=\"0\">\n * <p>Content for tab 0</p>\n * </bsg-tabs-content>\n * ```\n */\n@Component({\n selector: 'bsg-tabs-content',\n standalone: true,\n template: `\n @if (isActive()) {\n <div\n role=\"tabpanel\"\n [id]=\"'tabpanel-' + value()\"\n [attr.aria-labelledby]=\"'tab-' + value()\"\n [attr.data-state]=\"isActive() ? 'active' : 'inactive'\"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"0\"\n [class]=\"computedClasses()\"\n >\n <ng-content />\n </div>\n }\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TabsContentComponent {\n // Inject parent tabs component\n private readonly tabs = inject(TabsComponent, { optional: true });\n\n /** The value that identifies which tab this content belongs to */\n readonly value = input.required<number | string>();\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n // Computed: is this content active?\n readonly isActive = computed(() => {\n if (!this.tabs) return false;\n return this.tabs.activeValue() === this.value();\n });\n\n // Computed classes with default mt-2\n readonly computedClasses = computed(() => clsx('mt-2', this.className()));\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n computed,\n contentChildren,\n Directive,\n input,\n output,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n type TabColor,\n type TabSize,\n type TabVariant,\n tabIconCircleVariants,\n tabIconContentVariants,\n tabItemVariants,\n tabLabelVariants,\n tabNavigationVariants,\n tabTextContentVariants,\n} from './tab-navigation.variants';\n\n/**\n * Directive to mark content that should be projected into a specific tab panel\n *\n * Usage:\n * ```html\n * <bsg-tab-navigation [tabs]=\"tabs\">\n * <ng-template bsgTabContent>Content for tab 0</ng-template>\n * <ng-template bsgTabContent>Content for tab 1</ng-template>\n * </bsg-tab-navigation>\n * ```\n */\n@Directive({\n selector: '[bsgTabContent]',\n standalone: true,\n})\nexport class TabContentDirective {\n constructor(public template: TemplateRef<unknown>) {}\n}\n\nexport interface TabItem {\n label: string;\n count?: number;\n icon?: boolean;\n}\n\nexport type TabItemVariantsProps = VariantProps<typeof tabItemVariants>;\n\n/**\n * Tab Navigation Component\n *\n * A tabbed navigation component with support for text and icon-text variants.\n * Follows the shadcn/ui tabs pattern with separated TabsList and TabsContent.\n *\n * Usage:\n * ```html\n * <bsg-tab-navigation\n * [tabs]=\"tabs\"\n * [variant]=\"'text'\"\n * [size]=\"'md'\"\n * [color]=\"'default'\"\n * [activeIndex]=\"0\"\n * (tabChange)=\"onTabChange($event)\"\n * >\n * <ng-template bsgTabContent>Content for first tab</ng-template>\n * <ng-template bsgTabContent>Content for second tab</ng-template>\n * </bsg-tab-navigation>\n * ```\n */\n@Component({\n selector: 'bsg-tab-navigation',\n standalone: true,\n imports: [NgTemplateOutlet],\n template: `\n <!-- Tabs Root -->\n <div [class]=\"containerClasses()\" data-orientation=\"horizontal\">\n <!-- Tabs List -->\n <div\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n aria-label=\"Tab navigation\"\n data-orientation=\"horizontal\"\n [class]=\"tabsListClasses()\"\n >\n @for (tab of tabs(); track $index) {\n <!-- Tabs Trigger -->\n <button\n type=\"button\"\n role=\"tab\"\n [class]=\"getTabClasses($index)\"\n class=\"group\"\n [attr.aria-selected]=\"$index === internalActiveIndex()\"\n [attr.aria-controls]=\"'tabpanel-' + $index\"\n [attr.id]=\"'tab-' + $index\"\n [attr.data-state]=\"\n $index === internalActiveIndex() ? 'active' : 'inactive'\n \"\n [attr.data-active]=\"$index === internalActiveIndex()\"\n [attr.data-disabled]=\"disabled() ? '' : null\"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"$index === internalActiveIndex() ? 0 : -1\"\n [disabled]=\"disabled()\"\n (click)=\"handleTabClick($index)\"\n >\n @if (variant() === 'icon-text') {\n <div [class]=\"iconContentClasses()\">\n <div [class]=\"getIconCircleClasses()\">\n <svg\n class=\"block\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21M16 7C16 9.20914 14.2091 11 12 11C9.79086 11 8 9.20914 8 7C8 4.79086 9.79086 3 12 3C14.2091 3 16 4.79086 16 7Z\"\n [attr.stroke]=\"getIconStroke($index)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n <span [class]=\"labelClasses()\">{{ tab.label }}</span>\n </div>\n } @else {\n <span [class]=\"textContentClasses()\">\n {{ tab.label }}\n @if (tab.count !== undefined) {\n ({{ tab.count }})\n }\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Tabs Content Panels -->\n @for (tab of tabs(); track $index) {\n <div\n role=\"tabpanel\"\n [id]=\"'tabpanel-' + $index\"\n [attr.aria-labelledby]=\"'tab-' + $index\"\n [attr.data-state]=\"\n $index === internalActiveIndex() ? 'active' : 'inactive'\n \"\n data-orientation=\"horizontal\"\n [attr.tabindex]=\"0\"\n [attr.hidden]=\"$index !== internalActiveIndex() ? true : null\"\n [class]=\"tabContentClasses()\"\n >\n @if ($index === internalActiveIndex() && tabContents()[$index]) {\n <ng-container *ngTemplateOutlet=\"tabContents()[$index].template\" />\n }\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TabNavigationComponent {\n /** Tab size variant */\n readonly size = input<TabSize>('md');\n\n /** Tab visual variant */\n readonly variant = input<TabVariant>('text');\n\n /** Tab color scheme */\n readonly color = input<TabColor>('default');\n\n /** Whether all tabs are disabled */\n readonly disabled = input<boolean>(false);\n\n /** List of tab items */\n readonly tabs = input<TabItem[]>([\n { label: 'Solicitudes Realizadas', count: 3 },\n { label: 'Información del cliente' },\n ]);\n\n /** Active tab index */\n readonly activeIndex = input<number>(0);\n\n /** Additional CSS classes for container */\n readonly className = input<string>();\n\n /** Tab change event */\n readonly tabChange = output<number>();\n\n /** Content children (tab content templates) */\n readonly tabContents = contentChildren(TabContentDirective);\n\n // Internal state for active tab\n private readonly _activeIndex = signal<number | null>(null);\n\n // Computed active index (uses internal state if set, otherwise input)\n readonly internalActiveIndex = computed(() => {\n const internal = this._activeIndex();\n return internal !== null ? internal : this.activeIndex();\n });\n\n // Computed container classes\n readonly containerClasses = computed(() => clsx(this.className()));\n\n // Computed tabs list classes\n readonly tabsListClasses = computed(() => clsx(tabNavigationVariants()));\n\n // Computed tab content classes\n readonly tabContentClasses = computed(() => clsx('mt-2'));\n\n // Computed icon content classes\n readonly iconContentClasses = computed(() => clsx(tabIconContentVariants()));\n\n // Computed label classes\n readonly labelClasses = computed(() => clsx(tabLabelVariants()));\n\n // Computed text content classes\n readonly textContentClasses = computed(() => clsx(tabTextContentVariants()));\n\n // Get tab button classes for a specific index\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getTabClasses(index: number): string {\n return clsx(\n tabItemVariants({\n variant: this.variant(),\n size: this.size(),\n color: this.color(),\n disabled: this.disabled(),\n }),\n );\n }\n\n // Get icon circle classes\n getIconCircleClasses(): string {\n return clsx(\n tabIconCircleVariants({\n color: this.color(),\n }),\n );\n }\n\n // Get icon stroke color based on active state (uses currentColor to inherit from parent)\n getIconStroke(_index: number): string {\n return 'currentColor';\n }\n\n // Handle tab click\n handleTabClick(index: number): void {\n if (!this.disabled() && index !== this.internalActiveIndex()) {\n this._activeIndex.set(index);\n this.tabChange.emit(index);\n }\n }\n}\n","// New composable components (shadcn/ui pattern)\nexport { TabsComponent } from './tabs.component';\nexport { TabsListComponent } from './tabs-list.component';\nexport {\n TabsTriggerComponent,\n type TabsTriggerVariantsProps,\n} from './tabs-trigger.component';\nexport { TabsContentComponent } from './tabs-content.component';\n\n// Legacy monolithic component (deprecated, use new components above)\nexport {\n TabNavigationComponent,\n type TabItem,\n} from './tab-navigation.component';\n\n// Variants and types\nexport {\n tabNavigationVariants,\n tabItemVariants,\n tabIconContentVariants,\n tabIconCircleVariants,\n tabLabelVariants,\n tabTextContentVariants,\n type TabVariant,\n type TabSize,\n type TabColor,\n type TabLayout,\n} from './tab-navigation.variants';\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Table wrapper variants\n *\n * Container with subtle shadow for depth and rounded corners\n * for a modern, polished look\n */\nexport const tableWrapperVariants = cva(\n clsx(\n 'relative',\n 'w-full',\n 'overflow-auto',\n 'rounded-xl',\n 'border',\n 'border-slate-200',\n 'bg-white',\n // Subtle shadow for depth perception\n 'shadow-sm',\n // Smooth scrollbar for better UX\n 'scrollbar-thin',\n 'scrollbar-thumb-slate-300',\n 'scrollbar-track-transparent',\n ),\n);\n\n/**\n * Table variants\n *\n * Clean table with proper spacing and typography\n */\nexport const tableVariants = cva(\n clsx(\n 'w-full',\n 'caption-bottom',\n 'text-sm',\n 'border-collapse',\n 'border-spacing-0',\n 'font-sans',\n ),\n);\n\n/**\n * Table Header variants\n *\n * Distinct header with subtle background gradient\n * and clear visual separation from body\n */\nexport const tableHeaderVariants = cva(\n clsx(\n // Subtle gradient for visual interest\n 'bg-gradient-to-b',\n 'from-blue-50',\n 'to-blue-50/70',\n // Border for separation\n '[&_tr]:border-b',\n '[&_tr]:border-slate-200',\n // Sticky header for long tables\n 'sticky',\n 'top-0',\n 'z-10',\n // Backdrop blur for when scrolling\n 'backdrop-blur-sm',\n ),\n);\n\n/**\n * Table Body variants\n *\n * Clean body with alternating row colors option\n */\nexport const tableBodyVariants = cva(\n clsx(\n '[&_tr:last-child]:border-0',\n // Smooth transitions for row interactions\n '[&_tr]:transition-colors',\n '[&_tr]:duration-150',\n '[&_tr]:ease-in-out',\n ),\n);\n\n/**\n * Table Footer variants\n *\n * Distinct footer for totals and summaries\n */\nexport const tableFooterVariants = cva(\n clsx(\n 'bg-gradient-to-t',\n 'from-slate-50',\n 'to-slate-50/50',\n 'border-t-2',\n 'border-slate-200',\n 'font-semibold',\n '[&>tr]:last:border-b-0',\n ),\n);\n\n/**\n * Table Row variants\n *\n * Interactive rows with clear hover and selected states\n * Following UX best practices for discoverability\n */\nexport const tableRowVariants = cva(\n clsx(\n 'border-b',\n 'border-slate-100',\n // Smooth transition for hover effect\n 'transition-all',\n 'duration-150',\n 'ease-in-out',\n // Hover state - subtle but noticeable\n 'hover:bg-slate-50/80',\n // Selected state - clear visual feedback\n 'data-[state=selected]:bg-blue-50/60',\n 'data-[state=selected]:border-blue-100',\n // Focus within for keyboard navigation\n 'focus-within:bg-slate-50/50',\n // Cursor hint for clickable rows\n 'cursor-default',\n ),\n);\n\n/**\n * Table Head variants\n *\n * Clear, readable headers with proper hierarchy\n * Using semibold weight and blue accent for brand consistency\n */\nexport const tableHeadVariants = cva(\n clsx(\n // Vertical rhythm\n 'h-12',\n 'px-4',\n 'py-3',\n // Alignment\n 'text-left',\n 'align-middle',\n // Typography - clear hierarchy\n 'font-semibold',\n 'text-blue-700',\n 'text-xs',\n 'uppercase',\n 'tracking-wide',\n // Prevent text wrapping for cleaner look\n 'whitespace-nowrap',\n // Checkbox alignment\n '[&:has([role=checkbox])]:pr-0',\n // Sort indicator space\n '[&:has(button)]:pr-2',\n ),\n);\n\n/**\n * Table Cell variants\n *\n * Readable cells with proper spacing and alignment\n */\nexport const tableCellVariants = cva(\n clsx(\n // Generous padding for readability\n 'px-4',\n 'py-4',\n // Alignment\n 'align-middle',\n // Typography - optimized for scanning\n 'text-slate-600',\n 'text-sm',\n 'font-normal',\n // Line height for multi-line content\n 'leading-relaxed',\n // Checkbox alignment\n '[&:has([role=checkbox])]:pr-0',\n // First column emphasis\n '[&:first-child]:font-medium',\n '[&:first-child]:text-slate-900',\n ),\n);\n\n/**\n * Table Card Header variants\n *\n * Prominent header with semantic colors and clear hierarchy\n * Following UX principles for visual weight distribution\n */\nexport const tableCardHeaderVariants = cva(\n clsx(\n 'flex',\n 'items-center',\n 'gap-3',\n 'px-5',\n 'py-4',\n // Gradient for visual interest\n 'bg-gradient-to-r',\n // Rounded top corners\n 'rounded-t-xl',\n // Subtle bottom border\n 'border-b',\n ),\n {\n variants: {\n color: {\n default: clsx('from-slate-100', 'to-slate-50', 'border-slate-200/50'),\n info: clsx('from-blue-100', 'to-blue-50', 'border-blue-200/50'),\n success: clsx('from-green-100', 'to-green-50', 'border-green-200/50'),\n warning: clsx('from-amber-100', 'to-amber-50', 'border-amber-200/50'),\n destructive: clsx('from-red-100', 'to-red-50', 'border-red-200/50'),\n },\n },\n defaultVariants: {\n color: 'info',\n },\n },\n);\n\n/**\n * Table Card Footer variants\n *\n * Clean footer area for pagination and actions\n */\nexport const tableCardFooterVariants = cva(\n clsx(\n 'flex',\n 'items-center',\n 'justify-between',\n 'gap-3',\n 'px-5',\n 'py-4',\n 'bg-slate-50/50',\n 'border-t',\n 'border-slate-200',\n 'rounded-b-xl',\n ),\n);\n\n/**\n * Table Pagination wrapper variants\n *\n * Clean pagination area with proper spacing\n */\nexport const tablePaginationVariants = cva(\n clsx('px-4', 'py-3', 'border-t', 'border-slate-100', 'bg-slate-50/30'),\n);\n\n/**\n * Table Empty State variants\n *\n * For when table has no data\n */\nexport const tableEmptyStateVariants = cva(\n clsx('py-12', 'px-4', 'text-center', 'text-slate-400', 'text-sm'),\n);\n\n/**\n * Table Loading State variants\n *\n * For skeleton loading states\n */\nexport const tableLoadingVariants = cva(\n clsx('animate-pulse', 'bg-slate-100', 'rounded'),\n);\n\n/**\n * Striped table modifier\n *\n * Apply to tbody for alternating row colors\n */\nexport const tableStripedVariants = cva(\n clsx('[&>tr:nth-child(even)]:bg-slate-50/50'),\n);\n\n/**\n * Compact table modifier\n *\n * Reduced padding for dense data\n */\nexport const tableCompactVariants = cva(\n clsx(\n '[&_th]:py-2',\n '[&_th]:px-3',\n '[&_td]:py-2',\n '[&_td]:px-3',\n '[&_th]:text-xs',\n '[&_td]:text-xs',\n ),\n);\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableVariants, tableWrapperVariants } from './table.variants';\n\n/**\n * Table Component\n *\n * A responsive table wrapper with semantic HTML table element.\n * Follows shadcn/ui table structure.\n *\n * Usage:\n * ```html\n * <bsg-table>\n * <bsg-table-caption>A list of your recent invoices.</bsg-table-caption>\n * <bsg-table-header>\n * <bsg-table-row>\n * <bsg-table-head>Invoice</bsg-table-head>\n * <bsg-table-head>Status</bsg-table-head>\n * </bsg-table-row>\n * </bsg-table-header>\n * <bsg-table-body>\n * <bsg-table-row>\n * <bsg-table-cell>INV001</bsg-table-cell>\n * <bsg-table-cell>Paid</bsg-table-cell>\n * </bsg-table-row>\n * </bsg-table-body>\n * </bsg-table>\n * ```\n */\n@Component({\n selector: 'bsg-table',\n standalone: true,\n template: `\n <div [class]=\"wrapperClasses()\">\n <table [class]=\"tableClasses()\">\n <ng-content />\n </table>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableComponent {\n /** Additional CSS classes for wrapper */\n readonly wrapperClassName = input<string>();\n\n /** Additional CSS classes for table */\n readonly className = input<string>();\n\n readonly wrapperClasses = computed(() =>\n clsx(tableWrapperVariants(), this.wrapperClassName()),\n );\n\n readonly tableClasses = computed(() =>\n clsx(tableVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableHeaderVariants } from './table.variants';\n\n/**\n * Table Header Component\n *\n * Wraps table header rows (thead element).\n *\n * Usage:\n * ```html\n * <bsg-table-header>\n * <bsg-table-row>\n * <bsg-table-head>Column 1</bsg-table-head>\n * <bsg-table-head>Column 2</bsg-table-head>\n * </bsg-table-row>\n * </bsg-table-header>\n * ```\n */\n@Component({\n selector: 'bsg-table-header',\n standalone: true,\n template: `\n <thead [class]=\"computedClasses()\">\n <ng-content />\n </thead>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableHeaderComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly computedClasses = computed(() =>\n clsx(tableHeaderVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableBodyVariants } from './table.variants';\n\n/**\n * Table Body Component\n *\n * Wraps table body rows (tbody element).\n *\n * Usage:\n * ```html\n * <bsg-table-body>\n * <bsg-table-row>\n * <bsg-table-cell>Cell 1</bsg-table-cell>\n * <bsg-table-cell>Cell 2</bsg-table-cell>\n * </bsg-table-row>\n * </bsg-table-body>\n * ```\n */\n@Component({\n selector: 'bsg-table-body',\n standalone: true,\n template: `\n <tbody [class]=\"computedClasses()\">\n <ng-content />\n </tbody>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableBodyComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly computedClasses = computed(() =>\n clsx(tableBodyVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableFooterVariants } from './table.variants';\n\n/**\n * Table Footer Component\n *\n * Wraps table footer rows (tfoot element).\n *\n * Usage:\n * ```html\n * <bsg-table-footer>\n * <bsg-table-row>\n * <bsg-table-cell colSpan=\"3\">Total</bsg-table-cell>\n * <bsg-table-cell>$2,500.00</bsg-table-cell>\n * </bsg-table-row>\n * </bsg-table-footer>\n * ```\n */\n@Component({\n selector: 'bsg-table-footer',\n standalone: true,\n template: `\n <tfoot [class]=\"computedClasses()\">\n <ng-content />\n </tfoot>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableFooterComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly computedClasses = computed(() =>\n clsx(tableFooterVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableRowVariants } from './table.variants';\n\n/**\n * Table Row Component\n *\n * A table row element (tr).\n *\n * Usage:\n * ```html\n * <bsg-table-row>\n * <bsg-table-cell>Cell 1</bsg-table-cell>\n * <bsg-table-cell>Cell 2</bsg-table-cell>\n * </bsg-table-row>\n * ```\n */\n@Component({\n selector: 'bsg-table-row',\n standalone: true,\n template: `\n <tr\n [class]=\"computedClasses()\"\n [attr.data-state]=\"selected() ? 'selected' : null\"\n >\n <ng-content />\n </tr>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableRowComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Whether the row is selected */\n readonly selected = input<boolean>(false);\n\n readonly computedClasses = computed(() =>\n clsx(tableRowVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableHeadVariants } from './table.variants';\n\n/**\n * Table Head Component\n *\n * A table header cell element (th).\n *\n * Usage:\n * ```html\n * <bsg-table-head>Column Name</bsg-table-head>\n * <bsg-table-head className=\"w-[100px]\">ID</bsg-table-head>\n * <bsg-table-head className=\"text-right\">Amount</bsg-table-head>\n * ```\n */\n@Component({\n selector: 'bsg-table-head',\n standalone: true,\n template: `\n <th\n [class]=\"computedClasses()\"\n [attr.colspan]=\"colSpan()\"\n [scope]=\"scope()\"\n >\n <ng-content />\n </th>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableHeadComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Column span */\n readonly colSpan = input<number>();\n\n /** Scope attribute for accessibility */\n readonly scope = input<'col' | 'row' | 'colgroup' | 'rowgroup'>('col');\n\n readonly computedClasses = computed(() =>\n clsx(tableHeadVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableCellVariants } from './table.variants';\n\n/**\n * Table Cell Component\n *\n * A table data cell element (td).\n *\n * Usage:\n * ```html\n * <bsg-table-cell>Cell content</bsg-table-cell>\n * <bsg-table-cell className=\"font-medium\">Bold content</bsg-table-cell>\n * <bsg-table-cell className=\"text-right\">$250.00</bsg-table-cell>\n * <bsg-table-cell [colSpan]=\"3\">Spanning cell</bsg-table-cell>\n * ```\n */\n@Component({\n selector: 'bsg-table-cell',\n standalone: true,\n template: `\n <td [class]=\"computedClasses()\" [attr.colspan]=\"colSpan()\">\n <ng-content />\n </td>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n})\nexport class TableCellComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Column span */\n readonly colSpan = input<number>();\n\n readonly computedClasses = computed(() =>\n clsx(tableCellVariants(), this.className()),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\n\n/**\n * Table Card Component\n *\n * A wrapper that provides a polished card container for tables,\n * using content projection for header and footer sections.\n *\n * UX Considerations:\n * - Clear visual hierarchy with prominent header\n * - Consistent spacing and alignment\n * - Subtle shadows for depth without distraction\n * - Flexible composition with header/footer slots\n *\n * Usage:\n * ```html\n * <bsg-table-card>\n * <bsg-tableCard-header title=\"My Table Title\">\n * <button slot=\"action\">New Item</button>\n * </bsg-tableCard-header>\n *\n * <bsg-table>\n * ...\n * </bsg-table>\n *\n * <bsg-tableCard-footer>\n * <span>Showing 1-10 of 100</span>\n * </bsg-tableCard-footer>\n * </bsg-table-card>\n * ```\n */\n@Component({\n selector: 'bsg-table-card',\n standalone: true,\n template: `\n <div [class]=\"cardClasses()\">\n <!-- Header slot -->\n <ng-content select=\"bsg-tableCard-header\" />\n\n <!-- Content wrapper - removes nested borders/shadows -->\n <div\n class=\"[&>bsg-table]:rounded-none [&>bsg-table>div]:rounded-none [&>bsg-table>div]:border-0 [&>bsg-table>div]:shadow-none\"\n >\n <ng-content />\n </div>\n\n <!-- Footer slot -->\n <ng-content select=\"bsg-tableCard-footer\" />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableCardComponent {\n /** Additional CSS classes for the card container */\n readonly className = input<string>();\n\n readonly cardClasses = computed(() =>\n clsx(\n 'w-full',\n 'rounded-xl',\n 'border',\n 'border-slate-200',\n 'bg-white',\n 'shadow-sm',\n 'overflow-hidden',\n 'transition-shadow',\n 'duration-200',\n 'hover:shadow-md',\n this.className(),\n ),\n );\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableCardHeaderVariants } from './table.variants';\n\nexport type TableCardHeaderColor =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\n/**\n * Table Card Header Component\n *\n * Header section for table cards with content projection for icon and title.\n *\n * Usage:\n * ```html\n * <!-- Simple title -->\n * <bsg-tableCard-header>\n * <span>Titulo de la Tabla</span>\n * </bsg-tableCard-header>\n *\n * <!-- With icon and title -->\n * <bsg-tableCard-header color=\"info\">\n * <svg class=\"size-5\">...</svg>\n * <span>Titulo de la Tabla</span>\n * </bsg-tableCard-header>\n *\n * <!-- With icon, title and action -->\n * <bsg-tableCard-header color=\"success\">\n * <svg class=\"size-5\">...</svg>\n * <span>Titulo de la Tabla</span>\n * <button slot=\"action\">Nueva Accion</button>\n * </bsg-tableCard-header>\n * ```\n */\n@Component({\n selector: 'bsg-tableCard-header',\n standalone: true,\n template: `\n <div [class]=\"headerClasses()\">\n <!-- Content (icon + title) -->\n <div [class]=\"contentClasses()\">\n <ng-content />\n </div>\n\n <!-- Action slot -->\n <div class=\"ml-auto flex items-center gap-2\">\n <ng-content select=\"[slot='action']\" />\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableCardHeaderComponent {\n /** Semantic color variant */\n readonly color = input<TableCardHeaderColor>('info');\n\n /** Additional CSS classes for header */\n readonly className = input<string>();\n\n readonly headerClasses = computed(() =>\n clsx(tableCardHeaderVariants({ color: this.color() }), this.className()),\n );\n\n readonly contentClasses = computed(() => {\n const colorMap: Record<TableCardHeaderColor, string> = {\n default: 'text-slate-800',\n info: 'text-blue-800',\n success: 'text-green-800',\n warning: 'text-amber-800',\n destructive: 'text-red-800',\n };\n\n return clsx(\n 'flex',\n 'items-center',\n 'gap-3',\n 'flex-1',\n 'text-base',\n 'font-semibold',\n 'leading-tight',\n 'tracking-tight',\n colorMap[this.color()],\n );\n });\n}\n","import { Component, computed, input } from '@angular/core';\nimport { clsx } from 'clsx';\nimport { tableCardFooterVariants } from './table.variants';\n\n/**\n * Table Card Footer Component\n *\n * Footer section for table cards, typically used for pagination,\n * summary info, or action buttons.\n *\n * Usage:\n * ```html\n * <bsg-tableCard-footer>\n * <span>Showing 1-10 of 100</span>\n * <div>\n * <button>Previous</button>\n * <button>Next</button>\n * </div>\n * </bsg-tableCard-footer>\n * ```\n */\n@Component({\n selector: 'bsg-tableCard-footer',\n standalone: true,\n template: `\n <div [class]=\"footerClasses()\">\n <ng-content />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class TableCardFooterComponent {\n /** Additional CSS classes */\n readonly className = input<string>();\n\n readonly footerClasses = computed(() =>\n clsx(tableCardFooterVariants(), this.className()),\n );\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Pagination container variants\n *\n * Main wrapper for the pagination component\n */\nexport const paginationContainerVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-4',\n // Size\n 'h-[29px]',\n // Typography\n 'font-sans',\n // Responsive\n 'max-md:flex-wrap max-md:h-auto max-md:gap-3',\n ),\n);\n\n/**\n * Pagination section left variants\n *\n * Contains page number input\n */\nexport const paginationSectionLeftVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-2',\n ),\n);\n\n/**\n * Pagination section middle variants\n *\n * Contains page size selector\n */\nexport const paginationSectionMiddleVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-2.5',\n ),\n);\n\n/**\n * Pagination section right variants\n *\n * Contains range label and navigation controls\n */\nexport const paginationSectionRightVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-[17px]',\n // Positioning\n 'ml-auto',\n // Responsive\n 'max-md:ml-0 max-md:w-full max-md:justify-between',\n ),\n);\n\n/**\n * Pagination label variants\n *\n * Standard label text style\n */\nexport const paginationLabelVariants = cva(\n clsx(\n // Typography\n 'text-muted-foreground text-[13px] font-medium leading-normal tracking-[-0.26px]',\n ),\n);\n\n/**\n * Pagination range label variants\n *\n * Range display text (e.g., \"1 - 5 de 5 ítems\")\n */\nexport const paginationRangeLabelVariants = cva(\n clsx(\n // Typography\n 'text-muted-foreground text-[13px] font-medium leading-normal tracking-[-0.26px]',\n // Text behavior\n 'whitespace-nowrap',\n ),\n);\n\n/**\n * Pagination input variants\n *\n * Page number input field\n */\nexport const paginationInputVariants = cva(\n clsx(\n // Size\n 'w-[42px] h-[29px]',\n // Spacing\n 'px-2',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-muted-foreground font-sans text-[13px] font-medium leading-normal tracking-[-0.26px] text-center',\n // Focus\n 'outline-none',\n // Transitions\n 'transition-all duration-200',\n // Remove number input spinners\n '[appearance:textfield]',\n '[&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:appearance-none',\n // States\n 'hover:enabled:border-muted-foreground/30',\n 'focus:border-ring focus:ring-2 focus:ring-ring/30',\n 'disabled:bg-muted disabled:cursor-not-allowed disabled:opacity-50',\n ),\n);\n\n/**\n * Pagination select wrapper variants\n *\n * Wrapper for the select dropdown\n */\nexport const paginationSelectWrapperVariants = cva(\n clsx(\n // Position\n 'relative',\n // Display\n 'inline-block',\n ),\n);\n\n/**\n * Pagination select variants\n *\n * Page size select dropdown\n */\nexport const paginationSelectVariants = cva(\n clsx(\n // Size\n 'w-[47px] h-[29px]',\n // Spacing\n 'pl-2 pr-6',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-muted-foreground font-sans text-[13px] font-medium leading-normal tracking-[-0.26px]',\n // Focus\n 'outline-none',\n // Cursor\n 'cursor-pointer',\n // Appearance\n 'appearance-none',\n // Transitions\n 'transition-all duration-200',\n // States\n 'hover:enabled:border-muted-foreground/30',\n 'focus:border-ring focus:ring-2 focus:ring-ring/30',\n ),\n);\n\n/**\n * Pagination select icon variants\n *\n * Dropdown chevron icon\n */\nexport const paginationSelectIconVariants = cva(\n clsx(\n // Position\n 'absolute right-[7px] top-1/2 -translate-y-1/2',\n // Pointer events\n 'pointer-events-none',\n ),\n);\n\n/**\n * Pagination navigation controls variants\n *\n * Container for navigation buttons\n */\nexport const paginationNavControlsVariants = cva(\n clsx(\n // Layout\n 'flex items-center gap-[7px]',\n ),\n);\n\n/**\n * Pagination navigation button variants\n *\n * Navigation buttons (first, prev, next, last, refresh)\n */\nexport const paginationNavButtonVariants = cva(\n clsx(\n // Size\n 'w-[29px] h-[29px]',\n // Layout\n 'flex items-center justify-center',\n // Border\n 'rounded-md border border-border',\n // Background\n 'bg-background',\n // Cursor\n 'cursor-pointer',\n // Focus\n 'outline-none',\n // Spacing\n 'p-0',\n // Transitions\n 'transition-all duration-200',\n // States\n 'hover:enabled:bg-muted hover:enabled:border-muted-foreground/30',\n 'active:enabled:bg-muted/80',\n 'focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/30',\n 'disabled:cursor-not-allowed disabled:opacity-40',\n // Disabled SVG color\n '[&:disabled_svg_path]:fill-muted-foreground',\n ),\n {\n variants: {\n isRefresh: {\n true: 'w-[30px]',\n false: '',\n },\n },\n defaultVariants: {\n isRefresh: false,\n },\n },\n);\n","import {\n Component,\n computed,\n effect,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n paginationContainerVariants,\n paginationInputVariants,\n paginationLabelVariants,\n paginationNavButtonVariants,\n paginationNavControlsVariants,\n paginationRangeLabelVariants,\n paginationSectionLeftVariants,\n paginationSectionMiddleVariants,\n paginationSectionRightVariants,\n paginationSelectIconVariants,\n paginationSelectVariants,\n paginationSelectWrapperVariants,\n} from './pagination.variants';\n\nexport interface PaginationChangeEvent {\n currentPage: number;\n pageSize: number;\n}\n\n@Component({\n selector: 'bsg-pagination',\n standalone: true,\n template: `\n <div [class]=\"containerClasses()\">\n <!-- Left section: Current page -->\n <div [class]=\"sectionLeftClasses()\">\n <span [class]=\"labelClasses()\">Página</span>\n <input\n type=\"number\"\n [class]=\"inputClasses()\"\n [value]=\"pageInputValue()\"\n [min]=\"1\"\n [max]=\"resolvedTotalPages()\"\n (focus)=\"onPageInputFocus()\"\n (input)=\"onPageInputChange($event)\"\n (keydown.enter)=\"onPageInputBlur()\"\n (blur)=\"onPageInputBlur()\"\n [disabled]=\"resolvedTotalPages() === 0\"\n />\n <span [class]=\"labelClasses()\">de {{ resolvedTotalPages() }}</span>\n </div>\n\n <!-- Middle section: Page size selector -->\n <div [class]=\"sectionMiddleClasses()\">\n <div [class]=\"selectWrapperClasses()\">\n <select\n [class]=\"selectClasses()\"\n [value]=\"pageSizeSig()\"\n (change)=\"onPageSizeSelectChange($event)\"\n >\n @for (option of pageSizeOptions(); track option) {\n <option [value]=\"option\">{{ option }}</option>\n }\n </select>\n\n <svg\n [class]=\"selectIconClasses()\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.8081 5.18312C11.0522 4.93904 11.4478 4.93904 11.6919 5.18312C11.936 5.4272 11.936 5.82283 11.6919 6.06691L7.94191 9.81691C7.69783 10.061 7.3022 10.061 7.05812 9.81691L3.30812 6.06691C3.06404 5.82283 3.06404 5.4272 3.30812 5.18312C3.5522 4.93904 3.94783 4.93904 4.19191 5.18312L7.50001 8.49122L10.8081 5.18312Z\"\n fill=\"#848485\"\n />\n </svg>\n </div>\n <span [class]=\"labelClasses()\">ítems por página</span>\n </div>\n\n <!-- Right section: Range label and navigation -->\n <div [class]=\"sectionRightClasses()\">\n <span [class]=\"rangeLabelClasses()\">{{ computedRangeLabel() }}</span>\n\n <div [class]=\"navControlsClasses()\">\n <!-- First page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"pageSig() === 1 || resolvedTotalPages() === 0\"\n (click)=\"goToFirstPage()\"\n aria-label=\"Primera página\"\n >\n <svg\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.43312 3.93312C6.6772 3.68904 7.07283 3.68904 7.31691 3.93312C7.56099 4.1772 7.56099 4.57283 7.31691 4.81691L4.6338 7.50001L7.31691 10.1831C7.56099 10.4272 7.56099 10.8228 7.31691 11.0669C7.07283 11.311 6.6772 11.311 6.43312 11.0669L3.30812 7.94191C3.06404 7.69783 3.06404 7.3022 3.30812 7.05812L6.43312 3.93312ZM10.8081 3.93312C11.0522 3.68904 11.4478 3.68904 11.6919 3.93312C11.936 4.1772 11.936 4.57283 11.6919 4.81691L9.0088 7.50001L11.6919 10.1831C11.936 10.4272 11.936 10.8228 11.6919 11.0669C11.4478 11.311 11.0522 11.311 10.8081 11.0669L7.68312 7.94191C7.43904 7.69783 7.43904 7.3022 7.68312 7.05812L10.8081 3.93312Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Previous page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"pageSig() === 1 || resolvedTotalPages() === 0\"\n (click)=\"goToPreviousPage()\"\n aria-label=\"Página anterior\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.33754 3.08754C8.56535 2.85974 8.93461 2.85974 9.16241 3.08754C9.39022 3.31535 9.39022 3.68461 9.16241 3.91241L6.07485 6.99998L9.16241 10.0875C9.39022 10.3153 9.39022 10.6846 9.16241 10.9124C8.93461 11.1402 8.56535 11.1402 8.33754 10.9124L4.83754 7.41241C4.60974 7.18461 4.60974 6.81535 4.83754 6.58754L8.33754 3.08754Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Next page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"\n pageSig() >= resolvedTotalPages() || resolvedTotalPages() === 0\n \"\n (click)=\"goToNextPage()\"\n aria-label=\"Página siguiente\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.52864 3.52864C5.78899 3.26829 6.21099 3.26829 6.47134 3.52864L10.4713 7.52864C10.7317 7.78899 10.7317 8.211 10.4713 8.47134L6.47134 12.4713C6.21099 12.7317 5.78899 12.7317 5.52864 12.4713C5.26829 12.211 5.26829 11.789 5.52864 11.5286L9.05728 7.99999L5.52864 4.47134C5.26829 4.21099 5.26829 3.78899 5.52864 3.52864Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Last page -->\n <button\n type=\"button\"\n [class]=\"navButtonClasses()\"\n [disabled]=\"\n pageSig() >= resolvedTotalPages() || resolvedTotalPages() === 0\n \"\n (click)=\"goToLastPage()\"\n aria-label=\"Última página\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.52864 4.19532C3.78899 3.93497 4.21099 3.93497 4.47134 4.19532L7.80468 7.52866C8.06503 7.78901 8.06503 8.21102 7.80468 8.47136L4.47134 11.8047C4.21099 12.065 3.78899 12.065 3.52864 11.8047C3.26829 11.5443 3.26829 11.1223 3.52864 10.862L6.39062 8.00001L3.52864 5.13803C3.26829 4.87768 3.26829 4.45567 3.52864 4.19532ZM8.1953 4.19532C8.45565 3.93497 8.87766 3.93497 9.13801 4.19532L12.4713 7.52866C12.7317 7.78901 12.7317 8.21102 12.4713 8.47136L9.13801 11.8047C8.87766 12.065 8.45565 12.065 8.1953 11.8047C7.93495 11.5443 7.93495 11.1223 8.1953 10.862L11.0573 8.00001L8.1953 5.13803C7.93495 4.87768 7.93495 4.45567 8.1953 4.19532Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n\n <!-- Refresh -->\n <button\n type=\"button\"\n [class]=\"refreshButtonClasses()\"\n (click)=\"onRefresh()\"\n aria-label=\"Refrescar\"\n >\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M1.16663 12.25V9.33332C1.16663 9.01116 1.42779 8.74999 1.74996 8.74999H4.66663C4.98879 8.74999 5.24996 9.01116 5.24996 9.33332C5.24996 9.65549 4.98879 9.91666 4.66663 9.91666H3.15816L3.47376 10.2322L3.65491 10.3992C4.57867 11.2098 5.76662 11.6612 7.0011 11.6661C8.23836 11.6658 9.42511 11.1749 10.3 10.3C11.1752 9.42487 11.6666 8.23767 11.6666 6.99999C11.6666 6.67782 11.9278 6.41666 12.25 6.41666C12.5721 6.41666 12.8333 6.67782 12.8333 6.99999C12.8333 8.54709 12.2188 10.0309 11.1249 11.1249C10.0309 12.2189 8.54706 12.8333 6.99996 12.8333H6.99768C5.48052 12.8276 4.02054 12.2721 2.88529 11.2759L2.65572 11.064L2.33329 10.7415V12.25C2.33329 12.5722 2.07213 12.8333 1.74996 12.8333C1.42779 12.8333 1.16663 12.5722 1.16663 12.25ZM1.16663 6.99999C1.16663 5.45289 1.78108 3.96903 2.87504 2.87507C3.969 1.78111 5.45286 1.16666 6.99996 1.16666H7.00224L7.30473 1.1752C8.71256 1.24848 10.055 1.79424 11.1146 2.72411L11.3442 2.93603L11.6666 3.25845V1.74999C11.6666 1.42782 11.9278 1.16666 12.25 1.16666C12.5721 1.16666 12.8333 1.42782 12.8333 1.74999V4.66666C12.8333 4.98882 12.5721 5.24999 12.25 5.24999H9.33329C9.01113 5.24999 8.74996 4.98882 8.74996 4.66666C8.74996 4.34449 9.01113 4.08332 9.33329 4.08332H10.8418L10.5262 3.76773L10.345 3.60082C9.4211 2.79008 8.23293 2.33809 6.99825 2.33332C5.76119 2.33378 4.57468 2.82517 3.69991 3.69994C2.82474 4.57511 2.33329 5.76231 2.33329 6.99999C2.33329 7.32216 2.07213 7.58332 1.74996 7.58332C1.42779 7.58332 1.16663 7.32216 1.16663 6.99999Z\"\n fill=\"#939394\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n})\nexport class PaginationComponent {\n /** Inputs (API existente) */\n readonly currentPage = input<number>(1);\n readonly totalPages = input<number>(1); // se mantiene, pero se \"resuelve\" automáticamente\n readonly pageSize = input<number>(5);\n readonly pageSizeOptions = input<number[]>([5, 10, 20]);\n readonly totalItems = input<number>(5);\n readonly rangeLabel = input<string>(''); // se mantiene, pero ahora el label se calcula\n readonly className = input<string>();\n\n /** Outputs (API existente) */\n readonly pageChange = output<number>();\n readonly pageSizeChange = output<number>();\n readonly paginationChange = output<PaginationChangeEvent>();\n readonly refresh = output<void>();\n\n /** Estado interno (para que el componente funcione sin que el padre lo controle) */\n readonly pageSig = signal<number>(1);\n readonly pageSizeSig = signal<number>(5);\n\n /** Buffer para edición del input */\n private readonly tempPageValue = signal<string>('');\n\n constructor() {\n // Sincroniza estado interno si el padre cambia inputs desde afuera (Storybook Controls o app real)\n effect(() => {\n this.pageSig.set(this.currentPage());\n });\n\n effect(() => {\n this.pageSizeSig.set(this.pageSize());\n });\n\n // Si cambia pageSizeOptions y el pageSize actual ya no existe, cae al primero\n effect(() => {\n const opts = this.pageSizeOptions();\n if (opts.length === 0) return;\n\n const current = this.pageSizeSig();\n if (!opts.includes(current)) {\n this.setPageSize(opts[0]);\n }\n });\n }\n\n /** Total pages calculado con totalItems/pageSize */\n readonly resolvedTotalPages = computed(() => {\n const totalItems = this.totalItems();\n const size = this.pageSizeSig();\n\n if (totalItems > 0 && size > 0) {\n return Math.max(0, Math.ceil(totalItems / size));\n }\n\n // fallback si no hay totalItems (o es 0) => respeta el input\n return Math.max(0, this.totalPages());\n });\n\n /** Range label calculado (siempre) */\n readonly computedRangeLabel = computed(() => {\n const total = this.totalItems();\n const page = this.pageSig();\n const size = this.pageSizeSig();\n\n if (total <= 0 || size <= 0 || this.resolvedTotalPages() === 0) {\n return `0 - 0 de ${Math.max(0, total)} ítems`;\n }\n\n const start = (page - 1) * size + 1;\n const end = Math.min(total, page * size);\n return `${start} - ${end} de ${total} ítems`;\n });\n\n /** Valor visible en el input de página */\n readonly pageInputValue = computed(() => {\n const tmp = this.tempPageValue();\n return tmp !== '' ? tmp : String(this.pageSig());\n });\n\n // Classes\n readonly containerClasses = computed(() =>\n clsx(paginationContainerVariants(), this.className()),\n );\n readonly sectionLeftClasses = computed(() =>\n clsx(paginationSectionLeftVariants()),\n );\n readonly sectionMiddleClasses = computed(() =>\n clsx(paginationSectionMiddleVariants()),\n );\n readonly sectionRightClasses = computed(() =>\n clsx(paginationSectionRightVariants()),\n );\n readonly labelClasses = computed(() => clsx(paginationLabelVariants()));\n readonly rangeLabelClasses = computed(() =>\n clsx(paginationRangeLabelVariants()),\n );\n readonly inputClasses = computed(() => clsx(paginationInputVariants()));\n readonly selectWrapperClasses = computed(() =>\n clsx(paginationSelectWrapperVariants()),\n );\n readonly selectClasses = computed(() => clsx(paginationSelectVariants()));\n readonly selectIconClasses = computed(() =>\n clsx(paginationSelectIconVariants()),\n );\n readonly navControlsClasses = computed(() =>\n clsx(paginationNavControlsVariants()),\n );\n readonly navButtonClasses = computed(() =>\n clsx(paginationNavButtonVariants({ isRefresh: false })),\n );\n readonly refreshButtonClasses = computed(() =>\n clsx(paginationNavButtonVariants({ isRefresh: true })),\n );\n\n // Navigation\n goToFirstPage(): void {\n if (this.resolvedTotalPages() > 0) this.updatePage(1);\n }\n\n goToPreviousPage(): void {\n if (this.pageSig() > 1) this.updatePage(this.pageSig() - 1);\n }\n\n goToNextPage(): void {\n if (this.pageSig() < this.resolvedTotalPages())\n this.updatePage(this.pageSig() + 1);\n }\n\n goToLastPage(): void {\n const last = this.resolvedTotalPages();\n if (last > 0) this.updatePage(last);\n }\n\n // Page input handling\n onPageInputFocus(): void {\n this.tempPageValue.set(String(this.pageSig()));\n }\n\n onPageInputChange(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n this.tempPageValue.set(inputEl.value);\n }\n\n onPageInputBlur(): void {\n const tempValue = this.tempPageValue().trim();\n if (tempValue === '') {\n this.tempPageValue.set('');\n return;\n }\n\n let page = parseInt(tempValue, 10);\n if (Number.isNaN(page)) {\n this.tempPageValue.set('');\n return;\n }\n\n page = Math.max(1, Math.min(page, this.resolvedTotalPages() || 1));\n this.updatePage(page);\n this.tempPageValue.set('');\n }\n\n // Page size change\n onPageSizeSelectChange(event: Event): void {\n const select = event.target as HTMLSelectElement;\n const newSize = parseInt(select.value, 10);\n if (Number.isNaN(newSize) || newSize <= 0) return;\n\n if (newSize !== this.pageSizeSig()) {\n this.setPageSize(newSize);\n }\n }\n\n private setPageSize(newSize: number): void {\n this.pageSizeSig.set(newSize);\n\n // Ajusta página actual si se sale del rango con el nuevo totalPages\n const max = this.resolvedTotalPages();\n const nextPage = Math.max(1, Math.min(this.pageSig(), max || 1));\n\n // Si prefieres resetear siempre a 1 al cambiar tamaño, cambia por: this.updatePage(1)\n this.pageSig.set(nextPage);\n\n this.pageSizeChange.emit(newSize);\n this.paginationChange.emit({ currentPage: nextPage, pageSize: newSize });\n\n // Si el clamp cambió la página, también notificamos pageChange\n if (nextPage !== this.currentPage()) {\n this.pageChange.emit(nextPage);\n }\n }\n\n onRefresh(): void {\n this.refresh.emit();\n }\n\n private updatePage(page: number): void {\n const max = this.resolvedTotalPages();\n const clamped = Math.max(1, Math.min(page, max || 1));\n\n this.pageSig.set(clamped);\n this.tempPageValue.set('');\n\n this.pageChange.emit(clamped);\n this.paginationChange.emit({\n currentPage: clamped,\n pageSize: this.pageSizeSig(),\n });\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Separator variants\n *\n * Controls the visual separator line between content sections\n */\nexport const separatorVariants = cva(\n clsx(\n // Base\n 'shrink-0',\n // Background color (semantic token)\n 'bg-border',\n // Reset\n 'border-none',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'w-full h-px',\n vertical: 'h-full w-px self-stretch',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n);\n","import { Component, computed, input } from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport { separatorVariants } from './separator.variants';\n\nexport type SeparatorOrientation = 'horizontal' | 'vertical';\n\nexport type SeparatorVariantsProps = VariantProps<typeof separatorVariants>;\n\n/**\n * Separator Component\n *\n * A visual divider between content sections.\n *\n * Usage:\n * ```html\n * <bsg-separator />\n * <bsg-separator orientation=\"vertical\" />\n * ```\n */\n@Component({\n selector: 'bsg-separator',\n standalone: true,\n template: `\n <div\n [class]=\"separatorClasses()\"\n role=\"separator\"\n [attr.aria-orientation]=\"orientation()\"\n ></div>\n `,\n styles: `\n :host {\n display: block;\n }\n\n :host([orientation='vertical']) {\n display: inline-block;\n height: 100%;\n }\n `,\n})\nexport class SeparatorComponent {\n /** Separator orientation */\n readonly orientation = input<SeparatorOrientation>('horizontal');\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Computed separator classes */\n readonly separatorClasses = computed(() =>\n clsx(\n separatorVariants({ orientation: this.orientation() }),\n this.className(),\n ),\n );\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BadgeComponent } from '../badge/badge.component';\nimport {\n ButtonComponent,\n ButtonSize,\n ButtonVariant,\n} from '../button/button.component';\nimport { LabelComponent } from '../label/label.component';\nimport { PaginationComponent } from '../pagination/pagination.component';\nimport { SeparatorComponent } from '../separator/separator.component';\nimport {\n TabItem,\n TabNavigationComponent,\n} from '../tab-navigation/tab-navigation.component';\n\nexport type TableVariant =\n | 'table-actions'\n | 'table-basic'\n | 'table-tabs'\n | 'list-content';\n\nexport interface TableColumn {\n key: string;\n label: string;\n width?: string;\n}\n\nexport interface TableRow {\n [key: string]: any;\n}\n\nexport interface ListItem {\n text: string;\n}\n\nexport interface TabConfig extends TabItem {\n tableData?: {\n columns: TableColumn[];\n rows: TableRow[];\n };\n}\n\nexport interface TableAction {\n label: string;\n variant?: 'approve' | 'reject' | 'view';\n onClick?: () => void;\n}\n\n/**\n * @deprecated Use the new composable table components (TableComponent, TableHeader, TableBody, etc.) instead.\n * This component is kept for backwards compatibility.\n */\n@Component({\n selector: 'bsg-table-container',\n standalone: true,\n imports: [\n TabNavigationComponent,\n PaginationComponent,\n SeparatorComponent,\n LabelComponent,\n ButtonComponent,\n BadgeComponent,\n ],\n template: `\n <div class=\"table\" [class]=\"containerClasses\">\n <!-- Header -->\n <div\n class=\"table-header\"\n [class.table-header-collapsible]=\"isCollapsible\"\n >\n <!-- Icon -->\n @if (!isCollapsible) {\n <div class=\"table-icon\">\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 28 28\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"14\" cy=\"14\" r=\"14\" fill=\"#2563EB\" />\n </svg>\n <svg\n class=\"table-check-icon\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_check)\">\n <path\n d=\"M6.43155 0.706459C7.98492 0.461733 9.5751 0.757369 10.9372 1.54325C11.2361 1.71571 11.339 2.09758 11.1667 2.39652C10.9942 2.6955 10.6118 2.79791 10.3128 2.6254C9.19841 1.98244 7.89713 1.74102 6.62625 1.9412C5.35534 2.14143 4.19126 2.77142 3.32852 3.72587C2.4658 4.68036 1.95624 5.90193 1.88504 7.18656C1.81386 8.47123 2.18527 9.74182 2.93729 10.7858C3.6893 11.8297 4.77673 12.5845 6.01773 12.9239C7.25873 13.2632 8.57877 13.167 9.75736 12.651C10.936 12.1351 11.9023 11.2303 12.4948 10.0882C13.0872 8.94613 13.2698 7.63546 13.013 6.37479C12.9441 6.03664 13.1625 5.7065 13.5006 5.63749C13.8389 5.56857 14.169 5.78696 14.2379 6.12516C14.5519 7.66605 14.328 9.26786 13.6038 10.6637C12.8796 12.0596 11.699 13.1654 10.2585 13.7961C8.818 14.4266 7.20487 14.5441 5.68814 14.1293C4.17132 13.7145 2.84201 12.7923 1.92288 11.5164C1.00377 10.2404 0.549897 8.68771 0.636872 7.11759C0.72387 5.54744 1.34693 4.05449 2.4014 2.88786C3.45585 1.7213 4.87821 0.951184 6.43155 0.706459ZM13.3084 2.05778C13.5525 1.81398 13.9482 1.81382 14.1922 2.05778C14.4362 2.30185 14.4362 2.6981 14.1922 2.94218L7.94217 9.19218C7.69818 9.43613 7.30247 9.43597 7.05838 9.19218L5.18338 7.31718C4.9393 7.0731 4.9393 6.67686 5.18338 6.43278C5.42747 6.18898 5.82318 6.18882 6.06717 6.43278L7.50028 7.86588L13.3084 2.05778Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_check\">\n <rect width=\"15\" height=\"15\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n }\n\n <!-- Title -->\n <h2 class=\"table-title\">{{ title }}</h2>\n\n <!-- Header Actions (e.g., \"Nuevo mensaje\" button) -->\n @if (headerAction && !isCollapsible) {\n <div class=\"table-header-actions\">\n <bsg-button\n [label]=\"headerAction.label\"\n [variant]=\"headerAction.variant || 'default'\"\n [size]=\"headerAction.size || 'md'\"\n (onClick)=\"onHeaderAction()\"\n ></bsg-button>\n </div>\n }\n\n <!-- Chevron Icon for Collapsible Mode (right side) -->\n @if (isCollapsible) {\n <button\n type=\"button\"\n class=\"table-collapse-chevron\"\n [class.table-chevron-expanded]=\"isExpanded\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"isExpanded\"\n [attr.aria-label]=\"isExpanded ? 'Contraer' : 'Expandir'\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.3691 8.22462C11.7618 7.90427 12.3408 7.92686 12.707 8.29298L18.707 14.293C19.0975 14.6835 19.0975 15.3165 18.707 15.707C18.3164 16.0976 17.6834 16.0976 17.2929 15.707L11.9999 10.4141L6.70696 15.707C6.31643 16.0976 5.68342 16.0976 5.29289 15.707C4.90237 15.3165 4.90237 14.6835 5.29289 14.293L11.2929 8.29298L11.3691 8.22462Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n }\n </div>\n\n <!-- Body -->\n <div class=\"table-body\">\n <!-- Table Variants (table-basic, table-actions) -->\n @if (variant === 'table-basic' || variant === 'table-actions') {\n <div class=\"table-content\">\n <!-- Table Header -->\n <div class=\"table-content-header\">\n @for (column of tableColumns; track column.key) {\n <div\n class=\"table-header-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n {{ column.label }}\n </div>\n }\n @if (variant === 'table-actions' && showActionsColumn) {\n <div\n class=\"table-header-cell table-actions-header\"\n [style.width]=\"actionsColumnWidth || 'auto'\"\n >\n {{ actionsColumnLabel || 'Acciones' }}\n </div>\n }\n </div>\n\n <bsg-separator></bsg-separator>\n\n <!-- Table Rows -->\n <div class=\"table-content-body\">\n @for (row of tableRows; track $index; let i = $index) {\n <div class=\"table-row\">\n @for (column of tableColumns; track column.key) {\n <div\n class=\"table-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n <!-- Render badge if specified -->\n @if (row[column.key + '_badge']) {\n <bsg-badge\n [variant]=\"\n row[column.key + '_badge_variant'] || 'default'\n \"\n [value]=\"row[column.key]\"\n [size]=\"row[column.key + '_badge_size'] || 'default'\"\n ></bsg-badge>\n } @else if (row[column.key + '_label']) {\n <!-- Render label if specified -->\n <bsg-label [text]=\"row[column.key]\"></bsg-label>\n } @else {\n <!-- Render plain text otherwise -->\n <span>{{ row[column.key] }}</span>\n }\n </div>\n }\n\n <!-- Actions Column (for table-actions variant) -->\n @if (variant === 'table-actions' && row['actions']) {\n <div\n class=\"table-cell table-actions-cell\"\n [style.width]=\"actionsColumnWidth || 'auto'\"\n >\n <div class=\"table-actions\">\n @for (action of row['actions']; track $index) {\n <bsg-button\n [label]=\"action.label\"\n [variant]=\"getActionVariant(action.variant)\"\n [size]=\"'md'\"\n [shape]=\"'rectangular'\"\n (onClick)=\"onRowAction(i, action)\"\n class=\"table-action-btn\"\n ></bsg-button>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Pagination -->\n @if (tablePagination) {\n <div class=\"table-pagination\">\n <bsg-separator></bsg-separator>\n <bsg-pagination\n [currentPage]=\"tablePagination.currentPage\"\n [totalPages]=\"tablePagination.totalPages\"\n [pageSize]=\"tablePagination.pageSize\"\n [pageSizeOptions]=\"tablePagination.pageSizeOptions\"\n [totalItems]=\"tablePagination.totalItems\"\n [rangeLabel]=\"tablePagination.rangeLabel\"\n (pageChange)=\"onTablePageChange($event)\"\n (pageSizeChange)=\"onTablePageSizeChange($event)\"\n (refresh)=\"onTableRefresh()\"\n ></bsg-pagination>\n </div>\n }\n </div>\n }\n\n <!-- List Variant (list-content) -->\n @if (variant === 'list-content') {\n <div class=\"table-list\">\n @for (item of listItems; track $index; let i = $index) {\n <div class=\"table-list-item\">\n <div class=\"table-list-number\">\n <svg\n width=\"27\"\n height=\"26\"\n viewBox=\"0 0 27 26\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <ellipse\n cx=\"13.5\"\n cy=\"13\"\n rx=\"13.5\"\n ry=\"13\"\n fill=\"#2563EB\"\n />\n </svg>\n <span class=\"table-list-number-text\">{{ i + 1 }}</span>\n </div>\n <div class=\"table-list-text\">{{ item.text }}</div>\n </div>\n }\n </div>\n }\n\n <!-- Tabs Variant (table-tabs) -->\n @if (variant === 'table-tabs') {\n <div class=\"table-tabs-wrapper\">\n <!-- Tab Navigation -->\n <bsg-tab-navigation\n [tabs]=\"tabs\"\n [activeIndex]=\"activeTabIndex\"\n [size]=\"'md'\"\n [variant]=\"'text'\"\n (tabChange)=\"onTabChange($event)\"\n ></bsg-tab-navigation>\n\n <!-- Tab Content -->\n <div class=\"table-tab-content\">\n @for (tab of tabs; track $index; let i = $index) {\n @if (i === activeTabIndex && tab.tableData) {\n <div class=\"table-content\">\n <!-- Table Header -->\n <div class=\"table-content-header\">\n @for (column of tab.tableData.columns; track column.key) {\n <div\n class=\"table-header-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n {{ column.label }}\n </div>\n }\n </div>\n\n <bsg-separator></bsg-separator>\n\n <!-- Table Rows -->\n <div class=\"table-content-body\">\n @for (row of tab.tableData.rows; track $index) {\n <div class=\"table-row\">\n @for (\n column of tab.tableData.columns;\n track column.key\n ) {\n <div\n class=\"table-cell\"\n [style.width]=\"column.width || 'auto'\"\n >\n <!-- Render badge if specified -->\n @if (row[column.key + '_badge']) {\n <bsg-badge\n [variant]=\"\n row[column.key + '_badge_variant'] ||\n 'default'\n \"\n [value]=\"row[column.key]\"\n [size]=\"\n row[column.key + '_badge_size'] || 'default'\n \"\n ></bsg-badge>\n } @else if (row[column.key + '_label']) {\n <!-- Render label if specified -->\n <bsg-label [text]=\"row[column.key]\"></bsg-label>\n } @else {\n <!-- Render plain text otherwise -->\n <span>{{ row[column.key] }}</span>\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Pagination for this tab -->\n @if (tabsPagination && tabsPagination[i]) {\n <div class=\"table-pagination\">\n <bsg-separator></bsg-separator>\n <bsg-pagination\n [currentPage]=\"tabsPagination[i].currentPage\"\n [totalPages]=\"tabsPagination[i].totalPages\"\n [pageSize]=\"tabsPagination[i].pageSize\"\n [pageSizeOptions]=\"tabsPagination[i].pageSizeOptions\"\n [totalItems]=\"tabsPagination[i].totalItems\"\n [rangeLabel]=\"tabsPagination[i].rangeLabel\"\n (pageChange)=\"onTabPageChange(i, $event)\"\n (pageSizeChange)=\"onTabPageSizeChange(i, $event)\"\n (refresh)=\"onTabRefresh(i)\"\n ></bsg-pagination>\n </div>\n }\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n </div>\n `,\n styleUrls: ['./table.css'],\n})\nexport class TableContainerComponent {\n /** Container title */\n @Input() title: string = 'Título del Contenedor';\n\n /** Display variant */\n @Input() variant: TableVariant = 'table-basic';\n\n /** Header action button (e.g., \"Nuevo mensaje\") */\n @Input() headerAction?: {\n label: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n };\n\n // Collapsible mode inputs\n @Input() isCollapsible: boolean = false;\n @Input() isExpanded: boolean = true;\n\n @Input() disableExpansion: boolean = false;\n\n // Table variant inputs\n @Input() tableColumns: TableColumn[] = [];\n @Input() tableRows: TableRow[] = [];\n @Input() tablePagination?: {\n currentPage: number;\n totalPages: number;\n pageSize: number;\n pageSizeOptions: number[];\n totalItems: number;\n rangeLabel: string;\n };\n\n // Table-actions specific\n @Input() showActionsColumn: boolean = true;\n @Input() actionsColumnLabel: string = 'Acciones';\n @Input() actionsColumnWidth: string = '200px';\n\n // List variant inputs\n @Input() listItems: ListItem[] = [];\n\n // Tabs variant inputs\n @Input() tabs: TabConfig[] = [];\n @Input() activeTabIndex: number = 0;\n @Input() tabsPagination: any[] = [];\n\n // Events\n @Output() headerActionClick = new EventEmitter<void>();\n @Output() collapseToggle = new EventEmitter<boolean>();\n @Output() tabChange = new EventEmitter<number>();\n @Output() tablePageChange = new EventEmitter<number>();\n @Output() tablePageSizeChange = new EventEmitter<number>();\n @Output() tableRefresh = new EventEmitter<void>();\n @Output() tabPageChange = new EventEmitter<{\n tabIndex: number;\n page: number;\n }>();\n @Output() tabPageSizeChange = new EventEmitter<{\n tabIndex: number;\n pageSize: number;\n }>();\n @Output() tabRefresh = new EventEmitter<number>();\n @Output() rowAction = new EventEmitter<{\n rowIndex: number;\n action: TableAction;\n }>();\n\n get containerClasses(): string[] {\n const classes = [`table-${this.variant}`];\n if (this.isCollapsible && !this.isExpanded) {\n classes.push('table-collapsed');\n }\n return classes;\n }\n\n toggleCollapse(): void {\n this.isExpanded = !this.isExpanded;\n this.collapseToggle.emit(this.isExpanded);\n }\n\n onHeaderAction(): void {\n this.headerActionClick.emit();\n }\n\n onTabChange(index: number): void {\n this.activeTabIndex = index;\n this.tabChange.emit(index);\n }\n\n onTablePageChange(page: number): void {\n this.tablePageChange.emit(page);\n }\n\n onTablePageSizeChange(pageSize: number): void {\n this.tablePageSizeChange.emit(pageSize);\n }\n\n onTableRefresh(): void {\n this.tableRefresh.emit();\n }\n\n onTabPageChange(tabIndex: number, page: number): void {\n this.tabPageChange.emit({ tabIndex, page });\n }\n\n onTabPageSizeChange(tabIndex: number, pageSize: number): void {\n this.tabPageSizeChange.emit({ tabIndex, pageSize });\n }\n\n onTabRefresh(tabIndex: number): void {\n this.tabRefresh.emit(tabIndex);\n }\n\n onRowAction(rowIndex: number, action: TableAction): void {\n this.rowAction.emit({ rowIndex, action });\n if (action.onClick) {\n action.onClick();\n }\n }\n\n getActionVariant(actionVariant?: string): ButtonVariant {\n switch (actionVariant) {\n case 'approve':\n return 'default'; // Green variant\n case 'reject':\n return 'destructive'; // Red variant\n case 'view':\n return 'ghost'; // Light blue variant\n default:\n return 'default';\n }\n }\n}\n","// Table components (shadcn-style primitives)\nexport { TableComponent } from './table.component';\nexport { TableHeaderComponent } from './table-header.component';\nexport { TableBodyComponent } from './table-body.component';\nexport { TableFooterComponent } from './table-footer.component';\nexport { TableRowComponent } from './table-row.component';\nexport { TableHeadComponent } from './table-head.component';\nexport { TableCellComponent } from './table-cell.component';\n\n// Table Card components\nexport { TableCardComponent } from './table-card.component';\nexport {\n TableCardHeaderComponent,\n type TableCardHeaderColor,\n} from './table-card-header.component';\nexport { TableCardFooterComponent } from './table-card-footer.component';\n\n// Legacy table container (for backwards compatibility)\nexport {\n TableContainerComponent,\n type TableVariant,\n type TableColumn,\n type TableRow,\n type ListItem,\n type TabConfig,\n type TableAction,\n} from './table-container.component';\n\n// Variants\nexport {\n // Core table variants\n tableVariants,\n tableWrapperVariants,\n tableHeaderVariants,\n tableBodyVariants,\n tableFooterVariants,\n tableRowVariants,\n tableHeadVariants,\n tableCellVariants,\n // Card variants\n tableCardHeaderVariants,\n tableCardFooterVariants,\n // Utility variants\n tablePaginationVariants,\n tableEmptyStateVariants,\n tableLoadingVariants,\n // Modifier variants\n tableStripedVariants,\n tableCompactVariants,\n} from './table.variants';\n","import {\n Component,\n forwardRef,\n HostBinding,\n input,\n linkedSignal,\n signal,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\nexport const textareaVariants = cva(\n clsx(\n // Layout & sizing\n 'w-full min-w-0',\n 'min-h-[80px]',\n // Border & radius\n 'rounded-md border border-input',\n // Spacing\n 'px-3 py-2',\n // Typography\n 'text-base md:text-sm',\n // Colors\n 'bg-transparent text-foreground',\n 'placeholder:text-muted-foreground',\n // Effects\n 'shadow-xs transition-[color,box-shadow] outline-none',\n // Resize behavior\n 'resize-y',\n // Focus state\n 'focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50',\n // Disabled state\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n // Selection styles\n 'selection:bg-primary selection:text-primary-foreground',\n // Dark mode\n 'dark:bg-input/30',\n // Invalid state\n 'aria-invalid:border-destructive aria-invalid:ring-destructive/20',\n 'dark:aria-invalid:ring-destructive/40',\n ),\n {\n variants: {\n size: {\n sm: 'min-h-[60px] py-1 text-xs',\n default: 'min-h-[80px] py-2',\n lg: 'min-h-[120px] py-3 text-base',\n },\n resize: {\n none: 'resize-none',\n vertical: 'resize-y',\n horizontal: 'resize-x',\n both: 'resize',\n },\n },\n defaultVariants: {\n size: 'default',\n resize: 'vertical',\n },\n },\n);\n\nexport type TextareaSize = VariantProps<typeof textareaVariants>['size'];\nexport type TextareaResize = VariantProps<typeof textareaVariants>['resize'];\n\n@Component({\n selector: 'bsg-textarea',\n standalone: true,\n imports: [],\n template: `\n <textarea\n [class]=\"computedClasses\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [readonly]=\"readonly()\"\n [rows]=\"rows()\"\n [attr.aria-invalid]=\"ariaInvalid()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onTouched()\"\n (focus)=\"onFocus()\"\n ></textarea>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true,\n },\n ],\n})\nexport class TextareaComponent implements ControlValueAccessor, Validator {\n placeholder = input<string>('');\n disabled = input<boolean>(false);\n required = input<boolean>(false);\n readonly = input<boolean>(false);\n rows = input<number>(3);\n ariaInvalid = input<boolean>();\n size = input<TextareaSize>('default');\n resize = input<TextareaResize>('vertical');\n className = input<string>();\n\n @HostBinding('class') get hostClasses(): string {\n return 'block';\n }\n\n value = signal('');\n\n // Internal disabled state for ControlValueAccessor, synced with input\n disabledState = linkedSignal(() => this.disabled());\n\n // Store callbacks as signals for better reactivity\n private onChangeCallback = signal<(value: string) => void>(() => {});\n private onTouchedCallback = signal<() => void>(() => {});\n\n get computedClasses(): string {\n return clsx(\n textareaVariants({\n size: this.size(),\n resize: this.resize(),\n }),\n this.className(),\n );\n }\n\n onInput(event: Event): void {\n const textarea = event.target as HTMLTextAreaElement;\n this.value.set(textarea.value);\n this.onChangeCallback()(textarea.value);\n }\n\n onTouched(): void {\n this.onTouchedCallback()();\n }\n\n onFocus(): void {\n // Hook for focus event if needed\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChangeCallback.set(fn);\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedCallback.set(fn);\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n\n // Validator implementation\n validate(control: AbstractControl): ValidationErrors | null {\n // HTML5 validation support\n if (this.required() && !control.value) {\n return { required: true };\n }\n\n // Min/max length validation could be added here if needed\n return null;\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * TimePicker field container variants\n *\n * Controls the outer container including label and error\n */\nexport const timepickerFieldVariants = cva(\n clsx(\n // Layout\n 'flex flex-col gap-1.5',\n ),\n);\n\n/**\n * TimePicker label variants\n */\nexport const timepickerLabelVariants = cva(\n clsx(\n // Typography\n 'text-sm font-medium leading-5',\n // Color\n 'text-foreground',\n // Spacing\n 'mb-0.5',\n ),\n);\n\n/**\n * TimePicker wrapper variants\n *\n * Controls the input wrapper with size and state variants\n */\nexport const timepickerWrapperVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center gap-3',\n // Shape\n 'rounded-md',\n // Border\n 'border',\n // Position\n 'relative',\n // Transition\n 'transition-all duration-200',\n // Width\n 'w-full',\n // Background\n 'bg-background',\n ),\n {\n variants: {\n size: {\n sm: 'h-8 py-1 px-2 pr-2 pl-3',\n md: 'h-10 py-1 px-2 pr-2 pl-3',\n lg: 'h-12 py-1 px-2 pr-2 pl-3',\n },\n state: {\n default: 'border-input hover:border-ring/50',\n hover: 'border-ring/50',\n focus: 'border-ring ring-2 ring-offset-2 ring-ring',\n disabled:\n 'border-input opacity-40 cursor-not-allowed pointer-events-none',\n error: 'border-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n state: 'default',\n },\n },\n);\n\n/**\n * TimePicker input field variants\n */\nexport const timepickerInputVariants = cva(\n clsx(\n // Layout\n 'flex-1',\n // Reset\n 'border-none outline-none bg-transparent',\n // Typography\n 'text-base font-normal leading-6 tracking-tight',\n // Color (semantic token)\n 'text-foreground',\n // Placeholder (semantic token)\n 'placeholder:text-muted-foreground',\n // Cursor\n 'cursor-pointer',\n // Disabled\n 'disabled:cursor-not-allowed',\n ),\n {\n variants: {\n state: {\n default: '',\n hover: '',\n focus: 'text-foreground',\n disabled: 'cursor-not-allowed',\n error: 'text-destructive placeholder:text-destructive',\n },\n },\n defaultVariants: {\n state: 'default',\n },\n },\n);\n\n/**\n * TimePicker icon button variants\n */\nexport const timepickerIconButtonVariants = cva(\n clsx(\n // Size\n 'shrink-0 size-6 mr-1',\n // Layout\n 'flex items-center justify-center',\n // Reset\n 'bg-transparent border-none p-0',\n // Cursor\n 'cursor-pointer',\n // Color (semantic token)\n 'text-muted-foreground',\n // Transition\n 'transition-opacity duration-200',\n // Hover\n 'hover:opacity-70 hover:text-foreground',\n // Disabled\n 'disabled:cursor-not-allowed disabled:opacity-40',\n ),\n);\n\n/**\n * TimePicker dropdown variants\n */\nexport const timepickerDropdownVariants = cva(\n clsx(\n // Position\n 'absolute top-[calc(100%+4px)] left-0 z-[10000]',\n // Shape\n 'rounded-md',\n // Border (semantic token)\n 'border border-border',\n // Background (semantic token)\n 'bg-popover',\n // Text color (semantic token)\n 'text-popover-foreground',\n // Shadow (semantic token)\n 'shadow-(--shadow-dropdown)',\n // Layout\n 'flex flex-col overflow-hidden',\n ),\n {\n variants: {\n size: {\n sm: 'w-40',\n md: 'w-44',\n lg: 'w-52',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n/**\n * TimePicker selection area variants\n */\nexport const timepickerSelectionAreaVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-center gap-2',\n // Spacing\n 'p-2',\n // Border (semantic token)\n 'border-b border-border',\n ),\n);\n\n/**\n * TimePicker column variants\n */\nexport const timepickerColumnVariants = cva(\n clsx(\n // Layout\n 'flex flex-col flex-1',\n ),\n);\n\n/**\n * TimePicker column header variants\n */\nexport const timepickerColumnHeaderVariants = cva(\n clsx(\n // Typography\n 'text-xs font-semibold uppercase tracking-wide',\n // Color (semantic token)\n 'text-muted-foreground',\n // Alignment\n 'text-center',\n // Spacing\n 'py-1',\n ),\n);\n\n/**\n * TimePicker list variants\n */\nexport const timepickerListVariants = cva(\n clsx(\n // Size\n 'max-h-40',\n // Scroll\n 'overflow-y-auto',\n // Layout\n 'flex flex-col gap-0.5',\n // Spacing\n 'py-1',\n // Scrollbar (semantic token for thumb color)\n 'scrollbar-thin scrollbar-thumb-border scrollbar-track-transparent',\n ),\n);\n\n/**\n * TimePicker option variants\n */\nexport const timepickerOptionVariants = cva(\n clsx(\n // Spacing\n 'p-2',\n // Typography\n 'text-sm font-normal leading-5',\n // Color (semantic token)\n 'text-foreground',\n // Alignment\n 'text-center',\n // Cursor\n 'cursor-pointer',\n // Shape\n 'rounded',\n // Size\n 'min-h-8',\n // Layout\n 'flex items-center justify-center',\n // Transition\n 'transition-all duration-150',\n ),\n {\n variants: {\n selected: {\n true: 'bg-primary text-primary-foreground font-medium hover:bg-primary/90',\n false: 'hover:bg-accent',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed text-muted-foreground hover:bg-transparent',\n false: '',\n },\n },\n defaultVariants: {\n selected: false,\n disabled: false,\n },\n },\n);\n\n/**\n * TimePicker separator variants\n */\nexport const timepickerSeparatorVariants = cva(\n clsx(\n // Typography\n 'text-xl font-medium',\n // Color (semantic token)\n 'text-muted-foreground',\n // Position\n 'mt-5',\n ),\n);\n\n/**\n * TimePicker actions container variants\n */\nexport const timepickerActionsVariants = cva(\n clsx(\n // Layout\n 'flex gap-2',\n // Spacing\n 'p-2',\n // Border (semantic token)\n 'border-t border-border',\n ),\n);\n\n/**\n * TimePicker action button variants\n */\nexport const timepickerActionButtonVariants = cva(\n clsx(\n // Layout\n 'flex-1',\n // Spacing\n 'py-2 px-3',\n // Typography\n 'text-[13px] font-medium leading-[18px]',\n // Border (semantic token)\n 'border border-input',\n // Shape\n 'rounded',\n // Background\n 'bg-transparent',\n // Color (semantic token)\n 'text-foreground',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-150',\n // Alignment\n 'text-center',\n // Hover (semantic tokens)\n 'hover:bg-accent hover:border-ring/50',\n // Active (semantic token)\n 'active:bg-accent',\n // Disabled\n 'disabled:opacity-40 disabled:cursor-not-allowed',\n ),\n);\n\n/**\n * TimePicker error message variants\n */\nexport const timepickerErrorMessageVariants = cva(\n clsx(\n // Typography\n 'text-xs font-normal leading-4',\n // Color (semantic token)\n 'text-destructive',\n // Spacing\n 'mt-1',\n ),\n);\n","import {\n Component,\n computed,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n OnInit,\n output,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n timepickerActionButtonVariants,\n timepickerActionsVariants,\n timepickerColumnHeaderVariants,\n timepickerColumnVariants,\n timepickerDropdownVariants,\n timepickerErrorMessageVariants,\n timepickerFieldVariants,\n timepickerIconButtonVariants,\n timepickerInputVariants,\n timepickerLabelVariants,\n timepickerListVariants,\n timepickerOptionVariants,\n timepickerSelectionAreaVariants,\n timepickerSeparatorVariants,\n timepickerWrapperVariants,\n} from './timepicker.variants';\n\nexport type TimePickerSize = 'sm' | 'md' | 'lg';\nexport type TimePickerState =\n | 'default'\n | 'hover'\n | 'focus'\n | 'disabled'\n | 'error';\n\nexport type TimePickerWrapperVariantsProps = VariantProps<\n typeof timepickerWrapperVariants\n>;\n\n/**\n * TimePicker Component\n *\n * A time selection component with dropdown for hours and minutes.\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-timepicker\n * [size]=\"'md'\"\n * [value]=\"'14:30'\"\n * [label]=\"'Select time'\"\n * (valueChange)=\"onTimeChange($event)\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-timepicker',\n standalone: true,\n template: `\n <div [class]=\"fieldClasses()\">\n <!-- Optional Label -->\n @if (label()) {\n <label [class]=\"labelClasses()\">{{ label() }}</label>\n }\n\n <!-- TimePicker Input Wrapper -->\n <div [class]=\"wrapperClasses()\">\n <!-- Time Input Field -->\n <input\n #timeInput\n type=\"text\"\n [class]=\"inputClasses()\"\n [value]=\"timeValue()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"state() === 'disabled'\"\n [attr.aria-invalid]=\"state() === 'error'\"\n [attr.aria-describedby]=\"\n state() === 'error' && errorMessage() ? errorMessageId : null\n \"\n (click)=\"openDropdown()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n readonly\n />\n\n <!-- Clock Icon Button -->\n <button\n type=\"button\"\n [class]=\"iconButtonClasses()\"\n [disabled]=\"state() === 'disabled'\"\n (click)=\"toggleDropdown()\"\n [attr.aria-label]=\"\n isOpen() ? 'Cerrar selector de hora' : 'Abrir selector de hora'\n \"\n [attr.aria-pressed]=\"isOpen()\"\n >\n <svg\n class=\"w-4 h-4 shrink-0\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n />\n <path\n d=\"M12 6V12L16 16\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n\n <!-- Dropdown -->\n @if (isOpen()) {\n <div\n [class]=\"dropdownClasses()\"\n role=\"dialog\"\n aria-label=\"Selector de hora\"\n >\n <!-- Time Selection Area -->\n <div [class]=\"selectionAreaClasses()\">\n <!-- Hours Column -->\n <div [class]=\"columnClasses()\">\n <div [class]=\"columnHeaderClasses()\">Horas</div>\n <div [class]=\"listClasses()\" #hoursList>\n @for (hour of availableHours; track hour) {\n <div\n [class]=\"\n getOptionClasses(\n selectedHour() === hour,\n isHourDisabled(hour)\n )\n \"\n [attr.data-value]=\"hour\"\n (click)=\"selectHour(hour)\"\n >\n {{ formatNumber(hour) }}\n </div>\n }\n </div>\n </div>\n\n <!-- Separator -->\n <div [class]=\"separatorClasses()\">:</div>\n\n <!-- Minutes Column -->\n <div [class]=\"columnClasses()\">\n <div [class]=\"columnHeaderClasses()\">Minutos</div>\n <div [class]=\"listClasses()\" #minutesList>\n @for (minute of availableMinutes(); track minute) {\n <div\n [class]=\"\n getOptionClasses(\n selectedMinute() === minute,\n isMinuteDisabled(minute)\n )\n \"\n [attr.data-value]=\"minute\"\n (click)=\"selectMinute(minute)\"\n >\n {{ formatNumber(minute) }}\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div [class]=\"actionsClasses()\">\n <button\n type=\"button\"\n [class]=\"actionButtonClasses()\"\n (click)=\"selectNow()\"\n [disabled]=\"state() === 'disabled'\"\n >\n Ahora\n </button>\n <button\n type=\"button\"\n [class]=\"actionButtonClasses()\"\n (click)=\"clearTime()\"\n [disabled]=\"state() === 'disabled'\"\n >\n Limpiar\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Error Message -->\n @if (state() === 'error' && errorMessage()) {\n <span [class]=\"errorMessageClasses()\" [attr.id]=\"errorMessageId\">\n {{ errorMessage() }}\n </span>\n }\n </div>\n `,\n})\nexport class TimePickerComponent implements OnInit {\n private readonly elementRef = inject(ElementRef);\n\n /** Size of the input */\n readonly size = input<TimePickerSize>('md');\n\n /** Current state */\n readonly state = input<TimePickerState>('default');\n\n /** Selected time in HH:mm format */\n readonly value = input<string>('');\n\n /** Placeholder text */\n readonly placeholder = input<string>('HH:mm');\n\n /** Optional label */\n readonly label = input<string>('');\n\n /** Error message */\n readonly errorMessage = input<string>('');\n\n /** Minimum time (HH:mm format) */\n readonly minTime = input<string>('');\n\n /** Maximum time (HH:mm format) */\n readonly maxTime = input<string>('');\n\n /** Step for minutes */\n readonly stepMinutes = input<number>(1);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Value change event */\n readonly valueChange = output<string>();\n\n /** Selection change event */\n readonly selectionChange = output<{ hour: number; minute: number }>();\n\n /** Open state change event */\n readonly openChange = output<boolean>();\n\n @ViewChild('hoursList') hoursList: ElementRef | undefined;\n @ViewChild('minutesList') minutesList: ElementRef | undefined;\n\n // Internal state\n readonly isOpen = signal<boolean>(false);\n readonly selectedHour = signal<number>(0);\n readonly selectedMinute = signal<number>(0);\n readonly isFocused = signal<boolean>(false);\n readonly internalValue = signal<string>('');\n\n readonly errorMessageId = `timepicker-error-${Math.random().toString(36).substr(2, 9)}`;\n\n constructor() {\n // Sync internal value with input value\n effect(() => {\n const val = this.value();\n if (val) {\n this.internalValue.set(val);\n const parsed = this.parseTime(val);\n this.selectedHour.set(parsed.hour);\n this.selectedMinute.set(parsed.minute);\n }\n });\n }\n\n // Available hours (0-23)\n readonly availableHours = Array.from({ length: 24 }, (_, i) => i);\n\n // Available minutes based on step\n readonly availableMinutes = computed(() => {\n const minutes: number[] = [];\n for (let i = 0; i < 60; i += this.stepMinutes()) {\n minutes.push(i);\n }\n return minutes;\n });\n\n // Computed time value - uses internal value for display\n readonly timeValue = computed(() => this.internalValue());\n\n // Computed display state\n readonly displayState = computed<TimePickerState>(() => {\n if (this.state() === 'error') return 'error';\n if (this.isFocused() && this.state() !== 'disabled') return 'focus';\n return this.state();\n });\n\n // Computed classes\n readonly fieldClasses = computed(() => clsx(timepickerFieldVariants()));\n\n readonly labelClasses = computed(() => clsx(timepickerLabelVariants()));\n\n readonly wrapperClasses = computed(() =>\n clsx(\n timepickerWrapperVariants({\n size: this.size(),\n state: this.displayState(),\n }),\n this.className(),\n ),\n );\n\n readonly inputClasses = computed(() =>\n clsx(timepickerInputVariants({ state: this.displayState() })),\n );\n\n readonly iconButtonClasses = computed(() =>\n clsx(\n timepickerIconButtonVariants(),\n this.state() === 'error' && 'text-destructive',\n ),\n );\n\n readonly dropdownClasses = computed(() =>\n clsx(timepickerDropdownVariants({ size: this.size() })),\n );\n\n readonly selectionAreaClasses = computed(() =>\n clsx(timepickerSelectionAreaVariants()),\n );\n\n readonly columnClasses = computed(() => clsx(timepickerColumnVariants()));\n\n readonly columnHeaderClasses = computed(() =>\n clsx(timepickerColumnHeaderVariants()),\n );\n\n readonly listClasses = computed(() => clsx(timepickerListVariants()));\n\n readonly separatorClasses = computed(() =>\n clsx(timepickerSeparatorVariants()),\n );\n\n readonly actionsClasses = computed(() => clsx(timepickerActionsVariants()));\n\n readonly actionButtonClasses = computed(() =>\n clsx(timepickerActionButtonVariants()),\n );\n\n readonly errorMessageClasses = computed(() =>\n clsx(timepickerErrorMessageVariants()),\n );\n\n readonly iconColor = computed(() =>\n this.state() === 'error' ? 'currentColor' : 'currentColor',\n );\n\n getOptionClasses(selected: boolean, disabled: boolean): string {\n return clsx(timepickerOptionVariants({ selected, disabled }));\n }\n\n ngOnInit(): void {\n // Initial sync is handled by effect in constructor\n }\n\n parseTime(time: string): { hour: number; minute: number } {\n if (!time) {\n return { hour: 0, minute: 0 };\n }\n const [h, m] = time.split(':').map(Number);\n return { hour: isNaN(h) ? 0 : h, minute: isNaN(m) ? 0 : m };\n }\n\n formatNumber(value: number): string {\n return String(value).padStart(2, '0');\n }\n\n isHourDisabled(hour: number): boolean {\n const min = this.minTime();\n const max = this.maxTime();\n\n if (!min && !max) return false;\n\n const minParsed = this.parseTime(min);\n const maxParsed = this.parseTime(max);\n\n if (min && hour < minParsed.hour) return true;\n if (max && hour > maxParsed.hour) return true;\n\n return false;\n }\n\n isMinuteDisabled(minute: number): boolean {\n const min = this.minTime();\n const max = this.maxTime();\n\n if (!min && !max) return false;\n\n const minParsed = this.parseTime(min);\n const maxParsed = this.parseTime(max);\n\n if (\n min &&\n this.selectedHour() === minParsed.hour &&\n minute < minParsed.minute\n ) {\n return true;\n }\n\n if (\n max &&\n this.selectedHour() === maxParsed.hour &&\n minute > maxParsed.minute\n ) {\n return true;\n }\n\n return false;\n }\n\n selectHour(hour: number): void {\n if (this.state() === 'disabled' || this.isHourDisabled(hour)) return;\n this.selectedHour.set(hour);\n this.updateTimeValue();\n }\n\n selectMinute(minute: number): void {\n if (this.state() === 'disabled' || this.isMinuteDisabled(minute)) return;\n this.selectedMinute.set(minute);\n this.updateTimeValue();\n }\n\n selectNow(): void {\n if (this.state() === 'disabled') return;\n\n const now = new Date();\n const hour = now.getHours();\n const minute = now.getMinutes();\n const snappedMinute =\n Math.round(minute / this.stepMinutes()) * this.stepMinutes();\n\n this.selectedHour.set(hour);\n this.selectedMinute.set(Math.min(snappedMinute, 59));\n this.updateTimeValue();\n\n // Scroll to show selected values\n this.scrollToSelected();\n }\n\n /** Scroll both lists to show the selected values centered */\n private scrollToSelected(): void {\n // Use setTimeout to allow Angular to render the changes first\n setTimeout(() => {\n this.scrollToElement(this.hoursList, this.selectedHour());\n this.scrollToElement(this.minutesList, this.selectedMinute());\n }, 0);\n }\n\n /** Scroll a list to center the element with the given value */\n private scrollToElement(\n listRef: ElementRef | undefined,\n value: number,\n ): void {\n if (!listRef?.nativeElement) return;\n\n const listElement = listRef.nativeElement as HTMLElement;\n const optionElement = listElement.querySelector(\n `[data-value=\"${value}\"]`,\n ) as HTMLElement;\n\n if (optionElement) {\n // Calculate scroll position to center the element\n const listHeight = listElement.clientHeight;\n const optionTop = optionElement.offsetTop;\n const optionHeight = optionElement.offsetHeight;\n\n // Scroll to center the option in the list\n const scrollTop = optionTop - listHeight / 2 + optionHeight / 2;\n listElement.scrollTo({\n top: Math.max(0, scrollTop),\n behavior: 'smooth',\n });\n }\n }\n\n clearTime(): void {\n if (this.state() === 'disabled') return;\n\n this.selectedHour.set(0);\n this.selectedMinute.set(0);\n this.internalValue.set('');\n this.valueChange.emit('');\n this.selectionChange.emit({ hour: 0, minute: 0 });\n }\n\n updateTimeValue(): void {\n const newValue = `${this.formatNumber(this.selectedHour())}:${this.formatNumber(this.selectedMinute())}`;\n this.internalValue.set(newValue);\n this.valueChange.emit(newValue);\n this.selectionChange.emit({\n hour: this.selectedHour(),\n minute: this.selectedMinute(),\n });\n }\n\n toggleDropdown(): void {\n if (this.state() === 'disabled') return;\n const wasOpen = this.isOpen();\n this.isOpen.update((v) => !v);\n this.openChange.emit(this.isOpen());\n\n // Scroll to selected values when opening\n if (!wasOpen && this.internalValue()) {\n this.scrollToSelected();\n }\n }\n\n openDropdown(): void {\n if (this.state() === 'disabled') return;\n if (!this.isOpen()) {\n this.isOpen.set(true);\n this.openChange.emit(true);\n\n // Scroll to selected values when opening\n if (this.internalValue()) {\n this.scrollToSelected();\n }\n }\n }\n\n closeDropdown(): void {\n this.isOpen.set(false);\n this.isFocused.set(false);\n this.openChange.emit(false);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement;\n const hostElement = this.elementRef.nativeElement;\n\n // Check if click is outside the component\n if (!hostElement.contains(target) && this.isOpen()) {\n this.closeDropdown();\n }\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Toast container variants\n *\n * Controls the overall toast container styles\n */\nexport const toastVariants = cva(\n clsx(\n // Layout\n 'relative inline-flex items-center justify-center',\n // Spacing\n 'gap-2.5 h-10 py-3 pr-4 pl-7',\n // Shape\n 'rounded',\n // Border\n 'border border-border',\n // Background\n 'bg-background',\n // Typography\n 'text-sm font-medium leading-normal tracking-tight',\n ),\n {\n variants: {\n variant: {\n default: 'text-sky-600',\n info: 'text-blue-600',\n success: 'text-green-600',\n warning: 'text-yellow-600',\n destructive: 'text-red-600',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Toast accent variants\n *\n * Controls the left accent bar\n */\nexport const toastAccentVariants = cva(\n clsx(\n // Position\n 'absolute left-0 top-0',\n // Size\n 'w-2 h-full',\n // Shape\n 'rounded-l',\n ),\n {\n variants: {\n variant: {\n default: 'bg-sky-200',\n info: 'bg-blue-200',\n success: 'bg-green-200',\n warning: 'bg-yellow-200',\n destructive: 'bg-red-200',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\n/**\n * Toast icon variants\n *\n * Controls the icon styling\n */\nexport const toastIconVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-6 h-6',\n ),\n);\n\n/**\n * Toast content variants\n *\n * Controls the text content area\n */\nexport const toastContentVariants = cva(\n clsx(\n // Layout\n 'flex-shrink',\n // Typography\n 'text-left whitespace-nowrap',\n ),\n);\n\n/**\n * Toast close button variants\n *\n * Controls the close/dismiss button\n */\nexport const toastCloseVariants = cva(\n clsx(\n // Size\n 'shrink-0 w-2 h-2 p-0',\n // Reset\n 'border-none bg-transparent',\n // Cursor\n 'cursor-pointer',\n // Layout\n 'flex items-center justify-center',\n // Hover\n 'hover:opacity-80',\n // Focus\n 'focus:outline-none',\n 'focus-visible:outline-2 focus-visible:outline-current focus-visible:outline-offset-2 focus-visible:rounded-sm',\n ),\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n toastAccentVariants,\n toastCloseVariants,\n toastContentVariants,\n toastIconVariants,\n toastVariants,\n} from './toast.variants';\n\nexport type ToastVariant =\n | 'default'\n | 'info'\n | 'success'\n | 'warning'\n | 'destructive';\n\nexport type ToastVariantsProps = VariantProps<typeof toastVariants>;\n\n/**\n * Toast Component\n *\n * A notification component for displaying brief messages to users.\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-toast\n * variant=\"success\"\n * content=\"Operation completed successfully\"\n * [dismissible]=\"true\"\n * (dismiss)=\"onDismiss()\"\n * />\n * ```\n */\n@Component({\n selector: 'bsg-toast',\n standalone: true,\n template: `\n @if (!dismissed()) {\n <div [class]=\"toastClasses()\" role=\"status\" aria-live=\"polite\">\n <div [class]=\"accentClasses()\"></div>\n\n <!-- Icon based on variant -->\n @switch (variant()) {\n @case ('default') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.2904 1.13038C12.7758 0.738816 15.3201 1.21183 17.4994 2.46924C17.9776 2.74518 18.1423 3.35617 17.8666 3.83448C17.5906 4.31285 16.9788 4.4767 16.5004 4.20069C14.7174 3.17195 12.6354 2.78567 10.602 3.10596C8.5685 3.42633 6.70596 4.43431 5.32559 5.96143C3.94523 7.48862 3.12994 9.44313 3.01602 11.4985C2.90213 13.554 3.49639 15.587 4.69961 17.2573C5.90283 18.9276 7.64271 20.1352 9.62832 20.6782C11.6139 21.2212 13.726 21.0672 15.6117 20.2417C17.4976 19.4162 19.0436 17.9684 19.9916 16.1411C20.9395 14.3139 21.2317 12.2168 20.8207 10.1997C20.7105 9.65867 21.06 9.13044 21.601 9.02003C22.1421 8.90976 22.6704 9.25918 22.7807 9.8003C23.283 12.2657 22.9247 14.8286 21.766 17.062C20.6073 19.2954 18.7184 21.0647 16.4135 22.0737C14.1087 23.0826 11.5277 23.2705 9.10098 22.6069C6.67406 21.9432 4.54717 20.4678 3.07656 18.4263C1.60598 16.3847 0.879785 13.9004 1.01895 11.3882C1.15814 8.87595 2.15504 6.48722 3.84219 4.62061C5.52932 2.75412 7.80509 1.52194 10.2904 1.13038ZM21.2934 3.29249C21.6839 2.90241 22.317 2.90215 22.7074 3.29249C23.0979 3.68301 23.0979 4.317 22.7074 4.70753L12.7074 14.7075C12.317 15.0978 11.6839 15.0976 11.2934 14.7075L8.29336 11.7075C7.90284 11.317 7.90284 10.683 8.29336 10.2925C8.6839 9.90241 9.31704 9.90215 9.70742 10.2925L12.0004 12.5855L21.2934 3.29249Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n @case ('info') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 16V12M12 8H12.01M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n @case ('success') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 6L9 17L4 12\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n @case ('warning') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12.0001 9V13M12.0001 17H12.0101M21.7301 18L13.7301 4C13.5556 3.6922 13.3027 3.43618 12.997 3.25806C12.6913 3.07995 12.3438 2.9861 11.9901 2.9861C11.6363 2.9861 11.2888 3.07995 10.9831 3.25806C10.6774 3.43618 10.4245 3.6922 10.2501 4L2.25005 18C2.07373 18.3054 1.98128 18.6519 1.98206 19.0045C1.98284 19.3571 2.07683 19.7032 2.2545 20.0078C2.43217 20.3124 2.6872 20.5646 2.99375 20.7388C3.30029 20.9131 3.64746 21.0032 4.00005 21H20.0001C20.351 20.9996 20.6956 20.907 20.9993 20.7313C21.3031 20.5556 21.5553 20.3031 21.7306 19.9991C21.9059 19.6951 21.9981 19.3504 21.998 18.9995C21.9979 18.6486 21.9055 18.3039 21.7301 18Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n @case ('destructive') {\n <svg\n [class]=\"iconClasses()\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.929 4.929L19.07 19.071M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\"\n [attr.stroke]=\"iconColor()\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n }\n\n <!-- Content -->\n <span [class]=\"contentClasses()\">{{ content() }}</span>\n\n <!-- Close button -->\n @if (dismissible()) {\n <button\n type=\"button\"\n [class]=\"closeClasses()\"\n (click)=\"dismissToast()\"\n aria-label=\"Close toast\"\n >\n <svg\n width=\"8\"\n height=\"8\"\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7.02459 0.167369C7.24775 -0.0557898 7.60947 -0.0557898 7.83263 0.167369C8.05579 0.390529 8.05579 0.752255 7.83263 0.975414L4.80804 4L7.83263 7.02459C8.05579 7.24775 8.05579 7.60947 7.83263 7.83263C7.60947 8.05579 7.24775 8.05579 7.02459 7.83263L4 4.80804L0.975414 7.83263C0.752255 8.05579 0.390529 8.05579 0.167369 7.83263C-0.0557898 7.60947 -0.0557898 7.24775 0.167369 7.02459L3.19196 4L0.167369 0.975414C-0.0557898 0.752255 -0.0557898 0.390529 0.167369 0.167369C0.390529 -0.0557898 0.752255 -0.0557898 0.975414 0.167369L4 3.19196L7.02459 0.167369Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n </button>\n }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToastComponent {\n /** Toast variant */\n readonly variant = input<ToastVariant>('default');\n\n /** Whether the toast can be dismissed */\n readonly dismissible = input<boolean>(false);\n\n /** Toast message content */\n readonly content = input<string>('Componente de toast Default');\n\n /** Additional CSS classes for the toast container */\n readonly className = input<string>();\n\n /** Dismiss event */\n readonly dismiss = output<void>();\n\n /** Internal dismissed state */\n readonly dismissed = signal<boolean>(false);\n\n // Computed classes\n readonly toastClasses = computed(() =>\n clsx(toastVariants({ variant: this.variant() }), this.className()),\n );\n\n readonly accentClasses = computed(() =>\n clsx(toastAccentVariants({ variant: this.variant() })),\n );\n\n readonly iconClasses = computed(() => clsx(toastIconVariants()));\n\n readonly contentClasses = computed(() => clsx(toastContentVariants()));\n\n readonly closeClasses = computed(() => clsx(toastCloseVariants()));\n\n readonly iconColor = computed(() => {\n const colorMap: Record<ToastVariant, string> = {\n default: '#0284C7', // Sky-600\n info: '#2563EB', // Blue-600\n success: '#16A34A', // Green-600\n warning: '#CA8A04', // Yellow-600\n destructive: '#DC2626', // Red-600\n };\n return colorMap[this.variant()];\n });\n\n dismissToast(): void {\n this.dismissed.set(true);\n this.dismiss.emit();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Tooltip trigger variants\n *\n * Controls the wrapper element that triggers the tooltip\n */\nexport const tooltipTriggerVariants = cva(\n clsx(\n // Layout\n 'relative inline-block',\n // Cursor\n 'cursor-pointer',\n // Focus\n 'outline-none',\n 'focus:outline-2 focus:outline-ring focus:outline-offset-2 focus:rounded',\n ),\n);\n\n/**\n * Tooltip content variants\n *\n * Controls the floating tooltip overlay\n */\nexport const tooltipContentVariants = cva(\n clsx(\n // Position\n 'absolute z-50',\n // Colors (semantic tokens)\n 'bg-tooltip text-tooltip-foreground',\n // Shape (using border token)\n 'rounded-(--border-tooltip-radius)',\n // Spacing\n 'px-3 py-1.5',\n // Typography\n 'text-xs font-medium leading-normal',\n // Behavior\n 'whitespace-nowrap pointer-events-none select-none',\n // Shadow (semantic token)\n 'shadow-(--shadow-tooltip)',\n // Animation\n 'animate-in fade-in-0 zoom-in-95',\n ),\n {\n variants: {\n placement: {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n },\n },\n defaultVariants: {\n placement: 'top',\n },\n },\n);\n\n/**\n * Tooltip arrow variants\n *\n * Controls the arrow/pointer element\n */\nexport const tooltipArrowVariants = cva(\n clsx(\n // Position\n 'absolute',\n // Size\n 'size-2',\n // Color (semantic token - matches tooltip background)\n 'bg-tooltip',\n // Shape\n 'rounded-px rotate-45',\n ),\n {\n variants: {\n placement: {\n top: '-bottom-1 left-1/2 -translate-x-1/2',\n bottom: '-top-1 left-1/2 -translate-x-1/2',\n left: '-right-1 top-1/2 -translate-y-1/2',\n right: '-left-1 top-1/2 -translate-y-1/2',\n },\n },\n defaultVariants: {\n placement: 'top',\n },\n },\n);\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ElementRef,\n input,\n signal,\n ViewChild,\n} from '@angular/core';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n tooltipArrowVariants,\n tooltipContentVariants,\n tooltipTriggerVariants,\n} from './tooltip.variants';\n\nexport type TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';\n\nexport type TooltipContentVariantsProps = VariantProps<\n typeof tooltipContentVariants\n>;\n\n/**\n * Tooltip Component\n *\n * A floating label that appears on hover/focus to provide additional information.\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-tooltip content=\"Tooltip text\" placement=\"top\">\n * <button>Hover me</button>\n * </bsg-tooltip>\n * ```\n */\n@Component({\n selector: 'bsg-tooltip',\n standalone: true,\n template: `\n <div\n [class]=\"triggerClasses()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (mousedown)=\"onMouseDown()\"\n tabindex=\"0\"\n [attr.aria-describedby]=\"tooltipId\"\n #triggerElement\n >\n <ng-content />\n\n @if (isVisible() && !disabled()) {\n <div\n [class]=\"contentClasses()\"\n [attr.id]=\"tooltipId\"\n role=\"tooltip\"\n #tooltipElement\n >\n <div class=\"flex items-center gap-1.5\">\n {{ content() }}\n </div>\n <div [class]=\"arrowClasses()\"></div>\n </div>\n }\n </div>\n `,\n styles: `\n :host {\n position: relative;\n display: inline-block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements AfterContentInit {\n /** Tooltip content text */\n readonly content = input<string>('');\n\n /** Tooltip placement */\n readonly placement = input<TooltipPlacement>('top');\n\n /** Whether the tooltip is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes for the trigger */\n readonly triggerClassName = input<string>();\n\n /** Additional CSS classes for the content */\n readonly contentClassName = input<string>();\n\n @ViewChild('triggerElement') triggerElement!: ElementRef;\n @ViewChild('tooltipElement') tooltipElement!: ElementRef;\n\n readonly tooltipId = `tooltip-${Math.random().toString(36).substr(2, 9)}`;\n\n // Internal state\n readonly isVisible = signal<boolean>(false);\n private justClicked = false;\n private isMouseHovering = false;\n private hideTimeout: ReturnType<typeof setTimeout> | undefined;\n\n // Computed classes\n readonly triggerClasses = computed(() =>\n clsx(tooltipTriggerVariants(), this.triggerClassName()),\n );\n\n readonly contentClasses = computed(() =>\n clsx(\n tooltipContentVariants({ placement: this.placement() }),\n this.contentClassName(),\n ),\n );\n\n readonly arrowClasses = computed(() =>\n clsx(tooltipArrowVariants({ placement: this.placement() })),\n );\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterContentInit(): void {\n // Ensure trigger is focusable\n if (this.triggerElement) {\n const el = this.triggerElement.nativeElement;\n if (!el.getAttribute('tabindex')) {\n el.setAttribute('tabindex', '0');\n }\n }\n }\n\n /**\n * Handle mouse enter: show tooltip\n */\n onMouseEnter(): void {\n this.isMouseHovering = true;\n this.show();\n }\n\n /**\n * Handle mouse leave: hide tooltip\n */\n onMouseLeave(): void {\n this.isMouseHovering = false;\n this.hide();\n }\n\n /**\n * Handle focus: show tooltip only if triggered by keyboard\n */\n onFocus(): void {\n if (this.justClicked) {\n this.justClicked = false;\n return;\n }\n this.show();\n }\n\n /**\n * Handle blur: hide tooltip\n */\n onBlur(): void {\n this.isMouseHovering = false;\n this.justClicked = false;\n this.hide();\n }\n\n /**\n * Track mouse down to detect click-triggered focus\n */\n onMouseDown(): void {\n this.justClicked = true;\n setTimeout(() => {\n this.justClicked = false;\n }, 0);\n }\n\n private show(): void {\n if (this.disabled()) {\n return;\n }\n clearTimeout(this.hideTimeout);\n this.isVisible.set(true);\n this.cdr.markForCheck();\n }\n\n private hide(): void {\n this.hideTimeout = setTimeout(() => {\n this.isVisible.set(false);\n this.cdr.markForCheck();\n }, 0);\n }\n}\n","/*\n * Public API Surface of bsg-integra\n */\n\n// Components\nexport * from './lib/components/accordion';\nexport * from './lib/components/alert';\nexport * from './lib/components/avatar';\nexport * from './lib/components/badge';\nexport * from './lib/components/button';\nexport * from './lib/components/card';\nexport * from './lib/components/carousel';\nexport * from './lib/components/checkbox';\nexport * from './lib/components/collapsible';\nexport * from './lib/components/combobox';\nexport * from './lib/components/dialog';\nexport * from './lib/components/input';\nexport * from './lib/components/label';\nexport * from './lib/components/radio';\nexport * from './lib/components/radio-group';\nexport * from './lib/components/select';\nexport * from './lib/components/side-navbar';\nexport * from './lib/components/skeleton';\nexport * from './lib/components/spinner';\nexport * from './lib/components/switch';\nexport * from './lib/components/tab-navigation';\nexport * from './lib/components/table';\nexport * from './lib/components/textarea';\nexport * from './lib/components/timepicker';\nexport * from './lib/components/toast';\nexport * from './lib/components/tooltip';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|