mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-30 18:17:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * Copyright (c) HashiCorp, Inc.
 | |
|  * SPDX-License-Identifier: MPL-2.0
 | |
|  */
 | |
| 
 | |
| import Component from '@glimmer/component';
 | |
| import { assert } from '@ember/debug';
 | |
| import flightIconMap from '@hashicorp/flight-icons/catalog.json';
 | |
| const flightIconNames = flightIconMap.assets.mapBy('iconName').uniq();
 | |
| 
 | |
| /**
 | |
|  * @module Icon
 | |
|  * `Icon` components are glyphs used to indicate important information.
 | |
|  *
 | |
|  * Flight icon documentation at https://flight-hashicorp.vercel.app/
 | |
|  *
 | |
|  * @example
 | |
|  * ```js
 | |
|  * <Icon @name="cancel-square-outline" @size="24" />
 | |
|  * ```
 | |
|  * @param {string} name=null - The name of the SVG to render inline.
 | |
|  * @param {string} [size=16] - size for flight icon, can be 16 or 24
 | |
|  *
 | |
|  */
 | |
| 
 | |
| export default class Icon extends Component {
 | |
|   constructor(owner, args) {
 | |
|     super(owner, args);
 | |
|     assert('Icon component size argument must be either "16" or "24"', ['16', '24'].includes(this.size));
 | |
|   }
 | |
| 
 | |
|   get size() {
 | |
|     return this.args.size || '16';
 | |
|   }
 | |
| 
 | |
|   get name() {
 | |
|     return this.args.name || null;
 | |
|   }
 | |
| 
 | |
|   // favor flight icon set and fall back to structure icons if not found
 | |
|   get isFlightIcon() {
 | |
|     return this.name ? flightIconNames.includes(this.name) : false;
 | |
|   }
 | |
| 
 | |
|   get hsIconClass() {
 | |
|     return this.size === '24' ? 'hs-icon-xl' : 'hs-icon-l';
 | |
|   }
 | |
| }
 | 
