From c4cc20aa9f13b7ecfa146e8206dfb183bdba2842 Mon Sep 17 00:00:00 2001 From: JWittmeyer Date: Wed, 21 Jan 2026 16:31:40 +0100 Subject: [PATCH 1/3] Adds cursor files for agent behaviour (WIP) --- .cursor/rules/guidelines.mdc | 87 ++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .cursor/rules/guidelines.mdc diff --git a/.cursor/rules/guidelines.mdc b/.cursor/rules/guidelines.mdc new file mode 100644 index 0000000..c1c945f --- /dev/null +++ b/.cursor/rules/guidelines.mdc @@ -0,0 +1,87 @@ +--- +description: Guidelines for developing in the javascript-functions submodule +globs: +--- + +# JavaScript Functions Submodule + +This is a shared utility library. Changes here affect all consuming applications. + +## File Structure + +``` +general.ts # Core utilities +case-types-parser.ts # String case conversion +date-parser.ts # Date utilities +validations.ts # Validation functions +enums/ # Enum definitions and utilities +constants.ts # Shared constants +``` + +## Function Guidelines + +### Export Pattern + +Use named exports: + +```typescript +export function myUtilityFunction(param: string): string { + // ... +} +``` + +### Documentation + +Use JSDoc comments: + +```typescript +/** + * Converts an array to a dictionary. + * @param array - The array to convert + * @param key - Property to use as key + * @returns Dictionary with key-value pairs + */ +export function arrayToDict(array: any[], key: string): Record { + // ... +} +``` + +### Pure Functions + +Prefer pure functions without side effects: + +```typescript +// Good - pure function +export function formatBytes(bytes: number): string { ... } + +// Avoid - has side effects +export function formatAndLog(bytes: number): string { + console.log(bytes); // side effect + return formatBytes(bytes); +} +``` + +### Type Safety + +Use generics where appropriate: + +```typescript +export function jsonCopy(src: T): T { + return JSON.parse(JSON.stringify(src)); +} +``` + +## Key Functions + +- `combineClassNames` - CSS class combining +- `jsonCopy` - Deep clone +- `arrayToDict` - Array to dictionary +- `formatBytes` - File size formatting +- `enumToArray` - Enum to options + +## Testing + +When adding or modifying functions: +1. Ensure backward compatibility +2. Test edge cases (null, undefined, empty) +3. Verify TypeScript types From 559b7498ae4e8492b567a13d67a83034e9ca4887 Mon Sep 17 00:00:00 2001 From: Lina Date: Wed, 28 Jan 2026 14:07:59 +0100 Subject: [PATCH 2/3] Updates files with best practices --- .cursor/rules/guidelines.mdc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.cursor/rules/guidelines.mdc b/.cursor/rules/guidelines.mdc index c1c945f..3481bdc 100644 --- a/.cursor/rules/guidelines.mdc +++ b/.cursor/rules/guidelines.mdc @@ -1,6 +1,8 @@ --- description: Guidelines for developing in the javascript-functions submodule +alwaysApply: true globs: + - "*" --- # JavaScript Functions Submodule From 26257671cf9ebbc7ed6ccfbb0ea820181a1be93c Mon Sep 17 00:00:00 2001 From: Lina Date: Wed, 28 Jan 2026 16:12:57 +0100 Subject: [PATCH 3/3] PR comments --- .cursor/rules/guidelines.mdc | 85 ++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/.cursor/rules/guidelines.mdc b/.cursor/rules/guidelines.mdc index 3481bdc..bf1426b 100644 --- a/.cursor/rules/guidelines.mdc +++ b/.cursor/rules/guidelines.mdc @@ -81,6 +81,91 @@ export function jsonCopy(src: T): T { - `formatBytes` - File size formatting - `enumToArray` - Enum to options +## Usage Patterns + +### combineClassNames + +Combine CSS classes, filtering out falsy values. **Always use this for conditional classes.** + +```typescript +import { combineClassNames } from "@/submodules/javascript-functions/general"; + +const classes = combineClassNames( + "base-class", + isActive && "active-class", + isDisabled && "opacity-50", + customClass +); +``` + +### Disabled State Styling + +Use CSS pseudo-classes (`disabled:`) instead of conditional classes for disabled states. The `disabled` attribute must be on the same element as the classes. + +```typescript +// ❌ Avoid conditional classes +