@gestaltrun/dsh-ui-brand 0.0.0-stage → 0.1.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DeepSeek
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,34 @@
1
+ # Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
2
+ # section, a hash of its English and Chinese blocks outside code blocks and generated regions.
3
+ # After editing either side, bring the other along and re-record with:
4
+ # pnpm run verify-translation-pairing --write product/ui-brand/README.md
5
+ /:
6
+ en: 1adf55cd647e2fc5
7
+ zh: dd623eedd5fa6169
8
+ /gestaltrun-dsh-ui-brand:
9
+ en: 0c71e8d9623e5c52
10
+ zh: be1a2796fa01d6f1
11
+ /gestaltrun-dsh-ui-brand/summary:
12
+ en: 9ed5a929d0a75932
13
+ zh: 5735289053349ff7
14
+ /gestaltrun-dsh-ui-brand/table-of-contents:
15
+ en: fef1a8a79d9583a1
16
+ zh: fef1a8a79d9583a1
17
+ /gestaltrun-dsh-ui-brand/product-composition:
18
+ en: 8b6348f6152835c5
19
+ zh: af96b86249132bbc
20
+ /gestaltrun-dsh-ui-brand/brand-artwork:
21
+ en: 8c5c2c0da6991d16
22
+ zh: bdeeeef3cd2df583
23
+ /gestaltrun-dsh-ui-brand/model-experience:
24
+ en: cf2c5e1d50a517e1
25
+ zh: 9fec4d2e607911be
26
+ /gestaltrun-dsh-ui-brand/model-experience/kv-cache-effect:
27
+ en: f4649870835c978f
28
+ zh: 40f2c47381beba8e
29
+ /gestaltrun-dsh-ui-brand/known-limitations-and-deferred-work:
30
+ en: 7dcb38b9cb87ee86
31
+ zh: d00d76d8c9f76ac3
32
+ /gestaltrun-dsh-ui-brand/dev-note:
33
+ en: b75c8458928b72b9
34
+ zh: 02cbcc6baa338b07
package/README.md CHANGED
@@ -1,3 +1,50 @@
1
- # Temporary Holding Version
1
+ ---
2
+ description: "Xingce brand mark, brand name, and travel-agency badge for the client sidebar brand row and the conversation hero."
3
+ kind: "package-plugin"
4
+ ---
2
5
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
6
+ # @gestaltrun/dsh-ui-brand
7
+
8
+ English | [中文](README.zh.md)
9
+
10
+ ## Summary
11
+
12
+ This product plugin shows the 行策 (Xingce) brand in the client: the little-people icon in the sidebar brand row and in the conversation hero, and the 行策 name with the 旅行社 badge beside the sidebar mark. A product composition that enables it replaces the official DeepSeek brand occupants.
13
+
14
+ ## Table of Contents
15
+
16
+ - [Product composition](#product-composition)
17
+ - [Brand artwork](#brand-artwork)
18
+ - [Model Experience](#model-experience)
19
+ - [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
20
+ - [Dev Note](#dev-note)
21
+
22
+ ## Product composition
23
+
24
+ Compose this package in a product bundle whose patch disables the official `ui-brand-official` row and inserts `gestaltrun-brand-ui` naming `@gestaltrun/dsh-ui-brand`; the shipped merchant composition does both in the [resource center patch](../resource-center/cordis.patch.yml). The three brand slots are `single` cells that reject a second registration at load, so keeping the official row disabled belongs to the composition rather than to a runtime preference. The Client entry registers `sidebar.brand.mark`, `sidebar.brand.name`, and `conversation.hero.brand.mark` as one declaration-aware set through `ctx.slots.inject`, and the generator form installs and rolls the set back atomically. Disabling the row removes every occupant and reloads restore exactly one set; unloading the declaring surface releases the set the same way. The Node companion registers nothing.
25
+
26
+ ## Brand artwork
27
+
28
+ The little-people icon shows four colorful people, a central golden starburst, and surrounding gold and pale-purple halos. The application icon places this artwork on a cream rounded-square background; the brand mark uses the same artwork on a transparent background. The transparent 512×512 master is extracted from `apps/desktop/build/icon.png` with manually traced silhouette masks. Fully opaque pixels retain the source RGB values with zero differences; partially transparent edge pixels use nearby interior source colors to avoid cream fringes.
29
+
30
+ The brand component and Web favicons inline a 192×192 PNG, resized from the transparent master with Lanczos, as a base64 data URI of about 34.8 KB (34,818 bytes per copy). The colorful people keep their colors in both themes without inversion. The light favicon is transparent, and the dark favicon adds a light backing disc.
31
+
32
+ The name draws 行策 beside the mark, and a rounded badge plate carries 旅行社. Both lettering runs are outline contours flattened from Hiragino Sans GB W6 and inlined as SVG `path` data, so macOS, Windows, and Linux draw identical glyphs without loading a CJK font; the badge lettering stays 旅行社 in every locale because the lockup is proper-noun artwork. The name and badge plate use `currentColor`, and the badge lettering uses `var(--dsw-alias-label-primary-inverted)` to adapt to the theme. The brand components render decorative artwork with `aria-hidden`; the host surfaces own the surrounding labels and hit targets.
33
+
34
+ ## Model Experience
35
+
36
+ The UI adds no model-visible input. Host runtime commands own any subsequent Session behavior.
37
+
38
+ ### KV Cache effect
39
+
40
+ None directly.
41
+
42
+ ## Known Limitations and Deferred Work
43
+
44
+ - The wordmark contours are fixed geometry: they neither follow the UI font nor change with a locale, and regenerating them needs the brand asset pipeline that produced `wordmark-paths.json` plus a component edit.
45
+ - The little-people mark is a raster image; details become less distinct at small sizes, and artwork updates must synchronize the PNG data URIs in the component and both favicons.
46
+ - Application icons, the tray icon, and the favicon are static assets under `apps/`; this package covers only the three client brand slots.
47
+
48
+ ## Dev Note
49
+
50
+ None.
package/README.zh.md ADDED
@@ -0,0 +1,50 @@
1
+ ---
2
+ description: "行策品牌标记、品牌名与旅行社徽标,用于客户端侧边栏品牌行与对话首屏。"
3
+ kind: "package-plugin"
4
+ ---
5
+
6
+ # @gestaltrun/dsh-ui-brand
7
+
8
+ [English](README.md) | 中文
9
+
10
+ ## Summary
11
+
12
+ 本产品插件在客户端展示行策品牌:侧边栏品牌行与对话首屏使用小人组图标,侧边栏标记旁是「行策」品牌名与「旅行社」徽标。启用它的产品组合会替换官方 DeepSeek 品牌占位者。
13
+
14
+ ## Table of Contents
15
+
16
+ - [Product composition](#product-composition)
17
+ - [Brand artwork](#brand-artwork)
18
+ - [Model Experience](#model-experience)
19
+ - [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
20
+ - [Dev Note](#dev-note)
21
+
22
+ ## Product composition
23
+
24
+ 在产品 bundle 的补丁中组合本包:先禁用官方 `ui-brand-official` 行,再插入命名为 `@gestaltrun/dsh-ui-brand` 的 `gestaltrun-brand-ui` 行;已交付的商家组合在[资源中心补丁](../resource-center/cordis.patch.yml)中同时完成这两步。三个品牌插槽都是 `single` 单元格,重复注册会在加载时报错,因此禁用官方行属于组合的一部分,而不是运行时偏好。Client 入口通过 `ctx.slots.inject` 以声明感知方式一次性注册 `sidebar.brand.mark`、`sidebar.brand.name` 与 `conversation.hero.brand.mark`,generator 形式让整组原子安装与原子回滚。禁用该行会移除全部占位者,重新加载恢复且只恢复一份;声明面卸载时同样释放整组。Node companion 不注册任何内容。
25
+
26
+ ## Brand artwork
27
+
28
+ 小人组图标由 4 个彩色小人、中心金色星芒与外围金色和淡紫色光环组成。应用图标在这一图形下铺设奶油色圆角方形底,品牌小图标则使用同一图形的透明底版本。透明底 512×512 主图通过手工描摹轮廓遮罩从 `apps/desktop/build/icon.png` 提取。完全不透明像素保留源图 RGB 值,差异为零;半透明边缘像素使用邻近内部源像素的颜色,以避免奶油色边缘。
29
+
30
+ 品牌组件与 Web favicon 将透明底主图经 Lanczos 缩放为 192×192 PNG,以 base64 data URI 内联,每份约 34.8 KB(34,818 字节)。彩色小人组在深浅主题中保持原色,不随主题反转。浅色 favicon 使用透明底,深色 favicon 增加浅色衬底圆盘。
31
+
32
+ 品牌名在标记右侧绘制「行策」,圆角徽标底承载「旅行社」。两段文字都是从 Hiragino Sans GB W6 展平并内联为 SVG `path` 的轮廓数据,macOS、Windows 与 Linux 无需加载中文字体即绘制出完全一致的字形;徽标文字在任何语言下都保持「旅行社」,因为该字标是专有名词图形。品牌名与徽标底使用 `currentColor`,徽标文字使用 `var(--dsw-alias-label-primary-inverted)` 自适应主题。品牌组件以 `aria-hidden` 渲染装饰性图形;外围标签与点击区域由宿主界面负责。
33
+
34
+ ## Model Experience
35
+
36
+ UI 不增加任何模型可见输入。后续 Session 行为由 Host 运行时命令负责。
37
+
38
+ ### KV Cache effect
39
+
40
+ 无直接影响。
41
+
42
+ ## Known Limitations and Deferred Work
43
+
44
+ - 字标轮廓是固定几何:既不跟随 UI 字体,也不随语言变化;重新生成需要产出 `wordmark-paths.json` 的品牌资产流水线,并修改组件。
45
+ - 小人组标记是位图,小尺寸下细节辨识度降低;更新图形时须同步组件和两个 favicon 中的 PNG data URI。
46
+ - 应用图标、托盘图标与 favicon 是 `apps/` 下的静态资产;本包只覆盖三个客户端品牌插槽。
47
+
48
+ ## Dev Note
49
+
50
+ 无。
package/lib/client.js ADDED
@@ -0,0 +1,86 @@
1
+ window.__ModuleLoader__.load({
2
+ id: "@gestaltrun/dsh-ui-brand",
3
+ factory: (require) => {
4
+ const module = { exports: {} };
5
+ const exports = module.exports;
6
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ //#region src/client/Brand.tsx
9
+ /**
10
+ * Outlined 行策 wordmark contours (name, badge plate, badge lettering) in the frozen
11
+ * `0 0 219 48` brand canvas. The glyphs are flattened Hiragino Sans GB W6 outlines, so
12
+ * every platform draws identical lettering without loading a CJK font.
13
+ */
14
+ const NAME_PATH = "M64.06 22.134H64.8555C65.6695 22.134 66.4465 22.171 67.057 22.245V20.173C66.576 20.247 65.836 20.284 64.8 20.284H58.51C57.622 20.284 56.7895 20.247 56.2345 20.173V22.245C56.808 22.171 57.659 22.134 58.51 22.134H62.0435V29.1085C62.0435 29.5155 61.951 29.5525 61.2295 29.5525C60.619 29.5525 59.7125 29.4785 58.695 29.349C59.0095 30.126 59.1205 30.607 59.2315 31.421C60.1195 31.458 60.6005 31.4765 61.2665 31.4765C62.4505 31.4765 63.024 31.384 63.431 31.1435C63.8935 30.8475 64.06 30.422 64.06 29.497ZM54.2365 14.5305C53.996 14.993 53.7555 15.3445 53.3485 15.8255C52.442 16.8245 51.4985 17.5645 50.037 18.36C50.518 18.9335 50.8325 19.3775 51.2025 20.099C52.9415 18.989 54.255 17.842 55.4575 16.399C55.809 15.992 55.809 15.992 56.0125 15.77ZM56.9745 17.5275C57.585 17.4535 58.362 17.4165 59.139 17.4165H64.171C64.911 17.4165 65.5955 17.4535 66.243 17.5275V15.474C65.688 15.548 65.059 15.585 64.134 15.585H59.139C58.177 15.585 57.4925 15.548 56.9745 15.474ZM52.5715 29.349C52.5715 30.311 52.5345 31.125 52.442 31.6985H54.736C54.6435 31.088 54.6065 30.348 54.6065 29.3675V22.0785C55.0875 21.4865 55.254 21.246 55.6795 20.6355C55.9385 20.247 56.105 20.025 56.29 19.8215L54.551 18.6745C53.848 20.2655 51.9425 22.3005 50 23.5585C50.407 24.2245 50.6475 24.7055 50.925 25.538C51.5725 25.0755 52.1275 24.539 52.6085 23.9655C52.5715 25.316 52.5715 25.3345 52.5715 26.1115Z M84.653 17.7495C85.4855 17.7495 86.022 17.768 86.5955 17.842V15.9365C86.022 16.0105 85.393 16.0475 84.5605 16.0475H80.916C81.027 15.8255 81.027 15.8255 81.4525 14.919L79.473 14.5675C79.251 15.474 78.807 16.3065 78.215 17.028C78.1225 17.139 78.1225 17.139 78.067 17.213V15.918C77.549 15.992 76.994 16.029 76.2725 16.029H73.7935C74.1265 15.4185 74.3115 15.0485 74.3855 14.919L72.406 14.5675C71.999 15.9365 70.9815 17.287 69.557 18.3415C70.0935 18.804 70.482 19.211 70.8705 19.729C71.703 19.026 72.11 18.582 72.739 17.731H73.738C74.034 18.2675 74.256 18.7855 74.5705 19.6365L76.3835 19.1185C76.0875 18.5265 75.8655 18.101 75.6435 17.731H76.7165C76.957 17.731 77.3455 17.7495 77.549 17.768C77.438 17.879 77.3455 17.953 77.142 18.1195C77.586 18.4525 77.8635 18.693 78.1965 19.063H76.957C77.0125 19.3775 77.031 19.6735 77.0495 20.062H71.999C71.1665 20.062 70.63 20.025 70.038 19.9325V21.8565C70.6115 21.801 71.2405 21.764 71.999 21.764H77.0495V22.689H73.072C72.443 22.689 71.9065 22.6705 71.4625 22.615C71.518 23.0775 71.5365 23.54 71.5365 24.1135V25.7415C71.5365 26.4445 71.4995 26.9625 71.444 27.4435H73.516C73.4605 27.092 73.442 26.648 73.442 25.945V24.317H77.0495V24.983C76.55 25.6305 76.3095 25.8895 75.699 26.389C74.9775 27.018 74.2745 27.499 73.5715 27.906C72.4985 28.498 71 29.1085 69.6865 29.497C70.482 30.2925 70.63 30.4775 71.111 31.273C72.184 30.8475 73.294 30.311 74.219 29.7375C75.4585 28.9605 76.3465 28.165 77.105 27.166C77.068 27.61 77.0495 28.128 77.0495 28.4055V28.461L77.068 29.8115V29.9595C77.068 30.6625 77.031 31.162 76.92 31.754H79.177C79.066 31.1435 79.0475 30.903 79.029 29.83L79.0105 28.424C79.0105 27.9245 78.992 27.684 78.9735 27.0735C79.399 27.647 79.584 27.832 80.139 28.313C80.805 28.8865 81.2305 29.2195 81.8225 29.571C82.7475 30.163 84.098 30.792 85.43 31.273C85.7075 30.681 86.096 30.1815 86.762 29.4415C85.134 28.9975 83.765 28.498 82.692 27.9245C81.2675 27.166 79.8985 26.0745 79.0475 24.983V24.317H83.0065V25.39C83.0065 25.6675 82.8955 25.7415 82.4885 25.7415C82.174 25.7415 81.693 25.7045 81.323 25.6305C81.582 26.3335 81.656 26.6665 81.693 27.24C82.285 27.277 82.5995 27.2955 82.988 27.2955C83.6725 27.2955 84.098 27.24 84.357 27.092C84.7085 26.907 84.8935 26.5 84.8935 25.8895V24.1505C84.8935 23.503 84.912 23.022 84.9675 22.615C84.727 22.652 84.1535 22.6705 83.247 22.689H79.0475V21.764H84.505C85.4115 21.764 85.9295 21.7825 86.4845 21.8565V19.9325C85.9295 20.025 85.4485 20.062 84.505 20.062H79.0475C79.066 19.4515 79.0845 19.396 79.14 19.063H78.8625C79.2325 18.693 79.6025 18.2305 79.9355 17.7495H81.1565C81.545 18.434 81.804 18.9705 82.0445 19.655L83.913 19.1555C83.654 18.6375 83.4135 18.1935 83.136 17.7495Z";
15
+ /** Badge plate for the 旅行社 lettering. */
16
+ const BADGE_PLATE_PATH = "M101.3 16.4H145.7A2.8 2.8 0 0 1 148.5 19.2V28.8A2.8 2.8 0 0 1 145.7 31.6H101.3A2.8 2.8 0 0 1 98.5 28.8V19.2A2.8 2.8 0 0 1 101.3 16.4Z";
17
+ /** Outlined 旅行社 badge lettering. */
18
+ const BADGE_LETTERING_PATH = "M117.2424 21.8112C116.6472 22.2432 115.2168 22.608 113.8632 22.6848C113.892 22.896 113.9016 23.1264 113.9016 23.5584V26.8992C113.8824 27.2352 113.8248 27.36 113.6328 27.4656C113.6136 27.4848 113.5848 27.504 113.5368 27.5232L113.9784 28.3392C114.1896 28.2432 114.1896 28.2432 115.2264 27.792C115.9944 27.456 115.9944 27.456 116.2056 27.3408L116.0904 26.4C115.6584 26.6208 115.2168 26.8224 114.8808 26.9376V23.5296C115.1976 23.472 115.2648 23.4624 115.428 23.4336C115.5528 24.4896 115.716 25.1616 116.004 25.8912C116.436 26.9472 116.8968 27.6288 117.7608 28.4352C117.972 27.936 118.116 27.696 118.3944 27.3696C117.6936 26.7744 117.2424 26.1792 116.8968 25.3824C117.4344 24.9792 117.9432 24.5376 118.308 24.144L117.588 23.4528C117.2904 23.8464 116.964 24.1632 116.5704 24.4608C116.436 23.9616 116.388 23.7024 116.34 23.2416C116.7816 23.1168 117.3576 22.9344 117.7032 22.7904C117.876 22.7136 117.876 22.7136 117.9432 22.6848ZM113.2488 20.9472C113.0088 20.9856 112.7688 20.9952 112.3848 20.9952H111.9912C111.8376 20.496 111.6648 20.0736 111.4536 19.632L110.4936 19.9584C110.7336 20.4288 110.8584 20.7072 110.9544 20.9952H110.3688C109.9176 20.9952 109.6872 20.9856 109.428 20.9376V21.9744C109.6488 21.936 109.8504 21.9264 110.2728 21.9264H110.3784C110.3592 23.4624 110.3112 24.2112 110.1864 25.0368C110.0136 26.16 109.7256 26.9184 109.2264 27.5808C109.5432 27.8496 109.716 28.0512 109.9752 28.4928C110.4552 27.8208 110.6856 27.312 110.9256 26.4288C111.1368 25.68 111.2136 25.1232 111.2904 23.8752H112.0488C112.0392 24.5568 112.0296 24.9696 112.0296 25.104C111.9816 26.0448 111.9624 26.4 111.924 26.6688C111.8472 27.2448 111.7992 27.3216 111.4824 27.3216C111.2616 27.3216 111.06 27.2928 110.8296 27.2256C110.9544 27.5904 111.0024 27.8592 111.0216 28.2624C111.252 28.2816 111.3672 28.2912 111.5304 28.2912C112.2696 28.2912 112.5864 28.1184 112.7496 27.6288C112.9032 27.1488 113.0088 26.064 113.028 24.7104C113.0472 23.184 113.0472 23.184 113.0664 22.9152C112.8936 22.9344 112.692 22.944 112.2984 22.944H111.3384C111.3576 22.5504 111.3576 22.5504 111.3672 22.2432C111.3672 22.176 111.3672 22.0608 111.3672 21.9264H112.3752C112.6824 21.9264 112.9032 21.936 113.0856 21.9456C112.9128 22.1472 112.836 22.224 112.596 22.4448C112.9416 22.656 113.2392 22.8768 113.3832 23.0688C113.8728 22.5696 114.1896 22.1568 114.4968 21.6384H117.2904C117.7128 21.6384 117.9624 21.648 118.2312 21.6768V20.64C117.972 20.6784 117.6552 20.6976 117.2328 20.6976H114.9864C115.0728 20.4864 115.1016 20.4288 115.1784 20.2176C115.2168 20.1408 115.3032 19.9296 115.3224 19.8912C115.332 19.872 115.3416 19.8432 115.3608 19.8048L114.276 19.6032C114.1992 20.1792 113.7576 21.1008 113.2488 21.744Z M126.4904 23.5104H126.9032C127.3256 23.5104 127.7288 23.5296 128.0456 23.568V22.4928C127.796 22.5312 127.412 22.5504 126.8744 22.5504H123.6104C123.1496 22.5504 122.7176 22.5312 122.4296 22.4928V23.568C122.7272 23.5296 123.1688 23.5104 123.6104 23.5104H125.444V27.1296C125.444 27.3408 125.396 27.36 125.0216 27.36C124.7048 27.36 124.2344 27.3216 123.7064 27.2544C123.8696 27.6576 123.9272 27.9072 123.9848 28.3296C124.4456 28.3488 124.6952 28.3584 125.0408 28.3584C125.6552 28.3584 125.9528 28.3104 126.164 28.1856C126.404 28.032 126.4904 27.8112 126.4904 27.3312ZM121.3928 19.5648C121.268 19.8048 121.1432 19.9872 120.932 20.2368C120.4616 20.7552 119.972 21.1392 119.2136 21.552C119.4632 21.8496 119.6264 22.08 119.8184 22.4544C120.7208 21.8784 121.4024 21.2832 122.0264 20.5344C122.2088 20.3232 122.2088 20.3232 122.3144 20.208ZM122.8136 21.12C123.1304 21.0816 123.5336 21.0624 123.9368 21.0624H126.548C126.932 21.0624 127.2872 21.0816 127.6232 21.12V20.0544C127.3352 20.0928 127.0088 20.112 126.5288 20.112H123.9368C123.4376 20.112 123.0824 20.0928 122.8136 20.0544ZM120.5288 27.2544C120.5288 27.7536 120.5096 28.176 120.4616 28.4736H121.652C121.604 28.1568 121.5848 27.7728 121.5848 27.264V23.4816C121.8344 23.1744 121.9208 23.0496 122.1416 22.7328C122.276 22.5312 122.3624 22.416 122.4584 22.3104L121.556 21.7152C121.1912 22.5408 120.2024 23.5968 119.1944 24.2496C119.4056 24.5952 119.5304 24.8448 119.6744 25.2768C120.0104 25.0368 120.2984 24.7584 120.548 24.4608C120.5288 25.1616 120.5288 25.1712 120.5288 25.5744Z M131.4568 24.6048C131.8696 24.9696 132.196 25.3248 132.6088 25.8432L133.2232 24.9792C132.7432 24.48 132.4168 24.2112 131.6872 23.6736C132.1096 23.1072 132.3496 22.704 132.6568 22.0128C132.7336 21.8496 132.7816 21.7536 132.8776 21.6096L132.4072 21.1104C132.2824 21.1296 132.148 21.1392 131.86 21.1392H131.14L131.7352 20.7072C131.4952 20.2752 131.2456 19.9296 130.8712 19.5072L130.0648 20.016C130.4392 20.4384 130.6312 20.7072 130.8808 21.1392H129.9304C129.6136 21.1392 129.412 21.1296 129.172 21.1008V22.1664C129.4312 22.1376 129.6328 22.128 129.988 22.128H131.5432C131.2264 22.7424 130.948 23.136 130.5064 23.6064C129.9784 24.1536 129.5176 24.5184 128.8456 24.9024C129.0472 25.1904 129.22 25.536 129.3352 25.9008C129.8248 25.584 130.0168 25.44 130.4104 25.0848V27.4944C130.4104 27.9456 130.3912 28.2048 130.3528 28.4928H131.5144C131.4664 28.2048 131.4568 27.9648 131.4568 27.5136ZM135.5272 22.32V20.6304C135.5272 20.2176 135.5368 20.016 135.5944 19.632H134.3944C134.4424 20.0064 134.4616 20.2368 134.4616 20.6304V22.32H133.7416C133.3288 22.32 133.0792 22.3104 132.8008 22.272V23.3568C133.108 23.328 133.4152 23.3088 133.7416 23.3088H134.4616V27.0624H133.4152C132.9544 27.0624 132.6184 27.0432 132.3112 27.0048V28.1664C132.6472 28.1184 133.012 28.0992 133.396 28.0992H136.6792C137.0632 28.0992 137.4376 28.1184 137.7736 28.1664V27.0048C137.476 27.0432 137.1592 27.0624 136.6792 27.0624H135.5272V23.3088H136.5448C136.8808 23.3088 137.1784 23.328 137.4856 23.3568V22.272C137.2168 22.3104 136.9768 22.32 136.5448 22.32Z";
19
+ /** Transparent little-people artwork, resized from the 512 px master with Lanczos to 192 px. */
20
+ const LITTLE_PEOPLE_MARK = "data:image/png;base64,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";
21
+ /**
22
+ * Render the full-color little-people mark on either theme without a background plate.
23
+ * @param props - Host-supplied mark presentation: the square edge and the host geometry class.
24
+ * @returns the decorative mark image, hidden from assistive technology.
25
+ */
26
+ function XingceBrandMark({ size, className }) {
27
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
28
+ src: LITTLE_PEOPLE_MARK,
29
+ width: size,
30
+ height: size,
31
+ alt: "",
32
+ "aria-hidden": "true",
33
+ className
34
+ });
35
+ }
36
+ /**
37
+ * Render the brand name and the travel-agency badge without the independently slotted mark.
38
+ * The window crops the shared brand canvas to the name and badge columns of the lockup.
39
+ * @returns the name svg (aria-hidden decorative brand art).
40
+ */
41
+ function XingceBrandName() {
42
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("svg", {
43
+ width: "106",
44
+ height: "24",
45
+ viewBox: "46 12 106 24",
46
+ fill: "none",
47
+ "aria-hidden": "true",
48
+ focusable: "false",
49
+ children: [
50
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
51
+ d: NAME_PATH,
52
+ fill: "currentColor"
53
+ }),
54
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
55
+ d: BADGE_PLATE_PATH,
56
+ fill: "currentColor"
57
+ }),
58
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
59
+ d: BADGE_LETTERING_PATH,
60
+ fill: "var(--dsw-alias-label-primary-inverted)"
61
+ })
62
+ ]
63
+ });
64
+ }
65
+ //#endregion
66
+ //#region src/client/index.ts
67
+ /** Required service: the UI slot registry. */
68
+ const inject = ["slots"];
69
+ /**
70
+ * Fill the sidebar and hero brand slots as one declaration-aware registration set. The set installs
71
+ * and rolls back atomically, so the mark, the name, and the hero mark always appear and leave together.
72
+ * @param ctx - Client root context.
73
+ */
74
+ function apply(ctx) {
75
+ ctx.slots.inject("sidebar.brand.mark", () => ctx.slots.inject("sidebar.brand.name", () => ctx.slots.inject("conversation.hero.brand.mark", function* () {
76
+ yield ctx.slots.register({ name: "sidebar.brand.mark" }, XingceBrandMark);
77
+ yield ctx.slots.register({ name: "sidebar.brand.name" }, XingceBrandName);
78
+ yield ctx.slots.register({ name: "conversation.hero.brand.mark" }, XingceBrandMark);
79
+ })));
80
+ }
81
+ //#endregion
82
+ exports.apply = apply;
83
+ exports.inject = inject;
84
+ return module.exports;
85
+ }
86
+ });
package/lib/index.js ADDED
@@ -0,0 +1,7 @@
1
+ //#region src/index.ts
2
+ /** Loader companion for the Xingce brand Client entry; the Host face contributes no runtime state. */
3
+ const name = "gestaltrun-ui-brand";
4
+ /** The Host companion registers nothing; the Client entry owns every contribution. */
5
+ function apply() {}
6
+ //#endregion
7
+ export { apply, name };
@@ -0,0 +1,13 @@
1
+ import type { HeroBrandMarkOwnerProps } from '@deepseek-ai/dsh-client-ui-conversation/client';
2
+ /**
3
+ * Render the full-color little-people mark on either theme without a background plate.
4
+ * @param props - Host-supplied mark presentation: the square edge and the host geometry class.
5
+ * @returns the decorative mark image, hidden from assistive technology.
6
+ */
7
+ export declare function XingceBrandMark({ size, className }: HeroBrandMarkOwnerProps): import("react").JSX.Element;
8
+ /**
9
+ * Render the brand name and the travel-agency badge without the independently slotted mark.
10
+ * The window crops the shared brand canvas to the name and badge columns of the lockup.
11
+ * @returns the name svg (aria-hidden decorative brand art).
12
+ */
13
+ export declare function XingceBrandName(): import("react").JSX.Element;
@@ -0,0 +1,10 @@
1
+ /** Xingce brand occupants for the generic browser-brand slots. */
2
+ import type { Context as ClientContext } from '@deepseek-ai/cordis';
3
+ /** Required service: the UI slot registry. */
4
+ export declare const inject: string[];
5
+ /**
6
+ * Fill the sidebar and hero brand slots as one declaration-aware registration set. The set installs
7
+ * and rolls back atomically, so the mark, the name, and the hero mark always appear and leave together.
8
+ * @param ctx - Client root context.
9
+ */
10
+ export declare function apply(ctx: ClientContext): void;
@@ -0,0 +1,4 @@
1
+ /** Loader companion for the Xingce brand Client entry; the Host face contributes no runtime state. */
2
+ export declare const name = "gestaltrun-ui-brand";
3
+ /** The Host companion registers nothing; the Client entry owns every contribution. */
4
+ export declare function apply(): void;
package/package.json CHANGED
@@ -1,6 +1,78 @@
1
1
  {
2
2
  "name": "@gestaltrun/dsh-ui-brand",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.0",
4
+ "description": "Xingce (行策) brand occupants for the sidebar brand row and the conversation hero brand slot",
5
+ "type": "module",
6
+ "main": "lib/index.js",
7
+ "types": "lib/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/types/index.d.ts",
11
+ "default": "./lib/index.js"
12
+ },
13
+ "./client": {
14
+ "types": "./lib/types/client/index.d.ts",
15
+ "default": "./lib/client.js"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "files": [
20
+ "lib",
21
+ "README.md",
22
+ "README.zh.md",
23
+ "LICENSE"
24
+ ],
25
+ "license": "MIT",
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/gestaltrun/deepseek-harness.git",
29
+ "directory": "product/ui-brand"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public",
33
+ "registry": "https://registry.npmjs.org/",
34
+ "tag": "candidate"
35
+ },
36
+ "dsh": {
37
+ "client": {
38
+ "inject": [
39
+ "@deepseek-ai/dsh-client-ui-conversation",
40
+ "@deepseek-ai/dsh-client-ui-renderer",
41
+ "@deepseek-ai/dsh-client-ui-sidebar"
42
+ ],
43
+ "platform": "web"
44
+ }
45
+ },
46
+ "peerDependencies": {
47
+ "@deepseek-ai/cordis": "4.0.5-alpha.1",
48
+ "react": "18.3.1",
49
+ "react-dom": "18.3.1"
50
+ },
51
+ "devDependencies": {
52
+ "@deepseek-ai/cordis": "4.0.5-alpha.1",
53
+ "@deepseek-ai/cordis-plugin-include": "1.0.10-alpha.1",
54
+ "@deepseek-ai/cordis-plugin-loader": "1.0.6-alpha.1",
55
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-alpha.3",
56
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.3",
57
+ "@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-alpha.3",
58
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.3",
59
+ "@testing-library/dom": "10.4.1",
60
+ "@testing-library/react": "16.3.2",
61
+ "@types/node": "22.20.0",
62
+ "@types/react": "18.3.31",
63
+ "@types/react-dom": "18.3.7",
64
+ "js-yaml": "4.2.0",
65
+ "jsdom": "26.0.0",
66
+ "react": "18.3.1",
67
+ "react-dom": "18.3.1",
68
+ "tsdown": "0.22.2",
69
+ "typescript": "6.0.3",
70
+ "vitest": "4.1.8"
71
+ },
72
+ "scripts": {
73
+ "build": "tsc -p tsconfig.build.json && tsdown",
74
+ "typecheck": "tsc -p tsconfig.client.json --noEmit && tsc -p tsconfig.test.json --noEmit",
75
+ "test": "vitest run && node --test tests/*.test.mjs",
76
+ "release:pack": "pnpm build && pnpm pack --pack-destination ../dist"
77
+ }
6
78
  }