@leonardaustin/ui 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -3,6 +3,7 @@
3
3
  @layer utilities{.group-focus-within\:block:is(:where(.group):focus-within *){display:block}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}}}
4
4
  @layer utilities{.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-full{min-height:100%}.min-w-5{min-width:calc(var(--spacing) * 5)}.p-1{padding:calc(var(--spacing) * 1)}.pl-1{padding-left:calc(var(--spacing) * 1)}.self-start{align-self:flex-start}.focus-visible\:outline-none:focus-visible{--utility-outline-style:none;outline-style:none}}
5
5
  @layer utilities{.focus-visible\:opacity-100:focus-visible{opacity:1}}
6
+ @layer utilities{.max-w-\[576px\]{max-width:576px}.max-w-\[768px\]{max-width:768px}.max-w-\[1024px\]{max-width:1024px}.self-center{align-self:center}}
6
7
 
7
8
 
8
9
  /* ─── Theme: CSS Custom Properties ─── */
@@ -52,6 +53,10 @@
52
53
  --blue-muted: rgba(96, 165, 250, 0.15);
53
54
  --purple: #a78bfa;
54
55
  --purple-muted: rgba(167, 139, 250, 0.15);
56
+ --teal: #2dd4bf;
57
+ --teal-muted: rgba(45, 212, 191, 0.15);
58
+ --rose: #fb7185;
59
+ --rose-muted: rgba(251, 113, 133, 0.15);
55
60
 
56
61
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
57
62
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
@@ -131,6 +136,10 @@
131
136
  --blue-muted: rgba(59, 130, 246, 0.12);
132
137
  --purple: #8b5cf6;
133
138
  --purple-muted: rgba(139, 92, 246, 0.12);
139
+ --teal: #14b8a6;
140
+ --teal-muted: rgba(20, 184, 166, 0.12);
141
+ --rose: #f43f5e;
142
+ --rose-muted: rgba(244, 63, 94, 0.12);
134
143
 
135
144
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
136
145
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.12);
@@ -216,6 +225,10 @@
216
225
  --blue-muted: rgba(37, 99, 235, 0.12);
217
226
  --purple: #7c3aed;
218
227
  --purple-muted: rgba(124, 58, 237, 0.12);
228
+ --teal: #0d9488;
229
+ --teal-muted: rgba(13, 148, 136, 0.12);
230
+ --rose: #e11d48;
231
+ --rose-muted: rgba(225, 29, 72, 0.12);
219
232
 
220
233
  --shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06);
221
234
  --shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08);
@@ -287,6 +300,10 @@
287
300
  --blue-muted: rgba(102, 217, 239, 0.15);
288
301
  --purple: #ae81ff;
289
302
  --purple-muted: rgba(174, 129, 255, 0.15);
303
+ --teal: #3ddbc0;
304
+ --teal-muted: rgba(61, 219, 192, 0.15);
305
+ --rose: #fd5ff0;
306
+ --rose-muted: rgba(253, 95, 240, 0.15);
290
307
 
291
308
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
292
309
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
@@ -357,6 +374,10 @@
357
374
  --blue-muted: rgba(38, 139, 210, 0.15);
358
375
  --purple: #6c71c4;
359
376
  --purple-muted: rgba(108, 113, 196, 0.15);
377
+ --teal: #2aa198;
378
+ --teal-muted: rgba(42, 161, 152, 0.15);
379
+ --rose: #d33682;
380
+ --rose-muted: rgba(211, 54, 130, 0.15);
360
381
 
361
382
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
362
383
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.5);
@@ -427,6 +448,10 @@
427
448
  --blue-muted: rgba(96, 165, 250, 0.15);
428
449
  --purple: #a78bfa;
429
450
  --purple-muted: rgba(167, 139, 250, 0.15);
451
+ --teal: #2dd4bf;
452
+ --teal-muted: rgba(45, 212, 191, 0.15);
453
+ --rose: #fb7185;
454
+ --rose-muted: rgba(251, 113, 133, 0.15);
430
455
 
431
456
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
432
457
  --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.6);
@@ -491,6 +516,10 @@
491
516
  --blue-muted: rgba(37, 99, 235, 0.12);
492
517
  --purple: #7c3aed;
493
518
  --purple-muted: rgba(124, 58, 237, 0.12);
519
+ --teal: #0d9488;
520
+ --teal-muted: rgba(13, 148, 136, 0.12);
521
+ --rose: #e11d48;
522
+ --rose-muted: rgba(225, 29, 72, 0.12);
494
523
 
495
524
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.1);
496
525
  --shadow-md: 0 2px 8px rgba(0, 0, 0, 0.14);
@@ -746,6 +775,31 @@ pre.shiki span {
746
775
  color: var(--text-table-header, var(--text-tertiary));
747
776
  }
748
777
 
778
+ /* Teal and rose status colours, defined by every theme. */
779
+ .bg-teal {
780
+ background-color: var(--teal);
781
+ }
782
+
783
+ .bg-teal-muted {
784
+ background-color: var(--teal-muted);
785
+ }
786
+
787
+ .text-teal {
788
+ color: var(--teal);
789
+ }
790
+
791
+ .bg-rose {
792
+ background-color: var(--rose);
793
+ }
794
+
795
+ .bg-rose-muted {
796
+ background-color: var(--rose-muted);
797
+ }
798
+
799
+ .text-rose {
800
+ color: var(--rose);
801
+ }
802
+
749
803
  @media (hover: hover) {
750
804
  .hover\:text-text-table-header-hover:hover {
751
805
  color: var(--text-table-header-hover, var(--text-secondary));
@@ -1817,7 +1871,7 @@ textarea:disabled {
1817
1871
  justify-content: center;
1818
1872
  width: 100%;
1819
1873
  height: 100%;
1820
- border: 1px solid var(--border);
1874
+ border: 1px solid var(--control-border, var(--border));
1821
1875
  border-radius: var(--ui-radius, 4px);
1822
1876
  background: var(--bg-secondary);
1823
1877
  color: var(--text-on-accent);
@@ -1853,6 +1907,11 @@ textarea:disabled {
1853
1907
  .ui-bar {
1854
1908
  min-height: calc(var(--spacing) * 12 + 1px);
1855
1909
  }
1910
+ .ui-bar[data-control-size="compact"] {
1911
+ min-height: calc(
1912
+ var(--spacing) * 7 + 2 * var(--ui-bar-padding-y, var(--spacing) * 2.5) + 1px
1913
+ );
1914
+ }
1856
1915
  .ui-bar[data-control-size="comfortable"] {
1857
1916
  min-height: calc(44px + var(--spacing) * 5 + 1px);
1858
1917
  }
@@ -1921,6 +1980,71 @@ select.ui-sized-control[data-control-size="comfortable"] {
1921
1980
  right: 0;
1922
1981
  }
1923
1982
 
1983
+ /* Theme hooks. Every token below is optional: when a theme leaves it unset
1984
+ the rule falls back to the component's own utility classes (revert-layer)
1985
+ or to the previous value, so existing themes look exactly as before.
1986
+
1987
+ Field labels: --ui-label-transform, --ui-label-tracking, --ui-label-color. */
1988
+ .ui-field-label {
1989
+ color: var(--ui-label-color, var(--text-secondary));
1990
+ text-transform: var(--ui-label-transform, inherit);
1991
+ letter-spacing: var(--ui-label-tracking, inherit);
1992
+ }
1993
+
1994
+ /* Unchecked switch edge (--control-border) and knob (--control-knob-checked). */
1995
+ .ui-switch-off {
1996
+ border-color: var(--control-border, var(--border));
1997
+ }
1998
+ .ui-switch-knob {
1999
+ background-color: var(--control-knob);
2000
+ }
2001
+ [role="switch"][aria-checked="true"] > .ui-switch-knob {
2002
+ background-color: var(--control-knob-checked, var(--control-knob));
2003
+ }
2004
+
2005
+ /* Compact control sizing: --ui-control-height, --ui-control-font-size and
2006
+ --ui-control-padding-x. These beat the size utilities on the control, so
2007
+ they apply only to compact controls; Button sm/lg, icon buttons and
2008
+ buttons whose label hides responsively, and Button xs/sm/lg keep their own sizing. */
2009
+ .ui-sized-control[data-control-size="compact"]:not(textarea):not(
2010
+ [data-variant="icon"]
2011
+ ):not([data-size="xs"]):not([data-size="sm"]):not([data-size="lg"]):not(
2012
+ [data-hide-label]
2013
+ ) {
2014
+ height: var(--ui-control-height, revert-layer);
2015
+ }
2016
+ .ui-sized-control[data-control-size="compact"]:not([data-variant="icon"]):not(
2017
+ [data-size="xs"]
2018
+ ):not([data-size="sm"]):not([data-size="lg"]):not([data-hide-label]) {
2019
+ font-size: var(--ui-control-font-size, revert-layer);
2020
+ }
2021
+ .ui-sized-control[data-control-size="compact"]:not([data-variant="icon"]):not(
2022
+ [data-size="xs"]
2023
+ ):not([data-size="sm"]):not([data-size="lg"]):not([data-hide-label]):not(
2024
+ [data-has-icon="true"]
2025
+ ) {
2026
+ padding-inline-start: var(--ui-control-padding-x, revert-layer);
2027
+ }
2028
+ :is(
2029
+ button.ui-sized-control[data-variant],
2030
+ input.ui-sized-control:not(.ui-password-input),
2031
+ textarea.ui-sized-control
2032
+ )[data-control-size="compact"]:not([data-variant="icon"]):not(
2033
+ [data-size="xs"]
2034
+ ):not([data-size="sm"]):not([data-size="lg"]):not([data-hide-label]) {
2035
+ padding-inline-end: var(--ui-control-padding-x, revert-layer);
2036
+ }
2037
+
2038
+ /* Card, Dialog and SideSheet padding: --ui-surface-padding for bodies,
2039
+ --ui-bar-padding-x and --ui-bar-padding-y for header and footer bars. */
2040
+ .ui-surface-body {
2041
+ padding: var(--ui-surface-padding, revert-layer);
2042
+ }
2043
+ .ui-bar[data-control-size="compact"] {
2044
+ padding-inline: var(--ui-bar-padding-x, revert-layer);
2045
+ padding-block: var(--ui-bar-padding-y, revert-layer);
2046
+ }
2047
+
1924
2048
  /* Native progress supplies semantics; the decorative fill supports stripes in all browsers. */
1925
2049
  .ui-progress-track {
1926
2050
  --progress-color: var(--accent);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leonardaustin/ui",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "Reusable React component library and application shell for Leonard Austin projects.",
5
5
  "license": "MIT",
6
6
  "type": "module",