create-foldkit-app 0.32.0 → 0.32.1

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 (149) hide show
  1. package/dist/commands/create.js +9 -7
  2. package/dist/templates/base/FOLDKIT.md +22 -6
  3. package/dist/templates/examples/api-cache/src/data.ts +14 -14
  4. package/dist/templates/examples/api-cache/src/main.ts +42 -39
  5. package/dist/templates/examples/auth/src/command.ts +3 -3
  6. package/dist/templates/examples/auth/src/domain/session.ts +8 -6
  7. package/dist/templates/examples/auth/src/main.ts +11 -11
  8. package/dist/templates/examples/auth/src/message.ts +3 -3
  9. package/dist/templates/examples/auth/src/model.ts +2 -2
  10. package/dist/templates/examples/auth/src/page/loggedIn/index.ts +1 -1
  11. package/dist/templates/examples/auth/src/page/loggedIn/view.ts +3 -3
  12. package/dist/templates/examples/auth/src/page/loggedOut/index.ts +1 -1
  13. package/dist/templates/examples/auth/src/page/loggedOut/page/login.ts +9 -17
  14. package/dist/templates/examples/auth/src/page/loggedOut/update.ts +4 -6
  15. package/dist/templates/examples/auth/src/page/loggedOut/view.ts +3 -3
  16. package/dist/templates/examples/auth/src/route.ts +2 -2
  17. package/dist/templates/examples/auth/src/update.ts +37 -40
  18. package/dist/templates/examples/auth/src/view.ts +6 -6
  19. package/dist/templates/examples/canvas-art/src/main.ts +22 -30
  20. package/dist/templates/examples/charting/src/command.ts +3 -3
  21. package/dist/templates/examples/charting/src/domain.ts +53 -48
  22. package/dist/templates/examples/charting/src/echarts.ts +6 -6
  23. package/dist/templates/examples/charting/src/githubApi.ts +33 -34
  24. package/dist/templates/examples/charting/src/http.ts +7 -7
  25. package/dist/templates/examples/charting/src/message.ts +6 -6
  26. package/dist/templates/examples/charting/src/model.ts +6 -6
  27. package/dist/templates/examples/charting/src/npmApi.ts +19 -15
  28. package/dist/templates/examples/charting/src/subscription.ts +5 -5
  29. package/dist/templates/examples/charting/src/telemetry.test.ts +18 -12
  30. package/dist/templates/examples/charting/src/telemetry.ts +11 -18
  31. package/dist/templates/examples/charting/src/update.ts +17 -23
  32. package/dist/templates/examples/charting/src/view/chart.ts +2 -2
  33. package/dist/templates/examples/counter/src/main.ts +2 -2
  34. package/dist/templates/examples/counters/src/counter.ts +2 -2
  35. package/dist/templates/examples/counters/src/main.ts +8 -8
  36. package/dist/templates/examples/embedding/src/main.ts +10 -7
  37. package/dist/templates/examples/form/src/main.ts +18 -14
  38. package/dist/templates/examples/generative-art/src/command.ts +7 -2
  39. package/dist/templates/examples/generative-art/src/message.ts +14 -14
  40. package/dist/templates/examples/generative-art/src/model.ts +21 -21
  41. package/dist/templates/examples/generative-art/src/update.ts +15 -17
  42. package/dist/templates/examples/interrupting-commands/src/main.ts +30 -27
  43. package/dist/templates/examples/job-application/src/domain/proficiencyLevel.ts +2 -2
  44. package/dist/templates/examples/job-application/src/domain/pronounOption.ts +2 -2
  45. package/dist/templates/examples/job-application/src/domain/step.ts +11 -11
  46. package/dist/templates/examples/job-application/src/main.ts +5 -5
  47. package/dist/templates/examples/job-application/src/message.ts +2 -2
  48. package/dist/templates/examples/job-application/src/model.ts +5 -5
  49. package/dist/templates/examples/job-application/src/step/attachments.ts +32 -34
  50. package/dist/templates/examples/job-application/src/step/coverLetter.ts +4 -4
  51. package/dist/templates/examples/job-application/src/step/education/education.ts +11 -14
  52. package/dist/templates/examples/job-application/src/step/education/entry.ts +21 -22
  53. package/dist/templates/examples/job-application/src/step/personalInfo.ts +44 -54
  54. package/dist/templates/examples/job-application/src/step/skills/entry.ts +12 -14
  55. package/dist/templates/examples/job-application/src/step/skills/skills.ts +11 -14
  56. package/dist/templates/examples/job-application/src/step/workHistory/entry.ts +43 -45
  57. package/dist/templates/examples/job-application/src/step/workHistory/workHistory.ts +11 -14
  58. package/dist/templates/examples/job-application/src/update.ts +17 -17
  59. package/dist/templates/examples/job-application/src/view/attachments.ts +5 -5
  60. package/dist/templates/examples/job-application/src/view/datePicker.ts +3 -3
  61. package/dist/templates/examples/job-application/src/view/field.ts +5 -5
  62. package/dist/templates/examples/job-application/src/view/index.ts +28 -22
  63. package/dist/templates/examples/kanban/src/command.ts +4 -4
  64. package/dist/templates/examples/kanban/src/domain/card.ts +6 -6
  65. package/dist/templates/examples/kanban/src/domain/column.ts +9 -9
  66. package/dist/templates/examples/kanban/src/main.ts +4 -4
  67. package/dist/templates/examples/kanban/src/message.ts +6 -6
  68. package/dist/templates/examples/kanban/src/model.ts +11 -9
  69. package/dist/templates/examples/kanban/src/update.ts +5 -5
  70. package/dist/templates/examples/managed-resource-layer/src/main.ts +20 -20
  71. package/dist/templates/examples/map/src/locations.ts +7 -7
  72. package/dist/templates/examples/map/src/main.ts +83 -44
  73. package/dist/templates/examples/map/src/mount.test.ts +127 -0
  74. package/dist/templates/examples/pixel-art/src/command.ts +12 -5
  75. package/dist/templates/examples/pixel-art/src/main.ts +4 -4
  76. package/dist/templates/examples/pixel-art/src/message.ts +7 -7
  77. package/dist/templates/examples/pixel-art/src/model.ts +34 -29
  78. package/dist/templates/examples/pixel-art/src/subscription.ts +2 -2
  79. package/dist/templates/examples/pixel-art/src/update.ts +79 -86
  80. package/dist/templates/examples/query-sync/src/main.ts +106 -102
  81. package/dist/templates/examples/route-transitions/src/data.ts +6 -6
  82. package/dist/templates/examples/route-transitions/src/main.ts +23 -29
  83. package/dist/templates/examples/route-transitions/src/route.ts +3 -3
  84. package/dist/templates/examples/routing/src/fileTree.ts +10 -8
  85. package/dist/templates/examples/routing/src/main.ts +23 -21
  86. package/dist/templates/examples/routing/src/page/people.ts +14 -22
  87. package/dist/templates/examples/routing/src/route.ts +7 -7
  88. package/dist/templates/examples/shopping-cart/src/main.ts +30 -31
  89. package/dist/templates/examples/shopping-cart/src/page/products.ts +10 -10
  90. package/dist/templates/examples/shopping-cart/src/route.ts +6 -4
  91. package/dist/templates/examples/slow-warnings/src/main.ts +35 -43
  92. package/dist/templates/examples/snake/src/domain/snake.ts +2 -2
  93. package/dist/templates/examples/snake/src/main.ts +39 -47
  94. package/dist/templates/examples/ssg/src/main.ts +5 -5
  95. package/dist/templates/examples/ssg/src/route.ts +2 -2
  96. package/dist/templates/examples/ssr/src/cookie.ts +3 -3
  97. package/dist/templates/examples/ssr/src/main.ts +10 -10
  98. package/dist/templates/examples/state-machine/src/main.ts +55 -53
  99. package/dist/templates/examples/state-machine/src/view.ts +7 -7
  100. package/dist/templates/examples/stopwatch/src/main.ts +10 -10
  101. package/dist/templates/examples/todo/src/main.ts +41 -34
  102. package/dist/templates/examples/ui-showcase/src/main.ts +54 -42
  103. package/dist/templates/examples/ui-showcase/src/scene.test.ts +1 -1
  104. package/dist/templates/examples/ui-showcase/src/ui/init.ts +1 -2
  105. package/dist/templates/examples/ui-showcase/src/ui/message.ts +17 -18
  106. package/dist/templates/examples/ui-showcase/src/ui/model.ts +47 -44
  107. package/dist/templates/examples/ui-showcase/src/ui/subscriptions.ts +1 -1
  108. package/dist/templates/examples/ui-showcase/src/ui/toast.ts +4 -4
  109. package/dist/templates/examples/ui-showcase/src/ui/update.ts +287 -298
  110. package/dist/templates/examples/ui-showcase/src/ui/view/animation.ts +2 -2
  111. package/dist/templates/examples/ui-showcase/src/ui/view/button.ts +1 -1
  112. package/dist/templates/examples/ui-showcase/src/ui/view/calendar.ts +4 -4
  113. package/dist/templates/examples/ui-showcase/src/ui/view/checkbox.ts +1 -1
  114. package/dist/templates/examples/ui-showcase/src/ui/view/combobox.ts +1 -1
  115. package/dist/templates/examples/ui-showcase/src/ui/view/datePicker.ts +4 -4
  116. package/dist/templates/examples/ui-showcase/src/ui/view/dialog.ts +1 -1
  117. package/dist/templates/examples/ui-showcase/src/ui/view/disclosure.ts +1 -1
  118. package/dist/templates/examples/ui-showcase/src/ui/view/dragAndDrop.ts +1 -1
  119. package/dist/templates/examples/ui-showcase/src/ui/view/fieldset.ts +1 -1
  120. package/dist/templates/examples/ui-showcase/src/ui/view/fileDrop.ts +6 -6
  121. package/dist/templates/examples/ui-showcase/src/ui/view/hoverIntent.ts +9 -20
  122. package/dist/templates/examples/ui-showcase/src/ui/view/input.ts +1 -1
  123. package/dist/templates/examples/ui-showcase/src/ui/view/listbox.ts +1 -1
  124. package/dist/templates/examples/ui-showcase/src/ui/view/menu.ts +15 -15
  125. package/dist/templates/examples/ui-showcase/src/ui/view/popover.ts +1 -1
  126. package/dist/templates/examples/ui-showcase/src/ui/view/radioGroup.ts +1 -1
  127. package/dist/templates/examples/ui-showcase/src/ui/view/select.ts +1 -1
  128. package/dist/templates/examples/ui-showcase/src/ui/view/slider.ts +1 -1
  129. package/dist/templates/examples/ui-showcase/src/ui/view/switch.ts +1 -1
  130. package/dist/templates/examples/ui-showcase/src/ui/view/tabs.ts +7 -7
  131. package/dist/templates/examples/ui-showcase/src/ui/view/textarea.ts +1 -1
  132. package/dist/templates/examples/ui-showcase/src/ui/view/toast.ts +8 -8
  133. package/dist/templates/examples/ui-showcase/src/ui/view/tooltip.ts +1 -1
  134. package/dist/templates/examples/ui-showcase/src/ui/view/virtualList.ts +7 -7
  135. package/dist/templates/examples/view-transitions/src/artwork.ts +7 -7
  136. package/dist/templates/examples/view-transitions/src/main.ts +6 -6
  137. package/dist/templates/examples/view-transitions/src/route.ts +3 -3
  138. package/dist/templates/examples/weather/src/main.ts +42 -42
  139. package/dist/templates/examples/weather/src/story.test.ts +5 -5
  140. package/dist/templates/examples/web-components/src/main.ts +16 -16
  141. package/dist/templates/examples/websocket-chat/src/main.ts +30 -30
  142. package/dist/templates/release.json +13 -13
  143. package/dist/templates/rendering/ssg/src/main.ts +5 -5
  144. package/dist/templates/rendering/ssg/src/route.ts +2 -2
  145. package/dist/templates/rendering/ssr/server/main.ts +15 -15
  146. package/dist/templates/rendering/ssr/src/cookie.ts +3 -3
  147. package/dist/templates/rendering/ssr/src/main.ts +10 -10
  148. package/dist/utils/packages.js +17 -0
  149. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import clsx from 'clsx'
2
- import { Array, Effect, Match as M, Option, Schema as S, pipe } from 'effect'
2
+ import { Array, Effect, Match, Option, Schema, pipe } from 'effect'
3
3
  import {
4
4
  Calendar,
5
5
  Command,
@@ -20,10 +20,10 @@ import { Dialog, Nav } from '@foldkit/ui'
20
20
 
21
21
  import * as Icon from './icon'
22
22
  import { uiInit } from './ui/init'
23
- import { UiMessage } from './ui/message'
23
+ import { Message as UiMessage } from './ui/message'
24
24
  import { UiModel } from './ui/model'
25
25
  import * as UiSubscriptions from './ui/subscriptions'
26
- import { uiUpdate } from './ui/update'
26
+ import { closeMobileMenu, openMobileMenu, uiUpdate } from './ui/update'
27
27
  import * as View from './ui/view'
28
28
 
29
29
  // ROUTE
@@ -55,7 +55,7 @@ export const AppRoute = defineRouteUnion({
55
55
  Tooltip: {},
56
56
  Animation: {},
57
57
  VirtualList: {},
58
- NotFound: { path: S.String },
58
+ NotFound: { path: Schema.String },
59
59
  })
60
60
 
61
61
  export type AppRoute = typeof AppRoute.Type
@@ -144,7 +144,7 @@ const urlToAppRoute = Route.parseUrlWithFallback(routeParser, AppRoute.NotFound)
144
144
 
145
145
  // MODEL
146
146
 
147
- export const Model = S.Struct({
147
+ export const Model = Schema.Struct({
148
148
  route: AppRoute,
149
149
  uiModel: UiModel,
150
150
  })
@@ -158,6 +158,7 @@ export const Message = defineMessageUnion({
158
158
  CompletedLoadExternal: {},
159
159
  ClickedLink: { request: UrlRequest },
160
160
  ChangedUrl: { url: Url },
161
+ ClickedOpenMobileMenu: {},
161
162
  GotUiMessage: { message: UiMessage },
162
163
  })
163
164
 
@@ -166,14 +167,14 @@ export type Message = typeof Message.Type
166
167
  // COMMAND
167
168
 
168
169
  const NavigateInternal = Command.define('NavigateInternal', {
169
- args: { url: S.String },
170
+ args: { url: Schema.String },
170
171
  messages: [Message.CompletedNavigateInternal],
171
172
  execute: ({ url }) =>
172
173
  pushUrl(url).pipe(Effect.as(Message.CompletedNavigateInternal())),
173
174
  })
174
175
 
175
176
  const LoadExternal = Command.define('LoadExternal', {
176
- args: { href: S.String },
177
+ args: { href: Schema.String },
177
178
  messages: [Message.CompletedLoadExternal],
178
179
  execute: ({ href }) =>
179
180
  load(href).pipe(Effect.as(Message.CompletedLoadExternal())),
@@ -181,7 +182,7 @@ const LoadExternal = Command.define('LoadExternal', {
181
182
 
182
183
  // INIT
183
184
 
184
- export const Flags = S.Struct({
185
+ export const Flags = Schema.Struct({
185
186
  today: Calendar.CalendarDate,
186
187
  })
187
188
 
@@ -211,14 +212,9 @@ export const init: Runtime.RoutingApplicationInit<Model, Message, Flags> = (
211
212
 
212
213
  // UPDATE
213
214
 
214
- const toUiMessage = (message: typeof UiMessage.Type): Message =>
215
+ const toUiMessage = (message: UiMessage): Message =>
215
216
  Message.GotUiMessage({ message })
216
217
 
217
- const toMobileMenuDialogMessage = (message: Dialog.Message): Message =>
218
- Message.GotUiMessage({
219
- message: UiMessage.GotMobileMenuDialogMessage({ message }),
220
- })
221
-
222
218
  const foldUi = Update.foldChild({
223
219
  update: uiUpdate,
224
220
  read: (model: Model) => Option.some(model.uiModel),
@@ -226,23 +222,18 @@ const foldUi = Update.foldChild({
226
222
  toParentMessage: toUiMessage,
227
223
  })
228
224
 
229
- const foldMobileMenuDialogOutMessage = M.type<Dialog.OutMessage>().pipe(
230
- M.withReturnType<Update.Step<Model, Message>>(),
231
- M.tagsExhaustive({
232
- Opened: () => model => ({ model }),
233
- Closed: () => model => ({ model }),
234
- }),
235
- )
225
+ const foldUiOpenMobileMenu = Update.foldChildStep({
226
+ update: openMobileMenu,
227
+ read: (model: Model) => Option.some(model.uiModel),
228
+ write: (model, nextUiModel) => evo(model, { uiModel: () => nextUiModel }),
229
+ toParentMessage: toUiMessage,
230
+ })
236
231
 
237
- const foldMobileMenuDialogClose = Update.foldChildStep({
238
- update: Dialog.close,
239
- read: (model: Model) => Option.some(model.uiModel.mobileMenuDialog),
240
- write: (model, nextMobileMenuDialog) =>
241
- evo(model, {
242
- uiModel: evo({ mobileMenuDialog: () => nextMobileMenuDialog }),
243
- }),
244
- toParentMessage: toMobileMenuDialogMessage,
245
- foldOutMessage: foldMobileMenuDialogOutMessage,
232
+ const foldUiCloseMobileMenu = Update.foldChildStep({
233
+ update: closeMobileMenu,
234
+ read: (model: Model) => Option.some(model.uiModel),
235
+ write: (model, nextUiModel) => evo(model, { uiModel: () => nextUiModel }),
236
+ toParentMessage: toUiMessage,
246
237
  })
247
238
 
248
239
  type UpdateReturn = Update.Return<Model, Message>
@@ -269,9 +260,11 @@ export const update = (model: Model, message: Message) =>
269
260
  stepModel => ({
270
261
  model: evo(stepModel, { route: () => urlToAppRoute(url) }),
271
262
  }),
272
- foldMobileMenuDialogClose,
263
+ foldUiCloseMobileMenu,
273
264
  ]),
274
265
 
266
+ ClickedOpenMobileMenu: () => foldUiOpenMobileMenu(model),
267
+
275
268
  GotUiMessage: ({ message }) => foldUi(model, message),
276
269
  })
277
270
 
@@ -348,7 +341,7 @@ const componentNav = (
348
341
  toView,
349
342
  })
350
343
 
351
- const navListView = (
344
+ const navListView = <Message>(
352
345
  items: ReadonlyArray<Nav.ItemInfo>,
353
346
  linkClassName: (isActive: boolean) => string,
354
347
  h: HtmlBuilder<Message>,
@@ -421,7 +414,7 @@ const sidebarView = (currentRoute: AppRoute, h: HtmlBuilder<Message>): Html =>
421
414
  const mobileMenuContent = (
422
415
  currentRoute: AppRoute,
423
416
  closeButton: Dialog.RenderInfo['closeButton'],
424
- h: HtmlBuilder<Message>,
417
+ h: HtmlBuilder<UiMessage>,
425
418
  ): Html =>
426
419
  h.div(
427
420
  [h.Class('flex flex-col h-full')],
@@ -510,17 +503,25 @@ const mobileHeaderView = (model: Model, h: HtmlBuilder<Message>): Html =>
510
503
  ),
511
504
  h.AriaExpanded(model.uiModel.mobileMenuDialog.isOpen),
512
505
  h.AriaLabel('Toggle menu'),
513
- h.OnClick(toUiMessage(UiMessage.ClickedOpenMobileMenu())),
506
+ h.OnClick(Message.ClickedOpenMobileMenu()),
514
507
  ],
515
508
  [Icon.menu('w-6 h-6')],
516
509
  ),
517
510
  ],
518
511
  )
519
512
 
520
- const mobileMenuView = (model: Model, h: HtmlBuilder<Message>): Html =>
513
+ type MobileMenuViewInputs = Readonly<{
514
+ currentRoute: AppRoute
515
+ }>
516
+
517
+ const mobileMenuDialogView = Submodel.defineView<
518
+ UiModel,
519
+ UiMessage,
520
+ MobileMenuViewInputs
521
+ >((model, { currentRoute }, h): Html =>
521
522
  h.submodel({
522
- slotId: model.uiModel.mobileMenuDialog.id,
523
- model: model.uiModel.mobileMenuDialog,
523
+ slotId: model.mobileMenuDialog.id,
524
+ model: model.mobileMenuDialog,
524
525
  view: Dialog.view,
525
526
  viewInputs: {
526
527
  toView: ({ dialog, backdrop, panel, closeButton, isVisible }) =>
@@ -534,13 +535,24 @@ const mobileMenuView = (model: Model, h: HtmlBuilder<Message>): Html =>
534
535
  ...panel,
535
536
  h.Class('fixed inset-0 z-[60] bg-white flex flex-col'),
536
537
  ],
537
- [mobileMenuContent(model.route, closeButton, h)],
538
+ [mobileMenuContent(currentRoute, closeButton, h)],
538
539
  ),
539
540
  ]
540
541
  : [],
541
542
  ),
542
543
  },
543
- toParentMessage: message => toMobileMenuDialogMessage(message),
544
+ toParentMessage: message =>
545
+ UiMessage.GotMobileMenuDialogMessage({ message }),
546
+ }),
547
+ )
548
+
549
+ const mobileMenuView = (model: Model, h: HtmlBuilder<Message>): Html =>
550
+ h.submodel({
551
+ slotId: 'mobile-menu',
552
+ model: model.uiModel,
553
+ view: mobileMenuDialogView,
554
+ viewInputs: { currentRoute: model.route },
555
+ toParentMessage: toUiMessage,
544
556
  })
545
557
 
546
558
  const homeView = (h: HtmlBuilder<Message>): Html =>
@@ -626,9 +638,9 @@ const contentView = (model: Model, h: HtmlBuilder<Message>): Html => {
626
638
  }
627
639
 
628
640
  const routeTitle = (route: Model['route']): string =>
629
- M.value(route).pipe(
630
- M.tag('Home', () => 'Foldkit UI Showcase'),
631
- M.orElse(({ _tag }) => `${_tag} | Foldkit UI Showcase`),
641
+ Match.value(route).pipe(
642
+ Match.tag('Home', () => 'Foldkit UI Showcase'),
643
+ Match.orElse(({ _tag }) => `${_tag} | Foldkit UI Showcase`),
632
644
  )
633
645
 
634
646
  export const view = (model: Model, h: HtmlBuilder<Message>): Document => ({
@@ -71,7 +71,7 @@ describe('view', () => {
71
71
  { update, view },
72
72
  given(modelForRoute(AppRoute.HoverIntent())),
73
73
  expect(role('heading', { name: 'Hover Intent' })).toExist(),
74
- expect(role('button', { name: 'Preview account' })).toExist(),
74
+ expect(role('button', { name: 'More information' })).toExist(),
75
75
  )
76
76
  })
77
77
 
@@ -20,7 +20,7 @@ import {
20
20
  VirtualList,
21
21
  } from '@foldkit/ui'
22
22
 
23
- import type { UiMessage } from './message'
23
+ import type { Message as UiMessage } from './message'
24
24
  import type { UiModel } from './model'
25
25
  import { Toast } from './toast'
26
26
 
@@ -173,7 +173,6 @@ export const uiInit = (today: Calendar.CalendarDate): InitReturn => ({
173
173
  showDelay: 0,
174
174
  }),
175
175
  animationDemo: Animation.init({ id: 'animation-demo' }),
176
- isAnimationDemoShowing: false,
177
176
  virtualListDemo: VirtualList.init({
178
177
  id: 'virtual-list-demo',
179
178
  rowHeightPx: 56,
@@ -1,4 +1,4 @@
1
- import { Schema as S } from 'effect'
1
+ import { Schema } from 'effect'
2
2
  import { defineMessageUnion } from 'foldkit/message'
3
3
 
4
4
  import {
@@ -22,21 +22,20 @@ import {
22
22
 
23
23
  import { Toast } from './toast'
24
24
 
25
- export const UiMessage = defineMessageUnion({
25
+ export const Message = defineMessageUnion({
26
26
  GotMobileMenuDialogMessage: { message: Dialog.Message },
27
- ClickedOpenMobileMenu: {},
28
27
  ClickedButtonDemo: {},
29
28
  GotAnimationDemoMessage: { message: Animation.Message },
30
29
  ToggledAnimationDemo: {},
31
- UpdatedInputDemoValue: { value: S.String },
32
- UpdatedTextareaDemoValue: { value: S.String },
33
- UpdatedFieldsetInputValue: { value: S.String },
34
- UpdatedFieldsetTextareaValue: { value: S.String },
35
- ToggledFieldsetCheckboxDemo: { isChecked: S.Boolean },
36
- ToggledCheckboxBasicDemo: { isChecked: S.Boolean },
37
- ToggledCheckboxAllDemo: { isChecked: S.Boolean },
38
- ToggledCheckboxOptionADemo: { isChecked: S.Boolean },
39
- ToggledCheckboxOptionBDemo: { isChecked: S.Boolean },
30
+ UpdatedInputDemoValue: { value: Schema.String },
31
+ UpdatedTextareaDemoValue: { value: Schema.String },
32
+ UpdatedFieldsetInputValue: { value: Schema.String },
33
+ UpdatedFieldsetTextareaValue: { value: Schema.String },
34
+ ToggledFieldsetCheckboxDemo: { isChecked: Schema.Boolean },
35
+ ToggledCheckboxBasicDemo: { isChecked: Schema.Boolean },
36
+ ToggledCheckboxAllDemo: { isChecked: Schema.Boolean },
37
+ ToggledCheckboxOptionADemo: { isChecked: Schema.Boolean },
38
+ ToggledCheckboxOptionBDemo: { isChecked: Schema.Boolean },
40
39
  GotComboboxDemoMessage: { message: Combobox.Message },
41
40
  GotComboboxNullableDemoMessage: { message: Combobox.Message },
42
41
  GotComboboxMultiDemoMessage: { message: Combobox.Message },
@@ -53,13 +52,13 @@ export const UiMessage = defineMessageUnion({
53
52
  ClickedOpenAnimatedDialog: {},
54
53
  ClickedEditFilters: {},
55
54
  ClickedOpenProjectSettings: {},
56
- ToggledDisclosureBasicDemo: { isOpen: S.Boolean },
57
- ToggledDisclosureAnimatedDemo: { isOpen: S.Boolean },
55
+ ToggledDisclosureBasicDemo: { isOpen: Schema.Boolean },
56
+ ToggledDisclosureAnimatedDemo: { isOpen: Schema.Boolean },
58
57
  GotCalendarBasicDemoMessage: { message: Calendar.Message },
59
58
  GotDatePickerBasicDemoMessage: { message: DatePicker.Message },
60
59
  GotDragAndDropDemoMessage: { message: DragAndDrop.Message },
61
60
  GotFileDropBasicDemoMessage: { message: FileDrop.Message },
62
- ClickedRemoveFileDropDemoFile: { fileIndex: S.Number },
61
+ ClickedRemoveFileDropDemoFile: { fileIndex: Schema.Number },
63
62
  GotHoverIntentDemoMessage: { message: HoverIntent.Message },
64
63
  GotListboxDemoMessage: { message: Listbox.Message },
65
64
  GotListboxMultiDemoMessage: { message: Listbox.Message },
@@ -72,10 +71,10 @@ export const UiMessage = defineMessageUnion({
72
71
  GotPopoverNestedChildDemoMessage: { message: Popover.Message },
73
72
  GotVerticalRadioGroupDemoMessage: { message: RadioGroup.Message },
74
73
  GotHorizontalRadioGroupDemoMessage: { message: RadioGroup.Message },
75
- UpdatedSelectDemoValue: { value: S.String },
74
+ UpdatedSelectDemoValue: { value: Schema.String },
76
75
  GotSliderRatingDemoMessage: { message: Slider.Message },
77
76
  GotSliderVolumeDemoMessage: { message: Slider.Message },
78
- ToggledSwitchDemo: { isChecked: S.Boolean },
77
+ ToggledSwitchDemo: { isChecked: Schema.Boolean },
79
78
  GotHorizontalTabsDemoMessage: { message: Tabs.Message },
80
79
  GotVerticalTabsDemoMessage: { message: Tabs.Message },
81
80
  GotToastDemoMessage: { message: Toast.Message },
@@ -93,4 +92,4 @@ export const UiMessage = defineMessageUnion({
93
92
  ClickedVirtualListVariableScrollToMiddle: {},
94
93
  })
95
94
 
96
- export type UiMessage = typeof UiMessage.Type
95
+ export type Message = typeof Message.Type
@@ -1,4 +1,4 @@
1
- import { Schema as S } from 'effect'
1
+ import { Schema } from 'effect'
2
2
  import { File, Calendar as FoldkitCalendar } from 'foldkit'
3
3
 
4
4
  import {
@@ -22,13 +22,13 @@ import {
22
22
 
23
23
  import { Toast } from './toast'
24
24
 
25
- export const Plan = S.Literals(['Startup', 'Business', 'Enterprise'])
25
+ export const Plan = Schema.Literals(['Startup', 'Business', 'Enterprise'])
26
26
  export type Plan = typeof Plan.Type
27
27
 
28
- export const DemoTab = S.Literals(['Foldkit', 'React', 'Elm'])
28
+ export const DemoTab = Schema.Literals(['Foldkit', 'React', 'Elm'])
29
29
  export type DemoTab = typeof DemoTab.Type
30
30
 
31
- export const City = S.Literals([
31
+ export const City = Schema.Literals([
32
32
  'Johannesburg',
33
33
  'Kyiv',
34
34
  'Oxford',
@@ -39,7 +39,7 @@ export const City = S.Literals([
39
39
  ])
40
40
  export type City = typeof City.Type
41
41
 
42
- export const ListboxItem = S.Literals([
42
+ export const ListboxItem = Schema.Literals([
43
43
  'Michael Bluth',
44
44
  'Lindsay Funke',
45
45
  'Gob Bluth',
@@ -51,64 +51,68 @@ export const ListboxItem = S.Literals([
51
51
  ])
52
52
  export type ListboxItem = typeof ListboxItem.Type
53
53
 
54
- export const DemoCard = S.Struct({
55
- id: S.String,
56
- label: S.String,
54
+ export const DemoCard = Schema.Struct({
55
+ id: Schema.String,
56
+ label: Schema.String,
57
57
  })
58
58
  export type DemoCard = typeof DemoCard.Type
59
59
 
60
- export const DemoColumn = S.Struct({
61
- id: S.String,
62
- label: S.String,
63
- cards: S.Array(DemoCard),
60
+ export const DemoColumn = Schema.Struct({
61
+ id: Schema.String,
62
+ label: Schema.String,
63
+ cards: Schema.Array(DemoCard),
64
64
  })
65
65
  export type DemoColumn = typeof DemoColumn.Type
66
66
 
67
- export const UiModel = S.Struct({
67
+ export const UiModel = Schema.Struct({
68
68
  mobileMenuDialog: Dialog.Model,
69
- buttonClickCount: S.Number,
70
- inputDemoValue: S.String,
71
- textareaDemoValue: S.String,
72
- fieldsetInputValue: S.String,
73
- fieldsetTextareaValue: S.String,
74
- isFieldsetCheckboxDemoChecked: S.Boolean,
69
+ buttonClickCount: Schema.Number,
70
+ inputDemoValue: Schema.String,
71
+ textareaDemoValue: Schema.String,
72
+ fieldsetInputValue: Schema.String,
73
+ fieldsetTextareaValue: Schema.String,
74
+ isFieldsetCheckboxDemoChecked: Schema.Boolean,
75
75
  calendarBasicDemo: Calendar.Model,
76
- maybeCalendarBasicDemoSelectedDate: S.Option(FoldkitCalendar.CalendarDate),
76
+ maybeCalendarBasicDemoSelectedDate: Schema.Option(
77
+ FoldkitCalendar.CalendarDate,
78
+ ),
77
79
  datePickerBasicDemo: DatePicker.Model,
78
- maybeDatePickerBasicDemoSelectedDate: S.Option(FoldkitCalendar.CalendarDate),
79
- isCheckboxBasicDemoChecked: S.Boolean,
80
- isCheckboxOptionADemoChecked: S.Boolean,
81
- isCheckboxOptionBDemoChecked: S.Boolean,
80
+ maybeDatePickerBasicDemoSelectedDate: Schema.Option(
81
+ FoldkitCalendar.CalendarDate,
82
+ ),
83
+ isCheckboxBasicDemoChecked: Schema.Boolean,
84
+ isCheckboxOptionADemoChecked: Schema.Boolean,
85
+ isCheckboxOptionBDemoChecked: Schema.Boolean,
82
86
  comboboxDemo: Combobox.Model,
83
- maybeComboboxDemoSelectedCity: S.Option(City),
87
+ maybeComboboxDemoSelectedCity: Schema.Option(City),
84
88
  comboboxNullableDemo: Combobox.Model,
85
- maybeComboboxNullableDemoSelectedCity: S.Option(City),
89
+ maybeComboboxNullableDemoSelectedCity: Schema.Option(City),
86
90
  comboboxMultiDemo: Combobox.Multi.Model,
87
- comboboxMultiDemoSelectedCities: S.Array(City),
91
+ comboboxMultiDemoSelectedCities: Schema.Array(City),
88
92
  comboboxPlacementLockDemo: Combobox.Model,
89
- maybeComboboxPlacementLockDemoSelectedCity: S.Option(City),
93
+ maybeComboboxPlacementLockDemoSelectedCity: Schema.Option(City),
90
94
  comboboxSelectOnFocusDemo: Combobox.Model,
91
- maybeComboboxSelectOnFocusDemoSelectedCity: S.Option(City),
95
+ maybeComboboxSelectOnFocusDemoSelectedCity: Schema.Option(City),
92
96
  dialogDemo: Dialog.Model,
93
97
  dialogAnimatedDemo: Dialog.Model,
94
98
  overlayDialogDemo: Dialog.Model,
95
99
  overlayComboboxDemo: Combobox.Model,
96
- maybeOverlayComboboxDemoSelectedCity: S.Option(City),
100
+ maybeOverlayComboboxDemoSelectedCity: Schema.Option(City),
97
101
  nestedDialogParentDemo: Dialog.Model,
98
102
  nestedDialogChildDemo: Dialog.Model,
99
- isDisclosureBasicDemoOpen: S.Boolean,
100
- isDisclosureAnimatedDemoOpen: S.Boolean,
103
+ isDisclosureBasicDemoOpen: Schema.Boolean,
104
+ isDisclosureAnimatedDemoOpen: Schema.Boolean,
101
105
  dragAndDropDemo: DragAndDrop.Model,
102
- dragAndDropDemoColumns: S.Array(DemoColumn),
106
+ dragAndDropDemoColumns: Schema.Array(DemoColumn),
103
107
  fileDropBasicDemo: FileDrop.Model,
104
- fileDropBasicDemoFiles: S.Array(File.File),
108
+ fileDropBasicDemoFiles: Schema.Array(File.File),
105
109
  hoverIntentDemo: HoverIntent.Model,
106
110
  listboxDemo: Listbox.Model,
107
- maybeListboxDemoSelectedItem: S.Option(ListboxItem),
111
+ maybeListboxDemoSelectedItem: Schema.Option(ListboxItem),
108
112
  listboxMultiDemo: Listbox.Multi.Model,
109
- listboxMultiDemoSelectedItems: S.Array(ListboxItem),
113
+ listboxMultiDemoSelectedItems: Schema.Array(ListboxItem),
110
114
  listboxGroupedDemo: Listbox.Model,
111
- maybeListboxGroupedDemoSelectedItem: S.Option(S.String),
115
+ maybeListboxGroupedDemoSelectedItem: Schema.Option(Schema.String),
112
116
  menuBasicDemo: Menu.Model,
113
117
  menuAnimatedDemo: Menu.Model,
114
118
  popoverBasicDemo: Popover.Model,
@@ -116,15 +120,15 @@ export const UiModel = S.Struct({
116
120
  popoverNestedParentDemo: Popover.Model,
117
121
  popoverNestedChildDemo: Popover.Model,
118
122
  verticalRadioGroupDemo: RadioGroup.Model,
119
- verticalRadioGroupDemoValue: S.Option(Plan),
123
+ verticalRadioGroupDemoValue: Schema.Option(Plan),
120
124
  horizontalRadioGroupDemo: RadioGroup.Model,
121
- horizontalRadioGroupDemoValue: S.Option(Plan),
122
- selectDemoValue: S.String,
125
+ horizontalRadioGroupDemoValue: Schema.Option(Plan),
126
+ selectDemoValue: Schema.String,
123
127
  sliderRatingDemo: Slider.Model,
124
- sliderRatingValue: S.Number,
128
+ sliderRatingValue: Schema.Number,
125
129
  sliderVolumeDemo: Slider.Model,
126
- sliderVolumeValue: S.Number,
127
- isSwitchDemoChecked: S.Boolean,
130
+ sliderVolumeValue: Schema.Number,
131
+ isSwitchDemoChecked: Schema.Boolean,
128
132
  horizontalTabsDemo: Tabs.Model,
129
133
  horizontalTabsDemoTab: DemoTab,
130
134
  verticalTabsDemo: Tabs.Model,
@@ -133,7 +137,6 @@ export const UiModel = S.Struct({
133
137
  tooltipBasicDemo: Tooltip.Model,
134
138
  tooltipNoDelayDemo: Tooltip.Model,
135
139
  animationDemo: Animation.Model,
136
- isAnimationDemoShowing: S.Boolean,
137
140
  virtualListDemo: VirtualList.Model,
138
141
  virtualListVariableDemo: VirtualList.Model,
139
142
  })
@@ -2,7 +2,7 @@ import { Subscription } from 'foldkit'
2
2
 
3
3
  import { DragAndDrop, Slider, VirtualList } from '@foldkit/ui'
4
4
 
5
- import { UiMessage } from './message'
5
+ import { Message as UiMessage } from './message'
6
6
  import type { UiModel } from './model'
7
7
 
8
8
  const dragAndDropSubscriptions = Subscription.lift({
@@ -1,12 +1,12 @@
1
- import { Schema as S } from 'effect'
1
+ import { Schema } from 'effect'
2
2
 
3
3
  import { Toast as UiToast } from '@foldkit/ui'
4
4
 
5
5
  /** Payload shape for the showcase's toast stack. Consumer decides what goes
6
6
  * in each entry; the Toast component owns only lifecycle and a11y. */
7
- export const ToastPayload = S.Struct({
8
- title: S.String,
9
- maybeDescription: S.Option(S.String),
7
+ export const ToastPayload = Schema.Struct({
8
+ title: Schema.String,
9
+ maybeDescription: Schema.Option(Schema.String),
10
10
  })
11
11
  export type ToastPayload = typeof ToastPayload.Type
12
12