import { BlockDefinition, ResolvableString } from '@ministryofjustice/hmpps-forge/core/components'
import { nunjucksComponent } from '../../utils/nunjucksComponent'
/**
* Available badge colour classes.
* Use these to style the badge appearance.
*/
export type MOJBadgeColour =
| 'moj-badge--purple'
| 'moj-badge--light-purple'
| 'moj-badge--bright-purple'
| 'moj-badge--pink'
| 'moj-badge--light-pink'
| 'moj-badge--red'
| 'moj-badge--orange'
| 'moj-badge--brown'
| 'moj-badge--yellow'
| 'moj-badge--light-green'
| 'moj-badge--green'
| 'moj-badge--turquoise'
| 'moj-badge--light-blue'
| 'moj-badge--blue'
| 'moj-badge--black'
| 'moj-badge--dark-grey'
| 'moj-badge--mid-grey'
| 'moj-badge--light-grey'
| 'moj-badge--white'
/**
* MOJ Badge component.
* Displays small status or category labels.
* It can be styled with different colours to indicate different states.
*
* @see https://design-patterns.service.justice.gov.uk/components/badge
* @example
* ```typescript
* MOJBadge({
* text: 'Urgent',
* classes: 'moj-badge--red',
* })
* ```
*
* @example
* ```typescript
* MOJBadge({
* text: 'Complete',
* classes: 'moj-badge--green',
* label: 'Status: Complete',
* })
* ```
*/
export interface MOJBadge extends BlockDefinition {
/**
* Plain text content for the badge.
* Use either text or html, not both.
*
* @example 'Complete'
* @example 'In progress'
*/
text?: ResolvableString
/**
* HTML content for the badge.
* Use either text or html, not both.
*
* @example 'Urgent'
*/
html?: ResolvableString
/**
* CSS classes for the badge container.
* Use moj-badge--{colour} classes to style the badge.
*
* @example 'moj-badge--blue'
* @example 'moj-badge--red moj-badge--large'
*/
classes?: MOJBadgeColour | ResolvableString
/**
* Accessible label for the badge.
* Sets the aria-label attribute for screen readers.
*
* @example 'Status: Complete'
*/
label?: ResolvableString
/**
* Additional HTML attributes for the badge container.
*
* @example { 'data-status': 'complete' }
*/
attributes?: Record
}
/**
* MOJ Badge component.
* Displays small status or category labels.
* It can be styled with different colours to indicate different states.
*
* @see https://design-patterns.service.justice.gov.uk/components/badge
* @example
* ```typescript
* MOJBadge({
* text: 'Urgent',
* classes: 'moj-badge--red',
* })
* ```
*
* @example
* ```typescript
* MOJBadge({
* text: 'Complete',
* classes: 'moj-badge--green',
* label: 'Status: Complete',
* })
* ```
*/
export const MOJBadge = nunjucksComponent('mojBadge', {
render: (props, nunjucksEnv) => {
const params = {
text: props.text,
html: props.html,
classes: props.classes,
label: props.label,
attributes: props.attributes,
}
return nunjucksEnv.render('moj/components/badge/template.njk', { params })
},
})