systemlink-cli 1.15.2__tar.gz → 1.16.0__tar.gz

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.
Files changed (147) hide show
  1. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/PKG-INFO +1 -1
  2. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/pyproject.toml +1 -1
  3. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/_version.py +1 -1
  4. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/angular-ui-packages.md +40 -7
  5. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/layout-patterns.md +12 -0
  6. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/nimble-angular.md +2 -0
  7. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/overview.md +29 -5
  8. systemlink_cli-1.16.0/slcli/webapp_bootstrap.py +1320 -0
  9. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/app.module.ts +5 -2
  10. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.html +11 -2
  11. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.scss +5 -1
  12. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/master-detail/master-detail-page.component.ts +26 -2
  13. systemlink_cli-1.15.2/slcli/webapp_bootstrap.py +0 -631
  14. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/LICENSE +0 -0
  15. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/dff-editor/editor.js +0 -0
  16. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/dff-editor/index.html +0 -0
  17. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/__init__.py +0 -0
  18. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/__main__.py +0 -0
  19. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/asset_click.py +0 -0
  20. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/cli_formatters.py +0 -0
  21. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/cli_utils.py +0 -0
  22. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/comment_click.py +0 -0
  23. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/completion_click.py +0 -0
  24. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/config.py +0 -0
  25. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/config_click.py +0 -0
  26. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/dataframe_click.py +0 -0
  27. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/dff_click.py +0 -0
  28. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/dff_decorators.py +0 -0
  29. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/example_click.py +0 -0
  30. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/example_loader.py +0 -0
  31. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/example_provisioner.py +0 -0
  32. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/README.md +0 -0
  33. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/_schema/schema-v1.0.json +0 -0
  34. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/demo-complete-workflow/README.md +0 -0
  35. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/demo-complete-workflow/config.yaml +0 -0
  36. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/demo-test-plans/README.md +0 -0
  37. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/demo-test-plans/config.yaml +0 -0
  38. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/exercise-5-1-parametric-insights/README.md +0 -0
  39. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/exercise-5-1-parametric-insights/config.yaml +0 -0
  40. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/exercise-7-1-test-plans/README.md +0 -0
  41. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/exercise-7-1-test-plans/config.yaml +0 -0
  42. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/spec-compliance-notebooks/README.md +0 -0
  43. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/spec-compliance-notebooks/config.yaml +0 -0
  44. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecAnalysis_ComplianceCalculation.ipynb +0 -0
  45. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecComplianceCalculation.ipynb +0 -0
  46. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/spec-compliance-notebooks/notebooks/SpecfileExtractionAndIngestion.ipynb +0 -0
  47. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/examples/spec-compliance-notebooks/spec_template.xlsx +0 -0
  48. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/feed_click.py +0 -0
  49. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/file_click.py +0 -0
  50. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/function_click.py +0 -0
  51. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/function_templates.py +0 -0
  52. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/main.py +0 -0
  53. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/mcp_click.py +0 -0
  54. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/mcp_reachability.py +0 -0
  55. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/mcp_server.py +0 -0
  56. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/notebook_click.py +0 -0
  57. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/platform.py +0 -0
  58. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/policy_click.py +0 -0
  59. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/policy_utils.py +0 -0
  60. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/profiles.py +0 -0
  61. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/response_handlers.py +0 -0
  62. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/rich_output.py +0 -0
  63. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/routine_click.py +0 -0
  64. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skill_click.py +0 -0
  65. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/SKILL.md +0 -0
  66. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/analysis-recipes.md +0 -0
  67. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/commands.md +0 -0
  68. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/datasheet-workflow.md +0 -0
  69. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/filtering.md +0 -0
  70. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/import-specs.min.json +0 -0
  71. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/job-debugging/overview.md +0 -0
  72. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/nipkg/overview.md +0 -0
  73. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/notebook/interfaces.md +0 -0
  74. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/notebook/notebook-patterns.md +0 -0
  75. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/notebook/overview.md +0 -0
  76. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/python-test/overview.md +0 -0
  77. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/routine-examples.md +0 -0
  78. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/troubleshooting.md +0 -0
  79. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/deployment.md +0 -0
  80. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/systemlink-services.md +0 -0
  81. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/references/webapp/troubleshooting.md +0 -0
  82. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/skills/slcli/scripts/spec_import_helper.py +0 -0
  83. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/spec_click.py +0 -0
  84. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/ssl_trust.py +0 -0
  85. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/state_click.py +0 -0
  86. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/system_click.py +0 -0
  87. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/system_query_utils.py +0 -0
  88. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/table_utils.py +0 -0
  89. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/tag_click.py +0 -0
  90. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/templates_click.py +0 -0
  91. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/testmonitor_click.py +0 -0
  92. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/universal_handlers.py +0 -0
  93. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/user_click.py +0 -0
  94. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/utils.py +0 -0
  95. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/web_editor.py +0 -0
  96. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_click.py +0 -0
  97. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/.gitignore +0 -0
  98. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/README.md +0 -0
  99. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/angular.json +0 -0
  100. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/package.json +0 -0
  101. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/app-routing.module.ts +0 -0
  102. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/app.component.html +0 -0
  103. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/app.component.scss +0 -0
  104. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/app.component.ts +0 -0
  105. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.html +0 -0
  106. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.scss +0 -0
  107. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/layout/app-shell.component.ts +0 -0
  108. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/state/app-view-state.service.ts +0 -0
  109. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/systemlink-context.service.ts +0 -0
  110. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/theme-sync.service.ts +0 -0
  111. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/core/systemlink/webapp-home-data.service.ts +0 -0
  112. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.html +0 -0
  113. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.scss +0 -0
  114. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/assets/assets-page.component.ts +0 -0
  115. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.html +0 -0
  116. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.scss +0 -0
  117. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/datasets/datasets-page.component.ts +0 -0
  118. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.html +0 -0
  119. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.scss +0 -0
  120. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/home/home-page.component.ts +0 -0
  121. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.html +0 -0
  122. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.scss +0 -0
  123. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/operations/operations-page.component.ts +0 -0
  124. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.html +0 -0
  125. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.scss +0 -0
  126. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/features/settings/settings-page.component.ts +0 -0
  127. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.html +0 -0
  128. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.scss +0 -0
  129. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/empty-state.component.ts +0 -0
  130. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.html +0 -0
  131. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.scss +0 -0
  132. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/error-banner.component.ts +0 -0
  133. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.html +0 -0
  134. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.scss +0 -0
  135. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/components/loading-state.component.ts +0 -0
  136. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/app/shared/states/view-state.model.ts +0 -0
  137. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/assets/README.md +0 -0
  138. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/index.html +0 -0
  139. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/main.ts +0 -0
  140. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/src/styles.scss +0 -0
  141. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/tsconfig.app.json +0 -0
  142. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/webapp_templates/angular/blank/tsconfig.json +0 -0
  143. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/workflow_preview.py +0 -0
  144. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/workflows_click.py +0 -0
  145. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/workitem_click.py +0 -0
  146. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/workspace_click.py +0 -0
  147. {systemlink_cli-1.15.2 → systemlink_cli-1.16.0}/slcli/workspace_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: systemlink-cli
3
- Version: 1.15.2
3
+ Version: 1.16.0
4
4
  Summary: SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates.
5
5
  License-File: LICENSE
6
6
  Author: Fred Visser
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "systemlink-cli"
3
- version = "1.15.2"
3
+ version = "1.16.0"
4
4
  description = "SystemLink Integrator CLI - cross-platform CLI for SystemLink workflows and templates."
5
5
  authors = ["Fred Visser <fred.visser@emerson.com>"]
6
6
  packages = [{ include = "slcli" }]
@@ -1,4 +1,4 @@
1
1
  """Version information for slcli."""
2
2
 
3
3
  # This file is auto-generated. Do not edit manually.
4
- __version__ = "1.15.2"
4
+ __version__ = "1.16.0"
@@ -2,6 +2,24 @@
2
2
 
3
3
  Use this file when you need a quick package-level inventory before choosing components. Load `nimble-angular.md` only after you know which Nimble components you actually need.
4
4
 
5
+ ## Use published components first
6
+
7
+ Before styling a `div` into a faux card, tile, accordion, search bar, button row, or summary panel,
8
+ check this file and the Nimble Storybook first.
9
+
10
+ - Prefer NI components for visible surfaces and interactions.
11
+ - Use raw HTML mainly for layout containers, semantic sections, and text.
12
+ - Treat custom card shells as the exception path, not the default response to a dashboard or layout request.
13
+
14
+ ## Reference links
15
+
16
+ | Surface | Link | Use |
17
+ | ----------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- |
18
+ | Nimble Storybook | https://nimble.ni.dev/storybook/index.html | Search the published Nimble components before inventing a surface |
19
+ | Nimble Getting Started | https://nimble.ni.dev/storybook/index.html?path=/docs/getting-started--docs | Bootstrap and package expectations |
20
+ | Nimble Component APIs | https://nimble.ni.dev/storybook/index.html?path=/docs/component-apis--docs | Component inventory and API lookup |
21
+ | Nimble Component Status | https://nimble.ni.dev/storybook/index.html?path=/docs/component-status--docs | Check maturity and availability |
22
+
5
23
  ## Install recommendation
6
24
 
7
25
  For new SystemLink webapps, prefer installing the NI Angular UI packages together:
@@ -10,15 +28,15 @@ For new SystemLink webapps, prefer installing the NI Angular UI packages togethe
10
28
  npm install @ni/nimble-angular @ni/spright-angular @ni/ok-angular
11
29
  ```
12
30
 
13
- Use Nimble as the default foundation, then pull in Spright and OK Angular when the app needs their specialized components.
31
+ Use Nimble as the default foundation, then pull in Spright and OK Angular when the app needs their specialized surfaces.
14
32
 
15
33
  ## Package roles
16
34
 
17
- | Package | Primary role | When to reach for it |
18
- | --------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
19
- | `@ni/nimble-angular` | Core SystemLink-aligned component foundation | Use for the default app shell, tables, buttons, inputs, drawers, banners, dialogs, navigation, and most day-to-day UI work |
20
- | `@ni/spright-angular` | Spright chat, rectangle, and NI-specific icon wrappers | Use for chat experiences, AI/copilot surfaces, and Spright-specific iconography |
21
- | `@ni/ok-angular` | OK-specific interaction components | Use when the design needs OK accordion items, OK search input, or OK button primitives |
35
+ | Package | Primary role | When to reach for it |
36
+ | --------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
37
+ | `@ni/nimble-angular` | Core SystemLink-aligned component foundation | Use for the default app shell, tables, buttons, inputs, drawers, banners, dialogs, navigation, and most day-to-day UI work |
38
+ | `@ni/spright-angular` | Spright chat, rectangle, and NI-specific icon wrappers | Use for chat experiences, AI/copilot surfaces, and Spright-specific iconography |
39
+ | `@ni/ok-angular` | OK-specific Angular wrappers | Use when the design needs OK accordion items, OK search input, OK chip selectors, summary panels, or OK button primitives |
22
40
 
23
41
  ## Recommended AppModule example
24
42
 
@@ -99,6 +117,16 @@ Representative components already documented there include:
99
117
  - `nimble-banner`
100
118
  - `nimble-dialog`
101
119
 
120
+ Representative layout and navigation surfaces to prefer before bespoke HTML include:
121
+
122
+ - `nimble-anchor`
123
+ - `nimble-anchor-tabs`
124
+ - `nimble-anchor-tab`
125
+ - `nimble-drawer`
126
+ - `nimble-banner`
127
+ - `nimble-spinner`
128
+ - `nimble-table`
129
+
102
130
  ### `@ni/spright-angular`
103
131
 
104
132
  Published Angular wrappers currently include:
@@ -126,7 +154,7 @@ Published Spright icon directives currently include:
126
154
 
127
155
  ### `@ni/ok-angular`
128
156
 
129
- Published Angular wrappers in `@ni/ok-angular@2.4.0` currently include:
157
+ Published Angular wrappers in `@ni/ok-angular@2.5.0` currently include:
130
158
 
131
159
  | Tag | Angular symbol | Import path | Use |
132
160
  | --------------------------- | ----------------------------- | --------------------------------------- | -------------------------------------------- |
@@ -135,17 +163,22 @@ Published Angular wrappers in `@ni/ok-angular@2.4.0` currently include:
135
163
  | `ok-fv-card` | `OkFvCardModule` | `@ni/ok-angular/fv/card` | OK card surface with title and description |
136
164
  | `ok-fv-chip-selector` | `OkFvChipSelectorModule` | `@ni/ok-angular/fv/chip-selector` | Multi-value chip selector control |
137
165
  | `ok-fv-context-help` | `OkFvContextHelpModule` | `@ni/ok-angular/fv/context-help` | Inline context-help or severity help content |
166
+ | `ok-fv-master-detail-list` | `OkFvMasterDetailListModule` | `@ni/ok-angular/fv/master-detail-list` | Master/detail list container |
167
+ | `ok-fv-master-detail-list-item` | `OkFvMasterDetailListItemModule` | `@ni/ok-angular/fv/master-detail-list-item` | Item rows inside the master/detail list |
138
168
  | `ok-fv-search-input` | `OkFvSearchInputModule` | `@ni/ok-angular/fv/search-input` | OK search input control |
139
169
  | `ok-fv-split-button` | `OkFvSplitButtonModule` | `@ni/ok-angular/fv/split-button` | Split button with primary and menu actions |
140
170
  | `ok-fv-split-button-anchor` | `OkFvSplitButtonAnchorModule` | `@ni/ok-angular/fv/split-button-anchor` | Anchor-style split button |
141
171
  | `ok-fv-summary-panel` | `OkFvSummaryPanelModule` | `@ni/ok-angular/fv/summary-panel` | Summary panel container |
142
172
  | `ok-fv-summary-panel-tile` | `OkFvSummaryPanelTileModule` | `@ni/ok-angular/fv/summary-panel-tile` | Summary panel metric or status tile |
143
173
 
174
+ Use `@ni/ok-angular` as the default and preferred entry point for OK components in Angular apps. The wrapper package now includes the master-detail list surface as well, so generated apps and skill guidance should stay on `@ni/ok-angular` rather than importing `@ni/ok-components` directly.
175
+
144
176
  ## Selection guidance
145
177
 
146
178
  - Start with Nimble for the app shell and the majority of controls.
147
179
  - Add Spright when the app needs chat UI or Spright-specific iconography.
148
180
  - Add OK Angular when the design specifically benefits from its accordion item, search input, chip selector, split button, summary panel, card, or OK button components.
181
+ - Prefer a published component over styling a `div` to imitate the same surface.
149
182
  - Keep imports explicit at the module level; do not use `CUSTOM_ELEMENTS_SCHEMA` as a shortcut for missing wrappers.
150
183
 
151
184
  ## Next step references
@@ -51,10 +51,22 @@ Do not combine multiple starter patterns in the first implementation slice unles
51
51
  ## Core rules
52
52
 
53
53
  - Use Nimble components and Nimble design tokens for primary UI. Avoid generic cards as the default page structure for browse, detail, and settings workflows.
54
+ - Check published Nimble, Spright, and OK components before creating a custom surface from plain `div`s.
55
+ - Use `div`s for flex, grid, spacing, grouping, and semantics, not as a substitute for a published control or design surface.
54
56
  - Put toolbars and tab bars in a 40px-tall container with content vertically centered and a `1px solid var(--ni-nimble-divider-background-color)` bottom border.
55
57
  - Use `nimble-button` for button affordances. If you need clickable list rows or a section rail, style them as navigation rows rather than faux Nimble buttons.
56
58
  - Keep theme-aware aliases on `nimble-theme-provider`, not on `:root`, so custom colors and surfaces follow the active Nimble theme.
57
59
 
60
+ ## Prefer components over faux cards
61
+
62
+ When the request sounds like "dashboard", "summary", "overview", or "settings", do not default to wrapping everything in repeated card containers.
63
+
64
+ - For browse data, start with `nimble-table` plus a toolbar.
65
+ - For selection-driven workflows, start with drawer-detail or master/detail.
66
+ - For grouped configuration, start with accordion items or sectioned form groups.
67
+ - For metrics or status rollups, prefer OK summary panels or a small number of focused summary surfaces.
68
+ - Use cards only when a published card or summary component is the real primitive you need, not as a catch-all page layout pattern.
69
+
58
70
  ## Spacing tokens
59
71
 
60
72
  Use Nimble design tokens for consistent spacing between controls.
@@ -27,6 +27,8 @@ When building Angular apps with Nimble, use `@ni/nimble-angular` wrapper modules
27
27
  - Import the needed Angular module for each Nimble control instead of registering raw custom elements from `@ni/nimble-components`.
28
28
  - Do not add `CUSTOM_ELEMENTS_SCHEMA` just to silence unknown Nimble elements in templates. That usually hides a missing module import and weakens Angular's template validation.
29
29
  - If a Nimble icon or control is unknown, first look for the matching module in `@ni/nimble-angular` and import it.
30
+ - If a Nimble wrapper does not exist, check `angular-ui-packages.md` and the Nimble Storybook before creating a custom HTML substitute.
31
+ - Prefer a published NI component over styling a `div` to mimic the same interaction or surface.
30
32
 
31
33
  ## Fonts
32
34
 
@@ -17,6 +17,23 @@ reference files when the implementation needs them.
17
17
 
18
18
  If the user only wants planning or a first implementation slice, stay in this file.
19
19
 
20
+ ## Component-first rule
21
+
22
+ Before inventing a surface with `div`s, custom borders, or repeated card shells, check whether the
23
+ needed primitive already exists in Nimble, Spright, or OK.
24
+
25
+ - Use package components for interactive or visual surfaces first.
26
+ - Use raw HTML mostly for semantic grouping, flex/grid layout, and text structure.
27
+ - Do not build custom-styled buttons, inputs, tabs, drawers, search bars, banners, summary tiles,
28
+ or faux cards when a published NI component already covers the job.
29
+ - Treat `div` wrappers as layout scaffolding, not as the primary design language.
30
+
31
+ Start with these references before authoring bespoke UI:
32
+
33
+ - Nimble Storybook: https://nimble.ni.dev/storybook/index.html
34
+ - Nimble Component APIs: https://nimble.ni.dev/storybook/index.html?path=/docs/component-apis--docs
35
+ - Nimble Getting Started: https://nimble.ni.dev/storybook/index.html?path=/docs/getting-started--docs
36
+
20
37
  ## First response checklist
21
38
 
22
39
  Before generating code, clarify only the details that change the implementation:
@@ -29,7 +46,7 @@ Before generating code, clarify only the details that change the implementation:
29
46
 
30
47
  Do not ask about Angular or Nimble versions unless the user is constrained by an existing project. Default to Angular 20 and the latest compatible `@ni/nimble-angular`, but verify the installed versions immediately after scaffold instead of assuming the generator produced the expected combination.
31
48
 
32
- For new SystemLink apps, recommend installing the NI Angular UI packages together unless the user is intentionally minimizing dependencies. `@ni/nimble-angular` remains the default foundation, `@ni/spright-angular` adds Spright chat and icon components, and `@ni/ok-angular` adds OK-specific controls such as accordion items and search input.
49
+ For new SystemLink apps, recommend installing the NI UI packages together unless the user is intentionally minimizing dependencies. `@ni/nimble-angular` remains the default foundation, `@ni/spright-angular` adds Spright chat and icon components, and `@ni/ok-angular` is the default entry point for OK surfaces such as accordion items, search input, summary panels, and other OK wrappers. Do not reach for `@ni/ok-components` directly in normal app code.
33
50
 
34
51
  ## Recommended workflow
35
52
 
@@ -60,9 +77,12 @@ For the currently supported path, standardize on:
60
77
 
61
78
  - Angular 20.x
62
79
  - Node 24+
63
- - `@ni/nimble-angular` 33.2.x
64
- - `@ni/nimble-components` 35.8.x
65
- - `@ni/unit-format` 1.0.4+
80
+ - `@ni/nimble-angular` 33.4.x
81
+ - `@ni/nimble-components` 35.12.x
82
+ - `@ni/unit-format` 1.0.5+
83
+ - `@ni/spright-angular` 9.5.x
84
+ - `@ni/ok-angular` 2.5.0+
85
+ - `@ni/systemlink-clients-ts` 3.0.2
66
86
  - `@angular/build` for the hosted application builder
67
87
  - `@angular/localize` installed and added to build polyfills
68
88
 
@@ -76,7 +96,7 @@ Also add `@angular-devkit/build-angular` back to `devDependencies` before switch
76
96
 
77
97
  This fallback is not optional when the Nimble packages fail under the application builder. Fix the builder mismatch before implementing more UI.
78
98
 
79
- Recommend installing `@ni/spright-angular` and `@ni/ok-angular` early when using the manual `init` path, even if the first slice only uses Nimble. That avoids dependency churn later when the UI needs chat surfaces, product-specific icons, accordion items, or the OK search input.
99
+ Recommend installing `@ni/spright-angular` and `@ni/ok-angular` early when using the manual `init` path, even if the first slice only uses Nimble. That avoids dependency churn later when the UI needs chat surfaces, product-specific icons, or OK wrappers.
80
100
 
81
101
  If the user has not scaffolded anything yet and explicitly wants a SystemLink-hosted webapp, recommend `slcli webapp new` first. Only fall back to `slcli webapp init` when they ask for manual bootstrapping or need to control the Angular workspace creation themselves.
82
102
 
@@ -103,13 +123,16 @@ Use SystemLink-appropriate layout defaults instead of inventing page structure f
103
123
  - Use drawers or collapsible side panels for settings and filters.
104
124
  - Use accordions for grouped fields and advanced configuration.
105
125
  - Use cards sparingly for summaries, not as the default editing or data layout.
126
+ - Prefer NI summary-panel, accordion, table, drawer, tab, banner, and search components before composing a new surface from plain `div`s.
106
127
 
107
128
  Treat Nimble alignment as a requirement, not a style preference:
108
129
 
109
130
  - Use Nimble controls for primary actions, selection, inputs, status, and data display.
131
+ - Prefer OK and Spright components when they provide a better fit than generic layout wrappers.
110
132
  - Use raw HTML elements mostly for semantic grouping, layout wrappers, and text structure.
111
133
  - Do not build custom-styled buttons, inputs, dropdowns, tabs, or pseudo-cards when Nimble already provides the interaction primitive.
112
134
  - Prefer Nimble spacing, borders, focus states, and theme tokens over bespoke visual treatments.
135
+ - If an NI component exists for the surface, use it instead of styling a `div` to imitate it.
113
136
  - If a page starts to look like a generic marketing dashboard instead of a SystemLink tool, pull it back toward table/list-detail, drawers, banners, tabs, and structured metadata panels.
114
137
 
115
138
  ### 4. Integrate SystemLink APIs the low-risk way
@@ -176,6 +199,7 @@ Before you consider a SystemLink webapp slice correct, confirm all of the follow
176
199
  - Root `src/styles.scss` imports `@use '@ni/nimble-angular/styles/fonts' as *;`.
177
200
  - Nimble Angular modules are imported explicitly.
178
201
  - Primary interaction controls use Nimble wrappers rather than custom HTML surrogates.
202
+ - When Nimble lacks a needed surface, check `angular-ui-packages.md` and the Nimble Storybook before creating a bespoke `div`-based substitute.
179
203
  - No hardcoded colors in component SCSS.
180
204
  - Theme-aware aliases live on `nimble-theme-provider`.
181
205
  - API client uses the correct SystemLink service base URL.