odt-ui-rails 2.2.4 → 2.2.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.
@@ -590,91 +590,120 @@
590
590
  .odt-btn--filled {
591
591
  box-shadow: var(--shadow-card);
592
592
  }
593
- .odt-btn--filled-primary {
593
+ .odt-btn--filled-primary,
594
+ .odt-btn--capsule-primary {
594
595
  background-color: var(--color-primary-500);
595
596
  color: var(--color-btn-primary-fg, #ffffff);
596
597
  }
597
- .odt-btn--filled-primary:hover:not(:disabled) {
598
+ .odt-btn--filled-primary:hover:not(:disabled),
599
+ .odt-btn--capsule-primary:hover:not(:disabled) {
598
600
  background-color: var(--color-primary-600);
599
601
  }
600
- .odt-btn--filled-primary:active:not(:disabled) {
602
+ .odt-btn--filled-primary:active:not(:disabled),
603
+ .odt-btn--capsule-primary:active:not(:disabled) {
601
604
  background-color: var(--color-primary-700);
602
605
  }
603
606
 
604
- .odt-btn--filled-secondary {
607
+ .odt-btn--filled-secondary,
608
+ .odt-btn--capsule-secondary {
605
609
  background-color: var(--color-secondary-500);
606
610
  color: var(--color-btn-secondary-fg, hsl(224 25% 6%));
607
611
  }
608
- .odt-btn--filled-secondary:hover:not(:disabled) {
612
+ .odt-btn--filled-secondary:hover:not(:disabled),
613
+ .odt-btn--capsule-secondary:hover:not(:disabled) {
609
614
  background-color: var(--color-secondary-400);
610
615
  }
611
- .odt-btn--filled-secondary:active:not(:disabled) {
616
+ .odt-btn--filled-secondary:active:not(:disabled),
617
+ .odt-btn--capsule-secondary:active:not(:disabled) {
612
618
  background-color: var(--color-secondary-600);
613
619
  }
614
620
 
615
- .odt-btn--filled-surface {
621
+ .odt-btn--filled-surface,
622
+ .odt-btn--capsule-surface {
616
623
  background-color: var(--color-surface);
617
624
  color: var(--color-btn-surface-fg, var(--color-fg-strong));
618
625
  }
619
- .odt-btn--filled-surface:hover:not(:disabled) {
626
+ .odt-btn--filled-surface:hover:not(:disabled),
627
+ .odt-btn--capsule-surface:hover:not(:disabled) {
620
628
  background-color: var(--color-surface-muted);
621
629
  }
622
- .odt-btn--filled-surface:active:not(:disabled) {
630
+ .odt-btn--filled-surface:active:not(:disabled),
631
+ .odt-btn--capsule-surface:active:not(:disabled) {
623
632
  background-color: var(--color-surface-subtle);
624
633
  }
625
634
 
626
- .odt-btn--filled-muted {
635
+ .odt-btn--filled-muted,
636
+ .odt-btn--capsule-muted {
627
637
  background-color: var(--color-surface-muted);
628
638
  color: var(--color-btn-muted-fg, var(--color-fg));
629
639
  }
630
- .odt-btn--filled-muted:hover:not(:disabled) {
640
+ .odt-btn--filled-muted:hover:not(:disabled),
641
+ .odt-btn--capsule-muted:hover:not(:disabled) {
631
642
  background-color: var(--color-surface-subtle);
632
643
  color: var(--color-fg-strong);
633
644
  }
634
- .odt-btn--filled-muted:active:not(:disabled) {
645
+ .odt-btn--filled-muted:active:not(:disabled),
646
+ .odt-btn--capsule-muted:active:not(:disabled) {
635
647
  background-color: var(--color-surface);
636
648
  }
637
649
 
638
- .odt-btn--filled-inverse {
650
+ .odt-btn--filled-inverse,
651
+ .odt-btn--capsule-inverse {
639
652
  background-color: var(--color-fg-strong);
640
653
  color: var(--color-btn-inverse-fg, var(--color-surface));
641
654
  }
642
- .odt-btn--filled-inverse:hover:not(:disabled) { opacity: 0.9; }
643
- .odt-btn--filled-inverse:active:not(:disabled) { opacity: 0.8; }
655
+ .odt-btn--filled-inverse:hover:not(:disabled),
656
+ .odt-btn--capsule-inverse:hover:not(:disabled) { opacity: 0.9; }
657
+ .odt-btn--filled-inverse:active:not(:disabled),
658
+ .odt-btn--capsule-inverse:active:not(:disabled) { opacity: 0.8; }
644
659
 
645
- .odt-btn--filled-success {
660
+ .odt-btn--filled-success,
661
+ .odt-btn--capsule-success {
646
662
  background-color: var(--color-success);
647
663
  color: var(--color-btn-success-fg, #ffffff);
648
664
  }
649
- .odt-btn--filled-success:hover:not(:disabled) { opacity: 0.9; }
650
- .odt-btn--filled-success:active:not(:disabled) { opacity: 0.8; }
665
+ .odt-btn--filled-success:hover:not(:disabled),
666
+ .odt-btn--capsule-success:hover:not(:disabled) { opacity: 0.9; }
667
+ .odt-btn--filled-success:active:not(:disabled),
668
+ .odt-btn--capsule-success:active:not(:disabled) { opacity: 0.8; }
651
669
 
652
- .odt-btn--filled-warning {
670
+ .odt-btn--filled-warning,
671
+ .odt-btn--capsule-warning {
653
672
  background-color: var(--color-warning);
654
673
  color: var(--color-btn-warning-fg, var(--color-fg-strong));
655
674
  }
656
- .odt-btn--filled-warning:hover:not(:disabled) { opacity: 0.9; }
657
- .odt-btn--filled-warning:active:not(:disabled) { opacity: 0.8; }
675
+ .odt-btn--filled-warning:hover:not(:disabled),
676
+ .odt-btn--capsule-warning:hover:not(:disabled) { opacity: 0.9; }
677
+ .odt-btn--filled-warning:active:not(:disabled),
678
+ .odt-btn--capsule-warning:active:not(:disabled) { opacity: 0.8; }
658
679
 
659
- .odt-btn--filled-danger {
680
+ .odt-btn--filled-danger,
681
+ .odt-btn--capsule-danger {
660
682
  background-color: var(--color-danger);
661
683
  color: var(--color-btn-danger-fg, #ffffff);
662
684
  }
663
- .odt-btn--filled-danger:hover:not(:disabled) { opacity: 0.9; }
664
- .odt-btn--filled-danger:active:not(:disabled) { opacity: 0.8; }
685
+ .odt-btn--filled-danger:hover:not(:disabled),
686
+ .odt-btn--capsule-danger:hover:not(:disabled) { opacity: 0.9; }
687
+ .odt-btn--filled-danger:active:not(:disabled),
688
+ .odt-btn--capsule-danger:active:not(:disabled) { opacity: 0.8; }
665
689
 
666
- .odt-btn--filled-info {
690
+ .odt-btn--filled-info,
691
+ .odt-btn--capsule-info {
667
692
  background-color: var(--color-info);
668
693
  color: var(--color-btn-info-fg, #ffffff);
669
694
  }
670
- .odt-btn--filled-info:hover:not(:disabled) { opacity: 0.9; }
671
- .odt-btn--filled-info:active:not(:disabled) { opacity: 0.8; }
695
+ .odt-btn--filled-info:hover:not(:disabled),
696
+ .odt-btn--capsule-info:hover:not(:disabled) { opacity: 0.9; }
697
+ .odt-btn--filled-info:active:not(:disabled),
698
+ .odt-btn--capsule-info:active:not(:disabled) { opacity: 0.8; }
672
699
 
673
- .odt-btn--filled-neutral {
700
+ .odt-btn--filled-neutral,
701
+ .odt-btn--capsule-neutral {
674
702
  background-color: var(--color-neutral-800);
675
703
  color: #ffffff;
676
704
  }
677
- .odt-btn--filled-neutral:hover:not(:disabled) {
705
+ .odt-btn--filled-neutral:hover:not(:disabled),
706
+ .odt-btn--capsule-neutral:hover:not(:disabled) {
678
707
  background-color: var(--color-neutral-900);
679
708
  }
680
709
 
@@ -1101,6 +1130,11 @@
1101
1130
  .odt-color-muted { color: var(--color-fg-muted); }
1102
1131
  .odt-color-subtle { color: var(--color-fg-subtle); }
1103
1132
  .odt-color-disabled { color: var(--color-fg-disabled); }
1133
+ .odt-color-inverse-strong { color: var(--color-fg-inverse-strong); }
1134
+ .odt-color-inverse { color: var(--color-fg-inverse); }
1135
+ .odt-color-inverse-muted { color: var(--color-fg-inverse-muted); }
1136
+ .odt-color-inverse-subtle { color: var(--color-fg-inverse-subtle); }
1137
+ .odt-color-inverse-disabled { color: var(--color-fg-inverse-disabled); }
1104
1138
  .odt-color-primary { color: var(--color-fg-primary); }
1105
1139
  .odt-color-secondary { color: var(--color-fg-secondary); }
1106
1140
  .odt-color-success { color: var(--color-fg-success); }
@@ -1254,6 +1288,14 @@
1254
1288
  border-color: var(--color-ring);
1255
1289
  }
1256
1290
 
1291
+ .odt-input--unstyled,
1292
+ .odt-textarea--unstyled {
1293
+ background: transparent;
1294
+ border: none;
1295
+ padding: 0;
1296
+ box-shadow: none;
1297
+ }
1298
+
1257
1299
  /* Form Sizes */
1258
1300
  .odt-input--sm, .odt-select--sm {
1259
1301
  height: 2rem;
@@ -1661,134 +1703,135 @@
1661
1703
  left: 0;
1662
1704
  }
1663
1705
 
1706
+ .odt-toaster {
1707
+ position: fixed;
1708
+ z-index: 9999;
1709
+ box-sizing: border-box;
1710
+ font-family: inherit;
1711
+ width: 100%;
1712
+ max-width: 24rem; /* 384px */
1713
+ padding: var(--spacing-4, 1rem);
1714
+ pointer-events: none;
1715
+ min-height: 5rem;
1716
+ }
1717
+
1718
+ /* Positions */
1719
+ .odt-toaster--top-right {
1720
+ top: 0;
1721
+ right: 0;
1722
+ }
1723
+
1724
+ .odt-toaster--top-center {
1725
+ top: 0;
1726
+ left: 50%;
1727
+ transform: translateX(-50%);
1728
+ }
1729
+
1730
+ .odt-toaster--top-left {
1731
+ top: 0;
1732
+ left: 0;
1733
+ }
1734
+
1664
1735
  .odt-toaster--bottom-right {
1665
1736
  bottom: 0;
1666
1737
  right: 0;
1667
- flex-direction: column-reverse;
1668
1738
  }
1669
1739
 
1670
1740
  .odt-toaster--bottom-center {
1671
1741
  bottom: 0;
1672
1742
  left: 50%;
1673
1743
  transform: translateX(-50%);
1674
- flex-direction: column-reverse;
1675
1744
  }
1676
1745
 
1677
1746
  .odt-toaster--bottom-left {
1678
1747
  bottom: 0;
1679
1748
  left: 0;
1680
- flex-direction: column-reverse;
1681
1749
  }
1682
1750
 
1683
- /* Toast Item */
1751
+ /* Toast Item Card (Absolute within Toaster for 3D stacking) */
1684
1752
  .odt-toast {
1685
- position: relative;
1686
- width: 100%;
1753
+ position: absolute;
1754
+ left: var(--spacing-4, 1rem);
1755
+ right: var(--spacing-4, 1rem);
1687
1756
  box-sizing: border-box;
1688
1757
  display: flex;
1689
1758
  align-items: flex-start;
1690
1759
  gap: var(--spacing-3, 0.75rem);
1691
- padding: var(--spacing-3-5, 0.875rem) var(--spacing-4, 1rem);
1760
+ padding: var(--spacing-4, 1rem) var(--spacing-4-5, 1.125rem);
1692
1761
  background-color: var(--color-surface-elevated, #ffffff);
1693
1762
  color: var(--color-fg);
1694
1763
  border-radius: var(--radius-2xl, 1rem);
1695
- box-shadow: 0 8px 24px -4px rgba(0, 0, 0, 0.08), 0 2px 6px -2px rgba(0, 0, 0, 0.04);
1696
- border: 1px solid var(--color-line-muted, #f4f4f5);
1764
+ box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04);
1697
1765
  pointer-events: auto;
1698
1766
  user-select: none;
1699
1767
  font-family: inherit;
1700
1768
  overflow: hidden;
1701
- animation: odt-toast-enter 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards;
1702
- transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.25s ease, margin 0.25s ease;
1703
- }
1704
-
1705
- .odt-toast--exiting {
1706
- animation: odt-toast-exit 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
1707
- }
1708
-
1709
- @keyframes odt-toast-enter {
1710
- 0% {
1711
- opacity: 0;
1712
- transform: translateY(-12px) scale(0.96);
1713
- }
1714
- 100% {
1715
- opacity: 1;
1716
- transform: translateY(0) scale(1);
1717
- }
1769
+ transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1),
1770
+ opacity 0.28s cubic-bezier(0.16, 1, 0.3, 1),
1771
+ box-shadow 0.25s ease;
1772
+ will-change: transform, opacity;
1718
1773
  }
1719
1774
 
1720
- @keyframes odt-toast-exit {
1721
- 0% {
1722
- opacity: 1;
1723
- transform: translateY(0) scale(1);
1724
- }
1725
- 100% {
1726
- opacity: 0;
1727
- transform: translateY(-8px) scale(0.94);
1728
- }
1775
+ .odt-toaster--top-right .odt-toast,
1776
+ .odt-toaster--top-center .odt-toast,
1777
+ .odt-toaster--top-left .odt-toast {
1778
+ top: var(--spacing-4, 1rem);
1779
+ bottom: auto;
1780
+ transform-origin: top center;
1729
1781
  }
1730
1782
 
1731
1783
  .odt-toaster--bottom-right .odt-toast,
1732
1784
  .odt-toaster--bottom-center .odt-toast,
1733
1785
  .odt-toaster--bottom-left .odt-toast {
1734
- animation-name: odt-toast-enter-bottom;
1786
+ bottom: var(--spacing-4, 1rem);
1787
+ top: auto;
1788
+ transform-origin: bottom center;
1789
+ }
1790
+
1791
+ .odt-toast--exiting {
1792
+ opacity: 0 !important;
1793
+ transform: scale(0.92) translateY(-12px) !important;
1794
+ pointer-events: none !important;
1795
+ transition: transform 0.24s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.24s ease !important;
1735
1796
  }
1736
1797
 
1737
1798
  .odt-toaster--bottom-right .odt-toast--exiting,
1738
1799
  .odt-toaster--bottom-center .odt-toast--exiting,
1739
1800
  .odt-toaster--bottom-left .odt-toast--exiting {
1740
- animation-name: odt-toast-exit-bottom;
1801
+ transform: scale(0.92) translateY(12px) !important;
1741
1802
  }
1742
1803
 
1743
- @keyframes odt-toast-enter-bottom {
1744
- 0% {
1745
- opacity: 0;
1746
- transform: translateY(12px) scale(0.96);
1747
- }
1748
- 100% {
1749
- opacity: 1;
1750
- transform: translateY(0) scale(1);
1751
- }
1804
+ /* Surface Variants */
1805
+ .odt-toast--variant-frosted {
1806
+ background-color: var(--frosted-surface-bg, rgba(255, 255, 255, 0.70));
1807
+ backdrop-filter: blur(16px);
1808
+ -webkit-backdrop-filter: blur(16px);
1752
1809
  }
1753
1810
 
1754
- @keyframes odt-toast-exit-bottom {
1755
- 0% {
1756
- opacity: 1;
1757
- transform: translateY(0) scale(1);
1758
- }
1759
- 100% {
1760
- opacity: 0;
1761
- transform: translateY(8px) scale(0.94);
1762
- }
1811
+ .odt-toast--variant-subtle {
1812
+ background-color: var(--color-surface-subtle);
1813
+ }
1814
+
1815
+ .odt-toast--variant-outlined {
1816
+ background-color: var(--color-surface);
1763
1817
  }
1764
1818
 
1765
- /* Toast Variants / Semantic Themes */
1766
- .odt-toast--success {
1819
+ /* Rich Color Tints (Optional) */
1820
+ .odt-toast--rich-success {
1767
1821
  background-color: var(--color-surface-success, hsl(142 71% 96%));
1768
- border-color: var(--color-line-success, hsl(142 71% 85%));
1769
1822
  }
1770
1823
 
1771
- .odt-toast--warning {
1824
+ .odt-toast--rich-warning {
1772
1825
  background-color: var(--color-surface-warning, hsl(38 92% 96%));
1773
- border-color: var(--color-line-warning, hsl(38 92% 85%));
1774
1826
  }
1775
1827
 
1776
- .odt-toast--danger,
1777
- .odt-toast--error {
1828
+ .odt-toast--rich-danger,
1829
+ .odt-toast--rich-error {
1778
1830
  background-color: var(--color-surface-danger, hsl(0 84% 97%));
1779
- border-color: var(--color-line-danger, hsl(0 84% 88%));
1780
1831
  }
1781
1832
 
1782
- .odt-toast--info {
1833
+ .odt-toast--rich-info {
1783
1834
  background-color: var(--color-surface-info, hsl(217 91% 97%));
1784
- border-color: var(--color-info, hsl(217 91% 88%));
1785
- }
1786
-
1787
- .odt-toast--frosted {
1788
- background-color: var(--frosted-surface-bg, rgba(255, 255, 255, 0.70));
1789
- backdrop-filter: blur(16px);
1790
- -webkit-backdrop-filter: blur(16px);
1791
- border: 1px solid var(--frosted-surface-border, rgba(255, 255, 255, 0.80));
1792
1835
  }
1793
1836
 
1794
1837
  /* Toast Sub-elements */
@@ -1799,10 +1842,13 @@
1799
1842
  width: 1.375rem;
1800
1843
  height: 1.375rem;
1801
1844
  flex-shrink: 0;
1802
- font-size: 1.125rem;
1803
1845
  margin-top: 0.0625rem;
1804
1846
  }
1805
1847
 
1848
+ .odt-toast__icon svg {
1849
+ display: block;
1850
+ }
1851
+
1806
1852
  .odt-toast__icon--success { color: var(--color-success, #16a34a); }
1807
1853
  .odt-toast__icon--warning { color: var(--color-warning, #d97706); }
1808
1854
  .odt-toast__icon--danger,
@@ -1822,18 +1868,18 @@
1822
1868
  }
1823
1869
 
1824
1870
  .odt-toast__title {
1825
- font-size: var(--font-size-sm, 0.875rem);
1871
+ font-size: var(--font-size-base, 0.9375rem);
1826
1872
  font-weight: var(--font-weight-semibold, 600);
1827
1873
  color: var(--color-fg-strong);
1828
1874
  line-height: 1.35;
1829
1875
  margin: 0;
1830
1876
  }
1831
1877
 
1832
- .odt-toast__message,
1833
- .odt-toast__description {
1834
- font-size: var(--font-size-xs, 0.75rem);
1878
+ .odt-toast__description,
1879
+ .odt-toast__message {
1880
+ font-size: var(--font-size-sm, 0.8125rem);
1835
1881
  color: var(--color-fg-muted);
1836
- line-height: 1.4;
1882
+ line-height: 1.45;
1837
1883
  margin: 0;
1838
1884
  }
1839
1885
 
@@ -1851,9 +1897,8 @@
1851
1897
  cursor: pointer;
1852
1898
  flex-shrink: 0;
1853
1899
  margin-left: auto;
1900
+ margin-top: -0.125rem;
1854
1901
  transition: background-color 0.15s ease, color 0.15s ease;
1855
- font-size: 1.125rem;
1856
- line-height: 1;
1857
1902
  }
1858
1903
 
1859
1904
  .odt-toast__close:hover {
@@ -1861,6 +1906,10 @@
1861
1906
  color: var(--color-fg-strong);
1862
1907
  }
1863
1908
 
1909
+ .odt-toast__close svg {
1910
+ display: block;
1911
+ }
1912
+
1864
1913
  /* ==========================================================================
1865
1914
  * 11. Modal Component (.odt-modal-overlay, .odt-modal)
1866
1915
  * ========================================================================== */
@@ -2045,4 +2094,335 @@
2045
2094
  transform: scale(0.94);
2046
2095
  }
2047
2096
 
2097
+ /* ==========================================================================
2098
+ * 12. DropdownMenu Component (.odt-dropdown)
2099
+ * ========================================================================== */
2100
+ .odt-dropdown {
2101
+ position: relative;
2102
+ display: inline-block;
2103
+ }
2104
+
2105
+ .odt-dropdown--full-width {
2106
+ width: 100%;
2107
+ }
2108
+
2109
+ .odt-dropdown__container {
2110
+ display: inline-flex;
2111
+ flex-direction: column;
2112
+ gap: var(--spacing-1-5, 0.375rem);
2113
+ box-sizing: border-box;
2114
+ font-family: inherit;
2115
+ }
2116
+
2117
+ .odt-dropdown__container--full-width {
2118
+ width: 100%;
2119
+ }
2120
+
2121
+ .odt-dropdown__label {
2122
+ font-size: var(--font-size-sm, 0.875rem);
2123
+ font-weight: 500;
2124
+ color: var(--color-fg-strong);
2125
+ line-height: 1.25rem;
2126
+ user-select: none;
2127
+ cursor: default;
2128
+ }
2129
+
2130
+ .odt-dropdown__trigger {
2131
+ display: inline-flex;
2132
+ align-items: center;
2133
+ justify-content: space-between;
2134
+ box-sizing: border-box;
2135
+ background-color: var(--color-surface, #ffffff);
2136
+ color: var(--color-fg);
2137
+ font-family: inherit;
2138
+ font-weight: 500;
2139
+ outline: none;
2140
+ border: 1px solid transparent;
2141
+ cursor: pointer;
2142
+ user-select: none;
2143
+ gap: 0.5rem;
2144
+ transition: border-color 140ms ease, box-shadow 140ms ease, background-color 140ms ease;
2145
+ }
2146
+
2147
+ .odt-dropdown__trigger--outlined {
2148
+ background-color: var(--color-surface, #ffffff);
2149
+ border: 1px solid var(--color-line, #e4e4e9);
2150
+ }
2151
+ .odt-dropdown__trigger--outlined:hover:not(:disabled):not(:focus):not(.odt-dropdown__trigger--open) {
2152
+ border-color: var(--color-line-strong, #d4d4db);
2153
+ }
2154
+ .odt-dropdown__trigger--outlined:focus,
2155
+ .odt-dropdown__trigger--outlined.odt-dropdown__trigger--open {
2156
+ border-color: var(--color-ring);
2157
+ }
2158
+
2159
+ .odt-dropdown__trigger--filled {
2160
+ background-color: var(--color-surface, #ffffff);
2161
+ border: 1px solid transparent;
2162
+ }
2163
+ .odt-dropdown__trigger--filled:focus,
2164
+ .odt-dropdown__trigger--filled.odt-dropdown__trigger--open {
2165
+ border-color: var(--color-ring);
2166
+ }
2167
+
2168
+ .odt-dropdown__trigger--frosted {
2169
+ background-color: hsl(from var(--color-surface) h s l / 0.85);
2170
+ backdrop-filter: blur(16px);
2171
+ -webkit-backdrop-filter: blur(16px);
2172
+ border: 1px solid transparent;
2173
+ box-shadow: var(--shadow-card);
2174
+ }
2175
+ .odt-dropdown__trigger--frosted:focus,
2176
+ .odt-dropdown__trigger--frosted.odt-dropdown__trigger--open {
2177
+ border-color: var(--color-ring);
2178
+ }
2179
+
2180
+ .odt-dropdown__trigger--sm {
2181
+ height: 2rem;
2182
+ padding: 0 var(--spacing-3, 0.75rem);
2183
+ font-size: var(--font-size-xs, 0.75rem);
2184
+ }
2185
+ .odt-dropdown__trigger--md {
2186
+ height: 2.625rem;
2187
+ padding: 0 var(--spacing-4, 1rem);
2188
+ font-size: var(--font-size-sm, 0.875rem);
2189
+ }
2190
+ .odt-dropdown__trigger--lg {
2191
+ height: 3.125rem;
2192
+ padding: 0 var(--spacing-5, 1.25rem);
2193
+ font-size: var(--font-size-base, 1rem);
2194
+ }
2195
+
2196
+ .odt-dropdown__trigger-text {
2197
+ flex: 1 1 auto;
2198
+ text-align: left;
2199
+ overflow: hidden;
2200
+ text-overflow: ellipsis;
2201
+ white-space: nowrap;
2202
+ }
2203
+
2204
+ .odt-dropdown__placeholder {
2205
+ color: var(--color-fg-subtle);
2206
+ font-weight: 400;
2207
+ }
2208
+
2209
+ .odt-dropdown__chevron {
2210
+ display: inline-flex;
2211
+ align-items: center;
2212
+ justify-content: center;
2213
+ color: var(--color-fg-muted);
2214
+ flex-shrink: 0;
2215
+ transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1), color 140ms ease;
2216
+ }
2217
+
2218
+ .odt-dropdown__chevron--open {
2219
+ transform: rotate(180deg);
2220
+ color: var(--color-fg-strong);
2221
+ }
2222
+
2223
+ .odt-dropdown__trigger--error {
2224
+ border-color: var(--color-danger) !important;
2225
+ }
2226
+
2227
+ .odt-dropdown__trigger:disabled {
2228
+ background-color: var(--color-surface-subtle);
2229
+ color: var(--color-fg-disabled);
2230
+ cursor: not-allowed;
2231
+ opacity: 0.7;
2232
+ }
2233
+
2234
+ .odt-dropdown__content {
2235
+ position: absolute;
2236
+ z-index: 1000;
2237
+ display: flex;
2238
+ flex-direction: column;
2239
+ box-sizing: border-box;
2240
+ padding: 0.3125rem;
2241
+ background-color: var(--color-surface, #ffffff);
2242
+ border: 1px solid var(--color-line-muted, rgba(226, 232, 240, 0.8));
2243
+ border-radius: var(--radius-xl, 0.75rem);
2244
+ color: var(--color-neutral-900);
2245
+ outline: none;
2246
+ min-width: 12rem;
2247
+ box-shadow: 0 10px 28px -4px rgba(0, 0, 0, 0.08), 0 4px 10px -2px rgba(0, 0, 0, 0.03);
2248
+ transform-origin: top center;
2249
+ animation: odt-dropdown-enter 150ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
2250
+ }
2251
+
2252
+ .odt-dropdown__content.hidden {
2253
+ display: none !important;
2254
+ }
2255
+
2256
+ .odt-dropdown__content--align-start { left: 0; }
2257
+ .odt-dropdown__content--align-end { right: 0; }
2258
+ .odt-dropdown__content--align-center { left: 50%; transform: translateX(-50%); }
2259
+
2260
+ .odt-dropdown__content--side-bottom { top: calc(100% + 6px); }
2261
+ .odt-dropdown__content--side-top { bottom: calc(100% + 6px); }
2262
+
2263
+ .odt-dropdown__content--exiting {
2264
+ animation: odt-dropdown-exit 110ms cubic-bezier(0.4, 0, 1, 1) forwards;
2265
+ pointer-events: none;
2266
+ }
2267
+
2268
+ @keyframes odt-dropdown-enter {
2269
+ from {
2270
+ opacity: 0;
2271
+ transform: scale(0.97) translateY(-4px);
2272
+ }
2273
+ to {
2274
+ opacity: 1;
2275
+ transform: scale(1) translateY(0);
2276
+ }
2277
+ }
2278
+
2279
+ @keyframes odt-dropdown-exit {
2280
+ from {
2281
+ opacity: 1;
2282
+ transform: scale(1) translateY(0);
2283
+ }
2284
+ to {
2285
+ opacity: 0;
2286
+ transform: scale(0.97) translateY(-4px);
2287
+ }
2288
+ }
2289
+
2290
+ .odt-dropdown__item {
2291
+ position: relative;
2292
+ display: flex;
2293
+ align-items: center;
2294
+ width: 100%;
2295
+ box-sizing: border-box;
2296
+ padding: 0.4375rem 0.625rem;
2297
+ border-radius: var(--radius-lg, 0.5rem);
2298
+ font-size: 0.8125rem;
2299
+ font-weight: 500;
2300
+ line-height: 1.25rem;
2301
+ letter-spacing: -0.01em;
2302
+ color: var(--color-neutral-700);
2303
+ background: transparent;
2304
+ border: none;
2305
+ cursor: pointer;
2306
+ user-select: none;
2307
+ text-decoration: none;
2308
+ transition: background-color 120ms ease, color 120ms ease, transform 100ms ease;
2309
+ outline: none;
2310
+ gap: 0.5rem;
2311
+ }
2312
+
2313
+ .odt-dropdown__item:hover,
2314
+ .odt-dropdown__item:focus-visible,
2315
+ .odt-dropdown__item[data-highlighted="true"] {
2316
+ background-color: var(--color-surface-subtle);
2317
+ color: var(--color-neutral-950);
2318
+ }
2319
+
2320
+ .odt-dropdown__item:active {
2321
+ background-color: var(--color-neutral-200);
2322
+ transform: scale(0.99);
2323
+ }
2324
+
2325
+ .odt-dropdown__item--inset {
2326
+ padding-left: 2.125rem;
2327
+ }
2328
+
2329
+ .odt-dropdown__item:disabled,
2330
+ .odt-dropdown__item--disabled {
2331
+ opacity: 0.4;
2332
+ cursor: not-allowed;
2333
+ pointer-events: none;
2334
+ }
2335
+
2336
+ .odt-dropdown__item--destructive {
2337
+ color: var(--color-danger);
2338
+ }
2339
+
2340
+ .odt-dropdown__item--destructive:hover,
2341
+ .odt-dropdown__item--destructive:focus-visible,
2342
+ .odt-dropdown__item--destructive[data-highlighted="true"] {
2343
+ background-color: var(--color-surface-danger);
2344
+ color: var(--color-danger);
2345
+ }
2346
+
2347
+ .odt-dropdown__item-content {
2348
+ flex: 1 1 auto;
2349
+ display: flex;
2350
+ align-items: center;
2351
+ overflow: hidden;
2352
+ text-overflow: ellipsis;
2353
+ white-space: nowrap;
2354
+ }
2355
+
2356
+ .odt-dropdown__item-icon {
2357
+ display: inline-flex;
2358
+ align-items: center;
2359
+ justify-content: center;
2360
+ flex-shrink: 0;
2361
+ width: 1rem;
2362
+ height: 1rem;
2363
+ color: var(--color-neutral-400);
2364
+ transition: color 120ms ease;
2365
+ }
2366
+
2367
+ .odt-dropdown__item:hover .odt-dropdown__item-icon,
2368
+ .odt-dropdown__item:focus-visible .odt-dropdown__item-icon {
2369
+ color: var(--color-neutral-800);
2370
+ }
2371
+
2372
+ .odt-dropdown__item--destructive .odt-dropdown__item-icon {
2373
+ color: var(--color-danger);
2374
+ }
2375
+
2376
+ .odt-dropdown__item-right-icon {
2377
+ display: inline-flex;
2378
+ align-items: center;
2379
+ justify-content: center;
2380
+ flex-shrink: 0;
2381
+ margin-left: auto;
2382
+ color: var(--color-neutral-400);
2383
+ }
2384
+
2385
+ .odt-dropdown__shortcut {
2386
+ margin-left: auto;
2387
+ font-size: 0.6875rem;
2388
+ font-weight: 500;
2389
+ letter-spacing: 0.04em;
2390
+ font-family: var(--font-family-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace);
2391
+ color: var(--color-neutral-400);
2392
+ background: none;
2393
+ border: none;
2394
+ padding: 0;
2395
+ line-height: 1rem;
2396
+ display: inline-flex;
2397
+ align-items: center;
2398
+ }
2399
+
2400
+ .odt-dropdown__label-heading {
2401
+ padding: 0.375rem 0.625rem 0.25rem;
2402
+ font-size: 0.6875rem;
2403
+ font-weight: 600;
2404
+ text-transform: uppercase;
2405
+ letter-spacing: 0.05em;
2406
+ color: var(--color-neutral-400);
2407
+ user-select: none;
2408
+ }
2409
+
2410
+ .odt-dropdown__label-heading--inset {
2411
+ padding-left: 2.125rem;
2412
+ }
2413
+
2414
+ .odt-dropdown__separator {
2415
+ height: 1px;
2416
+ margin: 0.25rem 0.25rem;
2417
+ background-color: var(--color-line-muted, rgba(226, 232, 240, 0.8));
2418
+ border: none;
2419
+ }
2420
+
2421
+ .odt-dropdown__group {
2422
+ display: flex;
2423
+ flex-direction: column;
2424
+ width: 100%;
2425
+ }
2426
+
2427
+
2048
2428