@leonardaustin/ui 0.6.0 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/config/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EA2CjC,CAAC;AAQF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,UAAU,CAE9D;AAED,eAAO,MAAM,WAAW,aAAkD,CAAC;AAC3E,eAAO,MAAM,UAAU,aAAmD,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,cAAc,EAAE,UAAU,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqDD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAQ3D,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAM7D,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,EASnC,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/config/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EAiDjC,CAAC;AASF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,UAAU,CAE9D;AAED,eAAO,MAAM,WAAW,aAAkD,CAAC;AAC3E,eAAO,MAAM,UAAU,aAAmD,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;IACtB,cAAc,EAAE,UAAU,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqDD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAS3D,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAM7D,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,EASnC,CAAC"}
package/dist/index.js CHANGED
@@ -1799,6 +1799,15 @@ var xt = [
1799
1799
  fg: "#d4d4d8"
1800
1800
  }
1801
1801
  },
1802
+ {
1803
+ value: "lightInverted",
1804
+ label: "Light Inverted",
1805
+ icon: oe,
1806
+ preview: {
1807
+ bg: "#f1f2f4",
1808
+ fg: "#ffffff"
1809
+ }
1810
+ },
1802
1811
  {
1803
1812
  value: "monokai",
1804
1813
  label: "Monokai",
@@ -1846,6 +1855,7 @@ var xt = [
1846
1855
  }
1847
1856
  ], St = new Set([
1848
1857
  "light",
1858
+ "lightInverted",
1849
1859
  "cyberBrutalLight",
1850
1860
  "hashiTheme"
1851
1861
  ]);
@@ -1885,6 +1895,7 @@ var wt = xt.filter((e) => Ct(e.value)), Tt = xt.filter((e) => !Ct(e.value)), Et
1885
1895
  }, Ot = {
1886
1896
  dark: Et,
1887
1897
  light: Et,
1898
+ lightInverted: Et,
1888
1899
  monokai: Et,
1889
1900
  solarized: Et,
1890
1901
  cyberBrutalDark: Dt,
@@ -3413,13 +3424,13 @@ function Pn({ data: e, columns: t, getRowId: n, onRowClick: r, emptyMessage: i =
3413
3424
  u(e), m(t);
3414
3425
  }
3415
3426
  return /* @__PURE__ */ h("div", {
3416
- className: "border-border overflow-x-auto rounded-md border",
3427
+ className: "border-border bg-bg-table overflow-x-auto rounded-md border",
3417
3428
  children: /* @__PURE__ */ g("table", {
3418
3429
  className: "font-data w-full text-xs",
3419
3430
  children: [/* @__PURE__ */ h("thead", { children: /* @__PURE__ */ h("tr", {
3420
- className: "border-border bg-bg-secondary border-b",
3431
+ className: "border-border bg-bg-table-header border-b",
3421
3432
  children: t.map((e) => /* @__PURE__ */ h("th", {
3422
- className: V("text-2xs text-text-tertiary font-label h-7 px-3 text-left font-semibold tracking-wider uppercase", e.sortable && "hover:text-text-secondary cursor-pointer select-none"),
3433
+ className: V("text-2xs text-text-table-header font-label h-7 px-3 text-left font-semibold tracking-wider uppercase", e.sortable && "hover:text-text-table-header-hover cursor-pointer select-none"),
3423
3434
  style: { width: e.width },
3424
3435
  onClick: e.sortable ? () => S(e.key) : void 0,
3425
3436
  children: /* @__PURE__ */ g("span", {
@@ -3432,7 +3443,7 @@ function Pn({ data: e, columns: t, getRowId: n, onRowClick: r, emptyMessage: i =
3432
3443
  className: "text-text-tertiary h-32 text-center",
3433
3444
  children: i
3434
3445
  }) }) : b.map((e) => /* @__PURE__ */ h("tr", {
3435
- className: V("border-border h-8 border-b last:border-b-0", "hover:bg-bg-hover", r && "cursor-pointer"),
3446
+ className: V("border-border h-8 border-b last:border-b-0", "hover:bg-bg-hover transition-none", r && "cursor-pointer"),
3436
3447
  onClick: r ? () => r(e) : void 0,
3437
3448
  children: t.map((t) => /* @__PURE__ */ h("td", {
3438
3449
  className: V("text-text-primary px-3 whitespace-nowrap", t.cellClassName),
@@ -8452,7 +8463,7 @@ function Do({ start: e, end: t, children: n, className: r, startClassName: i, en
8452
8463
  //#region src/components/ui/UploadDropzone.tsx
8453
8464
  function Oo({ title: e = "Drag and drop files here, or click to browse", description: t, icon: n, accept: r, multiple: i, disabled: a, onChange: o, className: s }) {
8454
8465
  return /* @__PURE__ */ g("label", {
8455
- className: V("border-border hover:border-border-strong block rounded-md border-2 border-dashed p-8 text-center transition-colors duration-[100ms]", a ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-bg-hover", s),
8466
+ className: V("border-border hover:border-border-strong relative block rounded-md border-2 border-dashed p-8 text-center transition-colors duration-[100ms]", a ? "cursor-not-allowed opacity-60" : "cursor-pointer hover:bg-bg-hover", s),
8456
8467
  children: [
8457
8468
  /* @__PURE__ */ h("input", {
8458
8469
  type: "file",
@@ -8826,6 +8837,7 @@ function Jo({ children: e, storageKey: t = Lo }) {
8826
8837
  var Yo = {
8827
8838
  dark: "",
8828
8839
  light: "theme-light",
8840
+ lightInverted: "theme-light-inverted",
8829
8841
  monokai: "theme-monokai",
8830
8842
  solarized: "theme-solarized",
8831
8843
  cyberBrutalDark: "theme-cyber-brutal-dark",
@@ -1,5 +1,5 @@
1
1
  export type DarkTheme = "dark" | "monokai" | "solarized" | "cyberBrutalDark";
2
- export type LightTheme = "light" | "cyberBrutalLight" | "hashiTheme";
2
+ export type LightTheme = "light" | "lightInverted" | "cyberBrutalLight" | "hashiTheme";
3
3
  export type Theme = DarkTheme | LightTheme;
4
4
  export interface ThemeContextValue {
5
5
  theme: Theme;
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../src/providers/ThemeContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,kBAAkB,GAAG,YAAY,CAAC;AACrE,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;CACd;AAED,eAAO,MAAM,YAAY,4CAEvB,CAAC"}
1
+ {"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../src/providers/ThemeContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAC7E,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,eAAe,GACf,kBAAkB,GAClB,YAAY,CAAC;AACjB,MAAM,MAAM,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;CACd;AAED,eAAO,MAAM,YAAY,4CAEvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/providers/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAe9D,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAiBlE"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/providers/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgB9D,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAiBlE"}
package/dist/styles.css CHANGED
@@ -96,7 +96,8 @@
96
96
 
97
97
  /* ─── Light Theme ─── */
98
98
 
99
- .theme-light {
99
+ .theme-light,
100
+ .theme-light-inverted {
100
101
  --bg-primary: #f9fafb;
101
102
  --bg-secondary: #f5f5f5;
102
103
  --bg-tertiary: #ffffff;
@@ -163,6 +164,22 @@
163
164
  color-scheme: light;
164
165
  }
165
166
 
167
+ /* ─── Light Inverted Theme ─── */
168
+
169
+ .theme-light-inverted {
170
+ --bg-primary: #f1f2f4;
171
+ --bg-secondary: #ffffff;
172
+ --bg-tertiary: #f7f7f8;
173
+ --bg-sidebar: #ffffff;
174
+ --text-secondary: #6b6b75;
175
+
176
+ --bg-content: var(--bg-secondary);
177
+ --bg-table: var(--bg-secondary);
178
+ --bg-table-header: var(--bg-tertiary);
179
+ --text-table-header: var(--text-secondary);
180
+ --text-table-header-hover: var(--text-primary);
181
+ }
182
+
166
183
  /* ─── HashiTheme ─── */
167
184
 
168
185
  .theme-hashi {
@@ -669,6 +686,8 @@ pre.shiki span {
669
686
 
670
687
  .theme-light pre.shiki,
671
688
  .theme-light pre.shiki span,
689
+ .theme-light-inverted pre.shiki,
690
+ .theme-light-inverted pre.shiki span,
672
691
  .theme-cyber-brutal-light pre.shiki,
673
692
  .theme-cyber-brutal-light pre.shiki span,
674
693
  .theme-hashi pre.shiki,
@@ -676,6 +695,64 @@ pre.shiki span {
676
695
  color: var(--shiki-light, var(--text-primary));
677
696
  }
678
697
 
698
+ /* Reading areas and grouped controls become islands on the inverted canvas.
699
+ The marker keeps existing themes' spacing and backgrounds unchanged. */
700
+ .theme-light-inverted .ui-content-surface {
701
+ background-color: var(--bg-content);
702
+ border: var(--ui-border-width) solid var(--border);
703
+ border-radius: var(--ui-radius-md);
704
+ padding: clamp(1rem, 2vw, 1.5rem);
705
+ }
706
+
707
+ .theme-light-inverted .ui-content-surface-flush {
708
+ padding: 0;
709
+ }
710
+
711
+ .theme-light-inverted .ui-content-inset {
712
+ padding: 1rem;
713
+ }
714
+
715
+ @media (width < 40rem) {
716
+ .theme-light-inverted .ui-email-header {
717
+ flex-wrap: wrap;
718
+ }
719
+
720
+ .theme-light-inverted .ui-email-header h1 {
721
+ flex: 1 0 calc(100% - 2rem);
722
+ }
723
+ }
724
+
725
+ /* Keep role utilities in the same layer as hover/focus and consumer utilities. */
726
+ @layer utilities {
727
+ /* Content roles fall back to the original backgrounds in existing themes. */
728
+ .bg-bg-content {
729
+ background-color: var(--bg-content, var(--bg-primary));
730
+ }
731
+
732
+ .bg-bg-content-raised {
733
+ background-color: var(--bg-content, var(--bg-tertiary));
734
+ }
735
+
736
+ /* Table roles fall back to the original appearance in existing themes. */
737
+ .bg-bg-table {
738
+ background-color: var(--bg-table, transparent);
739
+ }
740
+
741
+ .bg-bg-table-header {
742
+ background-color: var(--bg-table-header, var(--bg-secondary));
743
+ }
744
+
745
+ .text-text-table-header {
746
+ color: var(--text-table-header, var(--text-tertiary));
747
+ }
748
+
749
+ @media (hover: hover) {
750
+ .hover\:text-text-table-header-hover:hover {
751
+ color: var(--text-table-header-hover, var(--text-secondary));
752
+ }
753
+ }
754
+ }
755
+
679
756
  /* ─── Shared prose content ─── */
680
757
 
681
758
  .ui-prose {
@@ -966,7 +1043,7 @@ textarea:disabled {
966
1043
  .ui-cal {
967
1044
  --cal-gutter: 3.5rem;
968
1045
  --cal-hatch: color-mix(in srgb, var(--text-tertiary) 16%, transparent);
969
- background: var(--bg-primary);
1046
+ background: var(--bg-content, var(--bg-primary));
970
1047
  color: var(--text-primary);
971
1048
  }
972
1049
 
@@ -1079,7 +1156,7 @@ textarea:disabled {
1079
1156
  color-mix(in srgb, var(--cal-c) 16%, transparent),
1080
1157
  color-mix(in srgb, var(--cal-c) 16%, transparent)
1081
1158
  ),
1082
- var(--bg-primary);
1159
+ var(--bg-content, var(--bg-primary));
1083
1160
  color: var(--text-primary);
1084
1161
  transition:
1085
1162
  box-shadow 100ms ease,
@@ -1144,7 +1221,9 @@ textarea:disabled {
1144
1221
  border: var(--ui-border-width) solid
1145
1222
  color-mix(in srgb, var(--cal-c) 35%, transparent);
1146
1223
  border-left: 3px solid var(--cal-c);
1147
- background: linear-gradient(var(--cal-m), var(--cal-m)), var(--bg-primary);
1224
+ background:
1225
+ linear-gradient(var(--cal-m), var(--cal-m)),
1226
+ var(--bg-content, var(--bg-primary));
1148
1227
  color: var(--text-primary);
1149
1228
  padding: 2px 6px;
1150
1229
  font-size: var(--text-2xs);
@@ -1167,7 +1246,7 @@ textarea:disabled {
1167
1246
  }
1168
1247
 
1169
1248
  .ui-cal-event[data-status="tentative"] {
1170
- background: var(--bg-primary);
1249
+ background: var(--bg-content, var(--bg-primary));
1171
1250
  border-style: dashed;
1172
1251
  border-color: var(--cal-c);
1173
1252
  }
@@ -1175,7 +1254,7 @@ textarea:disabled {
1175
1254
  .ui-cal-event[data-status="held"] {
1176
1255
  background:
1177
1256
  repeating-linear-gradient(135deg, var(--cal-m) 0 6px, transparent 6px 12px),
1178
- var(--bg-primary);
1257
+ var(--bg-content, var(--bg-primary));
1179
1258
  border-style: dashed;
1180
1259
  border-left-style: solid;
1181
1260
  }
@@ -1300,7 +1379,11 @@ textarea:disabled {
1300
1379
  z-index: 5;
1301
1380
  pointer-events: none;
1302
1381
  border-color: var(--cal-c);
1303
- background: color-mix(in srgb, var(--cal-c) 28%, var(--bg-primary));
1382
+ background: color-mix(
1383
+ in srgb,
1384
+ var(--cal-c) 28%,
1385
+ var(--bg-content, var(--bg-primary))
1386
+ );
1304
1387
  box-shadow: var(--shadow-md);
1305
1388
  }
1306
1389
 
@@ -1341,7 +1424,11 @@ textarea:disabled {
1341
1424
  pointer-events: none;
1342
1425
  border-radius: var(--ui-radius-md);
1343
1426
  border: 1px dashed var(--accent);
1344
- background: color-mix(in srgb, var(--accent) 18%, var(--bg-primary));
1427
+ background: color-mix(
1428
+ in srgb,
1429
+ var(--accent) 18%,
1430
+ var(--bg-content, var(--bg-primary))
1431
+ );
1345
1432
  box-shadow: var(--shadow-md);
1346
1433
  color: var(--text-primary);
1347
1434
  font-size: var(--text-2xs);
@@ -1351,7 +1438,11 @@ textarea:disabled {
1351
1438
 
1352
1439
  .ui-cal-ghost[data-invalid] {
1353
1440
  border-color: var(--red);
1354
- background: color-mix(in srgb, var(--red) 16%, var(--bg-primary));
1441
+ background: color-mix(
1442
+ in srgb,
1443
+ var(--red) 16%,
1444
+ var(--bg-content, var(--bg-primary))
1445
+ );
1355
1446
  }
1356
1447
 
1357
1448
  .ui-cal-cursor {
@@ -1508,7 +1599,11 @@ textarea:disabled {
1508
1599
  display: flex;
1509
1600
  align-items: center;
1510
1601
  justify-content: center;
1511
- background: color-mix(in srgb, var(--bg-primary) 55%, transparent);
1602
+ background: color-mix(
1603
+ in srgb,
1604
+ var(--bg-content, var(--bg-primary)) 55%,
1605
+ transparent
1606
+ );
1512
1607
  }
1513
1608
 
1514
1609
  /* Printing: show the whole schedule, drop the controls. */
@@ -1531,7 +1626,7 @@ textarea:disabled {
1531
1626
  position: sticky;
1532
1627
  top: 0;
1533
1628
  z-index: 20;
1534
- background: var(--bg-primary);
1629
+ background: var(--bg-content, var(--bg-primary));
1535
1630
  }
1536
1631
 
1537
1632
  .ui-cal-corner,
@@ -1545,14 +1640,14 @@ textarea:disabled {
1545
1640
  left: 0;
1546
1641
  z-index: 21;
1547
1642
  align-self: stretch;
1548
- background: var(--bg-primary);
1643
+ background: var(--bg-content, var(--bg-primary));
1549
1644
  }
1550
1645
 
1551
1646
  .ui-cal-gutter {
1552
1647
  position: sticky;
1553
1648
  left: 0;
1554
1649
  z-index: 10;
1555
- background: var(--bg-primary);
1650
+ background: var(--bg-content, var(--bg-primary));
1556
1651
  }
1557
1652
 
1558
1653
  .ui-cal-subhead {
@@ -1592,7 +1687,7 @@ textarea:disabled {
1592
1687
  width: var(--cal-row-head);
1593
1688
  min-width: 0;
1594
1689
  border-right: var(--ui-border-width) solid var(--border);
1595
- background: var(--bg-primary);
1690
+ background: var(--bg-content, var(--bg-primary));
1596
1691
  }
1597
1692
 
1598
1693
  .ui-cal-corner-x {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leonardaustin/ui",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Reusable React component library and application shell for Leonard Austin projects.",
5
5
  "license": "MIT",
6
6
  "type": "module",