@tempoxyz/ds 0.2.0 → 0.2.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/README.md +36 -0
- package/dist/mobile/components/Avatar.d.ts +1 -1
- package/dist/mobile/components/Avatar.d.ts.map +1 -1
- package/dist/mobile/components/Avatar.js.map +1 -1
- package/dist/mobile/components/Button.d.ts +2 -2
- package/dist/mobile/components/Button.d.ts.map +1 -1
- package/dist/mobile/components/Button.js +6 -2
- package/dist/mobile/components/Button.js.map +1 -1
- package/dist/mobile/components/CodeInput.d.ts +1 -1
- package/dist/mobile/components/CodeInput.d.ts.map +1 -1
- package/dist/mobile/components/CodeInput.js.map +1 -1
- package/dist/mobile/components/IconButton.d.ts +2 -2
- package/dist/mobile/components/IconButton.d.ts.map +1 -1
- package/dist/mobile/components/IconButton.js +6 -2
- package/dist/mobile/components/IconButton.js.map +1 -1
- package/dist/mobile/components/Skeleton.d.ts.map +1 -1
- package/dist/mobile/components/Skeleton.js.map +1 -1
- package/dist/mobile/components/Spinner.d.ts +4 -4
- package/dist/mobile/components/Spinner.d.ts.map +1 -1
- package/dist/mobile/components/Spinner.js +3 -3
- package/dist/mobile/components/Spinner.js.map +1 -1
- package/dist/mobile/components/TextButton.d.ts.map +1 -1
- package/dist/mobile/components/TextButton.js +7 -2
- package/dist/mobile/components/TextButton.js.map +1 -1
- package/dist/mobile/components/TextInput.d.ts.map +1 -1
- package/dist/mobile/components/TextInput.js +1 -1
- package/dist/mobile/components/TextInput.js.map +1 -1
- package/dist/mobile/components/Toast.d.ts +1 -1
- package/dist/mobile/components/Toast.d.ts.map +1 -1
- package/dist/mobile/components/Toast.js +1 -1
- package/dist/mobile/components/Toast.js.map +1 -1
- package/dist/mobile/components/Toggle.d.ts +2 -2
- package/dist/mobile/components/Toggle.js +2 -2
- package/dist/mobile/components/Toggle.js.map +1 -1
- package/dist/mobile/vars.d.ts +24 -0
- package/dist/mobile/vars.d.ts.map +1 -1
- package/dist/mobile/vars.js +12 -0
- package/dist/mobile/vars.js.map +1 -1
- package/dist/mobile/zyzz.config.d.ts +96 -0
- package/dist/mobile/zyzz.config.d.ts.map +1 -1
- package/dist/oxlint/index.d.ts +43 -0
- package/dist/oxlint/index.d.ts.map +1 -0
- package/dist/oxlint/index.js +68 -0
- package/dist/oxlint/index.js.map +1 -0
- package/dist/oxlint/internal/Imports.d.ts +22 -0
- package/dist/oxlint/internal/Imports.d.ts.map +1 -0
- package/dist/oxlint/internal/Imports.js +52 -0
- package/dist/oxlint/internal/Imports.js.map +1 -0
- package/dist/oxlint/rules/NoCrossSurface.d.ts +16 -0
- package/dist/oxlint/rules/NoCrossSurface.d.ts.map +1 -0
- package/dist/oxlint/rules/NoCrossSurface.js +55 -0
- package/dist/oxlint/rules/NoCrossSurface.js.map +1 -0
- package/dist/oxlint/rules/NoInternalImports.d.ts +8 -0
- package/dist/oxlint/rules/NoInternalImports.d.ts.map +1 -0
- package/dist/oxlint/rules/NoInternalImports.js +22 -0
- package/dist/oxlint/rules/NoInternalImports.js.map +1 -0
- package/dist/oxlint/rules/NoRawValues.d.ts +9 -0
- package/dist/oxlint/rules/NoRawValues.d.ts.map +1 -0
- package/dist/oxlint/rules/NoRawValues.js +73 -0
- package/dist/oxlint/rules/NoRawValues.js.map +1 -0
- package/dist/oxlint/rules/PreferComponent.d.ts +16 -0
- package/dist/oxlint/rules/PreferComponent.d.ts.map +1 -0
- package/dist/oxlint/rules/PreferComponent.js +92 -0
- package/dist/oxlint/rules/PreferComponent.js.map +1 -0
- package/dist/oxlint/rules/RequireAccessibleName.d.ts +9 -0
- package/dist/oxlint/rules/RequireAccessibleName.d.ts.map +1 -0
- package/dist/oxlint/rules/RequireAccessibleName.js +104 -0
- package/dist/oxlint/rules/RequireAccessibleName.js.map +1 -0
- 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/AlertDialog.css +1 -1
- package/dist/web/components/AlertDialog.d.ts.map +1 -1
- package/dist/web/components/AlertDialog.js +1 -1
- package/dist/web/components/AlertDialog.js.map +1 -1
- package/dist/web/components/AlertDialog.js.zyzz.json +1 -1
- package/dist/web/components/Amount.d.ts +10 -3
- package/dist/web/components/Amount.d.ts.map +1 -1
- package/dist/web/components/Amount.js +19 -9
- 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 +15 -2
- package/dist/web/components/AmountInput.d.ts.map +1 -1
- package/dist/web/components/AmountInput.js +43 -12
- 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 +10 -10
- package/dist/web/components/AppShell.js.map +1 -1
- package/dist/web/components/AppShell.js.zyzz.json +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 +3 -3
- package/dist/web/components/Avatar.js.map +1 -1
- package/dist/web/components/Avatar.js.zyzz.json +1 -1
- package/dist/web/components/Banner.css +1 -1
- package/dist/web/components/Banner.js +3 -3
- package/dist/web/components/Banner.js.map +1 -1
- package/dist/web/components/Banner.js.zyzz.json +1 -1
- package/dist/web/components/Breadcrumbs.css +1 -1
- package/dist/web/components/Breadcrumbs.d.ts +4 -4
- 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 +12 -11
- package/dist/web/components/Button.d.ts.map +1 -1
- package/dist/web/components/Button.js +2 -2
- package/dist/web/components/Button.js.map +1 -1
- package/dist/web/components/Button.js.zyzz.json +1 -1
- 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 -5
- package/dist/web/components/Calendar.js.map +1 -1
- package/dist/web/components/Calendar.js.zyzz.json +1 -1
- package/dist/web/components/Callout.css +1 -1
- package/dist/web/components/Callout.d.ts +6 -6
- package/dist/web/components/Callout.d.ts.map +1 -1
- package/dist/web/components/Callout.js +5 -2
- package/dist/web/components/Callout.js.map +1 -1
- package/dist/web/components/Callout.js.zyzz.json +1 -1
- package/dist/web/components/Checkbox.css +1 -1
- package/dist/web/components/Checkbox.d.ts +8 -8
- 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 +2 -2
- package/dist/web/components/ChoiceGroup.d.ts.map +1 -1
- package/dist/web/components/ChoiceGroup.js +2 -2
- 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 +4 -4
- package/dist/web/components/Choicebox.js +1 -1
- 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.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.zyzz.json +1 -1
- package/dist/web/components/DatePicker.css +1 -1
- package/dist/web/components/DatePicker.d.ts +20 -20
- package/dist/web/components/DatePicker.d.ts.map +1 -1
- package/dist/web/components/DatePicker.js +2 -2
- 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.map +1 -1
- package/dist/web/components/Dialog.js +3 -3
- 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.js +2 -2
- package/dist/web/components/Drawer.js.map +1 -1
- package/dist/web/components/Drawer.js.zyzz.json +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 +7 -0
- package/dist/web/components/Field.d.ts.map +1 -1
- package/dist/web/components/Field.js +25 -3
- package/dist/web/components/Field.js.map +1 -1
- package/dist/web/components/Field.js.zyzz.json +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 +27 -10
- package/dist/web/components/Frame.d.ts.map +1 -1
- package/dist/web/components/Frame.js +12 -5
- 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.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 +5 -5
- package/dist/web/components/Hex.js +1 -1
- package/dist/web/components/Hex.js.map +1 -1
- package/dist/web/components/Hex.js.zyzz.json +1 -1
- package/dist/web/components/IconChip.css +1 -1
- package/dist/web/components/IconChip.d.ts +1 -1
- package/dist/web/components/IconChip.js.map +1 -1
- package/dist/web/components/IconChip.js.zyzz.json +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/Input.css +1 -1
- package/dist/web/components/Input.js.map +1 -1
- package/dist/web/components/Input.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 +32 -10
- package/dist/web/components/Kbd.d.ts.map +1 -1
- package/dist/web/components/Kbd.js +55 -13
- package/dist/web/components/Kbd.js.map +1 -1
- package/dist/web/components/Kbd.js.zyzz.json +1 -1
- package/dist/web/components/LoadingDots.css +1 -1
- package/dist/web/components/LoadingDots.d.ts +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 +11 -11
- package/dist/web/components/Menu.d.ts.map +1 -1
- package/dist/web/components/Menu.js +2 -2
- package/dist/web/components/Menu.js.map +1 -1
- package/dist/web/components/Menu.js.zyzz.json +1 -1
- package/dist/web/components/NumberField.css +1 -1
- package/dist/web/components/NumberField.js +1 -1
- 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.map +1 -1
- package/dist/web/components/OtpField.js +1 -1
- 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 +13 -13
- package/dist/web/components/Pagination.js +1 -1
- 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.d.ts.map +1 -1
- package/dist/web/components/Popover.js +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.js.map +1 -1
- package/dist/web/components/Progress.js.zyzz.json +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 +4 -4
- package/dist/web/components/RadioGroup.js.map +1 -1
- package/dist/web/components/RadioGroup.js.zyzz.json +1 -1
- package/dist/web/components/Rows.css +1 -1
- package/dist/web/components/Rows.d.ts +7 -7
- package/dist/web/components/Rows.d.ts.map +1 -1
- package/dist/web/components/Rows.js +3 -3
- package/dist/web/components/Rows.js.map +1 -1
- package/dist/web/components/Rows.js.zyzz.json +1 -1
- package/dist/web/components/SecretValue.css +1 -1
- package/dist/web/components/SecretValue.d.ts +4 -4
- 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.js.map +1 -1
- package/dist/web/components/Select.js.zyzz.json +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 +11 -11
- package/dist/web/components/SidebarMenu.d.ts.map +1 -1
- package/dist/web/components/SidebarMenu.js +1 -1
- package/dist/web/components/SidebarMenu.js.map +1 -1
- package/dist/web/components/SidebarMenu.js.zyzz.json +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.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 +4 -4
- package/dist/web/components/Snippet.js +2 -2
- package/dist/web/components/Snippet.js.map +1 -1
- package/dist/web/components/Snippet.js.zyzz.json +1 -1
- package/dist/web/components/Spinner.js.zyzz.json +1 -1
- package/dist/web/components/SplitButton.css +1 -1
- package/dist/web/components/SplitButton.d.ts.map +1 -1
- package/dist/web/components/SplitButton.js +1 -1
- 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/Stepper.css +1 -1
- package/dist/web/components/Stepper.d.ts +1 -1
- 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 +46 -46
- package/dist/web/components/Surface.js +2 -2
- 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 -14
- package/dist/web/components/Switch.d.ts.map +1 -1
- 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 +10 -7
- package/dist/web/components/Table.d.ts.map +1 -1
- package/dist/web/components/Table.js +5 -2
- 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 +14 -14
- package/dist/web/components/Tabs.js +1 -1
- package/dist/web/components/Tabs.js.map +1 -1
- package/dist/web/components/Tabs.js.zyzz.json +1 -1
- package/dist/web/components/Tag.css +1 -1
- package/dist/web/components/Tag.d.ts +10 -10
- package/dist/web/components/Tag.js +1 -1
- package/dist/web/components/Tag.js.map +1 -1
- package/dist/web/components/Tag.js.zyzz.json +1 -1
- package/dist/web/components/Textarea.css +1 -1
- package/dist/web/components/Textarea.d.ts +15 -15
- 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.map +1 -1
- package/dist/web/components/Toast.js +7 -3
- package/dist/web/components/Toast.js.map +1 -1
- package/dist/web/components/Toast.js.zyzz.json +1 -1
- package/dist/web/components/Token.js.zyzz.json +1 -1
- package/dist/web/components/Tooltip.css +1 -1
- package/dist/web/components/Tooltip.d.ts.map +1 -1
- package/dist/web/components/Tooltip.js +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/internal/Field.css +1 -1
- package/dist/web/components/internal/Field.d.ts +7 -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 +12 -12
- package/dist/web/components/internal/InputGroup.d.ts.map +1 -1
- package/dist/web/components/internal/InputGroup.js +1 -1
- 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 +9 -9
- package/dist/web/components/internal/Listbox.d.ts.map +1 -1
- package/dist/web/components/internal/Listbox.js +1 -1
- package/dist/web/components/internal/Listbox.js.map +1 -1
- package/dist/web/components/internal/Listbox.js.zyzz.json +1 -1
- package/dist/web/icons/BadgeX.d.ts.map +1 -1
- package/dist/web/icons/BadgeX.js.map +1 -1
- package/dist/web/icons/InfinityIcon.d.ts.map +1 -1
- package/dist/web/icons/InfinityIcon.js.map +1 -1
- package/dist/web/icons/LightMode.d.ts.map +1 -1
- package/dist/web/icons/LightMode.js.map +1 -1
- package/dist/web/icons/OctagonAlert.d.ts.map +1 -1
- package/dist/web/icons/OctagonAlert.js.map +1 -1
- package/dist/web/icons/Unlink.d.ts.map +1 -1
- package/dist/web/icons/Unlink.js.map +1 -1
- package/dist/web/index.js.zyzz.json +1 -1
- package/dist/web/vars.d.ts +91 -0
- package/dist/web/vars.d.ts.map +1 -1
- package/dist/web/vars.js.map +1 -1
- package/dist/web/vars.js.zyzz.json +1 -1
- package/dist/web/zyzz.config.d.ts +455 -0
- package/dist/web/zyzz.config.d.ts.map +1 -1
- package/dist/web/zyzz.config.js.zyzz.json +1 -1
- package/package.json +7 -1
- package/src/mobile/components/Avatar.tsx +2 -2
- package/src/mobile/components/Button.tsx +6 -3
- package/src/mobile/components/CodeInput.tsx +2 -2
- package/src/mobile/components/IconButton.tsx +6 -3
- package/src/mobile/components/Skeleton.tsx +1 -1
- package/src/mobile/components/Spinner.tsx +4 -5
- package/src/mobile/components/TextButton.tsx +6 -2
- package/src/mobile/components/TextInput.tsx +1 -1
- package/src/mobile/components/Toast.tsx +1 -2
- package/src/mobile/components/Toggle.tsx +2 -2
- package/src/mobile/vars.ts +14 -0
- package/src/oxlint/index.ts +89 -0
- package/src/oxlint/internal/Imports.ts +68 -0
- package/src/oxlint/rules/NoCrossSurface.ts +71 -0
- package/src/oxlint/rules/NoInternalImports.ts +25 -0
- package/src/oxlint/rules/NoRawValues.ts +76 -0
- package/src/oxlint/rules/PreferComponent.ts +113 -0
- package/src/oxlint/rules/RequireAccessibleName.ts +132 -0
- package/src/web/components/Accordion.tsx +8 -8
- package/src/web/components/AlertDialog.tsx +11 -8
- package/src/web/components/Amount.tsx +29 -9
- package/src/web/components/AmountInput.tsx +60 -24
- package/src/web/components/AppShell.tsx +23 -23
- package/src/web/components/Avatar.tsx +3 -3
- package/src/web/components/Banner.tsx +16 -16
- package/src/web/components/Breadcrumbs.tsx +4 -4
- package/src/web/components/Button.tsx +15 -12
- package/src/web/components/Calendar.tsx +10 -11
- package/src/web/components/Callout.tsx +19 -16
- package/src/web/components/Checkbox.tsx +9 -9
- package/src/web/components/ChoiceGroup.tsx +13 -14
- package/src/web/components/Choicebox.tsx +21 -21
- package/src/web/components/Combobox.tsx +3 -3
- package/src/web/components/DatePicker.tsx +25 -25
- package/src/web/components/Dialog.tsx +28 -19
- package/src/web/components/Drawer.tsx +8 -8
- package/src/web/components/Field.tsx +46 -11
- package/src/web/components/Frame.tsx +30 -9
- package/src/web/components/Gauge.tsx +1 -1
- package/src/web/components/Hex.tsx +5 -5
- package/src/web/components/IconChip.tsx +1 -1
- package/src/web/components/Input.tsx +11 -11
- package/src/web/components/Kbd.tsx +77 -21
- package/src/web/components/LoadingDots.tsx +4 -4
- package/src/web/components/Menu.tsx +17 -14
- package/src/web/components/NumberField.tsx +17 -17
- package/src/web/components/OtpField.tsx +14 -6
- package/src/web/components/Pagination.tsx +13 -13
- package/src/web/components/Popover.tsx +14 -11
- package/src/web/components/Progress.tsx +2 -2
- package/src/web/components/RadioGroup.tsx +11 -11
- package/src/web/components/Rows.tsx +8 -9
- package/src/web/components/SecretValue.tsx +4 -4
- package/src/web/components/Select.tsx +2 -2
- package/src/web/components/SidebarMenu.tsx +14 -15
- package/src/web/components/Slider.tsx +6 -7
- package/src/web/components/Snippet.tsx +9 -9
- package/src/web/components/SplitButton.tsx +17 -5
- package/src/web/components/Stepper.tsx +1 -1
- package/src/web/components/Surface.tsx +47 -47
- package/src/web/components/Switch.tsx +21 -23
- package/src/web/components/Table.tsx +11 -7
- package/src/web/components/Tabs.tsx +14 -14
- package/src/web/components/Tag.tsx +12 -12
- package/src/web/components/Textarea.tsx +15 -15
- package/src/web/components/Toast.tsx +28 -21
- package/src/web/components/Tooltip.tsx +12 -9
- package/src/web/components/internal/Field.ts +20 -20
- package/src/web/components/internal/InputGroup.ts +13 -14
- package/src/web/components/internal/Listbox.ts +19 -16
- package/src/web/icons/BadgeX.tsx +1 -1
- package/src/web/icons/InfinityIcon.tsx +1 -1
- package/src/web/icons/LightMode.tsx +1 -1
- package/src/web/icons/OctagonAlert.tsx +1 -1
- package/src/web/icons/Unlink.tsx +1 -1
- package/src/web/vars.ts +81 -2
|
@@ -240,7 +240,7 @@ namespace styles {
|
|
|
240
240
|
height: '16',
|
|
241
241
|
width: '16',
|
|
242
242
|
selectors: {
|
|
243
|
-
'[data-size="medium"] > &': { height: '
|
|
243
|
+
'[data-size="medium"] > &': { height: '14', width: '14' },
|
|
244
244
|
'[data-size="small"] > &': { height: '12', width: '12' },
|
|
245
245
|
},
|
|
246
246
|
},
|
|
@@ -258,24 +258,27 @@ namespace styles {
|
|
|
258
258
|
opacity: '1 !custom',
|
|
259
259
|
padding: '8',
|
|
260
260
|
transformOrigin: 'var(--transform-origin) !custom',
|
|
261
|
-
transitionDuration: '
|
|
262
|
-
transitionProperty: 'opacity,
|
|
261
|
+
transitionDuration: '240',
|
|
262
|
+
transitionProperty: 'opacity, scale !custom',
|
|
263
263
|
transitionTimingFunction: 'spring',
|
|
264
264
|
selectors: {
|
|
265
265
|
'&:focus-visible': { outline: 'none !custom' },
|
|
266
266
|
'&[data-ending-style]': {
|
|
267
267
|
opacity: '0 !custom',
|
|
268
|
-
|
|
269
|
-
transitionDuration: '
|
|
268
|
+
scale: 'enter',
|
|
269
|
+
transitionDuration: '150',
|
|
270
270
|
transitionTimingFunction: 'snappy',
|
|
271
271
|
},
|
|
272
|
-
'&[data-starting-style]': {
|
|
272
|
+
'&[data-starting-style]': {
|
|
273
|
+
opacity: '0 !custom',
|
|
274
|
+
scale: 'enter',
|
|
275
|
+
},
|
|
273
276
|
},
|
|
274
277
|
'@media (prefers-reduced-motion: reduce)': {
|
|
275
|
-
transitionDuration: '
|
|
278
|
+
transitionDuration: '150',
|
|
276
279
|
transitionProperty: 'opacity !custom',
|
|
277
280
|
selectors: {
|
|
278
|
-
'&[data-ending-style], &[data-starting-style]': {
|
|
281
|
+
'&[data-ending-style], &[data-starting-style]': { scale: 'none !custom' },
|
|
279
282
|
},
|
|
280
283
|
},
|
|
281
284
|
},
|
|
@@ -283,10 +286,7 @@ namespace styles {
|
|
|
283
286
|
{ id: 'tds/web/date-picker/popup' },
|
|
284
287
|
)
|
|
285
288
|
|
|
286
|
-
export const positioner = style(
|
|
287
|
-
{ zIndex: '50 !custom' },
|
|
288
|
-
{ id: 'tds/web/date-picker/positioner' },
|
|
289
|
-
)
|
|
289
|
+
export const positioner = style({ zIndex: 'popover' }, { id: 'tds/web/date-picker/positioner' })
|
|
290
290
|
|
|
291
291
|
export const trigger = variants(
|
|
292
292
|
{
|
|
@@ -300,39 +300,39 @@ namespace styles {
|
|
|
300
300
|
minWidth: '224',
|
|
301
301
|
position: 'relative',
|
|
302
302
|
outlineColor: 'transparent !custom',
|
|
303
|
-
outlineOffset: '
|
|
303
|
+
outlineOffset: '2',
|
|
304
304
|
outlineStyle: 'solid !custom',
|
|
305
|
-
outlineWidth: '
|
|
305
|
+
outlineWidth: '2',
|
|
306
306
|
textAlign: 'start',
|
|
307
|
-
transitionDuration: '
|
|
307
|
+
transitionDuration: '160',
|
|
308
308
|
transitionProperty:
|
|
309
|
-
'background-color, border-color, color, opacity, outline-color,
|
|
309
|
+
'background-color, border-color, color, opacity, outline-color, scale !custom',
|
|
310
310
|
transitionTimingFunction: 'snappy',
|
|
311
311
|
selectors: {
|
|
312
312
|
'&:active:not(:disabled)': {
|
|
313
|
-
|
|
314
|
-
transitionDuration: '
|
|
313
|
+
scale: 'press',
|
|
314
|
+
transitionDuration: '100',
|
|
315
315
|
},
|
|
316
|
-
'&:disabled': { cursor: 'default', opacity: '
|
|
316
|
+
'&:disabled': { cursor: 'default', opacity: 'disabled' },
|
|
317
317
|
'&:focus-visible': { outlineColor: 'blue.700' },
|
|
318
318
|
'&::before': {
|
|
319
319
|
borderColor: 'transparent !custom',
|
|
320
320
|
borderRadius: 'inherit !custom',
|
|
321
321
|
borderStyle: 'solid !custom',
|
|
322
|
-
borderWidth: '
|
|
322
|
+
borderWidth: '2',
|
|
323
323
|
boxSizing: 'border-box',
|
|
324
324
|
content: '"" !custom',
|
|
325
325
|
inset: '0',
|
|
326
326
|
pointerEvents: 'none',
|
|
327
327
|
position: 'absolute',
|
|
328
|
-
transitionDuration: '
|
|
328
|
+
transitionDuration: '160',
|
|
329
329
|
transitionProperty: 'border-color !custom',
|
|
330
330
|
transitionTimingFunction: 'snappy',
|
|
331
331
|
},
|
|
332
332
|
'&[aria-invalid="true"]::before': { borderColor: 'red.800' },
|
|
333
333
|
'&[aria-invalid="true"]:focus-visible': { outlineColor: 'red.800' },
|
|
334
334
|
'&:focus-visible::before': { borderColor: 'transparent !custom' },
|
|
335
|
-
'&[data-placeholder]': { color: 'gray.
|
|
335
|
+
'&[data-placeholder]': { color: 'gray.900' },
|
|
336
336
|
},
|
|
337
337
|
'@media (forced-colors: active)': {
|
|
338
338
|
outlineStyle: 'none !custom',
|
|
@@ -341,7 +341,7 @@ namespace styles {
|
|
|
341
341
|
'@media (prefers-reduced-motion: reduce)': {
|
|
342
342
|
transitionProperty:
|
|
343
343
|
'background-color, border-color, color, opacity, outline-color !custom',
|
|
344
|
-
selectors: { '&:active:not(:disabled)': {
|
|
344
|
+
selectors: { '&:active:not(:disabled)': { scale: 'none !custom' } },
|
|
345
345
|
},
|
|
346
346
|
},
|
|
347
347
|
defaultVariants: { size: 'medium', variant: 'filled' },
|
|
@@ -364,7 +364,7 @@ namespace styles {
|
|
|
364
364
|
},
|
|
365
365
|
small: {
|
|
366
366
|
borderRadius: '8',
|
|
367
|
-
columnGap: '
|
|
367
|
+
columnGap: '6',
|
|
368
368
|
height: '32',
|
|
369
369
|
paddingInline: '12',
|
|
370
370
|
typography: 'copy.13',
|
|
@@ -380,7 +380,7 @@ namespace styles {
|
|
|
380
380
|
backgroundColor: 'background.surface',
|
|
381
381
|
borderColor: 'grayAlpha.200',
|
|
382
382
|
borderStyle: 'solid !custom',
|
|
383
|
-
borderWidth: '
|
|
383
|
+
borderWidth: '1',
|
|
384
384
|
selectors: { '&:hover:not(:disabled)': { borderColor: 'grayAlpha.400' } },
|
|
385
385
|
},
|
|
386
386
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as BaseUi from '@base-ui/react/dialog'
|
|
2
2
|
import type { ComponentPropsWithRef } from 'react'
|
|
3
3
|
import type * as zyzz from 'zyzz'
|
|
4
|
-
import
|
|
4
|
+
import { Close as CloseIcon } from '../icons/Close.js'
|
|
5
5
|
import { style } from '../zyzz.config.js'
|
|
6
6
|
import { Button } from './Button.js'
|
|
7
7
|
|
|
@@ -90,7 +90,7 @@ export namespace Dialog {
|
|
|
90
90
|
<Button shape="icon" size="medium" variant="secondary" {...styles.close()} />
|
|
91
91
|
}
|
|
92
92
|
>
|
|
93
|
-
<
|
|
93
|
+
<CloseIcon />
|
|
94
94
|
</BaseUi.Dialog.Close>
|
|
95
95
|
)}
|
|
96
96
|
</BaseUi.Dialog.Popup>
|
|
@@ -134,13 +134,13 @@ export namespace styles {
|
|
|
134
134
|
{
|
|
135
135
|
backgroundColor: 'black',
|
|
136
136
|
inset: '0',
|
|
137
|
-
opacity: '
|
|
137
|
+
opacity: 'disabled',
|
|
138
138
|
position: 'fixed',
|
|
139
|
-
transitionDuration: '
|
|
139
|
+
transitionDuration: '240',
|
|
140
140
|
transitionProperty: 'opacity',
|
|
141
141
|
transitionTimingFunction: 'snappy',
|
|
142
142
|
selectors: {
|
|
143
|
-
'&[data-ending-style]': { opacity: '0 !custom', transitionDuration: '
|
|
143
|
+
'&[data-ending-style]': { opacity: '0 !custom', transitionDuration: '160' },
|
|
144
144
|
'&[data-starting-style]': { opacity: '0 !custom' },
|
|
145
145
|
},
|
|
146
146
|
},
|
|
@@ -151,8 +151,8 @@ export namespace styles {
|
|
|
151
151
|
export const close = style(
|
|
152
152
|
{
|
|
153
153
|
height: '36',
|
|
154
|
-
insetBlockStart: '
|
|
155
|
-
insetInlineEnd: '
|
|
154
|
+
insetBlockStart: '22',
|
|
155
|
+
insetInlineEnd: '22',
|
|
156
156
|
position: 'absolute',
|
|
157
157
|
},
|
|
158
158
|
{ id: 'tds/web/dialog/close' },
|
|
@@ -169,42 +169,51 @@ export namespace styles {
|
|
|
169
169
|
|
|
170
170
|
export const popup = style(
|
|
171
171
|
{
|
|
172
|
-
backgroundColor: '
|
|
172
|
+
backgroundColor: 'background.raised',
|
|
173
173
|
borderRadius: '16',
|
|
174
|
-
boxShadow: '
|
|
174
|
+
boxShadow: 'modal',
|
|
175
175
|
boxSizing: 'border-box',
|
|
176
176
|
color: 'foreground',
|
|
177
177
|
maxWidth: '448',
|
|
178
178
|
outline: 'none !custom',
|
|
179
179
|
padding: '24',
|
|
180
180
|
position: 'relative',
|
|
181
|
-
transitionDuration: '
|
|
182
|
-
transitionProperty: 'opacity, transform',
|
|
181
|
+
transitionDuration: '280',
|
|
182
|
+
transitionProperty: 'opacity, scale, transform',
|
|
183
183
|
transitionTimingFunction: 'spring',
|
|
184
184
|
typography: 'copy.14',
|
|
185
185
|
width: '100% !custom',
|
|
186
186
|
selectors: {
|
|
187
187
|
'&[data-ending-style]': {
|
|
188
188
|
opacity: '0 !custom',
|
|
189
|
-
|
|
190
|
-
transitionDuration: '
|
|
189
|
+
scale: 'enter',
|
|
190
|
+
transitionDuration: '180',
|
|
191
|
+
},
|
|
192
|
+
'&[data-starting-style]': {
|
|
193
|
+
opacity: '0 !custom',
|
|
194
|
+
scale: 'enter',
|
|
191
195
|
},
|
|
192
|
-
'&[data-starting-style]': { opacity: '0 !custom', transform: 'scale(0.96) !custom' },
|
|
193
196
|
},
|
|
194
197
|
'@media (max-width: 40rem)': {
|
|
195
|
-
borderBottomLeftRadius: '0
|
|
196
|
-
borderBottomRightRadius: '0
|
|
198
|
+
borderBottomLeftRadius: '0',
|
|
199
|
+
borderBottomRightRadius: '0',
|
|
197
200
|
maxWidth: 'none !custom',
|
|
198
201
|
paddingBottom: 'calc(24px + env(safe-area-inset-bottom, 0px)) !custom',
|
|
199
202
|
selectors: {
|
|
200
|
-
'&[data-ending-style]': { transform: 'translateY(100%) !custom' },
|
|
201
|
-
'&[data-starting-style]': {
|
|
203
|
+
'&[data-ending-style]': { scale: 'none !custom', transform: 'translateY(100%) !custom' },
|
|
204
|
+
'&[data-starting-style]': {
|
|
205
|
+
scale: 'none !custom',
|
|
206
|
+
transform: 'translateY(100%) !custom',
|
|
207
|
+
},
|
|
202
208
|
},
|
|
203
209
|
},
|
|
204
210
|
'@media (prefers-reduced-motion: reduce)': {
|
|
205
211
|
transitionProperty: 'opacity',
|
|
206
212
|
selectors: {
|
|
207
|
-
'&[data-ending-style], &[data-starting-style]': {
|
|
213
|
+
'&[data-ending-style], &[data-starting-style]': {
|
|
214
|
+
scale: 'none !custom',
|
|
215
|
+
transform: 'none !custom',
|
|
216
|
+
},
|
|
208
217
|
},
|
|
209
218
|
},
|
|
210
219
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as BaseUi from '@base-ui/react/drawer'
|
|
2
2
|
import type { ComponentPropsWithRef } from 'react'
|
|
3
3
|
import type * as zyzz from 'zyzz'
|
|
4
|
-
import
|
|
4
|
+
import { Close as CloseIcon } from '../icons/Close.js'
|
|
5
5
|
import { style } from '../zyzz.config.js'
|
|
6
6
|
import { Button } from './Button.js'
|
|
7
7
|
import { styles as dialog } from './Dialog.js'
|
|
@@ -107,7 +107,7 @@ export namespace Drawer {
|
|
|
107
107
|
<Button shape="icon" size="medium" variant="secondary" {...dialog.close()} />
|
|
108
108
|
}
|
|
109
109
|
>
|
|
110
|
-
<
|
|
110
|
+
<CloseIcon />
|
|
111
111
|
</BaseUi.Drawer.Close>
|
|
112
112
|
)}
|
|
113
113
|
</BaseUi.Drawer.Popup>
|
|
@@ -153,7 +153,7 @@ namespace styles {
|
|
|
153
153
|
inset: '0',
|
|
154
154
|
opacity: 'calc(0.4 * (1 - var(--drawer-swipe-progress, 0))) !custom',
|
|
155
155
|
position: 'fixed',
|
|
156
|
-
transitionDuration: '
|
|
156
|
+
transitionDuration: '320',
|
|
157
157
|
transitionProperty: 'opacity',
|
|
158
158
|
transitionTimingFunction: 'spring',
|
|
159
159
|
selectors: {
|
|
@@ -163,7 +163,7 @@ namespace styles {
|
|
|
163
163
|
transitionDuration: 'calc(var(--drawer-swipe-strength, 1) * 240ms) !custom',
|
|
164
164
|
},
|
|
165
165
|
'&[data-starting-style]': { opacity: '0 !custom' },
|
|
166
|
-
'&[data-swiping]': { transitionDuration: '
|
|
166
|
+
'&[data-swiping]': { transitionDuration: '0' },
|
|
167
167
|
},
|
|
168
168
|
},
|
|
169
169
|
{ id: 'tds/web/drawer/backdrop' },
|
|
@@ -176,8 +176,8 @@ namespace styles {
|
|
|
176
176
|
|
|
177
177
|
export const popup = style(
|
|
178
178
|
{
|
|
179
|
-
backgroundColor: '
|
|
180
|
-
boxShadow: '
|
|
179
|
+
backgroundColor: 'background.raised',
|
|
180
|
+
boxShadow: 'modal',
|
|
181
181
|
boxSizing: 'border-box',
|
|
182
182
|
color: 'foreground',
|
|
183
183
|
maxHeight: '100% !custom',
|
|
@@ -186,7 +186,7 @@ namespace styles {
|
|
|
186
186
|
overscrollBehavior: 'contain',
|
|
187
187
|
padding: '24',
|
|
188
188
|
position: 'relative',
|
|
189
|
-
transitionDuration: '
|
|
189
|
+
transitionDuration: '320',
|
|
190
190
|
transitionProperty: 'opacity, transform',
|
|
191
191
|
transitionTimingFunction: 'spring',
|
|
192
192
|
typography: 'copy.14',
|
|
@@ -237,7 +237,7 @@ namespace styles {
|
|
|
237
237
|
'&[data-swipe-direction="up"][data-ending-style], &[data-swipe-direction="up"][data-starting-style]':
|
|
238
238
|
{ transform: 'translateY(-100%) !custom' },
|
|
239
239
|
// The popup follows the pointer without lag while swiping.
|
|
240
|
-
'&[data-swiping]': { transitionDuration: '
|
|
240
|
+
'&[data-swiping]': { transitionDuration: '0', userSelect: 'none' },
|
|
241
241
|
},
|
|
242
242
|
'@media (prefers-reduced-motion: reduce)': {
|
|
243
243
|
transitionProperty: 'opacity',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as BaseUi from '@base-ui/react/field'
|
|
2
|
-
import { type ComponentPropsWithRef, useContext } from 'react'
|
|
2
|
+
import { type ComponentPropsWithRef, useContext, useRef, useState } from 'react'
|
|
3
3
|
import type * as zyzz from 'zyzz'
|
|
4
4
|
import { style } from '../zyzz.config.js'
|
|
5
5
|
import * as FieldVariant from './internal/FieldVariant.js'
|
|
@@ -37,21 +37,56 @@ export namespace Field {
|
|
|
37
37
|
* Owns validity, dirty, touched and filled state for one control and shares the variant with the
|
|
38
38
|
* controls inside. Without `variant`, it inherits the variant of an enclosing `Fieldset` or
|
|
39
39
|
* `Field`, falling back to `default`.
|
|
40
|
+
*
|
|
41
|
+
* When a native `form` submit finds the control invalid, such as an empty `required` input, the
|
|
42
|
+
* field validates and shows `Field.Error`. Outside `onBlur` mode, it then revalidates on each
|
|
43
|
+
* change, as inside Base UI's `Form`. The browser still moves focus to the first invalid control.
|
|
44
|
+
*
|
|
45
|
+
* `checkValidity()` and `reportValidity()` validate the field only after the user has interacted
|
|
46
|
+
* with the control, when the browser already matches it as `:user-invalid`.
|
|
40
47
|
*/
|
|
41
48
|
export function Root(props: Root.Props) {
|
|
42
|
-
const
|
|
49
|
+
const actions = useRef<BaseUi.Field.Root.Actions | null>(null)
|
|
50
|
+
const {
|
|
51
|
+
actionsRef = actions,
|
|
52
|
+
className,
|
|
53
|
+
onInvalidCapture,
|
|
54
|
+
size,
|
|
55
|
+
success = false,
|
|
56
|
+
validationMode,
|
|
57
|
+
variant,
|
|
58
|
+
vars,
|
|
59
|
+
...attributes
|
|
60
|
+
} = props
|
|
43
61
|
const inherited = useContext(FieldVariant.Context)
|
|
44
62
|
const resolved = variant ?? inherited ?? 'default'
|
|
63
|
+
const [submitted, setSubmitted] = useState(false)
|
|
45
64
|
|
|
46
65
|
return (
|
|
47
66
|
<FieldVariant.Context.Provider value={resolved}>
|
|
48
67
|
<BaseUi.Field.Root
|
|
49
68
|
{...attributes}
|
|
50
69
|
{...styles.root({ className, style: props.style, vars })}
|
|
70
|
+
actionsRef={actionsRef}
|
|
51
71
|
data-field=""
|
|
52
72
|
data-field-size={size}
|
|
53
73
|
data-success={success || undefined}
|
|
54
74
|
data-variant={resolved}
|
|
75
|
+
onInvalidCapture={(event) => {
|
|
76
|
+
onInvalidCapture?.(event)
|
|
77
|
+
|
|
78
|
+
// Base UI runs submit validation only inside its own Form. A native form fires `invalid`
|
|
79
|
+
// on each failing control instead, and the event does not bubble. `checkValidity()` and
|
|
80
|
+
// `reportValidity()` fire it too, but only a submit attempt marks the form's controls
|
|
81
|
+
// `:user-invalid` first. `invalid` targets only form controls.
|
|
82
|
+
if (!(event.target as Element).matches(':user-invalid')) return
|
|
83
|
+
|
|
84
|
+
actionsRef.current?.validate()
|
|
85
|
+
setSubmitted(true)
|
|
86
|
+
}}
|
|
87
|
+
// Base UI's Form counts submits to revalidate `onSubmit` fields on change. A native
|
|
88
|
+
// form has no count, so a failed submit switches the field to `onChange`.
|
|
89
|
+
validationMode={submitted && validationMode !== 'onBlur' ? 'onChange' : validationMode}
|
|
55
90
|
/>
|
|
56
91
|
</FieldVariant.Context.Provider>
|
|
57
92
|
)
|
|
@@ -171,7 +206,7 @@ namespace styles {
|
|
|
171
206
|
{
|
|
172
207
|
color: 'gray.900',
|
|
173
208
|
margin: '0',
|
|
174
|
-
transitionDuration: '
|
|
209
|
+
transitionDuration: '200',
|
|
175
210
|
transitionProperty: 'color, filter, opacity, transform !custom',
|
|
176
211
|
transitionTimingFunction: 'snappy',
|
|
177
212
|
typography: 'label.14',
|
|
@@ -192,7 +227,7 @@ namespace styles {
|
|
|
192
227
|
pointerEvents: 'none',
|
|
193
228
|
position: 'absolute',
|
|
194
229
|
transform: 'translateY(-4px) !custom',
|
|
195
|
-
transitionDuration: '
|
|
230
|
+
transitionDuration: '150',
|
|
196
231
|
},
|
|
197
232
|
'[data-variant="setting"] > &': { gridColumn: '1 !custom', typography: 'copy.14' },
|
|
198
233
|
'[data-variant="setting"][data-field-size="small"] > &': { typography: 'copy.13' },
|
|
@@ -214,7 +249,7 @@ namespace styles {
|
|
|
214
249
|
export const error = style(
|
|
215
250
|
{
|
|
216
251
|
color: 'red.900',
|
|
217
|
-
transitionDuration: '
|
|
252
|
+
transitionDuration: '200',
|
|
218
253
|
transitionProperty: 'color, filter, opacity, transform !custom',
|
|
219
254
|
transitionTimingFunction: 'snappy',
|
|
220
255
|
typography: 'label.14',
|
|
@@ -233,7 +268,7 @@ namespace styles {
|
|
|
233
268
|
opacity: '0 !custom',
|
|
234
269
|
position: 'absolute',
|
|
235
270
|
transform: 'translateY(4px) !custom',
|
|
236
|
-
transitionDuration: '
|
|
271
|
+
transitionDuration: '150',
|
|
237
272
|
},
|
|
238
273
|
'&[data-starting-style]': {
|
|
239
274
|
color: 'gray.900',
|
|
@@ -263,7 +298,7 @@ namespace styles {
|
|
|
263
298
|
export const label = style(
|
|
264
299
|
{
|
|
265
300
|
color: 'foreground',
|
|
266
|
-
transitionDuration: '
|
|
301
|
+
transitionDuration: '160',
|
|
267
302
|
transitionProperty: 'color, opacity !custom',
|
|
268
303
|
transitionTimingFunction: 'snappy',
|
|
269
304
|
typography: 'label.14.strong',
|
|
@@ -275,7 +310,7 @@ namespace styles {
|
|
|
275
310
|
':has(> [data-size="small"], > * > [data-size="small"]) > &': {
|
|
276
311
|
typography: 'label.12.strong',
|
|
277
312
|
},
|
|
278
|
-
'[data-disabled] &': { opacity: '
|
|
313
|
+
'[data-disabled] &': { opacity: 'disabled' },
|
|
279
314
|
'[data-variant="setting"] > &': { gridColumn: '1 !custom', typography: 'copy.15.strong' },
|
|
280
315
|
'[data-variant="setting"][data-field-size="small"] > &': {
|
|
281
316
|
typography: 'copy.14.strong',
|
|
@@ -289,7 +324,7 @@ namespace styles {
|
|
|
289
324
|
pointerEvents: 'none',
|
|
290
325
|
transform: 'translateY(10px) !custom',
|
|
291
326
|
transformOrigin: 'left top !custom',
|
|
292
|
-
transitionDuration: '
|
|
327
|
+
transitionDuration: '240',
|
|
293
328
|
transitionProperty: 'color, opacity, transform !custom',
|
|
294
329
|
transitionTimingFunction: 'spring',
|
|
295
330
|
typography: 'label.14',
|
|
@@ -326,7 +361,7 @@ namespace styles {
|
|
|
326
361
|
// Labels sit 8px above medium and large controls, and 6px above small ones.
|
|
327
362
|
rowGap: '8',
|
|
328
363
|
selectors: {
|
|
329
|
-
'&:has(> [data-size="small"], > * > [data-size="small"])': { rowGap: '
|
|
364
|
+
'&:has(> [data-size="small"], > * > [data-size="small"])': { rowGap: '6' },
|
|
330
365
|
// A list of options reads as one block under its label, so it sits further away than one control.
|
|
331
366
|
'&:has(> [role="radiogroup"], > [role="group"] [role="checkbox"])': { rowGap: '12' },
|
|
332
367
|
'&[data-variant="setting"]': {
|
|
@@ -338,7 +373,7 @@ namespace styles {
|
|
|
338
373
|
},
|
|
339
374
|
'&[data-variant="setting"][data-field-size="small"]': {
|
|
340
375
|
paddingBlock: '12',
|
|
341
|
-
rowGap: '
|
|
376
|
+
rowGap: '2',
|
|
342
377
|
},
|
|
343
378
|
},
|
|
344
379
|
},
|
|
@@ -33,7 +33,11 @@ export function Frame(props: Frame.Props) {
|
|
|
33
33
|
export namespace Frame {
|
|
34
34
|
export type Props = Root.Props
|
|
35
35
|
|
|
36
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* A row of action buttons that share its width equally. Each action stays at least as wide as
|
|
38
|
+
* its label, and a `shape="icon"` button keeps its own size. If you stack the actions in a column,
|
|
39
|
+
* set `flex-basis: auto` on them so each keeps its height.
|
|
40
|
+
*/
|
|
37
41
|
export function Actions(props: Actions.Props) {
|
|
38
42
|
const { className, vars, ...attributes } = props
|
|
39
43
|
|
|
@@ -44,7 +48,10 @@ export namespace Frame {
|
|
|
44
48
|
export type Props = ComponentPropsWithRef<'div'> & zyzz.Props.Variants<typeof styles.actions>
|
|
45
49
|
}
|
|
46
50
|
|
|
47
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The main content area. It grows to fill the frame and never scrolls, so the container that holds
|
|
53
|
+
* the frame handles overflow. A direct child `Rows` renders as a filled, rounded well.
|
|
54
|
+
*/
|
|
48
55
|
export function Body(props: Body.Props) {
|
|
49
56
|
const { className, vars, ...attributes } = props
|
|
50
57
|
|
|
@@ -173,7 +180,15 @@ export namespace Frame {
|
|
|
173
180
|
namespace styles {
|
|
174
181
|
export const actions = variants(
|
|
175
182
|
{
|
|
176
|
-
base: {
|
|
183
|
+
base: {
|
|
184
|
+
columnGap: '12',
|
|
185
|
+
display: 'flex',
|
|
186
|
+
selectors: {
|
|
187
|
+
// Actions keep at least their content width, icon buttons stay circles, and `:where` keeps
|
|
188
|
+
// the rule at single-class specificity so a caller can restore content-sized actions.
|
|
189
|
+
'& > :where(:not([data-shape="icon"]))': { flexBasis: '0', flexGrow: '1 !custom' },
|
|
190
|
+
},
|
|
191
|
+
},
|
|
177
192
|
},
|
|
178
193
|
{ id: 'tds/web/frame/actions' },
|
|
179
194
|
)
|
|
@@ -183,9 +198,15 @@ namespace styles {
|
|
|
183
198
|
base: {
|
|
184
199
|
color: 'gray.900',
|
|
185
200
|
flexGrow: '1 !custom',
|
|
186
|
-
minHeight: '0',
|
|
187
|
-
overflowY: 'auto',
|
|
188
201
|
typography: 'copy.14',
|
|
202
|
+
selectors: {
|
|
203
|
+
// The well clips its rows so their hover fills follow its corners.
|
|
204
|
+
'& > [data-rows]': {
|
|
205
|
+
backgroundColor: 'grayAlpha.100',
|
|
206
|
+
borderRadius: '12',
|
|
207
|
+
overflow: 'hidden',
|
|
208
|
+
},
|
|
209
|
+
},
|
|
189
210
|
},
|
|
190
211
|
},
|
|
191
212
|
{ id: 'tds/web/frame/body' },
|
|
@@ -206,18 +227,18 @@ namespace styles {
|
|
|
206
227
|
height: '32',
|
|
207
228
|
justifyContent: 'center',
|
|
208
229
|
outlineColor: 'transparent !custom',
|
|
209
|
-
outlineOffset: '
|
|
230
|
+
outlineOffset: '0',
|
|
210
231
|
outlineStyle: 'solid !custom',
|
|
211
|
-
outlineWidth: '
|
|
232
|
+
outlineWidth: '2',
|
|
212
233
|
padding: '0',
|
|
213
|
-
transitionDuration: '
|
|
234
|
+
transitionDuration: '160',
|
|
214
235
|
transitionProperty: 'background-color, outline-color, outline-offset, transform',
|
|
215
236
|
transitionTimingFunction: 'snappy',
|
|
216
237
|
width: '32',
|
|
217
238
|
selectors: {
|
|
218
239
|
'&:hover': { backgroundColor: 'grayAlpha.200' },
|
|
219
240
|
'&:active': { backgroundColor: 'grayAlpha.300', transform: 'scale(0.96) !custom' },
|
|
220
|
-
'&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '
|
|
241
|
+
'&:focus-visible': { outlineColor: 'blue.700', outlineOffset: '2' },
|
|
221
242
|
},
|
|
222
243
|
'@media (prefers-reduced-motion: reduce)': {
|
|
223
244
|
transitionProperty: 'background-color, outline-color',
|
|
@@ -112,7 +112,7 @@ namespace styles {
|
|
|
112
112
|
export const arc = style(
|
|
113
113
|
{
|
|
114
114
|
stroke: 'currentColor !custom',
|
|
115
|
-
transitionDuration: '
|
|
115
|
+
transitionDuration: '240',
|
|
116
116
|
transitionProperty: 'stroke-dasharray',
|
|
117
117
|
transitionTimingFunction: 'spring',
|
|
118
118
|
'@media (prefers-reduced-motion: reduce)': { transitionProperty: 'none' },
|
|
@@ -287,7 +287,7 @@ namespace styles {
|
|
|
287
287
|
style: {
|
|
288
288
|
borderRadius: '12',
|
|
289
289
|
height: '40',
|
|
290
|
-
paddingInlineEnd: '
|
|
290
|
+
paddingInlineEnd: '10',
|
|
291
291
|
paddingInlineStart: '16',
|
|
292
292
|
selectors: {
|
|
293
293
|
'& [data-hex-copy]': {
|
|
@@ -325,8 +325,8 @@ namespace styles {
|
|
|
325
325
|
columnGap: '12',
|
|
326
326
|
display: 'flex',
|
|
327
327
|
justifyContent: 'space-between',
|
|
328
|
-
transitionDuration: '
|
|
329
|
-
transitionProperty: 'background-color,
|
|
328
|
+
transitionDuration: '160',
|
|
329
|
+
transitionProperty: 'background-color, scale !custom',
|
|
330
330
|
transitionTimingFunction: 'snappy',
|
|
331
331
|
selectors: {
|
|
332
332
|
'& [data-stretch]::after': {
|
|
@@ -339,12 +339,12 @@ namespace styles {
|
|
|
339
339
|
'&:has([data-stretch]:hover)': { backgroundColor: 'gray.200' },
|
|
340
340
|
'&:has([data-stretch]:active)': {
|
|
341
341
|
backgroundColor: 'gray.300',
|
|
342
|
-
|
|
342
|
+
scale: 'press',
|
|
343
343
|
},
|
|
344
344
|
},
|
|
345
345
|
'@media (prefers-reduced-motion: reduce)': {
|
|
346
346
|
transitionProperty: 'background-color !custom',
|
|
347
|
-
selectors: { '&:has([data-stretch]:active)': {
|
|
347
|
+
selectors: { '&:has([data-stretch]:active)': { scale: 'none !custom' } },
|
|
348
348
|
},
|
|
349
349
|
},
|
|
350
350
|
inline: {},
|
|
@@ -33,7 +33,7 @@ namespace styles {
|
|
|
33
33
|
base: {
|
|
34
34
|
alignItems: 'center',
|
|
35
35
|
// grayAlpha 100 in light mode and 300 in dark, where 100 reads as black.
|
|
36
|
-
backgroundColor: '
|
|
36
|
+
backgroundColor: 'background.chip',
|
|
37
37
|
borderRadius: '12',
|
|
38
38
|
boxSizing: 'border-box',
|
|
39
39
|
color: 'foreground',
|
|
@@ -194,21 +194,21 @@ namespace styles {
|
|
|
194
194
|
justifyContent: 'center',
|
|
195
195
|
opacity: '0 !custom',
|
|
196
196
|
outlineColor: 'transparent !custom',
|
|
197
|
-
outlineOffset: '
|
|
197
|
+
outlineOffset: '2',
|
|
198
198
|
outlineStyle: 'solid !custom',
|
|
199
|
-
outlineWidth: '
|
|
199
|
+
outlineWidth: '2',
|
|
200
200
|
padding: '0',
|
|
201
201
|
pointerEvents: 'none',
|
|
202
202
|
position: 'relative',
|
|
203
203
|
transform: 'scale(0.6) !custom',
|
|
204
|
-
transitionDuration: '
|
|
204
|
+
transitionDuration: '160',
|
|
205
205
|
transitionProperty: 'background-color, opacity, outline-color, transform, visibility !custom',
|
|
206
206
|
transitionTimingFunction: 'snappy',
|
|
207
207
|
visibility: 'hidden',
|
|
208
208
|
width: '24',
|
|
209
209
|
selectors: {
|
|
210
|
-
'&::after': { content: '"" !custom', inset: '-
|
|
211
|
-
'&:active': { transform: 'scale(0.9) !custom', transitionDuration: '
|
|
210
|
+
'&::after': { content: '"" !custom', inset: '-8', position: 'absolute' },
|
|
211
|
+
'&:active': { transform: 'scale(0.9) !custom', transitionDuration: '100' },
|
|
212
212
|
'&:focus-visible': { outlineColor: 'blue.700' },
|
|
213
213
|
'&:hover': { backgroundColor: 'grayAlpha.300' },
|
|
214
214
|
'[data-filled] &': {
|
|
@@ -218,11 +218,11 @@ namespace styles {
|
|
|
218
218
|
visibility: 'visible',
|
|
219
219
|
},
|
|
220
220
|
'[data-filled] &:active': { transform: 'scale(0.9) !custom' },
|
|
221
|
-
'[data-size="large"] > &:last-child': { marginInlineEnd: '-
|
|
221
|
+
'[data-size="large"] > &:last-child': { marginInlineEnd: '-4' },
|
|
222
222
|
'[data-size="medium"] > &': { fontSize: '12', height: '20', width: '20' },
|
|
223
|
-
'[data-size="medium"] > &:last-child': { marginInlineEnd: '-
|
|
223
|
+
'[data-size="medium"] > &:last-child': { marginInlineEnd: '-6' },
|
|
224
224
|
'[data-size="small"] > &': { fontSize: '12', height: '16', width: '16' },
|
|
225
|
-
'[data-size="small"] > &:last-child': { marginInlineEnd: '-
|
|
225
|
+
'[data-size="small"] > &:last-child': { marginInlineEnd: '-4' },
|
|
226
226
|
// A small stacked field takes the medium size, so Clear takes the medium size too.
|
|
227
227
|
'[data-variant="stacked"] > [data-size="small"] > &': {
|
|
228
228
|
fontSize: '12',
|
|
@@ -230,7 +230,7 @@ namespace styles {
|
|
|
230
230
|
width: '20',
|
|
231
231
|
},
|
|
232
232
|
'[data-variant="stacked"] > [data-size="small"] > &:last-child': {
|
|
233
|
-
marginInlineEnd: '-
|
|
233
|
+
marginInlineEnd: '-6',
|
|
234
234
|
},
|
|
235
235
|
},
|
|
236
236
|
'@media (forced-colors: active)': {
|
|
@@ -262,8 +262,8 @@ namespace styles {
|
|
|
262
262
|
selectors: {
|
|
263
263
|
'&::-webkit-search-cancel-button': { appearance: 'none !custom', display: 'none' },
|
|
264
264
|
'&::placeholder': {
|
|
265
|
-
color: 'grayAlpha.
|
|
266
|
-
transitionDuration: '
|
|
265
|
+
color: 'grayAlpha.900',
|
|
266
|
+
transitionDuration: '160',
|
|
267
267
|
transitionProperty: 'opacity !custom',
|
|
268
268
|
transitionTimingFunction: 'snappy',
|
|
269
269
|
},
|