foldkit 0.24.0 → 0.25.0

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 (61) hide show
  1. package/dist/fieldValidation/index.d.ts +3 -4
  2. package/dist/fieldValidation/index.d.ts.map +1 -1
  3. package/dist/fieldValidation/index.js +11 -15
  4. package/dist/html/index.d.ts +42 -0
  5. package/dist/html/index.d.ts.map +1 -1
  6. package/dist/html/index.js +15 -3
  7. package/dist/html/lazy.d.ts +12 -0
  8. package/dist/html/lazy.d.ts.map +1 -0
  9. package/dist/html/lazy.js +35 -0
  10. package/dist/html/public.d.ts +1 -0
  11. package/dist/html/public.d.ts.map +1 -1
  12. package/dist/html/public.js +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/managedResource/index.d.ts +38 -0
  17. package/dist/managedResource/index.d.ts.map +1 -0
  18. package/dist/managedResource/index.js +20 -0
  19. package/dist/managedResource/public.d.ts +5 -0
  20. package/dist/managedResource/public.d.ts.map +1 -0
  21. package/dist/managedResource/public.js +2 -0
  22. package/dist/runtime/managedResource.d.ts +114 -0
  23. package/dist/runtime/managedResource.d.ts.map +1 -0
  24. package/dist/runtime/managedResource.js +92 -0
  25. package/dist/runtime/public.d.ts +2 -2
  26. package/dist/runtime/public.d.ts.map +1 -1
  27. package/dist/runtime/public.js +1 -1
  28. package/dist/runtime/runtime.d.ts +79 -90
  29. package/dist/runtime/runtime.d.ts.map +1 -1
  30. package/dist/runtime/runtime.js +95 -19
  31. package/dist/runtime/subscription.d.ts +25 -0
  32. package/dist/runtime/subscription.d.ts.map +1 -0
  33. package/dist/runtime/subscription.js +7 -0
  34. package/dist/struct/index.d.ts +2 -0
  35. package/dist/struct/index.d.ts.map +1 -1
  36. package/dist/struct/index.js +4 -0
  37. package/dist/struct/public.d.ts +1 -1
  38. package/dist/struct/public.d.ts.map +1 -1
  39. package/dist/struct/public.js +1 -1
  40. package/dist/subscription/public.d.ts +3 -0
  41. package/dist/subscription/public.d.ts.map +1 -0
  42. package/dist/subscription/public.js +1 -0
  43. package/dist/ui/disclosure/index.d.ts.map +1 -1
  44. package/dist/ui/disclosure/index.js +3 -2
  45. package/dist/ui/listbox/multi.d.ts +172 -0
  46. package/dist/ui/listbox/multi.d.ts.map +1 -0
  47. package/dist/ui/listbox/multi.js +25 -0
  48. package/dist/ui/listbox/multiPublic.d.ts +3 -0
  49. package/dist/ui/listbox/multiPublic.d.ts.map +1 -0
  50. package/dist/ui/listbox/multiPublic.js +1 -0
  51. package/dist/ui/listbox/public.d.ts +5 -2
  52. package/dist/ui/listbox/public.d.ts.map +1 -1
  53. package/dist/ui/listbox/public.js +3 -1
  54. package/dist/ui/listbox/{index.d.ts → shared.d.ts} +77 -23
  55. package/dist/ui/listbox/shared.d.ts.map +1 -0
  56. package/dist/ui/listbox/{index.js → shared.js} +206 -196
  57. package/dist/ui/listbox/single.d.ts +172 -0
  58. package/dist/ui/listbox/single.d.ts.map +1 -0
  59. package/dist/ui/listbox/single.js +29 -0
  60. package/package.json +9 -1
  61. package/dist/ui/listbox/index.d.ts.map +0 -1
@@ -0,0 +1,172 @@
1
+ import { Option, Schema as S } from 'effect';
2
+ import { type BaseInitConfig, type BaseViewConfig } from './shared';
3
+ /** Schema for the listbox component's state, tracking open/closed status, active item, selected item, activation trigger, and typeahead search. */
4
+ export declare const Model: S.extend<S.Struct<{
5
+ id: typeof S.String;
6
+ isOpen: typeof S.Boolean;
7
+ isAnimated: typeof S.Boolean;
8
+ isModal: typeof S.Boolean;
9
+ orientation: S.Literal<["Vertical", "Horizontal"]>;
10
+ transitionState: S.Literal<["Idle", "EnterStart", "EnterAnimating", "LeaveStart", "LeaveAnimating"]>;
11
+ maybeActiveItemIndex: S.OptionFromSelf<typeof S.Number>;
12
+ activationTrigger: S.Literal<["Pointer", "Keyboard"]>;
13
+ searchQuery: typeof S.String;
14
+ searchVersion: typeof S.Number;
15
+ maybeLastPointerPosition: S.OptionFromSelf<S.Struct<{
16
+ screenX: typeof S.Number;
17
+ screenY: typeof S.Number;
18
+ }>>;
19
+ maybeLastButtonPointerType: S.OptionFromSelf<typeof S.String>;
20
+ }>, S.Struct<{
21
+ maybeSelectedItem: S.OptionFromSelf<typeof S.String>;
22
+ }>>;
23
+ export type Model = typeof Model.Type;
24
+ /** Configuration for creating a single-select listbox model with `init`. `isAnimated` enables CSS transition coordination (default `false`). `isModal` locks page scroll and inerts other elements when open (default `false`). `selectedItem` sets the initial selection (default none). */
25
+ export type InitConfig = BaseInitConfig & Readonly<{
26
+ selectedItem?: string;
27
+ }>;
28
+ /** Creates an initial single-select listbox model from a config. Defaults to closed with no active item and no selection. */
29
+ export declare const init: (config: InitConfig) => Model;
30
+ /** Processes a listbox message and returns the next model and commands. Closes the listbox on selection (single-select behavior). */
31
+ export declare const update: (model: {
32
+ readonly id: string;
33
+ readonly isOpen: boolean;
34
+ readonly isAnimated: boolean;
35
+ readonly isModal: boolean;
36
+ readonly orientation: "Vertical" | "Horizontal";
37
+ readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
38
+ readonly maybeActiveItemIndex: Option.Option<number>;
39
+ readonly activationTrigger: "Pointer" | "Keyboard";
40
+ readonly searchQuery: string;
41
+ readonly searchVersion: number;
42
+ readonly maybeLastPointerPosition: Option.Option<{
43
+ readonly screenX: number;
44
+ readonly screenY: number;
45
+ }>;
46
+ readonly maybeLastButtonPointerType: Option.Option<string>;
47
+ } & {
48
+ readonly maybeSelectedItem: Option.Option<string>;
49
+ }, message: import("./shared").Message) => [{
50
+ readonly id: string;
51
+ readonly isOpen: boolean;
52
+ readonly isAnimated: boolean;
53
+ readonly isModal: boolean;
54
+ readonly orientation: "Vertical" | "Horizontal";
55
+ readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
56
+ readonly maybeActiveItemIndex: Option.Option<number>;
57
+ readonly activationTrigger: "Pointer" | "Keyboard";
58
+ readonly searchQuery: string;
59
+ readonly searchVersion: number;
60
+ readonly maybeLastPointerPosition: Option.Option<{
61
+ readonly screenX: number;
62
+ readonly screenY: number;
63
+ }>;
64
+ readonly maybeLastButtonPointerType: Option.Option<string>;
65
+ } & {
66
+ readonly maybeSelectedItem: Option.Option<string>;
67
+ }, readonly import("../../command").Command<{
68
+ readonly _tag: "Closed";
69
+ } | {
70
+ readonly _tag: "NoOp";
71
+ } | {
72
+ readonly _tag: "Opened";
73
+ readonly maybeActiveItemIndex: Option.Option<number>;
74
+ } | {
75
+ readonly _tag: "ClosedByTab";
76
+ } | {
77
+ readonly _tag: "ActivatedItem";
78
+ readonly activationTrigger: "Pointer" | "Keyboard";
79
+ readonly index: number;
80
+ } | {
81
+ readonly _tag: "DeactivatedItem";
82
+ } | {
83
+ readonly _tag: "SelectedItem";
84
+ readonly item: string;
85
+ } | {
86
+ readonly _tag: "MovedPointerOverItem";
87
+ readonly screenX: number;
88
+ readonly screenY: number;
89
+ readonly index: number;
90
+ } | {
91
+ readonly _tag: "RequestedItemClick";
92
+ readonly index: number;
93
+ } | {
94
+ readonly _tag: "Searched";
95
+ readonly key: string;
96
+ readonly maybeTargetIndex: Option.Option<number>;
97
+ } | {
98
+ readonly _tag: "ClearedSearch";
99
+ readonly version: number;
100
+ } | {
101
+ readonly _tag: "AdvancedTransitionFrame";
102
+ } | {
103
+ readonly _tag: "EndedTransition";
104
+ } | {
105
+ readonly _tag: "DetectedButtonMovement";
106
+ } | {
107
+ readonly _tag: "PressedPointerOnButton";
108
+ readonly button: number;
109
+ readonly pointerType: string;
110
+ }>[]];
111
+ /** Configuration for rendering a single-select listbox with `view`. */
112
+ export type ViewConfig<Message, Item> = BaseViewConfig<Message, Item, Model>;
113
+ /** Renders a headless single-select listbox with typeahead search, keyboard navigation, selection tracking, and aria-activedescendant focus management. */
114
+ export declare const view: <Message, Item>(config: Readonly<{
115
+ model: {
116
+ readonly id: string;
117
+ readonly isOpen: boolean;
118
+ readonly isAnimated: boolean;
119
+ readonly isModal: boolean;
120
+ readonly orientation: "Vertical" | "Horizontal";
121
+ readonly transitionState: "Idle" | "EnterStart" | "EnterAnimating" | "LeaveStart" | "LeaveAnimating";
122
+ readonly maybeActiveItemIndex: Option.Option<number>;
123
+ readonly activationTrigger: "Pointer" | "Keyboard";
124
+ readonly searchQuery: string;
125
+ readonly searchVersion: number;
126
+ readonly maybeLastPointerPosition: Option.Option<{
127
+ readonly screenX: number;
128
+ readonly screenY: number;
129
+ }>;
130
+ readonly maybeLastButtonPointerType: Option.Option<string>;
131
+ } & {
132
+ readonly maybeSelectedItem: Option.Option<string>;
133
+ };
134
+ toMessage: (message: import("./shared").Opened | import("./shared").Closed | import("./shared").ClosedByTab | import("./shared").ActivatedItem | import("./shared").DeactivatedItem | import("./shared").SelectedItem | import("./shared").MovedPointerOverItem | import("./shared").RequestedItemClick | import("./shared").Searched | import("./shared").PressedPointerOnButton | import("./shared").NoOp) => Message;
135
+ items: readonly Item[];
136
+ itemToConfig: (item: Item, context: Readonly<{
137
+ isActive: boolean;
138
+ isDisabled: boolean;
139
+ isSelected: boolean;
140
+ }>) => Readonly<{
141
+ className: string;
142
+ content: import("../../html").Html;
143
+ }>;
144
+ isItemDisabled?: (item: Item, index: number) => boolean;
145
+ itemToSearchText?: (item: Item, index: number) => string;
146
+ itemToValue?: (item: Item) => string;
147
+ isButtonDisabled?: boolean;
148
+ buttonContent: import("../../html").Html;
149
+ buttonClassName: string;
150
+ itemsClassName: string;
151
+ backdropClassName: string;
152
+ className?: string;
153
+ itemGroupKey?: (item: Item, index: number) => string;
154
+ groupToHeading?: (groupKey: string) => Readonly<{
155
+ content: import("../../html").Html;
156
+ className: string;
157
+ }> | undefined;
158
+ groupClassName?: string;
159
+ separatorClassName?: string;
160
+ anchor?: Readonly<{
161
+ placement?: import("@floating-ui/dom").Placement;
162
+ gap?: number;
163
+ offset?: number;
164
+ padding?: number;
165
+ portal?: boolean;
166
+ }>;
167
+ name?: string;
168
+ form?: string;
169
+ isDisabled?: boolean;
170
+ isInvalid?: boolean;
171
+ }>) => import("../../html").Html;
172
+ //# sourceMappingURL=single.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../../../src/ui/listbox/single.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,IAAI,CAAC,EAAQ,MAAM,QAAQ,CAAA;AAGzD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAKpB,MAAM,UAAU,CAAA;AAIjB,mJAAmJ;AACnJ,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;GAEjB,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,6RAA6R;AAC7R,MAAM,MAAM,UAAU,GAAG,cAAc,GACrC,QAAQ,CAAC;IACP,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAC,CAAA;AAEJ,6HAA6H;AAC7H,eAAO,MAAM,IAAI,GAAI,QAAQ,UAAU,KAAG,KAGxC,CAAA;AAIF,qIAAqI;AACrI,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYjB,CAAA;AAIF,uEAAuE;AACvE,MAAM,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAE5E,2JAA2J;AAC3J,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAWf,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { Array, Option, Schema as S, pipe } from 'effect';
2
+ import { evo } from '../../struct';
3
+ import { BaseModel, baseInit, closedModel, makeUpdate, makeView, } from './shared';
4
+ // MODEL
5
+ /** Schema for the listbox component's state, tracking open/closed status, active item, selected item, activation trigger, and typeahead search. */
6
+ export const Model = BaseModel.pipe(S.extend(S.Struct({ maybeSelectedItem: S.OptionFromSelf(S.String) })));
7
+ /** Creates an initial single-select listbox model from a config. Defaults to closed with no active item and no selection. */
8
+ export const init = (config) => ({
9
+ ...baseInit(config),
10
+ maybeSelectedItem: Option.fromNullable(config.selectedItem),
11
+ });
12
+ // UPDATE
13
+ /** Processes a listbox message and returns the next model and commands. Closes the listbox on selection (single-select behavior). */
14
+ export const update = makeUpdate((model, item, context) => [
15
+ evo(closedModel(model), {
16
+ maybeSelectedItem: () => Option.some(item),
17
+ }),
18
+ pipe(Array.getSomes([
19
+ context.maybeNextFrame,
20
+ context.maybeUnlockScroll,
21
+ context.maybeRestoreInert,
22
+ ]), Array.prepend(context.focusButton)),
23
+ ]);
24
+ /** Renders a headless single-select listbox with typeahead search, keyboard navigation, selection tracking, and aria-activedescendant focus management. */
25
+ export const view = makeView({
26
+ isItemSelected: (model, itemValue) => Option.exists(model.maybeSelectedItem, selectedItem => selectedItem === itemValue),
27
+ selectedItemIndex: (model, items, itemToValue) => Option.flatMap(model.maybeSelectedItem, selectedItem => Array.findFirstIndex(items, item => itemToValue(item) === selectedItem)),
28
+ ariaMultiSelectable: false,
29
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foldkit",
3
- "version": "0.24.0",
3
+ "version": "0.25.0",
4
4
  "description": "Elm-inspired UI framework powered by Effect",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,6 +19,10 @@
19
19
  "types": "./dist/html/public.d.ts",
20
20
  "import": "./dist/html/public.js"
21
21
  },
22
+ "./managedResource": {
23
+ "types": "./dist/managedResource/public.d.ts",
24
+ "import": "./dist/managedResource/public.js"
25
+ },
22
26
  "./message": {
23
27
  "types": "./dist/message/public.d.ts",
24
28
  "import": "./dist/message/public.js"
@@ -47,6 +51,10 @@
47
51
  "types": "./dist/struct/public.d.ts",
48
52
  "import": "./dist/struct/public.js"
49
53
  },
54
+ "./subscription": {
55
+ "types": "./dist/subscription/public.d.ts",
56
+ "import": "./dist/subscription/public.js"
57
+ },
50
58
  "./task": {
51
59
  "types": "./dist/task/public.d.ts",
52
60
  "import": "./dist/task/public.js"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/listbox/index.ts"],"names":[],"mappings":"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"}