@prestack/thread-ui 0.1.9 → 0.1.11
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.
- package/CHANGELOG.md +366 -0
- package/dist/ui/attach.js +6 -7
- package/dist/ui/compositions.d.ts +0 -2
- package/dist/ui/compositions.js +2 -112
- package/dist/ui/generators/routes.js +1 -0
- package/dist/ui/variant.d.ts +1 -3
- package/package.json +2 -2
- package/dist/ui/animations/anm_appear.ts +0 -13
- package/dist/ui/animations/anm_blur_in.ts +0 -19
- package/dist/ui/animations/anm_blur_out.ts +0 -18
- package/dist/ui/animations/anm_dismiss.ts +0 -18
- package/dist/ui/animations/anm_drop.ts +0 -19
- package/dist/ui/animations/anm_fall.ts +0 -18
- package/dist/ui/animations/anm_flash.ts +0 -18
- package/dist/ui/animations/anm_glow.ts +0 -16
- package/dist/ui/animations/anm_lift.ts +0 -16
- package/dist/ui/animations/anm_nudge.ts +0 -16
- package/dist/ui/animations/anm_pop_in.ts +0 -23
- package/dist/ui/animations/anm_pop_out.ts +0 -22
- package/dist/ui/animations/anm_press.ts +0 -12
- package/dist/ui/animations/anm_pulse.ts +0 -13
- package/dist/ui/animations/anm_rise.ts +0 -19
- package/dist/ui/animations/anm_shake.ts +0 -13
- package/dist/ui/animations/anm_slide_in_left.ts +0 -19
- package/dist/ui/animations/anm_slide_in_right.ts +0 -19
- package/dist/ui/animations/anm_slide_out_left.ts +0 -18
- package/dist/ui/animations/anm_slide_out_right.ts +0 -18
- package/dist/ui/animations/anm_spin.ts +0 -12
- package/dist/ui/animations/anm_swell.ts +0 -16
- package/dist/ui/animations/anm_wobble.ts +0 -24
- package/dist/ui/animations/anm_zoom_in.ts +0 -19
- package/dist/ui/animations/anm_zoom_out.ts +0 -18
- package/dist/ui/animations.ts +0 -308
- package/dist/ui/attach.ts +0 -553
- package/dist/ui/charts.tsx +0 -69
- package/dist/ui/checked.ts +0 -32
- package/dist/ui/collector.ts +0 -140
- package/dist/ui/compositions.ts +0 -555
- package/dist/ui/consent.ts +0 -55
- package/dist/ui/content.tsx +0 -27
- package/dist/ui/contrast.ts +0 -27
- package/dist/ui/controls.tsx +0 -25
- package/dist/ui/disclosure.tsx +0 -20
- package/dist/ui/dismiss-layer.ts +0 -87
- package/dist/ui/door.ts +0 -140
- package/dist/ui/drag.ts +0 -316
- package/dist/ui/elements/accordion.tsx +0 -47
- package/dist/ui/elements/accordion.works.ts +0 -66
- package/dist/ui/elements/aspect-ratio.tsx +0 -31
- package/dist/ui/elements/aspect-ratio.works.ts +0 -5
- package/dist/ui/elements/avatar.tsx +0 -34
- package/dist/ui/elements/avatar.works.ts +0 -16
- package/dist/ui/elements/badge.tsx +0 -33
- package/dist/ui/elements/badge.works.ts +0 -9
- package/dist/ui/elements/bars.tsx +0 -50
- package/dist/ui/elements/bars.works.ts +0 -29
- package/dist/ui/elements/box.tsx +0 -36
- package/dist/ui/elements/breadcrumb.tsx +0 -38
- package/dist/ui/elements/breadcrumb.works.ts +0 -24
- package/dist/ui/elements/button.tsx +0 -46
- package/dist/ui/elements/button.works.tsx +0 -52
- package/dist/ui/elements/column.tsx +0 -29
- package/dist/ui/elements/consent.tsx +0 -71
- package/dist/ui/elements/consent.works.tsx +0 -132
- package/dist/ui/elements/donut.tsx +0 -45
- package/dist/ui/elements/donut.works.ts +0 -42
- package/dist/ui/elements/each.tsx +0 -34
- package/dist/ui/elements/each.works.tsx +0 -82
- package/dist/ui/elements/empty.tsx +0 -33
- package/dist/ui/elements/field.tsx +0 -45
- package/dist/ui/elements/field.works.ts +0 -65
- package/dist/ui/elements/funnel.tsx +0 -50
- package/dist/ui/elements/funnel.works.ts +0 -37
- package/dist/ui/elements/gauge.tsx +0 -40
- package/dist/ui/elements/gauge.works.ts +0 -42
- package/dist/ui/elements/glyph.tsx +0 -30
- package/dist/ui/elements/glyph.works.tsx +0 -42
- package/dist/ui/elements/grid.tsx +0 -29
- package/dist/ui/elements/heatmap.tsx +0 -48
- package/dist/ui/elements/heatmap.works.ts +0 -24
- package/dist/ui/elements/hit-box.tsx +0 -47
- package/dist/ui/elements/hit-box.works.tsx +0 -576
- package/dist/ui/elements/image.tsx +0 -29
- package/dist/ui/elements/line-chart.tsx +0 -45
- package/dist/ui/elements/line-chart.works.ts +0 -41
- package/dist/ui/elements/link.tsx +0 -38
- package/dist/ui/elements/link.works.ts +0 -25
- package/dist/ui/elements/media.tsx +0 -57
- package/dist/ui/elements/menu.tsx +0 -51
- package/dist/ui/elements/menu.works.tsx +0 -154
- package/dist/ui/elements/money.tsx +0 -36
- package/dist/ui/elements/money.works.ts +0 -9
- package/dist/ui/elements/pagination.tsx +0 -39
- package/dist/ui/elements/pagination.works.ts +0 -20
- package/dist/ui/elements/progress.tsx +0 -34
- package/dist/ui/elements/progress.works.ts +0 -8
- package/dist/ui/elements/radio-group.tsx +0 -50
- package/dist/ui/elements/radio-group.works.ts +0 -33
- package/dist/ui/elements/row.tsx +0 -29
- package/dist/ui/elements/scatter.tsx +0 -42
- package/dist/ui/elements/scatter.works.ts +0 -38
- package/dist/ui/elements/select.tsx +0 -43
- package/dist/ui/elements/select.works.ts +0 -5
- package/dist/ui/elements/separator.tsx +0 -31
- package/dist/ui/elements/skeleton.tsx +0 -31
- package/dist/ui/elements/slider.tsx +0 -34
- package/dist/ui/elements/slider.works.ts +0 -5
- package/dist/ui/elements/sparkline.tsx +0 -37
- package/dist/ui/elements/sparkline.works.ts +0 -32
- package/dist/ui/elements/spinner.tsx +0 -33
- package/dist/ui/elements/stack.tsx +0 -29
- package/dist/ui/elements/stat.tsx +0 -36
- package/dist/ui/elements/stat.works.ts +0 -14
- package/dist/ui/elements/surface.tsx +0 -36
- package/dist/ui/elements/surface.works.ts +0 -9
- package/dist/ui/elements/table.tsx +0 -62
- package/dist/ui/elements/table.works.ts +0 -30
- package/dist/ui/elements/tabs.tsx +0 -47
- package/dist/ui/elements/tabs.works.ts +0 -84
- package/dist/ui/elements/text.tsx +0 -33
- package/dist/ui/elements/textarea.tsx +0 -38
- package/dist/ui/elements/textarea.works.ts +0 -5
- package/dist/ui/elements/time.tsx +0 -40
- package/dist/ui/elements/time.works.ts +0 -29
- package/dist/ui/elements/toggle.tsx +0 -34
- package/dist/ui/elements/toggle.works.ts +0 -5
- package/dist/ui/elements/tooltip.tsx +0 -40
- package/dist/ui/elements/tooltip.works.ts +0 -77
- package/dist/ui/elements/value.tsx +0 -38
- package/dist/ui/elements/value.works.ts +0 -9
- package/dist/ui/elements.ts +0 -127
- package/dist/ui/focus-scope.ts +0 -121
- package/dist/ui/fonts.ts +0 -355
- package/dist/ui/generators/dev.d.ts +0 -1
- package/dist/ui/generators/dev.js +0 -61
- package/dist/ui/generators/dev.ts +0 -74
- package/dist/ui/generators/elements.ts +0 -796
- package/dist/ui/generators/i18n.ts +0 -283
- package/dist/ui/generators/icons.ts +0 -207
- package/dist/ui/generators/react.ts +0 -267
- package/dist/ui/generators/routes.ts +0 -847
- package/dist/ui/generators/show.ts +0 -261
- package/dist/ui/generators/styles.ts +0 -677
- package/dist/ui/generators/variants.ts +0 -196
- package/dist/ui/i18n/catalogs/en.ts +0 -191
- package/dist/ui/i18n/format.ts +0 -221
- package/dist/ui/i18n/locales.ts +0 -33
- package/dist/ui/i18n/parse.ts +0 -315
- package/dist/ui/i18n/translator.ts +0 -31
- package/dist/ui/i18n/types.ts +0 -96
- package/dist/ui/icons.ts +0 -331
- package/dist/ui/islands/map.ts +0 -58
- package/dist/ui/localizations.ts +0 -75
- package/dist/ui/material.ts +0 -236
- package/dist/ui/materials/mat_bordered.ts +0 -13
- package/dist/ui/materials/mat_ceramic.ts +0 -13
- package/dist/ui/materials/mat_clay.ts +0 -13
- package/dist/ui/materials/mat_elevated.ts +0 -24
- package/dist/ui/materials/mat_flat.ts +0 -34
- package/dist/ui/materials/mat_glass.ts +0 -20
- package/dist/ui/materials/mat_lit.ts +0 -13
- package/dist/ui/materials/mat_moulded.ts +0 -11
- package/dist/ui/materials.ts +0 -197
- package/dist/ui/modes.ts +0 -44
- package/dist/ui/navigation.tsx +0 -29
- package/dist/ui/positioning.ts +0 -90
- package/dist/ui/presented.tsx +0 -119
- package/dist/ui/provider.tsx +0 -184
- package/dist/ui/render-loop.ts +0 -133
- package/dist/ui/roving-focus.ts +0 -161
- package/dist/ui/screens.ts +0 -141
- package/dist/ui/scroll-lock.ts +0 -28
- package/dist/ui/series.ts +0 -97
- package/dist/ui/signals.ts +0 -386
- package/dist/ui/styleguide.ts +0 -231
- package/dist/ui/styleguides.ts +0 -374
- package/dist/ui/themes.ts +0 -22
- package/dist/ui/token.ts +0 -78
- package/dist/ui/tokens/shadow.ts +0 -25
- package/dist/ui/tokens.ts +0 -234
- package/dist/ui/validators.ts +0 -232
- package/dist/ui/variant.ts +0 -352
- package/dist/ui/variants/var_avatar-round.ts +0 -14
- package/dist/ui/variants/var_bubble-me.ts +0 -14
- package/dist/ui/variants/var_bubble-them.ts +0 -13
- package/dist/ui/variants/var_button-border.ts +0 -76
- package/dist/ui/variants/var_button-cta.ts +0 -76
- package/dist/ui/variants/var_button-destructive-ghost.ts +0 -72
- package/dist/ui/variants/var_button-destructive.ts +0 -76
- package/dist/ui/variants/var_button-fill.ts +0 -76
- package/dist/ui/variants/var_button-ghost.ts +0 -72
- package/dist/ui/variants/var_button-glass.ts +0 -55
- package/dist/ui/variants/var_button-normal.ts +0 -76
- package/dist/ui/variants/var_button-quiet.ts +0 -74
- package/dist/ui/variants/var_card.ts +0 -17
- package/dist/ui/variants/var_chip.ts +0 -13
- package/dist/ui/variants/var_choice.ts +0 -15
- package/dist/ui/variants/var_framed.ts +0 -10
- package/dist/ui/variants/var_glyph-plain.ts +0 -11
- package/dist/ui/variants/var_input.ts +0 -43
- package/dist/ui/variants/var_link-inline.ts +0 -29
- package/dist/ui/variants/var_list-row.ts +0 -34
- package/dist/ui/variants/var_rule.ts +0 -10
- package/dist/ui/variants/var_skeleton-block.ts +0 -12
- package/dist/ui/variants/var_spinner-turning.ts +0 -12
- package/dist/ui/variants/var_stat-tile.ts +0 -13
- package/dist/ui/variants/var_tab-bar.ts +0 -15
- package/dist/ui/variants/var_tap-target.ts +0 -25
- package/dist/ui/variants.ts +0 -64
- package/dist/ui/wrappers.tsx +0 -429
package/dist/ui/checked.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { ELEMENTS } from './elements.ts'
|
|
2
|
-
import type { VARIANTS } from './variants.ts'
|
|
3
|
-
|
|
4
|
-
type Shipped = (typeof VARIANTS)['declares'][number]
|
|
5
|
-
|
|
6
|
-
export interface Wearing {}
|
|
7
|
-
|
|
8
|
-
export interface Dispatching {}
|
|
9
|
-
|
|
10
|
-
export type VariantsFor<E extends string> = Shipped extends infer One
|
|
11
|
-
? One extends { readonly id: string; readonly wears: readonly string[] }
|
|
12
|
-
? E extends One['wears'][number]
|
|
13
|
-
? Camel<One['id']>
|
|
14
|
-
: never
|
|
15
|
-
: never
|
|
16
|
-
: never
|
|
17
|
-
|
|
18
|
-
type Pascal<S extends string> = S extends `${infer Head}-${infer Rest}`
|
|
19
|
-
? `${Capitalize<Head>}${Pascal<Rest>}`
|
|
20
|
-
: Capitalize<S>
|
|
21
|
-
|
|
22
|
-
type Camel<S extends string> = S extends `${infer Head}-${infer Rest}` ? `${Head}${Pascal<Rest>}` : S
|
|
23
|
-
|
|
24
|
-
export type ArrangementElement = (typeof ELEMENTS)['derives'][number] extends infer One
|
|
25
|
-
? One extends { readonly arranges: true; readonly id: infer Id extends string }
|
|
26
|
-
? Pascal<Id>
|
|
27
|
-
: never
|
|
28
|
-
: never
|
|
29
|
-
|
|
30
|
-
export function idOf(name: string): string {
|
|
31
|
-
return name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()
|
|
32
|
-
}
|
package/dist/ui/collector.ts
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export interface ClientEvent {
|
|
4
|
-
|
|
5
|
-
readonly property: 'interaction' | 'visit' | 'consent'
|
|
6
|
-
|
|
7
|
-
readonly screen?: string
|
|
8
|
-
|
|
9
|
-
readonly element?: string
|
|
10
|
-
|
|
11
|
-
readonly name?: string
|
|
12
|
-
|
|
13
|
-
readonly action?: string
|
|
14
|
-
|
|
15
|
-
readonly refusedBy?: string
|
|
16
|
-
|
|
17
|
-
readonly attempt?: number
|
|
18
|
-
|
|
19
|
-
readonly at: number
|
|
20
|
-
|
|
21
|
-
readonly seq: number
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface CollectorOptions {
|
|
25
|
-
|
|
26
|
-
readonly endpoint: string
|
|
27
|
-
|
|
28
|
-
readonly allowed: () => boolean
|
|
29
|
-
|
|
30
|
-
readonly sample?: number
|
|
31
|
-
|
|
32
|
-
readonly maxBatch?: number
|
|
33
|
-
|
|
34
|
-
readonly intervalMs?: number
|
|
35
|
-
|
|
36
|
-
readonly now?: () => number
|
|
37
|
-
readonly random?: () => number
|
|
38
|
-
readonly fetch?: typeof globalThis.fetch
|
|
39
|
-
|
|
40
|
-
readonly beacon?: (url: string, body: string) => boolean
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type RecordedEvent = Omit<ClientEvent, 'at' | 'seq'>
|
|
44
|
-
|
|
45
|
-
export interface Collector {
|
|
46
|
-
record: (event: RecordedEvent) => void
|
|
47
|
-
flush: () => Promise<void>
|
|
48
|
-
|
|
49
|
-
stop: () => void
|
|
50
|
-
|
|
51
|
-
dropped: () => number
|
|
52
|
-
|
|
53
|
-
pending: () => number
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export const INERT_COLLECTOR: Collector = {
|
|
57
|
-
record: () => undefined,
|
|
58
|
-
flush: async () => undefined,
|
|
59
|
-
stop: () => undefined,
|
|
60
|
-
dropped: () => 0,
|
|
61
|
-
pending: () => 0,
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export function createCollector(options: CollectorOptions): Collector {
|
|
65
|
-
const now = options.now ?? (() => Date.now())
|
|
66
|
-
const random = options.random ?? Math.random
|
|
67
|
-
const maxBatch = options.maxBatch ?? 25
|
|
68
|
-
const intervalMs = options.intervalMs ?? 10_000
|
|
69
|
-
|
|
70
|
-
const sampled = (options.sample ?? 1) >= 1 || random() < (options.sample ?? 1)
|
|
71
|
-
if (!sampled) return INERT_COLLECTOR
|
|
72
|
-
|
|
73
|
-
let buffer: ClientEvent[] = []
|
|
74
|
-
let dropped = 0
|
|
75
|
-
let stopped = false
|
|
76
|
-
|
|
77
|
-
let seq = 0
|
|
78
|
-
|
|
79
|
-
const send = async (batch: readonly ClientEvent[]): Promise<void> => {
|
|
80
|
-
if (batch.length === 0) return
|
|
81
|
-
const body = JSON.stringify({ events: batch })
|
|
82
|
-
|
|
83
|
-
if (options.beacon !== undefined && options.beacon(options.endpoint, body)) return
|
|
84
|
-
|
|
85
|
-
const doFetch = options.fetch
|
|
86
|
-
if (doFetch === undefined) {
|
|
87
|
-
dropped += batch.length
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
const response = await doFetch(options.endpoint, {
|
|
93
|
-
method: 'POST',
|
|
94
|
-
headers: { 'content-type': 'application/json' },
|
|
95
|
-
|
|
96
|
-
keepalive: true,
|
|
97
|
-
body,
|
|
98
|
-
})
|
|
99
|
-
if (!response.ok) dropped += batch.length
|
|
100
|
-
} catch {
|
|
101
|
-
|
|
102
|
-
dropped += batch.length
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const flush = async (): Promise<void> => {
|
|
107
|
-
const batch = buffer
|
|
108
|
-
buffer = []
|
|
109
|
-
await send(batch)
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const record = (event: RecordedEvent): void => {
|
|
113
|
-
|
|
114
|
-
if (stopped || !options.allowed()) return
|
|
115
|
-
|
|
116
|
-
buffer.push({ ...event, at: now(), seq: ++seq })
|
|
117
|
-
if (buffer.length >= maxBatch) void flush()
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const timer = setInterval(() => void flush(), intervalMs)
|
|
121
|
-
|
|
122
|
-
;(timer as unknown as { unref?: () => void }).unref?.()
|
|
123
|
-
|
|
124
|
-
const onHide = (): void => {
|
|
125
|
-
if (globalThis.document?.visibilityState === 'hidden') void flush()
|
|
126
|
-
}
|
|
127
|
-
globalThis.document?.addEventListener('visibilitychange', onHide)
|
|
128
|
-
|
|
129
|
-
return {
|
|
130
|
-
record,
|
|
131
|
-
flush,
|
|
132
|
-
stop: () => {
|
|
133
|
-
stopped = true
|
|
134
|
-
clearInterval(timer)
|
|
135
|
-
globalThis.document?.removeEventListener('visibilitychange', onHide)
|
|
136
|
-
},
|
|
137
|
-
dropped: () => dropped,
|
|
138
|
-
pending: () => buffer.length,
|
|
139
|
-
}
|
|
140
|
-
}
|