basefn 1.0.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 (154) hide show
  1. package/README.md +104 -0
  2. package/package.json +82 -0
  3. package/rescript.json +32 -0
  4. package/src/Basefn.css +14 -0
  5. package/src/Basefn.res +105 -0
  6. package/src/Basefn.res.mjs +114 -0
  7. package/src/Basefn__Dom.res +9 -0
  8. package/src/Basefn__Dom.res.mjs +24 -0
  9. package/src/Basefn__Utils.res +15 -0
  10. package/src/Basefn__Utils.res.mjs +32 -0
  11. package/src/Demo.res +1417 -0
  12. package/src/Demo.res.mjs +2328 -0
  13. package/src/Eita.res.mjs +105 -0
  14. package/src/Eita__Accordion.res.mjs +77 -0
  15. package/src/Eita__Alert.res.mjs +81 -0
  16. package/src/Eita__AppLayout.res.mjs +100 -0
  17. package/src/Eita__Avatar.res.mjs +40 -0
  18. package/src/Eita__Badge.res.mjs +65 -0
  19. package/src/Eita__Breadcrumb.res.mjs +53 -0
  20. package/src/Eita__Button.res.mjs +47 -0
  21. package/src/Eita__Card.res.mjs +60 -0
  22. package/src/Eita__Checkbox.res.mjs +36 -0
  23. package/src/Eita__Dom.res.mjs +16 -0
  24. package/src/Eita__Drawer.res.mjs +112 -0
  25. package/src/Eita__Dropdown.res.mjs +96 -0
  26. package/src/Eita__Grid.res.mjs +24 -0
  27. package/src/Eita__Input.res.mjs +54 -0
  28. package/src/Eita__Kbd.res.mjs +42 -0
  29. package/src/Eita__Label.res.mjs +24 -0
  30. package/src/Eita__Modal.res.mjs +93 -0
  31. package/src/Eita__Progress.res.mjs +101 -0
  32. package/src/Eita__Radio.res.mjs +38 -0
  33. package/src/Eita__Select.res.mjs +40 -0
  34. package/src/Eita__Separator.res.mjs +70 -0
  35. package/src/Eita__Sidebar.res.mjs +103 -0
  36. package/src/Eita__Slider.res.mjs +89 -0
  37. package/src/Eita__Spinner.res.mjs +69 -0
  38. package/src/Eita__Stepper.res.mjs +114 -0
  39. package/src/Eita__Switch.res.mjs +84 -0
  40. package/src/Eita__Tabs.res.mjs +57 -0
  41. package/src/Eita__Textarea.res.mjs +39 -0
  42. package/src/Eita__Timeline.res.mjs +86 -0
  43. package/src/Eita__Toast.res.mjs +112 -0
  44. package/src/Eita__Tooltip.res.mjs +60 -0
  45. package/src/Eita__Topbar.res.mjs +96 -0
  46. package/src/Eita__Typography.res.mjs +183 -0
  47. package/src/Eita__Utils.res.mjs +32 -0
  48. package/src/Example.res +111 -0
  49. package/src/Example.res.mjs +176 -0
  50. package/src/components/Basefn__Accordion.css +70 -0
  51. package/src/components/Basefn__Accordion.res +79 -0
  52. package/src/components/Basefn__Accordion.res.mjs +77 -0
  53. package/src/components/Basefn__Alert.css +79 -0
  54. package/src/components/Basefn__Alert.res +68 -0
  55. package/src/components/Basefn__Alert.res.mjs +78 -0
  56. package/src/components/Basefn__AppLayout.css +100 -0
  57. package/src/components/Basefn__AppLayout.res +74 -0
  58. package/src/components/Basefn__AppLayout.res.mjs +100 -0
  59. package/src/components/Basefn__Avatar.css +25 -0
  60. package/src/components/Basefn__Avatar.res +23 -0
  61. package/src/components/Basefn__Avatar.res.mjs +40 -0
  62. package/src/components/Basefn__Badge.css +71 -0
  63. package/src/components/Basefn__Badge.res +43 -0
  64. package/src/components/Basefn__Badge.res.mjs +65 -0
  65. package/src/components/Basefn__Breadcrumb.css +36 -0
  66. package/src/components/Basefn__Breadcrumb.res +45 -0
  67. package/src/components/Basefn__Breadcrumb.res.mjs +53 -0
  68. package/src/components/Basefn__Button.css +83 -0
  69. package/src/components/Basefn__Button.res +32 -0
  70. package/src/components/Basefn__Button.res.mjs +54 -0
  71. package/src/components/Basefn__Card.css +50 -0
  72. package/src/components/Basefn__Card.res +45 -0
  73. package/src/components/Basefn__Card.res.mjs +60 -0
  74. package/src/components/Basefn__Checkbox.css +72 -0
  75. package/src/components/Basefn__Checkbox.res +25 -0
  76. package/src/components/Basefn__Checkbox.res.mjs +36 -0
  77. package/src/components/Basefn__Drawer.css +168 -0
  78. package/src/components/Basefn__Drawer.res +86 -0
  79. package/src/components/Basefn__Drawer.res.mjs +112 -0
  80. package/src/components/Basefn__Dropdown.css +76 -0
  81. package/src/components/Basefn__Dropdown.res +85 -0
  82. package/src/components/Basefn__Dropdown.res.mjs +96 -0
  83. package/src/components/Basefn__Grid.css +11 -0
  84. package/src/components/Basefn__Grid.res +296 -0
  85. package/src/components/Basefn__Grid.res.mjs +263 -0
  86. package/src/components/Basefn__Icon.css +12 -0
  87. package/src/components/Basefn__Icon.res +196 -0
  88. package/src/components/Basefn__Icon.res.mjs +183 -0
  89. package/src/components/Basefn__Input.css +44 -0
  90. package/src/components/Basefn__Input.res +48 -0
  91. package/src/components/Basefn__Input.res.mjs +63 -0
  92. package/src/components/Basefn__Kbd.css +65 -0
  93. package/src/components/Basefn__Kbd.res +27 -0
  94. package/src/components/Basefn__Kbd.res.mjs +42 -0
  95. package/src/components/Basefn__Label.css +22 -0
  96. package/src/components/Basefn__Label.res +18 -0
  97. package/src/components/Basefn__Label.res.mjs +24 -0
  98. package/src/components/Basefn__Modal.css +100 -0
  99. package/src/components/Basefn__Modal.res +74 -0
  100. package/src/components/Basefn__Modal.res.mjs +93 -0
  101. package/src/components/Basefn__Progress.css +69 -0
  102. package/src/components/Basefn__Progress.res +88 -0
  103. package/src/components/Basefn__Progress.res.mjs +101 -0
  104. package/src/components/Basefn__Radio.css +72 -0
  105. package/src/components/Basefn__Radio.res +35 -0
  106. package/src/components/Basefn__Radio.res.mjs +38 -0
  107. package/src/components/Basefn__Select.css +44 -0
  108. package/src/components/Basefn__Select.res +33 -0
  109. package/src/components/Basefn__Select.res.mjs +40 -0
  110. package/src/components/Basefn__Separator.css +85 -0
  111. package/src/components/Basefn__Separator.res +45 -0
  112. package/src/components/Basefn__Separator.res.mjs +70 -0
  113. package/src/components/Basefn__Sidebar.css +141 -0
  114. package/src/components/Basefn__Sidebar.res +95 -0
  115. package/src/components/Basefn__Sidebar.res.mjs +107 -0
  116. package/src/components/Basefn__Slider.css +97 -0
  117. package/src/components/Basefn__Slider.res +68 -0
  118. package/src/components/Basefn__Slider.res.mjs +89 -0
  119. package/src/components/Basefn__Spinner.css +63 -0
  120. package/src/components/Basefn__Spinner.res +44 -0
  121. package/src/components/Basefn__Spinner.res.mjs +69 -0
  122. package/src/components/Basefn__Stepper.css +141 -0
  123. package/src/components/Basefn__Stepper.res +86 -0
  124. package/src/components/Basefn__Stepper.res.mjs +114 -0
  125. package/src/components/Basefn__Switch.css +80 -0
  126. package/src/components/Basefn__Switch.res +62 -0
  127. package/src/components/Basefn__Switch.res.mjs +84 -0
  128. package/src/components/Basefn__Tabs.css +54 -0
  129. package/src/components/Basefn__Tabs.res +73 -0
  130. package/src/components/Basefn__Tabs.res.mjs +57 -0
  131. package/src/components/Basefn__Textarea.css +41 -0
  132. package/src/components/Basefn__Textarea.res +28 -0
  133. package/src/components/Basefn__Textarea.res.mjs +41 -0
  134. package/src/components/Basefn__ThemeToggle.css +5 -0
  135. package/src/components/Basefn__ThemeToggle.res +29 -0
  136. package/src/components/Basefn__ThemeToggle.res.mjs +49 -0
  137. package/src/components/Basefn__Timeline.css +144 -0
  138. package/src/components/Basefn__Timeline.res +70 -0
  139. package/src/components/Basefn__Timeline.res.mjs +86 -0
  140. package/src/components/Basefn__Toast.css +100 -0
  141. package/src/components/Basefn__Toast.res +92 -0
  142. package/src/components/Basefn__Toast.res.mjs +112 -0
  143. package/src/components/Basefn__Tooltip.css +84 -0
  144. package/src/components/Basefn__Tooltip.res +42 -0
  145. package/src/components/Basefn__Tooltip.res.mjs +60 -0
  146. package/src/components/Basefn__Topbar.css +130 -0
  147. package/src/components/Basefn__Topbar.res +92 -0
  148. package/src/components/Basefn__Topbar.res.mjs +91 -0
  149. package/src/components/Basefn__Typography.css +120 -0
  150. package/src/components/Basefn__Typography.res +96 -0
  151. package/src/components/Basefn__Typography.res.mjs +175 -0
  152. package/src/styles/Basefn__Theme.res +63 -0
  153. package/src/styles/Basefn__Theme.res.mjs +65 -0
  154. package/src/styles/variables.css +199 -0
@@ -0,0 +1,2328 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+
3
+ import * as Xote from "xote/src/Xote.res.mjs";
4
+ import * as Xote__JSX from "xote/src/Xote__JSX.res.mjs";
5
+ import * as Basefn__Kbd from "./components/Basefn__Kbd.res.mjs";
6
+ import * as Stdlib_Bool from "@rescript/runtime/lib/es6/Stdlib_Bool.js";
7
+ import * as Basefn__Card from "./components/Basefn__Card.res.mjs";
8
+ import * as Basefn__Grid from "./components/Basefn__Grid.res.mjs";
9
+ import * as Basefn__Tabs from "./components/Basefn__Tabs.res.mjs";
10
+ import * as Basefn__Alert from "./components/Basefn__Alert.res.mjs";
11
+ import * as Basefn__Badge from "./components/Basefn__Badge.res.mjs";
12
+ import * as Basefn__Input from "./components/Basefn__Input.res.mjs";
13
+ import * as Basefn__Label from "./components/Basefn__Label.res.mjs";
14
+ import * as Basefn__Modal from "./components/Basefn__Modal.res.mjs";
15
+ import * as Basefn__Radio from "./components/Basefn__Radio.res.mjs";
16
+ import * as Basefn__Toast from "./components/Basefn__Toast.res.mjs";
17
+ import * as Basefn__Avatar from "./components/Basefn__Avatar.res.mjs";
18
+ import * as Basefn__Button from "./components/Basefn__Button.res.mjs";
19
+ import * as Basefn__Drawer from "./components/Basefn__Drawer.res.mjs";
20
+ import * as Basefn__Select from "./components/Basefn__Select.res.mjs";
21
+ import * as Basefn__Slider from "./components/Basefn__Slider.res.mjs";
22
+ import * as Basefn__Switch from "./components/Basefn__Switch.res.mjs";
23
+ import * as Basefn__Topbar from "./components/Basefn__Topbar.res.mjs";
24
+ import * as Basefn__Sidebar from "./components/Basefn__Sidebar.res.mjs";
25
+ import * as Basefn__Spinner from "./components/Basefn__Spinner.res.mjs";
26
+ import * as Basefn__Stepper from "./components/Basefn__Stepper.res.mjs";
27
+ import * as Basefn__Tooltip from "./components/Basefn__Tooltip.res.mjs";
28
+ import * as Basefn__Checkbox from "./components/Basefn__Checkbox.res.mjs";
29
+ import * as Basefn__Dropdown from "./components/Basefn__Dropdown.res.mjs";
30
+ import * as Basefn__Progress from "./components/Basefn__Progress.res.mjs";
31
+ import * as Basefn__Textarea from "./components/Basefn__Textarea.res.mjs";
32
+ import * as Basefn__Timeline from "./components/Basefn__Timeline.res.mjs";
33
+ import * as Primitive_option from "@rescript/runtime/lib/es6/Primitive_option.js";
34
+ import * as Basefn__Accordion from "./components/Basefn__Accordion.res.mjs";
35
+ import * as Basefn__AppLayout from "./components/Basefn__AppLayout.res.mjs";
36
+ import * as Basefn__Separator from "./components/Basefn__Separator.res.mjs";
37
+ import * as Basefn__Breadcrumb from "./components/Basefn__Breadcrumb.res.mjs";
38
+ import * as Basefn__Typography from "./components/Basefn__Typography.res.mjs";
39
+
40
+ import './styles/variables.css'
41
+ ;
42
+
43
+ import './eita.css'
44
+ ;
45
+
46
+ function Demo$Demo(props) {
47
+ let name = Xote.Signal.make("", undefined, undefined);
48
+ let email = Xote.Signal.make("", undefined, undefined);
49
+ let password = Xote.Signal.make("", undefined, undefined);
50
+ let message = Xote.Signal.make("", undefined, undefined);
51
+ let agreeToTerms = Xote.Signal.make(false, undefined, undefined);
52
+ let newsletter = Xote.Signal.make(false, undefined, undefined);
53
+ let selectedOption = Xote.Signal.make("option1", undefined, undefined);
54
+ let selectedColor = Xote.Signal.make("blue", undefined, undefined);
55
+ let isSubmitting = Xote.Signal.make(false, undefined, undefined);
56
+ let downloadProgress = Xote.Signal.make(65.0, undefined, undefined);
57
+ let isModalOpen = Xote.Signal.make(false, undefined, undefined);
58
+ let sliderValue = Xote.Signal.make(50.0, undefined, undefined);
59
+ let switchEnabled = Xote.Signal.make(false, undefined, undefined);
60
+ let darkModeSwitch = Xote.Signal.make(true, undefined, undefined);
61
+ let notificationsSwitch = Xote.Signal.make(false, undefined, undefined);
62
+ let toastVisible = Xote.Signal.make(false, undefined, undefined);
63
+ let currentStep = Xote.Signal.make(1, undefined, undefined);
64
+ let isDrawerOpen = Xote.Signal.make(false, undefined, undefined);
65
+ let activeNavItem = Xote.Signal.make("home", undefined, undefined);
66
+ let sidebarCollapsed = Xote.Signal.make(false, undefined, undefined);
67
+ let handleNameChange = evt => {
68
+ let target = evt.target;
69
+ Xote.Signal.set(name, target.value);
70
+ };
71
+ let handleEmailChange = evt => {
72
+ let target = evt.target;
73
+ Xote.Signal.set(email, target.value);
74
+ };
75
+ let handlePasswordChange = evt => {
76
+ let target = evt.target;
77
+ Xote.Signal.set(password, target.value);
78
+ };
79
+ let handleMessageChange = evt => {
80
+ let target = evt.target;
81
+ Xote.Signal.set(message, target.value);
82
+ };
83
+ let handleTermsChange = _evt => Xote.Signal.update(agreeToTerms, prev => !prev);
84
+ let handleNewsletterChange = _evt => Xote.Signal.update(newsletter, prev => !prev);
85
+ let handleColorChange = evt => {
86
+ let target = evt.target;
87
+ Xote.Signal.set(selectedColor, target.value);
88
+ };
89
+ let handleSubmit = _evt => {
90
+ Xote.Signal.set(isSubmitting, true);
91
+ console.log("=== Form Submission ===");
92
+ console.log(`Name: ` + Xote.Signal.get(name));
93
+ console.log(`Email: ` + Xote.Signal.get(email));
94
+ console.log(`Password: ` + Xote.Signal.get(password));
95
+ console.log(`Message: ` + Xote.Signal.get(message));
96
+ console.log(`Selected Option: ` + Xote.Signal.get(selectedOption));
97
+ console.log(`Selected Color: ` + Xote.Signal.get(selectedColor));
98
+ console.log(`Agree to Terms: ` + Stdlib_Bool.toString(Xote.Signal.get(agreeToTerms)));
99
+ console.log(`Newsletter: ` + Stdlib_Bool.toString(Xote.Signal.get(newsletter)));
100
+ setTimeout(() => {
101
+ Xote.Signal.set(isSubmitting, false);
102
+ console.log("Form submitted successfully!");
103
+ }, 2000);
104
+ };
105
+ let handleReset = _evt => {
106
+ Xote.Signal.set(name, "");
107
+ Xote.Signal.set(email, "");
108
+ Xote.Signal.set(password, "");
109
+ Xote.Signal.set(message, "");
110
+ Xote.Signal.set(agreeToTerms, false);
111
+ Xote.Signal.set(newsletter, false);
112
+ Xote.Signal.set(selectedOption, "option1");
113
+ Xote.Signal.set(selectedColor, "blue");
114
+ console.log("Form reset");
115
+ };
116
+ let selectOptions = [
117
+ {
118
+ value: "option1",
119
+ label: "Web Development"
120
+ },
121
+ {
122
+ value: "option2",
123
+ label: "Mobile Development"
124
+ },
125
+ {
126
+ value: "option3",
127
+ label: "UI/UX Design"
128
+ },
129
+ {
130
+ value: "option4",
131
+ label: "Other"
132
+ }
133
+ ];
134
+ let selectOptionsSignal = Xote.Signal.make(selectOptions, undefined, undefined);
135
+ return Xote__JSX.jsxs(Xote__JSX.jsxFragment, {
136
+ children: Xote__JSX.array([
137
+ Xote.Component.textSignal(() => Xote.Signal.get(selectedOption)),
138
+ Xote__JSX.Elements.jsx("h1", {
139
+ children: Xote.Component.text("basefn-UI Component Library")
140
+ }),
141
+ Xote__JSX.Elements.jsx("p", {
142
+ style: "color: #6b7280; margin-bottom: 2rem;",
143
+ children: Xote.Component.text("A demonstration of all form components with both static and reactive values.")
144
+ }),
145
+ Xote__JSX.jsxs(Basefn__Card.make, {
146
+ children: Xote__JSX.array([
147
+ Xote__JSX.jsxs(Basefn__Grid.make, {
148
+ children: Xote__JSX.array([
149
+ Xote__JSX.jsx(Basefn__Avatar.make, {
150
+ src: "https://upload.wikimedia.org/wikipedia/commons/a/ad/Schopfkarakara.jpg"
151
+ }),
152
+ Xote__JSX.Elements.jsxs("div", {
153
+ children: Xote__JSX.array([
154
+ Xote__JSX.jsx(Basefn__Typography.make, {
155
+ text: {
156
+ TAG: "Static",
157
+ _0: "Crested Caracara"
158
+ },
159
+ variant: "Unstyled",
160
+ class: "bold"
161
+ }),
162
+ Xote__JSX.jsx(Basefn__Typography.make, {
163
+ text: {
164
+ TAG: "Static",
165
+ _0: "Bird of prey"
166
+ },
167
+ variant: "Small"
168
+ })
169
+ ])
170
+ })
171
+ ])
172
+ }),
173
+ Xote__JSX.Elements.jsx("br", {}),
174
+ Xote__JSX.jsxs(Basefn__Grid.make, {
175
+ children: Xote__JSX.array([
176
+ Xote__JSX.jsx(Basefn__Avatar.make, {
177
+ src: "https://upload.wikimedia.org/wikipedia/commons/a/ad/Schopfkarakara.jpg"
178
+ }),
179
+ Xote__JSX.Elements.jsx("div", {
180
+ children: Xote__JSX.jsx(Basefn__Typography.make, {
181
+ text: {
182
+ TAG: "Static",
183
+ _0: "Crested Caracara"
184
+ },
185
+ variant: "P",
186
+ class: "bold"
187
+ })
188
+ })
189
+ ])
190
+ }),
191
+ Xote__JSX.Elements.jsx("br", {}),
192
+ Xote__JSX.jsxs(Basefn__Grid.make, {
193
+ children: Xote__JSX.array([
194
+ Xote__JSX.jsx(Basefn__Avatar.make, {
195
+ src: "https://upload.wikimedia.org/wikipedia/commons/a/ad/Schopfkarakara.jpg",
196
+ size: "Sm"
197
+ }),
198
+ Xote__JSX.Elements.jsx("div", {
199
+ children: Xote__JSX.jsx(Basefn__Typography.make, {
200
+ text: {
201
+ TAG: "Static",
202
+ _0: "Crested Caracara"
203
+ },
204
+ variant: "Unstyled"
205
+ })
206
+ })
207
+ ])
208
+ }),
209
+ Xote__JSX.Elements.jsx("br", {}),
210
+ Xote__JSX.jsxs(Basefn__Grid.make, {
211
+ gap: "1rem",
212
+ children: Xote__JSX.array([
213
+ Xote__JSX.jsx(Basefn__Avatar.make, {
214
+ src: "https://upload.wikimedia.org/wikipedia/commons/a/ad/Schopfkarakara.jpg",
215
+ size: "Lg"
216
+ }),
217
+ Xote__JSX.Elements.jsxs("div", {
218
+ children: Xote__JSX.array([
219
+ Xote__JSX.jsx(Basefn__Typography.make, {
220
+ text: {
221
+ TAG: "Static",
222
+ _0: "Crested Caracara"
223
+ },
224
+ variant: "H4"
225
+ }),
226
+ Xote__JSX.jsx(Basefn__Typography.make, {
227
+ text: {
228
+ TAG: "Static",
229
+ _0: "Bird of prey"
230
+ },
231
+ variant: "H6",
232
+ class: "muted font-normal"
233
+ })
234
+ ])
235
+ })
236
+ ])
237
+ })
238
+ ]),
239
+ style: "margin-bottom: 2rem;"
240
+ }),
241
+ Xote__JSX.jsxs(Basefn__Card.make, {
242
+ children: Xote__JSX.array([
243
+ Xote__JSX.jsx(Basefn__Label.make, {
244
+ text: "Full Name",
245
+ required: true
246
+ }),
247
+ Xote__JSX.jsx(Basefn__Input.make, {
248
+ value: {
249
+ TAG: "Reactive",
250
+ _0: name
251
+ },
252
+ onInput: handleNameChange,
253
+ type_: "Text",
254
+ placeholder: "John Doe"
255
+ }),
256
+ Xote__JSX.Elements.jsx("br", {}),
257
+ Xote__JSX.jsx(Basefn__Label.make, {
258
+ text: "Email Address",
259
+ required: true
260
+ }),
261
+ Xote__JSX.jsx(Basefn__Input.make, {
262
+ value: {
263
+ TAG: "Reactive",
264
+ _0: email
265
+ },
266
+ onInput: handleEmailChange,
267
+ type_: "Email",
268
+ placeholder: "john@example.com"
269
+ }),
270
+ Xote__JSX.Elements.jsx("br", {}),
271
+ Xote__JSX.jsx(Basefn__Label.make, {
272
+ text: "Password",
273
+ required: true
274
+ }),
275
+ Xote__JSX.jsx(Basefn__Input.make, {
276
+ value: {
277
+ TAG: "Reactive",
278
+ _0: password
279
+ },
280
+ onInput: handlePasswordChange,
281
+ type_: "Password",
282
+ placeholder: "Enter a secure password"
283
+ })
284
+ ])
285
+ }),
286
+ Xote__JSX.Elements.jsx("br", {}),
287
+ Xote__JSX.jsxs(Basefn__Card.make, {
288
+ children: Xote__JSX.array([
289
+ Xote__JSX.jsx(Basefn__Label.make, {
290
+ text: "Area of Interest",
291
+ required: false
292
+ }),
293
+ Xote__JSX.jsx(Basefn__Select.make, {
294
+ value: selectedOption,
295
+ onChange: e => {
296
+ let target = e.target;
297
+ Xote.Signal.set(selectedOption, target.value);
298
+ },
299
+ options: selectOptionsSignal
300
+ }),
301
+ Xote__JSX.Elements.jsx("br", {}),
302
+ Xote__JSX.jsx(Basefn__Label.make, {
303
+ text: "Favorite Color",
304
+ required: false
305
+ }),
306
+ Xote__JSX.Elements.jsxs("div", {
307
+ style: "display: flex; gap: 1rem; margin-top: 0.5rem;",
308
+ children: Xote__JSX.array([
309
+ Xote__JSX.jsx(Basefn__Radio.make, {
310
+ checked: Xote.Computed.make(() => Xote.Signal.get(selectedColor) === "blue", undefined),
311
+ onChange: handleColorChange,
312
+ value: "blue",
313
+ label: "Blue",
314
+ name: "radio"
315
+ }),
316
+ Xote__JSX.jsx(Basefn__Radio.make, {
317
+ checked: Xote.Computed.make(() => Xote.Signal.get(selectedColor) === "green", undefined),
318
+ onChange: handleColorChange,
319
+ value: "green",
320
+ label: "Green",
321
+ name: "radio"
322
+ }),
323
+ Xote__JSX.jsx(Basefn__Radio.make, {
324
+ checked: Xote.Computed.make(() => Xote.Signal.get(selectedColor) === "red", undefined),
325
+ onChange: handleColorChange,
326
+ value: "red",
327
+ label: "Red",
328
+ name: "radio"
329
+ })
330
+ ])
331
+ })
332
+ ])
333
+ }),
334
+ Xote__JSX.Elements.jsx("br", {}),
335
+ Xote__JSX.jsxs(Basefn__Card.make, {
336
+ children: Xote__JSX.array([
337
+ Xote__JSX.jsx(Basefn__Label.make, {
338
+ text: "Message",
339
+ required: false
340
+ }),
341
+ Xote__JSX.jsx(Basefn__Textarea.make, {
342
+ value: {
343
+ TAG: "Reactive",
344
+ _0: message
345
+ },
346
+ onInput: handleMessageChange,
347
+ placeholder: "Tell us more about yourself..."
348
+ })
349
+ ])
350
+ }),
351
+ Xote__JSX.Elements.jsx("br", {}),
352
+ Xote__JSX.jsxs(Basefn__Card.make, {
353
+ children: Xote__JSX.array([
354
+ Xote__JSX.Elements.jsx("div", {
355
+ style: "margin-bottom: 1.5rem;",
356
+ children: Xote__JSX.jsx(Basefn__Checkbox.make, {
357
+ checked: agreeToTerms,
358
+ onChange: handleTermsChange,
359
+ label: "I agree to the terms and conditions"
360
+ })
361
+ }),
362
+ Xote__JSX.Elements.jsx("div", {
363
+ style: "margin-bottom: 2rem;",
364
+ children: Xote__JSX.jsx(Basefn__Checkbox.make, {
365
+ checked: newsletter,
366
+ onChange: handleNewsletterChange,
367
+ label: "Subscribe to our newsletter"
368
+ })
369
+ }),
370
+ Xote__JSX.Elements.jsxs("div", {
371
+ style: "display: flex; gap: 1rem; flex-wrap: wrap;",
372
+ children: Xote__JSX.array([
373
+ {
374
+ TAG: "SignalFragment",
375
+ _0: Xote.Computed.make(() => [Xote__JSX.jsx(Basefn__Button.make, {
376
+ disabled: {
377
+ TAG: "Reactive",
378
+ _0: isSubmitting
379
+ },
380
+ label: Xote.Signal.get(isSubmitting) ? ({
381
+ TAG: "Static",
382
+ _0: "Submitting..."
383
+ }) : ({
384
+ TAG: "Static",
385
+ _0: "Submit Form"
386
+ }),
387
+ onClick: handleSubmit,
388
+ variant: "Primary"
389
+ })], undefined)
390
+ },
391
+ Xote__JSX.jsx(Basefn__Button.make, {
392
+ disabled: {
393
+ TAG: "Reactive",
394
+ _0: isSubmitting
395
+ },
396
+ label: {
397
+ TAG: "Static",
398
+ _0: "reset"
399
+ },
400
+ onClick: handleReset,
401
+ variant: "Secondary"
402
+ }),
403
+ Xote__JSX.jsx(Basefn__Button.make, {
404
+ disabled: {
405
+ TAG: "Reactive",
406
+ _0: isSubmitting
407
+ },
408
+ label: {
409
+ TAG: "Static",
410
+ _0: "Cancel"
411
+ },
412
+ variant: "Ghost"
413
+ })
414
+ ])
415
+ })
416
+ ])
417
+ }),
418
+ Xote__JSX.Elements.jsxs("div", {
419
+ style: "margin-top: 2rem;",
420
+ children: Xote__JSX.array([
421
+ Xote__JSX.jsx(Basefn__Typography.make, {
422
+ text: {
423
+ TAG: "Static",
424
+ _0: "Alerts"
425
+ },
426
+ variant: "H4"
427
+ }),
428
+ Xote__JSX.Elements.jsx("p", {
429
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
430
+ children: Xote.Component.text("Display important messages with different severity levels.")
431
+ }),
432
+ Xote__JSX.Elements.jsxs("div", {
433
+ style: "display: flex; flex-direction: column; gap: 1rem;",
434
+ children: Xote__JSX.array([
435
+ Xote__JSX.jsx(Basefn__Alert.make, {
436
+ title: "Information",
437
+ message: Xote.Signal.make("This is an informational alert message.", undefined, undefined),
438
+ variant: "Info"
439
+ }),
440
+ Xote__JSX.jsx(Basefn__Alert.make, {
441
+ title: "Success",
442
+ message: Xote.Signal.make("Your changes have been saved successfully!", undefined, undefined),
443
+ variant: "Success"
444
+ }),
445
+ Xote__JSX.jsx(Basefn__Alert.make, {
446
+ title: "Warning",
447
+ message: Xote.Signal.make("Please review your input before proceeding.", undefined, undefined),
448
+ variant: "Warning"
449
+ }),
450
+ Xote__JSX.jsx(Basefn__Alert.make, {
451
+ title: "Error",
452
+ message: Xote.Signal.make("An error occurred while processing your request.", undefined, undefined),
453
+ variant: "Error"
454
+ }),
455
+ Xote__JSX.jsx(Basefn__Alert.make, {
456
+ message: Xote.Signal.make("This is a dismissible alert. Click the X to close it.", undefined, undefined),
457
+ variant: "Info",
458
+ dismissible: true
459
+ })
460
+ ])
461
+ })
462
+ ])
463
+ }),
464
+ Xote__JSX.Elements.jsxs("div", {
465
+ style: "margin-top: 2rem;",
466
+ children: Xote__JSX.array([
467
+ Xote__JSX.jsx(Basefn__Typography.make, {
468
+ text: {
469
+ TAG: "Static",
470
+ _0: "Progress"
471
+ },
472
+ variant: "H4"
473
+ }),
474
+ Xote__JSX.Elements.jsx("p", {
475
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
476
+ children: Xote.Component.text("Show progress indicators for ongoing operations.")
477
+ }),
478
+ Xote__JSX.Elements.jsxs("div", {
479
+ style: "display: flex; flex-direction: column; gap: 2rem;",
480
+ children: Xote__JSX.array([
481
+ Xote__JSX.Elements.jsx("div", {
482
+ children: Xote__JSX.jsx(Basefn__Progress.make, {
483
+ value: Xote.Signal.make(25.0, undefined, undefined),
484
+ variant: "Primary",
485
+ showLabel: true
486
+ })
487
+ }),
488
+ Xote__JSX.Elements.jsx("div", {
489
+ children: Xote__JSX.jsx(Basefn__Progress.make, {
490
+ value: Xote.Signal.make(50.0, undefined, undefined),
491
+ variant: "Success",
492
+ showLabel: true,
493
+ label: "Upload"
494
+ })
495
+ }),
496
+ Xote__JSX.Elements.jsx("div", {
497
+ children: Xote__JSX.jsx(Basefn__Progress.make, {
498
+ value: Xote.Signal.make(75.0, undefined, undefined),
499
+ variant: "Warning",
500
+ showLabel: true,
501
+ label: "Processing"
502
+ })
503
+ }),
504
+ Xote__JSX.Elements.jsx("div", {
505
+ children: Xote__JSX.jsx(Basefn__Progress.make, {
506
+ value: Xote.Signal.make(100.0, undefined, undefined),
507
+ variant: "Success",
508
+ showLabel: true,
509
+ label: "Complete"
510
+ })
511
+ }),
512
+ Xote__JSX.Elements.jsxs("div", {
513
+ children: Xote__JSX.array([
514
+ Xote__JSX.jsx(Basefn__Progress.make, {
515
+ value: downloadProgress,
516
+ variant: "Primary",
517
+ showLabel: true,
518
+ label: "Dynamic Progress"
519
+ }),
520
+ Xote__JSX.jsx(Basefn__Button.make, {
521
+ label: {
522
+ TAG: "Static",
523
+ _0: "Simulate Progress"
524
+ },
525
+ onClick: _evt => {
526
+ Xote.Signal.set(downloadProgress, 0.0);
527
+ let intervalId = {
528
+ contents: undefined
529
+ };
530
+ let id = setInterval(() => Xote.Signal.update(downloadProgress, prev => {
531
+ let next = prev + 5.0;
532
+ if (next < 100.0) {
533
+ return next;
534
+ }
535
+ let id = intervalId.contents;
536
+ if (id !== undefined) {
537
+ clearInterval(Primitive_option.valFromOption(id));
538
+ }
539
+ return 100.0;
540
+ }), 100);
541
+ intervalId.contents = Primitive_option.some(id);
542
+ },
543
+ variant: "Secondary"
544
+ })
545
+ ])
546
+ }),
547
+ Xote__JSX.Elements.jsxs("div", {
548
+ children: Xote__JSX.array([
549
+ Xote__JSX.Elements.jsx("p", {
550
+ style: "color: #6b7280; margin-bottom: 0.5rem;",
551
+ children: Xote.Component.text("Indeterminate progress:")
552
+ }),
553
+ Xote__JSX.jsx(Basefn__Progress.make, {
554
+ value: Xote.Signal.make(0.0, undefined, undefined),
555
+ variant: "Primary",
556
+ indeterminate: true
557
+ })
558
+ ])
559
+ })
560
+ ])
561
+ })
562
+ ])
563
+ }),
564
+ Xote__JSX.Elements.jsxs("div", {
565
+ style: "margin-top: 2rem;",
566
+ children: Xote__JSX.array([
567
+ Xote__JSX.jsx(Basefn__Typography.make, {
568
+ text: {
569
+ TAG: "Static",
570
+ _0: "Tabs"
571
+ },
572
+ variant: "H4"
573
+ }),
574
+ Xote__JSX.Elements.jsx("p", {
575
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
576
+ children: Xote.Component.text("Organize content into tabbed sections.")
577
+ }),
578
+ Xote__JSX.jsx(Basefn__Tabs.make, {
579
+ tabs: [
580
+ {
581
+ value: "account",
582
+ label: "Account",
583
+ content: Xote__JSX.Elements.jsxs("div", {
584
+ children: Xote__JSX.array([
585
+ Xote__JSX.jsx(Basefn__Typography.make, {
586
+ text: {
587
+ TAG: "Static",
588
+ _0: "Account Settings"
589
+ },
590
+ variant: "H5"
591
+ }),
592
+ Xote__JSX.Elements.jsx("p", {
593
+ style: "color: #6b7280; margin-top: 0.5rem;",
594
+ children: Xote.Component.text("Manage your account settings and preferences here. You can update your profile information, change your password, and configure notification settings.")
595
+ })
596
+ ])
597
+ })
598
+ },
599
+ {
600
+ value: "security",
601
+ label: "Security",
602
+ content: Xote__JSX.Elements.jsxs("div", {
603
+ children: Xote__JSX.array([
604
+ Xote__JSX.jsx(Basefn__Typography.make, {
605
+ text: {
606
+ TAG: "Static",
607
+ _0: "Security Settings"
608
+ },
609
+ variant: "H5"
610
+ }),
611
+ Xote__JSX.Elements.jsx("p", {
612
+ style: "color: #6b7280; margin-top: 0.5rem;",
613
+ children: Xote.Component.text("Configure your security preferences including two-factor authentication, active sessions, and security logs.")
614
+ }),
615
+ Xote__JSX.Elements.jsx("div", {
616
+ style: "margin-top: 1rem;",
617
+ children: Xote__JSX.jsx(Basefn__Checkbox.make, {
618
+ checked: Xote.Signal.make(true, undefined, undefined),
619
+ onChange: param => {},
620
+ label: "Enable two-factor authentication"
621
+ })
622
+ })
623
+ ])
624
+ })
625
+ },
626
+ {
627
+ value: "notifications",
628
+ label: "Notifications",
629
+ content: Xote__JSX.Elements.jsxs("div", {
630
+ children: Xote__JSX.array([
631
+ Xote__JSX.jsx(Basefn__Typography.make, {
632
+ text: {
633
+ TAG: "Static",
634
+ _0: "Notification Preferences"
635
+ },
636
+ variant: "H5"
637
+ }),
638
+ Xote__JSX.Elements.jsx("p", {
639
+ style: "color: #6b7280; margin-top: 0.5rem;",
640
+ children: Xote.Component.text("Choose how you want to receive notifications.")
641
+ }),
642
+ Xote__JSX.Elements.jsxs("div", {
643
+ style: "display: flex; flex-direction: column; gap: 0.75rem; margin-top: 1rem;",
644
+ children: Xote__JSX.array([
645
+ Xote__JSX.jsx(Basefn__Checkbox.make, {
646
+ checked: Xote.Signal.make(true, undefined, undefined),
647
+ onChange: param => {},
648
+ label: "Email notifications"
649
+ }),
650
+ Xote__JSX.jsx(Basefn__Checkbox.make, {
651
+ checked: Xote.Signal.make(false, undefined, undefined),
652
+ onChange: param => {},
653
+ label: "SMS notifications"
654
+ }),
655
+ Xote__JSX.jsx(Basefn__Checkbox.make, {
656
+ checked: Xote.Signal.make(true, undefined, undefined),
657
+ onChange: param => {},
658
+ label: "Push notifications"
659
+ })
660
+ ])
661
+ })
662
+ ])
663
+ })
664
+ },
665
+ {
666
+ value: "billing",
667
+ label: "Billing",
668
+ content: Xote__JSX.Elements.jsxs("div", {
669
+ children: Xote__JSX.array([
670
+ Xote__JSX.jsx(Basefn__Typography.make, {
671
+ text: {
672
+ TAG: "Static",
673
+ _0: "Billing Information"
674
+ },
675
+ variant: "H5"
676
+ }),
677
+ Xote__JSX.Elements.jsx("p", {
678
+ style: "color: #6b7280; margin-top: 0.5rem;",
679
+ children: Xote.Component.text("View and manage your billing information, payment methods, and invoices.")
680
+ })
681
+ ])
682
+ }),
683
+ disabled: true
684
+ }
685
+ ]
686
+ })
687
+ ])
688
+ }),
689
+ Xote__JSX.Elements.jsxs("div", {
690
+ style: "margin-top: 2rem;",
691
+ children: Xote__JSX.array([
692
+ Xote__JSX.jsx(Basefn__Typography.make, {
693
+ text: {
694
+ TAG: "Static",
695
+ _0: "Accordion"
696
+ },
697
+ variant: "H4"
698
+ }),
699
+ Xote__JSX.Elements.jsx("p", {
700
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
701
+ children: Xote.Component.text("Collapsible content sections with expand/collapse functionality.")
702
+ }),
703
+ Xote__JSX.jsx(Basefn__Accordion.make, {
704
+ items: [
705
+ {
706
+ value: "faq1",
707
+ title: "What is basefn-UI?",
708
+ content: Xote__JSX.Elements.jsx("p", {
709
+ children: Xote.Component.text("basefn-UI is a modern, reactive UI component library built with ReScript and Xote. It provides a comprehensive set of accessible and customizable components for building web applications.")
710
+ })
711
+ },
712
+ {
713
+ value: "faq2",
714
+ title: "How do I install basefn-UI?",
715
+ content: Xote__JSX.Elements.jsxs("div", {
716
+ children: Xote__JSX.array([
717
+ Xote__JSX.Elements.jsx("p", {
718
+ children: Xote.Component.text("You can install basefn-UI via npm or yarn. Here's how to get started:")
719
+ }),
720
+ Xote__JSX.Elements.jsx("br", {}),
721
+ Xote__JSX.jsx(Basefn__Typography.make, {
722
+ text: {
723
+ TAG: "Static",
724
+ _0: "npm install basefn-ui"
725
+ },
726
+ variant: "Code"
727
+ })
728
+ ])
729
+ })
730
+ },
731
+ {
732
+ value: "faq3",
733
+ title: "Is basefn-UI customizable?",
734
+ content: Xote__JSX.Elements.jsx("p", {
735
+ children: Xote.Component.text("Yes! basefn-UI is fully customizable. You can override the default styles using CSS variables or by providing custom CSS classes. Each component accepts standard HTML attributes including className and style.")
736
+ })
737
+ },
738
+ {
739
+ value: "faq4",
740
+ title: "Does basefn-UI support TypeScript?",
741
+ content: Xote__JSX.Elements.jsx("p", {
742
+ children: Xote.Component.text("basefn-UI is built with ReScript, which provides excellent type safety. While it doesn't directly use TypeScript, ReScript's type system is even more robust and catches errors at compile time.")
743
+ })
744
+ }
745
+ ],
746
+ defaultOpen: ["faq1"],
747
+ multiple: true
748
+ })
749
+ ])
750
+ }),
751
+ Xote__JSX.Elements.jsxs("div", {
752
+ style: "margin-top: 2rem;",
753
+ children: Xote__JSX.array([
754
+ Xote__JSX.jsx(Basefn__Typography.make, {
755
+ text: {
756
+ TAG: "Static",
757
+ _0: "Breadcrumb"
758
+ },
759
+ variant: "H4"
760
+ }),
761
+ Xote__JSX.Elements.jsx("p", {
762
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
763
+ children: Xote.Component.text("Navigation breadcrumbs to show the current page hierarchy.")
764
+ }),
765
+ Xote__JSX.Elements.jsxs("div", {
766
+ style: "display: flex; flex-direction: column; gap: 1.5rem;",
767
+ children: Xote__JSX.array([
768
+ Xote__JSX.Elements.jsxs("div", {
769
+ children: Xote__JSX.array([
770
+ Xote__JSX.Elements.jsx("p", {
771
+ style: "color: #6b7280; margin-bottom: 0.5rem; font-size: 0.875rem;",
772
+ children: Xote.Component.text("Default separator:")
773
+ }),
774
+ Xote__JSX.jsx(Basefn__Breadcrumb.make, {
775
+ items: [
776
+ {
777
+ label: "Home",
778
+ href: "#",
779
+ onClick: undefined
780
+ },
781
+ {
782
+ label: "Products",
783
+ href: "#",
784
+ onClick: undefined
785
+ },
786
+ {
787
+ label: "Electronics",
788
+ href: "#",
789
+ onClick: undefined
790
+ },
791
+ {
792
+ label: "Laptops",
793
+ href: undefined,
794
+ onClick: undefined
795
+ }
796
+ ]
797
+ })
798
+ ])
799
+ }),
800
+ Xote__JSX.Elements.jsxs("div", {
801
+ children: Xote__JSX.array([
802
+ Xote__JSX.Elements.jsx("p", {
803
+ style: "color: #6b7280; margin-bottom: 0.5rem; font-size: 0.875rem;",
804
+ children: Xote.Component.text("Custom separator:")
805
+ }),
806
+ Xote__JSX.jsx(Basefn__Breadcrumb.make, {
807
+ items: [
808
+ {
809
+ label: "Home",
810
+ href: "#",
811
+ onClick: undefined
812
+ },
813
+ {
814
+ label: "Settings",
815
+ href: "#",
816
+ onClick: undefined
817
+ },
818
+ {
819
+ label: "Account",
820
+ href: undefined,
821
+ onClick: undefined
822
+ }
823
+ ],
824
+ separator: ">"
825
+ })
826
+ ])
827
+ }),
828
+ Xote__JSX.Elements.jsxs("div", {
829
+ children: Xote__JSX.array([
830
+ Xote__JSX.Elements.jsx("p", {
831
+ style: "color: #6b7280; margin-bottom: 0.5rem; font-size: 0.875rem;",
832
+ children: Xote.Component.text("With onClick handlers:")
833
+ }),
834
+ Xote__JSX.jsx(Basefn__Breadcrumb.make, {
835
+ items: [
836
+ {
837
+ label: "Dashboard",
838
+ href: undefined,
839
+ onClick: () => {
840
+ console.log("Navigate to Dashboard");
841
+ }
842
+ },
843
+ {
844
+ label: "Users",
845
+ href: undefined,
846
+ onClick: () => {
847
+ console.log("Navigate to Users");
848
+ }
849
+ },
850
+ {
851
+ label: "Profile",
852
+ href: undefined,
853
+ onClick: undefined
854
+ }
855
+ ],
856
+ separator: "\u2022"
857
+ })
858
+ ])
859
+ })
860
+ ])
861
+ })
862
+ ])
863
+ }),
864
+ Xote__JSX.jsx(Basefn__Separator.make, {
865
+ orientation: "Horizontal",
866
+ variant: "Solid",
867
+ label: "Tier 3"
868
+ }),
869
+ Xote__JSX.Elements.jsxs("div", {
870
+ style: "margin-top: 3rem;",
871
+ children: Xote__JSX.array([
872
+ Xote__JSX.jsx(Basefn__Typography.make, {
873
+ text: {
874
+ TAG: "Static",
875
+ _0: "Interactive Components"
876
+ },
877
+ variant: "H2",
878
+ align: "Left"
879
+ }),
880
+ Xote__JSX.jsx(Basefn__Typography.make, {
881
+ text: {
882
+ TAG: "Static",
883
+ _0: "Explore the Tier 3 advanced interactive components below."
884
+ },
885
+ variant: "Muted"
886
+ })
887
+ ])
888
+ }),
889
+ Xote__JSX.Elements.jsxs("div", {
890
+ style: "margin-top: 2rem;",
891
+ children: Xote__JSX.array([
892
+ Xote__JSX.jsx(Basefn__Typography.make, {
893
+ text: {
894
+ TAG: "Static",
895
+ _0: "Modal / Dialog"
896
+ },
897
+ variant: "H4"
898
+ }),
899
+ Xote__JSX.Elements.jsx("p", {
900
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
901
+ children: Xote.Component.text("Display content in an overlay dialog.")
902
+ }),
903
+ Xote__JSX.jsx(Basefn__Button.make, {
904
+ label: {
905
+ TAG: "Static",
906
+ _0: "Open Modal"
907
+ },
908
+ onClick: param => Xote.Signal.set(isModalOpen, true),
909
+ variant: "Primary"
910
+ }),
911
+ Xote__JSX.jsxs(Basefn__Modal.make, {
912
+ isOpen: isModalOpen,
913
+ onClose: () => Xote.Signal.set(isModalOpen, false),
914
+ title: "Example Modal",
915
+ size: "Md",
916
+ children: Xote__JSX.array([
917
+ Xote__JSX.Elements.jsx("p", {
918
+ children: Xote.Component.text("This is a modal dialog. You can include any content here. Click the backdrop or the close button to dismiss.")
919
+ }),
920
+ Xote__JSX.Elements.jsx("p", {
921
+ style: "margin-top: 1rem;",
922
+ children: Xote.Component.text("Modals are great for focused user interactions and confirmations.")
923
+ })
924
+ ]),
925
+ footer: Xote__JSX.Elements.jsxs("div", {
926
+ style: "display: flex; gap: 0.5rem;",
927
+ children: Xote__JSX.array([
928
+ Xote__JSX.jsx(Basefn__Button.make, {
929
+ label: {
930
+ TAG: "Static",
931
+ _0: "Cancel"
932
+ },
933
+ onClick: param => Xote.Signal.set(isModalOpen, false),
934
+ variant: "Ghost"
935
+ }),
936
+ Xote__JSX.jsx(Basefn__Button.make, {
937
+ label: {
938
+ TAG: "Static",
939
+ _0: "Confirm"
940
+ },
941
+ onClick: param => {
942
+ console.log("Confirmed!");
943
+ Xote.Signal.set(isModalOpen, false);
944
+ },
945
+ variant: "Primary"
946
+ })
947
+ ])
948
+ })
949
+ })
950
+ ])
951
+ }),
952
+ Xote__JSX.Elements.jsxs("div", {
953
+ style: "margin-top: 2rem;",
954
+ children: Xote__JSX.array([
955
+ Xote__JSX.jsx(Basefn__Typography.make, {
956
+ text: {
957
+ TAG: "Static",
958
+ _0: "Switch / Toggle"
959
+ },
960
+ variant: "H4"
961
+ }),
962
+ Xote__JSX.Elements.jsx("p", {
963
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
964
+ children: Xote.Component.text("Binary on/off switches for settings and preferences.")
965
+ }),
966
+ Xote__JSX.Elements.jsxs("div", {
967
+ style: "display: flex; flex-direction: column; gap: 1rem;",
968
+ children: Xote__JSX.array([
969
+ Xote__JSX.jsx(Basefn__Switch.make, {
970
+ checked: switchEnabled,
971
+ label: "Enable feature"
972
+ }),
973
+ Xote__JSX.jsx(Basefn__Switch.make, {
974
+ checked: darkModeSwitch,
975
+ label: "Dark mode",
976
+ size: "Lg"
977
+ }),
978
+ Xote__JSX.jsx(Basefn__Switch.make, {
979
+ checked: notificationsSwitch,
980
+ label: "Push notifications",
981
+ size: "Sm"
982
+ }),
983
+ Xote__JSX.jsx(Basefn__Switch.make, {
984
+ checked: Xote.Signal.make(true, undefined, undefined),
985
+ label: "Disabled switch",
986
+ disabled: true,
987
+ size: "Md"
988
+ })
989
+ ])
990
+ })
991
+ ])
992
+ }),
993
+ Xote__JSX.Elements.jsxs("div", {
994
+ style: "margin-top: 2rem;",
995
+ children: Xote__JSX.array([
996
+ Xote__JSX.jsx(Basefn__Typography.make, {
997
+ text: {
998
+ TAG: "Static",
999
+ _0: "Slider"
1000
+ },
1001
+ variant: "H4"
1002
+ }),
1003
+ Xote__JSX.Elements.jsx("p", {
1004
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1005
+ children: Xote.Component.text("Select a value from a range.")
1006
+ }),
1007
+ Xote__JSX.Elements.jsxs("div", {
1008
+ style: "display: flex; flex-direction: column; gap: 2rem;",
1009
+ children: Xote__JSX.array([
1010
+ Xote__JSX.jsx(Basefn__Slider.make, {
1011
+ value: sliderValue,
1012
+ label: "Volume",
1013
+ showValue: true
1014
+ }),
1015
+ Xote__JSX.jsx(Basefn__Slider.make, {
1016
+ value: Xote.Signal.make(25.0, undefined, undefined),
1017
+ min: 0.0,
1018
+ max: 100.0,
1019
+ step: 5.0,
1020
+ label: "Brightness",
1021
+ showValue: true
1022
+ }),
1023
+ Xote__JSX.jsx(Basefn__Slider.make, {
1024
+ value: Xote.Signal.make(3.0, undefined, undefined),
1025
+ min: 0.0,
1026
+ max: 5.0,
1027
+ step: 1.0,
1028
+ label: "Rating",
1029
+ showValue: true,
1030
+ markers: [
1031
+ "0",
1032
+ "1",
1033
+ "2",
1034
+ "3",
1035
+ "4",
1036
+ "5"
1037
+ ]
1038
+ })
1039
+ ])
1040
+ })
1041
+ ])
1042
+ }),
1043
+ Xote__JSX.Elements.jsxs("div", {
1044
+ style: "margin-top: 2rem;",
1045
+ children: Xote__JSX.array([
1046
+ Xote__JSX.jsx(Basefn__Typography.make, {
1047
+ text: {
1048
+ TAG: "Static",
1049
+ _0: "Tooltip"
1050
+ },
1051
+ variant: "H4"
1052
+ }),
1053
+ Xote__JSX.Elements.jsx("p", {
1054
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1055
+ children: Xote.Component.text("Show contextual information on hover.")
1056
+ }),
1057
+ Xote__JSX.Elements.jsxs("div", {
1058
+ style: "display: flex; gap: 1rem; flex-wrap: wrap;",
1059
+ children: Xote__JSX.array([
1060
+ Xote__JSX.jsx(Basefn__Tooltip.make, {
1061
+ content: "This appears on top",
1062
+ position: "Top",
1063
+ children: Xote__JSX.jsx(Basefn__Button.make, {
1064
+ label: {
1065
+ TAG: "Static",
1066
+ _0: "Hover me )(top)"
1067
+ },
1068
+ variant: "Secondary"
1069
+ })
1070
+ }),
1071
+ Xote__JSX.jsx(Basefn__Tooltip.make, {
1072
+ content: "This appears on bottom",
1073
+ position: "Bottom",
1074
+ children: Xote__JSX.jsx(Basefn__Button.make, {
1075
+ label: {
1076
+ TAG: "Static",
1077
+ _0: "Hover me )(bottom)"
1078
+ },
1079
+ variant: "Secondary"
1080
+ })
1081
+ }),
1082
+ Xote__JSX.jsx(Basefn__Tooltip.make, {
1083
+ content: "This appears on left",
1084
+ position: "Left",
1085
+ children: Xote__JSX.jsx(Basefn__Button.make, {
1086
+ label: {
1087
+ TAG: "Static",
1088
+ _0: "Hover me )(left)"
1089
+ },
1090
+ variant: "Secondary"
1091
+ })
1092
+ }),
1093
+ Xote__JSX.jsx(Basefn__Tooltip.make, {
1094
+ content: "This appears on right",
1095
+ position: "Right",
1096
+ children: Xote__JSX.jsx(Basefn__Button.make, {
1097
+ label: {
1098
+ TAG: "Static",
1099
+ _0: "Hover me )(right)"
1100
+ },
1101
+ variant: "Secondary"
1102
+ })
1103
+ })
1104
+ ])
1105
+ })
1106
+ ])
1107
+ }),
1108
+ Xote__JSX.Elements.jsxs("div", {
1109
+ style: "margin-top: 2rem;",
1110
+ children: Xote__JSX.array([
1111
+ Xote__JSX.jsx(Basefn__Typography.make, {
1112
+ text: {
1113
+ TAG: "Static",
1114
+ _0: "Dropdown Menu"
1115
+ },
1116
+ variant: "H4"
1117
+ }),
1118
+ Xote__JSX.Elements.jsx("p", {
1119
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1120
+ children: Xote.Component.text("Contextual menu with actions.")
1121
+ }),
1122
+ Xote__JSX.Elements.jsxs("div", {
1123
+ style: "display: flex; gap: 1rem;",
1124
+ children: Xote__JSX.array([
1125
+ Xote__JSX.jsx(Basefn__Dropdown.make, {
1126
+ trigger: Xote__JSX.jsx(Basefn__Button.make, {
1127
+ label: {
1128
+ TAG: "Static",
1129
+ _0: "Actions"
1130
+ },
1131
+ variant: "Secondary"
1132
+ }),
1133
+ items: [
1134
+ {
1135
+ TAG: "Item",
1136
+ _0: {
1137
+ label: "Edit",
1138
+ onClick: () => {
1139
+ console.log("Edit clicked");
1140
+ }
1141
+ }
1142
+ },
1143
+ {
1144
+ TAG: "Item",
1145
+ _0: {
1146
+ label: "Duplicate",
1147
+ onClick: () => {
1148
+ console.log("Duplicate clicked");
1149
+ }
1150
+ }
1151
+ },
1152
+ "Separator",
1153
+ {
1154
+ TAG: "Item",
1155
+ _0: {
1156
+ label: "Archive",
1157
+ onClick: () => {
1158
+ console.log("Archive clicked");
1159
+ }
1160
+ }
1161
+ },
1162
+ {
1163
+ TAG: "Item",
1164
+ _0: {
1165
+ label: "Delete",
1166
+ onClick: () => {
1167
+ console.log("Delete clicked");
1168
+ },
1169
+ danger: true
1170
+ }
1171
+ }
1172
+ ]
1173
+ }),
1174
+ Xote__JSX.jsx(Basefn__Dropdown.make, {
1175
+ trigger: Xote__JSX.jsx(Basefn__Button.make, {
1176
+ label: {
1177
+ TAG: "Static",
1178
+ _0: "More options"
1179
+ },
1180
+ variant: "Ghost"
1181
+ }),
1182
+ items: [
1183
+ {
1184
+ TAG: "Item",
1185
+ _0: {
1186
+ label: "Settings",
1187
+ onClick: () => {
1188
+ console.log("Settings");
1189
+ }
1190
+ }
1191
+ },
1192
+ {
1193
+ TAG: "Item",
1194
+ _0: {
1195
+ label: "Help",
1196
+ onClick: () => {
1197
+ console.log("Help");
1198
+ }
1199
+ }
1200
+ },
1201
+ "Separator",
1202
+ {
1203
+ TAG: "Item",
1204
+ _0: {
1205
+ label: "Disabled item",
1206
+ onClick: () => {
1207
+ console.log("Should not fire");
1208
+ },
1209
+ disabled: true
1210
+ }
1211
+ }
1212
+ ],
1213
+ align: "right"
1214
+ })
1215
+ ])
1216
+ })
1217
+ ])
1218
+ }),
1219
+ Xote__JSX.Elements.jsxs("div", {
1220
+ style: "margin-top: 2rem;",
1221
+ children: Xote__JSX.array([
1222
+ Xote__JSX.jsx(Basefn__Typography.make, {
1223
+ text: {
1224
+ TAG: "Static",
1225
+ _0: "Toast / Notification"
1226
+ },
1227
+ variant: "H4"
1228
+ }),
1229
+ Xote__JSX.Elements.jsx("p", {
1230
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1231
+ children: Xote.Component.text("Temporary notification messages.")
1232
+ }),
1233
+ Xote__JSX.Elements.jsx("div", {
1234
+ style: "display: flex; gap: 0.75rem; flex-wrap: wrap;",
1235
+ children: Xote__JSX.jsx(Basefn__Button.make, {
1236
+ label: {
1237
+ TAG: "Static",
1238
+ _0: "Show Toast"
1239
+ },
1240
+ onClick: param => Xote.Signal.set(toastVisible, true),
1241
+ variant: "Primary"
1242
+ })
1243
+ }),
1244
+ Xote__JSX.jsx(Basefn__Toast.make, {
1245
+ title: "Success!",
1246
+ message: "Your changes have been saved successfully.",
1247
+ variant: "Success",
1248
+ isVisible: toastVisible,
1249
+ onClose: () => {
1250
+ console.log("Toast closed");
1251
+ }
1252
+ })
1253
+ ])
1254
+ }),
1255
+ Xote__JSX.jsx(Basefn__Separator.make, {
1256
+ orientation: "Horizontal",
1257
+ variant: "Solid",
1258
+ label: "Tier 4"
1259
+ }),
1260
+ Xote__JSX.Elements.jsxs("div", {
1261
+ style: "margin-top: 3rem;",
1262
+ children: Xote__JSX.array([
1263
+ Xote__JSX.jsx(Basefn__Typography.make, {
1264
+ text: {
1265
+ TAG: "Static",
1266
+ _0: "Navigation & Layout"
1267
+ },
1268
+ variant: "H2",
1269
+ align: "Left"
1270
+ }),
1271
+ Xote__JSX.jsx(Basefn__Typography.make, {
1272
+ text: {
1273
+ TAG: "Static",
1274
+ _0: "Explore the Tier 4 navigation and layout components below."
1275
+ },
1276
+ variant: "Muted"
1277
+ })
1278
+ ])
1279
+ }),
1280
+ Xote__JSX.Elements.jsxs("div", {
1281
+ style: "margin-top: 2rem;",
1282
+ children: Xote__JSX.array([
1283
+ Xote__JSX.jsx(Basefn__Typography.make, {
1284
+ text: {
1285
+ TAG: "Static",
1286
+ _0: "Stepper"
1287
+ },
1288
+ variant: "H4"
1289
+ }),
1290
+ Xote__JSX.Elements.jsx("p", {
1291
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1292
+ children: Xote.Component.text("Multi-step process indicator with progress tracking.")
1293
+ }),
1294
+ Xote__JSX.Elements.jsxs("div", {
1295
+ style: "display: flex; flex-direction: column; gap: 2rem;",
1296
+ children: Xote__JSX.array([
1297
+ Xote__JSX.Elements.jsxs("div", {
1298
+ children: Xote__JSX.array([
1299
+ Xote__JSX.Elements.jsx("p", {
1300
+ style: "color: #6b7280; margin-bottom: 1rem; font-size: 0.875rem;",
1301
+ children: Xote.Component.text("Horizontal stepper:")
1302
+ }),
1303
+ Xote__JSX.jsx(Basefn__Stepper.make, {
1304
+ steps: [
1305
+ {
1306
+ title: "Account Info",
1307
+ description: "Enter your details",
1308
+ status: "Completed"
1309
+ },
1310
+ {
1311
+ title: "Verification",
1312
+ description: "Verify your email",
1313
+ status: "Active"
1314
+ },
1315
+ {
1316
+ title: "Preferences",
1317
+ description: "Set your preferences",
1318
+ status: "Inactive"
1319
+ },
1320
+ {
1321
+ title: "Complete",
1322
+ description: "All done!",
1323
+ status: "Inactive"
1324
+ }
1325
+ ],
1326
+ currentStep: currentStep,
1327
+ orientation: "Horizontal",
1328
+ onStepClick: step => {
1329
+ Xote.Signal.set(currentStep, step);
1330
+ console.log("Step clicked:", step);
1331
+ }
1332
+ })
1333
+ ])
1334
+ }),
1335
+ Xote__JSX.Elements.jsxs("div", {
1336
+ children: Xote__JSX.array([
1337
+ Xote__JSX.Elements.jsx("p", {
1338
+ style: "color: #6b7280; margin-bottom: 1rem; font-size: 0.875rem;",
1339
+ children: Xote.Component.text("Vertical stepper:")
1340
+ }),
1341
+ Xote__JSX.jsx(Basefn__Stepper.make, {
1342
+ steps: [
1343
+ {
1344
+ title: "Order Placed",
1345
+ description: "Your order has been confirmed",
1346
+ status: "Completed"
1347
+ },
1348
+ {
1349
+ title: "Processing",
1350
+ description: "We are preparing your order",
1351
+ status: "Completed"
1352
+ },
1353
+ {
1354
+ title: "Shipped",
1355
+ description: "Your order is on the way",
1356
+ status: "Active"
1357
+ },
1358
+ {
1359
+ title: "Delivered",
1360
+ description: "Enjoy your purchase!",
1361
+ status: "Inactive"
1362
+ }
1363
+ ],
1364
+ currentStep: Xote.Signal.make(2, undefined, undefined),
1365
+ orientation: "Vertical"
1366
+ })
1367
+ ])
1368
+ })
1369
+ ])
1370
+ })
1371
+ ])
1372
+ }),
1373
+ Xote__JSX.Elements.jsxs("div", {
1374
+ style: "margin-top: 2rem;",
1375
+ children: Xote__JSX.array([
1376
+ Xote__JSX.jsx(Basefn__Typography.make, {
1377
+ text: {
1378
+ TAG: "Static",
1379
+ _0: "Drawer / Sidebar"
1380
+ },
1381
+ variant: "H4"
1382
+ }),
1383
+ Xote__JSX.Elements.jsx("p", {
1384
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1385
+ children: Xote.Component.text("Slide-in panels for additional content.")
1386
+ }),
1387
+ Xote__JSX.Elements.jsx("div", {
1388
+ style: "display: flex; gap: 0.75rem; flex-wrap: wrap;",
1389
+ children: Xote__JSX.jsx(Basefn__Button.make, {
1390
+ label: {
1391
+ TAG: "Static",
1392
+ _0: "Open Drawer"
1393
+ },
1394
+ onClick: param => Xote.Signal.set(isDrawerOpen, true),
1395
+ variant: "Primary"
1396
+ })
1397
+ }),
1398
+ Xote__JSX.jsx(Basefn__Drawer.make, {
1399
+ isOpen: isDrawerOpen,
1400
+ onClose: () => Xote.Signal.set(isDrawerOpen, false),
1401
+ position: "Right",
1402
+ size: "Md",
1403
+ title: "Drawer Panel",
1404
+ children: Xote__JSX.Elements.jsxs("div", {
1405
+ children: Xote__JSX.array([
1406
+ Xote__JSX.jsx(Basefn__Typography.make, {
1407
+ text: {
1408
+ TAG: "Static",
1409
+ _0: "Drawer Content"
1410
+ },
1411
+ variant: "H5"
1412
+ }),
1413
+ Xote__JSX.Elements.jsx("p", {
1414
+ style: "margin-top: 1rem;",
1415
+ children: Xote.Component.text("This is a drawer panel. You can use it for navigation, forms, or any additional content that doesn't fit in the main view.")
1416
+ }),
1417
+ Xote__JSX.Elements.jsxs("div", {
1418
+ style: "margin-top: 1.5rem;",
1419
+ children: Xote__JSX.array([
1420
+ Xote__JSX.jsx(Basefn__Label.make, {
1421
+ text: "Name"
1422
+ }),
1423
+ Xote__JSX.jsx(Basefn__Input.make, {
1424
+ value: {
1425
+ TAG: "Static",
1426
+ _0: ""
1427
+ },
1428
+ type_: "Text",
1429
+ placeholder: "Enter your name"
1430
+ })
1431
+ ])
1432
+ }),
1433
+ Xote__JSX.Elements.jsxs("div", {
1434
+ style: "margin-top: 1rem;",
1435
+ children: Xote__JSX.array([
1436
+ Xote__JSX.jsx(Basefn__Label.make, {
1437
+ text: "Email"
1438
+ }),
1439
+ Xote__JSX.jsx(Basefn__Input.make, {
1440
+ value: {
1441
+ TAG: "Static",
1442
+ _0: ""
1443
+ },
1444
+ type_: "Email",
1445
+ placeholder: "Enter your email"
1446
+ })
1447
+ ])
1448
+ }),
1449
+ Xote__JSX.Elements.jsxs("div", {
1450
+ style: "margin-top: 1rem;",
1451
+ children: Xote__JSX.array([
1452
+ Xote__JSX.jsx(Basefn__Label.make, {
1453
+ text: "Message"
1454
+ }),
1455
+ Xote__JSX.jsx(Basefn__Textarea.make, {
1456
+ value: {
1457
+ TAG: "Static",
1458
+ _0: ""
1459
+ },
1460
+ placeholder: "Enter a message"
1461
+ })
1462
+ ])
1463
+ })
1464
+ ])
1465
+ }),
1466
+ footer: Xote__JSX.Elements.jsxs("div", {
1467
+ style: "display: flex; gap: 0.5rem; justify-content: flex-end;",
1468
+ children: Xote__JSX.array([
1469
+ Xote__JSX.jsx(Basefn__Button.make, {
1470
+ label: {
1471
+ TAG: "Static",
1472
+ _0: "Cancel"
1473
+ },
1474
+ onClick: param => Xote.Signal.set(isDrawerOpen, false),
1475
+ variant: "Ghost"
1476
+ }),
1477
+ Xote__JSX.jsx(Basefn__Button.make, {
1478
+ label: {
1479
+ TAG: "Static",
1480
+ _0: "Save"
1481
+ },
1482
+ onClick: param => {
1483
+ console.log("Saved!");
1484
+ Xote.Signal.set(isDrawerOpen, false);
1485
+ },
1486
+ variant: "Primary"
1487
+ })
1488
+ ])
1489
+ })
1490
+ })
1491
+ ])
1492
+ }),
1493
+ Xote__JSX.Elements.jsxs("div", {
1494
+ style: "margin-top: 2rem;",
1495
+ children: Xote__JSX.array([
1496
+ Xote__JSX.jsx(Basefn__Typography.make, {
1497
+ text: {
1498
+ TAG: "Static",
1499
+ _0: "Timeline"
1500
+ },
1501
+ variant: "H4"
1502
+ }),
1503
+ Xote__JSX.Elements.jsx("p", {
1504
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1505
+ children: Xote.Component.text("Display chronological events in a visual timeline.")
1506
+ }),
1507
+ Xote__JSX.Elements.jsxs("div", {
1508
+ style: "display: flex; flex-direction: column; gap: 2rem;",
1509
+ children: Xote__JSX.array([
1510
+ Xote__JSX.Elements.jsxs("div", {
1511
+ children: Xote__JSX.array([
1512
+ Xote__JSX.Elements.jsx("p", {
1513
+ style: "color: #6b7280; margin-bottom: 1rem; font-size: 0.875rem;",
1514
+ children: Xote.Component.text("Vertical timeline:")
1515
+ }),
1516
+ Xote__JSX.jsx(Basefn__Timeline.make, {
1517
+ items: [
1518
+ {
1519
+ title: "Project Created",
1520
+ timestamp: "2 hours ago",
1521
+ description: "Initial project setup and configuration",
1522
+ variant: "Success",
1523
+ icon: "\u2713"
1524
+ },
1525
+ {
1526
+ title: "First Commit",
1527
+ timestamp: "1 hour ago",
1528
+ description: "Added base components and styling",
1529
+ variant: "Success",
1530
+ icon: "\u2713"
1531
+ },
1532
+ {
1533
+ title: "Code Review",
1534
+ timestamp: "30 minutes ago",
1535
+ description: "Team reviewing the implementation",
1536
+ variant: "Primary",
1537
+ icon: undefined
1538
+ },
1539
+ {
1540
+ title: "Deployment",
1541
+ timestamp: "Pending",
1542
+ description: "Awaiting approval for production deployment",
1543
+ variant: "Default",
1544
+ icon: undefined
1545
+ }
1546
+ ],
1547
+ orientation: "Vertical"
1548
+ })
1549
+ ])
1550
+ }),
1551
+ Xote__JSX.Elements.jsxs("div", {
1552
+ children: Xote__JSX.array([
1553
+ Xote__JSX.Elements.jsx("p", {
1554
+ style: "color: #6b7280; margin-bottom: 1rem; font-size: 0.875rem;",
1555
+ children: Xote.Component.text("With different variants:")
1556
+ }),
1557
+ Xote__JSX.jsx(Basefn__Timeline.make, {
1558
+ items: [
1559
+ {
1560
+ title: "Success Event",
1561
+ timestamp: undefined,
1562
+ description: "Operation completed successfully",
1563
+ variant: "Success",
1564
+ icon: "\u2713"
1565
+ },
1566
+ {
1567
+ title: "Warning Event",
1568
+ timestamp: undefined,
1569
+ description: "Requires attention",
1570
+ variant: "Warning",
1571
+ icon: "!"
1572
+ },
1573
+ {
1574
+ title: "Error Event",
1575
+ timestamp: undefined,
1576
+ description: "Operation failed",
1577
+ variant: "Error",
1578
+ icon: "\u00d7"
1579
+ }
1580
+ ],
1581
+ orientation: "Vertical"
1582
+ })
1583
+ ])
1584
+ })
1585
+ ])
1586
+ })
1587
+ ])
1588
+ }),
1589
+ Xote__JSX.jsx(Basefn__Separator.make, {
1590
+ orientation: "Horizontal",
1591
+ variant: "Solid",
1592
+ label: "App Layouts"
1593
+ }),
1594
+ Xote__JSX.Elements.jsxs("div", {
1595
+ style: "margin-top: 3rem;",
1596
+ children: Xote__JSX.array([
1597
+ Xote__JSX.jsx(Basefn__Typography.make, {
1598
+ text: {
1599
+ TAG: "Static",
1600
+ _0: "Application Layouts"
1601
+ },
1602
+ variant: "H2",
1603
+ align: "Left"
1604
+ }),
1605
+ Xote__JSX.jsx(Basefn__Typography.make, {
1606
+ text: {
1607
+ TAG: "Static",
1608
+ _0: "Complete application layout structures with sidebar and topbar combinations."
1609
+ },
1610
+ variant: "Muted"
1611
+ })
1612
+ ])
1613
+ }),
1614
+ Xote__JSX.Elements.jsxs("div", {
1615
+ style: "margin-top: 2rem;",
1616
+ children: Xote__JSX.array([
1617
+ Xote__JSX.jsx(Basefn__Typography.make, {
1618
+ text: {
1619
+ TAG: "Static",
1620
+ _0: "Layout Variants"
1621
+ },
1622
+ variant: "H4"
1623
+ }),
1624
+ Xote__JSX.Elements.jsx("p", {
1625
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1626
+ children: Xote.Component.text("Different application layout configurations.")
1627
+ }),
1628
+ Xote__JSX.Elements.jsxs("div", {
1629
+ style: "display: flex; flex-direction: column; gap: 2rem;",
1630
+ children: Xote__JSX.array([
1631
+ Xote__JSX.Elements.jsxs("div", {
1632
+ children: Xote__JSX.array([
1633
+ Xote__JSX.jsx(Basefn__Typography.make, {
1634
+ text: {
1635
+ TAG: "Static",
1636
+ _0: "Sidebar Only Layout"
1637
+ },
1638
+ variant: "H5"
1639
+ }),
1640
+ Xote__JSX.Elements.jsx("p", {
1641
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0; font-size: 0.875rem;",
1642
+ children: Xote.Component.text("Application with sidebar navigation")
1643
+ }),
1644
+ Xote__JSX.Elements.jsx("div", {
1645
+ style: "border: 2px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden; height: 400px;",
1646
+ children: Xote__JSX.jsx(Basefn__AppLayout.make, {
1647
+ sidebar: Xote__JSX.jsx(Basefn__Sidebar.make, {
1648
+ logo: Xote.Component.text("eita UI"),
1649
+ sections: [
1650
+ {
1651
+ title: "Main",
1652
+ items: [
1653
+ {
1654
+ label: "Dashboard",
1655
+ icon: "\u2302",
1656
+ active: Xote.Signal.get(activeNavItem) === "home",
1657
+ url: "/profile"
1658
+ },
1659
+ {
1660
+ label: "Analytics",
1661
+ icon: "\u{1F4CA}",
1662
+ active: Xote.Signal.get(activeNavItem) === "analytics",
1663
+ url: "/profile"
1664
+ }
1665
+ ]
1666
+ },
1667
+ {
1668
+ title: "Settings",
1669
+ items: [
1670
+ {
1671
+ label: "Profile",
1672
+ icon: "\u{1F464}",
1673
+ active: Xote.Signal.get(activeNavItem) === "profile",
1674
+ url: "/profile"
1675
+ },
1676
+ {
1677
+ label: "Settings",
1678
+ icon: "\u2699",
1679
+ active: Xote.Signal.get(activeNavItem) === "settings",
1680
+ url: "/profile"
1681
+ }
1682
+ ]
1683
+ }
1684
+ ],
1685
+ size: "Md"
1686
+ }),
1687
+ children: Xote__JSX.Elements.jsxs("div", {
1688
+ style: "padding: 2rem;",
1689
+ children: Xote__JSX.array([
1690
+ Xote__JSX.jsx(Basefn__Typography.make, {
1691
+ text: {
1692
+ TAG: "Static",
1693
+ _0: "Main Content Area"
1694
+ },
1695
+ variant: "H3"
1696
+ }),
1697
+ Xote__JSX.Elements.jsx("p", {
1698
+ style: "margin-top: 1rem;",
1699
+ children: Xote.Component.text("This is the main content area. The sidebar provides persistent navigation.")
1700
+ })
1701
+ ])
1702
+ })
1703
+ })
1704
+ })
1705
+ ])
1706
+ }),
1707
+ Xote__JSX.Elements.jsxs("div", {
1708
+ children: Xote__JSX.array([
1709
+ Xote__JSX.jsx(Basefn__Typography.make, {
1710
+ text: {
1711
+ TAG: "Static",
1712
+ _0: "Topbar Only Layout"
1713
+ },
1714
+ variant: "H5"
1715
+ }),
1716
+ Xote__JSX.Elements.jsx("p", {
1717
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0; font-size: 0.875rem;",
1718
+ children: Xote.Component.text("Application with top navigation bar")
1719
+ }),
1720
+ Xote__JSX.Elements.jsx("div", {
1721
+ style: "border: 2px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden; height: 300px;",
1722
+ children: Xote__JSX.jsx(Basefn__AppLayout.make, {
1723
+ topbar: Xote__JSX.jsx(Basefn__Topbar.make, {
1724
+ logo: Xote.Component.text("eita UI"),
1725
+ navItems: [
1726
+ {
1727
+ label: "Home",
1728
+ active: Xote.Signal.get(activeNavItem) === "home",
1729
+ onClick: () => Xote.Signal.set(activeNavItem, "home")
1730
+ },
1731
+ {
1732
+ label: "Products",
1733
+ active: Xote.Signal.get(activeNavItem) === "products",
1734
+ onClick: () => Xote.Signal.set(activeNavItem, "products")
1735
+ },
1736
+ {
1737
+ label: "About",
1738
+ active: Xote.Signal.get(activeNavItem) === "about",
1739
+ onClick: () => Xote.Signal.set(activeNavItem, "about")
1740
+ }
1741
+ ],
1742
+ rightContent: Xote__JSX.Elements.jsxs("div", {
1743
+ style: "display: flex; gap: 0.5rem;",
1744
+ children: Xote__JSX.array([
1745
+ Xote__JSX.jsx(Basefn__Button.make, {
1746
+ label: {
1747
+ TAG: "Static",
1748
+ _0: "Sign In"
1749
+ },
1750
+ variant: "Ghost"
1751
+ }),
1752
+ Xote__JSX.jsx(Basefn__Button.make, {
1753
+ label: {
1754
+ TAG: "Static",
1755
+ _0: "Sign Up"
1756
+ },
1757
+ variant: "Primary"
1758
+ })
1759
+ ])
1760
+ })
1761
+ }),
1762
+ children: Xote__JSX.Elements.jsxs("div", {
1763
+ style: "padding: 2rem;",
1764
+ children: Xote__JSX.array([
1765
+ Xote__JSX.jsx(Basefn__Typography.make, {
1766
+ text: {
1767
+ TAG: "Static",
1768
+ _0: "Main Content Area"
1769
+ },
1770
+ variant: "H3"
1771
+ }),
1772
+ Xote__JSX.Elements.jsx("p", {
1773
+ style: "margin-top: 1rem;",
1774
+ children: Xote.Component.text("This layout uses only a top navigation bar.")
1775
+ })
1776
+ ])
1777
+ })
1778
+ })
1779
+ })
1780
+ ])
1781
+ }),
1782
+ Xote__JSX.Elements.jsxs("div", {
1783
+ children: Xote__JSX.array([
1784
+ Xote__JSX.jsx(Basefn__Typography.make, {
1785
+ text: {
1786
+ TAG: "Static",
1787
+ _0: "Sidebar + Topbar Layout"
1788
+ },
1789
+ variant: "H5"
1790
+ }),
1791
+ Xote__JSX.Elements.jsx("p", {
1792
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0; font-size: 0.875rem;",
1793
+ children: Xote.Component.text("Full application layout with both sidebar and topbar")
1794
+ }),
1795
+ Xote__JSX.Elements.jsx("div", {
1796
+ style: "border: 2px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden; height: 500px;",
1797
+ children: Xote__JSX.jsx(Basefn__AppLayout.make, {
1798
+ sidebar: Xote__JSX.jsx(Basefn__Sidebar.make, {
1799
+ logo: Xote.Component.text("basefn"),
1800
+ sections: [{
1801
+ title: "Navigation",
1802
+ items: [
1803
+ {
1804
+ label: "Dashboard",
1805
+ icon: "\u2302",
1806
+ active: true,
1807
+ url: "/"
1808
+ },
1809
+ {
1810
+ label: "Projects",
1811
+ icon: "\u{1F4C1}",
1812
+ active: false,
1813
+ url: "/"
1814
+ },
1815
+ {
1816
+ label: "Tasks",
1817
+ icon: "\u2713",
1818
+ active: false,
1819
+ url: "/"
1820
+ }
1821
+ ]
1822
+ }],
1823
+ size: "Md",
1824
+ collapsed: Xote.Signal.get(sidebarCollapsed)
1825
+ }),
1826
+ topbar: Xote__JSX.jsx(Basefn__Topbar.make, {
1827
+ rightContent: Xote__JSX.Elements.jsxs("div", {
1828
+ style: "display: flex; align-items: center; gap: 1rem;",
1829
+ children: Xote__JSX.array([
1830
+ Xote__JSX.jsx(Basefn__Badge.make, {
1831
+ label: Xote.Signal.make("3", undefined, undefined),
1832
+ variant: "Primary"
1833
+ }),
1834
+ Xote__JSX.jsx(Basefn__Avatar.make, {
1835
+ src: "https://ui-avatars.com/api/?name=John+Doe",
1836
+ size: "Sm"
1837
+ })
1838
+ ])
1839
+ }),
1840
+ onMenuClick: () => Xote.Signal.update(sidebarCollapsed, prev => !prev)
1841
+ }),
1842
+ children: Xote__JSX.Elements.jsxs("div", {
1843
+ style: "padding: 2rem;",
1844
+ children: Xote__JSX.array([
1845
+ Xote__JSX.jsx(Basefn__Typography.make, {
1846
+ text: {
1847
+ TAG: "Static",
1848
+ _0: "Dashboard"
1849
+ },
1850
+ variant: "H3"
1851
+ }),
1852
+ Xote__JSX.Elements.jsx("p", {
1853
+ style: "margin-top: 1rem;",
1854
+ children: Xote.Component.text("This is a complete application layout with both sidebar and topbar. Click the menu button in the topbar to toggle the sidebar.")
1855
+ }),
1856
+ Xote__JSX.Elements.jsxs("div", {
1857
+ style: "margin-top: 2rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem;",
1858
+ children: Xote__JSX.array([
1859
+ Xote__JSX.jsxs(Basefn__Card.make, {
1860
+ children: Xote__JSX.array([
1861
+ Xote__JSX.jsx(Basefn__Typography.make, {
1862
+ text: {
1863
+ TAG: "Static",
1864
+ _0: "Total Users"
1865
+ },
1866
+ variant: "H6"
1867
+ }),
1868
+ Xote__JSX.jsx(Basefn__Typography.make, {
1869
+ text: {
1870
+ TAG: "Static",
1871
+ _0: "1,234"
1872
+ },
1873
+ variant: "H2",
1874
+ class: "text-primary"
1875
+ })
1876
+ ])
1877
+ }),
1878
+ Xote__JSX.jsxs(Basefn__Card.make, {
1879
+ children: Xote__JSX.array([
1880
+ Xote__JSX.jsx(Basefn__Typography.make, {
1881
+ text: {
1882
+ TAG: "Static",
1883
+ _0: "Active Projects"
1884
+ },
1885
+ variant: "H6"
1886
+ }),
1887
+ Xote__JSX.jsx(Basefn__Typography.make, {
1888
+ text: {
1889
+ TAG: "Static",
1890
+ _0: "45"
1891
+ },
1892
+ variant: "H2"
1893
+ })
1894
+ ])
1895
+ }),
1896
+ Xote__JSX.jsxs(Basefn__Card.make, {
1897
+ children: Xote__JSX.array([
1898
+ Xote__JSX.jsx(Basefn__Typography.make, {
1899
+ text: {
1900
+ TAG: "Static",
1901
+ _0: "Completed Tasks"
1902
+ },
1903
+ variant: "H6"
1904
+ }),
1905
+ Xote__JSX.jsx(Basefn__Typography.make, {
1906
+ text: {
1907
+ TAG: "Static",
1908
+ _0: "892"
1909
+ },
1910
+ variant: "H2"
1911
+ })
1912
+ ])
1913
+ })
1914
+ ])
1915
+ })
1916
+ ])
1917
+ }),
1918
+ sidebarSize: "md",
1919
+ sidebarCollapsed: Xote.Signal.get(sidebarCollapsed)
1920
+ })
1921
+ })
1922
+ ])
1923
+ })
1924
+ ])
1925
+ })
1926
+ ])
1927
+ }),
1928
+ Xote__JSX.jsx(Basefn__Separator.make, {
1929
+ orientation: "Horizontal",
1930
+ variant: "Dashed",
1931
+ label: "Foundational"
1932
+ }),
1933
+ Xote__JSX.Elements.jsxs("div", {
1934
+ style: "margin-top: 3rem;",
1935
+ children: Xote__JSX.array([
1936
+ Xote__JSX.jsx(Basefn__Typography.make, {
1937
+ text: {
1938
+ TAG: "Static",
1939
+ _0: "Foundation Components"
1940
+ },
1941
+ variant: "H2",
1942
+ align: "Left"
1943
+ }),
1944
+ Xote__JSX.jsx(Basefn__Typography.make, {
1945
+ text: {
1946
+ TAG: "Static",
1947
+ _0: "Explore the Tier 1 foundation components below."
1948
+ },
1949
+ variant: "Muted"
1950
+ })
1951
+ ])
1952
+ }),
1953
+ Xote__JSX.Elements.jsxs("div", {
1954
+ style: "margin-top: 2rem;",
1955
+ children: Xote__JSX.array([
1956
+ Xote__JSX.jsx(Basefn__Typography.make, {
1957
+ text: {
1958
+ TAG: "Static",
1959
+ _0: "Badges"
1960
+ },
1961
+ variant: "H4"
1962
+ }),
1963
+ Xote__JSX.Elements.jsx("p", {
1964
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
1965
+ children: Xote.Component.text("Display status indicators and labels with various styles.")
1966
+ }),
1967
+ Xote__JSX.Elements.jsxs("div", {
1968
+ style: "display: flex; gap: 0.75rem; flex-wrap: wrap; align-items: center;",
1969
+ children: Xote__JSX.array([
1970
+ Xote__JSX.jsx(Basefn__Badge.make, {
1971
+ label: Xote.Signal.make("Default", undefined, undefined),
1972
+ variant: "Default"
1973
+ }),
1974
+ Xote__JSX.jsx(Basefn__Badge.make, {
1975
+ label: Xote.Signal.make("Primary", undefined, undefined),
1976
+ variant: "Primary"
1977
+ }),
1978
+ Xote__JSX.jsx(Basefn__Badge.make, {
1979
+ label: Xote.Signal.make("Secondary", undefined, undefined),
1980
+ variant: "Secondary"
1981
+ }),
1982
+ Xote__JSX.jsx(Basefn__Badge.make, {
1983
+ label: Xote.Signal.make("Success", undefined, undefined),
1984
+ variant: "Success"
1985
+ }),
1986
+ Xote__JSX.jsx(Basefn__Badge.make, {
1987
+ label: Xote.Signal.make("Warning", undefined, undefined),
1988
+ variant: "Warning"
1989
+ }),
1990
+ Xote__JSX.jsx(Basefn__Badge.make, {
1991
+ label: Xote.Signal.make("Error", undefined, undefined),
1992
+ variant: "Error"
1993
+ })
1994
+ ])
1995
+ }),
1996
+ Xote__JSX.Elements.jsxs("div", {
1997
+ style: "display: flex; gap: 0.75rem; flex-wrap: wrap; align-items: center; margin-top: 1rem;",
1998
+ children: Xote__JSX.array([
1999
+ Xote__JSX.jsx(Basefn__Badge.make, {
2000
+ label: Xote.Signal.make("Small", undefined, undefined),
2001
+ variant: "Primary",
2002
+ size: "Sm"
2003
+ }),
2004
+ Xote__JSX.jsx(Basefn__Badge.make, {
2005
+ label: Xote.Signal.make("Medium", undefined, undefined),
2006
+ variant: "Primary",
2007
+ size: "Md"
2008
+ }),
2009
+ Xote__JSX.jsx(Basefn__Badge.make, {
2010
+ label: Xote.Signal.make("Large", undefined, undefined),
2011
+ variant: "Primary",
2012
+ size: "Lg"
2013
+ }),
2014
+ Xote__JSX.jsx(Basefn__Badge.make, {
2015
+ label: Xote.Signal.make("Online", undefined, undefined),
2016
+ variant: "Success",
2017
+ dot: true
2018
+ }),
2019
+ Xote__JSX.jsx(Basefn__Badge.make, {
2020
+ label: Xote.Signal.make("Away", undefined, undefined),
2021
+ variant: "Warning",
2022
+ dot: true
2023
+ })
2024
+ ])
2025
+ })
2026
+ ])
2027
+ }),
2028
+ Xote__JSX.jsx(Basefn__Separator.make, {
2029
+ orientation: "Horizontal",
2030
+ variant: "Dashed",
2031
+ label: "Spinners"
2032
+ }),
2033
+ Xote__JSX.Elements.jsxs("div", {
2034
+ style: "margin-top: 2rem;",
2035
+ children: Xote__JSX.array([
2036
+ Xote__JSX.jsx(Basefn__Typography.make, {
2037
+ text: {
2038
+ TAG: "Static",
2039
+ _0: "Spinners"
2040
+ },
2041
+ variant: "H4"
2042
+ }),
2043
+ Xote__JSX.Elements.jsx("p", {
2044
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
2045
+ children: Xote.Component.text("Loading indicators in different sizes and colors.")
2046
+ }),
2047
+ Xote__JSX.Elements.jsxs("div", {
2048
+ style: "display: flex; gap: 2rem; flex-wrap: wrap; align-items: center;",
2049
+ children: Xote__JSX.array([
2050
+ Xote__JSX.jsx(Basefn__Spinner.make, {
2051
+ size: "Sm",
2052
+ variant: "Default"
2053
+ }),
2054
+ Xote__JSX.jsx(Basefn__Spinner.make, {
2055
+ size: "Md",
2056
+ variant: "Primary"
2057
+ }),
2058
+ Xote__JSX.jsx(Basefn__Spinner.make, {
2059
+ size: "Lg",
2060
+ variant: "Secondary"
2061
+ }),
2062
+ Xote__JSX.jsx(Basefn__Spinner.make, {
2063
+ size: "Xl",
2064
+ variant: "Primary"
2065
+ })
2066
+ ])
2067
+ }),
2068
+ Xote__JSX.Elements.jsxs("div", {
2069
+ style: "display: flex; gap: 2rem; flex-wrap: wrap; margin-top: 1.5rem;",
2070
+ children: Xote__JSX.array([
2071
+ Xote__JSX.jsx(Basefn__Spinner.make, {
2072
+ size: "Md",
2073
+ variant: "Primary",
2074
+ label: "Loading..."
2075
+ }),
2076
+ Xote__JSX.jsx(Basefn__Spinner.make, {
2077
+ size: "Lg",
2078
+ variant: "Default",
2079
+ label: Xote.Signal.get(isSubmitting) ? "Submitting..." : "Ready"
2080
+ })
2081
+ ])
2082
+ })
2083
+ ])
2084
+ }),
2085
+ Xote__JSX.jsx(Basefn__Separator.make, {
2086
+ orientation: "Horizontal",
2087
+ variant: "Dotted"
2088
+ }),
2089
+ Xote__JSX.Elements.jsxs("div", {
2090
+ style: "margin-top: 2rem;",
2091
+ children: Xote__JSX.array([
2092
+ Xote__JSX.jsx(Basefn__Typography.make, {
2093
+ text: {
2094
+ TAG: "Static",
2095
+ _0: "Keyboard Shortcuts"
2096
+ },
2097
+ variant: "H4"
2098
+ }),
2099
+ Xote__JSX.Elements.jsx("p", {
2100
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
2101
+ children: Xote.Component.text("Display keyboard shortcuts in a visually appealing way.")
2102
+ }),
2103
+ Xote__JSX.Elements.jsxs("div", {
2104
+ style: "display: flex; gap: 1.5rem; flex-wrap: wrap; align-items: center;",
2105
+ children: Xote__JSX.array([
2106
+ Xote__JSX.Elements.jsxs("div", {
2107
+ children: Xote__JSX.array([
2108
+ Xote__JSX.Elements.jsx("span", {
2109
+ style: "color: #6b7280; margin-right: 0.5rem;",
2110
+ children: Xote.Component.text("Copy:")
2111
+ }),
2112
+ Xote__JSX.jsx(Basefn__Kbd.make, {
2113
+ keys: Xote.Signal.make([
2114
+ "Ctrl",
2115
+ "C"
2116
+ ], undefined, undefined),
2117
+ size: "Md"
2118
+ })
2119
+ ])
2120
+ }),
2121
+ Xote__JSX.Elements.jsxs("div", {
2122
+ children: Xote__JSX.array([
2123
+ Xote__JSX.Elements.jsx("span", {
2124
+ style: "color: #6b7280; margin-right: 0.5rem;",
2125
+ children: Xote.Component.text("Paste:")
2126
+ }),
2127
+ Xote__JSX.jsx(Basefn__Kbd.make, {
2128
+ keys: Xote.Signal.make([
2129
+ "Ctrl",
2130
+ "V"
2131
+ ], undefined, undefined),
2132
+ size: "Md"
2133
+ })
2134
+ ])
2135
+ }),
2136
+ Xote__JSX.Elements.jsxs("div", {
2137
+ children: Xote__JSX.array([
2138
+ Xote__JSX.Elements.jsx("span", {
2139
+ style: "color: #6b7280; margin-right: 0.5rem;",
2140
+ children: Xote.Component.text("Save:")
2141
+ }),
2142
+ Xote__JSX.jsx(Basefn__Kbd.make, {
2143
+ keys: Xote.Signal.make([
2144
+ "Ctrl",
2145
+ "S"
2146
+ ], undefined, undefined),
2147
+ size: "Md"
2148
+ })
2149
+ ])
2150
+ }),
2151
+ Xote__JSX.Elements.jsxs("div", {
2152
+ children: Xote__JSX.array([
2153
+ Xote__JSX.Elements.jsx("span", {
2154
+ style: "color: #6b7280; margin-right: 0.5rem;",
2155
+ children: Xote.Component.text("Select All:")
2156
+ }),
2157
+ Xote__JSX.jsx(Basefn__Kbd.make, {
2158
+ keys: Xote.Signal.make([
2159
+ "Ctrl",
2160
+ "A"
2161
+ ], undefined, undefined),
2162
+ size: "Md"
2163
+ })
2164
+ ])
2165
+ })
2166
+ ])
2167
+ }),
2168
+ Xote__JSX.Elements.jsxs("div", {
2169
+ style: "margin-top: 1rem;",
2170
+ children: Xote__JSX.array([
2171
+ Xote__JSX.jsx(Basefn__Kbd.make, {
2172
+ keys: Xote.Signal.make([
2173
+ "Shift",
2174
+ "Alt",
2175
+ "F"
2176
+ ], undefined, undefined),
2177
+ size: "Sm"
2178
+ }),
2179
+ Xote__JSX.Elements.jsx("span", {
2180
+ style: "color: #6b7280; margin-left: 0.5rem;",
2181
+ children: Xote.Component.text("Format Document")
2182
+ })
2183
+ ])
2184
+ })
2185
+ ])
2186
+ }),
2187
+ Xote__JSX.jsx(Basefn__Separator.make, {
2188
+ orientation: "Horizontal",
2189
+ variant: "Solid"
2190
+ }),
2191
+ Xote__JSX.Elements.jsxs("div", {
2192
+ style: "margin-top: 2rem;",
2193
+ children: Xote__JSX.array([
2194
+ Xote__JSX.jsx(Basefn__Typography.make, {
2195
+ text: {
2196
+ TAG: "Static",
2197
+ _0: "Typography"
2198
+ },
2199
+ variant: "H4"
2200
+ }),
2201
+ Xote__JSX.Elements.jsx("p", {
2202
+ style: "color: #6b7280; margin: 0.5rem 0 1rem 0;",
2203
+ children: Xote.Component.text("Consistent text styling across your application.")
2204
+ }),
2205
+ Xote__JSX.Elements.jsxs("div", {
2206
+ style: "display: flex; flex-direction: column; gap: 1rem;",
2207
+ children: Xote__JSX.array([
2208
+ Xote__JSX.jsx(Basefn__Typography.make, {
2209
+ text: {
2210
+ TAG: "Static",
2211
+ _0: "Heading 1"
2212
+ },
2213
+ variant: "H1"
2214
+ }),
2215
+ Xote__JSX.jsx(Basefn__Typography.make, {
2216
+ text: {
2217
+ TAG: "Static",
2218
+ _0: "Heading 2"
2219
+ },
2220
+ variant: "H2"
2221
+ }),
2222
+ Xote__JSX.jsx(Basefn__Typography.make, {
2223
+ text: {
2224
+ TAG: "Static",
2225
+ _0: "Heading 3"
2226
+ },
2227
+ variant: "H3"
2228
+ }),
2229
+ Xote__JSX.jsx(Basefn__Typography.make, {
2230
+ text: {
2231
+ TAG: "Static",
2232
+ _0: "Heading 4"
2233
+ },
2234
+ variant: "H4"
2235
+ }),
2236
+ Xote__JSX.jsx(Basefn__Typography.make, {
2237
+ text: {
2238
+ TAG: "Static",
2239
+ _0: "Heading 5"
2240
+ },
2241
+ variant: "H5"
2242
+ }),
2243
+ Xote__JSX.jsx(Basefn__Typography.make, {
2244
+ text: {
2245
+ TAG: "Static",
2246
+ _0: "Heading 6"
2247
+ },
2248
+ variant: "H6"
2249
+ }),
2250
+ Xote__JSX.jsx(Basefn__Separator.make, {
2251
+ orientation: "Horizontal",
2252
+ variant: "Dashed"
2253
+ }),
2254
+ Xote__JSX.jsx(Basefn__Typography.make, {
2255
+ text: {
2256
+ TAG: "Static",
2257
+ _0: "This is a regular paragraph with normal text styling and comfortable line height."
2258
+ },
2259
+ variant: "P"
2260
+ }),
2261
+ Xote__JSX.jsx(Basefn__Typography.make, {
2262
+ text: {
2263
+ TAG: "Static",
2264
+ _0: "This is a lead paragraph that stands out with larger text and is perfect for introductions."
2265
+ },
2266
+ variant: "Lead"
2267
+ }),
2268
+ Xote__JSX.jsx(Basefn__Typography.make, {
2269
+ text: {
2270
+ TAG: "Static",
2271
+ _0: "This is small text, useful for captions and helper text."
2272
+ },
2273
+ variant: "Small"
2274
+ }),
2275
+ Xote__JSX.jsx(Basefn__Typography.make, {
2276
+ text: {
2277
+ TAG: "Static",
2278
+ _0: "This is muted text with reduced emphasis."
2279
+ },
2280
+ variant: "Muted"
2281
+ }),
2282
+ Xote__JSX.jsx(Basefn__Typography.make, {
2283
+ text: {
2284
+ TAG: "Static",
2285
+ _0: "const hello = 'world'"
2286
+ },
2287
+ variant: "Code"
2288
+ })
2289
+ ])
2290
+ })
2291
+ ])
2292
+ }),
2293
+ Xote__JSX.Elements.jsxs("div", {
2294
+ style: "margin-top: 3rem; padding: 1rem; background-color: #f3f4f6; border-radius: 0.5rem;",
2295
+ children: Xote__JSX.array([
2296
+ Xote__JSX.Elements.jsx("h3", {
2297
+ style: "margin-top: 0; color: #374151;",
2298
+ children: Xote.Component.text("Form State (Real-time)")
2299
+ }),
2300
+ Xote__JSX.Elements.jsx("pre", {
2301
+ style: "background-color: #1f2937; color: #f9fafb; padding: 1rem; border-radius: 0.25rem; overflow-x: auto; font-size: 0.875rem;",
2302
+ children: Xote.Component.textSignal(() => `Name: ` + Xote.Signal.get(name) + `
2303
+ Email: ` + Xote.Signal.get(email) + `
2304
+ Password: ` + "*".repeat(Xote.Signal.get(password).length) + `
2305
+ Interest: ` + Xote.Signal.get(selectedOption) + `
2306
+ Color: ` + Xote.Signal.get(selectedColor) + `
2307
+ Message: ` + Xote.Signal.get(message).slice(0, 50) + (
2308
+ Xote.Signal.get(message).length > 50 ? "..." : ""
2309
+ ) + `
2310
+ Terms: ` + Stdlib_Bool.toString(Xote.Signal.get(agreeToTerms)) + `
2311
+ Newsletter: ` + Stdlib_Bool.toString(Xote.Signal.get(newsletter)))
2312
+ })
2313
+ ])
2314
+ })
2315
+ ])
2316
+ });
2317
+ }
2318
+
2319
+ let Demo = {
2320
+ make: Demo$Demo
2321
+ };
2322
+
2323
+ Xote.Component.mountById(Xote__JSX.jsx(Demo$Demo, {}), "root");
2324
+
2325
+ export {
2326
+ Demo,
2327
+ }
2328
+ /* Not a pure module */