bakery-ui 0.0.1 → 0.1.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/LICENSE +21 -0
- package/README.md +124 -33
- package/fesm2022/bakery-ui.mjs +1092 -13
- package/fesm2022/bakery-ui.mjs.map +1 -1
- package/index.d.ts +5 -17
- package/lib/bakery-ui.d.ts +5 -0
- package/lib/button/baguette-button.d.ts +22 -0
- package/lib/display/cupcake-card.d.ts +34 -0
- package/lib/feedback/toast-notification.d.ts +30 -0
- package/lib/inputs/bagel-input.d.ts +53 -0
- package/package.json +12 -5
- package/public-api.d.ts +5 -0
- package/bakery-ui-0.0.1.tgz +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"bakery-ui.mjs","sources":["../../../projects/bakery-ui/src/lib/bakery-ui.ts","../../../projects/bakery-ui/src/lib/button/button.ts","../../../projects/bakery-ui/src/lib/button/button.html","../../../projects/bakery-ui/src/public-api.ts","../../../projects/bakery-ui/src/bakery-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-bakery-ui',\n imports: [],\n template: `\n <p>\n bakery-ui works!\n </p>\n `,\n styles: ``\n})\nexport class BakeryUi {\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lib-button',\n imports: [],\n templateUrl: './button.html',\n styleUrl: './button.css'\n})\nexport class Button {\n @Input() label: string = 'Button';\n @Input() variant: 'primary' | 'secondary' | 'danger' = 'primary';\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n @Input() disabled: boolean = false;\n}\n","<button \n [class]=\"'btn btn-' + variant + ' btn-' + size\"\n [disabled]=\"disabled\">\n {{ label }}\n</button>\n","/*\n * Public API Surface of bakery-ui\n */\n\nexport * from './lib/bakery-ui';\nexport * from './lib/button/button';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAYa,QAAQ,CAAA;uGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAPT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,EAAE,EACD,QAAA,EAAA;;;;AAIT,EAAA,CAAA,EAAA;;;MCDU,MAAM,CAAA;IACR,KAAK,GAAW,QAAQ;IACxB,OAAO,GAAuC,SAAS;IACvD,IAAI,GAAiC,QAAQ;IAC7C,QAAQ,GAAY,KAAK;uGAJvB,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,0JCRnB,uHAKA,EAAA,MAAA,EAAA,CAAA,4jCAAA,CAAA,EAAA,CAAA;;2FDGa,MAAM,EAAA,UAAA,EAAA,CAAA;kBANlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,QAAA,EAAA,uHAAA,EAAA,MAAA,EAAA,CAAA,4jCAAA,CAAA,EAAA;8BAKF,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;;;AEZH;;AAEG;;ACFH;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"bakery-ui.mjs","sources":["../../../src/lib/bakery-ui.ts","../../../src/lib/button/baguette-button.ts","../../../src/lib/inputs/bagel-input.ts","../../../src/lib/display/cupcake-card.ts","../../../src/lib/feedback/toast-notification.ts","../../../src/public-api.ts","../../../src/bakery-ui.ts"],"sourcesContent":["import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-bakery-ui',\n imports: [],\n template: `\n <p>\n bakery-ui works!\n </p>\n `,\n styles: ``\n})\nexport class BakeryUi {\n\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatRippleModule } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\n\nexport type BaguetteButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type BaguetteButtonSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Component({\n selector: 'baguette-button',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatRippleModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <button\n [class]=\"buttonClasses\"\n [disabled]=\"disabled || loading\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (click)=\"handleClick($event)\"\n matRipple\n [matRippleDisabled]=\"disabled || loading\"\n [matRippleColor]=\"rippleColor\">\n \n <!-- Loading spinner -->\n <svg \n *ngIf=\"loading\" \n class=\"animate-spin -ml-1 mr-2 h-4 w-4\"\n xmlns=\"http://www.w3.org/2000/svg\" \n fill=\"none\" \n viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n \n <!-- Left icon -->\n <span *ngIf=\"leftIcon && !loading\" [innerHTML]=\"leftIcon\" class=\"mr-2\"></span>\n \n <!-- Button content -->\n <span [class]=\"contentClasses\">\n <ng-content></ng-content>\n </span>\n \n <!-- Right icon -->\n <span *ngIf=\"rightIcon\" [innerHTML]=\"rightIcon\" class=\"ml-2\"></span>\n </button>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n `]\n})\nexport class BaguetteButton {\n @Input() variant: BaguetteButtonVariant = 'primary';\n @Input() size: BaguetteButtonSize = 'md';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() fullWidth = false;\n @Input() leftIcon?: string;\n @Input() rightIcon?: string;\n @Input() ariaLabel?: string;\n @Input() ariaDescribedBy?: string;\n \n @Output() clicked = new EventEmitter<Event>();\n\n handleClick(event: Event) {\n if (!this.disabled && !this.loading) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n const baseClasses = [\n 'inline-flex items-center justify-center font-medium rounded-lg',\n 'transition-all duration-200 ease-in-out',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'transform hover:scale-105 active:scale-95',\n 'shadow-sm hover:shadow-md'\n ];\n\n // Size classes - made more compact\n const sizeClasses = {\n sm: 'px-2 py-1 text-xs',\n md: 'px-3 py-1.5 text-sm',\n lg: 'px-4 py-2 text-base',\n xl: 'px-5 py-2.5 text-lg'\n };\n\n // Variant classes with bakery theme\n const variantClasses = {\n primary: [\n 'bg-gradient-to-r from-amber-400 to-yellow-500',\n 'hover:from-amber-500 hover:to-yellow-600',\n 'text-amber-900 font-semibold',\n 'border border-amber-300',\n 'focus:ring-amber-500',\n 'shadow-amber-200'\n ],\n secondary: [\n 'bg-gradient-to-r from-orange-100 to-amber-100',\n 'hover:from-orange-200 hover:to-amber-200',\n 'text-amber-800 font-medium',\n 'border border-amber-200',\n 'focus:ring-amber-400'\n ],\n outline: [\n 'bg-transparent border-2 border-amber-400',\n 'hover:bg-amber-50 hover:border-amber-500',\n 'text-amber-700 font-medium',\n 'focus:ring-amber-400'\n ],\n ghost: [\n 'bg-transparent hover:bg-amber-50',\n 'text-amber-700 font-medium',\n 'focus:ring-amber-400'\n ],\n danger: [\n 'bg-gradient-to-r from-red-500 to-red-600',\n 'hover:from-red-600 hover:to-red-700',\n 'text-white font-medium',\n 'border border-red-400',\n 'focus:ring-red-500',\n 'shadow-red-200'\n ]\n };\n\n const classes = [\n ...baseClasses,\n sizeClasses[this.size],\n ...variantClasses[this.variant]\n ];\n\n if (this.fullWidth) {\n classes.push('w-full');\n }\n\n return classes.join(' ');\n }\n\n get contentClasses(): string {\n return this.loading ? 'opacity-70' : '';\n }\n\n get rippleColor(): string {\n const rippleColors = {\n primary: 'rgba(245, 158, 11, 0.3)',\n secondary: 'rgba(217, 119, 6, 0.3)',\n outline: 'rgba(245, 158, 11, 0.2)',\n ghost: 'rgba(245, 158, 11, 0.1)',\n danger: 'rgba(239, 68, 68, 0.3)'\n };\n return rippleColors[this.variant];\n }\n} ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { CommonModule } from '@angular/common';\n\nexport type BagelInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';\nexport type BagelInputSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'bagel-input',\n standalone: true,\n imports: [CommonModule, MatFormFieldModule, MatInputModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BagelInput),\n multi: true\n }\n ],\n template: `\n <div class=\"w-full\">\n <!-- Label -->\n <label \n *ngIf=\"label\" \n [for]=\"inputId\"\n [class]=\"labelClasses\">\n {{ label }}\n <span *ngIf=\"required\" class=\"text-red-500 ml-1\">*</span>\n </label>\n\n <!-- Input Container -->\n <div [class]=\"containerClasses\">\n <!-- Left Icon -->\n <div *ngIf=\"leftIcon\" class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\n <span [innerHTML]=\"leftIcon\" class=\"text-amber-600\"></span>\n </div>\n\n <!-- Input Field -->\n <input\n [id]=\"inputId\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [class]=\"inputClasses\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n [attr.autocomplete]=\"autocomplete\"\n [attr.maxlength]=\"maxLength\"\n [attr.minlength]=\"minLength\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (keyup.enter)=\"onEnter()\"\n />\n\n <!-- Right Icon / Clear Button -->\n <div *ngIf=\"rightIcon || (clearable && value)\" class=\"absolute inset-y-0 right-0 flex items-center\">\n <button\n *ngIf=\"clearable && value && !disabled\"\n type=\"button\"\n class=\"pr-3 text-amber-600 hover:text-amber-700 focus:outline-none\"\n (click)=\"clearValue()\"\n [attr.aria-label]=\"'Clear ' + (label || 'input')\">\n <svg class=\"w-4 h-4\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M6 18L18 6M6 6l12 12\"></path>\n </svg>\n </button>\n <span \n *ngIf=\"rightIcon\" \n [innerHTML]=\"rightIcon\" \n class=\"pr-3 text-amber-600\"></span>\n </div>\n </div>\n\n <!-- Helper Text -->\n <p *ngIf=\"helperText && !error\" [class]=\"helperClasses\">\n {{ helperText }}\n </p>\n\n <!-- Error Message -->\n <p *ngIf=\"error\" [class]=\"errorClasses\">\n {{ error }}\n </p>\n\n <!-- Character Count -->\n <p *ngIf=\"maxLength && showCharCount\" [class]=\"charCountClasses\">\n {{ value?.length || 0 }}/{{ maxLength }}\n </p>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n width: 100%;\n }\n `]\n})\nexport class BagelInput implements ControlValueAccessor {\n @Input() label?: string;\n @Input() placeholder?: string;\n @Input() type: BagelInputType = 'text';\n @Input() size: BagelInputSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() clearable = false;\n @Input() leftIcon?: string;\n @Input() rightIcon?: string;\n @Input() helperText?: string;\n @Input() error?: string;\n @Input() ariaLabel?: string;\n @Input() ariaDescribedBy?: string;\n @Input() autocomplete?: string;\n @Input() maxLength?: number;\n @Input() minLength?: number;\n @Input() min?: number;\n @Input() max?: number;\n @Input() step?: number;\n @Input() showCharCount = false;\n @Input() inputId = `bagel-input-${Math.random().toString(36).substring(2, 9)}`;\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() inputFocus = new EventEmitter<void>();\n @Output() inputBlur = new EventEmitter<void>();\n @Output() enterPressed = new EventEmitter<void>();\n\n value = '';\n private onChange = (value: string) => {};\n private onTouched = () => {};\n\n // ControlValueAccessor implementation\n writeValue(value: string): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n }\n\n onBlur(): void {\n this.onTouched();\n this.inputBlur.emit();\n }\n\n onFocus(): void {\n this.inputFocus.emit();\n }\n\n onEnter(): void {\n this.enterPressed.emit();\n }\n\n clearValue(): void {\n this.value = '';\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n }\n\n get labelClasses(): string {\n return [\n 'block text-xs font-medium mb-1',\n this.error ? 'text-red-700' : 'text-amber-800'\n ].join(' ');\n }\n\n get containerClasses(): string {\n return 'relative';\n }\n\n get inputClasses(): string {\n const baseClasses = [\n 'block w-full rounded-lg border-2 transition-all duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-offset-1',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n 'placeholder-amber-400'\n ];\n\n const sizeClasses = {\n sm: 'px-2 py-1 text-xs',\n md: 'px-3 py-1.5 text-sm',\n lg: 'px-4 py-2 text-base'\n };\n\n const stateClasses = this.error \n ? [\n 'border-red-300 bg-red-50',\n 'focus:border-red-500 focus:ring-red-200',\n 'text-red-900'\n ]\n : [\n 'border-amber-300 bg-amber-50',\n 'focus:border-amber-500 focus:ring-amber-200',\n 'text-amber-900',\n 'hover:border-amber-400'\n ];\n\n const paddingAdjustment = [];\n if (this.leftIcon) paddingAdjustment.push('pl-10');\n if (this.rightIcon || this.clearable) paddingAdjustment.push('pr-10');\n\n return [\n ...baseClasses,\n sizeClasses[this.size],\n ...stateClasses,\n ...paddingAdjustment\n ].join(' ');\n }\n\n get helperClasses(): string {\n return 'mt-0.5 text-xs text-amber-600';\n }\n\n get errorClasses(): string {\n return 'mt-0.5 text-xs text-red-600 flex items-center';\n }\n\n get charCountClasses(): string {\n const isNearLimit = this.maxLength && this.value?.length > this.maxLength * 0.8;\n return [\n 'mt-1 text-xs text-right',\n isNearLimit ? 'text-red-500' : 'text-amber-500'\n ].join(' ');\n }\n} ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatRippleModule } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\n\nexport type CupcakeCardVariant = 'default' | 'outlined' | 'elevated' | 'filled';\nexport type CupcakeCardSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'cupcake-card',\n standalone: true,\n imports: [CommonModule, MatCardModule, MatRippleModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div \n [class]=\"cardClasses\"\n [attr.role]=\"clickable ? 'button' : null\"\n [attr.tabindex]=\"clickable ? 0 : null\"\n [attr.aria-label]=\"ariaLabel\"\n (click)=\"handleClick($event)\"\n (keyup.enter)=\"handleClick($event)\"\n (keyup.space)=\"handleClick($event)\"\n matRipple\n [matRippleDisabled]=\"!clickable\"\n [matRippleColor]=\"rippleColor\">\n \n <!-- Header -->\n <div *ngIf=\"hasHeader\" [class]=\"headerClasses\">\n <div class=\"flex items-center justify-between\">\n <div class=\"flex items-center space-x-3\">\n <div *ngIf=\"avatar\" class=\"flex-shrink-0\">\n <img [src]=\"avatar\" [alt]=\"avatarAlt\" class=\"w-10 h-10 rounded-full object-cover\">\n </div>\n <div>\n <h3 *ngIf=\"title\" class=\"text-lg font-semibold text-amber-900\">{{ title }}</h3>\n <p *ngIf=\"subtitle\" class=\"text-sm text-amber-600\">{{ subtitle }}</p>\n </div>\n </div>\n <div *ngIf=\"headerAction\" class=\"flex-shrink-0\">\n <ng-content select=\"[slot=header-action]\"></ng-content>\n </div>\n </div>\n </div>\n\n <!-- Image -->\n <div *ngIf=\"image\" class=\"relative overflow-hidden\">\n <img \n [src]=\"image\" \n [alt]=\"imageAlt\" \n [class]=\"imageClasses\"\n [loading]=\"imageLoading\">\n <div *ngIf=\"imageBadge\" class=\"absolute top-2 right-2\">\n <span class=\"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-amber-100 text-amber-800\">\n {{ imageBadge }}\n </span>\n </div>\n </div>\n\n <!-- Content -->\n <div [class]=\"contentClasses\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"hasFooter\" [class]=\"footerClasses\">\n <ng-content select=\"[slot=footer]\"></ng-content>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n width: 100%;\n }\n `]\n})\nexport class CupcakeCard {\n @Input() variant: CupcakeCardVariant = 'default';\n @Input() size: CupcakeCardSize = 'md';\n @Input() title?: string;\n @Input() subtitle?: string;\n @Input() image?: string;\n @Input() imageAlt?: string;\n @Input() imageLoading: 'lazy' | 'eager' = 'lazy';\n @Input() imageBadge?: string;\n @Input() avatar?: string;\n @Input() avatarAlt?: string;\n @Input() clickable = false;\n @Input() disabled = false;\n @Input() loading = false;\n @Input() headerAction = false;\n @Input() hasHeader = false;\n @Input() hasFooter = false;\n @Input() ariaLabel?: string;\n @Input() fullWidth = false;\n\n @Output() cardClick = new EventEmitter<Event>();\n\n handleClick(event: Event): void {\n if (this.clickable && !this.disabled && !this.loading) {\n this.cardClick.emit(event);\n }\n }\n\n get cardClasses(): string {\n const baseClasses = [\n 'rounded-xl overflow-hidden transition-all duration-200',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-amber-500'\n ];\n\n const sizeClasses = {\n sm: 'max-w-xs',\n md: 'max-w-sm',\n lg: 'max-w-md'\n };\n\n const variantClasses = {\n default: [\n 'bg-white border border-amber-200',\n 'hover:border-amber-300 hover:shadow-md'\n ],\n outlined: [\n 'bg-transparent border-2 border-amber-300',\n 'hover:border-amber-400 hover:bg-amber-50'\n ],\n elevated: [\n 'bg-white shadow-lg shadow-amber-100',\n 'hover:shadow-xl hover:shadow-amber-200',\n 'border border-amber-100'\n ],\n filled: [\n 'bg-gradient-to-br from-amber-50 to-orange-50',\n 'border border-amber-200',\n 'hover:from-amber-100 hover:to-orange-100'\n ]\n };\n\n const interactionClasses = [];\n if (this.clickable) {\n interactionClasses.push(\n 'cursor-pointer',\n 'hover:transform hover:scale-105',\n 'active:scale-95'\n );\n }\n\n if (this.disabled) {\n interactionClasses.push('opacity-50 cursor-not-allowed');\n }\n\n if (this.loading) {\n interactionClasses.push('opacity-70 cursor-wait');\n }\n\n const classes = [\n ...baseClasses,\n ...variantClasses[this.variant],\n ...interactionClasses\n ];\n\n if (!this.fullWidth) {\n classes.push(sizeClasses[this.size]);\n }\n\n return classes.join(' ');\n }\n\n get headerClasses(): string {\n const sizeClasses = {\n sm: 'p-2 pb-1',\n md: 'p-3 pb-2',\n lg: 'p-4 pb-2'\n };\n\n return [\n 'border-b border-amber-100',\n sizeClasses[this.size]\n ].join(' ');\n }\n\n get contentClasses(): string {\n const sizeClasses = {\n sm: 'p-2',\n md: 'p-3',\n lg: 'p-4'\n };\n\n const spacingClasses = [];\n if (this.hasHeader && !this.image) spacingClasses.push('pt-2');\n if (this.hasFooter) spacingClasses.push('pb-2');\n if (this.image && !this.hasHeader) spacingClasses.push('pt-0');\n\n return [\n sizeClasses[this.size],\n ...spacingClasses\n ].join(' ');\n }\n\n get footerClasses(): string {\n const sizeClasses = {\n sm: 'p-2 pt-1',\n md: 'p-3 pt-2', \n lg: 'p-4 pt-2'\n };\n\n return [\n 'border-t border-amber-100',\n sizeClasses[this.size]\n ].join(' ');\n }\n\n get imageClasses(): string {\n return [\n 'w-full h-32 object-cover',\n 'transition-transform duration-200',\n this.clickable ? 'hover:scale-105' : ''\n ].join(' ');\n }\n\n get rippleColor(): string {\n return 'rgba(245, 158, 11, 0.2)';\n }\n} ","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, OnInit, OnDestroy } from '@angular/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CommonModule } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\nexport type ToastType = 'success' | 'error' | 'warning' | 'info';\nexport type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n\n@Component({\n selector: 'toast-notification',\n standalone: true,\n imports: [CommonModule, MatSnackBarModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('slideIn', [\n state('in', style({ transform: 'translateX(0)', opacity: 1 })),\n transition('void => *', [\n style({ transform: 'translateX(100%)', opacity: 0 }),\n animate('300ms ease-in-out')\n ]),\n transition('* => void', [\n animate('300ms ease-in-out', style({ transform: 'translateX(100%)', opacity: 0 }))\n ])\n ])\n ],\n template: `\n <div \n *ngIf=\"visible\"\n [@slideIn]\n [class]=\"toastClasses\"\n [attr.role]=\"'alert'\"\n [attr.aria-live]=\"'polite'\"\n [attr.aria-atomic]=\"'true'\">\n \n <!-- Icon -->\n <div class=\"flex-shrink-0\">\n <svg [class]=\"iconClasses\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <!-- Success Icon -->\n <path *ngIf=\"type === 'success'\" \n fill-rule=\"evenodd\" \n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" \n clip-rule=\"evenodd\" />\n \n <!-- Error Icon -->\n <path *ngIf=\"type === 'error'\" \n fill-rule=\"evenodd\" \n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" \n clip-rule=\"evenodd\" />\n \n <!-- Warning Icon -->\n <path *ngIf=\"type === 'warning'\" \n fill-rule=\"evenodd\" \n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" \n clip-rule=\"evenodd\" />\n \n <!-- Info Icon -->\n <path *ngIf=\"type === 'info'\" \n fill-rule=\"evenodd\" \n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" \n clip-rule=\"evenodd\" />\n </svg>\n </div>\n\n <!-- Content -->\n <div class=\"ml-2 flex-1\">\n <h4 *ngIf=\"title\" [class]=\"titleClasses\">{{ title }}</h4>\n <p [class]=\"messageClasses\">{{ message }}</p>\n \n <!-- Action Button -->\n <div *ngIf=\"actionText\" class=\"mt-1\">\n <button \n type=\"button\"\n [class]=\"actionButtonClasses\"\n (click)=\"onAction()\">\n {{ actionText }}\n </button>\n </div>\n </div>\n\n <!-- Close Button -->\n <div *ngIf=\"closable\" class=\"ml-2 flex-shrink-0 flex\">\n <button \n type=\"button\"\n [class]=\"closeButtonClasses\"\n (click)=\"onClose()\"\n [attr.aria-label]=\"'Close notification'\">\n <svg class=\"h-3 w-3\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path fill-rule=\"evenodd\" \n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\" \n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n position: fixed;\n z-index: 1000;\n }\n \n :host(.top-right) { top: 1rem; right: 1rem; }\n :host(.top-left) { top: 1rem; left: 1rem; }\n :host(.bottom-right) { bottom: 1rem; right: 1rem; }\n :host(.bottom-left) { bottom: 1rem; left: 1rem; }\n :host(.top-center) { top: 1rem; left: 50%; transform: translateX(-50%); }\n :host(.bottom-center) { bottom: 1rem; left: 50%; transform: translateX(-50%); }\n `]\n})\nexport class ToastNotification implements OnInit, OnDestroy {\n @Input() type: ToastType = 'info';\n @Input() title?: string;\n @Input() message = '';\n @Input() duration = 5000; // 5 seconds\n @Input() closable = true;\n @Input() actionText?: string;\n @Input() position: ToastPosition = 'top-right';\n @Input() persistent = false; // Don't auto-hide\n @Input() visible = true;\n\n @Output() closed = new EventEmitter<void>();\n @Output() action = new EventEmitter<void>();\n\n private timeoutId?: number;\n\n ngOnInit(): void {\n if (!this.persistent && this.duration > 0) {\n this.timeoutId = window.setTimeout(() => {\n this.onClose();\n }, this.duration);\n }\n }\n\n ngOnDestroy(): void {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n }\n\n onClose(): void {\n this.visible = false;\n this.closed.emit();\n }\n\n onAction(): void {\n this.action.emit();\n }\n\n get toastClasses(): string {\n const baseClasses = [\n 'max-w-xs w-full bg-white shadow-md rounded-md pointer-events-auto',\n 'ring-1 ring-black ring-opacity-5 overflow-hidden',\n 'transition-all duration-300 ease-in-out'\n ];\n\n const typeClasses = {\n success: 'border-l-2 border-green-400',\n error: 'border-l-2 border-red-400',\n warning: 'border-l-2 border-yellow-400',\n info: 'border-l-2 border-blue-400'\n };\n\n return [\n ...baseClasses,\n typeClasses[this.type],\n 'p-2'\n ].join(' ');\n }\n\n get iconClasses(): string {\n const baseClasses = 'h-4 w-4';\n \n const typeClasses = {\n success: 'text-green-400',\n error: 'text-red-400',\n warning: 'text-yellow-400',\n info: 'text-blue-400'\n };\n\n return [baseClasses, typeClasses[this.type]].join(' ');\n }\n\n get titleClasses(): string {\n return 'text-xs font-medium text-gray-900';\n }\n\n get messageClasses(): string {\n return this.title ? 'mt-0.5 text-xs text-gray-500' : 'text-xs text-gray-900';\n }\n\n get actionButtonClasses(): string {\n const typeClasses = {\n success: 'text-green-600 hover:text-green-500 focus:ring-green-500',\n error: 'text-red-600 hover:text-red-500 focus:ring-red-500',\n warning: 'text-yellow-600 hover:text-yellow-500 focus:ring-yellow-500',\n info: 'text-blue-600 hover:text-blue-500 focus:ring-blue-500'\n };\n\n return [\n 'text-sm font-medium rounded-md',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n 'transition-colors duration-200',\n typeClasses[this.type]\n ].join(' ');\n }\n\n get closeButtonClasses(): string {\n return [\n 'bg-white rounded-md inline-flex text-gray-400',\n 'hover:text-gray-500 focus:outline-none',\n 'focus:ring-2 focus:ring-offset-2 focus:ring-amber-500',\n 'transition-colors duration-200'\n ].join(' ');\n }\n} ","/*\n * Public API Surface of bakery-ui\n */\n\nexport * from './lib/bakery-ui';\n\n// Button Components\nexport * from './lib/button/baguette-button';\n\n// Input Components\nexport * from './lib/inputs/bagel-input';\n\n// Display Components\nexport * from './lib/display/cupcake-card';\n\n// Feedback Components\nexport * from './lib/feedback/toast-notification';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
@@ -1,17 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
}
|
7
|
-
|
8
|
-
declare class Button {
|
9
|
-
label: string;
|
10
|
-
variant: 'primary' | 'secondary' | 'danger';
|
11
|
-
size: 'small' | 'medium' | 'large';
|
12
|
-
disabled: boolean;
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<Button, never>;
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<Button, "lib-button", never, { "label": { "alias": "label"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, never, true, never>;
|
15
|
-
}
|
16
|
-
|
17
|
-
export { BakeryUi, Button };
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
/// <amd-module name="bakery-ui" />
|
5
|
+
export * from './public-api';
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export type BaguetteButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
|
4
|
+
export type BaguetteButtonSize = 'sm' | 'md' | 'lg' | 'xl';
|
5
|
+
export declare class BaguetteButton {
|
6
|
+
variant: BaguetteButtonVariant;
|
7
|
+
size: BaguetteButtonSize;
|
8
|
+
disabled: boolean;
|
9
|
+
loading: boolean;
|
10
|
+
fullWidth: boolean;
|
11
|
+
leftIcon?: string;
|
12
|
+
rightIcon?: string;
|
13
|
+
ariaLabel?: string;
|
14
|
+
ariaDescribedBy?: string;
|
15
|
+
clicked: EventEmitter<Event>;
|
16
|
+
handleClick(event: Event): void;
|
17
|
+
get buttonClasses(): string;
|
18
|
+
get contentClasses(): string;
|
19
|
+
get rippleColor(): string;
|
20
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaguetteButton, never>;
|
21
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BaguetteButton, "baguette-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
|
22
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export type CupcakeCardVariant = 'default' | 'outlined' | 'elevated' | 'filled';
|
4
|
+
export type CupcakeCardSize = 'sm' | 'md' | 'lg';
|
5
|
+
export declare class CupcakeCard {
|
6
|
+
variant: CupcakeCardVariant;
|
7
|
+
size: CupcakeCardSize;
|
8
|
+
title?: string;
|
9
|
+
subtitle?: string;
|
10
|
+
image?: string;
|
11
|
+
imageAlt?: string;
|
12
|
+
imageLoading: 'lazy' | 'eager';
|
13
|
+
imageBadge?: string;
|
14
|
+
avatar?: string;
|
15
|
+
avatarAlt?: string;
|
16
|
+
clickable: boolean;
|
17
|
+
disabled: boolean;
|
18
|
+
loading: boolean;
|
19
|
+
headerAction: boolean;
|
20
|
+
hasHeader: boolean;
|
21
|
+
hasFooter: boolean;
|
22
|
+
ariaLabel?: string;
|
23
|
+
fullWidth: boolean;
|
24
|
+
cardClick: EventEmitter<Event>;
|
25
|
+
handleClick(event: Event): void;
|
26
|
+
get cardClasses(): string;
|
27
|
+
get headerClasses(): string;
|
28
|
+
get contentClasses(): string;
|
29
|
+
get footerClasses(): string;
|
30
|
+
get imageClasses(): string;
|
31
|
+
get rippleColor(): string;
|
32
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CupcakeCard, never>;
|
33
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CupcakeCard, "cupcake-card", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "image": { "alias": "image"; "required": false; }; "imageAlt": { "alias": "imageAlt"; "required": false; }; "imageLoading": { "alias": "imageLoading"; "required": false; }; "imageBadge": { "alias": "imageBadge"; "required": false; }; "avatar": { "alias": "avatar"; "required": false; }; "avatarAlt": { "alias": "avatarAlt"; "required": false; }; "clickable": { "alias": "clickable"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "headerAction": { "alias": "headerAction"; "required": false; }; "hasHeader": { "alias": "hasHeader"; "required": false; }; "hasFooter": { "alias": "hasFooter"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; }, { "cardClick": "cardClick"; }, never, ["[slot=header-action]", "*", "[slot=footer]"], true, never>;
|
34
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { EventEmitter, OnInit, OnDestroy } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export type ToastType = 'success' | 'error' | 'warning' | 'info';
|
4
|
+
export type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';
|
5
|
+
export declare class ToastNotification implements OnInit, OnDestroy {
|
6
|
+
type: ToastType;
|
7
|
+
title?: string;
|
8
|
+
message: string;
|
9
|
+
duration: number;
|
10
|
+
closable: boolean;
|
11
|
+
actionText?: string;
|
12
|
+
position: ToastPosition;
|
13
|
+
persistent: boolean;
|
14
|
+
visible: boolean;
|
15
|
+
closed: EventEmitter<void>;
|
16
|
+
action: EventEmitter<void>;
|
17
|
+
private timeoutId?;
|
18
|
+
ngOnInit(): void;
|
19
|
+
ngOnDestroy(): void;
|
20
|
+
onClose(): void;
|
21
|
+
onAction(): void;
|
22
|
+
get toastClasses(): string;
|
23
|
+
get iconClasses(): string;
|
24
|
+
get titleClasses(): string;
|
25
|
+
get messageClasses(): string;
|
26
|
+
get actionButtonClasses(): string;
|
27
|
+
get closeButtonClasses(): string;
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToastNotification, never>;
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToastNotification, "toast-notification", never, { "type": { "alias": "type"; "required": false; }; "title": { "alias": "title"; "required": false; }; "message": { "alias": "message"; "required": false; }; "duration": { "alias": "duration"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "actionText": { "alias": "actionText"; "required": false; }; "position": { "alias": "position"; "required": false; }; "persistent": { "alias": "persistent"; "required": false; }; "visible": { "alias": "visible"; "required": false; }; }, { "closed": "closed"; "action": "action"; }, never, never, true, never>;
|
30
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
2
|
+
import { ControlValueAccessor } from '@angular/forms';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export type BagelInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
|
5
|
+
export type BagelInputSize = 'sm' | 'md' | 'lg';
|
6
|
+
export declare class BagelInput implements ControlValueAccessor {
|
7
|
+
label?: string;
|
8
|
+
placeholder?: string;
|
9
|
+
type: BagelInputType;
|
10
|
+
size: BagelInputSize;
|
11
|
+
disabled: boolean;
|
12
|
+
readonly: boolean;
|
13
|
+
required: boolean;
|
14
|
+
clearable: boolean;
|
15
|
+
leftIcon?: string;
|
16
|
+
rightIcon?: string;
|
17
|
+
helperText?: string;
|
18
|
+
error?: string;
|
19
|
+
ariaLabel?: string;
|
20
|
+
ariaDescribedBy?: string;
|
21
|
+
autocomplete?: string;
|
22
|
+
maxLength?: number;
|
23
|
+
minLength?: number;
|
24
|
+
min?: number;
|
25
|
+
max?: number;
|
26
|
+
step?: number;
|
27
|
+
showCharCount: boolean;
|
28
|
+
inputId: string;
|
29
|
+
valueChange: EventEmitter<string>;
|
30
|
+
inputFocus: EventEmitter<void>;
|
31
|
+
inputBlur: EventEmitter<void>;
|
32
|
+
enterPressed: EventEmitter<void>;
|
33
|
+
value: string;
|
34
|
+
private onChange;
|
35
|
+
private onTouched;
|
36
|
+
writeValue(value: string): void;
|
37
|
+
registerOnChange(fn: (value: string) => void): void;
|
38
|
+
registerOnTouched(fn: () => void): void;
|
39
|
+
setDisabledState(isDisabled: boolean): void;
|
40
|
+
onInput(event: Event): void;
|
41
|
+
onBlur(): void;
|
42
|
+
onFocus(): void;
|
43
|
+
onEnter(): void;
|
44
|
+
clearValue(): void;
|
45
|
+
get labelClasses(): string;
|
46
|
+
get containerClasses(): string;
|
47
|
+
get inputClasses(): string;
|
48
|
+
get helperClasses(): string;
|
49
|
+
get errorClasses(): string;
|
50
|
+
get charCountClasses(): string;
|
51
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BagelInput, never>;
|
52
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BagelInput, "bagel-input", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "type": { "alias": "type"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "error": { "alias": "error"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "showCharCount": { "alias": "showCharCount"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; }, { "valueChange": "valueChange"; "inputFocus": "inputFocus"; "inputBlur": "inputBlur"; "enterPressed": "enterPressed"; }, never, never, true, never>;
|
53
|
+
}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "bakery-ui",
|
3
|
-
"version": "0.0
|
3
|
+
"version": "0.1.0",
|
4
4
|
"description": "🥖 A delicious Angular UI component library with bakery-inspired theming and Storybook integration",
|
5
5
|
"keywords": [
|
6
6
|
"angular",
|
@@ -11,7 +11,9 @@
|
|
11
11
|
"theme",
|
12
12
|
"storybook",
|
13
13
|
"typescript",
|
14
|
-
"responsive"
|
14
|
+
"responsive",
|
15
|
+
"material-design",
|
16
|
+
"tailwind"
|
15
17
|
],
|
16
18
|
"author": "Vivek Raj",
|
17
19
|
"license": "MIT",
|
@@ -24,11 +26,16 @@
|
|
24
26
|
"url": "https://github.com/vivekraj-kr/bakery-ui/issues"
|
25
27
|
},
|
26
28
|
"peerDependencies": {
|
27
|
-
"@angular/
|
28
|
-
"@angular/
|
29
|
+
"@angular/animations": "^19.2.0",
|
30
|
+
"@angular/cdk": "^19.2.0",
|
31
|
+
"@angular/common": "^19.2.0",
|
32
|
+
"@angular/core": "^19.2.0",
|
33
|
+
"@angular/forms": "^19.2.0",
|
34
|
+
"@angular/material": "^19.2.0"
|
29
35
|
},
|
30
36
|
"dependencies": {
|
31
|
-
"
|
37
|
+
"reflect-metadata": "^0.2.2",
|
38
|
+
"tslib": "^2.8.1"
|
32
39
|
},
|
33
40
|
"sideEffects": false,
|
34
41
|
"engines": {
|
package/public-api.d.ts
ADDED
package/bakery-ui-0.0.1.tgz
DELETED
Binary file
|