@tempoxyz/ds 0.2.6 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Bold.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/fonts/Pilat-Black-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Black-other.woff2 +0 -0
- package/dist/fonts/Pilat-Black.woff2 +0 -0
- package/dist/fonts/Pilat-Bold-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Bold-other.woff2 +0 -0
- package/dist/fonts/Pilat-Bold.woff2 +0 -0
- package/dist/fonts/Pilat-Book-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Book-other.woff2 +0 -0
- package/dist/fonts/Pilat-Book.woff2 +0 -0
- package/dist/fonts/Pilat-Demi-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Demi-other.woff2 +0 -0
- package/dist/fonts/Pilat-Demi.woff2 +0 -0
- package/dist/fonts/Pilat-Heavy-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Heavy-other.woff2 +0 -0
- package/dist/fonts/Pilat-Heavy.woff2 +0 -0
- package/dist/fonts/Pilat-Light-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Light-other.woff2 +0 -0
- package/dist/fonts/Pilat-Light.woff2 +0 -0
- package/dist/fonts/Pilat-Regular-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Regular-other.woff2 +0 -0
- package/dist/fonts/Pilat-Regular.woff2 +0 -0
- package/dist/fonts/Pilat-Thin-latin.woff2 +0 -0
- package/dist/fonts/Pilat-Thin-other.woff2 +0 -0
- package/dist/fonts/Pilat-Thin.woff2 +0 -0
- package/dist/oxlint/rules/PreferComponent.js +6 -6
- package/dist/oxlint/rules/PreferComponent.js.map +1 -1
- package/dist/web/components/Accordion.css +1 -1
- package/dist/web/components/Accordion.d.ts +7 -7
- package/dist/web/components/Accordion.js.map +1 -1
- package/dist/web/components/Accordion.js.zyzz.json +1 -1
- package/dist/web/components/AgentLogo.css +1 -0
- package/dist/web/components/AgentLogo.d.ts +206 -0
- package/dist/web/components/AgentLogo.d.ts.map +1 -0
- package/dist/web/components/AgentLogo.js +86 -0
- package/dist/web/components/AgentLogo.js.map +1 -0
- package/dist/web/components/AgentLogo.js.zyzz.json +1 -0
- package/dist/web/components/Alert.css +1 -0
- package/dist/web/components/Alert.d.ts +161 -0
- package/dist/web/components/Alert.d.ts.map +1 -0
- package/dist/web/components/Alert.js +97 -0
- package/dist/web/components/Alert.js.map +1 -0
- package/dist/web/components/Alert.js.zyzz.json +1 -0
- package/dist/web/components/AlertDialog.d.ts +40 -28
- package/dist/web/components/AlertDialog.d.ts.map +1 -1
- package/dist/web/components/AlertDialog.js +31 -36
- package/dist/web/components/AlertDialog.js.map +1 -1
- package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
- package/dist/web/components/Amount.css +1 -1
- package/dist/web/components/Amount.d.ts +5 -5
- package/dist/web/components/Amount.d.ts.map +1 -1
- package/dist/web/components/Amount.js.map +1 -1
- package/dist/web/components/Amount.js.zyzz.json +1 -1
- package/dist/web/components/AmountInput.css +1 -1
- package/dist/web/components/AmountInput.d.ts +20 -39
- package/dist/web/components/AmountInput.d.ts.map +1 -1
- package/dist/web/components/AmountInput.js +31 -37
- package/dist/web/components/AmountInput.js.map +1 -1
- package/dist/web/components/AmountInput.js.zyzz.json +1 -1
- package/dist/web/components/AppShell.css +1 -1
- package/dist/web/components/AppShell.d.ts +172 -28
- package/dist/web/components/AppShell.d.ts.map +1 -1
- package/dist/web/components/AppShell.js +89 -29
- package/dist/web/components/AppShell.js.map +1 -1
- package/dist/web/components/AppShell.js.zyzz.json +1 -1
- package/dist/web/components/AssetChip.css +1 -0
- package/dist/web/components/AssetChip.d.ts +38 -0
- package/dist/web/components/AssetChip.d.ts.map +1 -0
- package/dist/web/components/AssetChip.js +47 -0
- package/dist/web/components/AssetChip.js.map +1 -0
- package/dist/web/components/AssetChip.js.zyzz.json +1 -0
- package/dist/web/components/Autocomplete.d.ts +2 -2
- package/dist/web/components/Autocomplete.js +4 -4
- package/dist/web/components/Autocomplete.js.map +1 -1
- package/dist/web/components/Autocomplete.js.zyzz.json +1 -1
- package/dist/web/components/Avatar.css +1 -1
- package/dist/web/components/Avatar.d.ts +40 -115
- package/dist/web/components/Avatar.d.ts.map +1 -1
- package/dist/web/components/Avatar.js +19 -32
- package/dist/web/components/Avatar.js.map +1 -1
- package/dist/web/components/Avatar.js.zyzz.json +1 -1
- package/dist/web/components/Badge.css +1 -0
- package/dist/web/components/Badge.d.ts +134 -0
- package/dist/web/components/Badge.d.ts.map +1 -0
- package/dist/web/components/Badge.js +38 -0
- package/dist/web/components/Badge.js.map +1 -0
- package/dist/web/components/Badge.js.zyzz.json +1 -0
- package/dist/web/components/Banner.css +1 -1
- package/dist/web/components/Banner.d.ts +12 -12
- package/dist/web/components/Banner.d.ts.map +1 -1
- package/dist/web/components/Banner.js +5 -5
- package/dist/web/components/Banner.js.map +1 -1
- package/dist/web/components/Banner.js.zyzz.json +1 -1
- package/dist/web/components/BarChart.css +1 -0
- package/dist/web/components/BarChart.d.ts +155 -0
- package/dist/web/components/BarChart.d.ts.map +1 -0
- package/dist/web/components/BarChart.js +119 -0
- package/dist/web/components/BarChart.js.map +1 -0
- package/dist/web/components/BarChart.js.zyzz.json +1 -0
- package/dist/web/components/Breadcrumbs.css +1 -1
- package/dist/web/components/Breadcrumbs.d.ts +6 -6
- package/dist/web/components/Breadcrumbs.js.map +1 -1
- package/dist/web/components/Breadcrumbs.js.zyzz.json +1 -1
- package/dist/web/components/Button.css +1 -1
- package/dist/web/components/Button.d.ts +167 -32
- package/dist/web/components/Button.d.ts.map +1 -1
- package/dist/web/components/Button.js +14 -9
- package/dist/web/components/Button.js.map +1 -1
- package/dist/web/components/Button.js.zyzz.json +1 -1
- package/dist/web/components/ButtonGroup.css +1 -0
- package/dist/web/components/ButtonGroup.d.ts +56 -0
- package/dist/web/components/ButtonGroup.d.ts.map +1 -0
- package/dist/web/components/ButtonGroup.js +33 -0
- package/dist/web/components/ButtonGroup.js.map +1 -0
- package/dist/web/components/ButtonGroup.js.zyzz.json +1 -0
- package/dist/web/components/Calendar.css +1 -1
- package/dist/web/components/Calendar.d.ts.map +1 -1
- package/dist/web/components/Calendar.js +7 -7
- package/dist/web/components/Calendar.js.map +1 -1
- package/dist/web/components/Calendar.js.zyzz.json +1 -1
- package/dist/web/components/Checkbox.css +1 -1
- package/dist/web/components/Checkbox.d.ts +11 -11
- package/dist/web/components/Checkbox.d.ts.map +1 -1
- package/dist/web/components/Checkbox.js +4 -1
- package/dist/web/components/Checkbox.js.map +1 -1
- package/dist/web/components/Checkbox.js.zyzz.json +1 -1
- package/dist/web/components/CheckboxGroup.js.zyzz.json +1 -1
- package/dist/web/components/ChoiceGroup.css +1 -1
- package/dist/web/components/ChoiceGroup.d.ts +44 -16
- package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
- package/dist/web/components/ChoiceGroup.js +32 -8
- package/dist/web/components/ChoiceGroup.js.map +1 -1
- package/dist/web/components/ChoiceGroup.js.zyzz.json +1 -1
- package/dist/web/components/Choicebox.css +1 -1
- package/dist/web/components/Choicebox.d.ts +9 -9
- package/dist/web/components/Choicebox.d.ts.map +1 -1
- package/dist/web/components/Choicebox.js +6 -6
- package/dist/web/components/Choicebox.js.map +1 -1
- package/dist/web/components/Choicebox.js.zyzz.json +1 -1
- package/dist/web/components/Combobox.css +1 -1
- package/dist/web/components/Combobox.d.ts +2 -2
- package/dist/web/components/Combobox.d.ts.map +1 -1
- package/dist/web/components/Combobox.js +8 -8
- package/dist/web/components/Combobox.js.map +1 -1
- package/dist/web/components/Combobox.js.zyzz.json +1 -1
- package/dist/web/components/Container.js.zyzz.json +1 -1
- package/dist/web/components/CopyButton.js +1 -1
- package/dist/web/components/CopyButton.js.map +1 -1
- package/dist/web/components/CopyButton.js.zyzz.json +1 -1
- package/dist/web/components/DatePicker.css +1 -1
- package/dist/web/components/DatePicker.d.ts +37 -56
- package/dist/web/components/DatePicker.d.ts.map +1 -1
- package/dist/web/components/DatePicker.js +7 -7
- package/dist/web/components/DatePicker.js.map +1 -1
- package/dist/web/components/DatePicker.js.zyzz.json +1 -1
- package/dist/web/components/Dialog.css +1 -1
- package/dist/web/components/Dialog.d.ts +189 -20
- package/dist/web/components/Dialog.d.ts.map +1 -1
- package/dist/web/components/Dialog.js +93 -26
- package/dist/web/components/Dialog.js.map +1 -1
- package/dist/web/components/Dialog.js.zyzz.json +1 -1
- package/dist/web/components/Drawer.css +1 -1
- package/dist/web/components/Drawer.d.ts +7 -2
- package/dist/web/components/Drawer.d.ts.map +1 -1
- package/dist/web/components/Drawer.js +12 -6
- package/dist/web/components/Drawer.js.map +1 -1
- package/dist/web/components/Drawer.js.zyzz.json +1 -1
- package/dist/web/components/Empty.css +1 -1
- package/dist/web/components/Empty.d.ts +2 -0
- package/dist/web/components/Empty.d.ts.map +1 -1
- package/dist/web/components/Empty.js +5 -3
- package/dist/web/components/Empty.js.map +1 -1
- package/dist/web/components/Empty.js.zyzz.json +1 -1
- package/dist/web/components/Field.css +1 -1
- package/dist/web/components/Field.d.ts +16 -21
- package/dist/web/components/Field.d.ts.map +1 -1
- package/dist/web/components/Field.js +38 -36
- package/dist/web/components/Field.js.map +1 -1
- package/dist/web/components/Field.js.zyzz.json +1 -1
- package/dist/web/components/Fieldset.css +1 -1
- package/dist/web/components/Fieldset.d.ts +9 -18
- package/dist/web/components/Fieldset.d.ts.map +1 -1
- package/dist/web/components/Fieldset.js +11 -14
- package/dist/web/components/Fieldset.js.map +1 -1
- package/dist/web/components/Fieldset.js.zyzz.json +1 -1
- package/dist/web/components/Frame.css +1 -1
- package/dist/web/components/Frame.d.ts +13 -19
- package/dist/web/components/Frame.d.ts.map +1 -1
- package/dist/web/components/Frame.js +8 -8
- package/dist/web/components/Frame.js.map +1 -1
- package/dist/web/components/Frame.js.zyzz.json +1 -1
- package/dist/web/components/Gauge.css +1 -1
- package/dist/web/components/Gauge.d.ts +2 -2
- package/dist/web/components/Gauge.d.ts.map +1 -1
- package/dist/web/components/Gauge.js.map +1 -1
- package/dist/web/components/Gauge.js.zyzz.json +1 -1
- package/dist/web/components/Grid.js.zyzz.json +1 -1
- package/dist/web/components/Hex.css +1 -1
- package/dist/web/components/Hex.d.ts +11 -53
- package/dist/web/components/Hex.d.ts.map +1 -1
- package/dist/web/components/Hex.js +5 -7
- package/dist/web/components/Hex.js.map +1 -1
- package/dist/web/components/Hex.js.zyzz.json +1 -1
- package/dist/web/components/IconTile.css +1 -0
- package/dist/web/components/IconTile.d.ts +62 -0
- package/dist/web/components/IconTile.d.ts.map +1 -0
- package/dist/web/components/IconTile.js +28 -0
- package/dist/web/components/IconTile.js.map +1 -0
- package/dist/web/components/IconTile.js.zyzz.json +1 -0
- package/dist/web/components/Identicon.css +1 -1
- package/dist/web/components/Identicon.d.ts +1 -8
- package/dist/web/components/Identicon.d.ts.map +1 -1
- package/dist/web/components/Identicon.js +1 -4
- package/dist/web/components/Identicon.js.map +1 -1
- package/dist/web/components/Identicon.js.zyzz.json +1 -1
- package/dist/web/components/Inline.js.zyzz.json +1 -1
- package/dist/web/components/Inset.js.zyzz.json +1 -1
- package/dist/web/components/Kbd.css +1 -1
- package/dist/web/components/Kbd.d.ts +7 -7
- package/dist/web/components/Kbd.js.map +1 -1
- package/dist/web/components/Kbd.js.zyzz.json +1 -1
- package/dist/web/components/ListGroup.css +1 -0
- package/dist/web/components/ListGroup.d.ts +530 -0
- package/dist/web/components/ListGroup.d.ts.map +1 -0
- package/dist/web/components/ListGroup.js +270 -0
- package/dist/web/components/ListGroup.js.map +1 -0
- package/dist/web/components/ListGroup.js.zyzz.json +1 -0
- package/dist/web/components/LoadingDots.css +1 -1
- package/dist/web/components/LoadingDots.d.ts.map +1 -1
- package/dist/web/components/LoadingDots.js +2 -2
- package/dist/web/components/LoadingDots.js.map +1 -1
- package/dist/web/components/LoadingDots.js.zyzz.json +1 -1
- package/dist/web/components/Menu.css +1 -1
- package/dist/web/components/Menu.d.ts +39 -20
- package/dist/web/components/Menu.d.ts.map +1 -1
- package/dist/web/components/Menu.js +12 -7
- package/dist/web/components/Menu.js.map +1 -1
- package/dist/web/components/Menu.js.zyzz.json +1 -1
- package/dist/web/components/NetworkLogo.css +1 -0
- package/dist/web/components/NetworkLogo.d.ts +58 -0
- package/dist/web/components/NetworkLogo.d.ts.map +1 -0
- package/dist/web/components/NetworkLogo.js +40 -0
- package/dist/web/components/NetworkLogo.js.map +1 -0
- package/dist/web/components/NetworkLogo.js.zyzz.json +1 -0
- package/dist/web/components/NumberField.css +1 -1
- package/dist/web/components/NumberField.d.ts +3 -3
- package/dist/web/components/NumberField.d.ts.map +1 -1
- package/dist/web/components/NumberField.js +5 -5
- package/dist/web/components/NumberField.js.map +1 -1
- package/dist/web/components/NumberField.js.zyzz.json +1 -1
- package/dist/web/components/OtpField.css +1 -1
- package/dist/web/components/OtpField.d.ts +8 -68
- package/dist/web/components/OtpField.d.ts.map +1 -1
- package/dist/web/components/OtpField.js +12 -9
- package/dist/web/components/OtpField.js.map +1 -1
- package/dist/web/components/OtpField.js.zyzz.json +1 -1
- package/dist/web/components/Pagination.css +1 -1
- package/dist/web/components/Pagination.d.ts +16 -14
- package/dist/web/components/Pagination.d.ts.map +1 -1
- package/dist/web/components/Pagination.js +3 -3
- package/dist/web/components/Pagination.js.map +1 -1
- package/dist/web/components/Pagination.js.zyzz.json +1 -1
- package/dist/web/components/Popover.css +1 -1
- package/dist/web/components/Popover.js.map +1 -1
- package/dist/web/components/Popover.js.zyzz.json +1 -1
- package/dist/web/components/Progress.css +1 -1
- package/dist/web/components/Progress.d.ts +2 -2
- package/dist/web/components/Progress.d.ts.map +1 -1
- package/dist/web/components/Progress.js +5 -5
- package/dist/web/components/Progress.js.map +1 -1
- package/dist/web/components/Progress.js.zyzz.json +1 -1
- package/dist/web/components/Qr.css +1 -1
- package/dist/web/components/Qr.d.ts +1 -1
- package/dist/web/components/Qr.js.map +1 -1
- package/dist/web/components/Qr.js.zyzz.json +1 -1
- package/dist/web/components/RadioGroup.css +1 -1
- package/dist/web/components/RadioGroup.d.ts.map +1 -1
- package/dist/web/components/RadioGroup.js +2 -2
- package/dist/web/components/RadioGroup.js.map +1 -1
- package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
- package/dist/web/components/SecretValue.css +1 -1
- package/dist/web/components/SecretValue.d.ts +7 -7
- package/dist/web/components/SecretValue.js +1 -1
- package/dist/web/components/SecretValue.js.map +1 -1
- package/dist/web/components/SecretValue.js.zyzz.json +1 -1
- package/dist/web/components/Select.css +1 -1
- package/dist/web/components/Select.d.ts +64 -2
- package/dist/web/components/Select.d.ts.map +1 -1
- package/dist/web/components/Select.js +26 -9
- package/dist/web/components/Select.js.map +1 -1
- package/dist/web/components/Select.js.zyzz.json +1 -1
- package/dist/web/components/Separator.css +1 -1
- package/dist/web/components/Separator.d.ts +17 -3
- package/dist/web/components/Separator.d.ts.map +1 -1
- package/dist/web/components/Separator.js +40 -5
- package/dist/web/components/Separator.js.map +1 -1
- package/dist/web/components/Separator.js.zyzz.json +1 -1
- package/dist/web/components/SidebarMenu.css +1 -1
- package/dist/web/components/SidebarMenu.d.ts +238 -39
- package/dist/web/components/SidebarMenu.d.ts.map +1 -1
- package/dist/web/components/SidebarMenu.js +123 -20
- package/dist/web/components/SidebarMenu.js.map +1 -1
- package/dist/web/components/SidebarMenu.js.zyzz.json +1 -1
- package/dist/web/components/Skeleton.css +1 -1
- package/dist/web/components/Skeleton.d.ts +5 -3
- package/dist/web/components/Skeleton.d.ts.map +1 -1
- package/dist/web/components/Skeleton.js +1 -1
- package/dist/web/components/Skeleton.js.map +1 -1
- package/dist/web/components/Skeleton.js.zyzz.json +1 -1
- package/dist/web/components/Slider.css +1 -1
- package/dist/web/components/Slider.d.ts.map +1 -1
- package/dist/web/components/Slider.js +5 -5
- package/dist/web/components/Slider.js.map +1 -1
- package/dist/web/components/Slider.js.zyzz.json +1 -1
- package/dist/web/components/Snippet.css +1 -1
- package/dist/web/components/Snippet.d.ts +27 -65
- package/dist/web/components/Snippet.d.ts.map +1 -1
- package/dist/web/components/Snippet.js +47 -10
- package/dist/web/components/Snippet.js.map +1 -1
- package/dist/web/components/Snippet.js.zyzz.json +1 -1
- package/dist/web/components/Spinner.css +1 -1
- package/dist/web/components/Spinner.d.ts +25 -16
- package/dist/web/components/Spinner.d.ts.map +1 -1
- package/dist/web/components/Spinner.js +11 -6
- package/dist/web/components/Spinner.js.map +1 -1
- package/dist/web/components/Spinner.js.zyzz.json +1 -1
- package/dist/web/components/SplitBar.css +1 -0
- package/dist/web/components/SplitBar.d.ts +99 -0
- package/dist/web/components/SplitBar.d.ts.map +1 -0
- package/dist/web/components/SplitBar.js +49 -0
- package/dist/web/components/SplitBar.js.map +1 -0
- package/dist/web/components/SplitBar.js.zyzz.json +1 -0
- package/dist/web/components/SplitButton.css +1 -1
- package/dist/web/components/SplitButton.d.ts +4 -1
- package/dist/web/components/SplitButton.d.ts.map +1 -1
- package/dist/web/components/SplitButton.js +2 -2
- package/dist/web/components/SplitButton.js.map +1 -1
- package/dist/web/components/SplitButton.js.zyzz.json +1 -1
- package/dist/web/components/Stack.js.zyzz.json +1 -1
- package/dist/web/components/StatusChip.css +1 -0
- package/dist/web/components/StatusChip.d.ts +162 -0
- package/dist/web/components/StatusChip.d.ts.map +1 -0
- package/dist/web/components/StatusChip.js +37 -0
- package/dist/web/components/StatusChip.js.map +1 -0
- package/dist/web/components/StatusChip.js.zyzz.json +1 -0
- package/dist/web/components/StatusRow.css +1 -0
- package/dist/web/components/StatusRow.d.ts +121 -0
- package/dist/web/components/StatusRow.d.ts.map +1 -0
- package/dist/web/components/StatusRow.js +75 -0
- package/dist/web/components/StatusRow.js.map +1 -0
- package/dist/web/components/StatusRow.js.zyzz.json +1 -0
- package/dist/web/components/Stepper.css +1 -1
- package/dist/web/components/Stepper.d.ts +10 -7
- package/dist/web/components/Stepper.d.ts.map +1 -1
- package/dist/web/components/Stepper.js +5 -4
- package/dist/web/components/Stepper.js.map +1 -1
- package/dist/web/components/Stepper.js.zyzz.json +1 -1
- package/dist/web/components/Surface.css +1 -1
- package/dist/web/components/Surface.d.ts +123 -101
- package/dist/web/components/Surface.d.ts.map +1 -1
- package/dist/web/components/Surface.js +20 -10
- package/dist/web/components/Surface.js.map +1 -1
- package/dist/web/components/Surface.js.zyzz.json +1 -1
- package/dist/web/components/Switch.css +1 -1
- package/dist/web/components/Switch.d.ts +14 -18
- package/dist/web/components/Switch.d.ts.map +1 -1
- package/dist/web/components/Switch.js +13 -15
- package/dist/web/components/Switch.js.map +1 -1
- package/dist/web/components/Switch.js.zyzz.json +1 -1
- package/dist/web/components/Table.css +1 -1
- package/dist/web/components/Table.d.ts +152 -67
- package/dist/web/components/Table.d.ts.map +1 -1
- package/dist/web/components/Table.js +92 -24
- package/dist/web/components/Table.js.map +1 -1
- package/dist/web/components/Table.js.zyzz.json +1 -1
- package/dist/web/components/Tabs.css +1 -1
- package/dist/web/components/Tabs.d.ts +49 -42
- package/dist/web/components/Tabs.d.ts.map +1 -1
- package/dist/web/components/Tabs.js +45 -14
- package/dist/web/components/Tabs.js.map +1 -1
- package/dist/web/components/Tabs.js.zyzz.json +1 -1
- package/dist/web/components/TempoLogo.css +1 -0
- package/dist/web/components/TempoLogo.d.ts +47 -0
- package/dist/web/components/TempoLogo.d.ts.map +1 -0
- package/dist/web/components/TempoLogo.js +48 -0
- package/dist/web/components/TempoLogo.js.map +1 -0
- package/dist/web/components/TempoLogo.js.zyzz.json +1 -0
- package/dist/web/components/TextInput.css +1 -0
- package/dist/web/components/{Input.d.ts → TextInput.d.ts} +27 -18
- package/dist/web/components/TextInput.d.ts.map +1 -0
- package/dist/web/components/TextInput.js +138 -0
- package/dist/web/components/TextInput.js.map +1 -0
- package/dist/web/components/TextInput.js.zyzz.json +1 -0
- package/dist/web/components/Textarea.css +1 -1
- package/dist/web/components/Textarea.d.ts +29 -74
- package/dist/web/components/Textarea.d.ts.map +1 -1
- package/dist/web/components/Textarea.js +5 -12
- package/dist/web/components/Textarea.js.map +1 -1
- package/dist/web/components/Textarea.js.zyzz.json +1 -1
- package/dist/web/components/Toast.css +1 -1
- package/dist/web/components/Toast.d.ts +4 -4
- package/dist/web/components/Toast.d.ts.map +1 -1
- package/dist/web/components/Toast.js +9 -9
- package/dist/web/components/Toast.js.map +1 -1
- package/dist/web/components/Toast.js.zyzz.json +1 -1
- package/dist/web/components/Token.css +1 -1
- package/dist/web/components/Token.d.ts +32 -90
- package/dist/web/components/Token.d.ts.map +1 -1
- package/dist/web/components/Token.js +27 -89
- package/dist/web/components/Token.js.map +1 -1
- package/dist/web/components/Token.js.zyzz.json +1 -1
- package/dist/web/components/TokenLogo.css +1 -0
- package/dist/web/components/TokenLogo.d.ts +117 -0
- package/dist/web/components/TokenLogo.d.ts.map +1 -0
- package/dist/web/components/TokenLogo.js +112 -0
- package/dist/web/components/TokenLogo.js.map +1 -0
- package/dist/web/components/TokenLogo.js.zyzz.json +1 -0
- package/dist/web/components/Tooltip.css +1 -1
- package/dist/web/components/Tooltip.js.map +1 -1
- package/dist/web/components/Tooltip.js.zyzz.json +1 -1
- package/dist/web/components/VerificationCode.css +1 -0
- package/dist/web/components/VerificationCode.d.ts +47 -0
- package/dist/web/components/VerificationCode.d.ts.map +1 -0
- package/dist/web/components/VerificationCode.js +55 -0
- package/dist/web/components/VerificationCode.js.map +1 -0
- package/dist/web/components/VerificationCode.js.zyzz.json +1 -0
- package/dist/web/components/Visual.css +1 -0
- package/dist/web/components/Visual.d.ts +65 -0
- package/dist/web/components/Visual.d.ts.map +1 -0
- package/dist/web/components/Visual.js +51 -0
- package/dist/web/components/Visual.js.map +1 -0
- package/dist/web/components/Visual.js.zyzz.json +1 -0
- package/dist/web/components/internal/Field.css +1 -1
- package/dist/web/components/internal/Field.d.ts +41 -87
- package/dist/web/components/internal/Field.d.ts.map +1 -1
- package/dist/web/components/internal/Field.js +8 -7
- package/dist/web/components/internal/Field.js.map +1 -1
- package/dist/web/components/internal/Field.js.zyzz.json +1 -1
- package/dist/web/components/internal/InputGroup.css +1 -1
- package/dist/web/components/internal/InputGroup.d.ts +38 -99
- package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
- package/dist/web/components/internal/InputGroup.js +6 -6
- package/dist/web/components/internal/InputGroup.js.map +1 -1
- package/dist/web/components/internal/InputGroup.js.zyzz.json +1 -1
- package/dist/web/components/internal/Listbox.css +1 -1
- package/dist/web/components/internal/Listbox.d.ts +8 -8
- package/dist/web/components/internal/Listbox.js.map +1 -1
- package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
- package/dist/web/components/internal/RowDisabled.d.ts +3 -0
- package/dist/web/components/internal/RowDisabled.d.ts.map +1 -0
- package/dist/web/components/internal/RowDisabled.js +9 -0
- package/dist/web/components/internal/RowDisabled.js.map +1 -0
- package/dist/web/components/internal/RowsSize.d.ts +2 -3
- package/dist/web/components/internal/RowsSize.d.ts.map +1 -1
- package/dist/web/components/internal/RowsSize.js +3 -3
- package/dist/web/components/internal/RowsSize.js.map +1 -1
- package/dist/web/components/internal/TabBar.d.ts +33 -0
- package/dist/web/components/internal/TabBar.d.ts.map +1 -0
- package/dist/web/components/internal/TabBar.js +30 -0
- package/dist/web/components/internal/TabBar.js.map +1 -0
- package/dist/web/components/internal/Text.d.ts +9 -0
- package/dist/web/components/internal/Text.d.ts.map +1 -0
- package/dist/web/components/internal/Text.js +35 -0
- package/dist/web/components/internal/Text.js.map +1 -0
- package/dist/web/index.d.ts +18 -6
- package/dist/web/index.d.ts.map +1 -1
- package/dist/web/index.js +18 -6
- package/dist/web/index.js.map +1 -1
- package/dist/web/index.js.zyzz.json +1 -1
- package/dist/web/vars.d.ts +612 -704
- package/dist/web/vars.d.ts.map +1 -1
- package/dist/web/vars.js +7 -6
- package/dist/web/vars.js.map +1 -1
- package/dist/web/vars.js.zyzz.json +1 -1
- package/dist/web/zyzz.config.d.ts +3041 -3506
- package/dist/web/zyzz.config.d.ts.map +1 -1
- package/dist/web/zyzz.config.js +29 -3
- package/dist/web/zyzz.config.js.map +1 -1
- package/dist/web/zyzz.config.js.zyzz.json +1 -1
- package/package.json +149 -5
- package/src/fonts/JetBrainsMono-Bold-latin.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Bold-other.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Bold.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Medium-latin.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Medium-other.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Medium.woff2 +0 -0
- package/src/fonts/{Geist-OFL.txt → JetBrainsMono-OFL.txt} +4 -3
- package/src/fonts/JetBrainsMono-Regular-latin.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Regular-other.woff2 +0 -0
- package/src/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/src/fonts/JetBrainsMono-SemiBold-latin.woff2 +0 -0
- package/src/fonts/JetBrainsMono-SemiBold-other.woff2 +0 -0
- package/src/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
- package/src/fonts/Pilat-Black-latin.woff2 +0 -0
- package/src/fonts/Pilat-Black-other.woff2 +0 -0
- package/src/fonts/Pilat-Black.woff2 +0 -0
- package/src/fonts/Pilat-Bold-latin.woff2 +0 -0
- package/src/fonts/Pilat-Bold-other.woff2 +0 -0
- package/src/fonts/Pilat-Bold.woff2 +0 -0
- package/src/fonts/Pilat-Book-latin.woff2 +0 -0
- package/src/fonts/Pilat-Book-other.woff2 +0 -0
- package/src/fonts/Pilat-Book.woff2 +0 -0
- package/src/fonts/Pilat-Demi-latin.woff2 +0 -0
- package/src/fonts/Pilat-Demi-other.woff2 +0 -0
- package/src/fonts/Pilat-Demi.woff2 +0 -0
- package/src/fonts/Pilat-Heavy-latin.woff2 +0 -0
- package/src/fonts/Pilat-Heavy-other.woff2 +0 -0
- package/src/fonts/Pilat-Heavy.woff2 +0 -0
- package/src/fonts/Pilat-Light-latin.woff2 +0 -0
- package/src/fonts/Pilat-Light-other.woff2 +0 -0
- package/src/fonts/Pilat-Light.woff2 +0 -0
- package/src/fonts/Pilat-Regular-latin.woff2 +0 -0
- package/src/fonts/Pilat-Regular-other.woff2 +0 -0
- package/src/fonts/Pilat-Regular.woff2 +0 -0
- package/src/fonts/Pilat-Thin-latin.woff2 +0 -0
- package/src/fonts/Pilat-Thin-other.woff2 +0 -0
- package/src/fonts/Pilat-Thin.woff2 +0 -0
- package/src/fonts/README.md +15 -2
- package/src/oxlint/rules/PreferComponent.ts +6 -6
- package/src/web/README.md +7 -7
- package/src/web/components/Accordion.tsx +8 -8
- package/src/web/components/AgentLogo.tsx +330 -0
- package/src/web/components/Alert.tsx +321 -0
- package/src/web/components/AlertDialog.tsx +47 -111
- package/src/web/components/Amount.tsx +6 -6
- package/src/web/components/AmountInput.tsx +59 -134
- package/src/web/components/AppShell.tsx +367 -43
- package/src/web/components/AssetChip.tsx +110 -0
- package/src/web/components/Autocomplete.tsx +4 -4
- package/src/web/components/Avatar.tsx +42 -119
- package/src/web/components/Badge.tsx +122 -0
- package/src/web/components/Banner.tsx +13 -11
- package/src/web/components/BarChart.tsx +427 -0
- package/src/web/components/Breadcrumbs.tsx +7 -7
- package/src/web/components/Button.tsx +159 -41
- package/src/web/components/ButtonGroup.tsx +59 -0
- package/src/web/components/Calendar.tsx +15 -13
- package/src/web/components/Checkbox.tsx +14 -11
- package/src/web/components/ChoiceGroup.tsx +107 -26
- package/src/web/components/Choicebox.tsx +30 -28
- package/src/web/components/Combobox.tsx +10 -8
- package/src/web/components/CopyButton.tsx +1 -1
- package/src/web/components/DatePicker.tsx +42 -61
- package/src/web/components/Dialog.tsx +273 -71
- package/src/web/components/Drawer.tsx +45 -18
- package/src/web/components/Empty.tsx +13 -8
- package/src/web/components/Field.tsx +78 -132
- package/src/web/components/Fieldset.tsx +16 -37
- package/src/web/components/Frame.tsx +13 -20
- package/src/web/components/Gauge.tsx +4 -4
- package/src/web/components/Hex.tsx +13 -56
- package/src/web/components/IconTile.tsx +57 -0
- package/src/web/components/Identicon.tsx +1 -10
- package/src/web/components/Kbd.tsx +8 -8
- package/src/web/components/ListGroup.tsx +857 -0
- package/src/web/components/LoadingDots.tsx +1 -0
- package/src/web/components/Menu.tsx +50 -35
- package/src/web/components/NetworkLogo.tsx +208 -0
- package/src/web/components/NumberField.tsx +18 -33
- package/src/web/components/OtpField.tsx +51 -102
- package/src/web/components/Pagination.tsx +16 -14
- package/src/web/components/Popover.tsx +8 -8
- package/src/web/components/Progress.tsx +7 -5
- package/src/web/components/Qr.tsx +1 -1
- package/src/web/components/RadioGroup.tsx +9 -7
- package/src/web/components/SecretValue.tsx +11 -11
- package/src/web/components/Select.tsx +89 -26
- package/src/web/components/Separator.tsx +95 -7
- package/src/web/components/SidebarMenu.tsx +390 -53
- package/src/web/components/Skeleton.tsx +5 -5
- package/src/web/components/Slider.tsx +12 -6
- package/src/web/components/Snippet.tsx +134 -75
- package/src/web/components/Spinner.tsx +38 -12
- package/src/web/components/SplitBar.tsx +158 -0
- package/src/web/components/SplitButton.tsx +26 -17
- package/src/web/components/StatusChip.tsx +138 -0
- package/src/web/components/StatusRow.tsx +162 -0
- package/src/web/components/Stepper.tsx +11 -8
- package/src/web/components/Surface.tsx +172 -93
- package/src/web/components/Switch.tsx +25 -29
- package/src/web/components/Table.tsx +281 -70
- package/src/web/components/Tabs.tsx +93 -50
- package/src/web/components/TempoLogo.tsx +89 -0
- package/src/web/components/{Input.tsx → TextInput.tsx} +87 -118
- package/src/web/components/Textarea.tsx +33 -78
- package/src/web/components/Toast.tsx +24 -22
- package/src/web/components/Token.tsx +106 -172
- package/src/web/components/TokenLogo.tsx +217 -0
- package/src/web/components/Tooltip.tsx +3 -3
- package/src/web/components/VerificationCode.tsx +97 -0
- package/src/web/components/Visual.tsx +166 -0
- package/src/web/components/internal/Field.ts +63 -72
- package/src/web/components/internal/InputGroup.ts +44 -101
- package/src/web/components/internal/Listbox.ts +20 -20
- package/src/web/components/internal/RowDisabled.ts +9 -0
- package/src/web/components/internal/RowsSize.ts +3 -5
- package/src/web/components/internal/TabBar.ts +52 -0
- package/src/web/components/internal/Text.ts +39 -0
- package/src/web/components/visuals/Passkey.svg +21 -0
- package/src/web/index.ts +18 -6
- package/src/web/logos/Base.svg +10 -0
- package/src/web/logos/Ethereum.svg +16 -0
- package/src/web/logos/HyperEVM.svg +27 -0
- package/src/web/logos/Polygon.svg +15 -0
- package/src/web/logos/README.md +14 -0
- package/src/web/logos/Solana.svg +11 -0
- package/src/web/logos/Tempo.svg +11 -0
- package/src/web/vars.ts +493 -534
- package/src/web/zyzz.config.ts +255 -12
- package/dist/fonts/GeistMono-Variable.woff2 +0 -0
- package/dist/web/components/AlertDialog.css +0 -1
- package/dist/web/components/Callout.css +0 -1
- package/dist/web/components/Callout.d.ts +0 -161
- package/dist/web/components/Callout.d.ts.map +0 -1
- package/dist/web/components/Callout.js +0 -83
- package/dist/web/components/Callout.js.map +0 -1
- package/dist/web/components/Callout.js.zyzz.json +0 -1
- package/dist/web/components/IconChip.css +0 -1
- package/dist/web/components/IconChip.d.ts +0 -53
- package/dist/web/components/IconChip.d.ts.map +0 -1
- package/dist/web/components/IconChip.js +0 -27
- package/dist/web/components/IconChip.js.map +0 -1
- package/dist/web/components/IconChip.js.zyzz.json +0 -1
- package/dist/web/components/Input.css +0 -1
- package/dist/web/components/Input.d.ts.map +0 -1
- package/dist/web/components/Input.js +0 -118
- package/dist/web/components/Input.js.map +0 -1
- package/dist/web/components/Input.js.zyzz.json +0 -1
- package/dist/web/components/Rows.css +0 -1
- package/dist/web/components/Rows.d.ts +0 -484
- package/dist/web/components/Rows.d.ts.map +0 -1
- package/dist/web/components/Rows.js +0 -171
- package/dist/web/components/Rows.js.map +0 -1
- package/dist/web/components/Rows.js.zyzz.json +0 -1
- package/dist/web/components/Tag.css +0 -1
- package/dist/web/components/Tag.d.ts +0 -171
- package/dist/web/components/Tag.d.ts.map +0 -1
- package/dist/web/components/Tag.js +0 -52
- package/dist/web/components/Tag.js.map +0 -1
- package/dist/web/components/Tag.js.zyzz.json +0 -1
- package/dist/web/components/internal/FieldVariant.d.ts +0 -4
- package/dist/web/components/internal/FieldVariant.d.ts.map +0 -1
- package/dist/web/components/internal/FieldVariant.js +0 -4
- package/dist/web/components/internal/FieldVariant.js.map +0 -1
- package/src/fonts/GeistMono-Variable.woff2 +0 -0
- package/src/web/components/Callout.tsx +0 -241
- package/src/web/components/IconChip.tsx +0 -54
- package/src/web/components/Rows.tsx +0 -588
- package/src/web/components/Tag.tsx +0 -149
- package/src/web/components/internal/FieldVariant.ts +0 -6
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as BaseUi from '@base-ui/react/drawer'
|
|
2
|
+
import { useRender } from '@base-ui/react/use-render'
|
|
2
3
|
import {
|
|
3
4
|
type ComponentPropsWithRef,
|
|
4
5
|
createContext,
|
|
@@ -8,9 +9,12 @@ import {
|
|
|
8
9
|
} from 'react'
|
|
9
10
|
import type * as zyzz from 'zyzz'
|
|
10
11
|
import { keyframes } from 'zyzz/web'
|
|
11
|
-
import { style, variants } from '../zyzz.config.js'
|
|
12
|
+
import { style, variants, vars } from '../zyzz.config.js'
|
|
13
|
+
import * as TabBar from './internal/TabBar.js'
|
|
14
|
+
import * as Text from './internal/Text.js'
|
|
12
15
|
|
|
13
16
|
type Context = {
|
|
17
|
+
collapse: boolean
|
|
14
18
|
container: HTMLDivElement | null
|
|
15
19
|
handle: BaseUi.Drawer.Handle<unknown>
|
|
16
20
|
open: boolean
|
|
@@ -19,10 +23,11 @@ type Context = {
|
|
|
19
23
|
|
|
20
24
|
const context = createContext<Context | undefined>(undefined)
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
// The sidebar opens as a drawer below 1024px, or below 768px when it collapses to its icons from
|
|
27
|
+
// 768px to 1023px. The breakpoints are literals because media queries cannot read CSS variables.
|
|
28
|
+
function useCompact(collapse: boolean) {
|
|
29
|
+
const compactQuery = collapse ? '(max-width: 767px)' : '(max-width: 1023px)'
|
|
23
30
|
|
|
24
|
-
// The viewport breakpoint is a literal because media queries cannot read CSS variables.
|
|
25
|
-
function useCompact() {
|
|
26
31
|
return useSyncExternalStore(
|
|
27
32
|
(notify) => {
|
|
28
33
|
const query = window.matchMedia(compactQuery)
|
|
@@ -42,7 +47,8 @@ function useShell() {
|
|
|
42
47
|
|
|
43
48
|
/**
|
|
44
49
|
* Application frame with a sticky sidebar beside a content column. `align="center"` centers both
|
|
45
|
-
* on wide viewports,
|
|
50
|
+
* on wide viewports, with the sidebar fill to the start edge and the header bar to the end edge.
|
|
51
|
+
* `align="start"` pins the sidebar left with content filling the rest.
|
|
46
52
|
* Below 1024px the sidebar moves into a drawer that `AppShell.Trigger` opens from the right edge.
|
|
47
53
|
*
|
|
48
54
|
* - Name the `Sidebar` with `aria-label`. It labels the `aside` on wide viewports and the drawer
|
|
@@ -69,11 +75,23 @@ function useShell() {
|
|
|
69
75
|
* @see {@link https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html | WCAG 2.2 Focus Order}
|
|
70
76
|
*/
|
|
71
77
|
export namespace AppShell {
|
|
72
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Renders the 56px page header bar at the top of `Main`, in the fill of the sidebar with a bottom
|
|
80
|
+
* border, holding the title, actions and the compact-viewport `Trigger`. It spans the full width
|
|
81
|
+
* of `Main`. With `align="center"` on wide viewports, its fill and border continue to the end
|
|
82
|
+
* edge. A `Main` that scrolls itself clips them at its own edge, so scroll the root instead when
|
|
83
|
+
* the shell fills a fixed-height region.
|
|
84
|
+
*/
|
|
73
85
|
export function Header(props: Header.Props) {
|
|
74
86
|
const { className, vars, ...attributes } = props
|
|
75
87
|
|
|
76
|
-
return
|
|
88
|
+
return (
|
|
89
|
+
<header
|
|
90
|
+
{...attributes}
|
|
91
|
+
{...styles.header({ className, style: props.style, vars })}
|
|
92
|
+
data-app-shell-header=""
|
|
93
|
+
/>
|
|
94
|
+
)
|
|
77
95
|
}
|
|
78
96
|
|
|
79
97
|
export namespace Header {
|
|
@@ -99,7 +117,9 @@ export namespace AppShell {
|
|
|
99
117
|
export function Root(props: Root.Props) {
|
|
100
118
|
const {
|
|
101
119
|
align,
|
|
120
|
+
children,
|
|
102
121
|
className,
|
|
122
|
+
collapse = false,
|
|
103
123
|
defaultOpen = false,
|
|
104
124
|
onOpenChange,
|
|
105
125
|
open,
|
|
@@ -108,6 +128,7 @@ export namespace AppShell {
|
|
|
108
128
|
...attributes
|
|
109
129
|
} = props
|
|
110
130
|
const [handle] = useState(() => BaseUi.Drawer.createHandle<unknown>())
|
|
131
|
+
const [tabBar] = useState(TabBar.create)
|
|
111
132
|
const [uncontrolled, setUncontrolled] = useState(defaultOpen)
|
|
112
133
|
const [container, setContainer] = useState<HTMLDivElement | null>(null)
|
|
113
134
|
const current = open ?? uncontrolled
|
|
@@ -115,6 +136,7 @@ export namespace AppShell {
|
|
|
115
136
|
return (
|
|
116
137
|
<context.Provider
|
|
117
138
|
value={{
|
|
139
|
+
collapse,
|
|
118
140
|
container,
|
|
119
141
|
handle,
|
|
120
142
|
open: current,
|
|
@@ -127,13 +149,19 @@ export namespace AppShell {
|
|
|
127
149
|
<div
|
|
128
150
|
{...attributes}
|
|
129
151
|
{...styles.root({ align, className, style: props.style, vars })}
|
|
152
|
+
data-app-shell-collapse={collapse ? '' : undefined}
|
|
130
153
|
data-state={current ? 'open' : 'closed'}
|
|
131
154
|
ref={(node) => {
|
|
132
155
|
setContainer(node)
|
|
133
156
|
if (typeof ref === 'function') ref(node)
|
|
134
157
|
else if (ref) ref.current = node
|
|
135
158
|
}}
|
|
136
|
-
|
|
159
|
+
>
|
|
160
|
+
<TabBar.Context.Provider value={tabBar}>
|
|
161
|
+
{children}
|
|
162
|
+
<BottomBar />
|
|
163
|
+
</TabBar.Context.Provider>
|
|
164
|
+
</div>
|
|
137
165
|
</context.Provider>
|
|
138
166
|
)
|
|
139
167
|
}
|
|
@@ -141,6 +169,14 @@ export namespace AppShell {
|
|
|
141
169
|
export namespace Root {
|
|
142
170
|
export type Props = ComponentPropsWithRef<'div'> &
|
|
143
171
|
zyzz.Props.Variants<typeof styles.root> & {
|
|
172
|
+
/**
|
|
173
|
+
* Collapses the inline sidebar to a 64px column of icons from 768px to 1023px, and opens
|
|
174
|
+
* the drawer only below 768px. Give every `SidebarMenu.Item` an icon as its first child.
|
|
175
|
+
* Absent, the sidebar opens as a drawer below 1024px.
|
|
176
|
+
* @default false
|
|
177
|
+
*/
|
|
178
|
+
collapse?: boolean | undefined
|
|
179
|
+
|
|
144
180
|
/**
|
|
145
181
|
* Initial drawer state when `open` is uncontrolled.
|
|
146
182
|
* @default false
|
|
@@ -156,7 +192,7 @@ export namespace AppShell {
|
|
|
156
192
|
}
|
|
157
193
|
|
|
158
194
|
/**
|
|
159
|
-
* Renders a sticky `aside` from 1024px, `var(--sidebar-width,
|
|
195
|
+
* Renders a sticky `aside` from 1024px, `var(--sidebar-width, 16rem)` wide. Below that it
|
|
160
196
|
* renders a modal Base UI drawer popup as an `aside` with the dialog role, which takes focus on
|
|
161
197
|
* open, returns it to the trigger on close, and dismisses with Escape, the backdrop or a swipe
|
|
162
198
|
* right. Server rendering always emits the wide layout.
|
|
@@ -164,10 +200,18 @@ export namespace AppShell {
|
|
|
164
200
|
export function Sidebar(props: Sidebar.Props) {
|
|
165
201
|
const { className, vars, ...attributes } = props
|
|
166
202
|
const shell = useShell()
|
|
167
|
-
const compact = useCompact()
|
|
203
|
+
const compact = useCompact(shell.collapse)
|
|
168
204
|
const sidebar = styles.sidebar({ className, style: props.style, vars })
|
|
169
205
|
|
|
170
|
-
if (!compact)
|
|
206
|
+
if (!compact)
|
|
207
|
+
return (
|
|
208
|
+
<aside
|
|
209
|
+
{...attributes}
|
|
210
|
+
{...styles.inline(sidebar)}
|
|
211
|
+
data-app-shell-rail={shell.collapse ? '' : undefined}
|
|
212
|
+
data-app-shell-sidebar="inline"
|
|
213
|
+
/>
|
|
214
|
+
)
|
|
171
215
|
|
|
172
216
|
return (
|
|
173
217
|
<BaseUi.Drawer.Root
|
|
@@ -176,7 +220,8 @@ export namespace AppShell {
|
|
|
176
220
|
open={shell.open}
|
|
177
221
|
swipeDirection="right"
|
|
178
222
|
>
|
|
179
|
-
|
|
223
|
+
{/* The closed drawer stays mounted, so its items register in the bottom bar. */}
|
|
224
|
+
<BaseUi.Drawer.Portal container={shell.container} keepMounted>
|
|
180
225
|
<BaseUi.Drawer.Backdrop {...styles.backdrop()} />
|
|
181
226
|
<BaseUi.Drawer.Viewport {...styles.viewport()}>
|
|
182
227
|
<BaseUi.Drawer.Popup
|
|
@@ -206,6 +251,7 @@ export namespace AppShell {
|
|
|
206
251
|
zyzz.Props.Variants<typeof styles.sidebarBody>
|
|
207
252
|
}
|
|
208
253
|
|
|
254
|
+
/** The bottom of the sidebar, such as the account menu. It stays at the bottom edge. */
|
|
209
255
|
export function SidebarFooter(props: SidebarFooter.Props) {
|
|
210
256
|
const { className, vars, ...attributes } = props
|
|
211
257
|
|
|
@@ -219,6 +265,7 @@ export namespace AppShell {
|
|
|
219
265
|
zyzz.Props.Variants<typeof styles.sidebarFooter>
|
|
220
266
|
}
|
|
221
267
|
|
|
268
|
+
/** The top of the sidebar, such as the product or project switcher. */
|
|
222
269
|
export function SidebarHeader(props: SidebarHeader.Props) {
|
|
223
270
|
const { className, vars, ...attributes } = props
|
|
224
271
|
|
|
@@ -277,6 +324,54 @@ export namespace AppShell {
|
|
|
277
324
|
}
|
|
278
325
|
}
|
|
279
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Repeats the `SidebarMenu.Item`s that set `tabBar` in a bar fixed to the bottom edge below 768px:
|
|
329
|
+
* `tab` items as icons in a pill `<nav>`, then each `action` item as a floating action button.
|
|
330
|
+
* Renders nothing while no item sets `tabBar`.
|
|
331
|
+
*/
|
|
332
|
+
function BottomBar() {
|
|
333
|
+
const store = use(TabBar.Context)!
|
|
334
|
+
const entries = useSyncExternalStore(store.subscribe, store.snapshot, store.snapshot)
|
|
335
|
+
const tabs = entries.filter(([, entry]) => entry.variant === 'tab')
|
|
336
|
+
const actions = entries.filter(([, entry]) => entry.variant === 'action')
|
|
337
|
+
|
|
338
|
+
if (entries.length === 0) return null
|
|
339
|
+
|
|
340
|
+
return (
|
|
341
|
+
<div {...styles.bottomBar()} data-app-shell-bottom-bar="">
|
|
342
|
+
{tabs.length > 0 && (
|
|
343
|
+
<nav aria-label="Main" {...styles.tabBar()}>
|
|
344
|
+
{tabs.map(([id, entry]) => (
|
|
345
|
+
<BottomBarItem entry={entry} key={id} />
|
|
346
|
+
))}
|
|
347
|
+
</nav>
|
|
348
|
+
)}
|
|
349
|
+
{actions.map(([id, entry]) => (
|
|
350
|
+
<BottomBarItem entry={entry} key={id} />
|
|
351
|
+
))}
|
|
352
|
+
</div>
|
|
353
|
+
)
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
/**
|
|
357
|
+
* Renders the element of a `SidebarMenu.Item` with the attributes and `render` of the item, and
|
|
358
|
+
* shows only its first element, such as its icon. Its text stays in the accessible name.
|
|
359
|
+
*/
|
|
360
|
+
function BottomBarItem(props: { entry: TabBar.Entry }) {
|
|
361
|
+
const { entry } = props
|
|
362
|
+
|
|
363
|
+
return useRender({
|
|
364
|
+
defaultTagName: 'a',
|
|
365
|
+
props: {
|
|
366
|
+
...entry.attributes,
|
|
367
|
+
'aria-current': entry.active ? 'page' : undefined,
|
|
368
|
+
...(entry.variant === 'tab' ? styles.tab({ active: entry.active }) : styles.action()),
|
|
369
|
+
children: Text.wrap(entry.children, styles.label()),
|
|
370
|
+
},
|
|
371
|
+
render: entry.render,
|
|
372
|
+
})
|
|
373
|
+
}
|
|
374
|
+
|
|
280
375
|
const fadeIn = keyframes(
|
|
281
376
|
{ from: { opacity: 0 }, to: { opacity: 1 } },
|
|
282
377
|
{ id: 'tds/web/app-shell/fade-in' },
|
|
@@ -288,9 +383,56 @@ const fadeOut = keyframes(
|
|
|
288
383
|
)
|
|
289
384
|
|
|
290
385
|
namespace styles {
|
|
386
|
+
// The 56px circle of the Platform Floating Action Button, filled like the primary button.
|
|
387
|
+
export const action = style(
|
|
388
|
+
{
|
|
389
|
+
alignItems: 'center',
|
|
390
|
+
backgroundColor: 'inverse.background.primary',
|
|
391
|
+
borderRadius: 'full',
|
|
392
|
+
boxShadow: 'large',
|
|
393
|
+
boxSizing: 'border-box',
|
|
394
|
+
color: 'inverse.content.primary',
|
|
395
|
+
cornerShape: 'round',
|
|
396
|
+
cursor: 'pointer',
|
|
397
|
+
display: 'flex',
|
|
398
|
+
flexShrink: '0 !custom',
|
|
399
|
+
height: '56',
|
|
400
|
+
justifyContent: 'center',
|
|
401
|
+
outlineColor: 'transparent !custom',
|
|
402
|
+
outlineOffset: '2',
|
|
403
|
+
outlineStyle: 'solid !custom',
|
|
404
|
+
outlineWidth: '2',
|
|
405
|
+
position: 'relative',
|
|
406
|
+
textDecoration: 'none !custom',
|
|
407
|
+
transitionDuration: '160',
|
|
408
|
+
transitionProperty: 'background-color, outline-color, scale !custom',
|
|
409
|
+
transitionTimingFunction: 'snappy',
|
|
410
|
+
width: '56',
|
|
411
|
+
selectors: {
|
|
412
|
+
'& > :first-child': { flexShrink: '0 !custom', fontSize: '24' },
|
|
413
|
+
'& > :not(:first-child)': {
|
|
414
|
+
clipPath: 'inset(50%) !custom',
|
|
415
|
+
height: '1px !custom',
|
|
416
|
+
overflow: 'hidden',
|
|
417
|
+
position: 'absolute',
|
|
418
|
+
whiteSpace: 'nowrap',
|
|
419
|
+
width: '1px !custom',
|
|
420
|
+
},
|
|
421
|
+
'&:active': { scale: 'press', transitionDuration: '100' },
|
|
422
|
+
'&:focus-visible': { outlineColor: 'border.focus' },
|
|
423
|
+
'&:hover': { backgroundColor: 'action.primary.fill.hover' },
|
|
424
|
+
},
|
|
425
|
+
'@media (prefers-reduced-motion: reduce)': {
|
|
426
|
+
transitionProperty: 'background-color, outline-color !custom',
|
|
427
|
+
selectors: { '&:active': { scale: 'none !custom' } },
|
|
428
|
+
},
|
|
429
|
+
},
|
|
430
|
+
{ id: 'tds/web/app-shell/action' },
|
|
431
|
+
)
|
|
432
|
+
|
|
291
433
|
export const backdrop = style(
|
|
292
434
|
{
|
|
293
|
-
backgroundColor: '
|
|
435
|
+
backgroundColor: 'neutral.100',
|
|
294
436
|
inset: '0',
|
|
295
437
|
opacity: '0.6 !custom',
|
|
296
438
|
position: 'fixed',
|
|
@@ -310,6 +452,7 @@ namespace styles {
|
|
|
310
452
|
{
|
|
311
453
|
backgroundColor: 'currentColor !custom',
|
|
312
454
|
borderRadius: 'full',
|
|
455
|
+
cornerShape: 'round',
|
|
313
456
|
height: '2',
|
|
314
457
|
insetInlineStart: '0',
|
|
315
458
|
position: 'absolute',
|
|
@@ -334,6 +477,22 @@ namespace styles {
|
|
|
334
477
|
{ id: 'tds/web/app-shell/bar' },
|
|
335
478
|
)
|
|
336
479
|
|
|
480
|
+
// Floats over the content, inset by the 24px page margin of the Mobile layout and 16px from the
|
|
481
|
+
// bottom edge. It sits below the drawer and its backdrop.
|
|
482
|
+
export const bottomBar = style(
|
|
483
|
+
{
|
|
484
|
+
alignItems: 'center',
|
|
485
|
+
bottom: 'calc(1rem + env(safe-area-inset-bottom)) !custom',
|
|
486
|
+
columnGap: '12',
|
|
487
|
+
display: 'none',
|
|
488
|
+
insetInline: '24',
|
|
489
|
+
position: 'fixed',
|
|
490
|
+
zIndex: '39 !custom',
|
|
491
|
+
'@media (max-width: 767px)': { display: 'flex' },
|
|
492
|
+
},
|
|
493
|
+
{ id: 'tds/web/app-shell/bottom-bar' },
|
|
494
|
+
)
|
|
495
|
+
|
|
337
496
|
export const bars = style(
|
|
338
497
|
{ display: 'block', height: '16', position: 'relative', width: '16' },
|
|
339
498
|
{ id: 'tds/web/app-shell/bars' },
|
|
@@ -341,7 +500,7 @@ namespace styles {
|
|
|
341
500
|
|
|
342
501
|
export const drawer = style(
|
|
343
502
|
{
|
|
344
|
-
borderInlineStartColor: '
|
|
503
|
+
borderInlineStartColor: 'line.secondary',
|
|
345
504
|
borderInlineStartStyle: 'solid',
|
|
346
505
|
borderInlineStartWidth: '1px !custom',
|
|
347
506
|
height: '100% !custom',
|
|
@@ -359,6 +518,9 @@ namespace styles {
|
|
|
359
518
|
},
|
|
360
519
|
'&[data-starting-style]': { transform: 'translateX(100%) !custom' },
|
|
361
520
|
'&[data-swiping]': { transitionDuration: '0', userSelect: 'none' },
|
|
521
|
+
// The closed drawer stays mounted with the `hidden` attribute, which the flex layout of
|
|
522
|
+
// the sidebar would override.
|
|
523
|
+
'&[hidden]': { display: 'none !custom' },
|
|
362
524
|
},
|
|
363
525
|
'@media (prefers-reduced-motion: reduce)': {
|
|
364
526
|
transitionProperty: 'opacity !custom',
|
|
@@ -373,19 +535,33 @@ namespace styles {
|
|
|
373
535
|
{ id: 'tds/web/app-shell/drawer' },
|
|
374
536
|
)
|
|
375
537
|
|
|
538
|
+
// The bar bleeds into the padding of `Main`, so it spans the column and starts at its top edge.
|
|
539
|
+
// The header takes the fill of the sidebar, so the two frame the page.
|
|
376
540
|
export const header = variants(
|
|
377
541
|
{
|
|
378
542
|
base: {
|
|
379
543
|
alignItems: 'center',
|
|
544
|
+
backgroundColor: 'background.sidebar',
|
|
545
|
+
borderBottomColor: 'line.secondary',
|
|
546
|
+
borderBottomStyle: 'solid',
|
|
547
|
+
borderBottomWidth: '1px !custom',
|
|
548
|
+
boxSizing: 'border-box',
|
|
380
549
|
columnGap: '8',
|
|
381
550
|
display: 'flex',
|
|
382
551
|
justifyContent: 'space-between',
|
|
383
552
|
marginBottom: '24',
|
|
553
|
+
marginInline: '-16',
|
|
554
|
+
marginTop: '-20',
|
|
555
|
+
minHeight: '56',
|
|
384
556
|
minWidth: '0',
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
557
|
+
paddingInline: '16',
|
|
558
|
+
'@media (min-width: 640px)': { marginInline: '-2rem !custom', paddingInline: '24' },
|
|
559
|
+
// Below 1024px the fixed trigger covers the end of the bar, so header actions end 8px
|
|
560
|
+
// before it: its 40px plus its 16px inset. A collapsed sidebar hides it from 768px.
|
|
561
|
+
'@media (max-width: 1023px)': { paddingInlineEnd: '64' },
|
|
562
|
+
'@media (min-width: 768px) and (max-width: 1023px)': {
|
|
563
|
+
selectors: { '[data-app-shell-collapse] > main > &': { paddingInlineEnd: '24' } },
|
|
564
|
+
},
|
|
389
565
|
},
|
|
390
566
|
},
|
|
391
567
|
{ id: 'tds/web/app-shell/header' },
|
|
@@ -413,23 +589,50 @@ namespace styles {
|
|
|
413
589
|
{
|
|
414
590
|
base: {
|
|
415
591
|
backgroundColor: 'background.primary',
|
|
416
|
-
color: '
|
|
592
|
+
color: 'content.primary',
|
|
417
593
|
display: 'flex',
|
|
418
594
|
minHeight: '100dvh !custom',
|
|
419
595
|
position: 'relative',
|
|
420
|
-
typography: '
|
|
596
|
+
typography: 'body.b2',
|
|
421
597
|
selectors: {
|
|
422
|
-
// Equal gutters center the sidebar and content column on wide viewports.
|
|
598
|
+
// Equal gutters center the sidebar and content column on wide viewports. The start
|
|
599
|
+
// gutter takes the fill of the sidebar, so the sidebar reaches the start edge.
|
|
423
600
|
'&::after, &::before': { content: '"" !custom', flex: '1 !custom' },
|
|
601
|
+
'&::before': { backgroundColor: 'background.sidebar' },
|
|
424
602
|
},
|
|
425
603
|
'@media (max-width: 1023px)': {
|
|
426
604
|
selectors: { '&::after, &::before': { display: 'none !custom' } },
|
|
427
605
|
},
|
|
606
|
+
// The bottom bar covers the end of the page, so content can scroll clear of it: 16px
|
|
607
|
+
// below the bar, its 56px, and 16px above it.
|
|
608
|
+
'@media (max-width: 767px)': {
|
|
609
|
+
selectors: {
|
|
610
|
+
'&:has(> [data-app-shell-bottom-bar]) > main': {
|
|
611
|
+
paddingBottom: 'calc(5.5rem + env(safe-area-inset-bottom)) !custom',
|
|
612
|
+
},
|
|
613
|
+
},
|
|
614
|
+
},
|
|
428
615
|
},
|
|
429
616
|
defaultVariants: { align: 'center' },
|
|
430
617
|
variants: {
|
|
431
618
|
align: {
|
|
432
|
-
|
|
619
|
+
// The header bar continues across the end gutter as the outset of a border image, which
|
|
620
|
+
// is ink overflow. It adds no scroll and changes no layout, and a scrolling `Main` clips
|
|
621
|
+
// it at its own edge. The image draws the fill and the 1px bottom border of the header.
|
|
622
|
+
// The outset takes the gutter from the viewport width, since the root of an application
|
|
623
|
+
// frame spans the viewport.
|
|
624
|
+
center: {
|
|
625
|
+
'@media (min-width: 1024px)': {
|
|
626
|
+
selectors: {
|
|
627
|
+
'& > main > [data-app-shell-header]': {
|
|
628
|
+
borderImageOutset: `0 max(0px, calc((100vw - var(--sidebar-width, 16rem) - ${vars.container['1024']}) / 2)) 0 0 !custom`,
|
|
629
|
+
borderImageSlice: '0 fill !custom',
|
|
630
|
+
borderImageSource: `linear-gradient(${vars.color.background.sidebar} calc(100% - 1px), ${vars.color.line.secondary} 0) !custom`,
|
|
631
|
+
borderImageWidth: '0 !custom',
|
|
632
|
+
},
|
|
633
|
+
},
|
|
634
|
+
},
|
|
635
|
+
},
|
|
433
636
|
start: {
|
|
434
637
|
selectors: {
|
|
435
638
|
'&::after, &::before': { display: 'none !custom' },
|
|
@@ -445,33 +648,52 @@ namespace styles {
|
|
|
445
648
|
export const sidebar = variants(
|
|
446
649
|
{
|
|
447
650
|
base: {
|
|
448
|
-
backgroundColor: 'background.
|
|
651
|
+
backgroundColor: 'background.sidebar',
|
|
449
652
|
boxSizing: 'border-box',
|
|
450
653
|
display: 'flex',
|
|
451
654
|
flexDirection: 'column',
|
|
452
655
|
flexShrink: '0 !custom',
|
|
453
656
|
minHeight: '0',
|
|
454
|
-
paddingBottom: '
|
|
455
|
-
paddingInline: '
|
|
456
|
-
rowGap: '
|
|
657
|
+
paddingBottom: '16',
|
|
658
|
+
paddingInline: '12',
|
|
659
|
+
rowGap: '16',
|
|
457
660
|
},
|
|
458
661
|
},
|
|
459
662
|
{ id: 'tds/web/app-shell/sidebar' },
|
|
460
663
|
)
|
|
461
664
|
|
|
665
|
+
// Keeps the label of a bottom bar item in its accessible name without painting it.
|
|
666
|
+
export const label = style(
|
|
667
|
+
{
|
|
668
|
+
clipPath: 'inset(50%) !custom',
|
|
669
|
+
height: '1px !custom',
|
|
670
|
+
overflow: 'hidden',
|
|
671
|
+
position: 'absolute',
|
|
672
|
+
whiteSpace: 'nowrap',
|
|
673
|
+
width: '1px !custom',
|
|
674
|
+
},
|
|
675
|
+
{ id: 'tds/web/app-shell/label' },
|
|
676
|
+
)
|
|
677
|
+
|
|
462
678
|
// Follows `sidebar`, so its compact `display: none` overrides the sidebar's `display: flex` in
|
|
463
679
|
// server-rendered markup, which always emits the wide layout.
|
|
464
680
|
export const inline = style(
|
|
465
681
|
{
|
|
466
|
-
borderInlineEndColor: '
|
|
682
|
+
borderInlineEndColor: 'line.secondary',
|
|
467
683
|
borderInlineEndStyle: 'solid',
|
|
468
684
|
borderInlineEndWidth: '1px !custom',
|
|
469
685
|
height: '100dvh !custom',
|
|
470
686
|
insetBlockStart: '0',
|
|
471
687
|
overflowY: 'auto',
|
|
472
688
|
position: 'sticky',
|
|
473
|
-
width: 'var(--sidebar-width,
|
|
689
|
+
width: 'var(--sidebar-width, 16rem) !custom',
|
|
474
690
|
'@media (max-width: 1023px)': { display: 'none !custom' },
|
|
691
|
+
// A collapsed sidebar stays inline as a column of icons, which `SidebarMenu` centers.
|
|
692
|
+
'@media (min-width: 768px) and (max-width: 1023px)': {
|
|
693
|
+
selectors: {
|
|
694
|
+
'&[data-app-shell-rail]': { display: 'flex !custom', width: '4rem !custom' },
|
|
695
|
+
},
|
|
696
|
+
},
|
|
475
697
|
},
|
|
476
698
|
{ id: 'tds/web/app-shell/inline' },
|
|
477
699
|
)
|
|
@@ -479,20 +701,33 @@ namespace styles {
|
|
|
479
701
|
export const sidebarBody = variants(
|
|
480
702
|
{
|
|
481
703
|
base: {
|
|
704
|
+
// Custom string values only take literal CSS, so the thumb color reaches `scrollbarColor` through a property.
|
|
705
|
+
'--tds-sidebar-scrollbar-thumb': `${vars.color.line.primary}`,
|
|
482
706
|
flex: '1 !custom',
|
|
483
707
|
// Bleeding into the sidebar's inline padding puts the scrollbar at the sidebar edge.
|
|
484
|
-
marginInline: '-
|
|
708
|
+
marginInline: '-12',
|
|
485
709
|
minHeight: '0',
|
|
486
710
|
overflowY: 'auto',
|
|
487
711
|
overscrollBehavior: 'contain',
|
|
488
|
-
paddingInline: '
|
|
712
|
+
paddingInline: '12',
|
|
713
|
+
// A transparent track leaves only the thin thumb over the sidebar fill.
|
|
714
|
+
scrollbarColor: 'var(--tds-sidebar-scrollbar-thumb) transparent !custom',
|
|
489
715
|
// Classic scrollbars keep their own lane instead of covering content at the edge.
|
|
490
716
|
scrollbarGutter: 'stable',
|
|
491
717
|
scrollbarWidth: 'thin',
|
|
718
|
+
// The collapsed sidebar has no room for a scrollbar lane beside its 40px icons.
|
|
719
|
+
'@media (min-width: 768px) and (max-width: 1023px)': {
|
|
720
|
+
selectors: {
|
|
721
|
+
'[data-app-shell-rail] &': {
|
|
722
|
+
scrollbarGutter: 'auto !custom',
|
|
723
|
+
scrollbarWidth: 'none !custom',
|
|
724
|
+
},
|
|
725
|
+
},
|
|
726
|
+
},
|
|
492
727
|
selectors: {
|
|
493
728
|
// Curtains fade content into the sidebar at whichever end has more to scroll.
|
|
494
729
|
'&::after, &::before': {
|
|
495
|
-
backgroundColor: 'background.
|
|
730
|
+
backgroundColor: 'background.sidebar',
|
|
496
731
|
content: '"" !custom',
|
|
497
732
|
display: 'block',
|
|
498
733
|
height: '24',
|
|
@@ -530,23 +765,107 @@ namespace styles {
|
|
|
530
765
|
{ id: 'tds/web/app-shell/sidebar-body' },
|
|
531
766
|
)
|
|
532
767
|
|
|
768
|
+
// The automatic top margin keeps the footer at the bottom edge when no `SidebarBody` grows.
|
|
533
769
|
export const sidebarFooter = variants(
|
|
534
|
-
{
|
|
770
|
+
{
|
|
771
|
+
base: {
|
|
772
|
+
display: 'flex',
|
|
773
|
+
flexDirection: 'column',
|
|
774
|
+
flexShrink: '0 !custom',
|
|
775
|
+
marginTop: 'auto !custom',
|
|
776
|
+
rowGap: '8',
|
|
777
|
+
},
|
|
778
|
+
},
|
|
535
779
|
{ id: 'tds/web/app-shell/sidebar-footer' },
|
|
536
780
|
)
|
|
537
781
|
|
|
538
782
|
export const sidebarHeader = variants(
|
|
539
|
-
{ base: { flexShrink: '0 !custom', paddingTop: '
|
|
783
|
+
{ base: { flexShrink: '0 !custom', paddingTop: '16' } },
|
|
540
784
|
{ id: 'tds/web/app-shell/sidebar-header' },
|
|
541
785
|
)
|
|
542
786
|
|
|
787
|
+
// An icon-only item of the Platform Tab Bar, which fills its share of the pill.
|
|
788
|
+
export const tab = variants(
|
|
789
|
+
{
|
|
790
|
+
base: {
|
|
791
|
+
alignItems: 'center',
|
|
792
|
+
borderRadius: 'full',
|
|
793
|
+
boxSizing: 'border-box',
|
|
794
|
+
color: 'content.secondary',
|
|
795
|
+
cornerShape: 'round',
|
|
796
|
+
cursor: 'pointer',
|
|
797
|
+
display: 'flex',
|
|
798
|
+
flex: '1 !custom',
|
|
799
|
+
height: '100% !custom',
|
|
800
|
+
justifyContent: 'center',
|
|
801
|
+
minWidth: '0',
|
|
802
|
+
outlineColor: 'transparent !custom',
|
|
803
|
+
outlineOffset: '-2',
|
|
804
|
+
outlineStyle: 'solid !custom',
|
|
805
|
+
outlineWidth: '2',
|
|
806
|
+
position: 'relative',
|
|
807
|
+
textDecoration: 'none !custom',
|
|
808
|
+
transitionDuration: '160',
|
|
809
|
+
transitionProperty: 'background-color, color, outline-color, scale !custom',
|
|
810
|
+
transitionTimingFunction: 'snappy',
|
|
811
|
+
selectors: {
|
|
812
|
+
'& > :first-child': { flexShrink: '0 !custom', fontSize: '24' },
|
|
813
|
+
'& > :not(:first-child)': {
|
|
814
|
+
clipPath: 'inset(50%) !custom',
|
|
815
|
+
height: '1px !custom',
|
|
816
|
+
overflow: 'hidden',
|
|
817
|
+
position: 'absolute',
|
|
818
|
+
whiteSpace: 'nowrap',
|
|
819
|
+
width: '1px !custom',
|
|
820
|
+
},
|
|
821
|
+
'&:active': { scale: 'press', transitionDuration: '100' },
|
|
822
|
+
'&:focus-visible': { outlineColor: 'border.focus' },
|
|
823
|
+
'&:hover': { color: 'content.primary' },
|
|
824
|
+
},
|
|
825
|
+
'@media (prefers-reduced-motion: reduce)': {
|
|
826
|
+
transitionProperty: 'background-color, color, outline-color !custom',
|
|
827
|
+
selectors: { '&:active': { scale: 'none !custom' } },
|
|
828
|
+
},
|
|
829
|
+
},
|
|
830
|
+
defaultVariants: { active: false },
|
|
831
|
+
variants: {
|
|
832
|
+
active: {
|
|
833
|
+
false: {},
|
|
834
|
+
true: { backgroundColor: 'container.regular', color: 'content.primary' },
|
|
835
|
+
},
|
|
836
|
+
},
|
|
837
|
+
},
|
|
838
|
+
{ id: 'tds/web/app-shell/tab' },
|
|
839
|
+
)
|
|
840
|
+
|
|
841
|
+
// The 56px pill of the Platform Tab Bar, which takes the width beside the action button.
|
|
842
|
+
export const tabBar = style(
|
|
843
|
+
{
|
|
844
|
+
alignItems: 'center',
|
|
845
|
+
backgroundColor: 'background.secondary',
|
|
846
|
+
borderColor: 'line.secondary',
|
|
847
|
+
borderRadius: 'full',
|
|
848
|
+
borderStyle: 'solid',
|
|
849
|
+
borderWidth: 'regular',
|
|
850
|
+
boxShadow: 'regular',
|
|
851
|
+
boxSizing: 'border-box',
|
|
852
|
+
cornerShape: 'round',
|
|
853
|
+
display: 'flex',
|
|
854
|
+
flex: '1 !custom',
|
|
855
|
+
height: '56',
|
|
856
|
+
minWidth: '0',
|
|
857
|
+
padding: '4',
|
|
858
|
+
},
|
|
859
|
+
{ id: 'tds/web/app-shell/tab-bar' },
|
|
860
|
+
)
|
|
861
|
+
|
|
543
862
|
export const title = variants(
|
|
544
863
|
{
|
|
545
864
|
base: {
|
|
546
|
-
color: '
|
|
865
|
+
color: 'content.primary',
|
|
547
866
|
margin: '0',
|
|
548
867
|
minWidth: '0',
|
|
549
|
-
typography: 'heading.
|
|
868
|
+
typography: 'heading.h2',
|
|
550
869
|
},
|
|
551
870
|
},
|
|
552
871
|
{ id: 'tds/web/app-shell/title' },
|
|
@@ -556,18 +875,19 @@ namespace styles {
|
|
|
556
875
|
{
|
|
557
876
|
base: {
|
|
558
877
|
alignItems: 'center',
|
|
559
|
-
backgroundColor: 'background.
|
|
560
|
-
borderColor: '
|
|
878
|
+
backgroundColor: 'background.elevated',
|
|
879
|
+
borderColor: 'line.secondary',
|
|
561
880
|
borderRadius: 'full',
|
|
562
881
|
borderStyle: 'solid',
|
|
563
|
-
borderWidth: '
|
|
564
|
-
boxShadow: 'raised',
|
|
882
|
+
borderWidth: 'regular',
|
|
565
883
|
boxSizing: 'border-box',
|
|
566
|
-
color: '
|
|
884
|
+
color: 'content.primary',
|
|
885
|
+
cornerShape: 'round',
|
|
567
886
|
cursor: 'pointer',
|
|
568
887
|
display: 'inline-flex',
|
|
569
888
|
height: '40',
|
|
570
|
-
|
|
889
|
+
// Centers the button on the 56px header bar.
|
|
890
|
+
insetBlockStart: '8',
|
|
571
891
|
insetInlineEnd: '16',
|
|
572
892
|
justifyContent: 'center',
|
|
573
893
|
outlineColor: 'transparent !custom',
|
|
@@ -584,8 +904,8 @@ namespace styles {
|
|
|
584
904
|
zIndex: 'modal',
|
|
585
905
|
selectors: {
|
|
586
906
|
'&:active': { transform: 'scale(0.96) !custom' },
|
|
587
|
-
'&:focus-visible': { outlineColor: '
|
|
588
|
-
'&:hover': { backgroundColor: '
|
|
907
|
+
'&:focus-visible': { outlineColor: 'border.focus', outlineOffset: '2' },
|
|
908
|
+
'&:hover': { backgroundColor: 'container.regular' },
|
|
589
909
|
// While open, the button rides out with the drawer and rests 8px outside its left edge,
|
|
590
910
|
// so the close mark never covers the sidebar. The width matches the drawer's.
|
|
591
911
|
'&[data-popup-open]': {
|
|
@@ -595,6 +915,9 @@ namespace styles {
|
|
|
595
915
|
},
|
|
596
916
|
},
|
|
597
917
|
'@media (min-width: 1024px)': { display: 'none !custom' },
|
|
918
|
+
'@media (min-width: 768px) and (max-width: 1023px)': {
|
|
919
|
+
selectors: { '[data-app-shell-collapse] &': { display: 'none !custom' } },
|
|
920
|
+
},
|
|
598
921
|
'@media (prefers-reduced-motion: reduce)': {
|
|
599
922
|
transitionProperty: 'background-color, outline-color, outline-offset !custom',
|
|
600
923
|
selectors: { '&:active': { transform: 'none !custom' } },
|
|
@@ -611,6 +934,7 @@ namespace styles {
|
|
|
611
934
|
justifyContent: 'flex-end',
|
|
612
935
|
position: 'fixed',
|
|
613
936
|
zIndex: 'popover',
|
|
937
|
+
selectors: { '&[hidden]': { display: 'none !custom' } },
|
|
614
938
|
},
|
|
615
939
|
{ id: 'tds/web/app-shell/viewport' },
|
|
616
940
|
)
|