Repository: dcastil/tailwind-merge (ts)

Issue:
Logical border color properties does not work with generic border color
### Describe the bug

Using [logical border color properties](https://tailwindcss.com/docs/border-color#using-logical-properties) with a more general property does not work (see below). The more specific property completely removes the generic property.

### To Reproduce

https://codesandbox.io/p/sandbox/happy-field-y446v2
```ts
twMerge('border-blue border-r-red')  // "border-blue border-r-red" (correct)
twMerge('border-blue border-e-red')  // "border-e-red"
twMerge('border-blue border-s-red')  // "border-s-red"
```
### Expected behavior

`twMerge('border-blue border-e-red')` should return `"border-blue border-e-red"` and so on.

### Environment

-   tailwind-merge version: 2.5.2

Pull request description:
Adds support for logical border color properties
Closes #474

Patch:
diff --git a/src/lib/default-config.ts b/src/lib/default-config.ts
index 34834ef..9160999 100644
--- a/src/lib/default-config.ts
+++ b/src/lib/default-config.ts
@@ -1158,6 +1158,16 @@ export const getDefaultConfig = () => {
              * @see https://tailwindcss.com/docs/border-color
              */
             'border-color-y': [{ 'border-y': [borderColor] }],
+            /**
+             * Border Color S
+             * @see https://tailwindcss.com/docs/border-color
+             */
+            'border-color-s': [{ 'border-s': [borderColor] }],
+            /**
+             * Border Color E
+             * @see https://tailwindcss.com/docs/border-color
+             */
+            'border-color-e': [{ 'border-e': [borderColor] }],
             /**
              * Border Color Top
              * @see https://tailwindcss.com/docs/border-color
@@ -1821,6 +1831,8 @@ export const getDefaultConfig = () => {
             'border-w-x': ['border-w-r', 'border-w-l'],
             'border-w-y': ['border-w-t', 'border-w-b'],
             'border-color': [
+                'border-color-s',
+                'border-color-e',
                 'border-color-t',
                 'border-color-r',
                 'border-color-b',
diff --git a/src/lib/types.ts b/src/lib/types.ts
index b79cf84..171191c 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -210,8 +210,10 @@ export type DefaultClassGroupIds =
     | 'blur'
     | 'border-collapse'
     | 'border-color-b'
+    | 'border-color-e'
     | 'border-color-l'
     | 'border-color-r'
+    | 'border-color-s'
     | 'border-color-t'
     | 'border-color-x'
     | 'border-color-y'


Test patch:
diff --git a/tests/class-map.test.ts b/tests/class-map.test.ts
index ce8f90d..152e54c 100644
--- a/tests/class-map.test.ts
+++ b/tests/class-map.test.ts
@@ -55,8 +55,10 @@ test('class map has correct class groups at first part', () => {
             'border-collapse',
             'border-color',
             'border-color-b',
+            'border-color-e',
             'border-color-l',
             'border-color-r',
+            'border-color-s',
             'border-color-t',
             'border-color-x',
             'border-color-y',
diff --git a/tests/per-side-border-colors.test.ts b/tests/per-side-border-colors.test.ts
index 81f8489..7e06fb4 100644
--- a/tests/per-side-border-colors.test.ts
+++ b/tests/per-side-border-colors.test.ts
@@ -5,4 +5,6 @@ import { twMerge } from '../src'
 test('merges classes with per-side border colors correctly', () => {
     expect(twMerge('border-t-some-blue border-t-other-blue')).toBe('border-t-other-blue')
     expect(twMerge('border-t-some-blue border-some-blue')).toBe('border-some-blue')
+    expect(twMerge('border-some-blue border-s-some-blue')).toBe('border-some-blue border-s-some-blue')
+    expect(twMerge('border-e-some-blue border-some-blue')).toBe('border-some-blue')
 })