@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
@@ -0,0 +1,65 @@
1
+ import { z } from 'zod/v4';
2
+ /** A feature's store name; without one it is Kowalski<ExportName>. */
3
+ export declare const kowalskiFeatureId: z.ZodOptional<z.ZodString>;
4
+ export declare const kowalskiScope: z.ZodDefault<z.ZodEnum<{
5
+ private: "private";
6
+ public: "public";
7
+ }>>;
8
+ export declare const featureFields: {
9
+ id: z.ZodOptional<z.ZodString>;
10
+ revision: z.ZodDefault<z.ZodNumber>;
11
+ scope: z.ZodDefault<z.ZodEnum<{
12
+ private: "private";
13
+ public: "public";
14
+ }>>;
15
+ };
16
+ export declare function store<Shape extends z.ZodRawShape>(shape: Shape): z.ZodObject<{
17
+ configuration: z.ZodDefault<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
18
+ configurationRevision: z.ZodDefault<z.ZodNumber>;
19
+ } & Shape extends infer T ? { -readonly [P in keyof T]: T[P]; } : never, z.core.$strip>;
20
+ export declare const kowalskiComponentSchema: z.ZodEnum<{
21
+ event: "event";
22
+ checklist: "checklist";
23
+ timer: "timer";
24
+ habit: "habit";
25
+ goal: "goal";
26
+ poll: "poll";
27
+ reminder: "reminder";
28
+ trip: "trip";
29
+ countdown: "countdown";
30
+ timeZone: "timeZone";
31
+ colorPalette: "colorPalette";
32
+ billSplit: "billSplit";
33
+ expense: "expense";
34
+ unitConverter: "unitConverter";
35
+ calculator: "calculator";
36
+ randomPicker: "randomPicker";
37
+ contact: "contact";
38
+ bookmark: "bookmark";
39
+ note: "note";
40
+ budget: "budget";
41
+ scoreboard: "scoreboard";
42
+ taskBoard: "taskBoard";
43
+ recipe: "recipe";
44
+ rotation: "rotation";
45
+ shoppingList: "shoppingList";
46
+ rating: "rating";
47
+ ledger: "ledger";
48
+ timeSince: "timeSince";
49
+ fortune: "fortune";
50
+ lesson: "lesson";
51
+ }>;
52
+ export type KowalskiComponent = z.infer<typeof kowalskiComponentSchema>;
53
+ /**
54
+ * Per-item state as top-level `<prefix><id>` fields, which Quantum patches independently.
55
+ * The template-literal record types them by prefix, so they never collide with the named
56
+ * fields; any other key is rejected.
57
+ */
58
+ export declare function entries<Prefix extends string, Value extends z.ZodType, Shape extends z.ZodRawShape>(prefix: Prefix, value: Value, shape: Shape): z.ZodIntersection<z.ZodObject<{
59
+ configuration: z.ZodDefault<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
60
+ configurationRevision: z.ZodDefault<z.ZodNumber>;
61
+ } & Shape extends infer T ? { -readonly [P in keyof T]: T[P]; } : never, z.core.$loose>, z.ZodRecord<z.ZodTemplateLiteral<[Prefix] extends infer T_1 ? T_1 extends [Prefix] ? T_1 extends z.core.$ZodTemplateLiteralPart[] ? `${z.core.$PartsToTemplateLiteral<T_1>}${string}` : never : never : never>, Value>>;
62
+ /** Catalog fields are whole-value replacements, not collaborative text insertions. */
63
+ export declare function replacement<Schema extends z.ZodType>(schema: Schema): z.ZodDefault<z.ZodObject<{
64
+ value: Schema;
65
+ }, z.core.$strip>>;
@@ -2,3 +2,7 @@
2
2
  export declare const format: import('@formatjs/intl').IntlShape<string>;
3
3
  /** Validate the UI's English decimal/currency grammar before removing its fixed affixes. */
4
4
  export declare function parseNumberInput(text: string, currency?: string): number;
5
+ /** Content arrives unvalidated, so an unknown currency code falls back instead of throwing. */
6
+ export declare function resolveCurrency(value: string | undefined): string | undefined;
7
+ /** Content arrives unvalidated, so an unknown time zone falls back instead of throwing. */
8
+ export declare function resolveTimeZone(value: string | undefined, fallback?: string): string;
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod/v4';
2
+ import * as stylex from '@stylexjs/stylex';
3
+ export declare const FortuneData: z.ZodObject<{
4
+ action: z.ZodString;
5
+ answers: z.ZodArray<z.ZodString>;
6
+ prompt: z.ZodString;
7
+ title: z.ZodString;
8
+ }, z.core.$strict>;
9
+ export type FortuneData = z.input<typeof FortuneData>;
10
+ export declare const FortuneProps: z.ZodObject<{
11
+ data: z.ZodObject<{
12
+ action: z.ZodString;
13
+ answers: z.ZodArray<z.ZodString>;
14
+ prompt: z.ZodString;
15
+ title: z.ZodString;
16
+ }, z.core.$strict>;
17
+ }, z.core.$strict>;
18
+ export type FortuneProps = z.input<typeof FortuneProps> & {
19
+ style?: stylex.StyleXArray<stylex.StyleXStyles>;
20
+ };
21
+ export declare function Fortune({ data, style }: FortuneProps): import('@flickfyi/photon/jsx-runtime').JSX.Element;
@@ -1,16 +1,17 @@
1
1
  import { PropsWithChildren, ReactNode } from 'react';
2
- import { KowalskiComponent } from './catalog.js';
2
+ import { KowalskiComponent } from './feature-schema.js';
3
3
  import * as stylex from '@stylexjs/stylex';
4
4
  /**
5
5
  * Every feature is one tray: the theme's tray color, radius and edge, content at p-4.
6
6
  * One painted top-level surface is also what the native renderer turns into the card.
7
7
  */
8
- export declare function FeatureFrame({ children, component, detail, header, notice, onRetry, title, trailing, }: PropsWithChildren<{
8
+ export declare function FeatureFrame({ children, component, detail, header, notice, onRetry, style, title, trailing, }: PropsWithChildren<{
9
9
  component: KowalskiComponent;
10
10
  detail?: string;
11
11
  header?: ReactNode;
12
12
  notice?: string;
13
13
  onRetry?: () => void;
14
+ style?: stylex.StyleXArray<stylex.StyleXStyles>;
14
15
  title: string;
15
16
  trailing?: ReactNode;
16
17
  }>): import('@flickfyi/photon/jsx-runtime').JSX.Element;
@@ -50,11 +51,10 @@ export declare function FeatureProgress({ value, }: {
50
51
  component: KowalskiComponent;
51
52
  value: number;
52
53
  }): import('@flickfyi/photon/jsx-runtime').JSX.Element;
53
- export declare function FeatureNumber({ component, integer, label, max, min, onChange, ready, saving, value, }: {
54
+ export declare function FeatureNumber({ component, integer, label, min, onChange, ready, saving, value, }: {
54
55
  component: KowalskiComponent;
55
56
  integer?: boolean;
56
57
  label: string;
57
- max?: number;
58
58
  min?: number;
59
59
  onChange: (value: number, onSaved: () => void) => void;
60
60
  ready: boolean;
@@ -1,8 +1,32 @@
1
- export type { KowalskiInput, KowalskiProps } from './catalog.js';
2
- export { Countdown, Timer, TimeZone } from './clocks.js';
3
- export { Bookmark, Contact, Event, Note, Reminder, Trip } from './details.js';
4
- export { Budget, Ledger, Rating, Rotation, Scoreboard, ShoppingList, TaskBoard, } from './everyday.js';
1
+ export type { CreateSchemas, CreateSchemasInput } from './create-schemas.js';
2
+ export { Fortune, type FortuneData, FortuneProps } from './fortune.js';
5
3
  export { KowalskiStack } from './frame.js';
6
- export { Checklist, Goal, Habit, Poll } from './productivity.js';
7
- export { Recipe } from './recipe.js';
8
- export { BillSplit, Calculator, ColorPalette, Expense, RandomPicker, UnitConverter, } from './tools.js';
4
+ export { Lesson, type LessonData, LessonProps } from './lesson.js';
5
+ export { Recipe, RecipeProps } from './recipe.js';
6
+ export { TimeSince, type TimeSinceData, TimeSinceProps } from './time-since.js';
7
+ export { BillSplit, BillSplitProps } from './components/bill-split.js';
8
+ export { Bookmark, BookmarkProps } from './components/bookmark.js';
9
+ export { Budget, BudgetProps } from './components/budget.js';
10
+ export { Calculator, CalculatorProps } from './components/calculator.js';
11
+ export { Checklist, ChecklistProps } from './components/checklist.js';
12
+ export { ColorPalette, ColorPaletteProps } from './components/color-palette.js';
13
+ export { Contact, ContactProps } from './components/contact.js';
14
+ export { Countdown, CountdownProps } from './components/countdown.js';
15
+ export { Event, EventProps } from './components/event.js';
16
+ export { Expense, ExpenseProps } from './components/expense.js';
17
+ export { Goal, GoalProps } from './components/goal.js';
18
+ export { Habit, HabitProps } from './components/habit.js';
19
+ export { Ledger, LedgerProps } from './components/ledger.js';
20
+ export { Note, NoteProps } from './components/note.js';
21
+ export { Poll, PollProps } from './components/poll.js';
22
+ export { RandomPicker, RandomPickerProps } from './components/random-picker.js';
23
+ export { Rating, RatingProps } from './components/rating.js';
24
+ export { Reminder, ReminderProps } from './components/reminder.js';
25
+ export { Rotation, RotationProps } from './components/rotation.js';
26
+ export { Scoreboard, ScoreboardProps } from './components/scoreboard.js';
27
+ export { ShoppingList, ShoppingListProps } from './components/shopping-list.js';
28
+ export { TaskBoard, TaskBoardProps } from './components/task-board.js';
29
+ export { TimeZone, TimeZoneProps } from './components/time-zone.js';
30
+ export { Timer, TimerProps } from './components/timer.js';
31
+ export { Trip, TripProps } from './components/trip.js';
32
+ export { UnitConverter, UnitConverterProps } from './components/unit-converter.js';
@@ -1,8 +1,32 @@
1
- export type { KowalskiInput, KowalskiProps } from './catalog.js';
2
- export { Countdown, Timer, TimeZone } from './clocks.js';
3
- export { Bookmark, Contact, Event, Note, Reminder, Trip } from './details.js';
4
- export { Budget, Ledger, Rating, Rotation, Scoreboard, ShoppingList, TaskBoard, } from './everyday.js';
1
+ export type { CreateSchemas, CreateSchemasInput } from './create-schemas.js';
2
+ export { Fortune, type FortuneData, FortuneProps } from './fortune.js';
5
3
  export { KowalskiStack } from './frame.js';
6
- export { Checklist, Goal, Habit, Poll } from './productivity.js';
7
- export { Recipe } from './recipe.js';
8
- export { BillSplit, Calculator, ColorPalette, Expense, RandomPicker, UnitConverter, } from './tools.js';
4
+ export { Lesson, type LessonData, LessonProps } from './lesson.js';
5
+ export { Recipe, RecipeProps } from './recipe.js';
6
+ export { TimeSince, type TimeSinceData, TimeSinceProps } from './time-since.js';
7
+ export { BillSplit, BillSplitProps } from './components/bill-split.js';
8
+ export { Bookmark, BookmarkProps } from './components/bookmark.js';
9
+ export { Budget, BudgetProps } from './components/budget.js';
10
+ export { Calculator, CalculatorProps } from './components/calculator.js';
11
+ export { Checklist, ChecklistProps } from './components/checklist.js';
12
+ export { ColorPalette, ColorPaletteProps } from './components/color-palette.js';
13
+ export { Contact, ContactProps } from './components/contact.js';
14
+ export { Countdown, CountdownProps } from './components/countdown.js';
15
+ export { Event, EventProps } from './components/event.js';
16
+ export { Expense, ExpenseProps } from './components/expense.js';
17
+ export { Goal, GoalProps } from './components/goal.js';
18
+ export { Habit, HabitProps } from './components/habit.js';
19
+ export { Ledger, LedgerProps } from './components/ledger.js';
20
+ export { Note, NoteProps } from './components/note.js';
21
+ export { Poll, PollProps } from './components/poll.js';
22
+ export { RandomPicker, RandomPickerProps } from './components/random-picker.js';
23
+ export { Rating, RatingProps } from './components/rating.js';
24
+ export { Reminder, ReminderProps } from './components/reminder.js';
25
+ export { Rotation, RotationProps } from './components/rotation.js';
26
+ export { Scoreboard, ScoreboardProps } from './components/scoreboard.js';
27
+ export { ShoppingList, ShoppingListProps } from './components/shopping-list.js';
28
+ export { TaskBoard, TaskBoardProps } from './components/task-board.js';
29
+ export { TimeZone, TimeZoneProps } from './components/time-zone.js';
30
+ export { Timer, TimerProps } from './components/timer.js';
31
+ export { Trip, TripProps } from './components/trip.js';
32
+ export { UnitConverter, UnitConverterProps } from './components/unit-converter.js';
@@ -0,0 +1,89 @@
1
+ import { Lesson as LessonEntity } from '@flickfyi/schemas/lesson';
2
+ import { z } from 'zod/v4';
3
+ import { CreateSchemas } from './create-schemas.js';
4
+ import * as stylex from '@stylexjs/stylex';
5
+ export declare const LessonData: z.ZodObject<{
6
+ hasPart: z.ZodArray<z.ZodObject<{
7
+ acceptedAnswer: z.ZodArray<z.ZodObject<{
8
+ answerExplanation: z.ZodString;
9
+ text: z.ZodString;
10
+ }, z.core.$strict>>;
11
+ assesses: z.ZodString;
12
+ eduQuestionType: z.ZodEnum<{
13
+ Checkbox: "Checkbox";
14
+ Flashcard: "Flashcard";
15
+ "Multiple choice": "Multiple choice";
16
+ }>;
17
+ id: z.ZodString;
18
+ suggestedAnswer: z.ZodArray<z.ZodObject<{
19
+ comment: z.ZodOptional<z.ZodString>;
20
+ text: z.ZodString;
21
+ }, z.core.$strict>>;
22
+ text: z.ZodString;
23
+ }, z.core.$strict>>;
24
+ teaches: z.ZodArray<z.ZodObject<{
25
+ description: z.ZodString;
26
+ examples: z.ZodArray<z.ZodObject<{
27
+ name: z.ZodString;
28
+ value: z.ZodString;
29
+ }, z.core.$strict>>;
30
+ id: z.ZodString;
31
+ name: z.ZodString;
32
+ }, z.core.$strict>>;
33
+ title: z.ZodString;
34
+ }, z.core.$strict>;
35
+ export type LessonData = LessonEntity;
36
+ export declare const LessonProps: z.ZodObject<{
37
+ id: z.ZodOptional<z.ZodString>;
38
+ revision: z.ZodDefault<z.ZodNumber>;
39
+ scope: z.ZodDefault<z.ZodEnum<{
40
+ private: "private";
41
+ public: "public";
42
+ }>>;
43
+ data: z.ZodObject<{
44
+ hasPart: z.ZodArray<z.ZodObject<{
45
+ acceptedAnswer: z.ZodArray<z.ZodObject<{
46
+ answerExplanation: z.ZodString;
47
+ text: z.ZodString;
48
+ }, z.core.$strict>>;
49
+ assesses: z.ZodString;
50
+ eduQuestionType: z.ZodEnum<{
51
+ Checkbox: "Checkbox";
52
+ Flashcard: "Flashcard";
53
+ "Multiple choice": "Multiple choice";
54
+ }>;
55
+ id: z.ZodString;
56
+ suggestedAnswer: z.ZodArray<z.ZodObject<{
57
+ comment: z.ZodOptional<z.ZodString>;
58
+ text: z.ZodString;
59
+ }, z.core.$strict>>;
60
+ text: z.ZodString;
61
+ }, z.core.$strict>>;
62
+ teaches: z.ZodArray<z.ZodObject<{
63
+ description: z.ZodString;
64
+ examples: z.ZodArray<z.ZodObject<{
65
+ name: z.ZodString;
66
+ value: z.ZodString;
67
+ }, z.core.$strict>>;
68
+ id: z.ZodString;
69
+ name: z.ZodString;
70
+ }, z.core.$strict>>;
71
+ title: z.ZodString;
72
+ }, z.core.$strict>;
73
+ }, z.core.$strict>;
74
+ export type LessonProps = z.input<typeof LessonProps> & {
75
+ style?: stylex.StyleXArray<stylex.StyleXStyles>;
76
+ };
77
+ /** `result_<question id>` is "first" when right on the first try, "retry" after a miss, null when unanswered. */
78
+ export declare const lessonStoreSchema: z.ZodIntersection<z.ZodObject<{
79
+ configuration: z.ZodDefault<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
80
+ configurationRevision: z.ZodDefault<z.ZodNumber>;
81
+ missed: z.ZodDefault<z.ZodArray<z.ZodString>>;
82
+ seen: z.ZodDefault<z.ZodArray<z.ZodString>>;
83
+ started: z.ZodDefault<z.ZodBoolean>;
84
+ }, z.core.$loose>, z.ZodRecord<z.ZodTemplateLiteral<`result_${string}`>, z.ZodNullable<z.ZodEnum<{
85
+ first: "first";
86
+ retry: "retry";
87
+ }>>>>;
88
+ export declare const createSchemas: CreateSchemas;
89
+ export declare function Lesson({ data, id, revision, scope, style, }: LessonProps): import('@flickfyi/photon/jsx-runtime').JSX.Element;
@@ -1,8 +1,129 @@
1
- import { KowalskiInput } from './catalog.js';
2
- /**
3
- * Cooks an RGF recipe in two modes. The overview is for reading: ingredients, servings, and
4
- * Start cooking at the bottom. Cooking fits one screen with the current step and its action at
5
- * the bottom, or the next timer to go off when nothing is ready; above it, in falling order of
6
- * attention, the other running timers, the next few steps (greyed until ready), and what's done.
7
- */
8
- export declare function Recipe(input: KowalskiInput<'recipe'>): import('@flickfyi/photon/jsx-runtime').JSX.Element;
1
+ import { Recipe as RecipeEntity } from '@flickfyi/schemas/recipe';
2
+ import { z } from 'zod/v4';
3
+ import { CreateSchemas } from './create-schemas.js';
4
+ import * as stylex from '@stylexjs/stylex';
5
+ export declare const RecipeData: z.ZodObject<{
6
+ ingredients: z.ZodArray<z.ZodObject<{
7
+ amount: z.ZodOptional<z.ZodNumber>;
8
+ id: z.ZodString;
9
+ label: z.ZodString;
10
+ notes: z.ZodOptional<z.ZodArray<z.ZodString>>;
11
+ unit: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strict>>;
13
+ servings: z.ZodOptional<z.ZodNumber>;
14
+ steps: z.ZodArray<z.ZodObject<{
15
+ after: z.ZodOptional<z.ZodArray<z.ZodString>>;
16
+ attention: z.ZodOptional<z.ZodEnum<{
17
+ active: "active";
18
+ passive: "passive";
19
+ }>>;
20
+ doneness: z.ZodOptional<z.ZodString>;
21
+ duration: z.ZodOptional<z.ZodObject<{
22
+ maxMinutes: z.ZodOptional<z.ZodNumber>;
23
+ minMinutes: z.ZodOptional<z.ZodNumber>;
24
+ raw: z.ZodString;
25
+ }, z.core.$strict>>;
26
+ equipment: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ id: z.ZodString;
28
+ instruction: z.ZodString;
29
+ kind: z.ZodOptional<z.ZodEnum<{
30
+ serve: "serve";
31
+ setup: "setup";
32
+ transform: "transform";
33
+ wait: "wait";
34
+ }>>;
35
+ label: z.ZodOptional<z.ZodString>;
36
+ outputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
37
+ id: z.ZodString;
38
+ name: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strict>>>;
40
+ temperature: z.ZodOptional<z.ZodString>;
41
+ uses: z.ZodOptional<z.ZodArray<z.ZodObject<{
42
+ id: z.ZodString;
43
+ portion: z.ZodOptional<z.ZodString>;
44
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
45
+ ingredientId: z.ZodString;
46
+ kind: z.ZodLiteral<"ingredient">;
47
+ }, z.core.$strict>, z.ZodObject<{
48
+ kind: z.ZodLiteral<"output">;
49
+ outputId: z.ZodString;
50
+ }, z.core.$strict>], "kind">;
51
+ }, z.core.$strict>>>;
52
+ }, z.core.$strict>>;
53
+ title: z.ZodString;
54
+ yield: z.ZodOptional<z.ZodString>;
55
+ }, z.core.$strict>;
56
+ export type RecipeData = RecipeEntity;
57
+ export declare const RecipeProps: z.ZodObject<{
58
+ scope: z.ZodDefault<z.ZodDefault<z.ZodEnum<{
59
+ private: "private";
60
+ public: "public";
61
+ }>>>;
62
+ id: z.ZodOptional<z.ZodString>;
63
+ revision: z.ZodDefault<z.ZodNumber>;
64
+ data: z.ZodObject<{
65
+ ingredients: z.ZodArray<z.ZodObject<{
66
+ amount: z.ZodOptional<z.ZodNumber>;
67
+ id: z.ZodString;
68
+ label: z.ZodString;
69
+ notes: z.ZodOptional<z.ZodArray<z.ZodString>>;
70
+ unit: z.ZodOptional<z.ZodString>;
71
+ }, z.core.$strict>>;
72
+ servings: z.ZodOptional<z.ZodNumber>;
73
+ steps: z.ZodArray<z.ZodObject<{
74
+ after: z.ZodOptional<z.ZodArray<z.ZodString>>;
75
+ attention: z.ZodOptional<z.ZodEnum<{
76
+ active: "active";
77
+ passive: "passive";
78
+ }>>;
79
+ doneness: z.ZodOptional<z.ZodString>;
80
+ duration: z.ZodOptional<z.ZodObject<{
81
+ maxMinutes: z.ZodOptional<z.ZodNumber>;
82
+ minMinutes: z.ZodOptional<z.ZodNumber>;
83
+ raw: z.ZodString;
84
+ }, z.core.$strict>>;
85
+ equipment: z.ZodOptional<z.ZodArray<z.ZodString>>;
86
+ id: z.ZodString;
87
+ instruction: z.ZodString;
88
+ kind: z.ZodOptional<z.ZodEnum<{
89
+ serve: "serve";
90
+ setup: "setup";
91
+ transform: "transform";
92
+ wait: "wait";
93
+ }>>;
94
+ label: z.ZodOptional<z.ZodString>;
95
+ outputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
96
+ id: z.ZodString;
97
+ name: z.ZodOptional<z.ZodString>;
98
+ }, z.core.$strict>>>;
99
+ temperature: z.ZodOptional<z.ZodString>;
100
+ uses: z.ZodOptional<z.ZodArray<z.ZodObject<{
101
+ id: z.ZodString;
102
+ portion: z.ZodOptional<z.ZodString>;
103
+ source: z.ZodDiscriminatedUnion<[z.ZodObject<{
104
+ ingredientId: z.ZodString;
105
+ kind: z.ZodLiteral<"ingredient">;
106
+ }, z.core.$strict>, z.ZodObject<{
107
+ kind: z.ZodLiteral<"output">;
108
+ outputId: z.ZodString;
109
+ }, z.core.$strict>], "kind">;
110
+ }, z.core.$strict>>>;
111
+ }, z.core.$strict>>;
112
+ title: z.ZodString;
113
+ yield: z.ZodOptional<z.ZodString>;
114
+ }, z.core.$strict>;
115
+ }, z.core.$strict>;
116
+ export type RecipeProps = z.input<typeof RecipeProps> & {
117
+ style?: stylex.StyleXArray<stylex.StyleXStyles>;
118
+ };
119
+ export declare const recipeStoreSchema: z.ZodIntersection<z.ZodObject<{
120
+ configuration: z.ZodDefault<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
121
+ configurationRevision: z.ZodDefault<z.ZodNumber>;
122
+ cooking: z.ZodDefault<z.ZodBoolean>;
123
+ servings: z.ZodDefault<z.ZodNumber>;
124
+ }, z.core.$loose>, z.ZodRecord<z.ZodTemplateLiteral<`step_${string}`>, z.ZodObject<{
125
+ done: z.ZodBoolean;
126
+ endsAt: z.ZodNullable<z.ZodNumber>;
127
+ }, z.core.$strict>>>;
128
+ export declare const createSchemas: CreateSchemas;
129
+ export declare function Recipe({ data, id, revision, scope, style, }: RecipeProps): import('@flickfyi/photon/jsx-runtime').JSX.Element;
@@ -0,0 +1,4 @@
1
+ import { CreateSchemasInput } from './create-schemas.js';
2
+ export declare const schemaComponents: string[];
3
+ export { kowalskiFeatureId, kowalskiScope } from './feature-schema.js';
4
+ export declare function componentSchemas(name: string, input?: CreateSchemasInput): Record<string, import('zod').ZodType<unknown, unknown, import('zod/v4/core').$ZodTypeInternals<unknown, unknown>>>;
@@ -0,0 +1,4 @@
1
+ import { CreateSchemasInput } from './create-schemas.js';
2
+ export declare const schemaComponents: string[];
3
+ export { kowalskiFeatureId, kowalskiScope } from './feature-schema.js';
4
+ export declare function componentSchemas(name: string, input?: CreateSchemasInput): Record<string, import('zod').ZodType<unknown, unknown, import('zod/v4/core').$ZodTypeInternals<unknown, unknown>>>;
@@ -0,0 +1,34 @@
1
+ import { z } from 'zod/v4';
2
+ import { CreateSchemas } from './create-schemas.js';
3
+ import * as stylex from '@stylexjs/stylex';
4
+ export declare const TimeSinceData: z.ZodObject<{
5
+ action: z.ZodString;
6
+ label: z.ZodString;
7
+ subject: z.ZodString;
8
+ title: z.ZodString;
9
+ }, z.core.$strict>;
10
+ export type TimeSinceData = z.input<typeof TimeSinceData>;
11
+ export declare const TimeSinceProps: z.ZodObject<{
12
+ scope: z.ZodDefault<z.ZodDefault<z.ZodEnum<{
13
+ private: "private";
14
+ public: "public";
15
+ }>>>;
16
+ id: z.ZodOptional<z.ZodString>;
17
+ revision: z.ZodDefault<z.ZodNumber>;
18
+ data: z.ZodObject<{
19
+ action: z.ZodString;
20
+ label: z.ZodString;
21
+ subject: z.ZodString;
22
+ title: z.ZodString;
23
+ }, z.core.$strict>;
24
+ }, z.core.$strict>;
25
+ export type TimeSinceProps = z.input<typeof TimeSinceProps> & {
26
+ style?: stylex.StyleXArray<stylex.StyleXStyles>;
27
+ };
28
+ export declare const timeSinceStoreSchema: z.ZodObject<{
29
+ configuration: z.ZodDefault<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
30
+ configurationRevision: z.ZodDefault<z.ZodNumber>;
31
+ lastAt: z.ZodDefault<z.ZodNullable<z.ZodNumber>>;
32
+ }, z.core.$strip>;
33
+ export declare const createSchemas: CreateSchemas;
34
+ export declare function TimeSince({ data, id, revision, scope, style, }: TimeSinceProps): import('@flickfyi/photon/jsx-runtime').JSX.Element;
@@ -1,4 +1,21 @@
1
- export type ExampleMetadata = {
2
- name: string
1
+ import type { StoryObj } from '@storybook/react-vite'
2
+ import mapValues from 'lodash/mapValues.js'
3
+ import type { z } from 'zod/v4'
4
+
5
+ /** What agents see about a canonical example. Catalog edits these story args and saves them to the story file. */
6
+ export type ExampleArgs = {
7
+ /** What the example does and when it fits, in plain words. Agents read this to decide whether to use it. */
3
8
  description: string
9
+ /** Offer this example to agents. The example stays visible and interactive in Catalog either way. */
10
+ enabled: boolean
11
+ /** The example's name as agents see it, e.g. "Time since". */
12
+ name: string
13
+ }
14
+
15
+ /** A canonical example story; its args are what agents see about the example. */
16
+ export type ExampleStory<Meta> = StoryObj<Meta> & { args: ExampleArgs }
17
+
18
+ /** Preserve schema descriptions while Storybook infers controls from the args. */
19
+ export function schemaArgTypes(schema: z.ZodObject) {
20
+ return mapValues(schema.shape, field => ({ description: field.description }))
4
21
  }
@@ -1,15 +1,34 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { BillSplitData } 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 BillSplitExample from './bill-split'
4
8
  import exampleSource from './bill-split.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = BillSplitData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: BillSplitExample,
13
+ argTypes: schemaArgTypes(BillSplitData),
14
+ args: {
15
+ currency: 'USD',
16
+ people: 3,
17
+ tipPercent: 20,
18
+ title: 'Split the bill',
19
+ total: 86.5,
20
+ },
8
21
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
9
- title: 'Kowalski/BillSplit',
10
- } satisfies Meta<typeof BillSplitExample>
22
+ render: args => <BillSplitExample {...storyProps.parse(args)} />,
23
+ title: 'Kowalski/Bill split',
24
+ } satisfies Meta<z.input<typeof storyProps>>
11
25
 
12
26
  export default meta
13
- export const Example: StoryObj<typeof meta> = {
14
- args: { enabledForAgents: false },
27
+ export const Example: ExampleStory<typeof meta> = {
28
+ args: {
29
+ description:
30
+ 'An instantiatable BillSplit from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
31
+ enabled: false,
32
+ name: 'Bill split',
33
+ },
15
34
  }
@@ -1,17 +1,11 @@
1
1
  import { useTheme } from '@flickfyi/core'
2
2
  import { theme } from '@flickfyi/core/examples/kowalski/theme'
3
- import { BillSplit } from '@flickfyi/core/kowalski'
3
+ import { BillSplit, type BillSplitProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function BillSplitExample() {
5
+ export default function BillSplitExample({
6
+ data,
7
+ style,
8
+ }: Pick<BillSplitProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return <BillSplit people={3} tipPercent={20} total={86.5} />
10
+ return <BillSplit data={data} style={style} />
11
11
  }
12
-
13
- export const exampleMetadata = {
14
- description:
15
- 'An instantiatable BillSplit from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
16
- name: 'BillSplit',
17
- } satisfies ExampleMetadata
@@ -1,15 +1,32 @@
1
- import type { Meta, StoryObj } from '@storybook/react-vite'
1
+ import { BookmarkData } 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 BookmarkExample from './bookmark'
4
8
  import exampleSource from './bookmark.tsx?raw'
5
9
 
10
+ // Keep catalog metadata outside the component's content.
11
+ const storyProps = BookmarkData.strip().transform(data => ({ data }))
6
12
  const meta = {
7
- component: BookmarkExample,
13
+ argTypes: schemaArgTypes(BookmarkData),
14
+ args: {
15
+ note: 'Small details make an interface feel considered.',
16
+ title: 'The Shape of Software',
17
+ url: 'https://emilkowal.ski/',
18
+ },
8
19
  parameters: { docs: { source: { code: exampleSource, language: 'tsx' } } },
20
+ render: args => <BookmarkExample {...storyProps.parse(args)} />,
9
21
  title: 'Kowalski/Bookmark',
10
- } satisfies Meta<typeof BookmarkExample>
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 Bookmark from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
29
+ enabled: false,
30
+ name: 'Bookmark',
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 { Bookmark } from '@flickfyi/core/kowalski'
3
+ import { Bookmark, type BookmarkProps } from '@flickfyi/core/kowalski'
4
4
 
5
- import type { ExampleMetadata } from '@flickfyi/core/examples/metadata'
6
-
7
- export default function BookmarkExample() {
5
+ export default function BookmarkExample({
6
+ data,
7
+ style,
8
+ }: Pick<BookmarkProps, 'data' | 'style'>) {
8
9
  useTheme(theme)
9
-
10
- return (
11
- <Bookmark
12
- note="Small details make an interface feel considered."
13
- title="The Shape of Software"
14
- url="https://emilkowal.ski/"
15
- />
16
- )
10
+ return <Bookmark data={data} style={style} />
17
11
  }
18
-
19
- export const exampleMetadata = {
20
- description:
21
- 'An instantiatable Bookmark from Core. Authored UI and standard Quantum persistence; the model supplies typed content only.',
22
- name: 'Bookmark',
23
- } satisfies ExampleMetadata