@leonardaustin/ui 0.6.0 → 0.7.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.
Files changed (90) hide show
  1. package/dist/components/tables/ColumnPicker.d.ts +3 -1
  2. package/dist/components/tables/ColumnPicker.d.ts.map +1 -1
  3. package/dist/components/tables/ResourceTable.d.ts +13 -6
  4. package/dist/components/tables/ResourceTable.d.ts.map +1 -1
  5. package/dist/components/ui/AttachmentList.d.ts +23 -0
  6. package/dist/components/ui/AttachmentList.d.ts.map +1 -0
  7. package/dist/components/ui/Button.d.ts +3 -0
  8. package/dist/components/ui/Button.d.ts.map +1 -1
  9. package/dist/components/ui/Calendar.d.ts +6 -3
  10. package/dist/components/ui/Calendar.d.ts.map +1 -1
  11. package/dist/components/ui/CalendarGrid.d.ts +3 -1
  12. package/dist/components/ui/CalendarGrid.d.ts.map +1 -1
  13. package/dist/components/ui/Card.d.ts +7 -4
  14. package/dist/components/ui/Card.d.ts.map +1 -1
  15. package/dist/components/ui/CharacterCount.d.ts +10 -0
  16. package/dist/components/ui/CharacterCount.d.ts.map +1 -0
  17. package/dist/components/ui/Checkbox.d.ts +7 -7
  18. package/dist/components/ui/Checkbox.d.ts.map +1 -1
  19. package/dist/components/ui/Combobox.d.ts +32 -5
  20. package/dist/components/ui/Combobox.d.ts.map +1 -1
  21. package/dist/components/ui/DatePartsInput.d.ts +26 -0
  22. package/dist/components/ui/DatePartsInput.d.ts.map +1 -0
  23. package/dist/components/ui/DatePicker.d.ts +7 -3
  24. package/dist/components/ui/DatePicker.d.ts.map +1 -1
  25. package/dist/components/ui/DateRangePicker.d.ts +4 -1
  26. package/dist/components/ui/DateRangePicker.d.ts.map +1 -1
  27. package/dist/components/ui/DateTimePicker.d.ts +7 -3
  28. package/dist/components/ui/DateTimePicker.d.ts.map +1 -1
  29. package/dist/components/ui/Dialog.d.ts +13 -2
  30. package/dist/components/ui/Dialog.d.ts.map +1 -1
  31. package/dist/components/ui/DialogActions.d.ts +8 -3
  32. package/dist/components/ui/DialogActions.d.ts.map +1 -1
  33. package/dist/components/ui/FieldContext.d.ts +9 -0
  34. package/dist/components/ui/FieldContext.d.ts.map +1 -0
  35. package/dist/components/ui/Fieldset.d.ts +9 -0
  36. package/dist/components/ui/Fieldset.d.ts.map +1 -0
  37. package/dist/components/ui/FormField.d.ts +24 -0
  38. package/dist/components/ui/FormField.d.ts.map +1 -0
  39. package/dist/components/ui/NavTabs.d.ts +16 -0
  40. package/dist/components/ui/NavTabs.d.ts.map +1 -0
  41. package/dist/components/ui/PageHeader.d.ts +8 -5
  42. package/dist/components/ui/PageHeader.d.ts.map +1 -1
  43. package/dist/components/ui/PasswordInput.d.ts +4 -0
  44. package/dist/components/ui/PasswordInput.d.ts.map +1 -1
  45. package/dist/components/ui/ProgressBar.d.ts +18 -0
  46. package/dist/components/ui/ProgressBar.d.ts.map +1 -0
  47. package/dist/components/ui/Radio.d.ts +27 -0
  48. package/dist/components/ui/Radio.d.ts.map +1 -0
  49. package/dist/components/ui/Select.d.ts +4 -0
  50. package/dist/components/ui/Select.d.ts.map +1 -1
  51. package/dist/components/ui/Skeleton.d.ts +8 -0
  52. package/dist/components/ui/Skeleton.d.ts.map +1 -0
  53. package/dist/components/ui/Tabs.d.ts.map +1 -1
  54. package/dist/components/ui/TextInput.d.ts +4 -0
  55. package/dist/components/ui/TextInput.d.ts.map +1 -1
  56. package/dist/components/ui/Textarea.d.ts +4 -0
  57. package/dist/components/ui/Textarea.d.ts.map +1 -1
  58. package/dist/components/ui/UploadDropzone.d.ts +6 -7
  59. package/dist/components/ui/UploadDropzone.d.ts.map +1 -1
  60. package/dist/components/ui/calendar/AgendaView.d.ts.map +1 -1
  61. package/dist/components/ui/calendar/MonthView.d.ts.map +1 -1
  62. package/dist/components/ui/calendar/TimeGrid.d.ts.map +1 -1
  63. package/dist/components/ui/calendar/TimelineView.d.ts.map +1 -1
  64. package/dist/components/ui/calendar/context.d.ts +4 -1
  65. package/dist/components/ui/calendar/context.d.ts.map +1 -1
  66. package/dist/components/ui/calendar/useGridInteraction.d.ts +4 -0
  67. package/dist/components/ui/calendar/useGridInteraction.d.ts.map +1 -1
  68. package/dist/components/ui/useFieldControl.d.ts +17 -0
  69. package/dist/components/ui/useFieldControl.d.ts.map +1 -0
  70. package/dist/config/theme.d.ts.map +1 -1
  71. package/dist/hooks/useFocusTrap.d.ts +6 -5
  72. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  73. package/dist/index.d.ts +12 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +4146 -2931
  76. package/dist/lib/calendar.d.ts +70 -0
  77. package/dist/lib/calendar.d.ts.map +1 -1
  78. package/dist/lib/dateParts.d.ts +11 -0
  79. package/dist/lib/dateParts.d.ts.map +1 -0
  80. package/dist/providers/ControlSizeContext.d.ts +4 -0
  81. package/dist/providers/ControlSizeContext.d.ts.map +1 -0
  82. package/dist/providers/ControlSizeProvider.d.ts +9 -0
  83. package/dist/providers/ControlSizeProvider.d.ts.map +1 -0
  84. package/dist/providers/SettingsProvider.d.ts +19 -1
  85. package/dist/providers/SettingsProvider.d.ts.map +1 -1
  86. package/dist/providers/ThemeContext.d.ts +1 -1
  87. package/dist/providers/ThemeContext.d.ts.map +1 -1
  88. package/dist/providers/ThemeProvider.d.ts.map +1 -1
  89. package/dist/styles.css +412 -14
  90. package/package.json +1 -1
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 {
@@ -1632,3 +1727,306 @@ textarea:disabled {
1632
1727
  );
1633
1728
  box-shadow: inset 0 0 0 1px var(--border-strong);
1634
1729
  }
1730
+
1731
+ /* Audited convenience primitives: native semantics and semantic theme tokens. */
1732
+ .ui-upload-dropzone:focus-within {
1733
+ outline: 2px solid var(--accent);
1734
+ outline-offset: 2px;
1735
+ }
1736
+ .ui-date-parts {
1737
+ display: grid;
1738
+ grid-template-columns: minmax(0, 5rem) minmax(0, 5rem) minmax(0, 7rem);
1739
+ gap: 0.75rem;
1740
+ }
1741
+ .ui-skeleton {
1742
+ min-height: 1rem;
1743
+ }
1744
+ .ui-nav-tab:focus-visible {
1745
+ outline: 2px solid var(--accent);
1746
+ outline-offset: 2px;
1747
+ }
1748
+ .ui-nav-tabs {
1749
+ overflow-x: auto;
1750
+ }
1751
+ .ui-nav-tabs-list {
1752
+ display: flex;
1753
+ list-style: none;
1754
+ margin: 0;
1755
+ padding: 0;
1756
+ width: max-content;
1757
+ min-width: 100%;
1758
+ }
1759
+ .ui-nav-tab {
1760
+ display: flex;
1761
+ align-items: center;
1762
+ gap: 0.5rem;
1763
+ white-space: nowrap;
1764
+ text-decoration: none;
1765
+ border-bottom: 2px solid transparent;
1766
+ }
1767
+ .ui-nav-tab[aria-current="page"] {
1768
+ border-bottom-color: var(--accent);
1769
+ }
1770
+ .ui-attachment-item {
1771
+ overflow-wrap: anywhere;
1772
+ }
1773
+ @media (max-width: 480px) {
1774
+ .ui-attachment-item {
1775
+ align-items: flex-start;
1776
+ flex-direction: column;
1777
+ }
1778
+ }
1779
+
1780
+ /* Explicit-zone calendar columns label elapsed axes independently on DST days. */
1781
+ .ui-cal[data-time-zone] {
1782
+ --cal-gutter: 0px;
1783
+ }
1784
+ .ui-cal-zone-label {
1785
+ position: absolute;
1786
+ left: 2px;
1787
+ z-index: 1;
1788
+ color: var(--text-tertiary);
1789
+ background: var(--bg-primary);
1790
+ font-family: var(--font-code);
1791
+ font-size: var(--text-2xs);
1792
+ line-height: 12px;
1793
+ pointer-events: none;
1794
+ }
1795
+
1796
+ /* Form participation and opt-in comfortable control sizing. */
1797
+ .ui-checkbox-control {
1798
+ position: relative;
1799
+ display: inline-flex;
1800
+ width: 1rem;
1801
+ height: 1rem;
1802
+ flex-shrink: 0;
1803
+ }
1804
+ .ui-checkbox-input {
1805
+ position: absolute;
1806
+ inset: 0;
1807
+ z-index: 1;
1808
+ width: 100%;
1809
+ height: 100%;
1810
+ margin: 0;
1811
+ opacity: 0;
1812
+ cursor: inherit;
1813
+ }
1814
+ .ui-checkbox-decoration {
1815
+ display: inline-flex;
1816
+ align-items: center;
1817
+ justify-content: center;
1818
+ width: 100%;
1819
+ height: 100%;
1820
+ border: 1px solid var(--border);
1821
+ border-radius: var(--ui-radius, 4px);
1822
+ background: var(--bg-secondary);
1823
+ color: var(--text-on-accent);
1824
+ pointer-events: none;
1825
+ transition:
1826
+ background-color 100ms,
1827
+ border-color 100ms;
1828
+ }
1829
+ .ui-checkbox-input:checked + .ui-checkbox-decoration,
1830
+ .ui-checkbox-input:indeterminate + .ui-checkbox-decoration {
1831
+ background: var(--accent);
1832
+ border-color: var(--accent);
1833
+ }
1834
+ .ui-checkbox-input:focus-visible + .ui-checkbox-decoration,
1835
+ .ui-native-choice:focus-visible {
1836
+ outline: 2px solid var(--accent);
1837
+ outline-offset: 2px;
1838
+ }
1839
+ .ui-native-choice {
1840
+ flex-shrink: 0;
1841
+ width: 1rem;
1842
+ height: 1rem;
1843
+ margin: 0;
1844
+ accent-color: var(--accent);
1845
+ }
1846
+ .ui-choice:has(input:disabled) {
1847
+ cursor: not-allowed;
1848
+ opacity: 0.4;
1849
+ }
1850
+ .ui-sized-control[data-control-size="comfortable"] {
1851
+ min-height: 44px;
1852
+ height: auto;
1853
+ font-size: 1rem;
1854
+ padding: 0.5rem 0.75rem;
1855
+ }
1856
+ button.ui-sized-control[data-control-size="comfortable"] {
1857
+ min-width: 44px;
1858
+ }
1859
+ .ui-sized-control[data-control-size="comfortable"]:focus-visible {
1860
+ outline: 2px solid var(--accent);
1861
+ outline-offset: 2px;
1862
+ }
1863
+ .ui-choice[data-control-size="comfortable"] {
1864
+ min-height: 44px;
1865
+ }
1866
+ .ui-choice[data-control-size="comfortable"] > span,
1867
+ .ui-choice[data-control-size="comfortable"] > label {
1868
+ font-size: 1rem;
1869
+ }
1870
+ .ui-choice[data-control-size="comfortable"] .ui-checkbox-control {
1871
+ width: 44px;
1872
+ height: 44px;
1873
+ }
1874
+ .ui-choice[data-control-size="comfortable"] .ui-checkbox-decoration {
1875
+ position: absolute;
1876
+ width: 20px;
1877
+ height: 20px;
1878
+ top: 12px;
1879
+ left: 12px;
1880
+ }
1881
+ .ui-choice[data-control-size="comfortable"] .ui-native-choice {
1882
+ width: 20px;
1883
+ height: 20px;
1884
+ margin-top: 0.25rem;
1885
+ }
1886
+ @media (forced-colors: active) {
1887
+ .ui-checkbox-input {
1888
+ appearance: auto;
1889
+ opacity: 1;
1890
+ }
1891
+ .ui-checkbox-decoration {
1892
+ display: none;
1893
+ }
1894
+ }
1895
+
1896
+ /* Preserve adornment clearances when comfortable control padding is applied. */
1897
+ .ui-sized-control[data-control-size="comfortable"][data-has-icon="true"] {
1898
+ padding-inline-start: 2.25rem;
1899
+ }
1900
+ select.ui-sized-control[data-control-size="comfortable"] {
1901
+ padding-inline-end: 2.25rem;
1902
+ }
1903
+ .ui-password-input[data-control-size="comfortable"] {
1904
+ padding-inline-end: 44px;
1905
+ }
1906
+ .ui-password-toggle[data-control-size="comfortable"] {
1907
+ display: inline-flex;
1908
+ align-items: center;
1909
+ justify-content: center;
1910
+ width: 44px;
1911
+ height: 44px;
1912
+ right: 0;
1913
+ }
1914
+
1915
+ /* Native progress supplies semantics; the decorative fill supports stripes in all browsers. */
1916
+ .ui-progress-track {
1917
+ --progress-color: var(--accent);
1918
+ position: relative;
1919
+ height: 0.625rem;
1920
+ overflow: hidden;
1921
+ border-radius: var(--ui-radius);
1922
+ background: var(--bg-tertiary);
1923
+ }
1924
+ .ui-progress-track[data-color="green"] {
1925
+ --progress-color: var(--green);
1926
+ }
1927
+ .ui-progress-track[data-color="blue"] {
1928
+ --progress-color: var(--blue);
1929
+ }
1930
+ .ui-progress-track[data-color="yellow"] {
1931
+ --progress-color: var(--yellow);
1932
+ }
1933
+ .ui-progress-track[data-color="red"] {
1934
+ --progress-color: var(--red);
1935
+ }
1936
+ .ui-progress-fill {
1937
+ display: block;
1938
+ height: 100%;
1939
+ border-radius: inherit;
1940
+ background-color: var(--progress-color);
1941
+ }
1942
+ .ui-progress-bar {
1943
+ position: absolute;
1944
+ width: 100%;
1945
+ height: 100%;
1946
+ inset: 0;
1947
+ opacity: 0;
1948
+ }
1949
+ .ui-progress-track[data-striped] .ui-progress-fill {
1950
+ background-image: repeating-linear-gradient(
1951
+ 135deg,
1952
+ transparent 0 0.5rem,
1953
+ color-mix(in srgb, var(--bg-primary) 35%, transparent) 0.5rem 1rem
1954
+ );
1955
+ background-size: 1.414214rem 1.414214rem;
1956
+ }
1957
+ .ui-progress-track[data-animated][data-striped] .ui-progress-fill {
1958
+ animation: ui-progress-stripes 1s linear infinite;
1959
+ }
1960
+ .ui-progress-track[data-indeterminate] .ui-progress-fill {
1961
+ margin-left: 32.5%;
1962
+ }
1963
+ .ui-progress-track[data-animated][data-indeterminate] .ui-progress-fill {
1964
+ margin-left: 0;
1965
+ animation: ui-progress-travel 1.5s ease-in-out infinite alternate;
1966
+ }
1967
+ .ui-progress-track[data-animated][data-indeterminate][data-striped]
1968
+ .ui-progress-fill {
1969
+ animation:
1970
+ ui-progress-travel 1.5s ease-in-out infinite alternate,
1971
+ ui-progress-stripes 1s linear infinite;
1972
+ }
1973
+ @keyframes ui-progress-stripes {
1974
+ to {
1975
+ background-position: 1.414214rem 0;
1976
+ }
1977
+ }
1978
+ @keyframes ui-progress-travel {
1979
+ to {
1980
+ transform: translateX(185.714%);
1981
+ }
1982
+ }
1983
+ @media (prefers-reduced-motion: reduce) {
1984
+ .ui-progress-track .ui-progress-fill {
1985
+ animation: none !important;
1986
+ }
1987
+ }
1988
+ @media (forced-colors: active) {
1989
+ .ui-progress-bar {
1990
+ opacity: 1;
1991
+ }
1992
+ .ui-progress-fill {
1993
+ visibility: hidden;
1994
+ }
1995
+ }
1996
+ .ui-date-part {
1997
+ position: relative;
1998
+ }
1999
+ .ui-date-part input {
2000
+ padding-right: 2rem;
2001
+ }
2002
+ .ui-date-part-selector {
2003
+ position: absolute;
2004
+ right: 0;
2005
+ bottom: 0;
2006
+ width: 2rem;
2007
+ height: 1.75rem;
2008
+ display: flex;
2009
+ align-items: center;
2010
+ justify-content: center;
2011
+ color: var(--text-secondary);
2012
+ }
2013
+ .ui-date-part:has([data-control-size="comfortable"]) .ui-date-part-selector {
2014
+ height: 44px;
2015
+ }
2016
+ .ui-date-part-selector select {
2017
+ position: absolute;
2018
+ inset: 0;
2019
+ width: 100%;
2020
+ height: 100%;
2021
+ opacity: 0;
2022
+ cursor: pointer;
2023
+ }
2024
+ .ui-date-part-selector:focus-within {
2025
+ outline: 2px solid var(--accent);
2026
+ outline-offset: -2px;
2027
+ border-radius: var(--ui-radius);
2028
+ }
2029
+
2030
+ .reduced-motion .ui-progress-track .ui-progress-fill {
2031
+ animation: none !important;
2032
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leonardaustin/ui",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Reusable React component library and application shell for Leonard Austin projects.",
5
5
  "license": "MIT",
6
6
  "type": "module",