@fuzdev/fuz_app 0.8.0 → 0.9.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.
@@ -1 +1 @@
1
- {"version":3,"file":"action_codegen.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/actions/action_codegen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,eAAe,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAKxE;;GAEG;AACH,UAAU,UAAU;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;;IACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAa;IAE1D;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQrC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAOrD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAgCtD;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;CAqDb;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC/B,MAAM,eAAe,EACrB,UAAU,UAAU,GAAG,SAAS,KAC9B,KAAK,CAAC,gBAAgB,CA4DxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GACnC,MAAM,eAAe,EACrB,OAAO,gBAAgB,EACvB,SAAS,aAAa,EACtB,aAAa,MAAM,KACjB,MAkBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GACnC,MAAM,eAAe,EACrB,UAAU,UAAU,GAAG,SAAS,EAChC,SAAS,aAAa,KACpB,MA+BF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,MACU,CAAC"}
1
+ {"version":3,"file":"action_codegen.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/actions/action_codegen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,eAAe,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAKxE;;GAEG;AACH,UAAU,UAAU;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;;IACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAa;IAE1D;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQrC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAOrD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;IAgCtD;;;OAGG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;;OAGG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;CAqDb;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC/B,MAAM,eAAe,EACrB,UAAU,UAAU,GAAG,SAAS,KAC9B,KAAK,CAAC,gBAAgB,CA4DxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GACnC,MAAM,eAAe,EACrB,OAAO,gBAAgB,EACvB,SAAS,aAAa,EACtB,aAAa,MAAM,KACjB,MAkBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GACnC,MAAM,eAAe,EACrB,UAAU,UAAU,GAAG,SAAS,EAChC,SAAS,aAAa,KACpB,MAyBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,aAAa,MAAM,KAAG,MACU,CAAC"}
@@ -257,18 +257,13 @@ export const generate_phase_handlers = (spec, executor, imports) => {
257
257
  // Backend types file is in server/ subdirectory, so needs different relative paths
258
258
  const path_prefix = executor === 'frontend' ? './' : '../';
259
259
  imports.add_type(`${path_prefix}action_event.js`, 'ActionEvent');
260
- // Add environment type import
261
- const environment_type = executor === 'frontend' ? 'Frontend' : 'Backend';
262
- const environment_module = executor === 'frontend' ? './frontend.svelte.js' : './backend.js';
263
- imports.add_type(environment_module, environment_type);
264
260
  // Generate handler definitions for each phase
265
261
  const phase_handlers = phases
266
262
  .map((phase) => {
267
263
  // Pass imports to get_handler_return_type so it can add necessary imports
268
264
  const return_type = get_handler_return_type(spec, phase, imports, path_prefix);
269
- // Use the new type parameter approach
270
265
  return `${phase}?: (
271
- action_event: ActionEvent<'${method}', ${environment_type}, '${phase}', 'handling'>
266
+ action_event: ActionEvent<'${method}', '${phase}', 'handling'>
272
267
  ) => ${return_type}`;
273
268
  })
274
269
  .join(';\n\t\t');
@@ -67,20 +67,20 @@
67
67
  <!-- TODO: panels will be user-draggable/rearrangeable, hardcoded order for now -->
68
68
  <div class="overview">
69
69
  <section>
70
- <div class="panel_header">
70
+ <div class="panel-header">
71
71
  <h3>accounts</h3>
72
72
  <a href={resolve('/admin/accounts' as any)} class="text_50 font_size_sm">view all &rarr;</a>
73
73
  </div>
74
74
  {#if accounts.loading}
75
75
  <p class="text_50">loading...</p>
76
76
  {:else if accounts.error}
77
- <p class="color_c">{accounts.error}</p>
77
+ <p class="color_c_50">{accounts.error}</p>
78
78
  {:else}
79
- <div class="baseline_row gap_xs">
79
+ <div class="baseline-row gap_xs">
80
80
  <strong class="font_size_lg">{accounts.account_count}</strong>
81
81
  <span class="text_50">accounts</span>
82
82
  </div>
83
- <div class="baseline_row gap_xs flex-wrap:wrap font_size_sm mt_xs">
83
+ <div class="baseline-row gap_xs flex-wrap:wrap font_size_sm mt_xs">
84
84
  {#each role_counts as [role, count] (role)}
85
85
  <span>{count} {role}</span>
86
86
  <span class="text_50">&middot;</span>
@@ -88,7 +88,7 @@
88
88
  <span>{unroled_count} unroled</span>
89
89
  </div>
90
90
  {#if accounts.accounts.length > 0}
91
- <ul class="compact_list">
91
+ <ul class="compact-list">
92
92
  {#each accounts.accounts.slice(0, 6) as entry (entry)}
93
93
  <li>
94
94
  <strong>{entry.account.username}</strong>
@@ -109,25 +109,25 @@
109
109
  </section>
110
110
 
111
111
  <section>
112
- <div class="panel_header">
112
+ <div class="panel-header">
113
113
  <h3>sessions</h3>
114
114
  <a href={resolve('/admin/sessions' as any)} class="text_50 font_size_sm">view all &rarr;</a>
115
115
  </div>
116
116
  {#if sessions.loading}
117
117
  <p class="text_50">loading...</p>
118
118
  {:else if sessions.error}
119
- <p class="color_c">{sessions.error}</p>
119
+ <p class="color_c_50">{sessions.error}</p>
120
120
  {:else}
121
- <div class="baseline_row gap_xs">
121
+ <div class="baseline-row gap_xs">
122
122
  <strong class="font_size_lg">{sessions.active_count}</strong>
123
123
  <span class="text_50">active</span>
124
124
  </div>
125
- <div class="baseline_row gap_xs">
125
+ <div class="baseline-row gap_xs">
126
126
  <strong class="font_size_lg">{unique_users}</strong>
127
127
  <span class="text_50">unique users</span>
128
128
  </div>
129
129
  {#if most_recent}
130
- <div class="baseline_row gap_xs font_size_sm mt_sm">
130
+ <div class="baseline-row gap_xs font_size_sm mt_sm">
131
131
  <span class="text_50">last active:</span>
132
132
  <strong>{most_recent.username}</strong>
133
133
  <span class="text_50" title={format_datetime_local(most_recent.last_seen_at)}
@@ -139,16 +139,16 @@
139
139
  </section>
140
140
 
141
141
  <section>
142
- <div class="panel_header">
142
+ <div class="panel-header">
143
143
  <h3>invites</h3>
144
144
  <a href={resolve('/admin/invites' as any)} class="text_50 font_size_sm">view all &rarr;</a>
145
145
  </div>
146
146
  {#if invites.loading}
147
147
  <p class="text_50">loading...</p>
148
148
  {:else if invites.error}
149
- <p class="color_c">{invites.error}</p>
149
+ <p class="color_c_50">{invites.error}</p>
150
150
  {:else}
151
- <div class="baseline_row gap_sm">
151
+ <div class="baseline-row gap_sm">
152
152
  <span class="text_50">public signup</span>
153
153
  {#if app_settings.settings?.open_signup}
154
154
  <span class="chip color_b">open</span>
@@ -156,7 +156,7 @@
156
156
  <span class="chip">closed</span>
157
157
  {/if}
158
158
  </div>
159
- <div class="baseline_row gap_xs">
159
+ <div class="baseline-row gap_xs">
160
160
  <strong class="font_size_lg">{invites.unclaimed_count}</strong>
161
161
  <span class="text_50">unclaimed</span>
162
162
  <span class="text_50">/</span>
@@ -164,7 +164,7 @@
164
164
  <span class="text_50">total</span>
165
165
  </div>
166
166
  {#if invites.invites.length > 0}
167
- <ul class="compact_list">
167
+ <ul class="compact-list">
168
168
  {#each invites.invites.slice(0, 4) as invite (invite.id)}
169
169
  <li>
170
170
  <span>{invite.email || invite.username || '—'}</span>
@@ -184,18 +184,18 @@
184
184
  </section>
185
185
 
186
186
  <section>
187
- <div class="panel_header">
187
+ <div class="panel-header">
188
188
  <h3>recent activity</h3>
189
189
  <a href={resolve('/admin/audit-log' as any)} class="text_50 font_size_sm">view all &rarr;</a>
190
190
  </div>
191
191
  {#if audit_log.loading}
192
192
  <p class="text_50">loading...</p>
193
193
  {:else if audit_log.error}
194
- <p class="color_c">{audit_log.error}</p>
194
+ <p class="color_c_50">{audit_log.error}</p>
195
195
  {:else if recent_events.length === 0}
196
196
  <p class="text_50">no events</p>
197
197
  {:else}
198
- <ul class="compact_list">
198
+ <ul class="compact-list">
199
199
  {#each recent_events as event (event.id)}
200
200
  <li>
201
201
  <span class="text_50 font_size_sm" title={format_datetime_local(event.created_at)}
@@ -212,27 +212,27 @@
212
212
  </section>
213
213
 
214
214
  <section>
215
- <div class="panel_header">
215
+ <div class="panel-header">
216
216
  <h3>security</h3>
217
217
  <a href={resolve('/admin/audit-log' as any)} class="text_50 font_size_sm">audit log &rarr;</a>
218
218
  </div>
219
219
  {#if audit_log.loading}
220
220
  <p class="text_50">loading...</p>
221
221
  {:else if audit_log.error}
222
- <p class="color_c">{audit_log.error}</p>
222
+ <p class="color_c_50">{audit_log.error}</p>
223
223
  {:else}
224
- <div class="baseline_row gap_xs">
225
- <strong class="font_size_lg" class:color_c={failed_logins.length > 0}>
224
+ <div class="baseline-row gap_xs">
225
+ <strong class="font_size_lg" class:color_c_50={failed_logins.length > 0}>
226
226
  {failed_logins.length}
227
227
  </strong>
228
228
  <span class="text_50">failed logins</span>
229
229
  </div>
230
- <div class="baseline_row gap_xs">
230
+ <div class="baseline-row gap_xs">
231
231
  <strong class="font_size_lg">{permit_changes.length}</strong>
232
232
  <span class="text_50">permit changes</span>
233
233
  </div>
234
234
  {#if permit_changes.length > 0}
235
- <ul class="compact_list">
235
+ <ul class="compact-list">
236
236
  {#each permit_changes.slice(0, 4) as event (event.id)}
237
237
  <li class="font_size_sm">
238
238
  <span class="text_50" title={format_datetime_local(event.created_at)}
@@ -250,15 +250,15 @@
250
250
  </section>
251
251
 
252
252
  <section>
253
- <div class="panel_header">
253
+ <div class="panel-header">
254
254
  <h3>system</h3>
255
255
  </div>
256
256
  {#if app_settings.loading}
257
257
  <p class="text_50">loading...</p>
258
258
  {:else if app_settings.error}
259
- <p class="color_c">{app_settings.error}</p>
259
+ <p class="color_c_50">{app_settings.error}</p>
260
260
  {:else}
261
- <div class="baseline_row gap_sm">
261
+ <div class="baseline-row gap_sm">
262
262
  <span class="text_50">public signup</span>
263
263
  {#if app_settings.settings?.open_signup}
264
264
  <span class="chip color_b">open</span>
@@ -267,7 +267,7 @@
267
267
  {/if}
268
268
  </div>
269
269
  {#if app_settings.settings?.updated_at}
270
- <div class="baseline_row gap_xs font_size_sm mt_xs">
270
+ <div class="baseline-row gap_xs font_size_sm mt_xs">
271
271
  <span class="text_50">last changed:</span>
272
272
  <span title={format_datetime_local(app_settings.settings.updated_at)}>
273
273
  {format_relative_time(app_settings.settings.updated_at)}
@@ -280,7 +280,7 @@
280
280
  {/if}
281
281
  {/if}
282
282
  {#if auth_state.account}
283
- <div class="baseline_row gap_sm">
283
+ <div class="baseline-row gap_sm">
284
284
  <span class="text_50">logged in as</span>
285
285
  <strong>{auth_state.account.username}</strong>
286
286
  </div>
@@ -310,25 +310,25 @@
310
310
  gap: var(--space_lg);
311
311
  }
312
312
 
313
- .panel_header {
313
+ .panel-header {
314
314
  display: flex;
315
315
  justify-content: space-between;
316
316
  align-items: baseline;
317
317
  margin-bottom: var(--space_md);
318
318
  }
319
319
 
320
- .baseline_row {
320
+ .baseline-row {
321
321
  display: flex;
322
322
  align-items: baseline;
323
323
  }
324
324
 
325
- .compact_list {
325
+ .compact-list {
326
326
  list-style: none;
327
327
  padding: 0;
328
328
  margin: var(--space_sm) 0 0;
329
329
  }
330
330
 
331
- .compact_list li {
331
+ .compact-list li {
332
332
  display: flex;
333
333
  align-items: baseline;
334
334
  gap: var(--space_xs);
@@ -15,29 +15,29 @@
15
15
  } = $props();
16
16
  </script>
17
17
 
18
- <div class="column_layout {class_name}" style:--column_width={column_width} {...rest}>
19
- <aside class="column_fixed unstyled">
18
+ <div class="column-layout {class_name}" style:--column_width={column_width} {...rest}>
19
+ <aside class="column-fixed unstyled">
20
20
  {@render aside()}
21
21
  </aside>
22
- <div class="column_fluid">
22
+ <div class="column-fluid">
23
23
  {@render children()}
24
24
  </div>
25
25
  </div>
26
26
 
27
27
  <style>
28
- .column_layout {
28
+ .column-layout {
29
29
  display: flex;
30
30
  height: 100%;
31
31
  }
32
32
 
33
- .column_fixed {
33
+ .column-fixed {
34
34
  width: var(--column_width, 280px);
35
35
  min-width: var(--column_width, 280px);
36
36
  height: 100%;
37
37
  overflow: auto;
38
38
  }
39
39
 
40
- .column_fluid {
40
+ .column-fluid {
41
41
  flex: 1;
42
42
  height: 100%;
43
43
  min-width: 0;
@@ -78,16 +78,16 @@
78
78
  aria-rowcount={rows.length + 1}
79
79
  >
80
80
  <!-- sticky header -->
81
- <div class="datatable_header" role="row" aria-rowindex={1}>
81
+ <div class="datatable-header" role="row" aria-rowindex={1}>
82
82
  {#each columns as column, i (column.key)}
83
- <div class="datatable_header_cell" role="columnheader">
83
+ <div class="datatable-header-cell" role="columnheader">
84
84
  {#if header}
85
85
  {@render header(column)}
86
86
  {:else}
87
87
  {column.label}
88
88
  {/if}
89
89
  <div
90
- class="datatable_resize_handle"
90
+ class="datatable-resize-handle"
91
91
  role="separator"
92
92
  onpointerdown={(e) => handle_resize_start(e, i)}
93
93
  onpointermove={handle_resize_move}
@@ -98,7 +98,7 @@
98
98
  </div>
99
99
 
100
100
  {#if rows.length === 0}
101
- <div class="datatable_empty">
101
+ <div class="datatable-empty">
102
102
  {#if empty}
103
103
  {@render empty()}
104
104
  {:else}
@@ -107,9 +107,9 @@
107
107
  </div>
108
108
  {:else}
109
109
  {#each rows as row, i (row[row_key] ?? i)}
110
- <div class="datatable_row" role="row" aria-rowindex={i + 2}>
110
+ <div class="datatable-row" role="row" aria-rowindex={i + 2}>
111
111
  {#each columns as column (column.key)}
112
- <div class="datatable_cell" role="gridcell">
112
+ <div class="datatable-cell" role="gridcell">
113
113
  {#if cell}
114
114
  {@render cell(column, row, row[column.key])}
115
115
  {:else if column.format}
@@ -131,7 +131,7 @@
131
131
  overflow: auto;
132
132
  }
133
133
 
134
- .datatable_header {
134
+ .datatable-header {
135
135
  display: grid;
136
136
  grid-column: 1 / -1;
137
137
  grid-template-columns: subgrid;
@@ -142,7 +142,7 @@
142
142
  border-bottom: var(--border_width, 1px) solid var(--border_color);
143
143
  }
144
144
 
145
- .datatable_header_cell {
145
+ .datatable-header-cell {
146
146
  position: relative;
147
147
  display: flex;
148
148
  align-items: center;
@@ -150,7 +150,7 @@
150
150
  font-weight: 600;
151
151
  }
152
152
 
153
- .datatable_resize_handle {
153
+ .datatable-resize-handle {
154
154
  position: absolute;
155
155
  top: 0;
156
156
  right: 0;
@@ -159,11 +159,11 @@
159
159
  cursor: col-resize;
160
160
  }
161
161
 
162
- .datatable_resize_handle:hover {
163
- background: var(--color_a_5);
162
+ .datatable-resize-handle:hover {
163
+ background: var(--color_a_10);
164
164
  }
165
165
 
166
- .datatable_row {
166
+ .datatable-row {
167
167
  display: grid;
168
168
  grid-column: 1 / -1;
169
169
  grid-template-columns: subgrid;
@@ -172,13 +172,13 @@
172
172
  border-bottom: var(--border_width, 1px) solid var(--border_color);
173
173
  }
174
174
 
175
- .datatable_cell {
175
+ .datatable-cell {
176
176
  padding: var(--space_xs);
177
177
  min-width: 0; /* override grid auto minimum to respect column widths */
178
178
  overflow-wrap: break-word;
179
179
  }
180
180
 
181
- .datatable_empty {
181
+ .datatable-empty {
182
182
  grid-column: 1 / -1;
183
183
  padding: var(--space_lg);
184
184
  }
@@ -6,7 +6,7 @@
6
6
  void app_settings.fetch();
7
7
  </script>
8
8
 
9
- <div class="open_signup_toggle">
9
+ <div class="open-signup-toggle">
10
10
  {#if app_settings.loading}
11
11
  <p class="text_50">loading settings...</p>
12
12
  {:else if app_settings.settings}
@@ -4,11 +4,7 @@
4
4
  import type {AppSurface, AppSurfaceRoute, AppSurfaceDiagnostic} from '../http/surface.js';
5
5
  import {surface_auth_summary, format_route_key} from '../http/surface_query.js';
6
6
 
7
- interface Props {
8
- surface: AppSurface;
9
- }
10
-
11
- const {surface}: Props = $props();
7
+ const {surface}: {surface: AppSurface} = $props();
12
8
 
13
9
  const auth_types = ['all', 'none', 'authenticated', 'role', 'keeper'] as const;
14
10
 
@@ -1,8 +1,8 @@
1
1
  import type { AppSurface } from '../http/surface.js';
2
- interface Props {
2
+ type $$ComponentProps = {
3
3
  surface: AppSurface;
4
- }
5
- declare const SurfaceExplorer: import("svelte").Component<Props, {}, "">;
4
+ };
5
+ declare const SurfaceExplorer: import("svelte").Component<$$ComponentProps, {}, "">;
6
6
  type SurfaceExplorer = ReturnType<typeof SurfaceExplorer>;
7
7
  export default SurfaceExplorer;
8
8
  //# sourceMappingURL=SurfaceExplorer.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SurfaceExplorer.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/SurfaceExplorer.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAwC,MAAM,oBAAoB,CAAC;AAIzF,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,CAAC;CACpB;AAuRF,QAAA,MAAM,eAAe,2CAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SurfaceExplorer.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/SurfaceExplorer.svelte"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAwC,MAAM,oBAAoB,CAAC;AAGzF,KAAK,gBAAgB,GAAI;IAAC,OAAO,EAAE,UAAU,CAAA;CAAC,CAAC;AAsRhD,QAAA,MAAM,eAAe,sDAAwC,CAAC;AAC9D,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;AAC1D,eAAe,eAAe,CAAC"}
@@ -32,6 +32,15 @@
32
32
  * @module
33
33
  */
34
34
  import { type Permit, type SessionAccount } from '../auth/account_schema.js';
35
+ /**
36
+ * Svelte context for `AuthState`.
37
+ * Use `auth_state_context.set(state)` in the provider and `auth_state_context.get()` to access.
38
+ */
39
+ export declare const auth_state_context: {
40
+ get: (error_message?: string) => AuthState;
41
+ get_maybe: () => AuthState | undefined;
42
+ set: (value: AuthState) => AuthState;
43
+ };
35
44
  export declare class AuthState {
36
45
  verifying: boolean;
37
46
  verified: boolean;
@@ -73,13 +82,4 @@ export declare class AuthState {
73
82
  */
74
83
  logout(): Promise<void>;
75
84
  }
76
- /**
77
- * Svelte context for `AuthState`.
78
- * Use `auth_state_context.set(state)` in the provider and `auth_state_context.get()` to access.
79
- */
80
- export declare const auth_state_context: {
81
- get: (error_message?: string) => AuthState;
82
- get_maybe: () => AuthState | undefined;
83
- set: (value: AuthState) => AuthState;
84
- };
85
85
  //# sourceMappingURL=auth_state.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/auth_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,EAAC,KAAK,MAAM,EAAoB,KAAK,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAE7F,qBAAa,SAAS;IACrB,SAAS,UAAqB;IAC9B,QAAQ,UAAqB;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAoB;IAC/C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAoB;IAClD,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAkB;IACxC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAEpC;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoD;IAEjF,gEAAgE;IAChE,eAAe,UAAqB;IAEpC;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC;;;;OAIG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCjE;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCpF;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4ClF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;CAA8B,CAAC"}
1
+ {"version":3,"file":"auth_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/auth_state.svelte.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAKH,OAAO,EAAC,KAAK,MAAM,EAAoB,KAAK,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAE7F;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;CAA8B,CAAC;AAE9D,qBAAa,SAAS;IACrB,SAAS,UAAqB;IAC9B,QAAQ,UAAqB;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAoB;IAC/C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAoB;IAClD,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAkB;IACxC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAEpC;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAoD;IAEjF,gEAAgE;IAChE,eAAe,UAAqB;IAEpC;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BpC;;;;OAIG;IACG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAwCjE;;;;OAIG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiCpF;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4ClF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAU7B"}
@@ -34,6 +34,11 @@
34
34
  import { create_context } from '@fuzdev/fuz_ui/context_helpers.js';
35
35
  import { ui_fetch } from './ui_fetch.js';
36
36
  import { is_permit_active } from '../auth/account_schema.js';
37
+ /**
38
+ * Svelte context for `AuthState`.
39
+ * Use `auth_state_context.set(state)` in the provider and `auth_state_context.get()` to access.
40
+ */
41
+ export const auth_state_context = create_context();
37
42
  export class AuthState {
38
43
  verifying = $state.raw(false);
39
44
  verified = $state.raw(false);
@@ -231,8 +236,3 @@ export class AuthState {
231
236
  this.permits = [];
232
237
  }
233
238
  }
234
- /**
235
- * Svelte context for `AuthState`.
236
- * Use `auth_state_context.set(state)` in the provider and `auth_state_context.get()` to access.
237
- */
238
- export const auth_state_context = create_context();
@@ -1,3 +1,8 @@
1
+ export declare const sidebar_state_context: {
2
+ get: (error_message?: string) => () => SidebarState;
3
+ get_maybe: () => (() => SidebarState) | undefined;
4
+ set: (value: () => SidebarState) => () => SidebarState;
5
+ };
1
6
  /**
2
7
  * Options for configuring a `SidebarState`.
3
8
  *
@@ -22,9 +27,4 @@ export declare class SidebarState {
22
27
  */
23
28
  activate(): () => void;
24
29
  }
25
- export declare const sidebar_state_context: {
26
- get: (error_message?: string) => () => SidebarState;
27
- get_maybe: () => (() => SidebarState) | undefined;
28
- set: (value: () => SidebarState) => () => SidebarState;
29
- };
30
30
  //# sourceMappingURL=sidebar_state.svelte.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/sidebar_state.svelte.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACxB;AAED,qBAAa,YAAY;;IAKxB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAE9B;gBAEW,OAAO,CAAC,EAAE,mBAAmB;IAIzC,cAAc,CAAC,KAAK,GAAE,OAA4B,GAAG,IAAI;IAIzD;;;OAGG;IACH,QAAQ,IAAI,MAAM,IAAI;CAQtB;AAED,eAAO,MAAM,qBAAqB;2CAAwB,YAAY;4BAAZ,YAAY;uBAAZ,YAAY,WAAZ,YAAY;CAAG,CAAC"}
1
+ {"version":3,"file":"sidebar_state.svelte.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/ui/sidebar_state.svelte.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB;2CAAwB,YAAY;4BAAZ,YAAY;uBAAZ,YAAY,WAAZ,YAAY;CAAG,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;CACxB;AAED,qBAAa,YAAY;;IAKxB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAE9B;gBAEW,OAAO,CAAC,EAAE,mBAAmB;IAIzC,cAAc,CAAC,KAAK,GAAE,OAA4B,GAAG,IAAI;IAIzD;;;OAGG;IACH,QAAQ,IAAI,MAAM,IAAI;CAQtB"}
@@ -1,4 +1,5 @@
1
1
  import { create_context } from '@fuzdev/fuz_ui/context_helpers.js';
2
+ export const sidebar_state_context = create_context();
2
3
  export class SidebarState {
3
4
  #get_enabled;
4
5
  #enabled = $state.raw(true);
@@ -36,4 +37,3 @@ export class SidebarState {
36
37
  };
37
38
  }
38
39
  }
39
- export const sidebar_state_context = create_context();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuzdev/fuz_app",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "fullstack app library",
5
5
  "glyph": "🗝",
6
6
  "logo": "logo.svg",
@@ -46,7 +46,7 @@
46
46
  "@fuzdev/fuz_code": "^0.45.1",
47
47
  "@fuzdev/fuz_css": "^0.58.0",
48
48
  "@fuzdev/fuz_ui": "^0.191.2",
49
- "@fuzdev/fuz_util": "^0.55.0",
49
+ "@fuzdev/fuz_util": "^0.56.0",
50
50
  "@fuzdev/gro": "^0.197.3",
51
51
  "@jridgewell/trace-mapping": "^0.3.31",
52
52
  "@node-rs/argon2": "^2.0.2",