@flickfyi/flkr 0.0.141 → 0.0.153

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 (494) hide show
  1. package/node_modules/@flickfyi/attestation/.turbo/turbo-build.log +7 -7
  2. package/node_modules/@flickfyi/biscuit/.turbo/turbo-build.log +7 -7
  3. package/node_modules/@flickfyi/core/.oxlintrc.json +2 -1
  4. package/node_modules/@flickfyi/core/.turbo/turbo-build.log +499 -92
  5. package/node_modules/@flickfyi/core/README.md +58 -4
  6. package/node_modules/@flickfyi/core/dist/index.cjs +1 -1
  7. package/node_modules/@flickfyi/core/dist/index.js +35 -24
  8. package/node_modules/@flickfyi/core/dist/kowalski/calculations.d.ts +17 -0
  9. package/node_modules/@flickfyi/core/dist/kowalski/calculator.d.ts +13 -0
  10. package/node_modules/@flickfyi/core/dist/kowalski/catalog.cjs +1 -0
  11. package/node_modules/@flickfyi/core/dist/kowalski/catalog.d.cts +962 -0
  12. package/node_modules/@flickfyi/core/dist/kowalski/catalog.d.ts +962 -0
  13. package/node_modules/@flickfyi/core/dist/kowalski/catalog.js +639 -0
  14. package/node_modules/@flickfyi/core/dist/kowalski/clocks.d.ts +4 -0
  15. package/node_modules/@flickfyi/core/dist/kowalski/date-time.d.ts +22 -0
  16. package/node_modules/@flickfyi/core/dist/kowalski/details.d.ts +7 -0
  17. package/node_modules/@flickfyi/core/dist/kowalski/everyday.d.ts +8 -0
  18. package/node_modules/@flickfyi/core/dist/kowalski/format.d.ts +4 -0
  19. package/node_modules/@flickfyi/core/dist/kowalski/frame.d.ts +161 -0
  20. package/node_modules/@flickfyi/core/dist/kowalski/index.cjs +21 -0
  21. package/node_modules/@flickfyi/core/dist/kowalski/index.d.cts +8 -0
  22. package/node_modules/@flickfyi/core/dist/kowalski/index.d.ts +8 -0
  23. package/node_modules/@flickfyi/core/dist/kowalski/index.js +7496 -0
  24. package/node_modules/@flickfyi/core/dist/kowalski/productivity.d.ts +5 -0
  25. package/node_modules/@flickfyi/core/dist/kowalski/recipe.d.ts +8 -0
  26. package/node_modules/@flickfyi/core/dist/kowalski/tools.d.ts +7 -0
  27. package/node_modules/@flickfyi/core/dist/kowalski/use-clock.d.ts +6 -0
  28. package/node_modules/@flickfyi/core/dist/kowalski/use-configured-feature.d.ts +19 -0
  29. package/node_modules/@flickfyi/core/dist/kowalski/use-feature-store.d.ts +15 -0
  30. package/node_modules/@flickfyi/core/dist/kowalski.css +506 -0
  31. package/node_modules/@flickfyi/core/dist/molecules/field/field.d.ts +8 -0
  32. package/node_modules/@flickfyi/core/dist/molecules/index.cjs +1 -1
  33. package/node_modules/@flickfyi/core/dist/molecules/index.d.cts +3 -0
  34. package/node_modules/@flickfyi/core/dist/molecules/index.d.ts +3 -0
  35. package/node_modules/@flickfyi/core/dist/molecules/index.js +88 -27
  36. package/node_modules/@flickfyi/core/dist/molecules/segmented/segmented.d.ts +10 -0
  37. package/node_modules/@flickfyi/core/dist/molecules/stepper/stepper.d.ts +10 -0
  38. package/node_modules/@flickfyi/core/dist/quantum/use-store.d.ts +7 -1
  39. package/node_modules/@flickfyi/core/dist/themes.css +2 -0
  40. package/node_modules/@flickfyi/core/examples/kowalski/bill-split/bill-split.stories.tsx +15 -0
  41. package/node_modules/@flickfyi/core/examples/kowalski/bill-split/bill-split.tsx +17 -0
  42. package/node_modules/@flickfyi/core/examples/kowalski/bookmark/bookmark.stories.tsx +15 -0
  43. package/node_modules/@flickfyi/core/examples/kowalski/bookmark/bookmark.tsx +23 -0
  44. package/node_modules/@flickfyi/core/examples/kowalski/budget/budget.stories.tsx +15 -0
  45. package/node_modules/@flickfyi/core/examples/kowalski/budget/budget.tsx +26 -0
  46. package/node_modules/@flickfyi/core/examples/kowalski/calculator/calculator.stories.tsx +15 -0
  47. package/node_modules/@flickfyi/core/examples/kowalski/calculator/calculator.tsx +24 -0
  48. package/node_modules/@flickfyi/core/examples/kowalski/checklist/checklist.stories.tsx +15 -0
  49. package/node_modules/@flickfyi/core/examples/kowalski/checklist/checklist.tsx +26 -0
  50. package/node_modules/@flickfyi/core/examples/kowalski/color-palette/color-palette.stories.tsx +15 -0
  51. package/node_modules/@flickfyi/core/examples/kowalski/color-palette/color-palette.tsx +22 -0
  52. package/node_modules/@flickfyi/core/examples/kowalski/contact/contact.stories.tsx +15 -0
  53. package/node_modules/@flickfyi/core/examples/kowalski/contact/contact.tsx +23 -0
  54. package/node_modules/@flickfyi/core/examples/kowalski/countdown/countdown.stories.tsx +15 -0
  55. package/node_modules/@flickfyi/core/examples/kowalski/countdown/countdown.tsx +23 -0
  56. package/node_modules/@flickfyi/core/examples/kowalski/event/event.stories.tsx +15 -0
  57. package/node_modules/@flickfyi/core/examples/kowalski/event/event.tsx +24 -0
  58. package/node_modules/@flickfyi/core/examples/kowalski/expense/expense.stories.tsx +15 -0
  59. package/node_modules/@flickfyi/core/examples/kowalski/expense/expense.tsx +23 -0
  60. package/node_modules/@flickfyi/core/examples/kowalski/goal/goal.stories.tsx +15 -0
  61. package/node_modules/@flickfyi/core/examples/kowalski/goal/goal.tsx +24 -0
  62. package/node_modules/@flickfyi/core/examples/kowalski/habit/habit.stories.tsx +15 -0
  63. package/node_modules/@flickfyi/core/examples/kowalski/habit/habit.tsx +23 -0
  64. package/node_modules/@flickfyi/core/examples/kowalski/ledger/ledger.stories.tsx +15 -0
  65. package/node_modules/@flickfyi/core/examples/kowalski/ledger/ledger.tsx +25 -0
  66. package/node_modules/@flickfyi/core/examples/kowalski/note/note.stories.tsx +15 -0
  67. package/node_modules/@flickfyi/core/examples/kowalski/note/note.tsx +22 -0
  68. package/node_modules/@flickfyi/core/examples/kowalski/poll/poll.stories.tsx +15 -0
  69. package/node_modules/@flickfyi/core/examples/kowalski/poll/poll.tsx +26 -0
  70. package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.stories.tsx +15 -0
  71. package/node_modules/@flickfyi/core/examples/kowalski/random-picker/random-picker.tsx +23 -0
  72. package/node_modules/@flickfyi/core/examples/kowalski/rating/rating.stories.tsx +15 -0
  73. package/node_modules/@flickfyi/core/examples/kowalski/rating/rating.tsx +19 -0
  74. package/node_modules/@flickfyi/core/examples/kowalski/recipe/recipe.stories.tsx +15 -0
  75. package/node_modules/@flickfyi/core/examples/kowalski/recipe/recipe.tsx +120 -0
  76. package/node_modules/@flickfyi/core/examples/kowalski/reminder/reminder.stories.tsx +15 -0
  77. package/node_modules/@flickfyi/core/examples/kowalski/reminder/reminder.tsx +23 -0
  78. package/node_modules/@flickfyi/core/examples/kowalski/rotation/rotation.stories.tsx +15 -0
  79. package/node_modules/@flickfyi/core/examples/kowalski/rotation/rotation.tsx +27 -0
  80. package/node_modules/@flickfyi/core/examples/kowalski/scoreboard/scoreboard.stories.tsx +15 -0
  81. package/node_modules/@flickfyi/core/examples/kowalski/scoreboard/scoreboard.tsx +26 -0
  82. package/node_modules/@flickfyi/core/examples/kowalski/shopping-list/shopping-list.stories.tsx +15 -0
  83. package/node_modules/@flickfyi/core/examples/kowalski/shopping-list/shopping-list.tsx +27 -0
  84. package/node_modules/@flickfyi/core/examples/kowalski/task-board/task-board.stories.tsx +15 -0
  85. package/node_modules/@flickfyi/core/examples/kowalski/task-board/task-board.tsx +27 -0
  86. package/node_modules/@flickfyi/core/examples/kowalski/theme.ts +3 -0
  87. package/node_modules/@flickfyi/core/examples/kowalski/time-zone/time-zone.stories.tsx +15 -0
  88. package/node_modules/@flickfyi/core/examples/kowalski/time-zone/time-zone.tsx +22 -0
  89. package/node_modules/@flickfyi/core/examples/kowalski/timer/timer.stories.tsx +15 -0
  90. package/node_modules/@flickfyi/core/examples/kowalski/timer/timer.tsx +23 -0
  91. package/node_modules/@flickfyi/core/examples/kowalski/trip/trip.stories.tsx +15 -0
  92. package/node_modules/@flickfyi/core/examples/kowalski/trip/trip.tsx +26 -0
  93. package/node_modules/@flickfyi/core/examples/kowalski/unit-converter/unit-converter.stories.tsx +15 -0
  94. package/node_modules/@flickfyi/core/examples/kowalski/unit-converter/unit-converter.tsx +24 -0
  95. package/node_modules/@flickfyi/core/examples/parrott/calculator/calculator.stories.tsx +3 -1
  96. package/node_modules/@flickfyi/core/examples/parrott/checklist/checklist.stories.tsx +3 -1
  97. package/node_modules/@flickfyi/core/examples/parrott/countdown/countdown.stories.tsx +3 -1
  98. package/node_modules/@flickfyi/core/examples/parrott/counter/counter.stories.tsx +1 -0
  99. package/node_modules/@flickfyi/core/examples/parrott/fortune/fortune.stories.tsx +3 -1
  100. package/node_modules/@flickfyi/core/examples/parrott/grid/grid.stories.tsx +3 -1
  101. package/node_modules/@flickfyi/core/examples/parrott/kale-smoothie/kale-smoothie.stories.tsx +1 -0
  102. package/node_modules/@flickfyi/core/examples/parrott/list/list.stories.tsx +3 -1
  103. package/node_modules/@flickfyi/core/examples/parrott/log/log.stories.tsx +3 -1
  104. package/node_modules/@flickfyi/core/examples/parrott/timed-task/timed-task.stories.tsx +3 -1
  105. package/node_modules/@flickfyi/core/examples/parrott/timer/timer.stories.tsx +3 -1
  106. package/node_modules/@flickfyi/core/fixtures/native/host/project.yml +3 -0
  107. package/node_modules/@flickfyi/core/fixtures/native/src/catalog-features.tsx +88 -0
  108. package/node_modules/@flickfyi/core/package.json +35 -5
  109. package/node_modules/@flickfyi/core/package.tsgo.json +19 -1
  110. package/node_modules/@flickfyi/core/scripts/vite-globals.d.ts +2 -0
  111. package/node_modules/@flickfyi/core/src/generated-types.d.ts +1 -0
  112. package/node_modules/@flickfyi/core/src/kowalski/README.md +9 -0
  113. package/node_modules/@flickfyi/core/src/kowalski/calculations.ts +106 -0
  114. package/node_modules/@flickfyi/core/src/kowalski/calculator.ts +243 -0
  115. package/node_modules/@flickfyi/core/src/kowalski/catalog.ts +787 -0
  116. package/node_modules/@flickfyi/core/src/kowalski/clocks.tsx +464 -0
  117. package/node_modules/@flickfyi/core/src/kowalski/date-time.tsx +469 -0
  118. package/node_modules/@flickfyi/core/src/kowalski/details.tsx +1387 -0
  119. package/node_modules/@flickfyi/core/src/kowalski/everyday.tsx +652 -0
  120. package/node_modules/@flickfyi/core/src/kowalski/format.ts +48 -0
  121. package/node_modules/@flickfyi/core/src/kowalski/frame.tsx +351 -0
  122. package/node_modules/@flickfyi/core/src/kowalski/index.ts +23 -0
  123. package/node_modules/@flickfyi/core/src/kowalski/productivity.tsx +575 -0
  124. package/node_modules/@flickfyi/core/src/kowalski/recipe.tsx +555 -0
  125. package/node_modules/@flickfyi/core/src/kowalski/stories/composition.stories.tsx +47 -0
  126. package/node_modules/@flickfyi/core/src/kowalski/stories/composition.tsx +100 -0
  127. package/node_modules/@flickfyi/core/src/kowalski/tools.tsx +1213 -0
  128. package/node_modules/@flickfyi/core/src/kowalski/use-clock.ts +19 -0
  129. package/node_modules/@flickfyi/core/src/kowalski/use-configured-feature.ts +85 -0
  130. package/node_modules/@flickfyi/core/src/kowalski/use-feature-store.ts +119 -0
  131. package/node_modules/@flickfyi/core/src/molecules/field/field.tsx +34 -0
  132. package/node_modules/@flickfyi/core/src/molecules/index.ts +3 -0
  133. package/node_modules/@flickfyi/core/src/molecules/segmented/segmented.tsx +48 -0
  134. package/node_modules/@flickfyi/core/src/molecules/stepper/stepper.tsx +54 -0
  135. package/node_modules/@flickfyi/core/src/quantum/use-store.ts +41 -16
  136. package/node_modules/@flickfyi/core/tests/fly.test.ts +34 -7
  137. package/node_modules/@flickfyi/core/tests/kowalski-calculations.test.ts +60 -0
  138. package/node_modules/@flickfyi/core/tests/kowalski-calculator.test.ts +142 -0
  139. package/node_modules/@flickfyi/core/tests/kowalski-contracts.test.ts +223 -0
  140. package/node_modules/@flickfyi/core/tests/kowalski-date-time.test.tsx +462 -0
  141. package/node_modules/@flickfyi/core/tests/kowalski-features.test.tsx +2158 -0
  142. package/node_modules/@flickfyi/core/tests/kowalski-store.test.tsx +514 -0
  143. package/node_modules/@flickfyi/core/tests/preview-build.test.ts +1 -1
  144. package/node_modules/@flickfyi/core/tests/quantum-use-store.test.ts +53 -1
  145. package/node_modules/@flickfyi/core/tests/verify-tsgo-assets.test.ts +1 -1
  146. package/node_modules/@flickfyi/core/tsconfig.vite-dts.json +2 -1
  147. package/node_modules/@flickfyi/core/tsgo.bun.lock +111 -9
  148. package/node_modules/@flickfyi/core/tsgo.package.json +21 -3
  149. package/node_modules/@flickfyi/core/vite.config.ts +9 -5
  150. package/node_modules/@flickfyi/core/vitest.config.ts +1 -1
  151. package/node_modules/@flickfyi/http-message-sig/.turbo/turbo-build.log +7 -7
  152. package/node_modules/@flickfyi/identity/.turbo/turbo-build.log +8 -9
  153. package/node_modules/@flickfyi/lens/.turbo/turbo-build.log +7 -7
  154. package/node_modules/@flickfyi/photon/.turbo/turbo-build.log +4 -4
  155. package/node_modules/@flickfyi/photon/Sources/Photon/Components/Button.swift +29 -2
  156. package/node_modules/@flickfyi/photon/Sources/PhotonVersion/Resources/photon-version.json +1 -1
  157. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Components/ButtonHostTests.swift +26 -0
  158. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Fixtures/StyleX/catalog-features.styles.json +1 -0
  159. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Fixtures/StyleX/catalog-native.styles.json +1 -1
  160. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Fixtures/StyleX/catalog-scale.styles.json +1 -1
  161. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Fixtures/StyleX/catalog-theme.styles.json +1 -1
  162. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Fixtures/StyleX/catalog-typography.styles.json +1 -1
  163. package/node_modules/@flickfyi/photon/Tests/PhotonTests/Fixtures/StyleX/stylex-calculator.styles.json +1 -1
  164. package/node_modules/@flickfyi/photon/dist/globals.d.ts +5 -0
  165. package/node_modules/@flickfyi/photon/dist/version.cjs +1 -1
  166. package/node_modules/@flickfyi/photon/dist/version.js +1 -1
  167. package/node_modules/@flickfyi/photon/generated/react-swiftui.d.ts +1 -0
  168. package/node_modules/@flickfyi/photon/package.json +1 -1
  169. package/node_modules/@flickfyi/photon/src/globals.d.ts +5 -0
  170. package/node_modules/@flickfyi/rwsdk-extensions/.turbo/turbo-build.log +7 -7
  171. package/node_modules/@formatjs/fast-memoize/LICENSE.md +9 -0
  172. package/node_modules/@formatjs/fast-memoize/README.md +3 -0
  173. package/node_modules/@formatjs/fast-memoize/index.d.ts +35 -0
  174. package/node_modules/@formatjs/fast-memoize/index.js +69 -0
  175. package/node_modules/@formatjs/fast-memoize/index.js.map +1 -0
  176. package/node_modules/@formatjs/fast-memoize/package.json +25 -0
  177. package/node_modules/@formatjs/icu-messageformat-parser/LICENSE.md +9 -0
  178. package/node_modules/@formatjs/icu-messageformat-parser/README.md +38 -0
  179. package/node_modules/@formatjs/icu-messageformat-parser/index.d.ts +393 -0
  180. package/node_modules/@formatjs/icu-messageformat-parser/index.js +2187 -0
  181. package/node_modules/@formatjs/icu-messageformat-parser/index.js.map +1 -0
  182. package/node_modules/@formatjs/icu-messageformat-parser/manipulator.d.ts +175 -0
  183. package/node_modules/@formatjs/icu-messageformat-parser/manipulator.js +209 -0
  184. package/node_modules/@formatjs/icu-messageformat-parser/manipulator.js.map +1 -0
  185. package/node_modules/@formatjs/icu-messageformat-parser/no-parser.d.ts +183 -0
  186. package/node_modules/@formatjs/icu-messageformat-parser/no-parser.js +162 -0
  187. package/node_modules/@formatjs/icu-messageformat-parser/no-parser.js.map +1 -0
  188. package/node_modules/@formatjs/icu-messageformat-parser/package.json +21 -0
  189. package/node_modules/@formatjs/icu-messageformat-parser/printer.d.ts +154 -0
  190. package/node_modules/@formatjs/icu-messageformat-parser/printer.js +224 -0
  191. package/node_modules/@formatjs/icu-messageformat-parser/printer.js.map +1 -0
  192. package/node_modules/@formatjs/icu-skeleton-parser/LICENSE.md +9 -0
  193. package/node_modules/@formatjs/icu-skeleton-parser/README.md +1 -0
  194. package/node_modules/@formatjs/icu-skeleton-parser/index.d.ts +67 -0
  195. package/node_modules/@formatjs/icu-skeleton-parser/index.js +380 -0
  196. package/node_modules/@formatjs/icu-skeleton-parser/index.js.map +1 -0
  197. package/node_modules/@formatjs/icu-skeleton-parser/package.json +15 -0
  198. package/node_modules/@formatjs/intl/LICENSE.md +9 -0
  199. package/node_modules/@formatjs/intl/README.md +3 -0
  200. package/node_modules/@formatjs/intl/index.d.ts +499 -0
  201. package/node_modules/@formatjs/intl/index.js +595 -0
  202. package/node_modules/@formatjs/intl/index.js.map +1 -0
  203. package/node_modules/@formatjs/intl/package.json +37 -0
  204. package/node_modules/decimal.js/LICENCE.md +23 -0
  205. package/node_modules/decimal.js/README.md +246 -0
  206. package/node_modules/decimal.js/decimal.d.ts +301 -0
  207. package/node_modules/decimal.js/decimal.js +4951 -0
  208. package/node_modules/decimal.js/decimal.mjs +4914 -0
  209. package/node_modules/decimal.js/package.json +55 -0
  210. package/node_modules/format-quantity/LICENSE +21 -0
  211. package/node_modules/format-quantity/README.md +181 -0
  212. package/node_modules/format-quantity/dist/cjs/format-quantity.cjs.development.d.ts +131 -0
  213. package/node_modules/format-quantity/dist/cjs/format-quantity.cjs.development.js +214 -0
  214. package/node_modules/format-quantity/dist/cjs/format-quantity.cjs.development.js.map +1 -0
  215. package/node_modules/format-quantity/dist/cjs/format-quantity.cjs.production.d.ts +131 -0
  216. package/node_modules/format-quantity/dist/cjs/format-quantity.cjs.production.js +2 -0
  217. package/node_modules/format-quantity/dist/cjs/format-quantity.cjs.production.js.map +1 -0
  218. package/node_modules/format-quantity/dist/cjs/index.d.ts +1 -0
  219. package/node_modules/format-quantity/dist/cjs/index.js +6 -0
  220. package/node_modules/format-quantity/dist/format-quantity.d.mts +131 -0
  221. package/node_modules/format-quantity/dist/format-quantity.legacy-esm.d.ts +131 -0
  222. package/node_modules/format-quantity/dist/format-quantity.legacy-esm.js +268 -0
  223. package/node_modules/format-quantity/dist/format-quantity.legacy-esm.js.map +1 -0
  224. package/node_modules/format-quantity/dist/format-quantity.mjs +208 -0
  225. package/node_modules/format-quantity/dist/format-quantity.mjs.map +1 -0
  226. package/node_modules/format-quantity/dist/format-quantity.production.d.mts +131 -0
  227. package/node_modules/format-quantity/dist/format-quantity.production.mjs +2 -0
  228. package/node_modules/format-quantity/dist/format-quantity.production.mjs.map +1 -0
  229. package/node_modules/format-quantity/dist/format-quantity.umd.min.js +3 -0
  230. package/node_modules/format-quantity/dist/format-quantity.umd.min.js.map +1 -0
  231. package/node_modules/format-quantity/package.json +81 -0
  232. package/node_modules/intl-messageformat/LICENSE.md +33 -0
  233. package/node_modules/intl-messageformat/README.md +3 -0
  234. package/node_modules/intl-messageformat/index.d.ts +177 -0
  235. package/node_modules/intl-messageformat/index.js +327 -0
  236. package/node_modules/intl-messageformat/index.js.map +1 -0
  237. package/node_modules/intl-messageformat/intl-messageformat.iife.js +2819 -0
  238. package/node_modules/intl-messageformat/package.json +40 -0
  239. package/node_modules/numeric-quantity/LICENSE +21 -0
  240. package/node_modules/numeric-quantity/README.md +306 -0
  241. package/node_modules/numeric-quantity/dist/cjs/index.d.ts +1 -0
  242. package/node_modules/numeric-quantity/dist/cjs/index.js +6 -0
  243. package/node_modules/numeric-quantity/dist/cjs/numeric-quantity.cjs.development.d.ts +293 -0
  244. package/node_modules/numeric-quantity/dist/cjs/numeric-quantity.cjs.development.js +579 -0
  245. package/node_modules/numeric-quantity/dist/cjs/numeric-quantity.cjs.development.js.map +1 -0
  246. package/node_modules/numeric-quantity/dist/cjs/numeric-quantity.cjs.production.d.ts +293 -0
  247. package/node_modules/numeric-quantity/dist/cjs/numeric-quantity.cjs.production.js +2 -0
  248. package/node_modules/numeric-quantity/dist/cjs/numeric-quantity.cjs.production.js.map +1 -0
  249. package/node_modules/numeric-quantity/dist/numeric-quantity.d.mts +293 -0
  250. package/node_modules/numeric-quantity/dist/numeric-quantity.iife.umd.min.js +2 -0
  251. package/node_modules/numeric-quantity/dist/numeric-quantity.iife.umd.min.js.map +1 -0
  252. package/node_modules/numeric-quantity/dist/numeric-quantity.legacy-esm.d.ts +293 -0
  253. package/node_modules/numeric-quantity/dist/numeric-quantity.legacy-esm.js +622 -0
  254. package/node_modules/numeric-quantity/dist/numeric-quantity.legacy-esm.js.map +1 -0
  255. package/node_modules/numeric-quantity/dist/numeric-quantity.mjs +564 -0
  256. package/node_modules/numeric-quantity/dist/numeric-quantity.mjs.map +1 -0
  257. package/node_modules/numeric-quantity/dist/numeric-quantity.production.d.mts +293 -0
  258. package/node_modules/numeric-quantity/dist/numeric-quantity.production.mjs +2 -0
  259. package/node_modules/numeric-quantity/dist/numeric-quantity.production.mjs.map +1 -0
  260. package/node_modules/numeric-quantity/package.json +72 -0
  261. package/node_modules/validator/LICENSE +20 -0
  262. package/node_modules/validator/README.md +269 -0
  263. package/node_modules/validator/es/index.js +218 -0
  264. package/node_modules/validator/es/lib/alpha.js +151 -0
  265. package/node_modules/validator/es/lib/blacklist.js +5 -0
  266. package/node_modules/validator/es/lib/contains.js +15 -0
  267. package/node_modules/validator/es/lib/equals.js +5 -0
  268. package/node_modules/validator/es/lib/escape.js +5 -0
  269. package/node_modules/validator/es/lib/isAbaRouting.js +15 -0
  270. package/node_modules/validator/es/lib/isAfter.js +10 -0
  271. package/node_modules/validator/es/lib/isAlpha.js +23 -0
  272. package/node_modules/validator/es/lib/isAlphanumeric.js +23 -0
  273. package/node_modules/validator/es/lib/isAscii.js +10 -0
  274. package/node_modules/validator/es/lib/isBIC.js +16 -0
  275. package/node_modules/validator/es/lib/isBase32.js +15 -0
  276. package/node_modules/validator/es/lib/isBase58.js +8 -0
  277. package/node_modules/validator/es/lib/isBase64.js +23 -0
  278. package/node_modules/validator/es/lib/isBefore.js +10 -0
  279. package/node_modules/validator/es/lib/isBoolean.js +15 -0
  280. package/node_modules/validator/es/lib/isBtcAddress.js +7 -0
  281. package/node_modules/validator/es/lib/isByteLength.js +19 -0
  282. package/node_modules/validator/es/lib/isCreditCard.js +43 -0
  283. package/node_modules/validator/es/lib/isCurrency.js +74 -0
  284. package/node_modules/validator/es/lib/isDataURI.js +31 -0
  285. package/node_modules/validator/es/lib/isDate.js +93 -0
  286. package/node_modules/validator/es/lib/isDecimal.js +22 -0
  287. package/node_modules/validator/es/lib/isDivisibleBy.js +6 -0
  288. package/node_modules/validator/es/lib/isEAN.js +70 -0
  289. package/node_modules/validator/es/lib/isEmail.js +165 -0
  290. package/node_modules/validator/es/lib/isEmpty.js +10 -0
  291. package/node_modules/validator/es/lib/isEthereumAddress.js +6 -0
  292. package/node_modules/validator/es/lib/isFQDN.js +67 -0
  293. package/node_modules/validator/es/lib/isFloat.js +14 -0
  294. package/node_modules/validator/es/lib/isFullWidth.js +6 -0
  295. package/node_modules/validator/es/lib/isHSL.js +13 -0
  296. package/node_modules/validator/es/lib/isHalfWidth.js +6 -0
  297. package/node_modules/validator/es/lib/isHash.js +21 -0
  298. package/node_modules/validator/es/lib/isHexColor.js +13 -0
  299. package/node_modules/validator/es/lib/isHexadecimal.js +6 -0
  300. package/node_modules/validator/es/lib/isIBAN.js +171 -0
  301. package/node_modules/validator/es/lib/isIMEI.js +40 -0
  302. package/node_modules/validator/es/lib/isIP.js +58 -0
  303. package/node_modules/validator/es/lib/isIPRange.js +41 -0
  304. package/node_modules/validator/es/lib/isISBN.js +47 -0
  305. package/node_modules/validator/es/lib/isISIN.js +55 -0
  306. package/node_modules/validator/es/lib/isISO15924.js +9 -0
  307. package/node_modules/validator/es/lib/isISO31661Alpha2.js +21 -0
  308. package/node_modules/validator/es/lib/isISO31661Alpha3.js +20 -0
  309. package/node_modules/validator/es/lib/isISO31661Numeric.js +8 -0
  310. package/node_modules/validator/es/lib/isISO4217.js +9 -0
  311. package/node_modules/validator/es/lib/isISO6346.js +28 -0
  312. package/node_modules/validator/es/lib/isISO6391.js +6 -0
  313. package/node_modules/validator/es/lib/isISO8601.js +42 -0
  314. package/node_modules/validator/es/lib/isISRC.js +8 -0
  315. package/node_modules/validator/es/lib/isISSN.js +19 -0
  316. package/node_modules/validator/es/lib/isIdentityCard.js +407 -0
  317. package/node_modules/validator/es/lib/isIn.js +23 -0
  318. package/node_modules/validator/es/lib/isInt.js +19 -0
  319. package/node_modules/validator/es/lib/isJSON.js +26 -0
  320. package/node_modules/validator/es/lib/isJWT.js +15 -0
  321. package/node_modules/validator/es/lib/isLatLong.js +21 -0
  322. package/node_modules/validator/es/lib/isLength.js +27 -0
  323. package/node_modules/validator/es/lib/isLicensePlate.js +58 -0
  324. package/node_modules/validator/es/lib/isLocale.js +107 -0
  325. package/node_modules/validator/es/lib/isLowercase.js +5 -0
  326. package/node_modules/validator/es/lib/isLuhnNumber.js +25 -0
  327. package/node_modules/validator/es/lib/isMACAddress.js +36 -0
  328. package/node_modules/validator/es/lib/isMD5.js +6 -0
  329. package/node_modules/validator/es/lib/isMagnetURI.js +9 -0
  330. package/node_modules/validator/es/lib/isMailtoURI.js +75 -0
  331. package/node_modules/validator/es/lib/isMimeType.js +40 -0
  332. package/node_modules/validator/es/lib/isMobilePhone.js +212 -0
  333. package/node_modules/validator/es/lib/isMongoId.js +6 -0
  334. package/node_modules/validator/es/lib/isMultibyte.js +10 -0
  335. package/node_modules/validator/es/lib/isNumeric.js +10 -0
  336. package/node_modules/validator/es/lib/isOctal.js +6 -0
  337. package/node_modules/validator/es/lib/isPassportNumber.js +145 -0
  338. package/node_modules/validator/es/lib/isPort.js +8 -0
  339. package/node_modules/validator/es/lib/isPostalCode.js +100 -0
  340. package/node_modules/validator/es/lib/isRFC3339.js +21 -0
  341. package/node_modules/validator/es/lib/isRgbColor.js +34 -0
  342. package/node_modules/validator/es/lib/isSemVer.js +14 -0
  343. package/node_modules/validator/es/lib/isSlug.js +6 -0
  344. package/node_modules/validator/es/lib/isStrongPassword.js +90 -0
  345. package/node_modules/validator/es/lib/isSurrogatePair.js +6 -0
  346. package/node_modules/validator/es/lib/isTaxID.js +1407 -0
  347. package/node_modules/validator/es/lib/isTime.js +22 -0
  348. package/node_modules/validator/es/lib/isULID.js +5 -0
  349. package/node_modules/validator/es/lib/isURL.js +241 -0
  350. package/node_modules/validator/es/lib/isUUID.js +23 -0
  351. package/node_modules/validator/es/lib/isUppercase.js +5 -0
  352. package/node_modules/validator/es/lib/isVAT.js +264 -0
  353. package/node_modules/validator/es/lib/isVariableWidth.js +7 -0
  354. package/node_modules/validator/es/lib/isWhitelisted.js +10 -0
  355. package/node_modules/validator/es/lib/ltrim.js +7 -0
  356. package/node_modules/validator/es/lib/matches.js +8 -0
  357. package/node_modules/validator/es/lib/normalizeEmail.js +131 -0
  358. package/node_modules/validator/es/lib/rtrim.js +15 -0
  359. package/node_modules/validator/es/lib/stripLow.js +7 -0
  360. package/node_modules/validator/es/lib/toBoolean.js +8 -0
  361. package/node_modules/validator/es/lib/toDate.js +6 -0
  362. package/node_modules/validator/es/lib/toFloat.js +5 -0
  363. package/node_modules/validator/es/lib/toInt.js +5 -0
  364. package/node_modules/validator/es/lib/trim.js +5 -0
  365. package/node_modules/validator/es/lib/unescape.js +8 -0
  366. package/node_modules/validator/es/lib/util/algorithms.js +79 -0
  367. package/node_modules/validator/es/lib/util/assertString.js +4 -0
  368. package/node_modules/validator/es/lib/util/checkHost.js +12 -0
  369. package/node_modules/validator/es/lib/util/includesArray.js +6 -0
  370. package/node_modules/validator/es/lib/util/includesString.js +4 -0
  371. package/node_modules/validator/es/lib/util/merge.js +14 -0
  372. package/node_modules/validator/es/lib/util/multilineRegex.js +12 -0
  373. package/node_modules/validator/es/lib/util/nullUndefinedCheck.js +3 -0
  374. package/node_modules/validator/es/lib/util/toString.js +13 -0
  375. package/node_modules/validator/es/lib/util/typeOf.js +10 -0
  376. package/node_modules/validator/es/lib/whitelist.js +5 -0
  377. package/node_modules/validator/index.js +229 -0
  378. package/node_modules/validator/lib/alpha.js +157 -0
  379. package/node_modules/validator/lib/blacklist.js +14 -0
  380. package/node_modules/validator/lib/contains.js +24 -0
  381. package/node_modules/validator/lib/equals.js +14 -0
  382. package/node_modules/validator/lib/escape.js +14 -0
  383. package/node_modules/validator/lib/isAbaRouting.js +23 -0
  384. package/node_modules/validator/lib/isAfter.js +19 -0
  385. package/node_modules/validator/lib/isAlpha.js +31 -0
  386. package/node_modules/validator/lib/isAlphanumeric.js +31 -0
  387. package/node_modules/validator/lib/isAscii.js +18 -0
  388. package/node_modules/validator/lib/isBIC.js +24 -0
  389. package/node_modules/validator/lib/isBase32.js +24 -0
  390. package/node_modules/validator/lib/isBase58.js +16 -0
  391. package/node_modules/validator/lib/isBase64.js +32 -0
  392. package/node_modules/validator/lib/isBefore.js +19 -0
  393. package/node_modules/validator/lib/isBoolean.js +24 -0
  394. package/node_modules/validator/lib/isBtcAddress.js +16 -0
  395. package/node_modules/validator/lib/isByteLength.js +27 -0
  396. package/node_modules/validator/lib/isCreditCard.js +52 -0
  397. package/node_modules/validator/lib/isCurrency.js +83 -0
  398. package/node_modules/validator/lib/isDataURI.js +40 -0
  399. package/node_modules/validator/lib/isDate.js +102 -0
  400. package/node_modules/validator/lib/isDecimal.js +31 -0
  401. package/node_modules/validator/lib/isDivisibleBy.js +15 -0
  402. package/node_modules/validator/lib/isEAN.js +78 -0
  403. package/node_modules/validator/lib/isEmail.js +174 -0
  404. package/node_modules/validator/lib/isEmpty.js +19 -0
  405. package/node_modules/validator/lib/isEthereumAddress.js +15 -0
  406. package/node_modules/validator/lib/isFQDN.js +76 -0
  407. package/node_modules/validator/lib/isFloat.js +22 -0
  408. package/node_modules/validator/lib/isFullWidth.js +14 -0
  409. package/node_modules/validator/lib/isHSL.js +22 -0
  410. package/node_modules/validator/lib/isHalfWidth.js +14 -0
  411. package/node_modules/validator/lib/isHash.js +30 -0
  412. package/node_modules/validator/lib/isHexColor.js +22 -0
  413. package/node_modules/validator/lib/isHexadecimal.js +15 -0
  414. package/node_modules/validator/lib/isIBAN.js +178 -0
  415. package/node_modules/validator/lib/isIMEI.js +49 -0
  416. package/node_modules/validator/lib/isIP.js +67 -0
  417. package/node_modules/validator/lib/isIPRange.js +50 -0
  418. package/node_modules/validator/lib/isISBN.js +56 -0
  419. package/node_modules/validator/lib/isISIN.js +64 -0
  420. package/node_modules/validator/lib/isISO15924.js +16 -0
  421. package/node_modules/validator/lib/isISO31661Alpha2.js +28 -0
  422. package/node_modules/validator/lib/isISO31661Alpha3.js +28 -0
  423. package/node_modules/validator/lib/isISO31661Numeric.js +16 -0
  424. package/node_modules/validator/lib/isISO4217.js +16 -0
  425. package/node_modules/validator/lib/isISO6346.js +35 -0
  426. package/node_modules/validator/lib/isISO6391.js +15 -0
  427. package/node_modules/validator/lib/isISO8601.js +50 -0
  428. package/node_modules/validator/lib/isISRC.js +16 -0
  429. package/node_modules/validator/lib/isISSN.js +28 -0
  430. package/node_modules/validator/lib/isIdentityCard.js +416 -0
  431. package/node_modules/validator/lib/isIn.js +32 -0
  432. package/node_modules/validator/lib/isInt.js +28 -0
  433. package/node_modules/validator/lib/isJSON.js +35 -0
  434. package/node_modules/validator/lib/isJWT.js +24 -0
  435. package/node_modules/validator/lib/isLatLong.js +30 -0
  436. package/node_modules/validator/lib/isLength.js +35 -0
  437. package/node_modules/validator/lib/isLicensePlate.js +67 -0
  438. package/node_modules/validator/lib/isLocale.js +115 -0
  439. package/node_modules/validator/lib/isLowercase.js +14 -0
  440. package/node_modules/validator/lib/isLuhnNumber.js +34 -0
  441. package/node_modules/validator/lib/isMACAddress.js +45 -0
  442. package/node_modules/validator/lib/isMD5.js +15 -0
  443. package/node_modules/validator/lib/isMagnetURI.js +18 -0
  444. package/node_modules/validator/lib/isMailtoURI.js +84 -0
  445. package/node_modules/validator/lib/isMimeType.js +48 -0
  446. package/node_modules/validator/lib/isMobilePhone.js +219 -0
  447. package/node_modules/validator/lib/isMongoId.js +15 -0
  448. package/node_modules/validator/lib/isMultibyte.js +18 -0
  449. package/node_modules/validator/lib/isNumeric.js +19 -0
  450. package/node_modules/validator/lib/isOctal.js +15 -0
  451. package/node_modules/validator/lib/isPassportNumber.js +152 -0
  452. package/node_modules/validator/lib/isPort.js +17 -0
  453. package/node_modules/validator/lib/isPostalCode.js +107 -0
  454. package/node_modules/validator/lib/isRFC3339.js +29 -0
  455. package/node_modules/validator/lib/isRgbColor.js +42 -0
  456. package/node_modules/validator/lib/isSemVer.js +22 -0
  457. package/node_modules/validator/lib/isSlug.js +15 -0
  458. package/node_modules/validator/lib/isStrongPassword.js +99 -0
  459. package/node_modules/validator/lib/isSurrogatePair.js +15 -0
  460. package/node_modules/validator/lib/isTaxID.js +1417 -0
  461. package/node_modules/validator/lib/isTime.js +31 -0
  462. package/node_modules/validator/lib/isULID.js +14 -0
  463. package/node_modules/validator/lib/isURL.js +249 -0
  464. package/node_modules/validator/lib/isUUID.js +32 -0
  465. package/node_modules/validator/lib/isUppercase.js +14 -0
  466. package/node_modules/validator/lib/isVAT.js +274 -0
  467. package/node_modules/validator/lib/isVariableWidth.js +16 -0
  468. package/node_modules/validator/lib/isWhitelisted.js +19 -0
  469. package/node_modules/validator/lib/ltrim.js +16 -0
  470. package/node_modules/validator/lib/matches.js +17 -0
  471. package/node_modules/validator/lib/normalizeEmail.js +140 -0
  472. package/node_modules/validator/lib/rtrim.js +24 -0
  473. package/node_modules/validator/lib/stripLow.js +16 -0
  474. package/node_modules/validator/lib/toBoolean.js +17 -0
  475. package/node_modules/validator/lib/toDate.js +15 -0
  476. package/node_modules/validator/lib/toFloat.js +14 -0
  477. package/node_modules/validator/lib/toInt.js +14 -0
  478. package/node_modules/validator/lib/trim.js +14 -0
  479. package/node_modules/validator/lib/unescape.js +17 -0
  480. package/node_modules/validator/lib/util/algorithms.js +88 -0
  481. package/node_modules/validator/lib/util/assertString.js +12 -0
  482. package/node_modules/validator/lib/util/checkHost.js +20 -0
  483. package/node_modules/validator/lib/util/includesArray.js +14 -0
  484. package/node_modules/validator/lib/util/includesString.js +12 -0
  485. package/node_modules/validator/lib/util/merge.js +22 -0
  486. package/node_modules/validator/lib/util/multilineRegex.js +20 -0
  487. package/node_modules/validator/lib/util/nullUndefinedCheck.js +11 -0
  488. package/node_modules/validator/lib/util/toString.js +21 -0
  489. package/node_modules/validator/lib/util/typeOf.js +18 -0
  490. package/node_modules/validator/lib/whitelist.js +14 -0
  491. package/node_modules/validator/package.json +76 -0
  492. package/node_modules/validator/validator.js +5808 -0
  493. package/node_modules/validator/validator.min.js +23 -0
  494. package/package.json +3 -3
@@ -0,0 +1,639 @@
1
+ import e from "validator/lib/isURL.js";
2
+ import { z as t } from "zod/v4";
3
+ //#region src/kowalski/catalog.ts
4
+ var n = t.string().regex(/^[A-Za-z][A-Za-z0-9]*$/).optional(), r = t.enum(["private", "public"]).default("private"), i = {
5
+ budget: "spent_",
6
+ checklist: "completed_",
7
+ habit: "completed_",
8
+ poll: "vote_",
9
+ recipe: "step_",
10
+ scoreboard: "score_",
11
+ shoppingList: "got_",
12
+ taskBoard: "status_"
13
+ }, a = [
14
+ "sunday",
15
+ "monday",
16
+ "tuesday",
17
+ "wednesday",
18
+ "thursday",
19
+ "friday",
20
+ "saturday"
21
+ ], o = {
22
+ billSplit: {
23
+ description: "Split a bill equally with an optional tip, rounding in the selected currency.",
24
+ exportName: "BillSplit",
25
+ props: d({
26
+ currency: f(),
27
+ people: t.number().int().min(1).max(1e3),
28
+ tipPercent: t.number().min(0).max(100).default(0),
29
+ title: v("Split the bill"),
30
+ total: t.number().min(0).max(0xe8d4a51000)
31
+ }),
32
+ storeSchema: _({
33
+ people: t.number().int().min(1).max(1e3).default(1),
34
+ tipPercent: t.number().min(0).max(100).default(0),
35
+ total: t.number().min(0).max(0xe8d4a51000).default(0)
36
+ })
37
+ },
38
+ bookmark: {
39
+ description: "Display, edit, and retain a web bookmark. No implicit metadata fetch.",
40
+ exportName: "Bookmark",
41
+ props: d({
42
+ note: t.string().max(1e4).default(""),
43
+ title: v(),
44
+ url: C()
45
+ }),
46
+ storeSchema: _({
47
+ note: w(t.string().max(1e4).default("")),
48
+ title: w(t.string().max(160).default("")),
49
+ url: w(C().nullable().default(null))
50
+ })
51
+ },
52
+ budget: {
53
+ description: "Track spending against category limits for one budget period. No bank connection or payments.",
54
+ exportName: "Budget",
55
+ props: d({
56
+ categories: m({
57
+ label: t.string().min(1).max(80),
58
+ limit: t.number().positive().max(0xe8d4a51000)
59
+ }, 12),
60
+ currency: f(),
61
+ title: v("Budget")
62
+ }),
63
+ storeSchema: p(i.budget, t.number().min(0).max(0xe8d4a51000), {})
64
+ },
65
+ calculator: {
66
+ description: "A persistent keypad calculator with chained arithmetic, decimals, sign, percent, and repeated equals. Supports +, -, *, /. No executable expression strings.",
67
+ exportName: "Calculator",
68
+ props: d({
69
+ left: t.number().default(0),
70
+ operator: t.enum([
71
+ "+",
72
+ "-",
73
+ "*",
74
+ "/"
75
+ ]).default("+"),
76
+ right: t.number().default(0),
77
+ title: v("Calculate")
78
+ }),
79
+ storeSchema: _({ calculation: t.object({
80
+ entry: t.string().max(40).regex(/^(?:-?\d+(?:\.\d*)?(?:e[+-]?\d+)?|Error)$/),
81
+ left: t.number(),
82
+ operator: t.enum([
83
+ "+",
84
+ "-",
85
+ "*",
86
+ "/"
87
+ ]),
88
+ overwrite: t.boolean(),
89
+ phase: t.enum([
90
+ "left",
91
+ "operator",
92
+ "right",
93
+ "result",
94
+ "error"
95
+ ]),
96
+ right: t.number()
97
+ }).refine((e) => e.phase === "error" ? e.entry === "Error" : e.entry !== "Error" && Number.isFinite(Number(e.entry)), "Calculator entry must match its phase and represent a finite number.").default({
98
+ entry: "0",
99
+ left: 0,
100
+ operator: "+",
101
+ overwrite: !1,
102
+ phase: "left",
103
+ right: 0
104
+ }) })
105
+ },
106
+ checklist: {
107
+ description: "A persistent checklist with independent completion and progress. No external actions.",
108
+ exportName: "Checklist",
109
+ props: d({
110
+ items: m({ label: t.string().min(1).max(500) }, 100),
111
+ title: v()
112
+ }),
113
+ storeSchema: p(i.checklist, t.boolean(), {})
114
+ },
115
+ colorPalette: {
116
+ description: "Choose and retain an sRGB color and display matching shades.",
117
+ exportName: "ColorPalette",
118
+ props: d({
119
+ color: t.string().regex(/^#[\da-fA-F]{6}$/),
120
+ title: v("Palette")
121
+ }),
122
+ storeSchema: _({ color: w(t.string().regex(/^#[\da-fA-F]{6}$/).default("#6366f1")) })
123
+ },
124
+ contact: {
125
+ description: "Display, edit, and retain a contact. Does not insert into the address book.",
126
+ exportName: "Contact",
127
+ props: d({
128
+ email: t.email().optional(),
129
+ name: t.string().min(1).max(160),
130
+ phone: t.string().min(1).max(80).optional()
131
+ }),
132
+ storeSchema: _({
133
+ email: w(t.email().nullable().default(null)),
134
+ name: w(t.string().max(160).default("")),
135
+ phone: w(t.string().min(1).max(80).nullable().default(null))
136
+ })
137
+ },
138
+ countdown: {
139
+ description: "Count down to an explicit instant. Resolve missing dates before instantiation.",
140
+ exportName: "Countdown",
141
+ props: d({
142
+ target: t.iso.datetime({ offset: !0 }),
143
+ timeZone: x().default("UTC"),
144
+ title: v()
145
+ }),
146
+ storeSchema: _({ target: w(t.iso.datetime({ offset: !0 }).nullable().default(null)) })
147
+ },
148
+ event: {
149
+ description: "Save and edit event details in the app. Does not create a calendar event.",
150
+ exportName: "Event",
151
+ props: d({
152
+ location: t.string().max(500).default(""),
153
+ startsAt: t.iso.datetime({ offset: !0 }).nullable().default(null),
154
+ timeZone: x().default("UTC"),
155
+ title: v()
156
+ }),
157
+ storeSchema: _({
158
+ location: w(t.string().max(500).default("")),
159
+ startsAt: w(t.iso.datetime({ offset: !0 }).nullable().default(null)),
160
+ title: w(t.string().max(160).default(""))
161
+ })
162
+ },
163
+ expense: {
164
+ description: "Edit and retain one expense. No payments, bank connection, or exchange-rate lookup.",
165
+ exportName: "Expense",
166
+ props: d({
167
+ amount: t.number().min(0).max(0xe8d4a51000),
168
+ category: t.string().max(80).default("Other"),
169
+ currency: f(),
170
+ title: v()
171
+ }),
172
+ storeSchema: _({
173
+ amount: t.number().min(0).max(0xe8d4a51000).default(0),
174
+ category: w(t.string().max(80).default("Other")),
175
+ title: w(t.string().max(160).default(""))
176
+ })
177
+ },
178
+ goal: {
179
+ description: "A personal goal with editable progress, target, and a fixed increment. Not a distributed counter.",
180
+ exportName: "Goal",
181
+ props: d({
182
+ progress: t.number().min(0).max(0xe8d4a51000).default(0),
183
+ step: t.number().positive().max(1e9).default(1),
184
+ target: t.number().positive().max(0xe8d4a51000),
185
+ title: v(),
186
+ unit: t.string().max(40).default("")
187
+ }),
188
+ storeSchema: _({ progress: t.number().min(0).default(0) })
189
+ },
190
+ habit: {
191
+ description: "Track a habit by local date and edit its weekday schedule. No notifications.",
192
+ exportName: "Habit",
193
+ props: d({
194
+ timeZone: x().default("UTC"),
195
+ title: v(),
196
+ weekdays: S()
197
+ }),
198
+ storeSchema: p(i.habit, t.boolean(), { weekdays: S() })
199
+ },
200
+ ledger: {
201
+ description: "A running tab of shared costs between two people, split evenly, with settle up. No payments.",
202
+ exportName: "Ledger",
203
+ props: d({
204
+ currency: f(),
205
+ people: m({ label: t.string().min(1).max(80) }, 2, 2),
206
+ title: v("Shared tab")
207
+ }),
208
+ storeSchema: _({ entries: t.array(t.strictObject({
209
+ amount: t.number().positive().max(0xe8d4a51000),
210
+ id: h(),
211
+ label: t.string().max(160),
212
+ paidBy: h()
213
+ })).max(200).default([]) })
214
+ },
215
+ note: {
216
+ description: "An editable persistent note. Plain text; no HTML or code execution.",
217
+ exportName: "Note",
218
+ props: d({
219
+ body: t.string().max(2e4),
220
+ title: t.string().max(160)
221
+ }),
222
+ storeSchema: _({
223
+ body: w(t.string().max(2e4).default("")),
224
+ title: w(t.string().max(160).default(""))
225
+ })
226
+ },
227
+ poll: {
228
+ exportName: "Poll",
229
+ description: "Cast or change a vote and derive totals from votes. Shared voting only when explicitly requested.",
230
+ props: d({
231
+ options: m({ label: t.string().min(1).max(160) }, 12, 2),
232
+ question: t.string().min(1).max(500),
233
+ shared: t.boolean().default(!1)
234
+ }),
235
+ storeSchema: p(i.poll, h(), {})
236
+ },
237
+ randomPicker: {
238
+ description: "Flip a coin, roll a die, or pick from a bounded integer range or list. Retains the last result.",
239
+ exportName: "RandomPicker",
240
+ props: t.discriminatedUnion("mode", [
241
+ d({
242
+ mode: t.literal("coin"),
243
+ title: v("Pick one")
244
+ }),
245
+ d({
246
+ mode: t.literal("dice"),
247
+ title: v("Pick one")
248
+ }),
249
+ d({
250
+ maximum: t.number().int().min(-1e9).max(1e9),
251
+ minimum: t.number().int().min(-1e9).max(1e9),
252
+ mode: t.literal("range"),
253
+ title: v("Pick one")
254
+ }).refine((e) => e.minimum <= e.maximum, {
255
+ message: "Minimum cannot exceed maximum.",
256
+ path: ["maximum"]
257
+ }),
258
+ d({
259
+ mode: t.literal("list"),
260
+ options: t.array(t.string().min(1).max(160)).min(1).max(100),
261
+ title: v("Pick one")
262
+ })
263
+ ]),
264
+ storeSchema: _({ result: t.strictObject({
265
+ domain: g(),
266
+ value: t.union([t.number().int(), t.string().max(160)])
267
+ }).nullable().default(null) })
268
+ },
269
+ rating: {
270
+ description: "Rate one thing from one to five stars and keep a short note about it.",
271
+ exportName: "Rating",
272
+ props: d({
273
+ subject: t.string().min(1).max(160),
274
+ title: v("Your rating")
275
+ }),
276
+ storeSchema: _({
277
+ note: w(t.string().max(2e3).default("")),
278
+ stars: t.number().int().min(0).max(5).default(0)
279
+ })
280
+ },
281
+ recipe: {
282
+ description: "Cook a recipe whose steps follow the Recipe Graph Format (rgf/0-draft): each step uses ingredients or earlier step outputs, waits on the steps in after, and may carry a duration, doneness cue, and attention. Ingredients carry a numeric amount and unit, and meta.servings is a number, so amounts scale with servings. Shows running timers, the current step, and the next few. No nutrition or shopping lookup.",
283
+ exportName: "Recipe",
284
+ props: d({
285
+ ingredients: m({
286
+ amount: t.number().positive().max(1e6).optional(),
287
+ label: t.string().min(1).max(160),
288
+ notes: t.array(t.string().max(160)).max(10).optional(),
289
+ unit: t.string().max(40).optional()
290
+ }, 60),
291
+ servings: t.number().int().min(1).max(100).optional(),
292
+ steps: t.array(t.strictObject({
293
+ after: t.array(h()).max(60).optional(),
294
+ attention: t.enum(["active", "passive"]).optional(),
295
+ doneness: t.string().max(200).optional(),
296
+ duration: t.strictObject({
297
+ maxMinutes: t.number().nonnegative().max(10080).optional(),
298
+ minMinutes: t.number().nonnegative().max(10080).optional(),
299
+ raw: t.string().min(1).max(80)
300
+ }).refine((e) => e.minMinutes === void 0 || e.maxMinutes === void 0 || e.minMinutes <= e.maxMinutes, "minMinutes cannot exceed maxMinutes.").optional(),
301
+ equipment: t.array(t.string().min(1).max(160)).max(20).optional(),
302
+ id: h(),
303
+ instruction: t.string().min(1).max(500),
304
+ kind: t.enum([
305
+ "setup",
306
+ "transform",
307
+ "wait",
308
+ "serve"
309
+ ]).optional(),
310
+ label: t.string().max(80).optional(),
311
+ outputs: t.array(t.strictObject({
312
+ id: h(),
313
+ name: t.string().max(160).optional()
314
+ })).max(10).optional(),
315
+ temperature: t.string().min(1).max(80).optional(),
316
+ uses: t.array(t.strictObject({
317
+ id: h(),
318
+ portion: t.string().max(80).optional(),
319
+ source: t.discriminatedUnion("kind", [t.strictObject({
320
+ ingredientId: h(),
321
+ kind: t.literal("ingredient")
322
+ }), t.strictObject({
323
+ kind: t.literal("output"),
324
+ outputId: h()
325
+ })])
326
+ })).max(30).default([])
327
+ })).min(1).max(60),
328
+ title: v(),
329
+ yield: t.string().max(160).optional()
330
+ }).superRefine((e, t) => {
331
+ let n = new Set(e.ingredients.map((e) => e.id)), r = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();
332
+ for (let a of e.steps) {
333
+ !r.has(a.id) && (a.after ?? []).every((e) => r.has(e)) && a.uses.every((e) => e.source.kind === "ingredient" ? n.has(e.source.ingredientId) : i.has(e.source.outputId)) || t.addIssue({
334
+ code: "custom",
335
+ message: `Step ${a.id} needs a unique ID and can only use ingredients and earlier steps.`
336
+ }), r.add(a.id);
337
+ for (let e of a.outputs ?? []) i.has(e.id) && t.addIssue({
338
+ code: "custom",
339
+ message: "Output IDs must be unique."
340
+ }), i.add(e.id);
341
+ }
342
+ }),
343
+ storeSchema: p(i.recipe, t.strictObject({
344
+ done: t.boolean(),
345
+ endsAt: t.number().nullable()
346
+ }), {
347
+ cooking: t.boolean().default(!1),
348
+ servings: t.number().int().min(1).max(100).default(1)
349
+ })
350
+ },
351
+ reminder: {
352
+ description: "Complete, reopen, and edit an in-app reminder. Does not schedule notifications.",
353
+ exportName: "Reminder",
354
+ props: d({
355
+ dueAt: t.iso.datetime({ offset: !0 }).nullable().default(null),
356
+ recurrence: t.enum([
357
+ "none",
358
+ "daily",
359
+ "weekly"
360
+ ]).default("none"),
361
+ timeZone: x().optional(),
362
+ title: t.string().min(1).max(500)
363
+ }),
364
+ storeSchema: _({
365
+ completedAt: t.number().nullable().default(null),
366
+ dueAt: w(t.iso.datetime({ offset: !0 }).nullable().default(null)),
367
+ title: w(t.string().max(500).default(""))
368
+ })
369
+ },
370
+ rotation: {
371
+ description: "Take turns through a fixed group in order and pass the turn on when done.",
372
+ exportName: "Rotation",
373
+ props: d({
374
+ people: m({ label: t.string().min(1).max(80) }, 20, 2),
375
+ task: t.string().min(1).max(160),
376
+ title: v("Whose turn")
377
+ }),
378
+ storeSchema: _({
379
+ completed: t.number().int().min(0).default(0),
380
+ turn: h().nullable().default(null)
381
+ })
382
+ },
383
+ scoreboard: {
384
+ description: "Keep score for a few players with a fixed step. Not a distributed counter or a league.",
385
+ exportName: "Scoreboard",
386
+ props: d({
387
+ players: m({ label: t.string().min(1).max(80) }, 12, 2),
388
+ step: t.number().int().positive().max(1e3).default(1),
389
+ title: v("Scores")
390
+ }),
391
+ storeSchema: p(i.scoreboard, t.number().int(), {})
392
+ },
393
+ shoppingList: {
394
+ description: "Check items off a shopping list with optional prices and a running cart total. No ordering.",
395
+ exportName: "ShoppingList",
396
+ props: d({
397
+ currency: f(),
398
+ items: m({
399
+ label: t.string().min(1).max(160),
400
+ price: t.number().min(0).max(1e9).optional(),
401
+ quantity: t.number().int().min(1).max(999).default(1)
402
+ }, 100),
403
+ title: v("Shopping list")
404
+ }),
405
+ storeSchema: p(i.shoppingList, t.boolean(), {})
406
+ },
407
+ taskBoard: {
408
+ description: "Move tasks between To do, Doing, and Done. No assignees, dates, or sync.",
409
+ exportName: "TaskBoard",
410
+ props: d({
411
+ tasks: m({ label: t.string().min(1).max(500) }, 50),
412
+ title: v("Tasks")
413
+ }),
414
+ storeSchema: p(i.taskBoard, t.enum([
415
+ "todo",
416
+ "doing",
417
+ "done"
418
+ ]), {})
419
+ },
420
+ timeZone: {
421
+ description: "Compare local times in named time zones, live or at an explicit instant.",
422
+ exportName: "TimeZone",
423
+ props: d({
424
+ at: t.iso.datetime({ offset: !0 }).nullable().default(null),
425
+ title: v("World clock"),
426
+ zones: t.array(x()).min(2).max(6)
427
+ }),
428
+ storeSchema: _({ at: w(t.iso.datetime({ offset: !0 }).nullable().default(null)) })
429
+ },
430
+ timer: {
431
+ description: "Countdown, focus, break, or stopwatch. Start, pause, resume, reset; no background alarm.",
432
+ exportName: "Timer",
433
+ props: d({
434
+ durationSeconds: t.number().int().min(1).max(604800).default(300),
435
+ mode: t.enum([
436
+ "countdown",
437
+ "focus",
438
+ "break",
439
+ "stopwatch"
440
+ ]).default("countdown"),
441
+ title: v("Timer")
442
+ }),
443
+ storeSchema: _({
444
+ elapsedSeconds: t.number().min(0).default(0),
445
+ startedAt: t.number().nullable().default(null)
446
+ })
447
+ },
448
+ trip: {
449
+ description: "Edit and retain trip details. No bookings or itinerary retrieval.",
450
+ exportName: "Trip",
451
+ props: d({
452
+ destination: t.string().min(1).max(160),
453
+ endDate: t.iso.date().nullable().default(null),
454
+ origin: t.string().min(1).max(160),
455
+ startDate: t.iso.date().nullable().default(null),
456
+ title: v("Trip"),
457
+ transport: t.enum([
458
+ "car",
459
+ "train",
460
+ "plane",
461
+ "walk",
462
+ "other"
463
+ ]).default("other")
464
+ }).refine((e) => !e.startDate || !e.endDate || e.endDate >= e.startDate, {
465
+ message: "The trip cannot end before it starts.",
466
+ path: ["endDate"]
467
+ }),
468
+ storeSchema: _({
469
+ destination: w(t.string().max(160).default("")),
470
+ endDate: w(t.iso.date().nullable().default(null)),
471
+ origin: w(t.string().max(160).default("")),
472
+ startDate: w(t.iso.date().nullable().default(null))
473
+ }).refine((e) => !e.startDate.value || !e.endDate.value || e.endDate.value >= e.startDate.value, "The trip cannot end before it starts.")
474
+ },
475
+ unitConverter: {
476
+ description: "Convert compatible length, mass, or temperature units deterministically.",
477
+ exportName: "UnitConverter",
478
+ props: d({
479
+ from: b(),
480
+ title: v("Convert"),
481
+ to: b(),
482
+ value: t.number()
483
+ }).refine(({ from: e, to: t }) => u[e].dimension === u[t].dimension, {
484
+ message: "Source and destination units must measure the same dimension.",
485
+ path: ["to"]
486
+ }),
487
+ storeSchema: _({
488
+ from: w(b().default("km")),
489
+ to: w(b().default("mi")),
490
+ value: t.number().default(0)
491
+ }).refine(({ from: e, to: t }) => u[e.value].dimension === u[t.value].dimension, "Incompatible units.")
492
+ }
493
+ }, s = t.enum(/* @__PURE__ */ "checklist.timer.habit.goal.poll.event.reminder.trip.countdown.timeZone.colorPalette.billSplit.expense.unitConverter.calculator.randomPicker.contact.bookmark.note.budget.scoreboard.taskBoard.recipe.rotation.shoppingList.rating.ledger".split(".")), c = t.object({
494
+ configuration: t.string().default(""),
495
+ voter: t.string().min(1)
496
+ }), l = {
497
+ max_allowed_length: 2048,
498
+ protocols: ["http", "https"],
499
+ require_host: !0,
500
+ require_protocol: !0,
501
+ require_tld: !1,
502
+ require_valid_protocol: !0
503
+ }, u = {
504
+ c: {
505
+ dimension: "temperature",
506
+ factor: 1,
507
+ offset: 0
508
+ },
509
+ f: {
510
+ dimension: "temperature",
511
+ factor: 5 / 9,
512
+ offset: -32
513
+ },
514
+ ft: {
515
+ dimension: "length",
516
+ factor: .3048,
517
+ offset: 0
518
+ },
519
+ g: {
520
+ dimension: "mass",
521
+ factor: .001,
522
+ offset: 0
523
+ },
524
+ k: {
525
+ dimension: "temperature",
526
+ factor: 1,
527
+ offset: -273.15
528
+ },
529
+ kg: {
530
+ dimension: "mass",
531
+ factor: 1,
532
+ offset: 0
533
+ },
534
+ km: {
535
+ dimension: "length",
536
+ factor: 1e3,
537
+ offset: 0
538
+ },
539
+ lb: {
540
+ dimension: "mass",
541
+ factor: .45359237,
542
+ offset: 0
543
+ },
544
+ m: {
545
+ dimension: "length",
546
+ factor: 1,
547
+ offset: 0
548
+ },
549
+ mi: {
550
+ dimension: "length",
551
+ factor: 1609.344,
552
+ offset: 0
553
+ }
554
+ };
555
+ function d(e) {
556
+ return t.strictObject({
557
+ id: n,
558
+ revision: t.number().int().min(0).default(0),
559
+ scope: r,
560
+ ...e
561
+ });
562
+ }
563
+ function f() {
564
+ return t.string().regex(/^[A-Z]{3}$/).default("USD");
565
+ }
566
+ function p(e, n, r) {
567
+ let i = _(r), a = new Set(Object.keys(i.shape));
568
+ return t.intersection(i.loose(), t.looseRecord(t.templateLiteral([e, t.string()]), n)).refine((t) => Object.keys(t).every((t) => a.has(t) || t.startsWith(e)), `Item fields must start with ${e}.`);
569
+ }
570
+ function m(e, n, r = 1) {
571
+ return t.array(t.strictObject(e).extend({ id: h() })).min(r).max(n).refine(y, "IDs must be unique.");
572
+ }
573
+ function h() {
574
+ return t.string().min(1).max(80).refine((e) => e !== "__proto__");
575
+ }
576
+ function g() {
577
+ return t.union([
578
+ t.strictObject({ mode: t.literal("coin") }),
579
+ t.strictObject({ mode: t.literal("dice") }),
580
+ t.strictObject({
581
+ maximum: t.number().int(),
582
+ minimum: t.number().int(),
583
+ mode: t.literal("range")
584
+ }),
585
+ t.strictObject({
586
+ mode: t.literal("list"),
587
+ options: t.array(t.string().max(160)).max(100)
588
+ })
589
+ ]);
590
+ }
591
+ function _(e) {
592
+ return t.object({
593
+ configuration: t.record(t.string(), t.unknown()).nullable().default(null),
594
+ configurationRevision: t.number().int().min(0).default(0),
595
+ ...e
596
+ });
597
+ }
598
+ function v(e) {
599
+ let n = t.string().min(1).max(160);
600
+ return e === void 0 ? n : n.default(e);
601
+ }
602
+ function y(e) {
603
+ let t = e.map((e) => "id" in e ? e.id : void 0);
604
+ return new Set(t).size === t.length;
605
+ }
606
+ function b() {
607
+ return t.enum([
608
+ "m",
609
+ "km",
610
+ "mi",
611
+ "ft",
612
+ "kg",
613
+ "g",
614
+ "lb",
615
+ "c",
616
+ "f",
617
+ "k"
618
+ ]);
619
+ }
620
+ function x() {
621
+ return t.string().max(80).refine((e) => {
622
+ try {
623
+ return new Intl.DateTimeFormat("en", { timeZone: e }).format(0), !0;
624
+ } catch {
625
+ return !1;
626
+ }
627
+ }, "Use a valid IANA time zone.");
628
+ }
629
+ function S() {
630
+ return t.array(t.enum(a)).max(7).default([...a]);
631
+ }
632
+ function C() {
633
+ return t.string().max(2048).refine((t) => e(t, l), "Use a valid HTTP or HTTPS address.");
634
+ }
635
+ function w(e) {
636
+ return t.object({ value: e }).default(() => ({ value: e.parse(void 0) }));
637
+ }
638
+ //#endregion
639
+ export { i as entryPrefixes, o as kowalskiCatalog, s as kowalskiComponentSchema, n as kowalskiFeatureId, r as kowalskiScope, c as pollVoterSchema, u as unitDefinitions, l as webAddressOptions, a as weekdayNames };
@@ -0,0 +1,4 @@
1
+ import { KowalskiInput } from './catalog.js';
2
+ export declare function Timer(input: KowalskiInput<'timer'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
3
+ export declare function Countdown(input: KowalskiInput<'countdown'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
4
+ export declare function TimeZone(input: KowalskiInput<'timeZone'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { KowalskiComponent } from './catalog.js';
2
+ /** Stores an instant and edits calendar time in the supplied IANA timezone. */
3
+ export declare function FeatureDateTime(props: DateEditorProps & {
4
+ timeZone: string;
5
+ }): import("@flickfyi/photon/jsx-runtime").JSX.Element;
6
+ /** Date-only values remain calendar dates, without device timezone conversion. */
7
+ export declare function FeatureDate(props: DateEditorProps): import("@flickfyi/photon/jsx-runtime").JSX.Element;
8
+ type DateEditorProps = {
9
+ actionLabel?: string;
10
+ clearable?: boolean;
11
+ compact?: boolean;
12
+ component: KowalskiComponent;
13
+ label: string;
14
+ inline?: boolean;
15
+ onChange: (value: string | null, onSaved?: () => void) => boolean | void;
16
+ onEditingChange?: (editing: boolean) => void;
17
+ ready: boolean;
18
+ saving?: boolean;
19
+ submitLabel?: string;
20
+ value: string | null;
21
+ };
22
+ export {};
@@ -0,0 +1,7 @@
1
+ import { KowalskiInput } from './catalog.js';
2
+ export declare function Event(input: KowalskiInput<'event'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
3
+ export declare function Reminder(input: KowalskiInput<'reminder'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
4
+ export declare function Trip(input: KowalskiInput<'trip'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
5
+ export declare function Contact(input: KowalskiInput<'contact'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
6
+ export declare function Bookmark(input: KowalskiInput<'bookmark'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
7
+ export declare function Note(input: KowalskiInput<'note'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { KowalskiInput } from './catalog.js';
2
+ export declare function Budget(input: KowalskiInput<'budget'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
3
+ export declare function Scoreboard(input: KowalskiInput<'scoreboard'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
4
+ export declare function TaskBoard(input: KowalskiInput<'taskBoard'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
5
+ export declare function Rotation(input: KowalskiInput<'rotation'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
6
+ export declare function ShoppingList(input: KowalskiInput<'shoppingList'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
7
+ export declare function Rating(input: KowalskiInput<'rating'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
8
+ export declare function Ledger(input: KowalskiInput<'ledger'>): import("@flickfyi/photon/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ /** Kowalski's authored English UI uses one cache for display and editor formatting. */
2
+ export declare const format: import('@formatjs/intl').IntlShape<string>;
3
+ /** Validate the UI's English decimal/currency grammar before removing its fixed affixes. */
4
+ export declare function parseNumberInput(text: string, currency?: string): number;