@mesob/ui 0.3.3 → 0.3.5

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.
@@ -1746,28 +1746,41 @@
1746
1746
  @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1747
1747
  }
1748
1748
 
1749
- .cn-file-input-dropzone {
1750
- @apply border-input bg-input/20 dark:bg-input/30 hover:bg-input/30 dark:hover:bg-input/50 focus-within:border-ring focus-within:ring-ring/50 relative flex min-h-[9rem] w-full cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-4 py-6 text-sm transition-colors outline-none focus-within:ring-3 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1749
+ .cn-file-input-hidden-input {
1750
+ @apply sr-only;
1751
1751
  }
1752
1752
 
1753
- .cn-file-input-hidden-input {
1754
- @apply absolute inset-0 cursor-pointer opacity-0;
1753
+ .cn-file-input-root {
1754
+ @apply border-input bg-background hover:bg-accent/40 focus-visible:border-ring focus-visible:ring-ring/50 flex min-h-10 w-full items-center gap-3 rounded-lg border px-3 py-2 text-left transition-colors outline-none focus-visible:ring-3;
1755
1755
  }
1756
1756
 
1757
- .cn-file-input-prompt {
1758
- @apply text-muted-foreground flex flex-col items-center gap-2 text-center;
1757
+ .cn-file-input-section {
1758
+ @apply text-muted-foreground flex size-8 shrink-0 items-center justify-center rounded-md border bg-muted/30;
1759
1759
  }
1760
1760
 
1761
- .cn-file-input-icon {
1762
- @apply size-8;
1761
+ .cn-file-input-preview {
1762
+ @apply border-input bg-input/10 size-11 shrink-0 overflow-hidden rounded-md border;
1763
1763
  }
1764
1764
 
1765
- .cn-file-input-title {
1766
- @apply text-sm;
1765
+ .cn-file-input-body {
1766
+ @apply flex min-w-0 flex-1 flex-col;
1767
+ }
1768
+
1769
+ .cn-file-input-placeholder,
1770
+ .cn-file-input-value {
1771
+ @apply truncate text-sm font-medium;
1772
+ }
1773
+
1774
+ .cn-file-input-meta {
1775
+ @apply text-muted-foreground text-xs;
1776
+ }
1777
+
1778
+ .cn-file-input-actions {
1779
+ @apply flex items-center gap-1;
1767
1780
  }
1768
1781
 
1769
- .cn-file-input-accept {
1770
- @apply text-xs opacity-70;
1782
+ .cn-file-input-trigger {
1783
+ @apply text-muted-foreground flex size-8 items-center justify-center rounded-md border bg-muted/30;
1771
1784
  }
1772
1785
 
1773
1786
  .cn-file-input-list {
@@ -1775,7 +1788,7 @@
1775
1788
  }
1776
1789
 
1777
1790
  .cn-file-input-item {
1778
- @apply border-input bg-input/20 dark:bg-input/30 flex items-center justify-between rounded-xl border px-4 py-2 text-sm;
1791
+ @apply border-input bg-input/20 dark:bg-input/30 flex items-center justify-between rounded-lg border px-3 py-2 text-sm;
1779
1792
  }
1780
1793
 
1781
1794
  .cn-file-input-item-left {
@@ -1794,8 +1807,127 @@
1794
1807
  @apply text-muted-foreground text-xs tabular-nums;
1795
1808
  }
1796
1809
 
1797
- .cn-file-input-item-remove {
1798
- @apply hover:bg-accent transition-colors;
1810
+ /* MARK: File Drop Input */
1811
+ .cn-file-drop-input-wrapper {
1812
+ @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1813
+ }
1814
+
1815
+ .cn-file-drop-input-dropzone {
1816
+ @apply border-input bg-input/10 hover:bg-input/20 focus-within:border-ring focus-within:ring-ring/50 relative flex min-h-[12rem] w-full cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed p-4 transition-colors outline-none focus-within:ring-3 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1817
+ }
1818
+
1819
+ .cn-file-drop-input-hidden-input {
1820
+ @apply sr-only;
1821
+ }
1822
+
1823
+ .cn-file-drop-input-prompt {
1824
+ @apply text-muted-foreground flex items-center gap-4 text-left;
1825
+ }
1826
+
1827
+ .cn-file-drop-input-icon {
1828
+ @apply size-10 shrink-0;
1829
+ }
1830
+
1831
+ .cn-file-drop-input-title {
1832
+ @apply text-foreground text-xl font-medium;
1833
+ }
1834
+
1835
+ .cn-file-drop-input-description {
1836
+ @apply text-muted-foreground mt-1 text-base;
1837
+ }
1838
+
1839
+ .cn-file-drop-input-single-preview {
1840
+ @apply relative size-full;
1841
+ }
1842
+
1843
+ .cn-file-drop-input-preview {
1844
+ @apply border-input bg-background size-full overflow-hidden rounded-md border;
1845
+ }
1846
+
1847
+ .cn-file-drop-input-preview-actions {
1848
+ @apply absolute top-3 right-3 flex gap-2;
1849
+ }
1850
+
1851
+ .cn-file-drop-input-list {
1852
+ @apply space-y-2;
1853
+ }
1854
+
1855
+ .cn-file-drop-input-item {
1856
+ @apply border-input bg-input/20 flex items-center justify-between rounded-lg border px-3 py-2 text-sm;
1857
+ }
1858
+
1859
+ .cn-file-drop-input-item-left {
1860
+ @apply flex min-w-0 items-center gap-2;
1861
+ }
1862
+
1863
+ .cn-file-drop-input-item-icon {
1864
+ @apply text-muted-foreground size-4 shrink-0;
1865
+ }
1866
+
1867
+ .cn-file-drop-input-item-name {
1868
+ @apply truncate;
1869
+ }
1870
+
1871
+ .cn-file-drop-input-item-size {
1872
+ @apply text-muted-foreground text-xs tabular-nums;
1873
+ }
1874
+
1875
+ /* MARK: File Upload */
1876
+ .cn-file-upload {
1877
+ @apply border-input bg-background rounded-lg border-2;
1878
+ }
1879
+
1880
+ .cn-file-upload-prompt {
1881
+ @apply items-start;
1882
+ }
1883
+
1884
+ .cn-file-upload-icon {
1885
+ @apply border-input bg-input/20 rounded-md border;
1886
+ }
1887
+
1888
+ .cn-file-upload-button {
1889
+ @apply shrink-0;
1890
+ }
1891
+
1892
+ .cn-file-upload-item {
1893
+ @apply border-input bg-input/20 rounded-lg;
1894
+ }
1895
+
1896
+ .cn-file-upload-preview {
1897
+ @apply border-input bg-input/10 rounded-md border;
1898
+ }
1899
+
1900
+ .cn-file-upload-item-icon {
1901
+ @apply border-input bg-background rounded-md border;
1902
+ }
1903
+
1904
+ .cn-file-upload-empty {
1905
+ @apply border-input bg-input/10 rounded-lg;
1906
+ }
1907
+
1908
+ /* MARK: Image Upload */
1909
+ .cn-image-upload {
1910
+ @apply rounded-lg;
1911
+ }
1912
+
1913
+ .cn-image-upload-dropzone {
1914
+ @apply border-input bg-background rounded-lg border-2;
1915
+ }
1916
+
1917
+ .cn-image-upload-preview {
1918
+ @apply border-input bg-input/20 rounded-md border;
1919
+ }
1920
+
1921
+ .cn-image-upload-sidebar {
1922
+ @apply text-sm;
1923
+ }
1924
+
1925
+ .cn-image-upload-placeholder {
1926
+ @apply border-input bg-input/10 rounded-md border border-dashed;
1927
+ }
1928
+
1929
+ .cn-image-upload-placeholder-icon {
1930
+ @apply border-input bg-background rounded-md border;
1799
1931
  }
1800
1932
 
1801
1933
  /* MARK: Animated Tabs */
@@ -1742,28 +1742,41 @@
1742
1742
  @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1743
1743
  }
1744
1744
 
1745
- .cn-file-input-dropzone {
1746
- @apply border-input bg-input/20 dark:bg-input/30 hover:bg-input/30 dark:hover:bg-input/50 focus-within:border-ring focus-within:ring-ring/50 relative flex min-h-[9rem] w-full cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed px-4 py-6 text-sm transition-colors outline-none focus-within:ring-3 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1745
+ .cn-file-input-hidden-input {
1746
+ @apply sr-only;
1747
1747
  }
1748
1748
 
1749
- .cn-file-input-hidden-input {
1750
- @apply absolute inset-0 cursor-pointer opacity-0;
1749
+ .cn-file-input-root {
1750
+ @apply border-input bg-background hover:bg-accent/40 focus-visible:border-ring focus-visible:ring-ring/50 flex min-h-11 w-full items-center gap-3 rounded-xl border px-3 py-2 text-left transition-colors outline-none focus-visible:ring-3;
1751
1751
  }
1752
1752
 
1753
- .cn-file-input-prompt {
1754
- @apply text-muted-foreground flex flex-col items-center gap-2 text-center;
1753
+ .cn-file-input-section {
1754
+ @apply text-muted-foreground flex size-8 shrink-0 items-center justify-center rounded-lg border bg-muted/30;
1755
1755
  }
1756
1756
 
1757
- .cn-file-input-icon {
1758
- @apply size-8;
1757
+ .cn-file-input-preview {
1758
+ @apply border-input bg-input/10 size-12 shrink-0 overflow-hidden rounded-lg border;
1759
1759
  }
1760
1760
 
1761
- .cn-file-input-title {
1762
- @apply text-sm;
1761
+ .cn-file-input-body {
1762
+ @apply flex min-w-0 flex-1 flex-col;
1763
+ }
1764
+
1765
+ .cn-file-input-placeholder,
1766
+ .cn-file-input-value {
1767
+ @apply truncate text-sm font-medium;
1768
+ }
1769
+
1770
+ .cn-file-input-meta {
1771
+ @apply text-muted-foreground text-xs;
1772
+ }
1773
+
1774
+ .cn-file-input-actions {
1775
+ @apply flex items-center gap-1;
1763
1776
  }
1764
1777
 
1765
- .cn-file-input-accept {
1766
- @apply text-xs opacity-70;
1778
+ .cn-file-input-trigger {
1779
+ @apply text-muted-foreground flex size-8 items-center justify-center rounded-lg border bg-muted/30;
1767
1780
  }
1768
1781
 
1769
1782
  .cn-file-input-list {
@@ -1790,8 +1803,127 @@
1790
1803
  @apply text-muted-foreground text-xs tabular-nums;
1791
1804
  }
1792
1805
 
1793
- .cn-file-input-item-remove {
1794
- @apply hover:bg-accent transition-colors;
1806
+ /* MARK: File Drop Input */
1807
+ .cn-file-drop-input-wrapper {
1808
+ @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1809
+ }
1810
+
1811
+ .cn-file-drop-input-dropzone {
1812
+ @apply border-input bg-input/10 hover:bg-input/20 focus-within:border-ring focus-within:ring-ring/50 relative flex min-h-[13rem] w-full cursor-pointer flex-col items-center justify-center rounded-xl border-2 border-dashed p-4 transition-colors outline-none focus-within:ring-3 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1813
+ }
1814
+
1815
+ .cn-file-drop-input-hidden-input {
1816
+ @apply sr-only;
1817
+ }
1818
+
1819
+ .cn-file-drop-input-prompt {
1820
+ @apply text-muted-foreground flex items-center gap-4 text-left;
1821
+ }
1822
+
1823
+ .cn-file-drop-input-icon {
1824
+ @apply size-12 shrink-0;
1825
+ }
1826
+
1827
+ .cn-file-drop-input-title {
1828
+ @apply text-foreground text-2xl font-medium;
1829
+ }
1830
+
1831
+ .cn-file-drop-input-description {
1832
+ @apply text-muted-foreground mt-1 text-lg;
1833
+ }
1834
+
1835
+ .cn-file-drop-input-single-preview {
1836
+ @apply relative size-full;
1837
+ }
1838
+
1839
+ .cn-file-drop-input-preview {
1840
+ @apply border-input bg-background size-full overflow-hidden rounded-lg border;
1841
+ }
1842
+
1843
+ .cn-file-drop-input-preview-actions {
1844
+ @apply absolute top-4 right-4 flex gap-2;
1845
+ }
1846
+
1847
+ .cn-file-drop-input-list {
1848
+ @apply space-y-2;
1849
+ }
1850
+
1851
+ .cn-file-drop-input-item {
1852
+ @apply border-input bg-input/20 flex items-center justify-between rounded-xl border px-4 py-2 text-sm;
1853
+ }
1854
+
1855
+ .cn-file-drop-input-item-left {
1856
+ @apply flex min-w-0 items-center gap-2;
1857
+ }
1858
+
1859
+ .cn-file-drop-input-item-icon {
1860
+ @apply text-muted-foreground size-4 shrink-0;
1861
+ }
1862
+
1863
+ .cn-file-drop-input-item-name {
1864
+ @apply truncate;
1865
+ }
1866
+
1867
+ .cn-file-drop-input-item-size {
1868
+ @apply text-muted-foreground text-xs tabular-nums;
1869
+ }
1870
+
1871
+ /* MARK: File Upload */
1872
+ .cn-file-upload {
1873
+ @apply border-input bg-background rounded-xl border-2;
1874
+ }
1875
+
1876
+ .cn-file-upload-prompt {
1877
+ @apply items-start;
1878
+ }
1879
+
1880
+ .cn-file-upload-icon {
1881
+ @apply border-input bg-input/20 rounded-lg border;
1882
+ }
1883
+
1884
+ .cn-file-upload-button {
1885
+ @apply shrink-0;
1886
+ }
1887
+
1888
+ .cn-file-upload-item {
1889
+ @apply border-input bg-input/20 rounded-xl;
1890
+ }
1891
+
1892
+ .cn-file-upload-preview {
1893
+ @apply border-input bg-input/10 rounded-lg border;
1894
+ }
1895
+
1896
+ .cn-file-upload-item-icon {
1897
+ @apply border-input bg-background rounded-md border;
1898
+ }
1899
+
1900
+ .cn-file-upload-empty {
1901
+ @apply border-input bg-input/10 rounded-xl;
1902
+ }
1903
+
1904
+ /* MARK: Image Upload */
1905
+ .cn-image-upload {
1906
+ @apply rounded-xl;
1907
+ }
1908
+
1909
+ .cn-image-upload-dropzone {
1910
+ @apply border-input bg-background rounded-xl border-2;
1911
+ }
1912
+
1913
+ .cn-image-upload-preview {
1914
+ @apply border-input bg-input/20 rounded-lg border;
1915
+ }
1916
+
1917
+ .cn-image-upload-sidebar {
1918
+ @apply text-sm;
1919
+ }
1920
+
1921
+ .cn-image-upload-placeholder {
1922
+ @apply border-input bg-input/10 rounded-lg border border-dashed;
1923
+ }
1924
+
1925
+ .cn-image-upload-placeholder-icon {
1926
+ @apply border-input bg-background rounded-lg border;
1795
1927
  }
1796
1928
 
1797
1929
  /* MARK: Animated Tabs */
@@ -3,3 +3,14 @@
3
3
  @import "./style-maia.css" layer(base);
4
4
  @import "./style-lyra.css" layer(base);
5
5
  @import "./style-mira.css" layer(base);
6
+
7
+ @media (prefers-reduced-motion: reduce) {
8
+ *,
9
+ ::before,
10
+ ::after {
11
+ animation-duration: 0.01ms;
12
+ animation-iteration-count: 1;
13
+ scroll-behavior: auto;
14
+ transition-duration: 0.01ms;
15
+ }
16
+ }