@aortl/admin-css 0.16.0 → 0.16.2

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/dist/admin.css +25 -4
  3. package/dist/admin.min.css +1 -1
  4. package/dist/admin.scoped.css +25 -4
  5. package/dist/admin.scoped.min.css +18 -15
  6. package/package.json +3 -2
  7. package/src/components/accordion.css +7 -10
  8. package/src/components/alert.css +6 -21
  9. package/src/components/app-shell.css +2 -4
  10. package/src/components/badge.css +1 -5
  11. package/src/components/breadcrumbs.css +3 -8
  12. package/src/components/button-group.css +7 -19
  13. package/src/components/button.css +7 -23
  14. package/src/components/card.css +13 -20
  15. package/src/components/chart.css +26 -83
  16. package/src/components/checkbox.css +5 -7
  17. package/src/components/code-block.css +2 -4
  18. package/src/components/container.css +3 -7
  19. package/src/components/dialog.css +13 -13
  20. package/src/components/field.css +4 -4
  21. package/src/components/footer.css +2 -3
  22. package/src/components/indicator.css +9 -28
  23. package/src/components/input-group.css +3 -6
  24. package/src/components/input.css +2 -5
  25. package/src/components/kbd.css +7 -13
  26. package/src/components/link.css +3 -5
  27. package/src/components/menu.css +11 -21
  28. package/src/components/navbar.css +3 -7
  29. package/src/components/pagination.css +1 -4
  30. package/src/components/progress.css +3 -7
  31. package/src/components/property-list.css +5 -14
  32. package/src/components/prose.css +7 -21
  33. package/src/components/radio.css +5 -5
  34. package/src/components/select.css +6 -9
  35. package/src/components/sidebar.css +2 -7
  36. package/src/components/spinner.css +1 -4
  37. package/src/components/stat-card.css +5 -16
  38. package/src/components/switch.css +5 -3
  39. package/src/components/table.css +20 -30
  40. package/src/components/tabs.css +14 -32
  41. package/src/components/textarea.css +3 -7
  42. package/src/components/tooltip.css +6 -16
  43. package/src/fonts.css +8 -28
  44. package/src/theme.css +32 -100
  45. package/src/utilities.css +11 -37
@@ -724,6 +724,8 @@
724
724
  outline-color: var(--color-focus);
725
725
  }
726
726
  list-style: none;
727
+ overflow-wrap: break-word;
728
+ min-width: 0;
727
729
  }
728
730
  :scope._ao-accordion-summary::-webkit-details-marker, :scope ._ao-accordion-summary::-webkit-details-marker {
729
731
  display: none;
@@ -754,6 +756,7 @@
754
756
  font-size: var(--text-sm);
755
757
  line-height: var(--tw-leading, var(--text-sm--line-height));
756
758
  color: var(--color-text);
759
+ overflow-wrap: break-word;
757
760
  }
758
761
  :scope._ao-accordion-item::details-content, :scope ._ao-accordion-item::details-content {
759
762
  opacity: 0;
@@ -1205,6 +1208,7 @@
1205
1208
  font-size: var(--text-sm);
1206
1209
  line-height: var(--tw-leading, var(--text-sm--line-height));
1207
1210
  color: var(--color-text-muted);
1211
+ overflow-wrap: break-word;
1208
1212
  }
1209
1213
  :scope._ao-breadcrumbs > ol, :scope ._ao-breadcrumbs > ol {
1210
1214
  margin: calc(var(--spacing) * 0);
@@ -1700,6 +1704,7 @@
1700
1704
  &:focus-visible {
1701
1705
  outline-color: var(--color-focus);
1702
1706
  }
1707
+ overflow-wrap: break-word;
1703
1708
  }
1704
1709
  :scope._ao-link > :is(i, svg), :scope ._ao-link > :is(i, svg) {
1705
1710
  flex-shrink: 0;
@@ -2094,6 +2099,8 @@
2094
2099
  cursor: pointer;
2095
2100
  align-items: center;
2096
2101
  gap: calc(var(--spacing) * 2);
2102
+ overflow-wrap: break-word;
2103
+ min-width: 0;
2097
2104
  }
2098
2105
  :scope label:has(> ._ao-checkbox:disabled), :scope label:has(> ._ao-checkbox[data-disabled]) {
2099
2106
  cursor: not-allowed;
@@ -2201,6 +2208,8 @@
2201
2208
  cursor: pointer;
2202
2209
  align-items: center;
2203
2210
  gap: calc(var(--spacing) * 2);
2211
+ overflow-wrap: break-word;
2212
+ min-width: 0;
2204
2213
  }
2205
2214
  :scope label:has(> ._ao-radio:disabled), :scope label:has(> ._ao-radio[data-disabled]) {
2206
2215
  cursor: not-allowed;
@@ -2299,6 +2308,8 @@
2299
2308
  cursor: pointer;
2300
2309
  align-items: center;
2301
2310
  gap: calc(var(--spacing) * 3);
2311
+ overflow-wrap: break-word;
2312
+ min-width: 0;
2302
2313
  }
2303
2314
  :scope label:has(> ._ao-switch:disabled), :scope label:has(> ._ao-switch[data-disabled]) {
2304
2315
  cursor: not-allowed;
@@ -2472,6 +2483,8 @@
2472
2483
  outline-style: none;
2473
2484
  -webkit-user-select: none;
2474
2485
  user-select: none;
2486
+ overflow-wrap: break-word;
2487
+ min-width: 0;
2475
2488
  }
2476
2489
  :scope._ao-select-item[data-highlighted], :scope ._ao-select-item[data-highlighted] {
2477
2490
  background-color: var(--color-surface-muted);
@@ -2515,6 +2528,8 @@
2515
2528
  color: var(--color-text);
2516
2529
  --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05));
2517
2530
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2531
+ overflow-wrap: break-word;
2532
+ min-width: 0;
2518
2533
  }
2519
2534
  :scope._ao-card-body, :scope ._ao-card-body {
2520
2535
  display: flex;
@@ -2532,6 +2547,7 @@
2532
2547
  line-height: var(--leading-tight);
2533
2548
  --tw-font-weight: var(--font-weight-semibold);
2534
2549
  font-weight: var(--font-weight-semibold);
2550
+ min-width: 0;
2535
2551
  }
2536
2552
  :scope._ao-card-header, :scope ._ao-card-header {
2537
2553
  display: flex;
@@ -2668,6 +2684,7 @@
2668
2684
  width: calc(100% - 2rem);
2669
2685
  max-width: 32rem;
2670
2686
  max-height: calc(100dvh - 2rem);
2687
+ overflow-wrap: break-word;
2671
2688
  opacity: 1;
2672
2689
  transform: translateY(0) scale(1);
2673
2690
  transition: display 150ms allow-discrete, overlay 150ms allow-discrete, opacity 150ms ease-out, transform 150ms ease-out;
@@ -2714,6 +2731,7 @@
2714
2731
  line-height: var(--leading-tight);
2715
2732
  --tw-font-weight: var(--font-weight-semibold);
2716
2733
  font-weight: var(--font-weight-semibold);
2734
+ min-width: 0;
2717
2735
  }
2718
2736
  :scope._ao-dialog-description, :scope ._ao-dialog-description {
2719
2737
  margin-top: calc(var(--spacing) * -2);
@@ -2795,6 +2813,7 @@
2795
2813
  display: flex;
2796
2814
  flex-direction: column;
2797
2815
  gap: calc(var(--spacing) * 1.5);
2816
+ overflow-wrap: break-word;
2798
2817
  }
2799
2818
  :scope._ao-field-row, :scope ._ao-field-row {
2800
2819
  flex-direction: row;
@@ -3183,6 +3202,8 @@
3183
3202
  &:disabled {
3184
3203
  opacity: 50%;
3185
3204
  }
3205
+ overflow-wrap: break-word;
3206
+ min-width: 0;
3186
3207
  }
3187
3208
  :scope._ao-menu-item[aria-disabled="true"], :scope ._ao-menu-item[aria-disabled="true"] {
3188
3209
  cursor: not-allowed;
@@ -3963,6 +3984,9 @@
3963
3984
  white-space: nowrap;
3964
3985
  color: var(--color-text-muted);
3965
3986
  }
3987
+ :scope._ao-table :where(td), :scope ._ao-table :where(td), :scope._ao-table-cell, :scope ._ao-table-cell {
3988
+ overflow-wrap: break-word;
3989
+ }
3966
3990
  :scope._ao-table > :last-child > tr:last-child :where(td), :scope ._ao-table > :last-child > tr:last-child :where(td), :scope._ao-table > :last-child > tr:last-child ._ao-table-cell, :scope ._ao-table > :last-child > tr:last-child ._ao-table-cell {
3967
3991
  border-bottom-style: var(--tw-border-style);
3968
3992
  border-bottom-width: 0px;
@@ -4162,6 +4186,7 @@
4162
4186
  --tw-leading: var(--leading-normal);
4163
4187
  line-height: var(--leading-normal);
4164
4188
  color: var(--color-text);
4189
+ overflow-wrap: break-word;
4165
4190
  }
4166
4191
  :scope._ao-prose :where(p, ul, ol, blockquote, pre, table, figure), :scope ._ao-prose :where(p, ul, ol, blockquote, pre, table, figure) {
4167
4192
  margin-block: calc(var(--spacing) * 3);
@@ -4614,8 +4639,4 @@
4614
4639
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
4615
4640
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
4616
4641
  }
4617
- :scope._ao-select-all, :scope ._ao-select-all {
4618
- -webkit-user-select: all;
4619
- user-select: all;
4620
- }
4621
4642
  }
@@ -132,12 +132,12 @@
132
132
  :scope._ao-accordion-summary, :scope ._ao-accordion-summary{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-text);-webkit-user-select:none;user-select:none;display:flex}
133
133
  @media (hover:hover){:scope._ao-accordion-summary:hover, :scope ._ao-accordion-summary:hover{background-color:var(--color-surface-muted)}}
134
134
  :scope._ao-accordion-summary:focus-visible, :scope ._ao-accordion-summary:focus-visible{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-focus)}
135
- :scope._ao-accordion-summary, :scope ._ao-accordion-summary{list-style:none}
135
+ :scope._ao-accordion-summary, :scope ._ao-accordion-summary{overflow-wrap:break-word;min-width:0;list-style:none}
136
136
  :scope._ao-accordion-summary::-webkit-details-marker, :scope ._ao-accordion-summary::-webkit-details-marker{display:none}
137
137
  :scope._ao-accordion-summary>:is(i,svg), :scope ._ao-accordion-summary>:is(i,svg){flex-shrink:0}
138
138
  :scope._ao-accordion-summary:after, :scope ._ao-accordion-summary:after{content:"";border-bottom:2px solid;border-right:2px solid;flex-shrink:0;width:.5rem;height:.5rem;margin-left:auto;transition:transform .15s;transform:rotate(45deg)}
139
139
  :scope._ao-accordion-item[open]>._ao-accordion-summary:after, :scope ._ao-accordion-item[open]>._ao-accordion-summary:after{transform:rotate(-135deg)}
140
- :scope._ao-accordion-content, :scope ._ao-accordion-content{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-border);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text)}
140
+ :scope._ao-accordion-content, :scope ._ao-accordion-content{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-border);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text);overflow-wrap:break-word}
141
141
  :scope._ao-accordion-item::details-content, :scope ._ao-accordion-item::details-content{opacity:0;content-visibility:visible;height:0;transition:opacity .2s,height .2s;overflow:clip}
142
142
  :scope._ao-accordion-item[open]::details-content, :scope ._ao-accordion-item[open]::details-content{opacity:1;height:auto}
143
143
  :scope._ao-alert, :scope ._ao-alert{gap:calc(var(--spacing) * 1);border-radius:var(--radius-md);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text);overflow-wrap:break-word;border-width:1px;flex-direction:column;display:flex}
@@ -221,7 +221,7 @@
221
221
  :scope._ao-progress:indeterminate::-moz-progress-bar, :scope ._ao-progress:indeterminate::-moz-progress-bar{background-color:#0000}
222
222
  @media (prefers-reduced-motion:reduce){:scope._ao-progress:indeterminate, :scope ._ao-progress:indeterminate{animation-duration:3s}}
223
223
  @keyframes progress-indeterminate{0%{background-position:100% 0}to{background-position:0 0}}
224
- :scope._ao-breadcrumbs, :scope ._ao-breadcrumbs{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text-muted)}
224
+ :scope._ao-breadcrumbs, :scope ._ao-breadcrumbs{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text-muted);overflow-wrap:break-word}
225
225
  :scope._ao-breadcrumbs>ol, :scope ._ao-breadcrumbs>ol{margin:calc(var(--spacing) * 0);align-items:center;gap:calc(var(--spacing) * 1.5);padding:calc(var(--spacing) * 0);flex-wrap:wrap;list-style-type:none;display:inline-flex}
226
226
  :scope._ao-breadcrumb-item, :scope ._ao-breadcrumb-item{align-items:center;gap:calc(var(--spacing) * 1.5);color:var(--color-text-muted);text-decoration-line:none;display:inline-flex}
227
227
  @media (hover:hover){:scope._ao-breadcrumb-item:hover, :scope ._ao-breadcrumb-item:hover{color:var(--color-text)}}
@@ -312,6 +312,7 @@
312
312
  :scope._ao-link, :scope ._ao-link{align-items:center;gap:calc(var(--spacing) * 1);border-radius:var(--radius-sm);color:var(--color-link);text-underline-offset:2px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;text-decoration-line:underline;transition-duration:.15s;display:inline-flex}
313
313
  @media (hover:hover){:scope._ao-link:hover, :scope ._ao-link:hover{color:var(--color-link-hover)}}
314
314
  :scope._ao-link:focus-visible, :scope ._ao-link:focus-visible{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-focus)}
315
+ :scope._ao-link, :scope ._ao-link{overflow-wrap:break-word}
315
316
  :scope._ao-link>:is(i,svg), :scope ._ao-link>:is(i,svg){flex-shrink:0}
316
317
  :scope._ao-link-external, :scope ._ao-link-external{--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")}
317
318
  :scope._ao-link-external:after, :scope ._ao-link-external:after{content:"";width:.85em;height:.85em;-webkit-mask:var(--link-external-arrow) center / contain no-repeat;-webkit-mask:var(--link-external-arrow) center / contain no-repeat;-webkit-mask:var(--link-external-arrow) center / contain no-repeat;mask:var(--link-external-arrow) center / contain no-repeat;background-color:currentColor;flex:none}
@@ -382,7 +383,7 @@
382
383
  :scope input._ao-checkbox:checked, :scope input._ao-checkbox:indeterminate{border-color:var(--color-primary);background-color:var(--color-primary)}
383
384
  @media (hover:hover){:scope:is(input._ao-checkbox:checked,input._ao-checkbox:indeterminate):hover, :scope :is(input._ao-checkbox:checked,input._ao-checkbox:indeterminate):hover{background-color:var(--color-primary-hover)}}
384
385
  :scope input._ao-checkbox:checked:after, :scope input._ao-checkbox:indeterminate:after{content:"";width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3);background-color:var(--color-primary-content);-webkit-mask:var(--checkbox-check) center / contain no-repeat;-webkit-mask:var(--checkbox-check) center / contain no-repeat;-webkit-mask:var(--checkbox-check) center / contain no-repeat;mask:var(--checkbox-check) center / contain no-repeat}
385
- :scope label:has(>._ao-checkbox){cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);display:inline-flex}
386
+ :scope label:has(>._ao-checkbox){cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);overflow-wrap:break-word;min-width:0;display:inline-flex}
386
387
  :scope label:has(>._ao-checkbox:disabled), :scope label:has(>._ao-checkbox[data-disabled]){cursor:not-allowed;opacity:.6}
387
388
  :scope._ao-radio, :scope ._ao-radio{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);cursor:pointer;border-style:var(--tw-border-style);background-color:var(--color-surface);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-width:1px;border-radius:3.40282e38px;flex-shrink:0;justify-content:center;align-items:center;transition-duration:.15s;display:inline-flex}
388
389
  :scope._ao-radio:focus-visible, :scope ._ao-radio:focus-visible{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-focus)}
@@ -400,7 +401,7 @@
400
401
  :scope input._ao-radio:checked:after{content:"";width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5);background-color:var(--color-primary-content);border-radius:3.40282e38px}
401
402
  :scope._ao-radio-group, :scope ._ao-radio-group{gap:calc(var(--spacing) * 4);flex-wrap:wrap;display:inline-flex}
402
403
  :scope._ao-radio-group-vertical, :scope ._ao-radio-group-vertical{align-items:flex-start;gap:calc(var(--spacing) * 2);flex-direction:column}
403
- :scope label:has(>._ao-radio){cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);display:inline-flex}
404
+ :scope label:has(>._ao-radio){cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);overflow-wrap:break-word;min-width:0;display:inline-flex}
404
405
  :scope label:has(>._ao-radio:disabled), :scope label:has(>._ao-radio[data-disabled]){cursor:not-allowed;opacity:.6}
405
406
  :scope._ao-switch, :scope ._ao-switch{height:calc(var(--spacing) * 5);width:calc(var(--spacing) * 9);cursor:pointer;border-style:var(--tw-border-style);padding:calc(var(--spacing) * .5);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-width:1px;border-color:#0000;border-radius:3.40282e38px;flex-shrink:0;align-items:center;transition-duration:.15s;display:inline-flex;position:relative}
406
407
  :scope._ao-switch:focus-visible, :scope ._ao-switch:focus-visible{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-focus)}
@@ -414,7 +415,7 @@
414
415
  :scope input._ao-switch:checked{background-color:var(--color-primary)}
415
416
  :scope input._ao-switch:before{content:"";width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);background-color:var(--color-paper);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;border-radius:3.40282e38px;transition-duration:.15s}
416
417
  :scope input._ao-switch:checked:before{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}
417
- :scope label:has(>._ao-switch){cursor:pointer;align-items:center;gap:calc(var(--spacing) * 3);display:inline-flex}
418
+ :scope label:has(>._ao-switch){cursor:pointer;align-items:center;gap:calc(var(--spacing) * 3);overflow-wrap:break-word;min-width:0;display:inline-flex}
418
419
  :scope label:has(>._ao-switch:disabled), :scope label:has(>._ao-switch[data-disabled]){cursor:not-allowed;opacity:.6}
419
420
  :scope._ao-select, :scope ._ao-select{cursor:pointer;justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-surface);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);text-align:left;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:1;color:var(--color-text);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;-webkit-user-select:none;user-select:none;line-height:1;transition-duration:.15s;display:inline-flex}
420
421
  @media (hover:hover){:scope._ao-select:hover, :scope ._ao-select:hover{border-color:var(--color-border-strong)}}
@@ -437,15 +438,15 @@
437
438
  :scope._ao-select-popup, :scope ._ao-select-popup{max-height:calc(var(--spacing) * 72);min-width:var(--anchor-width);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-surface);padding-block:calc(var(--spacing) * 1);color:var(--color-text);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.1s;--tw-outline-style:none;outline-style:none;transition-duration:.1s;overflow:auto}
438
439
  :scope._ao-select-popup[data-starting-style], :scope ._ao-select-popup[data-starting-style], :scope._ao-select-popup[data-ending-style], :scope ._ao-select-popup[data-ending-style]{opacity:0}
439
440
  :scope._ao-select-popup[data-starting-style], :scope ._ao-select-popup[data-starting-style]{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}
440
- :scope._ao-select-item, :scope ._ao-select-item{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-outline-style:none;-webkit-user-select:none;user-select:none;outline-style:none;display:flex}
441
+ :scope._ao-select-item, :scope ._ao-select-item{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-outline-style:none;-webkit-user-select:none;user-select:none;overflow-wrap:break-word;outline-style:none;min-width:0;display:flex}
441
442
  :scope._ao-select-item[data-highlighted], :scope ._ao-select-item[data-highlighted]{background-color:var(--color-surface-muted)}
442
443
  :scope._ao-select-item[data-selected], :scope ._ao-select-item[data-selected]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}
443
444
  :scope._ao-select-item[data-disabled], :scope ._ao-select-item[data-disabled]{cursor:not-allowed;opacity:.5}
444
445
  :scope._ao-select-item-indicator, :scope ._ao-select-item-indicator{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4);color:var(--color-primary);justify-content:center;align-items:center;margin-left:auto;display:inline-flex}
445
446
  :scope._ao-select-group-label, :scope ._ao-select-group-label{padding-inline:calc(var(--spacing) * 3);padding-top:calc(var(--spacing) * 2);padding-bottom:calc(var(--spacing) * 1);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide);color:var(--color-text-muted);text-transform:uppercase}
446
- :scope._ao-card, :scope ._ao-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-surface-muted);color:var(--color-text);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);flex-direction:column;display:flex}
447
+ :scope._ao-card, :scope ._ao-card{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-surface-muted);color:var(--color-text);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);overflow-wrap:break-word;flex-direction:column;min-width:0;display:flex}
447
448
  :scope._ao-card-body, :scope ._ao-card-body{gap:calc(var(--spacing) * 3);padding:calc(var(--spacing) * 5);flex-direction:column;display:flex}
448
- :scope._ao-card-title, :scope ._ao-card-title{align-items:center;gap:calc(var(--spacing) * 2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);display:flex}
449
+ :scope._ao-card-title, :scope ._ao-card-title{align-items:center;gap:calc(var(--spacing) * 2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);min-width:0;display:flex}
449
450
  :scope._ao-card-header, :scope ._ao-card-header{align-items:center;gap:calc(var(--spacing) * 2);display:flex}
450
451
  :scope._ao-card-toolbar, :scope ._ao-card-toolbar{margin-top:calc(var(--spacing) * -.5);align-items:center;gap:calc(var(--spacing) * 1);margin-left:auto;display:flex}
451
452
  :scope._ao-card-toolbar :is(i,svg), :scope ._ao-card-toolbar :is(i,svg){font-size:1.25rem}
@@ -473,14 +474,14 @@
473
474
  :scope._ao-card-info ._ao-stat-card-value, :scope ._ao-card-info ._ao-stat-card-value{color:var(--color-info)}
474
475
  :scope._ao-card-success ._ao-stat-card-value, :scope ._ao-card-success ._ao-stat-card-value{color:var(--color-success)}
475
476
  :scope._ao-card-danger ._ao-stat-card-value, :scope ._ao-card-danger ._ao-stat-card-value{color:var(--color-danger)}
476
- :scope._ao-dialog, :scope ._ao-dialog{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-surface);padding:calc(var(--spacing) * 0);color:var(--color-text);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);opacity:1;width:calc(100% - 2rem);max-width:32rem;max-height:calc(100dvh - 2rem);transition:display .15s allow-discrete, overlay .15s allow-discrete, opacity .15s ease-out, transform .15s ease-out;flex-direction:column;margin:auto;transform:translateY(0)scale(1)}
477
+ :scope._ao-dialog, :scope ._ao-dialog{border-radius:var(--radius-xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-border);background-color:var(--color-surface);padding:calc(var(--spacing) * 0);color:var(--color-text);--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);overflow-wrap:break-word;opacity:1;width:calc(100% - 2rem);max-width:32rem;max-height:calc(100dvh - 2rem);transition:display .15s allow-discrete, overlay .15s allow-discrete, opacity .15s ease-out, transform .15s ease-out;flex-direction:column;margin:auto;transform:translateY(0)scale(1)}
477
478
  :scope._ao-dialog[open], :scope ._ao-dialog[open]{display:flex}
478
479
  :scope._ao-dialog::backdrop, :scope ._ao-dialog::backdrop{background:var(--color-scrim);transition:display .15s allow-discrete, overlay .15s allow-discrete, background .15s ease-out}
479
480
  @starting-style{:scope._ao-dialog[open], :scope ._ao-dialog[open]{opacity:0;transform:translateY(-.5rem)scale(.98)}:scope._ao-dialog[open]::backdrop, :scope ._ao-dialog[open]::backdrop{background:0 0}}
480
481
  :scope._ao-dialog-sm, :scope ._ao-dialog-sm{max-width:24rem}
481
482
  :scope._ao-dialog-lg, :scope ._ao-dialog-lg{max-width:48rem}
482
483
  :scope._ao-dialog-header, :scope ._ao-dialog-header{align-items:flex-start;gap:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 5);padding-top:calc(var(--spacing) * 5);padding-bottom:calc(var(--spacing) * 3);display:flex}
483
- :scope._ao-dialog-title, :scope ._ao-dialog-title{margin:calc(var(--spacing) * 0);align-items:center;gap:calc(var(--spacing) * 2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);flex:1;display:flex}
484
+ :scope._ao-dialog-title, :scope ._ao-dialog-title{margin:calc(var(--spacing) * 0);align-items:center;gap:calc(var(--spacing) * 2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-leading:var(--leading-tight);line-height:var(--leading-tight);--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);flex:1;min-width:0;display:flex}
484
485
  :scope._ao-dialog-description, :scope ._ao-dialog-description{margin-top:calc(var(--spacing) * -2);margin-bottom:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 5);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text-muted)}
485
486
  :scope._ao-dialog-body, :scope ._ao-dialog-body{min-height:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 3);padding-inline:calc(var(--spacing) * 5);padding-block:calc(var(--spacing) * 3);flex-direction:column;flex:1;display:flex;overflow-y:auto}
486
487
  :scope._ao-dialog>form, :scope ._ao-dialog>form{min-height:calc(var(--spacing) * 0);flex-direction:column;flex:1;display:flex}
@@ -488,7 +489,7 @@
488
489
  :scope._ao-dialog-close, :scope ._ao-dialog-close{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7);cursor:pointer;border-radius:var(--radius-md);color:var(--color-text-muted);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.15s;background-color:#0000;flex-shrink:0;justify-content:center;align-items:center;transition-duration:.15s;display:inline-flex}
489
490
  @media (hover:hover){:scope._ao-dialog-close:hover, :scope ._ao-dialog-close:hover{background-color:var(--color-surface-strong);color:var(--color-text)}}
490
491
  :scope._ao-dialog-close:focus-visible, :scope ._ao-dialog-close:focus-visible{outline-style:var(--tw-outline-style);outline-offset:2px;outline-width:2px;outline-color:var(--color-focus)}
491
- :scope._ao-field, :scope ._ao-field{gap:calc(var(--spacing) * 1.5);flex-direction:column;display:flex}
492
+ :scope._ao-field, :scope ._ao-field{gap:calc(var(--spacing) * 1.5);overflow-wrap:break-word;flex-direction:column;display:flex}
492
493
  :scope._ao-field-row, :scope ._ao-field-row{align-items:center;gap:calc(var(--spacing) * 3);flex-direction:row}
493
494
  :scope._ao-field-label, :scope ._ao-field-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:1;--tw-font-weight:var(--font-weight-medium);line-height:1;font-weight:var(--font-weight-medium);color:var(--color-text)}
494
495
  :scope._ao-field-label[data-required]:after, :scope ._ao-field-label[data-required]:after{content:" *";color:var(--color-danger)}
@@ -550,7 +551,9 @@
550
551
  :scope._ao-menu-item, :scope ._ao-menu-item{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border-style:var(--tw-border-style);width:100%;padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);text-align:left;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:1;color:var(--color-text);-webkit-user-select:none;user-select:none;background-color:#0000;border-width:0;line-height:1;text-decoration-line:none;display:flex}
551
552
  @media (hover:hover){:scope._ao-menu-item:hover, :scope ._ao-menu-item:hover{background-color:var(--color-surface-muted)}}
552
553
  :scope._ao-menu-item:focus-visible, :scope ._ao-menu-item:focus-visible{background-color:var(--color-surface-muted);--tw-outline-style:none;outline-style:none}
553
- :scope._ao-menu-item:disabled, :scope ._ao-menu-item:disabled, :scope._ao-menu-item[aria-disabled=true], :scope ._ao-menu-item[aria-disabled=true]{cursor:not-allowed;opacity:.5}
554
+ :scope._ao-menu-item:disabled, :scope ._ao-menu-item:disabled{cursor:not-allowed;opacity:.5}
555
+ :scope._ao-menu-item, :scope ._ao-menu-item{overflow-wrap:break-word;min-width:0}
556
+ :scope._ao-menu-item[aria-disabled=true], :scope ._ao-menu-item[aria-disabled=true]{cursor:not-allowed;opacity:.5}
554
557
  :scope._ao-menu-trigger>:is(i,svg), :scope ._ao-menu-trigger>:is(i,svg), :scope._ao-menu-item>:is(i,svg), :scope ._ao-menu-item>:is(i,svg){flex-shrink:0}
555
558
  :scope._ao-menu-separator, :scope ._ao-menu-separator{margin-block:calc(var(--spacing) * 1);border-style:var(--tw-border-style);background-color:var(--color-border);border-width:0;height:1px}
556
559
  :scope._ao-menu-group, :scope ._ao-menu-group{flex-direction:column;display:flex}
@@ -645,6 +648,7 @@
645
648
  :scope._ao-table, :scope ._ao-table{border-collapse:collapse;width:100%;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-text)}
646
649
  :scope._ao-table :where(th,td), :scope ._ao-table :where(th,td), :scope._ao-table-cell, :scope ._ao-table-cell, :scope._ao-table-header-cell, :scope ._ao-table-header-cell{border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-border);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 1.5);text-align:left;vertical-align:middle}
647
650
  :scope._ao-table :where(thead th), :scope ._ao-table :where(thead th), :scope._ao-table-header-cell, :scope ._ao-table-header-cell{border-bottom-color:var(--color-border-strong);background-color:var(--color-surface-muted);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--color-text-muted)}
651
+ :scope._ao-table :where(td), :scope ._ao-table :where(td), :scope._ao-table-cell, :scope ._ao-table-cell{overflow-wrap:break-word}
648
652
  :scope._ao-table>:last-child>tr:last-child :where(td), :scope ._ao-table>:last-child>tr:last-child :where(td), :scope._ao-table>:last-child>tr:last-child ._ao-table-cell, :scope ._ao-table>:last-child>tr:last-child ._ao-table-cell{border-bottom-style:var(--tw-border-style);border-bottom-width:0}
649
653
  :scope._ao-table :where(th,td)[data-align=right], :scope ._ao-table :where(th,td)[data-align=right]{text-align:right}
650
654
  :scope._ao-table :where(th,td)[data-align=center], :scope ._ao-table :where(th,td)[data-align=center]{text-align:center}
@@ -678,7 +682,7 @@
678
682
  :scope._ao-tooltip-wrap:hover>._ao-tooltip, :scope ._ao-tooltip-wrap:hover>._ao-tooltip, :scope._ao-tooltip-wrap:focus-within>._ao-tooltip, :scope ._ao-tooltip-wrap:focus-within>._ao-tooltip{visibility:visible;opacity:1;transition:opacity .15s ease-out .2s,visibility 0s linear .2s}
679
683
  :scope._ao-code-block, :scope ._ao-code-block{border-radius:var(--radius-lg);background-color:var(--color-code-surface);padding:calc(var(--spacing) * 3);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-code-text);white-space:pre-wrap;word-wrap:break-word;overflow:auto}
680
684
  :scope._ao-code-block-nowrap, :scope ._ao-code-block-nowrap{white-space:pre;word-wrap:normal}
681
- :scope._ao-prose, :scope ._ao-prose{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-normal);line-height:var(--leading-normal);color:var(--color-text)}
685
+ :scope._ao-prose, :scope ._ao-prose{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:var(--leading-normal);line-height:var(--leading-normal);color:var(--color-text);overflow-wrap:break-word}
682
686
  :scope._ao-prose :where(p,ul,ol,blockquote,pre,table,figure), :scope ._ao-prose :where(p,ul,ol,blockquote,pre,table,figure){margin-block:calc(var(--spacing) * 3)}
683
687
  :scope._ao-prose>:first-child, :scope ._ao-prose>:first-child{margin-top:0}
684
688
  :scope._ao-prose>:last-child, :scope ._ao-prose>:last-child{margin-bottom:0}
@@ -764,5 +768,4 @@
764
768
  :scope._ao-text-right, :scope ._ao-text-right{text-align:right}
765
769
  :scope._ao-tabular-nums, :scope ._ao-tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}
766
770
  :scope._ao-ring, :scope ._ao-ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}
767
- :scope._ao-select-all, :scope ._ao-select-all{-webkit-user-select:all;user-select:all}
768
771
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aortl/admin-css",
3
- "version": "0.16.0",
3
+ "version": "0.16.2",
4
4
  "description": "Pre-built CSS design system. Drop in via <link> and use semantic class names.",
5
5
  "keywords": [
6
6
  "components",
@@ -19,7 +19,8 @@
19
19
  "files": [
20
20
  "dist",
21
21
  "src",
22
- "README.md"
22
+ "README.md",
23
+ "CHANGELOG.md"
23
24
  ],
24
25
  "type": "module",
25
26
  "sideEffects": [
@@ -28,20 +28,20 @@
28
28
  hover:bg-surface-muted
29
29
  focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus;
30
30
  list-style: none;
31
+ /* Let a long label break and shrink instead of widening the row. */
32
+ overflow-wrap: break-word;
33
+ min-width: 0;
31
34
  }
32
35
 
33
36
  .accordion-summary::-webkit-details-marker {
34
37
  display: none;
35
38
  }
36
39
 
37
- /* Keep a leading icon at its intrinsic size; the chevron is the `::after`
38
- below, which is already `flex-shrink: 0`. */
39
40
  .accordion-summary > :is(i, svg) {
40
41
  flex-shrink: 0;
41
42
  }
42
43
 
43
- /* Chevron — pushed to the end with margin-left: auto so any number of
44
- leading items (label, optional icon) sit together on the start side. */
44
+ /* Chevron */
45
45
  .accordion-summary::after {
46
46
  content: "";
47
47
  width: 0.5rem;
@@ -60,14 +60,11 @@
60
60
 
61
61
  .accordion-content {
62
62
  @apply px-4 py-3 text-sm text-text border-t border-border;
63
+ overflow-wrap: break-word;
63
64
  }
64
65
 
65
- /* Smooth open/close via ::details-content. With interpolate-size enabled
66
- on the parent, the height auto 0 transition animates instead of
67
- snapping. content-visibility is pinned to visible so the closed content
68
- still contributes to intrinsic width — without this, a shrink-to-fit
69
- parent reflows narrower on close. Browsers without ::details-content
70
- degrade to the native instant toggle. */
66
+ /* content-visibility stays visible so the closed content still contributes
67
+ intrinsic width without it a shrink-to-fit parent reflows narrower on close. */
71
68
  .accordion-item::details-content {
72
69
  opacity: 0;
73
70
  height: 0;
@@ -1,19 +1,13 @@
1
1
  @layer components {
2
2
  .alert {
3
3
  @apply flex flex-col gap-1 w-full px-3 py-2 rounded-md border text-sm text-text;
4
- /* Inherited by the title, description, and any bare-text body so long
5
- words/URLs break instead of overflowing the (often grid-tracked) body. */
6
4
  overflow-wrap: break-word;
7
5
  }
8
6
 
9
- /* Leading icon as a direct child switches the layout to a two-column grid:
10
- icon spans all rows on the left, title/description stack on the right.
11
- No wrapper needed — works with `<i class="ti …">`, `@tabler/icons-react`,
12
- or any other inline SVG. */
7
+ /* A leading icon switches the layout to a two-column grid: icon left, text right. */
13
8
  .alert:has(> :is(i, svg):first-child) {
14
9
  display: grid;
15
- /* `minmax(0, 1fr)` (not the default `minmax(auto, 1fr)`) lets the text
16
- column shrink below its longest word so the body wraps. */
10
+ /* `minmax(0, 1fr)` lets the text column shrink below its longest word. */
17
11
  grid-template-columns: auto minmax(0, 1fr);
18
12
  column-gap: 0.5rem;
19
13
  row-gap: 0.25rem;
@@ -25,10 +19,7 @@
25
19
  line-height: 1.25;
26
20
  }
27
21
 
28
- /* With a title/description, declare two explicit rows so the icon can span
29
- them (`grid-row: 1 / -1` only resolves correctly against an explicit grid)
30
- and force the text parts into column 2 so the description doesn't wrap
31
- under the icon. */
22
+ /* Explicit rows — the icon's `grid-row: 1 / -1` only resolves against an explicit grid. */
32
23
  .alert:has(> :is(i, svg):first-child):has(> .alert-title) {
33
24
  grid-template-rows: auto auto;
34
25
  align-items: start;
@@ -38,20 +29,14 @@
38
29
  grid-row: 1 / -1;
39
30
  }
40
31
 
41
- /* Grid items default to `min-width: auto` and won't shrink below their
42
- longest word; `min-width: 0` lets the title/description wrap inside the
43
- text column. */
32
+ /* Grid items default to `min-width: auto` and won't shrink below their longest word. */
44
33
  .alert > :is(.alert-title, .alert-description) {
45
34
  grid-column: 2;
46
35
  min-width: 0;
47
36
  }
48
37
 
49
- /* Solid status fill the variant color carries the signal, and the title,
50
- leading icon, and body all sit on top in the matching `-content` color
51
- (white on the colored accents, black on bright yellow). Title/icon inherit
52
- that content color from the root, so no per-variant text rule is needed.
53
- The description drops to 85% opacity to read as secondary text without
54
- introducing a second hue. */
38
+ /* Solid status fills. Title and icon inherit the `-content` color from the
39
+ root, so no per-variant text rule is needed. */
55
40
  .alert-info {
56
41
  @apply bg-info border-info text-info-content;
57
42
  }
@@ -1,8 +1,6 @@
1
1
  @layer components {
2
- /* Layout container CSS grid with named areas. Sidebar/footer slots are
3
- optional; modifier classes adjust the template. The sidebar column uses
4
- `auto` so the .sidebar's own width drives it — collapse/peek modes change
5
- the sidebar's intrinsic width instead of recomputing the grid here. */
2
+ /* The sidebar column is `auto` so the .sidebar's own width drives it —
3
+ collapse/peek modes change the sidebar's intrinsic width, not this grid. */
6
4
  .app-shell {
7
5
  --app-shell-sidebar-w: 240px;
8
6
  --app-shell-sidebar-w-collapsed: 56px;
@@ -12,11 +12,7 @@
12
12
  flex-shrink: 0;
13
13
  }
14
14
 
15
- /* Variants — solid status fills, matching the alert palette so danger/
16
- success/etc. stay coherent across status indicators and chips in tables.
17
- Each sits on the full-strength status color with the matching `-content`
18
- text (white on the colored accents, black on bright yellow). The bare
19
- `.badge` (no modifier) renders the neutral look, folded into the base. */
15
+ /* Variants — solid status fills matching the alert palette; bare `.badge` is the neutral look. */
20
16
  .badge-info {
21
17
  @apply bg-info text-info-content border-info;
22
18
  }
@@ -1,6 +1,7 @@
1
1
  @layer components {
2
2
  .breadcrumbs {
3
3
  @apply text-sm text-text-muted;
4
+ overflow-wrap: break-word;
4
5
  }
5
6
 
6
7
  .breadcrumbs > ol {
@@ -14,15 +15,11 @@
14
15
  focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus;
15
16
  }
16
17
 
17
- /* `aria-current` on the last item promotes it to body text weight. Non-links
18
- stay non-interactive — same selector matches both <a aria-current> and
19
- <span aria-current>. */
20
18
  .breadcrumb-item[aria-current="page"] {
21
19
  @apply text-text font-medium pointer-events-none;
22
20
  }
23
21
 
24
- /* Slash separator. Use `<span class="breadcrumb-separator">` between items;
25
- swap content via a child icon when you want a chevron instead. */
22
+ /* An empty separator renders a slash; a child icon replaces it. */
26
23
  .breadcrumb-separator {
27
24
  @apply inline-flex items-center text-text-muted/60 select-none;
28
25
  }
@@ -36,9 +33,7 @@
36
33
  height: 0.875rem;
37
34
  }
38
35
 
39
- /* Setting a width on a flex item doesn't stop it from shrinking, so pin the
40
- shrink factor too — keeps crumb and separator icons from squishing when a
41
- long label tightens the row. */
36
+ /* A width alone doesn't stop a flex item from shrinking. */
42
37
  .breadcrumb-item > :is(i, svg),
43
38
  .breadcrumb-separator > :is(i, svg) {
44
39
  flex-shrink: 0;
@@ -7,11 +7,8 @@
7
7
  @apply rounded-none relative focus-visible:z-10;
8
8
  }
9
9
 
10
- /* Split-button support: a <details class="menu"> child sits in the strip
11
- alongside .btn children, with its .menu-trigger getting the same edge
12
- treatment as the buttons around it. inline-flex on the details makes
13
- the <summary> stretch vertically to match sibling .btn heights, so an
14
- icon-only trigger doesn't end up shorter than its neighbours. */
10
+ /* Split buttons: a <details class="menu"> sits in the strip; inline-flex
11
+ stretches its <summary> to match sibling .btn heights. */
15
12
  .btn-group > .menu {
16
13
  @apply relative focus-visible:z-10;
17
14
  display: inline-flex;
@@ -21,10 +18,7 @@
21
18
  @apply rounded-none;
22
19
  }
23
20
 
24
- /* Horizontal-only: overlap left edges, round outer left/right corners,
25
- and paint the seam between adjacent items as a left-side divider.
26
- Scoped with :not(.btn-group-vertical) so vertical groups (which share
27
- the .btn-group class) don't inherit horizontal edge treatment. */
21
+ /* Horizontal-only vertical groups also carry .btn-group, hence the :not() scope. */
28
22
  .btn-group:not(.btn-group-vertical) > .btn:not(:first-child),
29
23
  .btn-group:not(.btn-group-vertical) > .menu:not(:first-child) {
30
24
  @apply -ml-px;
@@ -40,11 +34,8 @@
40
34
  @apply rounded-r-lg;
41
35
  }
42
36
 
43
- /* Divider between adjacent items so same-coloured siblings (e.g. a
44
- split button) read as separate actions. currentColor + color-mix
45
- means the divider works across every .btn variant — light on
46
- coloured buttons, dark on ghost/secondary — without per-variant
47
- rules. */
37
+ /* Seam divider color-mix on currentColor adapts to every .btn variant
38
+ without per-variant rules. */
48
39
  .btn-group:not(.btn-group-vertical) > .btn:not(:first-child),
49
40
  .btn-group:not(.btn-group-vertical) > .menu:not(:first-child) > .menu-trigger {
50
41
  border-left-color: color-mix(in oklab, currentColor 25%, transparent);
@@ -78,11 +69,8 @@
78
69
  border-top-color: color-mix(in oklab, currentColor 25%, transparent);
79
70
  }
80
71
 
81
- /* Full width — the group stretches across its container instead of
82
- shrinking to its content. Horizontal groups split the row evenly so
83
- every item is the same width regardless of label length; vertical
84
- groups already stretch their items to the group's width, so widening
85
- the group is enough. Mirrors the `fullWidth` treatment on tabs. */
72
+ /* Full width — horizontal items split the row evenly; vertical items
73
+ already stretch, so widening the group is enough. */
86
74
  .btn-group-full-width:not(.btn-group-vertical) {
87
75
  @apply flex w-full;
88
76
  }
@@ -10,16 +10,12 @@
10
10
  disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none;
11
11
  }
12
12
 
13
- /* Keep leading/trailing icons at their intrinsic size a flex item defaults
14
- to `flex-shrink: 1`, so a narrow flex container would otherwise squish the
15
- glyph horizontally before wrapping or truncating the label. */
13
+ /* Don't let a narrow container squish the glyph before the label wraps. */
16
14
  .btn > :is(i, svg) {
17
15
  flex-shrink: 0;
18
16
  }
19
17
 
20
- /* Variants — the bare `.btn` (no modifier) is the low-emphasis default, so
21
- most admin buttons need no variant class. The colored variants reset the
22
- border to transparent since the base now carries a visible one. */
18
+ /* Variants — bare `.btn` is the low-emphasis default; most buttons need no variant class. */
23
19
  .btn-primary {
24
20
  @apply bg-primary text-primary-content border-transparent hover:bg-primary-hover;
25
21
  }
@@ -28,11 +24,7 @@
28
24
  @apply bg-transparent text-text border-transparent hover:bg-surface-muted;
29
25
  }
30
26
 
31
- /* Muted — fills with the page background (`surface`) so it sits flush
32
- instead of reading as a raised control, mirroring `card-muted`. The
33
- default `.btn` is one step up (`surface-muted`); hover lifts the muted
34
- button to that resting fill. For de-emphasised actions that should
35
- recede into the page. */
27
+ /* Fills with the page background so it sits flush instead of raised — mirrors `card-muted`. */
36
28
  .btn-muted {
37
29
  @apply bg-surface hover:bg-surface-muted;
38
30
  }
@@ -50,14 +42,11 @@
50
42
  @apply text-base px-5 py-2.5 gap-2.5;
51
43
  }
52
44
 
53
- /* Modifiers */
54
45
  .btn-full-width {
55
46
  @apply w-full;
56
47
  }
57
48
 
58
- /* Icon-only — equalises padding so the button reads as a square. The React
59
- wrapper adds this automatically when `.btn` has an icon but no text
60
- children; vanilla callers add it themselves. Pair with `aria-label`. */
49
+ /* Icon-only — equalises padding so the button reads as a square. Pair with `aria-label`. */
61
50
  .btn-square {
62
51
  @apply px-2;
63
52
  }
@@ -70,11 +59,8 @@
70
59
  @apply px-2.5;
71
60
  }
72
61
 
73
- /* Loading state — paints a spinner via ::before, so no extra markup is
74
- required. Sized in `em` so it tracks btn-sm / btn-lg. Pair with the
75
- `disabled` attribute (or the React wrapper, which sets it for you) for
76
- keyboard a11y; the visual disable lives here so vanilla still feels right
77
- without it. */
62
+ /* Spinner via ::before, `em`-sized so it tracks btn-sm / btn-lg. Pair with
63
+ the `disabled` attribute for keyboard a11y. */
78
64
  .btn-loading {
79
65
  @apply opacity-50 cursor-not-allowed pointer-events-none;
80
66
  }
@@ -91,9 +77,7 @@
91
77
  animation: spinner-spin 0.6s linear infinite;
92
78
  }
93
79
 
94
- /* Suppress a leading icon while loading so we don't show two glyphs.
95
- Trailing icons stay visible — they may convey structural meaning
96
- (e.g. a dropdown chevron on a split-button trigger). */
80
+ /* Hide the leading icon while loading; trailing icons (e.g. a dropdown chevron) stay. */
97
81
  .btn-loading > :is(i, svg):first-child {
98
82
  display: none;
99
83
  }