@stechquick/studio-cli 4.0.3-2
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/clean/domain/infrastructure/ICloudProviderFileSystem.js +5 -0
- package/dist/common/clean/domain/infrastructure/ICloudProviderFileSystem.js.map +1 -0
- package/dist/common/clean/domain/infrastructure/ICrypto.js +5 -0
- package/dist/common/clean/domain/infrastructure/ICrypto.js.map +1 -0
- package/dist/common/clean/domain/infrastructure/ILogger.js +5 -0
- package/dist/common/clean/domain/infrastructure/ILogger.js.map +1 -0
- package/dist/common/clean/domain/infrastructure/IMime.js +5 -0
- package/dist/common/clean/domain/infrastructure/IMime.js.map +1 -0
- package/dist/common/clean/domain/useCases/ICloudProvider.js +3 -0
- package/dist/common/clean/domain/useCases/ICloudProvider.js.map +1 -0
- package/dist/common/clean/domain/useCases/ICloudProviderPublish.js +5 -0
- package/dist/common/clean/domain/useCases/ICloudProviderPublish.js.map +1 -0
- package/dist/common/everything/accessmanager/types.js +8 -0
- package/dist/common/everything/accessmanager/types.js.map +1 -0
- package/dist/common/everything/action/types.js +5 -0
- package/dist/common/everything/action/types.js.map +1 -0
- package/dist/common/everything/befunc/runtimeModels/types.js +5 -0
- package/dist/common/everything/befunc/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/dataSet/runtimemodels/types.js +5 -0
- package/dist/common/everything/dataSet/runtimemodels/types.js.map +1 -0
- package/dist/common/everything/dataType/runtimemodels/types.js +35 -0
- package/dist/common/everything/dataType/runtimemodels/types.js.map +1 -0
- package/dist/common/everything/endpoint/runtimeModels/types.js +5 -0
- package/dist/common/everything/endpoint/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/enum/runtimeModels/types.js +3 -0
- package/dist/common/everything/enum/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/flow/runtimeModels/types.js +7 -0
- package/dist/common/everything/flow/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/restService/runtimeModels/types.js +5 -0
- package/dist/common/everything/restService/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/sla/runtimemodels/types.js +5 -0
- package/dist/common/everything/sla/runtimemodels/types.js.map +1 -0
- package/dist/common/everything/soapService/runtimeModels/types.js +6 -0
- package/dist/common/everything/soapService/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/studio/ui/IStudioUIModelBase.js +3 -0
- package/dist/common/everything/studio/ui/IStudioUIModelBase.js.map +1 -0
- package/dist/common/everything/studio/ui/IStudioUIObjectBase.js +3 -0
- package/dist/common/everything/studio/ui/IStudioUIObjectBase.js.map +1 -0
- package/dist/common/everything/workflow/runtimemodels/types.js +90 -0
- package/dist/common/everything/workflow/runtimemodels/types.js.map +1 -0
- package/dist/common/helpers/objectHelper.js +43 -0
- package/dist/common/helpers/objectHelper.js.map +1 -0
- package/dist/common/helpers/promiseHelper.js +47 -0
- package/dist/common/helpers/promiseHelper.js.map +1 -0
- package/dist/common/helpers/typeHelper.js +3 -0
- package/dist/common/helpers/typeHelper.js.map +1 -0
- package/dist/common/qCloudTemp/announcement.js +3 -0
- package/dist/common/qCloudTemp/announcement.js.map +1 -0
- package/dist/common/qCloudTemp/application.js +3 -0
- package/dist/common/qCloudTemp/application.js.map +1 -0
- package/dist/common/qCloudTemp/applicationCopy.js +3 -0
- package/dist/common/qCloudTemp/applicationCopy.js.map +1 -0
- package/dist/common/qCloudTemp/applicationVersion.js +3 -0
- package/dist/common/qCloudTemp/applicationVersion.js.map +1 -0
- package/dist/common/qCloudTemp/authentication.js +3 -0
- package/dist/common/qCloudTemp/authentication.js.map +1 -0
- package/dist/common/qCloudTemp/authorization.js +4 -0
- package/dist/common/qCloudTemp/authorization.js.map +1 -0
- package/dist/common/qCloudTemp/backoffice.js +3 -0
- package/dist/common/qCloudTemp/backoffice.js.map +1 -0
- package/dist/common/qCloudTemp/exporter.js +3 -0
- package/dist/common/qCloudTemp/exporter.js.map +1 -0
- package/dist/common/qCloudTemp/externalToken.js +3 -0
- package/dist/common/qCloudTemp/externalToken.js.map +1 -0
- package/dist/common/qCloudTemp/feedback.js +3 -0
- package/dist/common/qCloudTemp/feedback.js.map +1 -0
- package/dist/common/qCloudTemp/invitation.js +3 -0
- package/dist/common/qCloudTemp/invitation.js.map +1 -0
- package/dist/common/qCloudTemp/membership.js +3 -0
- package/dist/common/qCloudTemp/membership.js.map +1 -0
- package/dist/common/qCloudTemp/modelDatas.js +3 -0
- package/dist/common/qCloudTemp/modelDatas.js.map +1 -0
- package/dist/common/qCloudTemp/organizationGroupApplication.js +3 -0
- package/dist/common/qCloudTemp/organizationGroupApplication.js.map +1 -0
- package/dist/common/qCloudTemp/quickCloud.js +34 -0
- package/dist/common/qCloudTemp/quickCloud.js.map +1 -0
- package/dist/common/qCloudTemp/storageTypes.js +3 -0
- package/dist/common/qCloudTemp/storageTypes.js.map +1 -0
- package/dist/common/qCloudTemp/symDtoObjects.js +8 -0
- package/dist/common/qCloudTemp/symDtoObjects.js.map +1 -0
- package/dist/common/qCloudTemp/tags.js +3 -0
- package/dist/common/qCloudTemp/tags.js.map +1 -0
- package/dist/common/qCloudTemp/template.js +107 -0
- package/dist/common/qCloudTemp/template.js.map +1 -0
- package/dist/common/qCloudTemp/userPreference.js +3 -0
- package/dist/common/qCloudTemp/userPreference.js.map +1 -0
- package/dist/common/qCloudTemp/userRequest.js +8 -0
- package/dist/common/qCloudTemp/userRequest.js.map +1 -0
- package/dist/common/studioCli/messages.js +14 -0
- package/dist/common/studioCli/messages.js.map +1 -0
- package/dist/common/studioCli/protocolVersion.js +14 -0
- package/dist/common/studioCli/protocolVersion.js.map +1 -0
- package/dist/jobs/src/application/shared/fileUrlCreator.js +72 -0
- package/dist/jobs/src/application/shared/fileUrlCreator.js.map +1 -0
- package/dist/jobs/src/domain/model/IExportJob.js +3 -0
- package/dist/jobs/src/domain/model/IExportJob.js.map +1 -0
- package/dist/studio-cli/src/.ai-kit/.mcp.json +8 -0
- package/dist/studio-cli/src/.ai-kit/AGENTS.md +18 -0
- package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE-legacy.md +29 -0
- package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE-s.md +30 -0
- package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE.md +86 -0
- package/dist/studio-cli/src/.ai-kit/CLAUDE.md +12 -0
- package/dist/studio-cli/src/.ai-kit/README.md +81 -0
- package/dist/studio-cli/src/.ai-kit/agents/qjson-legacy-migrator.md +308 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-events.md +41 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author-legacy.md +29 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author-s.md +29 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author.md +33 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-styling-legacy.md +37 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-styling.md +36 -0
- package/dist/studio-cli/src/.ai-kit/examples/README.md +12 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/AllowdDates.qjson +122 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Avatarlar.qjson +1084 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/BarChart.qjson +1061 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/BarChart_Type_Time_Sample.qjson +344 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/BottomSheetScrollWithHeaderInformation.qjson +1609 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CardTitle.qjson +143 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Charts_Custom_Legend_Sample.qjson +763 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Charts_tooltipLabel_sample.qjson +631 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CheckBoxQvalue.qjson +91 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CheckboxDisabledExample.qjson +153 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Click Outside.qjson +144 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboBoxReset.qjson +839 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxAddItemWithDialog.qjson +296 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxAddItemWithTextField.qjson +186 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxDefaultSelection.qjson +99 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxWithTreeView.qjson +94 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Combobox_SelectAll.qjson +704 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComponentsInteractionExamples.qjson +722 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CookieExamples.qjson +828 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CreateComponent_WithTransmitDataSource_Sample.qjson +749 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Cryptography-with-ivKey.qjson +2159 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Dashboard.qjson +1135 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataExamples.qjson +696 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataStorageExamples.qjson +1296 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTable-Single-select-Multi-Select-TotalCalculation.qjson +441 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableAddRemoveItem.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableBoldHeader.qjson +34 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableEdit.qjson +422 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableFixedColumn.qjson +133 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableIndexExample.qjson +117 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableSearch.qjson +105 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableVerticalBorder.qjson +34 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableWithTooltip.qjson +354 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTable_ChildButtonVisibleSample.qjson +892 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatePickerExampleApp (1).qjson +770 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatePickerInlineExample.qjson +299 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatePickerLocale.qjson +87 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatepickerDatenow.qjson +96 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatepickerExample.qjson +147 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Detailed_Table_Row_Expand.qjson +388 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Detailed_Table_Rows.qjson +114 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogBlockSubPage.qjson +1014 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogExample.qjson +420 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogExampleWith/304/261con.qjson +345 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogWithEagerProp.qjson +129 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DoughnutChart.qjson +1005 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Download.qjson +139 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxColumnChooser.qjson +341 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxColumnFixing.qjson +317 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxColumn_fix_allowFixing.qjson +466 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-DxExport.qjson +225 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-DxFilterRow.qjson +174 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-DxSearchPanel.qjson +170 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-columnAutoWidth.qjson +135 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridArrStoreLiveCon.qjson +201 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridArrStoreLiveConReason.qjson +290 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridExternalFilterCleaning.qjson +358 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridExternalFiltering.qjson +300 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridRowDragging.qjson +257 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_MultipleSelection.qjson +503 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_ServiceCall.qjson +204 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_SimplestGridWithArrayStore.qjson +215 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_SingleSelection.qjson +337 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_allowFixing.qjson +321 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_columnResizingMode.qjson +718 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_hoverStateEnabled.qjson +144 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_onCellClickEvent.qjson +147 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_width_menu.qjson +574 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreeListArrStoreLiveCon.qjson +302 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-color.qjson +237 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-columnreordering.qjson +241 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-editing.qjson +1471 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-extarnelfiltre.qjson +122 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Expansion_Panels.qjson +298 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/FileInput.qjson +228 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Frame_openHtmlContentInFrame.qjson +556 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Highlight_datatable_select.qjson +53 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Icon_Samples.qjson +148 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Instructions.request.qjson +605 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Intersect.qjson +423 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LightBox.qjson +809 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LineChart.qjson +1046 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LineChart_Type_Time_Sample.qjson +340 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ListExample.qjson +475 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LoginPage.qjson +525 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/MMDelay.qjson +356 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/MMtrigger.qjson +195 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/NavigationDrawerExample.qjson +808 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/NavigationDrawerWithAppBar.qjson +1621 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Parallax.qjson +381 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/PermanentStore_Example.qjson +1445 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/PieChart.qjson +1005 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Profile_Card.qjson +345 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ProgressLinear.qjson +547 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QCaptcha.qjson +318 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QDocumentViewer.qjson +41 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QFrameAllowFullScreenExample.qjson +368 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QFrameExample.qjson +117 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QIdleTimer.qjson +100 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QImgZoomRotate.qjson +428 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QImgZoomTypeNextTo.qjson +187 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QImgZoomTypeOn.qjson +187 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLabel_URL.qjson +105 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLabel_URL_Click.qjson +133 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLegend.qjson +501 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLegendBlock.qjson +732 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLegend_unchanged.qjson +746 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QMapExample.qjson +785 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QMenuExample.qjson +68 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QOtp.qjson +979 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QQRCode.qjson +295 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QReCaptcha.qjson +361 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QRichTextExample.qjson +139 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QRichText_Cursor_Sample.qjson +352 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QTutorialFinalDemo.qjson +494 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QVideoExample.qjson +1135 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Qlabel_Props.qjson +1591 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Qmenu-Icon-Img-SizeandColor.qjson +244 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Quick_Bind.qjson +110 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Quick_Bind_Sample.qjson +172 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Rating.qjson +101 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/RenderingComponent_Sample.qjson +1592 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/RequestExamples.qjson +680 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ResetValidation-ResetUsage.qjson +1326 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Resize.qjson +140 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Ripple.qjson +431 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Sparkline.qjson +386 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/State_storing.qjson +286 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/SwitchComponent.qjson +42 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Table_Pagination.qjson +99 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Table_Search.qjson +64 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Table_Select.qjson +106 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ToolTip_props.qjson +2649 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/TooltipDisplayOfVDataTableDataTotal.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/TreeViewExample.qjson +92 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VAppBar.qjson +1681 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VAutocompleteRegex.qjson +45 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VBottomSheet.qjson +429 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VCard.qjson +1945 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VCombobox_customValidation.qjson +290 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable-slot-columnVeriyeG/303/266reRenklendirme.qjson +493 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTableIconExample.qjson +116 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTableItemAggregation.qjson +499 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_Change_FooterPageText.qjson +107 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_Multiple_Select_Control.qjson +50 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_SetGetComboboxValue_.qjson +148 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_SetItemSelect_GetSelection.qjson +627 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_SlotInstances.qjson +362 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_Validation.qjson +226 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_With_QTableCell_Sample.qjson +281 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_customSearchFilter.qjson +255 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_firstColumn_fixedActionsColumn.qjson +216 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_uniqueSlot_itemKey_Object.qjson +545 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDatePicker_AllowdDates.qjson +89 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDialog.qjson +3512 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VExpansionPanel_UsageAndProps.qjson +3811 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFileInput-Slot-VIcon-Dolu.qjson +232 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFileInputGetUploadedContent.qjson +111 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFileInput_ImagePicker.qjson +308 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFooter.qjson +1480 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VForm.qjson +410 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFormActionExample.qjson +2289 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineDatePicker_titleDateFormat.qjson +319 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineDatepickerMaxMin.qjson +36 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineDatepickerReset.qjson +88 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineTimePicker.qjson +149 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VListGroup.qjson +1817 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VList_NavigationMenu.qjson +1636 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VMenu_PopoverInTable.qjson +534 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VMenu_sample.qjson +470 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VStepperExample.qjson +748 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VStepper_vertical.qjson +364 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VSteppers_EditableNonLinear.qjson +658 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VSteppers_LinearWithContinueButton.qjson +719 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextFieldQuickInputFormat.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextFieldValidation.qjson +1087 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_FocusExample.qjson +329 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_Validation_examples.qjson +877 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_customValidation.qjson +159 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValueSample1.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValueSapmle2.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValue_exceptLetters.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValue_specialChars.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_keyDown.qjson +37 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_rangeOfNumber_validation.qjson +55 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextareaQuickInputFormat.qjson +37 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextarea_format_regex_sample.qjson +321 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTimelineExample.qjson +322 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Vcontainer.qjson +417 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VinlineDatePicker.qjson +61 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/V/304/261nlineDatepickerDeleteValue.qjson +304 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/alert.qjson +459 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/alertSamplePage.qjson +455 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/badge copy.qjson +158 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/badge.qjson +158 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/bottomSheetScrollable.qjson +3220 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/breadcrumbs.qjson +587 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/button.qjson +1765 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/cellTemplate.qjson +76 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/combobox.qjson +90 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/comboboxSelected.qjson +118 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/createChildren.qjson +406 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/createClosedPanes.qjson +245 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/creditcard.qjson +28 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/crypto.qjson +5965 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/customFilterUsingCalculateFilterExpressionEvent.qjson +305 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/customStore.qjson +156 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/deleteComponent.qjson +533 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/divider.qjson +185 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDataGridLines.qjson +120 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDataGridRemove.qjson +216 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDatagridHeatMap.qjson +334 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxMasterDetail.qjson +261 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxPaging_withServiceCall.qjson +159 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxRowDragging.qjson +179 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxSummary_dxTotalItem_usage.qjson +219 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxTotalItemCustomizeText.qjson +226 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxTreeList_exportToExcel.qjson +266 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dynamicComp.qjson +162 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/email.qjson +29 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/encoding.qjson +304 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fileInput-1.qjson +904 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fileUploadBlockComponent.qjson +68 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fileUploadServiceCallBlockComp.qjson +128 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/findAndDeleteRelatedDynamicComp.qjson +211 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/first.qjson +57 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fixedActionsColumn.qjson +133 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/formatWithFormatType.qjson +1740 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/getComponent_example.qjson +491 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/globalLocalization.qjson +189 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/goldenLayout.qjson +228 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/images.qjson +1461 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/list.qjson +162 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/localization_AddLanguageRTL_Sample.qjson +1192 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/number.qjson +41 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/number_VTextarea.qjson +37 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/onlyAlphabetic.qjson +32 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/parentPage.qjson +292 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/pipeline.qjson +77 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/pipelineSample.qjson +422 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/placeQidDynamic.qjson +193 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/progress-circular.qjson +1056 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/qtimer.qjson +335 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/radioGroupGetValues.qjson +125 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/region_definition_example.qjson +580 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/resetAndResetValidationUsage.qjson +1827 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/responsive1.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/responsive2.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/responsive3.qjson +1546 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/scrollButton.qjson +331 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/scrollDirective.qjson +297 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/selectedRow-propertyDisable.qjson +238 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/serviceCallerBlockComponent.qjson +63 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/sheet.qjson +149 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/slider.qjson +81 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/snackbars.qjson +2454 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/sso.qjson +260 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/subPage.qjson +710 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/tab.qjson +271 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/tableadditem.qjson +125 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/themeExamplePage.qjson +876 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/tiffImage.qjson +315 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/timePicker.qjson +452 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/treeview.qjson +156 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/treeview2.qjson +503 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/uniqueRowSlots.qjson +226 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/vMenu.qjson +212 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/vcarousel.qjson +659 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/vdatatable_slots_with_custom_validation_usage.qjson +1585 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/AllowdDates.qjson +126 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChartEvents.qjson +323 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChartTitle.qjson +411 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChartYTicks.qjson +399 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/CalendarUsageExample.qjson +2 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/ChartLegendFont.qjson +788 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DataTable_customSort.qjson +277 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DoughnutChartEvents.qjson +243 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Icon_Samples.qjson +181 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Instructions.request.qjson +584 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Intersect.qjson +404 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LightBox.qjson +777 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChart.qjson +1049 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChartEvents.qjson +327 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChartPointProps.qjson +416 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/MMDelay.qjson +384 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/MMtrigger.qjson +209 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/NavigationDrawerExample.qjson +899 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Parallax.qjson +416 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/PieChart.qjson +1103 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QCaptcha.qjson +409 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QDocumentViewer.qjson +149 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QFrameExample.qjson +213 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QIdleTimer.qjson +221 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QImgZoomRotate.qjson +432 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/VList_NavMenu.qjson +3008 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/alertSamplePage.qjson +450 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/badge.qjson +151 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/breadcrumbs.qjson +563 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/button.qjson +1658 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/cellTemplate.qjson +96 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/combobox.qjson +109 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/comboboxSelected.qjson +119 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/createChildren.qjson +411 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/createClosedPanes.qjson +265 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/creditcard.qjson +49 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/crypto.qjson +5632 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/customStore.qjson +157 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/deleteComponent.qjson +501 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/divider.qjson +180 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDataGridLines.qjson +121 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDataGridRemove.qjson +209 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxMasterDetail.qjson +257 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxRowDragging.qjson +175 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dynamicComp.qjson +156 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/email.qjson +177 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/encoding.qjson +304 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/images.qjson +1379 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/images_olddd.qjson +1366 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/number.qjson +169 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/number_VTextarea.qjson +163 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/onlyAlphabetic.qjson +164 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/parentPage.qjson +351 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/pipeline.qjson +78 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/pipelineSample.qjson +410 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/placeQidDynamic.qjson +289 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/progress-circular.qjson +1014 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/samplePageLottie.qjson +696 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/00-qjson-structure-legacy.md +65 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/00-qjson-structure.md +67 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/01-properties.md +77 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/02-events-and-scripting.md +79 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/03-layout-and-slots-legacy.md +72 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/03-layout-and-slots.md +64 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/04-styling-legacy.md +73 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/04-styling.md +177 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/05-components.md +97 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/06-services.md +68 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/07-localization.md +40 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/08-dynamic-components.md +49 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/09-page-skeletons-legacy.md +83 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/09-page-skeletons.md +87 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/10-validation-and-sync-legacy.md +69 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/10-validation-and-sync.md +78 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/11-cli-bridge.md +97 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/12-render-check.md +45 -0
- package/dist/studio-cli/src/.ai-kit/opencode.jsonc +95 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-catalog-legacy.md +120 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-catalog.md +135 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-contracts.json +14964 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-index.json +114 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-styles.json +6983 -0
- package/dist/studio-cli/src/.ai-kit/reference/events-system.md +98 -0
- package/dist/studio-cli/src/.ai-kit/reference/layout-system.md +99 -0
- package/dist/studio-cli/src/.ai-kit/reference/mapping-S-vuetify-class.md +103 -0
- package/dist/studio-cli/src/.ai-kit/reference/qjson-schema-legacy.md +189 -0
- package/dist/studio-cli/src/.ai-kit/reference/qjson-schema.md +188 -0
- package/dist/studio-cli/src/.ai-kit/reference/quick-api.md +248 -0
- package/dist/studio-cli/src/.ai-kit/reference/styling-system.md +193 -0
- package/dist/studio-cli/src/.ai-kit/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/src/.ai-kit/skills/quick-qjson/SKILL.md +36 -0
- package/dist/studio-cli/src/.ai-kit/tools/README.md +42 -0
- package/dist/studio-cli/src/control/controlClient.js +119 -0
- package/dist/studio-cli/src/control/controlClient.js.map +1 -0
- package/dist/studio-cli/src/control/convertToBlock.js +70 -0
- package/dist/studio-cli/src/control/convertToBlock.js.map +1 -0
- package/dist/studio-cli/src/control/pickWorkspaceDir.js +105 -0
- package/dist/studio-cli/src/control/pickWorkspaceDir.js.map +1 -0
- package/dist/studio-cli/src/control/protocolHandler.js +60 -0
- package/dist/studio-cli/src/control/protocolHandler.js.map +1 -0
- package/dist/studio-cli/src/control/pull.js +135 -0
- package/dist/studio-cli/src/control/pull.js.map +1 -0
- package/dist/studio-cli/src/control/push.js +113 -0
- package/dist/studio-cli/src/control/push.js.map +1 -0
- package/dist/studio-cli/src/control/registerProtocol.js +251 -0
- package/dist/studio-cli/src/control/registerProtocol.js.map +1 -0
- package/dist/studio-cli/src/control/startWorking.js +70 -0
- package/dist/studio-cli/src/control/startWorking.js.map +1 -0
- package/dist/studio-cli/src/control/workspaceSetup.js +66 -0
- package/dist/studio-cli/src/control/workspaceSetup.js.map +1 -0
- package/dist/studio-cli/src/index.js +193 -0
- package/dist/studio-cli/src/index.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/figmaPull.js +207 -0
- package/dist/studio-cli/src/isolatedCommands/figmaPull.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js +26 -0
- package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/validateQjson.js +560 -0
- package/dist/studio-cli/src/isolatedCommands/validateQjson.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/validateStyles.js +672 -0
- package/dist/studio-cli/src/isolatedCommands/validateStyles.js.map +1 -0
- package/dist/studio-cli/src/server/bridgeServer.js +817 -0
- package/dist/studio-cli/src/server/bridgeServer.js.map +1 -0
- package/dist/studio-cli/src/server/peer.js +119 -0
- package/dist/studio-cli/src/server/peer.js.map +1 -0
- package/dist/studio-cli/src/server/serverInfo.js +59 -0
- package/dist/studio-cli/src/server/serverInfo.js.map +1 -0
- package/dist/studio-cli/src/server/wsRaw.js +252 -0
- package/dist/studio-cli/src/server/wsRaw.js.map +1 -0
- package/dist/studio-cli/src/util/frontmatter.js +71 -0
- package/dist/studio-cli/src/util/frontmatter.js.map +1 -0
- package/dist/studio-cli/src/util/logger.js +28 -0
- package/dist/studio-cli/src/util/logger.js.map +1 -0
- package/dist/studio-cli/src/util/modelRef.js +38 -0
- package/dist/studio-cli/src/util/modelRef.js.map +1 -0
- package/dist/studio-cli/src/util/state.js +36 -0
- package/dist/studio-cli/src/util/state.js.map +1 -0
- package/dist/studio-cli/src/version.js +6 -0
- package/dist/studio-cli/src/version.js.map +1 -0
- package/dist/ui/src/common/promiseHelper.js +6 -0
- package/dist/ui/src/common/promiseHelper.js.map +1 -0
- package/dist/ui/src/domain/model/IObject.js +3 -0
- package/dist/ui/src/domain/model/IObject.js.map +1 -0
- package/dist/ui/src/domain/model/models.js +163 -0
- package/dist/ui/src/domain/model/models.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# 04 · Styling — the `S` (Style) system
|
|
2
|
+
|
|
3
|
+
> ⚠️ **STOP — before applying any rule below, confirm which style system the target page is on.** Read its root-level `opt.V` (and whether its nodes carry an `S` object): **`opt.V >= 2.0` / has `S` → S system**; **`opt.V` missing or `< 2.0` → legacy**. The two systems are not interchangeable on a page. Unsure how to route? → [AGENT_GUIDE Step 0](../AGENT_GUIDE.md).
|
|
4
|
+
>
|
|
5
|
+
> **This file is the `S` track.** `S` does not render on a legacy page — on a **legacy** page instead → [04-styling-legacy.md](04-styling-legacy.md). Reference examples from [../examples/style/](../examples/style/) only.
|
|
6
|
+
|
|
7
|
+
> The earlier community docs treated styling as "CSS utility classes only" — that is just one mechanism, and **CSS works on Web only**. For the exhaustive schema (every `S` param, editor types, defaults, `SC` inheritance, cross-platform application) see **[../reference/styling-system.md](../reference/styling-system.md)**; the per-component supported `S` params + defaults are in **[../reference/component-styles.json](../reference/component-styles.json)** — the only source to consult when authoring `S`.
|
|
8
|
+
|
|
9
|
+
> **Why not CSS:** Quick renders on Web, Android, and iOS. CSS exists only on Web. The Style tab serializes into the node's platform-neutral **`S`** object, which each platform applies natively (Web → CSS `@media`+`[q_UID]`; Mobile → flattened to the device's breakpoint range, `col`→flex-basis, via the native bridge). So for cross-platform styling you must use `S`, not a CSS Style File.
|
|
10
|
+
|
|
11
|
+
## The styling mechanisms — in strict priority order
|
|
12
|
+
|
|
13
|
+
1. **`S` (Style System)** — per-component design: size, spacing, grid column, flex direction/align/justify, colors, fonts, borders, shadows. This is now the mechanism for *everything* the Style tab does — layout included. Try this first, always.
|
|
14
|
+
2. **`class` prop, Web only, last resort** — if a component's `S` schema (check [../reference/component-styles.json](../reference/component-styles.json)) genuinely has no param for what you need, on **Web** you may set the component's own `class` prop directly. This is a fallback for the rare gap, not a parallel mechanism — don't reach for it before confirming `S` can't do it.
|
|
15
|
+
3. **Style File (CSS), Web only, true last resort** — project-level CSS (`body .v-application …`) and `@font-face`. Only for cross-cutting rules neither `S` nor a component's `class` prop can express (e.g. a pseudo-selector, a project-wide rule, custom fonts).
|
|
16
|
+
|
|
17
|
+
**`O.layout` (`dOpt`/`class`) is not part of this system** — it is the pre-`S` legacy mechanism. Never author it on an `S`-system page; everything it used to carry (grid width, flex direction, align, justify, spacing) is a `S` param here.
|
|
18
|
+
|
|
19
|
+
**There is no Mobile fallback past `S`.** `class`/CSS are Web-only (CSS doesn't exist on native; the `class` prop has no native-bridge equivalent either). If a design needs something `S` can't express and the page targets Mobile, restructure with an `S`-capable component instead of reaching for `class`/CSS — there's nothing for the Mobile renderer to apply it from.
|
|
20
|
+
|
|
21
|
+
Theme colors and fonts defined in **Themes Settings** appear as selectable options inside the Style tab (i.e. as values you put in `S`, not separately).
|
|
22
|
+
|
|
23
|
+
## A) Style tab → the `S` object
|
|
24
|
+
|
|
25
|
+
The Style tab writes a node-level **`S`** object keyed by **resolution range**, each holding CSS-like camelCase properties. Example from a real file:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
"S": {
|
|
29
|
+
"xs-xl": {
|
|
30
|
+
"marginTop": "", "marginRight": "", "marginBottom": "", "marginLeft": "",
|
|
31
|
+
"paddingTop": "12px", "paddingRight": "12px", "paddingBottom": "12px", "paddingLeft": "12px",
|
|
32
|
+
"width": "", "height": "",
|
|
33
|
+
"fontColor": "#000000", "fontFamily": "Roboto", "fontSize": "16px",
|
|
34
|
+
"fontStyle": "normal", "fontWeight": "400", "lineHeight": "20px", "textAlign": "left",
|
|
35
|
+
"backgroundColor": "#FFFFFF", "color": "", "iconColor": "",
|
|
36
|
+
"boxShadow": "", "boxSizing": "",
|
|
37
|
+
"borderColor": "", "borderWidth": "", "borderTopStyle": "", "borderRightStyle": ""
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The Style tab is organized into boxes that map to these `S` keys:
|
|
43
|
+
|
|
44
|
+
| Style-tab box | `S` properties it writes |
|
|
45
|
+
|---------------|--------------------------|
|
|
46
|
+
| **Size** | `width`, `height` (px / % / em / rem) |
|
|
47
|
+
| **Text** | `fontColor`, `fontFamily`, `fontSize`, `fontStyle`, `fontWeight`, `lineHeight`, `textAlign` (+ `combinedFont`/`ThemeFont` when a theme/custom font is chosen) |
|
|
48
|
+
| **Appearance** | `backgroundColor`, `color`, `iconColor` (color picker: hex / RGB / HSL); `border*` (`borderColor`, `borderWidth`, `border<side>Style`, `borderRadius`, `boxSizing`); `boxShadow` |
|
|
49
|
+
| **Layout box** | grid column, direction, align, justify, margin, padding — written as `S` params: `col`, `flexDirection`, `alignItems`, `justifyContent`, `marginTop/Right/Bottom/Left`, `paddingTop/Right/Bottom/Left`. Which of these a given component actually supports varies — check that `T`'s block in [../reference/component-styles.json](../reference/component-styles.json) (e.g. only `VCol` carries `flexDirection`/`alignItems`/`justifyContent`/`col`; most containers carry the margin/padding set). |
|
|
50
|
+
|
|
51
|
+
Notes for authoring `S` by hand:
|
|
52
|
+
- Keys are **resolution ranges**, default full-range `"xs-xl"`. A narrower range (e.g. `"xs-sm"`, `"md-xl"`) targets specific devices — this is "Layout Multiplexing" (see responsive table below). Empty string `""` means "unset" (the Style-tab checkbox unchecked).
|
|
53
|
+
- Sizes accept `px`, `%`, `em`, `rem`.
|
|
54
|
+
- `S` is read by the runtime directly; you usually let the Style tab generate it, but you may hand-write it.
|
|
55
|
+
|
|
56
|
+
## B) The Layout box → `S` (grid column, direction, align, justify, spacing)
|
|
57
|
+
|
|
58
|
+
On an `S`-system page, layout is **not** a separate mechanism — the Layout box (Grid Column, Direction, Align, Justify, Box margin/padding) writes into **`S`** like every other Style-tab box: `col` (grid width, 1–12, `VCol`-specific), `flexDirection`/`alignItems`/`justifyContent` (`VCol`-specific), `marginTop/Right/Bottom/Left`, `paddingTop/Right/Bottom/Left` (most containers). Check the component's block in [../reference/component-styles.json](../reference/component-styles.json) for which of these it actually supports before assuming a param exists.
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
"S": { "xs-xl": { "flexDirection": "column", "justifyContent": "center", "paddingTop": "16px", "paddingBottom": "16px", "col": "6" } }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
> The pre-`S` `O.layout` (`dOpt` + compiled `class`) mechanism for the same intents belongs to the legacy era — never author it on an `S`-system page.
|
|
65
|
+
|
|
66
|
+
### Responsive breakpoints (authoritative pixel ranges)
|
|
67
|
+
| Key | Device | Range |
|
|
68
|
+
|-----|--------|-------|
|
|
69
|
+
| `xs` | Mobile | 0–600px |
|
|
70
|
+
| `sm` | Tablet | 600–960px |
|
|
71
|
+
| `md` | Laptop | 960–1264px |
|
|
72
|
+
| `lg` | Desktop | 1264–1904px |
|
|
73
|
+
| `xl` | TV | 1904px+ |
|
|
74
|
+
|
|
75
|
+
`S` is keyed by **ranges** built from these breakpoints (`"xs-xl"`, `"md-xl"`, …). Grid-Column (1–12) lives on `VCol`; Direction → `flexDirection: "row"/"column"`; Justify (start/center/end/space-between/space-around) → `justifyContent` (main axis); Align (start/center/end/stretch/baseline) → `alignItems` (cross axis).
|
|
76
|
+
|
|
77
|
+
## B2) Styling a child from its parent — `SC` (child-style inheritance)
|
|
78
|
+
|
|
79
|
+
Some visuals are set on the **parent** and pushed into a typed child — e.g. a button's **label text color** and **icon color**. The node's `SC` maps a parent style param to a child component type's param. **Fill it from data, not from memory: copy the component's `inheritedChildList` block in [../reference/component-styles.json](../reference/component-styles.json) into `SC` as-is** (same shape: `{ styleParam: { ChildType: childParam } }`). Components without an `inheritedChildList` in their JSON block get **no** `SC` — the engine ignores it there.
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{ "T": "VBtn",
|
|
83
|
+
"S": { "xs-xl": { "fontColor": "#ffffff", "backgroundColor": "#1976D2", /* …full default set per rule S3… */ } },
|
|
84
|
+
"SC": {
|
|
85
|
+
"textAlign": { "QLabel": "textAlign" },
|
|
86
|
+
"textDecorationLine": { "QLabel": "textDecorationLine" },
|
|
87
|
+
"textDecorationStyle": { "QLabel": "textDecorationStyle" },
|
|
88
|
+
"textDecorationColor": { "QLabel": "textDecorationColor" },
|
|
89
|
+
"fontColor": { "VIcon": "iconColor", "QLabel": "fontColor" },
|
|
90
|
+
"fontStyle": { "QLabel": "fontStyle" },
|
|
91
|
+
"fontSize": { "QLabel": "fontSize" },
|
|
92
|
+
"fontFamily": { "QLabel": "fontFamily" },
|
|
93
|
+
"fontWeight": { "QLabel": "fontWeight" },
|
|
94
|
+
"combinedFont": { "QLabel": "combinedFont" },
|
|
95
|
+
"lineHeight": { "QLabel": "lineHeight" },
|
|
96
|
+
"ThemeFont": { "QLabel": "ThemeFont" },
|
|
97
|
+
"backgroundColor": { "VIcon": "backgroundColor" },
|
|
98
|
+
"disabledBackgroundColor": { "VIcon": "disabledBackgroundColor" }
|
|
99
|
+
},
|
|
100
|
+
"C": { "default": { "c": [ /* QLabel + VIcon inherit the above */ ], "cType": "slot" } } }
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**`SC` complements the child's own `S` — it does not replace it.** Per rule S3 ([AGENT_GUIDE-s.md](../AGENT_GUIDE-s.md)) the child label/icon inside a `VBtn`/`VChip`/`VTabs` **also** carries its own `S` with its full default set from `component-styles.json`, values matched to the design (e.g. a white-text button label writes `fontColor:#ffffff` — not the generic QLabel default `#000000`). This is what the editor itself produces (see the button label in [../examples/style/MMDelay.qjson](../examples/style/MMDelay.qjson)). Keep the parent's `SC` mapping alongside it.
|
|
104
|
+
|
|
105
|
+
Also: legacy props migrate into `S` per each component's `propMigrateList` — e.g. `VBtn`/`VCard` `color` → `backgroundColor`, `VTextField` `color` → `labelDefaultFontColor`. Prefer setting `S` directly.
|
|
106
|
+
|
|
107
|
+
## C) Styled Components (`SA`) — reusable named styles
|
|
108
|
+
Create from the Style tab ("Create or Select a Styled Component"), name it, and it becomes reusable across pages; applied components reference it via the node's **`SA`** array. Editing the styled component updates every component using it. Move it into a shared module to reuse across applications. When hand-authoring you normally don't invent `SA` entries — apply them in Studio.
|
|
109
|
+
|
|
110
|
+
## D) Style File (project CSS) — the older / cross-cutting path
|
|
111
|
+
A project-level CSS file. Because the UI is Vuetify, prefix selectors with `body .v-application`:
|
|
112
|
+
```css
|
|
113
|
+
body .v-application .v-text-field { background: lightgrey; }
|
|
114
|
+
```
|
|
115
|
+
Fonts via `@font-face` with Studio asset references:
|
|
116
|
+
```css
|
|
117
|
+
@font-face { font-family: MyFont; src: url("<<ttf:font-id>>"); }
|
|
118
|
+
```
|
|
119
|
+
For locally-exported projects, custom fonts need the `@font-face` rule added to the CSS file (Google Fonts can be blocked with `blockFontRequest: true` in `settings.yaml`). This, and any other Style File use, is Web-only and a last resort — prefer `S` for per-component styling, full stop.
|
|
120
|
+
|
|
121
|
+
## Practical guidance for an AI authoring qjson
|
|
122
|
+
|
|
123
|
+
**The flow, every time you design a screen or place a component:**
|
|
124
|
+
|
|
125
|
+
1. **Try `S` first.** Look up the component's block in [../reference/component-styles.json](../reference/component-styles.json) and set every param the design needs there — size, spacing, grid `col`, `flexDirection`/`alignItems`/`justifyContent` (where supported), colors, fonts, borders, shadows. This covers the large majority of designs.
|
|
126
|
+
2. **If `S` genuinely has no param for it:**
|
|
127
|
+
- **Before writing any `class` token:** list every token you intend to use and check [../reference/mapping-S-vuetify-class.md](../reference/mapping-S-vuetify-class.md) for an `S` equivalent. Only tokens with confirmed no `S` equivalent belong in `class`. Never bulk-copy a class string. If `S` and `class` already express the same thing (e.g. `S.height:"100%"` + `class:'fill-height'`), remove the class token — `S` is authoritative.
|
|
128
|
+
- **Web:** you may set the component's own `class` prop with the surviving tokens — but only as a last resort, with no other option.
|
|
129
|
+
- **Mobile:** there is **no** `class` alternative. Don't set `class` expecting it to do anything on Mobile — restructure with an `S`-capable component (most commonly wrap in/use a `VCol`, which uniquely supports the flex axis in `S`) instead.
|
|
130
|
+
3. **Style File (CSS)** is the true last resort, Web-only, for cross-cutting rules neither `S` nor a `class` prop can express (pseudo-selectors, project-wide rules, `@font-face`). Confirm with the user before reaching for it on a single component — it usually means a missing `S` param, not a real gap.
|
|
131
|
+
|
|
132
|
+
- **`O.layout` belongs to the legacy era — never write it on an `S`-system page.** If you are tempted to write `O: { "cType": "slot", "layout": { "dOpt": ... } }`, stop — that is the legacy mechanism, valid only on `V<2` pages. Use `S` here. Reference examples only from [../examples/style/](../examples/style/) — a `O.layout` block means the example came from the legacy set; do not copy it into an `S` page.
|
|
133
|
+
|
|
134
|
+
- **Vuetify style-affecting props are NOT an alternative to `S`.** Even when a prop appears in `component-contracts.json`, if `S` has an equivalent param, use `S`. Common violations to avoid:
|
|
135
|
+
|
|
136
|
+
| Vuetify prop (don't use for style) | Use this instead |
|
|
137
|
+
| --- | --- |
|
|
138
|
+
| `VCol.cols` / `VCol.sm` / `VCol.md` / `VCol.lg` / `VCol.xl` | `S.col: "N"` + resolution ranges |
|
|
139
|
+
| `VRow.justify` / `VRow.align` | Web-only `class` last resort (no S equivalent on VRow) |
|
|
140
|
+
| `VBtn.color` / `VCard.color` | `S.backgroundColor` |
|
|
141
|
+
| `VTextField.color` | `S.labelDefaultFontColor` |
|
|
142
|
+
| `maxWidth` / `minWidth` / `maxHeight` as props | `S.maxWidth` / `S.minWidth` / `S.maxHeight` |
|
|
143
|
+
| `elevation` prop | `S.boxShadow` |
|
|
144
|
+
|
|
145
|
+
- **Never leave a component you placed with no `S` at all, and emit every default** — see [AGENT_GUIDE-s.md](../AGENT_GUIDE-s.md) rule S3. A `default` value listed in `component-styles.json` for a param is only the Style-tab's pre-filled suggestion — it is not silently applied unless you write that `S` key yourself. Therefore a placed component's `S` must include **every param that carries a `default` in its `component-styles.json` block** (the default value, or your design's override). Params whose JSON entry has no default (empty `{}`) are optional — set them only when the design needs them.
|
|
146
|
+
- **A multi-child `VCol` does not stack for free.** `VCol` is itself a flex container, but its flex-direction is **not** column unless you set it — left unset it lays children out as a row, so two components dropped straight into a `VCol` render side-by-side instead of stacked (true in both eras — see [03-layout-and-slots.md](03-layout-and-slots.md)). The fix here is `S.flexDirection: "column"` on that `VCol` — a real, supported `S` param (`componentStyleList`'s `layout-chooser`/`content-direction` group; see the `VCol` block in [../reference/component-styles.json](../reference/component-styles.json)).
|
|
147
|
+
|
|
148
|
+
Canonical **stacked label + value field** (label on top, value/input below):
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{ "T": "VCol", "P": { "ID": { "H": "colField", "T": "prop" } },
|
|
152
|
+
"E": {},
|
|
153
|
+
"C": { "default": { "c": [
|
|
154
|
+
{ "T": "QLabel", "P": { "ID": { "H": "lblFieldLabel", "T": "prop" }, "text": { "H": "'Field Label'", "T": "prop" } },
|
|
155
|
+
"E": {}, "C": {}, "O": { "cType": "slot" },
|
|
156
|
+
"S": { "xs-xl": { "fontColor": "#9AA0A6", "fontSize": "14px", "fontWeight": "400" } },
|
|
157
|
+
"_Editor": { "eID": "lblFieldLabel" } },
|
|
158
|
+
{ "T": "QLabel", "P": { "ID": { "H": "lblFieldValue", "T": "prop" }, "text": { "H": "'Value'", "T": "prop" } },
|
|
159
|
+
"E": {}, "C": {}, "O": { "cType": "slot" },
|
|
160
|
+
"S": { "xs-xl": { "fontColor": "#1B2A4A", "fontSize": "18px", "fontWeight": "700" } },
|
|
161
|
+
"_Editor": { "eID": "lblFieldValue" } }
|
|
162
|
+
], "cType": "slot" } },
|
|
163
|
+
"O": { "cType": "slot" },
|
|
164
|
+
"S": { "xs-xl": { "flexDirection": "column", "col": "12" } },
|
|
165
|
+
"_Editor": { "eID": "colField" } }
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
`S.flexDirection: "column"` guarantees the stack; `S.col: "12"` controls the width — both live in `S`, nothing here goes through `O.layout`.
|
|
169
|
+
- **Equal-height cards in a row:** `VCard` has no flex `S` params, so on **Web only** this is one of the rare legitimate uses of the `class` last resort — add `d-flex` to the `VCol`'s `class` and `flex-grow-1 d-flex flex-column` to the card's `class` (the `VRow`'s default `alignItems:stretch` already gives the `VCol` full height). There's no Mobile equivalent — accept the card's natural height there, or restructure with an `S`-capable wrapper (`VCol`) doing the stretching instead.
|
|
170
|
+
- When matching a mockup/Figma, encode colors/borders/shadows/spacing/grid/direction all in `S`, and confirm ambiguous choices.
|
|
171
|
+
|
|
172
|
+
## Common theme utility classes (via `class` prop — Web-only last resort)
|
|
173
|
+
These exist and work on Web, but most have an `S` equivalent that also works on Mobile — always check [../reference/mapping-S-vuetify-class.md](../reference/mapping-S-vuetify-class.md) first and prefer the `S` param (e.g. `fontSize`+`fontWeight` over `text-h5`, `fontColor` over `primary--text`, `borderRadius`/`backgroundColor` over `rounded-lg`/`transparent`, `paddingTop` over `pt-N`, `height:"100%"` over `fill-height`). Only reach for these classes when you specifically need a Web-only effect or are confirmed to not need Mobile parity. Typography: `text-h5`, `text-h6`, `text-body-1`, `text-body-2`, `text-caption` + `font-weight-bold|medium|regular`. Color: `primary`/`primary--text`, `secondary`/`secondary--text`, `success--text`, `error--text`, `white`/`white--text`, `secondary lighten-4`. Card: `rounded-lg`, `transparent` (for a flat card use `S.boxShadow:"none"`, **not** the `elevation` prop — the `elevation` prop is legacy-only). Icons: name in `VIcon.text` (PType `text`).
|
|
174
|
+
|
|
175
|
+
## Pre-sync checklist
|
|
176
|
+
|
|
177
|
+
The full pre-sync checklist (shared core + the `S`-system style checks — `S` on every visual node, no `O.layout`, the `class`-prop audit) is in [10-validation-and-sync.md](10-validation-and-sync.md). Run it before syncing.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# 05 · 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
|
+
## Select / Combobox / Autocomplete
|
|
61
|
+
```json
|
|
62
|
+
"items": { "H": "[{text='Istanbul', value=1}, {text='Ankara', value=2}]", "T": "prop" }
|
|
63
|
+
```
|
|
64
|
+
For service data prefer raw items + `itemText`/`itemValue`/`returnObject:true`.
|
|
65
|
+
|
|
66
|
+
## Pagination
|
|
67
|
+
`length`/`totalVisible` are string values; `input` handler starts with `quick.this.qValue = number;` (`"P":"number:number"`).
|
|
68
|
+
|
|
69
|
+
## Charts (Bar / Line / Doughnut only)
|
|
70
|
+
```json
|
|
71
|
+
{ "T": "Bar", "P": { "ID": { "H": "barChart", "T": "prop" },
|
|
72
|
+
"labels": { "H": "['Jan','Feb','Mar']", "T": "prop" },
|
|
73
|
+
"data": { "H": "[12,19,3]", "T": "prop" },
|
|
74
|
+
"label": { "H": "'Sales'", "T": "prop" },
|
|
75
|
+
"backgroundColor": { "H": "['rgba(54,162,235,0.4)']", "T": "prop" },
|
|
76
|
+
"width": { "H": "'32vw'", "T": "prop" }, "height": { "H": "'40vh'", "T": "prop" } },
|
|
77
|
+
"E": {}, "C": {}, "O": { "cType": "slot" }, "_Editor": { "eID": "barChart" } }
|
|
78
|
+
```
|
|
79
|
+
- `labels`=array, `label`=string. No `visible` prop (wrap in a `VCol`).
|
|
80
|
+
- Runtime update: mutate `components.barChart.data` then `(<any>components.barChart).update()`. Use `Doughnut` + `cutoutPercentage:0` for a pie.
|
|
81
|
+
|
|
82
|
+
## Block Component (embedding another qjson page)
|
|
83
|
+
Place at `pJson` root level — **not** inside VContainer. Minimal node; no Ghost child, no `dynProps`.
|
|
84
|
+
```json
|
|
85
|
+
{ "T": "CustomComponent", "P": {
|
|
86
|
+
"ID": { "H": "blockMyPage", "T": "prop" },
|
|
87
|
+
"QJsonPath": { "H": "'<<qjson:path/to/page>>'", "T": "prop" } },
|
|
88
|
+
"E": {}, "C": {}, "O": {}, "_Editor": { "eID": "blockMyPage" } }
|
|
89
|
+
```
|
|
90
|
+
`QJsonPath` format: `'<<qjson:path>>'` — project-relative path without extension. Root-level page: `<<qjson:page-name>>`; nested: `<<qjson:folder/page-name>>`. `studio pull` converts Studio model IDs to this path format; `studio push` converts back — never write a raw ID.
|
|
91
|
+
|
|
92
|
+
**The embedded page must itself be a block component in Studio.** When you add a page into another page as a block component, check the embedded page's frontmatter: if it lacks `blockComponent: true`, run `studio convertToBlock <embedded-file>`. The file must be checked out (`studio startWorking <file>` if it isn't; pages newly created by `studio push` come back already checked out). For a brand-new page this runs only **after** `studio push` — the model must exist in Studio first. This applies only to block-component embeds, not to service-caller embeds (below).
|
|
93
|
+
|
|
94
|
+
## Messaging / service component / Ghost
|
|
95
|
+
`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 [06-services.md](06-services.md) and [09-page-skeletons.md](09-page-skeletons.md).
|
|
96
|
+
|
|
97
|
+
For any prop/event/slot not shown here, consult [reference/component-catalog.md](../reference/component-catalog.md); for Vuetify components, Vuetify 2 semantics apply.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# 06 · Services (REST)
|
|
2
|
+
|
|
3
|
+
Two patterns. **Check existing project pages first** and follow whichever the project uses.
|
|
4
|
+
|
|
5
|
+
## Pattern A — `quick.Request.async` (framework-native, default)
|
|
6
|
+
Call from any event; success/fail route to custom events on the same component (usually `Messaging`).
|
|
7
|
+
|
|
8
|
+
```typescript
|
|
9
|
+
let req = <any>{};
|
|
10
|
+
req.url = '/api/products/list';
|
|
11
|
+
req.http = 'GET'; // GET|POST|PUT|DELETE|PATCH|MULTIPART|POSTBLOB|GETBLOB
|
|
12
|
+
req.data = null; // body for POST/PUT
|
|
13
|
+
req.blockRender = false;
|
|
14
|
+
req.responseField = 'productList';
|
|
15
|
+
req.onSuccess = 'onProductsSuccess';
|
|
16
|
+
req.onFail = 'onProductsFail';
|
|
17
|
+
quick.Request.async(req);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Read the result in the success event as `response.<responseField>`:
|
|
21
|
+
```json
|
|
22
|
+
"onProductsSuccess": {
|
|
23
|
+
"H": "if (response.productList != null) {\r\n let resData = response.productList;\r\n components.tblProducts.items = resData.resultList;\r\n}\r\n",
|
|
24
|
+
"C": true, "HL": "TS"
|
|
25
|
+
}
|
|
26
|
+
"onProductsFail": {
|
|
27
|
+
"H": "quick.Quick.alert({ title:'Hata', text:'İstek başarısız', category:'Error', actionButtons:[{ name:'Tamam', type:'Confirm' }] });\r\n",
|
|
28
|
+
"C": true, "HL": "TS"
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`IRequest` fields: `url`, `http`, `data`, `responseField`, `onSuccess`, `onFail`, `blockRender`, `showSuccessMessage`, `showErrorMessage`, `headers`, `withCredentials`, `timeout`, `args`. Inline `await` form also works:
|
|
33
|
+
```typescript
|
|
34
|
+
const respo = await quick.Request.async(req);
|
|
35
|
+
let result = (<any>respo).data;
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Pattern B — project ServiceCaller `CustomComponent`
|
|
39
|
+
Some projects centralize calls in a reusable `CustomComponent` (a service proxy) with `onLoad` / `onServiceSuccessCallBack` / `onServiceFailCallBack`. Use it **only if the project already provides one** (copy its `QJsonPath` from an existing page).
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{ "T": "CustomComponent", "P": {
|
|
43
|
+
"ID": { "H": "serviceCallerComp", "T": "prop" },
|
|
44
|
+
"QJsonPath": { "H": "'<<qjson:path/to/ServiceCallerCustomComponent>>'", "T": "prop" } },
|
|
45
|
+
"E": {
|
|
46
|
+
"onLoad": { "H": "quick.store.set('page', 0);\r\nquick.MM.trigger('getProducts', [{ page: 0 }]);\r\n", "HL": "TS" },
|
|
47
|
+
"onServiceSuccessCallBack": { "H": "/* capture → null → process */", "C": true, "P": "serviceResponse:any", "HL": "TS" },
|
|
48
|
+
"onServiceFailCallBack": { "H": "/* alert with actionButtons */", "C": true, "P": "serviceResponse:any", "HL": "TS" }
|
|
49
|
+
},
|
|
50
|
+
"C": { "default": { "c": [ { "T": "Ghost", "P": { "ID": { "H": "ghostComp", "T": "prop" } }, "E": {}, "C": {}, "O": { "cType": "child" }, "_Editor": { "eID": "ghostComp" } } ], "cType": "child" } },
|
|
51
|
+
"O": { "cType": "child", "dynProps": true }, "_Editor": { "eID": "serviceCallerComp" } }
|
|
52
|
+
```
|
|
53
|
+
Each call is a custom event on `Messaging` that builds a `requestObj` and calls `(<any>components.serviceCallerComp).serviceCall(requestObj)`. In the success callback, **capture → null → process**:
|
|
54
|
+
```typescript
|
|
55
|
+
if (serviceResponse.getProducts != null) {
|
|
56
|
+
let resData = serviceResponse.getProducts; // capture
|
|
57
|
+
serviceResponse.getProducts = null; // null immediately
|
|
58
|
+
components.tblProducts.items = resData.resultList; // process
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Rules that prevent the common failures
|
|
63
|
+
- Close the request object literal with `};` before the next call (missing `;` → "not callable").
|
|
64
|
+
- Triggered custom events need `"C": true`; declare `P` to match the trigger payload.
|
|
65
|
+
- `responseField` / event names must match exactly across trigger, request, and callback.
|
|
66
|
+
- Fail alerts must include `actionButtons`.
|
|
67
|
+
- Initialize in **one** place (service `onLoad` or `Messaging.PreRender`).
|
|
68
|
+
- Don't assign `VDataTable.headers`/static `items` in callbacks — those are component props; assign only dynamic rows.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 07 · Localization (`lrids`, `LR`)
|
|
2
|
+
|
|
3
|
+
## `lrids` structure — by language code, values single-quoted
|
|
4
|
+
```json
|
|
5
|
+
"lrids": {
|
|
6
|
+
"tr-TR": { "save": "'Kaydet'", "userName": "'Kullanıcı Adı:'" },
|
|
7
|
+
"en-US": { "save": "'Save'", "userName": "'User Name:'" }
|
|
8
|
+
}
|
|
9
|
+
```
|
|
10
|
+
- Group by language code (`tr-TR`, `en-US`, …).
|
|
11
|
+
- Every value is a single-quoted string (same quoting model as prop `H`).
|
|
12
|
+
- Every key used by `LR`/`quick.LR` must exist in **all** required languages.
|
|
13
|
+
- **Omit `clrids` entirely** — the compiler generates it on import (compiled values look like `╬'Kaydet'╩╩`). Never author `clrids`, and strip it from any downloaded file you edit.
|
|
14
|
+
|
|
15
|
+
## Context rule: `LR` in props, `quick.LR` in events
|
|
16
|
+
| Context | Use |
|
|
17
|
+
|---------|-----|
|
|
18
|
+
| Props (`P.H`, QScript) | bare `LR('key')` |
|
|
19
|
+
| Events (`E.H`, TS) | `quick.LR('key')` |
|
|
20
|
+
|
|
21
|
+
Props:
|
|
22
|
+
```json
|
|
23
|
+
"text": { "H": "LR('save')", "T": "prop" }
|
|
24
|
+
```
|
|
25
|
+
Events:
|
|
26
|
+
```typescript
|
|
27
|
+
quick.Quick.alert({ text: quick.LR('genericError'), category:'Error', actionButtons:[{name: quick.LR('ok'), type:'Confirm'}] });
|
|
28
|
+
```
|
|
29
|
+
`quick.LR(key, dataSource?)` returns the localized string. Never call `quick.LR` inside a prop.
|
|
30
|
+
|
|
31
|
+
## Static vs localized text
|
|
32
|
+
Static = a quoted literal (`"H": "'Kaydet'"`); localized = wrap the key (`"H": "LR('save')"`). Apostrophe inside a QScript string is doubled: `'Premium''u'`.
|
|
33
|
+
|
|
34
|
+
## Workflow
|
|
35
|
+
1. Pick a stable key.
|
|
36
|
+
2. Add it under every language block in `lrids`.
|
|
37
|
+
3. Reference with `LR('key')` (props) / `quick.LR('key')` (events).
|
|
38
|
+
4. Verify no language is missing the key before delivery.
|
|
39
|
+
|
|
40
|
+
There is also a runtime `quick.importLocalization(langCode, {...})` and global localization qjsons in some projects — but for a single page, `lrids` is what you author.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 08 · Dynamic Components (`createComponent`)
|
|
2
|
+
|
|
3
|
+
For repeated UI generated from data, clone a **template** component. There is no `{{var}}` interpolation — clones receive a `dataSource` accessed as `data.*`.
|
|
4
|
+
|
|
5
|
+
## Model
|
|
6
|
+
1. Keep a template as a **root-level** `pJson` element, hidden until cloned.
|
|
7
|
+
2. Bind template props to `data.<field>`.
|
|
8
|
+
3. For each item, call `quick.Quick.createComponent` with a unique `newCompQID`, inserting into a real container (`placeQID`).
|
|
9
|
+
|
|
10
|
+
## Create (TypeScript)
|
|
11
|
+
```typescript
|
|
12
|
+
quick.Quick.createComponent({
|
|
13
|
+
templateCompQID: 'rowTemplate',
|
|
14
|
+
newCompQID: 'row' + index,
|
|
15
|
+
placeQID: 'rowList',
|
|
16
|
+
place: ElementLocation.Default, // or <any>'Before' / <any>'After'
|
|
17
|
+
dataSource: response.data // accessed as data.* in the template
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
Real files also build `dataSource` from a service response and loop (`forEach`) creating one clone per item. `place` is the `ElementLocation` enum (`Before`/`After`/`Default`); a bare string works but cast `<any>'After'` if TS complains.
|
|
21
|
+
|
|
22
|
+
## Template prop bindings
|
|
23
|
+
In **props**, reference clone data directly as `data.<field>`:
|
|
24
|
+
```json
|
|
25
|
+
"text": { "H": "data.title", "T": "prop" }
|
|
26
|
+
"class": { "H": "if(data.statusColor==1){'red lighten-5'}else{'blue lighten-5'}", "T": "class" }
|
|
27
|
+
```
|
|
28
|
+
In **events**, declare it first: `declare let data;` then use `data.field`.
|
|
29
|
+
The template's `visible` should guard against the pre-clone state:
|
|
30
|
+
```json
|
|
31
|
+
"visible": { "H": "if(data!=undefined){data.visible}else{false}", "T": "prop" }
|
|
32
|
+
```
|
|
33
|
+
Pass `visible:true` per clone so clones show while the template stays hidden.
|
|
34
|
+
|
|
35
|
+
## Rules (each prevents a real failure)
|
|
36
|
+
1. `templateCompQID` must be a **pJson root-level** component id (not a nested child).
|
|
37
|
+
2. `placeQID` must be a real container with a `default` slot (not a leaf `Ghost`).
|
|
38
|
+
3. `newCompQID` must be unique per clone (effective id becomes `templateCompQID + '_' + newCompQID`).
|
|
39
|
+
4. Guard template `visible` with the `if(data!=undefined){...}else{false}` pattern.
|
|
40
|
+
|
|
41
|
+
## Related APIs
|
|
42
|
+
```typescript
|
|
43
|
+
quick.Quick.createChildren({ parentCompQId, templateChildName, newChildName? });
|
|
44
|
+
let c = quick.Quick.findCreateComponentRelative(quick.this, 'rowTemplate');
|
|
45
|
+
quick.Quick.deleteComponent(quick.getComponent('rowTemplate_row0'));
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## When NOT to use this
|
|
49
|
+
Tabular data → use `VDataTable.items` (don't clone rows). A few fixed cards → author them statically. Use `createComponent` for unknown-count, card/row-shaped repeated UI.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# 09 · Page Skeletons — legacy `cssClass` system
|
|
2
|
+
|
|
3
|
+
> ⚠️ **STOP — before applying any rule below, confirm which style system the target page is on.** Read its root-level `opt.V` (and whether its nodes carry an `S` object): **`opt.V >= 2.0` / has `S` → S system**; **`opt.V` missing or `< 2.0` → legacy**. The two systems are not interchangeable on a page. Unsure how to route? → [AGENT_GUIDE Step 0](../AGENT_GUIDE.md).
|
|
4
|
+
>
|
|
5
|
+
> **This file is the `legacy` track.** These are **structure references for editing/extending an existing legacy page**, not "start from scratch" templates — keep the page's current root, don't retrofit a `VContainer`, and design via `O.layout` (`dOpt`/`class`) + CSS classes. Starting a genuinely new page instead → [09-page-skeletons.md](09-page-skeletons.md).
|
|
6
|
+
|
|
7
|
+
## Reference shape — framework-native (no service component)
|
|
8
|
+
A legacy page typically has this shape (`Messaging` + a layout root). Match it when adding sections; do not add a `VContainer` root to a page that already roots elsewhere.
|
|
9
|
+
|
|
10
|
+
```javascript
|
|
11
|
+
let pjson = {
|
|
12
|
+
"pJson": [
|
|
13
|
+
{
|
|
14
|
+
"T": "Messaging",
|
|
15
|
+
"P": { "ID": { "H": "msg", "T": "prop" } },
|
|
16
|
+
"E": {
|
|
17
|
+
"PreRender": { "H": "quick.MM.trigger('fetchData');\r\n", "I": true, "HL": "TS" },
|
|
18
|
+
"fetchData": { "H": "let req=<any>{};\r\nreq.url='/api/data';\r\nreq.http='GET';\r\nreq.data=null;\r\nreq.blockRender=false;\r\nreq.responseField='data';\r\nreq.onSuccess='onData';\r\nreq.onFail='onFail';\r\nquick.Request.async(req);\r\n", "C": true, "HL": "TS" },
|
|
19
|
+
"onData": { "H": "let resData = response.data;\r\n/* process resData */\r\n", "C": true, "HL": "TS" },
|
|
20
|
+
"onFail": { "H": "quick.Quick.alert({ title:'Hata', text:'Bir hata oluştu.', category:'Error', actionButtons:[{ name:'Tamam', type:'Confirm' }] });\r\n", "C": true, "HL": "TS" }
|
|
21
|
+
},
|
|
22
|
+
"C": {}, "O": { "cType": "child" }, "_Editor": { "eID": "msg" }
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"T": "VContainer",
|
|
26
|
+
"P": { "ID": { "H": "pageContainer", "T": "prop" },
|
|
27
|
+
"class": { "H": "'container container--fluid'", "T": "class" } },
|
|
28
|
+
"E": {},
|
|
29
|
+
"C": { "default": { "c": [ /* PAGE CONTENT */ ], "cType": "slot" } },
|
|
30
|
+
"O": { "cType": "child" }, "_Editor": { "eID": "pageContainer" }
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"lrids": {}, "opt": {}
|
|
34
|
+
};
|
|
35
|
+
export default pjson
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Reference shape — with project ServiceCaller (only if the project provides one)
|
|
39
|
+
Same as above, plus a `CustomComponent` after `Messaging` (see [06-services.md](06-services.md) Pattern B), with init in its `onLoad`.
|
|
40
|
+
|
|
41
|
+
## Centered content scaffold (drop into PAGE CONTENT)
|
|
42
|
+
Legacy form — layout via `O.layout` (`dOpt` + synced `class`), visuals via CSS utility classes on the `class` prop:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{ "T": "VRow", "P": { "ID": { "H": "rowMain", "T": "prop" } }, "E": {},
|
|
46
|
+
"C": { "default": { "c": [
|
|
47
|
+
{ "T": "VCol", "P": { "ID": { "H": "colMain", "T": "prop" } }, "E": {},
|
|
48
|
+
"C": { "default": { "c": [
|
|
49
|
+
{ "T": "VCard", "P": { "ID": { "H": "cardMain", "T": "prop" },
|
|
50
|
+
"elevation": { "H": "0", "T": "prop" },
|
|
51
|
+
"class": { "H": "'white pa-4 rounded-lg'", "T": "class" } },
|
|
52
|
+
"E": {}, "C": { "default": { "c": [
|
|
53
|
+
{ "T": "QLabel", "P": { "ID": { "H": "lblPageTitle", "T": "prop" },
|
|
54
|
+
"text": { "H": "'Page Title'", "T": "prop" },
|
|
55
|
+
"class": { "H": "'text-h5 font-weight-bold primary--text'", "T": "class" } },
|
|
56
|
+
"E": {}, "C": {}, "O": { "cType": "slot" }, "_Editor": { "eID": "lblPageTitle" } }
|
|
57
|
+
], "cType": "slot" } },
|
|
58
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "cardMain" } }
|
|
59
|
+
], "cType": "slot" } },
|
|
60
|
+
"O": { "cType": "slot", "layout": { "dOpt": { "xs": ["d:d-flex","j:justify-center"] }, "class": "d-flex justify-center" } },
|
|
61
|
+
"_Editor": { "eID": "colMain" } }
|
|
62
|
+
], "cType": "slot" } },
|
|
63
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "rowMain" } }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Styling — `O.layout` + CSS classes (do NOT author `S`)
|
|
67
|
+
On a legacy page, design lives in two places, not in `S` (which won't render on `V < 2`):
|
|
68
|
+
|
|
69
|
+
- **`O.layout`** (`dOpt` + compiled `class`) — grid width (`c:col-N`), flex direction/align/justify (`fd:`/`a:`/`j:`), spacing (`sp:`). Keep `dOpt` and `class` in sync.
|
|
70
|
+
- **The `class` prop** — CSS utility classes for typography (`text-h5`, `font-weight-bold`), color (`primary--text`, `white`), elevation (`elevation-2`), rounding (`rounded-lg`).
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{ "T": "VCard", "P": { "ID": { "H": "cardMain", "T": "prop" },
|
|
74
|
+
"elevation": { "H": "2", "T": "prop" },
|
|
75
|
+
"class": { "H": "'white pa-4 rounded-lg'", "T": "class" } },
|
|
76
|
+
"E": {}, "C": { "default": { "c": [ /* … */ ], "cType": "slot" } },
|
|
77
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "cardMain" } }
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Full how-to: [04-styling-legacy.md](04-styling-legacy.md); the `dOpt` grammar + `dOpt → class` compilation rule: [../reference/layout-system.md](../reference/layout-system.md). **Do not introduce `S` on a legacy page — it silently won't render.**
|
|
81
|
+
|
|
82
|
+
## Large-page policy (incremental)
|
|
83
|
+
Don't rewrite a whole page in one shot. Add **1–3 sections per edit**, validate, and report progress. Reuse examples from [../examples/cssClass/](../examples/cssClass/) (the legacy set — e.g. `CardTitle.qjson`, `Profile_Card.qjson`) and neighboring project pages rather than re-deriving structures.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# 09 · Page Skeletons — `S` system
|
|
2
|
+
|
|
3
|
+
> ⚠️ **STOP — before applying any rule below, confirm which style system the target page is on.** Read its root-level `opt.V` (and whether its nodes carry an `S` object): **`opt.V >= 2.0` / has `S` → S system**; **`opt.V` missing or `< 2.0` → legacy**. The two systems are not interchangeable on a page. Unsure how to route? → [AGENT_GUIDE Step 0](../AGENT_GUIDE.md).
|
|
4
|
+
>
|
|
5
|
+
> **This file is the `S` track** (starting a brand-new page). A new page's `opt.V` is always the current version — **author it as `opt.V: 2.5`** (this marks the page as `S`-system; the skeleton below already sets it). Adding a section to an **existing legacy page** instead → [09-page-skeletons-legacy.md](09-page-skeletons-legacy.md).
|
|
6
|
+
|
|
7
|
+
Start every new page from one of these. Structure: `Messaging` (event hub) → optional service `CustomComponent` (only if the project uses one) → `VContainer` (layout root). For a **new page the `VContainer` content root is required** (not merely canonical): wrap all UI content in a single top-level `VContainer`, with `Messaging` and the optional service component as the only other top-level `pJson` siblings. This is a **new-page rule only** — when editing an existing page, keep its current root and do **not** add a `VContainer` unless the user asks.
|
|
8
|
+
|
|
9
|
+
## Skeleton — framework-native (no service component)
|
|
10
|
+
```javascript
|
|
11
|
+
let pjson = {
|
|
12
|
+
"pJson": [
|
|
13
|
+
{
|
|
14
|
+
"T": "Messaging",
|
|
15
|
+
"P": { "ID": { "H": "msg", "T": "prop" } },
|
|
16
|
+
"E": {
|
|
17
|
+
"PreRender": { "H": "quick.MM.trigger('fetchData');\r\n", "I": true, "HL": "TS" },
|
|
18
|
+
"fetchData": { "H": "let req=<any>{};\r\nreq.url='/api/data';\r\nreq.http='GET';\r\nreq.data=null;\r\nreq.blockRender=false;\r\nreq.responseField='data';\r\nreq.onSuccess='onData';\r\nreq.onFail='onFail';\r\nquick.Request.async(req);\r\n", "C": true, "HL": "TS" },
|
|
19
|
+
"onData": { "H": "let resData = response.data;\r\n/* process resData */\r\n", "C": true, "HL": "TS" },
|
|
20
|
+
"onFail": { "H": "quick.Quick.alert({ title:'Hata', text:'Bir hata oluştu.', category:'Error', actionButtons:[{ name:'Tamam', type:'Confirm' }] });\r\n", "C": true, "HL": "TS" }
|
|
21
|
+
},
|
|
22
|
+
"C": {}, "O": { "cType": "child" }, "_Editor": { "eID": "msg" }
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"T": "VContainer",
|
|
26
|
+
"P": { "ID": { "H": "pageContainer", "T": "prop" },
|
|
27
|
+
"class": { "H": "'container container--fluid'", "T": "class" } },
|
|
28
|
+
"E": {},
|
|
29
|
+
"C": { "default": { "c": [ /* PAGE CONTENT */ ], "cType": "slot" } },
|
|
30
|
+
"O": { "cType": "child" }, "_Editor": { "eID": "pageContainer" }
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"lrids": {}, "opt": { "V": 2.5 }
|
|
34
|
+
};
|
|
35
|
+
export default pjson
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Skeleton — with project ServiceCaller (only if the project provides one)
|
|
39
|
+
Same as above, plus a `CustomComponent` after `Messaging` (see [06-services.md](06-services.md) Pattern B), with init in its `onLoad`.
|
|
40
|
+
|
|
41
|
+
## Centered content scaffold (drop into PAGE CONTENT)
|
|
42
|
+
```json
|
|
43
|
+
{ "T": "VRow", "P": { "ID": { "H": "rowMain", "T": "prop" } }, "E": {},
|
|
44
|
+
"C": { "default": { "c": [
|
|
45
|
+
{ "T": "VCol", "P": { "ID": { "H": "colMain", "T": "prop" } }, "E": {},
|
|
46
|
+
"C": { "default": { "c": [
|
|
47
|
+
{ "T": "VCard", "P": { "ID": { "H": "cardMain", "T": "prop" } },
|
|
48
|
+
"S": { "xs-xl": { "backgroundColor": "#ffffff", "boxShadow": "none", "paddingTop": "16px", "paddingRight": "16px", "paddingBottom": "16px", "paddingLeft": "16px", "borderTopLeftRadius": "8px", "borderTopRightRadius": "8px", "borderBottomLeftRadius": "8px", "borderBottomRightRadius": "8px" } },
|
|
49
|
+
"E": {}, "C": { "default": { "c": [
|
|
50
|
+
{ "T": "QLabel", "P": { "ID": { "H": "lblPageTitle", "T": "prop" },
|
|
51
|
+
"text": { "H": "'Page Title'", "T": "prop" } },
|
|
52
|
+
"S": { "xs-xl": { "fontSize": "24px", "fontWeight": "700", "fontColor": "#1976D2" } },
|
|
53
|
+
"E": {}, "C": {}, "O": { "cType": "slot" }, "_Editor": { "eID": "lblPageTitle" } }
|
|
54
|
+
], "cType": "slot" } },
|
|
55
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "cardMain" } }
|
|
56
|
+
], "cType": "slot" } },
|
|
57
|
+
"O": { "cType": "slot" },
|
|
58
|
+
"S": { "xs-xl": { "justifyContent": "center" } },
|
|
59
|
+
"_Editor": { "eID": "colMain" } }
|
|
60
|
+
], "cType": "slot" } },
|
|
61
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "rowMain" } }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Styling — every component carries an `S` (don't skip it)
|
|
65
|
+
The skeletons above are intentionally minimal: **structure + `class` only**. They are *not* a finished page. A real page also sets each component's visual design in its top-level **`S`** object — the cross-platform Style tag the editor serializes (sibling to `T`/`P`/`E`/`C`/`O`/`_Editor`). After you drop in a section, give its components their `S`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{ "T": "VCard", "P": { "ID": { "H": "cardMain", "T": "prop" } },
|
|
69
|
+
"S": { "xs-xl": {
|
|
70
|
+
"backgroundColor": "#ffffff",
|
|
71
|
+
"borderTopLeftRadius": "8px", "borderTopRightRadius": "8px",
|
|
72
|
+
"borderBottomLeftRadius": "8px", "borderBottomRightRadius": "8px",
|
|
73
|
+
"paddingTop": "16px", "paddingRight": "16px", "paddingBottom": "16px", "paddingLeft": "16px",
|
|
74
|
+
"boxShadow": "0 2px 8px rgba(0,0,0,0.08)" } },
|
|
75
|
+
"E": {}, "C": { "default": { "c": [ /* … */ ], "cType": "slot" } },
|
|
76
|
+
"O": { "cType": "slot" }, "_Editor": { "eID": "cardMain" } }
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- `S` is **range-keyed** (`"xs-xl"` = all sizes; narrower ranges like `"md-xl"` override for larger screens). Values are strings; `""` = unset.
|
|
80
|
+
- Pull the supported param names + editor defaults for each `T` from [../reference/component-styles.json](../reference/component-styles.json) — don't invent params.
|
|
81
|
+
- Style a child's text/icon (e.g. a `VBtn` label color) through the **parent's `SC`**, not the child's own `S`.
|
|
82
|
+
- **Everything goes in `S`** — layout (flex/grid/spacing/direction, where the component's `componentStyleList` supports it) and visuals (color/font/border/shadow/exact size) alike. `O.layout` (`dOpt`+`class`) is legacy; don't author it. Reach for the component's `class` prop only as a Web-only last resort when `S` truly has no param for it — never on Mobile.
|
|
83
|
+
|
|
84
|
+
Full how-to: [04-styling.md](04-styling.md). **A page delivered with no `S` is unstyled — the styling pass is part of authoring, not an optional extra.**
|
|
85
|
+
|
|
86
|
+
## Large-page policy (incremental)
|
|
87
|
+
Don't rewrite a whole page in one shot. Write the skeleton + scaffold, then add **1–3 sections per edit**, validate, and report progress. Reuse examples from [../examples/style/](../examples/style/) (the `S`-system set) and neighboring project pages rather than re-deriving structures.
|