@getmicdrop/svelte-components 5.5.5 → 5.6.1
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/calendar/AboutShow/AboutShow.svelte +172 -172
- package/dist/calendar/Calendar/MiniMonthCalendar.svelte +782 -782
- package/dist/calendar/FAQs/FAQs.svelte +75 -75
- package/dist/calendar/MonthSwitcher/MonthSwitcher.svelte +126 -126
- package/dist/calendar/OrderSummary/OrderSummary.svelte +367 -367
- package/dist/calendar/PublicCard/PublicCard.svelte +134 -134
- package/dist/calendar/ShowCard/ShowCard.svelte +157 -157
- package/dist/calendar/ShowTimeCard/ShowTimeCard.svelte +61 -61
- package/dist/components/Layout/AppShell.svelte +104 -0
- package/dist/components/Layout/AppShell.svelte.d.ts +26 -0
- package/dist/components/Layout/AppShell.svelte.d.ts.map +1 -0
- package/dist/components/Layout/ContentSection.svelte +80 -0
- package/dist/components/Layout/ContentSection.svelte.d.ts +23 -0
- package/dist/components/Layout/ContentSection.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Grid.svelte +4 -4
- package/dist/components/Layout/Heading.svelte +81 -0
- package/dist/components/Layout/Heading.svelte.d.ts +24 -0
- package/dist/components/Layout/Heading.svelte.d.ts.map +1 -0
- package/dist/components/Layout/PageContainer.svelte +69 -0
- package/dist/components/Layout/PageContainer.svelte.d.ts +23 -0
- package/dist/components/Layout/PageContainer.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Responsive.svelte +75 -0
- package/dist/components/Layout/Responsive.svelte.d.ts +19 -0
- package/dist/components/Layout/Responsive.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Section.svelte +80 -80
- package/dist/components/Layout/ShowOnDesktop.svelte +37 -0
- package/dist/components/Layout/ShowOnDesktop.svelte.d.ts +16 -0
- package/dist/components/Layout/ShowOnDesktop.svelte.d.ts.map +1 -0
- package/dist/components/Layout/ShowOnMobile.svelte +37 -0
- package/dist/components/Layout/ShowOnMobile.svelte.d.ts +16 -0
- package/dist/components/Layout/ShowOnMobile.svelte.d.ts.map +1 -0
- package/dist/components/Layout/Sidebar.svelte +108 -108
- package/dist/components/Layout/Stack.spec.js +1 -1
- package/dist/components/Layout/Stack.svelte +6 -6
- package/dist/components/Layout/Text.svelte +87 -0
- package/dist/components/Layout/Text.svelte.d.ts +28 -0
- package/dist/components/Layout/Text.svelte.d.ts.map +1 -0
- package/dist/components/Layout/TwoColumn.svelte +108 -0
- package/dist/components/Layout/TwoColumn.svelte.d.ts +28 -0
- package/dist/components/Layout/TwoColumn.svelte.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/AppShell.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/AppShell.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/AppShell.test.js +95 -0
- package/dist/components/Layout/__tests__/ContentSection.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/ContentSection.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/ContentSection.test.js +112 -0
- package/dist/components/Layout/__tests__/Heading.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Heading.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Heading.test.js +123 -0
- package/dist/components/Layout/__tests__/PageContainer.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/PageContainer.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/PageContainer.test.js +133 -0
- package/dist/components/Layout/__tests__/Responsive.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Responsive.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Responsive.test.js +123 -0
- package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/ShowOnDesktop.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/ShowOnDesktop.test.js +84 -0
- package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/ShowOnMobile.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/ShowOnMobile.test.js +80 -0
- package/dist/components/Layout/__tests__/Text.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/Text.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/Text.test.js +146 -0
- package/dist/components/Layout/__tests__/TwoColumn.test.d.ts +2 -0
- package/dist/components/Layout/__tests__/TwoColumn.test.d.ts.map +1 -0
- package/dist/components/Layout/__tests__/TwoColumn.test.js +129 -0
- package/dist/constants/validation.js +91 -91
- package/dist/constants/validation.spec.js +64 -64
- package/dist/datetime/__tests__/format.test.js +1 -1
- package/dist/datetime/__tests__/parse.test.js +1 -1
- package/dist/datetime/__tests__/timezone.test.js +1 -1
- package/dist/datetime/parse.js +1 -1
- package/dist/forms/createFormStore.svelte.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/patterns/data/DataGrid.svelte +45 -45
- package/dist/patterns/data/DataList.svelte +24 -24
- package/dist/patterns/data/DataTable.svelte +36 -36
- package/dist/patterns/forms/FormActions.spec.js +95 -95
- package/dist/patterns/forms/FormActions.stories.svelte +97 -97
- package/dist/patterns/forms/FormActions.svelte +46 -46
- package/dist/patterns/forms/FormGrid.svelte +33 -33
- package/dist/patterns/forms/FormSection.svelte +32 -32
- package/dist/patterns/forms/FormValidationSummary.stories.svelte +83 -83
- package/dist/patterns/forms/FormValidationSummary.svelte +74 -74
- package/dist/patterns/layout/Sidebar.svelte +39 -39
- package/dist/patterns/layout/index.d.ts +9 -0
- package/dist/patterns/layout/index.js +22 -0
- package/dist/patterns/navigation/BottomNav.stories.svelte +117 -117
- package/dist/patterns/navigation/BottomNav.svelte +74 -64
- package/dist/patterns/navigation/BottomNav.svelte.d.ts.map +1 -1
- package/dist/patterns/navigation/Header.stories.svelte +77 -77
- package/dist/patterns/navigation/Header.svelte +193 -193
- package/dist/patterns/page/PageHeader.svelte +18 -18
- package/dist/patterns/page/PageLayout.svelte +40 -40
- package/dist/patterns/page/PageLoader.spec.js +57 -57
- package/dist/patterns/page/PageLoader.stories.svelte +137 -137
- package/dist/patterns/page/PageLoader.svelte +24 -24
- package/dist/patterns/page/SectionHeader.svelte +29 -29
- package/dist/presets/badges.js +112 -112
- package/dist/presets/buttons.js +76 -76
- package/dist/presets/index.js +9 -9
- package/dist/primitives/Accordion/Accordion.stories.svelte +75 -75
- package/dist/primitives/Accordion/Accordion.svelte +42 -42
- package/dist/primitives/Accordion/AccordionItem.svelte +95 -95
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte +107 -107
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts +2 -2
- package/dist/primitives/Accordion/AccordionItemWrapper.test.svelte.d.ts.map +1 -1
- package/dist/primitives/Alert/Alert.spec.js +173 -173
- package/dist/primitives/Alert/Alert.stories.svelte +88 -88
- package/dist/primitives/Alert/Alert.svelte +27 -27
- package/dist/primitives/Avatar/Avatar.stories.svelte +94 -94
- package/dist/primitives/Avatar/Avatar.svelte +66 -66
- package/dist/primitives/Badges/Badge.spec.js +144 -144
- package/dist/primitives/Badges/Badge.stories.svelte +86 -86
- package/dist/primitives/Badges/Badge.svelte +79 -79
- package/dist/primitives/BottomSheet/BottomSheet.spec.js +136 -136
- package/dist/primitives/BottomSheet/BottomSheet.stories.svelte +83 -83
- package/dist/primitives/BottomSheet/BottomSheet.svelte +100 -100
- package/dist/primitives/Breadcrumb/Breadcrumb.spec.js +122 -122
- package/dist/primitives/Breadcrumb/Breadcrumb.stories.svelte +23 -23
- package/dist/primitives/Breadcrumb/Breadcrumb.svelte +89 -89
- package/dist/primitives/Button/Button.spec.js +223 -223
- package/dist/primitives/Button/Button.stories.svelte +76 -76
- package/dist/primitives/Button/Button.svelte +270 -270
- package/dist/primitives/Button/ButtonSaveDemo.spec.js +146 -146
- package/dist/primitives/Button/ButtonSaveDemo.svelte +25 -25
- package/dist/primitives/Button/ButtonVariantShowcase.svelte +129 -129
- package/dist/primitives/Card.spec.js +49 -49
- package/dist/primitives/Card.stories.svelte +22 -22
- package/dist/primitives/Card.svelte +28 -28
- package/dist/primitives/Checkbox/Checkbox.stories.svelte +84 -84
- package/dist/primitives/Checkbox/Checkbox.svelte +88 -88
- package/dist/primitives/DarkModeToggle.spec.js +390 -390
- package/dist/primitives/DarkModeToggle.stories.svelte +57 -57
- package/dist/primitives/DarkModeToggle.svelte +136 -136
- package/dist/primitives/Drawer/Drawer.stories.svelte +80 -80
- package/dist/primitives/Drawer/Drawer.svelte +120 -120
- package/dist/primitives/Dropdown/Dropdown.stories.svelte +137 -137
- package/dist/primitives/Dropdown/Dropdown.svelte +14 -14
- package/dist/primitives/Dropdown/DropdownDivider.svelte +9 -0
- package/dist/primitives/Dropdown/DropdownDivider.svelte.d.ts +7 -0
- package/dist/primitives/Dropdown/DropdownDivider.svelte.d.ts.map +1 -0
- package/dist/primitives/Dropdown/DropdownItem.svelte +80 -80
- package/dist/primitives/Helper/Helper.svelte +33 -0
- package/dist/primitives/Helper/Helper.svelte.d.ts +18 -0
- package/dist/primitives/Helper/Helper.svelte.d.ts.map +1 -0
- package/dist/primitives/Icons/ArrowLeft.svelte +8 -8
- package/dist/primitives/Icons/ArrowRight.svelte +8 -8
- package/dist/primitives/Icons/Availability.svelte +14 -14
- package/dist/primitives/Icons/Back.svelte +14 -14
- package/dist/primitives/Icons/CheckCircle.svelte +6 -6
- package/dist/primitives/Icons/CheckCircleOutline.svelte +15 -15
- package/dist/primitives/Icons/ChevronLeft.svelte +4 -4
- package/dist/primitives/Icons/ChevronRight.svelte +4 -4
- package/dist/primitives/Icons/Copy.svelte +15 -15
- package/dist/primitives/Icons/Cross.svelte +5 -5
- package/dist/primitives/Icons/DownArrow.svelte +8 -8
- package/dist/primitives/Icons/ErrorCircle.svelte +6 -6
- package/dist/primitives/Icons/FacebookIcon.svelte +2 -2
- package/dist/primitives/Icons/Home.svelte +15 -15
- package/dist/primitives/Icons/Icon.spec.js +169 -169
- package/dist/primitives/Icons/Icon.stories.svelte +100 -100
- package/dist/primitives/Icons/Icon.svelte +52 -52
- package/dist/primitives/Icons/IconGallery.stories.svelte +235 -235
- package/dist/primitives/Icons/Info.svelte +7 -7
- package/dist/primitives/Icons/InstagramIcon.svelte +4 -4
- package/dist/primitives/Icons/LogoInstagram.svelte +2 -2
- package/dist/primitives/Icons/Message.svelte +15 -15
- package/dist/primitives/Icons/MoonIcon.svelte +5 -5
- package/dist/primitives/Icons/More.svelte +21 -21
- package/dist/primitives/Icons/MoreHori.spec.js +61 -61
- package/dist/primitives/Icons/MoreHori.svelte +22 -22
- package/dist/primitives/Icons/Notification.svelte +14 -14
- package/dist/primitives/Icons/Payment.svelte +14 -14
- package/dist/primitives/Icons/Profile.svelte +21 -21
- package/dist/primitives/Icons/Reload.svelte +29 -29
- package/dist/primitives/Icons/Shows.svelte +21 -21
- package/dist/primitives/Icons/Signout.svelte +21 -21
- package/dist/primitives/Icons/SunIcon.svelte +8 -8
- package/dist/primitives/Icons/TiktokIcon.svelte +2 -2
- package/dist/primitives/Icons/TwitterIcon.svelte +2 -2
- package/dist/primitives/Icons/WarningIcon.spec.js +18 -18
- package/dist/primitives/Icons/WarningIcon.svelte +5 -5
- package/dist/primitives/Input/Input.spec.js +573 -573
- package/dist/primitives/Input/Input.stories.svelte +139 -139
- package/dist/primitives/Input/Input.svelte +1 -2
- package/dist/primitives/Input/Input.svelte.d.ts +2 -4
- package/dist/primitives/Input/Input.svelte.d.ts.map +1 -1
- package/dist/primitives/Input/Select.spec.js +212 -212
- package/dist/primitives/Input/Select.stories.svelte +112 -112
- package/dist/primitives/Input/Select.svelte +128 -128
- package/dist/primitives/Input/Textarea.stories.svelte +137 -137
- package/dist/primitives/Input/Textarea.svelte +35 -35
- package/dist/primitives/Label/Label.svelte +37 -37
- package/dist/primitives/Modal/Modal.spec.js +99 -99
- package/dist/primitives/Modal/Modal.stories.svelte +86 -86
- package/dist/primitives/Modal/Modal.svelte +3 -4
- package/dist/primitives/Modal/Modal.svelte.d.ts +6 -8
- package/dist/primitives/Modal/Modal.svelte.d.ts.map +1 -1
- package/dist/primitives/NumberInput/NumberInput.svelte +0 -1
- package/dist/primitives/NumberInput/NumberInput.svelte.d.ts +0 -2
- package/dist/primitives/NumberInput/NumberInput.svelte.d.ts.map +1 -1
- package/dist/primitives/Pagination/Pagination.stories.svelte +76 -76
- package/dist/primitives/Pagination/Pagination.svelte +261 -261
- package/dist/primitives/Radio/Radio.stories.svelte +80 -80
- package/dist/primitives/Radio/Radio.svelte +67 -67
- package/dist/primitives/Skeleton/CardPlaceholder.svelte +87 -87
- package/dist/primitives/Skeleton/ImagePlaceholder.svelte +59 -59
- package/dist/primitives/Skeleton/ListPlaceholder.svelte +76 -76
- package/dist/primitives/Skeleton/Skeleton.stories.svelte +151 -151
- package/dist/primitives/Skeleton/Skeleton.svelte +26 -26
- package/dist/primitives/Spinner/Spinner.spec.js +71 -71
- package/dist/primitives/Spinner/Spinner.stories.svelte +29 -29
- package/dist/primitives/Spinner/Spinner.svelte +20 -20
- package/dist/primitives/Tabs/TabItem.svelte +49 -49
- package/dist/primitives/Tabs/Tabs.stories.svelte +112 -112
- package/dist/primitives/Tabs/Tabs.svelte +123 -123
- package/dist/primitives/Toggle.spec.js +143 -143
- package/dist/primitives/Toggle.stories.svelte +92 -92
- package/dist/primitives/Toggle.svelte +1 -2
- package/dist/primitives/Toggle.svelte.d.ts +2 -4
- package/dist/primitives/Toggle.svelte.d.ts.map +1 -1
- package/dist/primitives/Tooltip/Tooltip.svelte +83 -0
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts +15 -0
- package/dist/primitives/Tooltip/Tooltip.svelte.d.ts.map +1 -0
- package/dist/primitives/Typography/Typography.svelte +53 -53
- package/dist/primitives/ValidationError.spec.js +103 -103
- package/dist/primitives/ValidationError.stories.svelte +69 -69
- package/dist/primitives/ValidationError.svelte +29 -29
- package/dist/primitives/index.d.ts +3 -0
- package/dist/primitives/index.js +91 -84
- package/dist/recipes/CropImage/CropImage.spec.js +208 -208
- package/dist/recipes/CropImage/CropImage.stories.svelte +104 -104
- package/dist/recipes/CropImage/CropImage.svelte +238 -238
- package/dist/recipes/ImageUploader/ImageUploader.spec.js +6 -5
- package/dist/recipes/ImageUploader/ImageUploader.stories.svelte +125 -125
- package/dist/recipes/ImageUploader/ImageUploader.svelte +804 -804
- package/dist/recipes/SuperLogin/SuperLogin.spec.js +17 -17
- package/dist/recipes/Toaster/Toaster.stories.svelte +62 -62
- package/dist/recipes/feedback/EmptyState/EmptyState.svelte +1 -1
- package/dist/recipes/feedback/ErrorDisplay.spec.js +69 -69
- package/dist/recipes/feedback/ErrorDisplay.stories.svelte +101 -101
- package/dist/recipes/feedback/ErrorDisplay.svelte +1 -1
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.spec.js +133 -133
- package/dist/recipes/feedback/StatusIndicator/StatusIndicator.svelte +157 -157
- package/dist/recipes/fields/CheckboxField.svelte +85 -85
- package/dist/recipes/fields/FormField.svelte +58 -58
- package/dist/recipes/fields/RadioGroup.svelte +95 -95
- package/dist/recipes/fields/SelectField.svelte +80 -80
- package/dist/recipes/fields/TextareaField.svelte +97 -97
- package/dist/recipes/fields/ToggleField.svelte +60 -60
- package/dist/recipes/fields/index.js +7 -7
- package/dist/recipes/inputs/MultiSelect.spec.js +258 -258
- package/dist/recipes/inputs/MultiSelect.stories.svelte +133 -133
- package/dist/recipes/inputs/MultiSelect.svelte +29 -8
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts +54 -21
- package/dist/recipes/inputs/MultiSelect.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/OTPInput.spec.js +251 -251
- package/dist/recipes/inputs/OTPInput.stories.svelte +162 -162
- package/dist/recipes/inputs/OTPInput.svelte +29 -29
- package/dist/recipes/inputs/PasswordInput.svelte +22 -22
- package/dist/recipes/inputs/PasswordStrengthIndicator/PasswordStrengthIndicator.svelte +117 -117
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.spec.js +9 -4
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.stories.svelte +123 -123
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte +30 -25
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts +12 -1
- package/dist/recipes/inputs/PlaceAutocomplete/PlaceAutocomplete.svelte.d.ts.map +1 -1
- package/dist/recipes/inputs/Search.svelte +37 -37
- package/dist/recipes/inputs/SelectDropdown.svelte +57 -57
- package/dist/recipes/modals/AlertModal.svelte +130 -130
- package/dist/recipes/modals/ConfirmationModal.spec.js +206 -206
- package/dist/recipes/modals/ConfirmationModal.stories.svelte +119 -119
- package/dist/recipes/modals/ConfirmationModal.svelte +152 -152
- package/dist/recipes/modals/InputModal.svelte +182 -182
- package/dist/recipes/modals/ModalStateManager.spec.js +100 -100
- package/dist/recipes/modals/ModalStateManager.svelte +77 -77
- package/dist/recipes/modals/ModalTestWrapper.svelte +65 -65
- package/dist/recipes/modals/StatusModal.svelte +206 -206
- package/dist/services/EventService.js +75 -75
- package/dist/services/EventService.spec.js +217 -217
- package/dist/services/ShowService.spec.js +345 -345
- package/dist/stores/auth.js +44 -36
- package/dist/stores/auth.spec.js +139 -139
- package/dist/stores/auth.svelte.d.ts +39 -0
- package/dist/stores/auth.svelte.d.ts.map +1 -0
- package/dist/stores/auth.svelte.js +60 -0
- package/dist/stores/formDataStore.d.ts.map +1 -1
- package/dist/stores/formDataStore.js +8 -0
- package/dist/stores/formDataStore.svelte.d.ts +47 -0
- package/dist/stores/formDataStore.svelte.d.ts.map +1 -0
- package/dist/stores/formDataStore.svelte.js +84 -0
- package/dist/stores/formSave.d.ts.map +1 -1
- package/dist/stores/formSave.js +8 -0
- package/dist/stores/formSave.svelte.d.ts +33 -0
- package/dist/stores/formSave.svelte.d.ts.map +1 -0
- package/dist/stores/formSave.svelte.js +113 -0
- package/dist/stores/navigation.d.ts.map +1 -1
- package/dist/stores/navigation.js +8 -0
- package/dist/stores/navigation.svelte.d.ts +35 -0
- package/dist/stores/navigation.svelte.d.ts.map +1 -0
- package/dist/stores/navigation.svelte.js +69 -0
- package/dist/stores/toaster.js +13 -13
- package/dist/stories/ButtonAuditReview.stories.svelte +14 -14
- package/dist/stories/ButtonAuditReview.svelte +427 -427
- package/dist/stories/PatternsGallery.stories.svelte +19 -19
- package/dist/stories/PatternsGallery.svelte +206 -206
- package/dist/stories/PrimitivesGallery.stories.svelte +19 -19
- package/dist/stories/PrimitivesGallery.svelte +725 -725
- package/dist/stories/RecipesGallery.stories.svelte +19 -19
- package/dist/stories/RecipesGallery.svelte +271 -271
- package/dist/stories/button-audit-manifest.json +11186 -11186
- package/dist/tailwind/preset.cjs +82 -82
- package/dist/telemetry.js +405 -405
- package/dist/telemetry.server.spec.js +11 -8
- package/dist/telemetry.spec.js +1169 -1144
- package/dist/tokens/__tests__/typography-base.test.d.ts +2 -0
- package/dist/tokens/__tests__/typography-base.test.d.ts.map +1 -0
- package/dist/tokens/__tests__/typography-base.test.js +138 -0
- package/dist/tokens/tokens.css +87 -87
- package/dist/tokens/typography-base.css +163 -0
- package/dist/utils/apiConfig.spec.js +219 -219
- package/dist/utils/imageValidation.spec.js +62 -59
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +47 -0
- package/dist/utils/transitions.js +62 -62
- package/dist/utils/utils.js +354 -354
- package/package.json +21 -16
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { typography } from '../../tokens/typography';
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
day = '',
|
|
6
|
-
date = '',
|
|
7
|
-
time = '',
|
|
8
|
-
isSelected = false,
|
|
9
|
-
onselect,
|
|
10
|
-
} = $props();
|
|
11
|
-
|
|
12
|
-
function handleCardClick() {
|
|
13
|
-
onselect?.({ date });
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function handleKeydown(e) {
|
|
17
|
-
if (e.key === 'Enter' || e.key === ' ') {
|
|
18
|
-
e.preventDefault();
|
|
19
|
-
handleCardClick();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function formatHour(timeStr) {
|
|
24
|
-
if (!timeStr) return '';
|
|
25
|
-
const d = new Date(`1970-01-01T${timeStr}`);
|
|
26
|
-
if (isNaN(d.getTime())) return timeStr;
|
|
27
|
-
return d.toLocaleTimeString('en-US', {
|
|
28
|
-
hour: 'numeric',
|
|
29
|
-
minute: '2-digit',
|
|
30
|
-
hour12: true
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function formatDate(dateStr) {
|
|
35
|
-
if (!dateStr) return '';
|
|
36
|
-
const d = new Date(dateStr);
|
|
37
|
-
if (isNaN(d.getTime())) return dateStr;
|
|
38
|
-
return d.toLocaleDateString('en-US', {
|
|
39
|
-
month: 'short',
|
|
40
|
-
day: 'numeric',
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
</script>
|
|
44
|
-
|
|
45
|
-
<div
|
|
46
|
-
class="w-full h-28 rounded-lg flex flex-col justify-center items-center gap-1.5 cursor-pointer border-2 px-1 transition-colors bg-white dark:bg-gray-800 {isSelected
|
|
47
|
-
? 'border-blue-700 dark:border-blue-500'
|
|
48
|
-
: 'border-gray-200 dark:border-gray-700 hover:border-blue-700 dark:hover:border-blue-500'}"
|
|
49
|
-
onclick={handleCardClick}
|
|
50
|
-
onkeydown={handleKeydown}
|
|
51
|
-
tabindex="0"
|
|
52
|
-
role="button"
|
|
53
|
-
aria-label={`${day} ${formatDate(date)} at ${formatHour(time)}${isSelected ? ', selected' : ''}`}
|
|
54
|
-
aria-pressed={isSelected}
|
|
55
|
-
>
|
|
56
|
-
<span class="{typography.label} text-sm {typography.textMuted}">{day}</span>
|
|
57
|
-
<span class="{typography.label} text-base {isSelected ? 'text-blue-700 dark:text-blue-500' : ''}">
|
|
58
|
-
{formatDate(date)}
|
|
59
|
-
</span>
|
|
60
|
-
<span class="{typography.label} text-sm {typography.textMuted}">{formatHour(time)}</span>
|
|
61
|
-
</div>
|
|
1
|
+
<script>
|
|
2
|
+
import { typography } from '../../tokens/typography';
|
|
3
|
+
|
|
4
|
+
let {
|
|
5
|
+
day = '',
|
|
6
|
+
date = '',
|
|
7
|
+
time = '',
|
|
8
|
+
isSelected = false,
|
|
9
|
+
onselect,
|
|
10
|
+
} = $props();
|
|
11
|
+
|
|
12
|
+
function handleCardClick() {
|
|
13
|
+
onselect?.({ date });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function handleKeydown(e) {
|
|
17
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
18
|
+
e.preventDefault();
|
|
19
|
+
handleCardClick();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function formatHour(timeStr) {
|
|
24
|
+
if (!timeStr) return '';
|
|
25
|
+
const d = new Date(`1970-01-01T${timeStr}`);
|
|
26
|
+
if (isNaN(d.getTime())) return timeStr;
|
|
27
|
+
return d.toLocaleTimeString('en-US', {
|
|
28
|
+
hour: 'numeric',
|
|
29
|
+
minute: '2-digit',
|
|
30
|
+
hour12: true
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function formatDate(dateStr) {
|
|
35
|
+
if (!dateStr) return '';
|
|
36
|
+
const d = new Date(dateStr);
|
|
37
|
+
if (isNaN(d.getTime())) return dateStr;
|
|
38
|
+
return d.toLocaleDateString('en-US', {
|
|
39
|
+
month: 'short',
|
|
40
|
+
day: 'numeric',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<div
|
|
46
|
+
class="w-full h-28 rounded-lg flex flex-col justify-center items-center gap-1.5 cursor-pointer border-2 px-1 transition-colors bg-white dark:bg-gray-800 {isSelected
|
|
47
|
+
? 'border-blue-700 dark:border-blue-500'
|
|
48
|
+
: 'border-gray-200 dark:border-gray-700 hover:border-blue-700 dark:hover:border-blue-500'}"
|
|
49
|
+
onclick={handleCardClick}
|
|
50
|
+
onkeydown={handleKeydown}
|
|
51
|
+
tabindex="0"
|
|
52
|
+
role="button"
|
|
53
|
+
aria-label={`${day} ${formatDate(date)} at ${formatHour(time)}${isSelected ? ', selected' : ''}`}
|
|
54
|
+
aria-pressed={isSelected}
|
|
55
|
+
>
|
|
56
|
+
<span class="{typography.label} text-sm {typography.textMuted}">{day}</span>
|
|
57
|
+
<span class="{typography.label} text-base {isSelected ? 'text-blue-700 dark:text-blue-500' : ''}">
|
|
58
|
+
{formatDate(date)}
|
|
59
|
+
</span>
|
|
60
|
+
<span class="{typography.label} text-sm {typography.textMuted}">{formatHour(time)}</span>
|
|
61
|
+
</div>
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
type Variant = 'admin' | 'performer' | 'public' | 'minimal';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
/** Shell variant determines overall styling */
|
|
8
|
+
variant?: Variant;
|
|
9
|
+
/** Whether sidebar is collapsed (only for admin variant) */
|
|
10
|
+
sidebarCollapsed?: boolean;
|
|
11
|
+
/** Whether to show bottom navigation on mobile */
|
|
12
|
+
showBottomNav?: boolean;
|
|
13
|
+
/** Fixed header */
|
|
14
|
+
fixedHeader?: boolean;
|
|
15
|
+
/** Additional CSS classes for main content area */
|
|
16
|
+
class?: string;
|
|
17
|
+
/** Header slot */
|
|
18
|
+
header?: Snippet;
|
|
19
|
+
/** Sidebar slot (left side) */
|
|
20
|
+
sidebar?: Snippet;
|
|
21
|
+
/** Bottom navigation slot (mobile) */
|
|
22
|
+
bottomNav?: Snippet;
|
|
23
|
+
/** Main content */
|
|
24
|
+
children?: Snippet;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let {
|
|
28
|
+
variant = 'admin',
|
|
29
|
+
sidebarCollapsed = false,
|
|
30
|
+
showBottomNav = true,
|
|
31
|
+
fixedHeader = true,
|
|
32
|
+
class: className = '',
|
|
33
|
+
header,
|
|
34
|
+
sidebar,
|
|
35
|
+
bottomNav,
|
|
36
|
+
children,
|
|
37
|
+
}: Props = $props();
|
|
38
|
+
|
|
39
|
+
// Background classes based on variant
|
|
40
|
+
const variantBackgrounds: Record<Variant, string> = {
|
|
41
|
+
admin: 'bg-gray-50 dark:bg-gray-800',
|
|
42
|
+
performer: 'bg-gray-50 dark:bg-gray-800',
|
|
43
|
+
public: 'bg-white dark:bg-gray-900',
|
|
44
|
+
minimal: 'bg-white dark:bg-gray-900',
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Sidebar width classes
|
|
48
|
+
const sidebarWidthExpanded = 'md:ml-64';
|
|
49
|
+
const sidebarWidthCollapsed = 'md:ml-20';
|
|
50
|
+
|
|
51
|
+
let mainMarginClass = $derived(
|
|
52
|
+
sidebar
|
|
53
|
+
? sidebarCollapsed
|
|
54
|
+
? sidebarWidthCollapsed
|
|
55
|
+
: sidebarWidthExpanded
|
|
56
|
+
: ''
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
let headerPadding = $derived(fixedHeader ? 'pt-16' : '');
|
|
60
|
+
let bottomPadding = $derived(showBottomNav && bottomNav ? 'pb-16 md:pb-0' : '');
|
|
61
|
+
</script>
|
|
62
|
+
|
|
63
|
+
<div class="min-h-screen {variantBackgrounds[variant]}">
|
|
64
|
+
<!-- Header -->
|
|
65
|
+
{#if header}
|
|
66
|
+
<header
|
|
67
|
+
class="w-full z-30"
|
|
68
|
+
class:fixed={fixedHeader}
|
|
69
|
+
class:top-0={fixedHeader}
|
|
70
|
+
class:left-0={fixedHeader}
|
|
71
|
+
>
|
|
72
|
+
{@render header()}
|
|
73
|
+
</header>
|
|
74
|
+
{/if}
|
|
75
|
+
|
|
76
|
+
<!-- Sidebar -->
|
|
77
|
+
{#if sidebar}
|
|
78
|
+
<aside
|
|
79
|
+
class="fixed top-0 left-0 z-20 h-screen transition-all duration-300 hidden md:block"
|
|
80
|
+
class:w-64={!sidebarCollapsed}
|
|
81
|
+
class:w-20={sidebarCollapsed}
|
|
82
|
+
>
|
|
83
|
+
{@render sidebar()}
|
|
84
|
+
</aside>
|
|
85
|
+
{/if}
|
|
86
|
+
|
|
87
|
+
<!-- Main Content -->
|
|
88
|
+
<main
|
|
89
|
+
class="transition-all duration-300 {headerPadding} {mainMarginClass} {bottomPadding} {className}"
|
|
90
|
+
>
|
|
91
|
+
<div class="{variantBackgrounds[variant]} min-h-screen">
|
|
92
|
+
{#if children}
|
|
93
|
+
{@render children()}
|
|
94
|
+
{/if}
|
|
95
|
+
</div>
|
|
96
|
+
</main>
|
|
97
|
+
|
|
98
|
+
<!-- Bottom Navigation (Mobile) -->
|
|
99
|
+
{#if showBottomNav && bottomNav}
|
|
100
|
+
<nav class="fixed bottom-0 left-0 right-0 z-30 md:hidden">
|
|
101
|
+
{@render bottomNav()}
|
|
102
|
+
</nav>
|
|
103
|
+
{/if}
|
|
104
|
+
</div>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type Variant = 'admin' | 'performer' | 'public' | 'minimal';
|
|
3
|
+
interface Props {
|
|
4
|
+
/** Shell variant determines overall styling */
|
|
5
|
+
variant?: Variant;
|
|
6
|
+
/** Whether sidebar is collapsed (only for admin variant) */
|
|
7
|
+
sidebarCollapsed?: boolean;
|
|
8
|
+
/** Whether to show bottom navigation on mobile */
|
|
9
|
+
showBottomNav?: boolean;
|
|
10
|
+
/** Fixed header */
|
|
11
|
+
fixedHeader?: boolean;
|
|
12
|
+
/** Additional CSS classes for main content area */
|
|
13
|
+
class?: string;
|
|
14
|
+
/** Header slot */
|
|
15
|
+
header?: Snippet;
|
|
16
|
+
/** Sidebar slot (left side) */
|
|
17
|
+
sidebar?: Snippet;
|
|
18
|
+
/** Bottom navigation slot (mobile) */
|
|
19
|
+
bottomNav?: Snippet;
|
|
20
|
+
/** Main content */
|
|
21
|
+
children?: Snippet;
|
|
22
|
+
}
|
|
23
|
+
declare const AppShell: import("svelte").Component<Props, {}, "">;
|
|
24
|
+
type AppShell = ReturnType<typeof AppShell>;
|
|
25
|
+
export default AppShell;
|
|
26
|
+
//# sourceMappingURL=AppShell.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShell.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/AppShell.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,OAAO,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,UAAU,KAAK;IACb,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kDAAkD;IAClD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA4EH,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
/** Section title */
|
|
6
|
+
title?: string;
|
|
7
|
+
/** Optional subtitle */
|
|
8
|
+
subtitle?: string;
|
|
9
|
+
/** Heading level for the title (2-6) */
|
|
10
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
11
|
+
/** Size variant for title */
|
|
12
|
+
titleSize?: 'sm' | 'base' | 'lg' | 'xl';
|
|
13
|
+
/** Spacing below the section */
|
|
14
|
+
spacing?: 'none' | 'sm' | 'md' | 'lg';
|
|
15
|
+
/** Additional CSS classes */
|
|
16
|
+
class?: string;
|
|
17
|
+
/** Action slot (buttons, links) */
|
|
18
|
+
actions?: Snippet;
|
|
19
|
+
/** Child content */
|
|
20
|
+
children?: Snippet;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let {
|
|
24
|
+
title = '',
|
|
25
|
+
subtitle = '',
|
|
26
|
+
headingLevel = 2,
|
|
27
|
+
titleSize = 'lg',
|
|
28
|
+
spacing = 'md',
|
|
29
|
+
class: className = '',
|
|
30
|
+
actions,
|
|
31
|
+
children,
|
|
32
|
+
}: Props = $props();
|
|
33
|
+
|
|
34
|
+
const titleSizeClasses = {
|
|
35
|
+
sm: 'text-base',
|
|
36
|
+
base: 'text-lg',
|
|
37
|
+
lg: 'text-xl',
|
|
38
|
+
xl: 'text-2xl',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const spacingClasses = {
|
|
42
|
+
none: '',
|
|
43
|
+
sm: 'mb-4',
|
|
44
|
+
md: 'mb-6',
|
|
45
|
+
lg: 'mb-8',
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
let headingElement = $derived(`h${headingLevel}` as 'h2' | 'h3' | 'h4' | 'h5' | 'h6');
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<section class="{spacingClasses[spacing]} {className}">
|
|
52
|
+
{#if title || actions}
|
|
53
|
+
<div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 mb-4">
|
|
54
|
+
<div>
|
|
55
|
+
{#if title}
|
|
56
|
+
<svelte:element
|
|
57
|
+
this={headingElement}
|
|
58
|
+
class="{titleSizeClasses[titleSize]} font-semibold text-gray-900 dark:text-white"
|
|
59
|
+
>
|
|
60
|
+
{title}
|
|
61
|
+
</svelte:element>
|
|
62
|
+
{/if}
|
|
63
|
+
{#if subtitle}
|
|
64
|
+
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
|
|
65
|
+
{subtitle}
|
|
66
|
+
</p>
|
|
67
|
+
{/if}
|
|
68
|
+
</div>
|
|
69
|
+
{#if actions}
|
|
70
|
+
<div class="flex items-center gap-3 flex-shrink-0">
|
|
71
|
+
{@render actions()}
|
|
72
|
+
</div>
|
|
73
|
+
{/if}
|
|
74
|
+
</div>
|
|
75
|
+
{/if}
|
|
76
|
+
|
|
77
|
+
{#if children}
|
|
78
|
+
{@render children()}
|
|
79
|
+
{/if}
|
|
80
|
+
</section>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
/** Section title */
|
|
4
|
+
title?: string;
|
|
5
|
+
/** Optional subtitle */
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
/** Heading level for the title (2-6) */
|
|
8
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
9
|
+
/** Size variant for title */
|
|
10
|
+
titleSize?: 'sm' | 'base' | 'lg' | 'xl';
|
|
11
|
+
/** Spacing below the section */
|
|
12
|
+
spacing?: 'none' | 'sm' | 'md' | 'lg';
|
|
13
|
+
/** Additional CSS classes */
|
|
14
|
+
class?: string;
|
|
15
|
+
/** Action slot (buttons, links) */
|
|
16
|
+
actions?: Snippet;
|
|
17
|
+
/** Child content */
|
|
18
|
+
children?: Snippet;
|
|
19
|
+
}
|
|
20
|
+
declare const ContentSection: import("svelte").Component<Props, {}, "">;
|
|
21
|
+
type ContentSection = ReturnType<typeof ContentSection>;
|
|
22
|
+
export default ContentSection;
|
|
23
|
+
//# sourceMappingURL=ContentSection.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentSection.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/ContentSection.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,UAAU,KAAK;IACb,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+DH,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
].filter(Boolean).join(' ')
|
|
96
96
|
);
|
|
97
97
|
</script>
|
|
98
|
-
|
|
99
|
-
<svelte:element this={as} class={classes} style={gridStyle || undefined}>
|
|
100
|
-
{@render children?.()}
|
|
101
|
-
</svelte:element>
|
|
98
|
+
|
|
99
|
+
<svelte:element this={as} class={classes} style={gridStyle || undefined}>
|
|
100
|
+
{@render children?.()}
|
|
101
|
+
</svelte:element>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
type Level = 1 | 2 | 3 | 4 | 5 | 6;
|
|
5
|
+
type Size = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
|
|
6
|
+
type Variant = 'default' | 'muted' | 'primary';
|
|
7
|
+
|
|
8
|
+
interface Props {
|
|
9
|
+
/** Semantic heading level (1-6) */
|
|
10
|
+
level?: Level;
|
|
11
|
+
/** Visual size override (optional - defaults based on level) */
|
|
12
|
+
size?: Size;
|
|
13
|
+
/** Color variant */
|
|
14
|
+
variant?: Variant;
|
|
15
|
+
/** Font weight */
|
|
16
|
+
weight?: 'medium' | 'semibold' | 'bold';
|
|
17
|
+
/** Additional CSS classes */
|
|
18
|
+
class?: string;
|
|
19
|
+
/** Child content */
|
|
20
|
+
children?: Snippet;
|
|
21
|
+
/** Rest props */
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
let {
|
|
26
|
+
level = 2,
|
|
27
|
+
size,
|
|
28
|
+
variant = 'default',
|
|
29
|
+
weight = 'semibold',
|
|
30
|
+
class: className = '',
|
|
31
|
+
children,
|
|
32
|
+
...restProps
|
|
33
|
+
}: Props = $props();
|
|
34
|
+
|
|
35
|
+
// Default size mapping based on heading level
|
|
36
|
+
const levelToSize: Record<Level, Size> = {
|
|
37
|
+
1: '3xl',
|
|
38
|
+
2: '2xl',
|
|
39
|
+
3: 'xl',
|
|
40
|
+
4: 'lg',
|
|
41
|
+
5: 'base',
|
|
42
|
+
6: 'sm',
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const sizeClasses: Record<Size, string> = {
|
|
46
|
+
xs: 'text-xs',
|
|
47
|
+
sm: 'text-sm',
|
|
48
|
+
base: 'text-base',
|
|
49
|
+
lg: 'text-lg',
|
|
50
|
+
xl: 'text-xl',
|
|
51
|
+
'2xl': 'text-2xl',
|
|
52
|
+
'3xl': 'text-3xl',
|
|
53
|
+
'4xl': 'text-4xl',
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const variantClasses: Record<Variant, string> = {
|
|
57
|
+
default: 'text-gray-900 dark:text-white',
|
|
58
|
+
muted: 'text-gray-600 dark:text-gray-400',
|
|
59
|
+
primary: 'text-primary dark:text-primary',
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const weightClasses: Record<string, string> = {
|
|
63
|
+
medium: 'font-medium',
|
|
64
|
+
semibold: 'font-semibold',
|
|
65
|
+
bold: 'font-bold',
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
let effectiveSize = $derived(size || levelToSize[level]);
|
|
69
|
+
let element = $derived(`h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6');
|
|
70
|
+
|
|
71
|
+
let classes = $derived([
|
|
72
|
+
sizeClasses[effectiveSize],
|
|
73
|
+
variantClasses[variant],
|
|
74
|
+
weightClasses[weight],
|
|
75
|
+
className,
|
|
76
|
+
].filter(Boolean).join(' '));
|
|
77
|
+
</script>
|
|
78
|
+
|
|
79
|
+
<svelte:element this={element} class={classes} {...restProps}>
|
|
80
|
+
{#if children}{@render children()}{/if}
|
|
81
|
+
</svelte:element>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type Level = 1 | 2 | 3 | 4 | 5 | 6;
|
|
3
|
+
type Size = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
|
|
4
|
+
type Variant = 'default' | 'muted' | 'primary';
|
|
5
|
+
interface Props {
|
|
6
|
+
/** Semantic heading level (1-6) */
|
|
7
|
+
level?: Level;
|
|
8
|
+
/** Visual size override (optional - defaults based on level) */
|
|
9
|
+
size?: Size;
|
|
10
|
+
/** Color variant */
|
|
11
|
+
variant?: Variant;
|
|
12
|
+
/** Font weight */
|
|
13
|
+
weight?: 'medium' | 'semibold' | 'bold';
|
|
14
|
+
/** Additional CSS classes */
|
|
15
|
+
class?: string;
|
|
16
|
+
/** Child content */
|
|
17
|
+
children?: Snippet;
|
|
18
|
+
/** Rest props */
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
declare const Heading: import("svelte").Component<Props, {}, "">;
|
|
22
|
+
type Heading = ReturnType<typeof Heading>;
|
|
23
|
+
export default Heading;
|
|
24
|
+
//# sourceMappingURL=Heading.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Heading.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/Heading.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnC,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AACvE,KAAK,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/C,UAAU,KAAK;IACb,mCAAmC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gEAAgE;IAChE,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACxC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAoEH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
type MaxWidth = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '4xl' | '6xl' | 'full';
|
|
5
|
+
type Padding = 'none' | 'tight' | 'default' | 'spacious';
|
|
6
|
+
|
|
7
|
+
interface Props {
|
|
8
|
+
/** Maximum width of the container */
|
|
9
|
+
maxWidth?: MaxWidth;
|
|
10
|
+
/** Padding variant */
|
|
11
|
+
padding?: Padding;
|
|
12
|
+
/** Center the container */
|
|
13
|
+
center?: boolean;
|
|
14
|
+
/** Background color variant */
|
|
15
|
+
background?: 'none' | 'white' | 'gray';
|
|
16
|
+
/** Additional CSS classes */
|
|
17
|
+
class?: string;
|
|
18
|
+
/** Child content */
|
|
19
|
+
children?: Snippet;
|
|
20
|
+
/** Rest props */
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let {
|
|
25
|
+
maxWidth = 'full',
|
|
26
|
+
padding = 'default',
|
|
27
|
+
center = true,
|
|
28
|
+
background = 'none',
|
|
29
|
+
class: className = '',
|
|
30
|
+
children,
|
|
31
|
+
...restProps
|
|
32
|
+
}: Props = $props();
|
|
33
|
+
|
|
34
|
+
const maxWidthClasses: Record<MaxWidth, string> = {
|
|
35
|
+
sm: 'max-w-sm',
|
|
36
|
+
md: 'max-w-md',
|
|
37
|
+
lg: 'max-w-lg',
|
|
38
|
+
xl: 'max-w-xl',
|
|
39
|
+
'2xl': 'max-w-2xl',
|
|
40
|
+
'4xl': 'max-w-4xl',
|
|
41
|
+
'6xl': 'max-w-6xl',
|
|
42
|
+
full: 'max-w-full',
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const paddingClasses: Record<Padding, string> = {
|
|
46
|
+
none: '',
|
|
47
|
+
tight: 'px-2 py-2 md:px-4 md:py-4',
|
|
48
|
+
default: 'px-4 py-6 md:py-8',
|
|
49
|
+
spacious: 'px-4 py-8 md:px-6 md:py-12',
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const backgroundClasses: Record<string, string> = {
|
|
53
|
+
none: '',
|
|
54
|
+
white: 'bg-white dark:bg-gray-900',
|
|
55
|
+
gray: 'bg-gray-50 dark:bg-gray-800',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
let classes = $derived([
|
|
59
|
+
maxWidthClasses[maxWidth],
|
|
60
|
+
paddingClasses[padding],
|
|
61
|
+
backgroundClasses[background],
|
|
62
|
+
center ? 'mx-auto' : '',
|
|
63
|
+
className,
|
|
64
|
+
].filter(Boolean).join(' '));
|
|
65
|
+
</script>
|
|
66
|
+
|
|
67
|
+
<div class={classes} {...restProps}>
|
|
68
|
+
{#if children}{@render children()}{/if}
|
|
69
|
+
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type MaxWidth = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '4xl' | '6xl' | 'full';
|
|
3
|
+
type Padding = 'none' | 'tight' | 'default' | 'spacious';
|
|
4
|
+
interface Props {
|
|
5
|
+
/** Maximum width of the container */
|
|
6
|
+
maxWidth?: MaxWidth;
|
|
7
|
+
/** Padding variant */
|
|
8
|
+
padding?: Padding;
|
|
9
|
+
/** Center the container */
|
|
10
|
+
center?: boolean;
|
|
11
|
+
/** Background color variant */
|
|
12
|
+
background?: 'none' | 'white' | 'gray';
|
|
13
|
+
/** Additional CSS classes */
|
|
14
|
+
class?: string;
|
|
15
|
+
/** Child content */
|
|
16
|
+
children?: Snippet;
|
|
17
|
+
/** Rest props */
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
declare const PageContainer: import("svelte").Component<Props, {}, "">;
|
|
21
|
+
type PageContainer = ReturnType<typeof PageContainer>;
|
|
22
|
+
export default PageContainer;
|
|
23
|
+
//# sourceMappingURL=PageContainer.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageContainer.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/Layout/PageContainer.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGpC,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAC3E,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzD,UAAU,KAAK;IACb,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sBAAsB;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAwDH,QAAA,MAAM,aAAa,2CAAwC,CAAC;AAC5D,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AACtD,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* Responsive visibility components
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* <ShowOnMobile>Mobile only content</ShowOnMobile>
|
|
7
|
+
* <ShowOnDesktop>Desktop only content</ShowOnDesktop>
|
|
8
|
+
* <HideOnMobile>Hidden on mobile</HideOnMobile>
|
|
9
|
+
* <HideOnDesktop>Hidden on desktop</HideOnDesktop>
|
|
10
|
+
*/
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<script lang="ts">
|
|
14
|
+
import type { Snippet } from 'svelte';
|
|
15
|
+
|
|
16
|
+
type Breakpoint = 'sm' | 'md' | 'lg' | 'xl';
|
|
17
|
+
type Mode = 'show-mobile' | 'show-desktop' | 'hide-mobile' | 'hide-desktop';
|
|
18
|
+
|
|
19
|
+
interface Props {
|
|
20
|
+
/** Visibility mode */
|
|
21
|
+
mode: Mode;
|
|
22
|
+
/** Breakpoint for mobile/desktop boundary */
|
|
23
|
+
breakpoint?: Breakpoint;
|
|
24
|
+
/** Display type when visible */
|
|
25
|
+
display?: 'block' | 'flex' | 'inline' | 'inline-block' | 'grid';
|
|
26
|
+
/** Additional CSS classes */
|
|
27
|
+
class?: string;
|
|
28
|
+
/** Child content */
|
|
29
|
+
children?: Snippet;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
let {
|
|
33
|
+
mode,
|
|
34
|
+
breakpoint = 'lg',
|
|
35
|
+
display = 'block',
|
|
36
|
+
class: className = '',
|
|
37
|
+
children,
|
|
38
|
+
}: Props = $props();
|
|
39
|
+
|
|
40
|
+
const displayClasses: Record<string, string> = {
|
|
41
|
+
block: 'block',
|
|
42
|
+
flex: 'flex',
|
|
43
|
+
inline: 'inline',
|
|
44
|
+
'inline-block': 'inline-block',
|
|
45
|
+
grid: 'grid',
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Build responsive classes based on mode and breakpoint
|
|
49
|
+
function getResponsiveClasses(m: Mode, bp: Breakpoint, disp: string): string {
|
|
50
|
+
const dispClass = displayClasses[disp];
|
|
51
|
+
|
|
52
|
+
switch (m) {
|
|
53
|
+
case 'show-mobile':
|
|
54
|
+
// Show on mobile, hide on desktop
|
|
55
|
+
return `${dispClass} ${bp}:hidden`;
|
|
56
|
+
case 'show-desktop':
|
|
57
|
+
// Hide on mobile, show on desktop
|
|
58
|
+
return `hidden ${bp}:${dispClass}`;
|
|
59
|
+
case 'hide-mobile':
|
|
60
|
+
// Hide on mobile, show on desktop
|
|
61
|
+
return `hidden ${bp}:${dispClass}`;
|
|
62
|
+
case 'hide-desktop':
|
|
63
|
+
// Show on mobile, hide on desktop
|
|
64
|
+
return `${dispClass} ${bp}:hidden`;
|
|
65
|
+
default:
|
|
66
|
+
return dispClass;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
let classes = $derived(`${getResponsiveClasses(mode, breakpoint, display)} ${className}`.trim());
|
|
71
|
+
</script>
|
|
72
|
+
|
|
73
|
+
<div class={classes}>
|
|
74
|
+
{#if children}{@render children()}{/if}
|
|
75
|
+
</div>
|