cursedbelt 5.46.2 → 5.47.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.
- package/dist/react/charts/IntervalTimeline.d.ts.map +1 -1
- package/dist/react/charts/IntervalTimeline.js +2 -2
- package/dist/react/charts/IntervalTimeline.js.map +1 -1
- package/dist/react/chat/DateMarker.d.ts +4 -0
- package/dist/react/chat/DateMarker.d.ts.map +1 -1
- package/dist/react/chat/DateMarker.js +15 -2
- package/dist/react/chat/DateMarker.js.map +1 -1
- package/dist/react/components/Button.d.ts.map +1 -1
- package/dist/react/components/Button.js +5 -0
- package/dist/react/components/Button.js.map +1 -1
- package/dist/react/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/react/components/DataTable/DataTable.js +1 -1
- package/dist/react/components/DataTable/DataTable.js.map +1 -1
- package/dist/react/components/DataTable/SortHeader.d.ts +4 -1
- package/dist/react/components/DataTable/SortHeader.d.ts.map +1 -1
- package/dist/react/components/DataTable/SortHeader.js +22 -5
- package/dist/react/components/DataTable/SortHeader.js.map +1 -1
- package/dist/react/components/DataTable/types.d.ts +10 -0
- package/dist/react/components/DataTable/types.d.ts.map +1 -1
- package/dist/react/components/DataTable/types.js.map +1 -1
- package/dist/react/components/DropdownMenu.js +10 -4
- package/dist/react/components/DropdownMenu.js.map +1 -1
- package/dist/react/components/Field.d.ts +9 -1
- package/dist/react/components/Field.d.ts.map +1 -1
- package/dist/react/components/Field.js +3 -3
- package/dist/react/components/Field.js.map +1 -1
- package/dist/react/components/SecretInput.d.ts +4 -2
- package/dist/react/components/SecretInput.d.ts.map +1 -1
- package/dist/react/components/SecretInput.js +2 -2
- package/dist/react/components/SecretInput.js.map +1 -1
- package/dist/react/components/auth/AuthCard.d.ts.map +1 -1
- package/dist/react/components/auth/AuthCard.js +5 -1
- package/dist/react/components/auth/AuthCard.js.map +1 -1
- package/dist/react/components/auth/PasswordSetFields.d.ts.map +1 -1
- package/dist/react/components/auth/PasswordSetFields.js +2 -2
- package/dist/react/components/auth/PasswordSetFields.js.map +1 -1
- package/dist/react/components/auth/PasswordStrengthMeter.d.ts.map +1 -1
- package/dist/react/components/auth/PasswordStrengthMeter.js +3 -1
- package/dist/react/components/auth/PasswordStrengthMeter.js.map +1 -1
- package/dist/react/components/auth/RegisterForm.js +1 -1
- package/dist/react/components/auth/RegisterForm.js.map +1 -1
- package/dist/react/components/auth/SignupForm.d.ts.map +1 -1
- package/dist/react/components/auth/SignupForm.js +4 -2
- package/dist/react/components/auth/SignupForm.js.map +1 -1
- package/dist/react/components/auth/TotpEntry.d.ts.map +1 -1
- package/dist/react/components/auth/TotpEntry.js +18 -1
- package/dist/react/components/auth/TotpEntry.js.map +1 -1
- package/dist/react/components/auth/fields.d.ts +3 -1
- package/dist/react/components/auth/fields.d.ts.map +1 -1
- package/dist/react/components/auth/fields.js +6 -2
- package/dist/react/components/auth/fields.js.map +1 -1
- package/dist/react/components/calendar/DayAgenda.d.ts.map +1 -1
- package/dist/react/components/calendar/DayAgenda.js +4 -2
- package/dist/react/components/calendar/DayAgenda.js.map +1 -1
- package/dist/react/components/calendar/EventChip.d.ts +5 -1
- package/dist/react/components/calendar/EventChip.d.ts.map +1 -1
- package/dist/react/components/calendar/EventChip.js +10 -3
- package/dist/react/components/calendar/EventChip.js.map +1 -1
- package/dist/react/components/calendar/MonthGrid.js +1 -1
- package/dist/react/components/calendar/MonthGrid.js.map +1 -1
- package/dist/react/components/calendar/WeekView.d.ts.map +1 -1
- package/dist/react/components/calendar/WeekView.js +2 -2
- package/dist/react/components/calendar/WeekView.js.map +1 -1
- package/dist/react/components/calendar/colorUtils.d.ts.map +1 -1
- package/dist/react/components/calendar/colorUtils.js +13 -11
- package/dist/react/components/calendar/colorUtils.js.map +1 -1
- package/dist/react/components/fieldErrorText.d.ts +12 -0
- package/dist/react/components/fieldErrorText.d.ts.map +1 -0
- package/dist/react/components/fieldErrorText.js +12 -0
- package/dist/react/components/fieldErrorText.js.map +1 -0
- package/dist/react/deep-link/resume.d.ts.map +1 -1
- package/dist/react/deep-link/resume.js +9 -2
- package/dist/react/deep-link/resume.js.map +1 -1
- package/dist/react/file-tree/FileTree.d.ts +3 -0
- package/dist/react/file-tree/FileTree.d.ts.map +1 -1
- package/dist/react/file-tree/FileTree.js +12 -1
- package/dist/react/file-tree/FileTree.js.map +1 -1
- package/dist/react/file-tree/FolderViewMenus.d.ts +3 -1
- package/dist/react/file-tree/FolderViewMenus.d.ts.map +1 -1
- package/dist/react/file-tree/FolderViewMenus.js +51 -15
- package/dist/react/file-tree/FolderViewMenus.js.map +1 -1
- package/dist/react/file-tree/folderView.d.ts +25 -4
- package/dist/react/file-tree/folderView.d.ts.map +1 -1
- package/dist/react/file-tree/folderView.js +49 -9
- package/dist/react/file-tree/folderView.js.map +1 -1
- package/dist/react/file-tree/index.d.ts +2 -1
- package/dist/react/file-tree/index.d.ts.map +1 -1
- package/dist/react/file-tree/index.js +2 -1
- package/dist/react/file-tree/index.js.map +1 -1
- package/dist/react/file-tree/useFolderView.d.ts +34 -4
- package/dist/react/file-tree/useFolderView.d.ts.map +1 -1
- package/dist/react/file-tree/useFolderView.js +43 -11
- package/dist/react/file-tree/useFolderView.js.map +1 -1
- package/dist/styles-areas/analytics.css +26 -25
- package/dist/styles-areas/calendar.css +4 -4
- package/dist/styles-areas/data-table.css +26 -25
- package/dist/styles-utilities.css +24 -9
- package/package.json +5 -1
- package/scripts/demoCoverage.spec.ts +33 -0
- package/scripts/demoCoverage.ts +124 -0
- package/src/react/charts/IntervalTimeline.tsx +6 -4
- package/src/react/chat/DateMarker.tsx +22 -6
- package/src/react/chat/MessageThread.spec.tsx +25 -1
- package/src/react/components/Button.spec.tsx +11 -0
- package/src/react/components/Button.tsx +5 -0
- package/src/react/components/DataTable/DataTable.spec.tsx +43 -0
- package/src/react/components/DataTable/DataTable.tsx +1 -0
- package/src/react/components/DataTable/SortHeader.tsx +45 -5
- package/src/react/components/DataTable/types.ts +10 -0
- package/src/react/components/DropdownMenu.spec.tsx +26 -0
- package/src/react/components/DropdownMenu.tsx +10 -3
- package/src/react/components/Field.spec.tsx +24 -0
- package/src/react/components/Field.tsx +15 -5
- package/src/react/components/SecretInput.tsx +5 -1
- package/src/react/components/auth/AuthCard.spec.tsx +8 -0
- package/src/react/components/auth/AuthCard.tsx +4 -1
- package/src/react/components/auth/PasswordSetFields.tsx +7 -11
- package/src/react/components/auth/PasswordStrengthMeter.tsx +5 -3
- package/src/react/components/auth/RegisterForm.tsx +6 -6
- package/src/react/components/auth/SignupForm.spec.tsx +17 -0
- package/src/react/components/auth/SignupForm.tsx +11 -10
- package/src/react/components/auth/TotpEntry.spec.tsx +27 -0
- package/src/react/components/auth/TotpEntry.tsx +18 -1
- package/src/react/components/auth/fields.tsx +8 -1
- package/src/react/components/calendar/DayAgenda.spec.tsx +9 -0
- package/src/react/components/calendar/DayAgenda.tsx +5 -2
- package/src/react/components/calendar/EventChip.spec.tsx +12 -8
- package/src/react/components/calendar/EventChip.tsx +11 -6
- package/src/react/components/calendar/MonthGrid.tsx +1 -1
- package/src/react/components/calendar/WeekView.tsx +5 -3
- package/src/react/components/calendar/colorUtils.ts +13 -11
- package/src/react/components/fieldErrorText.tsx +17 -0
- package/src/react/deep-link/resume.spec.tsx +16 -0
- package/src/react/deep-link/resume.ts +9 -2
- package/src/react/file-tree/FileTree.tsx +14 -1
- package/src/react/file-tree/FolderViewMenus.tsx +57 -17
- package/src/react/file-tree/folderView.spec.ts +63 -1
- package/src/react/file-tree/folderView.ts +63 -12
- package/src/react/file-tree/folderViewTree.spec.tsx +111 -16
- package/src/react/file-tree/index.ts +15 -1
- package/src/react/file-tree/useFolderView.ts +73 -12
- package/src/styles-areas/analytics.css +26 -25
- package/src/styles-areas/calendar.css +4 -4
- package/src/styles-areas/data-table.css +26 -25
- package/src/styles-utilities.css +24 -9
|
@@ -17,6 +17,13 @@
|
|
|
17
17
|
* announced — *"Hiding or showing by tag can be stored per machine, so viewing the 'home'
|
|
18
18
|
* tag at home doesn't change my work computer."*
|
|
19
19
|
*
|
|
20
|
+
* An app that already keeps its own settings record hands the marks over instead — `store` — and
|
|
21
|
+
* then nothing goes to `localStorage` or the bus: desk carries them in its global settings blob
|
|
22
|
+
* beside the rest of its synced state, and vault seals them inside the vault, because its folder
|
|
23
|
+
* ids are folder NAMES and must never reach a disk in plaintext. `device: 'memory'` keeps the
|
|
24
|
+
* device half in page memory for the same reason; with it, "Hide on this device" is not offered,
|
|
25
|
+
* since a device list forgotten on reload would be a hide that silently undoes itself.
|
|
26
|
+
*
|
|
20
27
|
* And because the tree's header belongs to the APP (collections' `FilterRail` section, desk's
|
|
21
28
|
* explorer bar), the view menu has to be openable from outside the tree: the hook holds which
|
|
22
29
|
* menu is open, and the tree draws it. `onContextMenu` is the one handler an app puts on its
|
|
@@ -27,6 +34,8 @@ import { useRememberedPreference } from '../media-gallery/rememberedPreference.j
|
|
|
27
34
|
import {
|
|
28
35
|
type FolderMarks,
|
|
29
36
|
type FolderViewLocal,
|
|
37
|
+
type HiddenScope,
|
|
38
|
+
hiddenScope,
|
|
30
39
|
normalizeTag,
|
|
31
40
|
parseFolderMarks,
|
|
32
41
|
parseFolderViewLocal,
|
|
@@ -50,14 +59,23 @@ export type FolderViewPanel =
|
|
|
50
59
|
| { kind: 'view'; at: FolderViewPoint }
|
|
51
60
|
| { kind: 'tags'; at: FolderViewPoint | null; ids: readonly string[] };
|
|
52
61
|
|
|
62
|
+
/** Which list a hide writes to, or an unhide takes from. */
|
|
63
|
+
export type HideScope = 'everywhere' | 'device';
|
|
64
|
+
|
|
53
65
|
export interface FolderView {
|
|
54
66
|
marks: FolderMarks;
|
|
55
67
|
local: FolderViewLocal;
|
|
56
68
|
/** Every tag in use, most-used first. */
|
|
57
69
|
tags: readonly TagCount[];
|
|
70
|
+
/** Whether "Hide on this device" is offered — false when the device half is not kept. */
|
|
71
|
+
deviceHiding: boolean;
|
|
72
|
+
/** Which of the two lists hide this folder, if any. */
|
|
73
|
+
hiddenIn: (id: string) => HiddenScope | null;
|
|
58
74
|
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
/** Hide these folders — everywhere unless `scope: 'device'`. */
|
|
76
|
+
hide: (ids: readonly string[], options?: { scope?: HideScope }) => void;
|
|
77
|
+
/** Unhide these folders from the one list named, or from both when none is. */
|
|
78
|
+
unhide: (ids: readonly string[], options?: { scope?: HideScope }) => void;
|
|
61
79
|
/** Add or take away one tag on each folder named. */
|
|
62
80
|
toggleTag: (ids: readonly string[], tag: string) => void;
|
|
63
81
|
/** Replace one folder's tags. */
|
|
@@ -88,11 +106,39 @@ export interface UseFolderViewOptions {
|
|
|
88
106
|
* origin must not hide each other's folders.
|
|
89
107
|
*/
|
|
90
108
|
key: string;
|
|
109
|
+
/**
|
|
110
|
+
* The app keeps the marks itself — its own synced settings, or a sealed record. `marks` is
|
|
111
|
+
* what it holds now (`null` for none) and `write` is called with the next value to keep.
|
|
112
|
+
* Given a store, the marks never touch `localStorage` or the preference bus.
|
|
113
|
+
*/
|
|
114
|
+
store?: FolderMarksStore;
|
|
115
|
+
/**
|
|
116
|
+
* Where this device's view (show hidden, the tag filter, the device-only hidden list) lives:
|
|
117
|
+
* `'local'` (the default) is `localStorage` under `${key}:device`, never announced;
|
|
118
|
+
* `'memory'` is this page only, for an app whose folder ids may not be written to disk.
|
|
119
|
+
*/
|
|
120
|
+
device?: 'local' | 'memory';
|
|
91
121
|
}
|
|
92
122
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
123
|
+
/** The marks, kept by the app — see {@link UseFolderViewOptions.store}. */
|
|
124
|
+
export interface FolderMarksStore {
|
|
125
|
+
/** The stored form (`serializeFolderMarks`), or `null` for no marks. */
|
|
126
|
+
marks: string | null;
|
|
127
|
+
write: (next: string | null) => void;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function useFolderView({ key, store, device = 'local' }: UseFolderViewOptions): FolderView {
|
|
131
|
+
// Hooks run unconditionally; an undefined key is the remembered preference that keeps nothing.
|
|
132
|
+
const [rememberedMarks, rememberMarks] = useRememberedPreference(store ? undefined : key);
|
|
133
|
+
const [rememberedLocal, rememberLocal] = useRememberedPreference(
|
|
134
|
+
device === 'local' ? `${key}:device` : undefined,
|
|
135
|
+
{ announce: false },
|
|
136
|
+
);
|
|
137
|
+
const [memoryLocal, setMemoryLocal] = useState<string | null>(null);
|
|
138
|
+
const rawMarks = store ? store.marks : rememberedMarks;
|
|
139
|
+
const writeMarks = store ? store.write : rememberMarks;
|
|
140
|
+
const rawLocal = device === 'local' ? rememberedLocal : memoryLocal;
|
|
141
|
+
const writeLocal = device === 'local' ? rememberLocal : setMemoryLocal;
|
|
96
142
|
const marks = useMemo(() => parseFolderMarks(rawMarks), [rawMarks]);
|
|
97
143
|
const local = useMemo(() => parseFolderViewLocal(rawLocal), [rawLocal]);
|
|
98
144
|
const tags = useMemo(() => tagCounts(marks), [marks]);
|
|
@@ -114,13 +160,20 @@ export function useFolderView({ key }: UseFolderViewOptions): FolderView {
|
|
|
114
160
|
},
|
|
115
161
|
[writeMarks],
|
|
116
162
|
);
|
|
163
|
+
// The same rule for this device's view: an Undo of "Hide on this device" must see the hide.
|
|
164
|
+
const latestLocal = useRef(local);
|
|
165
|
+
latestLocal.current = local;
|
|
117
166
|
const saveLocal = useCallback(
|
|
118
167
|
(next: FolderViewLocal) => {
|
|
119
|
-
|
|
168
|
+
if (next === latestLocal.current) return;
|
|
169
|
+
latestLocal.current = next;
|
|
170
|
+
const empty =
|
|
171
|
+
!next.showHidden && next.only.length === 0 && next.hide.length === 0 && next.hidden.length === 0;
|
|
120
172
|
writeLocal(empty ? null : JSON.stringify(next));
|
|
121
173
|
},
|
|
122
174
|
[writeLocal],
|
|
123
175
|
);
|
|
176
|
+
const deviceHiding = device === 'local';
|
|
124
177
|
|
|
125
178
|
const onContextMenu = useCallback((event: { clientX: number; clientY: number; preventDefault: () => void }) => {
|
|
126
179
|
event.preventDefault();
|
|
@@ -132,8 +185,16 @@ export function useFolderView({ key }: UseFolderViewOptions): FolderView {
|
|
|
132
185
|
marks,
|
|
133
186
|
local,
|
|
134
187
|
tags,
|
|
135
|
-
|
|
136
|
-
|
|
188
|
+
deviceHiding,
|
|
189
|
+
hiddenIn: (id) => hiddenScope(marks, local, id),
|
|
190
|
+
hide: (ids, options) => {
|
|
191
|
+
if (options?.scope === 'device' && deviceHiding) saveLocal(setHidden(latestLocal.current, ids, true));
|
|
192
|
+
else saveMarks(setHidden(latest.current, ids, true));
|
|
193
|
+
},
|
|
194
|
+
unhide: (ids, options) => {
|
|
195
|
+
if (options?.scope !== 'device') saveMarks(setHidden(latest.current, ids, false));
|
|
196
|
+
if (options?.scope !== 'everywhere') saveLocal(setHidden(latestLocal.current, ids, false));
|
|
197
|
+
},
|
|
137
198
|
toggleTag: (ids, raw) => {
|
|
138
199
|
const tag = normalizeTag(raw);
|
|
139
200
|
if (!tag || ids.length === 0) return;
|
|
@@ -148,15 +209,15 @@ export function useFolderView({ key }: UseFolderViewOptions): FolderView {
|
|
|
148
209
|
saveMarks(next);
|
|
149
210
|
},
|
|
150
211
|
setTags: (id, list) => saveMarks(setFolderTags(latest.current, id, list)),
|
|
151
|
-
setShowHidden: (show) => saveLocal({ ...
|
|
152
|
-
filterTag: (tag, mode) => saveLocal(setTagFilter(
|
|
153
|
-
clearTagFilter: () => saveLocal({ ...
|
|
212
|
+
setShowHidden: (show) => saveLocal({ ...latestLocal.current, showHidden: show }),
|
|
213
|
+
filterTag: (tag, mode) => saveLocal(setTagFilter(latestLocal.current, tag, mode)),
|
|
214
|
+
clearTagFilter: () => saveLocal({ ...latestLocal.current, only: [], hide: [] }),
|
|
154
215
|
panel,
|
|
155
216
|
openViewMenu: (at) => setPanel({ kind: 'view', at }),
|
|
156
217
|
openTagEditor: (ids, at) => setPanel({ kind: 'tags', at: at ?? null, ids }),
|
|
157
218
|
closePanel: () => setPanel(null),
|
|
158
219
|
onContextMenu,
|
|
159
220
|
}),
|
|
160
|
-
[marks, local, tags, panel, saveMarks, saveLocal, onContextMenu],
|
|
221
|
+
[marks, local, tags, deviceHiding, panel, saveMarks, saveLocal, onContextMenu],
|
|
161
222
|
);
|
|
162
223
|
}
|
|
@@ -18,35 +18,36 @@
|
|
|
18
18
|
* after an app's responsive variant (task 2124). An app that imports every area gets exactly
|
|
19
19
|
* what `cursedbelt/styles-utilities.css` emits — proved rule by rule in
|
|
20
20
|
* src/stylesAreas.spec.ts, which is also what fails when this file is stale.
|
|
21
|
-
*
|
|
21
|
+
* 154 candidate(s).
|
|
22
22
|
*
|
|
23
23
|
* Written by scripts/generateAreaStyles.ts (`bun run styles:areas`), which
|
|
24
24
|
* `bun run build` runs. The map of what is in which area, and why the areas are
|
|
25
25
|
* import closures rather than a hand-written list, is scripts/styleAreas.ts.
|
|
26
26
|
*/
|
|
27
|
-
@source inline("-m-1 -mt-2 -mt-6 -mx-1 -my-2.5 -my-3 @3xl:block @3xl:hidden @max-2xl:[&>*]:hidden");
|
|
28
|
-
@source inline("@max-2xl:border-0 @max-2xl:
|
|
27
|
+
@source inline("-m-1 -mt-2 -mt-6 -mx-1 -my-2.5 -my-3 @3xl:block @3xl:hidden @max-2xl @max-2xl:[&>*]:hidden");
|
|
28
|
+
@source inline("@max-2xl:border-0 @max-2xl:inline-flex @max-2xl:justify-center @max-2xl:min-w-0!");
|
|
29
|
+
@source inline("@max-2xl:min-w-11 @max-2xl:p-0! @max-2xl:sr-only @max-2xl:w-0! @max-4xl:[&>*]:hidden");
|
|
29
30
|
@source inline("@max-4xl:border-0 @max-4xl:min-w-0! @max-4xl:p-0! @max-4xl:w-0! @max-6xl:[&>*]:hidden");
|
|
30
31
|
@source inline("@max-6xl:border-0 @max-6xl:min-w-0! @max-6xl:p-0! @max-6xl:w-0! @xl:block @xl:hidden");
|
|
31
|
-
@source inline("[&>*]:hidden [&>*]:max-w-none [&_svg]:size-3 [overflow-wrap:anywhere]
|
|
32
|
-
@source inline("appearance appearance-none bg-[var(--cb-frozen-bg)] bg-card/95
|
|
33
|
-
@source inline("bg-muted/40 bg-muted/50 border-accent-solid border-accent/60
|
|
34
|
-
@source inline("border-r col collapse cursor-grab data-[ending-style]:opacity-0
|
|
35
|
-
@source inline("data-[
|
|
36
|
-
@source inline("data-[
|
|
37
|
-
@source inline("data-[
|
|
38
|
-
@source inline("data-[state=closed]:slide-out-to-
|
|
39
|
-
@source inline("data-[state=open]:slide-in-from-
|
|
40
|
-
@source inline("
|
|
41
|
-
@source inline("focus-
|
|
42
|
-
@source inline("has-[[aria-invalid=true]]:border-field-error
|
|
43
|
-
@source inline("hover:bg-muted/40 hover:border-field-ring hover:text-warning
|
|
44
|
-
@source inline("last:border-0 left-0 left-11 left-2.5 list-none max-h-64 max-h-88
|
|
45
|
-
@source inline("max-h-[var(--sheet-h-
|
|
46
|
-
@source inline("max-w-sm min-h-20 min-h-dvh min-w-0! min-w-20 min-w-24 min-w-52
|
|
47
|
-
@source inline("min-w-max ml-1.5 mr-2 mt-1.5 mt-3 mt-4 not-italic ordinal p-0!
|
|
48
|
-
@source inline("pr-10 pr-16 pr-3 pr-9 pt-1 resize-none resize-y right-3
|
|
49
|
-
@source inline("rounded-r-xl rounded-t-xl self self-center self-stretch
|
|
50
|
-
@source inline("shrink-[2] size-2 size-7 slide-in-from-top-1 table-fixed
|
|
51
|
-
@source inline("text-field-placeholder text-muted-foreground/60 text-success
|
|
52
|
-
@source inline("transition-[transform,opacity] w-0! w-11 w-20 w-32 w-36 w-40 w-88");
|
|
32
|
+
@source inline("[&>*]:hidden [&>*]:max-w-none [&>svg]:size-3.5 [&_svg]:size-3 [overflow-wrap:anywhere]");
|
|
33
|
+
@source inline("active:cursor-grabbing appearance appearance-none bg-[var(--cb-frozen-bg)] bg-card/95");
|
|
34
|
+
@source inline("bg-gradient-to-t bg-muted/30 bg-muted/40 bg-muted/50 border-accent-solid border-accent/60");
|
|
35
|
+
@source inline("border-field-error border-l border-r col collapse cursor-grab data-[ending-style]:opacity-0");
|
|
36
|
+
@source inline("data-[ending-style]:scale-95 data-[highlighted]:bg-accent/10");
|
|
37
|
+
@source inline("data-[highlighted]:text-accent-strong data-[starting-style]:opacity-0");
|
|
38
|
+
@source inline("data-[starting-style]:scale-95 data-[state=closed]:slide-out-to-bottom");
|
|
39
|
+
@source inline("data-[state=closed]:slide-out-to-left data-[state=closed]:slide-out-to-right");
|
|
40
|
+
@source inline("data-[state=open]:slide-in-from-bottom data-[state=open]:slide-in-from-left");
|
|
41
|
+
@source inline("data-[state=open]:slide-in-from-right disabled:opacity-40 duration-100 fade-in");
|
|
42
|
+
@source inline("focus-visible:ring-field-ring/40 focus-within:border-field-ring focus-within:ring-2");
|
|
43
|
+
@source inline("focus-within:ring-field-ring/30 from-card h-105 has-[[aria-invalid=true]]:border-field-error");
|
|
44
|
+
@source inline("hover:bg-background hover:bg-border hover:bg-muted/40 hover:border-field-ring hover:text-warning");
|
|
45
|
+
@source inline("italic justify-self-end last:border-0 left-0 left-11 left-2.5 list-none max-h-64 max-h-88");
|
|
46
|
+
@source inline("max-h-[var(--sheet-h-lg)] max-h-[var(--sheet-h-md)] max-h-[var(--sheet-h-sm)] max-w-32 max-w-36");
|
|
47
|
+
@source inline("max-w-45 max-w-48 max-w-60 max-w-sm min-h-20 min-h-dvh min-w-0! min-w-20 min-w-24 min-w-52");
|
|
48
|
+
@source inline("min-w-[var(--anchor-width)] min-w-max ml-1.5 mr-2 mt-1.5 mt-3 mt-4 not-italic ordinal p-0!");
|
|
49
|
+
@source inline("pb-1.5 pl-1.5 pl-2 pr-0.5 pr-1 pr-10 pr-16 pr-3 pr-9 pt-1 resize-none resize-y right-3");
|
|
50
|
+
@source inline("ring-field-error/30 rounded-l-xl rounded-r-xl rounded-t-xl self self-center self-stretch");
|
|
51
|
+
@source inline("shadow-[1px_0_0_0_var(--color-border)] shrink-[2] size-2 size-7 slide-in-from-top-1 table-fixed");
|
|
52
|
+
@source inline("text-accent-solid-foreground text-field-placeholder text-muted-foreground/60 text-success");
|
|
53
|
+
@source inline("text-xl to-transparent top-3 transition-[transform,opacity] w-0! w-11 w-20 w-32 w-36 w-40 w-88");
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* after an app's responsive variant (task 2124). An app that imports every area gets exactly
|
|
19
19
|
* what `cursedbelt/styles-utilities.css` emits — proved rule by rule in
|
|
20
20
|
* src/stylesAreas.spec.ts, which is also what fails when this file is stale.
|
|
21
|
-
*
|
|
21
|
+
* 78 candidate(s).
|
|
22
22
|
*
|
|
23
23
|
* Written by scripts/generateAreaStyles.ts (`bun run styles:areas`), which
|
|
24
24
|
* `bun run build` runs. The map of what is in which area, and why the areas are
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
@source inline("dark:bg-sky-900/40 dark:bg-slate-800 dark:bg-teal-900/40 dark:bg-violet-900/40");
|
|
33
33
|
@source inline("dark:text-amber-200 dark:text-blue-200 dark:text-emerald-200 dark:text-green-200");
|
|
34
34
|
@source inline("dark:text-purple-200 dark:text-rose-200 dark:text-sky-200 dark:text-slate-200 dark:text-teal-200");
|
|
35
|
-
@source inline("dark:text-violet-200 focus:opacity-100
|
|
35
|
+
@source inline("dark:text-violet-200 focus:opacity-100 grid-cols-[repeat(7,minmax(0,1fr))]");
|
|
36
36
|
@source inline("group-focus-within:opacity-100 h-3.5 hover:bg-muted/30 hover:bg-muted/40 hover:border-border/80");
|
|
37
37
|
@source inline("last:border-r-0 line-through min-h-28 min-h-40 outline-1 outline-dashed outline-tone-amber-ink");
|
|
38
|
-
@source inline("p-1.5 sm:
|
|
38
|
+
@source inline("p-1.5 sm:inline sm:min-h-0 sm:min-h-24 sm:px-1.5 sm:text-xs text-accent-solid-foreground");
|
|
39
39
|
@source inline("text-amber-900 text-blue-800 text-emerald-800 text-green-800 text-purple-800 text-rose-800");
|
|
40
|
-
@source inline("text-sky-800 text-slate-800 text-teal-800 text-tone-amber-ink text-violet-800 w-3.5");
|
|
40
|
+
@source inline("text-sky-800 text-slate-800 text-teal-800 text-tone-amber-ink text-violet-800 w-20 w-3.5");
|
|
@@ -18,35 +18,36 @@
|
|
|
18
18
|
* after an app's responsive variant (task 2124). An app that imports every area gets exactly
|
|
19
19
|
* what `cursedbelt/styles-utilities.css` emits — proved rule by rule in
|
|
20
20
|
* src/stylesAreas.spec.ts, which is also what fails when this file is stale.
|
|
21
|
-
*
|
|
21
|
+
* 150 candidate(s).
|
|
22
22
|
*
|
|
23
23
|
* Written by scripts/generateAreaStyles.ts (`bun run styles:areas`), which
|
|
24
24
|
* `bun run build` runs. The map of what is in which area, and why the areas are
|
|
25
25
|
* import closures rather than a hand-written list, is scripts/styleAreas.ts.
|
|
26
26
|
*/
|
|
27
|
-
@source inline("-m-1 -mt-2 -mt-6 -mx-1 -my-2.5 -my-3 @3xl:block @3xl:hidden @max-2xl:[&>*]:hidden");
|
|
28
|
-
@source inline("@max-2xl:border-0 @max-2xl:
|
|
27
|
+
@source inline("-m-1 -mt-2 -mt-6 -mx-1 -my-2.5 -my-3 @3xl:block @3xl:hidden @max-2xl @max-2xl:[&>*]:hidden");
|
|
28
|
+
@source inline("@max-2xl:border-0 @max-2xl:inline-flex @max-2xl:justify-center @max-2xl:min-w-0!");
|
|
29
|
+
@source inline("@max-2xl:min-w-11 @max-2xl:p-0! @max-2xl:sr-only @max-2xl:w-0! @max-4xl:[&>*]:hidden");
|
|
29
30
|
@source inline("@max-4xl:border-0 @max-4xl:min-w-0! @max-4xl:p-0! @max-4xl:w-0! @max-6xl:[&>*]:hidden");
|
|
30
31
|
@source inline("@max-6xl:border-0 @max-6xl:min-w-0! @max-6xl:p-0! @max-6xl:w-0! @xl:block @xl:hidden");
|
|
31
|
-
@source inline("[&>*]:hidden [&>*]:max-w-none [&_svg]:size-3 [overflow-wrap:anywhere]
|
|
32
|
-
@source inline("appearance appearance-none bg-[var(--cb-frozen-bg)] bg-card/95
|
|
33
|
-
@source inline("bg-muted/50 border-accent-solid border-accent/60 border-field-error
|
|
34
|
-
@source inline("collapse cursor-grab data-[ending-style]:opacity-0
|
|
35
|
-
@source inline("data-[
|
|
36
|
-
@source inline("data-[
|
|
37
|
-
@source inline("data-[
|
|
38
|
-
@source inline("data-[state=closed]:slide-out-to-
|
|
39
|
-
@source inline("data-[state=open]:slide-in-from-
|
|
40
|
-
@source inline("
|
|
41
|
-
@source inline("focus-
|
|
42
|
-
@source inline("has-[[aria-invalid=true]]:border-field-error
|
|
43
|
-
@source inline("hover:bg-muted/40 hover:border-field-ring hover:text-warning
|
|
44
|
-
@source inline("left-0 left-11 left-2.5 list-none max-h-64 max-h-88
|
|
45
|
-
@source inline("max-h-[var(--sheet-h-
|
|
46
|
-
@source inline("max-w-sm min-h-20 min-h-dvh min-w-0! min-w-24 min-w-52
|
|
47
|
-
@source inline("ml-1.5 mr-2 mt-1.5 mt-3 mt-4 not-italic ordinal p-0!
|
|
48
|
-
@source inline("pr-3 pr-9 pt-1 resize-none resize-y right-3
|
|
49
|
-
@source inline("rounded-t-xl self self-center self-stretch
|
|
50
|
-
@source inline("slide-in-from-top-1 table-fixed
|
|
51
|
-
@source inline("text-
|
|
52
|
-
@source inline("transition-[transform,opacity] w-0! w-11 w-20 w-32 w-36 w-40 w-88");
|
|
32
|
+
@source inline("[&>*]:hidden [&>*]:max-w-none [&>svg]:size-3.5 [&_svg]:size-3 [overflow-wrap:anywhere]");
|
|
33
|
+
@source inline("active:cursor-grabbing appearance appearance-none bg-[var(--cb-frozen-bg)] bg-card/95");
|
|
34
|
+
@source inline("bg-gradient-to-t bg-muted/30 bg-muted/50 border-accent-solid border-accent/60 border-field-error");
|
|
35
|
+
@source inline("border-l border-r col collapse cursor-grab data-[ending-style]:opacity-0");
|
|
36
|
+
@source inline("data-[ending-style]:scale-95 data-[highlighted]:bg-accent/10");
|
|
37
|
+
@source inline("data-[highlighted]:text-accent-strong data-[starting-style]:opacity-0");
|
|
38
|
+
@source inline("data-[starting-style]:scale-95 data-[state=closed]:slide-out-to-bottom");
|
|
39
|
+
@source inline("data-[state=closed]:slide-out-to-left data-[state=closed]:slide-out-to-right");
|
|
40
|
+
@source inline("data-[state=open]:slide-in-from-bottom data-[state=open]:slide-in-from-left");
|
|
41
|
+
@source inline("data-[state=open]:slide-in-from-right disabled:opacity-40 duration-100 fade-in");
|
|
42
|
+
@source inline("focus-visible:ring-field-ring/40 focus-within:border-field-ring focus-within:ring-2");
|
|
43
|
+
@source inline("focus-within:ring-field-ring/30 from-card h-105 has-[[aria-invalid=true]]:border-field-error");
|
|
44
|
+
@source inline("hover:bg-background hover:bg-border hover:bg-muted/40 hover:border-field-ring hover:text-warning");
|
|
45
|
+
@source inline("justify-self-end last:border-0 left-0 left-11 left-2.5 list-none max-h-64 max-h-88");
|
|
46
|
+
@source inline("max-h-[var(--sheet-h-lg)] max-h-[var(--sheet-h-md)] max-h-[var(--sheet-h-sm)] max-w-32 max-w-36");
|
|
47
|
+
@source inline("max-w-45 max-w-48 max-w-60 max-w-sm min-h-20 min-h-dvh min-w-0! min-w-24 min-w-52");
|
|
48
|
+
@source inline("min-w-[var(--anchor-width)] min-w-max ml-1.5 mr-2 mt-1.5 mt-3 mt-4 not-italic ordinal p-0!");
|
|
49
|
+
@source inline("pb-1.5 pl-1.5 pl-2 pr-0.5 pr-1 pr-10 pr-16 pr-3 pr-9 pt-1 resize-none resize-y right-3");
|
|
50
|
+
@source inline("ring-field-error/30 rounded-l-xl rounded-r-xl rounded-t-xl self self-center self-stretch");
|
|
51
|
+
@source inline("shadow-[1px_0_0_0_var(--color-border)] size-2 size-7 slide-in-from-top-1 table-fixed");
|
|
52
|
+
@source inline("text-accent-solid-foreground text-field-placeholder text-muted-foreground/60 text-success");
|
|
53
|
+
@source inline("text-xl to-transparent top-3 transition-[transform,opacity] w-0! w-11 w-20 w-32 w-36 w-40 w-88");
|
package/src/styles-utilities.css
CHANGED
|
@@ -4337,18 +4337,9 @@
|
|
|
4337
4337
|
.sm\:grid-cols-\[minmax\(7rem\,34rem\)_minmax\(4rem\,1fr\)_auto\] {
|
|
4338
4338
|
grid-template-columns: minmax(7rem,34rem) minmax(4rem,1fr) auto;
|
|
4339
4339
|
}
|
|
4340
|
-
.sm\:flex-row {
|
|
4341
|
-
flex-direction: row;
|
|
4342
|
-
}
|
|
4343
4340
|
.sm\:flex-nowrap {
|
|
4344
4341
|
flex-wrap: nowrap;
|
|
4345
4342
|
}
|
|
4346
|
-
.sm\:items-center {
|
|
4347
|
-
align-items: center;
|
|
4348
|
-
}
|
|
4349
|
-
.sm\:gap-1 {
|
|
4350
|
-
gap: var(--spacing);
|
|
4351
|
-
}
|
|
4352
4343
|
.sm\:gap-3 {
|
|
4353
4344
|
gap: calc(var(--spacing) * 3);
|
|
4354
4345
|
}
|
|
@@ -4504,12 +4495,32 @@
|
|
|
4504
4495
|
}
|
|
4505
4496
|
}
|
|
4506
4497
|
@container (width < 42rem) {
|
|
4498
|
+
.\@max-2xl\:sr-only {
|
|
4499
|
+
position: absolute;
|
|
4500
|
+
width: 1px;
|
|
4501
|
+
height: 1px;
|
|
4502
|
+
padding: 0;
|
|
4503
|
+
margin: -1px;
|
|
4504
|
+
overflow: hidden;
|
|
4505
|
+
clip-path: inset(50%);
|
|
4506
|
+
white-space: nowrap;
|
|
4507
|
+
border-width: 0;
|
|
4508
|
+
}
|
|
4509
|
+
.\@max-2xl\:inline-flex {
|
|
4510
|
+
display: inline-flex;
|
|
4511
|
+
}
|
|
4507
4512
|
.\@max-2xl\:w-0\! {
|
|
4508
4513
|
width: 0px !important;
|
|
4509
4514
|
}
|
|
4510
4515
|
.\@max-2xl\:min-w-0\! {
|
|
4511
4516
|
min-width: 0px !important;
|
|
4512
4517
|
}
|
|
4518
|
+
.\@max-2xl\:min-w-11 {
|
|
4519
|
+
min-width: calc(var(--spacing) * 11);
|
|
4520
|
+
}
|
|
4521
|
+
.\@max-2xl\:justify-center {
|
|
4522
|
+
justify-content: center;
|
|
4523
|
+
}
|
|
4513
4524
|
.\@max-2xl\:border-0 {
|
|
4514
4525
|
border-style: var(--tw-border-style);
|
|
4515
4526
|
border-width: 0px;
|
|
@@ -4957,6 +4968,10 @@
|
|
|
4957
4968
|
.\[\&\>span\>button\]\:rounded-none > span > button {
|
|
4958
4969
|
border-radius: 0;
|
|
4959
4970
|
}
|
|
4971
|
+
.\[\&\>svg\]\:size-3\.5 > svg {
|
|
4972
|
+
width: calc(var(--spacing) * 3.5);
|
|
4973
|
+
height: calc(var(--spacing) * 3.5);
|
|
4974
|
+
}
|
|
4960
4975
|
}
|
|
4961
4976
|
@property --tw-translate-x {
|
|
4962
4977
|
syntax: "*";
|