diff --git a/apps/behandelportal/src/app/auth/ui/login-form/login-form.component.ts b/apps/behandelportal/src/app/auth/ui/login-form/login-form.component.ts index 3867ae8..0065e4c 100644 --- a/apps/behandelportal/src/app/auth/ui/login-form/login-form.component.ts +++ b/apps/behandelportal/src/app/auth/ui/login-form/login-form.component.ts @@ -1,5 +1,5 @@ import { Component, output } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; /** * Organism: employee-SSO-style mock login (ADR-C-004). No real auth — and, diff --git a/apps/behandelportal/src/app/behandeling/ui/beoordeling.page.ts b/apps/behandelportal/src/app/behandeling/ui/beoordeling.page.ts index 1a39d01..f6771ce 100644 --- a/apps/behandelportal/src/app/behandeling/ui/beoordeling.page.ts +++ b/apps/behandelportal/src/app/behandeling/ui/beoordeling.page.ts @@ -2,12 +2,12 @@ import { Component, computed, inject } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { successOf } from '@shared/application/remote-data'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { BeoordelingStore } from '@behandeling/application/beoordeling.store'; import { detailRows } from '@behandeling/domain/beoordeling-view'; import { BeoordelingDocumentenComponent } from '@behandeling/ui/beoordeling-documenten/beoordeling-documenten.component'; diff --git a/apps/behandelportal/src/app/behandeling/ui/besluit-form/besluit-form.component.ts b/apps/behandelportal/src/app/behandeling/ui/besluit-form/besluit-form.component.ts index db12c5d..37b3c1b 100644 --- a/apps/behandelportal/src/app/behandeling/ui/besluit-form/besluit-form.component.ts +++ b/apps/behandelportal/src/app/behandeling/ui/besluit-form/besluit-form.component.ts @@ -1,13 +1,16 @@ import { Component, computed, input, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { RadioGroupComponent, RadioOption } from '@shared/ui/radio-group/radio-group.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { + RadioGroupComponent, + RadioOption, +} from '@shared/ui/atoms/radio-group/radio-group.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; import { createStore } from '@shared/application/store'; import { whenTag } from '@shared/kernel/fp'; import { BesluitState, BesluitMsg, initial, reduce } from '@behandeling/domain/besluit.machine'; diff --git a/apps/behandelportal/src/app/behandeling/ui/werkvoorraad-list/werkvoorraad-list.component.ts b/apps/behandelportal/src/app/behandeling/ui/werkvoorraad-list/werkvoorraad-list.component.ts index 95ff32f..86acd68 100644 --- a/apps/behandelportal/src/app/behandeling/ui/werkvoorraad-list/werkvoorraad-list.component.ts +++ b/apps/behandelportal/src/app/behandeling/ui/werkvoorraad-list/werkvoorraad-list.component.ts @@ -1,6 +1,6 @@ import { Component, input } from '@angular/core'; -import { ApplicationListComponent } from '@shared/ui/application-list/application-list.component'; -import { ApplicationLinkComponent } from '@shared/ui/application-link/application-link.component'; +import { ApplicationListComponent } from '@shared/ui/molecules/application-list/application-list.component'; +import { ApplicationLinkComponent } from '@shared/ui/molecules/application-link/application-link.component'; import { WerkvoorraadItem } from '@behandeling/domain/werkvoorraad-item'; import { werkvoorraadRow } from '@behandeling/domain/werkvoorraad-item-view'; diff --git a/apps/behandelportal/src/app/behandeling/ui/werkvoorraad.page.ts b/apps/behandelportal/src/app/behandeling/ui/werkvoorraad.page.ts index 70b3e91..69844b0 100644 --- a/apps/behandelportal/src/app/behandeling/ui/werkvoorraad.page.ts +++ b/apps/behandelportal/src/app/behandeling/ui/werkvoorraad.page.ts @@ -1,9 +1,9 @@ import { Component, computed, effect, inject } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AccessStore } from '@shared/application/access.store'; import { successOr } from '@shared/application/remote-data'; import { WerkvoorraadStore } from '@behandeling/application/werkvoorraad.store'; diff --git a/apps/ssp/src/app/auth/ui/login-form/login-form.component.ts b/apps/ssp/src/app/auth/ui/login-form/login-form.component.ts index d11c5d3..614e3dd 100644 --- a/apps/ssp/src/app/auth/ui/login-form/login-form.component.ts +++ b/apps/ssp/src/app/auth/ui/login-form/login-form.component.ts @@ -1,8 +1,8 @@ import { Component, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; /** Organism: DigiD-style mock login. No real auth — just composes atoms/molecules. */ @Component({ diff --git a/apps/ssp/src/app/auth/ui/login.page.ts b/apps/ssp/src/app/auth/ui/login.page.ts index 59671f9..8f68b09 100644 --- a/apps/ssp/src/app/auth/ui/login.page.ts +++ b/apps/ssp/src/app/auth/ui/login.page.ts @@ -1,7 +1,7 @@ import { Component, inject, signal } from '@angular/core'; import { Router } from '@angular/router'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { LoginFormComponent } from '@auth/ui/login-form/login-form.component'; import { SessionStore } from '@auth/application/session.store'; diff --git a/apps/ssp/src/app/brief/ui/behandel-scherm/behandel-scherm.component.ts b/apps/ssp/src/app/brief/ui/behandel-scherm/behandel-scherm.component.ts index 2d5d66e..1122b94 100644 --- a/apps/ssp/src/app/brief/ui/behandel-scherm/behandel-scherm.component.ts +++ b/apps/ssp/src/app/brief/ui/behandel-scherm/behandel-scherm.component.ts @@ -1,10 +1,10 @@ import { Component, ElementRef, computed, input, output, viewChild } from '@angular/core'; -import { PlaceholderOption } from '@shared/ui/rich-text-editor/rich-text-editor.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { MaskedValueComponent } from '@shared/ui/masked-value/masked-value.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { StepperComponent } from '@shared/ui/stepper/stepper.component'; +import { PlaceholderOption } from '@shared/ui/molecules/rich-text-editor/rich-text-editor.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { MaskedValueComponent } from '@shared/ui/atoms/masked-value/masked-value.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { StepperComponent } from '@shared/ui/molecules/stepper/stepper.component'; import { Besluit, Brief, CaseContext, LibraryPassage } from '@brief/domain/brief'; import { besluitGuidance, inferSelection } from '@brief/domain/besluit'; import { Diagnostic } from '@brief/domain/placeholders'; diff --git a/apps/ssp/src/app/brief/ui/besluit-panel/besluit-panel.component.ts b/apps/ssp/src/app/brief/ui/besluit-panel/besluit-panel.component.ts index 7099564..79276f7 100644 --- a/apps/ssp/src/app/brief/ui/besluit-panel/besluit-panel.component.ts +++ b/apps/ssp/src/app/brief/ui/besluit-panel/besluit-panel.component.ts @@ -1,8 +1,11 @@ import { Component, computed, input, linkedSignal, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { CheckboxComponent } from '@shared/ui/checkbox/checkbox.component'; -import { RadioGroupComponent, RadioOption } from '@shared/ui/radio-group/radio-group.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { CheckboxComponent } from '@shared/ui/atoms/checkbox/checkbox.component'; +import { + RadioGroupComponent, + RadioOption, +} from '@shared/ui/atoms/radio-group/radio-group.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; import { Besluit, LibraryPassage } from '@brief/domain/brief'; import { redenenFor } from '@brief/domain/besluit'; diff --git a/apps/ssp/src/app/brief/ui/brief.page.ts b/apps/ssp/src/app/brief/ui/brief.page.ts index 0892b14..e24d0dc 100644 --- a/apps/ssp/src/app/brief/ui/brief.page.ts +++ b/apps/ssp/src/app/brief/ui/brief.page.ts @@ -1,8 +1,8 @@ import { Component, computed, inject } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { BriefStore } from '@brief/application/brief.store'; import { LetterComposerComponent } from '@brief/ui/letter-composer/letter-composer.component'; import { BehandelSchermComponent } from '@brief/ui/behandel-scherm/behandel-scherm.component'; diff --git a/apps/ssp/src/app/brief/ui/diagnostics-panel/diagnostics-panel.component.ts b/apps/ssp/src/app/brief/ui/diagnostics-panel/diagnostics-panel.component.ts index 27391c9..2deab80 100644 --- a/apps/ssp/src/app/brief/ui/diagnostics-panel/diagnostics-panel.component.ts +++ b/apps/ssp/src/app/brief/ui/diagnostics-panel/diagnostics-panel.component.ts @@ -1,5 +1,5 @@ import { Component, computed, input, output } from '@angular/core'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { Diagnostic } from '@brief/domain/placeholders'; /** Molecule: lists all letter diagnostics grouped by severity. Errors block diff --git a/apps/ssp/src/app/brief/ui/letter-block/letter-block.component.ts b/apps/ssp/src/app/brief/ui/letter-block/letter-block.component.ts index 937079f..8dd1f45 100644 --- a/apps/ssp/src/app/brief/ui/letter-block/letter-block.component.ts +++ b/apps/ssp/src/app/brief/ui/letter-block/letter-block.component.ts @@ -3,8 +3,8 @@ import { RichTextBlock } from '@shared/kernel/rich-text'; import { RichTextEditorComponent, PlaceholderOption, -} from '@shared/ui/rich-text-editor/rich-text-editor.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +} from '@shared/ui/molecules/rich-text-editor/rich-text-editor.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; import { LetterBlock } from '@brief/domain/brief'; /** Molecule: one block in a section — its editor plus provenance + block controls. diff --git a/apps/ssp/src/app/brief/ui/letter-canvas/letter-canvas.component.ts b/apps/ssp/src/app/brief/ui/letter-canvas/letter-canvas.component.ts index 279a404..103bbad 100644 --- a/apps/ssp/src/app/brief/ui/letter-canvas/letter-canvas.component.ts +++ b/apps/ssp/src/app/brief/ui/letter-canvas/letter-canvas.component.ts @@ -14,7 +14,7 @@ import { signal, viewChild, } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; import { formatDatumNl } from '@shared/kernel/datum'; import { Paragraph } from '@shared/kernel/rich-text'; import { Brief, LetterBlock } from '@brief/domain/brief'; diff --git a/apps/ssp/src/app/brief/ui/letter-canvas/letter-line.component.ts b/apps/ssp/src/app/brief/ui/letter-canvas/letter-line.component.ts index d583fd6..9cb322c 100644 --- a/apps/ssp/src/app/brief/ui/letter-canvas/letter-line.component.ts +++ b/apps/ssp/src/app/brief/ui/letter-canvas/letter-line.component.ts @@ -1,5 +1,5 @@ import { Component, computed, input } from '@angular/core'; -import { PlaceholderChipComponent } from '@shared/ui/placeholder-chip/placeholder-chip.component'; +import { PlaceholderChipComponent } from '@shared/ui/atoms/placeholder-chip/placeholder-chip.component'; import { RichTextNode } from '@shared/kernel/rich-text'; import { Diagnostic, PlaceholderDef } from '@brief/domain/placeholders'; diff --git a/apps/ssp/src/app/brief/ui/letter-composer/letter-composer.component.ts b/apps/ssp/src/app/brief/ui/letter-composer/letter-composer.component.ts index 8366949..a8f66d7 100644 --- a/apps/ssp/src/app/brief/ui/letter-composer/letter-composer.component.ts +++ b/apps/ssp/src/app/brief/ui/letter-composer/letter-composer.component.ts @@ -1,8 +1,8 @@ import { Component, computed, input, output, signal } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { StatusBadgeComponent } from '@shared/ui/status-badge/status-badge.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { StatusBadgeComponent } from '@shared/ui/atoms/status-badge/status-badge.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { Brief } from '@brief/domain/brief'; import { OrgTemplate } from '@brief/domain/org-template'; import { Diagnostic } from '@brief/domain/placeholders'; diff --git a/apps/ssp/src/app/brief/ui/letter-editor/letter-editor.component.ts b/apps/ssp/src/app/brief/ui/letter-editor/letter-editor.component.ts index 1f6789f..10f4dd1 100644 --- a/apps/ssp/src/app/brief/ui/letter-editor/letter-editor.component.ts +++ b/apps/ssp/src/app/brief/ui/letter-editor/letter-editor.component.ts @@ -1,5 +1,5 @@ import { Component, computed, input, output } from '@angular/core'; -import { PlaceholderOption } from '@shared/ui/rich-text-editor/rich-text-editor.component'; +import { PlaceholderOption } from '@shared/ui/molecules/rich-text-editor/rich-text-editor.component'; import { Brief } from '@brief/domain/brief'; import { BriefMsg } from '@brief/domain/brief.machine'; import { LetterSectionComponent } from '@brief/ui/letter-section/letter-section.component'; diff --git a/apps/ssp/src/app/brief/ui/letter-section/letter-section.component.ts b/apps/ssp/src/app/brief/ui/letter-section/letter-section.component.ts index 9d1e52e..5ddbb8c 100644 --- a/apps/ssp/src/app/brief/ui/letter-section/letter-section.component.ts +++ b/apps/ssp/src/app/brief/ui/letter-section/letter-section.component.ts @@ -1,8 +1,8 @@ import { Component, input, output } from '@angular/core'; import { RichTextBlock } from '@shared/kernel/rich-text'; -import { PlaceholderOption } from '@shared/ui/rich-text-editor/rich-text-editor.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { PlaceholderOption } from '@shared/ui/molecules/rich-text-editor/rich-text-editor.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; import { LetterSection } from '@brief/domain/brief'; import { BriefMsg } from '@brief/domain/brief.machine'; import { LetterBlockComponent } from '@brief/ui/letter-block/letter-block.component'; diff --git a/apps/ssp/src/app/brief/ui/org-template-editor/logo-upload.component.ts b/apps/ssp/src/app/brief/ui/org-template-editor/logo-upload.component.ts index 2914eee..1be7972 100644 --- a/apps/ssp/src/app/brief/ui/org-template-editor/logo-upload.component.ts +++ b/apps/ssp/src/app/brief/ui/org-template-editor/logo-upload.component.ts @@ -1,8 +1,8 @@ import { Component, computed, input, output } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { FileInputComponent } from '@shared/ui/upload/file-input/file-input.component'; -import { SingleUploadComponent } from '@shared/ui/upload/single-upload/single-upload.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { FileInputComponent } from '@shared/ui/atoms/upload/file-input/file-input.component'; +import { SingleUploadComponent } from '@shared/ui/molecules/upload/single-upload/single-upload.component'; import { UploadState } from '@shared/domain/upload.machine'; const LOGO_CATEGORY = 'org-logo'; diff --git a/apps/ssp/src/app/brief/ui/org-template-editor/org-template-editor.component.ts b/apps/ssp/src/app/brief/ui/org-template-editor/org-template-editor.component.ts index 2239ad6..3a88424 100644 --- a/apps/ssp/src/app/brief/ui/org-template-editor/org-template-editor.component.ts +++ b/apps/ssp/src/app/brief/ui/org-template-editor/org-template-editor.component.ts @@ -1,6 +1,6 @@ import { Component, computed, input, output } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { UploadState } from '@shared/domain/upload.machine'; import { Brief } from '@brief/domain/brief'; import { SAMPLE_LETTER_BRIEF } from '@brief/domain/sample-letter'; diff --git a/apps/ssp/src/app/brief/ui/org-template-editor/version-history.component.ts b/apps/ssp/src/app/brief/ui/org-template-editor/version-history.component.ts index c65309d..7e356ad 100644 --- a/apps/ssp/src/app/brief/ui/org-template-editor/version-history.component.ts +++ b/apps/ssp/src/app/brief/ui/org-template-editor/version-history.component.ts @@ -1,7 +1,7 @@ import { Component, input, output } from '@angular/core'; import { DatePipe } from '@angular/common'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; import { OrgTemplateVersion } from '@brief/domain/org-template'; /** diff --git a/apps/ssp/src/app/brief/ui/org-template.page.ts b/apps/ssp/src/app/brief/ui/org-template.page.ts index 82a2865..5973820 100644 --- a/apps/ssp/src/app/brief/ui/org-template.page.ts +++ b/apps/ssp/src/app/brief/ui/org-template.page.ts @@ -1,8 +1,8 @@ import { Component, computed, effect, inject } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AccessStore } from '@shared/application/access.store'; import { OrgTemplateStore } from '@brief/application/org-template.store'; import { OrgTemplateEditorComponent } from '@brief/ui/org-template-editor/org-template-editor.component'; diff --git a/apps/ssp/src/app/brief/ui/passage-picker/passage-picker.component.ts b/apps/ssp/src/app/brief/ui/passage-picker/passage-picker.component.ts index 591b9d7..8fbd12f 100644 --- a/apps/ssp/src/app/brief/ui/passage-picker/passage-picker.component.ts +++ b/apps/ssp/src/app/brief/ui/passage-picker/passage-picker.component.ts @@ -1,8 +1,8 @@ import { Component, computed, input, output, signal } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { CheckboxComponent } from '@shared/ui/checkbox/checkbox.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; +import { CheckboxComponent } from '@shared/ui/atoms/checkbox/checkbox.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; import { textOf } from '@shared/kernel/rich-text'; import { LibraryPassage } from '@brief/domain/brief'; diff --git a/apps/ssp/src/app/brief/ui/rejection-comments/rejection-comments.component.ts b/apps/ssp/src/app/brief/ui/rejection-comments/rejection-comments.component.ts index 40de5f0..dfc835a 100644 --- a/apps/ssp/src/app/brief/ui/rejection-comments/rejection-comments.component.ts +++ b/apps/ssp/src/app/brief/ui/rejection-comments/rejection-comments.component.ts @@ -1,7 +1,7 @@ import { Component, input, output, signal } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; /** Molecule: shows the rejection comments (drafter view) or collects them from the approver. The approver rejects WITH comments; they never edit the letter. */ diff --git a/apps/ssp/src/app/herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component.ts b/apps/ssp/src/app/herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component.ts index 45c0284..77f9701 100644 --- a/apps/ssp/src/app/herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component.ts +++ b/apps/ssp/src/app/herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component.ts @@ -1,8 +1,8 @@ import { Component, computed, inject, input } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { WizardShellComponent, WizardError, @@ -10,7 +10,7 @@ import { naarStapLabel, } from '@shared/layout/wizard-shell/wizard-shell.component'; import { toWizardErrors } from '@shared/layout/wizard-shell/wizard-errors'; -import { ConfirmationComponent } from '@shared/ui/confirmation/confirmation.component'; +import { ConfirmationComponent } from '@shared/ui/molecules/confirmation/confirmation.component'; import { createStore } from '@shared/application/store'; import { whenTag } from '@shared/kernel/fp'; import { BigProfileStore } from '@registratie/application/big-profile.store'; @@ -23,7 +23,7 @@ import { hasProgress, } from '@herregistratie/domain/herregistratie.machine'; import { createDraftSync } from '@registratie/application/draft-sync'; -import { DocumentUploadComponent } from '@shared/ui/upload/document-upload/document-upload.component'; +import { DocumentUploadComponent } from '@shared/ui/organisms/upload/document-upload/document-upload.component'; import { createUploadController } from '@shared/application/upload-controller'; import { UploadState, initialUpload, deliveryRefs } from '@shared/domain/upload.machine'; diff --git a/apps/ssp/src/app/herregistratie/ui/herregistratie.page.ts b/apps/ssp/src/app/herregistratie/ui/herregistratie.page.ts index 9770f97..b67687d 100644 --- a/apps/ssp/src/app/herregistratie/ui/herregistratie.page.ts +++ b/apps/ssp/src/app/herregistratie/ui/herregistratie.page.ts @@ -1,7 +1,7 @@ import { Component, computed, inject } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { map } from '@shared/application/remote-data'; import { BigProfileStore } from '@registratie/application/big-profile.store'; import { HerregistratieWizardComponent } from '@herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component'; diff --git a/apps/ssp/src/app/herregistratie/ui/intake-wizard/buitenland.step.ts b/apps/ssp/src/app/herregistratie/ui/intake-wizard/buitenland.step.ts index caa6d70..f448d64 100644 --- a/apps/ssp/src/app/herregistratie/ui/intake-wizard/buitenland.step.ts +++ b/apps/ssp/src/app/herregistratie/ui/intake-wizard/buitenland.step.ts @@ -1,8 +1,8 @@ import { Component, input, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { RadioGroupComponent, JA_NEE } from '@shared/ui/radio-group/radio-group.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { RadioGroupComponent, JA_NEE } from '@shared/ui/atoms/radio-group/radio-group.component'; import { Answers, Errors } from '@herregistratie/domain/intake.machine'; /** Step: the intake wizard's first screen (foreign work in the last 5 years). diff --git a/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.ts b/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.ts index e0146db..f58565e 100644 --- a/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.ts +++ b/apps/ssp/src/app/herregistratie/ui/intake-wizard/intake-wizard.component.ts @@ -1,6 +1,6 @@ import { Component, computed, effect, inject, input, untracked } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ConfirmationComponent } from '@shared/ui/confirmation/confirmation.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ConfirmationComponent } from '@shared/ui/molecules/confirmation/confirmation.component'; import { WizardShellComponent, WizardError, diff --git a/apps/ssp/src/app/herregistratie/ui/intake-wizard/review.step.ts b/apps/ssp/src/app/herregistratie/ui/intake-wizard/review.step.ts index 7b32097..2bb1699 100644 --- a/apps/ssp/src/app/herregistratie/ui/intake-wizard/review.step.ts +++ b/apps/ssp/src/app/herregistratie/ui/intake-wizard/review.step.ts @@ -1,7 +1,7 @@ import { Component, computed, input, output } from '@angular/core'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { ReviewSectionComponent } from '@shared/ui/review-section/review-section.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { ReviewSectionComponent } from '@shared/ui/molecules/review-section/review-section.component'; import { Answers, lageUren } from '@herregistratie/domain/intake.machine'; /** Step: the intake wizard's review screen. Pure & presentational — values in via diff --git a/apps/ssp/src/app/herregistratie/ui/intake-wizard/werk.step.ts b/apps/ssp/src/app/herregistratie/ui/intake-wizard/werk.step.ts index 4eb586b..f96fe34 100644 --- a/apps/ssp/src/app/herregistratie/ui/intake-wizard/werk.step.ts +++ b/apps/ssp/src/app/herregistratie/ui/intake-wizard/werk.step.ts @@ -1,8 +1,8 @@ import { Component, computed, input, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { RadioGroupComponent, JA_NEE } from '@shared/ui/radio-group/radio-group.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { RadioGroupComponent, JA_NEE } from '@shared/ui/atoms/radio-group/radio-group.component'; import { Answers, Errors, lageUren } from '@herregistratie/domain/intake.machine'; /** Step: the intake wizard's second screen (work experience in the Netherlands, diff --git a/apps/ssp/src/app/herregistratie/ui/intake.page.ts b/apps/ssp/src/app/herregistratie/ui/intake.page.ts index b2c4ba8..9fd4a5b 100644 --- a/apps/ssp/src/app/herregistratie/ui/intake.page.ts +++ b/apps/ssp/src/app/herregistratie/ui/intake.page.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { IntakeWizardComponent } from '@herregistratie/ui/intake-wizard/intake-wizard.component'; /** Page: the branching intake questionnaire. Built entirely from existing diff --git a/apps/ssp/src/app/overzicht/ui/beheer-links.section.ts b/apps/ssp/src/app/overzicht/ui/beheer-links.section.ts index 3bb4e36..ce2822c 100644 --- a/apps/ssp/src/app/overzicht/ui/beheer-links.section.ts +++ b/apps/ssp/src/app/overzicht/ui/beheer-links.section.ts @@ -1,7 +1,7 @@ import { Component, computed, inject } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { ApplicationListComponent } from '@shared/ui/application-list/application-list.component'; -import { ApplicationLinkComponent } from '@shared/ui/application-link/application-link.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { ApplicationListComponent } from '@shared/ui/molecules/application-list/application-list.component'; +import { ApplicationLinkComponent } from '@shared/ui/molecules/application-link/application-link.component'; import { AccessStore } from '@shared/application/access.store'; import { HEADER_ADMIN_LINKS } from '@shared/layout/site-header/nav-config'; diff --git a/apps/ssp/src/app/overzicht/ui/wat-wilt-u-doen.section.ts b/apps/ssp/src/app/overzicht/ui/wat-wilt-u-doen.section.ts index 7f39f57..f627111 100644 --- a/apps/ssp/src/app/overzicht/ui/wat-wilt-u-doen.section.ts +++ b/apps/ssp/src/app/overzicht/ui/wat-wilt-u-doen.section.ts @@ -1,7 +1,7 @@ import { Component, computed, inject } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { ApplicationListComponent } from '@shared/ui/application-list/application-list.component'; -import { ApplicationLinkComponent } from '@shared/ui/application-link/application-link.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { ApplicationListComponent } from '@shared/ui/molecules/application-list/application-list.component'; +import { ApplicationLinkComponent } from '@shared/ui/molecules/application-link/application-link.component'; import { FeatureFlagStore } from '@shared/application/feature-flags.store'; import { FLAG_INSCHRIJVING_OPEN } from '@shared/domain/feature-flag'; diff --git a/apps/ssp/src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts b/apps/ssp/src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts index f9b8ceb..8f2776e 100644 --- a/apps/ssp/src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts +++ b/apps/ssp/src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts @@ -1,7 +1,7 @@ import { Component, computed, input, output } from '@angular/core'; import { formatDatumNl } from '@shared/kernel/datum'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { Aanvraag } from '@registratie/domain/aanvraag'; import { TYPE_LABELS } from '@registratie/domain/aanvraag-view'; import { blockActions } from '@registratie/domain/block-actions'; diff --git a/apps/ssp/src/app/registratie/ui/aanvraag-detail.page.ts b/apps/ssp/src/app/registratie/ui/aanvraag-detail.page.ts index c23353e..7aac1e6 100644 --- a/apps/ssp/src/app/registratie/ui/aanvraag-detail.page.ts +++ b/apps/ssp/src/app/registratie/ui/aanvraag-detail.page.ts @@ -2,11 +2,11 @@ import { Component, computed, inject } from '@angular/core'; import { successOf } from '@shared/application/remote-data'; import { ActivatedRoute } from '@angular/router'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AanvragenStore } from '@registratie/application/aanvragen.store'; import { Aanvraag } from '@registratie/domain/aanvraag'; import { detailRows } from '@registratie/domain/aanvraag-view'; diff --git a/apps/ssp/src/app/registratie/ui/address-fields/address-fields.component.ts b/apps/ssp/src/app/registratie/ui/address-fields/address-fields.component.ts index 98cc28d..e89b04d 100644 --- a/apps/ssp/src/app/registratie/ui/address-fields/address-fields.component.ts +++ b/apps/ssp/src/app/registratie/ui/address-fields/address-fields.component.ts @@ -1,7 +1,7 @@ import { Component, input, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; export interface AdresValue { straat: string; diff --git a/apps/ssp/src/app/registratie/ui/admin-cases.page.ts b/apps/ssp/src/app/registratie/ui/admin-cases.page.ts index 0b1ac71..2545c92 100644 --- a/apps/ssp/src/app/registratie/ui/admin-cases.page.ts +++ b/apps/ssp/src/app/registratie/ui/admin-cases.page.ts @@ -1,10 +1,10 @@ import { Component, computed, effect, inject } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AccessStore } from '@shared/application/access.store'; import { successOr } from '@shared/application/remote-data'; import { formatDatumNl } from '@shared/kernel/datum'; diff --git a/apps/ssp/src/app/registratie/ui/change-request-form/change-request-form.component.ts b/apps/ssp/src/app/registratie/ui/change-request-form/change-request-form.component.ts index 92ab814..a029b4a 100644 --- a/apps/ssp/src/app/registratie/ui/change-request-form/change-request-form.component.ts +++ b/apps/ssp/src/app/registratie/ui/change-request-form/change-request-form.component.ts @@ -1,12 +1,12 @@ import { Component, computed, input } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; import { Adres } from '@registratie/domain/person'; import { createStore } from '@shared/application/store'; import { whenTag } from '@shared/kernel/fp'; diff --git a/apps/ssp/src/app/registratie/ui/dashboard/mijn-aanvragen.section.ts b/apps/ssp/src/app/registratie/ui/dashboard/mijn-aanvragen.section.ts index feabd9e..da5205e 100644 --- a/apps/ssp/src/app/registratie/ui/dashboard/mijn-aanvragen.section.ts +++ b/apps/ssp/src/app/registratie/ui/dashboard/mijn-aanvragen.section.ts @@ -1,11 +1,11 @@ import { Component, computed, inject } from '@angular/core'; import { Router } from '@angular/router'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { ApplicationListComponent } from '@shared/ui/application-list/application-list.component'; -import { ApplicationLinkComponent } from '@shared/ui/application-link/application-link.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { ApplicationListComponent } from '@shared/ui/molecules/application-list/application-list.component'; +import { ApplicationLinkComponent } from '@shared/ui/molecules/application-link/application-link.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { successOr } from '@shared/application/remote-data'; import { AanvragenStore } from '@registratie/application/aanvragen.store'; import { Aanvraag, AanvraagType } from '@registratie/domain/aanvraag'; diff --git a/apps/ssp/src/app/registratie/ui/dashboard/mijn-registratie.section.ts b/apps/ssp/src/app/registratie/ui/dashboard/mijn-registratie.section.ts index 56a5793..10532c3 100644 --- a/apps/ssp/src/app/registratie/ui/dashboard/mijn-registratie.section.ts +++ b/apps/ssp/src/app/registratie/ui/dashboard/mijn-registratie.section.ts @@ -1,10 +1,10 @@ import { Component, inject } from '@angular/core'; import { successOf } from '@shared/application/remote-data'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { BigProfileStore } from '@registratie/application/big-profile.store'; import { RegistrationSummaryComponent } from '@registratie/ui/registration-summary/registration-summary.component'; diff --git a/apps/ssp/src/app/registratie/ui/dashboard/specialismen.section.ts b/apps/ssp/src/app/registratie/ui/dashboard/specialismen.section.ts index 01a30f8..d92efa9 100644 --- a/apps/ssp/src/app/registratie/ui/dashboard/specialismen.section.ts +++ b/apps/ssp/src/app/registratie/ui/dashboard/specialismen.section.ts @@ -1,8 +1,8 @@ import { Component, inject } from '@angular/core'; import { successOf } from '@shared/application/remote-data'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { BigProfileStore } from '@registratie/application/big-profile.store'; import { RegistrationTableComponent } from '@registratie/ui/registration-table/registration-table.component'; diff --git a/apps/ssp/src/app/registratie/ui/dashboard/wat-moet-ik-regelen.section.ts b/apps/ssp/src/app/registratie/ui/dashboard/wat-moet-ik-regelen.section.ts index a2d0716..b934a1b 100644 --- a/apps/ssp/src/app/registratie/ui/dashboard/wat-moet-ik-regelen.section.ts +++ b/apps/ssp/src/app/registratie/ui/dashboard/wat-moet-ik-regelen.section.ts @@ -1,10 +1,10 @@ import { Component, computed, inject } from '@angular/core'; import { successOf } from '@shared/application/remote-data'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { TaskListComponent } from '@shared/ui/task-list/task-list.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { TaskListComponent } from '@shared/ui/molecules/task-list/task-list.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { BigProfileStore } from '@registratie/application/big-profile.store'; import { tasksFromProfile } from '@registratie/domain/tasks'; diff --git a/apps/ssp/src/app/registratie/ui/registratie-wizard/adres.step.ts b/apps/ssp/src/app/registratie/ui/registratie-wizard/adres.step.ts index e22f7ed..b68613c 100644 --- a/apps/ssp/src/app/registratie/ui/registratie-wizard/adres.step.ts +++ b/apps/ssp/src/app/registratie/ui/registratie-wizard/adres.step.ts @@ -1,10 +1,10 @@ import { Component, inject, input, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { RadioGroupComponent } from '@shared/ui/radio-group/radio-group.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { RadioGroupComponent } from '@shared/ui/atoms/radio-group/radio-group.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; import { AddressFieldsComponent } from '@registratie/ui/address-fields/address-fields.component'; import { RegistratieLookupStore } from '@registratie/application/registratie-lookup.store'; import { Draft, DraftField, Errors } from '@registratie/domain/registratie-wizard.machine'; diff --git a/apps/ssp/src/app/registratie/ui/registratie-wizard/beroep.step.ts b/apps/ssp/src/app/registratie/ui/registratie-wizard/beroep.step.ts index 6649d8e..d0daff2 100644 --- a/apps/ssp/src/app/registratie/ui/registratie-wizard/beroep.step.ts +++ b/apps/ssp/src/app/registratie/ui/registratie-wizard/beroep.step.ts @@ -1,14 +1,14 @@ import { Component, computed, inject, input, output } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { FormFieldComponent } from '@shared/ui/form-field/form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { RadioGroupComponent, JA_NEE } from '@shared/ui/radio-group/radio-group.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { ASYNC } from '@shared/ui/async/async.component'; -import { DocumentUploadComponent } from '@shared/ui/upload/document-upload/document-upload.component'; +import { FormFieldComponent } from '@shared/ui/molecules/form-field/form-field.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { RadioGroupComponent, JA_NEE } from '@shared/ui/atoms/radio-group/radio-group.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; +import { DocumentUploadComponent } from '@shared/ui/organisms/upload/document-upload/document-upload.component'; import { createUploadController } from '@shared/application/upload-controller'; import { UploadMsg, UploadState } from '@shared/domain/upload.machine'; import { RemoteData, successOr } from '@shared/application/remote-data'; diff --git a/apps/ssp/src/app/registratie/ui/registratie-wizard/controle.step.ts b/apps/ssp/src/app/registratie/ui/registratie-wizard/controle.step.ts index 02614c1..3aa3d93 100644 --- a/apps/ssp/src/app/registratie/ui/registratie-wizard/controle.step.ts +++ b/apps/ssp/src/app/registratie/ui/registratie-wizard/controle.step.ts @@ -1,7 +1,7 @@ import { Component, computed, inject, input, output } from '@angular/core'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { ReviewSectionComponent } from '@shared/ui/review-section/review-section.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { ReviewSectionComponent } from '@shared/ui/molecules/review-section/review-section.component'; import { successOr } from '@shared/application/remote-data'; import { RegistratieLookupStore } from '@registratie/application/registratie-lookup.store'; import { DuoLookupDto } from '@registratie/contracts/duo-diplomas.dto'; diff --git a/apps/ssp/src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts b/apps/ssp/src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts index 09e78c3..3ca2c36 100644 --- a/apps/ssp/src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts +++ b/apps/ssp/src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts @@ -1,6 +1,6 @@ import { Component, computed, effect, inject, input, untracked } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ConfirmationComponent } from '@shared/ui/confirmation/confirmation.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ConfirmationComponent } from '@shared/ui/molecules/confirmation/confirmation.component'; import { WizardShellComponent, WizardError, diff --git a/apps/ssp/src/app/registratie/ui/registratie.page.ts b/apps/ssp/src/app/registratie/ui/registratie.page.ts index 1600d8a..6008a65 100644 --- a/apps/ssp/src/app/registratie/ui/registratie.page.ts +++ b/apps/ssp/src/app/registratie/ui/registratie.page.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { RegistratieWizardComponent } from '@registratie/ui/registratie-wizard/registratie-wizard.component'; /** Page: register in the BIG-register. Built entirely from existing building diff --git a/apps/ssp/src/app/registratie/ui/registration-detail.page.ts b/apps/ssp/src/app/registratie/ui/registration-detail.page.ts index 01f0063..fa2efd0 100644 --- a/apps/ssp/src/app/registratie/ui/registration-detail.page.ts +++ b/apps/ssp/src/app/registratie/ui/registration-detail.page.ts @@ -1,8 +1,8 @@ import { Component, computed, inject } from '@angular/core'; import { successOf } from '@shared/application/remote-data'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { RegistrationSummaryComponent } from '@registratie/ui/registration-summary/registration-summary.component'; import { ChangeRequestFormComponent } from '@registratie/ui/change-request-form/change-request-form.component'; import { BigProfileStore } from '@registratie/application/big-profile.store'; diff --git a/apps/ssp/src/app/registratie/ui/registration-summary/registration-summary.component.ts b/apps/ssp/src/app/registratie/ui/registration-summary/registration-summary.component.ts index 11d78d7..245d0a5 100644 --- a/apps/ssp/src/app/registratie/ui/registration-summary/registration-summary.component.ts +++ b/apps/ssp/src/app/registratie/ui/registration-summary/registration-summary.component.ts @@ -2,9 +2,9 @@ import { Component, input } from '@angular/core'; import { DatePipe } from '@angular/common'; import { Registration } from '@registratie/domain/registration'; import { statusColor, statusLabel } from '@registratie/domain/registration.policy'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; -import { StatusBadgeComponent } from '@shared/ui/status-badge/status-badge.component'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; +import { StatusBadgeComponent } from '@shared/ui/atoms/status-badge/status-badge.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; /** Organism: registration summary in a CIBG Datablock. Composes data-row rows + status-badge atom (no card wrapper — the datablock carries its own surface). */ diff --git a/apps/ssp/src/app/showcase/form-machine.section.ts b/apps/ssp/src/app/showcase/form-machine.section.ts index ae534ba..c30672c 100644 --- a/apps/ssp/src/app/showcase/form-machine.section.ts +++ b/apps/ssp/src/app/showcase/form-machine.section.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; import { HerregistratieWizardComponent } from '@herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component'; import { ConceptCardComponent } from './concept-card.component'; import { SNIPPETS } from './snippets.generated'; diff --git a/apps/ssp/src/app/showcase/parse.section.ts b/apps/ssp/src/app/showcase/parse.section.ts index ac8aed0..d75e890 100644 --- a/apps/ssp/src/app/showcase/parse.section.ts +++ b/apps/ssp/src/app/showcase/parse.section.ts @@ -1,7 +1,7 @@ import { Component, computed, signal } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; import { parsePostcode } from '@registratie/domain/value-objects/postcode'; import { ConceptCardComponent } from './concept-card.component'; import { SNIPPETS } from './snippets.generated'; diff --git a/apps/ssp/src/app/showcase/pii.section.ts b/apps/ssp/src/app/showcase/pii.section.ts index 636fe1d..7d908b3 100644 --- a/apps/ssp/src/app/showcase/pii.section.ts +++ b/apps/ssp/src/app/showcase/pii.section.ts @@ -1,8 +1,8 @@ import { Component, computed, signal } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; -import { MaskedValueComponent } from '@shared/ui/masked-value/masked-value.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; +import { MaskedValueComponent } from '@shared/ui/atoms/masked-value/masked-value.component'; import { parseBsn } from '@shared/kernel/bsn'; import { maskBsn } from '@shared/kernel/pii'; import { ConceptCardComponent } from './concept-card.component'; diff --git a/apps/ssp/src/app/showcase/remote-data.section.ts b/apps/ssp/src/app/showcase/remote-data.section.ts index 5b9e942..98dc7b4 100644 --- a/apps/ssp/src/app/showcase/remote-data.section.ts +++ b/apps/ssp/src/app/showcase/remote-data.section.ts @@ -1,8 +1,8 @@ import { Component } from '@angular/core'; import type { Resource } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { ASYNC } from '@shared/ui/async/async.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; import { ConceptCardComponent } from './concept-card.component'; import { SNIPPETS } from './snippets.generated'; import { highlightTs } from './highlight-ts'; diff --git a/apps/ssp/src/app/showcase/unions.section.ts b/apps/ssp/src/app/showcase/unions.section.ts index 0f2428c..5f66073 100644 --- a/apps/ssp/src/app/showcase/unions.section.ts +++ b/apps/ssp/src/app/showcase/unions.section.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; import { RegistrationSummaryComponent } from '@registratie/ui/registration-summary/registration-summary.component'; import { Registration } from '@registratie/domain/registration'; import { ConceptCardComponent } from './concept-card.component'; diff --git a/apps/ssp/src/app/showcase/vragenlijst.section.ts b/apps/ssp/src/app/showcase/vragenlijst.section.ts index 49275d7..4f9af74 100644 --- a/apps/ssp/src/app/showcase/vragenlijst.section.ts +++ b/apps/ssp/src/app/showcase/vragenlijst.section.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; import { IntakeWizardComponent } from '@herregistratie/ui/intake-wizard/intake-wizard.component'; import { ConceptCardComponent } from './concept-card.component'; import { SNIPPETS } from './snippets.generated'; diff --git a/docs/project/readable-codebase/RD-27-layer-move.md b/docs/project/readable-codebase/RD-27-layer-move.md new file mode 100644 index 0000000..744ef1b --- /dev/null +++ b/docs/project/readable-codebase/RD-27-layer-move.md @@ -0,0 +1,219 @@ +# RD-27 — Make the folder equal the layer in `libs/shared/src/ui/` + +Status: done +Source: PLAN.md 4a, Phase 4 + +## Why + +CLAUDE.md decision 2 says "folder = layer": `libs/shared/ui` atoms → molecules → organisms. +Today `libs/shared/src/ui/` is 26 flat directories, and the only record of a component's layer +is its story title and a header comment. Nothing stops an atom importing an organism. + +This ticket makes the structure say what the rule says. It is a **pure move**: no component +changes, no story title changes, no behaviour. RD-29 then adds the dependency-cruiser rules +that the folders make expressible. + +**This is the highest-risk ticket in the arc**, because a broken `.mdx` story import compiles +fine and only fails when Storybook builds. The README says it must not be pushed without +`npm run ci --full`. + +## Read first + +- `libs/shared/src/ui/` — 25 flat component directories plus `upload/` with 8 of its own. +- `libs/shared/docs/atomic-design.mdx:2-5` — three of the seven `.mdx` story imports that break. +- PLAN.md 4a — the design record, including why `layout/` does not move. +- `.storybook-ssp/main.ts:11-14` — the globs, which are recursive and need no edit. + +## Decisions (pre-made, don't relitigate) + +1. **Three layer folders, and the full 33-directory mapping. This table is the ticket.** + + `libs/shared/src/ui/atoms/` — 12 flat: + + ``` + alert button checkbox heading link masked-value + placeholder-chip radio-group skeleton spinner status-badge text-input + ``` + + `libs/shared/src/ui/molecules/` — 13 flat: + + ``` + application-link application-list async choice-link choice-list confirmation + data-block data-row form-field review-section rich-text-editor stepper task-list + ``` + + `upload/` **keeps its feature subfolder inside each layer** — 8 directories: + + | New location | Directories | + | ---------------------- | ----------------------------------------------------------------------------------------------------- | + | `ui/atoms/upload/` | `delivery-channel-toggle`, `document-chip`, `file-input`, `upload-progress-bar`, `upload-status-icon` | + | `ui/molecules/upload/` | `single-upload` | + | `ui/organisms/upload/` | `document-category`, `document-upload` | + + `ui/organisms/` holds nothing but `upload/`. That is correct and worth seeing. + + The mapping is derived from each component's own story title, not invented — every one of + the 33 already declares its layer as `Design System//…`. + +2. **Use `git mv` per directory, so the diff reads as renames.** `git diff --stat -M` must show + renames plus one-line import edits, nothing else. + +3. **Rewrite the 28 distinct specifiers, longest key first.** All 28 are listed by the mapping + in decision 1; 25 are flat and 3 are the upload components imported from outside + (`upload/document-upload` → `organisms/upload/document-upload`, `upload/file-input` → + `atoms/upload/file-input`, `upload/single-upload` → `molecules/upload/single-upload`). + + Verified: **no specifier is a prefix of another**, so ordering cannot corrupt a rewrite here. + Do it longest-first anyway — it costs nothing and the property is not guaranteed to hold if + this is ever repeated. + + There are 200 occurrences across 73 files. The count of occurrences must not change. + +4. **Five of the seven relative imports inside `upload/` become aliases; two stay relative.** + A `../sibling/` import only breaks when the sibling lands in a different layer: + + | File (new location) | Import | Becomes | + | ------------------------------------ | ---------------------------- | ------------------------------------------------- | + | `organisms/upload/document-category` | `../delivery-channel-toggle` | `@shared/ui/atoms/upload/delivery-channel-toggle` | + | `organisms/upload/document-category` | `../file-input` | `@shared/ui/atoms/upload/file-input` | + | `organisms/upload/document-category` | `../single-upload` | `@shared/ui/molecules/upload/single-upload` | + | `molecules/upload/single-upload` | `../document-chip` | `@shared/ui/atoms/upload/document-chip` | + | `molecules/upload/single-upload` | `../upload-progress-bar` | `@shared/ui/atoms/upload/upload-progress-bar` | + + Unchanged, because both ends stay in the same layer: `atoms/upload/document-chip` → + `../upload-status-icon`, and `organisms/upload/document-upload` → `../document-category`. + + **Use the alias, not `../../../`.** Cross-directory imports inside `libs/shared` already use + `@shared/…` (see `wizard-shell.component.ts`), and a three-level relative path is exactly the + thing a later move breaks silently. + +5. **Seven `.mdx` story imports break. All seven are real imports, not prose.** The Order table + says eight; measured, it is seven: + + ``` + a11y.mdx:2 ../src/ui/alert/alert.stories -> ui/atoms/alert/… + a11y.mdx:3 ../src/ui/form-field/form-field.stories -> ui/molecules/form-field/… + atomic-design.mdx:2 ../src/ui/button/button.stories -> ui/atoms/button/… + atomic-design.mdx:3 ../src/ui/form-field/form-field.stories -> ui/molecules/form-field/… + atomic-design.mdx:5 ../src/ui/upload/document-upload/… -> ui/organisms/upload/document-upload/… + fp-in-ui.mdx:2 ../src/ui/async/async.stories -> ui/molecules/async/… + remote-data.mdx:2 ../src/ui/async/async.stories -> ui/molecules/async/… + ``` + + `atomic-design.mdx:4` imports `../src/layout/page-shell/…`. **Leave it alone** — `layout/` + does not move. + +6. **`layout/` does not move, and neither does `libs/beheer/src/ui/`.** CLAUDE.md §5 explicitly + sanctions `libs/shared/layout` holding several layers, and `libs/beheer` is a bounded context + that lives in `libs/` only because two apps share it. Both are settled; do not revisit them. + +7. **Change no story title, no layer-tag comment, and no component code.** The titles already + say the right thing, which is what made decision 1's mapping derivable. The two mislabelled + tags (`async` has `/** Convenience: */`, `breadcrumb` says `/** Chrome: */`) and the two + missing ones (`masked-value`, `rich-text-editor`) are **RD-28's** job, not this ticket's. + +8. **No barrel file.** The repository has none and does not need one. A barrel would also hide + exactly the layer boundary this ticket exists to expose. + +## Files + +- 33 directories moved under `libs/shared/src/ui/` +- ~73 files with a one-line specifier edit +- 4 `.mdx` files (7 import lines) + +No changes to `angular.json`, `eslint.config.mjs`, `plopfile.mjs`, any `tsconfig.json`, +`.dependency-cruiser.*`, `scripts/check-tokens.sh`, or `e2e/`. Verified: `@shared/*` maps to +`libs/shared/src/*`, so a deeper path resolves unchanged; both Storybook globs are recursive; +dependency-cruiser's `ui-not-infrastructure` pattern is `(/ui/|/layout/)`, which still matches a +nested path; and `check-tokens.sh`'s CIBG-GAP check keys on the **directory basename**, which a +parent-folder move preserves. + +## Steps + +1. `mkdir` the three layer folders, then `git mv` all 33 directories per decision 1. +2. Rewrite the 28 specifiers across `apps/` and `libs/` (decision 3). +3. Fix the five relative imports inside `upload/` (decision 4). +4. Fix the seven `.mdx` imports (decision 5). +5. `npm run typecheck` — four tsconfigs, and the fastest way to catch a missed specifier. +6. `git add -A`, then run the acceptance commands. +7. Update this ticket's `Status:` to `done` and the README's RD-27 row to `done`. +8. Commit all of it together. + +## Acceptance criteria + +Measured against the tree before handover. Run after `git add -A`. + +The structure is three folders, and every directory landed: + +```bash +ls -d libs/shared/src/ui/*/ | wc -l # is 26 -> MUST be 3 +ls -d libs/shared/src/ui/atoms/*/ | wc -l # MUST be 13 (12 + upload) +ls -d libs/shared/src/ui/atoms/upload/*/ | wc -l # MUST be 5 +ls -d libs/shared/src/ui/molecules/*/ | wc -l # MUST be 14 (13 + upload) +ls -d libs/shared/src/ui/molecules/upload/*/ | wc -l # MUST be 1 +ls -d libs/shared/src/ui/organisms/*/ | wc -l # MUST be 1 (upload) +ls -d libs/shared/src/ui/organisms/upload/*/ | wc -l # MUST be 2 +``` + +**The single strongest check in this ticket** — every specifier now names a layer, so only three +distinct values may remain: + +```bash +git grep -ho "@shared/ui/[a-z0-9-]*" -- apps libs | sort -u # is 26 values -> MUST be exactly these 3: + # @shared/ui/atoms + # @shared/ui/molecules + # @shared/ui/organisms +``` + +Nothing was lost or duplicated in the rewrite: + +```bash +git grep -ho "@shared/ui/" -- apps libs | wc -l # is 200 -> MUST still be 200 +git grep -c "src/ui/" -- '*.mdx' | awk -F: '{s+=$NF} END {print s+0}' # is 7 -> MUST still be 7 +git grep -c "from '\.\./" -- libs/shared/src/ui/ | awk -F: '{s+=$NF} END {print s+0}' # is 7 -> MUST be 2 +``` + +The move reads as a move (decision 2): + +```bash +git diff --cached --stat -M | tail -1 # inspect: renames + one-line edits, no rewritten files +``` + +```bash +npm run ci --full # exits 0 — REQUIRED, see Verification +``` + +## Verification + +**`npm run ci --full` is mandatory and non-negotiable for this ticket.** Plain `npm run ci` does +not build Storybook, and a `.mdx` importing a moved story path is invisible to the type-checker, +the linter and every unit test. It fails only when `build-storybook` runs. The README calls out +RD-27 by name for this reason. + +Run `npm run typecheck` first anyway (step 5): it covers four tsconfigs and catches a missed +`@shared/ui/*` specifier in seconds rather than at the end of a full gate. + +`libs/shared/docs/layers.mdx` deep-links two story ids +(`design-system-molecules-application-link--navigatie`, +`domein-registratie-aanvraag-block--concept`). Story ids derive from **titles**, and decision 7 +changes no title, so both links survive. Do not "fix" them. + +## Out of scope + +- The dependency-cruiser ladder rules. RD-29 adds them, and it depends on this ticket. +- Layer-tag comments and the `libs/beheer` title rule — RD-28. +- `layout/` (decision 6). +- Any component's code, template, styles or story title. + +## Risks + +- **A broken `.mdx` import is invisible until Storybook builds.** This is the whole reason the + ticket carries `--full`. Decision 5 lists all seven; check each one after the move. +- **`git mv`, not `mv` + `git add`.** Both produce the same tree, but only the first keeps the + diff readable as renames — and this diff is 33 directories wide. +- **Do not flatten `upload/`** (decision 1). Its subfolder survives inside each layer. +- **Do not reach for `../../../`** (decision 4). Use the alias. +- **The occurrence count is the tripwire for a bad `sed`.** 200 before, 200 after. A rewrite + that accidentally matches twice, or drops a line, moves that number. +- **`atomic-design.mdx` has four story imports and only three of them move.** The fourth is + `page-shell`, in `layout/`. diff --git a/docs/project/readable-codebase/README.md b/docs/project/readable-codebase/README.md index 5d9ddb7..1b0ab61 100644 --- a/docs/project/readable-codebase/README.md +++ b/docs/project/readable-codebase/README.md @@ -121,7 +121,7 @@ two. Note that RD-15 exists because 22 abandoned agent worktrees are still on di | RD-24 | `concepts.page` to 6 sections + `concept-card` + globals + code tokens | 02 | yes | done | | RD-25 | `org-template-editor` to `sample-letter.ts` + labels + 2 children | 02 | yes | done | | RD-26 | `letter-canvas`: inline the labels + `letter-line`; keep one disable | 02 | yes | done | -| RD-27 | **The layer move:** 33 `git mv` + 28 specifiers + 8 MDX imports | 21 | yes | todo | +| RD-27 | **The layer move:** 33 `git mv` + 28 specifiers + 8 MDX imports | 21 | yes | done | | RD-28 | Layer-tag fixes + the `libs/beheer` title rule | 27 | | todo | | RD-29 | The 3 atomic-ladder rules in dependency-cruiser | 27 | | todo | | RD-30 | Archive the finished backlogs (16,300 lines) + an archive README | 01 | | todo | diff --git a/libs/beheer/src/ui/audit.page.ts b/libs/beheer/src/ui/audit.page.ts index 6df5795..1c3fa3c 100644 --- a/libs/beheer/src/ui/audit.page.ts +++ b/libs/beheer/src/ui/audit.page.ts @@ -1,9 +1,9 @@ import { Component, computed, effect, inject } from '@angular/core'; import { DatePipe } from '@angular/common'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AccessStore } from '@shared/application/access.store'; import { successOr } from '@shared/application/remote-data'; import { AuditStore } from '@beheer/application/audit.store'; diff --git a/libs/beheer/src/ui/feature-flags.page.ts b/libs/beheer/src/ui/feature-flags.page.ts index f77a49b..e764eb8 100644 --- a/libs/beheer/src/ui/feature-flags.page.ts +++ b/libs/beheer/src/ui/feature-flags.page.ts @@ -1,8 +1,8 @@ import { Component, computed, inject, signal } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AccessStore } from '@shared/application/access.store'; import { FeatureFlagStore } from '@shared/application/feature-flags.store'; diff --git a/libs/beheer/src/ui/stamdata-table-editor/stamdata-table-editor.component.ts b/libs/beheer/src/ui/stamdata-table-editor/stamdata-table-editor.component.ts index 73a427c..c55f408 100644 --- a/libs/beheer/src/ui/stamdata-table-editor/stamdata-table-editor.component.ts +++ b/libs/beheer/src/ui/stamdata-table-editor/stamdata-table-editor.component.ts @@ -1,5 +1,5 @@ import { Component, computed, input, output } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; import { ChangeCounts, StamColumn, StamRow, StamTable, activeOn } from '@beheer/domain/stamdata'; interface DisplayRow { diff --git a/libs/beheer/src/ui/stamdata.page.ts b/libs/beheer/src/ui/stamdata.page.ts index 4aa7df5..b2133eb 100644 --- a/libs/beheer/src/ui/stamdata.page.ts +++ b/libs/beheer/src/ui/stamdata.page.ts @@ -1,8 +1,8 @@ import { Component, computed, effect, inject } from '@angular/core'; import { PageShellComponent } from '@shared/layout/page-shell/page-shell.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { ASYNC } from '@shared/ui/async/async.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { ASYNC } from '@shared/ui/molecules/async/async.component'; import { AccessStore } from '@shared/application/access.store'; import { StamdataStore } from '@beheer/application/stamdata.store'; import { StamdataTableEditorComponent } from '@beheer/ui/stamdata-table-editor/stamdata-table-editor.component'; diff --git a/libs/shared/docs/a11y.mdx b/libs/shared/docs/a11y.mdx index 3f65abd..80a4670 100644 --- a/libs/shared/docs/a11y.mdx +++ b/libs/shared/docs/a11y.mdx @@ -1,6 +1,6 @@ import { Meta, Canvas } from '@storybook/addon-docs/blocks'; -import * as AlertStories from '../src/ui/alert/alert.stories'; -import * as FormFieldStories from '../src/ui/form-field/form-field.stories'; +import * as AlertStories from '../src/ui/atoms/alert/alert.stories'; +import * as FormFieldStories from '../src/ui/molecules/form-field/form-field.stories'; diff --git a/libs/shared/docs/atomic-design.mdx b/libs/shared/docs/atomic-design.mdx index 55aa212..c37a72f 100644 --- a/libs/shared/docs/atomic-design.mdx +++ b/libs/shared/docs/atomic-design.mdx @@ -1,8 +1,8 @@ import { Meta, Canvas } from '@storybook/addon-docs/blocks'; -import * as ButtonStories from '../src/ui/button/button.stories'; -import * as FormFieldStories from '../src/ui/form-field/form-field.stories'; +import * as ButtonStories from '../src/ui/atoms/button/button.stories'; +import * as FormFieldStories from '../src/ui/molecules/form-field/form-field.stories'; import * as PageShellStories from '../src/layout/page-shell/page-shell.stories'; -import * as DocumentUploadStories from '../src/ui/upload/document-upload/document-upload.stories'; +import * as DocumentUploadStories from '../src/ui/organisms/upload/document-upload/document-upload.stories'; diff --git a/libs/shared/docs/fp-in-ui.mdx b/libs/shared/docs/fp-in-ui.mdx index d7aeeaf..4b8198a 100644 --- a/libs/shared/docs/fp-in-ui.mdx +++ b/libs/shared/docs/fp-in-ui.mdx @@ -1,5 +1,5 @@ import { Meta, Canvas } from '@storybook/addon-docs/blocks'; -import * as AsyncStories from '../src/ui/async/async.stories'; +import * as AsyncStories from '../src/ui/molecules/async/async.stories'; diff --git a/libs/shared/docs/remote-data.mdx b/libs/shared/docs/remote-data.mdx index 5530db2..b6af9f2 100644 --- a/libs/shared/docs/remote-data.mdx +++ b/libs/shared/docs/remote-data.mdx @@ -1,5 +1,5 @@ import { Meta, Canvas } from '@storybook/addon-docs/blocks'; -import * as AsyncStories from '../src/ui/async/async.stories'; +import * as AsyncStories from '../src/ui/molecules/async/async.stories'; diff --git a/libs/shared/src/layout/page-shell/page-shell.component.ts b/libs/shared/src/layout/page-shell/page-shell.component.ts index 47b862e..658ac46 100644 --- a/libs/shared/src/layout/page-shell/page-shell.component.ts +++ b/libs/shared/src/layout/page-shell/page-shell.component.ts @@ -1,6 +1,6 @@ import { Component, input } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; -import { LinkComponent } from '@shared/ui/link/link.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; +import { LinkComponent } from '@shared/ui/atoms/link/link.component'; /** Template: standard page body — optional back-link, a heading, optional intro, and projected content. The breadcrumb lives in the site header (blue bar), so diff --git a/libs/shared/src/layout/page-shell/page-shell.stories.ts b/libs/shared/src/layout/page-shell/page-shell.stories.ts index 881eb9e..f39dc34 100644 --- a/libs/shared/src/layout/page-shell/page-shell.stories.ts +++ b/libs/shared/src/layout/page-shell/page-shell.stories.ts @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { applicationConfig, moduleMetadata } from '@storybook/angular'; import { provideRouter } from '@angular/router'; import { PageShellComponent } from './page-shell.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; const meta: Meta = { title: 'Design System/Templates/PageShell', diff --git a/libs/shared/src/layout/wizard-shell/wizard-shell.component.ts b/libs/shared/src/layout/wizard-shell/wizard-shell.component.ts index 453dfc4..6bfa32d 100644 --- a/libs/shared/src/layout/wizard-shell/wizard-shell.component.ts +++ b/libs/shared/src/layout/wizard-shell/wizard-shell.component.ts @@ -9,10 +9,10 @@ import { viewChild, } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { ButtonComponent } from '@shared/ui/button/button.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { SpinnerComponent } from '@shared/ui/spinner/spinner.component'; -import { StepperComponent } from '@shared/ui/stepper/stepper.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { SpinnerComponent } from '@shared/ui/atoms/spinner/spinner.component'; +import { StepperComponent } from '@shared/ui/molecules/stepper/stepper.component'; import { whenTag } from '@shared/kernel/fp'; /** CIBG procesnavigatie primary-button copy for a non-final step: "Naar stap 2 - Werk". diff --git a/libs/shared/src/ui/alert/alert.component.ts b/libs/shared/src/ui/atoms/alert/alert.component.ts similarity index 100% rename from libs/shared/src/ui/alert/alert.component.ts rename to libs/shared/src/ui/atoms/alert/alert.component.ts diff --git a/libs/shared/src/ui/alert/alert.stories.ts b/libs/shared/src/ui/atoms/alert/alert.stories.ts similarity index 100% rename from libs/shared/src/ui/alert/alert.stories.ts rename to libs/shared/src/ui/atoms/alert/alert.stories.ts diff --git a/libs/shared/src/ui/button/button.component.ts b/libs/shared/src/ui/atoms/button/button.component.ts similarity index 100% rename from libs/shared/src/ui/button/button.component.ts rename to libs/shared/src/ui/atoms/button/button.component.ts diff --git a/libs/shared/src/ui/button/button.stories.ts b/libs/shared/src/ui/atoms/button/button.stories.ts similarity index 100% rename from libs/shared/src/ui/button/button.stories.ts rename to libs/shared/src/ui/atoms/button/button.stories.ts diff --git a/libs/shared/src/ui/checkbox/checkbox.component.ts b/libs/shared/src/ui/atoms/checkbox/checkbox.component.ts similarity index 100% rename from libs/shared/src/ui/checkbox/checkbox.component.ts rename to libs/shared/src/ui/atoms/checkbox/checkbox.component.ts diff --git a/libs/shared/src/ui/checkbox/checkbox.stories.ts b/libs/shared/src/ui/atoms/checkbox/checkbox.stories.ts similarity index 100% rename from libs/shared/src/ui/checkbox/checkbox.stories.ts rename to libs/shared/src/ui/atoms/checkbox/checkbox.stories.ts diff --git a/libs/shared/src/ui/heading/heading.component.ts b/libs/shared/src/ui/atoms/heading/heading.component.ts similarity index 100% rename from libs/shared/src/ui/heading/heading.component.ts rename to libs/shared/src/ui/atoms/heading/heading.component.ts diff --git a/libs/shared/src/ui/heading/heading.stories.ts b/libs/shared/src/ui/atoms/heading/heading.stories.ts similarity index 100% rename from libs/shared/src/ui/heading/heading.stories.ts rename to libs/shared/src/ui/atoms/heading/heading.stories.ts diff --git a/libs/shared/src/ui/link/link.component.ts b/libs/shared/src/ui/atoms/link/link.component.ts similarity index 100% rename from libs/shared/src/ui/link/link.component.ts rename to libs/shared/src/ui/atoms/link/link.component.ts diff --git a/libs/shared/src/ui/link/link.stories.ts b/libs/shared/src/ui/atoms/link/link.stories.ts similarity index 100% rename from libs/shared/src/ui/link/link.stories.ts rename to libs/shared/src/ui/atoms/link/link.stories.ts diff --git a/libs/shared/src/ui/masked-value/masked-value.component.ts b/libs/shared/src/ui/atoms/masked-value/masked-value.component.ts similarity index 94% rename from libs/shared/src/ui/masked-value/masked-value.component.ts rename to libs/shared/src/ui/atoms/masked-value/masked-value.component.ts index b332e72..567054b 100644 --- a/libs/shared/src/ui/masked-value/masked-value.component.ts +++ b/libs/shared/src/ui/atoms/masked-value/masked-value.component.ts @@ -1,5 +1,5 @@ import { Component, computed, input, output } from '@angular/core'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; /** * Atom: a possibly-masked sensitive value (BSN, BIG-nummer, …) with an optional, audited diff --git a/libs/shared/src/ui/masked-value/masked-value.stories.ts b/libs/shared/src/ui/atoms/masked-value/masked-value.stories.ts similarity index 100% rename from libs/shared/src/ui/masked-value/masked-value.stories.ts rename to libs/shared/src/ui/atoms/masked-value/masked-value.stories.ts diff --git a/libs/shared/src/ui/placeholder-chip/placeholder-chip.component.ts b/libs/shared/src/ui/atoms/placeholder-chip/placeholder-chip.component.ts similarity index 100% rename from libs/shared/src/ui/placeholder-chip/placeholder-chip.component.ts rename to libs/shared/src/ui/atoms/placeholder-chip/placeholder-chip.component.ts diff --git a/libs/shared/src/ui/placeholder-chip/placeholder-chip.stories.ts b/libs/shared/src/ui/atoms/placeholder-chip/placeholder-chip.stories.ts similarity index 100% rename from libs/shared/src/ui/placeholder-chip/placeholder-chip.stories.ts rename to libs/shared/src/ui/atoms/placeholder-chip/placeholder-chip.stories.ts diff --git a/libs/shared/src/ui/radio-group/radio-group.component.ts b/libs/shared/src/ui/atoms/radio-group/radio-group.component.ts similarity index 100% rename from libs/shared/src/ui/radio-group/radio-group.component.ts rename to libs/shared/src/ui/atoms/radio-group/radio-group.component.ts diff --git a/libs/shared/src/ui/radio-group/radio-group.stories.ts b/libs/shared/src/ui/atoms/radio-group/radio-group.stories.ts similarity index 100% rename from libs/shared/src/ui/radio-group/radio-group.stories.ts rename to libs/shared/src/ui/atoms/radio-group/radio-group.stories.ts diff --git a/libs/shared/src/ui/skeleton/skeleton.component.ts b/libs/shared/src/ui/atoms/skeleton/skeleton.component.ts similarity index 100% rename from libs/shared/src/ui/skeleton/skeleton.component.ts rename to libs/shared/src/ui/atoms/skeleton/skeleton.component.ts diff --git a/libs/shared/src/ui/skeleton/skeleton.stories.ts b/libs/shared/src/ui/atoms/skeleton/skeleton.stories.ts similarity index 100% rename from libs/shared/src/ui/skeleton/skeleton.stories.ts rename to libs/shared/src/ui/atoms/skeleton/skeleton.stories.ts diff --git a/libs/shared/src/ui/spinner/spinner.component.ts b/libs/shared/src/ui/atoms/spinner/spinner.component.ts similarity index 100% rename from libs/shared/src/ui/spinner/spinner.component.ts rename to libs/shared/src/ui/atoms/spinner/spinner.component.ts diff --git a/libs/shared/src/ui/spinner/spinner.stories.ts b/libs/shared/src/ui/atoms/spinner/spinner.stories.ts similarity index 100% rename from libs/shared/src/ui/spinner/spinner.stories.ts rename to libs/shared/src/ui/atoms/spinner/spinner.stories.ts diff --git a/libs/shared/src/ui/status-badge/status-badge.component.ts b/libs/shared/src/ui/atoms/status-badge/status-badge.component.ts similarity index 100% rename from libs/shared/src/ui/status-badge/status-badge.component.ts rename to libs/shared/src/ui/atoms/status-badge/status-badge.component.ts diff --git a/libs/shared/src/ui/status-badge/status-badge.stories.ts b/libs/shared/src/ui/atoms/status-badge/status-badge.stories.ts similarity index 100% rename from libs/shared/src/ui/status-badge/status-badge.stories.ts rename to libs/shared/src/ui/atoms/status-badge/status-badge.stories.ts diff --git a/libs/shared/src/ui/text-input/text-input.component.ts b/libs/shared/src/ui/atoms/text-input/text-input.component.ts similarity index 100% rename from libs/shared/src/ui/text-input/text-input.component.ts rename to libs/shared/src/ui/atoms/text-input/text-input.component.ts diff --git a/libs/shared/src/ui/text-input/text-input.stories.ts b/libs/shared/src/ui/atoms/text-input/text-input.stories.ts similarity index 100% rename from libs/shared/src/ui/text-input/text-input.stories.ts rename to libs/shared/src/ui/atoms/text-input/text-input.stories.ts diff --git a/libs/shared/src/ui/upload/delivery-channel-toggle/delivery-channel-toggle.component.ts b/libs/shared/src/ui/atoms/upload/delivery-channel-toggle/delivery-channel-toggle.component.ts similarity index 100% rename from libs/shared/src/ui/upload/delivery-channel-toggle/delivery-channel-toggle.component.ts rename to libs/shared/src/ui/atoms/upload/delivery-channel-toggle/delivery-channel-toggle.component.ts diff --git a/libs/shared/src/ui/upload/delivery-channel-toggle/delivery-channel-toggle.stories.ts b/libs/shared/src/ui/atoms/upload/delivery-channel-toggle/delivery-channel-toggle.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/delivery-channel-toggle/delivery-channel-toggle.stories.ts rename to libs/shared/src/ui/atoms/upload/delivery-channel-toggle/delivery-channel-toggle.stories.ts diff --git a/libs/shared/src/ui/upload/document-chip/document-chip.component.ts b/libs/shared/src/ui/atoms/upload/document-chip/document-chip.component.ts similarity index 100% rename from libs/shared/src/ui/upload/document-chip/document-chip.component.ts rename to libs/shared/src/ui/atoms/upload/document-chip/document-chip.component.ts diff --git a/libs/shared/src/ui/upload/document-chip/document-chip.stories.ts b/libs/shared/src/ui/atoms/upload/document-chip/document-chip.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/document-chip/document-chip.stories.ts rename to libs/shared/src/ui/atoms/upload/document-chip/document-chip.stories.ts diff --git a/libs/shared/src/ui/upload/file-input/file-input.component.ts b/libs/shared/src/ui/atoms/upload/file-input/file-input.component.ts similarity index 100% rename from libs/shared/src/ui/upload/file-input/file-input.component.ts rename to libs/shared/src/ui/atoms/upload/file-input/file-input.component.ts diff --git a/libs/shared/src/ui/upload/file-input/file-input.stories.ts b/libs/shared/src/ui/atoms/upload/file-input/file-input.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/file-input/file-input.stories.ts rename to libs/shared/src/ui/atoms/upload/file-input/file-input.stories.ts diff --git a/libs/shared/src/ui/upload/upload-progress-bar/upload-progress-bar.component.ts b/libs/shared/src/ui/atoms/upload/upload-progress-bar/upload-progress-bar.component.ts similarity index 100% rename from libs/shared/src/ui/upload/upload-progress-bar/upload-progress-bar.component.ts rename to libs/shared/src/ui/atoms/upload/upload-progress-bar/upload-progress-bar.component.ts diff --git a/libs/shared/src/ui/upload/upload-progress-bar/upload-progress-bar.stories.ts b/libs/shared/src/ui/atoms/upload/upload-progress-bar/upload-progress-bar.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/upload-progress-bar/upload-progress-bar.stories.ts rename to libs/shared/src/ui/atoms/upload/upload-progress-bar/upload-progress-bar.stories.ts diff --git a/libs/shared/src/ui/upload/upload-status-icon/upload-status-icon.component.ts b/libs/shared/src/ui/atoms/upload/upload-status-icon/upload-status-icon.component.ts similarity index 100% rename from libs/shared/src/ui/upload/upload-status-icon/upload-status-icon.component.ts rename to libs/shared/src/ui/atoms/upload/upload-status-icon/upload-status-icon.component.ts diff --git a/libs/shared/src/ui/upload/upload-status-icon/upload-status-icon.stories.ts b/libs/shared/src/ui/atoms/upload/upload-status-icon/upload-status-icon.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/upload-status-icon/upload-status-icon.stories.ts rename to libs/shared/src/ui/atoms/upload/upload-status-icon/upload-status-icon.stories.ts diff --git a/libs/shared/src/ui/application-link/application-link.component.ts b/libs/shared/src/ui/molecules/application-link/application-link.component.ts similarity index 100% rename from libs/shared/src/ui/application-link/application-link.component.ts rename to libs/shared/src/ui/molecules/application-link/application-link.component.ts diff --git a/libs/shared/src/ui/application-link/application-link.stories.ts b/libs/shared/src/ui/molecules/application-link/application-link.stories.ts similarity index 100% rename from libs/shared/src/ui/application-link/application-link.stories.ts rename to libs/shared/src/ui/molecules/application-link/application-link.stories.ts diff --git a/libs/shared/src/ui/application-list/application-list.component.ts b/libs/shared/src/ui/molecules/application-list/application-list.component.ts similarity index 100% rename from libs/shared/src/ui/application-list/application-list.component.ts rename to libs/shared/src/ui/molecules/application-list/application-list.component.ts diff --git a/libs/shared/src/ui/application-list/application-list.stories.ts b/libs/shared/src/ui/molecules/application-list/application-list.stories.ts similarity index 92% rename from libs/shared/src/ui/application-list/application-list.stories.ts rename to libs/shared/src/ui/molecules/application-list/application-list.stories.ts index 07fb06b..38ac43b 100644 --- a/libs/shared/src/ui/application-list/application-list.stories.ts +++ b/libs/shared/src/ui/molecules/application-list/application-list.stories.ts @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { applicationConfig, moduleMetadata } from '@storybook/angular'; import { provideRouter } from '@angular/router'; import { ApplicationListComponent } from './application-list.component'; -import { ApplicationLinkComponent } from '@shared/ui/application-link/application-link.component'; +import { ApplicationLinkComponent } from '@shared/ui/molecules/application-link/application-link.component'; const meta: Meta = { title: 'Design System/Molecules/Application List', diff --git a/libs/shared/src/ui/async/async.component.ts b/libs/shared/src/ui/molecules/async/async.component.ts similarity index 96% rename from libs/shared/src/ui/async/async.component.ts rename to libs/shared/src/ui/molecules/async/async.component.ts index 805279f..85db1c9 100644 --- a/libs/shared/src/ui/async/async.component.ts +++ b/libs/shared/src/ui/molecules/async/async.component.ts @@ -9,9 +9,9 @@ import { } from '@angular/core'; import { NgTemplateOutlet } from '@angular/common'; import type { Resource } from '@angular/core'; -import { SpinnerComponent } from '@shared/ui/spinner/spinner.component'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; -import { ButtonComponent } from '@shared/ui/button/button.component'; +import { SpinnerComponent } from '@shared/ui/atoms/spinner/spinner.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; +import { ButtonComponent } from '@shared/ui/atoms/button/button.component'; import { RemoteData, fromResource, foldRemote } from '@shared/application/remote-data'; /* Slot markers. Put on children of . Generic so the diff --git a/libs/shared/src/ui/async/async.stories.ts b/libs/shared/src/ui/molecules/async/async.stories.ts similarity index 95% rename from libs/shared/src/ui/async/async.stories.ts rename to libs/shared/src/ui/molecules/async/async.stories.ts index 81c5ba0..9eef36e 100644 --- a/libs/shared/src/ui/async/async.stories.ts +++ b/libs/shared/src/ui/molecules/async/async.stories.ts @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { moduleMetadata } from '@storybook/angular'; import type { Resource } from '@angular/core'; import { ASYNC } from './async.component'; -import { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component'; +import { SkeletonComponent } from '@shared/ui/atoms/skeleton/skeleton.component'; /** Minimal fake of a signal Resource so the wrapper can be driven through every state in isolation (no HTTP). */ diff --git a/libs/shared/src/ui/choice-link/choice-link.component.ts b/libs/shared/src/ui/molecules/choice-link/choice-link.component.ts similarity index 100% rename from libs/shared/src/ui/choice-link/choice-link.component.ts rename to libs/shared/src/ui/molecules/choice-link/choice-link.component.ts diff --git a/libs/shared/src/ui/choice-link/choice-link.stories.ts b/libs/shared/src/ui/molecules/choice-link/choice-link.stories.ts similarity index 100% rename from libs/shared/src/ui/choice-link/choice-link.stories.ts rename to libs/shared/src/ui/molecules/choice-link/choice-link.stories.ts diff --git a/libs/shared/src/ui/choice-list/choice-list.component.ts b/libs/shared/src/ui/molecules/choice-list/choice-list.component.ts similarity index 100% rename from libs/shared/src/ui/choice-list/choice-list.component.ts rename to libs/shared/src/ui/molecules/choice-list/choice-list.component.ts diff --git a/libs/shared/src/ui/choice-list/choice-list.stories.ts b/libs/shared/src/ui/molecules/choice-list/choice-list.stories.ts similarity index 93% rename from libs/shared/src/ui/choice-list/choice-list.stories.ts rename to libs/shared/src/ui/molecules/choice-list/choice-list.stories.ts index df9c7b7..e879e69 100644 --- a/libs/shared/src/ui/choice-list/choice-list.stories.ts +++ b/libs/shared/src/ui/molecules/choice-list/choice-list.stories.ts @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { applicationConfig, moduleMetadata } from '@storybook/angular'; import { provideRouter } from '@angular/router'; import { ChoiceListComponent } from './choice-list.component'; -import { ChoiceLinkComponent } from '@shared/ui/choice-link/choice-link.component'; +import { ChoiceLinkComponent } from '@shared/ui/molecules/choice-link/choice-link.component'; const meta: Meta = { title: 'Design System/Molecules/Choice List', diff --git a/libs/shared/src/ui/confirmation/confirmation.component.ts b/libs/shared/src/ui/molecules/confirmation/confirmation.component.ts similarity index 100% rename from libs/shared/src/ui/confirmation/confirmation.component.ts rename to libs/shared/src/ui/molecules/confirmation/confirmation.component.ts diff --git a/libs/shared/src/ui/confirmation/confirmation.stories.ts b/libs/shared/src/ui/molecules/confirmation/confirmation.stories.ts similarity index 100% rename from libs/shared/src/ui/confirmation/confirmation.stories.ts rename to libs/shared/src/ui/molecules/confirmation/confirmation.stories.ts diff --git a/libs/shared/src/ui/data-block/data-block.component.ts b/libs/shared/src/ui/molecules/data-block/data-block.component.ts similarity index 94% rename from libs/shared/src/ui/data-block/data-block.component.ts rename to libs/shared/src/ui/molecules/data-block/data-block.component.ts index 2bf5644..5efccd6 100644 --- a/libs/shared/src/ui/data-block/data-block.component.ts +++ b/libs/shared/src/ui/molecules/data-block/data-block.component.ts @@ -1,5 +1,5 @@ import { Component, input } from '@angular/core'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; /** Molecule: CIBG Huisstijl **Datablock** (designsystem.cibg.nl/componenten/datablock) — THE way to show user/application data. A grey `.data-block` surface holds a white diff --git a/libs/shared/src/ui/data-block/data-block.stories.ts b/libs/shared/src/ui/molecules/data-block/data-block.stories.ts similarity index 92% rename from libs/shared/src/ui/data-block/data-block.stories.ts rename to libs/shared/src/ui/molecules/data-block/data-block.stories.ts index cfa61f3..b76ae0c 100644 --- a/libs/shared/src/ui/data-block/data-block.stories.ts +++ b/libs/shared/src/ui/molecules/data-block/data-block.stories.ts @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { moduleMetadata } from '@storybook/angular'; import { DataBlockComponent } from './data-block.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; const meta: Meta = { title: 'Design System/Molecules/Data Block', diff --git a/libs/shared/src/ui/data-row/data-row.component.ts b/libs/shared/src/ui/molecules/data-row/data-row.component.ts similarity index 100% rename from libs/shared/src/ui/data-row/data-row.component.ts rename to libs/shared/src/ui/molecules/data-row/data-row.component.ts diff --git a/libs/shared/src/ui/data-row/data-row.stories.ts b/libs/shared/src/ui/molecules/data-row/data-row.stories.ts similarity index 100% rename from libs/shared/src/ui/data-row/data-row.stories.ts rename to libs/shared/src/ui/molecules/data-row/data-row.stories.ts diff --git a/libs/shared/src/ui/form-field/form-field.component.ts b/libs/shared/src/ui/molecules/form-field/form-field.component.ts similarity index 100% rename from libs/shared/src/ui/form-field/form-field.component.ts rename to libs/shared/src/ui/molecules/form-field/form-field.component.ts diff --git a/libs/shared/src/ui/form-field/form-field.stories.ts b/libs/shared/src/ui/molecules/form-field/form-field.stories.ts similarity index 96% rename from libs/shared/src/ui/form-field/form-field.stories.ts rename to libs/shared/src/ui/molecules/form-field/form-field.stories.ts index 4531ded..75aece6 100644 --- a/libs/shared/src/ui/form-field/form-field.stories.ts +++ b/libs/shared/src/ui/molecules/form-field/form-field.stories.ts @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { moduleMetadata } from '@storybook/angular'; import { expect, within } from 'storybook/test'; import { FormFieldComponent } from './form-field.component'; -import { TextInputComponent } from '@shared/ui/text-input/text-input.component'; +import { TextInputComponent } from '@shared/ui/atoms/text-input/text-input.component'; const meta: Meta = { title: 'Design System/Molecules/Form Field', diff --git a/libs/shared/src/ui/review-section/review-section.component.ts b/libs/shared/src/ui/molecules/review-section/review-section.component.ts similarity index 88% rename from libs/shared/src/ui/review-section/review-section.component.ts rename to libs/shared/src/ui/molecules/review-section/review-section.component.ts index 7cb4067..0f5e13c 100644 --- a/libs/shared/src/ui/review-section/review-section.component.ts +++ b/libs/shared/src/ui/molecules/review-section/review-section.component.ts @@ -1,6 +1,6 @@ import { Component, input, output } from '@angular/core'; -import { DataBlockComponent } from '@shared/ui/data-block/data-block.component'; -import { HeadingComponent } from '@shared/ui/heading/heading.component'; +import { DataBlockComponent } from '@shared/ui/molecules/data-block/data-block.component'; +import { HeadingComponent } from '@shared/ui/atoms/heading/heading.component'; /** Molecule: one section of a CIBG Huisstijl "controlestap" (wizard review step) — a heading with a "Wijzigen" link, and the section's ``s in a CIBG diff --git a/libs/shared/src/ui/review-section/review-section.stories.ts b/libs/shared/src/ui/molecules/review-section/review-section.stories.ts similarity index 92% rename from libs/shared/src/ui/review-section/review-section.stories.ts rename to libs/shared/src/ui/molecules/review-section/review-section.stories.ts index b10ae42..be7759b 100644 --- a/libs/shared/src/ui/review-section/review-section.stories.ts +++ b/libs/shared/src/ui/molecules/review-section/review-section.stories.ts @@ -1,7 +1,7 @@ import type { Meta, StoryObj } from '@storybook/angular'; import { moduleMetadata } from '@storybook/angular'; import { ReviewSectionComponent } from './review-section.component'; -import { DataRowComponent } from '@shared/ui/data-row/data-row.component'; +import { DataRowComponent } from '@shared/ui/molecules/data-row/data-row.component'; const meta: Meta = { title: 'Design System/Molecules/Review Section', diff --git a/libs/shared/src/ui/rich-text-editor/rich-text-dom.spec.ts b/libs/shared/src/ui/molecules/rich-text-editor/rich-text-dom.spec.ts similarity index 100% rename from libs/shared/src/ui/rich-text-editor/rich-text-dom.spec.ts rename to libs/shared/src/ui/molecules/rich-text-editor/rich-text-dom.spec.ts diff --git a/libs/shared/src/ui/rich-text-editor/rich-text-dom.ts b/libs/shared/src/ui/molecules/rich-text-editor/rich-text-dom.ts similarity index 100% rename from libs/shared/src/ui/rich-text-editor/rich-text-dom.ts rename to libs/shared/src/ui/molecules/rich-text-editor/rich-text-dom.ts diff --git a/libs/shared/src/ui/rich-text-editor/rich-text-editor.component.ts b/libs/shared/src/ui/molecules/rich-text-editor/rich-text-editor.component.ts similarity index 100% rename from libs/shared/src/ui/rich-text-editor/rich-text-editor.component.ts rename to libs/shared/src/ui/molecules/rich-text-editor/rich-text-editor.component.ts diff --git a/libs/shared/src/ui/rich-text-editor/rich-text-editor.stories.ts b/libs/shared/src/ui/molecules/rich-text-editor/rich-text-editor.stories.ts similarity index 100% rename from libs/shared/src/ui/rich-text-editor/rich-text-editor.stories.ts rename to libs/shared/src/ui/molecules/rich-text-editor/rich-text-editor.stories.ts diff --git a/libs/shared/src/ui/stepper/stepper.component.ts b/libs/shared/src/ui/molecules/stepper/stepper.component.ts similarity index 100% rename from libs/shared/src/ui/stepper/stepper.component.ts rename to libs/shared/src/ui/molecules/stepper/stepper.component.ts diff --git a/libs/shared/src/ui/stepper/stepper.stories.ts b/libs/shared/src/ui/molecules/stepper/stepper.stories.ts similarity index 100% rename from libs/shared/src/ui/stepper/stepper.stories.ts rename to libs/shared/src/ui/molecules/stepper/stepper.stories.ts diff --git a/libs/shared/src/ui/task-list/task-list.component.ts b/libs/shared/src/ui/molecules/task-list/task-list.component.ts similarity index 86% rename from libs/shared/src/ui/task-list/task-list.component.ts rename to libs/shared/src/ui/molecules/task-list/task-list.component.ts index b49b580..14d9348 100644 --- a/libs/shared/src/ui/task-list/task-list.component.ts +++ b/libs/shared/src/ui/molecules/task-list/task-list.component.ts @@ -1,6 +1,6 @@ import { Component, input } from '@angular/core'; -import { ChoiceListComponent } from '@shared/ui/choice-list/choice-list.component'; -import { ChoiceLinkComponent } from '@shared/ui/choice-link/choice-link.component'; +import { ChoiceListComponent } from '@shared/ui/molecules/choice-list/choice-list.component'; +import { ChoiceLinkComponent } from '@shared/ui/molecules/choice-link/choice-link.component'; /** Presentational task shape — what "Wat moet ik regelen" renders. Domain-free so shared/ stays independent of any context (a context's task type that has these diff --git a/libs/shared/src/ui/task-list/task-list.stories.ts b/libs/shared/src/ui/molecules/task-list/task-list.stories.ts similarity index 100% rename from libs/shared/src/ui/task-list/task-list.stories.ts rename to libs/shared/src/ui/molecules/task-list/task-list.stories.ts diff --git a/libs/shared/src/ui/upload/single-upload/single-upload.component.ts b/libs/shared/src/ui/molecules/upload/single-upload/single-upload.component.ts similarity index 93% rename from libs/shared/src/ui/upload/single-upload/single-upload.component.ts rename to libs/shared/src/ui/molecules/upload/single-upload/single-upload.component.ts index 6fdda98..75c07a4 100644 --- a/libs/shared/src/ui/upload/single-upload/single-upload.component.ts +++ b/libs/shared/src/ui/molecules/upload/single-upload/single-upload.component.ts @@ -1,7 +1,7 @@ import { Component, computed, input, output } from '@angular/core'; import type { Upload } from '@shared/domain/upload.machine'; -import { DocumentChipComponent } from '../document-chip/document-chip.component'; -import { UploadProgressBarComponent } from '../upload-progress-bar/upload-progress-bar.component'; +import { DocumentChipComponent } from '@shared/ui/atoms/upload/document-chip/document-chip.component'; +import { UploadProgressBarComponent } from '@shared/ui/atoms/upload/upload-progress-bar/upload-progress-bar.component'; /** Molecule: one row in a CIBG Bestand-upload file list — a `.file-container` `
  • ` with the `.file` block (via document-chip), the `.actions` (retry/remove), and a diff --git a/libs/shared/src/ui/upload/single-upload/single-upload.stories.ts b/libs/shared/src/ui/molecules/upload/single-upload/single-upload.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/single-upload/single-upload.stories.ts rename to libs/shared/src/ui/molecules/upload/single-upload/single-upload.stories.ts diff --git a/libs/shared/src/ui/upload/document-category/document-category.component.ts b/libs/shared/src/ui/organisms/upload/document-category/document-category.component.ts similarity index 91% rename from libs/shared/src/ui/upload/document-category/document-category.component.ts rename to libs/shared/src/ui/organisms/upload/document-category/document-category.component.ts index 6540530..4cc2b05 100644 --- a/libs/shared/src/ui/upload/document-category/document-category.component.ts +++ b/libs/shared/src/ui/organisms/upload/document-category/document-category.component.ts @@ -1,8 +1,8 @@ import { Component, computed, input, output } from '@angular/core'; import type { DeliveryChannel, DocumentCategory, Upload } from '@shared/domain/upload.machine'; -import { DeliveryChannelToggleComponent } from '../delivery-channel-toggle/delivery-channel-toggle.component'; -import { FileInputComponent } from '../file-input/file-input.component'; -import { SingleUploadComponent } from '../single-upload/single-upload.component'; +import { DeliveryChannelToggleComponent } from '@shared/ui/atoms/upload/delivery-channel-toggle/delivery-channel-toggle.component'; +import { FileInputComponent } from '@shared/ui/atoms/upload/file-input/file-input.component'; +import { SingleUploadComponent } from '@shared/ui/molecules/upload/single-upload/single-upload.component'; /** Organism: one document category (CIBG Bestand-upload) — its label/description, an optional delivery channel toggle, and (when digital) a validation message, the diff --git a/libs/shared/src/ui/upload/document-category/document-category.stories.ts b/libs/shared/src/ui/organisms/upload/document-category/document-category.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/document-category/document-category.stories.ts rename to libs/shared/src/ui/organisms/upload/document-category/document-category.stories.ts diff --git a/libs/shared/src/ui/upload/document-upload/document-upload.component.ts b/libs/shared/src/ui/organisms/upload/document-upload/document-upload.component.ts similarity index 97% rename from libs/shared/src/ui/upload/document-upload/document-upload.component.ts rename to libs/shared/src/ui/organisms/upload/document-upload/document-upload.component.ts index eb024f1..db26ebb 100644 --- a/libs/shared/src/ui/upload/document-upload/document-upload.component.ts +++ b/libs/shared/src/ui/organisms/upload/document-upload/document-upload.component.ts @@ -1,6 +1,6 @@ import { Component, input, output } from '@angular/core'; import type { DeliveryChannel, UploadState } from '@shared/domain/upload.machine'; -import { AlertComponent } from '@shared/ui/alert/alert.component'; +import { AlertComponent } from '@shared/ui/atoms/alert/alert.component'; import { DocumentCategoryComponent } from '../document-category/document-category.component'; /** Organism: the full document-upload step — the category list, or a load-error diff --git a/libs/shared/src/ui/upload/document-upload/document-upload.stories.ts b/libs/shared/src/ui/organisms/upload/document-upload/document-upload.stories.ts similarity index 100% rename from libs/shared/src/ui/upload/document-upload/document-upload.stories.ts rename to libs/shared/src/ui/organisms/upload/document-upload/document-upload.stories.ts