@aortl/admin-css 0.12.1 → 0.13.1

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.
@@ -0,0 +1,32 @@
1
+ @layer components {
2
+ .link {
3
+ @apply inline-flex items-center gap-1
4
+ text-primary underline underline-offset-2
5
+ rounded-sm transition-colors duration-150
6
+ hover:text-primary-hover
7
+ focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary;
8
+ }
9
+
10
+ /* Keep a leading icon from squishing when the link text wraps. The trailing
11
+ external arrow is already `flex: none` below. */
12
+ .link > :is(i, svg) {
13
+ flex-shrink: 0;
14
+ }
15
+
16
+ /* External affordance: a trailing ↗ rendered from CSS so it ships identically
17
+ in both bundles — no JS, no icon-font dependency. The arrow is a masked box
18
+ tinted with `currentColor`, so it tracks the link's color (incl. hover). */
19
+ .link-external {
20
+ --link-external-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 7 7 17'/%3E%3Cpath d='M8 7h9v9'/%3E%3C/svg%3E");
21
+ }
22
+
23
+ .link-external::after {
24
+ content: "";
25
+ flex: none;
26
+ width: 0.85em;
27
+ height: 0.85em;
28
+ background-color: currentColor;
29
+ -webkit-mask: var(--link-external-arrow) center / contain no-repeat;
30
+ mask: var(--link-external-arrow) center / contain no-repeat;
31
+ }
32
+ }
@@ -106,6 +106,12 @@
106
106
  @apply opacity-50 cursor-not-allowed;
107
107
  }
108
108
 
109
+ /* Don't let a constrained menu width squish a leading/trailing icon. */
110
+ .menu-trigger > :is(i, svg),
111
+ .menu-item > :is(i, svg) {
112
+ flex-shrink: 0;
113
+ }
114
+
109
115
  .menu-separator {
110
116
  @apply h-px my-1 bg-border border-0;
111
117
  }
@@ -31,6 +31,12 @@
31
31
  @apply bg-primary-muted text-primary;
32
32
  }
33
33
 
34
+ /* Keep brand/item icons at their intrinsic size in a crowded bar. */
35
+ .navbar-brand > :is(i, svg),
36
+ .navbar-item > :is(i, svg) {
37
+ flex-shrink: 0;
38
+ }
39
+
34
40
  /* Right-aligned slot for actions: shop selector, user menu, etc. */
35
41
  .navbar-actions {
36
42
  @apply flex items-center gap-2 ml-auto;
@@ -14,6 +14,11 @@
14
14
  @apply flex items-center gap-2 text-sm text-text-muted font-medium;
15
15
  }
16
16
 
17
+ /* Keep the label's leading icon at its intrinsic size. */
18
+ .stat-card-label > :is(i, svg) {
19
+ flex-shrink: 0;
20
+ }
21
+
17
22
  .stat-card-value {
18
23
  @apply text-2xl font-bold tabular-nums leading-tight;
19
24
  }
@@ -30,6 +30,11 @@
30
30
  @apply text-text;
31
31
  }
32
32
 
33
+ /* Keep a tab's leading icon at its intrinsic size when the label is long. */
34
+ .tabs .tab > :is(i, svg) {
35
+ flex-shrink: 0;
36
+ }
37
+
33
38
  /* Vanilla radio-input pattern: hide the inputs visually, treat the following
34
39
  <label class="tab"> as the selected tab when the radio is :checked.
35
40
  Pairs with `:has(input:checked)` below to show the right panel. */
@@ -18,6 +18,29 @@
18
18
  @apply border-danger hover:border-danger focus-visible:outline-danger;
19
19
  }
20
20
 
21
+ /* Status variants — border + focus outline only; text stays `text-text`, so
22
+ warning's yellow accent (which fails AA as text) is fine here. */
23
+ .textarea-info {
24
+ @apply border-info hover:border-info focus-visible:outline-info;
25
+ }
26
+
27
+ .textarea-success {
28
+ @apply border-success hover:border-success focus-visible:outline-success;
29
+ }
30
+
31
+ .textarea-warning {
32
+ @apply border-warning hover:border-warning focus-visible:outline-warning;
33
+ }
34
+
35
+ /* Grow with content (Chromium 123+; degrades to a fixed resizable box
36
+ elsewhere). `min-h-*` / the `rows` attribute stays the floor; cap growth
37
+ with a consumer `max-height`. Manual drag-resize is off — height is
38
+ content-driven. */
39
+ .textarea-autosize {
40
+ field-sizing: content;
41
+ resize: none;
42
+ }
43
+
21
44
  /* Sizes */
22
45
  .textarea-sm {
23
46
  @apply text-xs px-2.5 py-1.5 min-h-16;