ten-minds-ui-kit 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ten-minds-ui-kit.mjs","sources":["../../../projects/tm-ui/src/lib/tw-cart/tw-cart.ts","../../../projects/tm-ui/src/lib/tw-cart/tw-cart.html","../../../projects/tm-ui/src/lib/btn-primary/btn-primary.ts","../../../projects/tm-ui/src/lib/btn-primary/btn-primary.html","../../../projects/tm-ui/src/lib/input-ten/input-ten.ts","../../../projects/tm-ui/src/lib/input-ten/input-ten.html","../../../projects/tm-ui/src/lib/snackbar/snackbar.ts","../../../projects/tm-ui/src/lib/snackbar/snackbar.html","../../../projects/tm-ui/src/lib/snackbar/snackbar.service.ts","../../../projects/tm-ui/src/lib/snackbar-host/snackbar-host.ts","../../../projects/tm-ui/src/lib/snackbar-host/snackbar-host.html","../../../projects/tm-ui/src/lib/chip/chip.ts","../../../projects/tm-ui/src/lib/chip/chip.html","../../../projects/tm-ui/src/lib/toggle/toggle.ts","../../../projects/tm-ui/src/lib/toggle/toggle.html","../../../projects/tm-ui/src/lib/checkbox/checkbox.ts","../../../projects/tm-ui/src/lib/checkbox/checkbox.html","../../../projects/tm-ui/src/lib/radio-button/radio-button.ts","../../../projects/tm-ui/src/lib/radio-button/radio-button.html","../../../projects/tm-ui/src/lib/avatar/types/Avatar.types.ts","../../../projects/tm-ui/src/lib/avatar/avatar.ts","../../../projects/tm-ui/src/lib/avatar/avatar.html","../../../projects/tm-ui/src/lib/close-dialog/close-dialog.ts","../../../projects/tm-ui/src/lib/close-dialog/close-dialog.html","../../../projects/tm-ui/src/lib/card-button/card-button.ts","../../../projects/tm-ui/src/lib/card-button/card-button.html","../../../projects/tm-ui/src/lib/btn-theme/btn-theme.ts","../../../projects/tm-ui/src/lib/btn-theme/btn-theme.html","../../../projects/tm-ui/src/lib/menu/menu-trigger-directive.ts","../../../projects/tm-ui/src/lib/menu/menu.ts","../../../projects/tm-ui/src/lib/menu/menu.html","../../../projects/tm-ui/src/lib/menu-item/menu-item.ts","../../../projects/tm-ui/src/lib/menu-item/menu-item.html","../../../projects/tm-ui/src/lib/menu/index.ts","../../../projects/tm-ui/src/lib/btn-icon/btn-icon.ts","../../../projects/tm-ui/src/lib/btn-icon/btn-icon.html","../../../projects/tm-ui/src/lib/select/select.ts","../../../projects/tm-ui/src/lib/select/select.html","../../../projects/tm-ui/src/public-api.ts","../../../projects/tm-ui/src/ten-minds-ui-kit.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-tw-cart',\n imports: [],\n templateUrl: './tw-cart.html',\n styleUrl: './tw-cart.css',\n})\nexport class TwCart {\n\n}\n","<div class=\"bg-[#161616] border border-[#2a2a2a] rounded-2xl overflow-hidden w-full max-w-md\">\n\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-5 border-b border-[#1f1f1f]\">\n <div class=\"flex items-center gap-2.5\">\n <div class=\"w-8 h-8 bg-[#1a1a1a] border border-[#2a2a2a] rounded-lg flex items-center justify-center\">\n <svg class=\"w-4 h-4 text-[#e2e2e2]\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M1 1h2l2.5 8h7l1.5-5H4.5\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <circle cx=\"7\" cy=\"13\" r=\"1\" fill=\"currentColor\"/>\n <circle cx=\"11\" cy=\"13\" r=\"1\" fill=\"currentColor\"/>\n </svg>\n </div>\n <span class=\"text-[15px] font-medium text-[#e2e2e2] tracking-tight\">Your cart</span>\n <span class=\"text-[11px] font-mono bg-[#1f1f1f] border border-[#2a2a2a] text-[#666] px-2 py-0.5 rounded-full\">3</span>\n </div>\n </div>\n\n <!-- Items -->\n <div class=\"divide-y divide-[#1f1f1f]\">\n\n <!-- Item -->\n <div class=\"flex items-center gap-4 px-6 py-4\">\n <div class=\"w-12 h-12 rounded-xl bg-[#1e2a20] border border-[#2a3a2c] flex-shrink-0 flex items-center justify-center text-xl\">\n 🎧\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-[13px] font-medium text-[#d8d8d8] truncate\">Studio Headphones Pro</p>\n <p class=\"text-[11px] text-[#555] mt-0.5 font-mono\">Midnight Black</p>\n </div>\n <div class=\"flex items-center gap-3 flex-shrink-0\">\n <div class=\"flex items-center bg-[#1f1f1f] border border-[#2a2a2a] rounded-lg overflow-hidden\">\n <span class=\"w-7 h-7 flex items-center justify-center text-[#555] text-sm\">−</span>\n <span class=\"text-[12px] text-[#d8d8d8] font-mono min-w-[20px] text-center\">1</span>\n <span class=\"w-7 h-7 flex items-center justify-center text-[#555] text-sm\">+</span>\n </div>\n <span class=\"text-[13px] font-semibold text-[#e2e2e2] font-mono w-14 text-right\">$249</span>\n </div>\n </div>\n\n <!-- Item -->\n <div class=\"flex items-center gap-4 px-6 py-4\">\n <div class=\"w-12 h-12 rounded-xl bg-[#201a2a] border border-[#362a40] flex-shrink-0 flex items-center justify-center text-xl\">\n ⌚\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-[13px] font-medium text-[#d8d8d8] truncate\">Smart Watch Series X</p>\n <p class=\"text-[11px] text-[#555] mt-0.5 font-mono\">45mm · Space Gray</p>\n </div>\n <div class=\"flex items-center gap-3 flex-shrink-0\">\n <div class=\"flex items-center bg-[#1f1f1f] border border-[#2a2a2a] rounded-lg overflow-hidden\">\n <span class=\"w-7 h-7 flex items-center justify-center text-[#555] text-sm\">−</span>\n <span class=\"text-[12px] text-[#d8d8d8] font-mono min-w-[20px] text-center\">2</span>\n <span class=\"w-7 h-7 flex items-center justify-center text-[#555] text-sm\">+</span>\n </div>\n <span class=\"text-[13px] font-semibold text-[#e2e2e2] font-mono w-14 text-right\">$798</span>\n </div>\n </div>\n\n <!-- Item -->\n <div class=\"flex items-center gap-4 px-6 py-4\">\n <div class=\"w-12 h-12 rounded-xl bg-[#2a1e1a] border border-[#402d28] flex-shrink-0 flex items-center justify-center text-xl\">\n 🖱️\n </div>\n <div class=\"flex-1 min-w-0\">\n <p class=\"text-[13px] font-medium text-[#d8d8d8] truncate\">Ergonomic Mouse Ultra</p>\n <p class=\"text-[11px] text-[#555] mt-0.5 font-mono\">Wireless · Graphite</p>\n </div>\n <div class=\"flex items-center gap-3 flex-shrink-0\">\n <div class=\"flex items-center bg-[#1f1f1f] border border-[#2a2a2a] rounded-lg overflow-hidden\">\n <span class=\"w-7 h-7 flex items-center justify-center text-[#555] text-sm\">−</span>\n <span class=\"text-[12px] text-[#d8d8d8] font-mono min-w-[20px] text-center\">1</span>\n <span class=\"w-7 h-7 flex items-center justify-center text-[#555] text-sm\">+</span>\n </div>\n <span class=\"text-[13px] font-semibold text-[#e2e2e2] font-mono w-14 text-right\">$89</span>\n </div>\n </div>\n\n </div>\n\n <!-- Summary -->\n <div class=\"px-6 py-4 border-t border-[#1f1f1f] flex flex-col gap-2\">\n <div class=\"flex justify-between\">\n <span class=\"text-[12px] text-[#555]\">Subtotal</span>\n <span class=\"text-[12px] text-[#888] font-mono\">$1,136.00</span>\n </div>\n <div class=\"flex justify-between\">\n <span class=\"text-[12px] text-[#555]\">Shipping</span>\n <span class=\"text-[12px] text-emerald-400 font-mono\">Free</span>\n </div>\n <div class=\"flex justify-between pt-3 mt-1 border-t border-[#1f1f1f]\">\n <span class=\"text-[14px] font-medium text-[#d8d8d8] tracking-tight\">Total</span>\n <span class=\"text-[16px] font-semibold text-[#e2e2e2] font-mono tracking-tight\">$1,136.00</span>\n </div>\n </div>\n\n <!-- CTA -->\n <div class=\"px-6 pb-6 flex flex-col gap-2\">\n <button class=\"w-full py-3.5 bg-[#e2e2e2] rounded-xl text-[14px] font-semibold text-[#0f0f0f] tracking-tight\">\n Checkout — $1,136.00\n </button>\n <button class=\"w-full py-2.5 text-[12px] text-[#444] bg-transparent border-none\">\n Continue shopping →\n </button>\n </div>\n\n</div>\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\n\nexport type ButtonColor = 'primary' | 'danger' | 'success' | 'warning';\nexport type ButtonSize = 'lg' | 'md' | 'sm';\nexport type ButtonType = 'filled' | 'outlined' | 'ghost';\nexport type ButtonRounded = 'default' | 'full';\n\n@Component({\n selector: 'tm-button',\n imports: [LucideAngularModule],\n templateUrl: './btn-primary.html',\n host: {\n '[attr.disabled]': 'disabled() || null',\n },\n})\nexport class BtnPrimary {\n color = input<ButtonColor>('primary');\n size = input<ButtonSize>('md');\n type = input<ButtonType>('filled');\n active = input<boolean>(false);\n disabled = input<boolean>(false);\n iconLeft = input<LucideIconData>();\n iconRight = input<LucideIconData>();\n rounded = input<ButtonRounded>('default');\n customClass = input<string>('');\n\n clicked = output<MouseEvent>();\n\n iconSize = computed(() => {\n const sizeMap: Record<ButtonSize, number> = { lg: 20, md: 16, sm: 14 };\n return sizeMap[this.size()];\n });\n\n leftIcon = computed(() => !!this.iconLeft());\n rightIcon = computed(() => !!this.iconRight());\n\n classes = computed(() => {\n const base =\n 'inline-flex items-center justify-center font-medium transition-all duration-200 whitespace-nowrap';\n\n const roundedMap: Record<ButtonRounded, string> = {\n default: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const sizes: Record<ButtonSize, string> = {\n lg: 'h-11 min-h-11 px-5 py-3 gap-2.5 text-sm-medium ',\n md: 'h-10 px-4 py-2.5 gap-2 text-sm-medium',\n sm: 'h-9 px-3 py-2 gap-2 text-xs-medium',\n };\n\n const variants: Record<ButtonColor, Record<ButtonType, string>> = {\n primary: {\n filled: 'bg-tm-brand text-tm-inverse hover:bg-tm-brand-hover-default hover:border-tm-brand-hover-default',\n outlined:\n 'border border-tm-default text-tm-primary hover:bg-tm-brand-hover-subtle hover:border-tm-default',\n ghost: 'text-tm-primary border-transparent hover:bg-tm-brand-hover-subtle',\n },\n danger: {\n filled: 'bg-tm-red-500 text-tm-base-white hover:bg-tm-red-600 hover:border-tm-red-600',\n outlined:\n 'text-red-500 border border-tm-default hover:bg-tm-red-500/10 hover:border-tm-default',\n ghost: 'text-tm-red-500 border-transparent hover:bg-tm-red-500/10',\n },\n success: {\n filled:\n 'bg-tm-green-500 text-tm-base-white hover:bg-tm-green-600 hover:border-tm-green-600',\n outlined: 'text-tm-green-500 border border-tm-default hover:bg-tm-green-500/10',\n ghost: 'text-tm-green-500 border-transparent hover:bg-tm-green-500/10',\n },\n warning: {\n filled:\n 'bg-tm-yellow-500 text-tm-base-black hover:bg-tm-yellow-600 hover:border-tm-yellow-600',\n outlined: 'text-tm-yellow-500 border border-tm-default hover:bg-tm-yellow-500/10',\n ghost: 'text-tm-yellow-600 border-transparent hover:bg-tm-yellow-500/10',\n },\n };\n\n const activeClass = this.active() ? 'brightness-90' : '';\n const disabledClass = this.disabled() ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer';\n\n return [\n base,\n sizes[this.size()],\n variants[this.color()][this.type()],\n roundedMap[this.rounded()],\n activeClass,\n disabledClass,\n this.customClass(),\n ]\n .filter(Boolean)\n .join(' ');\n });\n\n onButtonClick(event: MouseEvent): void {\n if (!this.disabled()) {\n this.clicked.emit(event);\n }\n }\n}\n","<button [class]=\"classes()\" [disabled]=\"disabled()\" (click)=\"onButtonClick($event)\">\n @if (leftIcon()) {\n <lucide-icon [img]=\"iconLeft()!\" [size]=\"iconSize()\" [strokeWidth]=\"1.75\" />\n }\n <span><ng-content /></span>\n @if (rightIcon()) {\n <lucide-icon [img]=\"iconRight()!\" [size]=\"iconSize()\" [strokeWidth]=\"1.75\" />\n }\n</button>\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n input,\n output,\n signal,\n model,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\nimport { InputSize, InputType } from './types/Input.types';\n\nconst SIZE_WRAPPER: Record<InputSize, string> = {\n md: 'h-11 min-h-11 px-4 py-2 gap-2.5 text-sm',\n sm: 'h-10 min-h-10 px-4 py-2 gap-2 text-xs',\n};\n\nconst ICON_SIZE_PX: Record<InputSize, number> = {\n md: 20,\n sm: 16,\n};\n\nconst BASE_WRAPPER =\n 'inline-flex items-center rounded-lg border w-[273px] ' +\n 'transition-all duration-300 cursor-text hover:shadow-md';\n\nconst STATE_WRAPPER = {\n default: 'border-tm-default text-tm-secondary hover:border-tm-strong',\n active: 'border-tm-default text-tm-primary ring-2 ring-tm-default/20 ',\n hover: 'border-tm-strong text-tm-secondary',\n disabled: 'border-tm-subtle text-tm-secondary bg-tm-subtle cursor-not-allowed hover:shadow-none',\n error: 'border-tm-red-500 text-tm-secondary',\n};\n\nconst BASE_INPUT =\n 'flex-1 bg-transparent outline-none ' +\n 'placeholder:text-tm-secondary disabled:cursor-not-allowed';\n\n@Component({\n selector: 'tm-input',\n standalone: true,\n imports: [LucideAngularModule, FormsModule],\n templateUrl: './input-ten.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class InputTen {\n // ── Inputs\n readonly value = model<string>('');\n readonly size = input<InputSize>('md');\n readonly type = input<InputType>('text');\n readonly placeholder = input<string>('placeholder');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly error = input<string>('');\n readonly iconLeft = input<LucideIconData>();\n readonly iconRight = input<LucideIconData>();\n\n // ── Outputs\n readonly focused = output<FocusEvent>();\n readonly blurred = output<FocusEvent>();\n\n // ── Estado interno\n readonly isFocused = signal(false);\n\n readonly currentState = computed(() => {\n if (this.disabled()) return 'disabled';\n if (this.error()) return 'error';\n if (this.isFocused()) return 'active';\n return 'default';\n });\n\n readonly iconSizePx = computed(() => ICON_SIZE_PX[this.size()]);\n\n readonly wrapperClasses = computed(() =>\n [BASE_WRAPPER, SIZE_WRAPPER[this.size()], STATE_WRAPPER[this.currentState()]].join(' '),\n );\n\n readonly iconColorClass = computed(() => {\n if (this.currentState() === 'error') return 'text-tm-color-500';\n if (this.currentState() === 'active') return 'text-tm-primary';\n return 'text-tm-secondary';\n });\n\n readonly showLabel = computed(() => !!this.label());\n readonly showHint = computed(() => !!this.hint() && this.currentState() !== 'error');\n readonly showError = computed(() => !!this.error());\n readonly inputClasses = BASE_INPUT;\n\n onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.focused.emit(event);\n }\n\n onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.blurred.emit(event);\n }\n\n onInput(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.value.set(val);\n }\n}\n","<!-- Label -->\n@if (showLabel()) {\n <label class=\"block text-sm font-medium text-tm-primary mb-1.5\">\n {{ label() }}\n @if (required()) {\n <span class=\"text-text-danger ml-0.5\">*</span>\n }\n </label>\n}\n\n<!-- Wrapper del input -->\n<div [class]=\"wrapperClasses()\">\n\n <!-- Icono izquierdo -->\n @if (iconLeft()) {\n <lucide-icon\n [img]=\"iconLeft()!\"\n [size]=\"iconSizePx()\"\n [strokeWidth]=\"1.75\"\n [class]=\"iconColorClass()\"\n />\n }\n\n <!-- Input nativo -->\n <input\n [class]=\"inputClasses\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"disabled()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n (input)=\"onInput($event)\"\n />\n\n <!-- Icono derecho -->\n @if (iconRight()) {\n <lucide-icon\n [img]=\"iconRight()!\"\n [size]=\"iconSizePx()\"\n [strokeWidth]=\"1.75\"\n [class]=\"iconColorClass()\"\n />\n }\n\n</div>\n\n<!-- Hint -->\n@if (showHint()) {\n <p class=\"mt-1.5 text-xs text-tm-secondary\">\n {{ hint() }}\n </p>\n}\n\n<!-- Error -->\n@if (showError()) {\n <p class=\"mt-1.5 text-xs text-tm-red-500\">\n {{ error() }}\n </p>\n}\n","import { Component, computed, input, output } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport {\n CircleCheck,\n CircleX,\n Info,\n LucideAngularModule,\n LucideIconData,\n TriangleAlert,\n X,\n} from 'lucide-angular';\nimport { SnackbarColor, SnackbarPosition, SnackbarType } from './snackbar.service';\n\n@Component({\n selector: 'tm-snackbar',\n imports: [NgIf, LucideAngularModule],\n templateUrl: './snackbar.html',\n})\nexport class Snackbar {\n color = input<SnackbarColor>('success');\n type = input<SnackbarType>('alert');\n title = input.required<string>();\n description = input<string>();\n position = input<SnackbarPosition>('top-right');\n\n closed = output<void>();\n\n private readonly iconMap: Record<SnackbarColor, LucideIconData> = {\n success: CircleCheck,\n warning: TriangleAlert,\n error: CircleX,\n info: Info,\n };\n\n readonly closeIcon = X;\n icon = computed(() => this.iconMap[this.color()]);\n\n private readonly alertClasses: Record<SnackbarColor, string> = {\n success: 'bg-tm-green-500/10 outline outline-1 outline-offset-[-1px] outline-tm-green-500/50',\n warning: 'bg-tm-yellow-500/10 outline outline-1 outline-offset-[-1px] outline-tm-yellow-500/50',\n error: 'bg-tm-red-500/10 outline outline-1 outline-offset-[-1px] outline-tm-red-500/50',\n info: 'bg-tm-blue-500/10 outline outline-1 outline-offset-[-1px] outline-tm-blue-500/50',\n };\n\n private readonly iconColorClasses: Record<SnackbarColor, string> = {\n success: 'text-tm-green-500',\n warning: 'text-tm-yellow-500',\n error: 'text-tm-red-500',\n info: 'text-tm-blue-500',\n };\n\n private readonly accentBarColorMap: Record<SnackbarColor, string> = {\n success: 'bg-tm-green-500',\n warning: 'bg-tm-yellow-500',\n error: 'bg-tm-red-500',\n info: 'bg-tm-blue-500',\n };\n accentBarClasses = computed(() => `w-1.5 self-stretch ${this.accentBarColorMap[this.color()]}`);\n\n private readonly titleAlertClasses: Record<SnackbarColor, string> = {\n success: 'text-tm-green-700',\n warning: 'text-tm-yellow-700',\n error: 'text-tm-red-700',\n info: 'text-tm-blue-700',\n };\n\n private readonly positionClasses: Record<SnackbarPosition, string> = {\n 'top-left': 'top-4 left-4 items-start',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2 items-center',\n 'top-right': 'top-4 right-4 items-end',\n 'bottom-left': 'bottom-4 left-4 items-start',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2 items-center',\n 'bottom-right': 'bottom-4 right-4 items-end',\n };\n\n containerClasses = computed(() => {\n const base = 'animate-slide-in-right flex items-stretch w-96 rounded-xl overflow-hidden';\n const typeClass =\n this.type() === 'alert' ? this.alertClasses[this.color()] : 'bg-tm-surface shadow-md';\n return `${base} ${typeClass}`;\n });\n\n wrapperClasses = computed(() => {\n return `fixed z-50 flex flex-col ${this.positionClasses[this.position()]}`;\n });\n\n iconClasses = computed(() => this.iconColorClasses[this.color()]);\n\n titleClasses = computed(() => {\n const colorClass =\n this.type() === 'notification' ? 'text-tm-primary' : this.titleAlertClasses[this.color()];\n return `text-sm-semibold ${colorClass}`;\n });\n}\n","<div [class]=\"containerClasses()\">\n @if (type() === 'notification') {\n <div [class]=\"accentBarClasses()\"></div>\n }\n <div class=\"flex items-start gap-3 flex-1 p-5\">\n <lucide-icon [img]=\"icon()\" [size]=\"20\" [class]=\"iconClasses()\" />\n <div class=\"flex-1 flex flex-col gap-0.5\">\n <span [class]=\"titleClasses()\">{{ title() }}</span>\n @if (description()) {\n <span class=\"text-xs-regular text-tm-secondary\">{{ description() }}</span>\n }\n </div>\n @if (type() === 'notification') {\n <button\n (click)=\"closed.emit()\"\n class=\"text-tm-tertiary hover:text-tm-primary transition-colors cursor-pointer\"\n >\n <lucide-icon [img]=\"closeIcon\" [size]=\"16\" />\n </button>\n }\n </div>\n</div>\n","import { Injectable, signal } from '@angular/core';\n\nexport type SnackbarColor = 'success' | 'warning' | 'error' | 'info';\nexport type SnackbarType = 'notification' | 'alert';\nexport type SnackbarPosition =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\nexport interface SnackbarItem {\n id: string;\n type: SnackbarType;\n color: SnackbarColor;\n title: string;\n description?: string;\n duration?: number;\n position: SnackbarPosition;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SnackbarService {\n items = signal<SnackbarItem[]>([]);\n\n private add(type: SnackbarType, color: SnackbarColor, title: string, description?: string, duration?: number, position?: SnackbarPosition) {\n const id = crypto.randomUUID();\n this.items.update((current) => [\n { id, type, color, title, description, duration: duration ?? 5000, position: position ?? 'top-right' },\n ...current,\n ]);\n\n if (type === 'alert') {\n setTimeout(() => this.remove(id), duration ?? 5000);\n }\n }\n\n alert(color: SnackbarColor, title: string, description?: string, duration?: number, position?: SnackbarPosition) {\n this.add('alert', color, title, description, duration, position);\n }\n\n notify(color: SnackbarColor, title: string, description?: string, position?: SnackbarPosition) {\n this.add('notification', color, title, description, undefined, position);\n }\n\n remove(id: string) {\n this.items.update((current) => current.filter((item) => item.id !== id));\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { NgFor } from '@angular/common';\nimport { SnackbarService, SnackbarPosition } from '../snackbar/snackbar.service';\nimport { Snackbar } from '../snackbar/snackbar';\n\n@Component({\n selector: 'tm-snackbar-host',\n imports: [NgFor, Snackbar],\n templateUrl: './snackbar-host.html',\n})\nexport class SnackbarHost {\n snackbarService = inject(SnackbarService);\n\n private readonly containerClasses: Record<SnackbarPosition, string> = {\n 'top-left': 'fixed top-4 left-4 flex flex-col gap-3 z-50',\n 'top-center': 'fixed top-4 left-1/2 -translate-x-1/2 flex flex-col gap-3 z-50',\n 'top-right': 'fixed top-4 right-4 flex flex-col gap-3 z-50',\n 'bottom-left': 'fixed bottom-4 left-4 flex flex-col-reverse gap-3 z-50',\n 'bottom-center': 'fixed bottom-4 left-1/2 -translate-x-1/2 flex flex-col-reverse gap-3 z-50',\n 'bottom-right': 'fixed bottom-4 right-4 flex flex-col-reverse gap-3 z-50',\n };\n\n readonly positions: SnackbarPosition[] = [\n 'top-left', 'top-center', 'top-right',\n 'bottom-left', 'bottom-center', 'bottom-right',\n ];\n\n itemsByPosition = computed(() => {\n const items = this.snackbarService.items();\n return this.positions.map(position => ({\n position,\n classes: this.containerClasses[position],\n items: items.filter(i => i.position === position),\n }));\n });\n}\n","@for (group of itemsByPosition(); track group.position) {\n @if (group.items.length > 0) {\n <div [class]=\"group.classes\">\n <tm-snackbar\n *ngFor=\"let item of group.items\"\n [type]=\"item.type\"\n [color]=\"item.color\"\n [title]=\"item.title\"\n [description]=\"item.description\"\n [position]=\"item.position\"\n (closed)=\"snackbarService.remove(item.id)\"\n />\n </div>\n }\n}\n","import { NgIf } from '@angular/common';\nimport { Component, computed, input, output } from '@angular/core';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\n\nexport type ChipStatus = 'success' | 'warning' | 'indigo' | 'danger' | 'info' | 'brand';\nexport type ChipType = 'filled' | 'subtle' | 'outlined';\nexport type ChipRounded = 'default' | 'full';\n\n@Component({\n selector: 'tm-chip',\n imports: [LucideAngularModule],\n templateUrl: './chip.html',\n})\nexport class Chip {\n status = input<ChipStatus>('brand');\n type = input<ChipType>('filled');\n rounded = input<ChipRounded>('default');\n iconLeft = input<LucideIconData>();\n iconRight = input<LucideIconData>();\n clickable = input<boolean>(false);\n\n clicked = output<void>();\n\n private readonly roundedClasses: Record<ChipRounded, string> = {\n default: 'rounded-md',\n full: 'rounded-[999px]',\n };\n\n private readonly filledClasses: Record<ChipStatus, string> = {\n success: 'bg-tm-green-500 text-tm-base-white',\n warning: 'bg-tm-yellow-500 text-tm-base-black',\n indigo: 'bg-tm-indigo-500 text-tm-base-white',\n danger: 'bg-tm-red-500 text-tm-base-white',\n info: 'bg-tm-blue-500 text-tm-base-white',\n brand: 'bg-tm-brand text-tm-inverse',\n };\n\n private readonly subtleClasses: Record<ChipStatus, string> = {\n success: 'bg-tm-green-500/10 text-tm-green-500',\n warning: 'bg-tm-yellow-500/10 text-tm-yellow-500',\n indigo: 'bg-tm-indigo-500/10 text-tm-indigo-500',\n danger: 'bg-tm-red-500/10 text-tm-red-500',\n info: 'bg-tm-blue-500/10 text-tm-blue-500',\n brand: 'bg-tm-brand/10 text-tm-secondary',\n };\n\n private readonly outlinedClasses: Record<ChipStatus, string> = {\n success: 'outline outline-1 outline-tm-default text-tm-green-500',\n warning: 'outline outline-1 outline-tm-default text-tm-yellow-500',\n indigo: 'outline outline-1 outline-tm-default text-indigo-500',\n danger: 'outline outline-1 outline-tm-default text-tm-red-500',\n info: 'outline outline-1 outline-tm-default text-tm-blue-500',\n brand: 'outline outline-1 outline-tm-default text-tm-secondary',\n };\n\n containerClasses = computed(() => {\n const typeMap = {\n filled: this.filledClasses[this.status()],\n subtle: this.subtleClasses[this.status()],\n outlined: this.outlinedClasses[this.status()],\n };\n\n const base = 'h-7 min-w-10 min-h-7 inline-flex items-center gap-2 px-2.5 py-1 text-xs-medium transition-colors inline-flex justify-center leading-none';\n const rounded = this.roundedClasses[this.rounded()];\n const typeClass = typeMap[this.type()];\n const cursor = this.clickable() ? 'cursor-pointer hover:opacity-80' : 'cursor-default';\n\n return `${base} ${rounded} ${typeClass} ${cursor}`;\n });\n\n handleClick() {\n if (this.clickable()) {\n this.clicked.emit();\n }\n }\n}\n","<span [class]=\"containerClasses()\" (click)=\"handleClick()\">\n @if (iconLeft()) {\n <lucide-icon [img]=\"iconLeft()!\" [size]=\"14\" [strokeWidth]=\"1.75\" />\n }\n <ng-content />\n @if (iconRight()) {\n <lucide-icon [img]=\"iconRight()!\" [size]=\"14\" [strokeWidth]=\"1.75\" />\n }\n</span>\n","import { Component, computed, input, output } from '@angular/core';\n\nexport type ToggleState = 'default' | 'active';\n\n@Component({\n selector: 'tm-toggle',\n templateUrl: './toggle.html',\n})\nexport class Toggle {\n value = input<boolean>(false);\n disabled = input<boolean>(false);\n\n changed = output<boolean>();\n\n trackClasses = computed(() => {\n const base =\n 'relative w-12 h-7 rounded-[999px] border border-tm-strong transition-colors duration-200';\n const state = this.value() ? 'bg-bg-brand' : 'bg-tm-subtle';\n const cursor = this.disabled() ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer';\n return `${base} ${state} ${cursor}`;\n });\n\n thumbClasses = computed(() => {\n const base =\n 'absolute top-[3px] w-5 h-5 rounded-full bg-tm-base-white shadow-md transition-all duration-200';\n const position = this.value() ? 'left-[22px]' : 'left-[4px]';\n return `${base} ${position}`;\n });\n\n toggle() {\n if (!this.disabled()) {\n this.changed.emit(!this.value());\n }\n }\n}\n","<button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"value()\"\n [disabled]=\"disabled() || null\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\"\n>\n <span [class]=\"thumbClasses()\"></span>\n</button>\n","import { Component, computed, input, output } from '@angular/core';\n\n@Component({\n selector: 'tm-checkbox-button',\n templateUrl: './checkbox.html',\n})\nexport class CheckboxButton {\n checked = input<boolean>(false);\n disabled = input<boolean>(false);\n label = input<string>();\n id = input<string>(`checkbox-${Math.random().toString(36).slice(2)}`);\n\n changed = output<boolean>();\n\n containerClasses = computed(() => {\n const base = 'flex items-center gap-2';\n const cursor = this.disabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer';\n return `${base} ${cursor}`;\n });\n\n boxClasses = computed(() => {\n const base =\n 'w-5 h-5 rounded-sm border-2 flex items-center justify-center transition-all duration-200';\n\n if (this.disabled()) {\n return `${base} border-tm-subtle`;\n }\n\n return this.checked()\n ? `${base} bg-tm-brand border-tm-brand text-tm-inverse`\n : `${base} border-tm-default`;\n });\n\n toggle() {\n if (!this.disabled()) {\n this.changed.emit(!this.checked());\n }\n }\n}\n","<label [for]=\"id()\" [class]=\"containerClasses()\">\n <div class=\"relative\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n class=\"sr-only\"\n (change)=\"toggle()\"\n />\n <div [class]=\"boxClasses()\">\n @if(checked()) {\n <svg width=\"12\" height=\"10\" viewBox=\"0 0 12 10\" fill=\"none\">\n <path\n d=\"M1 5L4.5 8.5L11 1.5\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n }\n </div>\n </div>\n\n @if(label()) {\n <span [class]=\"'text-sm-regular ' + (disabled() ? 'text-tm-tertiary' : 'text-tm-primary')\">{{ label() }}</span>\n }\n</label>\n","import { Component, computed, input, output } from '@angular/core';\n\n@Component({\n selector: 'tm-radio-button',\n templateUrl: './radio-button.html',\n})\nexport class RadioButton {\n checked = input<boolean>(false);\n disabled = input<boolean>(false);\n label = input<string>();\n value = input.required<string>();\n name = input<string>('radio-group');\n id = input<string>(`radio-${Math.random().toString(36).slice(2)}`);\n\n changed = output<string>();\n\n containerClasses = computed(() => {\n const base = 'flex items-center gap-2';\n const cursor = this.disabled() ? 'cursor-not-allowed opacity-50' : 'cursor-pointer';\n return `${base} ${cursor}`;\n });\n\n circleClasses = computed(() => {\n const base =\n 'w-5 h-5 rounded-full border-2 flex items-center justify-center transition-all duration-200';\n if (this.disabled()) return `${base} border-tm-strong`;\n if (this.checked()) return `${base} border-tm-brand`;\n return `${base} border-tm-default`;\n });\n\n innerClasses = 'w-6 h-6 relative flex items-center justify-center';\n\n dotClasses = computed(() => {\n const base = 'w-5 h-5 rounded-full absolute';\n if (this.disabled()) return `${base} border-tm-subtle`;\n if (this.checked()) return `${base} border-tm-brand`;\n return `${base} border-tm-default`;\n });\n\n select() {\n if (!this.disabled()) {\n this.changed.emit(this.value());\n }\n }\n}\n","<label [for]=\"id()\" [class]=\"containerClasses()\">\n <div class=\"relative\">\n <input\n type=\"radio\"\n [id]=\"id()\"\n [name]=\"name()\"\n [value]=\"value()\"\n [checked]=\"checked()\"\n [disabled]=\"disabled()\"\n class=\"sr-only\"\n (change)=\"select()\"\n />\n <div [class]=\"circleClasses()\">\n @if(checked()) {\n <div class=\"w-2.5 h-2.5 rounded-full bg-tm-brand\"></div>\n }\n </div>\n </div>\n\n @if(label()) {\n <span [class]=\"'text-sm-regular ' + (disabled() ? 'text-tm-tertiary' : 'text-tm-primary')\">{{ label() }}</span>\n }\n</label>\n","export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarStatus = 'online' | 'busy' | 'disconnect';\n\nexport const AVATAR_SIZE_CLASSES: Record<AvatarSize, string> = {\n xs: 'w-7 h-7 text-xs', // 28px\n sm: 'w-10 h-10 text-sm', // 40px\n md: 'w-12 h-12 text-lg', // 48px\n lg: 'w-15 h-15 text-xl', // 60px\n xl: 'w-20 h-20 text-2xl', // 80px\n};\n\nexport const AVATAR_STATUS_CLASSES: Record<AvatarStatus, string> = {\n online: 'bg-tm-green-500',\n busy: 'bg-tm-yellow-500',\n disconnect: 'bg-tm-gray-500',\n};\n\n// Posición y tamaño del indicador de status según el tamaño del avatar\nexport const AVATAR_STATUS_POSITION: Record<AvatarSize, string> = {\n xs: 'w-2.5 h-2.5 bottom-0 right-0',\n sm: 'w-3 h-3 bottom-0 right-0',\n md: 'w-3.5 h-3.5 bottom-0 right-0',\n lg: 'w-4 h-4 bottom-0.5 right-0.5',\n xl: 'w-4 h-4 bottom-0.5 right-0.5',\n};\n","import { Component, ChangeDetectionStrategy, computed, input } from '@angular/core';\nimport {\n AvatarSize,\n AvatarStatus,\n AVATAR_SIZE_CLASSES,\n AVATAR_STATUS_CLASSES,\n AVATAR_STATUS_POSITION,\n} from './types/Avatar.types';\n\n@Component({\n selector: 'tm-avatar',\n standalone: true,\n imports: [],\n templateUrl: './avatar.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Avatar {\n /** Imagen del avatar. Si no se provee, se muestran las iniciales. */\n readonly src = input<string>('');\n\n readonly initials = input<string>('');\n\n /** Texto alternativo para accesibilidad */\n readonly alt = input<string>('Avatar');\n\n readonly size = input<AvatarSize>('md');\n\n readonly status = input<AvatarStatus | null>(null);\n\n readonly showImage = computed(() => !!this.src());\n readonly showInitials = computed(() => !this.src() && !!this.initials());\n readonly showStatus = computed(() => !!this.status());\n\n readonly avatarClasses = computed(() =>\n [\n 'relative inline-flex items-center justify-center',\n 'rounded-full font-medium bg-tm-brand text-tm-inverse',\n 'select-none shrink-0',\n AVATAR_SIZE_CLASSES[this.size()],\n ].join(' '),\n );\n\n readonly statusClasses = computed(() =>\n [\n 'absolute rounded-full border-[1.5px] border-white',\n AVATAR_STATUS_CLASSES[this.status()!],\n AVATAR_STATUS_POSITION[this.size()],\n ].join(' '),\n );\n}\n","<div [class]=\"avatarClasses()\">\n\n <!-- Imagen -->\n @if (showImage()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt()\"\n class=\"w-full h-full rounded-full object-cover\"\n />\n }\n\n <!-- Iniciales -->\n @if (showInitials()) {\n <span class=\"leading-none\">{{ initials() }}</span>\n }\n\n <!-- Indicador de status -->\n @if (showStatus()) {\n <span\n [class]=\"statusClasses()\"\n [attr.aria-label]=\"status()!\"\n role=\"status\"\n ></span>\n }\n\n</div>\n","import { Component, ChangeDetectionStrategy, input, output } from '@angular/core';\nimport { LucideAngularModule, X } from 'lucide-angular';\n\n@Component({\n selector: 'tm-close-dialog',\n standalone: true,\n imports: [LucideAngularModule],\n templateUrl: './close-dialog.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CloseDialog {\n readonly disabled = input<boolean>(false);\n readonly ariaLabel = input<string>('Cerrar');\n\n readonly closed = output<void>();\n\n readonly xIcon = X;\n\n onClick(): void {\n if (!this.disabled()) {\n this.closed.emit();\n }\n }\n}\n","<button\n type=\"button\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"onClick()\"\n class=\"\n inline-flex items-center justify-center\n w-9 h-9 rounded-full\n bg-transparent text-tm-gray-500\n transition-colors duration-200\n hover:bg-tm-subtle\n disabled:opacity-40 disabled:cursor-not-allowed\n cursor-pointer\n \"\n>\n <lucide-icon\n [img]=\"xIcon\"\n [size]=\"20\"\n [strokeWidth]=\"1.75\"\n />\n</button>\n","import { Component, ChangeDetectionStrategy, computed, input, output } from '@angular/core';\nimport { LucideAngularModule, ShoppingCart } from 'lucide-angular';\n\n@Component({\n selector: 'tm-card-button',\n standalone: true,\n imports: [LucideAngularModule],\n templateUrl: './card-button.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CardButton {\n readonly count = input<number>(0);\n readonly disabled = input<boolean>(false);\n readonly ariaLabel = input<string>('Carrito de compras');\n\n readonly clicked = output<void>();\n\n readonly cartIcon = ShoppingCart;\n\n /* Muestra el badge solo si hay items */\n readonly showBadge = computed(() => this.count() > 0);\n\n readonly displayCount = computed(() => {\n const c = this.count();\n if (c > 9) return '9+';\n return c.toString();\n });\n\n onClick(): void {\n if (!this.disabled()) {\n this.clicked.emit();\n }\n }\n}\n","<button\n type=\"button\"\n [attr.aria-label]=\"ariaLabel() + (showBadge() ? ', ' + count() + ' items' : '')\"\n [disabled]=\"disabled()\"\n (click)=\"onClick()\"\n class=\"\n relative inline-flex items-center justify-center\n w-6 h-6\n bg-transparent text-tm-secondary\n transition-colors duration-200\n hover:text-tm-secondary\n disabled:opacity-40 disabled:cursor-not-allowed\n cursor-pointer text-tm-tertiary\n \"\n>\n <!-- Icono del carrito -->\n <lucide-icon\n [img]=\"cartIcon\"\n [size]=\"24\"\n [strokeWidth]=\"1.75\"\n />\n\n <!-- Badge con cantidad -->\n @if (showBadge()) {\n <span\n class=\"\n absolute -top-2.5 -right-2.5\n inline-flex items-center justify-center\n min-w-5 h-5 px-1\n rounded-full\n bg-tm-base-black text-tm-base-white\n text-[10px] font-medium leading-none\n select-none\n \"\n aria-hidden=\"true\"\n >\n {{ displayCount() }}\n </span>\n }\n</button>\n","import { Component, ChangeDetectionStrategy, computed, input, output } from '@angular/core';\nimport { LucideAngularModule, Sun, Moon } from 'lucide-angular';\n\nexport type ThemeMode = 'light' | 'dark';\n\n@Component({\n selector: 'tm-btn-theme',\n standalone: true,\n imports: [LucideAngularModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './btn-theme.html',\n})\nexport class BtnTheme {\n readonly mode = input<ThemeMode>('light');\n readonly disabled = input<boolean>(false);\n\n /* Emite el nuevo modo luego del toggle */\n readonly modeChange = output<ThemeMode>();\n\n readonly sunIcon = Sun;\n readonly moonIcon = Moon;\n\n readonly isDark = computed(() => this.mode() === 'dark');\n\n readonly currentIcon = computed(() => (this.isDark() ? this.moonIcon : this.sunIcon));\n\n readonly ariaLabel = computed(() =>\n this.isDark() ? 'Cambiar a modo claro' : 'Cambiar a modo oscuro',\n );\n\n onClick(): void {\n if (!this.disabled()) {\n this.modeChange.emit(this.isDark() ? 'light' : 'dark');\n }\n }\n}\n","<button\n type=\"button\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"disabled()\"\n (click)=\"onClick()\"\n class=\"\n inline-flex items-center justify-center\n w-10 h-10 p-2 rounded-full\n bg-transparent text-tm-secondary\n border border-tm-subtle\n transition-all duration-50 linear\n hover:border-tm-default\n hover:text-tm-primary\n disabled:opacity-40 disabled:cursor-not-allowed\n cursor-pointer\n \"\n>\n <lucide-icon\n [img]=\"currentIcon()\"\n [size]=\"20\"\n [strokeWidth]=\"1.75\"\n class=\"text-current transition-transform duration-50 linear\"\n />\n</button>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[tmMenuTrigger]',\n standalone: true,\n})\nexport class MenuTriggerDirective { }\n","import {\n Component,\n ContentChild,\n contentChildren,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Overlay, OverlayRef, OverlayModule } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { MenuTriggerDirective } from './menu-trigger-directive';\n\nexport type MenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n\nexport type MenuTriggerOn = 'click' | 'hover' | 'both';\n\n@Component({\n selector: 'tm-menu',\n standalone: true,\n imports: [NgTemplateOutlet, OverlayModule],\n templateUrl: './menu.html',\n})\nexport class MenuComponent implements OnDestroy {\n // ── Inputs\n readonly placement = input<MenuPlacement>('bottom-end');\n readonly triggerOn = input<MenuTriggerOn>('click');\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n // ── ContentChild\n @ContentChild(MenuTriggerDirective, { read: TemplateRef })\n triggerTemplate!: TemplateRef<any>;\n\n // ── State\n readonly isOpen = signal(false);\n\n // ── CDK\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n private el = inject(ElementRef);\n private overlayRef?: OverlayRef;\n\n // ── Trigger handlers\n @HostListener('click')\n onClickHost() {\n const mode = this.triggerOn();\n if (mode === 'click' || mode === 'both') {\n this.isOpen() ? this.close() : this.open();\n }\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (this.triggerOn() === 'hover' || this.triggerOn() === 'both') {\n this.open();\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n if (this.triggerOn() === 'hover' || this.triggerOn() === 'both') {\n this.close();\n }\n }\n\n open() {\n if (this.overlayRef?.hasAttached()) return;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([this.getPosition()]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: this.triggerOn() !== 'hover',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n });\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n\n const portal = new TemplatePortal(this.menuTemplate, this.vcr);\n\n this.overlayRef.attach(portal);\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n close() {\n this.overlayRef?.detach();\n this.isOpen.set(false);\n this.closed.emit();\n }\n\n private getPosition() {\n const map: Record<MenuPlacement, any> = {\n 'bottom-end': { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n 'bottom-start': { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n 'top-end': { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n 'top-start': { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n };\n return map[this.placement()];\n }\n\n ngOnDestroy() {\n this.overlayRef?.dispose();\n }\n\n // referencia al template del menú\n menuTemplate!: TemplateRef<any>;\n @ViewChild('menuPanel') set setMenuTemplate(t: TemplateRef<any>) {\n this.menuTemplate = t;\n }\n}\n","@if (triggerTemplate) {\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\" />\n}\n\n<ng-template #menuPanel>\n <div class=\"bg-tm-surface rounded-xl shadow-md flex flex-col min-w-48\">\n\n <!-- Header opcional (avatar, nombre, rol) -->\n <ng-content select=\"[menuHeader]\" />\n\n <!-- Items -->\n <div class=\"px-2 py-1 flex flex-col w-full\">\n <ng-content />\n </div>\n\n </div>\n</ng-template>\n","import { Component, input, output } from '@angular/core';\nimport { LucideIconData } from 'lucide-angular';\nimport { BtnPrimary } from '../btn-primary/btn-primary';\n\n@Component({\n selector: 'tm-menu-item',\n standalone: true,\n imports: [BtnPrimary],\n templateUrl: './menu-item.html',\n})\nexport class MenuItem {\n readonly label = input.required<string>();\n readonly icon = input<LucideIconData>();\n readonly danger = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly selected = output<void>();\n\n onClick(): void {\n if (!this.disabled()) {\n this.selected.emit();\n }\n }\n\n readonly divider = input<boolean>(false);\n}\n","@if (divider()) {\n <div class=\"-mx-2 self-stretch h-px bg-tm-subtle my-1\"></div>\n}\n<tm-button\n type=\"ghost\"\n size=\"md\"\n [color]=\"danger() ? 'danger' : 'primary'\"\n [disabled]=\"disabled()\"\n [iconLeft]=\"icon()\"\n customClass=\"w-full justify-start\"\n (clicked)=\"onClick()\"\n>\n {{ label() }}\n</tm-button>\n","import { MenuComponent } from './menu';\nimport { MenuTriggerDirective } from './menu-trigger-directive';\nimport { MenuItem } from '../menu-item/menu-item';\n\nexport * from './menu';\nexport * from './menu-trigger-directive';\nexport * from '../menu-item/menu-item';\n\nexport const TmMenu = [\n MenuComponent,\n MenuTriggerDirective,\n MenuItem,\n] as const;\n","import { Component, ChangeDetectionStrategy, computed, input, output } from '@angular/core';\nimport { LucideAngularModule, LucideIconData } from 'lucide-angular';\nimport { ButtonColor, ButtonSize, ButtonType, ButtonRounded } from './../btn-primary/btn-primary';\n\nconst BASE =\n 'inline-flex items-center justify-center flex-shrink-0 ' + 'transition-all duration-200';\n\nconst ROUNDED: Record<ButtonRounded, string> = {\n default: 'rounded-lg',\n full: 'rounded-full',\n};\n\n// Cuadrado — mismo valor en width y height\nconst SIZES: Record<ButtonSize, string> = {\n lg: 'w-11 h-11', // 44px\n md: 'w-10 h-10', // 40px\n sm: 'w-9 h-9', // 36px\n};\n\nconst ICON_SIZES: Record<ButtonSize, number> = {\n lg: 20,\n md: 18,\n sm: 16,\n};\n\nconst VARIANTS: Record<ButtonColor, Record<ButtonType, string>> = {\n primary: {\n filled: 'bg-tm-brand text-tm-inverse hover:bg-tm-brand-hover-default',\n outlined: 'border border-tm-default text-tm-primary hover:bg-tm-brand-hover-subtle',\n ghost: 'text-tm-primary hover:bg-tm-brand-hover-subtle',\n },\n danger: {\n filled: 'bg-tm-red-500 text-tm-base-white hover:bg-tm-red-600',\n outlined: 'border border-tm-default text-red-500 hover:bg-tm-red-500/10',\n ghost: 'text-tm-red-500 hover:bg-tm-red-500/10',\n },\n success: {\n filled: 'bg-tm-green-500 text-tm-base-white hover:bg-tm-green-600',\n outlined: 'border border-tm-default text-tm-green-500 hover:bg-tm-green-500/10',\n ghost: 'text-tm-green-500 hover:bg-tm-green-500/10',\n },\n warning: {\n filled: 'bg-tm-yellow-500 text-tm-base-black hover:bg-tm-yellow-600',\n outlined: 'border border-tm-default text-tm-yellow-500 hover:bg-tm-yellow-500/10',\n ghost: 'text-tm-yellow-600 hover:bg-tm-yellow-500/10',\n },\n};\n\n@Component({\n selector: 'tm-icon-button',\n standalone: true,\n imports: [LucideAngularModule],\n templateUrl: './btn-icon.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.disabled]': 'disabled() || null',\n },\n})\nexport class BtnIcon {\n readonly icon = input.required<LucideIconData>();\n readonly color = input<ButtonColor>('primary');\n readonly size = input<ButtonSize>('md');\n readonly type = input<ButtonType>('filled');\n readonly rounded = input<ButtonRounded>('default');\n readonly active = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly ariaLabel = input<string>('');\n\n readonly clicked = output<MouseEvent>();\n\n readonly iconSize = computed(() => ICON_SIZES[this.size()]);\n\n readonly classes = computed(() =>\n [\n BASE,\n SIZES[this.size()],\n VARIANTS[this.color()][this.type()],\n ROUNDED[this.rounded()],\n this.active() ? 'brightness-90' : '',\n this.disabled() ? 'opacity-40 cursor-not-allowed' : 'cursor-pointer',\n ]\n .filter(Boolean)\n .join(' '),\n );\n\n onClick(event: MouseEvent): void {\n if (!this.disabled()) this.clicked.emit(event);\n }\n}\n","<button\n type=\"button\"\n [class]=\"classes()\"\n [disabled]=\"disabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n>\n <lucide-icon [img]=\"icon()\" [size]=\"iconSize()\" [strokeWidth]=\"1.75\" class=\"text-current\" />\n</button>\n","import {\n Component,\n ChangeDetectionStrategy,\n computed,\n input,\n output,\n signal,\n model,\n inject,\n ElementRef,\n ViewChild,\n TemplateRef,\n ViewContainerRef,\n OnDestroy,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { LucideAngularModule, LucideIconData, ChevronDown, X, CheckIcon } from 'lucide-angular';\nimport { Overlay, OverlayRef, OverlayModule } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\n\nexport interface SelectOption {\n label: string;\n value: string | number;\n avatar?: string;\n icon?: LucideIconData;\n group?: string;\n disabled?: boolean;\n}\n\nexport type SelectSize = 'sm' | 'md';\n\nconst SIZE_WRAPPER: Record<SelectSize, string> = {\n md: 'h-11 min-h-11 px-4 py-2 gap-2.5 text-sm',\n sm: 'h-10 min-h-10 px-4 py-2 gap-2 text-xs',\n};\n\nconst BASE_WRAPPER =\n 'inline-flex items-center rounded-lg border w-full transition-all duration-300 hover:shadow-md cursor-text';\n\nconst STATE_WRAPPER = {\n default: 'border-tm-default text-tm-secondary hover:border-tm-strong',\n active: 'border-tm-default text-tm-primary ring-2 ring-tm-default/20',\n disabled:'border-tm-subtle text-tm-secondary bg-tm-subtle cursor-not-allowed hover:shadow-none',\n error: 'border-tm-red-500 text-tm-secondary',\n};\n\n@Component({\n selector: 'tm-select',\n standalone: true,\n host: { class: 'block w-full' },\n imports: [FormsModule, LucideAngularModule, OverlayModule],\n templateUrl: './select.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TmSelect implements OnDestroy {\n private el = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n private overlayRef?: OverlayRef;\n\n // ── Inputs\n readonly options = input<SelectOption[]>([]);\n readonly placeholder = input<string>('Seleccionar...');\n readonly size = input<SelectSize>('md');\n readonly disabled = input<boolean>(false);\n readonly error = input<string>('');\n readonly label = input<string>('');\n\n // ── Model\n readonly value = model<string | number | null>(null);\n\n // ── Output\n readonly changed = output<SelectOption | null>();\n\n // ── State\n readonly isFocused = signal(false);\n readonly isOpen = signal(false);\n readonly search = signal('');\n\n // ── Icons\n readonly chevronDown = ChevronDown;\n readonly xIcon = X;\n readonly checkIcon = CheckIcon;\n\n @ViewChild('dropdownPanel') dropdownPanel!: TemplateRef<any>;\n\n // ── Computed\n readonly currentState = computed(() => {\n if (this.disabled()) return 'disabled';\n if (this.error()) return 'error';\n if (this.isOpen()) return 'active';\n return 'default';\n });\n\n readonly wrapperClasses = computed(() =>\n [BASE_WRAPPER, SIZE_WRAPPER[this.size()], STATE_WRAPPER[this.currentState()]].join(' ')\n );\n\n readonly selectedOption = computed(() =>\n this.options().find(o => o.value === this.value()) ?? null\n );\n\n readonly selectedLabel = computed(() => this.selectedOption()?.label ?? '');\n\n readonly filteredOptions = computed(() => {\n const term = this.search().toLowerCase();\n return term\n ? this.options().filter(o => o.label.toLowerCase().includes(term))\n : this.options();\n });\n\n // ── CDK\n open() {\n if (this.overlayRef?.hasAttached() || this.disabled()) return;\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.el)\n .withPositions([\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth: this.el.nativeElement.getBoundingClientRect().width,\n });\n\n this.overlayRef.backdropClick().subscribe(() => this.close());\n this.overlayRef.attach(new TemplatePortal(this.dropdownPanel, this.vcr));\n this.isOpen.set(true);\n }\n\n close() {\n this.overlayRef?.detach();\n this.isOpen.set(false);\n this.search.set('');\n }\n\n toggle() {\n this.isOpen() ? this.close() : this.open();\n }\n\n selectOption(option: SelectOption) {\n if (option.disabled) return;\n this.value.set(option.value);\n this.changed.emit(option);\n this.close();\n }\n\n clear(event: MouseEvent) {\n event.stopPropagation();\n this.value.set(null);\n this.changed.emit(null);\n }\n\n onInput(event: Event) {\n this.search.set((event.target as HTMLInputElement).value);\n if (!this.isOpen()) this.open();\n }\n\n ngOnDestroy() {\n this.overlayRef?.dispose();\n }\n}\n","<div class=\"flex flex-col gap-1.5 w-full\">\n @if (label()) {\n <label class=\"block text-sm font-medium text-tm-primary mb-1.5\">{{ label() }}</label>\n }\n\n <div [class]=\"wrapperClasses()\" (click)=\"toggle()\">\n <div class=\"flex items-center gap-2 min-w-0 flex-1\">\n @if (selectedOption()?.avatar) {\n <img [src]=\"selectedOption()!.avatar\" class=\"w-5 h-5 rounded-full object-cover shrink-0\" />\n } @else if (selectedOption()?.icon) {\n <lucide-icon\n [img]=\"selectedOption()!.icon!\"\n [size]=\"16\"\n class=\"shrink-0 text-tm-secondary\"\n />\n }\n\n <input\n class=\"flex-1 bg-transparent outline-none focus:outline-none border-0 text-tm-primary placeholder:text-tm-secondary min-w-0\"\n [class.cursor-not-allowed]=\"disabled()\"\n [class.cursor-pointer]=\"!disabled()\"\n [placeholder]=\"isOpen() ? 'Buscar...' : selectedLabel() || placeholder()\"\n [value]=\"isOpen() ? search() : ''\"\n [disabled]=\"disabled()\"\n (input)=\"onInput($event)\"\n (click)=\"$event.stopPropagation(); open()\"\n />\n </div>\n\n <div class=\"flex items-center gap-1 shrink-0\">\n @if (value() !== null && !disabled()) {\n <button\n (click)=\"clear($event)\"\n class=\"p-0.5 rounded text-tm-tertiary hover:text-tm-primary transition-colors\"\n >\n <lucide-icon [img]=\"xIcon\" [size]=\"14\" />\n </button>\n }\n <lucide-icon\n [img]=\"chevronDown\"\n [size]=\"16\"\n class=\"text-tm-tertiary transition-transform duration-200\"\n [class.rotate-180]=\"isOpen()\"\n />\n </div>\n </div>\n\n <ng-template #dropdownPanel>\n <div\n class=\"rounded-xl bg-tm-surface shadow-lg shadow-black/10 border border-tm-default py-1.5 mt-1 overflow-hidden\"\n >\n <div class=\"overflow-y-auto max-h-52\">\n @for (opt of filteredOptions(); track opt.value) {\n <div\n class=\"flex items-center gap-2.5 px-3 py-2 text-sm cursor-pointer transition-colors\"\n [class]=\"\n opt.disabled\n ? 'opacity-40 cursor-not-allowed'\n : value() === opt.value\n ? 'bg-tm-subtle text-tm-primary font-medium'\n : 'text-tm-primary hover:bg-tm-canvas'\n \"\n (click)=\"selectOption(opt)\"\n >\n @if (opt.avatar) {\n <img [src]=\"opt.avatar\" class=\"w-6 h-6 rounded-full object-cover shrink-0\" />\n } @else if (opt.icon) {\n <lucide-icon [img]=\"opt.icon\" [size]=\"16\" class=\"shrink-0 text-tm-secondary\" />\n }\n <span class=\"truncate flex-1\">{{ opt.label }}</span>\n @if (value() === opt.value) {\n <lucide-icon [img]=\"checkIcon\" [size]=\"14\" class=\"text-tm-brand shrink-0\" />\n }\n </div>\n }\n\n @if (filteredOptions().length === 0) {\n <div class=\"px-3 py-4 text-sm text-tm-tertiary text-center\">Sin resultados</div>\n }\n </div>\n </div>\n </ng-template>\n\n @if (error()) {\n <span class=\"text-xs text-tm-red-500\">{{ error() }}</span>\n }\n</div>\n","/*\n * Public API Surface of tm-ui\n */\n\nexport * from './lib/tw-cart/tw-cart';\nexport * from './lib/btn-primary/btn-primary';\nexport * from './lib/input-ten/index';\nexport * from './lib/snackbar/snackbar';\nexport * from './lib/snackbar/snackbar.service';\nexport * from './lib/snackbar-host/snackbar-host';\nexport * from './lib/chip/chip';\nexport * from './lib/toggle/toggle';\nexport * from './lib/checkbox/checkbox';\nexport * from './lib/radio-button/radio-button';\nexport * from './lib/avatar/index';\nexport * from './lib/close-dialog/close-dialog';\nexport * from './lib/card-button/card-button';\nexport * from './lib/btn-theme/btn-theme';\nexport * from './lib/menu';\nexport * from './lib/btn-icon/btn-icon';\nexport * from './lib/select/select';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["SIZE_WRAPPER","BASE_WRAPPER","STATE_WRAPPER"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "ten-minds-ui-kit",
3
+ "version": "0.0.1",
4
+ "description": "Librería de componentes UI para proyectos Angular de Ten Minds",
5
+ "keywords": [
6
+ "angular",
7
+ "components",
8
+ "ui",
9
+ "design-system",
10
+ "ten-minds"
11
+ ],
12
+ "author": "Ten Minds",
13
+ "license": "MIT",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://gitlab.com/10mindssoftware/10minds-ui-kit"
17
+ },
18
+ "peerDependencies": {
19
+ "@angular/common": "^21.2.0",
20
+ "@angular/core": "^21.2.0",
21
+ "lucide-angular": "^1.0.0"
22
+ },
23
+ "dependencies": {
24
+ "tslib": "^2.3.0"
25
+ },
26
+ "sideEffects": false,
27
+ "exports": {
28
+ "./styles/styles.css": {
29
+ "style": "./styles/styles.css"
30
+ },
31
+ "./package.json": {
32
+ "default": "./package.json"
33
+ },
34
+ ".": {
35
+ "types": "./types/ten-minds-ui-kit.d.ts",
36
+ "default": "./fesm2022/ten-minds-ui-kit.mjs"
37
+ }
38
+ },
39
+ "module": "fesm2022/ten-minds-ui-kit.mjs",
40
+ "typings": "types/ten-minds-ui-kit.d.ts"
41
+ }
@@ -0,0 +1,64 @@
1
+ @font-face {
2
+ font-family: 'Plus Jakarta Sans';
3
+ src: url('../assets/fonts/PlusJakartaSans-VariableFont_wght.woff2') format('woff2');
4
+ font-weight: 100 900;
5
+ font-style: normal;
6
+ font-display: swap;
7
+ }
8
+
9
+
10
+
11
+ * {
12
+ font-family: var(--font-sans);
13
+ }
14
+
15
+ /* // HEADING */
16
+ .heading-xl {
17
+ font-size: var(--text-heading-xl);
18
+ line-height: var(--lh-120);
19
+ font-weight: var(--fw-bold);
20
+ }
21
+ .heading-lg {
22
+ font-size: var(--text-heading-lg);
23
+ line-height: var(--lh-120);
24
+ font-weight: var(--fw-bold);
25
+ }
26
+ .heading-md {
27
+ font-size: var(--text-heading-md);
28
+ line-height: var(--lh-130);
29
+ font-weight: var(--fw-bold);
30
+ }
31
+ .heading-sm {
32
+ font-size: var(--text-heading-sm);
33
+ line-height: var(--lh-140);
34
+ font-weight: var(--fw-bold);
35
+ }
36
+ .heading-xs {
37
+ font-size: var(--text-heading-xs);
38
+ line-height: var(--lh-150);
39
+ font-weight: var(--fw-bold);
40
+ }
41
+
42
+ /* // lg */
43
+ .text-lg-bold { font-size: var(--text-lg); line-height: var(--lh-150); font-weight: var(--fw-bold); }
44
+ .text-lg-semibold { font-size: var(--text-lg); line-height: var(--lh-150); font-weight: var(--fw-semibold); }
45
+ .text-lg-medium { font-size: var(--text-lg); line-height: var(--lh-150); font-weight: var(--fw-medium); }
46
+ .text-lg-regular { font-size: var(--text-lg); line-height: var(--lh-150); font-weight: var(--fw-regular); }
47
+
48
+ /* // md */
49
+ .text-md-bold { font-size: var(--text-md); line-height: var(--lh-150); font-weight: var(--fw-bold); }
50
+ .text-md-semibold { font-size: var(--text-md); line-height: var(--lh-150); font-weight: var(--fw-semibold); }
51
+ .text-md-medium { font-size: var(--text-md); line-height: var(--lh-150); font-weight: var(--fw-medium); }
52
+ .text-md-regular { font-size: var(--text-md); line-height: var(--lh-150); font-weight: var(--fw-regular); }
53
+
54
+ /* // sm */
55
+ .text-sm-bold { font-size: var(--text-sm); line-height: var(--lh-150); font-weight: var(--fw-bold); }
56
+ .text-sm-semibold { font-size: var(--text-sm); line-height: var(--lh-150); font-weight: var(--fw-semibold); }
57
+ .text-sm-medium { font-size: var(--text-sm); line-height: var(--lh-150); font-weight: var(--fw-medium); }
58
+ .text-sm-regular { font-size: var(--text-sm); line-height: var(--lh-150); font-weight: var(--fw-regular); }
59
+
60
+ /* // xs */
61
+ .text-xs-bold { font-size: var(--text-xs); line-height: var(--lh-150); font-weight: var(--fw-bold); }
62
+ .text-xs-semibold { font-size: var(--text-xs); line-height: var(--lh-150); font-weight: var(--fw-semibold); }
63
+ .text-xs-medium { font-size: var(--text-xs); line-height: var(--lh-150); font-weight: var(--fw-medium); }
64
+ .text-xs-regular { font-size: var(--text-xs); line-height: var(--lh-150); font-weight: var(--fw-regular); }