Files
ss-tools/frontend/src/lib/Counter.svelte
busya ed4562d199 feat(ts-migration): Phase 3-4 — all components + tests JS→TS
Converted 11 remaining production files:
  - services/*.ts (toolsService, taskService, git-utils, storageService,
    adminService, gitService)
  - lib/auth/permissions.ts
  - lib/components/layout/sidebarNavigation.ts
  - lib/components/reports/reportTypeProfiles.ts
  - components/git/useGitManager.ts
  - routes/datasets/review/useReviewSession.ts
  - routes/datasets/review/review-workspace-helpers.ts
  - routes/settings/settings-utils.ts

All production files have proper GRACE contracts:
  - C2/C3 with @BRIEF, @PRE, @POST, @SIDE_EFFECT, @RELATION
  - Generic <T = unknown> for API calls
  - Typed interfaces for state/options

Phase 3: 126 .svelte components → <script lang="ts">
Phase 4: 53 test .js files → .ts

Final verification:
  - npm run build 
  - npm run test  (66 passed, 6 pre-existing failures unchanged)

Total: 0 .js files remain in production code
2026-06-01 15:43:20 +03:00

22 lines
575 B
Svelte
Executable File

<!-- #region Counter [C:2] [TYPE Component] [SEMANTICS counter, demo, example, interactive] -->
<!-- @BRIEF Component component: lib/Counter.svelte -->
<!-- @LAYER UI -->
<!--
@PURPOSE: Simple counter demo component
@LAYER UI
@UX_STATE: Idle -> Counter renders the current value and increment action.
@UX_STATE: Incremented -> Count increases immediately after button activation.
-->
<script lang="ts">
let count = $state(0);
const increment = () => {
count += 1;
};
</script>
<button onclick={increment}>
count is {count}
</button>
<!-- #endregion Counter -->