{"version":3,"file":"sixbell-telco-sdk-directives-text.mjs","sources":["../../../projects/sdk/directives/text/src/text.directive.ts","../../../projects/sdk/directives/text/sixbell-telco-sdk-directives-text.ts"],"sourcesContent":["import { computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { cn } from '@sixbell-telco/sdk/utils/cn';\nimport { cva } from 'class-variance-authority';\n\n/**\n * @internal\n * CSS class generator for text presets using Major Second scale (1.125 ratio, 14px base).\n * Each preset bundles font-size, line-height, letter-spacing, font-family, and a default font-weight.\n */\nconst textPresets = cva([], {\n\tvariants: {\n\t\tpreset: {\n\t\t\t'1': ['text-[28.38px]', 'text-balance', 'font-heading', 'leading-tight', 'tracking-wide', 'font-bold'],\n\t\t\t'2': ['text-[25.23px]', 'text-balance', 'font-heading', 'leading-tight', 'tracking-wide', 'font-bold'],\n\t\t\t'3': ['text-[22.43px]', 'text-balance', 'font-heading', 'leading-tight', 'tracking-wide', 'font-semibold'],\n\t\t\t'4': ['text-[19.93px]', 'text-balance', 'font-heading', 'leading-snug', 'tracking-normal', 'font-semibold'],\n\t\t\t'5': ['text-[17.72px]', 'text-balance', 'font-heading', 'leading-snug', 'tracking-normal', 'font-medium'],\n\t\t\t'6': ['text-[15.75px]', 'text-pretty', 'font-body', 'leading-normal', 'tracking-normal', 'font-medium'],\n\t\t\t'7': ['text-[14px]', 'text-pretty', 'font-body', 'leading-normal', 'tracking-tight', 'font-normal'],\n\t\t\t'8': ['text-[12.44px]', 'text-pretty', 'font-body', 'leading-normal', 'tracking-tight', 'font-normal'],\n\t\t\t'9': ['text-[11.06px]', 'text-pretty', 'font-body', 'leading-normal', 'tracking-tight', 'font-normal'],\n\t\t\t'10': ['text-[9.83px]', 'text-pretty', 'font-body', 'leading-normal', 'tracking-normal', 'font-normal'],\n\t\t},\n\t\tweight: {\n\t\t\tbold: 'font-bold',\n\t\t\tsemibold: 'font-semibold',\n\t\t\tmedium: 'font-medium',\n\t\t\tnormal: 'font-normal',\n\t\t\tlight: 'font-light',\n\t\t\tinherit: 'font-inherit',\n\t\t},\n\t\tcolor: {\n\t\t\tbase: 'text-base-content',\n\t\t\t'base-placeholder': 'text-neutral',\n\t\t\tprimary: 'text-primary',\n\t\t\tsecondary: 'text-secondary',\n\t\t\taccent: 'text-accent',\n\t\t\tinherit: 'text-inherit',\n\t\t},\n\t\toverflow: {\n\t\t\tclip: 'text-clip',\n\t\t\tellipsis: 'text-ellipsis',\n\t\t\ttruncate: 'text-truncate',\n\t\t},\n\t\tlineClamp: {\n\t\t\t'1': 'line-clamp-1',\n\t\t\t'2': 'line-clamp-2',\n\t\t\t'3': 'line-clamp-3',\n\t\t\t'4': 'line-clamp-4',\n\t\t\t'5': 'line-clamp-5',\n\t\t\t'6': 'line-clamp-6',\n\t\t\tnone: 'line-clamp-none',\n\t\t},\n\t},\n\tcompoundVariants: [],\n\tdefaultVariants: {\n\t\tpreset: '7',\n\t\tcolor: 'inherit',\n\t\toverflow: 'clip',\n\t\tlineClamp: undefined,\n\t\tweight: 'normal',\n\t},\n});\n\n/** Numbered text preset (1 = largest, 10 = smallest) */\nexport type TextPreset = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | null | undefined;\n\n/** Font weight options for text */\nexport type TextWeight = 'bold' | 'semibold' | 'medium' | 'normal' | 'light' | 'inherit' | null | undefined;\n\n/** Text color variants */\nexport type TextColor = 'base' | 'base-placeholder' | 'primary' | 'secondary' | 'accent' | 'inherit' | null | undefined;\n\n/** Text overflow handling methods */\nexport type TextOverflow = 'clip' | 'ellipsis' | 'truncate' | null | undefined;\n\n/** Line clamp options (number of visible lines) */\nexport type TextLineClamp = '1' | '2' | '3' | '4' | '5' | '6' | 'none' | null | undefined;\n\n/** Configuration object for text styles */\nexport type TextProps = {\n\tpreset?: TextPreset;\n\tweight?: TextWeight;\n\tcolor?: TextColor;\n\toverflow?: TextOverflow;\n\tlineClamp?: TextLineClamp;\n};\n\n/**\n * A directive for applying consistent, preset-based typography styles using Tailwind CSS.\n *\n * Uses a numbered preset system (1-10) based on a Major Second scale (1.125 ratio, 14px base).\n * Each preset bundles sensible defaults for font-size, line-height, letter-spacing, and font-weight.\n * Weight, color, and overflow can be overridden independently.\n *\n * External Tailwind classes on the host element are automatically merged via `tailwind-merge`,\n * so they override conflicting directive defaults (e.g., `class=\"text-error\"` overrides the\n * default `text-base-content` color).\n *\n * @example\n * ```html\n * <!-- Basic: preset for styling, HTML tag for semantics -->\n * <h2 stText=\"3\">Section Title</h2>\n *\n * <!-- External class overrides directive default color -->\n * <h1 stText=\"1\" class=\"mb-4 text-primary\">Hero Title</h1>\n *\n * <!-- Explicit directive color -->\n * <p stText=\"7\" stTextWeight=\"bold\" stTextColor=\"primary\">Body text</p>\n *\n * <!-- Small label -->\n * <span stText=\"9\" class=\"uppercase tracking-wider\">Label</span>\n * ```\n *\n * @publicApi\n */\n@Directive({\n\tselector: '[stText]',\n\tstandalone: true,\n\thost: {\n\t\t'[class]': 'computedClasses()',\n\t},\n})\nexport class TextDirective {\n\t/**\n\t * Text preset (1 = largest, 10 = smallest).\n\t * Each preset bundles defaults for font-size, line-height, letter-spacing, and font-weight.\n\t * @defaultValue '7' (14px body text)\n\t */\n\tstText = input<TextPreset>('7');\n\n\t/**\n\t * Override the preset default font weight.\n\t * @defaultValue 'normal' (preset default weight)\n\t */\n\tstTextWeight = input<TextWeight>('normal');\n\n\t/**\n\t * Text color variant.\n\t * @defaultValue 'inherit' (text-inherit)\n\t */\n\tstTextColor = input<TextColor>('inherit');\n\n\t/**\n\t * Text overflow handling.\n\t * @defaultValue 'clip'\n\t */\n\tstTextOverflow = input<TextOverflow>('clip');\n\n\t/**\n\t * Line clamp — limits visible text to a given number of lines.\n\t * When not set, no line-clamp class is applied.\n\t */\n\tstTextLineClamp = input<TextLineClamp>(undefined);\n\n\t/**\n\t * Extra CSS classes merged after directive classes via `tailwind-merge`.\n\t * Useful for programmatic overrides (e.g., forwarded from a wrapper component).\n\t * Conflicting utilities in `stTextClass` win over directive defaults.\n\t */\n\tstTextClass = input<string>('');\n\n\t/** @internal Static classes captured from the host element before the first render. */\n\tprivate readonly hostStaticClasses = inject(ElementRef).nativeElement.getAttribute('class') ?? '';\n\n\t/** @internal Computed CSS class string merged via host binding */\n\tprotected computedClasses = computed(() => {\n\t\tconst weight = this.stTextWeight();\n\t\tconst color = this.stTextColor();\n\t\tconst lineClamp = this.stTextLineClamp();\n\t\treturn cn(\n\t\t\ttextPresets({\n\t\t\t\tpreset: this.stText(),\n\t\t\t\t...(weight ? { weight } : {}),\n\t\t\t\t...(color ? { color } : {}),\n\t\t\t\t...(lineClamp ? { lineClamp } : {}),\n\t\t\t\toverflow: this.stTextOverflow(),\n\t\t\t}),\n\t\t\tthis.stTextClass(),\n\t\t\tthis.hostStaticClasses,\n\t\t);\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}