@spartan-ng/cli 0.0.1-alpha.533 → 0.0.1-alpha.534
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/package.json +1 -1
- package/src/generators/base/generator.js +1 -1
- package/src/generators/base/generator.js.map +1 -1
- package/src/generators/base/lib/build-dependency-array.d.ts +3 -3
- package/src/generators/base/lib/build-dependency-array.js +4 -3
- package/src/generators/base/lib/build-dependency-array.js.map +1 -1
- package/src/generators/base/versions.d.ts +4 -5
- package/src/generators/base/versions.js +5 -6
- package/src/generators/base/versions.js.map +1 -1
- package/src/generators/theme/__snapshots__/generator.spec.ts.snap +142 -376
- package/src/generators/theme/generator.js +1 -1
- package/src/generators/theme/generator.js.map +1 -1
- package/src/generators/theme/libs/add-theme-to-application-styles.d.ts +1 -1
- package/src/generators/theme/libs/add-theme-to-application-styles.js +19 -14
- package/src/generators/theme/libs/add-theme-to-application-styles.js.map +1 -1
- package/src/generators/theme/libs/colors.d.ts +5 -10
- package/src/generators/theme/libs/colors.js +322 -195
- package/src/generators/theme/libs/colors.js.map +1 -1
- package/src/generators/ui/libs/ui-autocomplete-helm/files/lib/hlm-autocomplete-item.ts.template +1 -1
- package/src/generators/ui/libs/ui-autocomplete-helm/files/lib/hlm-autocomplete-search-input.ts.template +1 -1
- package/src/generators/ui/libs/ui-autocomplete-helm/files/lib/hlm-autocomplete.ts.template +14 -27
- package/src/generators/ui/libs/ui-button-helm/files/lib/hlm-button.ts.template +2 -2
- package/src/generators/ui/libs/ui-calendar-helm/files/lib/hlm-calendar-multi.ts.template +4 -35
- package/src/generators/ui/libs/ui-calendar-helm/files/lib/hlm-calendar-range.ts.template +4 -35
- package/src/generators/ui/libs/ui-calendar-helm/files/lib/hlm-calendar.ts.template +4 -38
- package/src/generators/ui/libs/ui-checkbox-helm/files/lib/hlm-checkbox.ts.template +1 -1
- package/src/generators/ui/libs/ui-date-picker-helm/files/lib/hlm-date-picker-multi.ts.template +2 -2
- package/src/generators/ui/libs/ui-date-picker-helm/files/lib/hlm-date-picker.ts.template +2 -2
- package/src/generators/ui/libs/ui-date-picker-helm/files/lib/hlm-date-range-picker.ts.template +2 -2
- package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-addon.ts.template +3 -3
- package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-text.ts.template +1 -1
- package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group.ts.template +1 -1
- package/src/generators/ui/libs/ui-input-helm/files/lib/hlm-input.ts.template +1 -1
- package/src/generators/ui/libs/ui-input-otp-helm/files/lib/hlm-input-otp-slot.ts.template +1 -1
- package/src/generators/ui/libs/ui-input-otp-helm/files/lib/hlm-input-otp.ts.template +1 -1
- package/src/generators/ui/libs/ui-kbd-helm/files/lib/hlm-kbd.ts.template +1 -1
- package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-bar.ts.template +1 -1
- package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item.ts.template +1 -1
- package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-numbered-pagination-query-params.ts.template +1 -1
- package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-numbered-pagination.ts.template +1 -1
- package/src/generators/ui/libs/ui-separator-helm/files/lib/hlm-separator.ts.template +1 -1
- package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-group-action.ts.template +1 -1
- package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-group-label.ts.template +1 -1
- package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-menu-action.ts.template +1 -1
- package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-menu-badge.ts.template +1 -1
- package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-menu-button.ts.template +1 -1
- package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-rail.ts.template +1 -1
- package/src/generators/ui/libs/ui-switch-helm/files/lib/hlm-switch.ts.template +1 -1
- package/src/generators/ui/libs/ui-textarea-helm/files/lib/hlm-textarea.ts.template +1 -1
- package/src/generators/ui/libs/ui-toggle-group-helm/files/lib/hlm-toggle-group.ts.template +1 -1
- package/src/generators/ui/supported-ui-libraries.json +31 -31
- package/src/utils/get-tailwind-version.d.ts +2 -0
- package/src/utils/get-tailwind-version.js +18 -0
- package/src/utils/get-tailwind-version.js.map +1 -0
package/src/generators/ui/libs/ui-autocomplete-helm/files/lib/hlm-autocomplete-item.ts.template
CHANGED
|
@@ -26,7 +26,7 @@ export class HlmAutocompleteItem {
|
|
|
26
26
|
/** The styles to apply */
|
|
27
27
|
protected readonly _computedClass = computed(() =>
|
|
28
28
|
hlm(
|
|
29
|
-
'data-[selected]:bg-accent data-[selected=true]:text-accent-foreground [&>ng-icon]:text-muted-foreground
|
|
29
|
+
'data-[selected]:bg-accent data-[selected=true]:text-accent-foreground [&>ng-icon]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-start text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[hidden]:hidden [&>ng-icon]:pointer-events-none [&>ng-icon]:shrink-0 [&>ng-icon]:text-base',
|
|
30
30
|
this.userClass(),
|
|
31
31
|
),
|
|
32
32
|
);
|
|
@@ -6,7 +6,7 @@ import type { ClassValue } from 'clsx';
|
|
|
6
6
|
@Component({
|
|
7
7
|
selector: 'input[hlm-autocomplete-search-input]',
|
|
8
8
|
template: '',
|
|
9
|
-
hostDirectives: [{ directive: BrnAutocompleteSearchInput, inputs: ['value'] }],
|
|
9
|
+
hostDirectives: [{ directive: BrnAutocompleteSearchInput, inputs: ['value'], outputs: ['valueChange'] }],
|
|
10
10
|
host: {
|
|
11
11
|
'[class]': '_computedClass()',
|
|
12
12
|
},
|
|
@@ -88,8 +88,7 @@ export const HLM_AUTOCOMPLETE_VALUE_ACCESSOR = {
|
|
|
88
88
|
[placeholder]="searchPlaceholderText()"
|
|
89
89
|
[disabled]="_disabled()"
|
|
90
90
|
[value]="_search()"
|
|
91
|
-
(
|
|
92
|
-
(keydown.arrowDown)="_openPopover()"
|
|
91
|
+
(valueChange)="_onSearchChanged($event)"
|
|
93
92
|
/>
|
|
94
93
|
|
|
95
94
|
<button
|
|
@@ -152,7 +151,8 @@ export class HlmAutocomplete<T> implements ControlValueAccessor {
|
|
|
152
151
|
private static _id = 0;
|
|
153
152
|
private readonly _config = injectHlmAutocompleteConfig<T>();
|
|
154
153
|
|
|
155
|
-
private readonly
|
|
154
|
+
private readonly _brnAutocomplete = viewChild.required(BrnAutocomplete);
|
|
155
|
+
|
|
156
156
|
private readonly _inputRef = viewChild.required('input', { read: ElementRef });
|
|
157
157
|
|
|
158
158
|
protected readonly _elementRef = inject(ElementRef<HTMLElement>);
|
|
@@ -232,40 +232,23 @@ export class HlmAutocomplete<T> implements ControlValueAccessor {
|
|
|
232
232
|
protected _onChange?: ChangeFn<T | null>;
|
|
233
233
|
protected _onTouched?: TouchFn;
|
|
234
234
|
|
|
235
|
-
protected _setPopoverState(state: 'open' | 'closed') {
|
|
236
|
-
if (state === 'open') {
|
|
237
|
-
this._brnPopover().open();
|
|
238
|
-
} else {
|
|
239
|
-
this._brnPopover().close();
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
protected _openPopover() {
|
|
244
|
-
if (this._search() || this.filteredOptions().length > 0) {
|
|
245
|
-
// only open if there's a search term or options to show
|
|
246
|
-
this._brnPopover().open();
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
235
|
protected _toggleOptions() {
|
|
251
236
|
if (this._search() || this.filteredOptions().length > 0) {
|
|
252
237
|
// only toggle if there's a search term or options to show
|
|
253
|
-
|
|
254
|
-
this._setPopoverState(state === 'open' ? 'closed' : 'open');
|
|
238
|
+
this._brnAutocomplete().toggle();
|
|
255
239
|
}
|
|
256
240
|
|
|
257
241
|
this._inputRef().nativeElement.focus();
|
|
258
242
|
}
|
|
259
243
|
|
|
260
|
-
protected _onSearchChanged(
|
|
261
|
-
|
|
262
|
-
this.
|
|
263
|
-
this.searchChange.emit(input.value);
|
|
244
|
+
protected _onSearchChanged(value: string) {
|
|
245
|
+
this._search.set(value);
|
|
246
|
+
this.searchChange.emit(value);
|
|
264
247
|
|
|
265
248
|
this._clearOption();
|
|
266
249
|
|
|
267
|
-
if (this.
|
|
268
|
-
this.
|
|
250
|
+
if (!this._brnAutocomplete().isExpanded() && value.length > 0) {
|
|
251
|
+
this._brnAutocomplete().open();
|
|
269
252
|
}
|
|
270
253
|
}
|
|
271
254
|
|
|
@@ -285,12 +268,16 @@ export class HlmAutocomplete<T> implements ControlValueAccessor {
|
|
|
285
268
|
this._search.set(searchValue);
|
|
286
269
|
this.searchChange.emit(searchValue);
|
|
287
270
|
|
|
288
|
-
this.
|
|
271
|
+
this._brnAutocomplete().close();
|
|
289
272
|
}
|
|
290
273
|
|
|
291
274
|
/** CONTROL VALUE ACCESSOR */
|
|
292
275
|
public writeValue(value: T | null): void {
|
|
293
276
|
this._value.set(value ? value : undefined);
|
|
277
|
+
|
|
278
|
+
const searchValue = value ? this.transformValueToSearch()(value) : '';
|
|
279
|
+
this._search.set(searchValue);
|
|
280
|
+
this.searchChange.emit(searchValue);
|
|
294
281
|
}
|
|
295
282
|
|
|
296
283
|
public registerOnChange(fn: ChangeFn<T | null>): void {
|
|
@@ -6,7 +6,7 @@ import type { ClassValue } from 'clsx';
|
|
|
6
6
|
import { injectBrnButtonConfig } from './hlm-button.token';
|
|
7
7
|
|
|
8
8
|
export const buttonVariants = cva(
|
|
9
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hallo inline-flex shrink-0 items-center justify-center gap-2
|
|
9
|
+
"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hallo inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0 [&_ng-icon:not([class*='size-'])]:size-4",
|
|
10
10
|
{
|
|
11
11
|
variants: {
|
|
12
12
|
variant: {
|
|
@@ -14,7 +14,7 @@ export const buttonVariants = cva(
|
|
|
14
14
|
destructive:
|
|
15
15
|
'bg-destructive hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-white',
|
|
16
16
|
outline:
|
|
17
|
-
'bg-background
|
|
17
|
+
'bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border shadow-xs',
|
|
18
18
|
secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
|
|
19
19
|
ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
|
|
20
20
|
link: 'text-primary underline-offset-4 hover:underline',
|
|
@@ -12,21 +12,7 @@ import {
|
|
|
12
12
|
} from '@angular/core';
|
|
13
13
|
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
14
14
|
import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';
|
|
15
|
-
import {
|
|
16
|
-
BrnCalendarCell,
|
|
17
|
-
BrnCalendarCellButton,
|
|
18
|
-
BrnCalendarGrid,
|
|
19
|
-
BrnCalendarHeader,
|
|
20
|
-
BrnCalendarMonthSelect,
|
|
21
|
-
BrnCalendarMulti,
|
|
22
|
-
BrnCalendarNextButton,
|
|
23
|
-
BrnCalendarPreviousButton,
|
|
24
|
-
BrnCalendarWeek,
|
|
25
|
-
BrnCalendarWeekday,
|
|
26
|
-
BrnCalendarYearSelect,
|
|
27
|
-
injectBrnCalendarI18n,
|
|
28
|
-
type Weekday,
|
|
29
|
-
} from '@spartan-ng/brain/calendar';
|
|
15
|
+
import { BrnCalendarImports, BrnCalendarMulti, injectBrnCalendarI18n, type Weekday } from '@spartan-ng/brain/calendar';
|
|
30
16
|
import { injectDateAdapter } from '@spartan-ng/brain/date-time';
|
|
31
17
|
import { BrnSelectImports } from '@spartan-ng/brain/select';
|
|
32
18
|
import { buttonVariants } from '<%- importAlias %>/button';
|
|
@@ -37,24 +23,7 @@ import type { ClassValue } from 'clsx';
|
|
|
37
23
|
|
|
38
24
|
@Component({
|
|
39
25
|
selector: 'hlm-calendar-multi',
|
|
40
|
-
imports: [
|
|
41
|
-
BrnCalendarMulti,
|
|
42
|
-
BrnCalendarHeader,
|
|
43
|
-
BrnCalendarNextButton,
|
|
44
|
-
BrnCalendarPreviousButton,
|
|
45
|
-
BrnCalendarWeekday,
|
|
46
|
-
BrnCalendarWeek,
|
|
47
|
-
BrnCalendarCellButton,
|
|
48
|
-
BrnCalendarCell,
|
|
49
|
-
BrnCalendarGrid,
|
|
50
|
-
NgIcon,
|
|
51
|
-
HlmIcon,
|
|
52
|
-
BrnCalendarMonthSelect,
|
|
53
|
-
NgTemplateOutlet,
|
|
54
|
-
BrnSelectImports,
|
|
55
|
-
HlmSelectImports,
|
|
56
|
-
BrnCalendarYearSelect,
|
|
57
|
-
],
|
|
26
|
+
imports: [BrnCalendarImports, NgIcon, HlmIcon, NgTemplateOutlet, BrnSelectImports, HlmSelectImports],
|
|
58
27
|
viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],
|
|
59
28
|
template: `
|
|
60
29
|
<div
|
|
@@ -122,14 +91,14 @@ import type { ClassValue } from 'clsx';
|
|
|
122
91
|
<div class="flex items-center space-x-1">
|
|
123
92
|
<button
|
|
124
93
|
brnCalendarPreviousButton
|
|
125
|
-
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute left-1 inline-flex h-7 w-7 items-center justify-center
|
|
94
|
+
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute left-1 inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 text-sm font-medium whitespace-nowrap opacity-50 transition-colors hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
126
95
|
>
|
|
127
96
|
<ng-icon hlm name="lucideChevronLeft" size="sm" />
|
|
128
97
|
</button>
|
|
129
98
|
|
|
130
99
|
<button
|
|
131
100
|
brnCalendarNextButton
|
|
132
|
-
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute right-1 inline-flex h-7 w-7 items-center justify-center
|
|
101
|
+
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute right-1 inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 text-sm font-medium whitespace-nowrap opacity-50 transition-colors hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
133
102
|
>
|
|
134
103
|
<ng-icon hlm name="lucideChevronRight" size="sm" />
|
|
135
104
|
</button>
|
|
@@ -12,21 +12,7 @@ import {
|
|
|
12
12
|
} from '@angular/core';
|
|
13
13
|
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
14
14
|
import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';
|
|
15
|
-
import {
|
|
16
|
-
BrnCalendarCell,
|
|
17
|
-
BrnCalendarCellButton,
|
|
18
|
-
BrnCalendarGrid,
|
|
19
|
-
BrnCalendarHeader,
|
|
20
|
-
BrnCalendarMonthSelect,
|
|
21
|
-
BrnCalendarNextButton,
|
|
22
|
-
BrnCalendarPreviousButton,
|
|
23
|
-
BrnCalendarRange,
|
|
24
|
-
BrnCalendarWeek,
|
|
25
|
-
BrnCalendarWeekday,
|
|
26
|
-
BrnCalendarYearSelect,
|
|
27
|
-
injectBrnCalendarI18n,
|
|
28
|
-
type Weekday,
|
|
29
|
-
} from '@spartan-ng/brain/calendar';
|
|
15
|
+
import { BrnCalendarImports, BrnCalendarRange, injectBrnCalendarI18n, type Weekday } from '@spartan-ng/brain/calendar';
|
|
30
16
|
import { injectDateAdapter } from '@spartan-ng/brain/date-time';
|
|
31
17
|
import { BrnSelectImports } from '@spartan-ng/brain/select';
|
|
32
18
|
import { buttonVariants } from '<%- importAlias %>/button';
|
|
@@ -37,24 +23,7 @@ import type { ClassValue } from 'clsx';
|
|
|
37
23
|
|
|
38
24
|
@Component({
|
|
39
25
|
selector: 'hlm-calendar-range',
|
|
40
|
-
imports: [
|
|
41
|
-
BrnCalendarHeader,
|
|
42
|
-
BrnCalendarNextButton,
|
|
43
|
-
BrnCalendarPreviousButton,
|
|
44
|
-
BrnCalendarWeekday,
|
|
45
|
-
BrnCalendarWeek,
|
|
46
|
-
BrnCalendarCellButton,
|
|
47
|
-
BrnCalendarCell,
|
|
48
|
-
BrnCalendarGrid,
|
|
49
|
-
NgIcon,
|
|
50
|
-
HlmIcon,
|
|
51
|
-
BrnCalendarRange,
|
|
52
|
-
BrnCalendarMonthSelect,
|
|
53
|
-
HlmSelectImports,
|
|
54
|
-
BrnSelectImports,
|
|
55
|
-
BrnCalendarYearSelect,
|
|
56
|
-
NgTemplateOutlet,
|
|
57
|
-
],
|
|
26
|
+
imports: [BrnCalendarImports, NgIcon, HlmIcon, HlmSelectImports, BrnSelectImports, NgTemplateOutlet],
|
|
58
27
|
viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],
|
|
59
28
|
template: `
|
|
60
29
|
<div
|
|
@@ -121,14 +90,14 @@ import type { ClassValue } from 'clsx';
|
|
|
121
90
|
<div class="flex items-center space-x-1">
|
|
122
91
|
<button
|
|
123
92
|
brnCalendarPreviousButton
|
|
124
|
-
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute left-1 inline-flex h-7 w-7 items-center justify-center
|
|
93
|
+
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute left-1 inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 text-sm font-medium whitespace-nowrap opacity-50 transition-colors hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
125
94
|
>
|
|
126
95
|
<ng-icon hlm name="lucideChevronLeft" size="sm" />
|
|
127
96
|
</button>
|
|
128
97
|
|
|
129
98
|
<button
|
|
130
99
|
brnCalendarNextButton
|
|
131
|
-
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute right-1 inline-flex h-7 w-7 items-center justify-center
|
|
100
|
+
class="ring-offset-background focus-visible:ring-ring border-input hover:bg-accent hover:text-accent-foreground absolute right-1 inline-flex h-7 w-7 items-center justify-center rounded-md border bg-transparent p-0 text-sm font-medium whitespace-nowrap opacity-50 transition-colors hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
132
101
|
>
|
|
133
102
|
<ng-icon hlm name="lucideChevronRight" size="sm" />
|
|
134
103
|
</button>
|
|
@@ -12,21 +12,7 @@ import {
|
|
|
12
12
|
} from '@angular/core';
|
|
13
13
|
import { NgIcon, provideIcons } from '@ng-icons/core';
|
|
14
14
|
import { lucideChevronLeft, lucideChevronRight } from '@ng-icons/lucide';
|
|
15
|
-
import {
|
|
16
|
-
BrnCalendar,
|
|
17
|
-
BrnCalendarCell,
|
|
18
|
-
BrnCalendarCellButton,
|
|
19
|
-
BrnCalendarGrid,
|
|
20
|
-
BrnCalendarHeader,
|
|
21
|
-
BrnCalendarMonthSelect,
|
|
22
|
-
BrnCalendarNextButton,
|
|
23
|
-
BrnCalendarPreviousButton,
|
|
24
|
-
BrnCalendarWeek,
|
|
25
|
-
BrnCalendarWeekday,
|
|
26
|
-
BrnCalendarYearSelect,
|
|
27
|
-
injectBrnCalendarI18n,
|
|
28
|
-
type Weekday,
|
|
29
|
-
} from '@spartan-ng/brain/calendar';
|
|
15
|
+
import { BrnCalendar, BrnCalendarImports, injectBrnCalendarI18n, type Weekday } from '@spartan-ng/brain/calendar';
|
|
30
16
|
import { injectDateAdapter } from '@spartan-ng/brain/date-time';
|
|
31
17
|
import { BrnSelectImports } from '@spartan-ng/brain/select';
|
|
32
18
|
import { buttonVariants } from '<%- importAlias %>/button';
|
|
@@ -37,27 +23,7 @@ import type { ClassValue } from 'clsx';
|
|
|
37
23
|
|
|
38
24
|
@Component({
|
|
39
25
|
selector: 'hlm-calendar',
|
|
40
|
-
imports: [
|
|
41
|
-
BrnCalendar,
|
|
42
|
-
BrnCalendarHeader,
|
|
43
|
-
BrnCalendarNextButton,
|
|
44
|
-
BrnCalendarPreviousButton,
|
|
45
|
-
BrnCalendarWeekday,
|
|
46
|
-
BrnCalendarWeek,
|
|
47
|
-
BrnCalendarCellButton,
|
|
48
|
-
BrnCalendarCell,
|
|
49
|
-
BrnCalendarGrid,
|
|
50
|
-
NgIcon,
|
|
51
|
-
HlmIcon,
|
|
52
|
-
BrnSelectImports,
|
|
53
|
-
HlmSelectImports,
|
|
54
|
-
BrnCalendarPreviousButton,
|
|
55
|
-
BrnCalendarMonthSelect,
|
|
56
|
-
BrnCalendarMonthSelect,
|
|
57
|
-
BrnCalendarMonthSelect,
|
|
58
|
-
BrnCalendarYearSelect,
|
|
59
|
-
NgTemplateOutlet,
|
|
60
|
-
],
|
|
26
|
+
imports: [BrnCalendarImports, NgIcon, HlmIcon, BrnSelectImports, HlmSelectImports, NgTemplateOutlet],
|
|
61
27
|
viewProviders: [provideIcons({ lucideChevronLeft, lucideChevronRight })],
|
|
62
28
|
template: `
|
|
63
29
|
<div
|
|
@@ -123,14 +89,14 @@ import type { ClassValue } from 'clsx';
|
|
|
123
89
|
<div class="flex items-center space-x-1">
|
|
124
90
|
<button
|
|
125
91
|
brnCalendarPreviousButton
|
|
126
|
-
class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute left-1 inline-flex size-8 items-center justify-center
|
|
92
|
+
class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute left-1 inline-flex size-8 items-center justify-center rounded-md bg-transparent p-0 text-sm font-medium whitespace-nowrap transition-colors hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
127
93
|
>
|
|
128
94
|
<ng-icon hlm name="lucideChevronLeft" size="sm" />
|
|
129
95
|
</button>
|
|
130
96
|
|
|
131
97
|
<button
|
|
132
98
|
brnCalendarNextButton
|
|
133
|
-
class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute right-1 inline-flex size-8 items-center justify-center
|
|
99
|
+
class="focus-visible:ring-ring hover:bg-accent hover:text-accent-foreground text-popover-foreground absolute right-1 inline-flex size-8 items-center justify-center rounded-md bg-transparent p-0 text-sm font-medium whitespace-nowrap transition-colors hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50"
|
|
134
100
|
>
|
|
135
101
|
<ng-icon hlm name="lucideChevronRight" size="sm" />
|
|
136
102
|
</button>
|
|
@@ -66,7 +66,7 @@ export class HlmCheckbox implements ControlValueAccessor {
|
|
|
66
66
|
|
|
67
67
|
protected readonly _computedClass = computed(() =>
|
|
68
68
|
hlm(
|
|
69
|
-
'border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive
|
|
69
|
+
'border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer size-4 shrink-0 cursor-default rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
|
|
70
70
|
this.userClass(),
|
|
71
71
|
this._state().disabled() ? 'cursor-not-allowed opacity-50' : '',
|
|
72
72
|
),
|
package/src/generators/ui/libs/ui-date-picker-helm/files/lib/hlm-date-picker-multi.ts.template
CHANGED
|
@@ -82,8 +82,8 @@ export class HlmDatePickerMulti<T> implements ControlValueAccessor {
|
|
|
82
82
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
83
83
|
protected readonly _computedClass = computed(() =>
|
|
84
84
|
hlm(
|
|
85
|
-
'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2
|
|
86
|
-
'focus-visible:ring-ring focus-visible:
|
|
85
|
+
'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2 rounded-md border px-3 py-2 text-left text-sm font-normal whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50',
|
|
86
|
+
'focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',
|
|
87
87
|
'disabled:pointer-events-none disabled:opacity-50',
|
|
88
88
|
'[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
|
|
89
89
|
this.userClass(),
|
|
@@ -79,8 +79,8 @@ export class HlmDatePicker<T> implements ControlValueAccessor {
|
|
|
79
79
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
80
80
|
protected readonly _computedClass = computed(() =>
|
|
81
81
|
hlm(
|
|
82
|
-
'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2
|
|
83
|
-
'focus-visible:ring-ring focus-visible:
|
|
82
|
+
'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2 rounded-md border px-3 py-2 text-left text-sm font-normal whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50',
|
|
83
|
+
'focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',
|
|
84
84
|
'disabled:pointer-events-none disabled:opacity-50',
|
|
85
85
|
'[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
|
|
86
86
|
this.userClass(),
|
package/src/generators/ui/libs/ui-date-picker-helm/files/lib/hlm-date-range-picker.ts.template
CHANGED
|
@@ -87,8 +87,8 @@ export class HlmDateRangePicker<T> implements ControlValueAccessor {
|
|
|
87
87
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
88
88
|
protected readonly _computedClass = computed(() =>
|
|
89
89
|
hlm(
|
|
90
|
-
'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2
|
|
91
|
-
'focus-visible:ring-ring focus-visible:
|
|
90
|
+
'ring-offset-background border-input bg-background hover:bg-accent dark:bg-input/30 dark:hover:bg-input/50 hover:text-accent-foreground inline-flex h-9 w-[280px] cursor-default items-center justify-between gap-2 rounded-md border px-3 py-2 text-left text-sm font-normal whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50',
|
|
91
|
+
'focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',
|
|
92
92
|
'disabled:pointer-events-none disabled:opacity-50',
|
|
93
93
|
'[&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
|
|
94
94
|
this.userClass(),
|
package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-addon.ts.template
CHANGED
|
@@ -4,15 +4,15 @@ import { cva, type VariantProps } from 'class-variance-authority';
|
|
|
4
4
|
import type { ClassValue } from 'clsx';
|
|
5
5
|
|
|
6
6
|
const inputGroupAddonVariants = cva(
|
|
7
|
-
"text-muted-foreground flex h-auto cursor-text
|
|
7
|
+
"text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>ng-icon:not([class*='size-'])]:size-4",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
align: {
|
|
11
11
|
'inline-start': 'order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]',
|
|
12
12
|
'inline-end': 'order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]',
|
|
13
13
|
'block-start':
|
|
14
|
-
'
|
|
15
|
-
'block-end': '
|
|
14
|
+
'order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5 [.border-b]:pb-3',
|
|
15
|
+
'block-end': 'order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5 [.border-t]:pt-3',
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
18
|
defaultVariants: {
|
package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-text.ts.template
CHANGED
|
@@ -13,7 +13,7 @@ export class HlmInputGroupText {
|
|
|
13
13
|
|
|
14
14
|
protected readonly _computedClass = computed(() =>
|
|
15
15
|
hlm(
|
|
16
|
-
`text-muted-foreground flex items-center gap-2 text-sm [&_ng-icon:not([class*='size-'])]:size-4
|
|
16
|
+
`text-muted-foreground flex items-center gap-2 text-sm [&_ng-icon]:pointer-events-none [&_ng-icon:not([class*='size-'])]:size-4`,
|
|
17
17
|
this.userClass(),
|
|
18
18
|
),
|
|
19
19
|
);
|
|
@@ -15,7 +15,7 @@ export class HlmInputGroup {
|
|
|
15
15
|
|
|
16
16
|
protected readonly _computedClass = computed(() =>
|
|
17
17
|
hlm(
|
|
18
|
-
'group/input-group border-input dark:bg-input/30
|
|
18
|
+
'group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none',
|
|
19
19
|
'h-9 min-w-0 has-[>textarea]:h-auto',
|
|
20
20
|
// Variants based on alignment.
|
|
21
21
|
'has-[>[data-align=inline-start]]:[&>input]:pl-2',
|
|
@@ -19,7 +19,7 @@ import { cva, type VariantProps } from 'class-variance-authority';
|
|
|
19
19
|
import type { ClassValue } from 'clsx';
|
|
20
20
|
|
|
21
21
|
export const inputVariants = cva(
|
|
22
|
-
'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input
|
|
22
|
+
'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:ring-[3px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
|
|
23
23
|
{
|
|
24
24
|
variants: {
|
|
25
25
|
error: {
|
|
@@ -26,7 +26,7 @@ export class HlmInputOtpSlot {
|
|
|
26
26
|
|
|
27
27
|
protected readonly _computedClass = computed(() =>
|
|
28
28
|
hlm(
|
|
29
|
-
'dark:bg-input/30 border-input
|
|
29
|
+
'dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md',
|
|
30
30
|
'has-[brn-input-otp-slot[data-active="true"]]:border-ring has-[brn-input-otp-slot[data-active="true"]]:ring-ring/50 has-[brn-input-otp-slot[data-active="true"]]:z-10 has-[brn-input-otp-slot[data-active="true"]]:ring-[3px]',
|
|
31
31
|
this.userClass(),
|
|
32
32
|
),
|
|
@@ -12,6 +12,6 @@ export class HlmInputOtp {
|
|
|
12
12
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
13
13
|
|
|
14
14
|
protected readonly _computedClass = computed(() =>
|
|
15
|
-
hlm('
|
|
15
|
+
hlm('flex items-center gap-2 has-disabled:opacity-50', this.userClass()),
|
|
16
16
|
);
|
|
17
17
|
}
|
|
@@ -13,7 +13,7 @@ export class HlmKbd {
|
|
|
13
13
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
14
14
|
protected readonly _computedClass = computed(() =>
|
|
15
15
|
hlm(
|
|
16
|
-
'bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5
|
|
16
|
+
'bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none',
|
|
17
17
|
"[&_ng-icon:not([class*='size-'])]:size-3",
|
|
18
18
|
'[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10',
|
|
19
19
|
this.userClass(),
|
|
@@ -15,6 +15,6 @@ import type { ClassValue } from 'clsx';
|
|
|
15
15
|
export class HlmMenuBar {
|
|
16
16
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
17
17
|
protected readonly _computedClass = computed(() =>
|
|
18
|
-
hlm('bg-background
|
|
18
|
+
hlm('bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs', this.userClass()),
|
|
19
19
|
);
|
|
20
20
|
}
|
|
@@ -29,7 +29,7 @@ export class HlmMenuItem {
|
|
|
29
29
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
30
30
|
protected readonly _computedClass = computed(() =>
|
|
31
31
|
hlm(
|
|
32
|
-
`hover:bg-accent focus-visible:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[ng-icon]:!text-destructive [&_ng-icon]:text-muted-foreground relative flex w-full cursor-default
|
|
32
|
+
`hover:bg-accent focus-visible:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[ng-icon]:!text-destructive [&_ng-icon]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0`,
|
|
33
33
|
this.userClass(),
|
|
34
34
|
),
|
|
35
35
|
);
|
|
@@ -25,7 +25,7 @@ import { HlmPaginationPrevious } from './hlm-pagination-previous';
|
|
|
25
25
|
selector: 'hlm-numbered-pagination-query-params',
|
|
26
26
|
template: `
|
|
27
27
|
<div class="flex items-center justify-between gap-2 px-4 py-2">
|
|
28
|
-
<div class="flex items-center gap-1 text-
|
|
28
|
+
<div class="flex items-center gap-1 text-sm text-nowrap text-gray-600">
|
|
29
29
|
<b>{{ totalItems() }}</b>
|
|
30
30
|
total items |
|
|
31
31
|
<b>{{ _pages().length }}</b>
|
package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-numbered-pagination.ts.template
CHANGED
|
@@ -24,7 +24,7 @@ import { HlmPaginationPrevious } from './hlm-pagination-previous';
|
|
|
24
24
|
selector: 'hlm-numbered-pagination',
|
|
25
25
|
template: `
|
|
26
26
|
<div class="flex items-center justify-between gap-2 px-4 py-2">
|
|
27
|
-
<div class="flex items-center gap-1 text-
|
|
27
|
+
<div class="flex items-center gap-1 text-sm text-nowrap text-gray-600">
|
|
28
28
|
<b>{{ totalItems() }}</b>
|
|
29
29
|
total items |
|
|
30
30
|
<b>{{ _pages().length }}</b>
|
|
@@ -14,7 +14,7 @@ export class HlmSeparator {
|
|
|
14
14
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
15
15
|
protected readonly _computedClass = computed(() =>
|
|
16
16
|
hlm(
|
|
17
|
-
'bg-border inline-flex shrink-0 data-[orientation=horizontal]:h-px data-[orientation=
|
|
17
|
+
'bg-border inline-flex shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',
|
|
18
18
|
this.userClass(),
|
|
19
19
|
),
|
|
20
20
|
);
|
package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-group-action.ts.template
CHANGED
|
@@ -15,7 +15,7 @@ export class HlmSidebarGroupAction {
|
|
|
15
15
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
16
16
|
protected readonly _computedClass = computed(() =>
|
|
17
17
|
hlm(
|
|
18
|
-
'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute
|
|
18
|
+
'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none hover:cursor-pointer focus-visible:ring-2 disabled:hover:cursor-default [&>_ng-icon]:size-4 [&>_ng-icon]:shrink-0',
|
|
19
19
|
// Increases the hit area of the button on mobile.
|
|
20
20
|
'after:absolute after:-inset-2 after:md:hidden',
|
|
21
21
|
'group-data-[collapsible=icon]:hidden',
|
package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-group-label.ts.template
CHANGED
|
@@ -15,7 +15,7 @@ export class HlmSidebarGroupLabel {
|
|
|
15
15
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
16
16
|
protected readonly _computedClass = computed(() =>
|
|
17
17
|
hlm(
|
|
18
|
-
'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium
|
|
18
|
+
'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium transition-[margin,opa] duration-200 ease-linear outline-none focus-visible:ring-2 [&>_ng-icon]:size-4 [&>_ng-icon]:shrink-0',
|
|
19
19
|
'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',
|
|
20
20
|
this.userClass(),
|
|
21
21
|
),
|
package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-menu-action.ts.template
CHANGED
|
@@ -16,7 +16,7 @@ export class HlmSidebarMenuAction {
|
|
|
16
16
|
public readonly showOnHover = input<boolean, boolean>(false, { transform: booleanAttribute });
|
|
17
17
|
protected readonly _computedClass = computed(() =>
|
|
18
18
|
hlm(
|
|
19
|
-
'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute
|
|
19
|
+
'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none hover:cursor-pointer focus-visible:ring-2 disabled:hover:cursor-default [&>_ng-icon]:size-4 [&>_ng-icon]:shrink-0',
|
|
20
20
|
// Increases the hit area of the button on mobile.
|
|
21
21
|
'after:absolute after:-inset-2 after:md:hidden',
|
|
22
22
|
'peer-data-[size=sm]/menu-button:top-1',
|
|
@@ -15,7 +15,7 @@ export class HlmSidebarMenuBadge {
|
|
|
15
15
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
16
16
|
protected readonly _computedClass = computed(() =>
|
|
17
17
|
hlm(
|
|
18
|
-
'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5
|
|
18
|
+
'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none',
|
|
19
19
|
'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
|
|
20
20
|
'peer-data-[size=sm]/menu-button:top-1',
|
|
21
21
|
'peer-data-[size=default]/menu-button:top-1.5',
|
package/src/generators/ui/libs/ui-sidebar-helm/files/lib/hlm-sidebar-menu-button.ts.template
CHANGED
|
@@ -9,7 +9,7 @@ import { HlmSidebarService } from './hlm-sidebar.service';
|
|
|
9
9
|
import type { ClassValue } from 'clsx';
|
|
10
10
|
|
|
11
11
|
const sidebarMenuButtonVariants = cva(
|
|
12
|
-
'peer/menu-button ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground flex w-full items-center justify-start gap-2 overflow-hidden rounded-md p-2 text-left text-sm
|
|
12
|
+
'peer/menu-button ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground flex w-full items-center justify-start gap-2 overflow-hidden rounded-md p-2 text-left text-sm transition-[width,height,padding] outline-none group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 hover:cursor-pointer focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 disabled:hover:cursor-default aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>_ng-icon]:size-4 [&>_ng-icon]:shrink-0 group-data-[collapsible=icon]:[&>span]:hidden [&>span:last-child]:truncate',
|
|
13
13
|
{
|
|
14
14
|
variants: {
|
|
15
15
|
variant: {
|
|
@@ -23,7 +23,7 @@ export class HlmSidebarRail {
|
|
|
23
23
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
24
24
|
protected readonly _computedClass = computed(() =>
|
|
25
25
|
hlm(
|
|
26
|
-
'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px]
|
|
26
|
+
'hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex',
|
|
27
27
|
'group-data-[side=left]:cursor-w-resize group-data-[side=right]:cursor-e-resize',
|
|
28
28
|
'[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',
|
|
29
29
|
'hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',
|
|
@@ -55,7 +55,7 @@ export class HlmSwitch implements ControlValueAccessor {
|
|
|
55
55
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
56
56
|
protected readonly _computedClass = computed(() =>
|
|
57
57
|
hlm(
|
|
58
|
-
'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80
|
|
58
|
+
'data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 group inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-50',
|
|
59
59
|
this.userClass(),
|
|
60
60
|
),
|
|
61
61
|
);
|
|
@@ -19,7 +19,7 @@ import { cva, type VariantProps } from 'class-variance-authority';
|
|
|
19
19
|
import type { ClassValue } from 'clsx';
|
|
20
20
|
|
|
21
21
|
export const textareaVariants = cva(
|
|
22
|
-
'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 dark:bg-input/30
|
|
22
|
+
'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 dark:bg-input/30 flex [field-sizing:content] min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
|
|
23
23
|
{
|
|
24
24
|
variants: {
|
|
25
25
|
error: {
|
|
@@ -21,7 +21,7 @@ export class HlmToggleGroup {
|
|
|
21
21
|
public readonly userClass = input<ClassValue>('', { alias: 'class' });
|
|
22
22
|
protected readonly _computedClass = computed(() =>
|
|
23
23
|
hlm(
|
|
24
|
-
'group/toggle-group
|
|
24
|
+
'group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs focus:[&>[hlm][brnToggle]]:z-10',
|
|
25
25
|
this.userClass(),
|
|
26
26
|
),
|
|
27
27
|
);
|