@studiolxd/brand 38.12.4
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/CHANGELOG.md +5643 -0
- package/README.md +73 -0
- package/dist/_shared/appshellcontext.js +10 -0
- package/dist/_shared/calendargrid.js +199 -0
- package/dist/_shared/copy-to-clipboard.js +30 -0
- package/dist/_shared/css-properties.js +12 -0
- package/dist/_shared/datepicker.js +172 -0
- package/dist/_shared/dialogsurface.js +23 -0
- package/dist/_shared/dropdownitems.js +80 -0
- package/dist/_shared/env.js +6 -0
- package/dist/_shared/field-labels.js +9 -0
- package/dist/_shared/form-size.js +9 -0
- package/dist/_shared/imagecropdialog.js +504 -0
- package/dist/_shared/logo.js +19 -0
- package/dist/_shared/logoassets.js +18 -0
- package/dist/_shared/messagetimestamp.js +16 -0
- package/dist/_shared/progressbar.js +216 -0
- package/dist/_shared/radiogroupcontext.js +8 -0
- package/dist/_shared/sidebarcontext.js +8 -0
- package/dist/_shared/togglegroupcontext.js +8 -0
- package/dist/_shared/tokens.js +3281 -0
- package/dist/_shared/untrustedtext.js +43 -0
- package/dist/_shared/validate.js +9 -0
- package/dist/_types/assets/brand-assets.d.ts +83 -0
- package/dist/_types/atoms/Accordion/Accordion.d.ts +56 -0
- package/dist/_types/atoms/Accordion/AccordionContext.d.ts +13 -0
- package/dist/_types/atoms/Arrow/Arrow.d.ts +6 -0
- package/dist/_types/atoms/AsyncMultiSelect/AsyncMultiSelect.d.ts +83 -0
- package/dist/_types/atoms/AsyncSelect/AsyncSelect.d.ts +74 -0
- package/dist/_types/atoms/Avatar/Avatar.d.ts +21 -0
- package/dist/_types/atoms/Button/Button.d.ts +64 -0
- package/dist/_types/atoms/Checkbox/Checkbox.d.ts +22 -0
- package/dist/_types/atoms/CloseButton/CloseButton.d.ts +25 -0
- package/dist/_types/atoms/Code/Code.d.ts +21 -0
- package/dist/_types/atoms/Collapsible/Collapsible.d.ts +37 -0
- package/dist/_types/atoms/Columns/Columns.d.ts +39 -0
- package/dist/_types/atoms/Container/Container.d.ts +48 -0
- package/dist/_types/atoms/CopyableValue/CopyableValue.d.ts +25 -0
- package/dist/_types/atoms/DescriptionList/DescriptionList.d.ts +78 -0
- package/dist/_types/atoms/DotsButton/DotsButton.d.ts +14 -0
- package/dist/_types/atoms/ErrorBoundary/ErrorBoundary.d.ts +25 -0
- package/dist/_types/atoms/ErrorText/ErrorText.d.ts +34 -0
- package/dist/_types/atoms/Fieldset/Fieldset.d.ts +22 -0
- package/dist/_types/atoms/Figure/Figure.d.ts +44 -0
- package/dist/_types/atoms/FileUpload/FileUpload.d.ts +66 -0
- package/dist/_types/atoms/FileUpload/validate.d.ts +14 -0
- package/dist/_types/atoms/Heading/Heading.d.ts +20 -0
- package/dist/_types/atoms/Icon/Icon.d.ts +335 -0
- package/dist/_types/atoms/Inline/Inline.d.ts +34 -0
- package/dist/_types/atoms/Input/Input.d.ts +23 -0
- package/dist/_types/atoms/InputPhone/InputPhone.d.ts +51 -0
- package/dist/_types/atoms/Kbd/Kbd.d.ts +16 -0
- package/dist/_types/atoms/Label/Label.d.ts +24 -0
- package/dist/_types/atoms/Link/Link.d.ts +34 -0
- package/dist/_types/atoms/List/List.d.ts +36 -0
- package/dist/_types/atoms/Logo/Logo.d.ts +15 -0
- package/dist/_types/atoms/Logo/index.d.ts +3 -0
- package/dist/_types/atoms/Logo/logoAssets.d.ts +10 -0
- package/dist/_types/atoms/Logomark/Logomark.d.ts +20 -0
- package/dist/_types/atoms/Logomark/index.d.ts +3 -0
- package/dist/_types/atoms/Logomark/logomarkAssets.d.ts +14 -0
- package/dist/_types/atoms/MenuButton/MenuButton.d.ts +18 -0
- package/dist/_types/atoms/MessageBubble/MessageBubble.d.ts +20 -0
- package/dist/_types/atoms/MultiSelect/MultiSelect.d.ts +57 -0
- package/dist/_types/atoms/NumberBadge/NumberBadge.d.ts +19 -0
- package/dist/_types/atoms/NumberInput/NumberInput.d.ts +42 -0
- package/dist/_types/atoms/OtpInput/OtpInput.d.ts +51 -0
- package/dist/_types/atoms/Paragraph/Paragraph.d.ts +7 -0
- package/dist/_types/atoms/Popover/Popover.d.ts +70 -0
- package/dist/_types/atoms/ProgressBar/ProgressBar.d.ts +19 -0
- package/dist/_types/atoms/Radio/Radio.d.ts +19 -0
- package/dist/_types/atoms/RadioGroup/RadioGroup.d.ts +41 -0
- package/dist/_types/atoms/RadioGroup/RadioGroupContext.d.ts +15 -0
- package/dist/_types/atoms/ScrollArea/ScrollArea.d.ts +30 -0
- package/dist/_types/atoms/Select/Select.d.ts +139 -0
- package/dist/_types/atoms/Separator/Separator.d.ts +25 -0
- package/dist/_types/atoms/Skeleton/Skeleton.d.ts +22 -0
- package/dist/_types/atoms/SkipLink/SkipLink.d.ts +15 -0
- package/dist/_types/atoms/Slider/Slider.d.ts +39 -0
- package/dist/_types/atoms/Sparkline/Sparkline.d.ts +41 -0
- package/dist/_types/atoms/Spinner/Spinner.d.ts +10 -0
- package/dist/_types/atoms/Stack/Stack.d.ts +39 -0
- package/dist/_types/atoms/StarRating/StarRating.d.ts +55 -0
- package/dist/_types/atoms/StepMarker/StepMarker.d.ts +35 -0
- package/dist/_types/atoms/Switcher/Switcher.d.ts +22 -0
- package/dist/_types/atoms/Tabs/Tabs.d.ts +35 -0
- package/dist/_types/atoms/Tag/Tag.d.ts +12 -0
- package/dist/_types/atoms/Text/Text.d.ts +55 -0
- package/dist/_types/atoms/Textarea/Textarea.d.ts +25 -0
- package/dist/_types/atoms/TimeSelect/TimeSelect.d.ts +48 -0
- package/dist/_types/atoms/Toggle/Toggle.d.ts +42 -0
- package/dist/_types/atoms/ToggleGroup/ToggleGroup.d.ts +41 -0
- package/dist/_types/atoms/ToggleGroup/ToggleGroupContext.d.ts +7 -0
- package/dist/_types/atoms/Tooltip/Tooltip.d.ts +61 -0
- package/dist/_types/atoms/TypingIndicator/TypingIndicator.d.ts +7 -0
- package/dist/_types/atoms/VisuallyHidden/VisuallyHidden.d.ts +19 -0
- package/dist/_types/constants/copy-to-clipboard.d.ts +34 -0
- package/dist/_types/constants/css-properties.d.ts +23 -0
- package/dist/_types/constants/env.d.ts +7 -0
- package/dist/_types/constants/field-labels.d.ts +15 -0
- package/dist/_types/constants/form-size.d.ts +8 -0
- package/dist/_types/data/home.d.ts +83 -0
- package/dist/_types/email/Email.d.ts +6 -0
- package/dist/_types/email/EmailLayout.d.ts +96 -0
- package/dist/_types/email/EmailPreview.d.ts +6 -0
- package/dist/_types/email/EmailPrimitives.d.ts +164 -0
- package/dist/_types/email/emailTheme.d.ts +225 -0
- package/dist/_types/email/emailTokens.d.ts +70 -0
- package/dist/_types/molecules/Alert/Alert.d.ts +39 -0
- package/dist/_types/molecules/AppLauncher/AppLauncher.d.ts +42 -0
- package/dist/_types/molecules/AssistantMessage/AssistantMessage.d.ts +34 -0
- package/dist/_types/molecules/AsyncMultiSelectField/AsyncMultiSelectField.d.ts +54 -0
- package/dist/_types/molecules/AsyncSelectField/AsyncSelectField.d.ts +53 -0
- package/dist/_types/molecules/AvatarUpload/AvatarUpload.d.ts +125 -0
- package/dist/_types/molecules/Banner/Banner.d.ts +40 -0
- package/dist/_types/molecules/Breadcrumb/Breadcrumb.d.ts +23 -0
- package/dist/_types/molecules/Calendar/Calendar.d.ts +58 -0
- package/dist/_types/molecules/CalendarPlanner/CalendarPlanner.d.ts +71 -0
- package/dist/_types/molecules/CalendarRoster/CalendarRoster.d.ts +78 -0
- package/dist/_types/molecules/Card/Card.d.ts +141 -0
- package/dist/_types/molecules/Carousel/Carousel.d.ts +75 -0
- package/dist/_types/molecules/CheckboxField/CheckboxField.d.ts +41 -0
- package/dist/_types/molecules/CodeBlock/CodeBlock.d.ts +72 -0
- package/dist/_types/molecules/CommandPalette/CommandPalette.d.ts +60 -0
- package/dist/_types/molecules/ConfirmDialog/ConfirmDialog.d.ts +84 -0
- package/dist/_types/molecules/Consent/Consent.d.ts +127 -0
- package/dist/_types/molecules/ContextMenu/ContextMenu.d.ts +25 -0
- package/dist/_types/molecules/ConversationList/ConversationList.d.ts +55 -0
- package/dist/_types/molecules/CopyButton/CopyButton.d.ts +57 -0
- package/dist/_types/molecules/DatePicker/DatePicker.d.ts +87 -0
- package/dist/_types/molecules/DatePicker/dateMask.d.ts +21 -0
- package/dist/_types/molecules/DatePickerField/DatePickerField.d.ts +26 -0
- package/dist/_types/molecules/DateTimeField/DateTimeField.d.ts +69 -0
- package/dist/_types/molecules/DocsSearch/DocsSearch.d.ts +95 -0
- package/dist/_types/molecules/DropdownField/DropdownField.d.ts +47 -0
- package/dist/_types/molecules/EmptyState/EmptyState.d.ts +14 -0
- package/dist/_types/molecules/FieldRow/FieldRow.d.ts +70 -0
- package/dist/_types/molecules/FileUploadField/FileUploadField.d.ts +30 -0
- package/dist/_types/molecules/FilterBar/FilterBar.d.ts +44 -0
- package/dist/_types/molecules/Form/Form.d.ts +34 -0
- package/dist/_types/molecules/FormField/FormField.d.ts +70 -0
- package/dist/_types/molecules/ImageCropDialog/ImageCropDialog.d.ts +42 -0
- package/dist/_types/molecules/ImageCropDialog/crop.d.ts +33 -0
- package/dist/_types/molecules/InputField/InputField.d.ts +60 -0
- package/dist/_types/molecules/InputPhoneField/InputPhoneField.d.ts +45 -0
- package/dist/_types/molecules/LanguageSwitcher/LanguageSwitcher.d.ts +58 -0
- package/dist/_types/molecules/Menu/Menu.d.ts +39 -0
- package/dist/_types/molecules/MessageComposer/MessageComposer.d.ts +45 -0
- package/dist/_types/molecules/Modal/Modal.d.ts +71 -0
- package/dist/_types/molecules/MultiSelectField/MultiSelectField.d.ts +42 -0
- package/dist/_types/molecules/NotificationButton/NotificationButton.d.ts +25 -0
- package/dist/_types/molecules/NotificationList/NotificationList.d.ts +85 -0
- package/dist/_types/molecules/NotificationPanel/NotificationPanel.d.ts +94 -0
- package/dist/_types/molecules/NumberInputField/NumberInputField.d.ts +38 -0
- package/dist/_types/molecules/OrgSwitcher/OrgSwitcher.d.ts +23 -0
- package/dist/_types/molecules/OtpField/OtpField.d.ts +41 -0
- package/dist/_types/molecules/PageIntro/PageIntro.d.ts +48 -0
- package/dist/_types/molecules/Pagination/Pagination.d.ts +92 -0
- package/dist/_types/molecules/PasswordField/PasswordField.d.ts +40 -0
- package/dist/_types/molecules/PrevNextNav/PrevNextNav.d.ts +50 -0
- package/dist/_types/molecules/ProjectCard/ProjectCard.d.ts +48 -0
- package/dist/_types/molecules/Prose/Prose.d.ts +36 -0
- package/dist/_types/molecules/RadioField/RadioField.d.ts +29 -0
- package/dist/_types/molecules/RecoveryCodes/RecoveryCodes.d.ts +48 -0
- package/dist/_types/molecules/SearchForm/SearchForm.d.ts +66 -0
- package/dist/_types/molecules/SelectField/SelectField.d.ts +44 -0
- package/dist/_types/molecules/Sheet/Sheet.d.ts +56 -0
- package/dist/_types/molecules/SidebarNav/SidebarNav.d.ts +59 -0
- package/dist/_types/molecules/SiteNav/SiteNav.d.ts +52 -0
- package/dist/_types/molecules/StatTile/StatTile.d.ts +47 -0
- package/dist/_types/molecules/Stepper/Stepper.d.ts +88 -0
- package/dist/_types/molecules/SwitcherField/SwitcherField.d.ts +42 -0
- package/dist/_types/molecules/Table/Table.d.ts +103 -0
- package/dist/_types/molecules/TableOfContents/TableOfContents.d.ts +49 -0
- package/dist/_types/molecules/TextareaField/TextareaField.d.ts +35 -0
- package/dist/_types/molecules/ThemeSwitcher/ThemeSwitcher.d.ts +42 -0
- package/dist/_types/molecules/TimeField/TimeField.d.ts +44 -0
- package/dist/_types/molecules/Toast/Toaster.d.ts +42 -0
- package/dist/_types/molecules/Toast/toast.d.ts +101 -0
- package/dist/_types/molecules/TreeView/TreeView.d.ts +93 -0
- package/dist/_types/molecules/UptimeBars/UptimeBars.d.ts +64 -0
- package/dist/_types/molecules/UptimeBars/uptimeStatus.d.ts +17 -0
- package/dist/_types/molecules/UserMenu/UserMenu.d.ts +19 -0
- package/dist/_types/molecules/UserMessage/UserMessage.d.ts +35 -0
- package/dist/_types/molecules/_shared/calendarGrid.d.ts +114 -0
- package/dist/_types/molecules/_shared/dialogSurface.d.ts +30 -0
- package/dist/_types/molecules/_shared/dropdownItems.d.ts +71 -0
- package/dist/_types/molecules/_shared/messageTimestamp.d.ts +20 -0
- package/dist/_types/og/index.d.ts +5 -0
- package/dist/_types/og/ogCard.d.ts +27 -0
- package/dist/_types/og/ogFonts.d.ts +22 -0
- package/dist/_types/og/ogTypeface.d.ts +12 -0
- package/dist/_types/organisms/AnnotationThread/AnnotationThread.d.ts +61 -0
- package/dist/_types/organisms/Chart/Chart.d.ts +114 -0
- package/dist/_types/organisms/ConversationThread/ConversationThread.d.ts +44 -0
- package/dist/_types/organisms/DataTable/DataTable.d.ts +100 -0
- package/dist/_types/organisms/Steps/Steps.d.ts +69 -0
- package/dist/_types/pages/Auth/AuthPage.d.ts +24 -0
- package/dist/_types/pages/Onboarding/OnboardingPage.d.ts +37 -0
- package/dist/_types/pages/Status/StatusPage.d.ts +37 -0
- package/dist/_types/pages/Status/_datos.d.ts +47 -0
- package/dist/_types/sections/AppHeader/AppHeader.d.ts +23 -0
- package/dist/_types/sections/AppRoot/AppRoot.d.ts +16 -0
- package/dist/_types/sections/AppShell/AppShell.d.ts +30 -0
- package/dist/_types/sections/AppShell/AppShellContext.d.ts +16 -0
- package/dist/_types/sections/AppShell/_datos.d.ts +6 -0
- package/dist/_types/sections/FloatingDock/FloatingDock.d.ts +72 -0
- package/dist/_types/sections/Hero/Hero.d.ts +28 -0
- package/dist/_types/sections/Highlight/Highlight.d.ts +42 -0
- package/dist/_types/sections/LegalFooter/LegalFooter.d.ts +35 -0
- package/dist/_types/sections/Sidebar/Sidebar.d.ts +37 -0
- package/dist/_types/sections/Sidebar/SidebarContext.d.ts +6 -0
- package/dist/_types/sections/SiteFooter/SiteFooter.d.ts +68 -0
- package/dist/_types/sections/SiteHeader/SiteHeader.d.ts +58 -0
- package/dist/_types/sections/SiteShell/SiteShell.d.ts +26 -0
- package/dist/_types/templates/ChatShell/ChatShell.d.ts +53 -0
- package/dist/_types/templates/ConnectorAuth/ConnectorAuthShell.d.ts +73 -0
- package/dist/_types/templates/ConnectorAuth/ConnectorConsentPage.d.ts +129 -0
- package/dist/_types/templates/ConnectorAuth/ConnectorExternalSignInPage.d.ts +87 -0
- package/dist/_types/templates/ConnectorAuth/ConnectorRejectionPage.d.ts +69 -0
- package/dist/_types/templates/ConnectorAuth/ConnectorRequestSummary.d.ts +74 -0
- package/dist/_types/templates/ConnectorAuth/ConnectorSignInPage.d.ts +69 -0
- package/dist/_types/templates/ConnectorAuth/UntrustedText.d.ts +55 -0
- package/dist/_types/templates/ErrorPage/ErrorPage.d.ts +35 -0
- package/dist/_types/templates/NotFoundPage/NotFoundPage.d.ts +30 -0
- package/dist/_types/templates/OnboardingShell/OnboardingShell.d.ts +104 -0
- package/dist/_types/templates/PublicPageShell/PublicPageShell.d.ts +59 -0
- package/dist/_types/tokens/tokens.d.ts +24 -0
- package/dist/_types/utils/chromaticModes.d.ts +46 -0
- package/dist/_types/utils/storyDate.d.ts +11 -0
- package/dist/accordion.css +1 -0
- package/dist/accordion.js +89 -0
- package/dist/alert.css +1 -0
- package/dist/alert.js +78 -0
- package/dist/annotation-thread.css +1 -0
- package/dist/annotation-thread.js +98 -0
- package/dist/app-header.css +1 -0
- package/dist/app-header.js +37 -0
- package/dist/app-launcher.css +1 -0
- package/dist/app-launcher.js +119 -0
- package/dist/app-root.js +11 -0
- package/dist/app-shell.css +1 -0
- package/dist/app-shell.js +83 -0
- package/dist/arrow.css +1 -0
- package/dist/arrow.js +24 -0
- package/dist/assets/email/google-sans-flex-normal-latin-v1.woff2 +0 -0
- package/dist/assets/email/logo-v3.png +0 -0
- package/dist/assets/fonts/google-sans-code/LICENSE.txt +93 -0
- package/dist/assets/fonts/google-sans-code/google-sans-code-italic-latin-ext.woff2 +0 -0
- package/dist/assets/fonts/google-sans-code/google-sans-code-italic-latin.woff2 +0 -0
- package/dist/assets/fonts/google-sans-code/google-sans-code-normal-latin-ext.woff2 +0 -0
- package/dist/assets/fonts/google-sans-code/google-sans-code-normal-latin.woff2 +0 -0
- package/dist/assets/fonts/google-sans-flex/LICENSE.txt +91 -0
- package/dist/assets/fonts/google-sans-flex/README.md +29 -0
- package/dist/assets/fonts/google-sans-flex/google-sans-flex-normal-300.ttf +0 -0
- package/dist/assets/fonts/google-sans-flex/google-sans-flex-normal-500.ttf +0 -0
- package/dist/assets/fonts/google-sans-flex/google-sans-flex-normal-latin-ext.woff2 +0 -0
- package/dist/assets/fonts/google-sans-flex/google-sans-flex-normal-latin.woff2 +0 -0
- package/dist/assets/fonts/libre-bodoni/LICENSE.txt +93 -0
- package/dist/assets/fonts/libre-bodoni/libre-bodoni-italic-latin-ext.woff2 +0 -0
- package/dist/assets/fonts/libre-bodoni/libre-bodoni-italic-latin.woff2 +0 -0
- package/dist/assets/fonts/libre-bodoni/libre-bodoni-normal-latin-ext.woff2 +0 -0
- package/dist/assets/fonts/libre-bodoni/libre-bodoni-normal-latin.woff2 +0 -0
- package/dist/assets/icons/apple-touch-icon.png +0 -0
- package/dist/assets/icons/favicon.ico +0 -0
- package/dist/assets/icons/icon-192.png +0 -0
- package/dist/assets/icons/icon-512-maskable.png +0 -0
- package/dist/assets/icons/icon-512.png +0 -0
- package/dist/assets/icons/icon.svg +8 -0
- package/dist/assets/icons/manifest.webmanifest +25 -0
- package/dist/assets/logo.svg +12 -0
- package/dist/assets/logomark-safe.svg +7 -0
- package/dist/assets/logomark.svg +6 -0
- package/dist/assistant-message.css +1 -0
- package/dist/assistant-message.js +32 -0
- package/dist/async-multi-select-field.css +1 -0
- package/dist/async-multi-select-field.js +58 -0
- package/dist/async-multi-select.css +1 -0
- package/dist/async-multi-select.js +196 -0
- package/dist/async-select-field.css +1 -0
- package/dist/async-select-field.js +57 -0
- package/dist/async-select.css +1 -0
- package/dist/async-select.js +172 -0
- package/dist/avatar-upload.css +1 -0
- package/dist/avatar-upload.js +176 -0
- package/dist/avatar.css +1 -0
- package/dist/avatar.js +34 -0
- package/dist/banner.css +1 -0
- package/dist/banner.js +39 -0
- package/dist/brand-assets.js +75 -0
- package/dist/brand.css +6644 -0
- package/dist/breadcrumb.css +1 -0
- package/dist/breadcrumb.js +39 -0
- package/dist/button.css +1 -0
- package/dist/button.js +60 -0
- package/dist/calendar-planner.css +1 -0
- package/dist/calendar-planner.js +123 -0
- package/dist/calendar-roster.css +1 -0
- package/dist/calendar-roster.js +143 -0
- package/dist/calendar.css +1 -0
- package/dist/calendar.js +178 -0
- package/dist/card.css +1 -0
- package/dist/card.js +115 -0
- package/dist/carousel.css +1 -0
- package/dist/carousel.js +124 -0
- package/dist/chart.css +1 -0
- package/dist/chart.js +670 -0
- package/dist/chat-shell.css +1 -0
- package/dist/chat-shell.js +83 -0
- package/dist/checkbox-field.css +1 -0
- package/dist/checkbox-field.js +55 -0
- package/dist/checkbox.css +1 -0
- package/dist/checkbox.js +35 -0
- package/dist/close-button.css +1 -0
- package/dist/close-button.js +22 -0
- package/dist/code-block.css +1 -0
- package/dist/code-block.js +77 -0
- package/dist/code.css +1 -0
- package/dist/code.js +14 -0
- package/dist/collapsible.css +1 -0
- package/dist/collapsible.js +41 -0
- package/dist/columns.css +1 -0
- package/dist/columns.js +26 -0
- package/dist/command-palette.css +1 -0
- package/dist/command-palette.js +77 -0
- package/dist/confirm-dialog.css +1 -0
- package/dist/confirm-dialog.js +64 -0
- package/dist/connector-auth-shell.js +37 -0
- package/dist/connector-consent-page.js +89 -0
- package/dist/connector-external-sign-in-page.js +71 -0
- package/dist/connector-rejection-page.js +77 -0
- package/dist/connector-request-summary.css +1 -0
- package/dist/connector-request-summary.js +36 -0
- package/dist/connector-sign-in-page.js +65 -0
- package/dist/consent.css +1 -0
- package/dist/consent.js +109 -0
- package/dist/container.css +1 -0
- package/dist/container.js +28 -0
- package/dist/context-menu.js +23 -0
- package/dist/conversation-list.css +1 -0
- package/dist/conversation-list.js +100 -0
- package/dist/conversation-thread.css +1 -0
- package/dist/conversation-thread.js +42 -0
- package/dist/copy-button.css +1 -0
- package/dist/copy-button.js +45 -0
- package/dist/copyable-value.css +1 -0
- package/dist/copyable-value.js +100 -0
- package/dist/data-table.css +1 -0
- package/dist/data-table.js +1677 -0
- package/dist/date-picker-field.css +1 -0
- package/dist/date-picker-field.js +44 -0
- package/dist/date-picker.js +3 -0
- package/dist/date-time-field.css +1 -0
- package/dist/date-time-field.js +104 -0
- package/dist/datepicker.css +1 -0
- package/dist/description-list.css +1 -0
- package/dist/description-list.js +45 -0
- package/dist/dialogsurface.css +1 -0
- package/dist/docs-search.css +1 -0
- package/dist/docs-search.js +78 -0
- package/dist/dots-button.css +1 -0
- package/dist/dots-button.js +29 -0
- package/dist/dropdown-field.css +1 -0
- package/dist/dropdown-field.js +73 -0
- package/dist/email.js +440 -0
- package/dist/empty-state.css +1 -0
- package/dist/empty-state.js +39 -0
- package/dist/error-boundary.js +18 -0
- package/dist/error-page.js +28 -0
- package/dist/error-text.css +1 -0
- package/dist/error-text.js +15 -0
- package/dist/field-row.css +1 -0
- package/dist/field-row.js +55 -0
- package/dist/fieldset.css +1 -0
- package/dist/fieldset.js +22 -0
- package/dist/figure.css +1 -0
- package/dist/figure.js +40 -0
- package/dist/file-upload-field.css +1 -0
- package/dist/file-upload-field.js +43 -0
- package/dist/file-upload.css +1 -0
- package/dist/file-upload.js +199 -0
- package/dist/filter-bar.css +1 -0
- package/dist/filter-bar.js +31 -0
- package/dist/floating-dock.css +1 -0
- package/dist/floating-dock.js +79 -0
- package/dist/fonts.css +113 -0
- package/dist/form-field.css +1 -0
- package/dist/form-field.js +110 -0
- package/dist/form.css +1 -0
- package/dist/form.js +63 -0
- package/dist/heading.css +1 -0
- package/dist/heading.js +19 -0
- package/dist/hero.css +1 -0
- package/dist/hero.js +41 -0
- package/dist/highlight.css +1 -0
- package/dist/highlight.js +54 -0
- package/dist/icon.css +1 -0
- package/dist/icon.js +1745 -0
- package/dist/image-crop-dialog.js +3 -0
- package/dist/imagecropdialog.css +1 -0
- package/dist/inline.css +1 -0
- package/dist/inline.js +18 -0
- package/dist/input-field.css +1 -0
- package/dist/input-field.js +100 -0
- package/dist/input-phone-field.css +1 -0
- package/dist/input-phone-field.js +55 -0
- package/dist/input-phone.css +1 -0
- package/dist/input-phone.js +88 -0
- package/dist/input.css +1 -0
- package/dist/input.js +22 -0
- package/dist/kbd.css +1 -0
- package/dist/kbd.js +18 -0
- package/dist/label.css +1 -0
- package/dist/label.js +19 -0
- package/dist/language-switcher.css +1 -0
- package/dist/language-switcher.js +77 -0
- package/dist/legal-footer.css +1 -0
- package/dist/legal-footer.js +42 -0
- package/dist/link.css +1 -0
- package/dist/link.js +45 -0
- package/dist/list.css +1 -0
- package/dist/list.js +25 -0
- package/dist/logo.css +1 -0
- package/dist/logo.js +4 -0
- package/dist/logomark.css +1 -0
- package/dist/logomark.js +26 -0
- package/dist/menu-button.css +1 -0
- package/dist/menu-button.js +27 -0
- package/dist/menu.css +1 -0
- package/dist/menu.js +51 -0
- package/dist/message-bubble.css +1 -0
- package/dist/message-bubble.js +18 -0
- package/dist/message-composer.css +1 -0
- package/dist/message-composer.js +57 -0
- package/dist/modal.css +1 -0
- package/dist/modal.js +61 -0
- package/dist/multi-select-field.css +1 -0
- package/dist/multi-select-field.js +54 -0
- package/dist/multi-select.css +1 -0
- package/dist/multi-select.js +192 -0
- package/dist/not-found-page.js +20 -0
- package/dist/notification-button.css +1 -0
- package/dist/notification-button.js +32 -0
- package/dist/notification-list.css +1 -0
- package/dist/notification-list.js +71 -0
- package/dist/notification-panel.css +1 -0
- package/dist/notification-panel.js +145 -0
- package/dist/number-badge.css +1 -0
- package/dist/number-badge.js +19 -0
- package/dist/number-input-field.css +1 -0
- package/dist/number-input-field.js +52 -0
- package/dist/number-input.css +1 -0
- package/dist/number-input.js +89 -0
- package/dist/og.js +121 -0
- package/dist/onboarding-shell.css +1 -0
- package/dist/onboarding-shell.js +69 -0
- package/dist/org-switcher.css +1 -0
- package/dist/org-switcher.js +81 -0
- package/dist/otp-field.css +1 -0
- package/dist/otp-field.js +54 -0
- package/dist/otp-input.css +1 -0
- package/dist/otp-input.js +115 -0
- package/dist/page-intro.css +1 -0
- package/dist/page-intro.js +31 -0
- package/dist/pagination.css +1 -0
- package/dist/pagination.js +178 -0
- package/dist/paragraph.css +1 -0
- package/dist/paragraph.js +18 -0
- package/dist/password-field.css +1 -0
- package/dist/password-field.js +65 -0
- package/dist/popover.css +1 -0
- package/dist/popover.js +36 -0
- package/dist/prev-next-nav.css +1 -0
- package/dist/prev-next-nav.js +82 -0
- package/dist/progress-bar.js +2 -0
- package/dist/progressbar.css +1 -0
- package/dist/project-card.css +1 -0
- package/dist/project-card.js +55 -0
- package/dist/prose.css +1 -0
- package/dist/prose.js +19 -0
- package/dist/public-page-shell.css +1 -0
- package/dist/public-page-shell.js +34 -0
- package/dist/radio-field.css +1 -0
- package/dist/radio-field.js +49 -0
- package/dist/radio-group.css +1 -0
- package/dist/radio-group.js +33 -0
- package/dist/radio.css +1 -0
- package/dist/radio.js +30 -0
- package/dist/recovery-codes.css +1 -0
- package/dist/recovery-codes.js +35 -0
- package/dist/scroll-area.css +1 -0
- package/dist/scroll-area.js +37 -0
- package/dist/search-form.css +1 -0
- package/dist/search-form.js +55 -0
- package/dist/select-field.css +1 -0
- package/dist/select-field.js +67 -0
- package/dist/select.css +1 -0
- package/dist/select.js +156 -0
- package/dist/separator.css +1 -0
- package/dist/separator.js +19 -0
- package/dist/sheet.css +1 -0
- package/dist/sheet.js +53 -0
- package/dist/sidebar-nav.css +1 -0
- package/dist/sidebar-nav.js +225 -0
- package/dist/sidebar.css +1 -0
- package/dist/sidebar.js +122 -0
- package/dist/site-footer.css +1 -0
- package/dist/site-footer.js +72 -0
- package/dist/site-header.css +1 -0
- package/dist/site-header.js +80 -0
- package/dist/site-nav.css +1 -0
- package/dist/site-nav.js +54 -0
- package/dist/site-shell.css +1 -0
- package/dist/site-shell.js +20 -0
- package/dist/skeleton.css +1 -0
- package/dist/skeleton.js +18 -0
- package/dist/skip-link.css +1 -0
- package/dist/skip-link.js +18 -0
- package/dist/slider.css +1 -0
- package/dist/slider.js +35 -0
- package/dist/sparkline.css +1 -0
- package/dist/sparkline.js +55 -0
- package/dist/spinner.css +1 -0
- package/dist/spinner.js +34 -0
- package/dist/stack.css +1 -0
- package/dist/stack.js +18 -0
- package/dist/star-rating.css +1 -0
- package/dist/star-rating.js +80 -0
- package/dist/stat-tile.css +1 -0
- package/dist/stat-tile.js +64 -0
- package/dist/step-marker.css +1 -0
- package/dist/step-marker.js +26 -0
- package/dist/stepper.css +1 -0
- package/dist/stepper.js +67 -0
- package/dist/steps.css +1 -0
- package/dist/steps.js +94 -0
- package/dist/switcher-field.css +1 -0
- package/dist/switcher-field.js +61 -0
- package/dist/switcher.css +1 -0
- package/dist/switcher.js +32 -0
- package/dist/table-of-contents.css +1 -0
- package/dist/table-of-contents.js +45 -0
- package/dist/table.css +1 -0
- package/dist/table.js +122 -0
- package/dist/tabs.css +1 -0
- package/dist/tabs.js +43 -0
- package/dist/tag.css +1 -0
- package/dist/tag.js +18 -0
- package/dist/text.css +1 -0
- package/dist/text.js +24 -0
- package/dist/textarea-field.css +1 -0
- package/dist/textarea-field.js +53 -0
- package/dist/textarea.css +1 -0
- package/dist/textarea.js +22 -0
- package/dist/theme-switcher.css +1 -0
- package/dist/theme-switcher.js +106 -0
- package/dist/time-field.css +1 -0
- package/dist/time-field.js +54 -0
- package/dist/time-select.css +1 -0
- package/dist/time-select.js +84 -0
- package/dist/toast.js +88 -0
- package/dist/toaster.css +1 -0
- package/dist/toaster.js +80 -0
- package/dist/toggle-group.css +1 -0
- package/dist/toggle-group.js +30 -0
- package/dist/toggle.css +1 -0
- package/dist/toggle.js +23 -0
- package/dist/tokens.css +6545 -0
- package/dist/tokens.js +2 -0
- package/dist/tooltip.css +1 -0
- package/dist/tooltip.js +60 -0
- package/dist/tree-view.css +1 -0
- package/dist/tree-view.js +165 -0
- package/dist/typing-indicator.css +1 -0
- package/dist/typing-indicator.js +27 -0
- package/dist/untrustedtext.css +1 -0
- package/dist/uptime-bars.css +1 -0
- package/dist/uptime-bars.js +100 -0
- package/dist/user-menu.css +1 -0
- package/dist/user-menu.js +85 -0
- package/dist/user-message.css +1 -0
- package/dist/user-message.js +31 -0
- package/dist/visually-hidden.js +14 -0
- package/dist/visuallyhidden.css +1 -0
- package/package.json +786 -0
- package/src/tokens/border.ts +13 -0
- package/src/tokens/breakpoint.ts +4 -0
- package/src/tokens/chart-palette.ts +5 -0
- package/src/tokens/colors.ts +168 -0
- package/src/tokens/components/accordion.css +32 -0
- package/src/tokens/components/accordion.ts +7 -0
- package/src/tokens/components/alert.ts +14 -0
- package/src/tokens/components/app-header.css +24 -0
- package/src/tokens/components/app-header.ts +4 -0
- package/src/tokens/components/app-launcher.ts +7 -0
- package/src/tokens/components/arrow.css +9 -0
- package/src/tokens/components/arrow.ts +4 -0
- package/src/tokens/components/assistant-message.ts +7 -0
- package/src/tokens/components/async-multi-select.css +64 -0
- package/src/tokens/components/async-multi-select.ts +13 -0
- package/src/tokens/components/async-select.css +56 -0
- package/src/tokens/components/async-select.ts +13 -0
- package/src/tokens/components/avatar.css +33 -0
- package/src/tokens/components/avatar.ts +4 -0
- package/src/tokens/components/breadcrumb.css +34 -0
- package/src/tokens/components/breadcrumb.ts +7 -0
- package/src/tokens/components/button.css +230 -0
- package/src/tokens/components/button.ts +13 -0
- package/src/tokens/components/card.css +43 -0
- package/src/tokens/components/card.ts +7 -0
- package/src/tokens/components/chat-shell.ts +7 -0
- package/src/tokens/components/chat.css +7 -0
- package/src/tokens/components/checkbox.css +44 -0
- package/src/tokens/components/checkbox.ts +9 -0
- package/src/tokens/components/close-button.css +22 -0
- package/src/tokens/components/close-button.ts +4 -0
- package/src/tokens/components/code-block.css +62 -0
- package/src/tokens/components/code-block.ts +11 -0
- package/src/tokens/components/code.css +13 -0
- package/src/tokens/components/code.ts +4 -0
- package/src/tokens/components/collapsible.css +29 -0
- package/src/tokens/components/collapsible.ts +7 -0
- package/src/tokens/components/columns.css +13 -0
- package/src/tokens/components/columns.ts +4 -0
- package/src/tokens/components/container.css +17 -0
- package/src/tokens/components/container.ts +7 -0
- package/src/tokens/components/control.css +22 -0
- package/src/tokens/components/conversation-list.ts +10 -0
- package/src/tokens/components/conversation-thread.ts +4 -0
- package/src/tokens/components/copyable-value.css +7 -0
- package/src/tokens/components/copyable-value.ts +4 -0
- package/src/tokens/components/description-list.css +31 -0
- package/src/tokens/components/description-list.ts +7 -0
- package/src/tokens/components/empty-state.ts +7 -0
- package/src/tokens/components/figure.css +24 -0
- package/src/tokens/components/figure.ts +7 -0
- package/src/tokens/components/file-upload.css +101 -0
- package/src/tokens/components/file-upload.ts +16 -0
- package/src/tokens/components/floating-dock.css +50 -0
- package/src/tokens/components/floating-dock.ts +4 -0
- package/src/tokens/components/floating-panel.css +22 -0
- package/src/tokens/components/hero.css +13 -0
- package/src/tokens/components/hero.ts +4 -0
- package/src/tokens/components/highlight.css +11 -0
- package/src/tokens/components/highlight.ts +4 -0
- package/src/tokens/components/icon.css +11 -0
- package/src/tokens/components/image-crop-dialog.ts +7 -0
- package/src/tokens/components/inline.css +9 -0
- package/src/tokens/components/inline.ts +4 -0
- package/src/tokens/components/input-phone.css +29 -0
- package/src/tokens/components/input-phone.ts +4 -0
- package/src/tokens/components/input.css +64 -0
- package/src/tokens/components/input.ts +11 -0
- package/src/tokens/components/kbd.css +35 -0
- package/src/tokens/components/kbd.ts +8 -0
- package/src/tokens/components/label.css +21 -0
- package/src/tokens/components/label.ts +10 -0
- package/src/tokens/components/legal-footer.css +10 -0
- package/src/tokens/components/legal-footer.ts +4 -0
- package/src/tokens/components/link.css +35 -0
- package/src/tokens/components/link.ts +4 -0
- package/src/tokens/components/logo.css +19 -0
- package/src/tokens/components/logo.ts +4 -0
- package/src/tokens/components/logomark.css +18 -0
- package/src/tokens/components/logomark.ts +4 -0
- package/src/tokens/components/menu-button.css +24 -0
- package/src/tokens/components/menu-button.ts +4 -0
- package/src/tokens/components/menu.ts +9 -0
- package/src/tokens/components/message-bubble.css +29 -0
- package/src/tokens/components/message-bubble.ts +8 -0
- package/src/tokens/components/message-composer.ts +9 -0
- package/src/tokens/components/modal.ts +7 -0
- package/src/tokens/components/multi-select.css +72 -0
- package/src/tokens/components/multi-select.ts +11 -0
- package/src/tokens/components/number-badge.css +39 -0
- package/src/tokens/components/number-badge.ts +7 -0
- package/src/tokens/components/number-input.css +54 -0
- package/src/tokens/components/number-input.ts +11 -0
- package/src/tokens/components/org-switcher.ts +4 -0
- package/src/tokens/components/otp-input.css +8 -0
- package/src/tokens/components/otp-input.ts +4 -0
- package/src/tokens/components/popover.css +27 -0
- package/src/tokens/components/popover.ts +7 -0
- package/src/tokens/components/progress-bar.css +47 -0
- package/src/tokens/components/progress-bar.ts +10 -0
- package/src/tokens/components/radio-group.css +8 -0
- package/src/tokens/components/radio-group.ts +4 -0
- package/src/tokens/components/radio.css +39 -0
- package/src/tokens/components/radio.ts +11 -0
- package/src/tokens/components/scroll-area.css +25 -0
- package/src/tokens/components/scroll-area.ts +7 -0
- package/src/tokens/components/select.css +57 -0
- package/src/tokens/components/select.ts +8 -0
- package/src/tokens/components/separator.css +18 -0
- package/src/tokens/components/separator.ts +8 -0
- package/src/tokens/components/sheet.ts +4 -0
- package/src/tokens/components/sidebar-nav.ts +4 -0
- package/src/tokens/components/sidebar.css +42 -0
- package/src/tokens/components/sidebar.ts +4 -0
- package/src/tokens/components/site-footer.css +26 -0
- package/src/tokens/components/site-footer.ts +7 -0
- package/src/tokens/components/site-header.css +35 -0
- package/src/tokens/components/site-header.ts +4 -0
- package/src/tokens/components/site-shell.css +22 -0
- package/src/tokens/components/site-shell.ts +9 -0
- package/src/tokens/components/skeleton.css +20 -0
- package/src/tokens/components/skeleton.ts +7 -0
- package/src/tokens/components/skip-link.css +25 -0
- package/src/tokens/components/skip-link.ts +4 -0
- package/src/tokens/components/slider.css +40 -0
- package/src/tokens/components/slider.ts +7 -0
- package/src/tokens/components/sparkline.css +23 -0
- package/src/tokens/components/sparkline.ts +4 -0
- package/src/tokens/components/spinner.css +13 -0
- package/src/tokens/components/spinner.ts +4 -0
- package/src/tokens/components/stack.css +9 -0
- package/src/tokens/components/stack.ts +4 -0
- package/src/tokens/components/star-rating.css +29 -0
- package/src/tokens/components/star-rating.ts +7 -0
- package/src/tokens/components/step.css +56 -0
- package/src/tokens/components/switcher.css +44 -0
- package/src/tokens/components/switcher.ts +10 -0
- package/src/tokens/components/tabs.css +43 -0
- package/src/tokens/components/tabs.ts +7 -0
- package/src/tokens/components/tag.css +43 -0
- package/src/tokens/components/tag.ts +21 -0
- package/src/tokens/components/text-inline.css +19 -0
- package/src/tokens/components/text-inline.ts +7 -0
- package/src/tokens/components/text.css +91 -0
- package/src/tokens/components/text.ts +24 -0
- package/src/tokens/components/textarea.css +78 -0
- package/src/tokens/components/textarea.ts +13 -0
- package/src/tokens/components/time-select.css +17 -0
- package/src/tokens/components/time-select.ts +7 -0
- package/src/tokens/components/toast.ts +4 -0
- package/src/tokens/components/toggle-group.css +7 -0
- package/src/tokens/components/toggle-group.ts +4 -0
- package/src/tokens/components/toggle.css +50 -0
- package/src/tokens/components/toggle.ts +7 -0
- package/src/tokens/components/tooltip.css +27 -0
- package/src/tokens/components/tooltip.ts +7 -0
- package/src/tokens/components/typing-indicator.css +21 -0
- package/src/tokens/components/typing-indicator.ts +7 -0
- package/src/tokens/components/user-menu.ts +4 -0
- package/src/tokens/components/user-message.ts +7 -0
- package/src/tokens/form.ts +23 -0
- package/src/tokens/global/border.css +18 -0
- package/src/tokens/global/breakpoint.css +12 -0
- package/src/tokens/global/colors.css +105 -0
- package/src/tokens/global/form.css +39 -0
- package/src/tokens/global/motion.css +15 -0
- package/src/tokens/global/opacity.css +10 -0
- package/src/tokens/global/section.css +12 -0
- package/src/tokens/global/shadow.css +12 -0
- package/src/tokens/global/size.css +11 -0
- package/src/tokens/global/spacing.css +14 -0
- package/src/tokens/global/typography.css +39 -0
- package/src/tokens/global/z-index.css +12 -0
- package/src/tokens/icon.ts +4 -0
- package/src/tokens/index.css +174 -0
- package/src/tokens/layer.ts +4 -0
- package/src/tokens/layout.ts +4 -0
- package/src/tokens/molecules/alert.css +46 -0
- package/src/tokens/molecules/annotation-thread.css +43 -0
- package/src/tokens/molecules/annotation-thread.ts +7 -0
- package/src/tokens/molecules/app-launcher.css +67 -0
- package/src/tokens/molecules/assistant-message.css +24 -0
- package/src/tokens/molecules/async-multi-select-field.css +25 -0
- package/src/tokens/molecules/async-multi-select-field.ts +8 -0
- package/src/tokens/molecules/async-select-field.css +25 -0
- package/src/tokens/molecules/async-select-field.ts +8 -0
- package/src/tokens/molecules/avatar-upload.css +35 -0
- package/src/tokens/molecules/avatar-upload.ts +7 -0
- package/src/tokens/molecules/banner.css +21 -0
- package/src/tokens/molecules/banner.ts +14 -0
- package/src/tokens/molecules/calendar-planner.css +70 -0
- package/src/tokens/molecules/calendar-planner.ts +7 -0
- package/src/tokens/molecules/calendar-roster.css +69 -0
- package/src/tokens/molecules/calendar-roster.ts +7 -0
- package/src/tokens/molecules/calendar.css +90 -0
- package/src/tokens/molecules/calendar.ts +7 -0
- package/src/tokens/molecules/carousel.css +27 -0
- package/src/tokens/molecules/carousel.ts +7 -0
- package/src/tokens/molecules/chart.css +123 -0
- package/src/tokens/molecules/chart.ts +4 -0
- package/src/tokens/molecules/chat-shell.css +20 -0
- package/src/tokens/molecules/checkbox-field.css +43 -0
- package/src/tokens/molecules/checkbox-field.ts +9 -0
- package/src/tokens/molecules/command-palette.css +50 -0
- package/src/tokens/molecules/command-palette.ts +7 -0
- package/src/tokens/molecules/confirm-dialog.css +7 -0
- package/src/tokens/molecules/confirm-dialog.ts +4 -0
- package/src/tokens/molecules/connector-auth.css +13 -0
- package/src/tokens/molecules/consent.css +30 -0
- package/src/tokens/molecules/consent.ts +8 -0
- package/src/tokens/molecules/conversation-list.css +38 -0
- package/src/tokens/molecules/conversation-thread.css +7 -0
- package/src/tokens/molecules/copy-button.css +7 -0
- package/src/tokens/molecules/copy-button.ts +4 -0
- package/src/tokens/molecules/data-table.css +9 -0
- package/src/tokens/molecules/data-table.ts +4 -0
- package/src/tokens/molecules/date-picker-field.css +25 -0
- package/src/tokens/molecules/date-picker-field.ts +8 -0
- package/src/tokens/molecules/date-picker.css +40 -0
- package/src/tokens/molecules/date-picker.ts +4 -0
- package/src/tokens/molecules/date-time-field.css +26 -0
- package/src/tokens/molecules/date-time-field.ts +8 -0
- package/src/tokens/molecules/docs-search.css +42 -0
- package/src/tokens/molecules/docs-search.ts +7 -0
- package/src/tokens/molecules/dropdown-field.css +57 -0
- package/src/tokens/molecules/dropdown-field.ts +4 -0
- package/src/tokens/molecules/empty-state.css +31 -0
- package/src/tokens/molecules/field-row.css +31 -0
- package/src/tokens/molecules/field-row.ts +7 -0
- package/src/tokens/molecules/file-upload-field.css +25 -0
- package/src/tokens/molecules/file-upload-field.ts +8 -0
- package/src/tokens/molecules/filter-bar.css +11 -0
- package/src/tokens/molecules/filter-bar.ts +5 -0
- package/src/tokens/molecules/form-field.css +7 -0
- package/src/tokens/molecules/image-crop-dialog.css +19 -0
- package/src/tokens/molecules/input-field.css +43 -0
- package/src/tokens/molecules/input-field.ts +12 -0
- package/src/tokens/molecules/input-phone-field.css +25 -0
- package/src/tokens/molecules/input-phone-field.ts +8 -0
- package/src/tokens/molecules/language-switcher.css +19 -0
- package/src/tokens/molecules/language-switcher.ts +4 -0
- package/src/tokens/molecules/menu.css +63 -0
- package/src/tokens/molecules/message-composer.css +37 -0
- package/src/tokens/molecules/modal.css +50 -0
- package/src/tokens/molecules/multi-select-field.css +25 -0
- package/src/tokens/molecules/multi-select-field.ts +8 -0
- package/src/tokens/molecules/notification-button.css +9 -0
- package/src/tokens/molecules/notification-button.ts +4 -0
- package/src/tokens/molecules/notification-list.css +30 -0
- package/src/tokens/molecules/notification-list.ts +4 -0
- package/src/tokens/molecules/notification-panel.css +41 -0
- package/src/tokens/molecules/notification-panel.ts +4 -0
- package/src/tokens/molecules/number-input-field.css +25 -0
- package/src/tokens/molecules/number-input-field.ts +8 -0
- package/src/tokens/molecules/onboarding-shell.css +18 -0
- package/src/tokens/molecules/org-switcher.css +57 -0
- package/src/tokens/molecules/otp-field.css +25 -0
- package/src/tokens/molecules/otp-field.ts +8 -0
- package/src/tokens/molecules/page-intro.css +10 -0
- package/src/tokens/molecules/pagination.css +68 -0
- package/src/tokens/molecules/pagination.ts +9 -0
- package/src/tokens/molecules/password-field.css +29 -0
- package/src/tokens/molecules/prev-next-nav.css +42 -0
- package/src/tokens/molecules/prev-next-nav.ts +7 -0
- package/src/tokens/molecules/project-card.css +21 -0
- package/src/tokens/molecules/project-card.ts +7 -0
- package/src/tokens/molecules/prose.css +58 -0
- package/src/tokens/molecules/prose.ts +7 -0
- package/src/tokens/molecules/public-page-shell.css +8 -0
- package/src/tokens/molecules/radio-field.css +42 -0
- package/src/tokens/molecules/radio-field.ts +9 -0
- package/src/tokens/molecules/recovery-codes.css +23 -0
- package/src/tokens/molecules/recovery-codes.ts +4 -0
- package/src/tokens/molecules/search-form.css +34 -0
- package/src/tokens/molecules/search-form.ts +7 -0
- package/src/tokens/molecules/select-field.css +25 -0
- package/src/tokens/molecules/select-field.ts +4 -0
- package/src/tokens/molecules/sheet.css +33 -0
- package/src/tokens/molecules/sidebar-nav.css +53 -0
- package/src/tokens/molecules/site-nav.css +31 -0
- package/src/tokens/molecules/site-nav.ts +4 -0
- package/src/tokens/molecules/stat-tile.css +45 -0
- package/src/tokens/molecules/stat-tile.ts +7 -0
- package/src/tokens/molecules/stepper.css +41 -0
- package/src/tokens/molecules/steps.css +11 -0
- package/src/tokens/molecules/steps.ts +7 -0
- package/src/tokens/molecules/switcher-field.css +42 -0
- package/src/tokens/molecules/switcher-field.ts +9 -0
- package/src/tokens/molecules/table-of-contents.css +42 -0
- package/src/tokens/molecules/table-of-contents.ts +7 -0
- package/src/tokens/molecules/table.css +60 -0
- package/src/tokens/molecules/table.ts +14 -0
- package/src/tokens/molecules/textarea-field.css +25 -0
- package/src/tokens/molecules/textarea-field.ts +10 -0
- package/src/tokens/molecules/theme-switcher.css +20 -0
- package/src/tokens/molecules/theme-switcher.ts +4 -0
- package/src/tokens/molecules/time-field.css +25 -0
- package/src/tokens/molecules/time-field.ts +8 -0
- package/src/tokens/molecules/toast.css +17 -0
- package/src/tokens/molecules/tree-view.css +47 -0
- package/src/tokens/molecules/tree-view.ts +7 -0
- package/src/tokens/molecules/uptime-bars.css +40 -0
- package/src/tokens/molecules/uptime-bars.ts +7 -0
- package/src/tokens/molecules/user-menu.css +73 -0
- package/src/tokens/molecules/user-message.css +24 -0
- package/src/tokens/motion.ts +6 -0
- package/src/tokens/opacity.ts +4 -0
- package/src/tokens/scss/_index.legacy.scss +163 -0
- package/src/tokens/scss/_index.scss +163 -0
- package/src/tokens/scss/components/_accordion.scss +20 -0
- package/src/tokens/scss/components/_app-header.scss +13 -0
- package/src/tokens/scss/components/_arrow.scss +6 -0
- package/src/tokens/scss/components/_async-multi-select.scss +52 -0
- package/src/tokens/scss/components/_async-select.scss +44 -0
- package/src/tokens/scss/components/_avatar.scss +22 -0
- package/src/tokens/scss/components/_breadcrumb.scss +20 -0
- package/src/tokens/scss/components/_button.scss +187 -0
- package/src/tokens/scss/components/_card.scss +31 -0
- package/src/tokens/scss/components/_chat.scss +4 -0
- package/src/tokens/scss/components/_checkbox.scss +28 -0
- package/src/tokens/scss/components/_close-button.scss +11 -0
- package/src/tokens/scss/components/_code-block.scss +36 -0
- package/src/tokens/scss/components/_code.scss +10 -0
- package/src/tokens/scss/components/_collapsible.scss +18 -0
- package/src/tokens/scss/components/_columns.scss +10 -0
- package/src/tokens/scss/components/_container.scss +14 -0
- package/src/tokens/scss/components/_control.scss +19 -0
- package/src/tokens/scss/components/_copyable-value.scss +4 -0
- package/src/tokens/scss/components/_description-list.scss +19 -0
- package/src/tokens/scss/components/_figure.scss +13 -0
- package/src/tokens/scss/components/_file-upload.scss +72 -0
- package/src/tokens/scss/components/_floating-dock.scss +40 -0
- package/src/tokens/scss/components/_floating-panel.scss +11 -0
- package/src/tokens/scss/components/_hero.scss +10 -0
- package/src/tokens/scss/components/_highlight.scss +8 -0
- package/src/tokens/scss/components/_icon.scss +8 -0
- package/src/tokens/scss/components/_inline.scss +6 -0
- package/src/tokens/scss/components/_input-phone.scss +17 -0
- package/src/tokens/scss/components/_input.scss +40 -0
- package/src/tokens/scss/components/_kbd.scss +23 -0
- package/src/tokens/scss/components/_label.scss +11 -0
- package/src/tokens/scss/components/_legal-footer.scss +7 -0
- package/src/tokens/scss/components/_link.scss +20 -0
- package/src/tokens/scss/components/_logo.scss +9 -0
- package/src/tokens/scss/components/_logomark.scss +8 -0
- package/src/tokens/scss/components/_menu-button.scss +13 -0
- package/src/tokens/scss/components/_message-bubble.scss +17 -0
- package/src/tokens/scss/components/_multi-select.scss +51 -0
- package/src/tokens/scss/components/_number-badge.scss +26 -0
- package/src/tokens/scss/components/_number-input.scss +43 -0
- package/src/tokens/scss/components/_otp-input.scss +5 -0
- package/src/tokens/scss/components/_popover.scss +17 -0
- package/src/tokens/scss/components/_progress-bar.scss +32 -0
- package/src/tokens/scss/components/_radio-group.scss +5 -0
- package/src/tokens/scss/components/_radio.scss +26 -0
- package/src/tokens/scss/components/_scroll-area.scss +13 -0
- package/src/tokens/scss/components/_select.scss +38 -0
- package/src/tokens/scss/components/_separator.scss +8 -0
- package/src/tokens/scss/components/_sidebar.scss +29 -0
- package/src/tokens/scss/components/_site-footer.scss +16 -0
- package/src/tokens/scss/components/_site-header.scss +24 -0
- package/src/tokens/scss/components/_site-shell.scss +19 -0
- package/src/tokens/scss/components/_skeleton.scss +9 -0
- package/src/tokens/scss/components/_skip-link.scss +13 -0
- package/src/tokens/scss/components/_slider.scss +25 -0
- package/src/tokens/scss/components/_sparkline.scss +11 -0
- package/src/tokens/scss/components/_spinner.scss +10 -0
- package/src/tokens/scss/components/_stack.scss +6 -0
- package/src/tokens/scss/components/_star-rating.scss +17 -0
- package/src/tokens/scss/components/_step.scss +37 -0
- package/src/tokens/scss/components/_switcher.scss +30 -0
- package/src/tokens/scss/components/_tabs.scss +26 -0
- package/src/tokens/scss/components/_tag.scss +30 -0
- package/src/tokens/scss/components/_text-inline.scss +7 -0
- package/src/tokens/scss/components/_text.scss +73 -0
- package/src/tokens/scss/components/_textarea.scss +54 -0
- package/src/tokens/scss/components/_time-select.scss +7 -0
- package/src/tokens/scss/components/_toggle-group.scss +4 -0
- package/src/tokens/scss/components/_toggle.scss +34 -0
- package/src/tokens/scss/components/_tooltip.scss +16 -0
- package/src/tokens/scss/components/_typing-indicator.scss +11 -0
- package/src/tokens/scss/global/_border.scss +15 -0
- package/src/tokens/scss/global/_breakpoint.scss +9 -0
- package/src/tokens/scss/global/_colors.scss +102 -0
- package/src/tokens/scss/global/_form.scss +27 -0
- package/src/tokens/scss/global/_motion.scss +12 -0
- package/src/tokens/scss/global/_opacity.scss +7 -0
- package/src/tokens/scss/global/_section.scss +9 -0
- package/src/tokens/scss/global/_shadow.scss +9 -0
- package/src/tokens/scss/global/_size.scss +8 -0
- package/src/tokens/scss/global/_spacing.scss +11 -0
- package/src/tokens/scss/global/_typography.scss +36 -0
- package/src/tokens/scss/global/_z-index.scss +9 -0
- package/src/tokens/scss/molecules/_alert.scss +33 -0
- package/src/tokens/scss/molecules/_annotation-thread.scss +28 -0
- package/src/tokens/scss/molecules/_app-launcher.scss +46 -0
- package/src/tokens/scss/molecules/_assistant-message.scss +13 -0
- package/src/tokens/scss/molecules/_async-multi-select-field.scss +14 -0
- package/src/tokens/scss/molecules/_async-select-field.scss +14 -0
- package/src/tokens/scss/molecules/_avatar-upload.scss +23 -0
- package/src/tokens/scss/molecules/_banner.scss +18 -0
- package/src/tokens/scss/molecules/_calendar-planner.scss +46 -0
- package/src/tokens/scss/molecules/_calendar-roster.scss +45 -0
- package/src/tokens/scss/molecules/_calendar.scss +67 -0
- package/src/tokens/scss/molecules/_carousel.scss +15 -0
- package/src/tokens/scss/molecules/_chart.scss +82 -0
- package/src/tokens/scss/molecules/_chat-shell.scss +10 -0
- package/src/tokens/scss/molecules/_checkbox-field.scss +31 -0
- package/src/tokens/scss/molecules/_command-palette.scss +33 -0
- package/src/tokens/scss/molecules/_confirm-dialog.scss +4 -0
- package/src/tokens/scss/molecules/_connector-auth.scss +10 -0
- package/src/tokens/scss/molecules/_consent.scss +18 -0
- package/src/tokens/scss/molecules/_conversation-list.scss +23 -0
- package/src/tokens/scss/molecules/_conversation-thread.scss +4 -0
- package/src/tokens/scss/molecules/_copy-button.scss +4 -0
- package/src/tokens/scss/molecules/_data-table.scss +6 -0
- package/src/tokens/scss/molecules/_date-picker-field.scss +14 -0
- package/src/tokens/scss/molecules/_date-picker.scss +26 -0
- package/src/tokens/scss/molecules/_date-time-field.scss +15 -0
- package/src/tokens/scss/molecules/_docs-search.scss +27 -0
- package/src/tokens/scss/molecules/_dropdown-field.scss +41 -0
- package/src/tokens/scss/molecules/_empty-state.scss +19 -0
- package/src/tokens/scss/molecules/_field-row.scss +21 -0
- package/src/tokens/scss/molecules/_file-upload-field.scss +14 -0
- package/src/tokens/scss/molecules/_filter-bar.scss +8 -0
- package/src/tokens/scss/molecules/_form-field.scss +4 -0
- package/src/tokens/scss/molecules/_image-crop-dialog.scss +9 -0
- package/src/tokens/scss/molecules/_input-field.scss +28 -0
- package/src/tokens/scss/molecules/_input-phone-field.scss +14 -0
- package/src/tokens/scss/molecules/_language-switcher.scss +9 -0
- package/src/tokens/scss/molecules/_menu.scss +46 -0
- package/src/tokens/scss/molecules/_message-composer.scss +21 -0
- package/src/tokens/scss/molecules/_modal.scss +35 -0
- package/src/tokens/scss/molecules/_multi-select-field.scss +14 -0
- package/src/tokens/scss/molecules/_notification-button.scss +6 -0
- package/src/tokens/scss/molecules/_notification-list.scss +20 -0
- package/src/tokens/scss/molecules/_notification-panel.scss +31 -0
- package/src/tokens/scss/molecules/_number-input-field.scss +14 -0
- package/src/tokens/scss/molecules/_onboarding-shell.scss +15 -0
- package/src/tokens/scss/molecules/_org-switcher.scss +39 -0
- package/src/tokens/scss/molecules/_otp-field.scss +14 -0
- package/src/tokens/scss/molecules/_page-intro.scss +7 -0
- package/src/tokens/scss/molecules/_pagination.scss +46 -0
- package/src/tokens/scss/molecules/_password-field.scss +17 -0
- package/src/tokens/scss/molecules/_prev-next-nav.scss +25 -0
- package/src/tokens/scss/molecules/_project-card.scss +11 -0
- package/src/tokens/scss/molecules/_prose.scss +47 -0
- package/src/tokens/scss/molecules/_public-page-shell.scss +5 -0
- package/src/tokens/scss/molecules/_radio-field.scss +30 -0
- package/src/tokens/scss/molecules/_recovery-codes.scss +12 -0
- package/src/tokens/scss/molecules/_search-form.scss +21 -0
- package/src/tokens/scss/molecules/_select-field.scss +14 -0
- package/src/tokens/scss/molecules/_sheet.scss +30 -0
- package/src/tokens/scss/molecules/_sidebar-nav.scss +37 -0
- package/src/tokens/scss/molecules/_site-nav.scss +18 -0
- package/src/tokens/scss/molecules/_stat-tile.scss +32 -0
- package/src/tokens/scss/molecules/_stepper.scss +26 -0
- package/src/tokens/scss/molecules/_steps.scss +8 -0
- package/src/tokens/scss/molecules/_switcher-field.scss +30 -0
- package/src/tokens/scss/molecules/_table-of-contents.scss +27 -0
- package/src/tokens/scss/molecules/_table.scss +40 -0
- package/src/tokens/scss/molecules/_textarea-field.scss +14 -0
- package/src/tokens/scss/molecules/_theme-switcher.scss +10 -0
- package/src/tokens/scss/molecules/_time-field.scss +14 -0
- package/src/tokens/scss/molecules/_toast.scss +14 -0
- package/src/tokens/scss/molecules/_tree-view.scss +34 -0
- package/src/tokens/scss/molecules/_uptime-bars.scss +25 -0
- package/src/tokens/scss/molecules/_user-menu.scss +53 -0
- package/src/tokens/scss/molecules/_user-message.scss +13 -0
- package/src/tokens/shadow.ts +6 -0
- package/src/tokens/size.ts +6 -0
- package/src/tokens/spacing.ts +4 -0
- package/src/tokens/surface-dark-derived.css +88 -0
- package/src/tokens/surface-invert.css +682 -0
- package/src/tokens/surface-public.css +151 -0
- package/src/tokens/tokens.json +3267 -0
- package/src/tokens/tokens.ts +59 -0
- package/src/tokens/typography.ts +91 -0
- package/src/tokens/utils.test.ts +86 -0
- package/src/tokens/utils.ts +37 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type ContainerWidth } from '../../atoms/Container/Container';
|
|
3
|
+
import { type LogoSize } from '../../atoms/Logo/Logo';
|
|
4
|
+
import './SiteHeader.css';
|
|
5
|
+
export type SiteHeaderLogoLinkProps = {
|
|
6
|
+
href: string;
|
|
7
|
+
className: string;
|
|
8
|
+
'aria-label': string;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export interface SiteHeaderProps {
|
|
12
|
+
/** Destino del logotipo. */
|
|
13
|
+
logoHref?: string;
|
|
14
|
+
/** Texto accesible del enlace del logotipo. */
|
|
15
|
+
logoLabel?: string;
|
|
16
|
+
/** aria-label del botón de menú. */
|
|
17
|
+
menuLabel?: string;
|
|
18
|
+
/** aria-label del botón de menú cuando está abierto («Cerrar menú»). */
|
|
19
|
+
menuCloseLabel?: string;
|
|
20
|
+
/** La marca. Por defecto el `Logo` de Studio LXD a `logoSize`; un producto de la suite pone la suya. */
|
|
21
|
+
logo?: ReactNode;
|
|
22
|
+
/** Talla del logotipo por defecto. `xxl` (85px): la cabecera es el sitio de la marca. */
|
|
23
|
+
logoSize?: LogoSize;
|
|
24
|
+
/** Talla del botón de menú. `lg` (48px) acompaña al logotipo grande. */
|
|
25
|
+
menuButtonSize?: 'sm' | 'md' | 'lg';
|
|
26
|
+
/**
|
|
27
|
+
* Enlace del logotipo para el router del producto. Recibe `href`, `className`,
|
|
28
|
+
* `aria-label` y `children`, y debe reenviarlos todos.
|
|
29
|
+
*/
|
|
30
|
+
renderLogoLink?: (props: SiteHeaderLogoLinkProps) => ReactNode;
|
|
31
|
+
/** Ancho del contenido; el fondo siempre llega de lado a lado. */
|
|
32
|
+
width?: ContainerWidth;
|
|
33
|
+
/** Estado del menú cuando lo gobierna el producto. Si se omite, es interno. */
|
|
34
|
+
open?: boolean;
|
|
35
|
+
/** Notifica el cambio de estado del menú. */
|
|
36
|
+
onOpenChange?: (open: boolean) => void;
|
|
37
|
+
/** Índice del sitio dentro del panel: normalmente un `SiteNav`. */
|
|
38
|
+
children?: ReactNode;
|
|
39
|
+
/** Ajustes del sitio al final del panel (el selector de tema). */
|
|
40
|
+
settings?: ReactNode;
|
|
41
|
+
/** id del panel — `aria-controls` del botón de menú. */
|
|
42
|
+
panelId?: string;
|
|
43
|
+
/** Controles del producto en la barra (acceso, CTA…). */
|
|
44
|
+
actions?: ReactNode;
|
|
45
|
+
/** El selector de idioma (`LanguageSwitcher` compacto): en los ajustes del panel, delante del tema. */
|
|
46
|
+
language?: ReactNode;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Cabecera de las páginas públicas: logotipo, controles del producto y botón
|
|
50
|
+
* de menú: la barra se monta a sangre —el fondo llega de lado a lado y el
|
|
51
|
+
* alto es suyo (`--site-header-height`, más compacto en móvil)— con el
|
|
52
|
+
* contenido acotado por su `Container` interior. El
|
|
53
|
+
* menú es siempre un panel a pantalla completa bajo la barra —no hay
|
|
54
|
+
* navegación en línea— con el índice del sitio y, al final, sus ajustes.
|
|
55
|
+
* El enlace de salto al contenido no va aquí: lo pone `AppRoot`, una vez por
|
|
56
|
+
* documento.
|
|
57
|
+
*/
|
|
58
|
+
export declare function SiteHeader({ logoHref, logoLabel, menuLabel, menuCloseLabel, logoSize, logo, menuButtonSize, renderLogoLink, width, open, onOpenChange, children, settings, panelId, actions, language, }: SiteHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import './SiteShell.css';
|
|
3
|
+
export interface SiteShellProps {
|
|
4
|
+
/** La cabecera del sitio (`SiteHeader` o la del producto). */
|
|
5
|
+
header?: ReactNode;
|
|
6
|
+
/** El pie (`LegalFooter`, el del producto…). Siempre queda abajo del todo. */
|
|
7
|
+
footer?: ReactNode;
|
|
8
|
+
/** El contenido de la página: normalmente el `main` con `id="main-content"`. */
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* El marco de una página pública: cabecera, contenido y pie en columna,
|
|
14
|
+
* con la altura mínima de la pantalla. Con poco contenido, el pie se queda
|
|
15
|
+
* pegado al borde inferior; con mucho, la página entera hace scroll. Es la
|
|
16
|
+
* norma del sistema: ningún producto necesita CSS propio para sujetar el pie.
|
|
17
|
+
* Para las aplicaciones con barra y sidebar está `AppShell`.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Reenvía el `ref` al nodo raíz (`.site-shell`): un `Modal`/`Sheet` abierto
|
|
21
|
+
* desde dentro necesita apuntar su `container` aquí para heredar los tokens
|
|
22
|
+
* de la superficie pública — el portal por defecto monta en `document.body`,
|
|
23
|
+
* que no es descendiente de `.site-shell` (a diferencia del tema oscuro, que
|
|
24
|
+
* se activa en `<html>` y sí llega a cualquier portal sin configuración).
|
|
25
|
+
*/
|
|
26
|
+
export declare const SiteShell: import("react").ForwardRefExoticComponent<SiteShellProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import './ChatShell.css';
|
|
3
|
+
export interface ChatShellProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
4
|
+
/**
|
|
5
|
+
* La columna de conversaciones, normalmente un `ConversationList`. Sin ella,
|
|
6
|
+
* el armazón es solo hilo y composer — que es como se monta dentro de un
|
|
7
|
+
* `AppShell`, donde la columna vive en el `Sidebar`.
|
|
8
|
+
*
|
|
9
|
+
* Por debajo del punto de ruptura no desaparece ni se encoge: se pliega a un
|
|
10
|
+
* cajón (`Sheet`) que abre un botón en la cabecera.
|
|
11
|
+
*/
|
|
12
|
+
list?: ReactNode;
|
|
13
|
+
/** La cabecera del hilo: el título de la conversación y sus controles. */
|
|
14
|
+
header?: ReactNode;
|
|
15
|
+
/** El hilo: un `ConversationThread`. */
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
/** La caja de escribir: un `MessageComposer`. */
|
|
18
|
+
composer?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* `aria-label` de la columna de conversaciones y título del cajón en
|
|
21
|
+
* pantallas estrechas. Default: "Conversaciones" (castellano). Solo se usa
|
|
22
|
+
* si hay `list`.
|
|
23
|
+
*/
|
|
24
|
+
listLabel?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Nombre accesible del botón que abre el cajón de conversaciones. Default:
|
|
27
|
+
* "Abrir conversaciones" (castellano).
|
|
28
|
+
*/
|
|
29
|
+
listTriggerLabel?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Estado controlado del cajón de conversaciones. Sin él, el armazón lo lleva
|
|
32
|
+
* por dentro; con él, el producto puede cerrarlo al abrir una conversación.
|
|
33
|
+
* En escritorio no se usa: ahí la lista es columna y siempre está a la vista.
|
|
34
|
+
*/
|
|
35
|
+
listOpen?: boolean;
|
|
36
|
+
/** Avisa de cada apertura y cierre del cajón de conversaciones. */
|
|
37
|
+
onListOpenChange?: (open: boolean) => void;
|
|
38
|
+
/** Se añade DESPUÉS de las clases propias del componente (el consumidor añade, no sustituye). */
|
|
39
|
+
className?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* El armazón de una pantalla de chat: tres zonas —la columna de
|
|
43
|
+
* conversaciones, el hilo y la caja de escribir— colocadas y con el scroll en
|
|
44
|
+
* el sitio correcto.
|
|
45
|
+
*
|
|
46
|
+
* Es **solo maqueta**: no lleva estado de producto ni sabe nada de mensajes.
|
|
47
|
+
* Quién habla, qué se manda y qué conversación está abierta lo lleva el
|
|
48
|
+
* producto y entra por los slots. Lo único que sí lleva es el cajón de
|
|
49
|
+
* conversaciones de las pantallas estrechas, que es maqueta también.
|
|
50
|
+
*
|
|
51
|
+
* Reenvía el resto de props del `<div>` (`data-*`, `id`…) y el `ref`.
|
|
52
|
+
*/
|
|
53
|
+
export declare const ChatShell: import("react").ForwardRefExoticComponent<ChatShellProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* El chrome que las cuatro pantallas del conector reenvían al marco público.
|
|
4
|
+
* Va aparte para que cada plantilla lo extienda sin volver a escribirlo: son
|
|
5
|
+
* las mismas ranuras que ya tiene `PublicPageShell`, ni una más.
|
|
6
|
+
*
|
|
7
|
+
* Quien cablee estas pantallas **tiene que rellenarlas**. El servidor de
|
|
8
|
+
* autorización sirve el consentimiento fuera de la aplicación —sin su chasis—,
|
|
9
|
+
* así que la cabecera pública, el pie legal y la banda de preferencias no le
|
|
10
|
+
* llegan de ningún layout: entran por aquí o no existen.
|
|
11
|
+
*/
|
|
12
|
+
export interface ConnectorAuthChromeProps {
|
|
13
|
+
/** Cabecera pública (`SiteHeader`). Va dentro de un `ErrorBoundary` del marco. */
|
|
14
|
+
header?: ReactNode;
|
|
15
|
+
/** Pie legal (`LegalFooter`). Ídem. */
|
|
16
|
+
footer?: ReactNode;
|
|
17
|
+
/**
|
|
18
|
+
* Idioma y tema, en la banda de preferencias del marco. En estas pantallas
|
|
19
|
+
* el idioma no es un adorno: el servidor de autorización lo saca de la
|
|
20
|
+
* cookie `NEXT_LOCALE` o de `Accept-Language`, y quien llegue en el idioma
|
|
21
|
+
* equivocado necesita poder cambiarlo **aquí**, porque no hay ninguna otra
|
|
22
|
+
* pantalla de la suite alrededor donde hacerlo.
|
|
23
|
+
*/
|
|
24
|
+
preferences?: ReactNode;
|
|
25
|
+
/** Nombre accesible de la banda de preferencias. Default castellano: «Preferencias». */
|
|
26
|
+
preferencesLabel?: string;
|
|
27
|
+
/** `id` del `main` (`main-content` por defecto, destino del `SkipLink`). */
|
|
28
|
+
id?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Con `false` no monta el marco público ni el `main`: solo las dos columnas,
|
|
31
|
+
* para pintarlas dentro de una aplicación que ya tiene su `main`. Por
|
|
32
|
+
* defecto `true`. Sin marco, `header`, `footer`, `preferences` e `id` no
|
|
33
|
+
* aplican —ni el `ref`, porque no hay marco al que engancharlo.
|
|
34
|
+
*/
|
|
35
|
+
shell?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface ConnectorAuthShellProps extends ConnectorAuthChromeProps {
|
|
38
|
+
/** El título de la pantalla: `Heading` de nivel 1 vía `PageIntro`, columna izquierda. */
|
|
39
|
+
title: ReactNode;
|
|
40
|
+
/** La frase bajo el título, columna izquierda. Es una frase y termina en punto. */
|
|
41
|
+
description?: ReactNode;
|
|
42
|
+
/** Más texto bajo la frase, misma columna. */
|
|
43
|
+
intro?: ReactNode;
|
|
44
|
+
/** Bajo la cabecera, en su misma columna: un enlace de vuelta. El aire lo pone el `PageIntro`. */
|
|
45
|
+
aside?: ReactNode;
|
|
46
|
+
/** La columna de la derecha: la decisión —el formulario, la ficha, los botones—. */
|
|
47
|
+
children: ReactNode;
|
|
48
|
+
/** Se añade DESPUÉS de las clases propias. */
|
|
49
|
+
className?: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* El marco de las pantallas del conector: **el mismo que el de acceso**.
|
|
53
|
+
*
|
|
54
|
+
* Conectar una herramienta es una pantalla pública de una sola decisión, de la
|
|
55
|
+
* familia de iniciar sesión, recuperar la contraseña o verificar el correo:
|
|
56
|
+
* cuelga de `PublicPageShell` —cabecera pública, `main` acotado, banda de
|
|
57
|
+
* preferencias y pie legal—, se maqueta en dos columnas (`Columns`, la
|
|
58
|
+
* cabecera a la izquierda y la decisión a la derecha) y reparte talla `lg` a
|
|
59
|
+
* todo lo que lleve dentro, que es la talla de la superficie pública. Ninguna
|
|
60
|
+
* de las cuatro pantallas inventa su propio contenedor.
|
|
61
|
+
*
|
|
62
|
+
* La consecuencia de esa decisión es de cableado, no de diseño: el servidor de
|
|
63
|
+
* autorización **sirve el consentimiento fuera de la aplicación**, así que
|
|
64
|
+
* quien lo monte tiene que pasar el chrome por props (`header`, `footer`,
|
|
65
|
+
* `preferences`) — no le va a llegar de ningún layout. Por eso las ranuras
|
|
66
|
+
* están en la plantilla y no dentro de ella.
|
|
67
|
+
*
|
|
68
|
+
* **Reenvía el `ref` al nodo del marco** (`.site-shell`), que es el
|
|
69
|
+
* `container` que pide un panel flotante abierto desde la página (el de
|
|
70
|
+
* cookies, un `Modal`): su portal monta en `document.body`, que no hereda el
|
|
71
|
+
* remapeo de superficie pública.
|
|
72
|
+
*/
|
|
73
|
+
export declare const ConnectorAuthShell: import("react").ForwardRefExoticComponent<ConnectorAuthShellProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ConnectorAuthChromeProps } from './ConnectorAuthShell';
|
|
3
|
+
import { ConnectorRequestSummary, type ConnectorScope } from './ConnectorRequestSummary';
|
|
4
|
+
export interface ConnectorConsentPageProps extends ConnectorAuthChromeProps {
|
|
5
|
+
/** El nombre con el que la herramienta se registró. **Dato de fuera**: ver `ConnectorRequestSummary`. */
|
|
6
|
+
clientName: string;
|
|
7
|
+
/** El producto de la suite al que se pide acceso. */
|
|
8
|
+
productName?: ReactNode;
|
|
9
|
+
/** La cuenta con la que se está decidiendo. */
|
|
10
|
+
accountEmail: string;
|
|
11
|
+
/** Qué se concede. Default: `'read'`. */
|
|
12
|
+
scope?: ConnectorScope;
|
|
13
|
+
/** El host al que se enviará el acceso, sacado del `redirect_uri` ya validado. */
|
|
14
|
+
redirectHost: string;
|
|
15
|
+
/**
|
|
16
|
+
* Destino del envío nativo. **Con `action` la pantalla funciona sin una
|
|
17
|
+
* línea de JavaScript**: el bloque de decisión es un `<form method="post">`
|
|
18
|
+
* de verdad y los dos botones son `submit`. Es el modo que necesita el
|
|
19
|
+
* servidor de autorización, que la sirve con
|
|
20
|
+
* `Content-Security-Policy: default-src 'none'` —ni un script, ni una hoja
|
|
21
|
+
* de estilos externa— y por tanto no puede depender de un `onClick`.
|
|
22
|
+
*
|
|
23
|
+
* Sin `action`, los botones son botones y la decisión sale por `onApprove` /
|
|
24
|
+
* `onDeny`: el modo de montarla dentro de una aplicación React.
|
|
25
|
+
*/
|
|
26
|
+
action?: string | ((formData: FormData) => void | Promise<void>);
|
|
27
|
+
/**
|
|
28
|
+
* Los parámetros de OAuth que tienen que viajar con la decisión —`client_id`,
|
|
29
|
+
* `redirect_uri`, `code_challenge`, `state`, `scope`, `consent_nonce`—, como
|
|
30
|
+
* `<input type="hidden">`. Son **datos en tránsito, no interfaz**: la
|
|
31
|
+
* plantilla no los lee ni los valida, solo los devuelve intactos.
|
|
32
|
+
*/
|
|
33
|
+
hiddenFields?: Record<string, string>;
|
|
34
|
+
/** Nombre del campo que distingue la decisión en el envío nativo. Default: `'decision'`. */
|
|
35
|
+
decisionName?: string;
|
|
36
|
+
/** Valor que envía el botón de permitir. Default: `'approve'`. */
|
|
37
|
+
approveValue?: string;
|
|
38
|
+
/** Valor que envía el botón de denegar. Default: `'deny'`. */
|
|
39
|
+
denyValue?: string;
|
|
40
|
+
/** La decisión afirmativa, en modo React (sin `action`). */
|
|
41
|
+
onApprove?: () => void;
|
|
42
|
+
/** La negativa, en modo React (sin `action`). */
|
|
43
|
+
onDeny?: () => void;
|
|
44
|
+
/**
|
|
45
|
+
* Denegar como enlace en vez de como envío: la vuelta a la herramienta con
|
|
46
|
+
* `error=access_denied`, ya compuesta por el servidor. Manda sobre
|
|
47
|
+
* `onDeny` y sobre el envío nativo.
|
|
48
|
+
*/
|
|
49
|
+
denyHref?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Dónde empieza el foco. Default `'none'`: **la pantalla no enfoca nada**, y
|
|
52
|
+
* el primer tabulador cae en denegar porque es el primero del DOM. Con
|
|
53
|
+
* `'deny'` se enfoca denegar al cargar. Permitir no es una opción, y no se
|
|
54
|
+
* va a añadir: conceder acceso no puede estar a un Intro de distancia de
|
|
55
|
+
* abrir la página.
|
|
56
|
+
*/
|
|
57
|
+
initialFocus?: 'none' | 'deny';
|
|
58
|
+
/** Título de la pantalla. Default castellano: «Conectar una herramienta». */
|
|
59
|
+
title?: ReactNode;
|
|
60
|
+
/**
|
|
61
|
+
* La frase de la cabecera. Recibe las tres piezas ya compuestas —la
|
|
62
|
+
* herramienta y la cuenta en negrita, el permiso en texto corriente— porque
|
|
63
|
+
* el orden cambia con el idioma (en alemán la cuenta va antes del permiso).
|
|
64
|
+
* Default castellano.
|
|
65
|
+
*/
|
|
66
|
+
intro?: (parts: {
|
|
67
|
+
client: ReactNode;
|
|
68
|
+
what: ReactNode;
|
|
69
|
+
email: ReactNode;
|
|
70
|
+
}) => ReactNode;
|
|
71
|
+
/**
|
|
72
|
+
* El aviso de a dónde se enviará el acceso, bajo la ficha. Recibe el host ya
|
|
73
|
+
* en negrita. Va a tamaño de cuerpo, no de nota al pie: es la señal que
|
|
74
|
+
* convierte una suplantación en visible y no puede leerse como letra
|
|
75
|
+
* pequeña. Default castellano.
|
|
76
|
+
*/
|
|
77
|
+
redirectNotice?: (parts: {
|
|
78
|
+
host: ReactNode;
|
|
79
|
+
}) => ReactNode;
|
|
80
|
+
/** Etiqueta del botón que concede. Default castellano: «Permitir acceso». */
|
|
81
|
+
approveLabel?: string;
|
|
82
|
+
/** Etiqueta del botón que deniega. Default castellano: «Denegar». */
|
|
83
|
+
denyLabel?: string;
|
|
84
|
+
/** Alcance en texto, para la frase y para la ficha. Default castellano. */
|
|
85
|
+
scopeReadLabel?: string;
|
|
86
|
+
/** Ídem, lectura y escritura. Default castellano. */
|
|
87
|
+
scopeWriteLabel?: string;
|
|
88
|
+
/** Etiqueta del desplegador de un valor de fuera recortado. Default castellano: «Ver el valor completo». */
|
|
89
|
+
expandLabel?: string;
|
|
90
|
+
/** Etiqueta del desplegador abierto. Default castellano: «Ver menos». */
|
|
91
|
+
collapseLabel?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Las comillas que enmarcan los datos de fuera —la herramienta, la cuenta, el
|
|
94
|
+
* host—, aquí y en la ficha. Default castellano: `['«', '»']`.
|
|
95
|
+
*/
|
|
96
|
+
valueQuotes?: [string, string];
|
|
97
|
+
/** Rótulos de la ficha. Ver `ConnectorRequestSummary`. */
|
|
98
|
+
summaryLabels?: Pick<React.ComponentProps<typeof ConnectorRequestSummary>, 'clientLabel' | 'productLabel' | 'accountLabel' | 'scopeLabel' | 'redirectLabel'>;
|
|
99
|
+
/** Bajo las acciones: un enlace de ayuda, la política de la suite. Se pinta en `links` del `Form`. */
|
|
100
|
+
links?: ReactNode;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* **La pantalla principal del flujo**: una herramienta pide acceso a un
|
|
104
|
+
* producto de la suite y hay que concederlo o denegarlo.
|
|
105
|
+
*
|
|
106
|
+
* La cabecera cuenta la petición en una frase; la columna de la decisión la
|
|
107
|
+
* repite como ficha verificable (`ConnectorRequestSummary`), avisa de a dónde
|
|
108
|
+
* saldrá el acceso y ofrece las dos salidas. Nada más: no hay recordar la
|
|
109
|
+
* decisión, ni elegir alcance a la carta, ni ver qué se llevó la última vez.
|
|
110
|
+
* Una pantalla de una sola decisión.
|
|
111
|
+
*
|
|
112
|
+
* ### Las dos acciones
|
|
113
|
+
*
|
|
114
|
+
* Denegar va **primera en el DOM** y permitir después, como el `Cancelar` de
|
|
115
|
+
* un diálogo del sistema: el recorrido del teclado abre por la salida segura.
|
|
116
|
+
* Visualmente permitir es la principal —es la que ejecuta— y denegar va en
|
|
117
|
+
* `outline`; apiladas (`blockActions`, como el resto de la familia de acceso)
|
|
118
|
+
* permitir queda arriba, que es donde el pulgar espera la acción del
|
|
119
|
+
* formulario. Lo que **no** pasa en ninguna talla es que conceder acceso se
|
|
120
|
+
* lleve el foco al cargar: ver `initialFocus`.
|
|
121
|
+
*
|
|
122
|
+
* ### Sin JavaScript
|
|
123
|
+
*
|
|
124
|
+
* Con `action` la pantalla es un formulario nativo y funciona con los scripts
|
|
125
|
+
* desactivados, que es como la sirve hoy el servidor de autorización. Sin
|
|
126
|
+
* `action` es una pantalla de React con dos callbacks. Las dos formas pintan
|
|
127
|
+
* exactamente lo mismo.
|
|
128
|
+
*/
|
|
129
|
+
export declare function ConnectorConsentPage({ clientName, productName, accountEmail, scope, redirectHost, action, hiddenFields, decisionName, approveValue, denyValue, onApprove, onDeny, denyHref, initialFocus, title, intro, redirectNotice, approveLabel, denyLabel, scopeReadLabel, scopeWriteLabel, expandLabel, collapseLabel, valueQuotes, summaryLabels, links, header, footer, preferences, preferencesLabel, id, shell, }: ConnectorConsentPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ConnectorAuthChromeProps } from './ConnectorAuthShell';
|
|
3
|
+
export interface ConnectorExternalSignInPageProps extends ConnectorAuthChromeProps {
|
|
4
|
+
/**
|
|
5
|
+
* Cómo se llama la instalación de la que es el conector, para la frase y
|
|
6
|
+
* para el botón. Default castellano: «tu Moodle», que hoy es el único
|
|
7
|
+
* conector de esta forma; cambiarlo sirve a cualquier otra instalación
|
|
8
|
+
* ajena a la suite.
|
|
9
|
+
*/
|
|
10
|
+
platformName?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* La organización a la que se va a entrar, **ya resuelta**: el conector vive
|
|
13
|
+
* en un subdominio y el servidor la saca del `resource` de la petición. Con
|
|
14
|
+
* ella, la pantalla solo la confirma. Sin ella pinta el campo para
|
|
15
|
+
* escribirla, que es el caso de una conexión al dominio pelado.
|
|
16
|
+
*/
|
|
17
|
+
organization?: ReactNode;
|
|
18
|
+
/** Valor inicial del campo de organización, cuando hay que escribirla. */
|
|
19
|
+
organizationDefaultValue?: string;
|
|
20
|
+
/** `name` del campo de organización en el envío. Default: `'org'`. */
|
|
21
|
+
organizationName?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Destino del envío. Una URL, o la acción de servidor que arranca el salto a
|
|
24
|
+
* la instalación: el `<form>` de React 19 acepta las dos, y el flujo de
|
|
25
|
+
* lmsmcp necesita la segunda (2026-09-14).
|
|
26
|
+
*/
|
|
27
|
+
action?: string | ((formData: FormData) => void | Promise<void>);
|
|
28
|
+
/** El envío, en modo React (sin `action`). */
|
|
29
|
+
onSubmit?: React.FormEventHandler<HTMLFormElement>;
|
|
30
|
+
/** Los parámetros de OAuth que tienen que sobrevivir al salto, como `<input type="hidden">`. */
|
|
31
|
+
hiddenFields?: Record<string, string>;
|
|
32
|
+
/** Un fallo del intento anterior —«no hay ninguna conexión para esa organización»—, sobre el formulario. */
|
|
33
|
+
error?: ReactNode;
|
|
34
|
+
/** Título de la pantalla. Default castellano: «Autorizar la conexión». */
|
|
35
|
+
title?: ReactNode;
|
|
36
|
+
/** La frase de la cabecera. Recibe el nombre de la instalación. Default castellano. */
|
|
37
|
+
intro?: (parts: {
|
|
38
|
+
platform: ReactNode;
|
|
39
|
+
}) => ReactNode;
|
|
40
|
+
/** La frase que confirma a dónde se entra, con `organization`. Default castellano. */
|
|
41
|
+
signingInTo?: (parts: {
|
|
42
|
+
organization: ReactNode;
|
|
43
|
+
}) => ReactNode;
|
|
44
|
+
/**
|
|
45
|
+
* Las comillas que enmarcan la organización en la frase de confirmación:
|
|
46
|
+
* viene de la petición, así que es dato de fuera y se pinta como tal. Default
|
|
47
|
+
* castellano: `['«', '»']`.
|
|
48
|
+
*/
|
|
49
|
+
valueQuotes?: [string, string];
|
|
50
|
+
/** Etiqueta del campo de organización. Default castellano: «Tu organización». */
|
|
51
|
+
organizationLabel?: string;
|
|
52
|
+
/** Etiqueta de la acción. Recibe el nombre de la instalación. Default castellano. */
|
|
53
|
+
submitLabel?: (parts: {
|
|
54
|
+
platform: ReactNode;
|
|
55
|
+
}) => ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* Debajo del formulario: lo que no es del sistema de diseño. Es la ranura
|
|
58
|
+
* donde el producto cuelga su andamio de desarrollo —pegar una clave de MCP,
|
|
59
|
+
* detrás de un `Accordion`— sin que el DS tenga que conocerlo.
|
|
60
|
+
*/
|
|
61
|
+
extra?: ReactNode;
|
|
62
|
+
/** Bajo la acción: ayuda, un enlace de vuelta. Se pinta en `links` del `Form`. */
|
|
63
|
+
links?: ReactNode;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* **El caso del conector de Moodle**, que no se parece a los otros tres y por
|
|
67
|
+
* eso tiene pantalla propia.
|
|
68
|
+
*
|
|
69
|
+
* En los conectores de la suite, quien concede es la suite: hay sesión, hay
|
|
70
|
+
* consentimiento y el acceso sale de aquí. En el de Moodle **el conector es de
|
|
71
|
+
* la instalación del cliente**, así que no hay nada que consentir en la suite:
|
|
72
|
+
* la pantalla solo confirma a qué organización se entra y manda a
|
|
73
|
+
* identificarse a su Moodle, que es quien decide. De ahí que no lleve ni ficha
|
|
74
|
+
* de permisos ni botón de denegar — denegar, aquí, es no seguir.
|
|
75
|
+
*
|
|
76
|
+
* Es la única de la familia que **pide un dato**: cuando la organización no
|
|
77
|
+
* viene en la petición (una conexión al dominio pelado), hay que escribirla.
|
|
78
|
+
* Con la organización resuelta, el campo desaparece y queda una frase de
|
|
79
|
+
* confirmación: la pantalla no pregunta lo que ya sabe.
|
|
80
|
+
*
|
|
81
|
+
* Lleva el marco y la talla del resto de la familia —`PublicPageShell`, dos
|
|
82
|
+
* columnas, controles `lg`—, que es lo que hace que las dos familias de
|
|
83
|
+
* conector se lean como hermanas. En el producto esta pantalla vive hoy en una
|
|
84
|
+
* `Card` dentro de una columna estrecha, sin cabecera pública ni pie: al
|
|
85
|
+
* cablearla, ese molde propio se retira y lo pone la plantilla.
|
|
86
|
+
*/
|
|
87
|
+
export declare function ConnectorExternalSignInPage({ platformName, organization, organizationDefaultValue, organizationName, action, onSubmit, hiddenFields, error, title, intro, signingInTo, valueQuotes, organizationLabel, submitLabel, extra, links, header, footer, preferences, preferencesLabel, id, shell, }: ConnectorExternalSignInPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ConnectorAuthChromeProps } from './ConnectorAuthShell';
|
|
3
|
+
/**
|
|
4
|
+
* Por qué no se ha conectado nada. Son los cinco errores que el servidor de
|
|
5
|
+
* autorización devuelve hoy en crudo —`invalid_client`,
|
|
6
|
+
* `invalid_redirect_uri`, `access_denied`, `invalid_request`,
|
|
7
|
+
* `login_required`—, uno por uno y con el nombre que entiende quien los lee.
|
|
8
|
+
*/
|
|
9
|
+
export type ConnectorRejectionReason = 'invalid-client' | 'invalid-redirect-uri' | 'invalid-request' | 'access-denied' | 'session-expired';
|
|
10
|
+
export interface ConnectorRejectionPageProps extends ConnectorAuthChromeProps {
|
|
11
|
+
/** Por qué no se ha conectado nada. De él salen el título, la explicación y el texto de la salida. */
|
|
12
|
+
reason: ConnectorRejectionReason;
|
|
13
|
+
/** Título, si el producto quiere el suyo. Default: el de la variante, en castellano. */
|
|
14
|
+
title?: ReactNode;
|
|
15
|
+
/** La frase bajo el título. Default: la de la variante, en castellano. */
|
|
16
|
+
description?: ReactNode;
|
|
17
|
+
/** Qué se puede hacer, en la columna de la derecha. Default: el de la variante, en castellano. */
|
|
18
|
+
hint?: ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* El código técnico tal cual lo devuelve el servidor (`invalid_client`…),
|
|
21
|
+
* bajo la explicación. No es para quien lee la pantalla: es para que pueda
|
|
22
|
+
* copiarlo en un correo a soporte sin tener que describir el error con sus
|
|
23
|
+
* palabras. Sin él, no se pinta.
|
|
24
|
+
*/
|
|
25
|
+
code?: string;
|
|
26
|
+
/** Rótulo del código. Default castellano: «Código». */
|
|
27
|
+
codeLabel?: string;
|
|
28
|
+
/** La salida, como enlace: la vuelta a la herramienta o al acceso. */
|
|
29
|
+
retryHref?: string;
|
|
30
|
+
/** La salida, en modo React (sin `retryHref`). */
|
|
31
|
+
onRetry?: () => void;
|
|
32
|
+
/** Etiqueta de la salida. Default: la de la variante, en castellano. */
|
|
33
|
+
retryLabel?: string;
|
|
34
|
+
/**
|
|
35
|
+
* La salida entera, ya montada, cuando no basta con un botón (el `Link` del
|
|
36
|
+
* router, dos acciones). Manda sobre `retryHref` / `onRetry`.
|
|
37
|
+
*/
|
|
38
|
+
retryAction?: ReactNode;
|
|
39
|
+
/** Bajo la cabecera, en su columna: un enlace de vuelta al producto. */
|
|
40
|
+
aside?: ReactNode;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* **Una sola plantilla para los cinco rechazos**, que hoy son cinco respuestas
|
|
44
|
+
* JSON en crudo sin ninguna pantalla detrás.
|
|
45
|
+
*
|
|
46
|
+
* Son cinco variantes y no cinco plantillas porque lo único que cambia entre
|
|
47
|
+
* ellas es el texto. La maqueta es idéntica —la explicación a la izquierda, qué
|
|
48
|
+
* hacer y la salida a la derecha—, y sobre todo lo es la postura: **ninguna
|
|
49
|
+
* ofrece reintentar en el sitio**. Ni un botón que repita la petición ni un
|
|
50
|
+
* formulario que la arregle; la conexión se empieza donde se empezó, en la
|
|
51
|
+
* herramienta. Un rechazo de autorización que se pueda reintentar a golpes
|
|
52
|
+
* desde la propia pantalla de rechazo es un fallo de seguridad, no una
|
|
53
|
+
* comodidad, y por eso la salida por defecto es «volver» y no «reintentar».
|
|
54
|
+
*
|
|
55
|
+
* Los cinco se agrupan en tres causas, y el texto de cada uno lo dice sin
|
|
56
|
+
* jerga:
|
|
57
|
+
*
|
|
58
|
+
* | Causa | Variantes | Qué se le ofrece |
|
|
59
|
+
* | --- | --- | --- |
|
|
60
|
+
* | La petición no vale | `invalid-client`, `invalid-redirect-uri`, `invalid-request` | Volver a la herramienta: el arreglo está allí |
|
|
61
|
+
* | No se ha concedido | `access-denied` | Cerrar, o pedir la conexión otra vez |
|
|
62
|
+
* | La sesión se ha acabado | `session-expired` | Identificarse y repetir |
|
|
63
|
+
*
|
|
64
|
+
* No lleva `Alert` ni color de error. Un rechazo aquí no es un fallo del
|
|
65
|
+
* sistema del que avisar: es el resultado normal de una comprobación que ha
|
|
66
|
+
* hecho su trabajo —y en `access-denied`, ni siquiera eso: es lo que se ha
|
|
67
|
+
* pedido—. La página lo cuenta como cuenta cualquier otra cosa.
|
|
68
|
+
*/
|
|
69
|
+
export declare function ConnectorRejectionPage({ reason, title, description, hint, code, codeLabel, retryHref, onRetry, retryLabel, retryAction, aside, header, footer, preferences, preferencesLabel, id, shell, }: ConnectorRejectionPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import './ConnectorRequestSummary.css';
|
|
3
|
+
/** Qué se le concede al conector: leer, o leer y modificar. Son los dos únicos alcances que emite el servidor de autorización (`mcp:read` y `mcp:write`). */
|
|
4
|
+
export type ConnectorScope = 'read' | 'write';
|
|
5
|
+
export interface ConnectorRequestSummaryProps {
|
|
6
|
+
/**
|
|
7
|
+
* El nombre con el que la herramienta se registró.
|
|
8
|
+
*
|
|
9
|
+
* **Es dato de quien registró el cliente, no de la suite.** El registro es
|
|
10
|
+
* abierto: cualquiera puede darse de alta con el nombre que quiera, así que
|
|
11
|
+
* un «Claude» falso es indistinguible del real. Pásalo como **cadena**: así
|
|
12
|
+
* lo pinta `UntrustedText` —texto plano entrecomillado, con los caracteres
|
|
13
|
+
* invisibles a la vista, aislado de dirección y recortado si es larguísimo—.
|
|
14
|
+
* Un `ReactNode` se pinta tal cual, sin ese tratamiento, porque ya no es
|
|
15
|
+
* texto de fuera sino algo que compusiste tú. Nunca lo pases por
|
|
16
|
+
* `dangerouslySetInnerHTML` ni lo uses para componer una URL.
|
|
17
|
+
*/
|
|
18
|
+
clientName: ReactNode;
|
|
19
|
+
/** El producto de la suite al que se pide acceso: bricks, lmsmcp, lrs, sharescorm, tender. */
|
|
20
|
+
productName?: ReactNode;
|
|
21
|
+
/** La cuenta con la que se está decidiendo. Sin sesión —la pantalla de identificarse— no se pasa. */
|
|
22
|
+
accountEmail?: ReactNode;
|
|
23
|
+
/** El alcance concedido. Sin él, la fila no se pinta. */
|
|
24
|
+
scope?: ConnectorScope;
|
|
25
|
+
/**
|
|
26
|
+
* El host al que se enviará el acceso, sacado del `redirect_uri` ya validado
|
|
27
|
+
* contra lo registrado.
|
|
28
|
+
*
|
|
29
|
+
* **Es la única parte de la ficha que quien ataca NO elige**, y por eso está
|
|
30
|
+
* aquí y no en un párrafo suelto: el nombre lo puso quien registró, el host
|
|
31
|
+
* lo impone el registro.
|
|
32
|
+
*/
|
|
33
|
+
redirectHost?: ReactNode;
|
|
34
|
+
/** Rótulo de la herramienta. Default castellano: «Herramienta». */
|
|
35
|
+
clientLabel?: string;
|
|
36
|
+
/** Rótulo del producto. Default castellano: «Producto». */
|
|
37
|
+
productLabel?: string;
|
|
38
|
+
/** Rótulo de la cuenta. Default castellano: «Cuenta». */
|
|
39
|
+
accountLabel?: string;
|
|
40
|
+
/** Rótulo del permiso. Default castellano: «Permiso». */
|
|
41
|
+
scopeLabel?: string;
|
|
42
|
+
/** Rótulo del destino. Default castellano: «Destino». */
|
|
43
|
+
redirectLabel?: string;
|
|
44
|
+
/** Valor del permiso de solo lectura. Default castellano, el del servidor de autorización. */
|
|
45
|
+
scopeReadLabel?: ReactNode;
|
|
46
|
+
/** Valor del permiso de lectura y escritura. Default castellano, el del servidor de autorización. */
|
|
47
|
+
scopeWriteLabel?: ReactNode;
|
|
48
|
+
/** Etiqueta del desplegador de un valor recortado. Default castellano: «Ver el valor completo». */
|
|
49
|
+
expandLabel?: string;
|
|
50
|
+
/** Etiqueta del desplegador abierto. Default castellano: «Ver menos». */
|
|
51
|
+
collapseLabel?: string;
|
|
52
|
+
/** Las comillas que enmarcan los valores de fuera. Default castellano: `['«', '»']`. */
|
|
53
|
+
valueQuotes?: [string, string];
|
|
54
|
+
/** Se añade DESPUÉS de las clases propias. */
|
|
55
|
+
className?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* La ficha de la petición: los cinco hechos que hay que mirar antes de
|
|
59
|
+
* conceder nada —qué herramienta, a qué producto, con qué cuenta, con qué
|
|
60
|
+
* permiso y a dónde va el acceso—, en una `DescriptionList`.
|
|
61
|
+
*
|
|
62
|
+
* Es una **lista de datos, no una frase**, a propósito. La frase de la
|
|
63
|
+
* cabecera («X quiere leer los datos de este producto como tú@ejemplo.com»)
|
|
64
|
+
* se lee de corrido y se cree entera; una ficha obliga a que cada dato tenga
|
|
65
|
+
* su rótulo y se pueda comparar con lo que uno esperaba. Los dos textos dicen
|
|
66
|
+
* lo mismo y conviven: la frase explica, la ficha verifica.
|
|
67
|
+
*
|
|
68
|
+
* Los tres valores que vienen de fuera —el nombre de la herramienta, la cuenta
|
|
69
|
+
* y el host— pasan por `UntrustedText`: texto plano entrecomillado, con los
|
|
70
|
+
* caracteres invisibles a la vista, aislados de dirección y recortados con
|
|
71
|
+
* desplegador si son larguísimos. Ver ahí el porqué de cada una de las tres
|
|
72
|
+
* cosas.
|
|
73
|
+
*/
|
|
74
|
+
export declare function ConnectorRequestSummary({ clientName, productName, accountEmail, scope, redirectHost, clientLabel, productLabel, accountLabel, scopeLabel, redirectLabel, scopeReadLabel, scopeWriteLabel, expandLabel, collapseLabel, valueQuotes, className, }: ConnectorRequestSummaryProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ConnectorAuthChromeProps } from './ConnectorAuthShell';
|
|
3
|
+
import { ConnectorRequestSummary, type ConnectorScope } from './ConnectorRequestSummary';
|
|
4
|
+
export interface ConnectorSignInPageProps extends ConnectorAuthChromeProps {
|
|
5
|
+
/** El nombre con el que la herramienta se registró. **Dato de fuera**: ver `ConnectorRequestSummary`. */
|
|
6
|
+
clientName: string;
|
|
7
|
+
/** El producto de la suite al que se pide acceso. */
|
|
8
|
+
productName?: ReactNode;
|
|
9
|
+
/** Qué pide la herramienta. Se enseña ya aquí: quien se identifica tiene derecho a saber para qué. */
|
|
10
|
+
scope?: ConnectorScope;
|
|
11
|
+
/** El host al que se enviaría el acceso. */
|
|
12
|
+
redirectHost?: string;
|
|
13
|
+
/**
|
|
14
|
+
* A dónde se va a identificar: el acceso de la suite, con la vuelta a esta
|
|
15
|
+
* misma petición ya compuesta por el servidor. Con él, la acción es un
|
|
16
|
+
* enlace y la pantalla **no necesita JavaScript**.
|
|
17
|
+
*/
|
|
18
|
+
signInHref?: string;
|
|
19
|
+
/** La acción, en modo React (sin `signInHref`). */
|
|
20
|
+
onSignIn?: () => void;
|
|
21
|
+
/** Destino del envío nativo, para reanudar la petición por POST en vez de por enlace. */
|
|
22
|
+
action?: string;
|
|
23
|
+
/** Los parámetros de OAuth que tienen que sobrevivir al acceso, como `<input type="hidden">`. */
|
|
24
|
+
hiddenFields?: Record<string, string>;
|
|
25
|
+
/** Título de la pantalla. Default castellano. */
|
|
26
|
+
title?: ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* La frase de la cabecera. Recibe la herramienta y el producto ya
|
|
29
|
+
* compuestos. Default castellano.
|
|
30
|
+
*/
|
|
31
|
+
intro?: (parts: {
|
|
32
|
+
client: ReactNode;
|
|
33
|
+
product: ReactNode;
|
|
34
|
+
}) => ReactNode;
|
|
35
|
+
/** Nombre del producto cuando no se pasa `productName`, para la frase. Default castellano: «este producto». */
|
|
36
|
+
fallbackProductName?: ReactNode;
|
|
37
|
+
/** Etiqueta de la acción. Default castellano: «Iniciar sesión». */
|
|
38
|
+
signInLabel?: string;
|
|
39
|
+
/** Alcance en texto. Default castellano. */
|
|
40
|
+
scopeReadLabel?: string;
|
|
41
|
+
/** Ídem, lectura y escritura. Default castellano. */
|
|
42
|
+
scopeWriteLabel?: string;
|
|
43
|
+
/** Etiqueta del desplegador de un valor de fuera recortado. Default castellano: «Ver el valor completo». */
|
|
44
|
+
expandLabel?: string;
|
|
45
|
+
/** Etiqueta del desplegador abierto. Default castellano: «Ver menos». */
|
|
46
|
+
collapseLabel?: string;
|
|
47
|
+
/** Las comillas que enmarcan los datos de fuera. Default castellano: `['«', '»']`. */
|
|
48
|
+
valueQuotes?: [string, string];
|
|
49
|
+
/** Rótulos de la ficha. Ver `ConnectorRequestSummary`. */
|
|
50
|
+
summaryLabels?: Pick<React.ComponentProps<typeof ConnectorRequestSummary>, 'clientLabel' | 'productLabel' | 'scopeLabel' | 'redirectLabel'>;
|
|
51
|
+
/** Bajo la acción: «¿No tienes cuenta?», ayuda. Se pinta en `links` del `Form`. */
|
|
52
|
+
links?: ReactNode;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Se ha llegado al conector **sin sesión**: no hay con qué cuenta conceder
|
|
56
|
+
* nada, así que primero hay que identificarse y luego se vuelve a la pantalla
|
|
57
|
+
* de consentimiento.
|
|
58
|
+
*
|
|
59
|
+
* Enseña ya la ficha de la petición —menos la cuenta, que es justo lo que
|
|
60
|
+
* falta—. Es deliberado: quien va a teclear una contraseña tiene derecho a
|
|
61
|
+
* saber antes qué herramienta está detrás y a dónde va a salir el acceso, y no
|
|
62
|
+
* enterarse dos pantallas más tarde. Y no concede nada: la única acción es
|
|
63
|
+
* identificarse, así que aquí sí es la principal y puede llevarse el foco.
|
|
64
|
+
*
|
|
65
|
+
* Es la pantalla que hoy no existe —el servidor redirige directamente al
|
|
66
|
+
* refresco de sesión del hub— y la que hace falta en cuanto la vuelta falla o
|
|
67
|
+
* el usuario se planta en medio del camino.
|
|
68
|
+
*/
|
|
69
|
+
export declare function ConnectorSignInPage({ clientName, productName, scope, redirectHost, signInHref, onSignIn, action, hiddenFields, title, intro, fallbackProductName, signInLabel, scopeReadLabel, scopeWriteLabel, expandLabel, collapseLabel, valueQuotes, summaryLabels, links, header, footer, preferences, preferencesLabel, id, shell, }: ConnectorSignInPageProps): import("react/jsx-runtime").JSX.Element;
|