@dereekb/dbx-components-mcp 13.41.0 → 13.43.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.
@@ -72,6 +72,136 @@
72
72
  ],
73
73
  "notes": "The week in the year. Starts from 1."
74
74
  },
75
+ {
76
+ "name": "ICalendarComponentName",
77
+ "package": "@dereekb/date",
78
+ "module": "src/lib/icalendar/icalendar",
79
+ "kind": "semantic-type",
80
+ "definition": "SuggestedString<'VCALENDAR' | 'VEVENT' | 'VALARM' | 'VTIMEZONE' | 'STANDARD' | 'DAYLIGHT'>",
81
+ "baseType": "other",
82
+ "topics": [
83
+ "string",
84
+ "dereekb-date:icalendar"
85
+ ],
86
+ "notes": "The name of an iCalendar component. I.E. VCALENDAR, VEVENT, VALARM, VTIMEZONE, STANDARD, DAYLIGHT.\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.6"
87
+ },
88
+ {
89
+ "name": "ICalendarPropertyName",
90
+ "package": "@dereekb/date",
91
+ "module": "src/lib/icalendar/icalendar",
92
+ "kind": "semantic-type",
93
+ "definition": "string",
94
+ "baseType": "string",
95
+ "topics": [
96
+ "string",
97
+ "dereekb-date:icalendar"
98
+ ],
99
+ "notes": "The name of an iCalendar property. I.E. DTSTART, SUMMARY, X-WR-CALNAME.\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.7"
100
+ },
101
+ {
102
+ "name": "ICalendarParameterName",
103
+ "package": "@dereekb/date",
104
+ "module": "src/lib/icalendar/icalendar",
105
+ "kind": "semantic-type",
106
+ "definition": "SuggestedString<'TZID' | 'VALUE' | 'CN' | 'ROLE' | 'PARTSTAT' | 'RSVP' | 'RELATED'>",
107
+ "baseType": "other",
108
+ "topics": [
109
+ "string",
110
+ "dereekb-date:icalendar"
111
+ ],
112
+ "notes": "The name of an iCalendar property parameter. I.E. TZID, VALUE, CN.\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.2"
113
+ },
114
+ {
115
+ "name": "ICalendarParameterValue",
116
+ "package": "@dereekb/date",
117
+ "module": "src/lib/icalendar/icalendar",
118
+ "kind": "semantic-type",
119
+ "definition": "string",
120
+ "baseType": "string",
121
+ "topics": [
122
+ "string",
123
+ "dereekb-date:icalendar"
124
+ ],
125
+ "notes": "An already-encoded iCalendar property parameter value."
126
+ },
127
+ {
128
+ "name": "ICalendarValue",
129
+ "package": "@dereekb/date",
130
+ "module": "src/lib/icalendar/icalendar",
131
+ "kind": "semantic-type",
132
+ "definition": "string",
133
+ "baseType": "string",
134
+ "topics": [
135
+ "string",
136
+ "dereekb-date:icalendar"
137
+ ],
138
+ "notes": "An already-encoded iCalendar property value. Escaping (where the value type calls for it) has already been applied."
139
+ },
140
+ {
141
+ "name": "ICalendarTextValue",
142
+ "package": "@dereekb/date",
143
+ "module": "src/lib/icalendar/icalendar",
144
+ "kind": "semantic-type",
145
+ "definition": "string",
146
+ "baseType": "string",
147
+ "topics": [
148
+ "string",
149
+ "dereekb-date:icalendar"
150
+ ],
151
+ "notes": "An escaped iCalendar TEXT value.\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.3.11"
152
+ },
153
+ {
154
+ "name": "ICalendarIcsString",
155
+ "package": "@dereekb/date",
156
+ "module": "src/lib/icalendar/icalendar",
157
+ "kind": "semantic-type",
158
+ "definition": "string",
159
+ "baseType": "string",
160
+ "topics": [
161
+ "string",
162
+ "dereekb-date:icalendar"
163
+ ],
164
+ "notes": "A complete iCalendar (RFC 5545) document, folded and CRLF-terminated."
165
+ },
166
+ {
167
+ "name": "ICalendarUid",
168
+ "package": "@dereekb/date",
169
+ "module": "src/lib/icalendar/icalendar",
170
+ "kind": "semantic-type",
171
+ "definition": "string",
172
+ "baseType": "string",
173
+ "topics": [
174
+ "string",
175
+ "dereekb-date:icalendar"
176
+ ],
177
+ "notes": "A globally-unique, stable identifier for an event.\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.8.4.7\n\nStability across publishes is what lets a subscribing client correlate an update or a deletion with the\nevent it already has. A UID that changes between publishes produces a duplicate event instead of an update."
178
+ },
179
+ {
180
+ "name": "ICalendarProductId",
181
+ "package": "@dereekb/date",
182
+ "module": "src/lib/icalendar/icalendar",
183
+ "kind": "semantic-type",
184
+ "definition": "string",
185
+ "baseType": "string",
186
+ "topics": [
187
+ "string",
188
+ "dereekb-date:icalendar"
189
+ ],
190
+ "notes": "The PRODID of the product that generated the calendar.\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.7.3"
191
+ },
192
+ {
193
+ "name": "ICalendarCalAddress",
194
+ "package": "@dereekb/date",
195
+ "module": "src/lib/icalendar/icalendar",
196
+ "kind": "semantic-type",
197
+ "definition": "string",
198
+ "baseType": "string",
199
+ "topics": [
200
+ "string",
201
+ "dereekb-date:icalendar"
202
+ ],
203
+ "notes": "A CAL-ADDRESS URI value. I.E. \"mailto:person@example.com\".\n\nhttps://datatracker.ietf.org/doc/html/rfc5545#section-3.3.3"
204
+ },
75
205
  {
76
206
  "name": "RRuleLineString",
77
207
  "package": "@dereekb/date",
@@ -2016,6 +2016,10 @@
2016
2016
  "property": "overflow-y",
2017
2017
  "value": "hidden"
2018
2018
  },
2019
+ {
2020
+ "property": "padding-block",
2021
+ "value": "var(--dbx-shadow-gutter, 4px)"
2022
+ },
2019
2023
  {
2020
2024
  "property": "--mat-icon-button-touch-target-size",
2021
2025
  "value": "40px"
@@ -2053,7 +2057,11 @@
2053
2057
  "intent": "horizontal action bar — flex row that scrolls horizontally before wrapping",
2054
2058
  "seeAlso": [
2055
2059
  "dbx-flex-center",
2056
- "dbx-flex-fill"
2060
+ "dbx-flex-fill",
2061
+ "card-horizontal"
2062
+ ],
2063
+ "tokensRead": [
2064
+ "--dbx-shadow-gutter"
2057
2065
  ],
2058
2066
  "tokensSet": [
2059
2067
  "--mat-button-filled-touch-target-size",
@@ -2072,7 +2080,7 @@
2072
2080
  "source": "@dereekb/dbx-web",
2073
2081
  "module": "@dereekb/dbx-web",
2074
2082
  "file": "src/lib/layout/flex/_flex.scss",
2075
- "line": 34,
2083
+ "line": 44,
2076
2084
  "declarations": [
2077
2085
  {
2078
2086
  "property": "display",
@@ -2100,7 +2108,7 @@
2100
2108
  "source": "@dereekb/dbx-web",
2101
2109
  "module": "@dereekb/dbx-web",
2102
2110
  "file": "src/lib/layout/flex/_flex.scss",
2103
- "line": 44,
2111
+ "line": 54,
2104
2112
  "declarations": [
2105
2113
  {
2106
2114
  "property": "display",
@@ -2123,7 +2131,7 @@
2123
2131
  "source": "@dereekb/dbx-web",
2124
2132
  "module": "@dereekb/dbx-web",
2125
2133
  "file": "src/lib/layout/flex/_flex.scss",
2126
- "line": 54,
2134
+ "line": 64,
2127
2135
  "declarations": [
2128
2136
  {
2129
2137
  "property": "flex",
@@ -2143,7 +2151,7 @@
2143
2151
  "source": "@dereekb/dbx-web",
2144
2152
  "module": "@dereekb/dbx-web",
2145
2153
  "file": "src/lib/layout/flex/_flex.scss",
2146
- "line": 65,
2154
+ "line": 75,
2147
2155
  "declarations": [
2148
2156
  {
2149
2157
  "property": "flex",
@@ -2167,7 +2175,7 @@
2167
2175
  "source": "@dereekb/dbx-web",
2168
2176
  "module": "@dereekb/dbx-web",
2169
2177
  "file": "src/lib/layout/flex/_flex.scss",
2170
- "line": 74,
2178
+ "line": 84,
2171
2179
  "declarations": [
2172
2180
  {
2173
2181
  "property": "display",
@@ -3151,7 +3159,7 @@
3151
3159
  "source": "@dereekb/dbx-web",
3152
3160
  "module": "@dereekb/dbx-web",
3153
3161
  "file": "src/lib/layout/section/_section.scss",
3154
- "line": 76,
3162
+ "line": 83,
3155
3163
  "declarations": [
3156
3164
  {
3157
3165
  "property": "padding",
@@ -1205,6 +1205,20 @@
1205
1205
  "--mat-sys-error"
1206
1206
  ]
1207
1207
  },
1208
+ {
1209
+ "cssVariable": "--dbx-file-list-item-details-gap",
1210
+ "source": "dbx-web",
1211
+ "role": "spacing",
1212
+ "intents": [
1213
+ "file list item details gap",
1214
+ "file list item details gap spacing"
1215
+ ],
1216
+ "description": "Component-scoped override point (`download`) read in `packages/dbx-web/src/lib/extension/download/_download.scss` — set it (from an app, or via the owning dbx directive where one exists) to override; unset, it falls back to `0.25em`.",
1217
+ "defaults": {
1218
+ "light": "0.25em"
1219
+ },
1220
+ "componentScope": "download"
1221
+ },
1208
1222
  {
1209
1223
  "cssVariable": "--dbx-file-upload-square-container-shape",
1210
1224
  "source": "dbx-web",
@@ -2225,6 +2239,21 @@
2225
2239
  },
2226
2240
  "componentScope": "section"
2227
2241
  },
2242
+ {
2243
+ "cssVariable": "--dbx-shadow-gutter",
2244
+ "scssVariable": "$shadow-gutter-var",
2245
+ "source": "dbx-web",
2246
+ "role": "spacing",
2247
+ "intents": [
2248
+ "shadow gutter",
2249
+ "elevation room",
2250
+ "keep box-shadow from being clipped"
2251
+ ],
2252
+ "description": "Shadow gutter — the room a clipping/scrolling container must reserve INSIDE its padding box so an elevated child's `box-shadow` isn't clipped at the edge. Sized against Material's raised-button elevation: the resting shadow reaches 2.5px below the border box and the hover shadow reaches 5px, so 4px clears the resting state outright and all but the faintest 12% hover layer. Raise it to 5px to clear hover completely, or set it to 0px to opt out.",
2253
+ "defaults": {
2254
+ "light": "4px"
2255
+ }
2256
+ },
2228
2257
  {
2229
2258
  "cssVariable": "--dbx-sidenav-active-accent",
2230
2259
  "source": "dbx-web",
@@ -131,6 +131,20 @@
131
131
  ],
132
132
  "notes": "Storage bucket identifier for Firebase Cloud Storage.\n\nShould contain no slashes — just the bucket name (e.g., `\"my-app.appspot.com\"`)."
133
133
  },
134
+ {
135
+ "name": "StoragePublicUrlApiEndpoint",
136
+ "package": "@dereekb/firebase",
137
+ "module": "src/lib/common/storage/storage.url",
138
+ "kind": "semantic-type",
139
+ "definition": "string",
140
+ "baseType": "string",
141
+ "topics": [
142
+ "url",
143
+ "string",
144
+ "dereekb-firebase:storage"
145
+ ],
146
+ "notes": "Origin (protocol and host, with no trailing slash) that serves GCS-native public object urls."
147
+ },
134
148
  {
135
149
  "name": "StorageDownloadUrl",
136
150
  "package": "@dereekb/firebase",
@@ -214,6 +228,76 @@
214
228
  ],
215
229
  "notes": "Example:\n'data:text/plain;base64,5b6p5Y+344GX44G+44GX44Gf77yB44GK44KB44Gn44Go44GG77yB'"
216
230
  },
231
+ {
232
+ "name": "CalendarEventId",
233
+ "package": "@dereekb/firebase",
234
+ "module": "src/lib/model/calendar/calendar.id",
235
+ "kind": "semantic-type",
236
+ "definition": "string",
237
+ "baseType": "string",
238
+ "topics": [
239
+ "identifier",
240
+ "string",
241
+ "dereekb-firebase:calendar"
242
+ ],
243
+ "notes": "Identifier for a single event embedded in a Calendar. Unique within its own calendar only."
244
+ },
245
+ {
246
+ "name": "CalendarOccurrenceKey",
247
+ "package": "@dereekb/firebase",
248
+ "module": "src/lib/model/calendar/calendar.id",
249
+ "kind": "semantic-type",
250
+ "definition": "string",
251
+ "baseType": "string",
252
+ "topics": [
253
+ "identifier",
254
+ "string",
255
+ "dereekb-firebase:calendar"
256
+ ],
257
+ "notes": "Identifier for a single expanded OCCURRENCE of a calendar event.\n\nA one-off event's occurrence key is its {@link CalendarEventId}. A recurring event's occurrence key is\nits id plus the occurrence's unix seconds, which is what keeps a published VEVENT's UID stable across\nrepublishes of the same series."
258
+ },
259
+ {
260
+ "name": "CalendarType",
261
+ "package": "@dereekb/firebase",
262
+ "module": "src/lib/model/calendar/calendar.id",
263
+ "kind": "semantic-type",
264
+ "definition": "string",
265
+ "baseType": "string",
266
+ "topics": [
267
+ "identifier",
268
+ "string",
269
+ "dereekb-firebase:calendar"
270
+ ],
271
+ "notes": "Arbitrary string describing the kind of calendar a document is, driving its retention policy and its ICS\nemission config through the app's {@link CalendarTypeConfig} registry.\n\nOpen by design, exactly like {@link StorageFilePurpose}: a downstream app registers its own types without\na library change."
272
+ },
273
+ {
274
+ "name": "FormSpaceType",
275
+ "package": "@dereekb/firebase",
276
+ "module": "src/lib/model/formspace/formspace.id",
277
+ "kind": "semantic-type",
278
+ "definition": "string",
279
+ "baseType": "string",
280
+ "topics": [
281
+ "identifier",
282
+ "string",
283
+ "dereekb-firebase:form-space"
284
+ ],
285
+ "notes": "Arbitrary string describing the kind of form a FormSpace holds, driving its upload restrictions, its\nexpiration policy, and the server-side handler its submission is dispatched to through the app's\n{@link FormSpaceTypeConfig} registry.\n\nOpen by design, exactly like {@link StorageFilePurpose} and {@link CalendarType}: a downstream app\nregisters its own types without a library change."
286
+ },
287
+ {
288
+ "name": "FormSpaceFileSlot",
289
+ "package": "@dereekb/firebase",
290
+ "module": "src/lib/model/formspace/formspace.id",
291
+ "kind": "semantic-type",
292
+ "definition": "string",
293
+ "baseType": "string",
294
+ "topics": [
295
+ "identifier",
296
+ "string",
297
+ "dereekb-firebase:form-space"
298
+ ],
299
+ "notes": "Names one upload \"slot\" within a FormSpace — the resume, the cover letter, the photo of the ID.\n\nA slot is stored on the uploaded {@link StorageFile} as its `pg` (purposeSubgroup), which is what makes\n\"replace the file in this slot\" the existing `flagPreviousForDelete` behaviour rather than new machinery."
300
+ },
217
301
  {
218
302
  "name": "NotificationTemplateType",
219
303
  "package": "@dereekb/firebase",
@@ -263,6 +263,136 @@
263
263
  "firebase-auth-oob-code-data-pair-delimiter"
264
264
  ]
265
265
  },
266
+ {
267
+ "slug": "is-nth-hour-of-day",
268
+ "name": "isNthHourOfDay",
269
+ "kind": "function",
270
+ "category": "date",
271
+ "module": "@dereekb/firebase",
272
+ "subpath": "model/system/system.scheduler",
273
+ "signature": "isNthHourOfDay(everyNHours: Hours, date?: Maybe<Date>): boolean",
274
+ "description": "Whether the date's hour-of-day is an Nth hour, in the ambient timezone.\n\nThis is a modulo against the hour-of-day, NOT an interval since some epoch — so at hour 12 it is\ntrue for N = 1, 2, 3, 4, 6, and 12, and false for N = 5. Only divisors of 24 divide the day\nevenly; a non-divisor (5, 7, 9, …) will still fire, just with a short window across midnight.\n\nAn `everyNHours` of zero or less has no meaningful Nth hour and returns false rather than\ndividing by zero.",
275
+ "params": [
276
+ {
277
+ "name": "everyNHours",
278
+ "type": "Hours",
279
+ "description": "- Run every Nth hour of the day.",
280
+ "optional": false
281
+ },
282
+ {
283
+ "name": "date",
284
+ "type": "Maybe<Date>",
285
+ "description": "- Moment to test; defaults to now.",
286
+ "optional": true
287
+ }
288
+ ],
289
+ "returns": "True when the date's hour-of-day is an Nth hour.",
290
+ "tags": [
291
+ "schedule",
292
+ "hour",
293
+ "throttle",
294
+ "cron",
295
+ "gate",
296
+ "modulo",
297
+ "date",
298
+ "is",
299
+ "nth",
300
+ "of",
301
+ "day",
302
+ "isnthhourofday"
303
+ ],
304
+ "example": "isNthHourOfDay(3, new Date('2024-01-01T12:30:00')); // true (12 % 3 === 0)\nisNthHourOfDay(5, new Date('2024-01-01T12:30:00')); // false (12 % 5 === 2)",
305
+ "relatedSlugs": [
306
+ "has-run-in-current-hour"
307
+ ]
308
+ },
309
+ {
310
+ "slug": "has-run-in-current-hour",
311
+ "name": "hasRunInCurrentHour",
312
+ "kind": "function",
313
+ "category": "date",
314
+ "module": "@dereekb/firebase",
315
+ "subpath": "model/system/system.scheduler",
316
+ "signature": "hasRunInCurrentHour(lastRunAt: Maybe<Date>, now?: Maybe<Date>): boolean",
317
+ "description": "Whether the last run falls inside the same hour as now.\n\nThis is a same-hour-bucket compare, not an elapsed-time compare: a run at 12:59 and a `now` of\n13:01 are two minutes apart but in different hours, so this returns false. That is what makes the\ngate track the hourly cron rather than drift with it.\n\nA null `lastRunAt` means nothing has run, so it returns false.",
318
+ "params": [
319
+ {
320
+ "name": "lastRunAt",
321
+ "type": "Maybe<Date>",
322
+ "description": "- Moment the work last ran.",
323
+ "optional": false
324
+ },
325
+ {
326
+ "name": "now",
327
+ "type": "Maybe<Date>",
328
+ "description": "- Moment to compare against; defaults to now.",
329
+ "optional": true
330
+ }
331
+ ],
332
+ "returns": "True when both moments fall in the same hour.",
333
+ "tags": [
334
+ "schedule",
335
+ "hour",
336
+ "throttle",
337
+ "cron",
338
+ "gate",
339
+ "window",
340
+ "date",
341
+ "has",
342
+ "run",
343
+ "in",
344
+ "current",
345
+ "hasrunincurrenthour"
346
+ ],
347
+ "example": "hasRunInCurrentHour(new Date('2024-01-01T12:05:00'), new Date('2024-01-01T12:55:00')); // true\nhasRunInCurrentHour(new Date('2024-01-01T12:59:00'), new Date('2024-01-01T13:01:00')); // false",
348
+ "relatedSlugs": [
349
+ "is-nth-hour-of-day",
350
+ "round-down-to-hour"
351
+ ]
352
+ },
353
+ {
354
+ "slug": "nth-hour-of-day-index",
355
+ "name": "nthHourOfDayIndex",
356
+ "kind": "function",
357
+ "category": "date",
358
+ "module": "@dereekb/firebase",
359
+ "subpath": "model/system/system.scheduler",
360
+ "signature": "nthHourOfDayIndex(everyNHours: Hours, date?: Maybe<Date>): Maybe<number>",
361
+ "description": "The zero-based index of the date's hour within the day's every-N-hours schedule, or null when the\nhour is not an Nth hour.\n\nAt hour 12 with N=3 the day's matching hours are 0, 3, 6, 9, 12 — so the index is 4. Use it to\nrotate work across a day's windows (\"do the expensive pass only on index 0\") without each caller\nre-deriving the arithmetic from the hour-of-day.\n\nReturns null rather than a number for a non-matching hour, so a falsy check cannot confuse\n\"index 0\" — the first window of the day — with \"no window\".",
362
+ "params": [
363
+ {
364
+ "name": "everyNHours",
365
+ "type": "Hours",
366
+ "description": "- Run every Nth hour of the day.",
367
+ "optional": false
368
+ },
369
+ {
370
+ "name": "date",
371
+ "type": "Maybe<Date>",
372
+ "description": "- Moment to test; defaults to now.",
373
+ "optional": true
374
+ }
375
+ ],
376
+ "returns": "The zero-based window index, or null when the hour is not an Nth hour.",
377
+ "tags": [
378
+ "schedule",
379
+ "hour",
380
+ "throttle",
381
+ "cron",
382
+ "gate",
383
+ "index",
384
+ "window",
385
+ "date",
386
+ "nth",
387
+ "of",
388
+ "day",
389
+ "nthhourofdayindex"
390
+ ],
391
+ "example": "nthHourOfDayIndex(3, new Date('2024-01-01T12:30:00')); // 4 (0, 3, 6, 9, 12)\nnthHourOfDayIndex(3, new Date('2024-01-01T13:30:00')); // null (13 % 3 !== 0)",
392
+ "relatedSlugs": [
393
+ "is-nth-hour-of-day"
394
+ ]
395
+ },
266
396
  {
267
397
  "slug": "new-documents",
268
398
  "name": "newDocuments",
@@ -489,6 +489,19 @@
489
489
  ],
490
490
  "notes": "The minute of the day.\n\nNumber from 0-1439."
491
491
  },
492
+ {
493
+ "name": "UtcOffsetString",
494
+ "package": "@dereekb/util",
495
+ "module": "src/lib/date/offset",
496
+ "kind": "semantic-type",
497
+ "definition": "string",
498
+ "baseType": "string",
499
+ "topics": [
500
+ "timezone",
501
+ "string"
502
+ ],
503
+ "notes": "A UTC offset rendered in the ISO 8601 basic format, as a sign followed by two-digit hours and minutes.\n\nExamples:\n- -0600\n- +0530\n- +0000"
504
+ },
492
505
  {
493
506
  "name": "EncryptedString",
494
507
  "package": "@dereekb/util",
@@ -1340,6 +1353,19 @@
1340
1353
  ],
1341
1354
  "notes": "A website's domain and path combined, without the BaseWebsiteUrl\n\nExamples:\n- dereekb.com\n- components.dereekb.com/\n- components.dereekb.com/doc/home"
1342
1355
  },
1356
+ {
1357
+ "name": "UriScheme",
1358
+ "package": "@dereekb/util",
1359
+ "module": "src/lib/string/url",
1360
+ "kind": "semantic-type",
1361
+ "definition": "string",
1362
+ "baseType": "string",
1363
+ "topics": [
1364
+ "url",
1365
+ "string"
1366
+ ],
1367
+ "notes": "A URI scheme, without the trailing colon.\n\nExamples:\n- https\n- mailto\n- tel"
1368
+ },
1343
1369
  {
1344
1370
  "name": "CityString",
1345
1371
  "package": "@dereekb/util",