@krizaka/ui 2.8.0 → 2.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.
- package/README.md +73 -5
- package/dist/achievement.d.ts +54 -0
- package/dist/achievement.js +73 -0
- package/dist/achievement.js.map +1 -0
- package/dist/app-shell.d.ts +203 -0
- package/dist/app-shell.js +137 -0
- package/dist/app-shell.js.map +1 -0
- package/dist/auth-layout.d.ts +136 -0
- package/dist/auth-layout.js +75 -0
- package/dist/auth-layout.js.map +1 -0
- package/dist/blocks.css +247 -0
- package/dist/catalogue-page.d.ts +34 -0
- package/dist/catalogue-page.js +26 -0
- package/dist/catalogue-page.js.map +1 -0
- package/dist/changelog-page.d.ts +50 -0
- package/dist/changelog-page.js +27 -0
- package/dist/changelog-page.js.map +1 -0
- package/dist/choice-grid.d.ts +84 -0
- package/dist/choice-grid.js +141 -0
- package/dist/choice-grid.js.map +1 -0
- package/dist/chunk-555LWYIN.js +11 -0
- package/dist/chunk-555LWYIN.js.map +1 -0
- package/dist/chunk-AZPKXP3O.js +36 -0
- package/dist/chunk-AZPKXP3O.js.map +1 -0
- package/dist/{chunk-NOVUREEC.js → chunk-JZPVUJIX.js} +25 -3
- package/dist/chunk-JZPVUJIX.js.map +1 -0
- package/dist/chunk-KNBYZGSQ.js +11 -0
- package/dist/chunk-KNBYZGSQ.js.map +1 -0
- package/dist/chunk-VCAAHCHL.js +17 -0
- package/dist/chunk-VCAAHCHL.js.map +1 -0
- package/dist/code-block.js +23 -44
- package/dist/code-block.js.map +1 -1
- package/dist/component-page.d.ts +41 -0
- package/dist/component-page.js +17 -0
- package/dist/component-page.js.map +1 -0
- package/dist/contact-page.d.ts +31 -0
- package/dist/contact-page.js +26 -0
- package/dist/contact-page.js.map +1 -0
- package/dist/continue-prompt.d.ts +48 -0
- package/dist/continue-prompt.js +200 -0
- package/dist/continue-prompt.js.map +1 -0
- package/dist/dashboard-layout.d.ts +139 -0
- package/dist/dashboard-layout.js +68 -0
- package/dist/dashboard-layout.js.map +1 -0
- package/dist/detail-layout.d.ts +126 -0
- package/dist/detail-layout.js +48 -0
- package/dist/detail-layout.js.map +1 -0
- package/dist/docs-article-page.d.ts +54 -0
- package/dist/docs-article-page.js +29 -0
- package/dist/docs-article-page.js.map +1 -0
- package/dist/docs-hub-page.d.ts +72 -0
- package/dist/docs-hub-page.js +45 -0
- package/dist/docs-hub-page.js.map +1 -0
- package/dist/docs-layout.d.ts +78 -0
- package/dist/docs-layout.js +60 -0
- package/dist/docs-layout.js.map +1 -0
- package/dist/error-page.d.ts +22 -0
- package/dist/error-page.js +23 -0
- package/dist/error-page.js.map +1 -0
- package/dist/gallery-page.d.ts +50 -0
- package/dist/gallery-page.js +30 -0
- package/dist/gallery-page.js.map +1 -0
- package/dist/{geometry-CXrAW34x.d.ts → geometry-CbOU4rtL.d.ts} +4 -4
- package/dist/goal-gauge.d.ts +38 -0
- package/dist/goal-gauge.js +53 -0
- package/dist/goal-gauge.js.map +1 -0
- package/dist/how-it-works-page.d.ts +48 -0
- package/dist/how-it-works-page.js +28 -0
- package/dist/how-it-works-page.js.map +1 -0
- package/dist/index.d.ts +16 -6
- package/dist/index.js +115 -24
- package/dist/index.js.map +1 -1
- package/dist/landing-page.d.ts +58 -0
- package/dist/landing-page.js +42 -0
- package/dist/landing-page.js.map +1 -0
- package/dist/landscape.d.ts +41 -0
- package/dist/landscape.js +836 -0
- package/dist/landscape.js.map +1 -0
- package/dist/legal-page.d.ts +34 -0
- package/dist/legal-page.js +18 -0
- package/dist/legal-page.js.map +1 -0
- package/dist/longform-page.d.ts +42 -0
- package/dist/longform-page.js +29 -0
- package/dist/longform-page.js.map +1 -0
- package/dist/marketing-layout.d.ts +60 -0
- package/dist/marketing-layout.js +25 -0
- package/dist/marketing-layout.js.map +1 -0
- package/dist/mascot-quote.d.ts +4 -4
- package/dist/mascot-quote.js +23 -1
- package/dist/mascot-quote.js.map +1 -1
- package/dist/mascot-state.d.ts +2 -2
- package/dist/mascot-state.js +1 -1
- package/dist/mascot-state.js.map +1 -1
- package/dist/mascots.d.ts +18 -5
- package/dist/mascots.js +87 -2
- package/dist/mascots.js.map +1 -1
- package/dist/native.d.ts +88 -11
- package/dist/native.js +640 -297
- package/dist/native.js.map +1 -1
- package/dist/pricing-page.d.ts +62 -0
- package/dist/pricing-page.js +71 -0
- package/dist/pricing-page.js.map +1 -0
- package/dist/product-page.d.ts +83 -0
- package/dist/product-page.js +60 -0
- package/dist/product-page.js.map +1 -0
- package/dist/profile-card.d.ts +85 -0
- package/dist/profile-card.js +87 -0
- package/dist/profile-card.js.map +1 -0
- package/dist/promise-card.d.ts +28 -0
- package/dist/promise-card.js +29 -0
- package/dist/promise-card.js.map +1 -0
- package/dist/scroll-stage.d.ts +603 -0
- package/dist/scroll-stage.js +59 -0
- package/dist/scroll-stage.js.map +1 -0
- package/dist/settings-layout.d.ts +154 -0
- package/dist/settings-layout.js +57 -0
- package/dist/settings-layout.js.map +1 -0
- package/dist/split-view.d.ts +106 -0
- package/dist/split-view.js +41 -0
- package/dist/split-view.js.map +1 -0
- package/dist/stage-banner.d.ts +34 -0
- package/dist/stage-banner.js +26 -0
- package/dist/stage-banner.js.map +1 -0
- package/dist/status-page.d.ts +42 -0
- package/dist/status-page.js +28 -0
- package/dist/status-page.js.map +1 -0
- package/dist/story-variant-CLn4H5Nt.d.ts +4 -0
- package/dist/story.css +432 -0
- package/package.json +478 -10
- package/registry/achievement.json +322 -0
- package/registry/action-bar.json +1 -1
- package/registry/alert.json +1 -1
- package/registry/app-shell.json +451 -0
- package/registry/argument-card.json +1 -1
- package/registry/audio-player.json +1 -1
- package/registry/auth-layout.json +230 -0
- package/registry/avatar.json +1 -1
- package/registry/badge.json +1 -1
- package/registry/button.json +5 -5
- package/registry/card-grid.json +5 -5
- package/registry/card.json +3 -3
- package/registry/catalogue-page.json +240 -0
- package/registry/changelog-page.json +226 -0
- package/registry/checkbox.json +1 -1
- package/registry/chip-link.json +1 -1
- package/registry/chip.json +1 -1
- package/registry/choice-grid.json +318 -0
- package/registry/code-block.json +1 -1
- package/registry/combobox.json +1 -1
- package/registry/command.json +1 -1
- package/registry/component-page.json +227 -0
- package/registry/confirm-button.json +3 -3
- package/registry/contact-page.json +212 -0
- package/registry/continue-prompt.json +312 -0
- package/registry/countdown.json +1 -1
- package/registry/cta-panel.json +1 -1
- package/registry/dashboard-layout.json +273 -0
- package/registry/data-table.json +1 -1
- package/registry/date-picker.json +1 -1
- package/registry/decision-list.json +1 -1
- package/registry/detail-layout.json +233 -0
- package/registry/dialog.json +1 -1
- package/registry/docs-article-page.json +242 -0
- package/registry/docs-hub-page.json +270 -0
- package/registry/docs-layout.json +148 -0
- package/registry/dropdown-menu.json +3 -3
- package/registry/empty-state.json +1 -1
- package/registry/error-page.json +183 -0
- package/registry/examples/achievement/arcade.d.ts +4 -0
- package/registry/examples/achievement/arcade.js +15 -0
- package/registry/examples/achievement/arcade.tsx +12 -0
- package/registry/examples/achievement/milestones.d.ts +4 -0
- package/registry/examples/achievement/milestones.js +15 -0
- package/registry/examples/achievement/milestones.tsx +12 -0
- package/registry/examples/app-shell/admin-console.d.ts +4 -0
- package/registry/examples/app-shell/admin-console.js +52 -0
- package/registry/examples/app-shell/admin-console.tsx +64 -0
- package/registry/examples/app-shell/basic.d.ts +4 -0
- package/registry/examples/app-shell/basic.js +37 -0
- package/registry/examples/app-shell/basic.tsx +31 -0
- package/registry/examples/app-shell/orochia-studio.d.ts +4 -0
- package/registry/examples/app-shell/orochia-studio.js +89 -0
- package/registry/examples/app-shell/orochia-studio.tsx +101 -0
- package/registry/examples/auth-layout/onboarding.d.ts +4 -0
- package/registry/examples/auth-layout/onboarding.js +56 -0
- package/registry/examples/auth-layout/onboarding.tsx +47 -0
- package/registry/examples/auth-layout/sign-in.d.ts +4 -0
- package/registry/examples/auth-layout/sign-in.js +55 -0
- package/registry/examples/auth-layout/sign-in.tsx +47 -0
- package/registry/examples/auth-layout/verify.d.ts +4 -0
- package/registry/examples/auth-layout/verify.js +23 -0
- package/registry/examples/auth-layout/verify.tsx +19 -0
- package/registry/examples/catalogue-page/components.d.ts +4 -0
- package/registry/examples/catalogue-page/components.js +33 -0
- package/registry/examples/catalogue-page/components.tsx +36 -0
- package/registry/examples/changelog-page/releases.d.ts +4 -0
- package/registry/examples/changelog-page/releases.js +44 -0
- package/registry/examples/changelog-page/releases.tsx +39 -0
- package/registry/examples/choice-grid/line-up.d.ts +4 -0
- package/registry/examples/choice-grid/line-up.js +37 -0
- package/registry/examples/choice-grid/line-up.tsx +32 -0
- package/registry/examples/choice-grid/plans.d.ts +4 -0
- package/registry/examples/choice-grid/plans.js +28 -0
- package/registry/examples/choice-grid/plans.tsx +24 -0
- package/registry/examples/component-page/button.d.ts +4 -0
- package/registry/examples/component-page/button.js +33 -0
- package/registry/examples/component-page/button.tsx +30 -0
- package/registry/examples/contact-page/team.d.ts +4 -0
- package/registry/examples/contact-page/team.js +39 -0
- package/registry/examples/contact-page/team.tsx +38 -0
- package/registry/examples/continue-prompt/arcade.d.ts +4 -0
- package/registry/examples/continue-prompt/arcade.js +28 -0
- package/registry/examples/continue-prompt/arcade.tsx +25 -0
- package/registry/examples/continue-prompt/offer.d.ts +4 -0
- package/registry/examples/continue-prompt/offer.js +24 -0
- package/registry/examples/continue-prompt/offer.tsx +19 -0
- package/registry/examples/dashboard-layout/orazaka-eric.d.ts +4 -0
- package/registry/examples/dashboard-layout/orazaka-eric.js +58 -0
- package/registry/examples/dashboard-layout/orazaka-eric.tsx +80 -0
- package/registry/examples/dashboard-layout/widgets.d.ts +4 -0
- package/registry/examples/dashboard-layout/widgets.js +17 -0
- package/registry/examples/dashboard-layout/widgets.tsx +22 -0
- package/registry/examples/detail-layout/job.d.ts +4 -0
- package/registry/examples/detail-layout/job.js +25 -0
- package/registry/examples/detail-layout/job.tsx +20 -0
- package/registry/examples/detail-layout/video.d.ts +4 -0
- package/registry/examples/detail-layout/video.js +44 -0
- package/registry/examples/detail-layout/video.tsx +53 -0
- package/registry/examples/docs-article-page/cli.d.ts +4 -0
- package/registry/examples/docs-article-page/cli.js +33 -0
- package/registry/examples/docs-article-page/cli.tsx +38 -0
- package/registry/examples/docs-hub-page/krizaka.d.ts +4 -0
- package/registry/examples/docs-hub-page/krizaka.js +46 -0
- package/registry/examples/docs-hub-page/krizaka.tsx +37 -0
- package/registry/examples/docs-layout/page.d.ts +4 -0
- package/registry/examples/docs-layout/page.js +26 -0
- package/registry/examples/docs-layout/page.tsx +30 -0
- package/registry/examples/error-page/not-found.d.ts +4 -0
- package/registry/examples/error-page/not-found.js +24 -0
- package/registry/examples/error-page/not-found.tsx +19 -0
- package/registry/examples/gallery-page/made-here.d.ts +4 -0
- package/registry/examples/gallery-page/made-here.js +34 -0
- package/registry/examples/gallery-page/made-here.tsx +32 -0
- package/registry/examples/goal-gauge/arcade.d.ts +4 -0
- package/registry/examples/goal-gauge/arcade.js +11 -0
- package/registry/examples/goal-gauge/arcade.tsx +10 -0
- package/registry/examples/goal-gauge/challenge.d.ts +4 -0
- package/registry/examples/goal-gauge/challenge.js +11 -0
- package/registry/examples/goal-gauge/challenge.tsx +10 -0
- package/registry/examples/goal-gauge/drain.d.ts +4 -0
- package/registry/examples/goal-gauge/drain.js +11 -0
- package/registry/examples/goal-gauge/drain.tsx +10 -0
- package/registry/examples/goal-gauge/native/default.d.ts +4 -0
- package/registry/examples/goal-gauge/native/default.dark.png +0 -0
- package/registry/examples/goal-gauge/native/default.js +15 -0
- package/registry/examples/goal-gauge/native/default.light.png +0 -0
- package/registry/examples/goal-gauge/native/default.tsx +12 -0
- package/registry/examples/how-it-works-page/orazaka.d.ts +4 -0
- package/registry/examples/how-it-works-page/orazaka.js +30 -0
- package/registry/examples/how-it-works-page/orazaka.tsx +26 -0
- package/registry/examples/landing-page/krizaka.d.ts +4 -0
- package/registry/examples/landing-page/krizaka.js +44 -0
- package/registry/examples/landing-page/krizaka.tsx +44 -0
- package/registry/examples/landscape/backdrop.d.ts +4 -0
- package/registry/examples/landscape/backdrop.js +14 -0
- package/registry/examples/landscape/backdrop.tsx +11 -0
- package/registry/examples/landscape/brand.d.ts +4 -0
- package/registry/examples/landscape/brand.js +11 -0
- package/registry/examples/landscape/brand.tsx +10 -0
- package/registry/examples/legal-page/privacy.d.ts +4 -0
- package/registry/examples/legal-page/privacy.js +24 -0
- package/registry/examples/legal-page/privacy.tsx +19 -0
- package/registry/examples/longform-page/story.d.ts +4 -0
- package/registry/examples/longform-page/story.js +38 -0
- package/registry/examples/longform-page/story.tsx +35 -0
- package/registry/examples/marketing-layout/basic.d.ts +4 -0
- package/registry/examples/marketing-layout/basic.js +31 -0
- package/registry/examples/marketing-layout/basic.tsx +28 -0
- package/registry/examples/marketing-layout/docs-hub.d.ts +4 -0
- package/registry/examples/marketing-layout/docs-hub.js +37 -0
- package/registry/examples/marketing-layout/docs-hub.tsx +44 -0
- package/registry/examples/marketing-layout/pricing.d.ts +4 -0
- package/registry/examples/marketing-layout/pricing.js +45 -0
- package/registry/examples/marketing-layout/pricing.tsx +55 -0
- package/registry/examples/marketing-layout/product-page.d.ts +4 -0
- package/registry/examples/marketing-layout/product-page.js +79 -0
- package/registry/examples/marketing-layout/product-page.tsx +83 -0
- package/registry/examples/mascots/crane.d.ts +4 -0
- package/registry/examples/mascots/crane.js +19 -0
- package/registry/examples/mascots/crane.tsx +18 -0
- package/registry/examples/mascots/flock.tsx +2 -1
- package/registry/examples/mascots/native/crane.d.ts +4 -0
- package/registry/examples/mascots/native/crane.dark.png +0 -0
- package/registry/examples/mascots/native/crane.js +21 -0
- package/registry/examples/mascots/native/crane.light.png +0 -0
- package/registry/examples/mascots/native/crane.tsx +18 -0
- package/registry/examples/mascots/native/phoenix.d.ts +4 -0
- package/registry/examples/mascots/native/phoenix.dark.png +0 -0
- package/registry/examples/mascots/native/phoenix.js +21 -0
- package/registry/examples/mascots/native/phoenix.light.png +0 -0
- package/registry/examples/mascots/native/phoenix.tsx +18 -0
- package/registry/examples/mascots/phoenix.d.ts +4 -0
- package/registry/examples/mascots/phoenix.js +14 -0
- package/registry/examples/mascots/phoenix.tsx +11 -0
- package/registry/examples/pricing-page/credits.d.ts +4 -0
- package/registry/examples/pricing-page/credits.js +41 -0
- package/registry/examples/pricing-page/credits.tsx +33 -0
- package/registry/examples/product-page/orazaka.d.ts +4 -0
- package/registry/examples/product-page/orazaka.js +44 -0
- package/registry/examples/product-page/orazaka.tsx +36 -0
- package/registry/examples/profile-card/arcade.d.ts +4 -0
- package/registry/examples/profile-card/arcade.js +25 -0
- package/registry/examples/profile-card/arcade.tsx +19 -0
- package/registry/examples/profile-card/creator.d.ts +4 -0
- package/registry/examples/profile-card/creator.js +31 -0
- package/registry/examples/profile-card/creator.tsx +26 -0
- package/registry/examples/profile-card/match.d.ts +4 -0
- package/registry/examples/profile-card/match.js +25 -0
- package/registry/examples/profile-card/match.tsx +19 -0
- package/registry/examples/profile-card/native/default.d.ts +4 -0
- package/registry/examples/profile-card/native/default.dark.png +0 -0
- package/registry/examples/profile-card/native/default.js +27 -0
- package/registry/examples/profile-card/native/default.light.png +0 -0
- package/registry/examples/profile-card/native/default.tsx +22 -0
- package/registry/examples/promise-card/arcade.d.ts +4 -0
- package/registry/examples/promise-card/arcade.js +25 -0
- package/registry/examples/promise-card/arcade.tsx +19 -0
- package/registry/examples/promise-card/guarantee.d.ts +4 -0
- package/registry/examples/promise-card/guarantee.js +23 -0
- package/registry/examples/promise-card/guarantee.tsx +17 -0
- package/registry/examples/scroll-stage/arcade.d.ts +4 -0
- package/registry/examples/scroll-stage/arcade.js +16 -0
- package/registry/examples/scroll-stage/arcade.tsx +15 -0
- package/registry/examples/scroll-stage/chapters.d.ts +4 -0
- package/registry/examples/scroll-stage/chapters.js +25 -0
- package/registry/examples/scroll-stage/chapters.tsx +22 -0
- package/registry/examples/settings-layout/account.d.ts +4 -0
- package/registry/examples/settings-layout/account.js +51 -0
- package/registry/examples/settings-layout/account.tsx +50 -0
- package/registry/examples/settings-layout/sections.d.ts +4 -0
- package/registry/examples/settings-layout/sections.js +27 -0
- package/registry/examples/settings-layout/sections.tsx +24 -0
- package/registry/examples/split-view/empty.d.ts +4 -0
- package/registry/examples/split-view/empty.js +19 -0
- package/registry/examples/split-view/empty.tsx +13 -0
- package/registry/examples/split-view/messages.d.ts +4 -0
- package/registry/examples/split-view/messages.js +49 -0
- package/registry/examples/split-view/messages.tsx +52 -0
- package/registry/examples/stage-banner/round.d.ts +4 -0
- package/registry/examples/stage-banner/round.js +14 -0
- package/registry/examples/stage-banner/round.tsx +11 -0
- package/registry/examples/stage-banner/steps.d.ts +4 -0
- package/registry/examples/stage-banner/steps.js +14 -0
- package/registry/examples/stage-banner/steps.tsx +11 -0
- package/registry/examples/status-page/building.d.ts +4 -0
- package/registry/examples/status-page/building.js +29 -0
- package/registry/examples/status-page/building.tsx +25 -0
- package/registry/examples/status-page/operational.d.ts +4 -0
- package/registry/examples/status-page/operational.js +26 -0
- package/registry/examples/status-page/operational.tsx +20 -0
- package/registry/field.json +1 -1
- package/registry/file-upload.json +1 -1
- package/registry/filter-bar.json +1 -1
- package/registry/gallery-page.json +256 -0
- package/registry/glow-card.json +1 -1
- package/registry/goal-gauge.json +322 -0
- package/registry/how-it-works-page.json +242 -0
- package/registry/image-cropper.json +1 -1
- package/registry/index.json +621 -5
- package/registry/iso.json +1 -1
- package/registry/kbd.json +1 -1
- package/registry/landing-page.json +242 -0
- package/registry/landscape.json +189 -0
- package/registry/legal-page.json +199 -0
- package/registry/link-card.json +1 -1
- package/registry/loader.json +1 -1
- package/registry/longform-page.json +213 -0
- package/registry/marketing-layout.json +172 -0
- package/registry/marquee.json +1 -1
- package/registry/mascot-quote.json +6 -6
- package/registry/mascot-state.json +34 -34
- package/registry/mascots.json +140 -23
- package/registry/media-capture.json +1 -1
- package/registry/meter.json +1 -1
- package/registry/nav-bar.json +1 -1
- package/registry/number-ticker.json +1 -1
- package/registry/page-header.json +1 -1
- package/registry/page-hero.json +3 -3
- package/registry/page.json +5 -5
- package/registry/pagination.json +1 -1
- package/registry/pointer-light.json +1 -1
- package/registry/popover.json +1 -1
- package/registry/pricing-page.json +245 -0
- package/registry/product-page.json +319 -0
- package/registry/profile-card.json +501 -0
- package/registry/progress.json +1 -1
- package/registry/promise-card.json +228 -0
- package/registry/radio-group.json +1 -1
- package/registry/scroll-stage.json +197 -0
- package/registry/search-field.json +1 -1
- package/registry/section-backdrop.json +1 -1
- package/registry/separator.json +1 -1
- package/registry/settings-layout.json +231 -0
- package/registry/skeleton.json +1 -1
- package/registry/slider.json +1 -1
- package/registry/slot.json +1 -1
- package/registry/spinner.json +1 -1
- package/registry/split-view.json +233 -0
- package/registry/stage-banner.json +221 -0
- package/registry/stat.json +1 -1
- package/registry/status-page.json +263 -0
- package/registry/stepper.json +1 -1
- package/registry/switch.json +1 -1
- package/registry/tabs.json +1 -1
- package/registry/tag-input.json +1 -1
- package/registry/terminal-replay.json +1 -1
- package/registry/theme.json +1 -1
- package/registry/toast.json +1 -1
- package/registry/toc.json +1 -1
- package/registry/tooltip.json +1 -1
- package/registry/video-player.json +1 -1
- package/registry/video-trimmer.json +1 -1
- package/dist/chunk-NOVUREEC.js.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/marketing-layout/product-page.tsx
|
|
4
|
+
import { ProductLogo } from "@krizaka/ui";
|
|
5
|
+
import { ActionBar } from "@krizaka/ui/action-bar";
|
|
6
|
+
import { ArgumentCard } from "@krizaka/ui/argument-card";
|
|
7
|
+
import { Button } from "@krizaka/ui/button";
|
|
8
|
+
import { CardGrid } from "@krizaka/ui/card-grid";
|
|
9
|
+
import { CtaPanel } from "@krizaka/ui/cta-panel";
|
|
10
|
+
import { DecisionList } from "@krizaka/ui/decision-list";
|
|
11
|
+
import { MarketingLayout } from "@krizaka/ui/marketing-layout";
|
|
12
|
+
import { MascotQuote } from "@krizaka/ui/mascot-quote";
|
|
13
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
14
|
+
import { NavBar } from "@krizaka/ui/nav-bar";
|
|
15
|
+
import { Facts, Section } from "@krizaka/ui/page";
|
|
16
|
+
import { PageHero } from "@krizaka/ui/page-hero";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
var WHY = [
|
|
19
|
+
{ id: "local", title: "Local inference", hook: "Elsewhere, every prompt crosses the ocean.", bird: "falcon" },
|
|
20
|
+
{ id: "paid", title: "Paid once", hook: "Elsewhere, you pay per token, forever.", bird: "flamingo" },
|
|
21
|
+
{ id: "asked", title: "Agents that ask", hook: "Elsewhere, an agent acts first and apologises later.", bird: "pigeon" }
|
|
22
|
+
];
|
|
23
|
+
var DECISIONS = [
|
|
24
|
+
{ id: "local", chose: "Local models by default.", refused: "A hosted API as the default path.", because: "A prompt that never leaves cannot leak.", cost: "You need a GPU, or patience on a CPU." },
|
|
25
|
+
{ id: "telemetry", chose: "Zero telemetry.", refused: "Anonymous usage statistics.", because: "Anonymous rarely stays anonymous.", cost: "You tell us what breaks." }
|
|
26
|
+
];
|
|
27
|
+
var labels = { chose: "We chose", refused: "We refused", because: "Because", cost: "What it costs you" };
|
|
28
|
+
function MarketingLayoutProductPage() {
|
|
29
|
+
return /* @__PURE__ */ jsx("div", { className: "brand-orazaka", children: /* @__PURE__ */ jsxs(
|
|
30
|
+
MarketingLayout,
|
|
31
|
+
{
|
|
32
|
+
skipLabel: "Skip to content",
|
|
33
|
+
header: /* @__PURE__ */ jsxs(NavBar.Root, { label: "Main", compactAfter: false, className: "max-w-(--kz-page-max,72rem)", children: [
|
|
34
|
+
/* @__PURE__ */ jsxs(NavBar.Brand, { href: "#home", children: [
|
|
35
|
+
/* @__PURE__ */ jsx(ProductLogo, { id: "orazaka", size: 22, animated: false }),
|
|
36
|
+
" Orazaka"
|
|
37
|
+
] }),
|
|
38
|
+
/* @__PURE__ */ jsxs(NavBar.Items, { children: [
|
|
39
|
+
/* @__PURE__ */ jsx(NavBar.Link, { href: "#why", active: true, children: "Why" }),
|
|
40
|
+
/* @__PURE__ */ jsx(NavBar.Link, { href: "#decisions", children: "Decisions" })
|
|
41
|
+
] })
|
|
42
|
+
] }),
|
|
43
|
+
children: [
|
|
44
|
+
/* @__PURE__ */ jsxs(
|
|
45
|
+
PageHero,
|
|
46
|
+
{
|
|
47
|
+
eyebrow: "Sovereign AI \xB7 open source",
|
|
48
|
+
title: "The AI that never leaves home",
|
|
49
|
+
lead: "Chat, image, voice and video on your own server \u2014 one governed pipeline, nothing sent anywhere.",
|
|
50
|
+
aside: /* @__PURE__ */ jsx(Mascot, { bird: "owl", mood: "welcome", size: 112 }),
|
|
51
|
+
children: [
|
|
52
|
+
/* @__PURE__ */ jsx(Facts, { items: [{ label: "Apache-2.0", tone: "ok" }, { label: "Law 25 \xB7 GDPR" }] }),
|
|
53
|
+
/* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", shape: "cut", shimmer: true, children: "Install in three commands" })
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
),
|
|
57
|
+
/* @__PURE__ */ jsx(Section, { id: "why", eyebrow: "Why", title: "Three traps it removes", children: /* @__PURE__ */ jsx(CardGrid, { min: 260, fit: "fit", reveal: false, children: WHY.map((w) => /* @__PURE__ */ jsx(
|
|
58
|
+
ArgumentCard,
|
|
59
|
+
{
|
|
60
|
+
id: `why-${w.id}`,
|
|
61
|
+
title: w.title,
|
|
62
|
+
mark: /* @__PURE__ */ jsx(Mascot, { bird: w.bird, size: 40, animated: false }),
|
|
63
|
+
hook: { label: "The trap", text: w.hook },
|
|
64
|
+
more: { href: `#${w.id}`, label: "Details" }
|
|
65
|
+
},
|
|
66
|
+
w.id
|
|
67
|
+
)) }) }),
|
|
68
|
+
/* @__PURE__ */ jsxs(Section, { id: "decisions", eyebrow: "Decisions", title: "What we chose, and what it costs you", divider: true, children: [
|
|
69
|
+
/* @__PURE__ */ jsx(DecisionList, { decisions: DECISIONS, labels, reveal: false }),
|
|
70
|
+
/* @__PURE__ */ jsx("div", { className: "mt-8", children: /* @__PURE__ */ jsx(MascotQuote, { variant: "callout", bird: "owl", label: "The owl's promise", children: "Every personal record stays in Qu\xE9bec, and you can read who touched it." }) })
|
|
71
|
+
] }),
|
|
72
|
+
/* @__PURE__ */ jsx(Section, { spacing: "sm", "aria-labelledby": "product-cta", children: /* @__PURE__ */ jsx(CtaPanel, { id: "product-cta", title: "Ready to run it at home?", body: "Three commands, then your first private answer.", children: /* @__PURE__ */ jsx(ActionBar, { primaryFirst: true, size: "lg", label: "Get started", actions: [{ href: "#install", label: "Install" }, { href: "#contact", label: "Talk to us" }] }) }) })
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
) });
|
|
76
|
+
}
|
|
77
|
+
export {
|
|
78
|
+
MarketingLayoutProductPage as default
|
|
79
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ProductLogo } from "@krizaka/ui";
|
|
2
|
+
import { ActionBar } from "@krizaka/ui/action-bar";
|
|
3
|
+
import { ArgumentCard } from "@krizaka/ui/argument-card";
|
|
4
|
+
import { Button } from "@krizaka/ui/button";
|
|
5
|
+
import { CardGrid } from "@krizaka/ui/card-grid";
|
|
6
|
+
import { CtaPanel } from "@krizaka/ui/cta-panel";
|
|
7
|
+
import { DecisionList } from "@krizaka/ui/decision-list";
|
|
8
|
+
import { MarketingLayout } from "@krizaka/ui/marketing-layout";
|
|
9
|
+
import { MascotQuote } from "@krizaka/ui/mascot-quote";
|
|
10
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
11
|
+
import { NavBar } from "@krizaka/ui/nav-bar";
|
|
12
|
+
import { Facts, Section } from "@krizaka/ui/page";
|
|
13
|
+
import { PageHero } from "@krizaka/ui/page-hero";
|
|
14
|
+
|
|
15
|
+
const WHY = [
|
|
16
|
+
{ id: "local", title: "Local inference", hook: "Elsewhere, every prompt crosses the ocean.", bird: "falcon" as const },
|
|
17
|
+
{ id: "paid", title: "Paid once", hook: "Elsewhere, you pay per token, forever.", bird: "flamingo" as const },
|
|
18
|
+
{ id: "asked", title: "Agents that ask", hook: "Elsewhere, an agent acts first and apologises later.", bird: "pigeon" as const },
|
|
19
|
+
];
|
|
20
|
+
const DECISIONS = [
|
|
21
|
+
{ id: "local", chose: "Local models by default.", refused: "A hosted API as the default path.", because: "A prompt that never leaves cannot leak.", cost: "You need a GPU, or patience on a CPU." },
|
|
22
|
+
{ id: "telemetry", chose: "Zero telemetry.", refused: "Anonymous usage statistics.", because: "Anonymous rarely stays anonymous.", cost: "You tell us what breaks." },
|
|
23
|
+
];
|
|
24
|
+
const labels = { chose: "We chose", refused: "We refused", because: "Because", cost: "What it costs you" };
|
|
25
|
+
|
|
26
|
+
// TEMPLATE — a product page (Orazaka): the hero with its facts and its main action (cut, shimmer), the reasons as compact
|
|
27
|
+
// argument cards (the bird in the corner), the decisions with their cost, the owl's promise, the closing call. On a
|
|
28
|
+
// phone the hero's bird goes above the title, the cards stack, the decisions' three parts stack under the choice.
|
|
29
|
+
export default function MarketingLayoutProductPage() {
|
|
30
|
+
return (
|
|
31
|
+
<div className="brand-orazaka">
|
|
32
|
+
<MarketingLayout
|
|
33
|
+
skipLabel="Skip to content"
|
|
34
|
+
header={
|
|
35
|
+
<NavBar.Root label="Main" compactAfter={false} className="max-w-(--kz-page-max,72rem)">
|
|
36
|
+
<NavBar.Brand href="#home"><ProductLogo id="orazaka" size={22} animated={false} /> Orazaka</NavBar.Brand>
|
|
37
|
+
<NavBar.Items>
|
|
38
|
+
<NavBar.Link href="#why" active>Why</NavBar.Link>
|
|
39
|
+
<NavBar.Link href="#decisions">Decisions</NavBar.Link>
|
|
40
|
+
</NavBar.Items>
|
|
41
|
+
</NavBar.Root>
|
|
42
|
+
}
|
|
43
|
+
>
|
|
44
|
+
<PageHero
|
|
45
|
+
eyebrow="Sovereign AI · open source"
|
|
46
|
+
title="The AI that never leaves home"
|
|
47
|
+
lead="Chat, image, voice and video on your own server — one governed pipeline, nothing sent anywhere."
|
|
48
|
+
aside={<Mascot bird="owl" mood="welcome" size={112} />}
|
|
49
|
+
>
|
|
50
|
+
<Facts items={[{ label: "Apache-2.0", tone: "ok" }, { label: "Law 25 · GDPR" }]} />
|
|
51
|
+
<Button variant="primary" size="lg" shape="cut" shimmer>Install in three commands</Button>
|
|
52
|
+
</PageHero>
|
|
53
|
+
<Section id="why" eyebrow="Why" title="Three traps it removes">
|
|
54
|
+
<CardGrid min={260} fit="fit" reveal={false}>
|
|
55
|
+
{WHY.map((w) => (
|
|
56
|
+
<ArgumentCard
|
|
57
|
+
key={w.id}
|
|
58
|
+
id={`why-${w.id}`}
|
|
59
|
+
title={w.title}
|
|
60
|
+
mark={<Mascot bird={w.bird} size={40} animated={false} />}
|
|
61
|
+
hook={{ label: "The trap", text: w.hook }}
|
|
62
|
+
more={{ href: `#${w.id}`, label: "Details" }}
|
|
63
|
+
/>
|
|
64
|
+
))}
|
|
65
|
+
</CardGrid>
|
|
66
|
+
</Section>
|
|
67
|
+
<Section id="decisions" eyebrow="Decisions" title="What we chose, and what it costs you" divider>
|
|
68
|
+
<DecisionList decisions={DECISIONS} labels={labels} reveal={false} />
|
|
69
|
+
<div className="mt-8">
|
|
70
|
+
<MascotQuote variant="callout" bird="owl" label="The owl's promise">
|
|
71
|
+
Every personal record stays in Québec, and you can read who touched it.
|
|
72
|
+
</MascotQuote>
|
|
73
|
+
</div>
|
|
74
|
+
</Section>
|
|
75
|
+
<Section spacing="sm" aria-labelledby="product-cta">
|
|
76
|
+
<CtaPanel id="product-cta" title="Ready to run it at home?" body="Three commands, then your first private answer.">
|
|
77
|
+
<ActionBar primaryFirst size="lg" label="Get started" actions={[{ href: "#install", label: "Install" }, { href: "#contact", label: "Talk to us" }]} />
|
|
78
|
+
</CtaPanel>
|
|
79
|
+
</Section>
|
|
80
|
+
</MarketingLayout>
|
|
81
|
+
</div>
|
|
82
|
+
);
|
|
83
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/mascots/crane.tsx
|
|
4
|
+
import { Button } from "@krizaka/ui/button";
|
|
5
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
function MascotCrane() {
|
|
8
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex w-96 items-center gap-4 rounded-xl border border-border-default bg-surface-1 p-4", children: [
|
|
9
|
+
/* @__PURE__ */ jsx(Mascot, { bird: "crane", mood: "welcome", size: 88 }),
|
|
10
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
|
|
11
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-fg", children: "Take your time" }),
|
|
12
|
+
/* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-fg-secondary", children: "Say it in your own words. One question at a time." }),
|
|
13
|
+
/* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", className: "mt-3", children: "Begin" })
|
|
14
|
+
] })
|
|
15
|
+
] });
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
MascotCrane as default
|
|
19
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Button } from "@krizaka/ui/button";
|
|
2
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
3
|
+
|
|
4
|
+
// The crane listens: posed and unhurried — a calm opening, the words and one action beside it.
|
|
5
|
+
export default function MascotCrane() {
|
|
6
|
+
return (
|
|
7
|
+
<div className="flex w-96 items-center gap-4 rounded-xl border border-border-default bg-surface-1 p-4">
|
|
8
|
+
<Mascot bird="crane" mood="welcome" size={88} />
|
|
9
|
+
<div className="flex-1">
|
|
10
|
+
<p className="text-sm font-medium text-fg">Take your time</p>
|
|
11
|
+
<p className="mt-1 text-sm text-fg-secondary">Say it in your own words. One question at a time.</p>
|
|
12
|
+
<Button variant="primary" size="sm" className="mt-3">
|
|
13
|
+
Begin
|
|
14
|
+
</Button>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Mascot,MASCOT_BIRDS } from "@krizaka/ui/mascots";
|
|
2
2
|
|
|
3
|
-
// The
|
|
3
|
+
// The seven birds in the host's brand colours: blue on Krizaka, orange in Orazaka, violet in Orochia, turquoise in
|
|
4
|
+
// Yazakia, sage in Yororis.
|
|
4
5
|
export default function MascotFlock() {
|
|
5
6
|
return (
|
|
6
7
|
<div className="flex flex-wrap items-end gap-6">
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/mascots/native/crane.tsx
|
|
4
|
+
import { Mascot, Txt } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
function NativeMascotCrane() {
|
|
8
|
+
return /* @__PURE__ */ jsxs(View, { style: { flexDirection: "row", gap: 16, alignItems: "flex-end" }, children: [
|
|
9
|
+
/* @__PURE__ */ jsxs(View, { style: { alignItems: "center", gap: 4 }, children: [
|
|
10
|
+
/* @__PURE__ */ jsx(Mascot, { bird: "crane", mood: "welcome", size: 80 }),
|
|
11
|
+
/* @__PURE__ */ jsx(Txt, { variant: "caption", children: "welcome" })
|
|
12
|
+
] }),
|
|
13
|
+
/* @__PURE__ */ jsxs(View, { style: { alignItems: "center", gap: 4 }, children: [
|
|
14
|
+
/* @__PURE__ */ jsx(Mascot, { bird: "crane", mood: "thinking", size: 80 }),
|
|
15
|
+
/* @__PURE__ */ jsx(Txt, { variant: "caption", children: "listening" })
|
|
16
|
+
] })
|
|
17
|
+
] });
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
NativeMascotCrane as default
|
|
21
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Mascot, Txt } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// The crane listens: welcoming, then listening — posed, unhurried.
|
|
5
|
+
export default function NativeMascotCrane() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ flexDirection: "row", gap: 16, alignItems: "flex-end" }}>
|
|
8
|
+
<View style={{ alignItems: "center", gap: 4 }}>
|
|
9
|
+
<Mascot bird="crane" mood="welcome" size={80} />
|
|
10
|
+
<Txt variant="caption">welcome</Txt>
|
|
11
|
+
</View>
|
|
12
|
+
<View style={{ alignItems: "center", gap: 4 }}>
|
|
13
|
+
<Mascot bird="crane" mood="thinking" size={80} />
|
|
14
|
+
<Txt variant="caption">listening</Txt>
|
|
15
|
+
</View>
|
|
16
|
+
</View>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/mascots/native/phoenix.tsx
|
|
4
|
+
import { Phoenix, Txt } from "@krizaka/ui/native";
|
|
5
|
+
import { View } from "react-native";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
function NativeMascotPhoenix() {
|
|
8
|
+
return /* @__PURE__ */ jsxs(View, { style: { flexDirection: "row", gap: 20, alignItems: "flex-end" }, children: [
|
|
9
|
+
/* @__PURE__ */ jsxs(View, { style: { alignItems: "center", gap: 4 }, children: [
|
|
10
|
+
/* @__PURE__ */ jsx(Phoenix, { size: 88, animated: false }),
|
|
11
|
+
/* @__PURE__ */ jsx(Txt, { variant: "caption", children: "own" })
|
|
12
|
+
] }),
|
|
13
|
+
/* @__PURE__ */ jsxs(View, { style: { alignItems: "center", gap: 4 }, children: [
|
|
14
|
+
/* @__PURE__ */ jsx(Phoenix, { size: 88, tone: "brand", animated: false }),
|
|
15
|
+
/* @__PURE__ */ jsx(Txt, { variant: "caption", children: "brand" })
|
|
16
|
+
] })
|
|
17
|
+
] });
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
NativeMascotPhoenix as default
|
|
21
|
+
};
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Phoenix, Txt } from "@krizaka/ui/native";
|
|
2
|
+
import { View } from "react-native";
|
|
3
|
+
|
|
4
|
+
// The comeback: the phoenix in its own colours, then in the app's accent.
|
|
5
|
+
export default function NativeMascotPhoenix() {
|
|
6
|
+
return (
|
|
7
|
+
<View style={{ flexDirection: "row", gap: 20, alignItems: "flex-end" }}>
|
|
8
|
+
<View style={{ alignItems: "center", gap: 4 }}>
|
|
9
|
+
<Phoenix size={88} animated={false} />
|
|
10
|
+
<Txt variant="caption">own</Txt>
|
|
11
|
+
</View>
|
|
12
|
+
<View style={{ alignItems: "center", gap: 4 }}>
|
|
13
|
+
<Phoenix size={88} tone="brand" animated={false} />
|
|
14
|
+
<Txt variant="caption">brand</Txt>
|
|
15
|
+
</View>
|
|
16
|
+
</View>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/mascots/phoenix.tsx
|
|
4
|
+
import { Phoenix } from "@krizaka/ui/mascots";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
function MascotPhoenix() {
|
|
7
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-end gap-8", children: [
|
|
8
|
+
/* @__PURE__ */ jsx(Phoenix, { size: 112, title: "The phoenix" }),
|
|
9
|
+
/* @__PURE__ */ jsx(Phoenix, { size: 112, tone: "brand", title: "The phoenix in the brand's colours" })
|
|
10
|
+
] });
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
MascotPhoenix as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Phoenix } from "@krizaka/ui/mascots";
|
|
2
|
+
|
|
3
|
+
// The phoenix stands for a comeback — a relaunch, a recovered account: its own colours, then the product's accent.
|
|
4
|
+
export default function MascotPhoenix() {
|
|
5
|
+
return (
|
|
6
|
+
<div className="flex flex-wrap items-end gap-8">
|
|
7
|
+
<Phoenix size={112} title="The phoenix" />
|
|
8
|
+
<Phoenix size={112} tone="brand" title="The phoenix in the brand's colours" />
|
|
9
|
+
</div>
|
|
10
|
+
);
|
|
11
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/pricing-page/credits.tsx
|
|
4
|
+
import { Button } from "@krizaka/ui/button";
|
|
5
|
+
import { Meter } from "@krizaka/ui/meter";
|
|
6
|
+
import { PricingPage } from "@krizaka/ui/pricing-page";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function PricingPageCredits() {
|
|
9
|
+
return /* @__PURE__ */ jsx(
|
|
10
|
+
PricingPage,
|
|
11
|
+
{
|
|
12
|
+
brand: "orazaka",
|
|
13
|
+
eyebrow: "Pricing",
|
|
14
|
+
title: "Pay once for what was done",
|
|
15
|
+
lead: "Credits buy answers, images and minutes of video \u2014 never a seat you do not use.",
|
|
16
|
+
plansLabel: "Plans",
|
|
17
|
+
plans: [
|
|
18
|
+
{ id: "community", name: "Community", price: "Free", unit: "self-hosted", features: ["Every feature", "Your hardware"], action: /* @__PURE__ */ jsx(Button, { variant: "secondary", shape: "cut", className: "w-full", children: "Install" }) },
|
|
19
|
+
{ id: "workspace", name: "Workspace", price: "CA$29", unit: "per month \xB7 12,000 credits", features: ["Packs & Studios", "Shared workspaces"], featured: true, badge: "Most chosen", action: /* @__PURE__ */ jsx(Button, { variant: "primary", shape: "cut", shimmer: true, className: "w-full", children: "Choose Workspace" }) },
|
|
20
|
+
{ id: "sovereign", name: "Sovereign", price: "Custom", unit: "on your servers", features: ["Installed with you", "A named engineer"], action: /* @__PURE__ */ jsx(Button, { variant: "secondary", shape: "cut", className: "w-full", children: "Talk to us" }) }
|
|
21
|
+
],
|
|
22
|
+
compare: {
|
|
23
|
+
caption: "Compare the plans",
|
|
24
|
+
columns: ["Community", "Workspace", "Sovereign"],
|
|
25
|
+
rows: [
|
|
26
|
+
{ feature: "Local models", cells: ["\u2713", "\u2713", "\u2713"] },
|
|
27
|
+
{ feature: "Shared workspaces", cells: ["\u2014", "\u2713", "\u2713"] },
|
|
28
|
+
{ feature: "Support", cells: ["Community", "Email", "Named engineer"] }
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
credits: { title: "What a credit buys", children: /* @__PURE__ */ jsxs("div", { className: "max-w-md", children: [
|
|
32
|
+
/* @__PURE__ */ jsx(Meter, { label: "Credits this month", value: 3800, max: 12e3, valueText: "3,800 of 12,000 used", showLabel: true }),
|
|
33
|
+
/* @__PURE__ */ jsx("p", { className: "mt-3 text-sm text-fg-secondary", children: "1 credit \u2248 a chat answer \xB7 4 an image \xB7 30 a minute of video." })
|
|
34
|
+
] }) },
|
|
35
|
+
faq: { title: "Questions", items: [{ question: "What happens when credits run out?", answer: "Nothing breaks: requests wait until the next month or a top-up." }, { question: "Do credits expire?", answer: "Unused credits roll over for one month." }] }
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
PricingPageCredits as default
|
|
41
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Button } from "@krizaka/ui/button";
|
|
2
|
+
import { Meter } from "@krizaka/ui/meter";
|
|
3
|
+
import { PricingPage } from "@krizaka/ui/pricing-page";
|
|
4
|
+
|
|
5
|
+
// TEMPLATE — plans and credits (Orazaka): the plans side by side, the featured one lifted; the comparison scrolls on a
|
|
6
|
+
// phone; what a credit buys; the questions people ask, folded.
|
|
7
|
+
export default function PricingPageCredits() {
|
|
8
|
+
return (
|
|
9
|
+
<PricingPage
|
|
10
|
+
brand="orazaka"
|
|
11
|
+
eyebrow="Pricing"
|
|
12
|
+
title="Pay once for what was done"
|
|
13
|
+
lead="Credits buy answers, images and minutes of video — never a seat you do not use."
|
|
14
|
+
plansLabel="Plans"
|
|
15
|
+
plans={[
|
|
16
|
+
{ id: "community", name: "Community", price: "Free", unit: "self-hosted", features: ["Every feature", "Your hardware"], action: <Button variant="secondary" shape="cut" className="w-full">Install</Button> },
|
|
17
|
+
{ id: "workspace", name: "Workspace", price: "CA$29", unit: "per month · 12,000 credits", features: ["Packs & Studios", "Shared workspaces"], featured: true, badge: "Most chosen", action: <Button variant="primary" shape="cut" shimmer className="w-full">Choose Workspace</Button> },
|
|
18
|
+
{ id: "sovereign", name: "Sovereign", price: "Custom", unit: "on your servers", features: ["Installed with you", "A named engineer"], action: <Button variant="secondary" shape="cut" className="w-full">Talk to us</Button> },
|
|
19
|
+
]}
|
|
20
|
+
compare={{
|
|
21
|
+
caption: "Compare the plans",
|
|
22
|
+
columns: ["Community", "Workspace", "Sovereign"],
|
|
23
|
+
rows: [
|
|
24
|
+
{ feature: "Local models", cells: ["✓", "✓", "✓"] },
|
|
25
|
+
{ feature: "Shared workspaces", cells: ["—", "✓", "✓"] },
|
|
26
|
+
{ feature: "Support", cells: ["Community", "Email", "Named engineer"] },
|
|
27
|
+
],
|
|
28
|
+
}}
|
|
29
|
+
credits={{ title: "What a credit buys", children: <div className="max-w-md"><Meter label="Credits this month" value={3800} max={12000} valueText="3,800 of 12,000 used" showLabel /><p className="mt-3 text-sm text-fg-secondary">1 credit ≈ a chat answer · 4 an image · 30 a minute of video.</p></div> }}
|
|
30
|
+
faq={{ title: "Questions", items: [{ question: "What happens when credits run out?", answer: "Nothing breaks: requests wait until the next month or a top-up." }, { question: "Do credits expire?", answer: "Unused credits roll over for one month." }] }}
|
|
31
|
+
/>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/product-page/orazaka.tsx
|
|
4
|
+
import { ProductLogo } from "@krizaka/ui";
|
|
5
|
+
import { Button } from "@krizaka/ui/button";
|
|
6
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
7
|
+
import { ProductPage } from "@krizaka/ui/product-page";
|
|
8
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
function ProductPageOrazaka() {
|
|
10
|
+
return /* @__PURE__ */ jsx(
|
|
11
|
+
ProductPage,
|
|
12
|
+
{
|
|
13
|
+
brand: "orazaka",
|
|
14
|
+
mark: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15
|
+
/* @__PURE__ */ jsx(ProductLogo, { id: "orazaka", size: 18, animated: false }),
|
|
16
|
+
" Orazaka \xB7 sovereign AI"
|
|
17
|
+
] }),
|
|
18
|
+
title: "The AI that never leaves home",
|
|
19
|
+
lead: "Chat, image, voice and video on your own server \u2014 one governed pipeline, nothing sent anywhere.",
|
|
20
|
+
facts: [{ label: "Apache-2.0", tone: "ok" }, { label: "Law 25 \xB7 GDPR" }],
|
|
21
|
+
actions: /* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", shape: "cut", shimmer: true, children: "Install in three commands" }),
|
|
22
|
+
visualLabel: "orazaka.local \u2014 chat",
|
|
23
|
+
visual: /* @__PURE__ */ jsx("p", { className: "p-6 text-sm text-fg-secondary", children: "\u201CSummarise the lease in plain French.\u201D \u2014 answered locally in 1.8 s." }),
|
|
24
|
+
reasonsHeading: { eyebrow: "Why", title: "Three traps it removes" },
|
|
25
|
+
reasonLabels: { trap: "The trap", more: "Details" },
|
|
26
|
+
reasons: [
|
|
27
|
+
{ id: "local", title: "Local inference", trap: "Elsewhere, every prompt crosses the ocean.", mark: /* @__PURE__ */ jsx(Mascot, { bird: "falcon", size: 40, animated: false }), href: "#local" },
|
|
28
|
+
{ id: "paid", title: "Paid once", trap: "Elsewhere, you pay per token, forever.", mark: /* @__PURE__ */ jsx(Mascot, { bird: "flamingo", size: 40, animated: false }), href: "#paid" },
|
|
29
|
+
{ id: "asked", title: "Agents that ask", trap: "Elsewhere, an agent acts first.", mark: /* @__PURE__ */ jsx(Mascot, { bird: "pigeon", size: 40, animated: false }), href: "#asked" }
|
|
30
|
+
],
|
|
31
|
+
decisions: {
|
|
32
|
+
eyebrow: "Decisions",
|
|
33
|
+
title: "What we chose, and what it costs you",
|
|
34
|
+
labels: { chose: "We chose", refused: "We refused", because: "Because", cost: "What it costs you" },
|
|
35
|
+
items: [{ id: "local", chose: "Local models by default.", refused: "A hosted API by default.", because: "A prompt that never leaves cannot leak.", cost: "A GPU, or patience." }]
|
|
36
|
+
},
|
|
37
|
+
promise: { bird: "owl", label: "The owl's promise", text: "Every personal record stays in Qu\xE9bec, and you can read who touched it." },
|
|
38
|
+
closing: { title: "Ready to run it at home?", actions: /* @__PURE__ */ jsx(Button, { variant: "primary", size: "lg", shape: "cut", children: "Install" }) }
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
ProductPageOrazaka as default
|
|
44
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ProductLogo } from "@krizaka/ui";
|
|
2
|
+
import { Button } from "@krizaka/ui/button";
|
|
3
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
4
|
+
import { ProductPage } from "@krizaka/ui/product-page";
|
|
5
|
+
|
|
6
|
+
// TEMPLATE — a product's overview (Orazaka, in its orange): the promise beside the console alive, the traps it removes
|
|
7
|
+
// as compact cards with their bird, its decisions and what they cost, the owl's promise, the closing call.
|
|
8
|
+
export default function ProductPageOrazaka() {
|
|
9
|
+
return (
|
|
10
|
+
<ProductPage
|
|
11
|
+
brand="orazaka"
|
|
12
|
+
mark={<><ProductLogo id="orazaka" size={18} animated={false} /> Orazaka · sovereign AI</>}
|
|
13
|
+
title="The AI that never leaves home"
|
|
14
|
+
lead="Chat, image, voice and video on your own server — one governed pipeline, nothing sent anywhere."
|
|
15
|
+
facts={[{ label: "Apache-2.0", tone: "ok" }, { label: "Law 25 · GDPR" }]}
|
|
16
|
+
actions={<Button variant="primary" size="lg" shape="cut" shimmer>Install in three commands</Button>}
|
|
17
|
+
visualLabel="orazaka.local — chat"
|
|
18
|
+
visual={<p className="p-6 text-sm text-fg-secondary">“Summarise the lease in plain French.” — answered locally in 1.8 s.</p>}
|
|
19
|
+
reasonsHeading={{ eyebrow: "Why", title: "Three traps it removes" }}
|
|
20
|
+
reasonLabels={{ trap: "The trap", more: "Details" }}
|
|
21
|
+
reasons={[
|
|
22
|
+
{ id: "local", title: "Local inference", trap: "Elsewhere, every prompt crosses the ocean.", mark: <Mascot bird="falcon" size={40} animated={false} />, href: "#local" },
|
|
23
|
+
{ id: "paid", title: "Paid once", trap: "Elsewhere, you pay per token, forever.", mark: <Mascot bird="flamingo" size={40} animated={false} />, href: "#paid" },
|
|
24
|
+
{ id: "asked", title: "Agents that ask", trap: "Elsewhere, an agent acts first.", mark: <Mascot bird="pigeon" size={40} animated={false} />, href: "#asked" },
|
|
25
|
+
]}
|
|
26
|
+
decisions={{
|
|
27
|
+
eyebrow: "Decisions",
|
|
28
|
+
title: "What we chose, and what it costs you",
|
|
29
|
+
labels: { chose: "We chose", refused: "We refused", because: "Because", cost: "What it costs you" },
|
|
30
|
+
items: [{ id: "local", chose: "Local models by default.", refused: "A hosted API by default.", because: "A prompt that never leaves cannot leak.", cost: "A GPU, or patience." }],
|
|
31
|
+
}}
|
|
32
|
+
promise={{ bird: "owl", label: "The owl's promise", text: "Every personal record stays in Québec, and you can read who touched it." }}
|
|
33
|
+
closing={{ title: "Ready to run it at home?", actions: <Button variant="primary" size="lg" shape="cut">Install</Button> }}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/profile-card/arcade.tsx
|
|
4
|
+
import { ProductLogo } from "@krizaka/ui";
|
|
5
|
+
import { Emblem } from "@krizaka/ui/achievement";
|
|
6
|
+
import { ProfileCard } from "@krizaka/ui/profile-card";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function ProfileCardArcade() {
|
|
9
|
+
return /* @__PURE__ */ jsx(
|
|
10
|
+
ProfileCard,
|
|
11
|
+
{
|
|
12
|
+
variant: "arcade",
|
|
13
|
+
brand: "orazaka",
|
|
14
|
+
nameAs: "p",
|
|
15
|
+
visual: /* @__PURE__ */ jsx(ProductLogo, { id: "orazaka", size: 120, animated: false }),
|
|
16
|
+
icon: /* @__PURE__ */ jsx(Emblem, { kind: "mirror", size: 16 }),
|
|
17
|
+
name: "Mirror clan",
|
|
18
|
+
statLabel: "Data kept at home",
|
|
19
|
+
caption: "\u014Dr\u0101re + zaka"
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
ProfileCardArcade as default
|
|
25
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ProductLogo } from "@krizaka/ui";
|
|
2
|
+
import { Emblem } from "@krizaka/ui/achievement";
|
|
3
|
+
import { ProfileCard } from "@krizaka/ui/profile-card";
|
|
4
|
+
|
|
5
|
+
// The arcade flavour: the brand's light, a ring and a breathing aura, a skewed gauge — for a told page, not a dashboard.
|
|
6
|
+
export default function ProfileCardArcade() {
|
|
7
|
+
return (
|
|
8
|
+
<ProfileCard
|
|
9
|
+
variant="arcade"
|
|
10
|
+
brand="orazaka"
|
|
11
|
+
nameAs="p"
|
|
12
|
+
visual={<ProductLogo id="orazaka" size={120} animated={false} />}
|
|
13
|
+
icon={<Emblem kind="mirror" size={16} />}
|
|
14
|
+
name="Mirror clan"
|
|
15
|
+
statLabel="Data kept at home"
|
|
16
|
+
caption="ōrāre + zaka"
|
|
17
|
+
/>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/profile-card/creator.tsx
|
|
4
|
+
import { Avatar } from "@krizaka/ui/avatar";
|
|
5
|
+
import { Button } from "@krizaka/ui/button";
|
|
6
|
+
import { ProfileCard } from "@krizaka/ui/profile-card";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function ProfileCardCreator() {
|
|
9
|
+
return /* @__PURE__ */ jsxs(
|
|
10
|
+
ProfileCard,
|
|
11
|
+
{
|
|
12
|
+
visual: /* @__PURE__ */ jsx(Avatar, { fallback: "EM", size: "xl" }),
|
|
13
|
+
visualSize: 96,
|
|
14
|
+
name: "Elena Marchetti",
|
|
15
|
+
statLabel: "Profile complete",
|
|
16
|
+
value: 80,
|
|
17
|
+
stats: [
|
|
18
|
+
{ label: "Challenges met", value: 12, max: 15, valueText: "12 of 15" },
|
|
19
|
+
{ label: "Replies within a day", value: 94 }
|
|
20
|
+
],
|
|
21
|
+
caption: "Dance and street fashion \xB7 Montr\xE9al",
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ jsx(Button, { variant: "primary", size: "sm", children: "Follow" }),
|
|
24
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", children: "Message" })
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
ProfileCardCreator as default
|
|
31
|
+
};
|