@krizaka/ui 3.9.0 → 3.10.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 (188) hide show
  1. package/README.md +3 -1
  2. package/dist/chunk-HG65YAV4.js +379 -0
  3. package/dist/chunk-HG65YAV4.js.map +1 -0
  4. package/dist/chunk-OT6HX3PN.js +85 -0
  5. package/dist/chunk-OT6HX3PN.js.map +1 -0
  6. package/dist/index.js +9 -367
  7. package/dist/index.js.map +1 -1
  8. package/dist/native.d.ts +48 -1
  9. package/dist/native.js +374 -257
  10. package/dist/native.js.map +1 -1
  11. package/dist/nav-bar.d.ts +86 -3
  12. package/dist/nav-bar.js +88 -2
  13. package/dist/nav-bar.js.map +1 -1
  14. package/dist/showcase.d.ts +69 -0
  15. package/dist/showcase.js +218 -0
  16. package/dist/showcase.js.map +1 -0
  17. package/dist/site-footer.d.ts +172 -0
  18. package/dist/site-footer.js +105 -0
  19. package/dist/site-footer.js.map +1 -0
  20. package/dist/sites-CgJrxejx.d.ts +32 -0
  21. package/dist/sites.d.ts +64 -0
  22. package/dist/sites.js +69 -0
  23. package/dist/sites.js.map +1 -0
  24. package/package.json +44 -6
  25. package/registry/achievement.json +1 -1
  26. package/registry/action-bar.json +1 -1
  27. package/registry/activity-feed.json +1 -1
  28. package/registry/alert.json +1 -1
  29. package/registry/app-shell.json +1 -1
  30. package/registry/argument-card.json +1 -1
  31. package/registry/audio-player.json +1 -1
  32. package/registry/auth-layout.json +1 -1
  33. package/registry/avatar.json +1 -1
  34. package/registry/badge.json +1 -1
  35. package/registry/button.json +1 -1
  36. package/registry/card-grid.json +1 -1
  37. package/registry/card.json +1 -1
  38. package/registry/catalogue-page.json +1 -1
  39. package/registry/changelog-page.json +1 -1
  40. package/registry/chat.json +1 -1
  41. package/registry/checkbox.json +1 -1
  42. package/registry/chip-link.json +1 -1
  43. package/registry/chip.json +1 -1
  44. package/registry/choice-grid.json +1 -1
  45. package/registry/code-block.json +1 -1
  46. package/registry/combobox.json +1 -1
  47. package/registry/command.json +1 -1
  48. package/registry/component-page.json +1 -1
  49. package/registry/confirm-button.json +1 -1
  50. package/registry/contact-page.json +1 -1
  51. package/registry/continue-prompt.json +1 -1
  52. package/registry/countdown.json +1 -1
  53. package/registry/cta-panel.json +1 -1
  54. package/registry/dashboard-layout.json +1 -1
  55. package/registry/data-table.json +1 -1
  56. package/registry/date-picker.json +1 -1
  57. package/registry/decision-list.json +1 -1
  58. package/registry/description-list.json +1 -1
  59. package/registry/detail-layout.json +1 -1
  60. package/registry/dialog.json +1 -1
  61. package/registry/docs-article-page.json +1 -1
  62. package/registry/docs-hub-page.json +1 -1
  63. package/registry/docs-layout.json +1 -1
  64. package/registry/dropdown-menu.json +1 -1
  65. package/registry/empty-state.json +1 -1
  66. package/registry/error-page.json +1 -1
  67. package/registry/examples/nav-bar/family-admin.d.ts +4 -0
  68. package/registry/examples/nav-bar/family-admin.js +21 -0
  69. package/registry/examples/nav-bar/family-admin.tsx +20 -0
  70. package/registry/examples/nav-bar/family-java.d.ts +4 -0
  71. package/registry/examples/nav-bar/family-java.js +33 -0
  72. package/registry/examples/nav-bar/family-java.tsx +34 -0
  73. package/registry/examples/nav-bar/family-product.d.ts +4 -0
  74. package/registry/examples/nav-bar/family-product.js +35 -0
  75. package/registry/examples/nav-bar/family-product.tsx +39 -0
  76. package/registry/examples/nav-bar/family-ui.d.ts +4 -0
  77. package/registry/examples/nav-bar/family-ui.js +34 -0
  78. package/registry/examples/nav-bar/family-ui.tsx +35 -0
  79. package/registry/examples/nav-bar/family-www.d.ts +4 -0
  80. package/registry/examples/nav-bar/family-www.js +34 -0
  81. package/registry/examples/nav-bar/family-www.tsx +36 -0
  82. package/registry/examples/showcase/native/slides.d.ts +4 -0
  83. package/registry/examples/showcase/native/slides.dark.png +0 -0
  84. package/registry/examples/showcase/native/slides.js +27 -0
  85. package/registry/examples/showcase/native/slides.light.png +0 -0
  86. package/registry/examples/showcase/native/slides.tsx +28 -0
  87. package/registry/examples/showcase/prompt-image.d.ts +4 -0
  88. package/registry/examples/showcase/prompt-image.js +29 -0
  89. package/registry/examples/showcase/prompt-image.tsx +28 -0
  90. package/registry/examples/showcase/slides.d.ts +4 -0
  91. package/registry/examples/showcase/slides.js +29 -0
  92. package/registry/examples/showcase/slides.tsx +24 -0
  93. package/registry/examples/site-footer/company.d.ts +4 -0
  94. package/registry/examples/site-footer/company.js +26 -0
  95. package/registry/examples/site-footer/company.tsx +23 -0
  96. package/registry/examples/site-footer/open-source-fr.d.ts +4 -0
  97. package/registry/examples/site-footer/open-source-fr.js +17 -0
  98. package/registry/examples/site-footer/open-source-fr.tsx +17 -0
  99. package/registry/examples/site-footer/product.d.ts +4 -0
  100. package/registry/examples/site-footer/product.js +22 -0
  101. package/registry/examples/site-footer/product.tsx +19 -0
  102. package/registry/examples/sites/family.d.ts +4 -0
  103. package/registry/examples/sites/family.js +20 -0
  104. package/registry/examples/sites/family.tsx +30 -0
  105. package/registry/examples/sites/french.d.ts +4 -0
  106. package/registry/examples/sites/french.js +25 -0
  107. package/registry/examples/sites/french.tsx +25 -0
  108. package/registry/field.json +1 -1
  109. package/registry/file-upload.json +1 -1
  110. package/registry/filter-bar.json +1 -1
  111. package/registry/form.json +1 -1
  112. package/registry/gallery-page.json +1 -1
  113. package/registry/glow-card.json +1 -1
  114. package/registry/goal-gauge.json +1 -1
  115. package/registry/how-it-works-page.json +1 -1
  116. package/registry/image-cropper.json +1 -1
  117. package/registry/index.json +64 -6
  118. package/registry/iso.json +1 -1
  119. package/registry/kanban.json +1 -1
  120. package/registry/kbd.json +1 -1
  121. package/registry/landing-page.json +1 -1
  122. package/registry/landscape.json +1 -1
  123. package/registry/legal-page.json +1 -1
  124. package/registry/link-card.json +1 -1
  125. package/registry/list.json +1 -1
  126. package/registry/loader.json +1 -1
  127. package/registry/longform-page.json +1 -1
  128. package/registry/map.json +2 -2
  129. package/registry/markdown.json +1 -1
  130. package/registry/marketing-layout.json +1 -1
  131. package/registry/marquee.json +1 -1
  132. package/registry/mascot-quote.json +1 -1
  133. package/registry/mascot-state.json +1 -1
  134. package/registry/mascots.json +1 -1
  135. package/registry/match-dialog.json +1 -1
  136. package/registry/media-capture.json +1 -1
  137. package/registry/meter.json +1 -1
  138. package/registry/nav-bar.json +257 -13
  139. package/registry/number-ticker.json +1 -1
  140. package/registry/page-header.json +1 -1
  141. package/registry/page-hero.json +1 -1
  142. package/registry/page.json +1 -1
  143. package/registry/pagination.json +1 -1
  144. package/registry/photo-grid.json +1 -1
  145. package/registry/pointer-light.json +1 -1
  146. package/registry/popover.json +1 -1
  147. package/registry/pricing-page.json +1 -1
  148. package/registry/product-page.json +1 -1
  149. package/registry/profile-card.json +1 -1
  150. package/registry/progress.json +1 -1
  151. package/registry/promise-card.json +1 -1
  152. package/registry/radio-group.json +1 -1
  153. package/registry/recipes.json +1 -1
  154. package/registry/scroll-stage.json +1 -1
  155. package/registry/search-field.json +1 -1
  156. package/registry/section-backdrop.json +1 -1
  157. package/registry/separator.json +1 -1
  158. package/registry/settings-layout.json +1 -1
  159. package/registry/showcase.json +421 -0
  160. package/registry/site-footer.json +389 -0
  161. package/registry/sites.json +93 -0
  162. package/registry/skeleton.json +1 -1
  163. package/registry/skip-link.json +1 -1
  164. package/registry/slider.json +1 -1
  165. package/registry/slot.json +1 -1
  166. package/registry/spinner.json +1 -1
  167. package/registry/split-view.json +1 -1
  168. package/registry/stage-banner.json +1 -1
  169. package/registry/stat.json +1 -1
  170. package/registry/status-page.json +1 -1
  171. package/registry/step-progress.json +1 -1
  172. package/registry/stepper.json +1 -1
  173. package/registry/swipe-deck.json +1 -1
  174. package/registry/switch.json +1 -1
  175. package/registry/tabs.json +1 -1
  176. package/registry/tag-input.json +1 -1
  177. package/registry/tag-selector.json +1 -1
  178. package/registry/terminal-replay.json +1 -1
  179. package/registry/theme.json +1 -1
  180. package/registry/toast.json +1 -1
  181. package/registry/toc.json +1 -1
  182. package/registry/tooltip.json +1 -1
  183. package/registry/tree-view.json +1 -1
  184. package/registry/verified-badge.json +1 -1
  185. package/registry/vertical-video.json +1 -1
  186. package/registry/video-player.json +1 -1
  187. package/registry/video-trimmer.json +1 -1
  188. package/registry/virtual.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/family-mark.tsx","../src/sites/sites.ts"],"sourcesContent":["// The mark of a site of the family (`@krizaka/ui/sites`): its brand's `ProductLogo`, still (a list of marks never\n// moves), or GitHub's, in the text colour. Shared by `NavBar.Family` and `SiteFooter` — not an entry of its own.\nimport type * as React from \"react\";\n\nimport { ProductLogo } from \"./marks/ProductLogo\";\nimport type { SiteMark } from \"./sites/sites\";\n\n/** GitHub's mark, in the text colour (both themes). */\nexport function GitHubGlyph({ size = 16, className }: { size?: number; className?: string }) {\n return (\n <svg viewBox=\"0 0 16 16\" width={size} height={size} fill=\"currentColor\" aria-hidden className={className}>\n <path d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8Z\" />\n </svg>\n );\n}\n\n/** A site's mark, decorative (its name is always written beside it). */\nexport function FamilyMark({ mark, size }: { mark: SiteMark; size: number }): React.ReactElement {\n if (mark === \"github\") return <GitHubGlyph size={Math.round(size * 0.8)} />;\n return <ProductLogo id={mark} size={size} animated={false} />;\n}\n","// Server-safe: plain data. The Krizaka family — every site Krizaka runs, once. The family switcher of the bar\n// (`NavBar.Family`) and the common footer (`SiteFooter`) both read it, so adding a site is one release of this package:\n// every bar and every footer of the family follow.\n//\n// The words of the family (a site's one line, the groups, the statuses, the footer's signature) are brand data, written\n// here in English and French (`familyLabels`) — a site passes the set of its locale, or its own translation.\n\n/** A site of the family. */\nexport type SiteId = \"krizaka\" | \"orazaka\" | \"orochia\" | \"yasakia\" | \"yororis\" | \"ui\" | \"java\" | \"github\";\n\n/** What a site is: the company, a product, or an open-source project. It chooses the footer's signature line. */\nexport type SiteKind = \"company\" | \"product\" | \"open-source\";\n\n/**\n * `released`: open to visit. `upcoming`: announced, not released yet (said \"Coming soon\"). `construction`: under\n * construction — nothing deployed beyond its page, nothing offered.\n */\nexport type SiteStatus = \"released\" | \"upcoming\" | \"construction\";\n\n/** The groups of the family, in reading order: Krizaka · Products · Open source · GitHub. */\nexport type SiteGroup = \"krizaka\" | \"products\" | \"open-source\" | \"github\";\n\n/** The mark a site wears: a brand of `ProductLogo` (Krizaka UI and Krizaka Java wear Krizaka's), or GitHub's. */\nexport type SiteMark = \"krizaka\" | \"orazaka\" | \"orochia\" | \"yasakia\" | \"yororis\" | \"github\";\n\nexport interface Site {\n readonly id: SiteId;\n /** The name, never translated. */\n readonly name: string;\n /** The address of the site (its home). */\n readonly url: string;\n /** The address without the scheme, as people say it (`ui.krizaka.com`). */\n readonly host: string;\n readonly kind: SiteKind;\n readonly group: SiteGroup;\n readonly status: SiteStatus;\n readonly mark: SiteMark;\n /** The repository the site is built from. */\n readonly repo: string;\n}\n\nconst site = (s: Omit<Site, \"host\">): Site => ({ ...s, host: s.url.replace(/^https?:\\/\\//, \"\").replace(/\\/$/, \"\") });\n\n/** Every site of the family, in reading order (the group order, then the order inside each group). */\nexport const sites: readonly Site[] = [\n site({ id: \"krizaka\", name: \"Krizaka\", url: \"https://www.krizaka.com\", kind: \"company\", group: \"krizaka\", status: \"released\", mark: \"krizaka\", repo: \"https://github.com/krizaka/krizaka-com\" }),\n site({ id: \"orazaka\", name: \"Orazaka\", url: \"https://dev.orazaka.com\", kind: \"product\", group: \"products\", status: \"released\", mark: \"orazaka\", repo: \"https://github.com/krizaka/orazaka\" }),\n site({ id: \"orochia\", name: \"Orochia\", url: \"https://dev.orochia.com\", kind: \"product\", group: \"products\", status: \"released\", mark: \"orochia\", repo: \"https://github.com/krizaka/orochia\" }),\n site({ id: \"yasakia\", name: \"Yasakia\", url: \"https://dev.yasakia.com\", kind: \"product\", group: \"products\", status: \"upcoming\", mark: \"yasakia\", repo: \"https://github.com/krizaka/yasakia\" }),\n site({ id: \"yororis\", name: \"Yororis\", url: \"https://dev.yororis.com\", kind: \"product\", group: \"products\", status: \"construction\", mark: \"yororis\", repo: \"https://github.com/krizaka/yororis\" }),\n site({ id: \"ui\", name: \"Krizaka UI\", url: \"https://ui.krizaka.com\", kind: \"open-source\", group: \"open-source\", status: \"released\", mark: \"krizaka\", repo: \"https://github.com/krizaka/krizaka-ui\" }),\n site({ id: \"java\", name: \"Krizaka Java\", url: \"https://java.krizaka.com\", kind: \"open-source\", group: \"open-source\", status: \"released\", mark: \"krizaka\", repo: \"https://github.com/krizaka/krizaka-build\" }),\n site({ id: \"github\", name: \"GitHub\", url: \"https://github.com/krizaka\", kind: \"open-source\", group: \"github\", status: \"released\", mark: \"github\", repo: \"https://github.com/krizaka\" }),\n];\n\n/** The groups, in reading order. */\nexport const siteGroups: readonly SiteGroup[] = [\"krizaka\", \"products\", \"open-source\", \"github\"];\n\n/** A site by id. */\nexport function siteById(id: SiteId): Site {\n const found = sites.find((s) => s.id === id);\n if (!found) throw new Error(`Unknown Krizaka site \"${id}\".`);\n return found;\n}\n\n/** The family grouped, in reading order: `[{ group, sites }]`, empty groups left out. */\nexport function sitesByGroup(): { group: SiteGroup; sites: Site[] }[] {\n return siteGroups.map((group) => ({ group, sites: sites.filter((s) => s.group === group) })).filter((g) => g.sites.length > 0);\n}\n\n/** The languages the family's words are written in. */\nexport type SiteLocale = \"en\" | \"fr\";\n\n/** The words of the family: the switcher, the footer, each site's one line. */\nexport interface FamilyLabels {\n /** The family's name: the switcher's navigation and its button, the footer's navigation (“Krizaka family”). */\n family: string;\n /** The heading of each group. */\n groups: Record<SiteGroup, string>;\n /** The badge of a site that is not released. */\n status: Record<Exclude<SiteStatus, \"released\">, string>;\n /** Says which site is the current one (“You are here”). */\n current: string;\n /** One line per site: what it is. */\n descriptions: Record<SiteId, string>;\n /** The footer's signature, by the kind of the current site (“A Krizaka product”). */\n signature: Record<SiteKind, string>;\n /** The footer's place line (“Made in Montréal”). */\n place: string;\n /** The accessible name of the version (“Version”). */\n version: string;\n}\n\n/** The family's words in English and French. Pass `familyLabels[locale]`, or your own translation of the same shape. */\nexport const familyLabels: Record<SiteLocale, FamilyLabels> = {\n en: {\n family: \"Krizaka family\",\n groups: { krizaka: \"Krizaka\", products: \"Products\", \"open-source\": \"Open source\", github: \"GitHub\" },\n status: { upcoming: \"Coming soon\", construction: \"Under construction\" },\n current: \"You are here\",\n descriptions: {\n krizaka: \"The company: our products, our open source, our story.\",\n orazaka: \"Sovereign AI, on your own servers.\",\n orochia: \"A video platform for creators.\",\n yasakia: \"The dating app where you talk first.\",\n yororis: \"A listening space with a face and a voice.\",\n ui: \"Components, tokens, icons and charts — web and React Native.\",\n java: \"Spring Boot building blocks on Maven Central.\",\n github: \"Every repository, in the open.\",\n },\n signature: { company: \"A Krizaka company\", product: \"A Krizaka product\", \"open-source\": \"A Krizaka open-source project\" },\n place: \"Made in Montréal\",\n version: \"Version\",\n },\n fr: {\n family: \"Famille Krizaka\",\n groups: { krizaka: \"Krizaka\", products: \"Produits\", \"open-source\": \"Open source\", github: \"GitHub\" },\n status: { upcoming: \"Bientôt\", construction: \"En construction\" },\n current: \"Vous êtes ici\",\n descriptions: {\n krizaka: \"La compagnie : nos produits, notre open source, notre histoire.\",\n orazaka: \"L’IA souveraine, sur vos propres serveurs.\",\n orochia: \"Une plateforme vidéo pour les créateurs.\",\n yasakia: \"L’app de rencontre où l’on se parle d’abord.\",\n yororis: \"Un espace d’écoute avec un visage et une voix.\",\n ui: \"Composants, jetons, icônes et graphiques — web et React Native.\",\n java: \"Des briques Spring Boot sur Maven Central.\",\n github: \"Tous les dépôts, au grand jour.\",\n },\n signature: { company: \"Une compagnie Krizaka\", product: \"Un produit Krizaka\", \"open-source\": \"Un projet open source de Krizaka\" },\n place: \"Fait à Montréal\",\n version: \"Version\",\n },\n};\n"],"mappings":"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","names":[]}
package/dist/index.js CHANGED
@@ -3,376 +3,18 @@ import {
3
3
  MotionObserver,
4
4
  RotatingWord
5
5
  } from "./chunk-HAQWKORZ.js";
6
+ import {
7
+ KrizakaLogo,
8
+ OrazakaLogo,
9
+ OrochiaLogo,
10
+ ProductLogo,
11
+ YasakiaLogo,
12
+ YazakiaLogo,
13
+ YororisLogo
14
+ } from "./chunk-HG65YAV4.js";
6
15
  import {
7
16
  cx
8
17
  } from "./chunk-6ISW63JI.js";
9
-
10
- // src/marks/krizaka-geometry.ts
11
- import { marks } from "@krizaka/tokens/native";
12
- var KRIZAKA = {
13
- viewBox: "0 0 400 400",
14
- croppedViewBox: "86 82 228 228",
15
- offset: 20,
16
- /** The shield: a pointy-top hexagon (r 92 around 180,180), open at its upper-right edge. */
17
- shield: "M259.7,134 L259.7,226 L180,272 L100.3,226 L100.3,134 L180,88 L212,106.5",
18
- stroke: 22,
19
- ink: { x1: 70, y1: 290, x2: 290, y2: 70 },
20
- blue: { x1: 180, y1: 180, x2: 300, y2: 60, stops: marks.krizaka },
21
- /** The vertex where the shield opens: a node (the serpent's head in Orochia's grammar). */
22
- node: { cx: 259.7, cy: 134, r: 19, inner: 6 },
23
- core: { cx: 180, cy: 180, r: 24, inner: 8 },
24
- highlight: "#dbeafe",
25
- glow: { color: "#196df5", opacity: 0.16 },
26
- orbit: { r: 160, dash: "8 8", width: 1.5 },
27
- ring: { r: 134, width: 1 }
28
- };
29
-
30
- // src/marks/shared.ts
31
- import { useId } from "react";
32
- var neutral = (token, percent) => `var(${token}, color-mix(in srgb, currentColor ${percent}%, transparent))`;
33
- function useIds(prefix, keys) {
34
- const uid = useId().replace(/[^a-zA-Z0-9_-]/g, "");
35
- return Object.fromEntries(keys.map((k) => [k, `${prefix}-${k}-${uid}`]));
36
- }
37
- var a11y = (title) => title ? { role: "img", "aria-label": title } : { "aria-hidden": true };
38
- var withAlpha = (hex, opacity) => `${hex}${Math.round(opacity * 255).toString(16).padStart(2, "0")}`;
39
-
40
- // src/marks/KrizakaLogo.tsx
41
- import { jsx, jsxs } from "react/jsx-runtime";
42
- var CSS = `
43
- .kzm-spin { transform-origin: 200px 200px; animation: kzm-spin 30s linear infinite; }
44
- .kzm-pulse { transform-box: fill-box; transform-origin: center; animation: kzm-pulse 3.2s ease-in-out infinite; }
45
- @keyframes kzm-spin { to { transform: rotate(360deg); } }
46
- @keyframes kzm-pulse {
47
- 0%, 100% { filter: drop-shadow(0 0 6px hsla(217, 92%, 53%, .25)); opacity: .9; }
48
- 50% { filter: drop-shadow(0 0 14px hsla(217, 92%, 53%, .55)); opacity: 1; }
49
- }
50
- @media (prefers-reduced-motion: reduce) { .kzm-spin, .kzm-pulse { animation: none; } }
51
- `;
52
- function KrizakaLogo({ size = 32, animated = true, title, className }) {
53
- const id = useIds("kzm", ["ink", "blue", "glow"]);
54
- const m = (cls) => animated ? cls : void 0;
55
- return /* @__PURE__ */ jsxs("svg", { width: size, height: size, viewBox: size < 48 ? KRIZAKA.croppedViewBox : KRIZAKA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
56
- /* @__PURE__ */ jsx("style", { children: CSS }),
57
- /* @__PURE__ */ jsxs("defs", { children: [
58
- /* @__PURE__ */ jsxs("linearGradient", { id: id.ink, gradientUnits: "userSpaceOnUse", x1: KRIZAKA.ink.x1, y1: KRIZAKA.ink.y1, x2: KRIZAKA.ink.x2, y2: KRIZAKA.ink.y2, children: [
59
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: neutral("--kz-text-secondary", 60) }),
60
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: neutral("--kz-text-primary", 92) })
61
- ] }),
62
- /* @__PURE__ */ jsx("linearGradient", { id: id.blue, gradientUnits: "userSpaceOnUse", x1: KRIZAKA.blue.x1, y1: KRIZAKA.blue.y1, x2: KRIZAKA.blue.x2, y2: KRIZAKA.blue.y2, children: KRIZAKA.blue.stops.map(([offset, color]) => /* @__PURE__ */ jsx("stop", { offset, stopColor: color }, offset)) }),
63
- /* @__PURE__ */ jsxs("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
64
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: KRIZAKA.glow.color, stopOpacity: KRIZAKA.glow.opacity }),
65
- /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: KRIZAKA.glow.color, stopOpacity: "0" })
66
- ] })
67
- ] }),
68
- size >= 48 ? /* @__PURE__ */ jsx("circle", { cx: "200", cy: "200", r: "190", fill: `url(#${id.glow})` }) : null,
69
- /* @__PURE__ */ jsx("circle", { className: m("kzm-spin"), cx: "200", cy: "200", r: KRIZAKA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: KRIZAKA.orbit.width, strokeDasharray: KRIZAKA.orbit.dash, opacity: ".6" }),
70
- /* @__PURE__ */ jsx("circle", { cx: "200", cy: "200", r: KRIZAKA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: KRIZAKA.ring.width, opacity: ".35" }),
71
- /* @__PURE__ */ jsxs("g", { transform: `translate(${KRIZAKA.offset} ${KRIZAKA.offset})`, children: [
72
- /* @__PURE__ */ jsx("path", { d: KRIZAKA.shield, stroke: `url(#${id.ink})`, strokeWidth: KRIZAKA.stroke, strokeLinecap: "round", strokeLinejoin: "round" }),
73
- /* @__PURE__ */ jsxs("g", { className: m("kzm-pulse"), children: [
74
- /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.node.cx, cy: KRIZAKA.node.cy, r: KRIZAKA.node.r, fill: `url(#${id.blue})` }),
75
- /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.node.cx, cy: KRIZAKA.node.cy, r: KRIZAKA.node.inner, fill: KRIZAKA.highlight })
76
- ] }),
77
- /* @__PURE__ */ jsxs("g", { className: m("kzm-pulse"), children: [
78
- /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.core.cx, cy: KRIZAKA.core.cy, r: KRIZAKA.core.r, fill: `url(#${id.blue})` }),
79
- /* @__PURE__ */ jsx("circle", { cx: KRIZAKA.core.cx, cy: KRIZAKA.core.cy, r: KRIZAKA.core.inner, fill: KRIZAKA.highlight })
80
- ] })
81
- ] })
82
- ] });
83
- }
84
-
85
- // src/marks/orazaka-geometry.ts
86
- import { marks as marks2 } from "@krizaka/tokens/native";
87
- var orange = marks2.orazaka[marks2.orazaka.length - 1][1];
88
- var ORAZAKA = {
89
- viewBox: "0 0 400 400",
90
- croppedViewBox: "76 76 248 248",
91
- center: 200,
92
- /**
93
- * The three shards — a hexagon's cap (from the original 132-unit drawing), scaled ×1.9 around the centre and turned
94
- * 0°, 120°, 240° — in view-box coordinates, so that one gradient runs across all three.
95
- */
96
- shards: [
97
- "M154.4,121.2 L200,94.7 L245.6,121.2 L245.6,154.4 L226.6,165.4 L226.6,132.2 L200,116.8 L173.4,132.2 L173.4,165.4 L154.4,154.4 Z",
98
- "M291.1,199.9 L291.2,252.6 L245.5,278.9 L216.7,262.3 L216.6,240.3 L245.4,257 L272.1,241.6 L272,210.9 L243.2,194.3 L262.3,183.3 Z",
99
- "M154.5,278.9 L108.8,252.6 L108.9,199.9 L137.7,183.3 L156.8,194.3 L128,210.9 L127.9,241.6 L154.6,257 L183.4,240.3 L183.3,262.3 Z"
100
- ],
101
- shardStroke: 5.7,
102
- gradient: { x1: 90, y1: 310, x2: 310, y2: 90, stops: marks2.orazaka },
103
- core: { r: 21, inner: 7.6 },
104
- highlight: "#fff7ed",
105
- glow: { color: orange, opacity: 0.16 },
106
- /** The core's breathing shadow (web), in the mark's orange. */
107
- pulse: { color: orange, low: 0.3, high: 0.6 },
108
- orbit: { r: 160, dash: "8 8", width: 1.5 },
109
- ring: { r: 134, width: 1 }
110
- };
111
-
112
- // src/marks/OrazakaLogo.tsx
113
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
114
- var CSS2 = `
115
- .ozm-orbit { transform-origin: 200px 200px; animation: ozm-orbit 35s linear infinite; }
116
- .ozm-core { transform-box: fill-box; transform-origin: center; animation: ozm-core 3.2s ease-in-out infinite; }
117
- @keyframes ozm-orbit { to { transform: rotate(360deg); } }
118
- @keyframes ozm-core {
119
- 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(ORAZAKA.pulse.color, ORAZAKA.pulse.low)}); opacity: .9; }
120
- 50% { filter: drop-shadow(0 0 14px ${withAlpha(ORAZAKA.pulse.color, ORAZAKA.pulse.high)}); opacity: 1; }
121
- }
122
- @media (prefers-reduced-motion: reduce) { .ozm-orbit, .ozm-core { animation: none; } }
123
- `;
124
- function OrazakaLogo({ size = 32, animated = true, title, className }) {
125
- const id = useIds("ozm", ["gradient", "glow"]);
126
- const fill = `url(#${id.gradient})`;
127
- return /* @__PURE__ */ jsxs2("svg", { width: size, height: size, viewBox: size < 48 ? ORAZAKA.croppedViewBox : ORAZAKA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
128
- /* @__PURE__ */ jsx2("style", { children: CSS2 }),
129
- /* @__PURE__ */ jsxs2("defs", { children: [
130
- /* @__PURE__ */ jsx2("linearGradient", { id: id.gradient, gradientUnits: "userSpaceOnUse", x1: ORAZAKA.gradient.x1, y1: ORAZAKA.gradient.y1, x2: ORAZAKA.gradient.x2, y2: ORAZAKA.gradient.y2, children: ORAZAKA.gradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx2("stop", { offset, stopColor: color }, offset)) }),
131
- /* @__PURE__ */ jsxs2("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
132
- /* @__PURE__ */ jsx2("stop", { offset: "0%", stopColor: ORAZAKA.glow.color, stopOpacity: ORAZAKA.glow.opacity }),
133
- /* @__PURE__ */ jsx2("stop", { offset: "100%", stopColor: ORAZAKA.glow.color, stopOpacity: "0" })
134
- ] })
135
- ] }),
136
- size >= 48 ? /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: "190", fill: `url(#${id.glow})` }) : null,
137
- /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: ORAZAKA.orbit.width, strokeDasharray: ORAZAKA.orbit.dash, opacity: ".6" }),
138
- /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: ORAZAKA.ring.width, opacity: ".35" }),
139
- /* @__PURE__ */ jsx2("g", { className: animated ? "ozm-orbit" : void 0, children: ORAZAKA.shards.map((d) => /* @__PURE__ */ jsx2("path", { d, fill, stroke: fill, strokeWidth: ORAZAKA.shardStroke, strokeLinejoin: "round" }, d)) }),
140
- /* @__PURE__ */ jsxs2("g", { className: animated ? "ozm-core" : void 0, children: [
141
- /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.core.r, fill }),
142
- /* @__PURE__ */ jsx2("circle", { cx: ORAZAKA.center, cy: ORAZAKA.center, r: ORAZAKA.core.inner, fill: ORAZAKA.highlight })
143
- ] })
144
- ] });
145
- }
146
-
147
- // src/marks/orochia-geometry.ts
148
- import { marks as marks3 } from "@krizaka/tokens/native";
149
- var OROCHIA = {
150
- viewBox: "0 0 400 400",
151
- croppedViewBox: "86 82 228 228",
152
- offset: 20,
153
- body: { x1: 70, y1: 290, x2: 290, y2: 70, stops: marks3.orochia },
154
- flameGradient: { stops: [["0%", "#a855f7"], ["100%", "#f9a8d4"]] },
155
- glow: { color: "#d946ef", opacity: 0.18 },
156
- orbit: { r: 160, dash: "8 8", width: 1.5 },
157
- ring: { r: 134, width: 1 },
158
- arc: "M259.8,142.8 A88,88 0 1 1 142.8,100.2",
159
- neck: "M142.8,100.2 A88,88 0 0 1 187.7,92.3",
160
- tail: "M187.7,92.3 A88,88 0 0 1 221.3,102.3",
161
- scales: { color: "#fdf4ff", opacity: 0.45, width: 3, dash: "2 14" },
162
- head: { cx: 253.9, cy: 130.1, rx: 13, ry: 20, rotate: -25 },
163
- tongue: { d: "M245.4,112.0 L242.0,104.8 L235.0,101.5 M242.0,104.8 L244.0,97.3", color: "#f472b6" },
164
- eye: { cx: 256.3, cy: 123.5, r: 4.5, color: "#fdf4ff" },
165
- flame: {
166
- translate: [127, 120],
167
- scale: 4.4,
168
- d: "M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z"
169
- }
170
- };
171
-
172
- // src/marks/OrochiaLogo.tsx
173
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
174
- var CSS3 = `
175
- .orom-spin { transform-origin: 180px 180px; animation: orom-spin 30s linear infinite; }
176
- .orom-slither { animation: orom-slither 2.4s linear infinite; }
177
- .orom-pulse { transform-box: view-box; animation: orom-pulse 3.2s ease-in-out infinite; }
178
- @keyframes orom-spin { to { transform: rotate(360deg); } }
179
- @keyframes orom-slither { to { stroke-dashoffset: -64; } }
180
- @keyframes orom-pulse {
181
- 0%, 100% { filter: drop-shadow(0 0 6px hsla(292, 84%, 61%, .25)); opacity: .9; }
182
- 50% { filter: drop-shadow(0 0 14px hsla(292, 84%, 61%, .55)); opacity: 1; }
183
- }
184
- @media (prefers-reduced-motion: reduce) { .orom-spin, .orom-slither, .orom-pulse { animation: none; } }
185
- `;
186
- function OrochiaLogo({ size = 36, animated = true, title, className }) {
187
- const id = useIds("orom", ["body", "flame", "glow"]);
188
- const m = (cls) => animated ? cls : void 0;
189
- return /* @__PURE__ */ jsxs3("svg", { width: size, height: size, viewBox: size < 48 ? OROCHIA.croppedViewBox : OROCHIA.viewBox, fill: "none", xmlns: "http://www.w3.org/2000/svg", className, ...a11y(title), children: [
190
- /* @__PURE__ */ jsx3("style", { children: CSS3 }),
191
- /* @__PURE__ */ jsxs3("defs", { children: [
192
- /* @__PURE__ */ jsx3("linearGradient", { id: id.body, gradientUnits: "userSpaceOnUse", x1: OROCHIA.body.x1, y1: OROCHIA.body.y1, x2: OROCHIA.body.x2, y2: OROCHIA.body.y2, children: OROCHIA.body.stops.map(([offset, color]) => /* @__PURE__ */ jsx3("stop", { offset, stopColor: color }, offset)) }),
193
- /* @__PURE__ */ jsx3("linearGradient", { id: id.flame, x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: OROCHIA.flameGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx3("stop", { offset, stopColor: color }, offset)) }),
194
- /* @__PURE__ */ jsxs3("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
195
- /* @__PURE__ */ jsx3("stop", { offset: "0%", stopColor: OROCHIA.glow.color, stopOpacity: OROCHIA.glow.opacity }),
196
- /* @__PURE__ */ jsx3("stop", { offset: "100%", stopColor: OROCHIA.glow.color, stopOpacity: "0" })
197
- ] })
198
- ] }),
199
- /* @__PURE__ */ jsxs3("g", { transform: `translate(${OROCHIA.offset} ${OROCHIA.offset})`, children: [
200
- /* @__PURE__ */ jsx3("circle", { cx: "180", cy: "180", r: "170", fill: `url(#${id.glow})` }),
201
- /* @__PURE__ */ jsx3("circle", { className: m("orom-spin"), cx: "180", cy: "180", r: OROCHIA.orbit.r, stroke: neutral("--kz-border-strong", 40), strokeWidth: OROCHIA.orbit.width, strokeDasharray: OROCHIA.orbit.dash, opacity: ".6" }),
202
- /* @__PURE__ */ jsx3("circle", { cx: "180", cy: "180", r: OROCHIA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: OROCHIA.ring.width, opacity: ".35" }),
203
- /* @__PURE__ */ jsx3("path", { d: OROCHIA.arc, stroke: `url(#${id.body})`, strokeWidth: "22", strokeLinecap: "round" }),
204
- /* @__PURE__ */ jsx3("path", { className: m("orom-slither"), d: OROCHIA.arc, stroke: OROCHIA.scales.color, strokeOpacity: OROCHIA.scales.opacity, strokeWidth: OROCHIA.scales.width, strokeLinecap: "round", strokeDasharray: OROCHIA.scales.dash }),
205
- /* @__PURE__ */ jsx3("path", { d: OROCHIA.neck, stroke: `url(#${id.body})`, strokeWidth: "14", strokeLinecap: "round" }),
206
- /* @__PURE__ */ jsx3("path", { d: OROCHIA.tail, stroke: `url(#${id.body})`, strokeWidth: "6", strokeLinecap: "round" }),
207
- /* @__PURE__ */ jsx3("ellipse", { cx: OROCHIA.head.cx, cy: OROCHIA.head.cy, rx: OROCHIA.head.rx, ry: OROCHIA.head.ry, transform: `rotate(${OROCHIA.head.rotate} ${OROCHIA.head.cx} ${OROCHIA.head.cy})`, fill: `url(#${id.body})` }),
208
- /* @__PURE__ */ jsx3("path", { d: OROCHIA.tongue.d, stroke: OROCHIA.tongue.color, strokeWidth: "3", strokeLinecap: "round" }),
209
- /* @__PURE__ */ jsx3("circle", { className: m("orom-pulse"), cx: OROCHIA.eye.cx, cy: OROCHIA.eye.cy, r: OROCHIA.eye.r, fill: OROCHIA.eye.color }),
210
- /* @__PURE__ */ jsx3("path", { className: m("orom-pulse"), transform: `translate(${OROCHIA.flame.translate[0]} ${OROCHIA.flame.translate[1]}) scale(${OROCHIA.flame.scale})`, d: OROCHIA.flame.d, fill: `url(#${id.flame})` })
211
- ] })
212
- ] });
213
- }
214
-
215
- // src/marks/yasakia-geometry.ts
216
- import { marks as marks4 } from "@krizaka/tokens/native";
217
- var turquoise = marks4.yasakia[marks4.yasakia.length - 1][1];
218
- var YASAKIA = {
219
- viewBox: "0 0 400 400",
220
- croppedViewBox: "80 80 240 240",
221
- center: 200,
222
- /** The two voices, left then right: each a bubble (cut around the lens) and its tail. */
223
- voices: [
224
- { 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" },
225
- { 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" }
226
- ],
227
- /** The left voice, a shade deeper: the depth between the two. */
228
- shade: { color: "#000", opacity: 0.22 },
229
- /** Where the bubbles overlap: the core, lit from above. */
230
- 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 },
231
- gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks4.yasakia },
232
- /** The light on the lens: bright at the top, fading down. */
233
- highlight: { color: "#f0fdfa", from: 0.75, to: 0.2 },
234
- /** The pair: two nodes on the orbit, opposite each other, that turn with it. */
235
- pair: { r: 8, at: [[40, 200], [360, 200]] },
236
- glow: { color: turquoise, opacity: 0.16 },
237
- /** The core's breathing shadow (web), in the mark's turquoise. */
238
- pulse: { color: turquoise, low: 0.3, high: 0.6 },
239
- orbit: { r: 160, dash: "8 8", width: 1.5 },
240
- ring: { r: 134, width: 1 }
241
- };
242
-
243
- // src/marks/YasakiaLogo.tsx
244
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
245
- var CSS4 = `
246
- .yzm-orbit { transform-origin: 200px 200px; animation: yzm-orbit 30s linear infinite; }
247
- .yzm-core { transform-box: fill-box; transform-origin: center; animation: yzm-core 3.2s ease-in-out infinite; }
248
- @keyframes yzm-orbit { to { transform: rotate(360deg); } }
249
- @keyframes yzm-core {
250
- 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(YASAKIA.pulse.color, YASAKIA.pulse.low)}); opacity: .9; }
251
- 50% { filter: drop-shadow(0 0 14px ${withAlpha(YASAKIA.pulse.color, YASAKIA.pulse.high)}); opacity: 1; }
252
- }
253
- @media (prefers-reduced-motion: reduce) { .yzm-orbit, .yzm-core { animation: none; } }
254
- `;
255
- function YasakiaLogo({ size = 32, animated = true, title, className }) {
256
- const id = useIds("yzm", ["gradient", "light", "glow"]);
257
- const fill = `url(#${id.gradient})`;
258
- return /* @__PURE__ */ jsxs4("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: [
259
- /* @__PURE__ */ jsx4("style", { children: CSS4 }),
260
- /* @__PURE__ */ jsxs4("defs", { children: [
261
- /* @__PURE__ */ jsx4("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__ */ jsx4("stop", { offset, stopColor: color }, offset)) }),
262
- /* @__PURE__ */ jsxs4("linearGradient", { id: id.light, gradientUnits: "userSpaceOnUse", x1: "0", y1: YASAKIA.lens.y1, x2: "0", y2: YASAKIA.lens.y2, children: [
263
- /* @__PURE__ */ jsx4("stop", { offset: "0%", stopColor: YASAKIA.highlight.color, stopOpacity: YASAKIA.highlight.from }),
264
- /* @__PURE__ */ jsx4("stop", { offset: "100%", stopColor: YASAKIA.highlight.color, stopOpacity: YASAKIA.highlight.to })
265
- ] }),
266
- /* @__PURE__ */ jsxs4("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
267
- /* @__PURE__ */ jsx4("stop", { offset: "0%", stopColor: YASAKIA.glow.color, stopOpacity: YASAKIA.glow.opacity }),
268
- /* @__PURE__ */ jsx4("stop", { offset: "100%", stopColor: YASAKIA.glow.color, stopOpacity: "0" })
269
- ] })
270
- ] }),
271
- size >= 48 ? /* @__PURE__ */ jsx4("circle", { cx: YASAKIA.center, cy: YASAKIA.center, r: "190", fill: `url(#${id.glow})` }) : null,
272
- /* @__PURE__ */ jsx4("circle", { cx: YASAKIA.center, cy: YASAKIA.center, r: YASAKIA.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: YASAKIA.ring.width, opacity: ".35" }),
273
- /* @__PURE__ */ jsxs4("g", { className: animated ? "yzm-orbit" : void 0, children: [
274
- /* @__PURE__ */ jsx4("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" }),
275
- YASAKIA.pair.at.map(([cx2, cy]) => /* @__PURE__ */ jsx4("circle", { cx: cx2, cy, r: YASAKIA.pair.r, fill }, cx2))
276
- ] }),
277
- YASAKIA.voices.map((v, i) => /* @__PURE__ */ jsxs4("g", { children: [
278
- /* @__PURE__ */ jsx4("path", { d: v.body, fill }),
279
- /* @__PURE__ */ jsx4("path", { d: v.tail, fill }),
280
- i === 0 ? /* @__PURE__ */ jsx4("path", { d: `${v.body} ${v.tail}`, fill: YASAKIA.shade.color, opacity: YASAKIA.shade.opacity }) : null
281
- ] }, v.body)),
282
- /* @__PURE__ */ jsxs4("g", { className: animated ? "yzm-core" : void 0, children: [
283
- /* @__PURE__ */ jsx4("path", { d: YASAKIA.lens.d, fill }),
284
- /* @__PURE__ */ jsx4("path", { d: YASAKIA.lens.d, fill: `url(#${id.light})` })
285
- ] })
286
- ] });
287
- }
288
- var YazakiaLogo = YasakiaLogo;
289
-
290
- // src/marks/yororis-geometry.ts
291
- import { marks as marks5 } from "@krizaka/tokens/native";
292
- var sand = marks5.yororis[0][1];
293
- var sage = marks5.yororis[marks5.yororis.length - 1][1];
294
- var YORORIS = {
295
- viewBox: "0 0 400 400",
296
- croppedViewBox: "80 80 240 240",
297
- center: 200,
298
- /** The two leaves — open hands, mirrored around x = 200 — filled, rising from the stem. */
299
- leaves: [
300
- "M200 262 C142 256 104 206 110 122 C138 130 154 152 160 180 C168 218 182 238 204 246 Z",
301
- "M200 262 C258 256 296 206 290 122 C262 130 246 152 240 180 C232 218 218 238 196 246 Z"
302
- ],
303
- /** A vein of light along each leaf (dashed, it drifts slowly when animated). */
304
- veins: "M122 142 C128 196 156 232 192 248 M278 142 C272 196 244 232 208 248",
305
- vein: { color: "#fbf6ea", opacity: 0.45, width: 3, dash: "2 14" },
306
- /** The stem, from the junction down. */
307
- stem: "M200 244 L200 312",
308
- stroke: 30,
309
- gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks5.yororis },
310
- /** The core's warm light: from the mark's sand (below) to a light sand (above). */
311
- coreGradient: { stops: [["0%", sand], ["100%", "#e6c993"]] },
312
- /** The core, held in the hollow of the leaves (not on the junction): the one who is listened to. It breathes. */
313
- core: { cx: 200, cy: 184, r: 32, inner: 11 },
314
- highlight: "#fbf6ea",
315
- /** The moment: one node on the orbit, that turns with it. */
316
- moment: { r: 9, at: [200, 40] },
317
- glow: { color: sage, opacity: 0.18 },
318
- /** The core's breathing shadow (web), in the core's warm sand. */
319
- pulse: { color: sand, low: 0.3, high: 0.6 },
320
- orbit: { r: 160, dash: "8 8", width: 1.5 },
321
- ring: { r: 134, width: 1 }
322
- };
323
-
324
- // src/marks/YororisLogo.tsx
325
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
326
- var CSS5 = `
327
- .yrm-orbit { transform-origin: 200px 200px; animation: yrm-orbit 36s linear infinite; }
328
- .yrm-vein { animation: yrm-vein 4.8s linear infinite; }
329
- .yrm-core { transform-box: fill-box; transform-origin: center; animation: yrm-core 4.2s ease-in-out infinite; }
330
- @keyframes yrm-orbit { to { transform: rotate(360deg); } }
331
- @keyframes yrm-vein { to { stroke-dashoffset: 64; } }
332
- @keyframes yrm-core {
333
- 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(YORORIS.pulse.color, YORORIS.pulse.low)}); opacity: .9; }
334
- 50% { filter: drop-shadow(0 0 16px ${withAlpha(YORORIS.pulse.color, YORORIS.pulse.high)}); opacity: 1; }
335
- }
336
- @media (prefers-reduced-motion: reduce) { .yrm-orbit, .yrm-vein, .yrm-core { animation: none; } }
337
- `;
338
- function YororisLogo({ size = 32, animated = true, title, className }) {
339
- const id = useIds("yrm", ["gradient", "core", "glow"]);
340
- const fill = `url(#${id.gradient})`;
341
- return /* @__PURE__ */ jsxs5("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: [
342
- /* @__PURE__ */ jsx5("style", { children: CSS5 }),
343
- /* @__PURE__ */ jsxs5("defs", { children: [
344
- /* @__PURE__ */ jsx5("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__ */ jsx5("stop", { offset, stopColor: color }, offset)) }),
345
- /* @__PURE__ */ jsx5("linearGradient", { id: id.core, x1: "50%", y1: "100%", x2: "50%", y2: "0%", children: YORORIS.coreGradient.stops.map(([offset, color]) => /* @__PURE__ */ jsx5("stop", { offset, stopColor: color }, offset)) }),
346
- /* @__PURE__ */ jsxs5("radialGradient", { id: id.glow, cx: "50%", cy: "50%", r: "50%", children: [
347
- /* @__PURE__ */ jsx5("stop", { offset: "0%", stopColor: YORORIS.glow.color, stopOpacity: YORORIS.glow.opacity }),
348
- /* @__PURE__ */ jsx5("stop", { offset: "100%", stopColor: YORORIS.glow.color, stopOpacity: "0" })
349
- ] })
350
- ] }),
351
- size >= 48 ? /* @__PURE__ */ jsx5("circle", { cx: YORORIS.center, cy: YORORIS.center, r: "190", fill: `url(#${id.glow})` }) : null,
352
- /* @__PURE__ */ jsx5("circle", { cx: YORORIS.center, cy: YORORIS.center, r: YORORIS.ring.r, stroke: neutral("--kz-border-default", 30), strokeWidth: YORORIS.ring.width, opacity: ".35" }),
353
- /* @__PURE__ */ jsxs5("g", { className: animated ? "yrm-orbit" : void 0, children: [
354
- /* @__PURE__ */ jsx5("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" }),
355
- /* @__PURE__ */ jsx5("circle", { cx: YORORIS.moment.at[0], cy: YORORIS.moment.at[1], r: YORORIS.moment.r, fill })
356
- ] }),
357
- /* @__PURE__ */ jsx5("path", { d: YORORIS.stem, stroke: fill, strokeWidth: YORORIS.stroke, strokeLinecap: "round" }),
358
- YORORIS.leaves.map((d) => /* @__PURE__ */ jsx5("path", { d, fill }, d)),
359
- /* @__PURE__ */ jsx5("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 }),
360
- /* @__PURE__ */ jsxs5("g", { className: animated ? "yrm-core" : void 0, children: [
361
- /* @__PURE__ */ jsx5("circle", { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.r, fill: `url(#${id.core})` }),
362
- /* @__PURE__ */ jsx5("circle", { cx: YORORIS.core.cx, cy: YORORIS.core.cy, r: YORORIS.core.inner, fill: YORORIS.highlight })
363
- ] })
364
- ] });
365
- }
366
-
367
- // src/marks/ProductLogo.tsx
368
- import { jsx as jsx6 } from "react/jsx-runtime";
369
- function ProductLogo({ id, ...props }) {
370
- if (id === "krizaka") return /* @__PURE__ */ jsx6(KrizakaLogo, { ...props });
371
- if (id === "orazaka") return /* @__PURE__ */ jsx6(OrazakaLogo, { ...props });
372
- if (id === "yasakia" || id === "yazakia") return /* @__PURE__ */ jsx6(YasakiaLogo, { ...props });
373
- if (id === "yororis") return /* @__PURE__ */ jsx6(YororisLogo, { ...props });
374
- return /* @__PURE__ */ jsx6(OrochiaLogo, { ...props });
375
- }
376
18
  export {
377
19
  KrizakaLogo,
378
20
  MotionObserver,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/marks/krizaka-geometry.ts","../src/marks/shared.ts","../src/marks/KrizakaLogo.tsx","../src/marks/orazaka-geometry.ts","../src/marks/OrazakaLogo.tsx","../src/marks/orochia-geometry.ts","../src/marks/OrochiaLogo.tsx","../src/marks/yasakia-geometry.ts","../src/marks/YasakiaLogo.tsx","../src/marks/yororis-geometry.ts","../src/marks/YororisLogo.tsx","../src/marks/ProductLogo.tsx"],"sourcesContent":["import { marks } from \"@krizaka/tokens/native\";\n\n/**\n * The Krizaka mark's geometry — the one description drawn by the web mark (KrizakaLogo) and the native one\n * (KrizakaMark). Built on the Orochia mark's grammar (docs: packages/tokens/BRAND.md, \"Marks\"): a 360×360 artwork at\n * (20, 20) in a 400×400 view box, one bold stroke (22) drawn as an open figure, an end that breaks out as a node, a\n * core, a dashed orbit and a ring; below 48 px the view box crops to the emblem.\n *\n * Krizaka is the parent: the hexagonal shield is **ink** (the host's text roles), the node and the core carry the\n * Krizaka blue (`marks.krizaka` of @krizaka/tokens: the brand's accent hsl(217 92% 53%) → its text tint hsl(217 92% 68%)).\n */\nexport const KRIZAKA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"86 82 228 228\",\n offset: 20,\n /** The shield: a pointy-top hexagon (r 92 around 180,180), open at its upper-right edge. */\n shield: \"M259.7,134 L259.7,226 L180,272 L100.3,226 L100.3,134 L180,88 L212,106.5\",\n stroke: 22,\n ink: { x1: 70, y1: 290, x2: 290, y2: 70 },\n blue: { x1: 180, y1: 180, x2: 300, y2: 60, stops: marks.krizaka },\n /** The vertex where the shield opens: a node (the serpent's head in Orochia's grammar). */\n node: { cx: 259.7, cy: 134, r: 19, inner: 6 },\n core: { cx: 180, cy: 180, r: 24, inner: 8 },\n highlight: \"#dbeafe\",\n glow: { color: \"#196df5\", opacity: 0.16 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n} as const;\n","import { useId } from \"react\";\n\nexport interface MarkProps {\n /** Width and height in pixels. */\n size?: number;\n /** Orbit, pulse and shimmer. Off with `false`; always off under prefers-reduced-motion. */\n animated?: boolean;\n /** An accessible name (the mark becomes an image); without it the mark is decorative. */\n title?: string;\n className?: string;\n}\n\n/** A neutral stroke: the host's `--kz-*` token when it has one, else the text colour at a low opacity. */\nexport const neutral = (token: string, percent: number) => `var(${token}, color-mix(in srgb, currentColor ${percent}%, transparent))`;\n\n/** Ids unique per instance, so several marks on a page never share a gradient. */\nexport function useIds<K extends string>(prefix: string, keys: readonly K[]): Record<K, string> {\n const uid = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n return Object.fromEntries(keys.map((k) => [k, `${prefix}-${k}-${uid}`])) as Record<K, string>;\n}\n\nexport const a11y = (title?: string) => (title ? { role: \"img\" as const, \"aria-label\": title } : { \"aria-hidden\": true as const });\n\n/** `#rrggbb` + an opacity → `#rrggbbaa` (a brand colour in a CSS shadow). */\nexport const withAlpha = (hex: string, opacity: number) => `${hex}${Math.round(opacity * 255).toString(16).padStart(2, \"0\")}`;\n","import { KRIZAKA as G } from \"./krizaka-geometry\";\nimport { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.kzm-spin { transform-origin: 200px 200px; animation: kzm-spin 30s linear infinite; }\n.kzm-pulse { transform-box: fill-box; transform-origin: center; animation: kzm-pulse 3.2s ease-in-out infinite; }\n@keyframes kzm-spin { to { transform: rotate(360deg); } }\n@keyframes kzm-pulse {\n 0%, 100% { filter: drop-shadow(0 0 6px hsla(217, 92%, 53%, .25)); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px hsla(217, 92%, 53%, .55)); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .kzm-spin, .kzm-pulse { animation: none; } }\n`;\n\n/**\n * The Krizaka mark: an ink hexagonal shield, open at one vertex where a blue node breaks out, around a blue core —\n * the parent of the family (Orochia's coiled serpent, Orazaka's shards). The orbit turns, the node and the core\n * breathe. The shield reads the host's text roles, so it is ink in both themes. Below 48 px it crops to the emblem.\n */\nexport function KrizakaLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"kzm\", [\"ink\", \"blue\", \"glow\"] as const);\n const m = (cls: string) => (animated ? cls : undefined);\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.ink} gradientUnits=\"userSpaceOnUse\" x1={G.ink.x1} y1={G.ink.y1} x2={G.ink.x2} y2={G.ink.y2}>\n <stop offset=\"0%\" stopColor={neutral(\"--kz-text-secondary\", 60)} />\n <stop offset=\"100%\" stopColor={neutral(\"--kz-text-primary\", 92)} />\n </linearGradient>\n <linearGradient id={id.blue} gradientUnits=\"userSpaceOnUse\" x1={G.blue.x1} y1={G.blue.y1} x2={G.blue.x2} y2={G.blue.y2}>\n {G.blue.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n {size >= 48 ? <circle cx=\"200\" cy=\"200\" r=\"190\" fill={`url(#${id.glow})`} /> : null /* cropped: the halo would show its square */}\n <circle className={m(\"kzm-spin\")} cx=\"200\" cy=\"200\" r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx=\"200\" cy=\"200\" r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <g transform={`translate(${G.offset} ${G.offset})`}>\n <path d={G.shield} stroke={`url(#${id.ink})`} strokeWidth={G.stroke} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <g className={m(\"kzm-pulse\")}>\n <circle cx={G.node.cx} cy={G.node.cy} r={G.node.r} fill={`url(#${id.blue})`} />\n <circle cx={G.node.cx} cy={G.node.cy} r={G.node.inner} fill={G.highlight} />\n </g>\n <g className={m(\"kzm-pulse\")}>\n <circle cx={G.core.cx} cy={G.core.cy} r={G.core.r} fill={`url(#${id.blue})`} />\n <circle cx={G.core.cx} cy={G.core.cy} r={G.core.inner} fill={G.highlight} />\n </g>\n </g>\n </svg>\n );\n}\n","import { marks } from \"@krizaka/tokens/native\";\n\n/**\n * The Orazaka mark's geometry — drawn by the web mark (OrazakaLogo) and the native one (OrazakaMark). The same\n * grammar as Orochia and Krizaka (packages/tokens/BRAND.md, \"Marks\"): 400×400 view box, dashed orbit and ring, a bold\n * emblem in the brand gradient, a bright core; below 48 px the view box crops to the emblem.\n *\n * The emblem keeps the original idea — three hexagonal shards orbiting a core — drawn as solid shards (the weight of\n * Orochia's body) in the Orazaka orange: the brand's mark gradient (`marks.orazaka` of @krizaka/tokens, the same source\n * as the accent), deep orange → orange on the accent's hue 26 — never the amber of --kz-warning (hue 38). Every stop\n * reads ≥ 3:1 on the page surfaces of both themes (tested in @krizaka/tokens), so one mark serves dark and light.\n */\n/** The bright end of the gradient: the halo and the core's glow. */\nconst orange = marks.orazaka[marks.orazaka.length - 1]![1];\n\nexport const ORAZAKA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"76 76 248 248\",\n center: 200,\n /**\n * The three shards — a hexagon's cap (from the original 132-unit drawing), scaled ×1.9 around the centre and turned\n * 0°, 120°, 240° — in view-box coordinates, so that one gradient runs across all three.\n */\n shards: [\n \"M154.4,121.2 L200,94.7 L245.6,121.2 L245.6,154.4 L226.6,165.4 L226.6,132.2 L200,116.8 L173.4,132.2 L173.4,165.4 L154.4,154.4 Z\",\n \"M291.1,199.9 L291.2,252.6 L245.5,278.9 L216.7,262.3 L216.6,240.3 L245.4,257 L272.1,241.6 L272,210.9 L243.2,194.3 L262.3,183.3 Z\",\n \"M154.5,278.9 L108.8,252.6 L108.9,199.9 L137.7,183.3 L156.8,194.3 L128,210.9 L127.9,241.6 L154.6,257 L183.4,240.3 L183.3,262.3 Z\",\n ],\n shardStroke: 5.7,\n gradient: { x1: 90, y1: 310, x2: 310, y2: 90, stops: marks.orazaka },\n core: { r: 21, inner: 7.6 },\n highlight: \"#fff7ed\",\n glow: { color: orange, opacity: 0.16 },\n /** The core's breathing shadow (web), in the mark's orange. */\n pulse: { color: orange, low: 0.3, high: 0.6 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n} as const;\n","import { ORAZAKA as G } from \"./orazaka-geometry\";\nimport { a11y, type MarkProps, neutral, useIds, withAlpha } from \"./shared\";\n\nconst CSS = `\n.ozm-orbit { transform-origin: 200px 200px; animation: ozm-orbit 35s linear infinite; }\n.ozm-core { transform-box: fill-box; transform-origin: center; animation: ozm-core 3.2s ease-in-out infinite; }\n@keyframes ozm-orbit { to { transform: rotate(360deg); } }\n@keyframes ozm-core {\n 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(G.pulse.color, G.pulse.low)}); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px ${withAlpha(G.pulse.color, G.pulse.high)}); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .ozm-orbit, .ozm-core { animation: none; } }\n`;\n\n/**\n * The Orazaka mark: three solid hexagonal shards in the Orazaka orange (the brand's mark\n * gradient of @krizaka/tokens, deep orange → orange, hue 26 — the same in dark and light) orbiting slowly around a core that breathes —\n * the family's grammar (dashed orbit, ring, bold emblem, bright core). Below 48 px it crops to the emblem.\n */\nexport function OrazakaLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"ozm\", [\"gradient\", \"glow\"] as const);\n const fill = `url(#${id.gradient})`;\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.gradient} gradientUnits=\"userSpaceOnUse\" x1={G.gradient.x1} y1={G.gradient.y1} x2={G.gradient.x2} y2={G.gradient.y2}>\n {G.gradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n {size >= 48 ? <circle cx={G.center} cy={G.center} r=\"190\" fill={`url(#${id.glow})`} /> : null /* cropped: the halo would show its square */}\n <circle cx={G.center} cy={G.center} r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx={G.center} cy={G.center} r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <g className={animated ? \"ozm-orbit\" : undefined}>\n {G.shards.map((d) => (\n <path key={d} d={d} fill={fill} stroke={fill} strokeWidth={G.shardStroke} strokeLinejoin=\"round\" />\n ))}\n </g>\n <g className={animated ? \"ozm-core\" : undefined}>\n <circle cx={G.center} cy={G.center} r={G.core.r} fill={fill} />\n <circle cx={G.center} cy={G.center} r={G.core.inner} fill={G.highlight} />\n </g>\n </svg>\n );\n}\n","import { marks } from \"@krizaka/tokens/native\";\n\n/**\n * The Orochia mark's geometry — the one description of the serpent and its flame, drawn by the web mark (SVG in the\n * DOM, OrochiaLogo) and the native one (react-native-svg, @krizaka/ui/native). Coordinates are in the 360×360 artwork,\n * placed at (20, 20) in a 400×400 view box; below 48 px the view box crops to the serpent. The body's gradient is the\n * brand's mark gradient (`marks.orochia` of @krizaka/tokens).\n */\nexport const OROCHIA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"86 82 228 228\",\n offset: 20,\n body: { x1: 70, y1: 290, x2: 290, y2: 70, stops: marks.orochia },\n flameGradient: { stops: [[\"0%\", \"#a855f7\"], [\"100%\", \"#f9a8d4\"]] },\n glow: { color: \"#d946ef\", opacity: 0.18 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n arc: \"M259.8,142.8 A88,88 0 1 1 142.8,100.2\",\n neck: \"M142.8,100.2 A88,88 0 0 1 187.7,92.3\",\n tail: \"M187.7,92.3 A88,88 0 0 1 221.3,102.3\",\n scales: { color: \"#fdf4ff\", opacity: 0.45, width: 3, dash: \"2 14\" },\n head: { cx: 253.9, cy: 130.1, rx: 13, ry: 20, rotate: -25 },\n tongue: { d: \"M245.4,112.0 L242.0,104.8 L235.0,101.5 M242.0,104.8 L244.0,97.3\", color: \"#f472b6\" },\n eye: { cx: 256.3, cy: 123.5, r: 4.5, color: \"#fdf4ff\" },\n flame: {\n translate: [127, 120] as const,\n scale: 4.4,\n d: \"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\",\n },\n} as const;\n","import { OROCHIA as G } from \"./orochia-geometry\";\nimport { a11y, type MarkProps, neutral, useIds } from \"./shared\";\n\nconst CSS = `\n.orom-spin { transform-origin: 180px 180px; animation: orom-spin 30s linear infinite; }\n.orom-slither { animation: orom-slither 2.4s linear infinite; }\n.orom-pulse { transform-box: view-box; animation: orom-pulse 3.2s ease-in-out infinite; }\n@keyframes orom-spin { to { transform: rotate(360deg); } }\n@keyframes orom-slither { to { stroke-dashoffset: -64; } }\n@keyframes orom-pulse {\n 0%, 100% { filter: drop-shadow(0 0 6px hsla(292, 84%, 61%, .25)); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px hsla(292, 84%, 61%, .55)); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .orom-spin, .orom-slither, .orom-pulse { animation: none; } }\n`;\n\n/**\n * The Orochia mark: the serpent (Orochi) coiled into an \"O\" around the flame it guards. The orbit turns, scales slide\n * along the body, the eye and the flame breathe. Below 48 px it crops to the serpent: the orbits would be hairlines.\n */\nexport function OrochiaLogo({ size = 36, animated = true, title, className }: MarkProps) {\n const id = useIds(\"orom\", [\"body\", \"flame\", \"glow\"] as const);\n const m = (cls: string) => (animated ? cls : undefined);\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.body} gradientUnits=\"userSpaceOnUse\" x1={G.body.x1} y1={G.body.y1} x2={G.body.x2} y2={G.body.y2}>\n {G.body.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <linearGradient id={id.flame} x1=\"50%\" y1=\"100%\" x2=\"50%\" y2=\"0%\">\n {G.flameGradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n <g transform={`translate(${G.offset} ${G.offset})`}>\n <circle cx=\"180\" cy=\"180\" r=\"170\" fill={`url(#${id.glow})`} />\n <circle className={m(\"orom-spin\")} cx=\"180\" cy=\"180\" r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx=\"180\" cy=\"180\" r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <path d={G.arc} stroke={`url(#${id.body})`} strokeWidth=\"22\" strokeLinecap=\"round\" />\n <path className={m(\"orom-slither\")} d={G.arc} stroke={G.scales.color} strokeOpacity={G.scales.opacity} strokeWidth={G.scales.width} strokeLinecap=\"round\" strokeDasharray={G.scales.dash} />\n <path d={G.neck} stroke={`url(#${id.body})`} strokeWidth=\"14\" strokeLinecap=\"round\" />\n <path d={G.tail} stroke={`url(#${id.body})`} strokeWidth=\"6\" strokeLinecap=\"round\" />\n <ellipse cx={G.head.cx} cy={G.head.cy} rx={G.head.rx} ry={G.head.ry} transform={`rotate(${G.head.rotate} ${G.head.cx} ${G.head.cy})`} fill={`url(#${id.body})`} />\n <path d={G.tongue.d} stroke={G.tongue.color} strokeWidth=\"3\" strokeLinecap=\"round\" />\n <circle className={m(\"orom-pulse\")} cx={G.eye.cx} cy={G.eye.cy} r={G.eye.r} fill={G.eye.color} />\n <path className={m(\"orom-pulse\")} transform={`translate(${G.flame.translate[0]} ${G.flame.translate[1]}) scale(${G.flame.scale})`} d={G.flame.d} fill={`url(#${id.flame})`} />\n </g>\n </svg>\n );\n}\n","import { marks } from \"@krizaka/tokens/native\";\n\n/**\n * The Yasakia mark's geometry — drawn by the web mark (YasakiaLogo) and the native one (YasakiaMark). The family's\n * grammar (packages/tokens/BRAND.md, \"Marks\"): 400×400 view box, dashed orbit and ring, a bold emblem in the brand\n * gradient, a bright core; below 48 px the view box crops to the emblem.\n *\n * The emblem is **two voices**: two solid speech bubbles, mirrored, that overlap. Where they overlap — what the two\n * people share once they have talked — is the bright core, a lens lit from above that breathes. The left voice sits a\n * shade deeper than the right, so the pair reads as two, with depth, at 16 px as at 128 px. A thin gap (the page shows\n * through) separates each bubble from the lens: the paths are cut here, no mask, so web and native draw the same thing.\n * Two nodes, the pair, ride the dashed orbit. The gradient is the brand's mark gradient (`marks.yasakia` of\n * @krizaka/tokens): emerald → turquoise, mid-tones that read ≥ 3:1 on the page surfaces of both themes (tested in\n * @krizaka/tokens), so one mark serves dark and light.\n */\n/** The bright end of the gradient (turquoise): the halo and the core's glow. */\nconst turquoise = marks.yasakia[marks.yasakia.length - 1]![1];\n\n/*\n * How the paths are drawn (literal, so the native bundle carries no geometry code): each bubble is a circle of radius 80\n * centred at y 184, 36 on either side of x = 200 (164 and 236); they overlap in the lens (x = 200, y 112.6 → 255.4).\n * Each bubble is cut by the other's circle grown by the gap (r 87): the cut runs from (191.9, 109) to (191.9, 259) on\n * the left, mirrored on the right. Each tail is a curved point from the bubble's lower outer side, down and out to\n * (88, 294) — mirrored (312, 294).\n */\nexport const YASAKIA = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"80 80 240 240\",\n center: 200,\n /** The two voices, left then right: each a bubble (cut around the lens) and its tail. */\n voices: [\n { 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\" },\n { 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\" },\n ] as const,\n /** The left voice, a shade deeper: the depth between the two. */\n shade: { color: \"#000\", opacity: 0.22 },\n /** Where the bubbles overlap: the core, lit from above. */\n 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 },\n gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks.yasakia },\n /** The light on the lens: bright at the top, fading down. */\n highlight: { color: \"#f0fdfa\", from: 0.75, to: 0.2 },\n /** The pair: two nodes on the orbit, opposite each other, that turn with it. */\n pair: { r: 8, at: [[40, 200], [360, 200]] as const },\n glow: { color: turquoise, opacity: 0.16 },\n /** The core's breathing shadow (web), in the mark's turquoise. */\n pulse: { color: turquoise, low: 0.3, high: 0.6 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n} as const;\n","import { a11y, type MarkProps, neutral, useIds, withAlpha } from \"./shared\";\nimport { YASAKIA as G } from \"./yasakia-geometry\";\n\nconst CSS = `\n.yzm-orbit { transform-origin: 200px 200px; animation: yzm-orbit 30s linear infinite; }\n.yzm-core { transform-box: fill-box; transform-origin: center; animation: yzm-core 3.2s ease-in-out infinite; }\n@keyframes yzm-orbit { to { transform: rotate(360deg); } }\n@keyframes yzm-core {\n 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(G.pulse.color, G.pulse.low)}); opacity: .9; }\n 50% { filter: drop-shadow(0 0 14px ${withAlpha(G.pulse.color, G.pulse.high)}); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .yzm-orbit, .yzm-core { animation: none; } }\n`;\n\n/**\n * The Yasakia mark: two voices — two solid speech bubbles that overlap, the left a shade deeper — in the Yasakia\n * gradient (emerald → turquoise, the brand's mark gradient of @krizaka/tokens, the same in dark and light). Where they\n * overlap, what the two share, is the bright core: a lens lit from above that breathes. The pair, two nodes on the\n * dashed orbit, turns slowly around it — the family's grammar (orbit, ring, bold emblem, bright core). Below 48 px it\n * crops to the emblem.\n */\nexport function YasakiaLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"yzm\", [\"gradient\", \"light\", \"glow\"] as const);\n const fill = `url(#${id.gradient})`;\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.gradient} gradientUnits=\"userSpaceOnUse\" x1={G.gradient.x1} y1={G.gradient.y1} x2={G.gradient.x2} y2={G.gradient.y2}>\n {G.gradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <linearGradient id={id.light} gradientUnits=\"userSpaceOnUse\" x1=\"0\" y1={G.lens.y1} x2=\"0\" y2={G.lens.y2}>\n <stop offset=\"0%\" stopColor={G.highlight.color} stopOpacity={G.highlight.from} />\n <stop offset=\"100%\" stopColor={G.highlight.color} stopOpacity={G.highlight.to} />\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n {size >= 48 ? <circle cx={G.center} cy={G.center} r=\"190\" fill={`url(#${id.glow})`} /> : null /* cropped: the halo would show its square */}\n <circle cx={G.center} cy={G.center} r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <g className={animated ? \"yzm-orbit\" : undefined}>\n <circle cx={G.center} cy={G.center} r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n {G.pair.at.map(([cx, cy]) => (\n <circle key={cx} cx={cx} cy={cy} r={G.pair.r} fill={fill} />\n ))}\n </g>\n {G.voices.map((v, i) => (\n <g key={v.body}>\n <path d={v.body} fill={fill} />\n <path d={v.tail} fill={fill} />\n {i === 0 ? <path d={`${v.body} ${v.tail}`} fill={G.shade.color} opacity={G.shade.opacity} /> : null}\n </g>\n ))}\n <g className={animated ? \"yzm-core\" : undefined}>\n <path d={G.lens.d} fill={fill} />\n <path d={G.lens.d} fill={`url(#${id.light})`} />\n </g>\n </svg>\n );\n}\n\n/** @deprecated Yazakia was renamed Yasakia (2026-10): use `YasakiaLogo`. Kept for one minor version. */\nexport const YazakiaLogo = YasakiaLogo;\n","import { marks } from \"@krizaka/tokens/native\";\n\n/**\n * The Yororis mark's geometry — drawn by the web mark (YororisLogo) and the native one (YororisMark). The family's\n * grammar (packages/tokens/BRAND.md, \"Marks\"): 400×400 view box, dashed orbit and ring, a bold filled emblem in the\n * brand gradient, a bright core; below 48 px the view box crops to the emblem.\n *\n * The emblem is \"the hold\": a \"Y\" whose two arms are two filled leaves — open hands — that rise from one stem and cup\n * a warm core. The core is not where the arms join, it rests *inside* them: held, given room, listened to. A vein of\n * light runs along each leaf (depth, like the Orochia serpent's scales). One node, the moment, rides the dashed orbit:\n * it comes round, then it goes (a presence that stops). The leaves wear the brand's mark gradient (`marks.yororis` of\n * @krizaka/tokens): sand → sage, mid-tones that read ≥ 3:1 on the page surfaces of both themes (tested in\n * @krizaka/tokens), so one mark serves dark and light; the core is a warm sand light that rises from the mark's sand.\n */\nconst sand = marks.yororis[0]![1];\n/** The calm end of the gradient (sage): the halo and the core's glow. */\nconst sage = marks.yororis[marks.yororis.length - 1]![1];\n\nexport const YORORIS = {\n viewBox: \"0 0 400 400\",\n croppedViewBox: \"80 80 240 240\",\n center: 200,\n /** The two leaves — open hands, mirrored around x = 200 — filled, rising from the stem. */\n leaves: [\n \"M200 262 C142 256 104 206 110 122 C138 130 154 152 160 180 C168 218 182 238 204 246 Z\",\n \"M200 262 C258 256 296 206 290 122 C262 130 246 152 240 180 C232 218 218 238 196 246 Z\",\n ],\n /** A vein of light along each leaf (dashed, it drifts slowly when animated). */\n veins: \"M122 142 C128 196 156 232 192 248 M278 142 C272 196 244 232 208 248\",\n vein: { color: \"#fbf6ea\", opacity: 0.45, width: 3, dash: \"2 14\" },\n /** The stem, from the junction down. */\n stem: \"M200 244 L200 312\",\n stroke: 30,\n gradient: { x1: 110, y1: 300, x2: 290, y2: 100, stops: marks.yororis },\n /** The core's warm light: from the mark's sand (below) to a light sand (above). */\n coreGradient: { stops: [[\"0%\", sand], [\"100%\", \"#e6c993\"]] as const },\n /** The core, held in the hollow of the leaves (not on the junction): the one who is listened to. It breathes. */\n core: { cx: 200, cy: 184, r: 32, inner: 11 },\n highlight: \"#fbf6ea\",\n /** The moment: one node on the orbit, that turns with it. */\n moment: { r: 9, at: [200, 40] as const },\n glow: { color: sage, opacity: 0.18 },\n /** The core's breathing shadow (web), in the core's warm sand. */\n pulse: { color: sand, low: 0.3, high: 0.6 },\n orbit: { r: 160, dash: \"8 8\", width: 1.5 },\n ring: { r: 134, width: 1 },\n} as const;\n","import { a11y, type MarkProps, neutral, useIds, withAlpha } from \"./shared\";\nimport { YORORIS as G } from \"./yororis-geometry\";\n\nconst CSS = `\n.yrm-orbit { transform-origin: 200px 200px; animation: yrm-orbit 36s linear infinite; }\n.yrm-vein { animation: yrm-vein 4.8s linear infinite; }\n.yrm-core { transform-box: fill-box; transform-origin: center; animation: yrm-core 4.2s ease-in-out infinite; }\n@keyframes yrm-orbit { to { transform: rotate(360deg); } }\n@keyframes yrm-vein { to { stroke-dashoffset: 64; } }\n@keyframes yrm-core {\n 0%, 100% { filter: drop-shadow(0 0 6px ${withAlpha(G.pulse.color, G.pulse.low)}); opacity: .9; }\n 50% { filter: drop-shadow(0 0 16px ${withAlpha(G.pulse.color, G.pulse.high)}); opacity: 1; }\n}\n@media (prefers-reduced-motion: reduce) { .yrm-orbit, .yrm-vein, .yrm-core { animation: none; } }\n`;\n\n/**\n * The Yororis mark, \"the hold\": a \"Y\" whose arms are two filled leaves — open hands — rising from one stem and cupping\n * a warm core that breathes: held, given room, listened to. Leaves in the Yororis gradient (sand → sage, the brand's\n * mark gradient of @krizaka/tokens, the same in dark and light), a vein of light along each, the core in a warm sand\n * light; the moment, one node on the dashed orbit, comes round slowly. The family's grammar (orbit, ring, bold emblem,\n * bright core) with the slowest breath of the family. Below 48 px it crops to the emblem.\n */\nexport function YororisLogo({ size = 32, animated = true, title, className }: MarkProps) {\n const id = useIds(\"yrm\", [\"gradient\", \"core\", \"glow\"] as const);\n const fill = `url(#${id.gradient})`;\n return (\n <svg width={size} height={size} viewBox={size < 48 ? G.croppedViewBox : G.viewBox} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className} {...a11y(title)}>\n <style>{CSS}</style>\n <defs>\n <linearGradient id={id.gradient} gradientUnits=\"userSpaceOnUse\" x1={G.gradient.x1} y1={G.gradient.y1} x2={G.gradient.x2} y2={G.gradient.y2}>\n {G.gradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <linearGradient id={id.core} x1=\"50%\" y1=\"100%\" x2=\"50%\" y2=\"0%\">\n {G.coreGradient.stops.map(([offset, color]) => (\n <stop key={offset} offset={offset} stopColor={color} />\n ))}\n </linearGradient>\n <radialGradient id={id.glow} cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stopColor={G.glow.color} stopOpacity={G.glow.opacity} />\n <stop offset=\"100%\" stopColor={G.glow.color} stopOpacity=\"0\" />\n </radialGradient>\n </defs>\n {size >= 48 ? <circle cx={G.center} cy={G.center} r=\"190\" fill={`url(#${id.glow})`} /> : null /* cropped: the halo would show its square */}\n <circle cx={G.center} cy={G.center} r={G.ring.r} stroke={neutral(\"--kz-border-default\", 30)} strokeWidth={G.ring.width} opacity=\".35\" />\n <g className={animated ? \"yrm-orbit\" : undefined}>\n <circle cx={G.center} cy={G.center} r={G.orbit.r} stroke={neutral(\"--kz-border-strong\", 40)} strokeWidth={G.orbit.width} strokeDasharray={G.orbit.dash} opacity=\".6\" />\n <circle cx={G.moment.at[0]} cy={G.moment.at[1]} r={G.moment.r} fill={fill} />\n </g>\n <path d={G.stem} stroke={fill} strokeWidth={G.stroke} strokeLinecap=\"round\" />\n {G.leaves.map((d) => (\n <path key={d} d={d} fill={fill} />\n ))}\n <path className={animated ? \"yrm-vein\" : undefined} d={G.veins} stroke={G.vein.color} strokeOpacity={G.vein.opacity} strokeWidth={G.vein.width} strokeLinecap=\"round\" strokeDasharray={G.vein.dash} />\n <g className={animated ? \"yrm-core\" : undefined}>\n <circle cx={G.core.cx} cy={G.core.cy} r={G.core.r} fill={`url(#${id.core})`} />\n <circle cx={G.core.cx} cy={G.core.cy} r={G.core.inner} fill={G.highlight} />\n </g>\n </svg>\n );\n}\n","import { KrizakaLogo } from \"./KrizakaLogo\";\nimport { OrazakaLogo } from \"./OrazakaLogo\";\nimport { OrochiaLogo } from \"./OrochiaLogo\";\nimport type { MarkProps } from \"./shared\";\nimport { YasakiaLogo } from \"./YasakiaLogo\";\nimport { YororisLogo } from \"./YororisLogo\";\n\nexport type BrandId = \"krizaka\" | \"orazaka\" | \"orochia\" | \"yasakia\" | \"yororis\";\n\n/** The mark of a Krizaka brand by id — for navigation, cards and lists driven by data. */\nexport function ProductLogo({ id, ...props }: MarkProps & { /** The brand: `krizaka`, `orazaka`, `orochia`, `yasakia` or `yororis` (`yazakia`, deprecated: the old name of `yasakia`). */ id: BrandId | \"yazakia\" }) {\n if (id === \"krizaka\") return <KrizakaLogo {...props} />;\n if (id === \"orazaka\") return <OrazakaLogo {...props} />;\n if (id === \"yasakia\" || id === \"yazakia\") return <YasakiaLogo {...props} />;\n if (id === \"yororis\") return <YororisLogo {...props} />;\n return <OrochiaLogo {...props} />;\n}\n"],"mappings":"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","names":["marks","jsx","jsxs","CSS","marks","jsx","jsxs","CSS","marks","jsx","jsxs","CSS","cx","marks","jsx","jsxs","CSS","jsx"]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}