@cdevhub/ngx-tw 0.2.0 → 0.3.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/README.md +264 -49
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
- package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
- package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
- package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
- package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
- package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
- package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-button.mjs +35 -22
- package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
- package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs +416 -216
- package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
- package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs +152 -81
- package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
- package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs +42 -29
- package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
- package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs +205 -110
- package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +141 -74
- package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
- package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +395 -149
- package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
- package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
- package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
- package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
- package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
- package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
- package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
- package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
- package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
- package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
- package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
- package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
- package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs +142 -72
- package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
- package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
- package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
- package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
- package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-select.mjs +227 -122
- package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
- package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
- package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
- package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
- package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-sort.mjs +47 -25
- package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
- package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
- package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
- package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
- package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
- package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
- package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
- package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs +102 -52
- package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
- package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs +16 -8
- package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
- package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
- package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
- package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-toast.mjs +100 -55
- package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
- package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
- package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
- package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
- package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
- package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
- package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
- package/package.json +45 -17
- package/theme/_dark.css +16 -12
- package/theme/_semantic.css +3 -2
- package/theme/index.css +10 -2
- package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
- package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
- package/types/cdevhub-ngx-tw-code-block.d.ts +8 -7
- package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
- package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
- package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
- package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
- package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
- package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
- package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
- package/types/cdevhub-ngx-tw-select.d.ts +1 -1
- package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
- package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
- package/types/cdevhub-ngx-tw-table.d.ts +30 -1
- package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
- package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
- package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
- package/types/cdevhub-ngx-tw-toast.d.ts +1 -1
- package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
- package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
- package/types/cdevhub-ngx-tw.d.ts +7 -0
|
@@ -87,15 +87,19 @@ const badgeVariants = tv({
|
|
|
87
87
|
},
|
|
88
88
|
compoundVariants: [
|
|
89
89
|
// ===== Primary =====
|
|
90
|
-
|
|
90
|
+
// Solid variants consume the semantic `${color}-solid` slot pair (AA-tuned
|
|
91
|
+
// in theme/_semantic.css) instead of a raw `${color}-600` shade — sky-600 /
|
|
92
|
+
// green-600 on white fail AA (3.85:1 / 3.3:1); the `-solid` slots map to
|
|
93
|
+
// `-700` where needed so every color meets the body-text threshold.
|
|
94
|
+
{ variant: 'solid', color: 'primary', class: { root: 'bg-primary-solid text-primary-solid-fg' } },
|
|
91
95
|
{ variant: 'outline', color: 'primary', class: { root: 'border-primary-300 text-primary-700' } },
|
|
92
96
|
{ variant: 'soft', color: 'primary', class: { root: 'bg-primary-50 text-primary-800' } },
|
|
93
97
|
// ===== Secondary =====
|
|
94
|
-
{ variant: 'solid', color: 'secondary', class: { root: 'bg-secondary-
|
|
98
|
+
{ variant: 'solid', color: 'secondary', class: { root: 'bg-secondary-solid text-secondary-solid-fg' } },
|
|
95
99
|
{ variant: 'outline', color: 'secondary', class: { root: 'border-secondary-300 text-secondary-700' } },
|
|
96
100
|
{ variant: 'soft', color: 'secondary', class: { root: 'bg-secondary-50 text-secondary-800' } },
|
|
97
101
|
// ===== Accent =====
|
|
98
|
-
{ variant: 'solid', color: 'accent', class: { root: 'bg-accent-
|
|
102
|
+
{ variant: 'solid', color: 'accent', class: { root: 'bg-accent-solid text-accent-solid-fg' } },
|
|
99
103
|
{ variant: 'outline', color: 'accent', class: { root: 'border-accent-300 text-accent-700' } },
|
|
100
104
|
{ variant: 'soft', color: 'accent', class: { root: 'bg-accent-50 text-accent-800' } },
|
|
101
105
|
// ===== Neutral ===== (surface/fg tokens auto-adapt to dark mode)
|
|
@@ -103,19 +107,19 @@ const badgeVariants = tv({
|
|
|
103
107
|
{ variant: 'outline', color: 'neutral', class: { root: 'border-border text-fg' } },
|
|
104
108
|
{ variant: 'soft', color: 'neutral', class: { root: 'bg-surface-muted text-fg-muted' } },
|
|
105
109
|
// ===== Info =====
|
|
106
|
-
{ variant: 'solid', color: 'info', class: { root: 'bg-info-
|
|
110
|
+
{ variant: 'solid', color: 'info', class: { root: 'bg-info-solid text-info-solid-fg' } },
|
|
107
111
|
{ variant: 'outline', color: 'info', class: { root: 'border-info-300 text-info-700' } },
|
|
108
112
|
{ variant: 'soft', color: 'info', class: { root: 'bg-info-50 text-info-800' } },
|
|
109
113
|
// ===== Success =====
|
|
110
|
-
{ variant: 'solid', color: 'success', class: { root: 'bg-success-
|
|
114
|
+
{ variant: 'solid', color: 'success', class: { root: 'bg-success-solid text-success-solid-fg' } },
|
|
111
115
|
{ variant: 'outline', color: 'success', class: { root: 'border-success-300 text-success-700' } },
|
|
112
116
|
{ variant: 'soft', color: 'success', class: { root: 'bg-success-50 text-success-800' } },
|
|
113
117
|
// ===== Warning =====
|
|
114
|
-
{ variant: 'solid', color: 'warning', class: { root: 'bg-warning-
|
|
118
|
+
{ variant: 'solid', color: 'warning', class: { root: 'bg-warning-solid text-warning-solid-fg' } },
|
|
115
119
|
{ variant: 'outline', color: 'warning', class: { root: 'border-warning-300 text-warning-700' } },
|
|
116
120
|
{ variant: 'soft', color: 'warning', class: { root: 'bg-warning-50 text-warning-800' } },
|
|
117
121
|
// ===== Error =====
|
|
118
|
-
{ variant: 'solid', color: 'error', class: { root: 'bg-error-
|
|
122
|
+
{ variant: 'solid', color: 'error', class: { root: 'bg-error-solid text-error-solid-fg' } },
|
|
119
123
|
{ variant: 'outline', color: 'error', class: { root: 'border-error-300 text-error-700' } },
|
|
120
124
|
{ variant: 'soft', color: 'error', class: { root: 'bg-error-50 text-error-800' } },
|
|
121
125
|
// ===== Reduced left padding when avatar is present =====
|
|
@@ -150,47 +154,65 @@ const badgeVariants = tv({
|
|
|
150
154
|
*/
|
|
151
155
|
class BadgeComponent {
|
|
152
156
|
/** Sets the semantic color palette. Defaults to `'neutral'`. */
|
|
153
|
-
color = input('neutral',
|
|
157
|
+
color = input('neutral', /* @ts-ignore */
|
|
158
|
+
...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
154
159
|
/** Controls the visual style. Defaults to `'soft'`. */
|
|
155
|
-
variant = input('soft',
|
|
160
|
+
variant = input('soft', /* @ts-ignore */
|
|
161
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
156
162
|
/** Controls badge size (padding, font, icon size). Defaults to `'md'`. */
|
|
157
|
-
size = input('md',
|
|
163
|
+
size = input('md', /* @ts-ignore */
|
|
164
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
158
165
|
/** When true, uses fully rounded corners instead of default `rounded-md`. Defaults to `false`. */
|
|
159
|
-
pill = input(false,
|
|
166
|
+
pill = input(false, /* @ts-ignore */
|
|
167
|
+
...(ngDevMode ? [{ debugName: "pill" }] : /* istanbul ignore next */ []));
|
|
160
168
|
/** When true, renders a dismiss button inside the badge. Defaults to `false`. */
|
|
161
|
-
dismissible = input(false,
|
|
169
|
+
dismissible = input(false, /* @ts-ignore */
|
|
170
|
+
...(ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []));
|
|
162
171
|
/**
|
|
163
172
|
* When true, exposes the badge as an ARIA live region (`role="status"`)
|
|
164
173
|
* so assistive technology announces content changes. Defaults to `false`
|
|
165
174
|
* because most badges are decorative tags or labels — opt in only when
|
|
166
175
|
* the badge represents a value that actually updates in place.
|
|
167
176
|
*/
|
|
168
|
-
live = input(false,
|
|
177
|
+
live = input(false, /* @ts-ignore */
|
|
178
|
+
...(ngDevMode ? [{ debugName: "live" }] : /* istanbul ignore next */ []));
|
|
169
179
|
/** Accessible label for the dismiss button. Override for localization. Defaults to `'Dismiss'`. */
|
|
170
|
-
dismissLabel = input('Dismiss',
|
|
180
|
+
dismissLabel = input('Dismiss', /* @ts-ignore */
|
|
181
|
+
...(ngDevMode ? [{ debugName: "dismissLabel" }] : /* istanbul ignore next */ []));
|
|
171
182
|
/** Fires when the dismiss button is clicked. */
|
|
172
183
|
dismissed = output();
|
|
173
184
|
/** @internal */
|
|
174
|
-
avatarChild = contentChild(AvatarComponent,
|
|
185
|
+
avatarChild = contentChild(AvatarComponent, /* @ts-ignore */
|
|
186
|
+
...(ngDevMode ? [{ debugName: "avatarChild" }] : /* istanbul ignore next */ []));
|
|
175
187
|
/** @internal */
|
|
176
|
-
iconChild = contentChild(IconComponent,
|
|
177
|
-
|
|
178
|
-
|
|
188
|
+
iconChild = contentChild(IconComponent, /* @ts-ignore */
|
|
189
|
+
...(ngDevMode ? [{ debugName: "iconChild" }] : /* istanbul ignore next */ []));
|
|
190
|
+
hasLeadingAvatar = computed(() => !!this.avatarChild(), /* @ts-ignore */
|
|
191
|
+
...(ngDevMode ? [{ debugName: "hasLeadingAvatar" }] : /* istanbul ignore next */ []));
|
|
192
|
+
hasLeadingIcon = computed(() => !!this.iconChild(), /* @ts-ignore */
|
|
193
|
+
...(ngDevMode ? [{ debugName: "hasLeadingIcon" }] : /* istanbul ignore next */ []));
|
|
179
194
|
variantResult = computed(() => badgeVariants({
|
|
180
195
|
variant: this.variant(),
|
|
181
196
|
color: this.color(),
|
|
182
197
|
size: this.size(),
|
|
183
198
|
pill: this.pill(),
|
|
184
199
|
hasAvatar: this.hasLeadingAvatar(),
|
|
185
|
-
}),
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
200
|
+
}), /* @ts-ignore */
|
|
201
|
+
...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
|
|
202
|
+
rootClasses = computed(() => this.variantResult().root(), /* @ts-ignore */
|
|
203
|
+
...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
|
|
204
|
+
contentClasses = computed(() => this.variantResult().content(), /* @ts-ignore */
|
|
205
|
+
...(ngDevMode ? [{ debugName: "contentClasses" }] : /* istanbul ignore next */ []));
|
|
206
|
+
dismissClasses = computed(() => this.variantResult().dismiss(), /* @ts-ignore */
|
|
207
|
+
...(ngDevMode ? [{ debugName: "dismissClasses" }] : /* istanbul ignore next */ []));
|
|
208
|
+
dismissIconClasses = computed(() => this.variantResult().dismissIcon(), /* @ts-ignore */
|
|
209
|
+
...(ngDevMode ? [{ debugName: "dismissIconClasses" }] : /* istanbul ignore next */ []));
|
|
210
|
+
leadingAvatarClasses = computed(() => this.variantResult().leadingAvatar(), /* @ts-ignore */
|
|
211
|
+
...(ngDevMode ? [{ debugName: "leadingAvatarClasses" }] : /* istanbul ignore next */ []));
|
|
212
|
+
leadingIconClasses = computed(() => this.variantResult().leadingIcon(), /* @ts-ignore */
|
|
213
|
+
...(ngDevMode ? [{ debugName: "leadingIconClasses" }] : /* istanbul ignore next */ []));
|
|
214
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
215
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: BadgeComponent, isStandalone: true, selector: "[twBadge]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, live: { classPropertyName: "live", publicName: "live", isSignal: true, isRequired: false, transformFunction: null }, dismissLabel: { classPropertyName: "dismissLabel", publicName: "dismissLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissed: "dismissed" }, host: { properties: { "class": "rootClasses()", "attr.role": "live() ? \"status\" : null" } }, queries: [{ propertyName: "avatarChild", first: true, predicate: AvatarComponent, descendants: true, isSignal: true }, { propertyName: "iconChild", first: true, predicate: IconComponent, descendants: true, isSignal: true }], exportAs: ["twBadge"], ngImport: i0, template: `
|
|
194
216
|
@if (hasLeadingAvatar()) {
|
|
195
217
|
<span [class]="leadingAvatarClasses()"><ng-content select="tw-avatar" /></span>
|
|
196
218
|
}
|
|
@@ -212,7 +234,7 @@ class BadgeComponent {
|
|
|
212
234
|
}
|
|
213
235
|
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
214
236
|
}
|
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
237
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: BadgeComponent, decorators: [{
|
|
216
238
|
type: Component,
|
|
217
239
|
args: [{
|
|
218
240
|
selector: '[twBadge]',
|
|
@@ -298,21 +320,25 @@ const badgeDotVariants = tv({
|
|
|
298
320
|
*/
|
|
299
321
|
class BadgeDotDirective {
|
|
300
322
|
/** Sets the semantic color palette. Defaults to `'neutral'`. */
|
|
301
|
-
color = input('neutral',
|
|
323
|
+
color = input('neutral', /* @ts-ignore */
|
|
324
|
+
...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
302
325
|
/** Controls dot dimensions. Defaults to `'md'`. */
|
|
303
|
-
size = input('md',
|
|
326
|
+
size = input('md', /* @ts-ignore */
|
|
327
|
+
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
304
328
|
/**
|
|
305
329
|
* When true, exposes the dot as an ARIA live region (`role="status"`) so
|
|
306
330
|
* assistive technology announces state changes (e.g. an unread indicator
|
|
307
331
|
* appearing). Defaults to `false` because most dots are decorative pips
|
|
308
332
|
* paired with a visible label.
|
|
309
333
|
*/
|
|
310
|
-
live = input(false,
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
334
|
+
live = input(false, /* @ts-ignore */
|
|
335
|
+
...(ngDevMode ? [{ debugName: "live" }] : /* istanbul ignore next */ []));
|
|
336
|
+
classes = computed(() => badgeDotVariants({ color: this.color(), size: this.size() }), /* @ts-ignore */
|
|
337
|
+
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
338
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: BadgeDotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
339
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: BadgeDotDirective, isStandalone: true, selector: "[twBadgeDot]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, live: { classPropertyName: "live", publicName: "live", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "live() ? \"status\" : null" } }, exportAs: ["twBadgeDot"], ngImport: i0 });
|
|
314
340
|
}
|
|
315
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: BadgeDotDirective, decorators: [{
|
|
316
342
|
type: Directive,
|
|
317
343
|
args: [{
|
|
318
344
|
selector: '[twBadgeDot]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cdevhub-ngx-tw-badge.mjs","sources":["../../../projects/ngx-tw/badge/badge.ts","../../../projects/ngx-tw/badge/badge-dot.ts","../../../projects/ngx-tw/badge/cdevhub-ngx-tw-badge.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n output,\n} from '@angular/core';\nimport { tv } from 'tailwind-variants';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\nimport { AvatarComponent } from '@cdevhub/ngx-tw/avatar';\nimport { IconComponent } from '@cdevhub/ngx-tw/icon';\n\n/** Visual style of the badge. */\nexport type BadgeVariant = 'solid' | 'outline' | 'soft';\n\nconst badgeVariants = tv({\n slots: {\n root: 'inline-flex items-center font-medium w-fit',\n content: 'inline-flex items-center',\n dismiss:\n 'inline-flex items-center justify-center rounded-md cursor-pointer hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n dismissIcon: 'shrink-0',\n leadingAvatar: 'inline-flex shrink-0 rounded-full overflow-hidden [&>tw-avatar]:size-full',\n leadingIcon: 'inline-flex shrink-0 [&>tw-icon]:size-full',\n },\n variants: {\n variant: {\n solid: { root: '' },\n outline: { root: 'border' },\n soft: { root: '' },\n },\n color: {\n primary: {},\n secondary: {},\n accent: {},\n neutral: {},\n info: {},\n success: {},\n warning: {},\n error: {},\n },\n size: {\n xs: {\n root: 'px-1.5 py-0.5 text-xs gap-1',\n // size-6 (24px) meets WCAG 2.5.8 target-size; negative margins keep\n // the visible badge box centred without inflating its layout height.\n dismiss: 'size-6 -my-1 -mr-1',\n dismissIcon: 'size-3',\n leadingAvatar: 'size-4',\n leadingIcon: 'size-3',\n },\n sm: {\n root: 'px-2 py-0.5 text-xs gap-1',\n dismiss: 'size-6 -my-1 -mr-1',\n dismissIcon: 'size-3',\n leadingAvatar: 'size-4',\n leadingIcon: 'size-3',\n },\n md: {\n root: 'px-2 py-1 text-xs gap-1.5',\n // size-7 (28px) keeps the dismiss target comfortable at md density;\n // negative margins absorb the overflow so the badge height is unchanged.\n dismiss: 'size-7 -my-1.5 -mr-1.5',\n // size-3.5 (14px) half-step: sits between the size-3 used at xs/sm and\n // the size-4 used at lg/xl, balancing the X glyph against text-xs at\n // md density without dominating the dismiss button.\n dismissIcon: 'size-3.5',\n leadingAvatar: 'size-5',\n // size-3.5 (14px) half-step: the md badge sits between xs/sm (size-3\n // leading icon, text-xs) and lg/xl (size-4, text-sm); 14px is the\n // visual mid-point that lines up with text-xs at this density.\n leadingIcon: 'size-3.5',\n },\n lg: {\n root: 'px-3 py-1.5 text-sm gap-1.5',\n dismiss: 'size-8 -my-1.5 -mr-1.5',\n dismissIcon: 'size-4',\n leadingAvatar: 'size-5',\n leadingIcon: 'size-4',\n },\n xl: {\n root: 'px-3 py-1.5 text-sm gap-1.5',\n dismiss: 'size-8 -my-1.5 -mr-1.5',\n dismissIcon: 'size-4',\n leadingAvatar: 'size-6',\n leadingIcon: 'size-4',\n },\n },\n pill: {\n true: { root: 'rounded-full' },\n false: { root: 'rounded-md' },\n },\n hasAvatar: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n // ===== Primary =====\n { variant: 'solid', color: 'primary', class: { root: 'bg-primary-600 text-on-primary' } },\n { variant: 'outline', color: 'primary', class: { root: 'border-primary-300 text-primary-700' } },\n { variant: 'soft', color: 'primary', class: { root: 'bg-primary-50 text-primary-800' } },\n\n // ===== Secondary =====\n { variant: 'solid', color: 'secondary', class: { root: 'bg-secondary-600 text-on-secondary' } },\n { variant: 'outline', color: 'secondary', class: { root: 'border-secondary-300 text-secondary-700' } },\n { variant: 'soft', color: 'secondary', class: { root: 'bg-secondary-50 text-secondary-800' } },\n\n // ===== Accent =====\n { variant: 'solid', color: 'accent', class: { root: 'bg-accent-600 text-on-accent' } },\n { variant: 'outline', color: 'accent', class: { root: 'border-accent-300 text-accent-700' } },\n { variant: 'soft', color: 'accent', class: { root: 'bg-accent-50 text-accent-800' } },\n\n // ===== Neutral ===== (surface/fg tokens auto-adapt to dark mode)\n { variant: 'solid', color: 'neutral', class: { root: 'bg-surface-muted text-fg' } },\n { variant: 'outline', color: 'neutral', class: { root: 'border-border text-fg' } },\n { variant: 'soft', color: 'neutral', class: { root: 'bg-surface-muted text-fg-muted' } },\n\n // ===== Info =====\n { variant: 'solid', color: 'info', class: { root: 'bg-info-600 text-on-info' } },\n { variant: 'outline', color: 'info', class: { root: 'border-info-300 text-info-700' } },\n { variant: 'soft', color: 'info', class: { root: 'bg-info-50 text-info-800' } },\n\n // ===== Success =====\n { variant: 'solid', color: 'success', class: { root: 'bg-success-600 text-on-success' } },\n { variant: 'outline', color: 'success', class: { root: 'border-success-300 text-success-700' } },\n { variant: 'soft', color: 'success', class: { root: 'bg-success-50 text-success-800' } },\n\n // ===== Warning =====\n { variant: 'solid', color: 'warning', class: { root: 'bg-warning-500 text-on-warning' } },\n { variant: 'outline', color: 'warning', class: { root: 'border-warning-300 text-warning-700' } },\n { variant: 'soft', color: 'warning', class: { root: 'bg-warning-50 text-warning-800' } },\n\n // ===== Error =====\n { variant: 'solid', color: 'error', class: { root: 'bg-error-600 text-on-error' } },\n { variant: 'outline', color: 'error', class: { root: 'border-error-300 text-error-700' } },\n { variant: 'soft', color: 'error', class: { root: 'bg-error-50 text-error-800' } },\n\n // ===== Reduced left padding when avatar is present =====\n { hasAvatar: true, size: 'xs', class: { root: 'pl-0.5' } },\n { hasAvatar: true, size: 'sm', class: { root: 'pl-1' } },\n { hasAvatar: true, size: 'md', class: { root: 'pl-1' } },\n { hasAvatar: true, size: 'lg', class: { root: 'pl-1.5' } },\n { hasAvatar: true, size: 'xl', class: { root: 'pl-1.5' } },\n ],\n defaultVariants: {\n variant: 'soft',\n color: 'neutral',\n size: 'md',\n pill: false,\n hasAvatar: false,\n },\n}, {\n twMerge: true,\n});\n\n/**\n * Compact status label, tag, or count attached to any host element.\n *\n * Uses an attribute selector (`[twBadge]`) rather than the library's canonical\n * element selector so consumers can apply the badge styling to any inline\n * element — `<span>`, `<a>`, `<div>` — without an extra wrapper. The trade-off\n * is intentional: badges most often live inside an existing text flow or list\n * item where wrapping in a `<tw-badge>` element would add structural noise.\n *\n * For dot-only presence indicators (no text, no padding), use the sibling\n * `[twBadgeDot]` directive — its rendering shape (no children, no dismiss,\n * no leading slot) is structurally distinct from the labelled badge.\n */\n@Component({\n selector: '[twBadge]',\n exportAs: 'twBadge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'rootClasses()',\n '[attr.role]': 'live() ? \"status\" : null',\n },\n template: `\n @if (hasLeadingAvatar()) {\n <span [class]=\"leadingAvatarClasses()\"><ng-content select=\"tw-avatar\" /></span>\n }\n @if (hasLeadingIcon() && !hasLeadingAvatar()) {\n <span [class]=\"leadingIconClasses()\"><ng-content select=\"tw-icon\" /></span>\n }\n <span [class]=\"contentClasses()\"><ng-content /></span>\n @if (dismissible()) {\n <button\n type=\"button\"\n [attr.aria-label]=\"dismissLabel()\"\n [class]=\"dismissClasses()\"\n (click)=\"dismissed.emit()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" [class]=\"dismissIconClasses()\">\n <path d=\"M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z\"/>\n </svg>\n </button>\n }\n `,\n})\nexport class BadgeComponent {\n /** Sets the semantic color palette. Defaults to `'neutral'`. */\n readonly color = input<TwColor>('neutral');\n\n /** Controls the visual style. Defaults to `'soft'`. */\n readonly variant = input<BadgeVariant>('soft');\n\n /** Controls badge size (padding, font, icon size). Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /** When true, uses fully rounded corners instead of default `rounded-md`. Defaults to `false`. */\n readonly pill = input(false);\n\n /** When true, renders a dismiss button inside the badge. Defaults to `false`. */\n readonly dismissible = input(false);\n\n /**\n * When true, exposes the badge as an ARIA live region (`role=\"status\"`)\n * so assistive technology announces content changes. Defaults to `false`\n * because most badges are decorative tags or labels — opt in only when\n * the badge represents a value that actually updates in place.\n */\n readonly live = input(false);\n\n /** Accessible label for the dismiss button. Override for localization. Defaults to `'Dismiss'`. */\n readonly dismissLabel = input<string>('Dismiss');\n\n /** Fires when the dismiss button is clicked. */\n readonly dismissed = output<void>();\n\n /** @internal */\n readonly avatarChild = contentChild(AvatarComponent);\n\n /** @internal */\n readonly iconChild = contentChild(IconComponent);\n\n readonly hasLeadingAvatar = computed(() => !!this.avatarChild());\n readonly hasLeadingIcon = computed(() => !!this.iconChild());\n\n private readonly variantResult = computed(() =>\n badgeVariants({\n variant: this.variant(),\n color: this.color(),\n size: this.size(),\n pill: this.pill(),\n hasAvatar: this.hasLeadingAvatar(),\n }),\n );\n\n readonly rootClasses = computed(() => this.variantResult().root());\n readonly contentClasses = computed(() => this.variantResult().content());\n readonly dismissClasses = computed(() => this.variantResult().dismiss());\n readonly dismissIconClasses = computed(() => this.variantResult().dismissIcon());\n readonly leadingAvatarClasses = computed(() => this.variantResult().leadingAvatar());\n readonly leadingIconClasses = computed(() => this.variantResult().leadingIcon());\n}\n","import {\n Directive,\n computed,\n input,\n} from '@angular/core';\nimport { tv } from 'tailwind-variants';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\n\n/**\n * Dot indicator styling and color tokens for `[twBadgeDot]`. Mirrors the\n * `dot` slot rules previously embedded in the badge component but lives in\n * its own variant table because the dot has no text content, no padding,\n * and no border / variant axis.\n */\nconst badgeDotVariants = tv({\n base: 'inline-block rounded-full shrink-0',\n variants: {\n color: {\n primary: 'bg-primary-500',\n secondary: 'bg-secondary-500',\n accent: 'bg-accent-500',\n neutral: 'bg-fg-muted',\n info: 'bg-info-500',\n success: 'bg-success-500',\n warning: 'bg-warning-500',\n error: 'bg-error-500',\n },\n size: {\n xs: 'size-1.5',\n sm: 'size-1.5',\n md: 'size-2',\n lg: 'size-2.5',\n xl: 'size-2.5',\n },\n },\n defaultVariants: {\n color: 'neutral',\n size: 'md',\n },\n}, {\n twMerge: true,\n});\n\n/**\n * Compact colored dot used as a presence indicator, unread marker, or status\n * pip. Applies as an attribute selector so the host element controls the\n * structure — wrap in a `<span>`, `<div>`, list item, or any inline element.\n *\n * The dot has no text content; pair it with a visible label adjacent in the\n * DOM, or set `aria-label` on the host so assistive technology can announce\n * the state. Opt in to `live` to expose the dot as an ARIA live region when\n * the indicator state actually changes (e.g. \"new messages received\").\n *\n * @example\n * ```html\n * <span twBadgeDot color=\"success\" size=\"sm\"></span>\n * <span twBadgeDot color=\"error\" [live]=\"true\" aria-label=\"3 unread\"></span>\n * ```\n */\n@Directive({\n selector: '[twBadgeDot]',\n exportAs: 'twBadgeDot',\n host: {\n '[class]': 'classes()',\n '[attr.role]': 'live() ? \"status\" : null',\n },\n})\nexport class BadgeDotDirective {\n /** Sets the semantic color palette. Defaults to `'neutral'`. */\n readonly color = input<TwColor>('neutral');\n\n /** Controls dot dimensions. Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /**\n * When true, exposes the dot as an ARIA live region (`role=\"status\"`) so\n * assistive technology announces state changes (e.g. an unread indicator\n * appearing). Defaults to `false` because most dots are decorative pips\n * paired with a visible label.\n */\n readonly live = input(false);\n\n readonly classes = computed(() =>\n badgeDotVariants({ color: this.color(), size: this.size() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cdevhub-ngx-tw-badge.mjs","sources":["../../../projects/ngx-tw/badge/badge.ts","../../../projects/ngx-tw/badge/badge-dot.ts","../../../projects/ngx-tw/badge/cdevhub-ngx-tw-badge.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n input,\n output,\n} from '@angular/core';\nimport { tv } from 'tailwind-variants';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\nimport { AvatarComponent } from '@cdevhub/ngx-tw/avatar';\nimport { IconComponent } from '@cdevhub/ngx-tw/icon';\n\n/** Visual style of the badge. */\nexport type BadgeVariant = 'solid' | 'outline' | 'soft';\n\nconst badgeVariants = tv({\n slots: {\n root: 'inline-flex items-center font-medium w-fit',\n content: 'inline-flex items-center',\n dismiss:\n 'inline-flex items-center justify-center rounded-md cursor-pointer hover:bg-surface-muted transition-colors duration-normal motion-reduce:transition-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-500',\n dismissIcon: 'shrink-0',\n leadingAvatar: 'inline-flex shrink-0 rounded-full overflow-hidden [&>tw-avatar]:size-full',\n leadingIcon: 'inline-flex shrink-0 [&>tw-icon]:size-full',\n },\n variants: {\n variant: {\n solid: { root: '' },\n outline: { root: 'border' },\n soft: { root: '' },\n },\n color: {\n primary: {},\n secondary: {},\n accent: {},\n neutral: {},\n info: {},\n success: {},\n warning: {},\n error: {},\n },\n size: {\n xs: {\n root: 'px-1.5 py-0.5 text-xs gap-1',\n // size-6 (24px) meets WCAG 2.5.8 target-size; negative margins keep\n // the visible badge box centred without inflating its layout height.\n dismiss: 'size-6 -my-1 -mr-1',\n dismissIcon: 'size-3',\n leadingAvatar: 'size-4',\n leadingIcon: 'size-3',\n },\n sm: {\n root: 'px-2 py-0.5 text-xs gap-1',\n dismiss: 'size-6 -my-1 -mr-1',\n dismissIcon: 'size-3',\n leadingAvatar: 'size-4',\n leadingIcon: 'size-3',\n },\n md: {\n root: 'px-2 py-1 text-xs gap-1.5',\n // size-7 (28px) keeps the dismiss target comfortable at md density;\n // negative margins absorb the overflow so the badge height is unchanged.\n dismiss: 'size-7 -my-1.5 -mr-1.5',\n // size-3.5 (14px) half-step: sits between the size-3 used at xs/sm and\n // the size-4 used at lg/xl, balancing the X glyph against text-xs at\n // md density without dominating the dismiss button.\n dismissIcon: 'size-3.5',\n leadingAvatar: 'size-5',\n // size-3.5 (14px) half-step: the md badge sits between xs/sm (size-3\n // leading icon, text-xs) and lg/xl (size-4, text-sm); 14px is the\n // visual mid-point that lines up with text-xs at this density.\n leadingIcon: 'size-3.5',\n },\n lg: {\n root: 'px-3 py-1.5 text-sm gap-1.5',\n dismiss: 'size-8 -my-1.5 -mr-1.5',\n dismissIcon: 'size-4',\n leadingAvatar: 'size-5',\n leadingIcon: 'size-4',\n },\n xl: {\n root: 'px-3 py-1.5 text-sm gap-1.5',\n dismiss: 'size-8 -my-1.5 -mr-1.5',\n dismissIcon: 'size-4',\n leadingAvatar: 'size-6',\n leadingIcon: 'size-4',\n },\n },\n pill: {\n true: { root: 'rounded-full' },\n false: { root: 'rounded-md' },\n },\n hasAvatar: {\n true: {},\n false: {},\n },\n },\n compoundVariants: [\n // ===== Primary =====\n // Solid variants consume the semantic `${color}-solid` slot pair (AA-tuned\n // in theme/_semantic.css) instead of a raw `${color}-600` shade — sky-600 /\n // green-600 on white fail AA (3.85:1 / 3.3:1); the `-solid` slots map to\n // `-700` where needed so every color meets the body-text threshold.\n { variant: 'solid', color: 'primary', class: { root: 'bg-primary-solid text-primary-solid-fg' } },\n { variant: 'outline', color: 'primary', class: { root: 'border-primary-300 text-primary-700' } },\n { variant: 'soft', color: 'primary', class: { root: 'bg-primary-50 text-primary-800' } },\n\n // ===== Secondary =====\n { variant: 'solid', color: 'secondary', class: { root: 'bg-secondary-solid text-secondary-solid-fg' } },\n { variant: 'outline', color: 'secondary', class: { root: 'border-secondary-300 text-secondary-700' } },\n { variant: 'soft', color: 'secondary', class: { root: 'bg-secondary-50 text-secondary-800' } },\n\n // ===== Accent =====\n { variant: 'solid', color: 'accent', class: { root: 'bg-accent-solid text-accent-solid-fg' } },\n { variant: 'outline', color: 'accent', class: { root: 'border-accent-300 text-accent-700' } },\n { variant: 'soft', color: 'accent', class: { root: 'bg-accent-50 text-accent-800' } },\n\n // ===== Neutral ===== (surface/fg tokens auto-adapt to dark mode)\n { variant: 'solid', color: 'neutral', class: { root: 'bg-surface-muted text-fg' } },\n { variant: 'outline', color: 'neutral', class: { root: 'border-border text-fg' } },\n { variant: 'soft', color: 'neutral', class: { root: 'bg-surface-muted text-fg-muted' } },\n\n // ===== Info =====\n { variant: 'solid', color: 'info', class: { root: 'bg-info-solid text-info-solid-fg' } },\n { variant: 'outline', color: 'info', class: { root: 'border-info-300 text-info-700' } },\n { variant: 'soft', color: 'info', class: { root: 'bg-info-50 text-info-800' } },\n\n // ===== Success =====\n { variant: 'solid', color: 'success', class: { root: 'bg-success-solid text-success-solid-fg' } },\n { variant: 'outline', color: 'success', class: { root: 'border-success-300 text-success-700' } },\n { variant: 'soft', color: 'success', class: { root: 'bg-success-50 text-success-800' } },\n\n // ===== Warning =====\n { variant: 'solid', color: 'warning', class: { root: 'bg-warning-solid text-warning-solid-fg' } },\n { variant: 'outline', color: 'warning', class: { root: 'border-warning-300 text-warning-700' } },\n { variant: 'soft', color: 'warning', class: { root: 'bg-warning-50 text-warning-800' } },\n\n // ===== Error =====\n { variant: 'solid', color: 'error', class: { root: 'bg-error-solid text-error-solid-fg' } },\n { variant: 'outline', color: 'error', class: { root: 'border-error-300 text-error-700' } },\n { variant: 'soft', color: 'error', class: { root: 'bg-error-50 text-error-800' } },\n\n // ===== Reduced left padding when avatar is present =====\n { hasAvatar: true, size: 'xs', class: { root: 'pl-0.5' } },\n { hasAvatar: true, size: 'sm', class: { root: 'pl-1' } },\n { hasAvatar: true, size: 'md', class: { root: 'pl-1' } },\n { hasAvatar: true, size: 'lg', class: { root: 'pl-1.5' } },\n { hasAvatar: true, size: 'xl', class: { root: 'pl-1.5' } },\n ],\n defaultVariants: {\n variant: 'soft',\n color: 'neutral',\n size: 'md',\n pill: false,\n hasAvatar: false,\n },\n}, {\n twMerge: true,\n});\n\n/**\n * Compact status label, tag, or count attached to any host element.\n *\n * Uses an attribute selector (`[twBadge]`) rather than the library's canonical\n * element selector so consumers can apply the badge styling to any inline\n * element — `<span>`, `<a>`, `<div>` — without an extra wrapper. The trade-off\n * is intentional: badges most often live inside an existing text flow or list\n * item where wrapping in a `<tw-badge>` element would add structural noise.\n *\n * For dot-only presence indicators (no text, no padding), use the sibling\n * `[twBadgeDot]` directive — its rendering shape (no children, no dismiss,\n * no leading slot) is structurally distinct from the labelled badge.\n */\n@Component({\n selector: '[twBadge]',\n exportAs: 'twBadge',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'rootClasses()',\n '[attr.role]': 'live() ? \"status\" : null',\n },\n template: `\n @if (hasLeadingAvatar()) {\n <span [class]=\"leadingAvatarClasses()\"><ng-content select=\"tw-avatar\" /></span>\n }\n @if (hasLeadingIcon() && !hasLeadingAvatar()) {\n <span [class]=\"leadingIconClasses()\"><ng-content select=\"tw-icon\" /></span>\n }\n <span [class]=\"contentClasses()\"><ng-content /></span>\n @if (dismissible()) {\n <button\n type=\"button\"\n [attr.aria-label]=\"dismissLabel()\"\n [class]=\"dismissClasses()\"\n (click)=\"dismissed.emit()\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" [class]=\"dismissIconClasses()\">\n <path d=\"M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z\"/>\n </svg>\n </button>\n }\n `,\n})\nexport class BadgeComponent {\n /** Sets the semantic color palette. Defaults to `'neutral'`. */\n readonly color = input<TwColor>('neutral');\n\n /** Controls the visual style. Defaults to `'soft'`. */\n readonly variant = input<BadgeVariant>('soft');\n\n /** Controls badge size (padding, font, icon size). Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /** When true, uses fully rounded corners instead of default `rounded-md`. Defaults to `false`. */\n readonly pill = input(false);\n\n /** When true, renders a dismiss button inside the badge. Defaults to `false`. */\n readonly dismissible = input(false);\n\n /**\n * When true, exposes the badge as an ARIA live region (`role=\"status\"`)\n * so assistive technology announces content changes. Defaults to `false`\n * because most badges are decorative tags or labels — opt in only when\n * the badge represents a value that actually updates in place.\n */\n readonly live = input(false);\n\n /** Accessible label for the dismiss button. Override for localization. Defaults to `'Dismiss'`. */\n readonly dismissLabel = input<string>('Dismiss');\n\n /** Fires when the dismiss button is clicked. */\n readonly dismissed = output<void>();\n\n /** @internal */\n readonly avatarChild = contentChild(AvatarComponent);\n\n /** @internal */\n readonly iconChild = contentChild(IconComponent);\n\n readonly hasLeadingAvatar = computed(() => !!this.avatarChild());\n readonly hasLeadingIcon = computed(() => !!this.iconChild());\n\n private readonly variantResult = computed(() =>\n badgeVariants({\n variant: this.variant(),\n color: this.color(),\n size: this.size(),\n pill: this.pill(),\n hasAvatar: this.hasLeadingAvatar(),\n }),\n );\n\n readonly rootClasses = computed(() => this.variantResult().root());\n readonly contentClasses = computed(() => this.variantResult().content());\n readonly dismissClasses = computed(() => this.variantResult().dismiss());\n readonly dismissIconClasses = computed(() => this.variantResult().dismissIcon());\n readonly leadingAvatarClasses = computed(() => this.variantResult().leadingAvatar());\n readonly leadingIconClasses = computed(() => this.variantResult().leadingIcon());\n}\n","import {\n Directive,\n computed,\n input,\n} from '@angular/core';\nimport { tv } from 'tailwind-variants';\nimport type { TwColor, TwSize } from '@cdevhub/ngx-tw/core';\n\n/**\n * Dot indicator styling and color tokens for `[twBadgeDot]`. Mirrors the\n * `dot` slot rules previously embedded in the badge component but lives in\n * its own variant table because the dot has no text content, no padding,\n * and no border / variant axis.\n */\nconst badgeDotVariants = tv({\n base: 'inline-block rounded-full shrink-0',\n variants: {\n color: {\n primary: 'bg-primary-500',\n secondary: 'bg-secondary-500',\n accent: 'bg-accent-500',\n neutral: 'bg-fg-muted',\n info: 'bg-info-500',\n success: 'bg-success-500',\n warning: 'bg-warning-500',\n error: 'bg-error-500',\n },\n size: {\n xs: 'size-1.5',\n sm: 'size-1.5',\n md: 'size-2',\n lg: 'size-2.5',\n xl: 'size-2.5',\n },\n },\n defaultVariants: {\n color: 'neutral',\n size: 'md',\n },\n}, {\n twMerge: true,\n});\n\n/**\n * Compact colored dot used as a presence indicator, unread marker, or status\n * pip. Applies as an attribute selector so the host element controls the\n * structure — wrap in a `<span>`, `<div>`, list item, or any inline element.\n *\n * The dot has no text content; pair it with a visible label adjacent in the\n * DOM, or set `aria-label` on the host so assistive technology can announce\n * the state. Opt in to `live` to expose the dot as an ARIA live region when\n * the indicator state actually changes (e.g. \"new messages received\").\n *\n * @example\n * ```html\n * <span twBadgeDot color=\"success\" size=\"sm\"></span>\n * <span twBadgeDot color=\"error\" [live]=\"true\" aria-label=\"3 unread\"></span>\n * ```\n */\n@Directive({\n selector: '[twBadgeDot]',\n exportAs: 'twBadgeDot',\n host: {\n '[class]': 'classes()',\n '[attr.role]': 'live() ? \"status\" : null',\n },\n})\nexport class BadgeDotDirective {\n /** Sets the semantic color palette. Defaults to `'neutral'`. */\n readonly color = input<TwColor>('neutral');\n\n /** Controls dot dimensions. Defaults to `'md'`. */\n readonly size = input<TwSize>('md');\n\n /**\n * When true, exposes the dot as an ARIA live region (`role=\"status\"`) so\n * assistive technology announces state changes (e.g. an unread indicator\n * appearing). Defaults to `false` because most dots are decorative pips\n * paired with a visible label.\n */\n readonly live = input(false);\n\n readonly classes = computed(() =>\n badgeDotVariants({ color: this.color(), size: this.size() }),\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|