@bsginstitute/bsg-integra 0.0.1 → 0.0.3
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/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/switch/switch.variants.ts","../../../projects/bsg-integra/src/lib/components/switch/switch.component.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-sky-600',\n info: 'bg-blue-200 text-blue-600',\n success: 'bg-green-200 text-green-600',\n warning: 'bg-yellow-200 text-yellow-600',\n destructive: 'bg-red-200 text-red-600',\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-violet-600',\n image: 'bg-neutral-100',\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-white',\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-violet-600 text-white',\n secondary: 'bg-blue-600 text-white',\n destructive: 'bg-red-600 text-white',\n success: 'bg-green-600 text-white',\n outline: 'bg-white text-slate-800 border border-slate-300',\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-slate-300',\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","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Button variants\n *\n * Controls the button styles including size, variant, shape, and state\n */\nexport const buttonVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center justify-center',\n // Gap\n 'gap-2.5',\n // Typography\n 'text-sm font-medium leading-normal tracking-tight',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Whitespace\n 'whitespace-nowrap',\n // Border reset\n 'border-0',\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:bg-violet-900 focus:ring-[3px] focus:ring-white focus:ring-offset-1 focus:ring-offset-violet-950',\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:bg-blue-700 focus:ring-[3px] focus:ring-white focus:ring-offset-1 focus:ring-offset-violet-950',\n ),\n outline: clsx(\n 'bg-transparent text-violet-600 border border-violet-600',\n 'hover:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\n 'focus:border-violet-900 focus:text-violet-900 focus:ring-[3px] focus:ring-white focus:ring-offset-1 focus:ring-offset-violet-950',\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:bg-violet-200 focus:ring-[3px] focus:ring-white focus:ring-offset-1 focus:ring-offset-violet-950',\n ),\n link: clsx(\n 'bg-transparent text-blue-600',\n 'hover:opacity-90',\n 'active:underline',\n 'focus:text-blue-700 focus:ring-[3px] focus:ring-white focus:ring-offset-1 focus:ring-offset-violet-950',\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:bg-red-700 focus:ring-[3px] focus:ring-white focus:ring-offset-1 focus:ring-offset-violet-950',\n ),\n },\n shape: {\n rectangular: '',\n pill: 'rounded-full',\n icon: 'rounded',\n 'icon-text': '',\n 'icon-only': 'rounded-full p-0',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n compoundVariants: [\n // Rectangular shape + size = border radius\n { shape: 'rectangular', size: 'sm', class: 'rounded-sm' },\n { shape: 'rectangular', size: 'md', class: 'rounded' },\n { shape: 'rectangular', size: 'lg', class: 'rounded-md' },\n // Icon-text shape + size = border radius\n { shape: 'icon-text', size: 'sm', class: 'rounded-sm' },\n { shape: 'icon-text', size: 'md', class: 'rounded' },\n { shape: 'icon-text', size: 'lg', class: 'rounded-md' },\n // Icon shape sizes\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 // Icon-only shape sizes\n {\n shape: 'icon-only',\n size: 'sm',\n class: 'w-[27px] h-[27px] min-w-[27px] min-h-[27px]',\n },\n {\n shape: 'icon-only',\n size: 'md',\n class: 'w-[35px] h-[35px] min-w-[35px] min-h-[35px]',\n },\n {\n shape: 'icon-only',\n size: 'lg',\n class: 'w-[43px] h-[43px] min-w-[43px] min-h-[43px]',\n },\n // Icon-only + outline variant\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:border-slate-500 focus:text-purple-800 focus:ring-1 focus:ring-purple-900',\n },\n // Icon-only + default variant\n {\n shape: 'icon-only',\n variant: 'default',\n class: 'bg-violet-600 text-white border border-violet-600',\n },\n // Icon-only + secondary variant\n {\n shape: 'icon-only',\n variant: 'secondary',\n class: 'bg-blue-600 text-white border border-blue-600',\n },\n // Icon-only + ghost variant\n {\n shape: 'icon-only',\n variant: 'ghost',\n class: 'bg-violet-100 text-slate-800 border border-violet-100',\n },\n // Icon-only + link variant\n {\n shape: 'icon-only',\n variant: 'link',\n class: 'bg-transparent text-blue-600 border border-transparent',\n },\n // Icon-only + destructive variant\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\n/**\n * Button icon variants\n *\n * Controls the icon styling within buttons\n */\nexport const buttonIconVariants = cva(\n clsx(\n // Layout\n 'shrink-0',\n ),\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\n/**\n * Button label variants\n *\n * Controls the label text styling\n */\nexport const buttonLabelVariants = cva(\n clsx(\n // Layout\n 'inline-block',\n ),\n);\n\n/**\n * Button icon-only wrapper variants\n *\n * Controls the icon wrapper for icon-only buttons\n */\nexport const buttonIconOnlyVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-center',\n 'w-full h-full',\n ),\n {\n variants: {\n size: {\n sm: 'w-[17px] h-[17px]',\n md: 'w-[21px] h-[21px]',\n lg: 'w-[26px] h-[26px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n","import { Component, computed, input, output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n buttonVariants,\n buttonIconVariants,\n buttonLabelVariants,\n buttonIconOnlyVariants,\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';\nexport type IconName =\n | 'check'\n | 'chevron-left'\n | 'chevron-right'\n | 'chevron-up'\n | 'chevron-down'\n | 'none';\n\nexport type ButtonVariantsProps = VariantProps<typeof buttonVariants>;\n\n// Icon definitions for icon-only buttons\nconst icons: Record<string, string> = {\n 'chevron-left': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.64776 3.57275C9.91136 3.30915 10.3386 3.30915 10.6023 3.57275C10.8659 3.83636 10.8659 4.26364 10.6023 4.52724L7.0295 8.1L10.6023 11.6728C10.8659 11.9364 10.8659 12.3636 10.6023 12.6272C10.3386 12.8908 9.91136 12.8908 9.64776 12.6272L5.59776 8.57724C5.33415 8.31364 5.33415 7.88636 5.59776 7.62275L9.64776 3.57275Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-right': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6.35224 3.57275C6.08864 3.30915 5.66136 3.30915 5.39776 3.57275C5.13415 3.83636 5.13415 4.26364 5.39776 4.52724L8.9705 8.1L5.39776 11.6728C5.13415 11.9364 5.13415 12.3636 5.39776 12.6272C5.66136 12.8908 6.08864 12.8908 6.35224 12.6272L10.4022 8.57724C10.6659 8.31364 10.6659 7.88636 10.4022 7.62275L6.35224 3.57275Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-up': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3.57275 9.64776C3.30915 9.91136 3.30915 10.3386 3.57275 10.6023C3.83636 10.8659 4.26364 10.8659 4.52724 10.6023L8.1 7.0295L11.6728 10.6023C11.9364 10.8659 12.3636 10.8659 12.6272 10.6023C12.8908 10.3386 12.8908 9.91136 12.6272 9.64776L8.57724 5.59776C8.31364 5.33415 7.88636 5.33415 7.62275 5.59776L3.57275 9.64776Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-down': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3.57275 6.35224C3.30915 6.08864 3.30915 5.66136 3.57275 5.39776C3.83636 5.13415 4.26364 5.13415 4.52724 5.39776L8.1 8.9705L11.6728 5.39776C11.9364 5.13415 12.3636 5.13415 12.6272 5.39776C12.8908 5.66136 12.8908 6.08864 12.6272 6.35224L8.57724 10.4022C8.31364 10.6659 7.88636 10.6659 7.62275 10.4022L3.57275 6.35224Z\" fill=\"currentColor\"/>\n</svg>`,\n check: `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\"/>\n</svg>`,\n none: '',\n};\n\n/**\n * Button Component - Interactive button with multiple variants\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-button\n * [variant]=\"'default'\"\n * [size]=\"'md'\"\n * [shape]=\"'rectangular'\"\n * [label]=\"'Click me'\"\n * (Click)=\"onClick()\"\n * />\n * ```\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-label]=\"\n shape() === 'icon-only' ? label() || 'Icon button' : null\n \"\n >\n <!-- Icon-only button: centered icon using DomSanitizer -->\n @if (shape() === 'icon-only') {\n <span\n [class]=\"iconOnlyClasses()\"\n [innerHTML]=\"getIconSvg(iconName())\"\n ></span>\n }\n\n <!-- Regular buttons with optional icons -->\n @if (shape() !== 'icon-only' && icon() && iconPosition() === 'left') {\n <svg\n [class]=\"iconClasses('left')\"\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.43152 0.706459C7.98489 0.461733 9.57507 0.757369 10.9371 1.54325C11.236 1.71571 11.3389 2.09758 11.1666 2.39652C10.9941 2.6955 10.6117 2.79791 10.3127 2.6254C9.19838 1.98244 7.8971 1.74102 6.62622 1.9412C5.35531 2.14143 4.19123 2.77142 3.32849 3.72587C2.46577 4.68036 1.95621 5.90193 1.88501 7.18656C1.81383 8.47123 2.18524 9.74182 2.93726 10.7858C3.68927 11.8297 4.7767 12.5845 6.0177 12.9239C7.2587 13.2632 8.57874 13.167 9.75733 12.651C10.936 12.1351 11.9022 11.2303 12.4948 10.0882C13.0872 8.94613 13.2698 7.63546 13.0129 6.37479C12.944 6.03664 13.1625 5.7065 13.5006 5.63749C13.8388 5.56857 14.169 5.78696 14.2379 6.12516C14.5519 7.66605 14.3279 9.26786 13.6038 10.6637C12.8796 12.0596 11.699 13.1654 10.2584 13.7961C8.81797 14.4266 7.20484 14.5441 5.68811 14.1293C4.17129 13.7145 2.84198 12.7923 1.92285 11.5164C1.00374 10.2404 0.549867 8.68771 0.636842 7.11759C0.723839 5.54744 1.3469 4.05449 2.40137 2.88786C3.45582 1.7213 4.87818 0.951184 6.43152 0.706459ZM13.3084 2.05778C13.5524 1.81398 13.9482 1.81382 14.1921 2.05778C14.4362 2.30186 14.4362 2.6981 14.1921 2.94218L7.94214 9.19218C7.69815 9.43613 7.30244 9.43597 7.05835 9.19218L5.18335 7.31718C4.93927 7.0731 4.93927 6.67686 5.18335 6.43278C5.42744 6.18898 5.82315 6.18882 6.06714 6.43278L7.50025 7.86588L13.3084 2.05778Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n\n @if (shape() !== 'icon' && shape() !== 'icon-only') {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n\n @if (shape() !== 'icon-only' && icon() && iconPosition() === 'right') {\n <svg\n [class]=\"iconClasses('right')\"\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.43152 0.706459C7.98489 0.461733 9.57507 0.757369 10.9371 1.54325C11.236 1.71571 11.3389 2.09758 11.1666 2.39652C10.9941 2.6955 10.6117 2.79791 10.3127 2.6254C9.19838 1.98244 7.8971 1.74102 6.62622 1.9412C5.35531 2.14143 4.19123 2.77142 3.32849 3.72587C2.46577 4.68036 1.95621 5.90193 1.88501 7.18656C1.81383 8.47123 2.18524 9.74182 2.93726 10.7858C3.68927 11.8297 4.7767 12.5845 6.0177 12.9239C7.2587 13.2632 8.57874 13.167 9.75733 12.651C10.936 12.1351 11.9022 11.2303 12.4948 10.0882C13.0872 8.94613 13.2698 7.63546 13.0129 6.37479C12.944 6.03664 13.1625 5.7065 13.5006 5.63749C13.8388 5.56857 14.169 5.78696 14.2379 6.12516C14.5519 7.66605 14.3279 9.26786 13.6038 10.6637C12.8796 12.0596 11.699 13.1654 10.2584 13.7961C8.81797 14.4266 7.20484 14.5441 5.68811 14.1293C4.17129 13.7145 2.84198 12.7923 1.92285 11.5164C1.00374 10.2404 0.549867 8.68771 0.636842 7.11759C0.723839 5.54744 1.3469 4.05449 2.40137 2.88786C3.45582 1.7213 4.87818 0.951184 6.43152 0.706459ZM13.3084 2.05778C13.5524 1.81398 13.9482 1.81382 14.1921 2.05778C14.4362 2.30186 14.4362 2.6981 14.1921 2.94218L7.94214 9.19218C7.69815 9.43613 7.30244 9.43597 7.05835 9.19218L5.18335 7.31718C4.93927 7.0731 4.93927 6.67686 5.18335 6.43278C5.42744 6.18898 5.82315 6.18882 6.06714 6.43278L7.50025 7.86588L13.3084 2.05778Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n </button>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class ButtonComponent {\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Size of the button */\n readonly size = input<ButtonSize>('md');\n\n /** Visual variant of the button */\n readonly variant = input<ButtonVariant>('default');\n\n /** Shape of the button */\n readonly shape = input<ButtonShape>('rectangular');\n\n /** Button label text */\n readonly label = input<string>('Boton');\n\n /** Show icon */\n readonly icon = input<boolean>(false);\n\n /** Icon position (left or right) */\n readonly iconPosition = input<'left' | 'right'>('left');\n\n /** Icon name for icon-only buttons */\n readonly iconName = input<IconName>('chevron-left');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Click event emitter */\n readonly Click = output<Event>();\n\n // Computed disabled state\n readonly isDisabled = computed(() => this.disabled());\n\n // Computed button classes\n readonly buttonClasses = computed(() =>\n clsx(\n buttonVariants({\n size: this.size(),\n variant: this.variant(),\n shape: this.shape(),\n disabled: this.disabled(),\n }),\n this.icon() && 'btn-with-icon',\n this.className(),\n ),\n );\n\n // Computed icon classes\n iconClasses(position: 'left' | 'right' | 'center'): string {\n return clsx(\n buttonIconVariants({ position }),\n this.shape() === 'icon' && 'm-0',\n );\n }\n\n // Computed label classes\n readonly labelClasses = computed(() => clsx(buttonLabelVariants()));\n\n // Computed icon-only wrapper classes\n readonly iconOnlyClasses = computed(() =>\n clsx(buttonIconOnlyVariants({ size: this.size() })),\n );\n\n // Computed icon color based on variant\n readonly iconColor = computed(() => {\n const variantVal = this.variant();\n if (variantVal === 'outline') return '#7C3AED';\n if (variantVal === 'ghost') return '#1E293B';\n if (variantVal === 'link') return '#2563EB';\n return 'white';\n });\n\n getIconSvg(iconName: string): SafeHtml {\n const svg = icons[iconName] || icons['none'];\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n handleClick(event: Event): void {\n if (!this.disabled()) {\n this.Click.emit(event);\n }\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-white',\n // Transition\n 'transition-all duration-200',\n ),\n {\n variants: {\n variant: {\n default: 'border border-zinc-200',\n },\n contentVariant: {\n default: '',\n metric: clsx(\n 'items-center justify-center',\n 'px-[89px] py-4',\n 'min-h-[87px]',\n 'bg-red-50 border border-red-200',\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-blue-50 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-blue-200 border-0',\n ),\n placeholder: clsx(\n 'w-[277px] min-h-[225px]',\n 'border border-slate-200',\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-slate-600',\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-neutral-800',\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-green-600',\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-slate-500',\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-slate-600',\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-red-600',\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-slate-600',\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-slate-600',\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-slate-700',\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-blue-600',\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-white border border-[#E2E8F0]',\n\n // Color del icono\n 'text-purple-600',\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-purple-600 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-purple-600',\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-purple-600 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, type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Dialog overlay variants\n *\n * Controls the backdrop/overlay layer\n */\nexport const dialogOverlayVariants = cva(\n clsx(\n // Position\n 'fixed inset-0',\n // Z-index\n 'z-[9999]',\n // Layout\n 'flex items-center justify-center',\n // Background\n 'bg-black/50',\n // Padding - responsive\n 'p-4 md:p-3',\n // Box sizing\n 'box-border',\n // Animation\n 'animate-in fade-in duration-200',\n // User select\n 'select-none',\n ),\n);\n\n/**\n * Dialog content variants\n *\n * Controls the main dialog container\n */\nexport const dialogContentVariants = cva(\n clsx(\n // Position\n 'relative',\n // Layout\n 'flex flex-col',\n // Background\n 'bg-white',\n // Border radius\n 'rounded-xl',\n // Shadow\n 'shadow-xl',\n // Max height - responsive\n 'max-h-[90vh] md:max-h-[95vh]',\n // Width\n 'w-full',\n // Box sizing\n 'box-border',\n // Animation\n 'animate-in zoom-in-95 duration-200',\n // User select\n 'select-text',\n // Focus\n 'focus:outline-none',\n ),\n {\n variants: {\n size: {\n sm: 'max-w-[460px] md:max-w-full',\n md: 'max-w-[670px] md:max-w-full',\n lg: 'max-w-[1153px] md:max-w-full',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport type DialogContentVariantsProps = VariantProps<\n typeof dialogContentVariants\n>;\n\n/**\n * Dialog header variants\n *\n * Controls the header section with tone variants\n */\nexport const dialogHeaderVariants = cva(\n clsx(\n // Layout\n 'flex items-center',\n // Min height\n 'min-h-[57px]',\n // Padding - responsive\n 'px-[17px] py-5 md:px-3.5 md:py-4',\n // Border radius\n 'rounded-t-xl',\n // Box sizing\n 'box-border',\n // Typography\n 'font-sans text-base font-semibold leading-normal',\n 'md:text-sm',\n ),\n {\n variants: {\n tone: {\n brand: 'bg-orange-600 text-white',\n info: 'bg-purple-100 text-purple-600',\n secondary: 'bg-purple-100 text-purple-600',\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 *\n * Controls the body/content section\n */\nexport const dialogBodyVariants = cva(\n clsx(\n // Flex\n 'flex-1',\n // Padding - responsive\n 'px-[23px] py-5 md:px-3.5 md:py-4',\n // Box sizing\n 'box-border',\n // Typography\n 'font-sans text-sm font-medium leading-normal',\n 'md:text-[13px]',\n // Color\n 'text-slate-500',\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 *\n * Controls the footer section with actions\n */\nexport const dialogFooterVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-end flex-nowrap',\n // Gap - responsive\n 'gap-8 md:gap-5',\n // Padding - responsive\n 'px-[23px] py-5 md:px-3.5 md:py-4',\n // Border\n 'border-t border-slate-200',\n // Box sizing\n 'box-border',\n // Width\n 'w-full',\n ),\n);\n","import {\n Component,\n input,\n output,\n computed,\n HostListener,\n} from '@angular/core';\nimport { clsx } from 'clsx';\nimport {\n dialogOverlayVariants,\n dialogContentVariants,\n dialogHeaderVariants,\n dialogBodyVariants,\n dialogFooterVariants,\n} from './dialog.variants';\n\nexport type DialogSize = 'sm' | 'md' | 'lg';\nexport type DialogHeaderTone = 'brand' | 'info' | 'secondary';\n\n/**\n * Dialog Component\n *\n * A modal dialog component with multiple sizes and header tones.\n *\n * Usage:\n * ```html\n * <bsg-dialog [open]=\"isOpen\" size=\"md\" headerTone=\"brand\" (closeDialog)=\"onClose()\">\n * <div dialog-header>Dialog Title</div>\n * <div dialog-body>Dialog content goes here</div>\n * <div dialog-footer>\n * <button>Cancel</button>\n * <button>Confirm</button>\n * </div>\n * </bsg-dialog>\n * ```\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 >\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>('md');\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 onOverlayClick(): void {\n if (this.dismissible()) {\n this.close();\n }\n }\n\n close(): void {\n this.closeDialog.emit();\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onEscapeKey(event: Event): void {\n if (this.open() && this.dismissible()) {\n event.preventDefault();\n this.close();\n }\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-slate-800',\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 [attr.stroke]=\"focusRingColor()\"\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 [attr.stroke]=\"outerStrokeColor()\"\n [attr.fill]=\"outerFillColor()\"\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 fill=\"#7C3AED\"\n stroke=\"#7C3AED\"\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 .radio-wrapper:focus-visible svg circle[stroke] {\n stroke: #7c3aed;\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 stroke color based on state\n readonly outerStrokeColor = computed(() => {\n const current = this.currentState();\n if (current === 'disabled') {\n return '#64748B'; // neutral-500\n }\n if (current === 'hover') {\n return '#8B5CF6'; // Violet-500\n }\n if (current === 'checked') {\n return '#7C3AED'; // Violet-600\n }\n if (current === 'focus') {\n return '#64748B'; // neutral-500\n }\n return '#64748B'; // neutral-500 (default)\n });\n\n // Outer fill color\n readonly outerFillColor = computed(() => {\n const current = this.currentState();\n if (current === 'disabled') {\n return '#64748B'; // neutral-500 with opacity applied via CSS\n }\n return 'none';\n });\n\n // Focus ring color\n readonly focusRingColor = computed(() => {\n return this.size() === 'sm' ? '#7C3AED' : '#9333EA'; // Violet-600 for sm, Purple-600 for md\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 'text-[#202020]',\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-slate-500 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\n 'bg-popover',\n // Shadow\n 'shadow-md',\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' | 'hover' | '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\n 'block bg-slate-200 border-none shrink-0',\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 * 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\n 'shadow-xs',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Focus\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\n 'bg-background',\n // Shadow\n '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-3',\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 {\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 ),\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-slate-300 bg-transparent hover:border-slate-400',\n hover: 'border-slate-400 bg-transparent',\n focus:\n 'border-slate-500 bg-transparent ring-2 ring-offset-2 ring-violet-600',\n disabled:\n 'border-slate-300 bg-transparent opacity-40 cursor-not-allowed pointer-events-none',\n error: 'border-red-600 bg-transparent',\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\n 'text-slate-800',\n // Placeholder\n 'placeholder:text-slate-500',\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-slate-800',\n disabled: 'cursor-not-allowed',\n error: 'text-red-600 placeholder:text-red-600',\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 w-6 h-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\n 'text-current',\n // Transition\n 'transition-opacity duration-200',\n // Hover\n 'hover:opacity-70',\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\n 'border border-slate-300',\n // Background\n 'bg-white',\n // Shadow\n 'shadow-md',\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\n 'border-b border-slate-200',\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\n 'text-slate-500',\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 (Tailwind custom scrollbar classes)\n 'scrollbar-thin scrollbar-thumb-slate-300 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\n 'text-slate-700',\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-violet-600 text-white font-medium hover:bg-violet-700',\n false: 'hover:bg-slate-100',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed text-slate-400 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\n 'text-slate-500',\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\n 'border-t border-slate-200',\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\n 'border border-slate-300',\n // Shape\n 'rounded',\n // Background\n 'bg-transparent',\n // Color\n 'text-slate-700',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-150',\n // Alignment\n 'text-center',\n // Hover\n 'hover:bg-slate-50 hover:border-slate-400',\n // Active\n 'active:bg-slate-100',\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\n 'text-red-600',\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(timepickerIconButtonVariants()),\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' ? '#DC2626' : '#64748B',\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\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 this.isOpen.update((v) => !v);\n this.openChange.emit(this.isOpen());\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 }\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\n 'bg-primary text-primary-foreground',\n // Shape\n 'rounded-md',\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\n 'shadow-md',\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 'w-2 h-2',\n // Color (inherits from parent)\n 'bg-primary',\n // Shape\n 'rounded-[1px] 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/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/switch';\nexport * from './lib/components/textarea';\nexport * from './lib/components/timepicker';\nexport * from './lib/components/toast';\nexport * from './lib/components/tooltip';\n\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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"}
|
|
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/switch/switch.variants.ts","../../../projects/bsg-integra/src/lib/components/switch/switch.component.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-sky-600',\n info: 'bg-blue-200 text-blue-600',\n success: 'bg-green-200 text-green-600',\n warning: 'bg-yellow-200 text-yellow-600',\n destructive: 'bg-red-200 text-red-600',\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-violet-600',\n image: 'bg-neutral-100',\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-white',\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-violet-600 text-white',\n secondary: 'bg-blue-600 text-white',\n destructive: 'bg-red-600 text-white',\n success: 'bg-green-600 text-white',\n outline: 'bg-white text-slate-800 border border-slate-300',\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-slate-300',\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","import { cva } from 'class-variance-authority';\nimport { clsx } from 'clsx';\n\n/**\n * Button variants\n *\n * Controls the button styles including size, variant, shape, and state\n */\nexport const buttonVariants = cva(\n clsx(\n // Layout\n 'inline-flex items-center justify-center',\n // Gap\n 'gap-2.5',\n // Typography\n 'text-sm font-medium leading-normal tracking-tight',\n // Cursor\n 'cursor-pointer',\n // Transition\n 'transition-all duration-200',\n // Whitespace\n 'whitespace-nowrap',\n // Border reset\n 'border-0',\n // Focus outline reset (prevent focus ring on click)\n 'outline-none',\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:opacity-90',\n 'active:shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.12)]',\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 p-0',\n },\n disabled: {\n true: 'opacity-40 cursor-not-allowed pointer-events-none',\n false: '',\n },\n },\n compoundVariants: [\n // Icon shape sizes\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 // Icon-only shape sizes\n {\n shape: 'icon-only',\n size: 'sm',\n class: 'w-[27px] h-[27px] min-w-[27px] min-h-[27px]',\n },\n {\n shape: 'icon-only',\n size: 'md',\n class: 'w-[35px] h-[35px] min-w-[35px] min-h-[35px]',\n },\n {\n shape: 'icon-only',\n size: 'lg',\n class: 'w-[43px] h-[43px] min-w-[43px] min-h-[43px]',\n },\n // Icon-only + outline variant\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 // Icon-only + default variant\n {\n shape: 'icon-only',\n variant: 'default',\n class: 'bg-violet-600 text-white border border-violet-600',\n },\n // Icon-only + secondary variant\n {\n shape: 'icon-only',\n variant: 'secondary',\n class: 'bg-blue-600 text-white border border-blue-600',\n },\n // Icon-only + ghost variant\n {\n shape: 'icon-only',\n variant: 'ghost',\n class: 'bg-violet-100 text-slate-800 border border-violet-100',\n },\n // Icon-only + link variant\n {\n shape: 'icon-only',\n variant: 'link',\n class: 'bg-transparent text-blue-600 border border-transparent',\n },\n // Icon-only + destructive variant\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\n/**\n * Button icon variants\n *\n * Controls the icon styling within buttons\n */\nexport const buttonIconVariants = cva(\n clsx(\n // Layout\n 'shrink-0',\n ),\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\n/**\n * Button label variants\n *\n * Controls the label text styling\n */\nexport const buttonLabelVariants = cva(\n clsx(\n // Layout\n 'inline-block',\n ),\n);\n\n/**\n * Button icon-only wrapper variants\n *\n * Controls the icon wrapper for icon-only buttons\n */\nexport const buttonIconOnlyVariants = cva(\n clsx(\n // Layout\n 'flex items-center justify-center',\n 'w-full h-full',\n ),\n {\n variants: {\n size: {\n sm: 'w-[17px] h-[17px]',\n md: 'w-[21px] h-[21px]',\n lg: 'w-[26px] h-[26px]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n","import { Component, computed, input, output } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { type VariantProps } from 'class-variance-authority';\nimport { clsx } from 'clsx';\nimport {\n buttonVariants,\n buttonIconVariants,\n buttonLabelVariants,\n buttonIconOnlyVariants,\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';\nexport type IconName =\n | 'check'\n | 'chevron-left'\n | 'chevron-right'\n | 'chevron-up'\n | 'chevron-down'\n | 'none';\n\nexport type ButtonVariantsProps = VariantProps<typeof buttonVariants>;\n\n// Icon definitions for icon-only buttons\nconst icons: Record<string, string> = {\n 'chevron-left': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M9.64776 3.57275C9.91136 3.30915 10.3386 3.30915 10.6023 3.57275C10.8659 3.83636 10.8659 4.26364 10.6023 4.52724L7.0295 8.1L10.6023 11.6728C10.8659 11.9364 10.8659 12.3636 10.6023 12.6272C10.3386 12.8908 9.91136 12.8908 9.64776 12.6272L5.59776 8.57724C5.33415 8.31364 5.33415 7.88636 5.59776 7.62275L9.64776 3.57275Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-right': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6.35224 3.57275C6.08864 3.30915 5.66136 3.30915 5.39776 3.57275C5.13415 3.83636 5.13415 4.26364 5.39776 4.52724L8.9705 8.1L5.39776 11.6728C5.13415 11.9364 5.13415 12.3636 5.39776 12.6272C5.66136 12.8908 6.08864 12.8908 6.35224 12.6272L10.4022 8.57724C10.6659 8.31364 10.6659 7.88636 10.4022 7.62275L6.35224 3.57275Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-up': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3.57275 9.64776C3.30915 9.91136 3.30915 10.3386 3.57275 10.6023C3.83636 10.8659 4.26364 10.8659 4.52724 10.6023L8.1 7.0295L11.6728 10.6023C11.9364 10.8659 12.3636 10.8659 12.6272 10.6023C12.8908 10.3386 12.8908 9.91136 12.6272 9.64776L8.57724 5.59776C8.31364 5.33415 7.88636 5.33415 7.62275 5.59776L3.57275 9.64776Z\" fill=\"currentColor\"/>\n</svg>`,\n 'chevron-down': `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M3.57275 6.35224C3.30915 6.08864 3.30915 5.66136 3.57275 5.39776C3.83636 5.13415 4.26364 5.13415 4.52724 5.39776L8.1 8.9705L11.6728 5.39776C11.9364 5.13415 12.3636 5.13415 12.6272 5.39776C12.8908 5.66136 12.8908 6.08864 12.6272 6.35224L8.57724 10.4022C8.31364 10.6659 7.88636 10.6659 7.62275 10.4022L3.57275 6.35224Z\" fill=\"currentColor\"/>\n</svg>`,\n check: `<svg width=\"100%\" height=\"100%\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684Z\" fill=\"currentColor\"/>\n</svg>`,\n none: '',\n};\n\n/**\n * Button Component - Interactive button with multiple variants\n *\n * Following shadcn/ui pattern:\n * ```html\n * <bsg-button\n * [variant]=\"'default'\"\n * [size]=\"'md'\"\n * [shape]=\"'rectangular'\"\n * [label]=\"'Click me'\"\n * (Click)=\"onClick()\"\n * />\n * ```\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-label]=\"\n shape() === 'icon-only' ? label() || 'Icon button' : null\n \"\n >\n <!-- Icon-only button: centered icon using DomSanitizer -->\n @if (shape() === 'icon-only') {\n <span\n [class]=\"iconOnlyClasses()\"\n [innerHTML]=\"getIconSvg(iconName())\"\n ></span>\n }\n\n <!-- Regular buttons with optional icons -->\n @if (shape() !== 'icon-only' && icon() && iconPosition() === 'left') {\n <svg\n [class]=\"iconClasses('left')\"\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.43152 0.706459C7.98489 0.461733 9.57507 0.757369 10.9371 1.54325C11.236 1.71571 11.3389 2.09758 11.1666 2.39652C10.9941 2.6955 10.6117 2.79791 10.3127 2.6254C9.19838 1.98244 7.8971 1.74102 6.62622 1.9412C5.35531 2.14143 4.19123 2.77142 3.32849 3.72587C2.46577 4.68036 1.95621 5.90193 1.88501 7.18656C1.81383 8.47123 2.18524 9.74182 2.93726 10.7858C3.68927 11.8297 4.7767 12.5845 6.0177 12.9239C7.2587 13.2632 8.57874 13.167 9.75733 12.651C10.936 12.1351 11.9022 11.2303 12.4948 10.0882C13.0872 8.94613 13.2698 7.63546 13.0129 6.37479C12.944 6.03664 13.1625 5.7065 13.5006 5.63749C13.8388 5.56857 14.169 5.78696 14.2379 6.12516C14.5519 7.66605 14.3279 9.26786 13.6038 10.6637C12.8796 12.0596 11.699 13.1654 10.2584 13.7961C8.81797 14.4266 7.20484 14.5441 5.68811 14.1293C4.17129 13.7145 2.84198 12.7923 1.92285 11.5164C1.00374 10.2404 0.549867 8.68771 0.636842 7.11759C0.723839 5.54744 1.3469 4.05449 2.40137 2.88786C3.45582 1.7213 4.87818 0.951184 6.43152 0.706459ZM13.3084 2.05778C13.5524 1.81398 13.9482 1.81382 14.1921 2.05778C14.4362 2.30186 14.4362 2.6981 14.1921 2.94218L7.94214 9.19218C7.69815 9.43613 7.30244 9.43597 7.05835 9.19218L5.18335 7.31718C4.93927 7.0731 4.93927 6.67686 5.18335 6.43278C5.42744 6.18898 5.82315 6.18882 6.06714 6.43278L7.50025 7.86588L13.3084 2.05778Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n\n @if (shape() !== 'icon' && shape() !== 'icon-only') {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n\n @if (shape() !== 'icon-only' && icon() && iconPosition() === 'right') {\n <svg\n [class]=\"iconClasses('right')\"\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.43152 0.706459C7.98489 0.461733 9.57507 0.757369 10.9371 1.54325C11.236 1.71571 11.3389 2.09758 11.1666 2.39652C10.9941 2.6955 10.6117 2.79791 10.3127 2.6254C9.19838 1.98244 7.8971 1.74102 6.62622 1.9412C5.35531 2.14143 4.19123 2.77142 3.32849 3.72587C2.46577 4.68036 1.95621 5.90193 1.88501 7.18656C1.81383 8.47123 2.18524 9.74182 2.93726 10.7858C3.68927 11.8297 4.7767 12.5845 6.0177 12.9239C7.2587 13.2632 8.57874 13.167 9.75733 12.651C10.936 12.1351 11.9022 11.2303 12.4948 10.0882C13.0872 8.94613 13.2698 7.63546 13.0129 6.37479C12.944 6.03664 13.1625 5.7065 13.5006 5.63749C13.8388 5.56857 14.169 5.78696 14.2379 6.12516C14.5519 7.66605 14.3279 9.26786 13.6038 10.6637C12.8796 12.0596 11.699 13.1654 10.2584 13.7961C8.81797 14.4266 7.20484 14.5441 5.68811 14.1293C4.17129 13.7145 2.84198 12.7923 1.92285 11.5164C1.00374 10.2404 0.549867 8.68771 0.636842 7.11759C0.723839 5.54744 1.3469 4.05449 2.40137 2.88786C3.45582 1.7213 4.87818 0.951184 6.43152 0.706459ZM13.3084 2.05778C13.5524 1.81398 13.9482 1.81382 14.1921 2.05778C14.4362 2.30186 14.4362 2.6981 14.1921 2.94218L7.94214 9.19218C7.69815 9.43613 7.30244 9.43597 7.05835 9.19218L5.18335 7.31718C4.93927 7.0731 4.93927 6.67686 5.18335 6.43278C5.42744 6.18898 5.82315 6.18882 6.06714 6.43278L7.50025 7.86588L13.3084 2.05778Z\"\n [attr.fill]=\"iconColor()\"\n />\n </svg>\n }\n </button>\n `,\n styles: `\n :host {\n display: inline-block;\n }\n `,\n})\nexport class ButtonComponent {\n constructor(private sanitizer: DomSanitizer) {}\n\n /** Size of the button */\n readonly size = input<ButtonSize>('md');\n\n /** Visual variant of the button */\n readonly variant = input<ButtonVariant>('default');\n\n /** Shape of the button */\n readonly shape = input<ButtonShape>('rectangular');\n\n /** Button label text */\n readonly label = input<string>('Boton');\n\n /** Show icon */\n readonly icon = input<boolean>(false);\n\n /** Icon position (left or right) */\n readonly iconPosition = input<'left' | 'right'>('left');\n\n /** Icon name for icon-only buttons */\n readonly iconName = input<IconName>('chevron-left');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Additional CSS classes */\n readonly className = input<string>();\n\n /** Click event emitter */\n readonly Click = output<Event>();\n\n // Computed disabled state\n readonly isDisabled = computed(() => this.disabled());\n\n // Computed button classes\n readonly buttonClasses = computed(() =>\n clsx(\n buttonVariants({\n size: this.size(),\n variant: this.variant(),\n shape: this.shape(),\n disabled: this.disabled(),\n }),\n this.icon() && 'btn-with-icon',\n this.className(),\n ),\n );\n\n // Computed icon classes\n iconClasses(position: 'left' | 'right' | 'center'): string {\n return clsx(\n buttonIconVariants({ position }),\n this.shape() === 'icon' && 'm-0',\n );\n }\n\n // Computed label classes\n readonly labelClasses = computed(() => clsx(buttonLabelVariants()));\n\n // Computed icon-only wrapper classes\n readonly iconOnlyClasses = computed(() =>\n clsx(buttonIconOnlyVariants({ size: this.size() })),\n );\n\n // Computed icon color based on variant\n readonly iconColor = computed(() => {\n const variantVal = this.variant();\n if (variantVal === 'outline') return '#7C3AED';\n if (variantVal === 'ghost') return '#1E293B';\n if (variantVal === 'link') return '#2563EB';\n return 'white';\n });\n\n getIconSvg(iconName: string): SafeHtml {\n const svg = icons[iconName] || icons['none'];\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n handleClick(event: Event): void {\n if (!this.disabled()) {\n this.Click.emit(event);\n }\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-white',\n // Transition\n 'transition-all duration-200',\n ),\n {\n variants: {\n variant: {\n default: 'border border-zinc-200',\n },\n contentVariant: {\n default: '',\n metric: clsx(\n 'items-center justify-center',\n 'px-[89px] py-4',\n 'min-h-[87px]',\n 'bg-red-50 border border-red-200',\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-blue-50 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-blue-200 border-0',\n ),\n placeholder: clsx(\n 'w-[277px] min-h-[225px]',\n 'border border-slate-200',\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-slate-600',\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-neutral-800',\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-green-600',\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-slate-500',\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-slate-600',\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-red-600',\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-slate-600',\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-slate-600',\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-slate-700',\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-blue-600',\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-white border border-[#E2E8F0]',\n\n // Color del icono\n 'text-purple-600',\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-purple-600 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-purple-600',\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-purple-600 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-white',\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-orange-600 text-white',\n info: 'bg-purple-100 text-purple-600',\n secondary: 'bg-purple-100 text-purple-600',\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-slate-500',\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-slate-200',\n 'box-border',\n 'w-full',\n ),\n);\n\nexport type DialogFooterVariantsProps = VariantProps<typeof dialogFooterVariants>;\n","// projects/bsg-integra/src/lib/components/dialog/dialog.component.ts\nimport { Component, computed, HostListener, input, output } 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-slate-800',\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 * 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 {\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/switch';\nexport * from './lib/components/textarea';\nexport * from './lib/components/timepicker';\nexport * from './lib/components/toast';\nexport * from './lib/components/tooltip';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|