@tociva/tailng-ui 0.11.0 → 0.13.0
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.
- package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs +497 -16
- package/fesm2022/tociva-tailng-ui-buttons-indicators.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-data-table-structure.mjs +802 -17
- package/fesm2022/tociva-tailng-ui-data-table-structure.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-form-controls.mjs +3096 -17
- package/fesm2022/tociva-tailng-ui-form-controls.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-layout.mjs +438 -17
- package/fesm2022/tociva-tailng-ui-layout.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-navigation.mjs +780 -17
- package/fesm2022/tociva-tailng-ui-navigation.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-popups-overlays.mjs +1115 -17
- package/fesm2022/tociva-tailng-ui-popups-overlays.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui-utilities.mjs +129 -16
- package/fesm2022/tociva-tailng-ui-utilities.mjs.map +1 -1
- package/fesm2022/tociva-tailng-ui.mjs +15 -17
- package/fesm2022/tociva-tailng-ui.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tociva-tailng-ui-buttons-indicators.mjs","sources":["../../../../libs/ui/buttons-indicators/src/public-api.ts","../../../../libs/ui/buttons-indicators/src/tociva-tailng-ui-buttons-indicators.ts"],"sourcesContent":["export * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,YAAA,CAAA,OAAA,CAAA,OAAA,CAAA,EAAA,OAAA,CAAA;;ACAA;;AAEG"}
|
|
1
|
+
{"version":3,"file":"tociva-tailng-ui-buttons-indicators.mjs","sources":["../../../../libs/ui/buttons-indicators/src/lib/badge/badge.component.ts","../../../../libs/ui/buttons-indicators/src/lib/badge/badge.component.html","../../../../libs/ui/buttons-indicators/src/lib/button/button.variants.ts","../../../../libs/ui/buttons-indicators/src/lib/button/button.component.ts","../../../../libs/ui/buttons-indicators/src/lib/button/button.component.html","../../../../libs/ui/buttons-indicators/src/lib/progress-bar/progress-bar.component.ts","../../../../libs/ui/buttons-indicators/src/lib/progress-bar/progress-bar.component.html","../../../../libs/ui/buttons-indicators/src/lib/progress-spinner/progress-spinner.component.ts","../../../../libs/ui/buttons-indicators/src/lib/progress-spinner/progress-spinner.component.html","../../../../libs/ui/buttons-indicators/src/lib/ripples/ripples.directive.ts","../../../../libs/ui/buttons-indicators/src/lib/skeleton/skeleton.component.ts","../../../../libs/ui/buttons-indicators/src/lib/skeleton/skeleton.component.html","../../../../libs/ui/buttons-indicators/src/lib/tag/tag.component.ts","../../../../libs/ui/buttons-indicators/src/lib/tag/tag.component.html","../../../../libs/ui/buttons-indicators/src/tociva-tailng-ui-buttons-indicators.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\nimport { booleanAttribute, numberAttribute } from '@angular/core';\n\nexport type TngBadgePosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left';\n\nexport type TngBadgeVariant =\n | 'primary'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'danger'\n | 'info';\n\nexport type TngBadgeSize = 'sm' | 'md';\n\n@Component({\n selector: 'tng-badge',\n standalone: true,\n templateUrl: './badge.component.html',\n})\nexport class TngBadge {\n /* =====================\n * Inputs\n * ===================== */\n\n /** Badge content (number or short text). If null/undefined -> hidden (unless dot=true). */\n value = input<number | string | null>(null);\n\n /** Dot mode (ignores value display) */\n dot = input(false, { transform: booleanAttribute });\n\n /** Hide badge forcefully */\n hide = input(false, { transform: booleanAttribute });\n\n /** Show when value is 0 (only for numeric values) */\n showZero = input(false, { transform: booleanAttribute });\n\n /** Max number shown before overflow (e.g., 99+) */\n max = input(99, { transform: numberAttribute });\n\n /** Position relative to host */\n position = input<TngBadgePosition>('top-right');\n\n /** Overlap host (Material-ish). When false, badge sits outside edge a bit. */\n overlap = input(true, { transform: booleanAttribute });\n\n /** Visual variant */\n variant = input<TngBadgeVariant>('danger');\n\n /** Size */\n size = input<TngBadgeSize>('md');\n\n /** Accessible label override (recommended when badge is meaningful) */\n ariaLabel = input<string>('');\n\n /* =====================\n * Class hooks\n * ===================== */\n\n /** Outer wrapper (layout of projected content + badge) */\n rootKlass = input<string>('inline-flex');\n\n /** The element that becomes positioning anchor */\n hostKlass = input<string>('relative inline-flex');\n\n /** Badge element */\n badgeKlass = input<string>('');\n\n /* =====================\n * Derived values\n * ===================== */\n\n private readonly isNumericValue = computed(() => {\n const v = this.value();\n return typeof v === 'number' && Number.isFinite(v);\n });\n\n readonly displayValue = computed((): string => {\n const v = this.value();\n\n if (v === null || v === undefined) return '';\n if (typeof v === 'string') return v.trim();\n\n // number\n const n = v;\n const m = this.max();\n\n if (!Number.isFinite(n)) return '';\n if (n > m) return `${m}+`;\n return String(n);\n });\n\n readonly shouldShow = computed(() => {\n if (this.hide()) return false;\n\n if (this.dot()) return true;\n\n const v = this.value();\n if (v === null || v === undefined) return false;\n\n if (typeof v === 'string') return v.trim().length > 0;\n\n // number\n if (!Number.isFinite(v)) return false;\n if (v === 0) return this.showZero();\n return true;\n });\n\n /** If user didn't provide ariaLabel, generate a basic one */\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel().trim();\n if (custom) return custom;\n\n if (!this.shouldShow()) return '';\n\n if (this.dot()) return 'New notification';\n\n const v = this.displayValue();\n if (!v) return '';\n\n // Simple default. Consumers can override with ariaLabel input.\n return `Badge: ${v}`;\n });\n\n /* =====================\n * Classes\n * ===================== */\n\n private readonly variantClasses = computed(() => {\n switch (this.variant()) {\n case 'primary':\n return 'bg-primary text-on-primary';\n case 'neutral':\n return 'bg-alternate-background text-fg border border-border';\n case 'success':\n return 'bg-success text-on-primary';\n case 'warning':\n return 'bg-warning text-on-primary';\n case 'danger':\n return 'bg-danger text-on-primary';\n case 'info':\n return 'bg-info text-on-primary';\n default:\n return 'bg-danger text-on-primary';\n }\n });\n\n private readonly sizeClasses = computed(() => {\n // Material-ish: small dot, compact numbers.\n if (this.dot()) {\n return this.size() === 'sm'\n ? 'h-2 w-2'\n : 'h-2.5 w-2.5';\n }\n\n return this.size() === 'sm'\n ? 'min-w-[1.1rem] h-[1.1rem] px-1 text-[0.65rem] leading-[1.1rem]'\n : 'min-w-[1.25rem] h-[1.25rem] px-1.5 text-[0.7rem] leading-[1.25rem]';\n });\n\n private readonly positionClasses = computed(() => {\n const overlap = this.overlap();\n\n // when overlap=true, sit closer to corner (on top of host)\n // when overlap=false, sit slightly outside\n const inset = overlap ? '-translate-y-1/2' : '-translate-y-3/4';\n const insetBottom = overlap ? 'translate-y-1/2' : 'translate-y-3/4';\n const insetX = overlap ? 'translate-x-1/2' : 'translate-x-3/4';\n const insetXLeft = overlap ? '-translate-x-1/2' : '-translate-x-3/4';\n\n switch (this.position()) {\n case 'top-right':\n return `top-0 right-0 ${inset} ${insetX}`;\n case 'top-left':\n return `top-0 left-0 ${inset} ${insetXLeft}`;\n case 'bottom-right':\n return `bottom-0 right-0 ${insetBottom} ${insetX}`;\n case 'bottom-left':\n return `bottom-0 left-0 ${insetBottom} ${insetXLeft}`;\n default:\n return `top-0 right-0 ${inset} ${insetX}`;\n }\n });\n\n readonly badgeClasses = computed(() => {\n const base =\n 'absolute z-10 inline-flex items-center justify-center ' +\n 'rounded-full font-semibold select-none ' +\n 'ring-2 ring-background ' + // Material-ish separation from host\n 'pointer-events-none '; // badge shouldn't block clicks\n\n const dotShape = this.dot() ? 'p-0' : '';\n const cls =\n base +\n this.variantClasses() +\n ' ' +\n this.sizeClasses() +\n ' ' +\n this.positionClasses() +\n ' ' +\n dotShape +\n ' ' +\n this.badgeKlass();\n\n return cls.trim();\n });\n}\n","<div [class]=\"rootKlass()\">\n <span [class]=\"hostKlass()\">\n <ng-content />\n\n @if (shouldShow()) {\n <span\n [class]=\"badgeClasses()\"\n [attr.aria-label]=\"computedAriaLabel() || null\"\n aria-hidden=\"true\"\n >\n @if (!dot()) {\n {{ displayValue() }}\n }\n </span>\n }\n </span>\n</div>\n","import type { TngButtonSize, TngButtonVariant } from './button.types';\n\nconst base =\n 'inline-flex items-center justify-center gap-2 font-medium select-none ' +\n 'transition-colors ' +\n 'focus-visible:outline-none ' +\n 'focus-visible:ring-2 focus-visible:ring-primary ' +\n 'focus-visible:ring-offset-2 focus-visible:ring-offset-background ' +\n 'disabled:opacity-50 disabled:pointer-events-none';\n\nconst sizes: Record<TngButtonSize, string> = {\n sm: 'h-8 px-3 text-sm rounded',\n md: 'h-10 px-4 text-sm rounded-md',\n lg: 'h-12 px-5 text-base rounded-lg',\n};\n\nconst variants: Record<TngButtonVariant, string> = {\n solid:\n 'bg-primary text-on-primary hover:bg-primary-hover',\n\n outline:\n 'border border-border text-fg bg-bg ' +\n 'hover:bg-alternate-background',\n\n ghost:\n 'text-fg hover:bg-alternate-background',\n};\n\nexport const buttonClasses = (\n variant: TngButtonVariant,\n size: TngButtonSize,\n opts?: { block?: boolean }\n) =>\n [\n base,\n sizes[size],\n variants[variant],\n opts?.block ? 'w-full' : '',\n ]\n .filter(Boolean)\n .join(' ');\n","import { computed, input } from \"@angular/core\";\n\nimport { Component } from \"@angular/core\";\nimport { TngButtonSize, TngButtonVariant } from \"./button.types\";\nimport { buttonClasses } from \"./button.variants\";\n\n@Component({\n selector: 'tng-button',\n standalone: true,\n templateUrl: './button.component.html',\n})\nexport class TngButton {\n variant = input<TngButtonVariant>('solid');\n size = input<TngButtonSize>('md');\n disabled = input(false);\n loading = input(false);\n block = input(false);\n\n type = input<'button' | 'submit' | 'reset'>('button');\n ariaLabel = input<string>('');\n pressed = input<boolean | null>(null);\n\n klass = input<string>('');\n\n readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n readonly classes = computed(() =>\n `${buttonClasses(this.variant(), this.size(), {\n block: this.block(),\n })} ${this.klass()}`.trim()\n );\n \n spinnerKlass = input<string>(\n 'h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent'\n );\n \n}\n","<button\n [attr.type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-disabled]=\"isDisabled() ? true : null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-pressed]=\"pressed() !== null ? pressed() : null\"\n [attr.aria-busy]=\"loading() ? true : null\"\n [class]=\"classes()\"\n>\n @if (loading()) {\n <span [class]=\"spinnerKlass()\"></span>\n } @else {\n <ng-content />\n }\n</button>\n","import { Component, computed, input } from '@angular/core';\nimport { booleanAttribute, numberAttribute } from '@angular/core';\n\nexport type TngProgressMode = 'determinate' | 'indeterminate';\n\n@Component({\n selector: 'tng-progress-bar',\n standalone: true,\n templateUrl: './progress-bar.component.html',\n styleUrl: './progress-bar.component.css',\n})\nexport class TngProgressBar {\n /* =====================\n * Inputs\n * ===================== */\n\n /** determinate | indeterminate */\n mode = input<TngProgressMode>('determinate');\n\n /** Progress value (0–max) */\n value = input(0, { transform: numberAttribute });\n\n /** Max value (default 100) */\n max = input(100, { transform: numberAttribute });\n\n /** Disable animation (useful for reduced motion) */\n disableAnimation = input(false, { transform: booleanAttribute });\n\n /* =====================\n * Klass hooks (theming)\n * ===================== */\n\n /** Root wrapper */\n rootKlass = input<string>('w-full');\n\n /** Track (background) */\n trackKlass = input<string>('bg-border');\n\n /** Bar (foreground) */\n barKlass = input<string>('bg-primary');\n\n /** Height utility (Tailwind) */\n heightKlass = input<string>('h-1');\n\n /* =====================\n * Computed\n * ===================== */\n\n readonly percentage = computed(() => {\n const v = this.value();\n const m = this.max();\n if (m <= 0) return 0;\n return Math.min(100, Math.max(0, (v / m) * 100));\n });\n\n readonly barStyle = computed(() => {\n if (this.mode() === 'indeterminate') return {};\n return { width: `${this.percentage()}%` };\n });\n}\n","<div [class]=\"rootKlass()\">\n <div\n role=\"progressbar\"\n class=\"relative w-full overflow-hidden rounded-full\"\n [class]=\"trackKlass() + ' ' + heightKlass()\"\n [attr.aria-valuemin]=\"mode() === 'determinate' ? 0 : null\"\n [attr.aria-valuemax]=\"mode() === 'determinate' ? max() : null\"\n [attr.aria-valuenow]=\"mode() === 'determinate' ? value() : null\"\n >\n <!-- Determinate -->\n @if (mode() === 'determinate') {\n <div\n class=\"h-full rounded-full transition-[width] duration-300 ease-out\"\n [class]=\"barKlass()\"\n [style.width.%]=\"percentage()\"\n ></div>\n }\n\n <!-- Indeterminate -->\n @if (mode() === 'indeterminate') {\n <div\n class=\"absolute inset-y-0 left-0 w-1/3 rounded-full\"\n [class]=\"\n barKlass() +\n ' ' +\n (disableAnimation() ? '' : 'tng-progress-indeterminate')\n \"\n ></div>\n }\n </div>\n</div>\n","import { Component, computed, input } from '@angular/core';\nimport { numberAttribute } from '@angular/core';\n\nexport type TngSpinnerMode = 'indeterminate' | 'determinate';\n\n@Component({\n selector: 'tng-progress-spinner',\n standalone: true,\n templateUrl: './progress-spinner.component.html',\n styleUrl: './progress-spinner.component.css',\n})\nexport class TngProgressSpinner {\n /* =====================\n * Inputs\n * ===================== */\n\n /** indeterminate | determinate */\n mode = input<TngSpinnerMode>('indeterminate');\n\n /** Progress value (0–max) for determinate mode */\n value = input(0, { transform: numberAttribute });\n\n /** Max value (default 100) */\n max = input(100, { transform: numberAttribute });\n\n /* =====================\n * Klass hooks (theming)\n * ===================== */\n\n /** Root wrapper */\n rootKlass = input<string>('inline-flex');\n\n /** SVG size (Tailwind-friendly: w-6 h-6, w-8 h-8, etc.) */\n sizeKlass = input<string>('w-6 h-6');\n\n /** Track (background circle) */\n trackKlass = input<string>('text-border');\n\n /** Indicator (foreground stroke) */\n indicatorKlass = input<string>('text-primary');\n\n /** Stroke width */\n strokeWidth = input(4, { transform: numberAttribute });\n\n /* =====================\n * Computed\n * ===================== */\n\n readonly radius = computed(() => 50 - this.strokeWidth() / 2);\n\n readonly circumference = computed(() => 2 * Math.PI * this.radius());\n\n readonly progressOffset = computed(() => {\n if (this.mode() === 'indeterminate') return 0;\n\n const v = this.value();\n const m = this.max();\n if (m <= 0) return this.circumference();\n\n const pct = Math.min(100, Math.max(0, (v / m) * 100));\n return this.circumference() * (1 - pct / 100);\n });\n}\n","<div\n [class]=\"rootKlass()\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"mode() === 'determinate' ? 0 : null\"\n [attr.aria-valuemax]=\"mode() === 'determinate' ? max() : null\"\n [attr.aria-valuenow]=\"mode() === 'determinate' ? value() : null\"\n>\n <svg\n viewBox=\"0 0 100 100\"\n class=\"block\"\n [class]=\"sizeKlass()\"\n >\n <!-- Track -->\n <circle\n cx=\"50\"\n cy=\"50\"\n [attr.r]=\"radius()\"\n fill=\"none\"\n stroke=\"currentColor\"\n [attr.stroke-width]=\"strokeWidth()\"\n class=\"opacity-30\"\n [class]=\"trackKlass()\"\n ></circle>\n\n <!-- Indicator -->\n <circle\n cx=\"50\"\n cy=\"50\"\n [attr.r]=\"radius()\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n [attr.stroke-width]=\"strokeWidth()\"\n [attr.stroke-dasharray]=\"circumference()\"\n [attr.stroke-dashoffset]=\"progressOffset()\"\n [class]=\"\n indicatorKlass() +\n ' ' +\n (mode() === 'indeterminate' ? 'tng-spinner-indeterminate' : '')\n \"\n ></circle>\n </svg>\n</div>\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Renderer2,\n NgZone,\n OnDestroy,\n input,\n} from '@angular/core';\nimport { booleanAttribute, numberAttribute } from '@angular/core';\n\n@Directive({\n selector: '[tngRipple]',\n standalone: true,\n})\nexport class TngRipple implements AfterViewInit, OnDestroy {\n rippleDisabled = input(false, { transform: booleanAttribute });\n rippleCentered = input(false, { transform: booleanAttribute });\n rippleColor = input<string>('currentColor');\n rippleDuration = input(550, { transform: numberAttribute });\n rippleOpacity = input(0.18, { transform: numberAttribute });\n\n private unlistenPointerDown: (() => void) | null = null;\n\n constructor(\n private readonly el: ElementRef<HTMLElement>,\n private readonly r: Renderer2,\n private readonly zone: NgZone,\n ) {}\n\n ngAfterViewInit(): void {\n // Ensure styles after the element is in DOM and computed styles are stable\n this.ensureHostStyles();\n\n this.zone.runOutsideAngular(() => {\n this.unlistenPointerDown = this.r.listen(\n this.el.nativeElement,\n 'pointerdown',\n (ev: PointerEvent) => this.onPointerDown(ev),\n );\n });\n }\n\n ngOnDestroy(): void {\n this.unlistenPointerDown?.();\n this.unlistenPointerDown = null;\n }\n\n private ensureHostStyles(): void {\n const host = this.el.nativeElement;\n const pos = getComputedStyle(host).position;\n\n // Force containing block for absolute children\n // If it's static/empty/unknown -> set to relative\n if (!pos || pos === 'static') {\n this.r.setStyle(host, 'position', 'relative');\n }\n\n // Clip ripple to rounded corners\n const ov = getComputedStyle(host).overflow;\n if (!ov || ov === 'visible') {\n this.r.setStyle(host, 'overflow', 'hidden');\n }\n\n // Prevent weird stacking issues (optional but helpful)\n this.r.setStyle(host, 'isolation', 'isolate');\n\n // Mobile tap highlight\n this.r.setStyle(host, '-webkit-tap-highlight-color', 'transparent');\n }\n\n private onPointerDown(ev: PointerEvent): void {\n if (this.rippleDisabled()) return;\n if (ev.button !== 0) return;\n if (ev.defaultPrevented) return;\n\n const host = this.el.nativeElement;\n if ((host as unknown as { disabled?: boolean }).disabled) return;\n\n const rect = host.getBoundingClientRect();\n const w = rect.width;\n const h = rect.height;\n if (w <= 0 || h <= 0) return;\n\n const diameter = Math.ceil(Math.sqrt(w * w + h * h));\n\n const x = this.rippleCentered() ? rect.left + w / 2 : ev.clientX;\n const y = this.rippleCentered() ? rect.top + h / 2 : ev.clientY;\n\n const left = Math.round(x - rect.left - diameter / 2);\n const top = Math.round(y - rect.top - diameter / 2);\n\n const ripple = this.r.createElement('span') as HTMLSpanElement;\n\n this.r.setStyle(ripple, 'position', 'absolute');\n this.r.setStyle(ripple, 'left', `${left}px`);\n this.r.setStyle(ripple, 'top', `${top}px`);\n this.r.setStyle(ripple, 'width', `${diameter}px`);\n this.r.setStyle(ripple, 'height', `${diameter}px`);\n this.r.setStyle(ripple, 'border-radius', '9999px');\n this.r.setStyle(ripple, 'pointer-events', 'none');\n this.r.setStyle(ripple, 'background', this.rippleColor());\n this.r.setStyle(ripple, 'opacity', String(this.rippleOpacity()));\n this.r.setStyle(ripple, 'transform', 'scale(0)');\n this.r.setStyle(ripple, 'will-change', 'transform, opacity');\n\n const duration = this.rippleDuration();\n this.r.setStyle(\n ripple,\n 'transition',\n `transform ${duration}ms ease-out, opacity ${duration}ms ease-out`,\n );\n\n this.r.appendChild(host, ripple);\n\n requestAnimationFrame(() => {\n this.r.setStyle(ripple, 'transform', 'scale(1)');\n this.r.setStyle(ripple, 'opacity', '0');\n });\n\n window.setTimeout(() => {\n try {\n this.r.removeChild(host, ripple);\n } catch {}\n }, duration + 40);\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { booleanAttribute } from '@angular/core';\n\nexport type TngSkeletonVariant = 'text' | 'circular' | 'rectangular';\n\n@Component({\n selector: 'tng-skeleton',\n standalone: true,\n templateUrl: './skeleton.component.html',\n styleUrl: './skeleton.component.css',\n})\nexport class TngSkeleton {\n /* =====================\n * Inputs\n * ===================== */\n\n variant = input<TngSkeletonVariant>('text');\n\n /**\n * Prefer widthKlass/heightKlass for Tailwind-first usage.\n * width/height are optional escape hatches for exact CSS values.\n */\n widthKlass = input<string>('w-full');\n heightKlass = input<string>('h-4');\n\n width = input<string>(''); // e.g. '240px', '60%', '12rem'\n height = input<string>(''); // e.g. '16px'\n\n /** shimmer=true => shimmer animation, else pulse */\n shimmer = input(false, { transform: booleanAttribute });\n\n /** class hook */\n klass = input<string>('');\n\n /* =====================\n * Computed\n * ===================== */\n\n readonly shapeClasses = computed(() => {\n switch (this.variant()) {\n case 'circular':\n return 'rounded-full';\n case 'rectangular':\n return 'rounded-md';\n case 'text':\n default:\n return 'rounded'; // looks like a text line\n }\n });\n\n readonly animationClasses = computed(() => {\n // prefer shimmer if enabled, else pulse\n return this.shimmer() ? 'tng-skeleton-shimmer' : 'animate-pulse';\n });\n\n /**\n * Tailng theming: no hardcoded colors.\n * Default uses border-ish token; consumers override via klass.\n */\n readonly classes = computed(() => {\n const base = 'relative overflow-hidden bg-slate-200/70 dark:bg-slate-700/40';\n\n return [\n base,\n this.animationClasses(),\n this.shapeClasses(),\n this.widthKlass(),\n this.heightKlass(),\n this.klass(),\n ]\n .map((s) => s.trim())\n .filter(Boolean)\n .join(' ');\n });\n\n readonly styleWidth = computed(() => (this.width().trim() ? this.width().trim() : null));\n readonly styleHeight = computed(() => (this.height().trim() ? this.height().trim() : null));\n}\n","<div\n [class]=\"classes()\"\n [style.width]=\"styleWidth()\"\n [style.height]=\"styleHeight()\"\n aria-hidden=\"true\"\n></div>\n","import { Component, computed, input } from '@angular/core';\n\ntype TagColor = 'default' | 'primary' | 'success' | 'danger';\n\n@Component({\n selector: 'tng-tag',\n standalone: true,\n templateUrl: './tag.component.html',\n})\nexport class TngTag {\n label = input<string | null>('Text');\n disabled = input<boolean>(false);\n\n color = input<TagColor>('default');\n\n containerKlass = computed(() => {\n const base = 'flex items-center rounded-md px-3 py-1 text-xs font-bold';\n\n const disabledClass = this.disabled() ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer';\n\n const colorMap: Record<TagColor, string> = {\n default: 'bg-gray-100 text-gray-800 hover:bg-gray-200',\n primary: 'bg-blue-100 text-blue-800 hover:bg-blue-200',\n success: 'bg-green-100 text-green-800 hover:bg-green-200',\n danger: 'bg-red-100 text-red-800 hover:bg-red-200',\n };\n\n return `${base} ${colorMap[this.color()]} ${disabledClass}`;\n });\n}\n","<span [class]=\"containerKlass()\">\n {{ label() }}\n</span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|