@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.
@@ -1625,28 +1625,41 @@
1625
1625
  @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1626
1626
  }
1627
1627
 
1628
- .cn-file-input-dropzone {
1629
- @apply border-input dark:bg-input/30 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-none border-2 border-dashed px-3 py-6 text-xs transition-colors outline-none focus-within:ring-1 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/50;
1628
+ .cn-file-input-hidden-input {
1629
+ @apply sr-only;
1630
1630
  }
1631
1631
 
1632
- .cn-file-input-hidden-input {
1633
- @apply absolute inset-0 cursor-pointer opacity-0;
1632
+ .cn-file-input-root {
1633
+ @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-none border px-3 py-2 text-left text-xs transition-colors outline-none focus-visible:ring-1;
1634
1634
  }
1635
1635
 
1636
- .cn-file-input-prompt {
1637
- @apply text-muted-foreground flex flex-col items-center gap-2 text-center;
1636
+ .cn-file-input-section {
1637
+ @apply text-muted-foreground flex size-8 shrink-0 items-center justify-center rounded-none border bg-background;
1638
1638
  }
1639
1639
 
1640
- .cn-file-input-icon {
1641
- @apply size-8;
1640
+ .cn-file-input-preview {
1641
+ @apply border-input bg-background size-11 shrink-0 overflow-hidden rounded-none border;
1642
1642
  }
1643
1643
 
1644
- .cn-file-input-title {
1645
- @apply text-xs;
1644
+ .cn-file-input-body {
1645
+ @apply flex min-w-0 flex-1 flex-col;
1646
1646
  }
1647
1647
 
1648
- .cn-file-input-accept {
1649
- @apply text-xs opacity-70;
1648
+ .cn-file-input-placeholder,
1649
+ .cn-file-input-value {
1650
+ @apply truncate text-xs font-medium;
1651
+ }
1652
+
1653
+ .cn-file-input-meta {
1654
+ @apply text-muted-foreground text-xs;
1655
+ }
1656
+
1657
+ .cn-file-input-actions {
1658
+ @apply flex items-center gap-1;
1659
+ }
1660
+
1661
+ .cn-file-input-trigger {
1662
+ @apply text-muted-foreground flex size-8 items-center justify-center rounded-none border bg-background;
1650
1663
  }
1651
1664
 
1652
1665
  .cn-file-input-list {
@@ -1673,8 +1686,127 @@
1673
1686
  @apply text-muted-foreground text-xs tabular-nums;
1674
1687
  }
1675
1688
 
1676
- .cn-file-input-item-remove {
1677
- @apply hover:bg-accent transition-colors;
1689
+ /* MARK: File Drop Input */
1690
+ .cn-file-drop-input-wrapper {
1691
+ @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1692
+ }
1693
+
1694
+ .cn-file-drop-input-dropzone {
1695
+ @apply border-input bg-background hover:bg-accent/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-none border-2 border-dashed p-4 transition-colors outline-none focus-within:ring-1 data-[dragging=true]:border-ring data-[dragging=true]:bg-accent/20;
1696
+ }
1697
+
1698
+ .cn-file-drop-input-hidden-input {
1699
+ @apply sr-only;
1700
+ }
1701
+
1702
+ .cn-file-drop-input-prompt {
1703
+ @apply text-muted-foreground flex items-center gap-4 text-left;
1704
+ }
1705
+
1706
+ .cn-file-drop-input-icon {
1707
+ @apply size-10 shrink-0;
1708
+ }
1709
+
1710
+ .cn-file-drop-input-title {
1711
+ @apply text-foreground text-xl font-medium;
1712
+ }
1713
+
1714
+ .cn-file-drop-input-description {
1715
+ @apply text-muted-foreground mt-1 text-base;
1716
+ }
1717
+
1718
+ .cn-file-drop-input-single-preview {
1719
+ @apply relative size-full;
1720
+ }
1721
+
1722
+ .cn-file-drop-input-preview {
1723
+ @apply border-input bg-background size-full overflow-hidden rounded-none border;
1724
+ }
1725
+
1726
+ .cn-file-drop-input-preview-actions {
1727
+ @apply absolute top-3 right-3 flex gap-2;
1728
+ }
1729
+
1730
+ .cn-file-drop-input-list {
1731
+ @apply space-y-2;
1732
+ }
1733
+
1734
+ .cn-file-drop-input-item {
1735
+ @apply border-input bg-background flex items-center justify-between rounded-none border px-3 py-2 text-xs;
1736
+ }
1737
+
1738
+ .cn-file-drop-input-item-left {
1739
+ @apply flex min-w-0 items-center gap-2;
1740
+ }
1741
+
1742
+ .cn-file-drop-input-item-icon {
1743
+ @apply text-muted-foreground size-4 shrink-0;
1744
+ }
1745
+
1746
+ .cn-file-drop-input-item-name {
1747
+ @apply truncate;
1748
+ }
1749
+
1750
+ .cn-file-drop-input-item-size {
1751
+ @apply text-muted-foreground text-xs tabular-nums;
1752
+ }
1753
+
1754
+ /* MARK: File Upload */
1755
+ .cn-file-upload {
1756
+ @apply border-input bg-background rounded-none border-2;
1757
+ }
1758
+
1759
+ .cn-file-upload-prompt {
1760
+ @apply items-start;
1761
+ }
1762
+
1763
+ .cn-file-upload-icon {
1764
+ @apply border-input bg-background rounded-none border;
1765
+ }
1766
+
1767
+ .cn-file-upload-button {
1768
+ @apply shrink-0;
1769
+ }
1770
+
1771
+ .cn-file-upload-item {
1772
+ @apply border-input bg-background rounded-none;
1773
+ }
1774
+
1775
+ .cn-file-upload-preview {
1776
+ @apply border-input bg-background rounded-none border;
1777
+ }
1778
+
1779
+ .cn-file-upload-item-icon {
1780
+ @apply border-input bg-background rounded-none border;
1781
+ }
1782
+
1783
+ .cn-file-upload-empty {
1784
+ @apply border-input bg-background rounded-none;
1785
+ }
1786
+
1787
+ /* MARK: Image Upload */
1788
+ .cn-image-upload {
1789
+ @apply rounded-none;
1790
+ }
1791
+
1792
+ .cn-image-upload-dropzone {
1793
+ @apply border-input bg-background rounded-none border-2;
1794
+ }
1795
+
1796
+ .cn-image-upload-preview {
1797
+ @apply border-input bg-background rounded-none border;
1798
+ }
1799
+
1800
+ .cn-image-upload-sidebar {
1801
+ @apply text-xs;
1802
+ }
1803
+
1804
+ .cn-image-upload-placeholder {
1805
+ @apply border-input bg-background rounded-none border border-dashed;
1806
+ }
1807
+
1808
+ .cn-image-upload-placeholder-icon {
1809
+ @apply border-input bg-background rounded-none border;
1678
1810
  }
1679
1811
 
1680
1812
  /* MARK: Animated Tabs */
@@ -1671,28 +1671,41 @@
1671
1671
  @apply w-full space-y-3 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1672
1672
  }
1673
1673
 
1674
- .cn-file-input-dropzone {
1675
- @apply border-input bg-input/30 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-2xl border-2 border-dashed px-5 py-7 text-sm transition-colors outline-none focus-within:ring-[3px] data-[dragging=true]:border-ring data-[dragging=true]:bg-input/50;
1674
+ .cn-file-input-hidden-input {
1675
+ @apply sr-only;
1676
1676
  }
1677
1677
 
1678
- .cn-file-input-hidden-input {
1679
- @apply absolute inset-0 cursor-pointer opacity-0;
1678
+ .cn-file-input-root {
1679
+ @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-2xl border px-4 py-3 text-left transition-colors outline-none focus-visible:ring-3;
1680
1680
  }
1681
1681
 
1682
- .cn-file-input-prompt {
1683
- @apply text-muted-foreground flex flex-col items-center gap-2 text-center;
1682
+ .cn-file-input-section {
1683
+ @apply text-muted-foreground flex size-9 shrink-0 items-center justify-center rounded-xl border bg-muted/30;
1684
1684
  }
1685
1685
 
1686
- .cn-file-input-icon {
1687
- @apply size-8;
1686
+ .cn-file-input-preview {
1687
+ @apply border-input bg-input/15 size-14 shrink-0 overflow-hidden rounded-xl border;
1688
1688
  }
1689
1689
 
1690
- .cn-file-input-title {
1691
- @apply text-sm;
1690
+ .cn-file-input-body {
1691
+ @apply flex min-w-0 flex-1 flex-col;
1692
+ }
1693
+
1694
+ .cn-file-input-placeholder,
1695
+ .cn-file-input-value {
1696
+ @apply truncate text-sm font-medium;
1697
+ }
1698
+
1699
+ .cn-file-input-meta {
1700
+ @apply text-muted-foreground text-xs;
1701
+ }
1702
+
1703
+ .cn-file-input-actions {
1704
+ @apply flex items-center gap-1;
1692
1705
  }
1693
1706
 
1694
- .cn-file-input-accept {
1695
- @apply text-xs opacity-70;
1707
+ .cn-file-input-trigger {
1708
+ @apply text-muted-foreground flex size-9 items-center justify-center rounded-xl border bg-muted/30;
1696
1709
  }
1697
1710
 
1698
1711
  .cn-file-input-list {
@@ -1719,8 +1732,127 @@
1719
1732
  @apply text-muted-foreground text-xs tabular-nums;
1720
1733
  }
1721
1734
 
1722
- .cn-file-input-item-remove {
1723
- @apply hover:bg-accent transition-colors;
1735
+ /* MARK: File Drop Input */
1736
+ .cn-file-drop-input-wrapper {
1737
+ @apply w-full space-y-3 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1738
+ }
1739
+
1740
+ .cn-file-drop-input-dropzone {
1741
+ @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-2xl border-2 border-dashed p-5 transition-colors outline-none focus-within:ring-[3px] data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1742
+ }
1743
+
1744
+ .cn-file-drop-input-hidden-input {
1745
+ @apply sr-only;
1746
+ }
1747
+
1748
+ .cn-file-drop-input-prompt {
1749
+ @apply text-muted-foreground flex items-center gap-5 text-left;
1750
+ }
1751
+
1752
+ .cn-file-drop-input-icon {
1753
+ @apply size-12 shrink-0;
1754
+ }
1755
+
1756
+ .cn-file-drop-input-title {
1757
+ @apply text-foreground text-2xl font-medium;
1758
+ }
1759
+
1760
+ .cn-file-drop-input-description {
1761
+ @apply text-muted-foreground mt-1 text-lg;
1762
+ }
1763
+
1764
+ .cn-file-drop-input-single-preview {
1765
+ @apply relative size-full;
1766
+ }
1767
+
1768
+ .cn-file-drop-input-preview {
1769
+ @apply border-input bg-background size-full overflow-hidden rounded-xl border;
1770
+ }
1771
+
1772
+ .cn-file-drop-input-preview-actions {
1773
+ @apply absolute top-4 right-4 flex gap-2;
1774
+ }
1775
+
1776
+ .cn-file-drop-input-list {
1777
+ @apply space-y-3;
1778
+ }
1779
+
1780
+ .cn-file-drop-input-item {
1781
+ @apply border-input bg-input/20 flex items-center justify-between rounded-2xl border px-4 py-3 text-sm;
1782
+ }
1783
+
1784
+ .cn-file-drop-input-item-left {
1785
+ @apply flex min-w-0 items-center gap-2;
1786
+ }
1787
+
1788
+ .cn-file-drop-input-item-icon {
1789
+ @apply text-muted-foreground size-4 shrink-0;
1790
+ }
1791
+
1792
+ .cn-file-drop-input-item-name {
1793
+ @apply truncate;
1794
+ }
1795
+
1796
+ .cn-file-drop-input-item-size {
1797
+ @apply text-muted-foreground text-xs tabular-nums;
1798
+ }
1799
+
1800
+ /* MARK: File Upload */
1801
+ .cn-file-upload {
1802
+ @apply border-input bg-background rounded-2xl border-2;
1803
+ }
1804
+
1805
+ .cn-file-upload-prompt {
1806
+ @apply items-start;
1807
+ }
1808
+
1809
+ .cn-file-upload-icon {
1810
+ @apply border-input bg-input/30 rounded-xl border;
1811
+ }
1812
+
1813
+ .cn-file-upload-button {
1814
+ @apply shrink-0;
1815
+ }
1816
+
1817
+ .cn-file-upload-item {
1818
+ @apply border-input bg-input/30 rounded-2xl;
1819
+ }
1820
+
1821
+ .cn-file-upload-preview {
1822
+ @apply border-input bg-input/15 rounded-xl border;
1823
+ }
1824
+
1825
+ .cn-file-upload-item-icon {
1826
+ @apply border-input bg-background rounded-lg border;
1827
+ }
1828
+
1829
+ .cn-file-upload-empty {
1830
+ @apply border-input bg-input/15 rounded-2xl;
1831
+ }
1832
+
1833
+ /* MARK: Image Upload */
1834
+ .cn-image-upload {
1835
+ @apply rounded-2xl;
1836
+ }
1837
+
1838
+ .cn-image-upload-dropzone {
1839
+ @apply border-input bg-background rounded-2xl border-2;
1840
+ }
1841
+
1842
+ .cn-image-upload-preview {
1843
+ @apply border-input bg-input/30 rounded-xl border;
1844
+ }
1845
+
1846
+ .cn-image-upload-sidebar {
1847
+ @apply text-sm;
1848
+ }
1849
+
1850
+ .cn-image-upload-placeholder {
1851
+ @apply border-input bg-input/15 rounded-xl border border-dashed;
1852
+ }
1853
+
1854
+ .cn-image-upload-placeholder-icon {
1855
+ @apply border-input bg-background rounded-xl border;
1724
1856
  }
1725
1857
 
1726
1858
  /* MARK: Animated Tabs */
@@ -1673,28 +1673,41 @@
1673
1673
  @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1674
1674
  }
1675
1675
 
1676
- .cn-file-input-dropzone {
1677
- @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/30 relative flex min-h-[9rem] w-full cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed px-3 py-6 text-xs/relaxed transition-colors outline-none focus-within:ring-2 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1676
+ .cn-file-input-hidden-input {
1677
+ @apply sr-only;
1678
1678
  }
1679
1679
 
1680
- .cn-file-input-hidden-input {
1681
- @apply absolute inset-0 cursor-pointer opacity-0;
1680
+ .cn-file-input-root {
1681
+ @apply border-input bg-background hover:bg-accent/40 focus-visible:border-ring focus-visible:ring-ring/30 flex min-h-9 w-full items-center gap-2 rounded-lg border px-3 py-2 text-left text-xs/relaxed transition-colors outline-none focus-visible:ring-2;
1682
1682
  }
1683
1683
 
1684
- .cn-file-input-prompt {
1685
- @apply text-muted-foreground flex flex-col items-center gap-2 text-center;
1684
+ .cn-file-input-section {
1685
+ @apply text-muted-foreground flex size-7 shrink-0 items-center justify-center rounded-md border bg-muted/30;
1686
1686
  }
1687
1687
 
1688
- .cn-file-input-icon {
1689
- @apply size-8;
1688
+ .cn-file-input-preview {
1689
+ @apply border-input bg-input/10 size-10 shrink-0 overflow-hidden rounded-md border;
1690
1690
  }
1691
1691
 
1692
- .cn-file-input-title {
1693
- @apply text-xs/relaxed;
1692
+ .cn-file-input-body {
1693
+ @apply flex min-w-0 flex-1 flex-col;
1694
+ }
1695
+
1696
+ .cn-file-input-placeholder,
1697
+ .cn-file-input-value {
1698
+ @apply truncate text-xs font-medium;
1699
+ }
1700
+
1701
+ .cn-file-input-meta {
1702
+ @apply text-muted-foreground text-[0.625rem];
1703
+ }
1704
+
1705
+ .cn-file-input-actions {
1706
+ @apply flex items-center gap-1;
1694
1707
  }
1695
1708
 
1696
- .cn-file-input-accept {
1697
- @apply text-[0.625rem] opacity-70;
1709
+ .cn-file-input-trigger {
1710
+ @apply text-muted-foreground flex size-7 items-center justify-center rounded-md border bg-muted/30;
1698
1711
  }
1699
1712
 
1700
1713
  .cn-file-input-list {
@@ -1721,8 +1734,127 @@
1721
1734
  @apply text-muted-foreground text-[0.625rem] tabular-nums;
1722
1735
  }
1723
1736
 
1724
- .cn-file-input-item-remove {
1725
- @apply hover:bg-accent transition-colors;
1737
+ /* MARK: File Drop Input */
1738
+ .cn-file-drop-input-wrapper {
1739
+ @apply w-full space-y-2 data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50;
1740
+ }
1741
+
1742
+ .cn-file-drop-input-dropzone {
1743
+ @apply border-input bg-input/10 hover:bg-input/20 focus-within:border-ring focus-within:ring-ring/30 relative flex min-h-[11rem] w-full cursor-pointer flex-col items-center justify-center rounded-lg border-2 border-dashed p-3 transition-colors outline-none focus-within:ring-2 data-[dragging=true]:border-ring data-[dragging=true]:bg-input/30;
1744
+ }
1745
+
1746
+ .cn-file-drop-input-hidden-input {
1747
+ @apply sr-only;
1748
+ }
1749
+
1750
+ .cn-file-drop-input-prompt {
1751
+ @apply text-muted-foreground flex items-center gap-3 text-left;
1752
+ }
1753
+
1754
+ .cn-file-drop-input-icon {
1755
+ @apply size-9 shrink-0;
1756
+ }
1757
+
1758
+ .cn-file-drop-input-title {
1759
+ @apply text-foreground text-lg font-medium;
1760
+ }
1761
+
1762
+ .cn-file-drop-input-description {
1763
+ @apply text-muted-foreground mt-1 text-sm;
1764
+ }
1765
+
1766
+ .cn-file-drop-input-single-preview {
1767
+ @apply relative size-full;
1768
+ }
1769
+
1770
+ .cn-file-drop-input-preview {
1771
+ @apply border-input bg-background size-full overflow-hidden rounded-md border;
1772
+ }
1773
+
1774
+ .cn-file-drop-input-preview-actions {
1775
+ @apply absolute top-3 right-3 flex gap-2;
1776
+ }
1777
+
1778
+ .cn-file-drop-input-list {
1779
+ @apply space-y-2;
1780
+ }
1781
+
1782
+ .cn-file-drop-input-item {
1783
+ @apply border-input bg-input/20 flex items-center justify-between rounded-lg border px-3 py-2 text-xs/relaxed;
1784
+ }
1785
+
1786
+ .cn-file-drop-input-item-left {
1787
+ @apply flex min-w-0 items-center gap-2;
1788
+ }
1789
+
1790
+ .cn-file-drop-input-item-icon {
1791
+ @apply text-muted-foreground size-4 shrink-0;
1792
+ }
1793
+
1794
+ .cn-file-drop-input-item-name {
1795
+ @apply truncate;
1796
+ }
1797
+
1798
+ .cn-file-drop-input-item-size {
1799
+ @apply text-muted-foreground text-[0.625rem] tabular-nums;
1800
+ }
1801
+
1802
+ /* MARK: File Upload */
1803
+ .cn-file-upload {
1804
+ @apply border-input bg-background rounded-lg border-2 text-xs/relaxed;
1805
+ }
1806
+
1807
+ .cn-file-upload-prompt {
1808
+ @apply items-start;
1809
+ }
1810
+
1811
+ .cn-file-upload-icon {
1812
+ @apply border-input bg-input/20 rounded-md border;
1813
+ }
1814
+
1815
+ .cn-file-upload-button {
1816
+ @apply shrink-0;
1817
+ }
1818
+
1819
+ .cn-file-upload-item {
1820
+ @apply border-input bg-input/20 rounded-lg;
1821
+ }
1822
+
1823
+ .cn-file-upload-preview {
1824
+ @apply border-input bg-input/10 rounded-md border;
1825
+ }
1826
+
1827
+ .cn-file-upload-item-icon {
1828
+ @apply border-input bg-background rounded-md border;
1829
+ }
1830
+
1831
+ .cn-file-upload-empty {
1832
+ @apply border-input bg-input/10 rounded-lg;
1833
+ }
1834
+
1835
+ /* MARK: Image Upload */
1836
+ .cn-image-upload {
1837
+ @apply rounded-lg text-xs/relaxed;
1838
+ }
1839
+
1840
+ .cn-image-upload-dropzone {
1841
+ @apply border-input bg-background rounded-lg border-2;
1842
+ }
1843
+
1844
+ .cn-image-upload-preview {
1845
+ @apply border-input bg-input/20 rounded-md border;
1846
+ }
1847
+
1848
+ .cn-image-upload-sidebar {
1849
+ @apply text-xs/relaxed;
1850
+ }
1851
+
1852
+ .cn-image-upload-placeholder {
1853
+ @apply border-input bg-input/10 rounded-md border border-dashed;
1854
+ }
1855
+
1856
+ .cn-image-upload-placeholder-icon {
1857
+ @apply border-input bg-background rounded-md border;
1726
1858
  }
1727
1859
 
1728
1860
  /* MARK: Animated Tabs */