tyrell-components 1.0.0-RC12 → 1.0.0-RC14
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/README.md +2 -1
- package/css/tyrell-colors-static.css +316 -0
- package/css/tyrell-theme.css +1443 -0
- package/css/tyrell.css +127 -423
- package/dist/tyrell-colors-static.css +316 -0
- package/dist/tyrell-theme.css +1443 -0
- package/dist/tyrell.css +127 -423
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +20 -10
- package/lib/base/ty-component.js +21 -144
- package/lib/components/button.d.ts +9 -16
- package/lib/components/button.js +12 -37
- package/lib/components/calendar-month.d.ts +17 -46
- package/lib/components/calendar-month.js +97 -145
- package/lib/components/calendar-navigation.d.ts +3 -48
- package/lib/components/calendar-navigation.js +3 -126
- package/lib/components/calendar.d.ts +6 -81
- package/lib/components/calendar.js +24 -236
- package/lib/components/checkbox.d.ts +8 -74
- package/lib/components/checkbox.js +21 -177
- package/lib/components/copy.d.ts +7 -59
- package/lib/components/copy.js +19 -137
- package/lib/components/date-picker.d.ts +23 -161
- package/lib/components/date-picker.js +127 -588
- package/lib/components/file-upload.d.ts +9 -15
- package/lib/components/file-upload.js +19 -41
- package/lib/components/icon.d.ts +3 -24
- package/lib/components/icon.js +1 -90
- package/lib/components/input.d.ts +10 -109
- package/lib/components/input.js +24 -209
- package/lib/components/modal.d.ts +17 -26
- package/lib/components/modal.js +67 -192
- package/lib/components/option.d.ts +2 -20
- package/lib/components/option.js +1 -148
- package/lib/components/popup.d.ts +2 -17
- package/lib/components/popup.js +35 -132
- package/lib/components/radio.d.ts +7 -24
- package/lib/components/radio.js +24 -68
- package/lib/components/resize-observer.d.ts +3 -30
- package/lib/components/resize-observer.js +12 -46
- package/lib/components/scroll-container.d.ts +2 -12
- package/lib/components/scroll-container.js +3 -46
- package/lib/components/select.d.ts +130 -151
- package/lib/components/select.js +327 -516
- package/lib/components/selected-tags.d.ts +8 -38
- package/lib/components/selected-tags.js +20 -78
- package/lib/components/step.d.ts +1 -6
- package/lib/components/step.js +0 -6
- package/lib/components/switch.d.ts +4 -14
- package/lib/components/switch.js +15 -61
- package/lib/components/tab.d.ts +1 -6
- package/lib/components/tab.js +0 -7
- package/lib/components/tabs.d.ts +5 -63
- package/lib/components/tabs.js +159 -267
- package/lib/components/tag.d.ts +2 -36
- package/lib/components/tag.js +5 -105
- package/lib/components/textarea.d.ts +6 -86
- package/lib/components/textarea.js +2 -173
- package/lib/components/tooltip.d.ts +7 -13
- package/lib/components/tooltip.js +83 -180
- package/lib/components/wizard.d.ts +6 -54
- package/lib/components/wizard.js +27 -221
- package/lib/icons/fontawesome/brands.d.ts +0 -1
- package/lib/icons/fontawesome/brands.js +0 -8
- package/lib/icons/fontawesome/regular.d.ts +0 -1
- package/lib/icons/fontawesome/regular.js +0 -8
- package/lib/icons/fontawesome/solid.d.ts +0 -1
- package/lib/icons/fontawesome/solid.js +0 -8
- package/lib/icons/heroicons/micro.d.ts +0 -1
- package/lib/icons/heroicons/micro.js +0 -8
- package/lib/icons/heroicons/mini.d.ts +0 -1
- package/lib/icons/heroicons/mini.js +0 -8
- package/lib/icons/heroicons/outline.d.ts +0 -1
- package/lib/icons/heroicons/outline.js +0 -8
- package/lib/icons/heroicons/solid.d.ts +0 -1
- package/lib/icons/heroicons/solid.js +0 -8
- package/lib/icons/lucide.d.ts +0 -1
- package/lib/icons/lucide.js +0 -1872
- package/lib/icons/material/filled.d.ts +0 -1
- package/lib/icons/material/filled.js +0 -10
- package/lib/icons/material/outlined.d.ts +0 -1
- package/lib/icons/material/outlined.js +0 -10
- package/lib/icons/material/round.d.ts +0 -1
- package/lib/icons/material/round.js +0 -10
- package/lib/icons/material/sharp.d.ts +0 -1
- package/lib/icons/material/sharp.js +0 -10
- package/lib/icons/material/two-tone.d.ts +0 -1
- package/lib/icons/material/two-tone.js +0 -10
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -21
- package/lib/styles/button.d.ts +19 -7
- package/lib/styles/button.js +180 -77
- package/lib/styles/calendar-month.d.ts +4 -6
- package/lib/styles/calendar-month.js +57 -59
- package/lib/styles/calendar-navigation.d.ts +2 -6
- package/lib/styles/calendar-navigation.js +3 -28
- package/lib/styles/calendar.d.ts +1 -2
- package/lib/styles/calendar.js +1 -14
- package/lib/styles/checkbox.d.ts +3 -2
- package/lib/styles/checkbox.js +24 -68
- package/lib/styles/copy.d.ts +3 -2
- package/lib/styles/copy.js +25 -17
- package/lib/styles/custom-scrollbar.d.ts +1 -2
- package/lib/styles/custom-scrollbar.js +5 -20
- package/lib/styles/date-picker.d.ts +4 -6
- package/lib/styles/date-picker.js +80 -130
- package/lib/styles/file-upload.d.ts +1 -2
- package/lib/styles/file-upload.js +4 -19
- package/lib/styles/icon.d.ts +2 -6
- package/lib/styles/icon.js +7 -21
- package/lib/styles/input.d.ts +4 -7
- package/lib/styles/input.js +55 -160
- package/lib/styles/modal.d.ts +1 -2
- package/lib/styles/modal.js +21 -23
- package/lib/styles/option.d.ts +2 -6
- package/lib/styles/option.js +17 -63
- package/lib/styles/popup.d.ts +1 -2
- package/lib/styles/popup.js +26 -30
- package/lib/styles/radio.d.ts +3 -2
- package/lib/styles/radio.js +21 -32
- package/lib/styles/resize-observer.d.ts +1 -2
- package/lib/styles/resize-observer.js +0 -7
- package/lib/styles/scroll-container.d.ts +1 -2
- package/lib/styles/scroll-container.js +0 -19
- package/lib/styles/select-base.d.ts +8 -0
- package/lib/styles/{multiselect.js → select-base.js} +264 -127
- package/lib/styles/select.d.ts +3 -4
- package/lib/styles/select.js +103 -43
- package/lib/styles/step.d.ts +1 -2
- package/lib/styles/step.js +0 -4
- package/lib/styles/switch.d.ts +3 -2
- package/lib/styles/switch.js +20 -23
- package/lib/styles/tab.d.ts +1 -2
- package/lib/styles/tab.js +0 -5
- package/lib/styles/tabs.d.ts +3 -11
- package/lib/styles/tabs.js +77 -45
- package/lib/styles/tag.d.ts +1 -5
- package/lib/styles/tag.js +6 -32
- package/lib/styles/textarea.d.ts +1 -2
- package/lib/styles/textarea.js +7 -50
- package/lib/styles/tooltip.d.ts +4 -3
- package/lib/styles/tooltip.js +0 -125
- package/lib/styles/wizard.d.ts +5 -21
- package/lib/styles/wizard.js +23 -91
- package/lib/types/common.d.ts +1 -3
- package/lib/types/common.js +0 -10
- package/lib/utils/calendar-utils.d.ts +4 -21
- package/lib/utils/calendar-utils.js +4 -177
- package/lib/utils/custom-scrollbar.d.ts +6 -20
- package/lib/utils/custom-scrollbar.js +1 -45
- package/lib/utils/flavor-sheet.d.ts +0 -1
- package/lib/utils/flavor-sheet.js +0 -23
- package/lib/utils/icon-registry.d.ts +0 -2
- package/lib/utils/icon-registry.js +1 -107
- package/lib/utils/icons.d.ts +9 -0
- package/lib/utils/icons.js +1 -0
- package/lib/utils/loader-registry.d.ts +2 -3
- package/lib/utils/loader-registry.js +0 -32
- package/lib/utils/locale.d.ts +2 -23
- package/lib/utils/locale.js +0 -86
- package/lib/utils/mobile.d.ts +0 -1
- package/lib/utils/mobile.js +0 -17
- package/lib/utils/number-format.d.ts +6 -3
- package/lib/utils/number-format.js +11 -67
- package/lib/utils/positioning.d.ts +77 -3
- package/lib/utils/positioning.js +67 -58
- package/lib/utils/property-capture.d.ts +5 -27
- package/lib/utils/property-capture.js +0 -108
- package/lib/utils/property-manager.d.ts +0 -1
- package/lib/utils/property-manager.js +0 -70
- package/lib/utils/resize-observer.d.ts +0 -1
- package/lib/utils/resize-observer.js +0 -36
- package/lib/utils/scroll-lock.d.ts +4 -11
- package/lib/utils/scroll-lock.js +0 -107
- package/lib/utils/styles.d.ts +0 -1
- package/lib/utils/styles.js +0 -24
- package/lib/version.d.ts +1 -2
- package/lib/version.js +1 -11
- package/package.json +8 -5
- package/css/tyrell-brand.css +0 -1015
- package/dist/tyrell-brand.css +0 -1015
- package/lib/base/ty-component.d.ts.map +0 -1
- package/lib/base/ty-component.js.map +0 -1
- package/lib/components/button.d.ts.map +0 -1
- package/lib/components/button.js.map +0 -1
- package/lib/components/calendar-month.d.ts.map +0 -1
- package/lib/components/calendar-month.js.map +0 -1
- package/lib/components/calendar-navigation.d.ts.map +0 -1
- package/lib/components/calendar-navigation.js.map +0 -1
- package/lib/components/calendar.d.ts.map +0 -1
- package/lib/components/calendar.js.map +0 -1
- package/lib/components/checkbox.d.ts.map +0 -1
- package/lib/components/checkbox.js.map +0 -1
- package/lib/components/copy.d.ts.map +0 -1
- package/lib/components/copy.js.map +0 -1
- package/lib/components/date-picker.d.ts.map +0 -1
- package/lib/components/date-picker.js.map +0 -1
- package/lib/components/file-upload.d.ts.map +0 -1
- package/lib/components/file-upload.js.map +0 -1
- package/lib/components/icon.d.ts.map +0 -1
- package/lib/components/icon.js.map +0 -1
- package/lib/components/input.d.ts.map +0 -1
- package/lib/components/input.js.map +0 -1
- package/lib/components/modal.d.ts.map +0 -1
- package/lib/components/modal.js.map +0 -1
- package/lib/components/option.d.ts.map +0 -1
- package/lib/components/option.js.map +0 -1
- package/lib/components/popup.d.ts.map +0 -1
- package/lib/components/popup.js.map +0 -1
- package/lib/components/radio.d.ts.map +0 -1
- package/lib/components/radio.js.map +0 -1
- package/lib/components/resize-observer.d.ts.map +0 -1
- package/lib/components/resize-observer.js.map +0 -1
- package/lib/components/scroll-container.d.ts.map +0 -1
- package/lib/components/scroll-container.js.map +0 -1
- package/lib/components/select.d.ts.map +0 -1
- package/lib/components/select.js.map +0 -1
- package/lib/components/selected-tags.d.ts.map +0 -1
- package/lib/components/selected-tags.js.map +0 -1
- package/lib/components/step.d.ts.map +0 -1
- package/lib/components/step.js.map +0 -1
- package/lib/components/switch.d.ts.map +0 -1
- package/lib/components/switch.js.map +0 -1
- package/lib/components/tab.d.ts.map +0 -1
- package/lib/components/tab.js.map +0 -1
- package/lib/components/tabs.d.ts.map +0 -1
- package/lib/components/tabs.js.map +0 -1
- package/lib/components/tag.d.ts.map +0 -1
- package/lib/components/tag.js.map +0 -1
- package/lib/components/textarea.d.ts.map +0 -1
- package/lib/components/textarea.js.map +0 -1
- package/lib/components/tooltip.d.ts.map +0 -1
- package/lib/components/tooltip.js.map +0 -1
- package/lib/components/wizard.d.ts.map +0 -1
- package/lib/components/wizard.js.map +0 -1
- package/lib/icons/fontawesome/brands.d.ts.map +0 -1
- package/lib/icons/fontawesome/brands.js.map +0 -1
- package/lib/icons/fontawesome/regular.d.ts.map +0 -1
- package/lib/icons/fontawesome/regular.js.map +0 -1
- package/lib/icons/fontawesome/solid.d.ts.map +0 -1
- package/lib/icons/fontawesome/solid.js.map +0 -1
- package/lib/icons/heroicons/micro.d.ts.map +0 -1
- package/lib/icons/heroicons/micro.js.map +0 -1
- package/lib/icons/heroicons/mini.d.ts.map +0 -1
- package/lib/icons/heroicons/mini.js.map +0 -1
- package/lib/icons/heroicons/outline.d.ts.map +0 -1
- package/lib/icons/heroicons/outline.js.map +0 -1
- package/lib/icons/heroicons/solid.d.ts.map +0 -1
- package/lib/icons/heroicons/solid.js.map +0 -1
- package/lib/icons/lucide.d.ts.map +0 -1
- package/lib/icons/lucide.js.map +0 -1
- package/lib/icons/material/filled.d.ts.map +0 -1
- package/lib/icons/material/filled.js.map +0 -1
- package/lib/icons/material/outlined.d.ts.map +0 -1
- package/lib/icons/material/outlined.js.map +0 -1
- package/lib/icons/material/round.d.ts.map +0 -1
- package/lib/icons/material/round.js.map +0 -1
- package/lib/icons/material/sharp.d.ts.map +0 -1
- package/lib/icons/material/sharp.js.map +0 -1
- package/lib/icons/material/two-tone.d.ts.map +0 -1
- package/lib/icons/material/two-tone.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/styles/button.d.ts.map +0 -1
- package/lib/styles/button.js.map +0 -1
- package/lib/styles/calendar-month.d.ts.map +0 -1
- package/lib/styles/calendar-month.js.map +0 -1
- package/lib/styles/calendar-navigation.d.ts.map +0 -1
- package/lib/styles/calendar-navigation.js.map +0 -1
- package/lib/styles/calendar.d.ts.map +0 -1
- package/lib/styles/calendar.js.map +0 -1
- package/lib/styles/checkbox.d.ts.map +0 -1
- package/lib/styles/checkbox.js.map +0 -1
- package/lib/styles/copy.d.ts.map +0 -1
- package/lib/styles/copy.js.map +0 -1
- package/lib/styles/custom-scrollbar.d.ts.map +0 -1
- package/lib/styles/custom-scrollbar.js.map +0 -1
- package/lib/styles/date-picker.d.ts.map +0 -1
- package/lib/styles/date-picker.js.map +0 -1
- package/lib/styles/file-upload.d.ts.map +0 -1
- package/lib/styles/file-upload.js.map +0 -1
- package/lib/styles/icon.d.ts.map +0 -1
- package/lib/styles/icon.js.map +0 -1
- package/lib/styles/input.d.ts.map +0 -1
- package/lib/styles/input.js.map +0 -1
- package/lib/styles/modal.d.ts.map +0 -1
- package/lib/styles/modal.js.map +0 -1
- package/lib/styles/multiselect.d.ts +0 -6
- package/lib/styles/multiselect.d.ts.map +0 -1
- package/lib/styles/multiselect.js.map +0 -1
- package/lib/styles/option.d.ts.map +0 -1
- package/lib/styles/option.js.map +0 -1
- package/lib/styles/popup.d.ts.map +0 -1
- package/lib/styles/popup.js.map +0 -1
- package/lib/styles/radio.d.ts.map +0 -1
- package/lib/styles/radio.js.map +0 -1
- package/lib/styles/resize-observer.d.ts.map +0 -1
- package/lib/styles/resize-observer.js.map +0 -1
- package/lib/styles/scroll-container.d.ts.map +0 -1
- package/lib/styles/scroll-container.js.map +0 -1
- package/lib/styles/select.d.ts.map +0 -1
- package/lib/styles/select.js.map +0 -1
- package/lib/styles/step.d.ts.map +0 -1
- package/lib/styles/step.js.map +0 -1
- package/lib/styles/switch.d.ts.map +0 -1
- package/lib/styles/switch.js.map +0 -1
- package/lib/styles/tab.d.ts.map +0 -1
- package/lib/styles/tab.js.map +0 -1
- package/lib/styles/tabs.d.ts.map +0 -1
- package/lib/styles/tabs.js.map +0 -1
- package/lib/styles/tag.d.ts.map +0 -1
- package/lib/styles/tag.js.map +0 -1
- package/lib/styles/textarea.d.ts.map +0 -1
- package/lib/styles/textarea.js.map +0 -1
- package/lib/styles/tooltip.d.ts.map +0 -1
- package/lib/styles/tooltip.js.map +0 -1
- package/lib/styles/wizard.d.ts.map +0 -1
- package/lib/styles/wizard.js.map +0 -1
- package/lib/types/common.d.ts.map +0 -1
- package/lib/types/common.js.map +0 -1
- package/lib/utils/calendar-utils.d.ts.map +0 -1
- package/lib/utils/calendar-utils.js.map +0 -1
- package/lib/utils/custom-scrollbar.d.ts.map +0 -1
- package/lib/utils/custom-scrollbar.js.map +0 -1
- package/lib/utils/flavor-sheet.d.ts.map +0 -1
- package/lib/utils/flavor-sheet.js.map +0 -1
- package/lib/utils/icon-registry.d.ts.map +0 -1
- package/lib/utils/icon-registry.js.map +0 -1
- package/lib/utils/loader-registry.d.ts.map +0 -1
- package/lib/utils/loader-registry.js.map +0 -1
- package/lib/utils/locale.d.ts.map +0 -1
- package/lib/utils/locale.js.map +0 -1
- package/lib/utils/mobile.d.ts.map +0 -1
- package/lib/utils/mobile.js.map +0 -1
- package/lib/utils/number-format.d.ts.map +0 -1
- package/lib/utils/number-format.js.map +0 -1
- package/lib/utils/parse-boolean.d.ts +0 -39
- package/lib/utils/parse-boolean.d.ts.map +0 -1
- package/lib/utils/parse-boolean.js +0 -58
- package/lib/utils/parse-boolean.js.map +0 -1
- package/lib/utils/positioning.d.ts.map +0 -1
- package/lib/utils/positioning.js.map +0 -1
- package/lib/utils/property-capture.d.ts.map +0 -1
- package/lib/utils/property-capture.js.map +0 -1
- package/lib/utils/property-manager.d.ts.map +0 -1
- package/lib/utils/property-manager.js.map +0 -1
- package/lib/utils/resize-observer.d.ts.map +0 -1
- package/lib/utils/resize-observer.js.map +0 -1
- package/lib/utils/scroll-lock.d.ts.map +0 -1
- package/lib/utils/scroll-lock.js.map +0 -1
- package/lib/utils/styles.d.ts.map +0 -1
- package/lib/utils/styles.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js.map +0 -1
|
@@ -1,89 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Calendar Utilities
|
|
3
|
-
*
|
|
4
|
-
* Pure TypeScript utilities for calendar month generation and localization.
|
|
5
|
-
* Ported from ClojureScript ty/date/core.cljs
|
|
6
|
-
*
|
|
7
|
-
* Key Features:
|
|
8
|
-
* - 42-day calendar grid generation (6 weeks × 7 days)
|
|
9
|
-
* - Monday-first week ordering
|
|
10
|
-
* - Rich day context with metadata
|
|
11
|
-
* - Localized weekday names
|
|
12
|
-
* - No external dependencies (native Date API only)
|
|
13
|
-
*
|
|
14
|
-
* Note on Timestamps:
|
|
15
|
-
* - `value`: UTC timestamp at midnight UTC (timezone-independent, use for storage/server)
|
|
16
|
-
* - `localValue`: Local timestamp at midnight local time (use for display/local calculations)
|
|
17
|
-
* - `year/month/dayInMonth`: Calendar date components (user's mental model)
|
|
18
|
-
*
|
|
19
|
-
* Example for October 13, 2025:
|
|
20
|
-
* - value = Date.UTC(2025, 9, 13) = consistent worldwide
|
|
21
|
-
* - localValue = new Date(2025, 9, 13).getTime() = varies by timezone
|
|
22
|
-
* - Both represent the same calendar date, different moments in time
|
|
23
|
-
*/
|
|
24
|
-
// ============================================================================
|
|
25
|
-
// Validation Functions
|
|
26
|
-
// ============================================================================
|
|
27
|
-
/**
|
|
28
|
-
* Validate month value (1-12)
|
|
29
|
-
*/
|
|
30
1
|
function validateMonth(month) {
|
|
31
2
|
if (!Number.isInteger(month) || month < 1 || month > 12) {
|
|
32
3
|
throw new RangeError(`Invalid month: ${month}. Must be an integer between 1 and 12.`);
|
|
33
4
|
}
|
|
34
5
|
}
|
|
35
|
-
/**
|
|
36
|
-
* Validate year value (reasonable range)
|
|
37
|
-
*/
|
|
38
6
|
function validateYear(year) {
|
|
39
7
|
if (!Number.isInteger(year) || year < 1 || year > 9999) {
|
|
40
8
|
throw new RangeError(`Invalid year: ${year}. Must be an integer between 1 and 9999.`);
|
|
41
9
|
}
|
|
42
10
|
}
|
|
43
|
-
// ============================================================================
|
|
44
|
-
// Helper Functions
|
|
45
|
-
// ============================================================================
|
|
46
|
-
/**
|
|
47
|
-
* Check if two dates are on the same day (ignoring time)
|
|
48
|
-
* Works in local timezone
|
|
49
|
-
*/
|
|
50
11
|
function isSameDay(date1, date2) {
|
|
51
12
|
return date1.getFullYear() === date2.getFullYear()
|
|
52
13
|
&& date1.getMonth() === date2.getMonth()
|
|
53
14
|
&& date1.getDate() === date2.getDate();
|
|
54
15
|
}
|
|
55
|
-
/**
|
|
56
|
-
* Create a date at midnight local time
|
|
57
|
-
* This ensures consistent behavior across the application
|
|
58
|
-
*/
|
|
59
16
|
function createMidnightDate(year, month, day) {
|
|
60
17
|
return new Date(year, month - 1, day, 0, 0, 0, 0);
|
|
61
18
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Get today's date at midnight local time
|
|
64
|
-
* Used for consistent "today" detection
|
|
65
|
-
*/
|
|
66
19
|
function getTodayMidnight() {
|
|
67
20
|
const now = new Date();
|
|
68
21
|
return new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
|
|
69
22
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Create a DayContext from a Date object
|
|
72
|
-
*
|
|
73
|
-
* @param date - The date to create context for (should be at midnight)
|
|
74
|
-
* @param targetYear - The year of the calendar month being displayed
|
|
75
|
-
* @param targetMonth - The month (1-12) of the calendar month being displayed
|
|
76
|
-
* @param selection - Optional selection state from calendar
|
|
77
|
-
* @returns Rich day context with metadata
|
|
78
|
-
*/
|
|
79
23
|
function createDayContext(date, targetYear, targetMonth, selection) {
|
|
80
24
|
const year = date.getFullYear();
|
|
81
|
-
const month = date.getMonth() + 1;
|
|
25
|
+
const month = date.getMonth() + 1;
|
|
82
26
|
const dayInMonth = date.getDate();
|
|
83
|
-
const dayOfWeek = date.getDay();
|
|
84
|
-
// Check if this day is from a different month
|
|
27
|
+
const dayOfWeek = date.getDay();
|
|
85
28
|
const isOtherMonth = year !== targetYear || month !== targetMonth;
|
|
86
|
-
// Determine if previous or next month
|
|
87
29
|
let isPrevMonth = false;
|
|
88
30
|
let isNextMonth = false;
|
|
89
31
|
if (isOtherMonth) {
|
|
@@ -94,16 +36,11 @@ function createDayContext(date, targetYear, targetMonth, selection) {
|
|
|
94
36
|
isNextMonth = true;
|
|
95
37
|
}
|
|
96
38
|
}
|
|
97
|
-
// Check if today (compare dates at midnight for consistency)
|
|
98
39
|
const todayMidnight = getTodayMidnight();
|
|
99
40
|
const isToday = isSameDay(date, todayMidnight);
|
|
100
|
-
// Check if this day is selected
|
|
101
41
|
const isSelected = selection?.year === year
|
|
102
42
|
&& selection?.month === month
|
|
103
43
|
&& selection?.day === dayInMonth;
|
|
104
|
-
// Calculate both UTC and local timestamps
|
|
105
|
-
// value: UTC midnight (consistent worldwide for the same date)
|
|
106
|
-
// localValue: Local midnight (respects user's timezone)
|
|
107
44
|
const utcValue = Date.UTC(year, month - 1, dayInMonth, 0, 0, 0, 0);
|
|
108
45
|
const localValue = date.getTime();
|
|
109
46
|
return {
|
|
@@ -123,64 +60,23 @@ function createDayContext(date, targetYear, targetMonth, selection) {
|
|
|
123
60
|
selectedDay: selection?.day,
|
|
124
61
|
};
|
|
125
62
|
}
|
|
126
|
-
/**
|
|
127
|
-
* Get the Monday at or before a given date
|
|
128
|
-
* (Monday = start of week in ISO 8601)
|
|
129
|
-
*
|
|
130
|
-
* @param date - Any date
|
|
131
|
-
* @returns The Monday of that week at midnight
|
|
132
|
-
*/
|
|
133
63
|
function getMondayOfWeek(date) {
|
|
134
|
-
const dayOfWeek = date.getDay();
|
|
135
|
-
// Calculate days to subtract to get to Monday
|
|
136
|
-
// Sunday (0) → go back 6 days
|
|
137
|
-
// Monday (1) → go back 0 days
|
|
138
|
-
// Tuesday (2) → go back 1 day
|
|
139
|
-
// ...
|
|
64
|
+
const dayOfWeek = date.getDay();
|
|
140
65
|
const daysToMonday = dayOfWeek === 0 ? 6 : dayOfWeek - 1;
|
|
141
|
-
// Create new date at Monday midnight
|
|
142
66
|
const monday = new Date(date);
|
|
143
67
|
monday.setDate(date.getDate() - daysToMonday);
|
|
144
|
-
monday.setHours(0, 0, 0, 0);
|
|
68
|
+
monday.setHours(0, 0, 0, 0);
|
|
145
69
|
return monday;
|
|
146
70
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Get the start date for the calendar grid
|
|
149
|
-
* (The Monday at or before the first day of the month)
|
|
150
|
-
*
|
|
151
|
-
* @param year - Year
|
|
152
|
-
* @param month - Month (1-12)
|
|
153
|
-
* @returns The Monday that starts the calendar grid
|
|
154
|
-
*/
|
|
155
71
|
function getMonthGridStart(year, month) {
|
|
156
|
-
// Get first day of month at midnight (month is 1-based, Date constructor is 0-based)
|
|
157
72
|
const firstDay = createMidnightDate(year, month, 1);
|
|
158
|
-
// Get the Monday of that week
|
|
159
73
|
return getMondayOfWeek(firstDay);
|
|
160
74
|
}
|
|
161
|
-
/**
|
|
162
|
-
* Add days to a date safely
|
|
163
|
-
* Creates a new date without mutating the original
|
|
164
|
-
*
|
|
165
|
-
* @param date - Starting date
|
|
166
|
-
* @param days - Number of days to add
|
|
167
|
-
* @returns New date with days added
|
|
168
|
-
*/
|
|
169
75
|
function addDays(date, days) {
|
|
170
76
|
const result = new Date(date);
|
|
171
77
|
result.setDate(result.getDate() + days);
|
|
172
78
|
return result;
|
|
173
79
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Generate N consecutive days starting from a date
|
|
176
|
-
*
|
|
177
|
-
* @param startDate - Starting date
|
|
178
|
-
* @param count - Number of days to generate
|
|
179
|
-
* @param targetYear - Year of the calendar month
|
|
180
|
-
* @param targetMonth - Month (1-12) of the calendar month
|
|
181
|
-
* @param selection - Optional selection state to include in day contexts
|
|
182
|
-
* @returns Array of day contexts
|
|
183
|
-
*/
|
|
184
80
|
function generateDays(startDate, count, targetYear, targetMonth, selection) {
|
|
185
81
|
const days = [];
|
|
186
82
|
for (let i = 0; i < count; i++) {
|
|
@@ -189,94 +85,28 @@ function generateDays(startDate, count, targetYear, targetMonth, selection) {
|
|
|
189
85
|
}
|
|
190
86
|
return days;
|
|
191
87
|
}
|
|
192
|
-
// ============================================================================
|
|
193
|
-
// Main Calendar Functions
|
|
194
|
-
// ============================================================================
|
|
195
|
-
/**
|
|
196
|
-
* Generate a 42-day calendar grid for a given month
|
|
197
|
-
*
|
|
198
|
-
* Returns 6 weeks (42 days) starting from the Monday at or before
|
|
199
|
-
* the first day of the month. This ensures a complete calendar view
|
|
200
|
-
* with days from the previous and next months as needed.
|
|
201
|
-
*
|
|
202
|
-
* @param year - Year (e.g., 2025)
|
|
203
|
-
* @param month - Month (1-12, 1 = January)
|
|
204
|
-
* @param selection - Optional selection state to include in day contexts
|
|
205
|
-
* @returns Array of 42 day contexts with rich metadata
|
|
206
|
-
*
|
|
207
|
-
* @throws {RangeError} If year or month are invalid
|
|
208
|
-
*
|
|
209
|
-
* @example
|
|
210
|
-
* const days = getCalendarMonthDays(2025, 10); // October 2025
|
|
211
|
-
* console.log(days.length); // 42
|
|
212
|
-
* console.log(days[0].dayInMonth); // First day shown (might be from September)
|
|
213
|
-
*/
|
|
214
88
|
export function getCalendarMonthDays(year, month, selection) {
|
|
215
|
-
// Validate inputs
|
|
216
89
|
validateYear(year);
|
|
217
90
|
validateMonth(month);
|
|
218
91
|
const startDate = getMonthGridStart(year, month);
|
|
219
92
|
return generateDays(startDate, 42, year, month, selection);
|
|
220
93
|
}
|
|
221
|
-
/**
|
|
222
|
-
* Get localized weekday names in Monday-first order
|
|
223
|
-
*
|
|
224
|
-
* Note: Intl.DateTimeFormat returns Sunday-first by default,
|
|
225
|
-
* so we reorder to Monday-first: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]
|
|
226
|
-
*
|
|
227
|
-
* @param locale - Locale string (e.g., "en-US", "de-DE", "ja-JP")
|
|
228
|
-
* @param style - Display style: "long" (Monday), "short" (Mon), "narrow" (M)
|
|
229
|
-
* @returns Array of 7 weekday names starting with Monday
|
|
230
|
-
*
|
|
231
|
-
* @example
|
|
232
|
-
* getLocalizedWeekdays("en-US", "short")
|
|
233
|
-
* // Returns: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
|
|
234
|
-
*
|
|
235
|
-
* getLocalizedWeekdays("de-DE", "long")
|
|
236
|
-
* // Returns: ["Montag", "Dienstag", "Mittwoch", ...]
|
|
237
|
-
*/
|
|
238
94
|
export function getLocalizedWeekdays(locale, style = 'short') {
|
|
239
95
|
const formatter = new Intl.DateTimeFormat(locale, { weekday: style });
|
|
240
|
-
// Create a Sunday (base date) - January 7, 2024 is a Sunday
|
|
241
96
|
const sunday = new Date(2024, 0, 7);
|
|
242
|
-
// Generate Sunday-first array: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
|
243
97
|
const sundayFirst = Array.from({ length: 7 }, (_, i) => {
|
|
244
98
|
const date = addDays(sunday, i);
|
|
245
99
|
return formatter.format(date);
|
|
246
100
|
});
|
|
247
|
-
// Reorder to Monday-first: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]
|
|
248
101
|
const [firstDay, ...rest] = sundayFirst;
|
|
249
102
|
return [...rest, firstDay];
|
|
250
103
|
}
|
|
251
|
-
// ============================================================================
|
|
252
|
-
// Utility Functions (for testing and debugging)
|
|
253
|
-
// ============================================================================
|
|
254
|
-
/**
|
|
255
|
-
* Get month name in specified locale
|
|
256
|
-
*
|
|
257
|
-
* @param month - Month (1-12)
|
|
258
|
-
* @param locale - Locale string
|
|
259
|
-
* @param style - Display style
|
|
260
|
-
* @returns Localized month name
|
|
261
|
-
*
|
|
262
|
-
* @throws {RangeError} If month is invalid
|
|
263
|
-
*/
|
|
264
104
|
export function getMonthName(month, locale = 'en-US', style = 'long') {
|
|
265
105
|
validateMonth(month);
|
|
266
106
|
const date = new Date(2024, month - 1, 1);
|
|
267
107
|
const formatter = new Intl.DateTimeFormat(locale, { month: style });
|
|
268
108
|
return formatter.format(date);
|
|
269
109
|
}
|
|
270
|
-
/**
|
|
271
|
-
* Parse an ISO date string (YYYY-MM-DD) into year, month, day components
|
|
272
|
-
*
|
|
273
|
-
* @param isoString - ISO date string (YYYY-MM-DD)
|
|
274
|
-
* @returns Object with year, month (1-12), and day, or null if invalid
|
|
275
|
-
*
|
|
276
|
-
* @example
|
|
277
|
-
* parseISODate("2025-10-13")
|
|
278
|
-
* // Returns: { year: 2025, month: 10, day: 13 }
|
|
279
|
-
*/
|
|
280
110
|
export function parseISODate(isoString) {
|
|
281
111
|
const match = isoString.match(/^(\d{4})-(\d{2})-(\d{2})$/);
|
|
282
112
|
if (!match)
|
|
@@ -284,18 +114,15 @@ export function parseISODate(isoString) {
|
|
|
284
114
|
const year = parseInt(match[1], 10);
|
|
285
115
|
const month = parseInt(match[2], 10);
|
|
286
116
|
const day = parseInt(match[3], 10);
|
|
287
|
-
// Validate ranges
|
|
288
117
|
if (year < 1 || year > 9999)
|
|
289
118
|
return null;
|
|
290
119
|
if (month < 1 || month > 12)
|
|
291
120
|
return null;
|
|
292
121
|
if (day < 1 || day > 31)
|
|
293
122
|
return null;
|
|
294
|
-
// Check if date is valid (handles Feb 30, etc.)
|
|
295
123
|
const date = new Date(year, month - 1, day);
|
|
296
124
|
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
297
125
|
return null;
|
|
298
126
|
}
|
|
299
127
|
return { year, month, day };
|
|
300
128
|
}
|
|
301
|
-
//# sourceMappingURL=calendar-utils.js.map
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CustomScrollbar -
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* const scrollbar = new CustomScrollbar(scrollEl, { vertical: true })
|
|
11
|
-
* // scrollbar.trackY, scrollbar.thumbY — append these to your DOM
|
|
12
|
-
* // scrollbar.trackX, scrollbar.thumbX — for horizontal
|
|
13
|
-
* scrollbar.destroy() // cleanup
|
|
14
|
-
*
|
|
15
|
-
* CSS classes applied:
|
|
16
|
-
* .ty-scrollbar-track-y / .ty-scrollbar-track-x
|
|
17
|
-
* .ty-scrollbar-thumb-y / .ty-scrollbar-thumb-x
|
|
18
|
-
* .has-overflow — when content overflows
|
|
19
|
-
* .dragging — during thumb drag
|
|
20
|
-
* .scrolling — briefly after scroll (auto-hide)
|
|
2
|
+
* CustomScrollbar - attaches a rendered scrollbar (vertical and/or horizontal)
|
|
3
|
+
* to any scrollable element. Overlay approach: native overflow:auto is kept for
|
|
4
|
+
* scroll physics, the native scrollbar is hidden via CSS, and custom track/thumb
|
|
5
|
+
* elements are synced on top. Append `trackY`/`trackX` to your DOM; `destroy()`
|
|
6
|
+
* cleans up. Classes: `.ty-scrollbar-{track,thumb}-{y,x}` plus state classes
|
|
7
|
+
* `.has-overflow`, `.dragging`, `.scrolling` (brief auto-hide after scroll).
|
|
21
8
|
*/
|
|
22
9
|
export interface CustomScrollbarOptions {
|
|
23
10
|
vertical?: boolean;
|
|
@@ -79,4 +66,3 @@ export declare class CustomScrollbar {
|
|
|
79
66
|
private _handleTrackYDown;
|
|
80
67
|
private _handleTrackXDown;
|
|
81
68
|
}
|
|
82
|
-
//# sourceMappingURL=custom-scrollbar.d.ts.map
|
|
@@ -1,40 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CustomScrollbar - Reusable scrollbar utility
|
|
3
|
-
*
|
|
4
|
-
* Attaches a custom rendered scrollbar (vertical and/or horizontal) to any
|
|
5
|
-
* scrollable element. Uses the overlay approach: native overflow:auto is
|
|
6
|
-
* preserved for scroll physics, native scrollbar is hidden via CSS,
|
|
7
|
-
* and custom track/thumb elements are synced on top.
|
|
8
|
-
*
|
|
9
|
-
* Usage:
|
|
10
|
-
* const scrollbar = new CustomScrollbar(scrollEl, { vertical: true })
|
|
11
|
-
* // scrollbar.trackY, scrollbar.thumbY — append these to your DOM
|
|
12
|
-
* // scrollbar.trackX, scrollbar.thumbX — for horizontal
|
|
13
|
-
* scrollbar.destroy() // cleanup
|
|
14
|
-
*
|
|
15
|
-
* CSS classes applied:
|
|
16
|
-
* .ty-scrollbar-track-y / .ty-scrollbar-track-x
|
|
17
|
-
* .ty-scrollbar-thumb-y / .ty-scrollbar-thumb-x
|
|
18
|
-
* .has-overflow — when content overflows
|
|
19
|
-
* .dragging — during thumb drag
|
|
20
|
-
* .scrolling — briefly after scroll (auto-hide)
|
|
21
|
-
*/
|
|
22
|
-
/**
|
|
23
|
-
* Check if custom scrollbar is enabled globally.
|
|
24
|
-
* Default: true (custom scrollbar on).
|
|
25
|
-
* Set data-ty-scrollbar="native" on <html> to opt out.
|
|
26
|
-
*/
|
|
27
1
|
export function isCustomScrollbarEnabled() {
|
|
28
2
|
return document.documentElement.getAttribute('data-ty-scrollbar') !== 'native';
|
|
29
3
|
}
|
|
30
4
|
export class CustomScrollbar {
|
|
31
5
|
constructor(scrollEl, options = {}) {
|
|
32
|
-
// Elements
|
|
33
6
|
this.trackY = null;
|
|
34
7
|
this.thumbY = null;
|
|
35
8
|
this.trackX = null;
|
|
36
9
|
this.thumbX = null;
|
|
37
|
-
// State
|
|
38
10
|
this._isDragging = false;
|
|
39
11
|
this._dragAxis = 'y';
|
|
40
12
|
this._dragStartPos = 0;
|
|
@@ -43,10 +15,9 @@ export class CustomScrollbar {
|
|
|
43
15
|
this._hideTimeout = null;
|
|
44
16
|
this._resizeObserver = null;
|
|
45
17
|
this._scrollEl = scrollEl;
|
|
46
|
-
this._vertical = options.vertical !== false;
|
|
18
|
+
this._vertical = options.vertical !== false;
|
|
47
19
|
this._horizontal = options.horizontal ?? false;
|
|
48
20
|
this._autoHideDelay = options.autoHideDelay ?? 1000;
|
|
49
|
-
// Bind handlers
|
|
50
21
|
this._onScroll = this._handleScroll.bind(this);
|
|
51
22
|
this._onThumbYDown = this._handleThumbYDown.bind(this);
|
|
52
23
|
this._onThumbXDown = this._handleThumbXDown.bind(this);
|
|
@@ -54,7 +25,6 @@ export class CustomScrollbar {
|
|
|
54
25
|
this._onTrackXDown = this._handleTrackXDown.bind(this);
|
|
55
26
|
this._onDragMove = this._handleDragMove.bind(this);
|
|
56
27
|
this._onDragEnd = this._handleDragEnd.bind(this);
|
|
57
|
-
// Create elements
|
|
58
28
|
if (this._vertical) {
|
|
59
29
|
this.trackY = this._createTrack('y');
|
|
60
30
|
this.thumbY = this._createThumb('y');
|
|
@@ -65,7 +35,6 @@ export class CustomScrollbar {
|
|
|
65
35
|
this.thumbX = this._createThumb('x');
|
|
66
36
|
this.trackX.appendChild(this.thumbX);
|
|
67
37
|
}
|
|
68
|
-
// Attach listeners
|
|
69
38
|
this._scrollEl.addEventListener('scroll', this._onScroll, { passive: true });
|
|
70
39
|
if (this.thumbY) {
|
|
71
40
|
this.thumbY.addEventListener('pointerdown', this._onThumbYDown);
|
|
@@ -79,13 +48,10 @@ export class CustomScrollbar {
|
|
|
79
48
|
if (this.trackX) {
|
|
80
49
|
this.trackX.addEventListener('pointerdown', this._onTrackXDown);
|
|
81
50
|
}
|
|
82
|
-
// ResizeObserver
|
|
83
51
|
this._resizeObserver = new ResizeObserver(() => this.update());
|
|
84
52
|
this._resizeObserver.observe(this._scrollEl);
|
|
85
|
-
// Initial update
|
|
86
53
|
this.update();
|
|
87
54
|
}
|
|
88
|
-
// ============ Element Creation ============
|
|
89
55
|
_createTrack(axis) {
|
|
90
56
|
const el = document.createElement('div');
|
|
91
57
|
el.className = `ty-scrollbar-track-${axis}`;
|
|
@@ -96,13 +62,10 @@ export class CustomScrollbar {
|
|
|
96
62
|
el.className = `ty-scrollbar-thumb-${axis}`;
|
|
97
63
|
return el;
|
|
98
64
|
}
|
|
99
|
-
// ============ Public API ============
|
|
100
|
-
/** Force update thumb size and position */
|
|
101
65
|
update() {
|
|
102
66
|
this._updateVertical();
|
|
103
67
|
this._updateHorizontal();
|
|
104
68
|
}
|
|
105
|
-
/** Reset scroll position */
|
|
106
69
|
scrollToTop(smooth = false) {
|
|
107
70
|
this._scrollEl.scrollTo({ top: 0, behavior: smooth ? 'smooth' : 'auto' });
|
|
108
71
|
}
|
|
@@ -115,7 +78,6 @@ export class CustomScrollbar {
|
|
|
115
78
|
scrollToRight(smooth = false) {
|
|
116
79
|
this._scrollEl.scrollTo({ left: this._scrollEl.scrollWidth, behavior: smooth ? 'smooth' : 'auto' });
|
|
117
80
|
}
|
|
118
|
-
/** Cleanup all listeners and observers */
|
|
119
81
|
destroy() {
|
|
120
82
|
this._scrollEl.removeEventListener('scroll', this._onScroll);
|
|
121
83
|
if (this.thumbY) {
|
|
@@ -143,7 +105,6 @@ export class CustomScrollbar {
|
|
|
143
105
|
this._hideTimeout = null;
|
|
144
106
|
}
|
|
145
107
|
}
|
|
146
|
-
// ============ Scroll Handler ============
|
|
147
108
|
_handleScroll() {
|
|
148
109
|
if (this._rafId !== null)
|
|
149
110
|
return;
|
|
@@ -153,7 +114,6 @@ export class CustomScrollbar {
|
|
|
153
114
|
this._showScrollbars();
|
|
154
115
|
});
|
|
155
116
|
}
|
|
156
|
-
// ============ Update Logic ============
|
|
157
117
|
_updateVertical() {
|
|
158
118
|
if (!this.trackY || !this.thumbY)
|
|
159
119
|
return;
|
|
@@ -208,7 +168,6 @@ export class CustomScrollbar {
|
|
|
208
168
|
const maxThumbLeft = trackWidth - thumbWidth;
|
|
209
169
|
this.thumbX.style.left = `${scrollRatio * maxThumbLeft}px`;
|
|
210
170
|
}
|
|
211
|
-
// ============ Auto-hide ============
|
|
212
171
|
_showScrollbars() {
|
|
213
172
|
if (this._isDragging)
|
|
214
173
|
return;
|
|
@@ -223,7 +182,6 @@ export class CustomScrollbar {
|
|
|
223
182
|
this._hideTimeout = null;
|
|
224
183
|
}, this._autoHideDelay);
|
|
225
184
|
}
|
|
226
|
-
// ============ Thumb Drag ============
|
|
227
185
|
_handleThumbYDown(e) {
|
|
228
186
|
if (e.button !== 0)
|
|
229
187
|
return;
|
|
@@ -291,7 +249,6 @@ export class CustomScrollbar {
|
|
|
291
249
|
thumb.removeEventListener('pointercancel', this._onDragEnd);
|
|
292
250
|
this._showScrollbars();
|
|
293
251
|
}
|
|
294
|
-
// ============ Track Click ============
|
|
295
252
|
_handleTrackYDown(e) {
|
|
296
253
|
if (e.target === this.thumbY || e.button !== 0)
|
|
297
254
|
return;
|
|
@@ -317,4 +274,3 @@ export class CustomScrollbar {
|
|
|
317
274
|
});
|
|
318
275
|
}
|
|
319
276
|
}
|
|
320
|
-
//# sourceMappingURL=custom-scrollbar.js.map
|
|
@@ -29,4 +29,3 @@ export interface CustomFlavorParts {
|
|
|
29
29
|
* adopted into the shadow root. Returns the sheet to store for the next call.
|
|
30
30
|
*/
|
|
31
31
|
export declare function syncCustomFlavorSheet(shadow: ShadowRoot, sheet: CSSStyleSheet | null, flavor: unknown, css: (parts: CustomFlavorParts) => string): CSSStyleSheet | null;
|
|
32
|
-
//# sourceMappingURL=flavor-sheet.d.ts.map
|
|
@@ -1,26 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Custom (non-built-in) flavor support.
|
|
3
|
-
*
|
|
4
|
-
* Built-in flavors get static per-flavor CSS in each component's stylesheet.
|
|
5
|
-
* Any other flavor string is a custom flavor: the component generates the
|
|
6
|
-
* same wiring at runtime, pointed at the user's design tokens
|
|
7
|
-
* (--ty-color-X / --ty-bg-X / --ty-solid-X / ...), and adopts it as a
|
|
8
|
-
* constructed stylesheet.
|
|
9
|
-
*
|
|
10
|
-
* Why an adopted sheet: render() implementations replace shadowRoot.innerHTML
|
|
11
|
-
* (which would destroy an injected <style> element), and inline style on the
|
|
12
|
-
* host would defeat page-level overrides. Adopted sheets survive renders, and
|
|
13
|
-
* outer-document rules on the host still take precedence over :host rules —
|
|
14
|
-
* so `ty-tag[flavor="X"] { --tag-bg: ... }` escape hatches keep working.
|
|
15
|
-
*/
|
|
16
1
|
import { FLAVORS } from '../types/common.js';
|
|
17
|
-
/**
|
|
18
|
-
* Keep a shadow root's custom-flavor sheet in sync with the current flavor.
|
|
19
|
-
*
|
|
20
|
-
* Built-in flavors (and anything that isn't a plain identifier, so attribute
|
|
21
|
-
* values can't inject CSS) remove the sheet. Custom flavors get `css(parts)`
|
|
22
|
-
* adopted into the shadow root. Returns the sheet to store for the next call.
|
|
23
|
-
*/
|
|
24
2
|
export function syncCustomFlavorSheet(shadow, sheet, flavor, css) {
|
|
25
3
|
const full = String(flavor || '');
|
|
26
4
|
const base = full.replace(/[+-]$/, '');
|
|
@@ -37,4 +15,3 @@ export function syncCustomFlavorSheet(shadow, sheet, flavor, css) {
|
|
|
37
15
|
sheet.replaceSync(css({ flavor: full, base, shade: full.slice(base.length) }));
|
|
38
16
|
return sheet;
|
|
39
17
|
}
|
|
40
|
-
//# sourceMappingURL=flavor-sheet.js.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Icon Registry System
|
|
3
3
|
* Simple icon storage and retrieval with Cache API persistence
|
|
4
|
-
* PORTED FROM: clj/ty/icons.cljs
|
|
5
4
|
*/
|
|
6
5
|
/**
|
|
7
6
|
* Read icon directly from cache (for immediate rendering)
|
|
@@ -62,4 +61,3 @@ export declare function getCacheInfo(): Promise<{
|
|
|
62
61
|
available: boolean;
|
|
63
62
|
iconCount?: number;
|
|
64
63
|
}>;
|
|
65
|
-
//# sourceMappingURL=icon-registry.d.ts.map
|