@krizaka/ui 3.20.0 → 3.22.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.
Files changed (263) hide show
  1. package/README.md +1 -0
  2. package/dist/action-bar.js +4 -4
  3. package/dist/app-shell.js +1 -1
  4. package/dist/argument-card.js +4 -4
  5. package/dist/blocks.css +1 -1
  6. package/dist/button.js +3 -2
  7. package/dist/card.js +3 -3
  8. package/dist/{chunk-5MH64NIL.js → chunk-2L67YTNV.js} +2 -2
  9. package/dist/{chunk-2NB27LM7.js → chunk-3IN6TOPM.js} +4 -4
  10. package/dist/{chunk-VDR2EP6K.js → chunk-4QN5YJ3D.js} +17 -5
  11. package/dist/chunk-4QN5YJ3D.js.map +1 -0
  12. package/dist/chunk-AQSZJJAJ.js +126 -0
  13. package/dist/chunk-AQSZJJAJ.js.map +1 -0
  14. package/dist/{chunk-3GODX3D6.js → chunk-QDXV544C.js} +2 -2
  15. package/dist/chunk-QDXV544C.js.map +1 -0
  16. package/dist/chunk-R6NK6ZNY.js +1080 -0
  17. package/dist/chunk-R6NK6ZNY.js.map +1 -0
  18. package/dist/chunk-TDG7ED2W.js +1 -0
  19. package/dist/chunk-TDG7ED2W.js.map +1 -0
  20. package/dist/{chunk-LIPK4UCS.js → chunk-YCIBJ6OQ.js} +140 -209
  21. package/dist/chunk-YCIBJ6OQ.js.map +1 -0
  22. package/dist/code-block.js +17 -5
  23. package/dist/code-block.js.map +1 -1
  24. package/dist/comparison-table.d.ts +44 -0
  25. package/dist/comparison-table.js +84 -0
  26. package/dist/comparison-table.js.map +1 -0
  27. package/dist/data-table.js +19 -1066
  28. package/dist/data-table.js.map +1 -1
  29. package/dist/date-picker.js +5 -5
  30. package/dist/date-picker.js.map +1 -1
  31. package/dist/force-update-screen.d.ts +80 -0
  32. package/dist/force-update-screen.js +38 -0
  33. package/dist/force-update-screen.js.map +1 -0
  34. package/dist/genui.d.ts +219 -0
  35. package/dist/genui.js +506 -0
  36. package/dist/genui.js.map +1 -0
  37. package/dist/index.d.ts +17 -24
  38. package/dist/index.js +1 -1
  39. package/dist/maintenance-screen.d.ts +68 -0
  40. package/dist/maintenance-screen.js +35 -0
  41. package/dist/maintenance-screen.js.map +1 -0
  42. package/dist/marketing-layout.js +1 -1
  43. package/dist/marketing-layout.js.map +1 -1
  44. package/dist/media-grid.js +44 -152
  45. package/dist/media-grid.js.map +1 -1
  46. package/dist/meta-row.d.ts +54 -0
  47. package/dist/meta-row.js +35 -0
  48. package/dist/meta-row.js.map +1 -0
  49. package/dist/native.d.ts +92 -16
  50. package/dist/native.js +873 -814
  51. package/dist/native.js.map +1 -1
  52. package/dist/nav-bar.d.ts +30 -7
  53. package/dist/nav-bar.js +71 -17
  54. package/dist/nav-bar.js.map +1 -1
  55. package/dist/page-hero.js +5 -5
  56. package/dist/radio-group.js +1 -1
  57. package/dist/settings-layout.js +1 -1
  58. package/dist/settings-layout.js.map +1 -1
  59. package/dist/site-footer.js +2 -2
  60. package/dist/skip-link.js +1 -1
  61. package/dist/step-showcase.d.ts +62 -0
  62. package/dist/step-showcase.js +227 -0
  63. package/dist/step-showcase.js.map +1 -0
  64. package/dist/tabs.js +2 -2
  65. package/dist/tabs.js.map +1 -1
  66. package/dist/update-prompt.d.ts +86 -0
  67. package/dist/update-prompt.js +41 -0
  68. package/dist/update-prompt.js.map +1 -0
  69. package/dist/video-player.d.ts +1 -1
  70. package/dist/video-player.js +16 -3
  71. package/dist/video-player.js.map +1 -1
  72. package/package.json +108 -9
  73. package/registry/achievement.json +1 -1
  74. package/registry/action-bar.json +1 -1
  75. package/registry/activity-feed.json +1 -1
  76. package/registry/alert.json +1 -1
  77. package/registry/app-shell.json +1 -1
  78. package/registry/argument-card.json +1 -1
  79. package/registry/audio-player.json +1 -1
  80. package/registry/auth-layout.json +1 -1
  81. package/registry/avatar.json +1 -1
  82. package/registry/badge.json +1 -1
  83. package/registry/button.json +1 -1
  84. package/registry/card-grid.json +1 -1
  85. package/registry/card.json +1 -1
  86. package/registry/catalogue-page.json +1 -1
  87. package/registry/changelog-page.json +1 -1
  88. package/registry/chat.json +1 -1
  89. package/registry/checkbox.json +1 -1
  90. package/registry/chip-link.json +1 -1
  91. package/registry/chip.json +1 -1
  92. package/registry/choice-grid.json +1 -1
  93. package/registry/code-block.json +1 -1
  94. package/registry/combobox.json +1 -1
  95. package/registry/command.json +1 -1
  96. package/registry/comparison-table.json +207 -0
  97. package/registry/component-page.json +1 -1
  98. package/registry/confirm-button.json +1 -1
  99. package/registry/contact-page.json +1 -1
  100. package/registry/continue-prompt.json +1 -1
  101. package/registry/countdown.json +1 -1
  102. package/registry/cta-panel.json +1 -1
  103. package/registry/dashboard-layout.json +1 -1
  104. package/registry/data-table.json +1 -1
  105. package/registry/date-picker.json +3 -3
  106. package/registry/decision-list.json +1 -1
  107. package/registry/description-list.json +1 -1
  108. package/registry/detail-layout.json +1 -1
  109. package/registry/dialog.json +1 -1
  110. package/registry/docs-article-page.json +1 -1
  111. package/registry/docs-hub-page.json +1 -1
  112. package/registry/docs-layout.json +1 -1
  113. package/registry/document-viewer.json +1 -1
  114. package/registry/dropdown-menu.json +1 -1
  115. package/registry/empty-state.json +1 -1
  116. package/registry/error-page.json +1 -1
  117. package/registry/examples/comparison-table/versus.d.ts +4 -0
  118. package/registry/examples/comparison-table/versus.js +28 -0
  119. package/registry/examples/comparison-table/versus.tsx +20 -0
  120. package/registry/examples/dialog/native/sheet.dark.png +0 -0
  121. package/registry/examples/dialog/native/sheet.light.png +0 -0
  122. package/registry/examples/force-update-screen/default.d.ts +4 -0
  123. package/registry/examples/force-update-screen/default.js +25 -0
  124. package/registry/examples/force-update-screen/default.tsx +19 -0
  125. package/registry/examples/force-update-screen/native/default.d.ts +4 -0
  126. package/registry/examples/force-update-screen/native/default.dark.png +0 -0
  127. package/registry/examples/force-update-screen/native/default.js +24 -0
  128. package/registry/examples/force-update-screen/native/default.light.png +0 -0
  129. package/registry/examples/force-update-screen/native/default.tsx +18 -0
  130. package/registry/examples/genui/streaming.d.ts +4 -0
  131. package/registry/examples/genui/streaming.js +18 -0
  132. package/registry/examples/genui/streaming.tsx +14 -0
  133. package/registry/examples/genui/table.d.ts +4 -0
  134. package/registry/examples/genui/table.js +19 -0
  135. package/registry/examples/genui/table.tsx +14 -0
  136. package/registry/examples/maintenance-screen/default.d.ts +4 -0
  137. package/registry/examples/maintenance-screen/default.js +22 -0
  138. package/registry/examples/maintenance-screen/default.tsx +16 -0
  139. package/registry/examples/maintenance-screen/native/default.d.ts +4 -0
  140. package/registry/examples/maintenance-screen/native/default.dark.png +0 -0
  141. package/registry/examples/maintenance-screen/native/default.js +21 -0
  142. package/registry/examples/maintenance-screen/native/default.light.png +0 -0
  143. package/registry/examples/maintenance-screen/native/default.tsx +15 -0
  144. package/registry/examples/meta-row/native/video.d.ts +4 -0
  145. package/registry/examples/meta-row/native/video.dark.png +0 -0
  146. package/registry/examples/meta-row/native/video.js +11 -0
  147. package/registry/examples/meta-row/native/video.light.png +0 -0
  148. package/registry/examples/meta-row/native/video.tsx +5 -0
  149. package/registry/examples/meta-row/status.d.ts +4 -0
  150. package/registry/examples/meta-row/status.js +12 -0
  151. package/registry/examples/meta-row/status.tsx +7 -0
  152. package/registry/examples/meta-row/video.d.ts +4 -0
  153. package/registry/examples/meta-row/video.js +12 -0
  154. package/registry/examples/meta-row/video.tsx +7 -0
  155. package/registry/examples/nav-bar/family-product.js +16 -13
  156. package/registry/examples/nav-bar/family-product.tsx +19 -19
  157. package/registry/examples/step-showcase/desktop.d.ts +4 -0
  158. package/registry/examples/step-showcase/desktop.js +24 -0
  159. package/registry/examples/step-showcase/desktop.tsx +19 -0
  160. package/registry/examples/step-showcase/phone.d.ts +4 -0
  161. package/registry/examples/step-showcase/phone.js +24 -0
  162. package/registry/examples/step-showcase/phone.tsx +19 -0
  163. package/registry/examples/update-prompt/default.d.ts +4 -0
  164. package/registry/examples/update-prompt/default.js +24 -0
  165. package/registry/examples/update-prompt/default.tsx +18 -0
  166. package/registry/examples/update-prompt/native/default.d.ts +4 -0
  167. package/registry/examples/update-prompt/native/default.dark.png +0 -0
  168. package/registry/examples/update-prompt/native/default.js +23 -0
  169. package/registry/examples/update-prompt/native/default.light.png +0 -0
  170. package/registry/examples/update-prompt/native/default.tsx +17 -0
  171. package/registry/field.json +1 -1
  172. package/registry/file-upload.json +1 -1
  173. package/registry/filter-bar.json +1 -1
  174. package/registry/force-update-screen.json +323 -0
  175. package/registry/form.json +1 -1
  176. package/registry/gallery-page.json +1 -1
  177. package/registry/genui.json +409 -0
  178. package/registry/glow-card.json +1 -1
  179. package/registry/goal-gauge.json +1 -1
  180. package/registry/how-it-works-page.json +1 -1
  181. package/registry/image-cropper.json +1 -1
  182. package/registry/index.json +223 -4
  183. package/registry/iso.json +1 -1
  184. package/registry/kanban.json +1 -1
  185. package/registry/kbd.json +1 -1
  186. package/registry/landing-page.json +1 -1
  187. package/registry/landscape.json +1 -1
  188. package/registry/legal-page.json +1 -1
  189. package/registry/link-card.json +1 -1
  190. package/registry/list.json +1 -1
  191. package/registry/loader.json +1 -1
  192. package/registry/longform-page.json +1 -1
  193. package/registry/maintenance-screen.json +259 -0
  194. package/registry/map.json +2 -2
  195. package/registry/markdown.json +1 -1
  196. package/registry/marketing-layout.json +1 -1
  197. package/registry/marquee.json +1 -1
  198. package/registry/mascot-quote.json +1 -1
  199. package/registry/mascot-state.json +1 -1
  200. package/registry/mascots.json +1 -1
  201. package/registry/match-dialog.json +1 -1
  202. package/registry/media-capture.json +1 -1
  203. package/registry/media-grid.json +2 -2
  204. package/registry/meta-row.json +215 -0
  205. package/registry/meter.json +1 -1
  206. package/registry/nav-bar.json +58 -25
  207. package/registry/number-ticker.json +1 -1
  208. package/registry/page-header.json +1 -1
  209. package/registry/page-hero.json +1 -1
  210. package/registry/page.json +1 -1
  211. package/registry/pagination.json +1 -1
  212. package/registry/photo-grid.json +1 -1
  213. package/registry/pointer-light.json +1 -1
  214. package/registry/popover.json +1 -1
  215. package/registry/pricing-page.json +1 -1
  216. package/registry/product-page.json +1 -1
  217. package/registry/profile-card.json +1 -1
  218. package/registry/progress.json +1 -1
  219. package/registry/promise-card.json +1 -1
  220. package/registry/radio-group.json +2 -2
  221. package/registry/recipes.json +1 -1
  222. package/registry/scroll-stage.json +1 -1
  223. package/registry/search-field.json +1 -1
  224. package/registry/section-backdrop.json +1 -1
  225. package/registry/separator.json +1 -1
  226. package/registry/settings-layout.json +2 -2
  227. package/registry/showcase.json +1 -1
  228. package/registry/site-footer.json +13 -13
  229. package/registry/sites.json +1 -1
  230. package/registry/skeleton.json +1 -1
  231. package/registry/skip-link.json +2 -2
  232. package/registry/slider.json +1 -1
  233. package/registry/slot.json +1 -1
  234. package/registry/spinner.json +1 -1
  235. package/registry/split-view.json +1 -1
  236. package/registry/stage-banner.json +1 -1
  237. package/registry/stat.json +1 -1
  238. package/registry/status-page.json +1 -1
  239. package/registry/step-progress.json +1 -1
  240. package/registry/step-showcase.json +296 -0
  241. package/registry/stepper.json +1 -1
  242. package/registry/swipe-deck.json +1 -1
  243. package/registry/switch.json +1 -1
  244. package/registry/tabs.json +3 -3
  245. package/registry/tag-input.json +1 -1
  246. package/registry/tag-selector.json +1 -1
  247. package/registry/terminal-replay.json +1 -1
  248. package/registry/theme.json +1 -1
  249. package/registry/toast.json +1 -1
  250. package/registry/toc.json +1 -1
  251. package/registry/tooltip.json +1 -1
  252. package/registry/tree-view.json +1 -1
  253. package/registry/update-prompt.json +316 -0
  254. package/registry/verified-badge.json +1 -1
  255. package/registry/vertical-video.json +1 -1
  256. package/registry/video-player.json +4 -4
  257. package/registry/video-trimmer.json +1 -1
  258. package/registry/virtual.json +1 -1
  259. package/dist/chunk-3GODX3D6.js.map +0 -1
  260. package/dist/chunk-LIPK4UCS.js.map +0 -1
  261. package/dist/chunk-VDR2EP6K.js.map +0 -1
  262. /package/dist/{chunk-5MH64NIL.js.map → chunk-2L67YTNV.js.map} +0 -0
  263. /package/dist/{chunk-2NB27LM7.js.map → chunk-3IN6TOPM.js.map} +0 -0
@@ -2,29 +2,27 @@
2
2
 
3
3
  // src/marks/akinaza-geometry.ts
4
4
  import { marks } from "@krizaka/tokens/native";
5
+ var forest = marks.akinaza[0][1];
5
6
  var copper = marks.akinaza[marks.akinaza.length - 1][1];
6
7
  var AKINAZA = {
7
8
  viewBox: "0 0 400 400",
8
9
  croppedViewBox: "80 80 240 240",
9
10
  center: 200,
10
- /** The awning: 124 → 276 at y 108, cut 28 at its upper-right corner, four scallops below (y 150, 19 deep). */
11
- awning: "M124 108 H248 L276 136 V150 A19 19 0 0 1 238 150 A19 19 0 0 1 200 150 A19 19 0 0 1 162 150 A19 19 0 0 1 124 150 Z",
12
- /** The awning's stripes, in light. */
13
- stripes: "M162 116 V146 M200 116 V146 M238 116 V140",
14
- stripe: { color: "#fff7ed", opacity: 0.55, width: 8 },
15
- /** The shop front: walls 140 → 260 from y 178 to the ground, the door cut out (178 → 222, from y 222). */
16
- front: "M140 178 H260 V300 H222 V222 H178 V300 H140 Z",
17
- /** The open door: the bright core, a warm light. */
18
- door: { x: 182, y: 226, w: 36, h: 74, rx: 4 },
19
- coreGradient: { stops: [["0%", "#fde7c7"], ["100%", "#fffaf2"]] },
20
- /** A window each side, in light. */
21
- windows: "M154 196 H168 V212 H154 Z M232 196 H246 V212 H232 Z",
22
- gradient: { x1: 140, y1: 300, x2: 276, y2: 108, stops: marks.akinaza },
11
+ forest,
12
+ copper,
13
+ log: "M197 110 L290 203 A96 96 0 1 1 197 110 Z",
14
+ /** The fresh face of the cut: a copper band along the chord. */
15
+ cut: "M197 110 L290 203 A96 96 0 0 1 289.1 219.1 L180.9 110.9 A96 96 0 0 1 197 110 Z",
16
+ /** The year rings, in light, inside the band. */
17
+ rings: { cx: 194, cy: 206, r: [52, 28], width: 7, opacity: 0.42 },
18
+ heart: { cx: 194, cy: 206, r: 16, inner: 5.4 },
19
+ highlight: "#fff7ed",
20
+ gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks.akinaza },
23
21
  /** A coin: one node on the orbit, that turns with it. */
24
22
  node: { r: 9, at: [200, 40] },
25
23
  glow: { color: copper, opacity: 0.16 },
26
- /** The door's breathing light (web), in the copper. */
27
24
  pulse: { color: copper, low: 0.3, high: 0.65 },
25
+ motion: { spin: 32, breath: 3.8 },
28
26
  orbit: { r: 160, dash: "8 8", width: 1.5 },
29
27
  ring: { r: 134, width: 1 }
30
28
  };
@@ -38,107 +36,99 @@ function useIds(prefix, keys) {
38
36
  }
39
37
  var a11y = (title) => title ? { role: "img", "aria-label": title } : { "aria-hidden": true };
40
38
  var withAlpha = (hex, opacity) => `${hex}${Math.round(opacity * 255).toString(16).padStart(2, "0")}`;
39
+ var familyMotion = (prefix, { spin, breath, color, low, high }) => `
40
+ .${prefix}-orbit { transform-origin: 200px 200px; animation: ${prefix}-orbit ${spin}s linear infinite; }
41
+ .${prefix}-core { transform-box: fill-box; transform-origin: center; animation: ${prefix}-core ${breath}s ease-in-out infinite; }
42
+ @keyframes ${prefix}-orbit { to { transform: rotate(360deg); } }
43
+ @keyframes ${prefix}-core {
44
+ 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(color, low)}); opacity: .92; }
45
+ 50% { filter: drop-shadow(0 0 16px ${withAlpha(color, high)}); opacity: 1; }
46
+ }
47
+ @media (prefers-reduced-motion: reduce) { .${prefix}-orbit, .${prefix}-core { animation: none; } }
48
+ `;
41
49
 
42
50
  // src/marks/AkinazaLogo.tsx
43
51
  import { jsx, jsxs } from "react/jsx-runtime";
44
- var CSS = `
45
- .akm-orbit { transform-origin: 200px 200px; animation: akm-orbit 32s linear infinite; }
46
- .akm-door { animation: akm-door 3.8s ease-in-out infinite; }
47
- @keyframes akm-orbit { to { transform: rotate(360deg); } }
48
- @keyframes akm-door {
49
- 0%, 100% { filter: drop-shadow(0 0 4px ${withAlpha(AKINAZA.pulse.color, AKINAZA.pulse.low)}); }
50
- 50% { filter: drop-shadow(0 0 14px ${withAlpha(AKINAZA.pulse.color, AKINAZA.pulse.high)}); }
51
- }
52
- @media (prefers-reduced-motion: reduce) { .akm-orbit, .akm-door { animation: none; } }
53
- `;
52
+ var CSS = familyMotion("akm", { ...AKINAZA.motion, ...AKINAZA.pulse });
54
53
  function AkinazaLogo({ size = 32, animated = true, title, className }) {
55
- const id = useIds("akm", ["gradient", "core", "glow"]);
56
- const fill = `url(#${id.gradient})`;
54
+ const id = useIds("akm", ["glow"]);
55
+ const m = (cls) => animated ? `akm-${cls}` : void 0;
57
56
  return /* @__PURE__ */ jsxs("svg", { width: size, height: size, viewBox: size < 48 ? AKINAZA.croppedViewBox : AKINAZA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
58
57
  /* @__PURE__ */ jsx("style", { children: CSS }),
59
- /* @__PURE__ */ jsxs("defs", { children: [
60
- /* @__PURE__ */ jsx("linearGradient", { id: id.gradient, gradientUnits: "userSpaceOnUse", x1: AKINAZA.gradient.x1, y1: AKINAZA.gradient.y1, x2: AKINAZA.gradient.x2, y2: AKINAZA.gradient.y2, children: AKINAZA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx("stop", { offset, stopColor: color }, offset)) }),
61
- /* @__PURE__ */ jsx("linearGradient", { id: id.core, x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: AKINAZA.coreGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx("stop", { offset, stopColor: color }, offset)) }),
62
- /* @__PURE__ */ jsxs("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
63
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: AKINAZA.glow.color, stopOpacity: AKINAZA.glow.opacity }),
64
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: AKINAZA.glow.color, stopOpacity: "0" })
65
- ] })
66
- ] }),
58
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
59
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: AKINAZA.glow.color, stopOpacity: AKINAZA.glow.opacity }),
60
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: AKINAZA.glow.color, stopOpacity: "0" })
61
+ ] }) }),
67
62
  size >= 48 ? /* @__PURE__ */ jsx("circle", { cx: AKINAZA.center, cy: AKINAZA.center, r: "190", fill: `url(#${id.glow})` }) : null,
68
63
  /* @__PURE__ */ jsx("circle", { cx: AKINAZA.center, cy: AKINAZA.center, r: AKINAZA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: AKINAZA.ring.width, opacity: ".35" }),
69
- /* @__PURE__ */ jsxs("g", { className: animated ? "akm-orbit" : void 0, children: [
64
+ /* @__PURE__ */ jsxs("g", { className: m("orbit"), children: [
70
65
  /* @__PURE__ */ jsx("circle", { cx: AKINAZA.center, cy: AKINAZA.center, r: AKINAZA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: AKINAZA.orbit.width, strokeDasharray: AKINAZA.orbit.dash, opacity: ".6" }),
71
- /* @__PURE__ */ jsx("circle", { cx: AKINAZA.node.at[0], cy: AKINAZA.node.at[1], r: AKINAZA.node.r, fill })
66
+ /* @__PURE__ */ jsx("circle", { cx: AKINAZA.node.at[0], cy: AKINAZA.node.at[1], r: AKINAZA.node.r, fill: AKINAZA.copper })
72
67
  ] }),
73
- /* @__PURE__ */ jsx("path", { d: AKINAZA.awning, fill }),
74
- /* @__PURE__ */ jsx("path", { d: AKINAZA.stripes, stroke: AKINAZA.stripe.color, strokeOpacity: AKINAZA.stripe.opacity, strokeWidth: AKINAZA.stripe.width, strokeLinecap: "round" }),
75
- /* @__PURE__ */ jsx("path", { d: AKINAZA.front, fill }),
76
- /* @__PURE__ */ jsx("path", { d: AKINAZA.windows, fill: AKINAZA.stripe.color, fillOpacity: AKINAZA.stripe.opacity }),
77
- /* @__PURE__ */ jsx("rect", { className: animated ? "akm-door" : void 0, x: AKINAZA.door.x, y: AKINAZA.door.y, width: AKINAZA.door.w, height: AKINAZA.door.h, rx: AKINAZA.door.rx, fill: `url(#${id.core})` })
68
+ /* @__PURE__ */ jsx("path", { d: AKINAZA.log, fill: AKINAZA.forest }),
69
+ /* @__PURE__ */ jsx("path", { d: AKINAZA.cut, fill: AKINAZA.copper }),
70
+ AKINAZA.rings.r.map((r) => /* @__PURE__ */ jsx("circle", { cx: AKINAZA.rings.cx, cy: AKINAZA.rings.cy, r, stroke: AKINAZA.highlight, strokeOpacity: AKINAZA.rings.opacity, strokeWidth: AKINAZA.rings.width }, r)),
71
+ /* @__PURE__ */ jsxs("g", { className: m("core"), children: [
72
+ /* @__PURE__ */ jsx("circle", { cx: AKINAZA.heart.cx, cy: AKINAZA.heart.cy, r: AKINAZA.heart.r, fill: AKINAZA.copper }),
73
+ /* @__PURE__ */ jsx("circle", { cx: AKINAZA.heart.cx, cy: AKINAZA.heart.cy, r: AKINAZA.heart.inner, fill: AKINAZA.highlight })
74
+ ] })
78
75
  ] });
79
76
  }
80
77
 
81
78
  // src/marks/kachizaka-geometry.ts
82
79
  import { marks as marks2 } from "@krizaka/tokens/native";
80
+ var cobalt = marks2.kachizaka[0][1];
83
81
  var gold = marks2.kachizaka[marks2.kachizaka.length - 1][1];
84
82
  var KACHIZAKA = {
85
83
  viewBox: "0 0 400 400",
86
84
  croppedViewBox: "80 80 240 240",
87
85
  center: 200,
88
- /** The bowl: a rim 136 → 264 at y 104, cut 32 at its upper-right corner (the Krizaka chamfer), rounding down to the stem. */
89
- cup: "M136 104 H232 L264 136 V164 C264 214 236 242 200 246 C164 242 136 214 136 164 Z",
90
- /** The stem and the base, one shape. */
91
- base: "M190 244 H210 V272 H240 C244 272 248 276 248 280 V300 H152 V280 C152 276 156 272 160 272 H190 Z",
92
- /** The two handles, stroked in the gradient. */
93
- handles: "M138 128 C100 124 100 196 150 202 M262 128 C300 124 300 196 250 202",
94
- handleWidth: 14,
95
- /** The seal: a five-pointed star in light on the bowl, centred (200, 172), radii 30 / 13. */
96
- star: "M200 142 L207.6 161.5 L228.5 162.7 L212.4 176 L217.6 196.3 L200 185 L182.4 196.3 L187.6 176 L171.5 162.7 L192.4 161.5 Z",
97
- starColor: "#fffbea",
98
- gradient: { x1: 136, y1: 300, x2: 264, y2: 104, stops: marks2.kachizaka },
86
+ cobalt,
87
+ gold,
88
+ /** The steps: second (left, cut top-left), first (centre, both top corners cut, in gold), third (right, cut top-right). */
89
+ steps: {
90
+ second: "M102 240 L122 220 H162 V296 H102 Z",
91
+ first: "M170 192 L188 174 H212 L230 192 V296 H170 Z",
92
+ third: "M238 248 H278 L298 268 V296 H238 Z"
93
+ },
94
+ /** The lit node over the winner: a gold diamond (half-diagonal 22, softened by a 6-unit round stroke), its light inside. */
95
+ node: { d: "M200 102 L222 124 L200 146 L178 124 Z", light: "M200 116.1 L207.9 124 L200 131.9 L192.1 124 Z", soften: 6 },
96
+ highlight: "#fffbea",
97
+ gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks2.kachizaka },
99
98
  /** The ball: one node on the orbit, that turns with it. */
100
- node: { r: 9, at: [200, 40] },
99
+ ball: { r: 9, at: [200, 40] },
101
100
  glow: { color: gold, opacity: 0.18 },
102
- /** The seal's breathing shadow (web), in the gold. */
103
101
  pulse: { color: gold, low: 0.35, high: 0.75 },
102
+ motion: { spin: 28, breath: 3.2 },
104
103
  orbit: { r: 160, dash: "8 8", width: 1.5 },
105
104
  ring: { r: 134, width: 1 }
106
105
  };
107
106
 
108
107
  // src/marks/KachizakaLogo.tsx
109
108
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
110
- var CSS2 = `
111
- .kzm-orbit { transform-origin: 200px 200px; animation: kzm-orbit 28s linear infinite; }
112
- .kzm-seal { transform-box: fill-box; transform-origin: center; animation: kzm-seal 3.2s ease-in-out infinite; }
113
- @keyframes kzm-orbit { to { transform: rotate(360deg); } }
114
- @keyframes kzm-seal {
115
- 0%, 100% { transform: scale(1); filter: drop-shadow(0 0 4px ${withAlpha(KACHIZAKA.pulse.color, KACHIZAKA.pulse.low)}); }
116
- 50% { transform: scale(1.06); filter: drop-shadow(0 0 12px ${withAlpha(KACHIZAKA.pulse.color, KACHIZAKA.pulse.high)}); }
117
- }
118
- @media (prefers-reduced-motion: reduce) { .kzm-orbit, .kzm-seal { animation: none; } }
119
- `;
109
+ var CSS2 = familyMotion("kcm", { ...KACHIZAKA.motion, ...KACHIZAKA.pulse });
120
110
  function KachizakaLogo({ size = 32, animated = true, title, className }) {
121
- const id = useIds("kzm", ["gradient", "glow"]);
122
- const fill = `url(#${id.gradient})`;
111
+ const id = useIds("kcm", ["glow"]);
112
+ const m = (cls) => animated ? `kcm-${cls}` : void 0;
123
113
  return /* @__PURE__ */ jsxs2("svg", { width: size, height: size, viewBox: size < 48 ? KACHIZAKA.croppedViewBox : KACHIZAKA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
124
114
  /* @__PURE__ */ jsx2("style", { children: CSS2 }),
125
- /* @__PURE__ */ jsxs2("defs", { children: [
126
- /* @__PURE__ */ jsx2("linearGradient", { id: id.gradient, gradientUnits: "userSpaceOnUse", x1: KACHIZAKA.gradient.x1, y1: KACHIZAKA.gradient.y1, x2: KACHIZAKA.gradient.x2, y2: KACHIZAKA.gradient.y2, children: KACHIZAKA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx2("stop", { offset, stopColor: color }, offset)) }),
127
- /* @__PURE__ */ jsxs2("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
128
- /* @__PURE__ */ jsx2("stop", { offset: "0%", stopColor: KACHIZAKA.glow.color, stopOpacity: KACHIZAKA.glow.opacity }),
129
- /* @__PURE__ */ jsx2("stop", { offset: "100%", stopColor: KACHIZAKA.glow.color, stopOpacity: "0" })
130
- ] })
131
- ] }),
115
+ /* @__PURE__ */ jsx2("defs", { children: /* @__PURE__ */ jsxs2("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
116
+ /* @__PURE__ */ jsx2("stop", { offset: "0%", stopColor: KACHIZAKA.glow.color, stopOpacity: KACHIZAKA.glow.opacity }),
117
+ /* @__PURE__ */ jsx2("stop", { offset: "100%", stopColor: KACHIZAKA.glow.color, stopOpacity: "0" })
118
+ ] }) }),
132
119
  size >= 48 ? /* @__PURE__ */ jsx2("circle", { cx: KACHIZAKA.center, cy: KACHIZAKA.center, r: "190", fill: `url(#${id.glow})` }) : null,
133
120
  /* @__PURE__ */ jsx2("circle", { cx: KACHIZAKA.center, cy: KACHIZAKA.center, r: KACHIZAKA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: KACHIZAKA.ring.width, opacity: ".35" }),
134
- /* @__PURE__ */ jsxs2("g", { className: animated ? "kzm-orbit" : void 0, children: [
121
+ /* @__PURE__ */ jsxs2("g", { className: m("orbit"), children: [
135
122
  /* @__PURE__ */ jsx2("circle", { cx: KACHIZAKA.center, cy: KACHIZAKA.center, r: KACHIZAKA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: KACHIZAKA.orbit.width, strokeDasharray: KACHIZAKA.orbit.dash, opacity: ".6" }),
136
- /* @__PURE__ */ jsx2("circle", { cx: KACHIZAKA.node.at[0], cy: KACHIZAKA.node.at[1], r: KACHIZAKA.node.r, fill })
123
+ /* @__PURE__ */ jsx2("circle", { cx: KACHIZAKA.ball.at[0], cy: KACHIZAKA.ball.at[1], r: KACHIZAKA.ball.r, fill: KACHIZAKA.gold })
137
124
  ] }),
138
- /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.handles, stroke: fill, strokeWidth: KACHIZAKA.handleWidth, strokeLinecap: "round" }),
139
- /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.base, fill }),
140
- /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.cup, fill }),
141
- /* @__PURE__ */ jsx2("path", { className: animated ? "kzm-seal" : void 0, d: KACHIZAKA.star, fill: KACHIZAKA.starColor })
125
+ /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.steps.second, fill: KACHIZAKA.cobalt }),
126
+ /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.steps.first, fill: KACHIZAKA.gold }),
127
+ /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.steps.third, fill: KACHIZAKA.cobalt }),
128
+ /* @__PURE__ */ jsxs2("g", { className: m("core"), children: [
129
+ /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.node.d, fill: KACHIZAKA.gold, stroke: KACHIZAKA.gold, strokeWidth: KACHIZAKA.node.soften, strokeLinejoin: "round" }),
130
+ /* @__PURE__ */ jsx2("path", { d: KACHIZAKA.node.light, fill: KACHIZAKA.highlight })
131
+ ] })
142
132
  ] });
143
133
  }
144
134
 
@@ -344,50 +334,36 @@ var YASAKIA = {
344
334
  viewBox: "0 0 400 400",
345
335
  croppedViewBox: "80 80 240 240",
346
336
  center: 200,
347
- /** The two voices, left then right: each a bubble (cut around the lens) and its tail. */
348
- voices: [
349
- { body: "M191.9 109 A80 80 0 1 0 191.9 259 A87 87 0 0 1 191.9 109 Z", tail: "M98 230 Q104 268 88 294 Q122 288 144 262 L130 200 Z" },
350
- { body: "M208.1 109 A80 80 0 1 1 208.1 259 A87 87 0 0 0 208.1 109 Z", tail: "M302 230 Q296 268 312 294 Q278 288 256 262 L270 200 Z" }
337
+ bubble: { cx: 200, cy: 200, r: 86 },
338
+ /** The two tails, out of the bubble at 115°–160° and, turned 180° about the centre, at 295°–340°. */
339
+ tails: [
340
+ "M163.7 277.9 Q138 294 106 304 Q124 270 119.2 229.4 Z",
341
+ "M236.3 122.1 Q262 106 294 96 Q276 130 280.8 170.6 Z"
351
342
  ],
352
- /** The left voice, a shade deeper: the depth between the two. */
353
- shade: { color: "#000", opacity: 0.22 },
354
- /** Where the bubbles overlap: the core, lit from above. */
355
- lens: { d: "M200 112.6 A80 80 0 0 1 200 255.4 A80 80 0 0 1 200 112.6 Z", y1: 112.6, y2: 255.4 },
343
+ /** The spark: a diamond of light (half-diagonal 24, softened by a 6-unit round stroke). */
344
+ spark: { d: "M200 176 L224 200 L200 224 L176 200 Z", soften: 6 },
345
+ highlight: "#f0fdfa",
356
346
  gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks6.yasakia },
357
- /** The light on the lens: bright at the top, fading down. */
358
- highlight: { color: "#f0fdfa", from: 0.75, to: 0.2 },
359
- /** The pair: two nodes on the orbit, opposite each other, that turn with it. */
360
- pair: { r: 8, at: [[40, 200], [360, 200]] },
347
+ /** The two people: one node on the orbit, that turns with it. */
348
+ node: { r: 9, at: [200, 40] },
361
349
  glow: { color: turquoise, opacity: 0.16 },
362
- /** The core's breathing shadow (web), in the mark's turquoise. */
363
350
  pulse: { color: turquoise, low: 0.3, high: 0.6 },
351
+ motion: { spin: 30, breath: 3.2 },
364
352
  orbit: { r: 160, dash: "8 8", width: 1.5 },
365
353
  ring: { r: 134, width: 1 }
366
354
  };
367
355
 
368
356
  // src/marks/YasakiaLogo.tsx
369
357
  import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
370
- var CSS6 = `
371
- .yzm-orbit { transform-origin: 200px 200px; animation: yzm-orbit 30s linear infinite; }
372
- .yzm-core { transform-box: fill-box; transform-origin: center; animation: yzm-core 3.2s ease-in-out infinite; }
373
- @keyframes yzm-orbit { to { transform: rotate(360deg); } }
374
- @keyframes yzm-core {
375
- 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(YASAKIA.pulse.color, YASAKIA.pulse.low)}); opacity: .9; }
376
- 50% { filter: drop-shadow(0 0 14px ${withAlpha(YASAKIA.pulse.color, YASAKIA.pulse.high)}); opacity: 1; }
377
- }
378
- @media (prefers-reduced-motion: reduce) { .yzm-orbit, .yzm-core { animation: none; } }
379
- `;
358
+ var CSS6 = familyMotion("yzm", { ...YASAKIA.motion, ...YASAKIA.pulse });
380
359
  function YasakiaLogo({ size = 32, animated = true, title, className }) {
381
- const id = useIds("yzm", ["gradient", "light", "glow"]);
360
+ const id = useIds("yzm", ["gradient", "glow"]);
382
361
  const fill = `url(#${id.gradient})`;
362
+ const m = (cls) => animated ? `yzm-${cls}` : void 0;
383
363
  return /* @__PURE__ */ jsxs6("svg", { width: size, height: size, viewBox: size < 48 ? YASAKIA.croppedViewBox : YASAKIA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
384
364
  /* @__PURE__ */ jsx6("style", { children: CSS6 }),
385
365
  /* @__PURE__ */ jsxs6("defs", { children: [
386
366
  /* @__PURE__ */ jsx6("linearGradient", { id: id.gradient, gradientUnits: "userSpaceOnUse", x1: YASAKIA.gradient.x1, y1: YASAKIA.gradient.y1, x2: YASAKIA.gradient.x2, y2: YASAKIA.gradient.y2, children: YASAKIA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx6("stop", { offset, stopColor: color }, offset)) }),
387
- /* @__PURE__ */ jsxs6("linearGradient", { id: id.light, gradientUnits: "userSpaceOnUse", x1: "0", y1: YASAKIA.lens.y1, x2: "0", y2: YASAKIA.lens.y2, children: [
388
- /* @__PURE__ */ jsx6("stop", { offset: "0%", stopColor: YASAKIA.highlight.color, stopOpacity: YASAKIA.highlight.from }),
389
- /* @__PURE__ */ jsx6("stop", { offset: "100%", stopColor: YASAKIA.highlight.color, stopOpacity: YASAKIA.highlight.to })
390
- ] }),
391
367
  /* @__PURE__ */ jsxs6("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
392
368
  /* @__PURE__ */ jsx6("stop", { offset: "0%", stopColor: YASAKIA.glow.color, stopOpacity: YASAKIA.glow.opacity }),
393
369
  /* @__PURE__ */ jsx6("stop", { offset: "100%", stopColor: YASAKIA.glow.color, stopOpacity: "0" })
@@ -395,19 +371,13 @@ function YasakiaLogo({ size = 32, animated = true, title, className }) {
395
371
  ] }),
396
372
  size >= 48 ? /* @__PURE__ */ jsx6("circle", { cx: YASAKIA.center, cy: YASAKIA.center, r: "190", fill: `url(#${id.glow})` }) : null,
397
373
  /* @__PURE__ */ jsx6("circle", { cx: YASAKIA.center, cy: YASAKIA.center, r: YASAKIA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: YASAKIA.ring.width, opacity: ".35" }),
398
- /* @__PURE__ */ jsxs6("g", { className: animated ? "yzm-orbit" : void 0, children: [
374
+ /* @__PURE__ */ jsxs6("g", { className: m("orbit"), children: [
399
375
  /* @__PURE__ */ jsx6("circle", { cx: YASAKIA.center, cy: YASAKIA.center, r: YASAKIA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: YASAKIA.orbit.width, strokeDasharray: YASAKIA.orbit.dash, opacity: ".6" }),
400
- YASAKIA.pair.at.map(([cx, cy]) => /* @__PURE__ */ jsx6("circle", { cx, cy, r: YASAKIA.pair.r, fill }, cx))
376
+ /* @__PURE__ */ jsx6("circle", { cx: YASAKIA.node.at[0], cy: YASAKIA.node.at[1], r: YASAKIA.node.r, fill })
401
377
  ] }),
402
- YASAKIA.voices.map((v, i) => /* @__PURE__ */ jsxs6("g", { children: [
403
- /* @__PURE__ */ jsx6("path", { d: v.body, fill }),
404
- /* @__PURE__ */ jsx6("path", { d: v.tail, fill }),
405
- i === 0 ? /* @__PURE__ */ jsx6("path", { d: `${v.body} ${v.tail}`, fill: YASAKIA.shade.color, opacity: YASAKIA.shade.opacity }) : null
406
- ] }, v.body)),
407
- /* @__PURE__ */ jsxs6("g", { className: animated ? "yzm-core" : void 0, children: [
408
- /* @__PURE__ */ jsx6("path", { d: YASAKIA.lens.d, fill }),
409
- /* @__PURE__ */ jsx6("path", { d: YASAKIA.lens.d, fill: `url(#${id.light})` })
410
- ] })
378
+ /* @__PURE__ */ jsx6("circle", { cx: YASAKIA.bubble.cx, cy: YASAKIA.bubble.cy, r: YASAKIA.bubble.r, fill }),
379
+ /* @__PURE__ */ jsx6("path", { d: YASAKIA.tails.join(" "), fill }),
380
+ /* @__PURE__ */ jsx6("g", { className: m("core"), children: /* @__PURE__ */ jsx6("path", { d: YASAKIA.spark.d, fill: YASAKIA.highlight, stroke: YASAKIA.highlight, strokeWidth: YASAKIA.spark.soften, strokeLinejoin: "round" }) })
411
381
  ] });
412
382
  }
413
383
  var YazakiaLogo = YasakiaLogo;
@@ -419,72 +389,58 @@ var YOMIZAKA = {
419
389
  viewBox: "0 0 400 400",
420
390
  croppedViewBox: "80 80 240 240",
421
391
  center: 200,
422
- /** The page, cut at its corner (the Krizaka chamfer) and around the lens. */
423
- page: "M128 92 H228 L264 128 V185.87 A52 52 0 1 0 264 278.13 V300 H128 Z",
424
- /** Three lines of text and the start of a fourth, in light: they wrap around the lens. */
425
- lines: "M156 140 H226 M156 170 H236 M156 200 H184 M156 230 H176",
426
- line: { color: "#f4f5ff", opacity: 0.6, width: 10 },
427
- /** The lens: a ring in the brand gradient, its pale core lit from above, a glint; the handle leaves the page. */
428
- lens: { cx: 240, cy: 232, r: 40, width: 12, core: 28, glint: { cx: 230, cy: 222, r: 8 } },
429
- handle: "M276 268 L304 296",
430
- handleWidth: 20,
431
- gradient: { x1: 128, y1: 300, x2: 304, y2: 92, stops: marks7.yomizaka },
432
- /** The lens' core: a pale indigo light, brighter at the top. */
433
- coreGradient: { stops: [["0%", "#c9ceff"], ["100%", "#f4f5ff"]] },
434
- highlight: "#ffffff",
435
- /** The reading (web): a line of light that scans the page from top to bottom, clipped to the page. */
436
- scan: { d: "M136 100 H236", travel: 192, color: "#f4f5ff", opacity: 0.7, width: 3 },
437
- /** A page: one node on the orbit, that turns with it. */
392
+ stroke: 22,
393
+ /** The brow: two soft arcs that meet over the beak — calm, never a sharp V. */
394
+ brow: "M106 153 C130 125 176 129 200 159 C224 129 270 125 294 153",
395
+ /** The two lenses (rings at the family stroke). */
396
+ lenses: [
397
+ { cx: 146, cy: 223, r: 40 },
398
+ { cx: 254, cy: 223, r: 40 }
399
+ ],
400
+ /** The pupils, glancing down-right (reading): the lit cores. */
401
+ pupils: [
402
+ { cx: 154, cy: 229, r: 15, inner: 5.1 },
403
+ { cx: 262, cy: 229, r: 15, inner: 5.1 }
404
+ ],
405
+ highlight: "#f4f5ff",
406
+ gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks7.yomizaka },
407
+ /** One node, a page, rides the orbit. */
438
408
  node: { r: 9, at: [200, 40] },
439
409
  glow: { color: indigo, opacity: 0.18 },
440
- /** The lens' breathing shadow (web), in the indigo. */
441
410
  pulse: { color: indigo, low: 0.3, high: 0.6 },
411
+ motion: { spin: 32, breath: 3.6 },
442
412
  orbit: { r: 160, dash: "8 8", width: 1.5 },
443
413
  ring: { r: 134, width: 1 }
444
414
  };
445
415
 
446
416
  // src/marks/YomizakaLogo.tsx
447
417
  import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
448
- var CSS7 = `
449
- .ymm-orbit { transform-origin: 200px 200px; animation: ymm-orbit 32s linear infinite; }
450
- .ymm-scan { animation: ymm-scan 3.6s cubic-bezier(.45,0,.55,1) infinite; }
451
- .ymm-lens { transform-box: fill-box; transform-origin: center; animation: ymm-lens 3.6s ease-in-out infinite; }
452
- @keyframes ymm-orbit { to { transform: rotate(360deg); } }
453
- @keyframes ymm-scan { 0% { transform: translateY(0); opacity: 0; } 12%, 80% { opacity: 1; } 100% { transform: translateY(${YOMIZAKA.scan.travel}px); opacity: 0; } }
454
- @keyframes ymm-lens {
455
- 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(YOMIZAKA.pulse.color, YOMIZAKA.pulse.low)}); }
456
- 50% { filter: drop-shadow(0 0 16px ${withAlpha(YOMIZAKA.pulse.color, YOMIZAKA.pulse.high)}); }
457
- }
458
- @media (prefers-reduced-motion: reduce) { .ymm-orbit, .ymm-scan, .ymm-lens { animation: none; } .ymm-scan { opacity: 0; } }
459
- `;
418
+ var CSS7 = familyMotion("ymm", { ...YOMIZAKA.motion, ...YOMIZAKA.pulse });
460
419
  function YomizakaLogo({ size = 32, animated = true, title, className }) {
461
- const id = useIds("ymm", ["gradient", "core", "glow", "page"]);
420
+ const id = useIds("ymm", ["gradient", "glow"]);
462
421
  const fill = `url(#${id.gradient})`;
422
+ const m = (cls) => animated ? `ymm-${cls}` : void 0;
463
423
  return /* @__PURE__ */ jsxs7("svg", { width: size, height: size, viewBox: size < 48 ? YOMIZAKA.croppedViewBox : YOMIZAKA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
464
424
  /* @__PURE__ */ jsx7("style", { children: CSS7 }),
465
425
  /* @__PURE__ */ jsxs7("defs", { children: [
466
426
  /* @__PURE__ */ jsx7("linearGradient", { id: id.gradient, gradientUnits: "userSpaceOnUse", x1: YOMIZAKA.gradient.x1, y1: YOMIZAKA.gradient.y1, x2: YOMIZAKA.gradient.x2, y2: YOMIZAKA.gradient.y2, children: YOMIZAKA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx7("stop", { offset, stopColor: color }, offset)) }),
467
- /* @__PURE__ */ jsx7("linearGradient", { id: id.core, x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: YOMIZAKA.coreGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx7("stop", { offset, stopColor: color }, offset)) }),
468
427
  /* @__PURE__ */ jsxs7("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
469
428
  /* @__PURE__ */ jsx7("stop", { offset: "0%", stopColor: YOMIZAKA.glow.color, stopOpacity: YOMIZAKA.glow.opacity }),
470
429
  /* @__PURE__ */ jsx7("stop", { offset: "100%", stopColor: YOMIZAKA.glow.color, stopOpacity: "0" })
471
- ] }),
472
- /* @__PURE__ */ jsx7("clipPath", { id: id.page, children: /* @__PURE__ */ jsx7("path", { d: YOMIZAKA.page }) })
430
+ ] })
473
431
  ] }),
474
432
  size >= 48 ? /* @__PURE__ */ jsx7("circle", { cx: YOMIZAKA.center, cy: YOMIZAKA.center, r: "190", fill: `url(#${id.glow})` }) : null,
475
433
  /* @__PURE__ */ jsx7("circle", { cx: YOMIZAKA.center, cy: YOMIZAKA.center, r: YOMIZAKA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: YOMIZAKA.ring.width, opacity: ".35" }),
476
- /* @__PURE__ */ jsxs7("g", { className: animated ? "ymm-orbit" : void 0, children: [
434
+ /* @__PURE__ */ jsxs7("g", { className: m("orbit"), children: [
477
435
  /* @__PURE__ */ jsx7("circle", { cx: YOMIZAKA.center, cy: YOMIZAKA.center, r: YOMIZAKA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: YOMIZAKA.orbit.width, strokeDasharray: YOMIZAKA.orbit.dash, opacity: ".6" }),
478
436
  /* @__PURE__ */ jsx7("circle", { cx: YOMIZAKA.node.at[0], cy: YOMIZAKA.node.at[1], r: YOMIZAKA.node.r, fill })
479
437
  ] }),
480
- /* @__PURE__ */ jsx7("path", { d: YOMIZAKA.page, fill }),
481
- /* @__PURE__ */ jsx7("path", { d: YOMIZAKA.lines, stroke: YOMIZAKA.line.color, strokeOpacity: YOMIZAKA.line.opacity, strokeWidth: YOMIZAKA.line.width, strokeLinecap: "round" }),
482
- animated ? /* @__PURE__ */ jsx7("g", { clipPath: `url(#${id.page})`, children: /* @__PURE__ */ jsx7("path", { className: "ymm-scan", d: YOMIZAKA.scan.d, stroke: YOMIZAKA.scan.color, strokeOpacity: YOMIZAKA.scan.opacity, strokeWidth: YOMIZAKA.scan.width, strokeLinecap: "round" }) }) : null,
483
- /* @__PURE__ */ jsx7("path", { d: YOMIZAKA.handle, stroke: fill, strokeWidth: YOMIZAKA.handleWidth, strokeLinecap: "round" }),
484
- /* @__PURE__ */ jsxs7("g", { className: animated ? "ymm-lens" : void 0, children: [
485
- /* @__PURE__ */ jsx7("circle", { cx: YOMIZAKA.lens.cx, cy: YOMIZAKA.lens.cy, r: YOMIZAKA.lens.r, stroke: fill, strokeWidth: YOMIZAKA.lens.width, fill: `url(#${id.core})` }),
486
- /* @__PURE__ */ jsx7("circle", { cx: YOMIZAKA.lens.glint.cx, cy: YOMIZAKA.lens.glint.cy, r: YOMIZAKA.lens.glint.r, fill: YOMIZAKA.highlight })
487
- ] })
438
+ /* @__PURE__ */ jsx7("path", { d: YOMIZAKA.brow, stroke: fill, strokeWidth: YOMIZAKA.stroke, strokeLinecap: "round", strokeLinejoin: "round" }),
439
+ YOMIZAKA.lenses.map((l) => /* @__PURE__ */ jsx7("circle", { cx: l.cx, cy: l.cy, r: l.r, stroke: fill, strokeWidth: YOMIZAKA.stroke }, l.cx)),
440
+ /* @__PURE__ */ jsx7("g", { className: m("core"), children: YOMIZAKA.pupils.map((p) => /* @__PURE__ */ jsxs7("g", { children: [
441
+ /* @__PURE__ */ jsx7("circle", { cx: p.cx, cy: p.cy, r: p.r, fill }),
442
+ /* @__PURE__ */ jsx7("circle", { cx: p.cx, cy: p.cy, r: p.inner, fill: YOMIZAKA.highlight })
443
+ ] }, p.cx)) })
488
444
  ] });
489
445
  }
490
446
 
@@ -496,70 +452,45 @@ var YORORIS = {
496
452
  viewBox: "0 0 400 400",
497
453
  croppedViewBox: "80 80 240 240",
498
454
  center: 200,
499
- /** The two leaves — open hands, mirrored around x = 200 — filled, rising from the stem. */
500
- leaves: [
501
- "M200 262 C142 256 104 206 110 122 C138 130 154 152 160 180 C168 218 182 238 204 246 Z",
502
- "M200 262 C258 256 296 206 290 122 C262 130 246 152 240 180 C232 218 218 238 196 246 Z"
503
- ],
504
- /** A vein of light along each leaf (dashed, it drifts slowly when animated). */
505
- veins: "M122 142 C128 196 156 232 192 248 M278 142 C272 196 244 232 208 248",
506
- vein: { color: "#fbf6ea", opacity: 0.45, width: 3, dash: "2 14" },
507
- /** The stem, from the junction down. */
508
- stem: "M200 244 L200 312",
509
- stroke: 30,
510
- gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks8.yororis },
511
- /** The core's warm light: from the mark's sand (below) to a light sand (above). */
512
- coreGradient: { stops: [["0%", sand], ["100%", "#e6c993"]] },
513
- /** The core, held in the hollow of the leaves (not on the junction): the one who is listened to. It breathes. */
514
- core: { cx: 200, cy: 184, r: 32, inner: 11 },
455
+ stroke: 22,
456
+ sand,
457
+ sage,
458
+ /** The two hands: arcs of a circle r 92 centred (200, 162), from 196° to 104° and from 76° to −16°; open at the bottom and the top. */
459
+ hands: "M111.6 136.6 A92 92 0 0 0 177.7 251.3 M222.3 251.3 A92 92 0 0 0 288.4 136.6",
460
+ /** The warm core, held inside the hands. */
461
+ core: { cx: 200, cy: 176, r: 30, inner: 10.2 },
515
462
  highlight: "#fbf6ea",
516
- /** The moment: one node on the orbit, that turns with it. */
517
- moment: { r: 9, at: [200, 40] },
463
+ gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks8.yororis },
464
+ /** The moment: one node on the orbit — it comes round, then it goes. */
465
+ node: { r: 9, at: [200, 40] },
518
466
  glow: { color: sage, opacity: 0.18 },
519
- /** The core's breathing shadow (web), in the core's warm sand. */
520
467
  pulse: { color: sand, low: 0.3, high: 0.6 },
468
+ motion: { spin: 36, breath: 4.2 },
521
469
  orbit: { r: 160, dash: "8 8", width: 1.5 },
522
470
  ring: { r: 134, width: 1 }
523
471
  };
524
472
 
525
473
  // src/marks/YororisLogo.tsx
526
474
  import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
527
- var CSS8 = `
528
- .yrm-orbit { transform-origin: 200px 200px; animation: yrm-orbit 36s linear infinite; }
529
- .yrm-vein { animation: yrm-vein 4.8s linear infinite; }
530
- .yrm-core { transform-box: fill-box; transform-origin: center; animation: yrm-core 4.2s ease-in-out infinite; }
531
- @keyframes yrm-orbit { to { transform: rotate(360deg); } }
532
- @keyframes yrm-vein { to { stroke-dashoffset: 64; } }
533
- @keyframes yrm-core {
534
- 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(YORORIS.pulse.color, YORORIS.pulse.low)}); opacity: .9; }
535
- 50% { filter: drop-shadow(0 0 16px ${withAlpha(YORORIS.pulse.color, YORORIS.pulse.high)}); opacity: 1; }
536
- }
537
- @media (prefers-reduced-motion: reduce) { .yrm-orbit, .yrm-vein, .yrm-core { animation: none; } }
538
- `;
475
+ var CSS8 = familyMotion("yrm", { ...YORORIS.motion, ...YORORIS.pulse });
539
476
  function YororisLogo({ size = 32, animated = true, title, className }) {
540
- const id = useIds("yrm", ["gradient", "core", "glow"]);
541
- const fill = `url(#${id.gradient})`;
477
+ const id = useIds("yrm", ["glow"]);
478
+ const m = (cls) => animated ? `yrm-${cls}` : void 0;
542
479
  return /* @__PURE__ */ jsxs8("svg", { width: size, height: size, viewBox: size < 48 ? YORORIS.croppedViewBox : YORORIS.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
543
480
  /* @__PURE__ */ jsx8("style", { children: CSS8 }),
544
- /* @__PURE__ */ jsxs8("defs", { children: [
545
- /* @__PURE__ */ jsx8("linearGradient", { id: id.gradient, gradientUnits: "userSpaceOnUse", x1: YORORIS.gradient.x1, y1: YORORIS.gradient.y1, x2: YORORIS.gradient.x2, y2: YORORIS.gradient.y2, children: YORORIS.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx8("stop", { offset, stopColor: color }, offset)) }),
546
- /* @__PURE__ */ jsx8("linearGradient", { id: id.core, x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: YORORIS.coreGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx8("stop", { offset, stopColor: color }, offset)) }),
547
- /* @__PURE__ */ jsxs8("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
548
- /* @__PURE__ */ jsx8("stop", { offset: "0%", stopColor: YORORIS.glow.color, stopOpacity: YORORIS.glow.opacity }),
549
- /* @__PURE__ */ jsx8("stop", { offset: "100%", stopColor: YORORIS.glow.color, stopOpacity: "0" })
550
- ] })
551
- ] }),
481
+ /* @__PURE__ */ jsx8("defs", { children: /* @__PURE__ */ jsxs8("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
482
+ /* @__PURE__ */ jsx8("stop", { offset: "0%", stopColor: YORORIS.glow.color, stopOpacity: YORORIS.glow.opacity }),
483
+ /* @__PURE__ */ jsx8("stop", { offset: "100%", stopColor: YORORIS.glow.color, stopOpacity: "0" })
484
+ ] }) }),
552
485
  size >= 48 ? /* @__PURE__ */ jsx8("circle", { cx: YORORIS.center, cy: YORORIS.center, r: "190", fill: `url(#${id.glow})` }) : null,
553
486
  /* @__PURE__ */ jsx8("circle", { cx: YORORIS.center, cy: YORORIS.center, r: YORORIS.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: YORORIS.ring.width, opacity: ".35" }),
554
- /* @__PURE__ */ jsxs8("g", { className: animated ? "yrm-orbit" : void 0, children: [
487
+ /* @__PURE__ */ jsxs8("g", { className: m("orbit"), children: [
555
488
  /* @__PURE__ */ jsx8("circle", { cx: YORORIS.center, cy: YORORIS.center, r: YORORIS.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: YORORIS.orbit.width, strokeDasharray: YORORIS.orbit.dash, opacity: ".6" }),
556
- /* @__PURE__ */ jsx8("circle", { cx: YORORIS.moment.at[0], cy: YORORIS.moment.at[1], r: YORORIS.moment.r, fill })
489
+ /* @__PURE__ */ jsx8("circle", { cx: YORORIS.node.at[0], cy: YORORIS.node.at[1], r: YORORIS.node.r, fill: YORORIS.sage })
557
490
  ] }),
558
- /* @__PURE__ */ jsx8("path", { d: YORORIS.stem, stroke: fill, strokeWidth: YORORIS.stroke, strokeLinecap: "round" }),
559
- YORORIS.leaves.map((d) => /* @__PURE__ */ jsx8("path", { d, fill }, d)),
560
- /* @__PURE__ */ jsx8("path", { className: animated ? "yrm-vein" : void 0, d: YORORIS.veins, stroke: YORORIS.vein.color, strokeOpacity: YORORIS.vein.opacity, strokeWidth: YORORIS.vein.width, strokeLinecap: "round", strokeDasharray: YORORIS.vein.dash }),
561
- /* @__PURE__ */ jsxs8("g", { className: animated ? "yrm-core" : void 0, children: [
562
- /* @__PURE__ */ jsx8("circle", { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.r, fill: `url(#${id.core})` }),
491
+ /* @__PURE__ */ jsx8("path", { d: YORORIS.hands, stroke: YORORIS.sage, strokeWidth: YORORIS.stroke, strokeLinecap: "round" }),
492
+ /* @__PURE__ */ jsxs8("g", { className: m("core"), children: [
493
+ /* @__PURE__ */ jsx8("circle", { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.r, fill: YORORIS.sand }),
563
494
  /* @__PURE__ */ jsx8("circle", { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.inner, fill: YORORIS.highlight })
564
495
  ] })
565
496
  ] });
@@ -590,4 +521,4 @@ export {
590
521
  YororisLogo,
591
522
  ProductLogo
592
523
  };
593
- //# sourceMappingURL=chunk-LIPK4UCS.js.map
524
+ //# sourceMappingURL=chunk-YCIBJ6OQ.js.map