@gcsa/console-react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConsoleHeader.d.ts +9 -0
- package/dist/ConsoleHeader.js +21 -0
- package/dist/ConsoleHeader.js.map +1 -0
- package/dist/ConsolePage.d.ts +8 -0
- package/dist/ConsolePage.js +14 -0
- package/dist/ConsolePage.js.map +1 -0
- package/dist/ConsoleShell.d.ts +23 -0
- package/dist/ConsoleShell.js +133 -0
- package/dist/ConsoleShell.js.map +1 -0
- package/dist/ConsoleSidebar.d.ts +11 -0
- package/dist/ConsoleSidebar.js +52 -0
- package/dist/ConsoleSidebar.js.map +1 -0
- package/dist/GcsaAlert.d.ts +9 -0
- package/dist/GcsaAlert.js +24 -0
- package/dist/GcsaAlert.js.map +1 -0
- package/dist/GcsaAutoComplete.d.ts +15 -0
- package/dist/GcsaAutoComplete.js +106 -0
- package/dist/GcsaAutoComplete.js.map +1 -0
- package/dist/GcsaAvatar.d.ts +8 -0
- package/dist/GcsaAvatar.js +13 -0
- package/dist/GcsaAvatar.js.map +1 -0
- package/dist/GcsaBadge.d.ts +7 -0
- package/dist/GcsaBadge.js +8 -0
- package/dist/GcsaBadge.js.map +1 -0
- package/dist/GcsaBrandMark.d.ts +4 -0
- package/dist/GcsaBrandMark.js +21 -0
- package/dist/GcsaBrandMark.js.map +1 -0
- package/dist/GcsaBreadcrumb.d.ts +9 -0
- package/dist/GcsaBreadcrumb.js +20 -0
- package/dist/GcsaBreadcrumb.js.map +1 -0
- package/dist/GcsaButton.d.ts +8 -0
- package/dist/GcsaButton.js +38 -0
- package/dist/GcsaButton.js.map +1 -0
- package/dist/GcsaCalendar.d.ts +11 -0
- package/dist/GcsaCalendar.js +35 -0
- package/dist/GcsaCalendar.js.map +1 -0
- package/dist/GcsaCard.d.ts +8 -0
- package/dist/GcsaCard.js +11 -0
- package/dist/GcsaCard.js.map +1 -0
- package/dist/GcsaCascader.d.ts +14 -0
- package/dist/GcsaCascader.js +91 -0
- package/dist/GcsaCascader.js.map +1 -0
- package/dist/GcsaChatPanel.d.ts +43 -0
- package/dist/GcsaChatPanel.js +180 -0
- package/dist/GcsaChatPanel.js.map +1 -0
- package/dist/GcsaCheckbox.d.ts +11 -0
- package/dist/GcsaCheckbox.js +45 -0
- package/dist/GcsaCheckbox.js.map +1 -0
- package/dist/GcsaCollapse.d.ts +16 -0
- package/dist/GcsaCollapse.js +20 -0
- package/dist/GcsaCollapse.js.map +1 -0
- package/dist/GcsaConfigProvider.d.ts +13 -0
- package/dist/GcsaConfigProvider.js +68 -0
- package/dist/GcsaConfigProvider.js.map +1 -0
- package/dist/GcsaDataTable.d.ts +119 -0
- package/dist/GcsaDataTable.js +508 -0
- package/dist/GcsaDataTable.js.map +1 -0
- package/dist/GcsaDatePicker.d.ts +16 -0
- package/dist/GcsaDatePicker.js +211 -0
- package/dist/GcsaDatePicker.js.map +1 -0
- package/dist/GcsaDateRangePicker.d.ts +17 -0
- package/dist/GcsaDateRangePicker.js +222 -0
- package/dist/GcsaDateRangePicker.js.map +1 -0
- package/dist/GcsaDateTimePicker.d.ts +13 -0
- package/dist/GcsaDateTimePicker.js +300 -0
- package/dist/GcsaDateTimePicker.js.map +1 -0
- package/dist/GcsaDescriptions.d.ts +9 -0
- package/dist/GcsaDescriptions.js +11 -0
- package/dist/GcsaDescriptions.js.map +1 -0
- package/dist/GcsaDivider.d.ts +4 -0
- package/dist/GcsaDivider.js +8 -0
- package/dist/GcsaDivider.js.map +1 -0
- package/dist/GcsaDrawer.d.ts +15 -0
- package/dist/GcsaDrawer.js +68 -0
- package/dist/GcsaDrawer.js.map +1 -0
- package/dist/GcsaDropdown.d.ts +20 -0
- package/dist/GcsaDropdown.js +46 -0
- package/dist/GcsaDropdown.js.map +1 -0
- package/dist/GcsaEmpty.d.ts +9 -0
- package/dist/GcsaEmpty.js +16 -0
- package/dist/GcsaEmpty.js.map +1 -0
- package/dist/GcsaField.d.ts +11 -0
- package/dist/GcsaField.js +26 -0
- package/dist/GcsaField.js.map +1 -0
- package/dist/GcsaForm.d.ts +13 -0
- package/dist/GcsaForm.js +60 -0
- package/dist/GcsaForm.js.map +1 -0
- package/dist/GcsaFormField.d.ts +16 -0
- package/dist/GcsaFormField.js +39 -0
- package/dist/GcsaFormField.js.map +1 -0
- package/dist/GcsaIcon.d.ts +7 -0
- package/dist/GcsaIcon.js +17 -0
- package/dist/GcsaIcon.js.map +1 -0
- package/dist/GcsaImagePreview.d.ts +8 -0
- package/dist/GcsaImagePreview.js +18 -0
- package/dist/GcsaImagePreview.js.map +1 -0
- package/dist/GcsaInput.d.ts +13 -0
- package/dist/GcsaInput.js +76 -0
- package/dist/GcsaInput.js.map +1 -0
- package/dist/GcsaInputGroup.d.ts +11 -0
- package/dist/GcsaInputGroup.js +27 -0
- package/dist/GcsaInputGroup.js.map +1 -0
- package/dist/GcsaInputNumber.d.ts +18 -0
- package/dist/GcsaInputNumber.js +108 -0
- package/dist/GcsaInputNumber.js.map +1 -0
- package/dist/GcsaLoading.d.ts +24 -0
- package/dist/GcsaLoading.js +101 -0
- package/dist/GcsaLoading.js.map +1 -0
- package/dist/GcsaLoadingMask.d.ts +8 -0
- package/dist/GcsaLoadingMask.js +39 -0
- package/dist/GcsaLoadingMask.js.map +1 -0
- package/dist/GcsaMarkdownRenderer.d.ts +6 -0
- package/dist/GcsaMarkdownRenderer.js +32 -0
- package/dist/GcsaMarkdownRenderer.js.map +1 -0
- package/dist/GcsaMenu.d.ts +16 -0
- package/dist/GcsaMenu.js +241 -0
- package/dist/GcsaMenu.js.map +1 -0
- package/dist/GcsaModal.d.ts +10 -0
- package/dist/GcsaModal.js +45 -0
- package/dist/GcsaModal.js.map +1 -0
- package/dist/GcsaMultiSelect.d.ts +23 -0
- package/dist/GcsaMultiSelect.js +149 -0
- package/dist/GcsaMultiSelect.js.map +1 -0
- package/dist/GcsaPagination.d.ts +17 -0
- package/dist/GcsaPagination.js +108 -0
- package/dist/GcsaPagination.js.map +1 -0
- package/dist/GcsaPopconfirm.d.ts +18 -0
- package/dist/GcsaPopconfirm.js +68 -0
- package/dist/GcsaPopconfirm.js.map +1 -0
- package/dist/GcsaPopover.d.ts +30 -0
- package/dist/GcsaPopover.js +65 -0
- package/dist/GcsaPopover.js.map +1 -0
- package/dist/GcsaPopoverClose.d.ts +6 -0
- package/dist/GcsaPopoverClose.js +9 -0
- package/dist/GcsaPopoverClose.js.map +1 -0
- package/dist/GcsaProgress.d.ts +5 -0
- package/dist/GcsaProgress.js +18 -0
- package/dist/GcsaProgress.js.map +1 -0
- package/dist/GcsaRadioGroup.d.ts +9 -0
- package/dist/GcsaRadioGroup.js +37 -0
- package/dist/GcsaRadioGroup.js.map +1 -0
- package/dist/GcsaResult.d.ts +9 -0
- package/dist/GcsaResult.js +14 -0
- package/dist/GcsaResult.js.map +1 -0
- package/dist/GcsaRow.d.ts +7 -0
- package/dist/GcsaRow.js +8 -0
- package/dist/GcsaRow.js.map +1 -0
- package/dist/GcsaSelect.d.ts +20 -0
- package/dist/GcsaSelect.js +117 -0
- package/dist/GcsaSelect.js.map +1 -0
- package/dist/GcsaSkeleton.d.ts +6 -0
- package/dist/GcsaSkeleton.js +19 -0
- package/dist/GcsaSkeleton.js.map +1 -0
- package/dist/GcsaSpace.d.ts +7 -0
- package/dist/GcsaSpace.js +14 -0
- package/dist/GcsaSpace.js.map +1 -0
- package/dist/GcsaSpin.d.ts +7 -0
- package/dist/GcsaSpin.js +16 -0
- package/dist/GcsaSpin.js.map +1 -0
- package/dist/GcsaStatistic.d.ts +8 -0
- package/dist/GcsaStatistic.js +11 -0
- package/dist/GcsaStatistic.js.map +1 -0
- package/dist/GcsaSteps.d.ts +10 -0
- package/dist/GcsaSteps.js +54 -0
- package/dist/GcsaSteps.js.map +1 -0
- package/dist/GcsaSwitch.d.ts +11 -0
- package/dist/GcsaSwitch.js +36 -0
- package/dist/GcsaSwitch.js.map +1 -0
- package/dist/GcsaTabs.d.ts +15 -0
- package/dist/GcsaTabs.js +39 -0
- package/dist/GcsaTabs.js.map +1 -0
- package/dist/GcsaTag.d.ts +7 -0
- package/dist/GcsaTag.js +9 -0
- package/dist/GcsaTag.js.map +1 -0
- package/dist/GcsaTextarea.d.ts +13 -0
- package/dist/GcsaTextarea.js +76 -0
- package/dist/GcsaTextarea.js.map +1 -0
- package/dist/GcsaTimePicker.d.ts +12 -0
- package/dist/GcsaTimePicker.js +221 -0
- package/dist/GcsaTimePicker.js.map +1 -0
- package/dist/GcsaTimeline.d.ts +5 -0
- package/dist/GcsaTimeline.js +19 -0
- package/dist/GcsaTimeline.js.map +1 -0
- package/dist/GcsaToastStack.d.ts +11 -0
- package/dist/GcsaToastStack.js +45 -0
- package/dist/GcsaToastStack.js.map +1 -0
- package/dist/GcsaTooltip.d.ts +17 -0
- package/dist/GcsaTooltip.js +43 -0
- package/dist/GcsaTooltip.js.map +1 -0
- package/dist/GcsaTransfer.d.ts +11 -0
- package/dist/GcsaTransfer.js +95 -0
- package/dist/GcsaTransfer.js.map +1 -0
- package/dist/GcsaTree.d.ts +17 -0
- package/dist/GcsaTree.js +38 -0
- package/dist/GcsaTree.js.map +1 -0
- package/dist/GcsaTypography.d.ts +8 -0
- package/dist/GcsaTypography.js +14 -0
- package/dist/GcsaTypography.js.map +1 -0
- package/dist/GcsaUpload.d.ts +24 -0
- package/dist/GcsaUpload.js +146 -0
- package/dist/GcsaUpload.js.map +1 -0
- package/dist/hooks/gcsaFormTypes.d.ts +7 -0
- package/dist/hooks/useDocumentThemeSync.d.ts +3 -0
- package/dist/hooks/useDocumentThemeSync.js +7 -0
- package/dist/hooks/useDocumentThemeSync.js.map +1 -0
- package/dist/hooks/useGcsaComponentSize.d.ts +5 -0
- package/dist/hooks/useGcsaComponentSize.js +21 -0
- package/dist/hooks/useGcsaComponentSize.js.map +1 -0
- package/dist/hooks/useGcsaFormField.d.ts +26 -0
- package/dist/hooks/useGcsaFormField.js +47 -0
- package/dist/hooks/useGcsaFormField.js.map +1 -0
- package/dist/hooks/useGcsaFormSchema.d.ts +7 -0
- package/dist/hooks/useGcsaFormSchema.js +6 -0
- package/dist/hooks/useGcsaFormSchema.js.map +1 -0
- package/dist/hooks/useGcsaLocale.d.ts +4 -0
- package/dist/hooks/useGcsaLocale.js +15 -0
- package/dist/hooks/useGcsaLocale.js.map +1 -0
- package/dist/hooks/useGcsaPopupZIndex.d.ts +6 -0
- package/dist/hooks/useGcsaPopupZIndex.js +18 -0
- package/dist/hooks/useGcsaPopupZIndex.js.map +1 -0
- package/dist/hooks/useGcsaTextCount.d.ts +16 -0
- package/dist/hooks/useGcsaTextCount.js +16 -0
- package/dist/hooks/useGcsaTextCount.js.map +1 -0
- package/dist/hooks/useGcsaTheme.d.ts +7 -0
- package/dist/hooks/useGcsaTheme.js +19 -0
- package/dist/hooks/useGcsaTheme.js.map +1 -0
- package/dist/hooks/useGcsaZIndex.d.ts +13 -0
- package/dist/hooks/useGcsaZIndex.js +37 -0
- package/dist/hooks/useGcsaZIndex.js.map +1 -0
- package/dist/hooks/useMessage.d.ts +6 -0
- package/dist/hooks/useOverlayZIndex.d.ts +8 -0
- package/dist/hooks/useOverlayZIndex.js +14 -0
- package/dist/hooks/useOverlayZIndex.js.map +1 -0
- package/dist/hooks/usePreventHiddenInputScroll.d.ts +13 -0
- package/dist/hooks/usePreventHiddenInputScroll.js +124 -0
- package/dist/hooks/usePreventHiddenInputScroll.js.map +1 -0
- package/dist/icons/iconNames.d.ts +7 -0
- package/dist/icons/iconNames.js +24 -0
- package/dist/icons/iconNames.js.map +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/registry.d.ts +3 -0
- package/dist/icons/registry.js +58 -0
- package/dist/icons/registry.js.map +1 -0
- package/dist/icons/svg/alert.svg.js +9 -0
- package/dist/icons/svg/alert.svg.js.map +1 -0
- package/dist/icons/svg/assets.svg.js +9 -0
- package/dist/icons/svg/assets.svg.js.map +1 -0
- package/dist/icons/svg/chat.svg.js +8 -0
- package/dist/icons/svg/chat.svg.js.map +1 -0
- package/dist/icons/svg/check.svg.js +8 -0
- package/dist/icons/svg/check.svg.js.map +1 -0
- package/dist/icons/svg/chevron-down.svg.js +8 -0
- package/dist/icons/svg/chevron-down.svg.js.map +1 -0
- package/dist/icons/svg/chevron-left.svg.js +8 -0
- package/dist/icons/svg/chevron-left.svg.js.map +1 -0
- package/dist/icons/svg/chevron-right.svg.js +8 -0
- package/dist/icons/svg/chevron-right.svg.js.map +1 -0
- package/dist/icons/svg/chevron-up.svg.js +8 -0
- package/dist/icons/svg/chevron-up.svg.js.map +1 -0
- package/dist/icons/svg/close.svg.js +6 -0
- package/dist/icons/svg/close.svg.js.map +1 -0
- package/dist/icons/svg/dashboard.svg.js +8 -0
- package/dist/icons/svg/dashboard.svg.js.map +1 -0
- package/dist/icons/svg/menu.svg.js +8 -0
- package/dist/icons/svg/menu.svg.js.map +1 -0
- package/dist/icons/svg/plus.svg.js +6 -0
- package/dist/icons/svg/plus.svg.js.map +1 -0
- package/dist/icons/svg/result-empty.svg.js +6 -0
- package/dist/icons/svg/result-empty.svg.js.map +1 -0
- package/dist/icons/svg/settings.svg.js +8 -0
- package/dist/icons/svg/settings.svg.js.map +1 -0
- package/dist/icons/svg/users.svg.js +11 -0
- package/dist/icons/svg/users.svg.js.map +1 -0
- package/dist/index.d.ts +151 -0
- package/dist/index.js +166 -0
- package/dist/index.js.map +1 -0
- package/dist/style.css +8028 -0
- package/dist/utils/gcsaDateValue.d.ts +25 -0
- package/dist/utils/gcsaDateValue.js +60 -0
- package/dist/utils/gcsaDateValue.js.map +1 -0
- package/dist/utils/gcsaTableColumns.d.ts +19 -0
- package/dist/utils/gcsaTableColumns.js +43 -0
- package/dist/utils/gcsaTableColumns.js.map +1 -0
- package/dist/utils/preserveDrawerScroll.d.ts +2 -0
- package/dist/utils/preserveDrawerScroll.js +13 -0
- package/dist/utils/preserveDrawerScroll.js.map +1 -0
- package/dist/utils/zodValidators.d.ts +21 -0
- package/dist/utils/zodValidators.js +35 -0
- package/dist/utils/zodValidators.js.map +1 -0
- package/package.json +58 -0
- package/src/ConsoleHeader.tsx +24 -0
- package/src/ConsolePage.tsx +22 -0
- package/src/ConsoleShell.tsx +248 -0
- package/src/ConsoleSidebar.tsx +61 -0
- package/src/GcsaAlert.tsx +29 -0
- package/src/GcsaAutoComplete.tsx +163 -0
- package/src/GcsaAvatar.tsx +21 -0
- package/src/GcsaBadge.tsx +15 -0
- package/src/GcsaBrandMark.tsx +18 -0
- package/src/GcsaBreadcrumb.tsx +35 -0
- package/src/GcsaButton.tsx +44 -0
- package/src/GcsaCalendar.tsx +14 -0
- package/src/GcsaCard.tsx +21 -0
- package/src/GcsaCascader.tsx +121 -0
- package/src/GcsaChatPanel.tsx +320 -0
- package/src/GcsaCheckbox.tsx +55 -0
- package/src/GcsaCollapse.tsx +23 -0
- package/src/GcsaConfigProvider.tsx +121 -0
- package/src/GcsaDataTable.tsx +779 -0
- package/src/GcsaDatePicker.tsx +284 -0
- package/src/GcsaDateRangePicker.tsx +310 -0
- package/src/GcsaDateTimePicker.tsx +407 -0
- package/src/GcsaDescriptions.tsx +22 -0
- package/src/GcsaDivider.tsx +7 -0
- package/src/GcsaDrawer.tsx +87 -0
- package/src/GcsaDropdown.tsx +84 -0
- package/src/GcsaEmpty.tsx +27 -0
- package/src/GcsaField.tsx +50 -0
- package/src/GcsaForm.tsx +82 -0
- package/src/GcsaFormField.tsx +67 -0
- package/src/GcsaIcon.tsx +21 -0
- package/src/GcsaImagePreview.tsx +30 -0
- package/src/GcsaInput.tsx +87 -0
- package/src/GcsaInputGroup.tsx +32 -0
- package/src/GcsaInputNumber.tsx +155 -0
- package/src/GcsaLoading.ts +206 -0
- package/src/GcsaLoadingMask.tsx +53 -0
- package/src/GcsaMarkdownRenderer.tsx +40 -0
- package/src/GcsaMenu.tsx +340 -0
- package/src/GcsaModal.tsx +68 -0
- package/src/GcsaMultiSelect.tsx +246 -0
- package/src/GcsaPagination.tsx +194 -0
- package/src/GcsaPopconfirm.tsx +104 -0
- package/src/GcsaPopover.tsx +131 -0
- package/src/GcsaPopoverClose.tsx +11 -0
- package/src/GcsaProgress.tsx +18 -0
- package/src/GcsaRadioGroup.tsx +42 -0
- package/src/GcsaResult.tsx +23 -0
- package/src/GcsaRow.tsx +13 -0
- package/src/GcsaSelect.tsx +186 -0
- package/src/GcsaSkeleton.tsx +19 -0
- package/src/GcsaSpace.tsx +17 -0
- package/src/GcsaSpin.tsx +25 -0
- package/src/GcsaStatistic.tsx +17 -0
- package/src/GcsaSteps.tsx +73 -0
- package/src/GcsaSwitch.tsx +45 -0
- package/src/GcsaTabs.tsx +53 -0
- package/src/GcsaTag.tsx +16 -0
- package/src/GcsaTextarea.tsx +87 -0
- package/src/GcsaTimePicker.tsx +298 -0
- package/src/GcsaTimeline.tsx +27 -0
- package/src/GcsaToastStack.tsx +67 -0
- package/src/GcsaTooltip.tsx +75 -0
- package/src/GcsaTransfer.tsx +129 -0
- package/src/GcsaTree.tsx +43 -0
- package/src/GcsaTypography.tsx +24 -0
- package/src/GcsaUpload.tsx +206 -0
- package/src/hooks/gcsaFormTypes.ts +23 -0
- package/src/hooks/useDocumentThemeSync.ts +6 -0
- package/src/hooks/useGcsaComponentSize.ts +24 -0
- package/src/hooks/useGcsaFormField.ts +49 -0
- package/src/hooks/useGcsaFormSchema.ts +6 -0
- package/src/hooks/useGcsaLocale.ts +16 -0
- package/src/hooks/useGcsaPopupZIndex.ts +23 -0
- package/src/hooks/useGcsaTextCount.ts +44 -0
- package/src/hooks/useGcsaTheme.ts +19 -0
- package/src/hooks/useGcsaZIndex.ts +60 -0
- package/src/hooks/useMessage.ts +7 -0
- package/src/hooks/useOverlayZIndex.ts +23 -0
- package/src/hooks/usePreventHiddenInputScroll.ts +233 -0
- package/src/icons/iconNames.ts +27 -0
- package/src/icons/index.ts +8 -0
- package/src/icons/registry.ts +38 -0
- package/src/icons/svg/alert.svg +4 -0
- package/src/icons/svg/assets.svg +4 -0
- package/src/icons/svg/chat.svg +3 -0
- package/src/icons/svg/check.svg +3 -0
- package/src/icons/svg/chevron-down.svg +3 -0
- package/src/icons/svg/chevron-left.svg +3 -0
- package/src/icons/svg/chevron-right.svg +3 -0
- package/src/icons/svg/chevron-up.svg +3 -0
- package/src/icons/svg/close.svg +1 -0
- package/src/icons/svg/dashboard.svg +3 -0
- package/src/icons/svg/menu.svg +3 -0
- package/src/icons/svg/plus.svg +1 -0
- package/src/icons/svg/result-empty.svg +1 -0
- package/src/icons/svg/settings.svg +3 -0
- package/src/icons/svg/users.svg +6 -0
- package/src/index.ts +166 -0
- package/src/utils/gcsaDateValue.ts +99 -0
- package/src/utils/gcsaTableColumns.ts +97 -0
- package/src/utils/preserveDrawerScroll.ts +20 -0
- package/src/utils/zodValidators.ts +45 -0
- package/src/vite-env.d.ts +6 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { GcsaDatePickerMode, GcsaDateRangeValue, GcsaMonthRangeValue, GcsaSelectOption } from '@gcsa/console-core';
|
|
2
|
+
import { DateValue } from '@ark-ui/react/date-picker';
|
|
3
|
+
export type GcsaDatePickerSelectCell = {
|
|
4
|
+
label: string;
|
|
5
|
+
value: number;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function gcsaDatePickerCellsToOptions(cells: GcsaDatePickerSelectCell[]): GcsaSelectOption[];
|
|
9
|
+
export declare function gcsaNormalizeDateBoundary(value: string | undefined, mode: GcsaDatePickerMode): string | undefined;
|
|
10
|
+
export declare function gcsaDateValueToOutputString(value: DateValue | undefined | null, mode: GcsaDatePickerMode): string;
|
|
11
|
+
export declare function gcsaDateValueToString(value: DateValue | undefined | null): string;
|
|
12
|
+
export declare function gcsaStringToDateValues(value: string | undefined | null, mode?: GcsaDatePickerMode): DateValue[] | undefined;
|
|
13
|
+
export declare function gcsaDateRangeToDateValues(range: GcsaDateRangeValue | GcsaMonthRangeValue | undefined | null, mode?: GcsaDatePickerMode): DateValue[] | undefined;
|
|
14
|
+
export declare function gcsaDateValuesToRange(values: DateValue[] | undefined | null, mode?: GcsaDatePickerMode): GcsaDateRangeValue | GcsaMonthRangeValue;
|
|
15
|
+
export declare function gcsaDatePickerFormat(date: DateValue, _details: {
|
|
16
|
+
locale: string;
|
|
17
|
+
timeZone: string;
|
|
18
|
+
}, mode: GcsaDatePickerMode): string;
|
|
19
|
+
export declare function gcsaDatePickerParse(value: string, _details: {
|
|
20
|
+
locale: string;
|
|
21
|
+
timeZone: string;
|
|
22
|
+
}, mode: GcsaDatePickerMode): DateValue | undefined;
|
|
23
|
+
/** ISO 日期时间字符串 YYYY-MM-DD HH:mm:ss */
|
|
24
|
+
export type { GcsaDateTimeString } from '@gcsa/console-core';
|
|
25
|
+
export { gcsaJoinDateTime, gcsaSplitDateTime } from '@gcsa/console-core';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { formatGcsaMonthParts as c, formatGcsaDateParts as f } from "@gcsa/console-core";
|
|
2
|
+
import { gcsaJoinDateTime as b, gcsaSplitDateTime as S } from "@gcsa/console-core";
|
|
3
|
+
import { parseDate as s } from "@ark-ui/react/date-picker";
|
|
4
|
+
function g(t) {
|
|
5
|
+
return t.map((r) => ({
|
|
6
|
+
label: r.label,
|
|
7
|
+
value: String(r.value),
|
|
8
|
+
disabled: r.disabled
|
|
9
|
+
}));
|
|
10
|
+
}
|
|
11
|
+
function d(t, r) {
|
|
12
|
+
if (t)
|
|
13
|
+
return r === "month" && /^\d{4}-\d{2}$/.test(t) ? `${t}-01` : t;
|
|
14
|
+
}
|
|
15
|
+
function e(t, r) {
|
|
16
|
+
return !t || !("month" in t) ? "" : r === "month" ? c(t.year, t.month) : "day" in t ? f(t.year, t.month, t.day) : "";
|
|
17
|
+
}
|
|
18
|
+
function a(t, r = "date") {
|
|
19
|
+
if (!t) return;
|
|
20
|
+
const n = d(t, r);
|
|
21
|
+
if (n)
|
|
22
|
+
try {
|
|
23
|
+
return [s(n)];
|
|
24
|
+
} catch {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function D(t, r = "date") {
|
|
29
|
+
if (!t) return;
|
|
30
|
+
const n = [];
|
|
31
|
+
for (const o of t) {
|
|
32
|
+
if (!o) continue;
|
|
33
|
+
const i = a(o, r);
|
|
34
|
+
i != null && i[0] && n.push(i[0]);
|
|
35
|
+
}
|
|
36
|
+
return n.length ? n : void 0;
|
|
37
|
+
}
|
|
38
|
+
function h(t, r = "date") {
|
|
39
|
+
return [e(t == null ? void 0 : t[0], r), e(t == null ? void 0 : t[1], r)];
|
|
40
|
+
}
|
|
41
|
+
function p(t, r, n) {
|
|
42
|
+
return e(t, n);
|
|
43
|
+
}
|
|
44
|
+
function T(t, r, n) {
|
|
45
|
+
const o = a(t, n);
|
|
46
|
+
return o == null ? void 0 : o[0];
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
g as gcsaDatePickerCellsToOptions,
|
|
50
|
+
p as gcsaDatePickerFormat,
|
|
51
|
+
T as gcsaDatePickerParse,
|
|
52
|
+
D as gcsaDateRangeToDateValues,
|
|
53
|
+
e as gcsaDateValueToOutputString,
|
|
54
|
+
h as gcsaDateValuesToRange,
|
|
55
|
+
b as gcsaJoinDateTime,
|
|
56
|
+
d as gcsaNormalizeDateBoundary,
|
|
57
|
+
S as gcsaSplitDateTime,
|
|
58
|
+
a as gcsaStringToDateValues
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=gcsaDateValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcsaDateValue.js","sources":["../../src/utils/gcsaDateValue.ts"],"sourcesContent":["import {\n formatGcsaDateParts,\n formatGcsaMonthParts,\n type GcsaDatePickerMode,\n type GcsaDateRangeValue,\n type GcsaMonthRangeValue\n} from '@gcsa/console-core';\nimport type { GcsaSelectOption } from '@gcsa/console-core';\nimport { parseDate, type DateValue } from '@ark-ui/react/date-picker';\n\nexport type GcsaDatePickerSelectCell = {\n label: string;\n value: number;\n disabled?: boolean;\n};\n\nexport function gcsaDatePickerCellsToOptions(cells: GcsaDatePickerSelectCell[]): GcsaSelectOption[] {\n return cells.map(cell => ({\n label: cell.label,\n value: String(cell.value),\n disabled: cell.disabled\n }));\n}\n\nexport function gcsaNormalizeDateBoundary(value: string | undefined, mode: GcsaDatePickerMode): string | undefined {\n if (!value) return undefined;\n if (mode === 'month' && /^\\d{4}-\\d{2}$/.test(value)) return `${value}-01`;\n return value;\n}\n\nexport function gcsaDateValueToOutputString(\n value: DateValue | undefined | null,\n mode: GcsaDatePickerMode\n): string {\n if (!value || !('month' in value)) return '';\n if (mode === 'month') return formatGcsaMonthParts(value.year, value.month);\n if ('day' in value) return formatGcsaDateParts(value.year, value.month, value.day);\n return '';\n}\n\nexport function gcsaDateValueToString(value: DateValue | undefined | null): string {\n return gcsaDateValueToOutputString(value, 'date');\n}\n\nexport function gcsaStringToDateValues(\n value: string | undefined | null,\n mode: GcsaDatePickerMode = 'date'\n): DateValue[] | undefined {\n if (!value) return undefined;\n const normalized = gcsaNormalizeDateBoundary(value, mode);\n if (!normalized) return undefined;\n try {\n return [parseDate(normalized)];\n } catch {\n return undefined;\n }\n}\n\nexport function gcsaDateRangeToDateValues(\n range: GcsaDateRangeValue | GcsaMonthRangeValue | undefined | null,\n mode: GcsaDatePickerMode = 'date'\n): DateValue[] | undefined {\n if (!range) return undefined;\n const values: DateValue[] = [];\n for (const part of range) {\n if (!part) continue;\n const parsed = gcsaStringToDateValues(part, mode);\n if (parsed?.[0]) values.push(parsed[0]);\n }\n return values.length ? values : undefined;\n}\n\nexport function gcsaDateValuesToRange(\n values: DateValue[] | undefined | null,\n mode: GcsaDatePickerMode = 'date'\n): GcsaDateRangeValue | GcsaMonthRangeValue {\n return [gcsaDateValueToOutputString(values?.[0], mode), gcsaDateValueToOutputString(values?.[1], mode)];\n}\n\nexport function gcsaDatePickerFormat(\n date: DateValue,\n _details: { locale: string; timeZone: string },\n mode: GcsaDatePickerMode\n): string {\n return gcsaDateValueToOutputString(date, mode);\n}\n\nexport function gcsaDatePickerParse(\n value: string,\n _details: { locale: string; timeZone: string },\n mode: GcsaDatePickerMode\n): DateValue | undefined {\n const parsed = gcsaStringToDateValues(value, mode);\n return parsed?.[0];\n}\n\n/** ISO 日期时间字符串 YYYY-MM-DD HH:mm:ss */\nexport type { GcsaDateTimeString } from '@gcsa/console-core';\nexport { gcsaJoinDateTime, gcsaSplitDateTime } from '@gcsa/console-core';\n"],"names":["gcsaDatePickerCellsToOptions","cells","cell","gcsaNormalizeDateBoundary","value","mode","gcsaDateValueToOutputString","formatGcsaMonthParts","formatGcsaDateParts","gcsaStringToDateValues","normalized","parseDate","gcsaDateRangeToDateValues","range","values","part","parsed","gcsaDateValuesToRange","gcsaDatePickerFormat","date","_details","gcsaDatePickerParse"],"mappings":";;;AAgBO,SAASA,EAA6BC,GAAuD;AAClG,SAAOA,EAAM,IAAI,CAAAC,OAAS;AAAA,IACxB,OAAOA,EAAK;AAAA,IACZ,OAAO,OAAOA,EAAK,KAAK;AAAA,IACxB,UAAUA,EAAK;AAAA,EAAA,EACf;AACJ;AAEO,SAASC,EAA0BC,GAA2BC,GAA8C;AACjH,MAAKD;AACL,WAAIC,MAAS,WAAW,gBAAgB,KAAKD,CAAK,IAAU,GAAGA,CAAK,QAC7DA;AACT;AAEO,SAASE,EACdF,GACAC,GACQ;AACR,SAAI,CAACD,KAAS,EAAE,WAAWA,KAAe,KACtCC,MAAS,UAAgBE,EAAqBH,EAAM,MAAMA,EAAM,KAAK,IACrE,SAASA,IAAcI,EAAoBJ,EAAM,MAAMA,EAAM,OAAOA,EAAM,GAAG,IAC1E;AACT;AAMO,SAASK,EACdL,GACAC,IAA2B,QACF;AACzB,MAAI,CAACD,EAAO;AACZ,QAAMM,IAAaP,EAA0BC,GAAOC,CAAI;AACxD,MAAKK;AACL,QAAI;AACF,aAAO,CAACC,EAAUD,CAAU,CAAC;AAAA,IAC/B,QAAQ;AACN;AAAA,IACF;AACF;AAEO,SAASE,EACdC,GACAR,IAA2B,QACF;AACzB,MAAI,CAACQ,EAAO;AACZ,QAAMC,IAAsB,CAAA;AAC5B,aAAWC,KAAQF,GAAO;AACxB,QAAI,CAACE,EAAM;AACX,UAAMC,IAASP,EAAuBM,GAAMV,CAAI;AAChD,IAAIW,KAAA,QAAAA,EAAS,QAAW,KAAKA,EAAO,CAAC,CAAC;AAAA,EACxC;AACA,SAAOF,EAAO,SAASA,IAAS;AAClC;AAEO,SAASG,EACdH,GACAT,IAA2B,QACe;AAC1C,SAAO,CAACC,EAA4BQ,KAAA,gBAAAA,EAAS,IAAIT,CAAI,GAAGC,EAA4BQ,KAAA,gBAAAA,EAAS,IAAIT,CAAI,CAAC;AACxG;AAEO,SAASa,EACdC,GACAC,GACAf,GACQ;AACR,SAAOC,EAA4Ba,GAAMd,CAAI;AAC/C;AAEO,SAASgB,EACdjB,GACAgB,GACAf,GACuB;AACvB,QAAMW,IAASP,EAAuBL,GAAOC,CAAI;AACjD,SAAOW,KAAA,gBAAAA,EAAS;AAClB;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ColumnDef } from '@tanstack/react-table';
|
|
2
|
+
import { GcsaTableColumn } from '@gcsa/console-core';
|
|
3
|
+
export type GcsaTableCellSlotProps<T> = {
|
|
4
|
+
row: T;
|
|
5
|
+
value: unknown;
|
|
6
|
+
index: number;
|
|
7
|
+
column: string;
|
|
8
|
+
};
|
|
9
|
+
export type GcsaTableHeaderSlotProps = {
|
|
10
|
+
column: string;
|
|
11
|
+
title: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function isGcsaTableColumn<T>(column: GcsaTableColumn<T> | ColumnDef<T, unknown>): column is GcsaTableColumn<T>;
|
|
14
|
+
export declare function gcsaColumnSlotKey(column: GcsaTableColumn<unknown> | ColumnDef<unknown, unknown>): string;
|
|
15
|
+
export declare function gcsaTableColumnsToDefs<T extends Record<string, unknown>>(columns: GcsaTableColumn<T>[]): ColumnDef<T, unknown>[];
|
|
16
|
+
export declare function resolveGcsaTableColumns<T extends Record<string, unknown>>(columns: Array<GcsaTableColumn<T> | ColumnDef<T, unknown>>): ColumnDef<T, unknown>[];
|
|
17
|
+
export declare function gcsaTableCellSlotName(slotKey: string): string;
|
|
18
|
+
export declare function gcsaTableHeaderSlotName(slotKey: string): string;
|
|
19
|
+
export declare function formatGcsaTableCellValue(value: unknown): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
function l(i) {
|
|
2
|
+
return typeof i == "object" && i !== null && "id" in i && typeof i.header == "string" && // A converted TanStack definition also has id/header. Its `meta` field is
|
|
3
|
+
// the stable discriminator that prevents wrapping an adapter cell twice.
|
|
4
|
+
!("meta" in i) && !("accessorFn" in i);
|
|
5
|
+
}
|
|
6
|
+
function d(i) {
|
|
7
|
+
return i.map((e) => {
|
|
8
|
+
var a, s;
|
|
9
|
+
const f = e.slot ?? e.id, n = !!((a = e.columns) != null && a.length), o = e.accessorKey ?? e.id;
|
|
10
|
+
return {
|
|
11
|
+
id: e.id,
|
|
12
|
+
...n ? {} : { accessorKey: o },
|
|
13
|
+
header: e.header,
|
|
14
|
+
...n ? {} : { enableSorting: e.sortable ?? !1 },
|
|
15
|
+
...!n && e.sortCompare ? { sortingFn: (r, t) => e.sortCompare(r.original, t.original) } : {},
|
|
16
|
+
...(s = e.columns) != null && s.length ? { columns: d(e.columns) } : {},
|
|
17
|
+
meta: {
|
|
18
|
+
width: e.width,
|
|
19
|
+
minWidth: e.minWidth,
|
|
20
|
+
showOverflowTooltip: e.showOverflowTooltip,
|
|
21
|
+
align: e.align,
|
|
22
|
+
fixed: e.fixed,
|
|
23
|
+
hidden: e.hidden,
|
|
24
|
+
filter: e.filter,
|
|
25
|
+
slotKey: f
|
|
26
|
+
},
|
|
27
|
+
cell: !n && (e.cell || e.formatter) ? ({ getValue: r, row: t }) => e.cell ? e.cell(t.original) : e.formatter(r(), t.original, t.index) : void 0
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function g(i) {
|
|
32
|
+
return i.length ? l(i[0]) ? d(i) : i : [];
|
|
33
|
+
}
|
|
34
|
+
function h(i) {
|
|
35
|
+
return i == null ? "" : String(i);
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
h as formatGcsaTableCellValue,
|
|
39
|
+
d as gcsaTableColumnsToDefs,
|
|
40
|
+
l as isGcsaTableColumn,
|
|
41
|
+
g as resolveGcsaTableColumns
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=gcsaTableColumns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gcsaTableColumns.js","sources":["../../src/utils/gcsaTableColumns.ts"],"sourcesContent":["import type { ColumnDef } from '@tanstack/react-table';\nimport type { GcsaTableColumn } from '@gcsa/console-core';\n\nexport type GcsaTableCellSlotProps<T> = {\n row: T;\n value: unknown;\n index: number;\n column: string;\n};\n\nexport type GcsaTableHeaderSlotProps = {\n column: string;\n title: string;\n};\n\nexport function isGcsaTableColumn<T>(\n column: GcsaTableColumn<T> | ColumnDef<T, unknown>\n): column is GcsaTableColumn<T> {\n return (\n typeof column === 'object' &&\n column !== null &&\n 'id' in column &&\n typeof (column as GcsaTableColumn<T>).header === 'string' &&\n // A converted TanStack definition also has id/header. Its `meta` field is\n // the stable discriminator that prevents wrapping an adapter cell twice.\n !('meta' in column) &&\n !('accessorFn' in column)\n );\n}\n\nexport function gcsaColumnSlotKey(\n column: GcsaTableColumn<unknown> | ColumnDef<unknown, unknown>\n): string {\n if (isGcsaTableColumn(column)) {\n return column.slot ?? column.id;\n }\n const meta = column.meta as { slotKey?: string } | undefined;\n const accessorKey = 'accessorKey' in column ? column.accessorKey : undefined;\n return meta?.slotKey ?? column.id ?? String(accessorKey ?? '');\n}\n\nexport function gcsaTableColumnsToDefs<T extends Record<string, unknown>>(\n columns: GcsaTableColumn<T>[]\n): ColumnDef<T, unknown>[] {\n return columns.map(col => {\n const slotKey = col.slot ?? col.id;\n const isGroup = Boolean(col.columns?.length);\n const accessorKey = col.accessorKey ?? col.id;\n\n return {\n id: col.id,\n ...(!isGroup ? { accessorKey } : {}),\n header: col.header,\n ...(!isGroup ? { enableSorting: col.sortable ?? false } : {}),\n ...(!isGroup && col.sortCompare ? { sortingFn: (rowA: { original: T }, rowB: { original: T }) => col.sortCompare!(rowA.original, rowB.original) } : {}),\n ...(col.columns?.length ? { columns: gcsaTableColumnsToDefs(col.columns) } : {}),\n meta: {\n width: col.width,\n minWidth: col.minWidth,\n showOverflowTooltip: col.showOverflowTooltip,\n align: col.align,\n fixed: col.fixed,\n hidden: col.hidden,\n filter: col.filter,\n slotKey\n },\n cell: !isGroup && (col.cell || col.formatter)\n ? ({ getValue, row }) => col.cell\n ? col.cell(row.original)\n : col.formatter!(getValue(), row.original, row.index)\n : undefined\n };\n });\n}\n\nexport function resolveGcsaTableColumns<T extends Record<string, unknown>>(\n columns: Array<GcsaTableColumn<T> | ColumnDef<T, unknown>>\n): ColumnDef<T, unknown>[] {\n if (!columns.length) return [];\n if (isGcsaTableColumn(columns[0])) {\n return gcsaTableColumnsToDefs(columns as GcsaTableColumn<T>[]);\n }\n return columns as ColumnDef<T, unknown>[];\n}\n\nexport function gcsaTableCellSlotName(slotKey: string) {\n return `cell-${slotKey}`;\n}\n\nexport function gcsaTableHeaderSlotName(slotKey: string) {\n return `header-${slotKey}`;\n}\n\nexport function formatGcsaTableCellValue(value: unknown) {\n if (value == null) return '';\n return String(value);\n}\n"],"names":["isGcsaTableColumn","column","gcsaTableColumnsToDefs","columns","col","_a","_b","slotKey","isGroup","accessorKey","rowA","rowB","getValue","row","resolveGcsaTableColumns","formatGcsaTableCellValue","value"],"mappings":"AAeO,SAASA,EACdC,GAC8B;AAC9B,SACE,OAAOA,KAAW,YAClBA,MAAW,QACX,QAAQA,KACR,OAAQA,EAA8B,UAAW;AAAA;AAAA,EAGjD,EAAE,UAAUA,MACZ,EAAE,gBAAgBA;AAEtB;AAaO,SAASC,EACdC,GACyB;AACzB,SAAOA,EAAQ,IAAI,CAAAC,MAAO;AA7BrB,QAAAC,GAAAC;AA8BH,UAAMC,IAAUH,EAAI,QAAQA,EAAI,IAC1BI,IAAU,IAAQH,IAAAD,EAAI,YAAJ,QAAAC,EAAa,SAC/BI,IAAcL,EAAI,eAAeA,EAAI;AAE3C,WAAO;AAAA,MACL,IAAIA,EAAI;AAAA,MACR,GAAKI,IAA4B,CAAA,IAAlB,EAAE,aAAAC,EAAA;AAAA,MACjB,QAAQL,EAAI;AAAA,MACZ,GAAKI,IAAqD,CAAA,IAA3C,EAAE,eAAeJ,EAAI,YAAY,GAAA;AAAA,MAChD,GAAI,CAACI,KAAWJ,EAAI,cAAc,EAAE,WAAW,CAACM,GAAuBC,MAA0BP,EAAI,YAAaM,EAAK,UAAUC,EAAK,QAAQ,EAAA,IAAM,CAAA;AAAA,MACpJ,IAAIL,IAAAF,EAAI,YAAJ,QAAAE,EAAa,SAAS,EAAE,SAASJ,EAAuBE,EAAI,OAAO,EAAA,IAAM,CAAA;AAAA,MAC7E,MAAM;AAAA,QACJ,OAAOA,EAAI;AAAA,QACX,UAAUA,EAAI;AAAA,QACd,qBAAqBA,EAAI;AAAA,QACzB,OAAOA,EAAI;AAAA,QACX,OAAOA,EAAI;AAAA,QACX,QAAQA,EAAI;AAAA,QACZ,QAAQA,EAAI;AAAA,QACZ,SAAAG;AAAA,MAAA;AAAA,MAEF,MAAM,CAACC,MAAYJ,EAAI,QAAQA,EAAI,aAC/B,CAAC,EAAE,UAAAQ,GAAU,KAAAC,EAAA,MAAUT,EAAI,OACzBA,EAAI,KAAKS,EAAI,QAAQ,IACrBT,EAAI,UAAWQ,EAAA,GAAYC,EAAI,UAAUA,EAAI,KAAK,IACpD;AAAA,IAAA;AAAA,EAER,CAAC;AACH;AAEO,SAASC,EACdX,GACyB;AACzB,SAAKA,EAAQ,SACTH,EAAkBG,EAAQ,CAAC,CAAC,IACvBD,EAAuBC,CAA+B,IAExDA,IAJqB,CAAA;AAK9B;AAUO,SAASY,EAAyBC,GAAgB;AACvD,SAAIA,KAAS,OAAa,KACnB,OAAOA,CAAK;AACrB;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GCSA_PRESERVE_SCROLL_EVENT as t } from "../hooks/usePreventHiddenInputScroll.js";
|
|
2
|
+
function o(n) {
|
|
3
|
+
const e = n == null ? void 0 : n.closest(".gcsa-drawer__body");
|
|
4
|
+
if (!(e instanceof HTMLElement)) return;
|
|
5
|
+
const s = e.closest(".gcsa-drawer__panel");
|
|
6
|
+
s instanceof HTMLElement && s.scrollTop !== 0 && (s.scrollTop = 0), e.dispatchEvent(new Event(t)), requestAnimationFrame(() => {
|
|
7
|
+
e.dispatchEvent(new Event(t)), requestAnimationFrame(() => e.dispatchEvent(new Event(t)));
|
|
8
|
+
}), window.setTimeout(() => e.dispatchEvent(new Event(t)), 0), window.setTimeout(() => e.dispatchEvent(new Event(t)), 48), window.setTimeout(() => e.dispatchEvent(new Event(t)), 120), window.setTimeout(() => e.dispatchEvent(new Event(t)), 240);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
o as preserveDrawerScrollFrom
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=preserveDrawerScroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preserveDrawerScroll.js","sources":["../../src/utils/preserveDrawerScroll.ts"],"sourcesContent":["import { GCSA_PRESERVE_SCROLL_EVENT } from '../hooks/usePreventHiddenInputScroll';\n\n/** 通知最近的 Drawer body 恢复滚动(Select 开关、AutoComplete 面板切换后调用)。 */\nexport function preserveDrawerScrollFrom(node: HTMLElement | null | undefined) {\n const drawerBody = node?.closest('.gcsa-drawer__body');\n if (!(drawerBody instanceof HTMLElement)) return;\n const panel = drawerBody.closest('.gcsa-drawer__panel');\n if (panel instanceof HTMLElement && panel.scrollTop !== 0) {\n panel.scrollTop = 0;\n }\n drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT));\n requestAnimationFrame(() => {\n drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT));\n requestAnimationFrame(() => drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT)));\n });\n window.setTimeout(() => drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT)), 0);\n window.setTimeout(() => drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT)), 48);\n window.setTimeout(() => drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT)), 120);\n window.setTimeout(() => drawerBody.dispatchEvent(new Event(GCSA_PRESERVE_SCROLL_EVENT)), 240);\n}\n"],"names":["preserveDrawerScrollFrom","node","drawerBody","panel","GCSA_PRESERVE_SCROLL_EVENT"],"mappings":";AAGO,SAASA,EAAyBC,GAAsC;AAC7E,QAAMC,IAAaD,KAAA,gBAAAA,EAAM,QAAQ;AACjC,MAAI,EAAEC,aAAsB,aAAc;AAC1C,QAAMC,IAAQD,EAAW,QAAQ,qBAAqB;AACtD,EAAIC,aAAiB,eAAeA,EAAM,cAAc,MACtDA,EAAM,YAAY,IAEpBD,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,GAC9D,sBAAsB,MAAM;AAC1B,IAAAF,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,GAC9D,sBAAsB,MAAMF,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,CAAC;AAAA,EAC7F,CAAC,GACD,OAAO,WAAW,MAAMF,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,GAAG,CAAC,GAC1F,OAAO,WAAW,MAAMF,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,GAAG,EAAE,GAC3F,OAAO,WAAW,MAAMF,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,GAAG,GAAG,GAC5F,OAAO,WAAW,MAAMF,EAAW,cAAc,IAAI,MAAME,CAA0B,CAAC,GAAG,GAAG;AAC9F;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ZodObject, ZodTypeAny } from 'zod';
|
|
2
|
+
import { GcsaConsoleLocale } from '@gcsa/console-core';
|
|
3
|
+
type ZodShape = Record<string, ZodTypeAny>;
|
|
4
|
+
export declare function zodFieldValidator(schema: ZodObject<ZodShape>, fieldName: string, locale?: GcsaConsoleLocale): ({ value }: {
|
|
5
|
+
value: unknown;
|
|
6
|
+
}) => string | undefined;
|
|
7
|
+
export declare function zodFormValidator(schema: ZodObject<ZodShape>, locale?: GcsaConsoleLocale): ({ value }: {
|
|
8
|
+
value: Record<string, unknown>;
|
|
9
|
+
}) => string | undefined;
|
|
10
|
+
export declare function zodFieldValidators(schema: ZodObject<ZodShape>, fieldName: string, locale?: GcsaConsoleLocale): {
|
|
11
|
+
onBlur: ({ value }: {
|
|
12
|
+
value: unknown;
|
|
13
|
+
}) => string | undefined;
|
|
14
|
+
onChange: ({ value }: {
|
|
15
|
+
value: unknown;
|
|
16
|
+
}) => string | undefined;
|
|
17
|
+
onSubmit: ({ value }: {
|
|
18
|
+
value: unknown;
|
|
19
|
+
}) => string | undefined;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { getGcsaLocaleMessages as l, GCSA_DEFAULT_LOCALE as u } from "@gcsa/console-core";
|
|
2
|
+
function c(r, s, o) {
|
|
3
|
+
const e = l(o ?? u).validationFailed;
|
|
4
|
+
return ({ value: t }) => {
|
|
5
|
+
var n;
|
|
6
|
+
const a = r.shape[s];
|
|
7
|
+
if (!a) return;
|
|
8
|
+
const i = a.safeParse(t);
|
|
9
|
+
if (!i.success)
|
|
10
|
+
return ((n = i.error.issues[0]) == null ? void 0 : n.message) ?? e;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function f(r, s) {
|
|
14
|
+
const o = l(s ?? u).formValidationFailed;
|
|
15
|
+
return ({ value: e }) => {
|
|
16
|
+
var a;
|
|
17
|
+
const t = r.safeParse(e);
|
|
18
|
+
if (!t.success)
|
|
19
|
+
return ((a = t.error.issues[0]) == null ? void 0 : a.message) ?? o;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function m(r, s, o) {
|
|
23
|
+
const e = c(r, s, o);
|
|
24
|
+
return {
|
|
25
|
+
onBlur: e,
|
|
26
|
+
onChange: e,
|
|
27
|
+
onSubmit: e
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
c as zodFieldValidator,
|
|
32
|
+
m as zodFieldValidators,
|
|
33
|
+
f as zodFormValidator
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=zodValidators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zodValidators.js","sources":["../../src/utils/zodValidators.ts"],"sourcesContent":["import type { ZodObject, ZodTypeAny } from 'zod';\nimport {\n GCSA_DEFAULT_LOCALE,\n getGcsaLocaleMessages,\n type GcsaConsoleLocale\n} from '@gcsa/console-core';\n\ntype ZodShape = Record<string, ZodTypeAny>;\n\nexport function zodFieldValidator(\n schema: ZodObject<ZodShape>,\n fieldName: string,\n locale?: GcsaConsoleLocale\n) {\n const fallback = getGcsaLocaleMessages(locale ?? GCSA_DEFAULT_LOCALE).validationFailed;\n return ({ value }: { value: unknown }) => {\n const fieldSchema = schema.shape[fieldName];\n if (!fieldSchema) return undefined;\n const result = fieldSchema.safeParse(value);\n if (result.success) return undefined;\n return result.error.issues[0]?.message ?? fallback;\n };\n}\n\nexport function zodFormValidator(schema: ZodObject<ZodShape>, locale?: GcsaConsoleLocale) {\n const fallback = getGcsaLocaleMessages(locale ?? GCSA_DEFAULT_LOCALE).formValidationFailed;\n return ({ value }: { value: Record<string, unknown> }) => {\n const result = schema.safeParse(value);\n if (result.success) return undefined;\n return result.error.issues[0]?.message ?? fallback;\n };\n}\n\nexport function zodFieldValidators(\n schema: ZodObject<ZodShape>,\n fieldName: string,\n locale?: GcsaConsoleLocale\n) {\n const validate = zodFieldValidator(schema, fieldName, locale);\n return {\n onBlur: validate,\n onChange: validate,\n onSubmit: validate\n };\n}\n"],"names":["zodFieldValidator","schema","fieldName","locale","fallback","getGcsaLocaleMessages","GCSA_DEFAULT_LOCALE","value","fieldSchema","result","_a","zodFormValidator","zodFieldValidators","validate"],"mappings":";AASO,SAASA,EACdC,GACAC,GACAC,GACA;AACA,QAAMC,IAAWC,EAAsBF,KAAUG,CAAmB,EAAE;AACtE,SAAO,CAAC,EAAE,OAAAC,QAAgC;;AACxC,UAAMC,IAAcP,EAAO,MAAMC,CAAS;AAC1C,QAAI,CAACM,EAAa;AAClB,UAAMC,IAASD,EAAY,UAAUD,CAAK;AAC1C,QAAI,CAAAE,EAAO;AACX,eAAOC,IAAAD,EAAO,MAAM,OAAO,CAAC,MAArB,gBAAAC,EAAwB,YAAWN;AAAA,EAC5C;AACF;AAEO,SAASO,EAAiBV,GAA6BE,GAA4B;AACxF,QAAMC,IAAWC,EAAsBF,KAAUG,CAAmB,EAAE;AACtE,SAAO,CAAC,EAAE,OAAAC,QAAgD;;AACxD,UAAME,IAASR,EAAO,UAAUM,CAAK;AACrC,QAAI,CAAAE,EAAO;AACX,eAAOC,IAAAD,EAAO,MAAM,OAAO,CAAC,MAArB,gBAAAC,EAAwB,YAAWN;AAAA,EAC5C;AACF;AAEO,SAASQ,EACdX,GACAC,GACAC,GACA;AACA,QAAMU,IAAWb,EAAkBC,GAAQC,GAAWC,CAAM;AAC5D,SAAO;AAAA,IACL,QAAQU;AAAA,IACR,UAAUA;AAAA,IACV,UAAUA;AAAA,EAAA;AAEd;"}
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gcsa/console-react",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "GCSA console UI — React components (Ark UI + TanStack + GCSA styles)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "UNLICENSED",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"src"
|
|
10
|
+
],
|
|
11
|
+
"main": "./dist/index.js",
|
|
12
|
+
"module": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./style.css": "./dist/style.css",
|
|
20
|
+
"./*": {
|
|
21
|
+
"types": "./dist/*.d.ts",
|
|
22
|
+
"import": "./dist/*.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"sideEffects": [
|
|
26
|
+
"*.css",
|
|
27
|
+
"**/*.css"
|
|
28
|
+
],
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@ark-ui/react": "^5.9.0",
|
|
34
|
+
"@tanstack/react-form": "^1.12.2",
|
|
35
|
+
"@tanstack/react-table": "^8.21.3",
|
|
36
|
+
"zod": "^3.24.4",
|
|
37
|
+
"@gcsa/console-core": "0.1.0",
|
|
38
|
+
"@gcsa/console-styles": "0.1.0"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
42
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/react": "^19.1.2",
|
|
46
|
+
"@types/react-dom": "^19.1.2",
|
|
47
|
+
"@vitejs/plugin-react": "^4.4.1",
|
|
48
|
+
"react": "^19.1.0",
|
|
49
|
+
"react-dom": "^19.1.0",
|
|
50
|
+
"typescript": "^5.8.3",
|
|
51
|
+
"vite": "^6.3.5",
|
|
52
|
+
"vite-plugin-dts": "^4.5.4"
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "vite build && node scripts/postbuild.mjs",
|
|
56
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export type ConsoleHeaderProps = {
|
|
4
|
+
title: string;
|
|
5
|
+
eyebrow?: string;
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
actions?: ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export function ConsoleHeader({ title, eyebrow, subtitle, actions, className }: ConsoleHeaderProps) {
|
|
12
|
+
return (
|
|
13
|
+
<div className={`gcsa-console-header gcsa-ui-surface${className ? ` ${className}` : ''}`}>
|
|
14
|
+
<div className="gcsa-console-header__main">
|
|
15
|
+
{eyebrow ? <span className="gcsa-console-header__eyebrow">{eyebrow}</span> : null}
|
|
16
|
+
<div className="gcsa-console-header__title-row">
|
|
17
|
+
<h1 className="gcsa-console-header__title">{title}</h1>
|
|
18
|
+
{subtitle ? <p className="gcsa-console-header__subtitle">({subtitle})</p> : null}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
{actions ? <div className="gcsa-console-header__actions">{actions}</div> : null}
|
|
22
|
+
</div>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
export type ConsolePageProps = {
|
|
4
|
+
title?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function ConsolePage({ title, description, className, children }: ConsolePageProps) {
|
|
11
|
+
return (
|
|
12
|
+
<div className={`gcsa-page-stack${className ? ` ${className}` : ''}`}>
|
|
13
|
+
{title || description ? (
|
|
14
|
+
<section className="gcsa-page-intro gcsa-ui-surface">
|
|
15
|
+
{title ? <div className="gcsa-page-intro__title">{title}</div> : null}
|
|
16
|
+
{description ? <div className="gcsa-page-intro__desc">{description}</div> : null}
|
|
17
|
+
</section>
|
|
18
|
+
) : null}
|
|
19
|
+
{children}
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { cloneElement, isValidElement, useEffect, useState, type ReactNode } from 'react';
|
|
2
|
+
import type { GcsaNavItem } from '@gcsa/console-core';
|
|
3
|
+
import type { GcsaIconName } from './icons';
|
|
4
|
+
import { ConsoleHeader } from './ConsoleHeader';
|
|
5
|
+
import { ConsolePage } from './ConsolePage';
|
|
6
|
+
import { ConsoleSidebar } from './ConsoleSidebar';
|
|
7
|
+
import { GcsaIcon } from './GcsaIcon';
|
|
8
|
+
import { useGcsaLocaleMessages } from './hooks/useGcsaLocale';
|
|
9
|
+
|
|
10
|
+
function enhanceSidebarNode(
|
|
11
|
+
sidebar: ReactNode,
|
|
12
|
+
options: {
|
|
13
|
+
isMobile: boolean;
|
|
14
|
+
desktopCollapsed: boolean;
|
|
15
|
+
onMobileNavigate: () => void;
|
|
16
|
+
}
|
|
17
|
+
): ReactNode {
|
|
18
|
+
if (!isValidElement(sidebar)) return sidebar;
|
|
19
|
+
|
|
20
|
+
const props = sidebar.props as {
|
|
21
|
+
onNavigate?: (key: string) => void;
|
|
22
|
+
onSelect?: (item: GcsaNavItem) => void;
|
|
23
|
+
collapsed?: boolean;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const wrapHandler = <T extends (...args: never[]) => void>(handler?: T) => {
|
|
27
|
+
if (!handler) return undefined;
|
|
28
|
+
return ((...args: Parameters<T>) => {
|
|
29
|
+
if (options.isMobile) options.onMobileNavigate();
|
|
30
|
+
handler(...args);
|
|
31
|
+
}) as T;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const nextProps: Partial<typeof props> = {
|
|
35
|
+
collapsed: options.isMobile ? false : options.desktopCollapsed
|
|
36
|
+
};
|
|
37
|
+
if (props.onNavigate) nextProps.onNavigate = wrapHandler(props.onNavigate);
|
|
38
|
+
if (props.onSelect) nextProps.onSelect = wrapHandler(props.onSelect);
|
|
39
|
+
|
|
40
|
+
return cloneElement(sidebar, nextProps);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export type ConsoleShellProps = {
|
|
44
|
+
navItems?: GcsaNavItem[];
|
|
45
|
+
activeKey?: string;
|
|
46
|
+
productName?: string;
|
|
47
|
+
productTagline?: string;
|
|
48
|
+
brandMark?: string;
|
|
49
|
+
title?: string;
|
|
50
|
+
eyebrow?: string;
|
|
51
|
+
subtitle?: string;
|
|
52
|
+
pageDescription?: string;
|
|
53
|
+
collapsible?: boolean;
|
|
54
|
+
collapsed?: boolean;
|
|
55
|
+
sidebar?: ReactNode;
|
|
56
|
+
header?: ReactNode;
|
|
57
|
+
actions?: ReactNode;
|
|
58
|
+
children?: ReactNode;
|
|
59
|
+
onNavSelect?: (item: GcsaNavItem) => void;
|
|
60
|
+
onActiveKeyChange?: (key: string) => void;
|
|
61
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export function ConsoleShell({
|
|
65
|
+
navItems,
|
|
66
|
+
activeKey = '',
|
|
67
|
+
productName = 'GCSA',
|
|
68
|
+
productTagline = 'Console',
|
|
69
|
+
brandMark,
|
|
70
|
+
title,
|
|
71
|
+
eyebrow,
|
|
72
|
+
subtitle,
|
|
73
|
+
pageDescription,
|
|
74
|
+
collapsible = true,
|
|
75
|
+
collapsed = false,
|
|
76
|
+
sidebar,
|
|
77
|
+
header,
|
|
78
|
+
actions,
|
|
79
|
+
children,
|
|
80
|
+
onNavSelect,
|
|
81
|
+
onActiveKeyChange,
|
|
82
|
+
onCollapsedChange
|
|
83
|
+
}: ConsoleShellProps) {
|
|
84
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
85
|
+
const [mobileSidebarOpen, setMobileSidebarOpen] = useState(false);
|
|
86
|
+
const [desktopCollapsed, setDesktopCollapsed] = useState(collapsed);
|
|
87
|
+
|
|
88
|
+
const hasPresetSidebar = Boolean(navItems?.length);
|
|
89
|
+
const hasSidebar = Boolean(sidebar || hasPresetSidebar);
|
|
90
|
+
const hasHeader = Boolean(header || title);
|
|
91
|
+
const showHeaderBar = hasHeader || (collapsible && hasSidebar);
|
|
92
|
+
const showSiderToggle = collapsible && hasSidebar;
|
|
93
|
+
const showMobileScrim = collapsible && isMobile && mobileSidebarOpen;
|
|
94
|
+
|
|
95
|
+
const messages = useGcsaLocaleMessages();
|
|
96
|
+
|
|
97
|
+
const shellClasses = [
|
|
98
|
+
'gcsa-console-shell',
|
|
99
|
+
'gcsa-ui-surface',
|
|
100
|
+
!isMobile && desktopCollapsed ? 'gcsa-console-shell--sidebar-collapsed' : '',
|
|
101
|
+
isMobile && mobileSidebarOpen ? 'gcsa-console-shell--sidebar-open' : ''
|
|
102
|
+
]
|
|
103
|
+
.filter(Boolean)
|
|
104
|
+
.join(' ');
|
|
105
|
+
|
|
106
|
+
const siderToggleIcon: GcsaIconName =
|
|
107
|
+
isMobile || !desktopCollapsed ? 'menu' : 'chevronRight';
|
|
108
|
+
|
|
109
|
+
const siderToggleExpanded = isMobile ? mobileSidebarOpen : !desktopCollapsed;
|
|
110
|
+
|
|
111
|
+
const siderToggleLabel = isMobile
|
|
112
|
+
? mobileSidebarOpen
|
|
113
|
+
? messages.shellCloseNav
|
|
114
|
+
: messages.shellOpenNav
|
|
115
|
+
: desktopCollapsed
|
|
116
|
+
? messages.shellExpandSider
|
|
117
|
+
: messages.shellCollapseSider;
|
|
118
|
+
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
setDesktopCollapsed(collapsed);
|
|
121
|
+
}, [collapsed]);
|
|
122
|
+
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
if (typeof window === 'undefined') return;
|
|
125
|
+
|
|
126
|
+
const mediaQuery = window.matchMedia('(max-width: 960px)');
|
|
127
|
+
const syncMobileState = (matches: boolean) => {
|
|
128
|
+
setIsMobile(matches);
|
|
129
|
+
if (matches) {
|
|
130
|
+
setMobileSidebarOpen(false);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
syncMobileState(mediaQuery.matches);
|
|
135
|
+
const onChange = (event: MediaQueryListEvent) => syncMobileState(event.matches);
|
|
136
|
+
mediaQuery.addEventListener('change', onChange);
|
|
137
|
+
|
|
138
|
+
return () => {
|
|
139
|
+
mediaQuery.removeEventListener('change', onChange);
|
|
140
|
+
};
|
|
141
|
+
}, []);
|
|
142
|
+
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
const onKeydown = (event: KeyboardEvent) => {
|
|
145
|
+
if (event.key === 'Escape' && isMobile && mobileSidebarOpen) {
|
|
146
|
+
setMobileSidebarOpen(false);
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
document.addEventListener('keydown', onKeydown);
|
|
150
|
+
return () => {
|
|
151
|
+
document.removeEventListener('keydown', onKeydown);
|
|
152
|
+
};
|
|
153
|
+
}, [isMobile, mobileSidebarOpen]);
|
|
154
|
+
|
|
155
|
+
const toggleSidebar = () => {
|
|
156
|
+
if (isMobile) {
|
|
157
|
+
setMobileSidebarOpen(prev => !prev);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const next = !desktopCollapsed;
|
|
161
|
+
setDesktopCollapsed(next);
|
|
162
|
+
onCollapsedChange?.(next);
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
const closeMobileSidebar = () => {
|
|
166
|
+
setMobileSidebarOpen(false);
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
const onNavItemSelect = (item: GcsaNavItem) => {
|
|
170
|
+
if (isMobile) {
|
|
171
|
+
setMobileSidebarOpen(false);
|
|
172
|
+
}
|
|
173
|
+
onNavSelect?.(item);
|
|
174
|
+
onActiveKeyChange?.(item.key);
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
const sidebarNode = sidebar
|
|
178
|
+
? enhanceSidebarNode(sidebar, {
|
|
179
|
+
isMobile,
|
|
180
|
+
desktopCollapsed,
|
|
181
|
+
onMobileNavigate: closeMobileSidebar
|
|
182
|
+
})
|
|
183
|
+
: hasPresetSidebar
|
|
184
|
+
? (
|
|
185
|
+
<ConsoleSidebar
|
|
186
|
+
items={navItems!}
|
|
187
|
+
activeKey={activeKey}
|
|
188
|
+
collapsed={isMobile ? false : desktopCollapsed}
|
|
189
|
+
productName={productName}
|
|
190
|
+
productTagline={productTagline}
|
|
191
|
+
brandMark={brandMark}
|
|
192
|
+
onSelect={onNavItemSelect}
|
|
193
|
+
/>
|
|
194
|
+
)
|
|
195
|
+
: null;
|
|
196
|
+
|
|
197
|
+
const headerNode =
|
|
198
|
+
header ??
|
|
199
|
+
(title ? (
|
|
200
|
+
<ConsoleHeader title={title} eyebrow={eyebrow} subtitle={subtitle} actions={actions} />
|
|
201
|
+
) : null);
|
|
202
|
+
|
|
203
|
+
return (
|
|
204
|
+
<div className={shellClasses}>
|
|
205
|
+
{showMobileScrim ? (
|
|
206
|
+
<button
|
|
207
|
+
type="button"
|
|
208
|
+
className="gcsa-console-shell__scrim"
|
|
209
|
+
aria-label={messages.shellCloseNav}
|
|
210
|
+
onClick={closeMobileSidebar}
|
|
211
|
+
/>
|
|
212
|
+
) : null}
|
|
213
|
+
|
|
214
|
+
<aside
|
|
215
|
+
className="gcsa-console-shell__sidebar"
|
|
216
|
+
aria-hidden={isMobile && !mobileSidebarOpen ? true : undefined}
|
|
217
|
+
>
|
|
218
|
+
{sidebarNode}
|
|
219
|
+
</aside>
|
|
220
|
+
|
|
221
|
+
<section className="gcsa-console-shell__main">
|
|
222
|
+
{showHeaderBar ? (
|
|
223
|
+
<header className="gcsa-console-shell__header">
|
|
224
|
+
<div className="gcsa-console-shell__header-row">
|
|
225
|
+
{showSiderToggle ? (
|
|
226
|
+
<button
|
|
227
|
+
type="button"
|
|
228
|
+
className="gcsa-console-shell__sider-toggle gcsa-focus-ring"
|
|
229
|
+
aria-expanded={siderToggleExpanded}
|
|
230
|
+
aria-label={siderToggleLabel}
|
|
231
|
+
onClick={toggleSidebar}
|
|
232
|
+
>
|
|
233
|
+
<GcsaIcon name={siderToggleIcon} />
|
|
234
|
+
</button>
|
|
235
|
+
) : null}
|
|
236
|
+
<div className="gcsa-console-shell__header-body">{headerNode}</div>
|
|
237
|
+
</div>
|
|
238
|
+
</header>
|
|
239
|
+
) : null}
|
|
240
|
+
<main className="gcsa-console-shell__content" id="gcsa-console-main">
|
|
241
|
+
<div key={activeKey} className="gcsa-console-shell__content-inner">
|
|
242
|
+
{pageDescription ? <ConsolePage description={pageDescription}>{children}</ConsolePage> : children}
|
|
243
|
+
</div>
|
|
244
|
+
</main>
|
|
245
|
+
</section>
|
|
246
|
+
</div>
|
|
247
|
+
);
|
|
248
|
+
}
|