@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,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/choice-grid/plans.tsx
|
|
4
|
+
import { Emblem } from "@krizaka/ui/achievement";
|
|
5
|
+
import { ChoiceGrid } from "@krizaka/ui/choice-grid";
|
|
6
|
+
import { useState } from "react";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function ChoiceGridPlans() {
|
|
9
|
+
const [plan, setPlan] = useState("creator");
|
|
10
|
+
return /* @__PURE__ */ jsx(
|
|
11
|
+
ChoiceGrid,
|
|
12
|
+
{
|
|
13
|
+
label: "Choose your plan",
|
|
14
|
+
tag: "Step 1 of 3",
|
|
15
|
+
caption: "You can change it at any time.",
|
|
16
|
+
value: plan,
|
|
17
|
+
onValueChange: setPlan,
|
|
18
|
+
items: [
|
|
19
|
+
{ id: "starter", visual: /* @__PURE__ */ jsx(Emblem, { kind: "sword", size: 34 }), name: "Starter", title: "Publish and get paid" },
|
|
20
|
+
{ id: "creator", visual: /* @__PURE__ */ jsx(Emblem, { kind: "jewel", size: 34 }), name: "Creator", title: "Challenges and auctions" },
|
|
21
|
+
{ id: "studio", visual: /* @__PURE__ */ jsx(Emblem, { kind: "mirror", size: 34 }), name: "Studio", title: "A team, shared earnings" }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
ChoiceGridPlans as default
|
|
28
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Emblem } from "@krizaka/ui/achievement";
|
|
4
|
+
import { ChoiceGrid } from "@krizaka/ui/choice-grid";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
|
|
7
|
+
// Selectable: a radio group — one tab stop, the arrow keys move and choose.
|
|
8
|
+
export default function ChoiceGridPlans() {
|
|
9
|
+
const [plan, setPlan] = useState("creator");
|
|
10
|
+
return (
|
|
11
|
+
<ChoiceGrid
|
|
12
|
+
label="Choose your plan"
|
|
13
|
+
tag="Step 1 of 3"
|
|
14
|
+
caption="You can change it at any time."
|
|
15
|
+
value={plan}
|
|
16
|
+
onValueChange={setPlan}
|
|
17
|
+
items={[
|
|
18
|
+
{ id: "starter", visual: <Emblem kind="sword" size={34} />, name: "Starter", title: "Publish and get paid" },
|
|
19
|
+
{ id: "creator", visual: <Emblem kind="jewel" size={34} />, name: "Creator", title: "Challenges and auctions" },
|
|
20
|
+
{ id: "studio", visual: <Emblem kind="mirror" size={34} />, name: "Studio", title: "A team, shared earnings" },
|
|
21
|
+
]}
|
|
22
|
+
/>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/component-page/button.tsx
|
|
4
|
+
import { Button } from "@krizaka/ui/button";
|
|
5
|
+
import { ComponentPage } from "@krizaka/ui/component-page";
|
|
6
|
+
import { LinkCard } from "@krizaka/ui/link-card";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
function ComponentPageButton() {
|
|
9
|
+
return /* @__PURE__ */ jsx(
|
|
10
|
+
ComponentPage,
|
|
11
|
+
{
|
|
12
|
+
className: "w-full",
|
|
13
|
+
back: /* @__PURE__ */ jsx("a", { href: "#catalogue", children: "\u2190 Components" }),
|
|
14
|
+
eyebrow: "Actions",
|
|
15
|
+
title: "Button",
|
|
16
|
+
summary: "The action: six looks, three sizes, the Krizaka cut, and the whole life of an action built in.",
|
|
17
|
+
facts: [{ label: "Web + Mobile", tone: "ok" }, { label: "Stable" }],
|
|
18
|
+
preview: /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-3 p-8", children: [
|
|
19
|
+
/* @__PURE__ */ jsx(Button, { variant: "primary", shape: "cut", shimmer: true, children: "Publish" }),
|
|
20
|
+
/* @__PURE__ */ jsx(Button, { variant: "secondary", shape: "cut", children: "Save a draft" })
|
|
21
|
+
] }),
|
|
22
|
+
install: { code: 'import { Button } from "@krizaka/ui/button";', language: "ts", copyLabel: "Copy", copiedLabel: "Copied" },
|
|
23
|
+
sections: [
|
|
24
|
+
{ id: "when", title: "When to use", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "For the action a block is about; links that look like actions use `asChild`." }) },
|
|
25
|
+
{ id: "a11y", title: "Accessibility", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "A real button; while loading it says so in a live region." }) }
|
|
26
|
+
],
|
|
27
|
+
aside: /* @__PURE__ */ jsx(LinkCard, { href: "#confirm-button", title: "Confirm button", description: "A destructive action in two presses.", titleAs: "span" })
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
ComponentPageButton as default
|
|
33
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Button } from "@krizaka/ui/button";
|
|
2
|
+
import { ComponentPage } from "@krizaka/ui/component-page";
|
|
3
|
+
import { LinkCard } from "@krizaka/ui/link-card";
|
|
4
|
+
|
|
5
|
+
// TEMPLATE — a component's page (what krizaka.com/docs/ui generates from the registry): name, summary, status and
|
|
6
|
+
// platforms, the live preview, the import line, its sections; related components aside (under it on a phone).
|
|
7
|
+
export default function ComponentPageButton() {
|
|
8
|
+
return (
|
|
9
|
+
<ComponentPage
|
|
10
|
+
className="w-full"
|
|
11
|
+
back={<a href="#catalogue">← Components</a>}
|
|
12
|
+
eyebrow="Actions"
|
|
13
|
+
title="Button"
|
|
14
|
+
summary="The action: six looks, three sizes, the Krizaka cut, and the whole life of an action built in."
|
|
15
|
+
facts={[{ label: "Web + Mobile", tone: "ok" }, { label: "Stable" }]}
|
|
16
|
+
preview={
|
|
17
|
+
<div className="flex flex-wrap items-center justify-center gap-3 p-8">
|
|
18
|
+
<Button variant="primary" shape="cut" shimmer>Publish</Button>
|
|
19
|
+
<Button variant="secondary" shape="cut">Save a draft</Button>
|
|
20
|
+
</div>
|
|
21
|
+
}
|
|
22
|
+
install={{ code: 'import { Button } from "@krizaka/ui/button";', language: "ts", copyLabel: "Copy", copiedLabel: "Copied" }}
|
|
23
|
+
sections={[
|
|
24
|
+
{ id: "when", title: "When to use", children: <p className="text-sm text-fg-secondary">For the action a block is about; links that look like actions use `asChild`.</p> },
|
|
25
|
+
{ id: "a11y", title: "Accessibility", children: <p className="text-sm text-fg-secondary">A real button; while loading it says so in a live region.</p> },
|
|
26
|
+
]}
|
|
27
|
+
aside={<LinkCard href="#confirm-button" title="Confirm button" description="A destructive action in two presses." titleAs="span" />}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/contact-page/team.tsx
|
|
4
|
+
import { Button } from "@krizaka/ui/button";
|
|
5
|
+
import { ContactPage } from "@krizaka/ui/contact-page";
|
|
6
|
+
import { Field, Input, Textarea } from "@krizaka/ui/field";
|
|
7
|
+
import { LinkCard } from "@krizaka/ui/link-card";
|
|
8
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
9
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
function ContactPageTeam() {
|
|
11
|
+
return /* @__PURE__ */ jsx(
|
|
12
|
+
ContactPage,
|
|
13
|
+
{
|
|
14
|
+
eyebrow: "Contact",
|
|
15
|
+
title: "Talk to the people who build it",
|
|
16
|
+
lead: "A person answers within two working days, in English or in French.",
|
|
17
|
+
aside: /* @__PURE__ */ jsx(Mascot, { bird: "flamingo", mood: "welcome", size: 112 }),
|
|
18
|
+
channels: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19
|
+
/* @__PURE__ */ jsx(LinkCard, { href: "https://github.com/orgs/krizaka/discussions", title: "Discussions", description: "Questions and ideas, in public.", titleAs: "span" }),
|
|
20
|
+
/* @__PURE__ */ jsx(LinkCard, { href: "https://github.com/krizaka", title: "Report a problem", description: "An issue on the repository.", titleAs: "span" })
|
|
21
|
+
] }),
|
|
22
|
+
form: /* @__PURE__ */ jsxs("form", { className: "flex flex-col gap-4", children: [
|
|
23
|
+
/* @__PURE__ */ jsxs(Field.Root, { children: [
|
|
24
|
+
/* @__PURE__ */ jsx(Field.Label, { htmlFor: "contact-email", children: "Email" }),
|
|
25
|
+
/* @__PURE__ */ jsx(Input, { id: "contact-email", type: "email", autoComplete: "email" })
|
|
26
|
+
] }),
|
|
27
|
+
/* @__PURE__ */ jsxs(Field.Root, { children: [
|
|
28
|
+
/* @__PURE__ */ jsx(Field.Label, { htmlFor: "contact-message", children: "Message" }),
|
|
29
|
+
/* @__PURE__ */ jsx(Textarea, { id: "contact-message", rows: 4 })
|
|
30
|
+
] }),
|
|
31
|
+
/* @__PURE__ */ jsx(Button, { type: "submit", variant: "primary", size: "lg", shape: "cut", shimmer: true, children: "Send" })
|
|
32
|
+
] }),
|
|
33
|
+
next: { title: "What happens next", steps: [{ title: "We read it", text: "The same day, on working days." }, { title: "We answer", text: "Within two working days." }] }
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
ContactPageTeam as default
|
|
39
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Button } from "@krizaka/ui/button";
|
|
2
|
+
import { ContactPage } from "@krizaka/ui/contact-page";
|
|
3
|
+
import { Field, Input, Textarea } from "@krizaka/ui/field";
|
|
4
|
+
import { LinkCard } from "@krizaka/ui/link-card";
|
|
5
|
+
import { Mascot } from "@krizaka/ui/mascots";
|
|
6
|
+
|
|
7
|
+
// TEMPLATE — reaching the team: the public channels as cards beside the private form, then what happens after sending.
|
|
8
|
+
// On a phone the form comes after the channels, its fields at full width.
|
|
9
|
+
export default function ContactPageTeam() {
|
|
10
|
+
return (
|
|
11
|
+
<ContactPage
|
|
12
|
+
eyebrow="Contact"
|
|
13
|
+
title="Talk to the people who build it"
|
|
14
|
+
lead="A person answers within two working days, in English or in French."
|
|
15
|
+
aside={<Mascot bird="flamingo" mood="welcome" size={112} />}
|
|
16
|
+
channels={
|
|
17
|
+
<>
|
|
18
|
+
<LinkCard href="https://github.com/orgs/krizaka/discussions" title="Discussions" description="Questions and ideas, in public." titleAs="span" />
|
|
19
|
+
<LinkCard href="https://github.com/krizaka" title="Report a problem" description="An issue on the repository." titleAs="span" />
|
|
20
|
+
</>
|
|
21
|
+
}
|
|
22
|
+
form={
|
|
23
|
+
<form className="flex flex-col gap-4">
|
|
24
|
+
<Field.Root>
|
|
25
|
+
<Field.Label htmlFor="contact-email">Email</Field.Label>
|
|
26
|
+
<Input id="contact-email" type="email" autoComplete="email" />
|
|
27
|
+
</Field.Root>
|
|
28
|
+
<Field.Root>
|
|
29
|
+
<Field.Label htmlFor="contact-message">Message</Field.Label>
|
|
30
|
+
<Textarea id="contact-message" rows={4} />
|
|
31
|
+
</Field.Root>
|
|
32
|
+
<Button type="submit" variant="primary" size="lg" shape="cut" shimmer>Send</Button>
|
|
33
|
+
</form>
|
|
34
|
+
}
|
|
35
|
+
next={{ title: "What happens next", steps: [{ title: "We read it", text: "The same day, on working days." }, { title: "We answer", text: "Within two working days." }] }}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/continue-prompt/arcade.tsx
|
|
4
|
+
import { ContinuePrompt } from "@krizaka/ui/continue-prompt";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
function ContinuePromptArcade() {
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
ContinuePrompt,
|
|
9
|
+
{
|
|
10
|
+
variant: "arcade",
|
|
11
|
+
brand: "krizaka",
|
|
12
|
+
className: "w-[36rem] max-w-full",
|
|
13
|
+
caption: "Krizaka \xB7 Cabinet 01",
|
|
14
|
+
highlight: "Insert coin",
|
|
15
|
+
hint: "1 credit = 1 story",
|
|
16
|
+
status: "Credit 01",
|
|
17
|
+
title: "Continue?",
|
|
18
|
+
countdown: { from: 9, to: 7 },
|
|
19
|
+
actionKey: "1P Start",
|
|
20
|
+
actionLabel: "Back to the top",
|
|
21
|
+
onAction: () => window.scrollTo({ top: 0, behavior: "smooth" }),
|
|
22
|
+
children: /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold", children: "Round one is over." })
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
ContinuePromptArcade as default
|
|
28
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { ContinuePrompt } from "@krizaka/ui/continue-prompt";
|
|
4
|
+
|
|
5
|
+
// The cabinet at the end of a told page: the closing call on a CRT that switches on, 9 → 7 once, back to the top.
|
|
6
|
+
export default function ContinuePromptArcade() {
|
|
7
|
+
return (
|
|
8
|
+
<ContinuePrompt
|
|
9
|
+
variant="arcade"
|
|
10
|
+
brand="krizaka"
|
|
11
|
+
className="w-[36rem] max-w-full"
|
|
12
|
+
caption="Krizaka · Cabinet 01"
|
|
13
|
+
highlight="Insert coin"
|
|
14
|
+
hint="1 credit = 1 story"
|
|
15
|
+
status="Credit 01"
|
|
16
|
+
title="Continue?"
|
|
17
|
+
countdown={{ from: 9, to: 7 }}
|
|
18
|
+
actionKey="1P Start"
|
|
19
|
+
actionLabel="Back to the top"
|
|
20
|
+
onAction={() => window.scrollTo({ top: 0, behavior: "smooth" })}
|
|
21
|
+
>
|
|
22
|
+
<p className="text-lg font-semibold">Round one is over.</p>
|
|
23
|
+
</ContinuePrompt>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/continue-prompt/offer.tsx
|
|
4
|
+
import { ContinuePrompt } from "@krizaka/ui/continue-prompt";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
function ContinuePromptOffer() {
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
ContinuePrompt,
|
|
9
|
+
{
|
|
10
|
+
className: "w-[28rem] max-w-full",
|
|
11
|
+
caption: "Your trial",
|
|
12
|
+
highlight: "3 days left",
|
|
13
|
+
status: "All features on",
|
|
14
|
+
title: "Keep your studio?",
|
|
15
|
+
count: "3",
|
|
16
|
+
actionLabel: "Continue with Creator",
|
|
17
|
+
href: "#plans",
|
|
18
|
+
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "Your videos, challenges and earnings stay exactly where they are." })
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
ContinuePromptOffer as default
|
|
24
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ContinuePrompt } from "@krizaka/ui/continue-prompt";
|
|
2
|
+
|
|
3
|
+
// The end of a trial: the question, what counts, a line, and the one action that continues (a link with `href`).
|
|
4
|
+
export default function ContinuePromptOffer() {
|
|
5
|
+
return (
|
|
6
|
+
<ContinuePrompt
|
|
7
|
+
className="w-[28rem] max-w-full"
|
|
8
|
+
caption="Your trial"
|
|
9
|
+
highlight="3 days left"
|
|
10
|
+
status="All features on"
|
|
11
|
+
title="Keep your studio?"
|
|
12
|
+
count="3"
|
|
13
|
+
actionLabel="Continue with Creator"
|
|
14
|
+
href="#plans"
|
|
15
|
+
>
|
|
16
|
+
<p className="text-sm text-fg-secondary">Your videos, challenges and earnings stay exactly where they are.</p>
|
|
17
|
+
</ContinuePrompt>
|
|
18
|
+
);
|
|
19
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/dashboard-layout/orazaka-eric.tsx
|
|
4
|
+
import { Badge } from "@krizaka/ui/badge";
|
|
5
|
+
import { Button } from "@krizaka/ui/button";
|
|
6
|
+
import { Chip } from "@krizaka/ui/chip";
|
|
7
|
+
import { DashboardLayout, Widget } from "@krizaka/ui/dashboard-layout";
|
|
8
|
+
import { Meter } from "@krizaka/ui/meter";
|
|
9
|
+
import { Progress } from "@krizaka/ui/progress";
|
|
10
|
+
import { Stat } from "@krizaka/ui/stat";
|
|
11
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
var JOBS = [
|
|
13
|
+
{ name: "Catalogue summaries", studio: "Writing studio", value: 72, eta: "about 2 min" },
|
|
14
|
+
{ name: "Product shots, autumn", studio: "Image studio", value: 35, eta: "about 6 min" }
|
|
15
|
+
];
|
|
16
|
+
var PACKS = [
|
|
17
|
+
{ name: "Customer support", runs: "412 answers this week" },
|
|
18
|
+
{ name: "Law 25 review", runs: "38 documents checked" }
|
|
19
|
+
];
|
|
20
|
+
function DashboardLayoutOrazakaEric() {
|
|
21
|
+
return /* @__PURE__ */ jsx("div", { className: "brand-orazaka w-full", children: /* @__PURE__ */ jsxs(
|
|
22
|
+
DashboardLayout,
|
|
23
|
+
{
|
|
24
|
+
eyebrow: "Tremblay & associ\xE9s \xB7 on-premise",
|
|
25
|
+
title: "Good morning, Eric",
|
|
26
|
+
description: "Nothing left your server this week: 1,284 requests, all answered locally.",
|
|
27
|
+
actions: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
28
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", shape: "cut", children: "Add a pack" }),
|
|
29
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: "primary", shape: "cut", children: "New job" })
|
|
30
|
+
] }),
|
|
31
|
+
toolbar: /* @__PURE__ */ jsxs(Chip.Group, { type: "single", label: "Period", defaultValue: "7d", required: true, children: [
|
|
32
|
+
/* @__PURE__ */ jsx(Chip, { value: "today", children: "Today" }),
|
|
33
|
+
/* @__PURE__ */ jsx(Chip, { value: "7d", children: "7 days" }),
|
|
34
|
+
/* @__PURE__ */ jsx(Chip, { value: "30d", children: "30 days" })
|
|
35
|
+
] }),
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ jsx(Widget, { title: "Requests", children: /* @__PURE__ */ jsx(Stat, { label: "7 days", value: "1,284", trend: "up", trendLabel: "+6 %" }) }),
|
|
38
|
+
/* @__PURE__ */ jsx(Widget, { title: "Answered locally", children: /* @__PURE__ */ jsx(Stat, { label: "No cloud call", value: "100 %", hint: "sovereign mode" }) }),
|
|
39
|
+
/* @__PURE__ */ jsx(Widget, { title: "Median answer", children: /* @__PURE__ */ jsx(Stat, { label: "Chat", value: "1.8 s", trend: "down", trendLabel: "\u22120.3 s" }) }),
|
|
40
|
+
/* @__PURE__ */ jsx(Widget, { title: "Credits", description: "Workspace plan", children: /* @__PURE__ */ jsx(Meter, { label: "Credits used", value: 3800, max: 12e3, valueText: "3,800 of 12,000", showLabel: true }) }),
|
|
41
|
+
/* @__PURE__ */ jsx(Widget, { title: "Running now", span: 2, action: /* @__PURE__ */ jsx(Badge, { tone: "accent", dot: true, children: "2 jobs" }), children: /* @__PURE__ */ jsx("ul", { className: "flex flex-col gap-4", children: JOBS.map((j) => /* @__PURE__ */ jsxs("li", { className: "flex flex-col gap-1.5", children: [
|
|
42
|
+
/* @__PURE__ */ jsxs("span", { className: "flex items-baseline justify-between gap-2 text-sm", children: [
|
|
43
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-fg", children: j.name }),
|
|
44
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-fg-secondary", children: j.studio })
|
|
45
|
+
] }),
|
|
46
|
+
/* @__PURE__ */ jsx(Progress, { value: j.value, label: j.name, eta: j.eta, size: "sm" })
|
|
47
|
+
] }, j.name)) }) }),
|
|
48
|
+
/* @__PURE__ */ jsx(Widget, { title: "Packs at work", span: 2, action: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "ghost", children: "All packs" }), children: /* @__PURE__ */ jsx("ul", { className: "divide-y divide-border-subtle", children: PACKS.map((p) => /* @__PURE__ */ jsxs("li", { className: "flex items-center justify-between gap-3 py-2.5 text-sm", children: [
|
|
49
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-fg", children: p.name }),
|
|
50
|
+
/* @__PURE__ */ jsx("span", { className: "text-fg-secondary", children: p.runs })
|
|
51
|
+
] }, p.name)) }) })
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
) });
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
DashboardLayoutOrazakaEric as default
|
|
58
|
+
};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Badge } from "@krizaka/ui/badge";
|
|
2
|
+
import { Button } from "@krizaka/ui/button";
|
|
3
|
+
import { Chip } from "@krizaka/ui/chip";
|
|
4
|
+
import { DashboardLayout, Widget } from "@krizaka/ui/dashboard-layout";
|
|
5
|
+
import { Meter } from "@krizaka/ui/meter";
|
|
6
|
+
import { Progress } from "@krizaka/ui/progress";
|
|
7
|
+
import { Stat } from "@krizaka/ui/stat";
|
|
8
|
+
|
|
9
|
+
const JOBS = [
|
|
10
|
+
{ name: "Catalogue summaries", studio: "Writing studio", value: 72, eta: "about 2 min" },
|
|
11
|
+
{ name: "Product shots, autumn", studio: "Image studio", value: 35, eta: "about 6 min" },
|
|
12
|
+
];
|
|
13
|
+
const PACKS = [
|
|
14
|
+
{ name: "Customer support", runs: "412 answers this week" },
|
|
15
|
+
{ name: "Law 25 review", runs: "38 documents checked" },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
// TEMPLATE — Orazaka's console, Eric's morning (an accountant who runs his firm's AI on its own server): what the
|
|
19
|
+
// engine did, what is running now, the credits left, the packs at work. The period is a single-choice chip group above the grid;
|
|
20
|
+
// on a phone everything stacks in reading order, the running jobs first after the figures.
|
|
21
|
+
export default function DashboardLayoutOrazakaEric() {
|
|
22
|
+
return (
|
|
23
|
+
<div className="brand-orazaka w-full">
|
|
24
|
+
<DashboardLayout
|
|
25
|
+
eyebrow="Tremblay & associés · on-premise"
|
|
26
|
+
title="Good morning, Eric"
|
|
27
|
+
description="Nothing left your server this week: 1,284 requests, all answered locally."
|
|
28
|
+
actions={
|
|
29
|
+
<>
|
|
30
|
+
<Button size="sm" variant="secondary" shape="cut">Add a pack</Button>
|
|
31
|
+
<Button size="sm" variant="primary" shape="cut">New job</Button>
|
|
32
|
+
</>
|
|
33
|
+
}
|
|
34
|
+
toolbar={
|
|
35
|
+
<Chip.Group type="single" label="Period" defaultValue="7d" required>
|
|
36
|
+
<Chip value="today">Today</Chip>
|
|
37
|
+
<Chip value="7d">7 days</Chip>
|
|
38
|
+
<Chip value="30d">30 days</Chip>
|
|
39
|
+
</Chip.Group>
|
|
40
|
+
}
|
|
41
|
+
>
|
|
42
|
+
<Widget title="Requests">
|
|
43
|
+
<Stat label="7 days" value="1,284" trend="up" trendLabel="+6 %" />
|
|
44
|
+
</Widget>
|
|
45
|
+
<Widget title="Answered locally">
|
|
46
|
+
<Stat label="No cloud call" value="100 %" hint="sovereign mode" />
|
|
47
|
+
</Widget>
|
|
48
|
+
<Widget title="Median answer">
|
|
49
|
+
<Stat label="Chat" value="1.8 s" trend="down" trendLabel="−0.3 s" />
|
|
50
|
+
</Widget>
|
|
51
|
+
<Widget title="Credits" description="Workspace plan">
|
|
52
|
+
<Meter label="Credits used" value={3800} max={12000} valueText="3,800 of 12,000" showLabel />
|
|
53
|
+
</Widget>
|
|
54
|
+
<Widget title="Running now" span={2} action={<Badge tone="accent" dot>2 jobs</Badge>}>
|
|
55
|
+
<ul className="flex flex-col gap-4">
|
|
56
|
+
{JOBS.map((j) => (
|
|
57
|
+
<li key={j.name} className="flex flex-col gap-1.5">
|
|
58
|
+
<span className="flex items-baseline justify-between gap-2 text-sm">
|
|
59
|
+
<span className="font-medium text-fg">{j.name}</span>
|
|
60
|
+
<span className="text-xs text-fg-secondary">{j.studio}</span>
|
|
61
|
+
</span>
|
|
62
|
+
<Progress value={j.value} label={j.name} eta={j.eta} size="sm" />
|
|
63
|
+
</li>
|
|
64
|
+
))}
|
|
65
|
+
</ul>
|
|
66
|
+
</Widget>
|
|
67
|
+
<Widget title="Packs at work" span={2} action={<Button size="sm" variant="ghost">All packs</Button>}>
|
|
68
|
+
<ul className="divide-y divide-border-subtle">
|
|
69
|
+
{PACKS.map((p) => (
|
|
70
|
+
<li key={p.name} className="flex items-center justify-between gap-3 py-2.5 text-sm">
|
|
71
|
+
<span className="font-medium text-fg">{p.name}</span>
|
|
72
|
+
<span className="text-fg-secondary">{p.runs}</span>
|
|
73
|
+
</li>
|
|
74
|
+
))}
|
|
75
|
+
</ul>
|
|
76
|
+
</Widget>
|
|
77
|
+
</DashboardLayout>
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/dashboard-layout/widgets.tsx
|
|
4
|
+
import { DashboardLayout, Widget } from "@krizaka/ui/dashboard-layout";
|
|
5
|
+
import { Stat } from "@krizaka/ui/stat";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
function DashboardLayoutWidgets() {
|
|
8
|
+
return /* @__PURE__ */ jsxs(DashboardLayout, { className: "w-full", title: "Overview", description: "The last 7 days.", children: [
|
|
9
|
+
/* @__PURE__ */ jsx(Widget, { title: "Requests", children: /* @__PURE__ */ jsx(Stat, { label: "Today", value: "1,284", trend: "up", trendLabel: "+6 %" }) }),
|
|
10
|
+
/* @__PURE__ */ jsx(Widget, { title: "Credits left", children: /* @__PURE__ */ jsx(Stat, { label: "Workspace", value: "8,200" }) }),
|
|
11
|
+
/* @__PURE__ */ jsx(Widget, { title: "Usage", span: 2, children: /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "A chart of @krizaka/charts goes here." }) }),
|
|
12
|
+
/* @__PURE__ */ jsx(Widget, { title: "Recent jobs", span: "full", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "A DataTable goes here." }) })
|
|
13
|
+
] });
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
DashboardLayoutWidgets as default
|
|
17
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DashboardLayout, Widget } from "@krizaka/ui/dashboard-layout";
|
|
2
|
+
import { Stat } from "@krizaka/ui/stat";
|
|
3
|
+
|
|
4
|
+
// The grid: one column on a phone, two from `sm`, four from `xl`; `span` makes a widget wider (it keeps its order).
|
|
5
|
+
export default function DashboardLayoutWidgets() {
|
|
6
|
+
return (
|
|
7
|
+
<DashboardLayout className="w-full" title="Overview" description="The last 7 days.">
|
|
8
|
+
<Widget title="Requests">
|
|
9
|
+
<Stat label="Today" value="1,284" trend="up" trendLabel="+6 %" />
|
|
10
|
+
</Widget>
|
|
11
|
+
<Widget title="Credits left">
|
|
12
|
+
<Stat label="Workspace" value="8,200" />
|
|
13
|
+
</Widget>
|
|
14
|
+
<Widget title="Usage" span={2}>
|
|
15
|
+
<p className="text-sm text-fg-secondary">A chart of @krizaka/charts goes here.</p>
|
|
16
|
+
</Widget>
|
|
17
|
+
<Widget title="Recent jobs" span="full">
|
|
18
|
+
<p className="text-sm text-fg-secondary">A DataTable goes here.</p>
|
|
19
|
+
</Widget>
|
|
20
|
+
</DashboardLayout>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/detail-layout/job.tsx
|
|
4
|
+
import { Badge } from "@krizaka/ui/badge";
|
|
5
|
+
import { Button } from "@krizaka/ui/button";
|
|
6
|
+
import { DetailLayout } from "@krizaka/ui/detail-layout";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function DetailLayoutJob() {
|
|
9
|
+
return /* @__PURE__ */ jsx(
|
|
10
|
+
DetailLayout,
|
|
11
|
+
{
|
|
12
|
+
className: "w-full",
|
|
13
|
+
back: /* @__PURE__ */ jsx("a", { href: "#jobs", children: "\u2190 Jobs" }),
|
|
14
|
+
eyebrow: "Job \xB7 job-4822",
|
|
15
|
+
title: "Podcast transcript",
|
|
16
|
+
status: /* @__PURE__ */ jsx(Badge, { tone: "accent", dot: true, children: "Running" }),
|
|
17
|
+
meta: "Whisper large \xB7 started 5 min ago",
|
|
18
|
+
actions: /* @__PURE__ */ jsx(Button, { size: "sm", variant: "danger", shape: "cut", children: "Cancel" }),
|
|
19
|
+
children: /* @__PURE__ */ jsx("p", { className: "text-sm text-fg-secondary", children: "The transcript appears here as it is written." })
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
export {
|
|
24
|
+
DetailLayoutJob as default
|
|
25
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Badge } from "@krizaka/ui/badge";
|
|
2
|
+
import { Button } from "@krizaka/ui/button";
|
|
3
|
+
import { DetailLayout } from "@krizaka/ui/detail-layout";
|
|
4
|
+
|
|
5
|
+
// Without tabs or side panel: an object's header and its content.
|
|
6
|
+
export default function DetailLayoutJob() {
|
|
7
|
+
return (
|
|
8
|
+
<DetailLayout
|
|
9
|
+
className="w-full"
|
|
10
|
+
back={<a href="#jobs">← Jobs</a>}
|
|
11
|
+
eyebrow="Job · job-4822"
|
|
12
|
+
title="Podcast transcript"
|
|
13
|
+
status={<Badge tone="accent" dot>Running</Badge>}
|
|
14
|
+
meta="Whisper large · started 5 min ago"
|
|
15
|
+
actions={<Button size="sm" variant="danger" shape="cut">Cancel</Button>}
|
|
16
|
+
>
|
|
17
|
+
<p className="text-sm text-fg-secondary">The transcript appears here as it is written.</p>
|
|
18
|
+
</DetailLayout>
|
|
19
|
+
);
|
|
20
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// registry/examples/detail-layout/video.tsx
|
|
4
|
+
import { Badge } from "@krizaka/ui/badge";
|
|
5
|
+
import { Button } from "@krizaka/ui/button";
|
|
6
|
+
import { DetailLayout } from "@krizaka/ui/detail-layout";
|
|
7
|
+
import { Facts } from "@krizaka/ui/page";
|
|
8
|
+
import { Stat } from "@krizaka/ui/stat";
|
|
9
|
+
import { Tabs } from "@krizaka/ui/tabs";
|
|
10
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
function DetailLayoutVideo() {
|
|
12
|
+
return /* @__PURE__ */ jsx("div", { className: "brand-orochia w-full", children: /* @__PURE__ */ jsx(Tabs.Root, { defaultValue: "overview", children: /* @__PURE__ */ jsxs(
|
|
13
|
+
DetailLayout,
|
|
14
|
+
{
|
|
15
|
+
back: /* @__PURE__ */ jsx("a", { href: "#videos", children: "\u2190 Videos" }),
|
|
16
|
+
media: /* @__PURE__ */ jsx("div", { className: "aspect-video w-40 bg-linear-to-br from-accent to-accent-2" }),
|
|
17
|
+
eyebrow: "Video \xB7 v-2087",
|
|
18
|
+
title: "Night shoot, part 2",
|
|
19
|
+
status: /* @__PURE__ */ jsx(Badge, { tone: "success", dot: true, children: "Published" }),
|
|
20
|
+
meta: /* @__PURE__ */ jsx(Facts, { items: [{ label: "12:48" }, { label: "Unlock \u20AC4.99" }, { label: "18+ checked", tone: "ok" }] }),
|
|
21
|
+
actions: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", shape: "cut", children: "Edit" }),
|
|
23
|
+
/* @__PURE__ */ jsx(Button, { size: "sm", variant: "primary", shape: "cut", children: "Share" })
|
|
24
|
+
] }),
|
|
25
|
+
tabs: /* @__PURE__ */ jsxs(Tabs.List, { "aria-label": "Video", children: [
|
|
26
|
+
/* @__PURE__ */ jsx(Tabs.Trigger, { value: "overview", children: "Overview" }),
|
|
27
|
+
/* @__PURE__ */ jsx(Tabs.Trigger, { value: "sales", children: "Sales" }),
|
|
28
|
+
/* @__PURE__ */ jsx(Tabs.Trigger, { value: "comments", children: "Comments" })
|
|
29
|
+
] }),
|
|
30
|
+
aside: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 rounded-xl border border-border-default bg-surface-1 p-4", children: [
|
|
31
|
+
/* @__PURE__ */ jsx(Stat, { label: "Unlocks", value: "146", trend: "up", trendLabel: "+12", hint: "7 days" }),
|
|
32
|
+
/* @__PURE__ */ jsx(Stat, { label: "Earned", value: "\u20AC653", hint: "after the 10 % fee" })
|
|
33
|
+
] }),
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ jsx(Tabs.Content, { value: "overview", className: "text-sm leading-relaxed text-fg-secondary", children: "The second half of the night shoot in Old Montr\xE9al: the rooftop, the rain, the last take at dawn." }),
|
|
36
|
+
/* @__PURE__ */ jsx(Tabs.Content, { value: "sales", className: "text-sm text-fg-secondary", children: "146 unlocks, 3 tips." }),
|
|
37
|
+
/* @__PURE__ */ jsx(Tabs.Content, { value: "comments", className: "text-sm text-fg-secondary", children: "28 comments, 2 waiting for moderation." })
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
) }) });
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
DetailLayoutVideo as default
|
|
44
|
+
};
|