@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.
Files changed (243) hide show
  1. package/dist/{api-client-CAg1b8Bh.js → api-client-nn4U_Vfn.js} +1 -1
  2. package/dist/{app-DpM5nhb9.js → app-COXGJhrt.js} +3 -3
  3. package/dist/{bundler-DNrDcqyk.js → bundler-CW4YC73e.js} +4 -2
  4. package/dist/cli.js +11 -11
  5. package/dist/{delegate-DcVye0KE.js → delegate-aUVluBjB.js} +2 -2
  6. package/dist/{generate-B1l1z_FZ.js → generate-BeL1QPDi.js} +1 -1
  7. package/dist/{preview-Dqn_Tq6K.js → preview-DTVM8Csb.js} +2 -2
  8. package/dist/{publish-BmDqO1xU.js → publish-BJG-s-w5.js} +4 -4
  9. package/dist/{pull-CO80DMn8.js → pull-B_Yfjpi2.js} +1 -1
  10. package/dist/{save-8crfOeo1.js → save-UrfgmK2-.js} +2 -2
  11. package/dist/{sdk-app-BXWrf_pf.js → sdk-app-BAxznAf9.js} +3 -3
  12. package/dist/{sdk-deploy-CaEonlvx.js → sdk-deploy-D1wgQxse.js} +3 -3
  13. package/dist/{sdk-generation-CF8ATbrL.js → sdk-generation-CLQ-QrVM.js} +1 -1
  14. package/dist/{sdk-project-CKV3U3u9.js → sdk-project-BaO0fqhW.js} +1 -1
  15. package/dist/{use-auth-B6nwU2rp.js → use-auth-CtM4_BAY.js} +1 -1
  16. package/node_modules/@flickfyi/biscuit/.turbo/turbo-build.log +4 -4
  17. package/node_modules/@flickfyi/core/README.md +19 -9
  18. package/node_modules/@flickfyi/core/dist/chunks/{default-CuxDsQoM.js → default-BTmKidHV.js} +1 -1
  19. package/node_modules/@flickfyi/core/dist/chunks/{default-BB6YexEH.cjs → default-JhTq5I_y.cjs} +1 -1
  20. package/node_modules/@flickfyi/core/dist/chunks/{define-CUJRqVKY.cjs → define-BKCRhpuY.cjs} +1 -1
  21. package/node_modules/@flickfyi/core/dist/chunks/{define-e_VqSs4M.js → define-DZXgUsy7.js} +5 -5
  22. package/node_modules/@flickfyi/core/dist/kowalski/catalog.cjs +1 -1
  23. package/node_modules/@flickfyi/core/dist/kowalski/catalog.js +728 -549
  24. package/node_modules/@flickfyi/core/dist/kowalski/index.cjs +5 -5
  25. package/node_modules/@flickfyi/core/dist/kowalski/index.js +4297 -3700
  26. package/node_modules/@flickfyi/core/dist/kowalski/schemas.cjs +1 -0
  27. package/node_modules/@flickfyi/core/dist/kowalski/schemas.js +637 -0
  28. package/node_modules/@flickfyi/core/dist/kowalski-catalog.css +516 -0
  29. package/node_modules/@flickfyi/core/dist/kowalski.css +10 -0
  30. package/node_modules/@flickfyi/core/dist/themes/athletic/athletic.cjs +1 -1
  31. package/node_modules/@flickfyi/core/dist/themes/athletic/athletic.js +1 -1
  32. package/node_modules/@flickfyi/core/dist/themes/compact/compact.cjs +1 -1
  33. package/node_modules/@flickfyi/core/dist/themes/compact/compact.js +1 -1
  34. package/node_modules/@flickfyi/core/dist/themes/default/default.cjs +1 -1
  35. package/node_modules/@flickfyi/core/dist/themes/default/default.js +1 -1
  36. package/node_modules/@flickfyi/core/dist/themes/editorial/editorial.cjs +1 -1
  37. package/node_modules/@flickfyi/core/dist/themes/editorial/editorial.js +1 -1
  38. package/node_modules/@flickfyi/core/dist/themes/handwritten/handwritten.cjs +1 -1
  39. package/node_modules/@flickfyi/core/dist/themes/handwritten/handwritten.js +1 -1
  40. package/node_modules/@flickfyi/core/dist/themes/index.cjs +1 -1
  41. package/node_modules/@flickfyi/core/dist/themes/index.js +1 -1
  42. package/node_modules/@flickfyi/core/dist/themes/kids/kids.cjs +1 -1
  43. package/node_modules/@flickfyi/core/dist/themes/kids/kids.js +1 -1
  44. package/node_modules/@flickfyi/core/dist/themes/rounded/rounded.cjs +1 -1
  45. package/node_modules/@flickfyi/core/dist/themes/rounded/rounded.js +1 -1
  46. package/node_modules/@flickfyi/core/dist/themes/technical/technical.cjs +1 -1
  47. package/node_modules/@flickfyi/core/dist/themes/technical/technical.js +1 -1
  48. package/node_modules/@flickfyi/core/dist-types/hooks/use-feature-store/index.d.ts +43 -0
  49. package/node_modules/@flickfyi/core/dist-types/kowalski/calculations.d.ts +57 -3
  50. package/node_modules/@flickfyi/core/dist-types/kowalski/calculator.d.ts +7 -6
  51. package/node_modules/@flickfyi/core/dist-types/kowalski/catalog.d.cts +524 -809
  52. package/node_modules/@flickfyi/core/dist-types/kowalski/catalog.d.ts +524 -809
  53. package/node_modules/@flickfyi/core/dist-types/kowalski/components/bill-split.d.ts +38 -0
  54. package/node_modules/@flickfyi/core/dist-types/kowalski/components/bookmark.d.ts +48 -0
  55. package/node_modules/@flickfyi/core/dist-types/kowalski/components/budget.d.ts +39 -0
  56. package/node_modules/@flickfyi/core/dist-types/kowalski/components/calculator.d.ts +62 -0
  57. package/node_modules/@flickfyi/core/dist-types/kowalski/components/checklist.d.ts +35 -0
  58. package/node_modules/@flickfyi/core/dist-types/kowalski/components/color-palette.d.ts +32 -0
  59. package/node_modules/@flickfyi/core/dist-types/kowalski/components/contact.d.ts +41 -0
  60. package/node_modules/@flickfyi/core/dist-types/kowalski/components/countdown.d.ts +34 -0
  61. package/node_modules/@flickfyi/core/dist-types/kowalski/components/event.d.ts +43 -0
  62. package/node_modules/@flickfyi/core/dist-types/kowalski/components/expense.d.ts +40 -0
  63. package/node_modules/@flickfyi/core/dist-types/kowalski/components/goal.d.ts +36 -0
  64. package/node_modules/@flickfyi/core/dist-types/kowalski/components/habit.d.ts +57 -0
  65. package/node_modules/@flickfyi/core/dist-types/kowalski/components/ledger.d.ts +43 -0
  66. package/node_modules/@flickfyi/core/dist-types/kowalski/components/note.d.ts +35 -0
  67. package/node_modules/@flickfyi/core/dist-types/kowalski/components/poll.d.ts +41 -0
  68. package/node_modules/@flickfyi/core/dist-types/kowalski/components/random-picker.d.ts +69 -0
  69. package/node_modules/@flickfyi/core/dist-types/kowalski/components/rating.d.ts +33 -0
  70. package/node_modules/@flickfyi/core/dist-types/kowalski/components/reminder.d.ts +48 -0
  71. package/node_modules/@flickfyi/core/dist-types/kowalski/components/rotation.d.ts +39 -0
  72. package/node_modules/@flickfyi/core/dist-types/kowalski/components/scoreboard.d.ts +37 -0
  73. package/node_modules/@flickfyi/core/dist-types/kowalski/components/shopping-list.d.ts +41 -0
  74. package/node_modules/@flickfyi/core/dist-types/kowalski/components/task-board.d.ts +39 -0
  75. package/node_modules/@flickfyi/core/dist-types/kowalski/components/time-zone.d.ts +34 -0
  76. package/node_modules/@flickfyi/core/dist-types/kowalski/components/timer.d.ts +43 -0
  77. package/node_modules/@flickfyi/core/dist-types/kowalski/components/trip.d.ts +61 -0
  78. package/node_modules/@flickfyi/core/dist-types/kowalski/components/unit-converter.d.ts +106 -0
  79. package/node_modules/@flickfyi/core/dist-types/kowalski/create-schemas.d.ts +6 -0
  80. package/node_modules/@flickfyi/core/dist-types/kowalski/date-time.d.ts +1 -1
  81. package/node_modules/@flickfyi/core/dist-types/kowalski/everyday.d.ts +28 -8
  82. package/node_modules/@flickfyi/core/dist-types/kowalski/feature-schema.d.ts +65 -0
  83. package/node_modules/@flickfyi/core/dist-types/kowalski/format.d.ts +4 -0
  84. package/node_modules/@flickfyi/core/dist-types/kowalski/fortune.d.ts +21 -0
  85. package/node_modules/@flickfyi/core/dist-types/kowalski/frame.d.ts +4 -4
  86. package/node_modules/@flickfyi/core/dist-types/kowalski/index.d.cts +31 -7
  87. package/node_modules/@flickfyi/core/dist-types/kowalski/index.d.ts +31 -7
  88. package/node_modules/@flickfyi/core/dist-types/kowalski/lesson.d.ts +89 -0
  89. package/node_modules/@flickfyi/core/dist-types/kowalski/recipe.d.ts +129 -8
  90. package/node_modules/@flickfyi/core/dist-types/kowalski/schemas.d.cts +4 -0
  91. package/node_modules/@flickfyi/core/dist-types/kowalski/schemas.d.ts +4 -0
  92. package/node_modules/@flickfyi/core/dist-types/kowalski/time-since.d.ts +34 -0
  93. package/node_modules/@flickfyi/core/examples/example-metadata.ts +19 -2
  94. package/node_modules/@flickfyi/core/examples/kowalski/bill-split/bill-split.stories.tsx +25 -6
  95. package/node_modules/@flickfyi/core/examples/kowalski/bill-split/bill-split.tsx +6 -12
  96. package/node_modules/@flickfyi/core/examples/kowalski/bookmark/bookmark.stories.tsx +22 -5
  97. package/node_modules/@flickfyi/core/examples/kowalski/bookmark/bookmark.tsx +6 -18
  98. package/node_modules/@flickfyi/core/examples/kowalski/budget/budget.stories.tsx +26 -5
  99. package/node_modules/@flickfyi/core/examples/kowalski/budget/budget.tsx +6 -21
  100. package/node_modules/@flickfyi/core/examples/kowalski/calculator/calculator.stories.tsx +18 -5
  101. package/node_modules/@flickfyi/core/examples/kowalski/calculator/calculator.tsx +6 -19
  102. package/node_modules/@flickfyi/core/examples/kowalski/checklist/checklist.stories.tsx +25 -5
  103. package/node_modules/@flickfyi/core/examples/kowalski/checklist/checklist.tsx +6 -21
  104. package/node_modules/@flickfyi/core/examples/kowalski/color-palette/color-palette.stories.tsx +19 -6
  105. package/node_modules/@flickfyi/core/examples/kowalski/color-palette/color-palette.tsx +6 -17
  106. package/node_modules/@flickfyi/core/examples/kowalski/contact/contact.stories.tsx +30 -5
  107. package/node_modules/@flickfyi/core/examples/kowalski/contact/contact.tsx +6 -18
  108. package/node_modules/@flickfyi/core/examples/kowalski/countdown/countdown.stories.tsx +22 -5
  109. package/node_modules/@flickfyi/core/examples/kowalski/countdown/countdown.tsx +6 -18
  110. package/node_modules/@flickfyi/core/examples/kowalski/event/event.stories.tsx +23 -5
  111. package/node_modules/@flickfyi/core/examples/kowalski/event/event.tsx +6 -19
  112. package/node_modules/@flickfyi/core/examples/kowalski/expense/expense.stories.tsx +23 -5
  113. package/node_modules/@flickfyi/core/examples/kowalski/expense/expense.tsx +6 -18
  114. package/node_modules/@flickfyi/core/examples/kowalski/fortune/fortune.stories.tsx +61 -0
  115. package/node_modules/@flickfyi/core/examples/kowalski/fortune/fortune.tsx +11 -0
  116. package/node_modules/@flickfyi/core/examples/kowalski/goal/goal.stories.tsx +18 -5
  117. package/node_modules/@flickfyi/core/examples/kowalski/goal/goal.tsx +3 -19
  118. package/node_modules/@flickfyi/core/examples/kowalski/habit/habit.stories.tsx +22 -5
  119. package/node_modules/@flickfyi/core/examples/kowalski/habit/habit.tsx +6 -18
  120. package/node_modules/@flickfyi/core/examples/kowalski/ledger/ledger.stories.tsx +25 -5
  121. package/node_modules/@flickfyi/core/examples/kowalski/ledger/ledger.tsx +6 -20
  122. package/node_modules/@flickfyi/core/examples/kowalski/lesson/lesson.stories.tsx +99 -0
  123. package/node_modules/@flickfyi/core/examples/kowalski/lesson/lesson.tsx +11 -0
  124. package/node_modules/@flickfyi/core/examples/kowalski/note/note.stories.tsx +21 -5
  125. package/node_modules/@flickfyi/core/examples/kowalski/note/note.tsx +3 -17
  126. package/node_modules/@flickfyi/core/examples/kowalski/poll/poll.stories.tsx +26 -5
  127. package/node_modules/@flickfyi/core/examples/kowalski/poll/poll.tsx +3 -21
  128. package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.stories.tsx +37 -6
  129. package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.tsx +6 -18
  130. package/node_modules/@flickfyi/core/examples/kowalski/rating/rating.stories.tsx +18 -5
  131. package/node_modules/@flickfyi/core/examples/kowalski/rating/rating.tsx +6 -14
  132. package/node_modules/@flickfyi/core/examples/kowalski/recipe/recipe.stories.tsx +117 -5
  133. package/node_modules/@flickfyi/core/examples/kowalski/recipe/recipe.tsx +6 -115
  134. package/node_modules/@flickfyi/core/examples/kowalski/reminder/reminder.stories.tsx +22 -5
  135. package/node_modules/@flickfyi/core/examples/kowalski/reminder/reminder.tsx +6 -18
  136. package/node_modules/@flickfyi/core/examples/kowalski/rotation/rotation.stories.tsx +26 -5
  137. package/node_modules/@flickfyi/core/examples/kowalski/rotation/rotation.tsx +6 -22
  138. package/node_modules/@flickfyi/core/examples/kowalski/scoreboard/scoreboard.stories.tsx +26 -5
  139. package/node_modules/@flickfyi/core/examples/kowalski/scoreboard/scoreboard.tsx +6 -21
  140. package/node_modules/@flickfyi/core/examples/kowalski/shopping-list/shopping-list.stories.tsx +28 -6
  141. package/node_modules/@flickfyi/core/examples/kowalski/shopping-list/shopping-list.tsx +6 -22
  142. package/node_modules/@flickfyi/core/examples/kowalski/task-board/task-board.stories.tsx +27 -6
  143. package/node_modules/@flickfyi/core/examples/kowalski/task-board/task-board.tsx +6 -22
  144. package/node_modules/@flickfyi/core/examples/kowalski/time-since/time-since.stories.tsx +33 -0
  145. package/node_modules/@flickfyi/core/examples/kowalski/time-since/time-since.tsx +12 -0
  146. package/node_modules/@flickfyi/core/examples/kowalski/time-zone/time-zone.stories.tsx +22 -6
  147. package/node_modules/@flickfyi/core/examples/kowalski/time-zone/time-zone.tsx +6 -17
  148. package/node_modules/@flickfyi/core/examples/kowalski/timer/timer.stories.tsx +18 -5
  149. package/node_modules/@flickfyi/core/examples/kowalski/timer/timer.tsx +6 -18
  150. package/node_modules/@flickfyi/core/examples/kowalski/trip/trip.stories.tsx +25 -5
  151. package/node_modules/@flickfyi/core/examples/kowalski/trip/trip.tsx +3 -21
  152. package/node_modules/@flickfyi/core/examples/kowalski/unit-converter/unit-converter.stories.tsx +19 -6
  153. package/node_modules/@flickfyi/core/examples/kowalski/unit-converter/unit-converter.tsx +6 -19
  154. package/node_modules/@flickfyi/core/examples/parrott/calculator/calculator.stories.tsx +10 -3
  155. package/node_modules/@flickfyi/core/examples/parrott/calculator/calculator.tsx +2 -13
  156. package/node_modules/@flickfyi/core/examples/parrott/checklist/checklist.stories.tsx +10 -3
  157. package/node_modules/@flickfyi/core/examples/parrott/checklist/checklist.tsx +0 -8
  158. package/node_modules/@flickfyi/core/examples/parrott/countdown/countdown.stories.tsx +10 -3
  159. package/node_modules/@flickfyi/core/examples/parrott/countdown/countdown.tsx +0 -8
  160. package/node_modules/@flickfyi/core/examples/parrott/counter/counter.stories.tsx +10 -3
  161. package/node_modules/@flickfyi/core/examples/parrott/counter/counter.tsx +0 -8
  162. package/node_modules/@flickfyi/core/examples/parrott/fortune/fortune.stories.tsx +10 -3
  163. package/node_modules/@flickfyi/core/examples/parrott/fortune/fortune.tsx +0 -8
  164. package/node_modules/@flickfyi/core/examples/parrott/grid/grid.stories.tsx +10 -3
  165. package/node_modules/@flickfyi/core/examples/parrott/grid/grid.tsx +4 -9
  166. package/node_modules/@flickfyi/core/examples/parrott/kale-smoothie/kale-smoothie.stories.tsx +10 -3
  167. package/node_modules/@flickfyi/core/examples/parrott/kale-smoothie/kale-smoothie.tsx +0 -8
  168. package/node_modules/@flickfyi/core/examples/parrott/list/list.stories.tsx +10 -3
  169. package/node_modules/@flickfyi/core/examples/parrott/list/list.tsx +0 -8
  170. package/node_modules/@flickfyi/core/examples/parrott/log/log.stories.tsx +10 -3
  171. package/node_modules/@flickfyi/core/examples/parrott/log/log.tsx +0 -8
  172. package/node_modules/@flickfyi/core/examples/parrott/timed-task/timed-task.stories.tsx +10 -3
  173. package/node_modules/@flickfyi/core/examples/parrott/timed-task/timed-task.tsx +0 -8
  174. package/node_modules/@flickfyi/core/examples/parrott/timer/timer.stories.tsx +10 -3
  175. package/node_modules/@flickfyi/core/examples/parrott/timer/timer.tsx +0 -8
  176. package/node_modules/@flickfyi/core/package.json +16 -3
  177. package/node_modules/@flickfyi/core/src/{kowalski/use-configured-feature.ts → hooks/use-configured-feature/index.ts} +1 -1
  178. package/node_modules/@flickfyi/core/src/{kowalski/use-feature-store.ts → hooks/use-feature-store/index.ts} +37 -12
  179. package/node_modules/@flickfyi/core/src/kowalski/README.md +13 -0
  180. package/node_modules/@flickfyi/core/src/kowalski/calculations.ts +36 -8
  181. package/node_modules/@flickfyi/core/src/kowalski/calculator.ts +15 -7
  182. package/node_modules/@flickfyi/core/src/kowalski/catalog.ts +110 -704
  183. package/node_modules/@flickfyi/core/src/kowalski/components/bill-split.tsx +284 -0
  184. package/node_modules/@flickfyi/core/src/kowalski/components/bookmark.tsx +347 -0
  185. package/node_modules/@flickfyi/core/src/kowalski/components/budget.tsx +169 -0
  186. package/node_modules/@flickfyi/core/src/kowalski/components/calculator.tsx +202 -0
  187. package/node_modules/@flickfyi/core/src/kowalski/components/checklist.tsx +119 -0
  188. package/node_modules/@flickfyi/core/src/kowalski/components/color-palette.tsx +302 -0
  189. package/node_modules/@flickfyi/core/src/kowalski/components/contact.tsx +247 -0
  190. package/node_modules/@flickfyi/core/src/kowalski/components/countdown.tsx +173 -0
  191. package/node_modules/@flickfyi/core/src/kowalski/components/event.tsx +260 -0
  192. package/node_modules/@flickfyi/core/src/kowalski/components/expense.tsx +257 -0
  193. package/node_modules/@flickfyi/core/src/kowalski/components/goal.tsx +182 -0
  194. package/node_modules/@flickfyi/core/src/kowalski/components/habit.tsx +272 -0
  195. package/node_modules/@flickfyi/core/src/kowalski/components/ledger.tsx +211 -0
  196. package/node_modules/@flickfyi/core/src/kowalski/components/note.tsx +188 -0
  197. package/node_modules/@flickfyi/core/src/kowalski/components/poll.tsx +242 -0
  198. package/node_modules/@flickfyi/core/src/kowalski/components/random-picker.tsx +308 -0
  199. package/node_modules/@flickfyi/core/src/kowalski/components/rating.tsx +112 -0
  200. package/node_modules/@flickfyi/core/src/kowalski/components/reminder.tsx +298 -0
  201. package/node_modules/@flickfyi/core/src/kowalski/components/rotation.tsx +146 -0
  202. package/node_modules/@flickfyi/core/src/kowalski/components/scoreboard.tsx +139 -0
  203. package/node_modules/@flickfyi/core/src/kowalski/components/shopping-list.tsx +144 -0
  204. package/node_modules/@flickfyi/core/src/kowalski/components/task-board.tsx +146 -0
  205. package/node_modules/@flickfyi/core/src/kowalski/components/time-zone.tsx +240 -0
  206. package/node_modules/@flickfyi/core/src/kowalski/components/timer.tsx +225 -0
  207. package/node_modules/@flickfyi/core/src/kowalski/components/trip.tsx +338 -0
  208. package/node_modules/@flickfyi/core/src/kowalski/components/unit-converter.tsx +285 -0
  209. package/node_modules/@flickfyi/core/src/kowalski/create-schemas.ts +8 -0
  210. package/node_modules/@flickfyi/core/src/kowalski/date-time.tsx +1 -1
  211. package/node_modules/@flickfyi/core/src/kowalski/everyday.tsx +1 -640
  212. package/node_modules/@flickfyi/core/src/kowalski/feature-schema.ts +84 -0
  213. package/node_modules/@flickfyi/core/src/kowalski/format.ts +29 -3
  214. package/node_modules/@flickfyi/core/src/kowalski/fortune.tsx +67 -0
  215. package/node_modules/@flickfyi/core/src/kowalski/frame.tsx +5 -6
  216. package/node_modules/@flickfyi/core/src/kowalski/index.ts +31 -22
  217. package/node_modules/@flickfyi/core/src/kowalski/lesson.tsx +564 -0
  218. package/node_modules/@flickfyi/core/src/kowalski/recipe.tsx +78 -37
  219. package/node_modules/@flickfyi/core/src/kowalski/schemas.ts +67 -0
  220. package/node_modules/@flickfyi/core/src/kowalski/stories/composition.tsx +22 -20
  221. package/node_modules/@flickfyi/core/src/kowalski/time-since.tsx +145 -0
  222. package/node_modules/@flickfyi/core/src/molecules/progress/progress.tsx +4 -1
  223. package/node_modules/@flickfyi/core/src/oklch.ts +1 -6
  224. package/node_modules/@flickfyi/core/src/parrott/theme.ts +3 -1
  225. package/node_modules/@flickfyi/core/src/themes/editorial/editorial.ts +6 -1
  226. package/node_modules/@flickfyi/core/src/themes/palette.ts +5 -5
  227. package/node_modules/@flickfyi/core/src/themes/stories/composition.tsx +11 -9
  228. package/node_modules/@flickfyi/core/src/themes/stories/gallery.tsx +7 -11
  229. package/node_modules/@flickfyi/core/tsgo.bun.lock +7 -7
  230. package/node_modules/@flickfyi/core/tsgo.package.json +1 -1
  231. package/package.json +2 -2
  232. package/node_modules/@flickfyi/core/dist-types/kowalski/clocks.d.ts +0 -4
  233. package/node_modules/@flickfyi/core/dist-types/kowalski/details.d.ts +0 -7
  234. package/node_modules/@flickfyi/core/dist-types/kowalski/productivity.d.ts +0 -5
  235. package/node_modules/@flickfyi/core/dist-types/kowalski/tools.d.ts +0 -7
  236. package/node_modules/@flickfyi/core/dist-types/kowalski/use-feature-store.d.ts +0 -15
  237. package/node_modules/@flickfyi/core/src/kowalski/clocks.tsx +0 -464
  238. package/node_modules/@flickfyi/core/src/kowalski/details.tsx +0 -1387
  239. package/node_modules/@flickfyi/core/src/kowalski/productivity.tsx +0 -575
  240. package/node_modules/@flickfyi/core/src/kowalski/tools.tsx +0 -1213
  241. /package/node_modules/@flickfyi/core/dist-types/{kowalski/use-clock.d.ts → hooks/use-clock/index.d.ts} +0 -0
  242. /package/node_modules/@flickfyi/core/dist-types/{kowalski/use-configured-feature.d.ts → hooks/use-configured-feature/index.d.ts} +0 -0
  243. /package/node_modules/@flickfyi/core/src/{kowalski/use-clock.ts → hooks/use-clock/index.ts} +0 -0
@@ -1,15 +1,127 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { RecipeData } 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 RecipeExample from './recipe'
4
8
  import exampleSource from './recipe.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = RecipeData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: RecipeExample,
13
+ argTypes: { ...schemaArgTypes(RecipeData), yield: { control: 'text' } },
14
+ args: {
15
+ ingredients: [
16
+ { id: 'water', label: 'Well-salted water' },
17
+ { amount: 200, id: 'pasta', label: 'Spaghetti', unit: 'g' },
18
+ { amount: 4, id: 'oil', label: 'Olive oil', unit: 'tbsp' },
19
+ { amount: 3, id: 'garlic', label: 'Garlic cloves' },
20
+ { id: 'chili', label: 'Chili flakes', notes: ['optional'], unit: 'a pinch' },
21
+ { id: 'parsley', label: 'Parsley', unit: 'a handful' },
22
+ { id: 'cheese', label: 'Grated Parmesan', unit: 'to taste' },
23
+ ],
24
+ servings: 2,
25
+ steps: [
26
+ {
27
+ attention: 'passive',
28
+ id: 'heat-water',
29
+ instruction: 'Bring a large pot of salted water to a boil.',
30
+ kind: 'setup',
31
+ label: 'water',
32
+ outputs: [{ id: 'boiling-water', name: 'Boiling water' }],
33
+ uses: [{ id: 'u-water', source: { ingredientId: 'water', kind: 'ingredient' } }],
34
+ },
35
+ {
36
+ id: 'slice',
37
+ instruction: 'Thinly slice the garlic and chop the parsley.',
38
+ label: 'slicing',
39
+ outputs: [
40
+ { id: 'sliced-garlic', name: 'Sliced garlic' },
41
+ { id: 'chopped-parsley', name: 'Chopped parsley' },
42
+ ],
43
+ uses: [
44
+ { id: 'u-garlic', source: { ingredientId: 'garlic', kind: 'ingredient' } },
45
+ { id: 'u-parsley', source: { ingredientId: 'parsley', kind: 'ingredient' } },
46
+ ],
47
+ },
48
+ {
49
+ attention: 'passive',
50
+ doneness: 'al dente',
51
+ duration: { maxMinutes: 10, minMinutes: 8, raw: '8–10 min' },
52
+ id: 'boil',
53
+ instruction: 'Cook the spaghetti until al dente.',
54
+ label: 'pasta',
55
+ outputs: [{ id: 'pasta-pot', name: 'Pasta in its water' }],
56
+ uses: [
57
+ { id: 'u-pot', source: { kind: 'output', outputId: 'boiling-water' } },
58
+ { id: 'u-pasta', source: { ingredientId: 'pasta', kind: 'ingredient' } },
59
+ ],
60
+ },
61
+ {
62
+ attention: 'active',
63
+ doneness: 'pale gold',
64
+ duration: { maxMinutes: 4, minMinutes: 4, raw: '4 min' },
65
+ id: 'sizzle',
66
+ instruction: 'Cook the garlic and chili in the oil over low heat.',
67
+ label: 'garlic oil',
68
+ outputs: [{ id: 'garlic-oil', name: 'Garlic oil' }],
69
+ uses: [
70
+ { id: 'u-oil', source: { ingredientId: 'oil', kind: 'ingredient' } },
71
+ { id: 'u-sliced', source: { kind: 'output', outputId: 'sliced-garlic' } },
72
+ { id: 'u-chili', source: { ingredientId: 'chili', kind: 'ingredient' } },
73
+ ],
74
+ },
75
+ {
76
+ id: 'drain',
77
+ instruction: 'Drain the pasta, saving a cup of the cooking water.',
78
+ label: 'draining',
79
+ outputs: [
80
+ { id: 'drained', name: 'Drained pasta' },
81
+ { id: 'pasta-water', name: 'Pasta water' },
82
+ ],
83
+ uses: [{ id: 'u-drain', source: { kind: 'output', outputId: 'pasta-pot' } }],
84
+ },
85
+ {
86
+ id: 'toss',
87
+ instruction: 'Toss the pasta in the garlic oil with a splash of pasta water.',
88
+ label: 'tossing',
89
+ outputs: [{ id: 'tossed', name: 'Tossed pasta' }],
90
+ uses: [
91
+ { id: 'u-drained', source: { kind: 'output', outputId: 'drained' } },
92
+ { id: 'u-garlic-oil', source: { kind: 'output', outputId: 'garlic-oil' } },
93
+ {
94
+ id: 'u-pasta-water',
95
+ portion: 'a splash',
96
+ source: { kind: 'output', outputId: 'pasta-water' },
97
+ },
98
+ ],
99
+ },
100
+ {
101
+ id: 'serve',
102
+ instruction: 'Finish with the parsley and Parmesan, and serve.',
103
+ kind: 'serve',
104
+ label: 'serving',
105
+ uses: [
106
+ { id: 'u-tossed', source: { kind: 'output', outputId: 'tossed' } },
107
+ { id: 'u-chopped', source: { kind: 'output', outputId: 'chopped-parsley' } },
108
+ { id: 'u-cheese', source: { ingredientId: 'cheese', kind: 'ingredient' } },
109
+ ],
110
+ },
111
+ ],
112
+ title: 'Aglio e olio',
113
+ },
8
114
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
115
+ render: args => <RecipeExample {...storyProps.parse(args)} />,
9
116
  title: 'Kowalski/Recipe',
10
- } satisfies Meta<typeof RecipeExample>
117
+ } satisfies Meta<z.input<typeof storyProps>>
11
118
 
12
119
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
120
+ export const Example: ExampleStory<typeof meta> = {
121
+ args: {
122
+ description:
123
+ 'An instantiatable Recipe from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
124
+ enabled: false,
125
+ name: 'Recipe',
126
+ },
15
127
  }
@@ -1,120 +1,11 @@
1
1
  import { useTheme } from '@flickfyi/core'
2
2
  import { theme } from '@flickfyi/core/examples/kowalski/theme'
3
- import { Recipe } from '@flickfyi/core/kowalski'
3
+ import { Recipe, type RecipeProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function RecipeExample() {
5
+ export default function RecipeExample({
6
+ data,
7
+ style,
8
+ }: Pick<RecipeProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <Recipe
12
- ingredients={[
13
- { id: 'water', label: 'Well-salted water' },
14
- { amount: 200, id: 'pasta', label: 'Spaghetti', unit: 'g' },
15
- { amount: 4, id: 'oil', label: 'Olive oil', unit: 'tbsp' },
16
- { amount: 3, id: 'garlic', label: 'Garlic cloves' },
17
- { id: 'chili', label: 'Chili flakes', notes: ['optional'], unit: 'a pinch' },
18
- { id: 'parsley', label: 'Parsley', unit: 'a handful' },
19
- { id: 'cheese', label: 'Grated Parmesan', unit: 'to taste' },
20
- ]}
21
- servings={2}
22
- steps={[
23
- {
24
- attention: 'passive',
25
- id: 'heat-water',
26
- instruction: 'Bring a large pot of salted water to a boil.',
27
- kind: 'setup',
28
- label: 'water',
29
- outputs: [{ id: 'boiling-water', name: 'Boiling water' }],
30
- uses: [
31
- { id: 'u-water', source: { ingredientId: 'water', kind: 'ingredient' } },
32
- ],
33
- },
34
- {
35
- id: 'slice',
36
- instruction: 'Thinly slice the garlic and chop the parsley.',
37
- label: 'slicing',
38
- outputs: [
39
- { id: 'sliced-garlic', name: 'Sliced garlic' },
40
- { id: 'chopped-parsley', name: 'Chopped parsley' },
41
- ],
42
- uses: [
43
- { id: 'u-garlic', source: { ingredientId: 'garlic', kind: 'ingredient' } },
44
- { id: 'u-parsley', source: { ingredientId: 'parsley', kind: 'ingredient' } },
45
- ],
46
- },
47
- {
48
- attention: 'passive',
49
- doneness: 'al dente',
50
- duration: { maxMinutes: 10, minMinutes: 8, raw: '8–10 min' },
51
- id: 'boil',
52
- instruction: 'Cook the spaghetti until al dente.',
53
- label: 'pasta',
54
- outputs: [{ id: 'pasta-pot', name: 'Pasta in its water' }],
55
- uses: [
56
- { id: 'u-pot', source: { kind: 'output', outputId: 'boiling-water' } },
57
- { id: 'u-pasta', source: { ingredientId: 'pasta', kind: 'ingredient' } },
58
- ],
59
- },
60
- {
61
- attention: 'active',
62
- doneness: 'pale gold',
63
- duration: { maxMinutes: 4, minMinutes: 4, raw: '4 min' },
64
- id: 'sizzle',
65
- instruction: 'Cook the garlic and chili in the oil over low heat.',
66
- label: 'garlic oil',
67
- outputs: [{ id: 'garlic-oil', name: 'Garlic oil' }],
68
- uses: [
69
- { id: 'u-oil', source: { ingredientId: 'oil', kind: 'ingredient' } },
70
- { id: 'u-sliced', source: { kind: 'output', outputId: 'sliced-garlic' } },
71
- { id: 'u-chili', source: { ingredientId: 'chili', kind: 'ingredient' } },
72
- ],
73
- },
74
- {
75
- id: 'drain',
76
- instruction: 'Drain the pasta, saving a cup of the cooking water.',
77
- label: 'draining',
78
- outputs: [
79
- { id: 'drained', name: 'Drained pasta' },
80
- { id: 'pasta-water', name: 'Pasta water' },
81
- ],
82
- uses: [{ id: 'u-drain', source: { kind: 'output', outputId: 'pasta-pot' } }],
83
- },
84
- {
85
- id: 'toss',
86
- instruction: 'Toss the pasta in the garlic oil with a splash of pasta water.',
87
- label: 'tossing',
88
- outputs: [{ id: 'tossed', name: 'Tossed pasta' }],
89
- uses: [
90
- { id: 'u-drained', source: { kind: 'output', outputId: 'drained' } },
91
- { id: 'u-garlic-oil', source: { kind: 'output', outputId: 'garlic-oil' } },
92
- {
93
- id: 'u-pasta-water',
94
- portion: 'a splash',
95
- source: { kind: 'output', outputId: 'pasta-water' },
96
- },
97
- ],
98
- },
99
- {
100
- id: 'serve',
101
- instruction: 'Finish with the parsley and Parmesan, and serve.',
102
- kind: 'serve',
103
- label: 'serving',
104
- uses: [
105
- { id: 'u-tossed', source: { kind: 'output', outputId: 'tossed' } },
106
- { id: 'u-chopped', source: { kind: 'output', outputId: 'chopped-parsley' } },
107
- { id: 'u-cheese', source: { ingredientId: 'cheese', kind: 'ingredient' } },
108
- ],
109
- },
110
- ]}
111
- title="Aglio e olio"
112
- />
113
- )
10
+ return <Recipe data={data} style={style} />
114
11
  }
115
-
116
- export const exampleMetadata = {
117
- description:
118
- 'An instantiatable Recipe from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
119
- name: 'Recipe',
120
- } satisfies ExampleMetadata
@@ -1,15 +1,32 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { ReminderData } 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 ReminderExample from './reminder'
4
8
  import exampleSource from './reminder.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = ReminderData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: ReminderExample,
13
+ argTypes: { ...schemaArgTypes(ReminderData), timeZone: { control: 'text' } },
14
+ args: {
15
+ dueAt: '2026-11-06T17:00:00Z',
16
+ recurrence: 'weekly',
17
+ title: 'Water the plants',
18
+ },
8
19
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
20
+ render: args => <ReminderExample {...storyProps.parse(args)} />,
9
21
  title: 'Kowalski/Reminder',
10
- } satisfies Meta<typeof ReminderExample>
22
+ } satisfies Meta<z.input<typeof storyProps>>
11
23
 
12
24
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
25
+ export const Example: ExampleStory<typeof meta> = {
26
+ args: {
27
+ description:
28
+ 'An instantiatable Reminder from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
29
+ enabled: false,
30
+ name: 'Reminder',
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 { Reminder } from '@flickfyi/core/kowalski'
3
+ import { Reminder, type ReminderProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function ReminderExample() {
5
+ export default function ReminderExample({
6
+ data,
7
+ style,
8
+ }: Pick<ReminderProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <Reminder
12
- dueAt="2026-11-06T17:00:00Z"
13
- recurrence="weekly"
14
- title="Water the plants"
15
- />
16
- )
10
+ return <Reminder data={data} style={style} />
17
11
  }
18
-
19
- export const exampleMetadata = {
20
- description:
21
- 'An instantiatable Reminder from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
22
- name: 'Reminder',
23
- } satisfies ExampleMetadata
@@ -1,15 +1,36 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { RotationData } 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 RotationExample from './rotation'
4
8
  import exampleSource from './rotation.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = RotationData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: RotationExample,
13
+ argTypes: schemaArgTypes(RotationData),
14
+ args: {
15
+ people: [
16
+ { id: 'ava', label: 'Ava' },
17
+ { id: 'ben', label: 'Ben' },
18
+ { id: 'cleo', label: 'Cleo' },
19
+ ],
20
+ task: 'Take out the recycling',
21
+ title: 'Whose turn',
22
+ },
8
23
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
24
+ render: args => <RotationExample {...storyProps.parse(args)} />,
9
25
  title: 'Kowalski/Rotation',
10
- } satisfies Meta<typeof RotationExample>
26
+ } satisfies Meta<z.input<typeof storyProps>>
11
27
 
12
28
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
29
+ export const Example: ExampleStory<typeof meta> = {
30
+ args: {
31
+ description:
32
+ 'An instantiatable Rotation from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
33
+ enabled: false,
34
+ name: 'Rotation',
35
+ },
15
36
  }
@@ -1,27 +1,11 @@
1
1
  import { useTheme } from '@flickfyi/core'
2
2
  import { theme } from '@flickfyi/core/examples/kowalski/theme'
3
- import { Rotation } from '@flickfyi/core/kowalski'
3
+ import { Rotation, type RotationProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function RotationExample() {
5
+ export default function RotationExample({
6
+ data,
7
+ style,
8
+ }: Pick<RotationProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <Rotation
12
- people={[
13
- { id: 'ava', label: 'Ava' },
14
- { id: 'ben', label: 'Ben' },
15
- { id: 'cleo', label: 'Cleo' },
16
- ]}
17
- task="Take out the recycling"
18
- title="Whose turn"
19
- />
20
- )
10
+ return <Rotation data={data} style={style} />
21
11
  }
22
-
23
- export const exampleMetadata = {
24
- description:
25
- 'An instantiatable Rotation from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
26
- name: 'Rotation',
27
- } satisfies ExampleMetadata
@@ -1,15 +1,36 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { ScoreboardData } 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 ScoreboardExample from './scoreboard'
4
8
  import exampleSource from './scoreboard.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = ScoreboardData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: ScoreboardExample,
13
+ argTypes: schemaArgTypes(ScoreboardData),
14
+ args: {
15
+ players: [
16
+ { id: 'maya', label: 'Maya' },
17
+ { id: 'theo', label: 'Theo' },
18
+ { id: 'nina', label: 'Nina' },
19
+ ],
20
+ step: 1,
21
+ title: 'Game night',
22
+ },
8
23
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
24
+ render: args => <ScoreboardExample {...storyProps.parse(args)} />,
9
25
  title: 'Kowalski/Scoreboard',
10
- } satisfies Meta<typeof ScoreboardExample>
26
+ } satisfies Meta<z.input<typeof storyProps>>
11
27
 
12
28
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
29
+ export const Example: ExampleStory<typeof meta> = {
30
+ args: {
31
+ description:
32
+ 'An instantiatable Scoreboard from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
33
+ enabled: false,
34
+ name: 'Scoreboard',
35
+ },
15
36
  }
@@ -1,26 +1,11 @@
1
1
  import { useTheme } from '@flickfyi/core'
2
2
  import { theme } from '@flickfyi/core/examples/kowalski/theme'
3
- import { Scoreboard } from '@flickfyi/core/kowalski'
3
+ import { Scoreboard, type ScoreboardProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function ScoreboardExample() {
5
+ export default function ScoreboardExample({
6
+ data,
7
+ style,
8
+ }: Pick<ScoreboardProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <Scoreboard
12
- players={[
13
- { id: 'maya', label: 'Maya' },
14
- { id: 'theo', label: 'Theo' },
15
- { id: 'nina', label: 'Nina' },
16
- ]}
17
- title="Game night"
18
- />
19
- )
10
+ return <Scoreboard data={data} style={style} />
20
11
  }
21
-
22
- export const exampleMetadata = {
23
- description:
24
- 'An instantiatable Scoreboard from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
25
- name: 'Scoreboard',
26
- } satisfies ExampleMetadata
@@ -1,15 +1,37 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { ShoppingListData } 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 ShoppingListExample from './shopping-list'
4
8
  import exampleSource from './shopping-list.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = ShoppingListData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: ShoppingListExample,
13
+ argTypes: schemaArgTypes(ShoppingListData),
14
+ args: {
15
+ currency: 'USD',
16
+ items: [
17
+ { id: 'eggs', label: 'Eggs', price: 4.5 },
18
+ { id: 'bread', label: 'Sourdough', price: 6 },
19
+ { id: 'apples', label: 'Apples', price: 0.8, quantity: 6 },
20
+ { id: 'basil', label: 'Basil' },
21
+ ],
22
+ title: 'Saturday market',
23
+ },
8
24
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
9
- title: 'Kowalski/ShoppingList',
10
- } satisfies Meta<typeof ShoppingListExample>
25
+ render: args => <ShoppingListExample {...storyProps.parse(args)} />,
26
+ title: 'Kowalski/Shopping list',
27
+ } satisfies Meta<z.input<typeof storyProps>>
11
28
 
12
29
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
30
+ export const Example: ExampleStory<typeof meta> = {
31
+ args: {
32
+ description:
33
+ 'An instantiatable ShoppingList from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
34
+ enabled: false,
35
+ name: 'Shopping list',
36
+ },
15
37
  }
@@ -1,27 +1,11 @@
1
1
  import { useTheme } from '@flickfyi/core'
2
2
  import { theme } from '@flickfyi/core/examples/kowalski/theme'
3
- import { ShoppingList } from '@flickfyi/core/kowalski'
3
+ import { ShoppingList, type ShoppingListProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function ShoppingListExample() {
5
+ export default function ShoppingListExample({
6
+ data,
7
+ style,
8
+ }: Pick<ShoppingListProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <ShoppingList
12
- items={[
13
- { id: 'eggs', label: 'Eggs', price: 4.5 },
14
- { id: 'bread', label: 'Sourdough', price: 6 },
15
- { id: 'apples', label: 'Apples', price: 0.8, quantity: 6 },
16
- { id: 'basil', label: 'Basil' },
17
- ]}
18
- title="Saturday market"
19
- />
20
- )
10
+ return <ShoppingList data={data} style={style} />
21
11
  }
22
-
23
- export const exampleMetadata = {
24
- description:
25
- 'An instantiatable ShoppingList from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
26
- name: 'ShoppingList',
27
- } satisfies ExampleMetadata
@@ -1,15 +1,36 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { TaskBoardData } 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 TaskBoardExample from './task-board'
4
8
  import exampleSource from './task-board.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = TaskBoardData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: TaskBoardExample,
13
+ argTypes: schemaArgTypes(TaskBoardData),
14
+ args: {
15
+ tasks: [
16
+ { id: 'invite', label: 'Send the invitations' },
17
+ { id: 'venue', label: 'Confirm the venue' },
18
+ { id: 'cake', label: 'Order the cake' },
19
+ { id: 'playlist', label: 'Make a playlist' },
20
+ ],
21
+ title: 'Birthday party',
22
+ },
8
23
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
9
- title: 'Kowalski/TaskBoard',
10
- } satisfies Meta<typeof TaskBoardExample>
24
+ render: args => <TaskBoardExample {...storyProps.parse(args)} />,
25
+ title: 'Kowalski/Task board',
26
+ } satisfies Meta<z.input<typeof storyProps>>
11
27
 
12
28
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
29
+ export const Example: ExampleStory<typeof meta> = {
30
+ args: {
31
+ description:
32
+ 'An instantiatable TaskBoard from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
33
+ enabled: false,
34
+ name: 'Task board',
35
+ },
15
36
  }
@@ -1,27 +1,11 @@
1
1
  import { useTheme } from '@flickfyi/core'
2
2
  import { theme } from '@flickfyi/core/examples/kowalski/theme'
3
- import { TaskBoard } from '@flickfyi/core/kowalski'
3
+ import { TaskBoard, type TaskBoardProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function TaskBoardExample() {
5
+ export default function TaskBoardExample({
6
+ data,
7
+ style,
8
+ }: Pick<TaskBoardProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <TaskBoard
12
- tasks={[
13
- { id: 'invite', label: 'Send the invitations' },
14
- { id: 'venue', label: 'Confirm the venue' },
15
- { id: 'cake', label: 'Order the cake' },
16
- { id: 'playlist', label: 'Make a playlist' },
17
- ]}
18
- title="Birthday party"
19
- />
20
- )
10
+ return <TaskBoard data={data} style={style} />
21
11
  }
22
-
23
- export const exampleMetadata = {
24
- description:
25
- 'An instantiatable TaskBoard from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
26
- name: 'TaskBoard',
27
- } satisfies ExampleMetadata