UNPKG

@sixbell-telco/sdk

Version:

A collection of reusable components designed for use in Sixbell Telco Angular projects

1 lines 13.9 kB
{"version":3,"file":"sixbell-telco-sdk-components-button.mjs","sources":["../../../projects/sdk/components/button/src/button.component.ts","../../../projects/sdk/components/button/src/button.component.html","../../../projects/sdk/components/button/sixbell-telco-sdk-components-button.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, computed, input } from '@angular/core';\nimport { IconComponent } from '@sixbell-telco/sdk/components/icon';\nimport { cn } from '@sixbell-telco/sdk/utils/cn';\nimport { cva } from 'class-variance-authority';\n\n/**\n * @internal\n * Generates base button classes with style variants\n */\nexport const buttonComponent = cva(['btn', 'text-pretty', 'font-medium', 'leading-normal', 'items-center', 'align-top'], {\n\tvariants: {\n\t\tvariant: {\n\t\t\tprimary: ['btn-primary'],\n\t\t\tsecondary: ['btn-secondary'],\n\t\t\ttertiary: ['btn-tertiary'],\n\t\t\taccent: ['btn-accent'],\n\t\t\tinfo: ['btn-info'],\n\t\t\tsuccess: ['btn-success'],\n\t\t\twarning: ['btn-warning'],\n\t\t\terror: ['btn-error'],\n\t\t\ticon: [\n\t\t\t\t'btn-ghost',\n\t\t\t\t'text-neutral',\n\t\t\t\t'hover:text-primary',\n\t\t\t\t'hover:bg-transparent',\n\t\t\t\t'active:focus:bg-transparent',\n\t\t\t\t'active:focus:border-transparent',\n\t\t\t\t'focus-visible:outline-current',\n\t\t\t],\n\t\t},\n\t\tsize: {\n\t\t\txs: ['btn-xs'],\n\t\t\tsm: ['btn-sm'],\n\t\t\tmd: ['btn-md'],\n\t\t\tlg: ['btn-lg'],\n\t\t\txl: ['btn-xl'],\n\t\t},\n\t\ticonPosition: {\n\t\t\tleft: [''],\n\t\t\tright: ['flex-row-reverse'],\n\t\t},\n\t},\n\tcompoundVariants: [],\n\tdefaultVariants: {\n\t\tvariant: 'primary',\n\t\tsize: 'md',\n\t\ticonPosition: 'left',\n\t},\n});\n\n/** Possible button style variants */\nexport type ButtonVariantProps =\n\t| 'primary'\n\t| 'secondary'\n\t| 'tertiary'\n\t| 'accent'\n\t| 'info'\n\t| 'success'\n\t| 'warning'\n\t| 'error'\n\t| 'icon'\n\t| null\n\t| undefined;\n\n/** Possible button size variants */\nexport type ButtonSizeProps = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | null | undefined;\n\n/** Possible icon positions relative to button text */\nexport type ButtonIconPositionProps = 'left' | 'right' | null | undefined;\n\n/** Configuration object for button styling variants */\nexport type ButtonProps = {\n\tvariant?: ButtonVariantProps;\n\tsize?: ButtonSizeProps;\n\ticonPosition?: ButtonIconPositionProps;\n};\n\n/** Valid HTML button types */\nexport type HTMLButtonType = 'button' | 'submit' | 'reset';\n\n/**\n * A customizable button component with multiple variants and icon support\n *\n * @remarks\n * Built with Tailwind CSS and class-variance-authority for style management.\n * Supports various styling variants, sizes, icon positions, and state modifiers.\n *\n * @example\n * ```html\n * <st-button\n * variant=\"primary\"\n * size=\"md\"\n * icon=\"check\"\n * iconPosition=\"left\"\n * >\n * Submit\n * </st-button>\n * ```\n */\n@Component({\n\tselector: 'st-button',\n\timports: [IconComponent, CommonModule],\n\ttemplateUrl: './button.component.html',\n\tstyles: '',\n})\nexport class ButtonComponent {\n\t/**\n\t * Button style variant\n\t * @defaultValue 'primary'\n\t */\n\tvariant = input<ButtonVariantProps>();\n\n\t/**\n\t * Ghost button style (transparent background)\n\t * @defaultValue false\n\t */\n\tghost = input<boolean>(false);\n\n\t/**\n\t * Outline button style (border with transparent fill)\n\t * @defaultValue false\n\t */\n\toutline = input<boolean>(false);\n\n\t/**\n\t * Link button style (appears as a hyperlink)\n\t * @defaultValue false\n\t */\n\tlink = input<boolean>(false);\n\n\t/**\n\t * Soft button style (muted/subdued color variant)\n\t * @defaultValue false\n\t */\n\tsoft = input<boolean>(false);\n\n\t/**\n\t * Dash button style (dashed border)\n\t * @defaultValue false\n\t */\n\tdash = input<boolean>(false);\n\n\t/**\n\t * Wide button style (increased horizontal padding)\n\t * @defaultValue false\n\t */\n\twide = input<boolean>(false);\n\n\t/**\n\t * Circular button shape\n\t * @defaultValue false\n\t */\n\tcircle = input<boolean>(false);\n\n\t/**\n\t * Square button shape\n\t * @defaultValue false\n\t */\n\tsquare = input<boolean>(false);\n\n\t/**\n\t * Glass effect styling\n\t * @defaultValue false\n\t */\n\tglass = input<boolean>(false);\n\n\t/**\n\t * Full-width button\n\t * @defaultValue false\n\t */\n\tblock = input<boolean>(false);\n\n\t/**\n\t * Show loading spinner\n\t * @defaultValue false\n\t */\n\tloader = input<boolean>(false);\n\n\t/**\n\t * Button size variant\n\t * @defaultValue 'md'\n\t */\n\tsize = input<ButtonSizeProps>();\n\n\t/**\n\t * Add drop shadow\n\t * @defaultValue false\n\t */\n\tshadow = input<boolean>(false);\n\n\t/**\n\t * Button is focusable\n\t * @defaultValue true\n\t */\n\tfocusable = input<boolean>(true);\n\n\t/**\n\t * Icon name (from icon library)\n\t */\n\ticon = input<string | undefined>();\n\n\t/**\n\t * Position of icon relative to text\n\t * @defaultValue 'left'\n\t */\n\ticonPosition = input<ButtonIconPositionProps>();\n\n\t/**\n\t * HTML button type attribute\n\t * @defaultValue 'button'\n\t */\n\ttype = input<HTMLButtonType>('button');\n\n\t/**\n\t * Disabled state\n\t * @defaultValue false\n\t */\n\tdisabled = input<boolean>(false);\n\n\t/**\n\t * @internal\n\t * Computed class string for the button container\n\t */\n\tcontainerClass = computed(() =>\n\t\tcn(\n\t\t\tbuttonComponent({\n\t\t\t\tvariant: this.variant(),\n\t\t\t\tsize: this.size(),\n\t\t\t\ticonPosition: this.iconPosition(),\n\t\t\t}),\n\t\t\t{\n\t\t\t\t'btn-ghost': this.ghost(),\n\t\t\t\t'btn-outline': this.outline(),\n\t\t\t\t'btn-link': this.link(),\n\t\t\t\t'btn-soft': this.soft(),\n\t\t\t\t'btn-dash': this.dash(),\n\t\t\t\t'btn-wide': this.wide(),\n\t\t\t\t'btn-circle': this.circle(),\n\t\t\t\t'btn-square': this.square(),\n\t\t\t\tglass: this.glass(),\n\t\t\t\t'w-full': this.block(),\n\t\t\t\t'btn-loading': this.loader(),\n\t\t\t\t'shadow-main': this.shadow(),\n\t\t\t},\n\t\t),\n\t);\n\n\tlinkClass = computed(() => {\n\t\treturn cn('link font-body font-normal inline-flex items-center leading-normal align-top gap-1 no-underline', this.iconPosition(), {\n\t\t\t'link-primary': this.variant() === 'primary',\n\t\t\t'link-secondary': this.variant() === 'secondary',\n\t\t\t'link-tertiary': this.variant() === 'tertiary',\n\t\t\t'link-accent': this.variant() === 'accent',\n\t\t\t'link-success': this.variant() === 'success',\n\t\t\t'link-info': this.variant() === 'info',\n\t\t\t'link-warning': this.variant() === 'warning',\n\t\t\t'link-error': this.variant() === 'error',\n\t\t\t'text-[12px]': this.size() === 'xs',\n\t\t\t'text-[13px]': this.size() === 'sm',\n\t\t\t'text-[14px]': this.size() === 'md',\n\t\t\t'text-[15px]': this.size() === 'lg',\n\t\t\t'text-[16px]': this.size() === 'xl',\n\t\t\t'text-base-content/10 hover:text-base-content/10 cursor-default hover:cursor-default': this.disabled(),\n\t\t});\n\t});\n}\n","@let iconVar = icon();\n@let loaderVar = loader();\n@let focusableVar = focusable();\n<button [class]=\"link() === false ? containerClass() : linkClass()\" [type]=\"type()\" [disabled]=\"disabled()\" [tabIndex]=\"focusableVar ? 0 : -1\">\n\t@if (iconVar) {\n\t\t<st-icon [icon]=\"iconVar\" color=\"inherit\" size=\"auto\"></st-icon>\n\t}\n\t@if (loaderVar) {\n\t\t<span class=\"loading loading-spinner h-[1.2em] w-[1.2em]\"></span>\n\t}\n\t<ng-content></ng-content>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}