@flickfyi/flkr 0.0.182 → 0.0.185
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/dist/{api-client-CAg1b8Bh.js → api-client-nn4U_Vfn.js} +1 -1
- package/dist/{app-DpM5nhb9.js → app-COXGJhrt.js} +3 -3
- package/dist/{bundler-DNrDcqyk.js → bundler-CW4YC73e.js} +4 -2
- package/dist/cli.js +11 -11
- package/dist/{delegate-DcVye0KE.js → delegate-aUVluBjB.js} +2 -2
- package/dist/{generate-B1l1z_FZ.js → generate-BeL1QPDi.js} +1 -1
- package/dist/{preview-Dqn_Tq6K.js → preview-DTVM8Csb.js} +2 -2
- package/dist/{publish-BmDqO1xU.js → publish-BJG-s-w5.js} +4 -4
- package/dist/{pull-CO80DMn8.js → pull-B_Yfjpi2.js} +1 -1
- package/dist/{save-8crfOeo1.js → save-UrfgmK2-.js} +2 -2
- package/dist/{sdk-app-BXWrf_pf.js → sdk-app-BAxznAf9.js} +3 -3
- package/dist/{sdk-deploy-CaEonlvx.js → sdk-deploy-D1wgQxse.js} +3 -3
- package/dist/{sdk-generation-CF8ATbrL.js → sdk-generation-CLQ-QrVM.js} +1 -1
- package/dist/{sdk-project-CKV3U3u9.js → sdk-project-BaO0fqhW.js} +1 -1
- package/dist/{use-auth-B6nwU2rp.js → use-auth-CtM4_BAY.js} +1 -1
- package/node_modules/@flickfyi/biscuit/.turbo/turbo-build.log +4 -4
- package/node_modules/@flickfyi/core/README.md +19 -9
- package/node_modules/@flickfyi/core/dist/chunks/{default-CuxDsQoM.js → default-BTmKidHV.js} +1 -1
- package/node_modules/@flickfyi/core/dist/chunks/{default-BB6YexEH.cjs → default-JhTq5I_y.cjs} +1 -1
- package/node_modules/@flickfyi/core/dist/chunks/{define-CUJRqVKY.cjs → define-BKCRhpuY.cjs} +1 -1
- package/node_modules/@flickfyi/core/dist/chunks/{define-e_VqSs4M.js → define-DZXgUsy7.js} +5 -5
- package/node_modules/@flickfyi/core/dist/kowalski/catalog.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/kowalski/catalog.js +728 -549
- package/node_modules/@flickfyi/core/dist/kowalski/index.cjs +5 -5
- package/node_modules/@flickfyi/core/dist/kowalski/index.js +4297 -3700
- package/node_modules/@flickfyi/core/dist/kowalski/schemas.cjs +1 -0
- package/node_modules/@flickfyi/core/dist/kowalski/schemas.js +637 -0
- package/node_modules/@flickfyi/core/dist/kowalski-catalog.css +516 -0
- package/node_modules/@flickfyi/core/dist/kowalski.css +10 -0
- package/node_modules/@flickfyi/core/dist/themes/athletic/athletic.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/athletic/athletic.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/compact/compact.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/compact/compact.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/default/default.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/default/default.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/editorial/editorial.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/editorial/editorial.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/handwritten/handwritten.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/handwritten/handwritten.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/index.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/index.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/kids/kids.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/kids/kids.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/rounded/rounded.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/rounded/rounded.js +1 -1
- package/node_modules/@flickfyi/core/dist/themes/technical/technical.cjs +1 -1
- package/node_modules/@flickfyi/core/dist/themes/technical/technical.js +1 -1
- package/node_modules/@flickfyi/core/dist-types/hooks/use-feature-store/index.d.ts +43 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/calculations.d.ts +57 -3
- package/node_modules/@flickfyi/core/dist-types/kowalski/calculator.d.ts +7 -6
- package/node_modules/@flickfyi/core/dist-types/kowalski/catalog.d.cts +524 -809
- package/node_modules/@flickfyi/core/dist-types/kowalski/catalog.d.ts +524 -809
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/bill-split.d.ts +38 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/bookmark.d.ts +48 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/budget.d.ts +39 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/calculator.d.ts +62 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/checklist.d.ts +35 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/color-palette.d.ts +32 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/contact.d.ts +41 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/countdown.d.ts +34 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/event.d.ts +43 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/expense.d.ts +40 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/goal.d.ts +36 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/habit.d.ts +57 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/ledger.d.ts +43 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/note.d.ts +35 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/poll.d.ts +41 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/random-picker.d.ts +69 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/rating.d.ts +33 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/reminder.d.ts +48 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/rotation.d.ts +39 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/scoreboard.d.ts +37 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/shopping-list.d.ts +41 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/task-board.d.ts +39 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/time-zone.d.ts +34 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/timer.d.ts +43 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/trip.d.ts +61 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/components/unit-converter.d.ts +106 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/create-schemas.d.ts +6 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/date-time.d.ts +1 -1
- package/node_modules/@flickfyi/core/dist-types/kowalski/everyday.d.ts +28 -8
- package/node_modules/@flickfyi/core/dist-types/kowalski/feature-schema.d.ts +65 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/format.d.ts +4 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/fortune.d.ts +21 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/frame.d.ts +4 -4
- package/node_modules/@flickfyi/core/dist-types/kowalski/index.d.cts +31 -7
- package/node_modules/@flickfyi/core/dist-types/kowalski/index.d.ts +31 -7
- package/node_modules/@flickfyi/core/dist-types/kowalski/lesson.d.ts +89 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/recipe.d.ts +129 -8
- package/node_modules/@flickfyi/core/dist-types/kowalski/schemas.d.cts +4 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/schemas.d.ts +4 -0
- package/node_modules/@flickfyi/core/dist-types/kowalski/time-since.d.ts +34 -0
- package/node_modules/@flickfyi/core/examples/example-metadata.ts +19 -2
- package/node_modules/@flickfyi/core/examples/kowalski/bill-split/bill-split.stories.tsx +25 -6
- package/node_modules/@flickfyi/core/examples/kowalski/bill-split/bill-split.tsx +6 -12
- package/node_modules/@flickfyi/core/examples/kowalski/bookmark/bookmark.stories.tsx +22 -5
- package/node_modules/@flickfyi/core/examples/kowalski/bookmark/bookmark.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/budget/budget.stories.tsx +26 -5
- package/node_modules/@flickfyi/core/examples/kowalski/budget/budget.tsx +6 -21
- package/node_modules/@flickfyi/core/examples/kowalski/calculator/calculator.stories.tsx +18 -5
- package/node_modules/@flickfyi/core/examples/kowalski/calculator/calculator.tsx +6 -19
- package/node_modules/@flickfyi/core/examples/kowalski/checklist/checklist.stories.tsx +25 -5
- package/node_modules/@flickfyi/core/examples/kowalski/checklist/checklist.tsx +6 -21
- package/node_modules/@flickfyi/core/examples/kowalski/color-palette/color-palette.stories.tsx +19 -6
- package/node_modules/@flickfyi/core/examples/kowalski/color-palette/color-palette.tsx +6 -17
- package/node_modules/@flickfyi/core/examples/kowalski/contact/contact.stories.tsx +30 -5
- package/node_modules/@flickfyi/core/examples/kowalski/contact/contact.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/countdown/countdown.stories.tsx +22 -5
- package/node_modules/@flickfyi/core/examples/kowalski/countdown/countdown.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/event/event.stories.tsx +23 -5
- package/node_modules/@flickfyi/core/examples/kowalski/event/event.tsx +6 -19
- package/node_modules/@flickfyi/core/examples/kowalski/expense/expense.stories.tsx +23 -5
- package/node_modules/@flickfyi/core/examples/kowalski/expense/expense.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/fortune/fortune.stories.tsx +61 -0
- package/node_modules/@flickfyi/core/examples/kowalski/fortune/fortune.tsx +11 -0
- package/node_modules/@flickfyi/core/examples/kowalski/goal/goal.stories.tsx +18 -5
- package/node_modules/@flickfyi/core/examples/kowalski/goal/goal.tsx +3 -19
- package/node_modules/@flickfyi/core/examples/kowalski/habit/habit.stories.tsx +22 -5
- package/node_modules/@flickfyi/core/examples/kowalski/habit/habit.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/ledger/ledger.stories.tsx +25 -5
- package/node_modules/@flickfyi/core/examples/kowalski/ledger/ledger.tsx +6 -20
- package/node_modules/@flickfyi/core/examples/kowalski/lesson/lesson.stories.tsx +99 -0
- package/node_modules/@flickfyi/core/examples/kowalski/lesson/lesson.tsx +11 -0
- package/node_modules/@flickfyi/core/examples/kowalski/note/note.stories.tsx +21 -5
- package/node_modules/@flickfyi/core/examples/kowalski/note/note.tsx +3 -17
- package/node_modules/@flickfyi/core/examples/kowalski/poll/poll.stories.tsx +26 -5
- package/node_modules/@flickfyi/core/examples/kowalski/poll/poll.tsx +3 -21
- package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.stories.tsx +37 -6
- package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/rating/rating.stories.tsx +18 -5
- package/node_modules/@flickfyi/core/examples/kowalski/rating/rating.tsx +6 -14
- package/node_modules/@flickfyi/core/examples/kowalski/recipe/recipe.stories.tsx +117 -5
- package/node_modules/@flickfyi/core/examples/kowalski/recipe/recipe.tsx +6 -115
- package/node_modules/@flickfyi/core/examples/kowalski/reminder/reminder.stories.tsx +22 -5
- package/node_modules/@flickfyi/core/examples/kowalski/reminder/reminder.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/rotation/rotation.stories.tsx +26 -5
- package/node_modules/@flickfyi/core/examples/kowalski/rotation/rotation.tsx +6 -22
- package/node_modules/@flickfyi/core/examples/kowalski/scoreboard/scoreboard.stories.tsx +26 -5
- package/node_modules/@flickfyi/core/examples/kowalski/scoreboard/scoreboard.tsx +6 -21
- package/node_modules/@flickfyi/core/examples/kowalski/shopping-list/shopping-list.stories.tsx +28 -6
- package/node_modules/@flickfyi/core/examples/kowalski/shopping-list/shopping-list.tsx +6 -22
- package/node_modules/@flickfyi/core/examples/kowalski/task-board/task-board.stories.tsx +27 -6
- package/node_modules/@flickfyi/core/examples/kowalski/task-board/task-board.tsx +6 -22
- package/node_modules/@flickfyi/core/examples/kowalski/time-since/time-since.stories.tsx +33 -0
- package/node_modules/@flickfyi/core/examples/kowalski/time-since/time-since.tsx +12 -0
- package/node_modules/@flickfyi/core/examples/kowalski/time-zone/time-zone.stories.tsx +22 -6
- package/node_modules/@flickfyi/core/examples/kowalski/time-zone/time-zone.tsx +6 -17
- package/node_modules/@flickfyi/core/examples/kowalski/timer/timer.stories.tsx +18 -5
- package/node_modules/@flickfyi/core/examples/kowalski/timer/timer.tsx +6 -18
- package/node_modules/@flickfyi/core/examples/kowalski/trip/trip.stories.tsx +25 -5
- package/node_modules/@flickfyi/core/examples/kowalski/trip/trip.tsx +3 -21
- package/node_modules/@flickfyi/core/examples/kowalski/unit-converter/unit-converter.stories.tsx +19 -6
- package/node_modules/@flickfyi/core/examples/kowalski/unit-converter/unit-converter.tsx +6 -19
- package/node_modules/@flickfyi/core/examples/parrott/calculator/calculator.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/calculator/calculator.tsx +2 -13
- package/node_modules/@flickfyi/core/examples/parrott/checklist/checklist.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/checklist/checklist.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/countdown/countdown.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/countdown/countdown.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/counter/counter.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/counter/counter.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/fortune/fortune.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/fortune/fortune.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/grid/grid.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/grid/grid.tsx +4 -9
- package/node_modules/@flickfyi/core/examples/parrott/kale-smoothie/kale-smoothie.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/kale-smoothie/kale-smoothie.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/list/list.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/list/list.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/log/log.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/log/log.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/timed-task/timed-task.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/timed-task/timed-task.tsx +0 -8
- package/node_modules/@flickfyi/core/examples/parrott/timer/timer.stories.tsx +10 -3
- package/node_modules/@flickfyi/core/examples/parrott/timer/timer.tsx +0 -8
- package/node_modules/@flickfyi/core/package.json +16 -3
- package/node_modules/@flickfyi/core/src/{kowalski/use-configured-feature.ts → hooks/use-configured-feature/index.ts} +1 -1
- package/node_modules/@flickfyi/core/src/{kowalski/use-feature-store.ts → hooks/use-feature-store/index.ts} +37 -12
- package/node_modules/@flickfyi/core/src/kowalski/README.md +13 -0
- package/node_modules/@flickfyi/core/src/kowalski/calculations.ts +36 -8
- package/node_modules/@flickfyi/core/src/kowalski/calculator.ts +15 -7
- package/node_modules/@flickfyi/core/src/kowalski/catalog.ts +110 -704
- package/node_modules/@flickfyi/core/src/kowalski/components/bill-split.tsx +284 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/bookmark.tsx +347 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/budget.tsx +169 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/calculator.tsx +202 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/checklist.tsx +119 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/color-palette.tsx +302 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/contact.tsx +247 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/countdown.tsx +173 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/event.tsx +260 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/expense.tsx +257 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/goal.tsx +182 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/habit.tsx +272 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/ledger.tsx +211 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/note.tsx +188 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/poll.tsx +242 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/random-picker.tsx +308 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/rating.tsx +112 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/reminder.tsx +298 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/rotation.tsx +146 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/scoreboard.tsx +139 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/shopping-list.tsx +144 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/task-board.tsx +146 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/time-zone.tsx +240 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/timer.tsx +225 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/trip.tsx +338 -0
- package/node_modules/@flickfyi/core/src/kowalski/components/unit-converter.tsx +285 -0
- package/node_modules/@flickfyi/core/src/kowalski/create-schemas.ts +8 -0
- package/node_modules/@flickfyi/core/src/kowalski/date-time.tsx +1 -1
- package/node_modules/@flickfyi/core/src/kowalski/everyday.tsx +1 -640
- package/node_modules/@flickfyi/core/src/kowalski/feature-schema.ts +84 -0
- package/node_modules/@flickfyi/core/src/kowalski/format.ts +29 -3
- package/node_modules/@flickfyi/core/src/kowalski/fortune.tsx +67 -0
- package/node_modules/@flickfyi/core/src/kowalski/frame.tsx +5 -6
- package/node_modules/@flickfyi/core/src/kowalski/index.ts +31 -22
- package/node_modules/@flickfyi/core/src/kowalski/lesson.tsx +564 -0
- package/node_modules/@flickfyi/core/src/kowalski/recipe.tsx +78 -37
- package/node_modules/@flickfyi/core/src/kowalski/schemas.ts +67 -0
- package/node_modules/@flickfyi/core/src/kowalski/stories/composition.tsx +22 -20
- package/node_modules/@flickfyi/core/src/kowalski/time-since.tsx +145 -0
- package/node_modules/@flickfyi/core/src/molecules/progress/progress.tsx +4 -1
- package/node_modules/@flickfyi/core/src/oklch.ts +1 -6
- package/node_modules/@flickfyi/core/src/parrott/theme.ts +3 -1
- package/node_modules/@flickfyi/core/src/themes/editorial/editorial.ts +6 -1
- package/node_modules/@flickfyi/core/src/themes/palette.ts +5 -5
- package/node_modules/@flickfyi/core/src/themes/stories/composition.tsx +11 -9
- package/node_modules/@flickfyi/core/src/themes/stories/gallery.tsx +7 -11
- package/node_modules/@flickfyi/core/tsgo.bun.lock +7 -7
- package/node_modules/@flickfyi/core/tsgo.package.json +1 -1
- package/package.json +2 -2
- package/node_modules/@flickfyi/core/dist-types/kowalski/clocks.d.ts +0 -4
- package/node_modules/@flickfyi/core/dist-types/kowalski/details.d.ts +0 -7
- package/node_modules/@flickfyi/core/dist-types/kowalski/productivity.d.ts +0 -5
- package/node_modules/@flickfyi/core/dist-types/kowalski/tools.d.ts +0 -7
- package/node_modules/@flickfyi/core/dist-types/kowalski/use-feature-store.d.ts +0 -15
- package/node_modules/@flickfyi/core/src/kowalski/clocks.tsx +0 -464
- package/node_modules/@flickfyi/core/src/kowalski/details.tsx +0 -1387
- package/node_modules/@flickfyi/core/src/kowalski/productivity.tsx +0 -575
- package/node_modules/@flickfyi/core/src/kowalski/tools.tsx +0 -1213
- /package/node_modules/@flickfyi/core/dist-types/{kowalski/use-clock.d.ts → hooks/use-clock/index.d.ts} +0 -0
- /package/node_modules/@flickfyi/core/dist-types/{kowalski/use-configured-feature.d.ts → hooks/use-configured-feature/index.d.ts} +0 -0
- /package/node_modules/@flickfyi/core/src/{kowalski/use-clock.ts → hooks/use-clock/index.ts} +0 -0
|
@@ -1,15 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { GoalData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { z } from 'zod/v4'
|
|
4
|
+
|
|
5
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
6
|
|
|
3
7
|
import GoalExample from './goal'
|
|
4
8
|
import exampleSource from './goal.tsx?raw'
|
|
5
9
|
|
|
10
|
+
// Keep catalog metadata outside the component's content.
|
|
11
|
+
const storyProps = GoalData.strip().transform(data => ({ data }))
|
|
6
12
|
const meta = {
|
|
7
|
-
|
|
13
|
+
argTypes: schemaArgTypes(GoalData),
|
|
14
|
+
args: { progress: 3, step: 1, target: 12, title: 'Make room to read', unit: 'books' },
|
|
8
15
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
16
|
+
render: args => <GoalExample {...storyProps.parse(args)} />,
|
|
9
17
|
title: 'Kowalski/Goal',
|
|
10
|
-
} satisfies Meta<typeof
|
|
18
|
+
} satisfies Meta<z.input<typeof storyProps>>
|
|
11
19
|
|
|
12
20
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
21
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
22
|
+
args: {
|
|
23
|
+
description:
|
|
24
|
+
'An instantiatable Goal from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
25
|
+
enabled: false,
|
|
26
|
+
name: 'Goal',
|
|
27
|
+
},
|
|
15
28
|
}
|
|
@@ -1,24 +1,8 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { Goal } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { Goal, type GoalProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export default function GoalExample() {
|
|
5
|
+
export default function GoalExample({ data, style }: Pick<GoalProps, 'data' | 'style'>) {
|
|
8
6
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Goal
|
|
12
|
-
progress={3}
|
|
13
|
-
target={12}
|
|
14
|
-
title="Make room to read"
|
|
15
|
-
unit="books"
|
|
16
|
-
/>
|
|
17
|
-
)
|
|
7
|
+
return <Goal data={data} style={style} />
|
|
18
8
|
}
|
|
19
|
-
|
|
20
|
-
export const exampleMetadata = {
|
|
21
|
-
description:
|
|
22
|
-
'An instantiatable Goal from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
23
|
-
name: 'Goal',
|
|
24
|
-
} satisfies ExampleMetadata
|
|
@@ -1,15 +1,32 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { HabitData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { z } from 'zod/v4'
|
|
4
|
+
|
|
5
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
6
|
|
|
3
7
|
import HabitExample from './habit'
|
|
4
8
|
import exampleSource from './habit.tsx?raw'
|
|
5
9
|
|
|
10
|
+
// Keep catalog metadata outside the component's content.
|
|
11
|
+
const storyProps = HabitData.strip().transform(data => ({ data }))
|
|
6
12
|
const meta = {
|
|
7
|
-
|
|
13
|
+
argTypes: schemaArgTypes(HabitData),
|
|
14
|
+
args: {
|
|
15
|
+
timeZone: 'America/Los_Angeles',
|
|
16
|
+
title: 'Read a few pages',
|
|
17
|
+
weekdays: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'],
|
|
18
|
+
},
|
|
8
19
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
20
|
+
render: args => <HabitExample {...storyProps.parse(args)} />,
|
|
9
21
|
title: 'Kowalski/Habit',
|
|
10
|
-
} satisfies Meta<typeof
|
|
22
|
+
} satisfies Meta<z.input<typeof storyProps>>
|
|
11
23
|
|
|
12
24
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
25
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
26
|
+
args: {
|
|
27
|
+
description:
|
|
28
|
+
'An instantiatable Habit from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
29
|
+
enabled: false,
|
|
30
|
+
name: 'Habit',
|
|
31
|
+
},
|
|
15
32
|
}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { Habit } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { Habit, type HabitProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export default function HabitExample({
|
|
6
|
+
data,
|
|
7
|
+
style,
|
|
8
|
+
}: Pick<HabitProps, 'data' | 'style'>) {
|
|
8
9
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Habit
|
|
12
|
-
timeZone="America/Los_Angeles"
|
|
13
|
-
title="Read a few pages"
|
|
14
|
-
weekdays={['monday', 'tuesday', 'wednesday', 'thursday', 'friday']}
|
|
15
|
-
/>
|
|
16
|
-
)
|
|
10
|
+
return <Habit data={data} style={style} />
|
|
17
11
|
}
|
|
18
|
-
|
|
19
|
-
export const exampleMetadata = {
|
|
20
|
-
description:
|
|
21
|
-
'An instantiatable Habit from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
22
|
-
name: 'Habit',
|
|
23
|
-
} satisfies ExampleMetadata
|
|
@@ -1,15 +1,35 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { LedgerData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { z } from 'zod/v4'
|
|
4
|
+
|
|
5
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
6
|
|
|
3
7
|
import LedgerExample from './ledger'
|
|
4
8
|
import exampleSource from './ledger.tsx?raw'
|
|
5
9
|
|
|
10
|
+
// Keep catalog metadata outside the component's content.
|
|
11
|
+
const storyProps = LedgerData.strip().transform(data => ({ data }))
|
|
6
12
|
const meta = {
|
|
7
|
-
|
|
13
|
+
argTypes: schemaArgTypes(LedgerData),
|
|
14
|
+
args: {
|
|
15
|
+
currency: 'USD',
|
|
16
|
+
people: [
|
|
17
|
+
{ id: 'sam', label: 'Sam' },
|
|
18
|
+
{ id: 'riley', label: 'Riley' },
|
|
19
|
+
],
|
|
20
|
+
title: 'Apartment tab',
|
|
21
|
+
},
|
|
8
22
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
23
|
+
render: args => <LedgerExample {...storyProps.parse(args)} />,
|
|
9
24
|
title: 'Kowalski/Ledger',
|
|
10
|
-
} satisfies Meta<typeof
|
|
25
|
+
} satisfies Meta<z.input<typeof storyProps>>
|
|
11
26
|
|
|
12
27
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
28
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
29
|
+
args: {
|
|
30
|
+
description:
|
|
31
|
+
'An instantiatable Ledger from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
32
|
+
enabled: false,
|
|
33
|
+
name: 'Ledger',
|
|
34
|
+
},
|
|
15
35
|
}
|
|
@@ -1,25 +1,11 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { Ledger } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { Ledger, type LedgerProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export default function LedgerExample({
|
|
6
|
+
data,
|
|
7
|
+
style,
|
|
8
|
+
}: Pick<LedgerProps, 'data' | 'style'>) {
|
|
8
9
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Ledger
|
|
12
|
-
people={[
|
|
13
|
-
{ id: 'sam', label: 'Sam' },
|
|
14
|
-
{ id: 'riley', label: 'Riley' },
|
|
15
|
-
]}
|
|
16
|
-
title="Apartment tab"
|
|
17
|
-
/>
|
|
18
|
-
)
|
|
10
|
+
return <Ledger data={data} style={style} />
|
|
19
11
|
}
|
|
20
|
-
|
|
21
|
-
export const exampleMetadata = {
|
|
22
|
-
description:
|
|
23
|
-
'An instantiatable Ledger from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
24
|
-
name: 'Ledger',
|
|
25
|
-
} satisfies ExampleMetadata
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { LessonData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
|
|
4
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
5
|
+
|
|
6
|
+
import LessonExample from './lesson'
|
|
7
|
+
import exampleSource from './lesson.tsx?raw'
|
|
8
|
+
|
|
9
|
+
const storyProps = LessonData.strip().transform(data => ({ data }))
|
|
10
|
+
const meta = {
|
|
11
|
+
argTypes: schemaArgTypes(LessonData),
|
|
12
|
+
args: {
|
|
13
|
+
hasPart: [
|
|
14
|
+
{
|
|
15
|
+
acceptedAnswer: [
|
|
16
|
+
{
|
|
17
|
+
answerExplanation:
|
|
18
|
+
'It’s before noon, so “buenos días” is the right greeting.',
|
|
19
|
+
text: 'Buenos días',
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
assesses: 'time-of-day',
|
|
23
|
+
eduQuestionType: 'Multiple choice',
|
|
24
|
+
id: 'morning',
|
|
25
|
+
suggestedAnswer: [
|
|
26
|
+
{ comment: '“Buenas noches” is for after dark.', text: 'Buenas noches' },
|
|
27
|
+
{ comment: '“Buenas tardes” starts around noon.', text: 'Buenas tardes' },
|
|
28
|
+
],
|
|
29
|
+
text: 'It’s 9 AM. How do you greet your neighbor?',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
acceptedAnswer: [
|
|
33
|
+
{
|
|
34
|
+
answerExplanation:
|
|
35
|
+
'After dark, “buenas noches” works as both “good evening” and “good night.”',
|
|
36
|
+
text: 'Buenas noches',
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
assesses: 'time-of-day',
|
|
40
|
+
eduQuestionType: 'Flashcard',
|
|
41
|
+
id: 'night',
|
|
42
|
+
suggestedAnswer: [],
|
|
43
|
+
text: 'What do you say arriving at a dinner party at 10 PM?',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
acceptedAnswer: [
|
|
47
|
+
{
|
|
48
|
+
answerExplanation:
|
|
49
|
+
'A new teacher is someone you show respect to, so use “usted.”',
|
|
50
|
+
text: 'Your new teacher',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
answerExplanation:
|
|
54
|
+
'Use “usted” with strangers, like someone you ask for directions.',
|
|
55
|
+
text: 'A stranger on the street',
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
assesses: 'tu-usted',
|
|
59
|
+
eduQuestionType: 'Checkbox',
|
|
60
|
+
id: 'usted',
|
|
61
|
+
suggestedAnswer: [
|
|
62
|
+
{ comment: 'Use “tú” with family.', text: 'Your little sister' },
|
|
63
|
+
{ comment: 'Use “tú” with friends.', text: 'Your best friend' },
|
|
64
|
+
],
|
|
65
|
+
text: 'Who would you call “usted”?',
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
teaches: [
|
|
69
|
+
{
|
|
70
|
+
description:
|
|
71
|
+
'Spanish greetings change with the time of day. Use “buenos días” until about noon, “buenas tardes” until dark, and “buenas noches” after dark, as both hello and good night.',
|
|
72
|
+
examples: [{ name: 'Buenos días', value: 'Morning, until about noon' }, { name: 'Buenas tardes', value: 'Afternoon, until dark' }, { name: 'Buenas noches', value: 'Evening and night' }],
|
|
73
|
+
id: 'time-of-day',
|
|
74
|
+
name: 'Greetings by time of day',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
description:
|
|
78
|
+
'Spanish has two words for “you.” Use “tú” with friends, family, and children. Use “usted” with people you don’t know well or want to show respect to.',
|
|
79
|
+
examples: [{ name: '¿Cómo estás?', value: 'To a friend' }, { name: '¿Cómo está usted?', value: 'To a teacher' }],
|
|
80
|
+
id: 'tu-usted',
|
|
81
|
+
name: 'Tú or usted',
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
title: 'Spanish greetings',
|
|
85
|
+
},
|
|
86
|
+
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
87
|
+
render: args => <LessonExample {...storyProps.parse(args)} />,
|
|
88
|
+
title: 'Kowalski/Lesson',
|
|
89
|
+
} satisfies Meta<LessonData>
|
|
90
|
+
|
|
91
|
+
export default meta
|
|
92
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
93
|
+
args: {
|
|
94
|
+
description:
|
|
95
|
+
'A short Duolingo-style lesson that teaches a few ideas one at a time, each followed by multiple-choice, select-all, or flashcard questions on it. Checks each answer with an explanation and feedback on the wrong choice, reviews missed questions at the end with the idea retaught, shows progress per idea, and saves progress. For language practice, rules of a game or sport, study topics, trivia, and any "teach me" or "quiz me" request. The model writes the teaching and questions; the component does not generate new questions at runtime.',
|
|
96
|
+
enabled: true,
|
|
97
|
+
name: 'Lesson',
|
|
98
|
+
},
|
|
99
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useTheme } from '@flickfyi/core'
|
|
2
|
+
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
+
import { Lesson, type LessonProps } from '@flickfyi/core/kowalski'
|
|
4
|
+
|
|
5
|
+
export default function LessonExample({
|
|
6
|
+
data,
|
|
7
|
+
style,
|
|
8
|
+
}: Pick<LessonProps, 'data' | 'style'>) {
|
|
9
|
+
useTheme(theme)
|
|
10
|
+
return <Lesson data={data} style={style} />
|
|
11
|
+
}
|
|
@@ -1,15 +1,31 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { NoteData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { z } from 'zod/v4'
|
|
4
|
+
|
|
5
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
6
|
|
|
3
7
|
import NoteExample from './note'
|
|
4
8
|
import exampleSource from './note.tsx?raw'
|
|
5
9
|
|
|
10
|
+
// Keep catalog metadata outside the component's content.
|
|
11
|
+
const storyProps = NoteData.strip().transform(data => ({ data }))
|
|
6
12
|
const meta = {
|
|
7
|
-
|
|
13
|
+
argTypes: schemaArgTypes(NoteData),
|
|
14
|
+
args: {
|
|
15
|
+
body: 'Make the next step obvious.\n\nLeave enough room for the thing that matters.',
|
|
16
|
+
title: 'A thought worth keeping',
|
|
17
|
+
},
|
|
8
18
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
19
|
+
render: args => <NoteExample {...storyProps.parse(args)} />,
|
|
9
20
|
title: 'Kowalski/Note',
|
|
10
|
-
} satisfies Meta<typeof
|
|
21
|
+
} satisfies Meta<z.input<typeof storyProps>>
|
|
11
22
|
|
|
12
23
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
24
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
25
|
+
args: {
|
|
26
|
+
description:
|
|
27
|
+
'An instantiatable Note from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
28
|
+
enabled: false,
|
|
29
|
+
name: 'Note',
|
|
30
|
+
},
|
|
15
31
|
}
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { Note } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { Note, type NoteProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export default function NoteExample() {
|
|
5
|
+
export default function NoteExample({ data, style }: Pick<NoteProps, 'data' | 'style'>) {
|
|
8
6
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Note
|
|
12
|
-
body={'Make the next step obvious.\n\nLeave enough room for the thing that matters.'}
|
|
13
|
-
title="A thought worth keeping"
|
|
14
|
-
/>
|
|
15
|
-
)
|
|
7
|
+
return <Note data={data} style={style} />
|
|
16
8
|
}
|
|
17
|
-
|
|
18
|
-
export const exampleMetadata = {
|
|
19
|
-
description:
|
|
20
|
-
'An instantiatable Note from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
21
|
-
name: 'Note',
|
|
22
|
-
} satisfies ExampleMetadata
|
|
@@ -1,15 +1,36 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PollData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { z } from 'zod/v4'
|
|
4
|
+
|
|
5
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
6
|
|
|
3
7
|
import PollExample from './poll'
|
|
4
8
|
import exampleSource from './poll.tsx?raw'
|
|
5
9
|
|
|
10
|
+
// Keep catalog metadata outside the component's content.
|
|
11
|
+
const storyProps = PollData.strip().transform(data => ({ data }))
|
|
6
12
|
const meta = {
|
|
7
|
-
|
|
13
|
+
argTypes: schemaArgTypes(PollData),
|
|
14
|
+
args: {
|
|
15
|
+
options: [
|
|
16
|
+
{ id: 'ramen', label: 'Ramen' },
|
|
17
|
+
{ id: 'tacos', label: 'Tacos' },
|
|
18
|
+
{ id: 'pizza', label: 'Pizza' },
|
|
19
|
+
],
|
|
20
|
+
question: 'Where should we eat?',
|
|
21
|
+
shared: false,
|
|
22
|
+
},
|
|
8
23
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
24
|
+
render: args => <PollExample {...storyProps.parse(args)} />,
|
|
9
25
|
title: 'Kowalski/Poll',
|
|
10
|
-
} satisfies Meta<typeof
|
|
26
|
+
} satisfies Meta<z.input<typeof storyProps>>
|
|
11
27
|
|
|
12
28
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
29
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
30
|
+
args: {
|
|
31
|
+
description:
|
|
32
|
+
'An instantiatable Poll from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
33
|
+
enabled: false,
|
|
34
|
+
name: 'Poll',
|
|
35
|
+
},
|
|
15
36
|
}
|
|
@@ -1,26 +1,8 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { Poll } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { Poll, type PollProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export default function PollExample() {
|
|
5
|
+
export default function PollExample({ data, style }: Pick<PollProps, 'data' | 'style'>) {
|
|
8
6
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Poll
|
|
12
|
-
options={[
|
|
13
|
-
{ id: 'ramen', label: 'Ramen' },
|
|
14
|
-
{ id: 'tacos', label: 'Tacos' },
|
|
15
|
-
{ id: 'pizza', label: 'Pizza' },
|
|
16
|
-
]}
|
|
17
|
-
question="Where should we eat?"
|
|
18
|
-
/>
|
|
19
|
-
)
|
|
7
|
+
return <Poll data={data} style={style} />
|
|
20
8
|
}
|
|
21
|
-
|
|
22
|
-
export const exampleMetadata = {
|
|
23
|
-
description:
|
|
24
|
-
'An instantiatable Poll from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
25
|
-
name: 'Poll',
|
|
26
|
-
} satisfies ExampleMetadata
|
package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.stories.tsx
CHANGED
|
@@ -1,15 +1,46 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { RandomPickerData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { AllUnionFields } from 'type-fest'
|
|
4
|
+
import { z } from 'zod/v4'
|
|
5
|
+
|
|
6
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
7
|
|
|
3
8
|
import RandomPickerExample from './random-picker'
|
|
4
9
|
import exampleSource from './random-picker.tsx?raw'
|
|
5
10
|
|
|
11
|
+
// Keep catalog metadata outside the component's content.
|
|
12
|
+
const storyProps = z
|
|
13
|
+
.discriminatedUnion('mode', [
|
|
14
|
+
RandomPickerData.options[0].strip(),
|
|
15
|
+
...RandomPickerData.options.slice(1).map(option => option.strip()),
|
|
16
|
+
])
|
|
17
|
+
.transform(data => ({ data }))
|
|
6
18
|
const meta = {
|
|
7
|
-
|
|
19
|
+
argTypes: {
|
|
20
|
+
...Object.assign({}, ...RandomPickerData.options.map(schemaArgTypes)),
|
|
21
|
+
maximum: { control: 'number', if: { arg: 'mode', eq: 'range' } },
|
|
22
|
+
minimum: { control: 'number', if: { arg: 'mode', eq: 'range' } },
|
|
23
|
+
mode: { control: 'select', options: ['coin', 'dice', 'range', 'list'] },
|
|
24
|
+
options: { control: 'object', if: { arg: 'mode', eq: 'list' } },
|
|
25
|
+
},
|
|
26
|
+
args: {
|
|
27
|
+
maximum: 6,
|
|
28
|
+
minimum: 1,
|
|
29
|
+
mode: 'list',
|
|
30
|
+
options: ['Take a walk', 'Make some tea', 'Read a chapter'],
|
|
31
|
+
title: 'What should we do?',
|
|
32
|
+
},
|
|
8
33
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
9
|
-
|
|
10
|
-
|
|
34
|
+
render: args => <RandomPickerExample {...storyProps.parse(args)} />,
|
|
35
|
+
title: 'Kowalski/Random picker',
|
|
36
|
+
} satisfies Meta<AllUnionFields<z.input<typeof storyProps>>>
|
|
11
37
|
|
|
12
38
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
39
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
40
|
+
args: {
|
|
41
|
+
description:
|
|
42
|
+
'An instantiatable RandomPicker from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
43
|
+
enabled: false,
|
|
44
|
+
name: 'Random picker',
|
|
45
|
+
},
|
|
15
46
|
}
|
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { RandomPicker } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { RandomPicker, type RandomPickerProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export default function RandomPickerExample({
|
|
6
|
+
data,
|
|
7
|
+
style,
|
|
8
|
+
}: Pick<RandomPickerProps, 'data' | 'style'>) {
|
|
8
9
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<RandomPicker
|
|
12
|
-
mode="list"
|
|
13
|
-
options={['Take a walk', 'Make some tea', 'Read a chapter']}
|
|
14
|
-
title="What should we do?"
|
|
15
|
-
/>
|
|
16
|
-
)
|
|
10
|
+
return <RandomPicker data={data} style={style} />
|
|
17
11
|
}
|
|
18
|
-
|
|
19
|
-
export const exampleMetadata = {
|
|
20
|
-
description:
|
|
21
|
-
'An instantiatable RandomPicker from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
22
|
-
name: 'RandomPicker',
|
|
23
|
-
} satisfies ExampleMetadata
|
|
@@ -1,15 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { RatingData } from '@flickfyi/core/kowalski/catalog'
|
|
2
|
+
import type { Meta } from '@storybook/react-vite'
|
|
3
|
+
import type { z } from 'zod/v4'
|
|
4
|
+
|
|
5
|
+
import { type ExampleStory, schemaArgTypes } from '@flickfyi/core/examples/metadata'
|
|
2
6
|
|
|
3
7
|
import RatingExample from './rating'
|
|
4
8
|
import exampleSource from './rating.tsx?raw'
|
|
5
9
|
|
|
10
|
+
// Keep catalog metadata outside the component's content.
|
|
11
|
+
const storyProps = RatingData.strip().transform(data => ({ data }))
|
|
6
12
|
const meta = {
|
|
7
|
-
|
|
13
|
+
argTypes: schemaArgTypes(RatingData),
|
|
14
|
+
args: { subject: "Luigi's on 5th", title: 'Rate dinner' },
|
|
8
15
|
parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
|
|
16
|
+
render: args => <RatingExample {...storyProps.parse(args)} />,
|
|
9
17
|
title: 'Kowalski/Rating',
|
|
10
|
-
} satisfies Meta<typeof
|
|
18
|
+
} satisfies Meta<z.input<typeof storyProps>>
|
|
11
19
|
|
|
12
20
|
export default meta
|
|
13
|
-
export const Example:
|
|
14
|
-
args: {
|
|
21
|
+
export const Example: ExampleStory<typeof meta> = {
|
|
22
|
+
args: {
|
|
23
|
+
description:
|
|
24
|
+
'An instantiatable Rating from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
25
|
+
enabled: false,
|
|
26
|
+
name: 'Rating',
|
|
27
|
+
},
|
|
15
28
|
}
|
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
import { useTheme } from '@flickfyi/core'
|
|
2
2
|
import { theme } from '@flickfyi/core/examples/kowalski/theme'
|
|
3
|
-
import { Rating } from '@flickfyi/core/kowalski'
|
|
3
|
+
import { Rating, type RatingProps } from '@flickfyi/core/kowalski'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export default function RatingExample({
|
|
6
|
+
data,
|
|
7
|
+
style,
|
|
8
|
+
}: Pick<RatingProps, 'data' | 'style'>) {
|
|
8
9
|
useTheme(theme)
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<Rating subject="Luigi's on 5th" title="Rate dinner" />
|
|
12
|
-
)
|
|
10
|
+
return <Rating data={data} style={style} />
|
|
13
11
|
}
|
|
14
|
-
|
|
15
|
-
export const exampleMetadata = {
|
|
16
|
-
description:
|
|
17
|
-
'An instantiatable Rating from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
|
|
18
|
-
name: 'Rating',
|
|
19
|
-
} satisfies ExampleMetadata
|