@smartsoft001-mobilems/claude-plugins 2.115.0 → 2.116.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/plugins/mobilems/.claude-plugin/plugin.json +1 -1
- package/plugins/mobilems/skills/mobilems-object-collections/SKILL.md +1 -1
- package/plugins/mobilems/skills/mobilems-object-collections/references/shared-components.md +5 -0
- package/plugins/mobilems/skills/mobilems-objects/SKILL.md +1 -1
- package/plugins/mobilems/skills/mobilems-objects/references/shared-components.md +8 -0
- package/plugins/mobilems/skills/mobilems-project-init/references/shared-lib.md +22 -10
package/package.json
CHANGED
|
@@ -66,7 +66,7 @@ README) — never a per-module copy. `scripts/verify-module.sh` fails the run on
|
|
|
66
66
|
`kolekcje` route to `appRoutes` in `apps/web/src/app/app.routes.ts` and a matching child under the
|
|
67
67
|
`wyszukaj/:text` search route.
|
|
68
68
|
4. **Collections shared component** — see `references/shared-components.md`: build
|
|
69
|
-
`components/collections-grid-item` (it imports `public-collections-domain`) in the shared lib and
|
|
69
|
+
`components/collections-grid-item` (it imports `public-collections-domain`) in the shared lib (a component that `extends CollectionsGridItemBaseComponent` with the app's own markup) and
|
|
70
70
|
export it from `components/index.ts`. Collections contributes no widget-map entry and no model type
|
|
71
71
|
(those are objects-only).
|
|
72
72
|
5. **Translations** — copy the module's translation groups (`COLLECTIONS`) from the reference
|
|
@@ -21,6 +21,11 @@ Build this component directory and export it from `components/index.ts`:
|
|
|
21
21
|
export * from './collections-grid-item';
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
+
`CollectionsGridItemComponent` extends `CollectionsGridItemBaseComponent` (the list row, where the
|
|
25
|
+
museum has one, extends `CollectionCardBaseComponent`): the framework holds the logic, the museum
|
|
26
|
+
keeps its own template and styles, and the domain stores stay in the museum, reached through hooks.
|
|
27
|
+
Do not copy the reference's card logic.
|
|
28
|
+
|
|
24
29
|
`collections-grid-item` carries its own `index.ts`
|
|
25
30
|
(`export * from './collections-grid-item.component';`) plus the `.component.ts` + `.component.html`.
|
|
26
31
|
Build the whole dir from the reference and thread `<PREFIX>`.
|
|
@@ -66,7 +66,7 @@ README) — never a per-module copy. `scripts/verify-module.sh` fails the run on
|
|
|
66
66
|
with the `Masonry` SSR factory. Add the lazy `obiekty` route to `appRoutes` in
|
|
67
67
|
`apps/web/src/app/app.routes.ts` and a matching child under the `wyszukaj/:text` search route.
|
|
68
68
|
4. **Objects shared components** — see `references/shared-components.md`: build `objects-grid-item`,
|
|
69
|
-
`objects-list-item`, and the object gallery widget (`widget/gallery-object`) in the shared lib +
|
|
69
|
+
`objects-list-item` (each `extends` the framework `Objects…ItemBaseComponent`, with the app's own markup), and the object gallery widget (`widget/gallery-object`) in the shared lib +
|
|
70
70
|
export them; and register the object gallery widget in the widget content-type map (`GALLERY_OBJECT`).
|
|
71
71
|
`ISpecificObject` and the filter models come from `@smartsoft001-mobilems/objects-shell-angular`.
|
|
72
72
|
5. **Translations** — copy the module's translation groups (`OBJECTS`, `DETAILS_PAGE`, `GALLERY`) from the reference
|
|
@@ -16,6 +16,14 @@ Build these component directories and export them from `components/index.ts`:
|
|
|
16
16
|
| `components/objects-grid-item` | an object card in the grid view |
|
|
17
17
|
| `components/objects-list-item` | an object row in the list view |
|
|
18
18
|
|
|
19
|
+
Both are **logic-free shells over framework bases**: `ObjectsGridItemComponent extends
|
|
20
|
+
ObjectsGridItemBaseComponent` and `ObjectsListItemComponent extends ObjectsListItemBaseComponent`
|
|
21
|
+
(both build on `ObjectCardBaseComponent`; field helpers `objectCardMeta`/`objectCardPlace`/
|
|
22
|
+
`objectCardExhibition` come from the framework). Do not copy the reference's card logic. The museum
|
|
23
|
+
keeps its own template and styles; the favorites and selection stores stay in the museum and reach
|
|
24
|
+
the base through its hooks (`FavoriteButtonBaseComponent`/`IFavoriteHooks`,
|
|
25
|
+
`SelectionActionsBaseComponent`).
|
|
26
|
+
|
|
19
27
|
```ts
|
|
20
28
|
// components/index.ts — these exports belong to the objects module:
|
|
21
29
|
export * from './objects-grid-item';
|
|
@@ -50,6 +50,18 @@ FEATURE-OWNED. A typical FEATURE-OWNED set (confirm with the classifier on your
|
|
|
50
50
|
| `news-grid-item`, `news-list-item` | `mobilems-articles` (news) |
|
|
51
51
|
| `widget/gallery-article` | `mobilems-articles` |
|
|
52
52
|
|
|
53
|
+
The feature-owned cards are still generated by their module skill, but as `extends`
|
|
54
|
+
`ObjectsGridItemBaseComponent` / `ObjectsListItemBaseComponent` (objects) and
|
|
55
|
+
`CollectionsGridItemBaseComponent` (collections; the list row extends `CollectionCardBaseComponent`),
|
|
56
|
+
not as copies of the reference logic. The museum keeps its own template and styles, and the domain
|
|
57
|
+
stores (favorites, selection, downloads, recommended items) stay in the museum and reach the base
|
|
58
|
+
through its hooks (`IFavoriteHooks`, `ISelectionActionsFavorites`, `IRecommendedSources`, the abstract `downloadCardsExport`).
|
|
59
|
+
|
|
60
|
+
The same applies to the foundation shared components `favorite-button`, `favorites-notice`,
|
|
61
|
+
`selection-actions`, `download-cards` and `recommended`: extend `FavoriteButtonBaseComponent`,
|
|
62
|
+
`FavoritesNoticeBaseComponent`, `SelectionActionsBaseComponent`, `DownloadCardsBaseComponent` and
|
|
63
|
+
`RecommendedBaseComponent`, write the markup yourself and wire the museum store through the hooks.
|
|
64
|
+
|
|
53
65
|
Build everything else — `header`, `footer`, `page`, the `filter*` family, `breadcrumbs`,
|
|
54
66
|
`pagination`, `searchbar`, `loader`, `error-retry`, `scroll-top`, `wcag`, `gallery`,
|
|
55
67
|
`map`, `slider`, `carousel`, the three carousels above, `category-dropdown`, `dropdown`, `menu-item`,
|
|
@@ -117,16 +129,16 @@ files duplicate exports that now exist; copying those is the single most common
|
|
|
117
129
|
|
|
118
130
|
Framework now — do **not** generate (import from `@smartsoft001-mobilems/angular`):
|
|
119
131
|
|
|
120
|
-
| Kind | Framework exports
|
|
121
|
-
| ------------ |
|
|
122
|
-
| environment | `createMobilemsEnvironment`, `MOBILEMS_ENVIRONMENT`, `EnvironmentService`
|
|
123
|
-
| pipes | `altText`, `fileUrl`, `backgroundUrl`, `plainText`, `stripAnchors`, `capitalize`
|
|
124
|
-
| tools | `classifyLink`, `isInternalLink`, `normalizeUrl`, `stripHtml`, `formatNamedEntries`, `normalizeSearchText`, `newTabText`, `pageToOffset`, `decodeHtmlEntities`, `ElementIdSequence`, `createSafeTimeouts`, `photoFileName`/`urlExtension`, `widgetImageUrl`, `overflowingTags`, `themeTagKey`, `themeTagsLayout`, `THEME_TAGS_VISIBLE_LIMIT`, `resolveMenuItemTarget`, `isNavigableMenuItem` (+ `MenuItemTarget`)
|
|
125
|
-
| directives | `a[smartExternalLink]`, `[smartExternalLinks]`, `[smartFocusTrap]`, `[smartTruncatedTitle]`, `[smartInPageAnchors]` (`InPageAnchorsDirective`; references use `app…` — rename the attributes)
|
|
126
|
-
| services | `ConfirmationModalService`, `ExternalLinkConfirmationService`, `FilterPersistenceService`, `OrientationService`, `WcagChangesService`, `LineHeightService`, `BreadcrumbsService`, `ContactService`, `DataService`, `MuseumSeoService`
|
|
127
|
-
| interceptors | `LanguageInterceptor`, `PreviewAuthInterceptor`, `SsrTimeoutInterceptor`, `DedupeRequestInterceptor`
|
|
128
|
-
| bases | `CalendarBaseComponent`, `PaginationDotsBaseComponent`, `PaginationBaseComponent`, `CarouselBaseComponent`, `PartnersCarouselBaseComponent`, `NewObjectsCarouselBaseComponent`, `ArticlesCarouselBaseComponent`, `SliderBaseComponent` (+ `ISliderOptions`; `ScrollTopComponent` is server-guarded), `GalleryBaseComponent`, `GalleryFullscreenDialogBaseComponent` (`GalleryFullscreenBaseComponent` is `@deprecated`), `ConfirmationModalBaseComponent`, `NewsletterModalBaseComponent`, `MapBaseComponent`, `FilterInputBaseComponent`, `FilterDateInputBaseComponent`, `FilterCustomDictionaryInputBaseComponent`, `FilterDictionaryInputBaseComponent` (inline tree, `source`, paging), `ThemeTagsFilterBaseComponent`, `CatalogFilterBarBaseComponent`, `CatalogToolbarBaseComponent`, `SearchbarBaseComponent`, `SelectCheckboxBaseComponent` (+ `ISelectionHooks`), `DropdownBaseComponent`, `TabsBaseComponent`, `WcagBaseComponent` (+ `WCAG_OPTION_GROUPS`), `BreadcrumbsBaseComponent`, `BreadcrumbsBarBaseComponent`, `MenuItemBaseComponent` |
|
|
129
|
-
| SSR tools | `injectServerResponseInit`, `appendPreloadLinks` (image preload `Link` headers)
|
|
132
|
+
| Kind | Framework exports |
|
|
133
|
+
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
134
|
+
| environment | `createMobilemsEnvironment`, `MOBILEMS_ENVIRONMENT`, `EnvironmentService` |
|
|
135
|
+
| pipes | `altText`, `fileUrl`, `backgroundUrl`, `plainText`, `stripAnchors`, `capitalize` |
|
|
136
|
+
| tools | `classifyLink`, `isInternalLink`, `normalizeUrl`, `stripHtml`, `formatNamedEntries`, `normalizeSearchText`, `newTabText`, `pageToOffset`, `decodeHtmlEntities`, `ElementIdSequence`, `createSafeTimeouts`, `photoFileName`/`urlExtension`, `widgetImageUrl`, `overflowingTags`, `themeTagKey`, `themeTagsLayout`, `THEME_TAGS_VISIBLE_LIMIT`, `resolveMenuItemTarget`, `isNavigableMenuItem` (+ `MenuItemTarget`), `objectCardMeta`/`objectCardPlace`/`objectCardExhibition`/`exhibitionText` (+ `IObjectCardSource`), `SERIES_TITLES_FILTER`, `catalogEntryFilterParams` (the named-entries filter query params), `recommendedPerPage` |
|
|
137
|
+
| directives | `a[smartExternalLink]`, `[smartExternalLinks]`, `[smartFocusTrap]`, `[smartTruncatedTitle]`, `[smartInPageAnchors]` (`InPageAnchorsDirective`; references use `app…` — rename the attributes) |
|
|
138
|
+
| services | `ConfirmationModalService`, `ExternalLinkConfirmationService`, `FilterPersistenceService`, `OrientationService`, `WcagChangesService`, `LineHeightService`, `BreadcrumbsService`, `ContactService`, `DataService`, `MuseumSeoService` |
|
|
139
|
+
| interceptors | `LanguageInterceptor`, `PreviewAuthInterceptor`, `SsrTimeoutInterceptor`, `DedupeRequestInterceptor` |
|
|
140
|
+
| bases | `CalendarBaseComponent`, `PaginationDotsBaseComponent`, `PaginationBaseComponent`, `CarouselBaseComponent`, `PartnersCarouselBaseComponent`, `NewObjectsCarouselBaseComponent`, `ArticlesCarouselBaseComponent`, `SliderBaseComponent` (+ `ISliderOptions`; `ScrollTopComponent` is server-guarded), `GalleryBaseComponent`, `GalleryFullscreenDialogBaseComponent` (`GalleryFullscreenBaseComponent` is `@deprecated`), `ConfirmationModalBaseComponent`, `NewsletterModalBaseComponent`, `MapBaseComponent`, `FilterInputBaseComponent`, `FilterDateInputBaseComponent`, `FilterCustomDictionaryInputBaseComponent`, `FilterDictionaryInputBaseComponent` (inline tree, `source`, paging), `ThemeTagsFilterBaseComponent`, `CatalogFilterBarBaseComponent`, `CatalogToolbarBaseComponent`, `SearchbarBaseComponent`, `SelectCheckboxBaseComponent` (+ `ISelectionHooks`), `DropdownBaseComponent`, `TabsBaseComponent`, `WcagBaseComponent` (+ `WCAG_OPTION_GROUPS`), `BreadcrumbsBaseComponent`, `BreadcrumbsBarBaseComponent`, `MenuItemBaseComponent`, `ObjectCardBaseComponent`, `ObjectsGridItemBaseComponent`, `ObjectsListItemBaseComponent`, `CollectionCardBaseComponent`, `CollectionsGridItemBaseComponent`, `FavoriteButtonBaseComponent` (+ `IFavoriteHooks`, `IFavoriteRef`), `FavoritesNoticeBaseComponent`, `SelectionActionsBaseComponent`, `DownloadCardsBaseComponent`, `RecommendedBaseComponent` |
|
|
141
|
+
| SSR tools | `injectServerResponseInit`, `appendPreloadLinks` (image preload `Link` headers) |
|
|
130
142
|
|
|
131
143
|
What stays in the app lib: the **template and styles** of every base above — the museum keeps its
|
|
132
144
|
own HTML and Tailwind classes (the filter inputs, searchbar, catalog toolbar and filter bar, theme tags and select
|