@jskit-ai/agent-docs 0.1.273 → 0.1.275
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/guide/agent/app-extras/assistant-conversation.md +7 -1
- package/guide/agent/app-extras/assistant-voice.md +5 -1
- package/guide/agent/app-setup/material-3-migration.md +180 -0
- package/guide/agent/app-setup/upgrading-jskit.md +5 -0
- package/guide/agent/framework/material-3.md +316 -73
- package/guide/agent/framework/ui-operations.md +18 -35
- package/guide/agent/framework/ui-pass.md +155 -0
- package/guide/agent/index.md +3 -0
- package/package.json +1 -1
- package/patterns/feature-package/example/booking-engine/package.json +1 -1
- package/patterns/minimal-foundation/example/package.json +5 -4
- package/patterns/minimal-foundation/example/src/main.js +5 -11
- package/patterns/minimal-foundation/example/src/pages/home/index.vue +5 -18
- package/patterns/minimal-foundation/example/src/theme/index.js +9 -0
- package/patterns/minimal-foundation/example/src/views/NotFound.vue +5 -4
- package/patterns/shell-foundation/example/package.json +6 -6
- package/patterns/shell-foundation/example/packages/main/package.json +1 -1
- package/patterns/shell-foundation/example/src/main.js +5 -11
- package/patterns/shell-foundation/example/src/pages/home/index.vue +21 -57
- package/patterns/shell-foundation/example/src/pages/home/settings/general/index.vue +24 -19
- package/patterns/shell-foundation/example/src/pages/home/settings.vue +27 -84
- package/patterns/shell-foundation/example/src/theme/index.js +9 -0
- package/patterns/shell-foundation/example/src/views/NotFound.vue +9 -7
- package/reference/autogen/PATTERN_INDEX.md +37 -37
- package/reference/autogen/README.md +1 -0
- package/reference/autogen/packages/agent-docs.md +8 -4
- package/reference/autogen/packages/assistant-core.md +3 -0
- package/reference/autogen/packages/console-web.md +5 -0
- package/reference/autogen/packages/http-web.md +29 -2
- package/reference/autogen/packages/kernel.md +2 -1
- package/reference/autogen/packages/material-web.md +54 -0
- package/reference/autogen/packages/shell-web.md +121 -9
- package/reference/autogen/tooling/jskit-catalog.md +81 -0
- package/reference/autogen/tooling/testUtils.md +7 -0
- package/skills/jskit/SKILL.md +11 -6
- package/skills/jskit/references/heuristics/INDEX.md +1 -1
- package/skills/jskit/references/heuristics/ui-contract.md +10 -7
- package/skills/jskit/references/heuristics/ui-testing.md +5 -3
- package/skills/jskit/references/material-3.md +315 -72
- package/skills/jskit/references/pattern-index.md +37 -37
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +5 -4
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/main.js +5 -11
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/pages/home/index.vue +5 -18
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/theme/index.js +9 -0
- package/skills/jskit/references/patterns/app/minimal-foundation/example/src/views/NotFound.vue +5 -4
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +6 -6
- package/skills/jskit/references/patterns/app/shell-foundation/example/packages/main/package.json +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/main.js +5 -11
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/index.vue +21 -57
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings/general/index.vue +24 -19
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings.vue +27 -84
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/theme/index.js +9 -0
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/views/NotFound.vue +9 -7
- package/skills/jskit/references/patterns/assistant/assistant-surface/example/src/placement.js +1 -1
- package/skills/jskit/references/patterns/auth/accounts-hub/example/package.json +2 -2
- package/skills/jskit/references/patterns/auth/oidc-sign-in/example/package.json +2 -2
- package/skills/jskit/references/patterns/auth/supabase-auth/example/package.json +1 -1
- package/skills/jskit/references/patterns/connectors/calendar-cli/example/package.json +4 -4
- package/skills/jskit/references/patterns/console/console-surface/PATTERN.md +4 -2
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/index.vue +10 -40
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/settings/index.vue +3 -11
- package/skills/jskit/references/patterns/console/console-surface/example/src/pages/console/settings.vue +24 -72
- package/skills/jskit/references/patterns/console/console-surface/example/src/placement.js +28 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/PATTERN.md +13 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookEditPage.vue +2 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookFormFields.vue +0 -6
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookListPage.vue +5 -2
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookNewPage.vue +2 -0
- package/skills/jskit/references/patterns/crud/crud-screen-set/example/books/BookViewPage.vue +5 -9
- package/skills/jskit/references/patterns/crud/json-api-resource-package/example/packages/books/package.json +2 -2
- package/skills/jskit/references/patterns/database/mysql-application/example/package.json +1 -1
- package/skills/jskit/references/patterns/database/postgres-application/example/package.json +1 -1
- package/skills/jskit/references/patterns/realtime/realtime-application/example/package.json +2 -2
- package/skills/jskit/references/patterns/server/feature-package/example/booking-engine/package.json +1 -1
- package/skills/jskit/references/patterns/shell/application-shell/PATTERN.md +3 -1
- package/skills/jskit/references/patterns/shell/application-shell/example/expected-existing/src/pages/home/index.vue +5 -18
- package/skills/jskit/references/patterns/shell/application-shell/example/expected-existing/src/views/NotFound.vue +14 -0
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/index.vue +21 -57
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings/general/index.vue +24 -19
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings.vue +27 -84
- package/skills/jskit/references/patterns/shell/application-shell/example/src/views/NotFound.vue +15 -0
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/components/SyncStatusElement.vue +2 -2
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/activity.vue +1 -1
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports/overview.vue +1 -1
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/pages/home/reports.vue +6 -3
- package/skills/jskit/references/patterns/ui/page-and-placement/example/src/placement.js +1 -1
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsNotificationsSection.vue +2 -8
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsPreferencesSection.vue +2 -8
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsProfileSection.vue +5 -11
- package/skills/jskit/references/patterns/users/account-settings/example/src/components/account/settings/AccountSettingsSignInMethodsSection.vue +3 -9
- package/skills/jskit/references/patterns/users/account-settings/example/src/pages/account/index.vue +7 -0
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users/package.json +2 -2
- package/skills/jskit/references/patterns/users/user-administration-server/example/packages/users-workspace/package.json +3 -3
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/packages/main/src/client/components/AccountPendingInvitesCue.vue +1 -2
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/components/WorkspaceNotFoundCard.vue +5 -6
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/workspace/settings/index.vue +5 -12
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/pages/admin/workspace/settings.vue +24 -72
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/admin/index.vue +3 -4
- package/skills/jskit/references/patterns/workspaces/workspace-surfaces/example/src/surfaces/app/index.vue +3 -3
- package/skills/jskit/references/ui-operations.md +18 -35
- package/skills/jskit/references/ui-pass.md +150 -0
- package/patterns/shell-foundation/example/src/pages/home/settings/index.vue +0 -7
- package/skills/jskit/references/patterns/app/shell-foundation/example/src/pages/home/settings/index.vue +0 -7
- package/skills/jskit/references/patterns/shell/application-shell/example/src/pages/home/settings/index.vue +0 -7
|
@@ -80,12 +80,25 @@ Exports
|
|
|
80
80
|
### `src/client/components/ShellLayout.vue`
|
|
81
81
|
Exports
|
|
82
82
|
- None
|
|
83
|
+
Local functions
|
|
84
|
+
- `updateScrolled()`
|
|
85
|
+
- `goUp()`
|
|
86
|
+
|
|
87
|
+
### `src/client/components/ShellListDetail.vue`
|
|
88
|
+
Exports
|
|
89
|
+
- None
|
|
90
|
+
Local functions
|
|
91
|
+
- `releasePane()`
|
|
83
92
|
|
|
84
93
|
### `src/client/components/ShellMenuLinkItem.vue`
|
|
85
94
|
Exports
|
|
86
95
|
- None
|
|
87
96
|
|
|
88
|
-
### `src/client/components/
|
|
97
|
+
### `src/client/components/ShellNavigationItem.vue`
|
|
98
|
+
Exports
|
|
99
|
+
- None
|
|
100
|
+
|
|
101
|
+
### `src/client/components/ShellNavigationScope.vue`
|
|
89
102
|
Exports
|
|
90
103
|
- None
|
|
91
104
|
|
|
@@ -100,6 +113,16 @@ Local functions
|
|
|
100
113
|
Exports
|
|
101
114
|
- None
|
|
102
115
|
|
|
116
|
+
### `src/client/components/ShellPageAction.vue`
|
|
117
|
+
Exports
|
|
118
|
+
- None
|
|
119
|
+
Local functions
|
|
120
|
+
- `handleClick(event)`
|
|
121
|
+
|
|
122
|
+
### `src/client/components/ShellPageActions.vue`
|
|
123
|
+
Exports
|
|
124
|
+
- None
|
|
125
|
+
|
|
103
126
|
### `src/client/components/ShellRouteTransition.vue`
|
|
104
127
|
Exports
|
|
105
128
|
- None
|
|
@@ -120,7 +143,7 @@ Exports
|
|
|
120
143
|
|
|
121
144
|
### `src/client/composables/useShellDrawer.js`
|
|
122
145
|
Exports
|
|
123
|
-
- `useShellDrawer({ props,
|
|
146
|
+
- `useShellDrawer({ props, modalLayout, viewportWidth, navigationToggle, layoutState })`
|
|
124
147
|
Local functions
|
|
125
148
|
- `navigationDrawerElement()`
|
|
126
149
|
|
|
@@ -142,6 +165,10 @@ Exports
|
|
|
142
165
|
- `shellNavigationLinkProps`
|
|
143
166
|
- `useShellNavigationLink(props)`
|
|
144
167
|
|
|
168
|
+
### `src/client/composables/useShellPageTitle.js`
|
|
169
|
+
Exports
|
|
170
|
+
- `useShellPageTitle(title)`
|
|
171
|
+
|
|
145
172
|
### `src/client/composables/useShellPullToRefresh.js`
|
|
146
173
|
Exports
|
|
147
174
|
- `useShellPullToRefresh({ enabled, refreshRuntime })`
|
|
@@ -152,6 +179,10 @@ Local functions
|
|
|
152
179
|
Exports
|
|
153
180
|
- `useShellRouteTransition(props)`
|
|
154
181
|
|
|
182
|
+
### `src/client/composables/useShellWindowSizeClass.js`
|
|
183
|
+
Exports
|
|
184
|
+
- `useShellWindowSizeClass()`
|
|
185
|
+
|
|
155
186
|
### `src/client/error/index.js`
|
|
156
187
|
Exports
|
|
157
188
|
- `createDefaultErrorPolicy`
|
|
@@ -244,7 +275,15 @@ Exports
|
|
|
244
275
|
- `ShellMenuLinkItem`
|
|
245
276
|
- `ShellSurfaceAwareMenuLinkItem`
|
|
246
277
|
- `ShellTabLinkItem`
|
|
278
|
+
- `ShellPageActions`
|
|
279
|
+
- `ShellPageAction`
|
|
280
|
+
- `ShellListDetail`
|
|
247
281
|
- `useShellLayoutState`
|
|
282
|
+
- `useShellPageTitle`
|
|
283
|
+
- `useShellWindowSizeClass`
|
|
284
|
+
- `useShellNavigation`
|
|
285
|
+
- `leaveApp`
|
|
286
|
+
- `reloadAppPage`
|
|
248
287
|
- `useShellLayoutStore`
|
|
249
288
|
- `useShellErrorPresentationStore`
|
|
250
289
|
- `SHELL_ASYNC_MODULE_RECOVERY_RUNTIME_KEY`
|
|
@@ -265,6 +304,11 @@ Local functions
|
|
|
265
304
|
- `normalizePathname(value = "")`
|
|
266
305
|
- `resolveSurfaceSwitchIdFromLabel(label = "")`
|
|
267
306
|
|
|
307
|
+
### `src/client/navigation/documentNavigation.js`
|
|
308
|
+
Exports
|
|
309
|
+
- `leaveApp(url)`
|
|
310
|
+
- `reloadAppPage(target)`
|
|
311
|
+
|
|
268
312
|
### `src/client/navigation/linkResolver.js`
|
|
269
313
|
Exports
|
|
270
314
|
- `resolveShellLinkPath({ context = null, surface = "", explicitTo = "", relativePath = "/", surfaceRelativePath = "", params = {}, strictParams = true } = {})`
|
|
@@ -273,6 +317,18 @@ Local functions
|
|
|
273
317
|
- `materializeSurfaceRouteBase(routeBaseTemplate = "/", { params = {}, strictParams = true, surface = "" } = {})`
|
|
274
318
|
- `resolveSurfaceBasePath(context = null, surface = "", { params = {}, strictParams = true } = {})`
|
|
275
319
|
|
|
320
|
+
### `src/client/navigation/shellNavigationRuntime.js`
|
|
321
|
+
Exports
|
|
322
|
+
- `PAGE_TITLE_ID`
|
|
323
|
+
- `SHELL_NAVIGATION_RUNTIME_KEY`
|
|
324
|
+
- `TRAIL_STATE_KEY`
|
|
325
|
+
- `createShellNavigationRuntime({ router })`
|
|
326
|
+
- `resolvePageParent(matched)`
|
|
327
|
+
- `resolvePageTitle(matched)`
|
|
328
|
+
Local functions
|
|
329
|
+
- `normalizeTrail(value)`
|
|
330
|
+
- `cssAttributeValue(value)`
|
|
331
|
+
|
|
276
332
|
### `src/client/navigation/usePaths.js`
|
|
277
333
|
Exports
|
|
278
334
|
- `usePaths({ routeContext = useSurfaceRouteContext() } = {})`
|
|
@@ -282,6 +338,15 @@ Local functions
|
|
|
282
338
|
- `resolveDefaultSurfaceIdFromPlacementContext(placementContext = null)`
|
|
283
339
|
- `resolveRouteParams(baseParams = {}, overrideParams = null)`
|
|
284
340
|
|
|
341
|
+
### `src/client/navigation/useShellNavigation.js`
|
|
342
|
+
Exports
|
|
343
|
+
- `NO_SHELL_NAVIGATION_RUNTIME`
|
|
344
|
+
- `useShellNavigation()`
|
|
345
|
+
- `useShellNavigationRuntime()`
|
|
346
|
+
Local functions
|
|
347
|
+
- `resolvedNothing()`
|
|
348
|
+
- `releaseNothing()`
|
|
349
|
+
|
|
285
350
|
### `src/client/navigation/useSurfaceRouteContext.js`
|
|
286
351
|
Exports
|
|
287
352
|
- `useSurfaceRouteContext()`
|
|
@@ -459,14 +524,15 @@ Exports
|
|
|
459
524
|
Exports
|
|
460
525
|
- `DESKTOP_DRAWER_CLOSED_MODES`
|
|
461
526
|
- `normalizeDesktopDrawerClosedMode(value = "rail")`
|
|
462
|
-
- `resolveShellDrawerPresentation({
|
|
463
|
-
- `resolveShellDrawerToggleLabel({
|
|
527
|
+
- `resolveShellDrawerPresentation({ modal = false, open = false, desktopClosedMode = "rail" } = {})`
|
|
528
|
+
- `resolveShellDrawerToggleLabel({ modal = false, open = false } = {})`
|
|
464
529
|
|
|
465
530
|
### `src/client/support/drawerWidth.js`
|
|
466
531
|
Exports
|
|
467
532
|
- `DEFAULT_SHELL_DRAWER_WIDTH`
|
|
468
533
|
- `DEFAULT_SHELL_NAVIGATION_ITEM_SPACING`
|
|
469
534
|
- `DEFAULT_SHELL_RAIL_WIDTH`
|
|
535
|
+
- `MATERIAL_DRAWER_WIDTH`
|
|
470
536
|
- `MAXIMUM_SHELL_DRAWER_WIDTH`
|
|
471
537
|
- `MINIMUM_SHELL_DRAWER_WIDTH`
|
|
472
538
|
- `measureDrawerContentWidth(drawerElement, navigationItemSpacing)`
|
|
@@ -474,6 +540,7 @@ Exports
|
|
|
474
540
|
- `normalizeShellNavigationItemSpacing(value, fallback = DEFAULT_SHELL_NAVIGATION_ITEM_SPACING)`
|
|
475
541
|
- `normalizeShellRailWidth(value, fallback = DEFAULT_SHELL_RAIL_WIDTH)`
|
|
476
542
|
- `resolveContentAwareDrawerWidth(measurements = [], { endGap = DEFAULT_SHELL_NAVIGATION_ITEM_SPACING, minimum = MINIMUM_SHELL_DRAWER_WIDTH, maximum = MAXIMUM_SHELL_DRAWER_WIDTH, fallback = DEFAULT_SHELL_DRAWER_WIDTH } = {})`
|
|
543
|
+
- `resolveMaterialDrawerWidth({ modal = false, viewportWidth = Number.POSITIVE_INFINITY } = {})`
|
|
477
544
|
Local functions
|
|
478
545
|
- `clampNumber(value, minimum, maximum)`
|
|
479
546
|
- `measureRenderedText(element)`
|
|
@@ -498,6 +565,17 @@ Local functions
|
|
|
498
565
|
Exports
|
|
499
566
|
- `activateShellNavigationLinkOnSpace(event)`
|
|
500
567
|
|
|
568
|
+
### `src/client/support/navigationPresentation.js`
|
|
569
|
+
Exports
|
|
570
|
+
- `NO_SHELL_NAVIGATION_PRESENTATION`
|
|
571
|
+
- `NO_SHELL_PAGE_ACTIONS_TARGET`
|
|
572
|
+
- `NO_VUETIFY_ICONS`
|
|
573
|
+
- `SHELL_NAVIGATION_PRESENTATION_KEY`
|
|
574
|
+
- `SHELL_PAGE_ACTIONS_ID`
|
|
575
|
+
- `SHELL_PAGE_ACTIONS_TARGET_KEY`
|
|
576
|
+
- `VUETIFY_ICONS_KEY`
|
|
577
|
+
- `filledIconAlias(icon, aliases)`
|
|
578
|
+
|
|
501
579
|
### `src/client/support/primaryNavigation.js`
|
|
502
580
|
Exports
|
|
503
581
|
- `normalizeComparablePathname(value = "")`
|
|
@@ -523,7 +601,15 @@ Exports
|
|
|
523
601
|
|
|
524
602
|
### `src/client/support/shellLayoutClass.js`
|
|
525
603
|
Exports
|
|
526
|
-
- `resolveShellLayoutClass(
|
|
604
|
+
- `resolveShellLayoutClass(viewportWidth = pageViewportWidth())`
|
|
605
|
+
|
|
606
|
+
### `src/client/support/windowSizeClass.js`
|
|
607
|
+
Exports
|
|
608
|
+
- `EXPANDED_MIN_WIDTH`
|
|
609
|
+
- `LARGE_MIN_WIDTH`
|
|
610
|
+
- `MEDIUM_MIN_WIDTH`
|
|
611
|
+
- `WINDOW_SIZE_CLASSES`
|
|
612
|
+
- `resolveWindowSizeClass(width)`
|
|
527
613
|
|
|
528
614
|
### `src/client/types.js`
|
|
529
615
|
Exports
|
|
@@ -552,11 +638,33 @@ Exports
|
|
|
552
638
|
Local functions
|
|
553
639
|
- `createSurfacePlacement(surface, order, label, suffix)`
|
|
554
640
|
- `createSurfacePlacements(surface)`
|
|
641
|
+
- `refuseBlockedRecord(to)`
|
|
642
|
+
|
|
643
|
+
### `fixtures/adaptive-shell/src/RecordListPage.vue`
|
|
644
|
+
Exports
|
|
645
|
+
- None
|
|
646
|
+
|
|
647
|
+
### `fixtures/adaptive-shell/src/RecordPage.vue`
|
|
648
|
+
Exports
|
|
649
|
+
- None
|
|
650
|
+
|
|
651
|
+
### `fixtures/adaptive-shell/src/records.js`
|
|
652
|
+
Exports
|
|
653
|
+
- `records`
|
|
555
654
|
|
|
556
655
|
### `fixtures/adaptive-shell/src/ScreenPage.vue`
|
|
557
656
|
Exports
|
|
558
657
|
- None
|
|
559
658
|
|
|
659
|
+
### `fixtures/adaptive-shell/src/SettingsPage.vue`
|
|
660
|
+
Exports
|
|
661
|
+
- None
|
|
662
|
+
|
|
663
|
+
### `fixtures/adaptive-shell/src/theme/index.js`
|
|
664
|
+
Exports
|
|
665
|
+
- `theme`
|
|
666
|
+
- `adminTheme`
|
|
667
|
+
|
|
560
668
|
### `fixtures/adaptive-shell/vite.config.mjs`
|
|
561
669
|
Exports
|
|
562
670
|
- None
|
|
@@ -575,6 +683,10 @@ Exports
|
|
|
575
683
|
Exports
|
|
576
684
|
- None
|
|
577
685
|
|
|
686
|
+
### `patterns/application-shell/example/expected-existing/src/views/NotFound.vue`
|
|
687
|
+
Exports
|
|
688
|
+
- None
|
|
689
|
+
|
|
578
690
|
### `patterns/application-shell/example/src/App.vue`
|
|
579
691
|
Exports
|
|
580
692
|
- None
|
|
@@ -615,10 +727,6 @@ Exports
|
|
|
615
727
|
Exports
|
|
616
728
|
- None
|
|
617
729
|
|
|
618
|
-
### `patterns/application-shell/example/src/pages/home/settings/index.vue`
|
|
619
|
-
Exports
|
|
620
|
-
- None
|
|
621
|
-
|
|
622
730
|
### `patterns/application-shell/example/src/placement.js`
|
|
623
731
|
Exports
|
|
624
732
|
- `addPlacement`
|
|
@@ -629,6 +737,10 @@ Exports
|
|
|
629
737
|
- `addPlacementTopology(value = {})`
|
|
630
738
|
- `default`
|
|
631
739
|
|
|
740
|
+
### `patterns/application-shell/example/src/views/NotFound.vue`
|
|
741
|
+
Exports
|
|
742
|
+
- None
|
|
743
|
+
|
|
632
744
|
### `patterns/page-and-placement/example/packages/main/src/client/providers/MainClientProvider.js`
|
|
633
745
|
Exports
|
|
634
746
|
- `MainClientProvider`
|
|
@@ -67,9 +67,90 @@ Exports
|
|
|
67
67
|
- `usage()`
|
|
68
68
|
Local functions
|
|
69
69
|
- `parseI18nArgs(options, positionals)`
|
|
70
|
+
- `parseMaterial3Args(options, positionals)`
|
|
71
|
+
- `runMaterial3({ projectRoot, paths })`
|
|
70
72
|
- `runI18n({ subcommand, locale, projectRoot })`
|
|
71
73
|
- `readCatalog()`
|
|
72
74
|
|
|
75
|
+
### `scripts/material3-source.mjs`
|
|
76
|
+
Exports
|
|
77
|
+
- `HEX_COLOUR`
|
|
78
|
+
- `blankCssComments(source)`
|
|
79
|
+
- `blankHtmlComments(source)`
|
|
80
|
+
- `blankJsComments(source)`
|
|
81
|
+
- `kebab(name)`
|
|
82
|
+
- `lineIndex(text)`
|
|
83
|
+
- `readDeclarations(css, offset)`
|
|
84
|
+
- `readExceptions(source)`
|
|
85
|
+
- `readInlineDeclarations(text, offset)`
|
|
86
|
+
- `readTags(template)`
|
|
87
|
+
- `splitVue(source)`
|
|
88
|
+
Local functions
|
|
89
|
+
- `blank(text)`
|
|
90
|
+
- `blankMatches(source, pattern)`
|
|
91
|
+
- `findBlocks(source, tag)`
|
|
92
|
+
- `readAttributes(text, offset)`
|
|
93
|
+
|
|
94
|
+
### `scripts/material3.mjs`
|
|
95
|
+
Exports
|
|
96
|
+
- `MATERIAL3_RULES`
|
|
97
|
+
- `checkMaterial3({ projectRoot = process.cwd(), paths = [], navigationOnly = false } = {})`
|
|
98
|
+
- `formatMaterial3Report(result)`
|
|
99
|
+
- `formatNavigationReport(result)`
|
|
100
|
+
Local functions
|
|
101
|
+
- `hexPattern()`
|
|
102
|
+
- `quotedHex()`
|
|
103
|
+
- `isNavigationRule(rule)`
|
|
104
|
+
- `isSkippedDirectory(name)`
|
|
105
|
+
- `isSourceFile(relativePath)`
|
|
106
|
+
- `walk(projectRoot, directory, files)`
|
|
107
|
+
- `collectFiles(projectRoot, paths)`
|
|
108
|
+
- `createReporter(file, source, { navigationOnly = false } = {})`
|
|
109
|
+
- `checkCode(code, offset, { report, themed })`
|
|
110
|
+
- `checkScript(code, offset, context)`
|
|
111
|
+
- `checkCss(css, offset, context)`
|
|
112
|
+
- `checkDeclaration(declaration, context)`
|
|
113
|
+
- `attribute(tag, name)`
|
|
114
|
+
- `checkTemplate(template, context)`
|
|
115
|
+
- `checkAttribute(tag, entry, context)`
|
|
116
|
+
- `checkSurface(tag, report)`
|
|
117
|
+
- `checkButtonSize(tag, report)`
|
|
118
|
+
- `checkFile(file, source, context)`
|
|
119
|
+
- `readProjectManifest(projectRoot)`
|
|
120
|
+
- `usesShell(manifest)`
|
|
121
|
+
- `checkDarkScheme(projectRoot, checkedFiles, wholeApp)`
|
|
122
|
+
- `formatFindings(result)`
|
|
123
|
+
|
|
124
|
+
### `scripts/navigation.mjs`
|
|
125
|
+
Exports
|
|
126
|
+
- `NAVIGATION_RULES`
|
|
127
|
+
- `checkBackControl(tag, report)`
|
|
128
|
+
- `checkLinkAttribute(tag, entry, report)`
|
|
129
|
+
- `checkNavigationCode(code, offset, report)`
|
|
130
|
+
- `checkPageParents({ root, appFiles, pageFiles, report })`
|
|
131
|
+
- `checkScriptBackNames(code, offset, report)`
|
|
132
|
+
- `isInAppPath(value)`
|
|
133
|
+
- `isPageFile(file)`
|
|
134
|
+
Local functions
|
|
135
|
+
- `compact(text)`
|
|
136
|
+
- `isPlacementLink(code, offset)`
|
|
137
|
+
- `attribute(tag, name)`
|
|
138
|
+
- `visibleText(inner)`
|
|
139
|
+
- `isBackTag(tag)`
|
|
140
|
+
- `looksLikeBack(tag)`
|
|
141
|
+
- `balancedFrom(text, start, open = "{", close = "}")`
|
|
142
|
+
- `enclosingObject(text, offset)`
|
|
143
|
+
- `stringValue(text, key)`
|
|
144
|
+
- `readMainNavigation(sources)`
|
|
145
|
+
- `normalisePath(value)`
|
|
146
|
+
- `routeOf(file)`
|
|
147
|
+
- `routePattern(route)`
|
|
148
|
+
- `readSurfaces(configSource, pageRoutes)`
|
|
149
|
+
- `surfaceOf(route, surfaces)`
|
|
150
|
+
- `routeDeclarations(source)`
|
|
151
|
+
- `readPage(file, source)`
|
|
152
|
+
- `pageKey(file)`
|
|
153
|
+
|
|
73
154
|
### `scripts/pattern-assets.mjs`
|
|
74
155
|
Exports
|
|
75
156
|
- `PATTERN_DOCUMENT_NAME`
|
|
@@ -27,3 +27,10 @@ Exports
|
|
|
27
27
|
- `createFakeFastifyPolicyRuntime({ csrfHandler = passCsrfProtection } = {})`
|
|
28
28
|
Local functions
|
|
29
29
|
- `passCsrfProtection(_request, _reply, done)`
|
|
30
|
+
|
|
31
|
+
### `visualBaseline.mjs`
|
|
32
|
+
Exports
|
|
33
|
+
- `expectMaterialBaseline(page, { directory, name, probes })`
|
|
34
|
+
- `readMaterialStyles(page, probes)`
|
|
35
|
+
Local functions
|
|
36
|
+
- `comparePixels(page, actual, expected)`
|
package/skills/jskit/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jskit
|
|
3
|
-
description: Build, extend, troubleshoot, review, deslop, and verify JSKIT apps using its public framework APIs, package-owned source patterns, runtime capabilities, surfaces, placements, CRUDs, verification conventions, and Vue/Vuetify Material 3 UI contract. Use for every JSKIT UI creation, modification, review, or
|
|
3
|
+
description: Build, extend, troubleshoot, review, deslop, and verify JSKIT apps using its public framework APIs, package-owned source patterns, runtime capabilities, surfaces, placements, CRUDs, verification conventions, and Vue/Vuetify Material 3 UI contract, including UI passes over a task's changes, a section, or the whole app. Use for every JSKIT UI creation, modification, review, cleanup, or UI pass task.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# JSKIT
|
|
@@ -56,6 +56,8 @@ manifests, migrations, tests, and runtime behaviour are the evidence.
|
|
|
56
56
|
[UI operations](references/ui-operations.md).
|
|
57
57
|
- For every Vue/Vuetify UI creation, modification, review, or deslop task,
|
|
58
58
|
also read [Material 3](references/material-3.md) completely before acting.
|
|
59
|
+
- For a UI pass (the changes, a section, or the whole app), also read
|
|
60
|
+
[UI pass](references/ui-pass.md) completely.
|
|
59
61
|
|
|
60
62
|
These are complete operational references required by this skill. Do not load
|
|
61
63
|
irrelevant references or other docs.
|
|
@@ -90,9 +92,11 @@ only when required. Use only a fresh disposable development database for
|
|
|
90
92
|
schema work—never valuable data. For UI, respect surface/placements, compact
|
|
91
93
|
layout, all operational states, permissions/ownership, and browser
|
|
92
94
|
verification.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
Navigation is a MUST that plain `jskit check` enforces (Material 3,
|
|
96
|
+
Navigation and Up): the shell owns the Up arrow and the trail; every inner page
|
|
97
|
+
declares its parent as route meta `jskit.parent`; every inner link goes through
|
|
98
|
+
JSKIT navigation; never write back logic, a "Back to X" control,
|
|
99
|
+
`router.back()`, `history.back()` or `window.location` navigation.
|
|
96
100
|
|
|
97
101
|
## Caller-owned verification
|
|
98
102
|
|
|
@@ -107,8 +111,9 @@ For review-only work, report without editing. Check dead or duplicated code,
|
|
|
107
111
|
accidental abstraction, incomplete states, missed high-level JSKIT seams,
|
|
108
112
|
invalid ownership or migration choices, UI quality, and verification. Server
|
|
109
113
|
code follows typed features, client code client features; `npm run lint` is
|
|
110
|
-
clean. Run the Material 3 audit for affected UI,
|
|
111
|
-
|
|
114
|
+
clean. Run the Material 3 audit for affected UI, navigation first, plain
|
|
115
|
+
`jskit check`, and `jskit check m3` on the affected files. Findings first by
|
|
116
|
+
severity and file.
|
|
112
117
|
|
|
113
118
|
## Verify
|
|
114
119
|
|
|
@@ -34,7 +34,7 @@ How to use it:
|
|
|
34
34
|
- [client-requests.md](./client-requests.md)
|
|
35
35
|
- playwright, browser test, e2e, ui verification, baseline test, authenticated ui test, test auth, dev login as, dev auth bypass
|
|
36
36
|
- [ui-testing.md](./ui-testing.md)
|
|
37
|
-
- UI contract, design contract, navigation roles, Back button,
|
|
37
|
+
- UI contract, design contract, navigation roles, Up arrow, Back button, declared parent, jskit.parent, in-app trail, history.back, hand-built links, jskit check, Deslop, density, placeholder copy, card shells, shared CRUD screens, row actions, synthetic rows, detail slots
|
|
38
38
|
- [ui-contract.md](./ui-contract.md)
|
|
39
39
|
- filter, filters, search facets, chips, date range, enum filter, lookup filter, `useCrudListFilters`, `createCrudListFilters`
|
|
40
40
|
- [filters.md](./filters.md)
|
|
@@ -13,11 +13,13 @@ and action UI.
|
|
|
13
13
|
overflow.
|
|
14
14
|
- Compact interactive targets are at least 48 CSS pixels.
|
|
15
15
|
- Navigation uses semantic placements and explicit navigation roles.
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
- MUST, enforced by plain `jskit check`: every inner page declares its parent
|
|
17
|
+
(route meta `jskit.parent`) and gets one Up arrow in the top app bar from the
|
|
18
|
+
shell; it returns to the in-app origin, or to the parent on direct entry.
|
|
19
|
+
Main-menu destinations show none. No "Back to X" controls, no back logic, no
|
|
20
|
+
`router.back()`/`history.back()`/`window.location`, no hand-built in-app
|
|
21
|
+
links. Follow
|
|
22
|
+
[Navigation and Up](../material-3.md#navigation-and-up).
|
|
21
23
|
- Pages do not stack decorative cards inside structural cards.
|
|
22
24
|
- Pages do not include a header, title block, welcome heading, or standalone
|
|
23
25
|
heading copy unless the user explicitly requests one.
|
|
@@ -57,8 +59,9 @@ it as a closed sheet and wider layouts as a closed side panel.
|
|
|
57
59
|
|
|
58
60
|
- test skeleton, empty, loaded, local error, retry, and mutation feedback states
|
|
59
61
|
- navigate away and back with warm query cache, including browser back/forward
|
|
60
|
-
- during review or
|
|
61
|
-
|
|
62
|
+
- during review, Deslop or a UI pass, audit Up: a sideways origin returns
|
|
63
|
+
there, chains unwind, direct entry reaches the declared parent, and main-menu
|
|
64
|
+
destinations show no arrow
|
|
62
65
|
- exercise compact, medium, and expanded viewports
|
|
63
66
|
- verify accessible names, keyboard operation, target size, and no overflow
|
|
64
67
|
- assert that no spinner or layout-shifting transient error banner appears
|
|
@@ -22,9 +22,11 @@ Rules:
|
|
|
22
22
|
- Use relative paths such as `page.goto("/home")`. The shared config owns the browser base URL.
|
|
23
23
|
- After clicking a client-side navigation control, wait for its destination
|
|
24
24
|
with `await expect(page).toHaveURL(...)` before reloading. Awaiting the click
|
|
25
|
-
alone does not wait for Vue Router to complete.
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
alone does not wait for Vue Router to complete. Up tests reach a page
|
|
26
|
+
through in-app links (one of them sideways), then press
|
|
27
|
+
`pressShellBack(page)` (`@jskit-ai/shell-web/test/shellNavigation`) and
|
|
28
|
+
assert that each Up returns to its origin in order; a direct `page.goto()`
|
|
29
|
+
asserts the declared parent. Do not replace this wait with sleeps.
|
|
28
30
|
- A managed runner supplies `PLAYWRIGHT_BASE_URL`. When it is set, JSKIT does not start another app server.
|
|
29
31
|
- Otherwise the config starts the app on `PLAYWRIGHT_PORT`, 4173 by default. A runner that shares a machine between runs sets a free port for each run; with one fixed port, a second run would wait for it or reuse another run's server.
|
|
30
32
|
- A managed runner may supply an authenticated context through `PLAYWRIGHT_STORAGE_STATE`. Treat that file as a temporary secret: do not commit it, print it, or retain it after the run.
|