@stechquick/studio-cli 4.2.0-1 → 4.2.0-3
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/dist/common/helpers/aiKitResolver.js +11 -5
- package/dist/common/helpers/aiKitResolver.js.map +1 -1
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +35 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/cli-bridge.md +97 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/render-check.md +48 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/sync.md +50 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/index.md +23 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/concepts.md +39 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/README.md +18 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/consent-check-using-container-methods.qjson +1314 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/consent-check-using-hosttrigger.qjson +1301 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/consentHostMethods.container +81 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/dataroid.qjson +692 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-appbar.qjson +674 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-footer.qjson +627 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-page-example-with-appbar-and-footer.qjson +1122 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-payment-page-paymentComp-usage.qjson +1262 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/analytics-and-logging.md +45 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/host-functions.md +88 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/miniapp-page-structure.md +65 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/navigation-and-lifecycle.md +29 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/platform-payments.md +54 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/index.md +40 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/host-app-image.json +53 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/host-functions.container +145 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/host-functions.json +109 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/paymentComp.qjson +1867 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/platform-components.json +105 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/README.md +11 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/AllowdDates.qjson +126 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChartEvents.qjson +323 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChartTitle.qjson +411 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChartYTicks.qjson +399 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/CalendarUsageExample.qjson +2 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/ChartLegendFont.qjson +788 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DataTable_customSort.qjson +277 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DoughnutChartEvents.qjson +243 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Icon_Samples.qjson +181 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Instructions.request.qjson +584 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Intersect.qjson +404 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LightBox.qjson +777 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChart.qjson +1049 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChartEvents.qjson +327 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChartPointProps.qjson +416 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/MMDelay.qjson +384 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/MMtrigger.qjson +209 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerExample.qjson +899 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Parallax.qjson +416 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/PieChart.qjson +1103 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QCaptcha.qjson +409 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QDocumentViewer.qjson +149 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QFrameExample.qjson +213 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QIdleTimer.qjson +221 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomRotate.qjson +432 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/VList_NavMenu.qjson +3008 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/alertSamplePage.qjson +450 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/badge.qjson +151 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/breadcrumbs.qjson +563 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/button.qjson +1658 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/cellTemplate.qjson +96 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/combobox.qjson +109 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/comboboxSelected.qjson +119 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/createChildren.qjson +411 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/createClosedPanes.qjson +265 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/creditcard.qjson +49 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/crypto.qjson +5632 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/customStore.qjson +157 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/deleteComponent.qjson +501 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/divider.qjson +180 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridLines.qjson +121 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridRemove.qjson +209 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxMasterDetail.qjson +257 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxRowDragging.qjson +175 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dynamicComp.qjson +156 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/email.qjson +177 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/encoding.qjson +304 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/images.qjson +1379 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/images_olddd.qjson +1366 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/number.qjson +169 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/number_VTextarea.qjson +163 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/onlyAlphabetic.qjson +164 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/parentPage.qjson +351 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/pipeline.qjson +78 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/pipelineSample.qjson +410 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/placeQidDynamic.qjson +289 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/progress-circular.qjson +1014 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/samplePageLottie.qjson +696 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/index.md +153 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/13-application.md +164 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/alert-component.md +91 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/appSettings.md +204 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +63 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +71 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-intellisense.md +42 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/global-localization.md +78 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/loading-component.md +61 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/local-proxy-file.md +62 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/pipeline.md +139 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/settings-file.md +66 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/style-file.md +58 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/theme.md +58 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/components.md +105 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/container-configuration.md +157 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md +169 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/events-and-scripting.md +79 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +64 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/localization.md +40 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons.md +111 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/properties.md +77 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure.md +67 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/services.md +68 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/styling-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/styling.md +177 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/validation-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/validation.md +56 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/legacy-track.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +144 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-contracts.json +16920 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-index.json +266 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-styles.json +7128 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/events-system.md +96 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/layout-system.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/mapping-S-vuetify-class.md +103 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/qjson-schema-legacy.md +15 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/qjson-schema.md +188 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/quick-api.json +1746 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/quick-api.md +284 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/styling-system.md +193 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/s-track.md +30 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.claude/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.claude/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.mcp.json +8 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.opencode/opencode.json +19 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/kits/miniapp-app-kit/.opencode/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/miniapp-app-kit/AGENTS.md +24 -0
- package/dist/studio-cli/kits/miniapp-app-kit/CLAUDE.md +24 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +35 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/cli-bridge.md +97 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/render-check.md +48 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/sync.md +50 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/index.md +22 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/README.md +11 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/AllowdDates.qjson +126 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChartEvents.qjson +323 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChartTitle.qjson +411 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChartYTicks.qjson +399 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/CalendarUsageExample.qjson +2 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/ChartLegendFont.qjson +788 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DataTable_customSort.qjson +277 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DoughnutChartEvents.qjson +243 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Icon_Samples.qjson +181 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Instructions.request.qjson +584 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Intersect.qjson +404 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LightBox.qjson +777 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChart.qjson +1049 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChartEvents.qjson +327 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChartPointProps.qjson +416 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/MMDelay.qjson +384 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/MMtrigger.qjson +209 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerExample.qjson +899 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Parallax.qjson +416 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/PieChart.qjson +1103 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QCaptcha.qjson +409 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QDocumentViewer.qjson +149 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QFrameExample.qjson +213 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QIdleTimer.qjson +221 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomRotate.qjson +432 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/VList_NavMenu.qjson +3008 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/alertSamplePage.qjson +450 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/badge.qjson +151 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/breadcrumbs.qjson +563 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/button.qjson +1658 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/cellTemplate.qjson +96 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/combobox.qjson +109 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/comboboxSelected.qjson +119 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/createChildren.qjson +411 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/createClosedPanes.qjson +265 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/creditcard.qjson +49 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/crypto.qjson +5632 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/customStore.qjson +157 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/deleteComponent.qjson +501 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/divider.qjson +180 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridLines.qjson +121 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridRemove.qjson +209 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxMasterDetail.qjson +257 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxRowDragging.qjson +175 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dynamicComp.qjson +156 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/email.qjson +177 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/encoding.qjson +304 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/images.qjson +1379 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/images_olddd.qjson +1366 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/number.qjson +169 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/number_VTextarea.qjson +163 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/onlyAlphabetic.qjson +164 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/parentPage.qjson +351 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/pipeline.qjson +78 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/pipelineSample.qjson +410 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/placeQidDynamic.qjson +289 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/progress-circular.qjson +1014 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/samplePageLottie.qjson +696 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/index.md +112 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/13-application.md +164 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/alert-component.md +91 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/appSettings.md +204 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +63 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +71 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-intellisense.md +42 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/global-localization.md +78 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/loading-component.md +61 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/local-proxy-file.md +62 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/pipeline.md +139 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/settings-file.md +66 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/style-file.md +58 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/theme.md +58 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/components.md +105 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/container-configuration.md +157 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md +169 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/events-and-scripting.md +79 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +64 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/localization.md +40 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons.md +111 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/properties.md +77 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure.md +67 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/services.md +68 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/styling-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/styling.md +177 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/validation-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/validation.md +56 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/legacy-track.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +144 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-contracts.json +16920 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-index.json +266 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-styles.json +7128 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/events-system.md +96 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/layout-system.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/mapping-S-vuetify-class.md +103 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/qjson-schema-legacy.md +15 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/qjson-schema.md +188 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/quick-api.json +1746 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/quick-api.md +284 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/styling-system.md +193 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/s-track.md +30 -0
- package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/mobile-app-kit/.claude/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/kits/mobile-app-kit/.claude/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/mobile-app-kit/.mcp.json +8 -0
- package/dist/studio-cli/kits/mobile-app-kit/.opencode/opencode.json +19 -0
- package/dist/studio-cli/kits/mobile-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/kits/mobile-app-kit/.opencode/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/mobile-app-kit/AGENTS.md +23 -0
- package/dist/studio-cli/kits/mobile-app-kit/CLAUDE.md +23 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/index.md +5 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +2 -2
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +3 -3
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/components.md +22 -14
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +4 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +4 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-index.json +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/layout-system.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/styling-system.md +1 -1
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/index.md +5 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +2 -2
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +3 -3
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/components.md +22 -14
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +1 -1
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +1 -1
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +4 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +4 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-index.json +1 -1
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/layout-system.md +1 -1
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/styling-system.md +1 -1
- package/dist/studio-cli/src/control/kitInstall.js +28 -1
- package/dist/studio-cli/src/control/kitInstall.js.map +1 -1
- package/dist/studio-cli/src/control/pull.js +6 -3
- package/dist/studio-cli/src/control/pull.js.map +1 -1
- package/dist/studio-cli/src/version.js +1 -1
- package/package.json +1 -1
- package/dist/studio-cli/kits/super-app-kit/.ai-kit/coming-soon.md +0 -0
- package/dist/studio-cli/kits/super-app-kit/AGENTS.md +0 -0
- package/dist/studio-cli/kits/super-app-kit/CLAUDE.md +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Theme · the app's named colors and fonts
|
|
2
|
+
|
|
3
|
+
The app's design tokens: a set of **named colors** and **named fonts**, each with a light and optional dark variant. Pages don't hard-code hex values — they pick a theme entry in the Style tab, so re-theming the app is one file change.
|
|
4
|
+
|
|
5
|
+
Selected in **App Settings → Themes** → [appSettings.md](appSettings.md).
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
One theme file holds **several themes**; each theme has a light variant and an optional dark one; each variant carries colors and fonts.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
theme file
|
|
13
|
+
└─ themes[]
|
|
14
|
+
├─ name
|
|
15
|
+
├─ lightTheme
|
|
16
|
+
│ ├─ colors[] { name, color, allowGradient }
|
|
17
|
+
│ └─ fonts[] { fontClassName, configs }
|
|
18
|
+
└─ darkTheme? (same shape)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
A font's `configs` carry `fontFamily`, `fontSize`, `fontStyle`, `fontWeight`, `fontColor`, `displayWeight` and `combinedFont`. Weights run `Thin - 100` … `Weight - 1000`.
|
|
22
|
+
|
|
23
|
+
Alongside the file selection, App Settings stores which theme is the **default** — the one the app starts with.
|
|
24
|
+
|
|
25
|
+
## How it reaches your pages
|
|
26
|
+
|
|
27
|
+
Theme colors and fonts show up as **selectable options in the Style tab**; choosing one writes into the node's `S` object (a theme font lands as `combinedFont` / `ThemeFont`). There is no separate "theme" syntax in a page → [../styling.md](../styling.md).
|
|
28
|
+
|
|
29
|
+
So the chain is: theme file → App Settings selection → Style tab options → `S` on your nodes.
|
|
30
|
+
|
|
31
|
+
## Switching at runtime
|
|
32
|
+
|
|
33
|
+
| Call | Does |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `quick.Quick.theme.setTheme(name, isLight?)` | Switch to a theme by name; `isLight` picks the light or dark variant. |
|
|
36
|
+
| `quick.Quick.theme.getThemeList()` | The available theme names. |
|
|
37
|
+
| `quick.Quick.theme.addTheme(name)` | Add a theme at runtime. |
|
|
38
|
+
| `quick.Quick.theme.removeTheme(name)` | Remove one. |
|
|
39
|
+
|
|
40
|
+
Dark mode is a **variant of a theme**, not a separate theme — switch with the `isLight` flag rather than maintaining two theme entries.
|
|
41
|
+
|
|
42
|
+
## Migration on older apps
|
|
43
|
+
|
|
44
|
+
Apps built before themes became shareable files kept their theme inline in App Settings, with no theme file at all. Those apps get a **Theme Migration Required** prompt on the Themes tab and a **Migrate** button that lifts the inline theme into a real theme file.
|
|
45
|
+
|
|
46
|
+
Until it is migrated the theme setting counts as unassigned — the tab is flagged and **Export and Publish are blocked**. You cannot migrate from the CLI; report it and let the user press Migrate in Studio.
|
|
47
|
+
|
|
48
|
+
## Fonts
|
|
49
|
+
|
|
50
|
+
Custom fonts are added as files and then become selectable in the Style tab's Text section. The documented formats are `.woff`, `.woff2` and `.ttf` (`.otf` is also handled by the platform's font pipeline).
|
|
51
|
+
|
|
52
|
+
## Rules that prevent the common failures
|
|
53
|
+
|
|
54
|
+
- Don't hard-code colors in `S` when the theme defines a named one — you break re-theming and dark mode.
|
|
55
|
+
- Dark mode comes from the theme's dark variant; don't build a second theme to fake it.
|
|
56
|
+
- A theme file that exists but is not selected in App Settings does nothing.
|
|
57
|
+
- On an unmigrated app, fix the migration before anything else — every other theme change is moot until then.
|
|
58
|
+
- Theme values surface **through the Style tab into `S`**; there is no page-level theme override syntax to author by hand.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Components (how to use)
|
|
2
|
+
|
|
3
|
+
Pick the `T` from [reference/component-catalog.md](../reference/component-catalog.md) / [reference/component-index.json](../reference/component-index.json). The catalog has the full list and per-component criticals; this file shows the build patterns you reach for most.
|
|
4
|
+
|
|
5
|
+
## QLabel (text)
|
|
6
|
+
```json
|
|
7
|
+
{ "T": "QLabel", "P": { "ID": { "H": "lblTitle", "T": "prop" },
|
|
8
|
+
"text": { "H": "'Page Title'", "T": "prop" },
|
|
9
|
+
"class": { "H": "'text-h5 font-weight-bold primary--text'", "T": "class" } },
|
|
10
|
+
"E": {}, "C": {}, "O": { "cType": "slot" }, "_Editor": { "eID": "lblTitle" } }
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Button with label (VBtn + child QLabel)
|
|
14
|
+
```json
|
|
15
|
+
{ "T": "VBtn", "P": { "ID": { "H": "btnSave", "T": "prop" },
|
|
16
|
+
"color": { "H": "'primary'", "T": "prop" },
|
|
17
|
+
"depressed": { "H": "true", "T": "prop" } },
|
|
18
|
+
"E": { "click": { "H": "quick.MM.trigger('save');\r\n", "P": "mouseEvent:unknown | undefined", "HL": "TS" } },
|
|
19
|
+
"C": { "default": { "c": [
|
|
20
|
+
{ "T": "QLabel", "P": { "ID": { "H": "lblSave", "T": "prop" },
|
|
21
|
+
"text": { "H": "'Kaydet'", "T": "prop" },
|
|
22
|
+
"class": { "H": "'white--text font-weight-bold'", "T": "class" } },
|
|
23
|
+
"E": {}, "C": {}, "O": { "cType": "slot" }, "_Editor": { "eID": "lblSave" } }
|
|
24
|
+
], "cType": "slot" } },
|
|
25
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "btnSave" } }
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Icon (note the PType)
|
|
29
|
+
```json
|
|
30
|
+
{ "T": "VIcon", "P": { "ID": { "H": "icEye", "T": "prop" },
|
|
31
|
+
"text": { "H": "'mdi-eye'", "T": "text" } },
|
|
32
|
+
"E": {}, "C": {}, "O": { "cType": "slot" }, "_Editor": { "eID": "icEye" } }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## DataTable (headers/items in props, scoped action slot)
|
|
36
|
+
```json
|
|
37
|
+
{ "T": "VDataTable", "P": { "ID": { "H": "tblItems", "T": "prop" },
|
|
38
|
+
"headers": { "H": "[{text='Name', value='name', sortable=true}, {text='Actions', value='actions', sortable=false, align='center'}]", "T": "prop" },
|
|
39
|
+
"items": { "H": "[]", "T": "prop" },
|
|
40
|
+
"itemsPerPage": { "H": "10", "T": "prop" } },
|
|
41
|
+
"E": { "click:row": { "H": "quick.store.set('selected', index);\r\n", "P": "index:any,row:any", "HL": "TS" } },
|
|
42
|
+
"C": { "item.actions": { "c": [ /* VBtn with item.<field> bindings */ ], "cType": "scopedSlot" } },
|
|
43
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "tblItems" } }
|
|
44
|
+
```
|
|
45
|
+
- `headers`/static `items` are QScript props with `=` keys. Dynamic rows: `components.tblItems.items = rows;` in a callback.
|
|
46
|
+
- `click:row` → `index` is the row data object.
|
|
47
|
+
|
|
48
|
+
## Dialog (open/close + non-persistent close)
|
|
49
|
+
```json
|
|
50
|
+
{ "T": "VDialog", "P": { "ID": { "H": "dlgDetail", "T": "prop" },
|
|
51
|
+
"width": { "H": "'700px'", "T": "prop" },
|
|
52
|
+
"persistent": { "H": "false", "T": "prop" },
|
|
53
|
+
"Render": { "H": "true", "T": "prop" }, "eager": { "H": "true", "T": "prop" } },
|
|
54
|
+
"E": { "click:outside": { "H": "components.dlgDetail.qValue=false;\r\n", "HL": "TS" } },
|
|
55
|
+
"C": { "default": { "c": [ /* VCard content */ ], "cType": "slot" } },
|
|
56
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "dlgDetail" } }
|
|
57
|
+
```
|
|
58
|
+
Open: `components.dlgDetail.qValue = true;`. Add `Render:true`+`eager:true` to touch inner components before opening.
|
|
59
|
+
|
|
60
|
+
## Tabs (VTab + VTabItem sibling pairs)
|
|
61
|
+
```json
|
|
62
|
+
{ "T": "VTabs", "P": { "ID": { "H": "tabsMain", "T": "prop" } },
|
|
63
|
+
"E": {}, "C": { "default": { "c": [
|
|
64
|
+
{ "T": "VTab", "P": { "ID": { "H": "tabGeneral", "T": "prop" } }, "E": {},
|
|
65
|
+
"C": { "default": { "c": [ /* QLabel 'General' */ ], "cType": "slot" } },
|
|
66
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "tabGeneral" } },
|
|
67
|
+
{ "T": "VTabItem", "P": { "ID": { "H": "tabItemGeneral", "T": "prop" } }, "E": {},
|
|
68
|
+
"C": { "default": { "c": [ /* VContainer > VRow > VCol > content */ ], "cType": "slot" } },
|
|
69
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "tabItemGeneral" } }
|
|
70
|
+
/* , VTab 'Details', VTabItem 'Details', … */
|
|
71
|
+
], "cType": "slot" } },
|
|
72
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "tabsMain" } }
|
|
73
|
+
```
|
|
74
|
+
- `VTab` and `VTabItem` are **siblings** in `VTabs.C.default.c`, ordered as header/panel pairs: `VTab₁, VTabItem₁, VTab₂, VTabItem₂, …`. `VTabItem` is **never** a child of `VTab`.
|
|
75
|
+
- Every `VTab` has exactly one `VTabItem` in the same group — same count, same order.
|
|
76
|
+
- `VTab` holds only the visible label (a child `QLabel`). `VTabItem` holds that tab's page content.
|
|
77
|
+
- Panel content: `VTabItem > VContainer > VRow > VCol > content`. Don't put content directly in `VTabItem`.
|
|
78
|
+
- Put the `VTabItem`s directly in `VTabs`, paired with their `VTab`s.
|
|
79
|
+
- The bundled examples show the pairing correctly but put a bare `VBtn` (or no `VCol`) in the panel — that's a minimal demo, not the content pattern.
|
|
80
|
+
|
|
81
|
+
## Select / Autocomplete
|
|
82
|
+
```json
|
|
83
|
+
"items": { "H": "[{text='Istanbul', value=1}, {text='Ankara', value=2}]", "T": "prop" }
|
|
84
|
+
```
|
|
85
|
+
For service data prefer raw items + `itemText`/`itemValue`/`returnObject:true`.
|
|
86
|
+
|
|
87
|
+
## Pagination
|
|
88
|
+
`length`/`totalVisible` are string values; `input` handler starts with `quick.this.qValue = number;` (`"P":"number:number"`).
|
|
89
|
+
|
|
90
|
+
## Block Component (embedding another qjson page)
|
|
91
|
+
Place at `pJson` root level — **not** inside VContainer. Minimal node; no Ghost child, no `dynProps`.
|
|
92
|
+
```json
|
|
93
|
+
{ "T": "CustomComponent", "P": {
|
|
94
|
+
"ID": { "H": "blockMyPage", "T": "prop" },
|
|
95
|
+
"QJsonPath": { "H": "'<<qjson:path/to/page>>'", "T": "prop" } },
|
|
96
|
+
"E": {}, "C": {}, "O": {}, "_Editor": { "eID": "blockMyPage" } }
|
|
97
|
+
```
|
|
98
|
+
`QJsonPath` format: `'<<qjson:path>>'` — project-relative path without extension. Root-level page: `<<qjson:page-name>>`; nested: `<<qjson:folder/page-name>>`. Studio stores these internally as model IDs; in files you always write the path form — never a raw ID.
|
|
99
|
+
|
|
100
|
+
**The embedded page must itself be a block component in Studio.** If it isn't one yet, it must be converted on the Studio side (via the workspace's tooling). This applies only to block-component embeds, not to service-caller embeds (below).
|
|
101
|
+
|
|
102
|
+
## Messaging / service component / Ghost
|
|
103
|
+
`Messaging` (`O.cType:"child"`) is the event hub. A project **service caller** `CustomComponent` (different from a block component — has `O:{cType:"child",dynProps:true}` and a `Ghost` child) embeds a service-proxy `.qjson` via `QJsonPath`. See [services.md](services.md) and [page-skeletons.md](page-skeletons.md).
|
|
104
|
+
|
|
105
|
+
For any prop/event/slot not shown here, consult [reference/component-catalog.md](../reference/component-catalog.md); for Vuetify components, Vuetify 2 semantics apply.
|
package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/container-configuration.md
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Container Configuration · calling the host from a page
|
|
2
|
+
|
|
3
|
+
An app that runs inside a host — a shell, a native wrapper, a portal — can call functions the host exposes.
|
|
4
|
+
Which functions exist is not discovered at runtime: the app **declares** them in a **Container
|
|
5
|
+
Configuration**, and each declared entry becomes a method on `quick.container`.
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
const res = await (<any>quick.container).SomeHostFunction();
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
A Container Configuration is a **model**, not a setting file. It is created from **+ Add New → Application
|
|
12
|
+
Configuration → Container Configuration**, stored as a `.container` file, and is **never selected in App
|
|
13
|
+
Settings** — it takes effect on its own. Do not confuse it with the **Container Services File**, the JS
|
|
14
|
+
module of low-level callbacks the runtime calls → [appSettings/container-services-file.md](appSettings/container-services-file.md).
|
|
15
|
+
|
|
16
|
+
Each entry also carries a **mock**, which is what the function returns while the app runs in Studio. That
|
|
17
|
+
is what lets a page that depends on host data render during development; the real host answers only once
|
|
18
|
+
the app runs inside it.
|
|
19
|
+
|
|
20
|
+
## One container file per app
|
|
21
|
+
|
|
22
|
+
**One container file, and only one.** Look for the existing one before you create anything.
|
|
23
|
+
|
|
24
|
+
Studio does not stop you from making a second — it merges the functions of *every* container model into one
|
|
25
|
+
set, last one wins by `funcName`. So a second file does not raise an error, it silently shadows entries in
|
|
26
|
+
the first. That is exactly why this is a rule.
|
|
27
|
+
|
|
28
|
+
## Finding or creating it
|
|
29
|
+
|
|
30
|
+
Before a page calls a host function, make sure the file exists and declares what the page calls:
|
|
31
|
+
|
|
32
|
+
1. **Look for it:** any `*.container` file in the workspace outside `.ai-kit/`.
|
|
33
|
+
2. **Found → use it.** Add any function the page needs that is missing. Do not create a second file, and do
|
|
34
|
+
not touch the mocks already in it. If it is readonly, run `studio startWorking <file>` first.
|
|
35
|
+
3. **Not found → create it:**
|
|
36
|
+
1. Create `hostFunctions.container` at the workspace root containing only the frontmatter:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
---studio-metadata DO NOT EDIT---
|
|
40
|
+
id: new
|
|
41
|
+
settingKey: container
|
|
42
|
+
---studio-metadata DO NOT EDIT---
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
2. `studio push`. Studio creates the Container Configuration and writes its real `id` and a starter body
|
|
46
|
+
back into the file.
|
|
47
|
+
3. Replace the body — everything below the frontmatter — with your function declarations. Leave the
|
|
48
|
+
frontmatter as Studio wrote it.
|
|
49
|
+
4. `studio push` again.
|
|
50
|
+
|
|
51
|
+
If push rejects `settingKey: container`, stop and ask the user to create one in Studio (**+ Add New →
|
|
52
|
+
Application Configuration → Container Configuration**) and pull it, then continue from step 3.
|
|
53
|
+
|
|
54
|
+
## What an entry looks like
|
|
55
|
+
|
|
56
|
+
The body is a single `{ "functions": [ … ] }` array. Each entry:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"funcName": "SomeHostFunction",
|
|
61
|
+
"parameters": [],
|
|
62
|
+
"returnValue": {
|
|
63
|
+
"objectContent": "{ isSuccess: boolean, retVal: { … } }",
|
|
64
|
+
"returnValueType": "object"
|
|
65
|
+
},
|
|
66
|
+
"mock": {
|
|
67
|
+
"mockBody": "{\"isSuccess\": true, \"retVal\": {}}",
|
|
68
|
+
"mockType": "static"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
- `funcName` is the method name the page calls. It must match exactly.
|
|
74
|
+
- `returnValue.objectContent` is the return shape, written as a TypeScript type string. Studio parses it to
|
|
75
|
+
generate the mock, and understands object literals, `Array<T>` / `T[]` and the primitives —
|
|
76
|
+
**not union types and not optional (`?`) fields**. Either of those yields `null` or an "unknown type"
|
|
77
|
+
placeholder in the generated mock, so keep the shape plain and make every field concrete.
|
|
78
|
+
- `mock.mockBody` is a **JSON string**, not an object — the quotes inside are escaped.
|
|
79
|
+
- `mockType` is `"static"`.
|
|
80
|
+
|
|
81
|
+
## Calling a function
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
async function loadFromHost() {
|
|
85
|
+
try {
|
|
86
|
+
const res = await (<any>quick.container).SomeHostFunction();
|
|
87
|
+
if (res?.isSuccess !== true) {
|
|
88
|
+
showError("Bilgiler alınamadı.");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
quick.store.set('$value', res.retVal.someField);
|
|
92
|
+
} catch (err) {
|
|
93
|
+
quick.EM.trace("SomeHostFunction failed: " + err);
|
|
94
|
+
showError("Servisle iletişim kurulamadı.");
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
function showError(message: string) {
|
|
99
|
+
components.errorLbl.text = message;
|
|
100
|
+
components.failDia.qValue = true;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
loadFromHost();
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- **Call through `(<any>quick.container)`.** `studio buildQjson` cannot see the container file and types
|
|
107
|
+
`quick.container` as `{}`, so a bare `quick.container.SomeHostFunction()` fails validation with
|
|
108
|
+
*Property 'SomeHostFunction' does not exist on type '{}'*. The cast changes only the type check — do not
|
|
109
|
+
"fix" it away. It also means validation will **not** catch a call to a function the file does not
|
|
110
|
+
declare: that surfaces only at runtime.
|
|
111
|
+
- **A function a page calls must be declared in the container file.** Adding the call is not enough.
|
|
112
|
+
- **Handle both failure shapes.** A call can reject, or resolve with `isSuccess !== true`. Handle both and
|
|
113
|
+
show the user an error rather than rendering empty fields.
|
|
114
|
+
- **Several calls run one after another.** `await` each before starting the next. Firing them in parallel
|
|
115
|
+
(`Promise.all`, or several un-awaited calls) does not work.
|
|
116
|
+
- **Fetch in `PostRender`** when the result populates the page, so the tree exists when the value arrives.
|
|
117
|
+
- **Handlers are TypeScript.** Set `"HL":"TS"` on every one — the cast is TypeScript syntax.
|
|
118
|
+
|
|
119
|
+
## The mocks belong to the user
|
|
120
|
+
|
|
121
|
+
Each entry's `mock.mockBody` is what the function returns while the app runs in Studio. Any values a
|
|
122
|
+
template or a starter body ships with are placeholders: the user changes them in Studio's Container
|
|
123
|
+
Configuration editor to try other cases.
|
|
124
|
+
|
|
125
|
+
- **Never reset a mock the user has changed.**
|
|
126
|
+
- **Never put real customer data in a mock.**
|
|
127
|
+
|
|
128
|
+
## `quick.Quick.host.trigger` is the deprecated predecessor
|
|
129
|
+
|
|
130
|
+
The same calls used to be made by name through `host.trigger`, and most existing pages still look like this:
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
quick.Quick.host.trigger("SomeHostFunction", {}).then(response => {
|
|
134
|
+
if (response.isSuccess === true) {
|
|
135
|
+
let value = response.retVal["someField"];
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The payload shape is the same. Several calls on such a page are nested inside each other's `.then()`, for
|
|
141
|
+
the same reason new code awaits them in sequence.
|
|
142
|
+
|
|
143
|
+
- **Leave existing calls as they are** unless the user asks you to migrate the page.
|
|
144
|
+
- **Anything you add is `quick.container`** — even on a page that otherwise uses `host.trigger`. Make sure
|
|
145
|
+
the function is declared in the container file.
|
|
146
|
+
- **`host.trigger` calls do not respond in Studio at all.** Only `quick.container` calls answer, from the
|
|
147
|
+
mocks. A page built on `host.trigger` cannot be fully verified by rendering it locally — say so when you
|
|
148
|
+
report.
|
|
149
|
+
|
|
150
|
+
## Rules
|
|
151
|
+
|
|
152
|
+
- New code calls the host through `(<any>quick.container)`, never `quick.Quick.host.trigger`.
|
|
153
|
+
- One container file per app. Look for it before creating one; never create a second.
|
|
154
|
+
- A function a page calls must be declared in that file.
|
|
155
|
+
- Don't overwrite mocks the user has edited, and don't put real customer data in a mock.
|
|
156
|
+
- **Do not invent function names or payload fields.** The host defines them. If you need one that is not
|
|
157
|
+
declared, ask the user for the function's name, parameters, return fields and a mock body.
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Dynamic Components (`createComponent`)
|
|
2
|
+
|
|
3
|
+
Quick's **repeater** — the `v-for` / list-rendering equivalent. For any list, feed, menu, or set of repeated rows/cards built from an array, clone a **template** component once per record. There is no `{{var}}` interpolation and no array-valued prop: clones receive a `dataSource`, read inside the template as `data.*`.
|
|
4
|
+
|
|
5
|
+
Use it whenever the same subtree repeats and its content changes at runtime — **even at a small fixed count**. The alternative (N hand-authored trees, then dozens of property assignments by id from a handler) is what this replaces.
|
|
6
|
+
|
|
7
|
+
Working references: `examples/style/authorizationDashboard.qjson` (nested, with rebuild-on-change), `examples/style/dynamicComp.qjson`, `examples/style/placeQidDynamic.qjson`.
|
|
8
|
+
|
|
9
|
+
## Where the build code may run — read this first
|
|
10
|
+
|
|
11
|
+
**`components[...]` does not resolve inside a `Messaging` handler** — not in `PreRender`, not in `EndRender`. `createComponent` still returns a real component, so nothing throws and nothing appears in the console, but `placeQID` resolves to nothing and **no clone reaches the DOM**. It looks exactly like success.
|
|
12
|
+
|
|
13
|
+
Seed data in `Messaging.PreRender`; put the **build loop in a real control's handler** (the button/tab that shows the list).
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// ❌ Messaging PreRender / EndRender → returns OK, places nothing
|
|
17
|
+
// ✅ VBtn click handler → clones land in placeQID
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
To paint on first load, give the control that owns the list the same handler body and call it from there.
|
|
21
|
+
|
|
22
|
+
## Model
|
|
23
|
+
|
|
24
|
+
1. Park templates in a **container with `"Render": {"H": "false"}`**. Hiding the parent is enough — the templates inside need no `Render` prop of their own. The container may sit anywhere: nested inside the page's `VContainer` works, so a new page still satisfies the single-content-root rule (s-track S4).
|
|
25
|
+
2. Bind template props to `data.<field>`.
|
|
26
|
+
3. For each item call `quick.Quick.createComponent` with a unique `newCompQID` and the container to insert into (`placeQID`).
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
VContainer id=rowTemplateBox Render=false ← hidden container
|
|
30
|
+
VCard id=rowTemplate ← template
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`Render:false` only applies at **runtime / Preview mode**. In Studio's edit canvas the template still draws, with every `data.*` binding resolving to `null` — expected, not a bug.
|
|
34
|
+
|
|
35
|
+
A template may instead live inline where it renders (a `VListItem` inside its own `VList`), but then it shows as a real row: only do that when a visible first row is wanted.
|
|
36
|
+
|
|
37
|
+
## Create
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
quick.Quick.createComponent({
|
|
41
|
+
templateCompQID: string, // required — id of the template to clone
|
|
42
|
+
newCompQID: string, // required — unique suffix for this clone
|
|
43
|
+
dataSource?: any, // read as data.* inside the template
|
|
44
|
+
place?: 'Before' | 'After' | 'Default', // default 'Default' = end of page
|
|
45
|
+
placeQID?: string, // container to insert into; omit → relative to the template
|
|
46
|
+
childName?: string // names the child; documented as readable via data.newData (no example in this workspace)
|
|
47
|
+
}): IComponent | undefined | null
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`place` and `placeQID` are optional. `place` is the `ElementLocation` enum; a bare string works but cast `<any>'Before'` if TS complains.
|
|
51
|
+
|
|
52
|
+
**It returns the created component.** Capturing that return value and looking the clone up later by id are both valid — capture it when you are setting the clone up right there, look it up when you reach the clone from somewhere else (see *Reaching a clone afterwards*).
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
let index = 0;
|
|
56
|
+
liste.forEach(function (r: any) {
|
|
57
|
+
quick.Quick.createComponent({
|
|
58
|
+
templateCompQID: 'rowTemplate',
|
|
59
|
+
newCompQID: 'r' + index,
|
|
60
|
+
placeQID: 'rowList',
|
|
61
|
+
place: <any>'Before',
|
|
62
|
+
dataSource: r
|
|
63
|
+
});
|
|
64
|
+
index = index + 1;
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Clone ids
|
|
69
|
+
|
|
70
|
+
The clone's root id is **`templateCompQID + '_' + newCompQID`** — `rowTemplate_r0` above.
|
|
71
|
+
|
|
72
|
+
**Every descendant is suffixed the same way and keeps its own base id.** A child authored as `rowTemplateTitle` becomes **`rowTemplateTitle_r0`** — *not* `rowTemplate_r0_Title`. That is how you address one field of one row.
|
|
73
|
+
|
|
74
|
+
## Template prop bindings
|
|
75
|
+
|
|
76
|
+
In **props**, reference clone data directly as `data.<field>`:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
"text": { "H": "data.title", "T": "prop" }
|
|
80
|
+
"text": { "H": "data.dev + ' · ' + data.code", "T": "prop" }
|
|
81
|
+
"class": { "H": "data.sevCls", "T": "class" }
|
|
82
|
+
"color": { "H": "data.bar", "T": "prop" }
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Verified working per clone: `text`, `class`, `color`, a `VIcon`'s icon name (PType `text`), and string-concat expressions.
|
|
86
|
+
|
|
87
|
+
In **events**, declare it first: `declare let data;` then use `data.field`.
|
|
88
|
+
|
|
89
|
+
A purely structural template (a divider, a spacer) needs no `dataSource` — just clone it.
|
|
90
|
+
|
|
91
|
+
**`S` styling cannot vary per clone.** `S` holds literal values with no expression support, so every clone inherits the template's `S` verbatim. Route per-row visual differences through the `class` or `color` prop, as above — and set the corresponding `S` param to `""`, since `S` renders as an inline style and would otherwise beat the prop. (The style validator flags these as `prop-to-S`; for data-bound values that warning is unavoidable.)
|
|
92
|
+
|
|
93
|
+
## Reaching a clone afterwards
|
|
94
|
+
|
|
95
|
+
Any of these work; pick by what you have in hand — from a control's handler, not from `Messaging`.
|
|
96
|
+
|
|
97
|
+
```typescript
|
|
98
|
+
components['rowTemplate_r0'] // by compound id
|
|
99
|
+
quick.getComponent('rowTemplate_r0') // when unreachable by reference
|
|
100
|
+
quick.Quick.findCreateComponentRelative(quick.this, 'rowTemplate') // from a child inside the clone
|
|
101
|
+
quick.Quick.getComponentIdByInstance(instance) // instance → id
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`findCreateComponentRelative(sourceComp, targetCompID)` takes the **template** id and a child instance — this is how a handler on a cloned control identifies *which* clone it fired from:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// click handler on a button inside a cloned row — removes that row
|
|
108
|
+
const component = quick.Quick.findCreateComponentRelative(quick.this, 'tmpCrsItemLatePayment');
|
|
109
|
+
quick.Quick.deleteComponent(component);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Re-rendering when the data changes
|
|
113
|
+
|
|
114
|
+
There is no reactive rebind — nothing repaints when the source array changes. **Delete the clones and rebuild**, guarding on existence first:
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
let i: number = 0;
|
|
118
|
+
while (i < 20) {
|
|
119
|
+
let old: any = components['rowTemplate_r' + i];
|
|
120
|
+
if (old) { quick.Quick.deleteComponent(old); }
|
|
121
|
+
i = i + 1;
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Verified: switching data sets this way holds the clone count and total node count exactly steady across repeated switches — nothing accumulates.
|
|
126
|
+
|
|
127
|
+
`deleteComponent` removes the component **and all its children** and breaks the parent connection — deleting a cloned container drops everything cloned into it.
|
|
128
|
+
|
|
129
|
+
After mutating a component in place, `quick.Quick.updateComponent(instance)` refreshes it.
|
|
130
|
+
|
|
131
|
+
## Nested creation (a cloned container holding cloned rows)
|
|
132
|
+
|
|
133
|
+
Create the container clone first, then pass **its compound id** as the `placeQID` of the children:
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
quick.Quick.createComponent({
|
|
137
|
+
templateCompQID: 'cardTable', newCompQID: 'newUserTable',
|
|
138
|
+
placeQID: 'newUserTableContainer', place: <any>'Before'
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
for (let i = 0; i < keys.length; i += 2) {
|
|
142
|
+
quick.Quick.createComponent({
|
|
143
|
+
templateCompQID: 'cardTableRow', newCompQID: 'newUserRow' + i,
|
|
144
|
+
dataSource: { col1: keys[i], col2: data[keys[i]], col3: keys[i+1] ?? '', col4: data[keys[i+1]] ?? '' },
|
|
145
|
+
placeQID: 'cardTable_newUserTable', // ← the clone made above
|
|
146
|
+
place: <any>'Before'
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Related APIs
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
quick.Quick.setComponentsProperty(compId, propertyName, propertyValue); // sets a prop, cascading to children
|
|
155
|
+
quick.Quick.setComponentClass(instance, ['cls1', 'cls2']); // set classes via API
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`quick.Quick.createChildren({ parentCompQId, templateChildName, newChildName? })` is **not** a general repeater — it adds a named child to a container that defines template children of its own (e.g. a `GoldenLayout` pane). For repeated rows/cards use `createComponent`.
|
|
159
|
+
|
|
160
|
+
## Rules (each prevents a real failure)
|
|
161
|
+
|
|
162
|
+
1. **Build from a control's handler, never from `Messaging`** — `components[...]` is empty there and clones silently go nowhere.
|
|
163
|
+
2. **`newCompQID` must be unique.** A duplicate does not error — the existing component is **replaced and becomes permanently unreachable**. Suffix with the loop index.
|
|
164
|
+
3. `placeQID` must be a real container with a `default` slot. A container whose only content is a `Ghost` placeholder is the normal target; a leaf `Ghost` itself is not.
|
|
165
|
+
4. Templates go in a `Render:false` container unless you want the template visible. It need not be root-level.
|
|
166
|
+
|
|
167
|
+
## When NOT to use this
|
|
168
|
+
|
|
169
|
+
Tabular data → `VDataTable.items` (don't clone rows). Genuinely static chrome that never changes at runtime → author it directly. Everything else that repeats — cards, list rows, feed items, menu entries — clone it, whether the count is 5 or unknown.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Events & Scripting (`E`)
|
|
2
|
+
|
|
3
|
+
The `E` block holds behavior. Each event is `{ "H": code, "P"?: params, "HL"?: lang, "C"?, "I"?, "PE"?, "EV"?, "TO"? }`.
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
"E": {
|
|
7
|
+
"click": {
|
|
8
|
+
"H": "quick.EM.trace('clicked');\r\n",
|
|
9
|
+
"P": "mouseEvent:unknown | undefined",
|
|
10
|
+
"HL": "TS"
|
|
11
|
+
},
|
|
12
|
+
"fetchData": {
|
|
13
|
+
"H": "let req = <any>{};\r\nreq.url='/api/items';\r\nreq.http='GET';\r\nreq.responseField='items';\r\nreq.onSuccess='onItems';\r\nquick.Request.async(req);\r\n",
|
|
14
|
+
"C": true, "HL": "TS"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Event flags — runtime behavior (deep detail in [../reference/events-system.md](../reference/events-system.md)):
|
|
20
|
+
- `C` = **custom**: triggered via `quick.MM.trigger`; the trigger payload is the dataSource (array→first element, object→whole), not name-mapped.
|
|
21
|
+
- `I` = **immediate**: runs synchronously during render instead of being deferred to end-of-render.
|
|
22
|
+
- `PE` = **property event**: injected into the component as a callback prop (chart `labelFormatter`/`tooltipLabel`).
|
|
23
|
+
- `EV` = **externally visible**: exposed to a parent page as `quick.parent.events.<name>`.
|
|
24
|
+
- `TO` = **post-render order**: deferred handlers run sorted by `TO` descending (higher fires first).
|
|
25
|
+
- `HL` = handler language. **Event handlers must use `"HL": "TS"`.** `QS` is for properties/bindings (`P`), not the `E` block.
|
|
26
|
+
|
|
27
|
+
> The whole events/scripting model (lifecycle internals, custom-event params, property/external events, the `quick.return` exception mechanism, compilation) is in **[../reference/events-system.md](../reference/events-system.md)**.
|
|
28
|
+
|
|
29
|
+
## Language: events use TS; props may use QS
|
|
30
|
+
**For every event handler (`E`/`D`), write `"HL": "TS"`.** Do not author event handlers as `QS`, `JS`, `FL`, or `GUI`.
|
|
31
|
+
|
|
32
|
+
**Properties and bindings (`P`) may use `"HL": "QS"`**; QS is their default and is a good fit for short expressions. This property rule does not apply to event handlers.
|
|
33
|
+
|
|
34
|
+
Line breaks in `H` are `\r\n`.
|
|
35
|
+
|
|
36
|
+
## TypeScript handler rules (hard)
|
|
37
|
+
1. **Never native `return`** — use `quick.return(value)` / `quick.return`.
|
|
38
|
+
2. End statements with `;`. Close object literals with `};` before the next statement (a missing `;` after an object literal makes TS parse the next line as a call → "expression is not callable").
|
|
39
|
+
3. **No browser globals**: `window`, `document`, `console`, `setTimeout`, `setInterval`. Use:
|
|
40
|
+
- `quick.EM.trace(...)` instead of `console.log`
|
|
41
|
+
- `quick.MM.delay('evt', { delayTime: 500 })` instead of `setTimeout`
|
|
42
|
+
- `quick.Quick.download(...)` instead of anchor downloads
|
|
43
|
+
4. Reference framework APIs as `quick.X` (see [reference/quick-api.md](../reference/quick-api.md)).
|
|
44
|
+
|
|
45
|
+
> In **QS properties/bindings**, drop `quick.`: write `store.get('x')`, `MM.trigger('evt')`, `Quick.go(...)`. The `quick.` prefix exists only in TS.
|
|
46
|
+
|
|
47
|
+
> Note: some real files use `debugger;`/`setTimeout` in experimental editor pages. Don't copy those — prefer the Quick APIs for portable, compilable handlers.
|
|
48
|
+
|
|
49
|
+
## Parameters (`P`) and declaring data
|
|
50
|
+
- Framework/native event params → declare in `P`: `"P": "number:number"`, `"P": "index:any,row:any"`, `"P": "serviceResponse:any"`. Use the name directly in `H`.
|
|
51
|
+
- Trigger-payload fields (passed via `quick.MM.trigger('evt', [{...}])`) are declared inside `H`.
|
|
52
|
+
- Do **not** declare the same name both in `P` and inside `H` (duplicate identifier).
|
|
53
|
+
|
|
54
|
+
## Page lifecycle (on `Messaging`)
|
|
55
|
+
| Hook | When | Typical use |
|
|
56
|
+
|------|------|-------------|
|
|
57
|
+
| `PreRender` | before render (often `"I": true`) | init store, trigger first fetch |
|
|
58
|
+
| `EndRender` | after render | access/set components |
|
|
59
|
+
| `PostRender` | after prioritized events (`TO` orders them) | |
|
|
60
|
+
| `Restored` | on navigating back | refresh |
|
|
61
|
+
|
|
62
|
+
> ⚠️ **`PreRender` runs before components exist** — `components.*` is not accessible. Write to `store` in `PreRender` and read from it in prop expressions instead: `store.get('key')`. Use `EndRender` or a custom event if you need to set component props/values after render.
|
|
63
|
+
|
|
64
|
+
Keep initialization in **one** hook to avoid duplicate fetches. Custom events live on `Messaging` with `"C": true`, called via `quick.MM.trigger`.
|
|
65
|
+
|
|
66
|
+
## The `quick.*` API
|
|
67
|
+
Everything you can call (network, store, alerts, navigation, validation, dynamic components, dates/money, crypto, …) is indexed in [reference/quick-api.md](../reference/quick-api.md) — scan its member index, then grep the exact signature, params and example for what you picked in [reference/quick-api.json](../reference/quick-api.json).
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
components.myField.qValue = 'x'; // read/write component value
|
|
71
|
+
quick.store.set('key', v); quick.store.get('key'); // page store ('#'=bag,'$'=global,'&'=shared)
|
|
72
|
+
quick.MM.trigger('evt', [{ p: 1 }]); // custom event
|
|
73
|
+
quick.Quick.alert({ title:'T', text:'msg', category:'Info', actionButtons:[{name:'OK', type:'Confirm'}] });
|
|
74
|
+
quick.Quick.go('<<qjson:UNIQUE-ID>>'); // navigate
|
|
75
|
+
quick.return(value); // return from handler
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Service calls in one line of guidance
|
|
79
|
+
Use `quick.Request.async({ url, http, data, responseField, onSuccess, onFail, blockRender })` and read the result in the `onSuccess` event as `response.<responseField>`. Full patterns (incl. project ServiceCaller convention) in [services.md](services.md).
|
package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# STOP — legacy pages cannot be edited in this workspace
|
|
2
|
+
|
|
3
|
+
If the target page's root-level `opt.V` is **missing or `< 2.0`**, it is a legacy page. **Do not edit it.** Tell the user the page is legacy and cannot be authored from a mobile workspace, and make no changes.
|
|
4
|
+
|
|
5
|
+
There is no way to author it correctly here: mobile does not apply the legacy `O.layout` css mechanism, so the page cannot be restyled through it, and `S` does not render on a `V < 2.0` page either. Both style systems are dead ends on that page. Converting it is a migration, not an edit — it needs a decision from the user, not a side effect of the task you were given.
|
|
6
|
+
|
|
7
|
+
## This is not about stray legacy fragments
|
|
8
|
+
|
|
9
|
+
A page with `opt.V >= 2.0` that merely *carries* some `O.layout` (`dOpt`/`class`) is **not** a legacy page. Studio's editor injects those fragments into some components on its own, and on mobile they have no effect at all. That page is an ordinary `S` page:
|
|
10
|
+
|
|
11
|
+
- Author its design in `S`, as normal — go back to `s-track.md`.
|
|
12
|
+
- Never read `O.layout` to work out how the page currently looks; it does not affect the rendering.
|
|
13
|
+
- When you edit such a page, strip its `O.layout` (`dOpt`/`class`) so the page comes out clean.
|
|
14
|
+
|
|
15
|
+
The test is **`opt.V`**, not whether legacy css is present.
|