cabloy 5.1.134 → 5.1.136
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/.cabloy-version +1 -1
- package/.claude/skills/cabloy-backend-scaffold/SKILL.md +9 -0
- package/.claude/skills/cabloy-zova-source-reading/SKILL.md +24 -1
- package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +12 -0
- package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +28 -0
- package/.github/workflows/playwright-e2e.yml +2 -2
- package/.github/workflows/vona-test-pg.yml +1 -1
- package/.github/workflows/vona-test-sqlite3.yml +1 -1
- package/CHANGELOG.md +38 -0
- package/CLAUDE.md +1 -0
- package/cabloy-docs/.vitepress/config.mjs +7 -0
- package/cabloy-docs/backend/markdown-guide.md +189 -0
- package/cabloy-docs/frontend/component-guide.md +6 -0
- package/cabloy-docs/frontend/css-in-js-guide.md +6 -0
- package/cabloy-docs/frontend/markdown-guide.md +258 -0
- package/cabloy-docs/frontend/page-guide.md +48 -0
- package/cabloy-docs/frontend/page-params-guide.md +4 -2
- package/cabloy-docs/frontend/page-route-guide.md +2 -2
- package/cabloy-docs/frontend/zova-router-under-the-hood.md +2 -0
- package/cabloy-docs/frontend/zova-source-reading-map.md +53 -9
- package/cabloy-docs/fullstack/a-pay-payment-suite.md +333 -0
- package/cabloy-docs/fullstack/payment-sandbox-configuration.md +285 -0
- package/e2e/specs/a-commerce/commerce.spec.ts +503 -47
- package/e2e/specs/cabloy-basic/basic.spec.ts +30 -0
- package/package.json +1 -1
- package/vona/env/.env +2 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/cli/templates/init/error/boilerplate/config/errors.ts +6 -1
- package/vona/packages-cli/cli-set-api/cli/templates/tools/crudBasic/boilerplate/src/entity/{{resourceName}}.tsx_ +2 -0
- package/vona/packages-cli/cli-set-api/cli/templates/tools/crudStart/boilerplate/src/entity/{{resourceName}}.tsx_ +2 -0
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/packages-utils/localeutil/package.json +1 -1
- package/vona/packages-utils/localeutil/src/util.ts +1 -1
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/packages-vona/vona-core/package.json +1 -1
- package/vona/packages-vona/vona-mock/package.json +1 -1
- package/vona/patches/{zova-core@5.1.82.patch → zova-core@5.1.84.patch} +2 -2
- package/vona/pnpm-lock.yaml +826 -270
- package/vona/pnpm-workspace.yaml +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-catalog/package.json +1 -1
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/.metadata/index.ts +99 -1
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/bean/meta.index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/bean/meta.version.ts +19 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/config/locale/en-us.ts +3 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/config/locale/zh-cn.ts +3 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/controller/product.ts +3 -3
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/productContentUpdate.tsx +14 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/productContentView.tsx +19 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/productCreate.tsx +48 -3
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/productPublicDetail.tsx +15 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/productUpdate.tsx +48 -3
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/dto/productView.tsx +52 -3
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/entity/productContent.tsx +36 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/model/product.ts +6 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/model/productContent.ts +22 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/service/product.ts +82 -6
- package/vona/src/suite/a-commerce/modules/commerce-catalog/test/productContent.test.ts +271 -0
- package/vona/src/suite/a-commerce/modules/commerce-catalog/test/productPresentation.test.ts +81 -2
- package/vona/src/suite/a-commerce/modules/commerce-payment/package.json +4 -1
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/payScene.commerceOrder.ts +32 -15
- package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentAttempt.test.ts +8 -2
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/.metadata/index.ts +8 -2
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/.metadata/locales.ts +18 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/bean/ssrMenu.home.ts +3 -1
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/config/locale/en-us.ts +3 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/config/locale/zh-cn.ts +3 -0
- package/vona/src/suite/a-commerce/modules/commerce-siteweb/src/index.ts +1 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/controller/checkout.ts +13 -2
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/lib/providerReference.ts +18 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/service/order.ts +43 -8
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/paymentOutcome.test.ts +74 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/providerReference.test.ts +33 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/refundLifecycle.test.ts +73 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/reservationExpiry.test.ts +2 -0
- package/vona/src/suite/a-home/modules/home-user/src/.metadata/index.ts +30 -0
- package/vona/src/suite/a-home/modules/home-user/src/bean/meta.version.ts +7 -2
- package/vona/src/suite/a-home/modules/home-user/src/config/locale/en-us.ts +4 -1
- package/vona/src/suite/a-home/modules/home-user/src/config/locale/zh-cn.ts +4 -1
- package/vona/src/suite/a-home/modules/home-user/src/config/roles.ts +4 -4
- package/vona/src/suite/a-home/modules/home-user/src/entity/role.ts +2 -2
- package/vona/src/suite/a-home/modules/home-user/src/entity/user.ts +8 -1
- package/vona/src/suite/a-home/modules/home-user/src/service/userAdapter.ts +6 -2
- package/vona/src/suite/a-home/modules/home-user/test/passportTest.test.ts +1 -0
- package/vona/src/suite/a-home/modules/home-user/test/role.test.ts +4 -4
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/package.json +64 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/src/.metadata/index.ts +54 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/src/.metadata/this.ts +2 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/src/bean/bean.markdown.ts +137 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/src/index.ts +1 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/tsconfig.build.json +11 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-markdown/tsconfig.json +7 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/bean/bean.ssr.ts +17 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/lib/beanSsrSiteBase.ts +11 -3
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -1
- package/vona/src/suite-vendor/a-cabloy/tsconfig.json +3 -0
- package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.version.ts +1 -0
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/entity/providerOperation.tsx +8 -1
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/lib/index.ts +1 -0
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/lib/providerOperationFailure.ts +8 -0
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/service/providerOperation.ts +187 -29
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/types/payment.ts +4 -0
- package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-paypal/src/bean/payProvider.paypal.ts +0 -6
- package/vona/src/suite-vendor/a-pay/modules/pay-paypal/src/index.ts +1 -0
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +2 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/src/bean/payProvider.stripe.ts +458 -22
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/src/index.ts +1 -0
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/src/lib/stripeGateway.ts +85 -0
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/src/types/index.ts +2 -0
- package/vona/src/suite-vendor/a-pay/package.json +5 -5
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +1 -0
- package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/bean.passport.ts +14 -0
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/guard.passport.ts +4 -0
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/types/role.ts +3 -2
- package/vona/src/suite-vendor/a-vona/modules/a-user/src/types/user.ts +4 -0
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/packages-utils/logger/package.json +2 -2
- package/zova/packages-utils/zova-jsx/package.json +2 -2
- package/zova/packages-zova/zova/package.json +3 -3
- package/zova/packages-zova/zova-core/package.json +3 -3
- package/zova/packages-zova/zova-core/src/core/sys/resource.ts +1 -1
- package/zova/packages-zova/zova-core/src/core/sys/util.ts +8 -0
- package/zova/pnpm-lock.yaml +570 -11
- package/zova/src/front/config/config/config.cabloyCommerce.ts +0 -6
- package/zova/src/suite/a-commerce/modules/commerce-catalog/package.json +3 -1
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/api/openapi/schemas.ts +236 -36
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/api/openapi/types.ts +4962 -2402
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/config/locale/en-us.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/config/locale/zh-cn.ts +1 -0
- package/zova/src/suite/a-commerce/modules/commerce-catalog/src/page/product/controller.tsx +8 -3
- package/zova/src/suite/a-commerce/modules/commerce-member/src/.metadata/index.ts +6 -7
- package/zova/src/suite/a-commerce/modules/commerce-member/src/page/address/controller.tsx +1 -3
- package/zova/src/suite/a-commerce/modules/commerce-member/src/routes.ts +2 -3
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/.metadata/index.ts +13 -20
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/cart/controller.tsx +3 -9
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/checkout/controller.tsx +9 -11
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/order/controller.tsx +0 -1
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/orders/controller.tsx +6 -4
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/page/payment/controller.tsx +78 -17
- package/zova/src/suite/a-commerce/modules/commerce-trade/src/routes.ts +10 -13
- package/zova/src/suite/a-home/modules/home-api/mock/passport.fake.ts +3 -3
- package/zova/src/suite/a-home/modules/home-api/src/.metadata/index.ts +31 -1
- package/zova/src/suite/a-home/modules/home-api/src/api/homeBaseSiteCatalog.ts +24 -0
- package/zova/src/suite/a-home/modules/home-api/src/api/openapi/schemas.ts +329 -17
- package/zova/src/suite/a-home/modules/home-api/src/api/openapi/types.ts +5866 -1829
- package/zova/src/suite/a-home/modules/home-api/src/apiSchema/homeBaseSiteCatalog.ts +13 -0
- package/zova/src/suite/a-home/modules/home-base/src/component/page/controller.tsx +1 -0
- package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.header.tsx +0 -1
- package/zova/src/suite/cabloy-basic/modules/basic-details/src/types/detail.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/package.json +61 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/component/formFieldMarkdown.ts +36 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/component/markdownHtml.ts +36 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/index.ts +147 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/this.ts +2 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/formFieldMarkdown/controller.tsx +111 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/formFieldMarkdown/render.tsx +40 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/formFieldMarkdown/style.ts +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/markdownHtml/controller.tsx +17 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/markdownHtml/render.tsx +9 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/markdownHtml/style.ts +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/index.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/lib/richTextContentStyle.ts +142 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/tsconfig.build.json +13 -0
- package/zova/src/suite/cabloy-basic/modules/basic-markdown/tsconfig.json +5 -0
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/component/blockPage/controller.tsx +25 -3
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/types/page.ts +1 -0
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/types/pageEntry.ts +1 -0
- package/zova/src/suite/cabloy-basic/package.json +1 -0
- package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
- package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +7 -0
- package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-logger/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-router/src/bean/sys.router.ts +3 -2
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/test/lib/ssrProfile.test.ts +88 -0
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/package.json +5 -5
- package/.claude/scheduled_tasks.lock +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IApiSchemaOptions } from 'zova-module-a-api';
|
|
2
|
+
|
|
3
|
+
import { BeanBase } from 'zova';
|
|
4
|
+
import { ApiSchema } from 'zova-module-a-api';
|
|
5
|
+
|
|
6
|
+
import { ApiApiHomeBaseSiteCatalogselectPath } from '../api/homeBaseSiteCatalog.js';
|
|
7
|
+
|
|
8
|
+
@ApiSchema()
|
|
9
|
+
export class ApiSchemaHomeBaseSiteCatalog extends BeanBase {
|
|
10
|
+
select(options?: IApiSchemaOptions) {
|
|
11
|
+
return this.$sdk.createApiSchemas(ApiApiHomeBaseSiteCatalogselectPath, 'get', options);
|
|
12
|
+
}
|
|
13
|
+
}
|
package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/render.header.tsx
CHANGED
|
@@ -29,7 +29,6 @@ export class RenderHeader extends BeanRenderBase {
|
|
|
29
29
|
<ul class="menu menu-horizontal">
|
|
30
30
|
{this.$$r.$$renderLocale.render()}
|
|
31
31
|
{this.$$r.$$renderTheme.renderThemeDark()}
|
|
32
|
-
{this.$ssr.profileOptions.useCookie && this.$$r.$$renderTheme.renderThemeName()}
|
|
33
32
|
</ul>
|
|
34
33
|
</div>
|
|
35
34
|
</div>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "zova-module-basic-markdown",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"Zova Module"
|
|
7
|
+
],
|
|
8
|
+
"author": "",
|
|
9
|
+
"files": [
|
|
10
|
+
"mock",
|
|
11
|
+
"dist",
|
|
12
|
+
"src",
|
|
13
|
+
"icons",
|
|
14
|
+
"assets"
|
|
15
|
+
],
|
|
16
|
+
"type": "module",
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"types": [
|
|
20
|
+
"./src/index.ts",
|
|
21
|
+
"./dist/index.d.ts"
|
|
22
|
+
],
|
|
23
|
+
"import": "./src/index.ts",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./*": "./*"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
30
|
+
"tsc:publish": "npm run clean && node ../../../../../packages-cli/cli/src/bin/zova.ts :bin:buildModule --sourcemap && tsc -p tsconfig.build.json",
|
|
31
|
+
"prepublishOnly": "npm run tsc:publish",
|
|
32
|
+
"prepack": "clean-package",
|
|
33
|
+
"postpack": "clean-package restore"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@tiptap/core": "^3.30.0",
|
|
37
|
+
"@tiptap/extension-highlight": "^3.30.0",
|
|
38
|
+
"@tiptap/extension-image": "^3.30.0",
|
|
39
|
+
"@tiptap/extension-list": "^3.30.0",
|
|
40
|
+
"@tiptap/extension-table": "^3.30.0",
|
|
41
|
+
"@tiptap/markdown": "^3.30.0",
|
|
42
|
+
"@tiptap/starter-kit": "^3.30.0",
|
|
43
|
+
"@tiptap/vue-3": "^3.30.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"clean-package": "^2.2.0",
|
|
47
|
+
"rimraf": "^6.1.3"
|
|
48
|
+
},
|
|
49
|
+
"clean-package": {
|
|
50
|
+
"indent": 2,
|
|
51
|
+
"replace": {
|
|
52
|
+
"exports.\\..types": "./dist/index.d.ts"
|
|
53
|
+
},
|
|
54
|
+
"remove": [
|
|
55
|
+
"clean-package",
|
|
56
|
+
"devDependencies",
|
|
57
|
+
"exports.\\..import"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"title": "basic-markdown"
|
|
61
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TypeControllerInnerProps } from 'zova';
|
|
2
|
+
|
|
3
|
+
import { defineComponent } from 'vue';
|
|
4
|
+
import { prepareComponentOptions, useController } from 'zova';
|
|
5
|
+
|
|
6
|
+
import type { ControllerFormFieldMarkdownProps } from '../../component/formFieldMarkdown/controller.jsx';
|
|
7
|
+
|
|
8
|
+
import { ControllerFormFieldMarkdown } from '../../component/formFieldMarkdown/controller.jsx';
|
|
9
|
+
import { RenderFormFieldMarkdown } from '../../component/formFieldMarkdown/render.jsx';
|
|
10
|
+
import { StyleFormFieldMarkdown } from '../../component/formFieldMarkdown/style.js';
|
|
11
|
+
export type ZFormFieldMarkdownProps = {
|
|
12
|
+
controllerRef?: (ref: ControllerFormFieldMarkdown) => void;
|
|
13
|
+
} & ControllerFormFieldMarkdownProps;
|
|
14
|
+
|
|
15
|
+
type ControllerInnerProps = TypeControllerInnerProps<
|
|
16
|
+
ControllerFormFieldMarkdownProps,
|
|
17
|
+
keyof typeof ControllerFormFieldMarkdown.$propsDefault
|
|
18
|
+
>;
|
|
19
|
+
declare module 'zova-module-basic-markdown' {
|
|
20
|
+
export interface ControllerFormFieldMarkdown {
|
|
21
|
+
$props: ControllerInnerProps;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
declare module 'zova-module-basic-markdown' {
|
|
25
|
+
export interface StyleFormFieldMarkdown extends ControllerFormFieldMarkdown {}
|
|
26
|
+
export interface RenderFormFieldMarkdown extends StyleFormFieldMarkdown {}
|
|
27
|
+
}
|
|
28
|
+
export const ZFormFieldMarkdown = defineComponent((_props: ZFormFieldMarkdownProps) => {
|
|
29
|
+
useController(ControllerFormFieldMarkdown, RenderFormFieldMarkdown, StyleFormFieldMarkdown);
|
|
30
|
+
return () => {};
|
|
31
|
+
}, prepareComponentOptions(ControllerFormFieldMarkdown.$componentOptions));
|
|
32
|
+
declare module 'zova-module-a-bean' {
|
|
33
|
+
export interface IVonaComponentRecord {
|
|
34
|
+
'basic-markdown:formFieldMarkdown': ControllerFormFieldMarkdownProps;
|
|
35
|
+
}
|
|
36
|
+
}
|
package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/.metadata/component/markdownHtml.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { TypeControllerInnerProps } from 'zova';
|
|
2
|
+
|
|
3
|
+
import { defineComponent } from 'vue';
|
|
4
|
+
import { prepareComponentOptions, useController } from 'zova';
|
|
5
|
+
|
|
6
|
+
import type { ControllerMarkdownHtmlProps } from '../../component/markdownHtml/controller.jsx';
|
|
7
|
+
|
|
8
|
+
import { ControllerMarkdownHtml } from '../../component/markdownHtml/controller.jsx';
|
|
9
|
+
import { RenderMarkdownHtml } from '../../component/markdownHtml/render.jsx';
|
|
10
|
+
import { StyleMarkdownHtml } from '../../component/markdownHtml/style.js';
|
|
11
|
+
export type ZMarkdownHtmlProps = {
|
|
12
|
+
controllerRef?: (ref: ControllerMarkdownHtml) => void;
|
|
13
|
+
} & ControllerMarkdownHtmlProps;
|
|
14
|
+
|
|
15
|
+
type ControllerInnerProps = TypeControllerInnerProps<
|
|
16
|
+
ControllerMarkdownHtmlProps,
|
|
17
|
+
keyof typeof ControllerMarkdownHtml.$propsDefault
|
|
18
|
+
>;
|
|
19
|
+
declare module 'zova-module-basic-markdown' {
|
|
20
|
+
export interface ControllerMarkdownHtml {
|
|
21
|
+
$props: ControllerInnerProps;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
declare module 'zova-module-basic-markdown' {
|
|
25
|
+
export interface StyleMarkdownHtml extends ControllerMarkdownHtml {}
|
|
26
|
+
export interface RenderMarkdownHtml extends StyleMarkdownHtml {}
|
|
27
|
+
}
|
|
28
|
+
export const ZMarkdownHtml = defineComponent((_props: ZMarkdownHtmlProps) => {
|
|
29
|
+
useController(ControllerMarkdownHtml, RenderMarkdownHtml, StyleMarkdownHtml);
|
|
30
|
+
return () => {};
|
|
31
|
+
}, prepareComponentOptions(ControllerMarkdownHtml.$componentOptions));
|
|
32
|
+
declare module 'zova-module-a-bean' {
|
|
33
|
+
export interface IVonaComponentRecord {
|
|
34
|
+
'basic-markdown:markdownHtml': ControllerMarkdownHtmlProps;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
// eslint-disable
|
|
2
|
+
/** controller: begin */
|
|
3
|
+
export * from '../component/formFieldMarkdown/controller.jsx';
|
|
4
|
+
export * from '../component/markdownHtml/controller.jsx';
|
|
5
|
+
|
|
6
|
+
import 'zova';
|
|
7
|
+
declare module 'zova' {
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
declare module 'zova-module-basic-markdown' {
|
|
12
|
+
|
|
13
|
+
export interface ControllerFormFieldMarkdown {
|
|
14
|
+
/** @internal */
|
|
15
|
+
get scope(): ScopeModuleBasicMarkdown;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ControllerMarkdownHtml {
|
|
19
|
+
/** @internal */
|
|
20
|
+
get scope(): ScopeModuleBasicMarkdown;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** controller: end */
|
|
24
|
+
/** controller: begin */
|
|
25
|
+
import { ControllerFormFieldMarkdown } from '../component/formFieldMarkdown/controller.jsx';
|
|
26
|
+
import { ControllerMarkdownHtml } from '../component/markdownHtml/controller.jsx';
|
|
27
|
+
import 'zova';
|
|
28
|
+
declare module 'zova' {
|
|
29
|
+
export interface IBeanRecordLocal {
|
|
30
|
+
'basic-markdown.controller.formFieldMarkdown': ControllerFormFieldMarkdown;
|
|
31
|
+
'basic-markdown.controller.markdownHtml': ControllerMarkdownHtml;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** controller: end */
|
|
35
|
+
|
|
36
|
+
/** components: begin */
|
|
37
|
+
export * from './component/formFieldMarkdown.js';
|
|
38
|
+
import { ZFormFieldMarkdown } from './component/formFieldMarkdown.js';
|
|
39
|
+
export * from './component/markdownHtml.js';
|
|
40
|
+
import { ZMarkdownHtml } from './component/markdownHtml.js';
|
|
41
|
+
export const components = {
|
|
42
|
+
'formFieldMarkdown': ZFormFieldMarkdown,
|
|
43
|
+
'markdownHtml': ZMarkdownHtml,
|
|
44
|
+
};
|
|
45
|
+
import 'zova';
|
|
46
|
+
declare module 'zova' {
|
|
47
|
+
export interface IComponentRecord {
|
|
48
|
+
'basic-markdown:formFieldMarkdown': ControllerFormFieldMarkdown;
|
|
49
|
+
'basic-markdown:markdownHtml': ControllerMarkdownHtml;
|
|
50
|
+
}
|
|
51
|
+
export interface IZovaComponentRecord {
|
|
52
|
+
'basic-markdown:formFieldMarkdown': typeof ZFormFieldMarkdown;
|
|
53
|
+
'basic-markdown:markdownHtml': typeof ZMarkdownHtml;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** components: end */
|
|
57
|
+
/** render: begin */
|
|
58
|
+
export * from '../component/formFieldMarkdown/render.jsx';
|
|
59
|
+
export * from '../component/markdownHtml/render.jsx';
|
|
60
|
+
|
|
61
|
+
import 'zova';
|
|
62
|
+
declare module 'zova' {
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
declare module 'zova-module-basic-markdown' {
|
|
67
|
+
|
|
68
|
+
export interface RenderFormFieldMarkdown {
|
|
69
|
+
/** @internal */
|
|
70
|
+
get scope(): ScopeModuleBasicMarkdown;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface RenderMarkdownHtml {
|
|
74
|
+
/** @internal */
|
|
75
|
+
get scope(): ScopeModuleBasicMarkdown;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/** render: end */
|
|
79
|
+
/** render: begin */
|
|
80
|
+
import { RenderFormFieldMarkdown } from '../component/formFieldMarkdown/render.jsx';
|
|
81
|
+
import { RenderMarkdownHtml } from '../component/markdownHtml/render.jsx';
|
|
82
|
+
import 'zova';
|
|
83
|
+
declare module 'zova' {
|
|
84
|
+
export interface IBeanRecordLocal {
|
|
85
|
+
'basic-markdown.render.formFieldMarkdown': RenderFormFieldMarkdown;
|
|
86
|
+
'basic-markdown.render.markdownHtml': RenderMarkdownHtml;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** render: end */
|
|
90
|
+
/** style: begin */
|
|
91
|
+
export * from '../component/formFieldMarkdown/style.js';
|
|
92
|
+
export * from '../component/markdownHtml/style.js';
|
|
93
|
+
|
|
94
|
+
import 'zova';
|
|
95
|
+
declare module 'zova' {
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
declare module 'zova-module-basic-markdown' {
|
|
100
|
+
|
|
101
|
+
export interface StyleFormFieldMarkdown {
|
|
102
|
+
/** @internal */
|
|
103
|
+
get scope(): ScopeModuleBasicMarkdown;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export interface StyleMarkdownHtml {
|
|
107
|
+
/** @internal */
|
|
108
|
+
get scope(): ScopeModuleBasicMarkdown;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** style: end */
|
|
112
|
+
/** style: begin */
|
|
113
|
+
import { StyleFormFieldMarkdown } from '../component/formFieldMarkdown/style.js';
|
|
114
|
+
import { StyleMarkdownHtml } from '../component/markdownHtml/style.js';
|
|
115
|
+
import 'zova';
|
|
116
|
+
declare module 'zova' {
|
|
117
|
+
export interface IBeanRecordLocal {
|
|
118
|
+
'basic-markdown.style.formFieldMarkdown': StyleFormFieldMarkdown;
|
|
119
|
+
'basic-markdown.style.markdownHtml': StyleMarkdownHtml;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** style: end */
|
|
123
|
+
/** scope: begin */
|
|
124
|
+
import { BeanScopeBase, type BeanScopeUtil } from 'zova';
|
|
125
|
+
import { Scope } from 'zova-module-a-bean';
|
|
126
|
+
|
|
127
|
+
@Scope()
|
|
128
|
+
export class ScopeModuleBasicMarkdown extends BeanScopeBase {}
|
|
129
|
+
|
|
130
|
+
export interface ScopeModuleBasicMarkdown {
|
|
131
|
+
util: BeanScopeUtil;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
import 'zova';
|
|
135
|
+
declare module 'zova' {
|
|
136
|
+
export interface IBeanScopeRecord {
|
|
137
|
+
'basic-markdown': ScopeModuleBasicMarkdown;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** scope: end */
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { IComponentOptions } from 'zova';
|
|
2
|
+
import type {
|
|
3
|
+
ControllerFormField,
|
|
4
|
+
IFormFieldComponentOptions,
|
|
5
|
+
IFormFieldRenderContextPropsBucket,
|
|
6
|
+
} from 'zova-module-a-form';
|
|
7
|
+
import type { IResourceFormFieldOptionsBase } from 'zova-module-a-openapi';
|
|
8
|
+
|
|
9
|
+
import { Highlight } from '@tiptap/extension-highlight';
|
|
10
|
+
import { Image } from '@tiptap/extension-image';
|
|
11
|
+
import { TaskItem, TaskList } from '@tiptap/extension-list';
|
|
12
|
+
import { TableKit } from '@tiptap/extension-table';
|
|
13
|
+
import { Markdown } from '@tiptap/markdown';
|
|
14
|
+
import StarterKit from '@tiptap/starter-kit';
|
|
15
|
+
import { Editor } from '@tiptap/vue-3';
|
|
16
|
+
import { BeanControllerBase } from 'zova';
|
|
17
|
+
import { Controller } from 'zova-module-a-bean';
|
|
18
|
+
|
|
19
|
+
declare module 'zova-module-a-openapi' {
|
|
20
|
+
export interface IResourceFormFieldRecord {
|
|
21
|
+
'basic-markdown:formFieldMarkdown'?: IResourceFormFieldMarkdownOptions;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface IResourceFormFieldMarkdownOptions extends IResourceFormFieldOptionsBase {}
|
|
26
|
+
|
|
27
|
+
export interface ControllerFormFieldMarkdownProps extends IFormFieldComponentOptions {
|
|
28
|
+
options?: IResourceFormFieldMarkdownOptions;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@Controller()
|
|
32
|
+
export class ControllerFormFieldMarkdown extends BeanControllerBase {
|
|
33
|
+
static $propsDefault = {};
|
|
34
|
+
static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };
|
|
35
|
+
|
|
36
|
+
editor?: Editor;
|
|
37
|
+
value = '';
|
|
38
|
+
readonly = false;
|
|
39
|
+
private _syncing = false;
|
|
40
|
+
private _setValue?: (value: string, disableNotifyChanged?: boolean) => void;
|
|
41
|
+
private _handleBlur?: () => void;
|
|
42
|
+
|
|
43
|
+
protected async __init__() {
|
|
44
|
+
this.$controllerMounted(() => {
|
|
45
|
+
this.editor = new Editor({
|
|
46
|
+
extensions: [
|
|
47
|
+
Markdown,
|
|
48
|
+
StarterKit,
|
|
49
|
+
TaskList,
|
|
50
|
+
TaskItem.configure({ nested: true }),
|
|
51
|
+
Image,
|
|
52
|
+
TableKit,
|
|
53
|
+
Highlight,
|
|
54
|
+
],
|
|
55
|
+
content: this.value,
|
|
56
|
+
contentType: 'markdown',
|
|
57
|
+
editable: !this.readonly,
|
|
58
|
+
editorProps: {
|
|
59
|
+
attributes: {
|
|
60
|
+
class: 'min-h-96 p-4 outline-none',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
onUpdate: ({ editor }) => {
|
|
64
|
+
if (this._syncing) return;
|
|
65
|
+
this._setValue?.(editor.getMarkdown());
|
|
66
|
+
},
|
|
67
|
+
onBlur: () => {
|
|
68
|
+
this._handleBlur?.();
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
this.$watch(
|
|
72
|
+
() => this.value,
|
|
73
|
+
value => {
|
|
74
|
+
if (!this.editor || this.editor.getMarkdown() === value) return;
|
|
75
|
+
this._syncing = true;
|
|
76
|
+
this.editor.commands.setContent(value, { contentType: 'markdown' });
|
|
77
|
+
this._syncing = false;
|
|
78
|
+
},
|
|
79
|
+
);
|
|
80
|
+
this.$watch(
|
|
81
|
+
() => this.readonly,
|
|
82
|
+
readonly => {
|
|
83
|
+
this.editor?.setEditable(!readonly);
|
|
84
|
+
},
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
protected __dispose__() {
|
|
90
|
+
this.editor?.destroy();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
public bindFormField(
|
|
94
|
+
propsBucket: IFormFieldRenderContextPropsBucket,
|
|
95
|
+
formField: ControllerFormField,
|
|
96
|
+
) {
|
|
97
|
+
const value = propsBucket.value ?? '';
|
|
98
|
+
const readonly = propsBucket.readonly ?? false;
|
|
99
|
+
if (this.value !== value) this.value = value;
|
|
100
|
+
if (this.readonly !== readonly) this.readonly = readonly;
|
|
101
|
+
if (this._setValue && this._handleBlur) return;
|
|
102
|
+
this._setValue = (value, disableNotifyChanged) => {
|
|
103
|
+
if (this.readonly) return;
|
|
104
|
+
formField.setValue(value, disableNotifyChanged);
|
|
105
|
+
};
|
|
106
|
+
this._handleBlur = () => {
|
|
107
|
+
if (this.readonly) return;
|
|
108
|
+
formField.handleBlur();
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { EditorContent } from '@tiptap/vue-3';
|
|
2
|
+
import { BeanRenderBase, ClientOnly } from 'zova';
|
|
3
|
+
import { Render } from 'zova-module-a-bean';
|
|
4
|
+
import { ZFormField } from 'zova-module-a-form';
|
|
5
|
+
|
|
6
|
+
@Render()
|
|
7
|
+
export class RenderFormFieldMarkdown extends BeanRenderBase {
|
|
8
|
+
public render() {
|
|
9
|
+
return (
|
|
10
|
+
<ZFormField
|
|
11
|
+
{...this.$props}
|
|
12
|
+
slotDefault={({ propsBucket, props }, $$formField) => {
|
|
13
|
+
this.bindFormField(propsBucket, $$formField);
|
|
14
|
+
return (
|
|
15
|
+
<div class={props.class}>
|
|
16
|
+
<div
|
|
17
|
+
class={[
|
|
18
|
+
'rounded-box border border-base-300 bg-base-100',
|
|
19
|
+
!$$formField.field.state.meta.isValid && 'border-error',
|
|
20
|
+
]}
|
|
21
|
+
onClick={() => {
|
|
22
|
+
if (!this.readonly) {
|
|
23
|
+
this.editor?.commands.focus();
|
|
24
|
+
}
|
|
25
|
+
}}
|
|
26
|
+
>
|
|
27
|
+
<ClientOnly
|
|
28
|
+
v-slots={{
|
|
29
|
+
default: () => <EditorContent editor={this.editor} class={this.cMarkdown} />,
|
|
30
|
+
placeholder: () => <div class="min-h-96 p-4" aria-hidden="true"></div>,
|
|
31
|
+
}}
|
|
32
|
+
></ClientOnly>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
);
|
|
36
|
+
}}
|
|
37
|
+
></ZFormField>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
}
|
package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/formFieldMarkdown/style.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BeanStyleBase } from 'zova';
|
|
2
|
+
import { Style } from 'zova-module-a-bean';
|
|
3
|
+
|
|
4
|
+
import { richTextContentStyle } from '../../lib/richTextContentStyle.js';
|
|
5
|
+
|
|
6
|
+
@Style()
|
|
7
|
+
export class StyleFormFieldMarkdown extends BeanStyleBase {
|
|
8
|
+
cMarkdown: string;
|
|
9
|
+
|
|
10
|
+
protected async __init__() {
|
|
11
|
+
this.cMarkdown = this.$style(richTextContentStyle());
|
|
12
|
+
}
|
|
13
|
+
}
|
package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/markdownHtml/controller.tsx
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IComponentOptions } from 'zova';
|
|
2
|
+
|
|
3
|
+
import { BeanControllerBase } from 'zova';
|
|
4
|
+
import { Controller } from 'zova-module-a-bean';
|
|
5
|
+
|
|
6
|
+
export interface ControllerMarkdownHtmlProps {
|
|
7
|
+
class?: string;
|
|
8
|
+
html?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@Controller()
|
|
12
|
+
export class ControllerMarkdownHtml extends BeanControllerBase {
|
|
13
|
+
static $propsDefault = {};
|
|
14
|
+
static $componentOptions: IComponentOptions = { inheritAttrs: false, deepExtendDefault: true };
|
|
15
|
+
|
|
16
|
+
protected async __init__() {}
|
|
17
|
+
}
|
package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/markdownHtml/render.tsx
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BeanRenderBase } from 'zova';
|
|
2
|
+
import { Render } from 'zova-module-a-bean';
|
|
3
|
+
|
|
4
|
+
@Render()
|
|
5
|
+
export class RenderMarkdownHtml extends BeanRenderBase {
|
|
6
|
+
public render() {
|
|
7
|
+
return <div class={[this.$props.class, this.cMarkdown]} innerHTML={this.$props.html}></div>;
|
|
8
|
+
}
|
|
9
|
+
}
|
package/zova/src/suite/cabloy-basic/modules/basic-markdown/src/component/markdownHtml/style.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BeanStyleBase } from 'zova';
|
|
2
|
+
import { Style } from 'zova-module-a-bean';
|
|
3
|
+
|
|
4
|
+
import { richTextContentStyle } from '../../lib/richTextContentStyle.js';
|
|
5
|
+
|
|
6
|
+
@Style()
|
|
7
|
+
export class StyleMarkdownHtml extends BeanStyleBase {
|
|
8
|
+
cMarkdown: string;
|
|
9
|
+
|
|
10
|
+
protected async __init__() {
|
|
11
|
+
this.cMarkdown = this.$style(richTextContentStyle());
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './.metadata/index.js';
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { NestedCSSProperties } from 'typestyle/lib/types.js';
|
|
2
|
+
|
|
3
|
+
export function richTextContentStyle(): NestedCSSProperties {
|
|
4
|
+
return {
|
|
5
|
+
color: 'var(--color-base-content)',
|
|
6
|
+
lineHeight: 1.65,
|
|
7
|
+
overflowWrap: 'anywhere',
|
|
8
|
+
$nest: {
|
|
9
|
+
'& > :first-child, & > :first-child > :first-child': {
|
|
10
|
+
marginTop: 0,
|
|
11
|
+
},
|
|
12
|
+
'& > :last-child, & > :first-child > :last-child': {
|
|
13
|
+
marginBottom: 0,
|
|
14
|
+
},
|
|
15
|
+
'& h1, & h2, & h3, & h4, & h5, & h6': {
|
|
16
|
+
fontWeight: 700,
|
|
17
|
+
lineHeight: 1.25,
|
|
18
|
+
margin: '1.5rem 0 0.75rem',
|
|
19
|
+
},
|
|
20
|
+
'& h1': {
|
|
21
|
+
fontSize: '1.875rem',
|
|
22
|
+
},
|
|
23
|
+
'& h2': {
|
|
24
|
+
fontSize: '1.5rem',
|
|
25
|
+
},
|
|
26
|
+
'& h3': {
|
|
27
|
+
fontSize: '1.25rem',
|
|
28
|
+
},
|
|
29
|
+
'& h4': {
|
|
30
|
+
fontSize: '1.125rem',
|
|
31
|
+
},
|
|
32
|
+
'& h5, & h6': {
|
|
33
|
+
fontSize: '1rem',
|
|
34
|
+
},
|
|
35
|
+
'& p': {
|
|
36
|
+
margin: '0.75rem 0',
|
|
37
|
+
},
|
|
38
|
+
'& ul, & ol': {
|
|
39
|
+
margin: '0.75rem 0',
|
|
40
|
+
paddingInlineStart: '1.5rem',
|
|
41
|
+
},
|
|
42
|
+
'& ul': {
|
|
43
|
+
listStyleType: 'disc',
|
|
44
|
+
},
|
|
45
|
+
'& ol': {
|
|
46
|
+
listStyleType: 'decimal',
|
|
47
|
+
},
|
|
48
|
+
'& li + li': {
|
|
49
|
+
marginTop: '0.25rem',
|
|
50
|
+
},
|
|
51
|
+
'& li > ul, & li > ol': {
|
|
52
|
+
margin: '0.25rem 0',
|
|
53
|
+
},
|
|
54
|
+
'& ul[data-type="taskList"]': {
|
|
55
|
+
listStyle: 'none',
|
|
56
|
+
paddingInlineStart: 0,
|
|
57
|
+
},
|
|
58
|
+
'& ul[data-type="taskList"] li': {
|
|
59
|
+
alignItems: 'flex-start',
|
|
60
|
+
display: 'flex',
|
|
61
|
+
gap: '0.5rem',
|
|
62
|
+
},
|
|
63
|
+
'& ul[data-type="taskList"] li > label': {
|
|
64
|
+
lineHeight: 1.65,
|
|
65
|
+
paddingTop: '0.2rem',
|
|
66
|
+
},
|
|
67
|
+
'& ul[data-type="taskList"] li > div': {
|
|
68
|
+
flex: 1,
|
|
69
|
+
minWidth: 0,
|
|
70
|
+
},
|
|
71
|
+
'& ul[data-type="taskList"] li > div > p': {
|
|
72
|
+
margin: 0,
|
|
73
|
+
},
|
|
74
|
+
'& blockquote': {
|
|
75
|
+
borderInlineStart: '0.25rem solid var(--color-base-300)',
|
|
76
|
+
color: 'color-mix(in srgb, var(--color-base-content) 75%, transparent)',
|
|
77
|
+
margin: '1rem 0',
|
|
78
|
+
paddingInlineStart: '1rem',
|
|
79
|
+
},
|
|
80
|
+
'& code': {
|
|
81
|
+
background: 'var(--color-base-200)',
|
|
82
|
+
borderRadius: 'var(--radius-box)',
|
|
83
|
+
fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace',
|
|
84
|
+
fontSize: '0.875em',
|
|
85
|
+
padding: '0.125rem 0.25rem',
|
|
86
|
+
},
|
|
87
|
+
'& pre': {
|
|
88
|
+
background: 'var(--color-base-200)',
|
|
89
|
+
borderRadius: 'var(--radius-box)',
|
|
90
|
+
lineHeight: 1.5,
|
|
91
|
+
margin: '1rem 0',
|
|
92
|
+
overflowX: 'auto',
|
|
93
|
+
padding: '1rem',
|
|
94
|
+
},
|
|
95
|
+
'& pre code': {
|
|
96
|
+
background: 'transparent',
|
|
97
|
+
borderRadius: 0,
|
|
98
|
+
fontSize: '0.875rem',
|
|
99
|
+
padding: 0,
|
|
100
|
+
},
|
|
101
|
+
'& mark': {
|
|
102
|
+
background: 'color-mix(in srgb, var(--color-primary) 30%, transparent)',
|
|
103
|
+
borderRadius: '0.125rem',
|
|
104
|
+
color: 'inherit',
|
|
105
|
+
padding: '0.125rem 0.25rem',
|
|
106
|
+
},
|
|
107
|
+
'& a': {
|
|
108
|
+
color: 'var(--color-primary)',
|
|
109
|
+
textDecoration: 'underline',
|
|
110
|
+
textUnderlineOffset: '0.125rem',
|
|
111
|
+
},
|
|
112
|
+
'& img': {
|
|
113
|
+
borderRadius: 'var(--radius-box)',
|
|
114
|
+
display: 'block',
|
|
115
|
+
height: 'auto',
|
|
116
|
+
margin: '1rem 0',
|
|
117
|
+
maxWidth: '100%',
|
|
118
|
+
},
|
|
119
|
+
'& hr': {
|
|
120
|
+
border: 0,
|
|
121
|
+
borderTop: '1px solid var(--color-base-300)',
|
|
122
|
+
margin: '1.5rem 0',
|
|
123
|
+
},
|
|
124
|
+
'& table': {
|
|
125
|
+
borderCollapse: 'collapse',
|
|
126
|
+
margin: '1rem 0',
|
|
127
|
+
width: '100%',
|
|
128
|
+
},
|
|
129
|
+
'& th, & td': {
|
|
130
|
+
border: '1px solid var(--color-base-300)',
|
|
131
|
+
minWidth: '8rem',
|
|
132
|
+
padding: '0.5rem 0.75rem',
|
|
133
|
+
textAlign: 'start',
|
|
134
|
+
verticalAlign: 'top',
|
|
135
|
+
},
|
|
136
|
+
'& th': {
|
|
137
|
+
background: 'var(--color-base-200)',
|
|
138
|
+
fontWeight: 600,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|