@webiny/admin-ui 6.2.0-beta.0 → 6.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/Accordion/Accordion.d.ts +1 -1
  2. package/Accordion/Accordion.mdx +437 -463
  3. package/Accordion/components/AccordionContent.js.map +1 -1
  4. package/Alert/Alert.d.ts +1 -1
  5. package/Alert/Alert.js.map +1 -1
  6. package/Alert/Alert.mdx +80 -83
  7. package/AutoComplete/AutoComplete.mdx +63 -55
  8. package/Avatar/Avatar.d.ts +1 -1
  9. package/Avatar/Avatar.js.map +1 -1
  10. package/Avatar/Avatar.mdx +52 -43
  11. package/Button/Button.d.ts +1 -1
  12. package/Button/Button.js.map +1 -1
  13. package/Button/Button.mdx +50 -42
  14. package/Button/IconButton.d.ts +1 -1
  15. package/Button/IconButton.js.map +1 -1
  16. package/Card/components/CardContent.d.ts +1 -1
  17. package/Card/components/CardTitle.d.ts +1 -1
  18. package/Checkbox/Checkbox.mdx +51 -49
  19. package/Checkbox/primitives/CheckboxPrimitive.d.ts +1 -1
  20. package/CheckboxGroup/CheckboxGroup.mdx +51 -53
  21. package/CodeEditor/CodeEditor.mdx +44 -43
  22. package/ColorPicker/ColorPicker.mdx +41 -40
  23. package/Command/components/Item.d.ts +1 -1
  24. package/Command/components/Item.js.map +1 -1
  25. package/DataTable/DataTable.mdx +537 -542
  26. package/DataTable/components/ColumnSorter.d.ts +1 -1
  27. package/DataTable/components/ColumnSorter.js.map +1 -1
  28. package/Dialog/Dialog.js.map +1 -1
  29. package/Dialog/components/DialogContent.d.ts +1 -1
  30. package/Dialog/components/DialogContent.js +1 -1
  31. package/Dialog/components/DialogContent.js.map +1 -1
  32. package/Dialog/components/DialogFooter.d.ts +1 -1
  33. package/Dialog/components/DialogFooter.js.map +1 -1
  34. package/Dialog/components/DialogTitle.d.ts +1 -1
  35. package/Drawer/Drawer.js.map +1 -1
  36. package/Drawer/Drawer.mdx +73 -64
  37. package/Drawer/components/DrawerContent.d.ts +1 -1
  38. package/Drawer/components/DrawerContent.js.map +1 -1
  39. package/DropdownMenu/DropdownMenu.js.map +1 -1
  40. package/DropdownMenu/DropdownMenu.mdx +155 -256
  41. package/DropdownMenu/components/DropdownMenuCheckboxItem.js.map +1 -1
  42. package/DropdownMenu/components/DropdownMenuLabel.js.map +1 -1
  43. package/FilePicker/FilePicker.mdx +69 -69
  44. package/FilePicker/primitives/FilePickerPrimitive.d.ts +19 -19
  45. package/FilePicker/primitives/FilePickerPrimitive.js.map +1 -1
  46. package/FilePicker/primitives/components/Trigger.d.ts +1 -1
  47. package/FilePicker/primitives/components/previews/TextOnlyPreview/TextOnlyPreview.d.ts +1 -1
  48. package/FilePicker/primitives/components/previews/variants.d.ts +1 -1
  49. package/FilePicker/primitives/components/types.js.map +1 -1
  50. package/FormComponent/Description.d.ts +1 -1
  51. package/FormComponent/ErrorMessage.d.ts +1 -1
  52. package/FormComponent/Note.d.ts +1 -1
  53. package/Grid/Grid.d.ts +2 -2
  54. package/Grid/Grid.js.map +1 -1
  55. package/Grid/Grid.mdx +111 -121
  56. package/HeaderBar/HeaderBar.mdx +98 -99
  57. package/Heading/Heading.d.ts +1 -1
  58. package/Heading/Heading.js.map +1 -1
  59. package/Heading/Heading.mdx +63 -58
  60. package/Icon/Icon.d.ts +1 -1
  61. package/Icon/Icon.js.map +1 -1
  62. package/Icon/Icon.mdx +79 -147
  63. package/IconPicker/IconPicker.mdx +66 -64
  64. package/IconPicker/primitives/IconPickerPrimitive.d.ts +1 -1
  65. package/IconPicker/primitives/components/IconPickerTrigger.d.ts +1 -1
  66. package/Image/Image.js.map +1 -1
  67. package/Input/Input.mdx +67 -56
  68. package/Input/InputPrimitive.d.ts +1 -1
  69. package/Label/Label.d.ts +1 -1
  70. package/Label/Label.js.map +1 -1
  71. package/Label/Label.mdx +42 -42
  72. package/Label/components/LabelDescription.d.ts +1 -1
  73. package/Label/components/LabelRequired.d.ts +1 -1
  74. package/Label/components/LabelValue.d.ts +1 -1
  75. package/Link/Link.d.ts +1 -1
  76. package/Link/Link.mdx +129 -116
  77. package/List/List.d.ts +1 -1
  78. package/List/List.js.map +1 -1
  79. package/List/List.mdx +317 -329
  80. package/List/components/ListItem.d.ts +1 -1
  81. package/List/components/ListItem.js.map +1 -1
  82. package/Loader/Loader.d.ts +2 -2
  83. package/Loader/Loader.js.map +1 -1
  84. package/Loader/Loader.mdx +96 -91
  85. package/MultiAutoComplete/MultiAutoComplete.mdx +52 -51
  86. package/MultiAutoComplete/primitives/components/MultiAutoCompleteInput.d.ts +1 -1
  87. package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteListOptionsPresenter.js.map +1 -1
  88. package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteListOptionsPresenterWithUniqueValues.js.map +1 -1
  89. package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteSelectedOptionsPresenter.js.map +1 -1
  90. package/MultiAutoComplete/primitives/presenters/MultiAutoCompleteTemporaryOptionPresenter.js.map +1 -1
  91. package/MultiFilePicker/MultiFilePicker.mdx +84 -80
  92. package/MultiFilePicker/primitives/MultiFilePickerPrimitive.js.map +1 -1
  93. package/Popover/Popover.mdx +112 -118
  94. package/Popover/primitives/components/PopoverArrow.d.ts +1 -1
  95. package/Popover/primitives/components/PopoverContent.d.ts +1 -1
  96. package/RadioGroup/RadioGroup.mdx +62 -59
  97. package/RadioGroup/primitives/RadioGroupPrimitive.js.map +1 -1
  98. package/RangeSlider/RangeSlider.mdx +48 -47
  99. package/RangeSlider/primitives/RangeSliderPrimitive.js.map +1 -1
  100. package/RangeSlider/primitives/components/RangeSliderValue.d.ts +1 -1
  101. package/RangeSlider/primitives/components/RangeSliderValue.js.map +1 -1
  102. package/ScrollArea/ScrollArea.js.map +1 -1
  103. package/SegmentedControl/SegmentedControl.mdx +59 -59
  104. package/SegmentedControl/primitives/SegmentedControlPrimitive.d.ts +1 -1
  105. package/SegmentedControl/primitives/SegmentedControlPrimitive.js.map +1 -1
  106. package/Select/Select.mdx +52 -43
  107. package/Select/primitives/components/SelectTrigger.d.ts +1 -1
  108. package/Select/primitives/components/SelectTrigger.js.map +1 -1
  109. package/Select/primitives/presenters/SelectPresenter.d.ts +1 -1
  110. package/Separator/Separator.d.ts +1 -1
  111. package/Separator/Separator.mdx +139 -150
  112. package/Sidebar/Sidebar.js.map +1 -1
  113. package/Sidebar/Sidebar.mdx +66 -88
  114. package/Sidebar/components/items/SidebarMenuSubItemIndentation.d.ts +1 -1
  115. package/Sidebar/components/items/SidebarMenuSubItemIndentation.js.map +1 -1
  116. package/Skeleton/Skeleton.d.ts +1 -1
  117. package/Skeleton/Skeleton.js.map +1 -1
  118. package/Skeleton/Skeleton.mdx +37 -37
  119. package/Slider/Slider.mdx +48 -47
  120. package/Slider/primitives/SliderPrimitive.js.map +1 -1
  121. package/Slider/primitives/components/SliderSideValue.d.ts +1 -1
  122. package/Slider/primitives/components/SliderSideValue.js.map +1 -1
  123. package/Slider/primitives/components/SliderTooltip.d.ts +1 -1
  124. package/SteppedProgress/components/SteppedProgressIcon.d.ts +1 -1
  125. package/SteppedProgress/components/SteppedProgressIcon.js.map +1 -1
  126. package/SteppedProgress/components/SteppedProgressIndicator.d.ts +1 -1
  127. package/SteppedProgress/components/SteppedProgressIndicator.js.map +1 -1
  128. package/Switch/Switch.mdx +44 -42
  129. package/Switch/primitives/SwitchPrimitive.d.ts +1 -1
  130. package/Table/Table.d.ts +1 -1
  131. package/Table/Table.js.map +1 -1
  132. package/Table/components/Direction.d.ts +1 -1
  133. package/Table/components/Direction.js.map +1 -1
  134. package/Table/components/Header.d.ts +1 -1
  135. package/Table/components/Header.js.map +1 -1
  136. package/Table/components/Resizer.d.ts +1 -1
  137. package/Table/components/Resizer.js.map +1 -1
  138. package/Table/components/Row.d.ts +1 -1
  139. package/Table/components/Row.js.map +1 -1
  140. package/Tabs/Tabs.mdx +297 -292
  141. package/Tabs/components/Content.d.ts +1 -1
  142. package/Tabs/components/List.d.ts +1 -1
  143. package/Tabs/components/Trigger.d.ts +1 -1
  144. package/Tag/Tag.d.ts +1 -1
  145. package/Tag/Tag.js.map +1 -1
  146. package/Tag/Tag.mdx +68 -64
  147. package/Tags/primitives/TagsPrimitive.js.map +1 -1
  148. package/Text/Text.d.ts +1 -1
  149. package/Text/Text.mdx +54 -48
  150. package/Textarea/Textarea.mdx +49 -39
  151. package/Textarea/TextareaPrimitive.d.ts +1 -1
  152. package/Textarea/TextareaPrimitive.js.map +1 -1
  153. package/Toast/Toast.mdx +63 -53
  154. package/Toast/components/ToastRoot.d.ts +1 -1
  155. package/Tooltip/Tooltip.mdx +197 -198
  156. package/Tooltip/components/TooltipArrow.d.ts +1 -1
  157. package/Tooltip/components/TooltipContent.d.ts +1 -1
  158. package/Tree/components/Item.d.ts +1 -1
  159. package/Tree/useTree.d.ts +1 -1
  160. package/Widget/components/WidgetContent.d.ts +1 -1
  161. package/package.json +15 -15
package/Avatar/Avatar.mdx CHANGED
@@ -1,6 +1,6 @@
1
- import { Canvas, Meta, Controls } from '@storybook/addon-docs/blocks';
1
+ import { Canvas, Meta, Controls } from "@storybook/addon-docs/blocks";
2
2
 
3
- import * as AvatarStories from './Avatar.stories';
3
+ import * as AvatarStories from "./Avatar.stories";
4
4
 
5
5
  <Meta of={AvatarStories} />
6
6
 
@@ -15,30 +15,30 @@ import React from "react";
15
15
  import { Avatar } from "@webiny/admin-ui";
16
16
 
17
17
  const AvatarExample = () => {
18
- return (
19
- <Avatar
20
- image={<Avatar.Image src="https://i.pravatar.cc/300" alt="User" />}
21
- fallback={<Avatar.Fallback>JD</Avatar.Fallback>}
22
- size="md"
23
- variant="strong"
24
- />
25
- );
26
- };
18
+ return (
19
+
20
+ <Avatar
21
+ image={<Avatar.Image src="https://i.pravatar.cc/300" alt="User" />}
22
+ fallback={<Avatar.Fallback>JD</Avatar.Fallback>}
23
+ size="md"
24
+ variant="strong"
25
+ />
26
+ ); };
27
27
 
28
28
  export default AvatarExample;
29
29
 
30
30
  ` } }
31
- additionalActions={[
32
- {
33
- title: 'Open in GitHub',
34
- onClick: () => {
35
- window.open(
36
- 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Avatar/Avatar.tsx',
37
- '_blank'
38
- );
39
- },
40
- }
41
- ]}
31
+ additionalActions={[
32
+ {
33
+ title: 'Open in GitHub',
34
+ onClick: () => {
35
+ window.open(
36
+ 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Avatar/Avatar.tsx',
37
+ '_blank'
38
+ );
39
+ },
40
+ }
41
+ ]}
42
42
  />
43
43
 
44
44
  <Controls of={AvatarStories.Documentation} />
@@ -48,14 +48,14 @@ import React from "react";
48
48
  import { Avatar } from "@webiny/admin-ui";
49
49
 
50
50
  const AvatarExample = () => {
51
- return (
52
- <Avatar
53
- image={<Avatar.Image src="https://i.pravatar.cc/300" alt="User" />}
54
- fallback={<Avatar.Fallback>JD</Avatar.Fallback>}
55
- size="md"
56
- variant="strong"
57
- />
58
- );
51
+ return (
52
+ <Avatar
53
+ image={<Avatar.Image src="https://i.pravatar.cc/300" alt="User" />}
54
+ fallback={<Avatar.Fallback>JD</Avatar.Fallback>}
55
+ size="md"
56
+ variant="strong"
57
+ />
58
+ );
59
59
  };
60
60
 
61
61
  export default AvatarExample;
@@ -71,14 +71,18 @@ import { ReactComponent as StormIcon } from "@webiny/icons/storm.svg";
71
71
  import { Avatar } from "@webiny/admin-ui";
72
72
 
73
73
  const AvatarExample = () => {
74
- return (
75
- <Avatar
76
- fallback={<Avatar.Fallback><StormIcon /></Avatar.Fallback>}
77
- size="md"
78
- variant="strong"
79
- />
80
- );
81
- };
74
+ return (
75
+
76
+ <Avatar
77
+ fallback={
78
+ <Avatar.Fallback>
79
+ <StormIcon />
80
+ </Avatar.Fallback>
81
+ }
82
+ size="md"
83
+ variant="strong"
84
+ />
85
+ ); };
82
86
 
83
87
  export default AvatarExample;
84
88
 
@@ -88,18 +92,23 @@ export default AvatarExample;
88
92
  ## Anatomy
89
93
 
90
94
  ### Size
91
- <img src="/images/storybook/avatar/size.png" alt="Size"/>
95
+
96
+ <img src="/images/storybook/avatar/size.png" alt="Size" />
92
97
 
93
98
  ### Type
94
- <img src="/images/storybook/avatar/type.png" alt="Type"/>
99
+
100
+ <img src="/images/storybook/avatar/type.png" alt="Type" />
95
101
 
96
102
  ### Style
97
- <img src="/images/storybook/avatar/style.png" alt="Style"/>
103
+
104
+ <img src="/images/storybook/avatar/style.png" alt="Style" />
98
105
 
99
106
  ## Usage
100
107
 
101
108
  ### Header
102
- <img src="/images/storybook/avatar/header.png" alt="Header"/>
109
+
110
+ <img src="/images/storybook/avatar/header.png" alt="Header" />
103
111
 
104
112
  ### Table
105
- <img src="/images/storybook/avatar/table.png" alt="Table"/>
113
+
114
+ <img src="/images/storybook/avatar/table.png" alt="Table" />
@@ -4,7 +4,7 @@ declare const buttonVariants: (props?: ({
4
4
  variant?: "primary" | "secondary" | "tertiary" | "ghost" | "ghost-negative" | null | undefined;
5
5
  size?: "sm" | "md" | "lg" | "xl" | null | undefined;
6
6
  contentLayout?: "text" | "icon" | "text-icon-start" | "text-icon-end" | null | undefined;
7
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children">, VariantProps<typeof buttonVariants> {
9
9
  text?: React.ReactNode;
10
10
  children?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","Slot","cn","cva","makeDecoratable","buttonWrapperVariants","variants","disabled","true","buttonVariants","variant","primary","secondary","tertiary","ghost","size","sm","md","lg","xl","contentLayout","text","icon","compoundVariants","className","defaultVariants","ButtonBase","asChild","children","iconPosition","containerClassName","rest","Comp","Root","cssClasses","createElement","Object","assign","Slottable","Button"],"sources":["Button.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { Slot } from \"radix-ui\";\nimport { cn, cva, type VariantProps, makeDecoratable } from \"~/utils.js\";\n\nconst buttonWrapperVariants = cva(\"inline-block\", {\n variants: {\n disabled: {\n true: \"cursor-not-allowed\"\n }\n }\n});\n\nconst buttonVariants = cva(\n [\n \"border-transparent rounded font-sans inline-flex items-center justify-center whitespace-nowrap ring-offset-background transition-colors no-underline! cursor-pointer\",\n \"aria-disabled:pointer-events-none\",\n \"focus-visible:outline-none focus-visible:border-accent-default\"\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary text-neutral-light fill-neutral-base\",\n \"hover:bg-primary-strong\",\n \"active:bg-primary-xstrong\",\n \"aria-disabled:bg-primary-disabled\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n secondary: [\n \"bg-neutral-dimmed text-neutral-strong fill-neutral-xstrong\",\n \"hover:bg-neutral-muted\",\n \"active:bg-neutral-strong\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-strong\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n tertiary: [\n \"bg-neutral-base text-neutral-strong border-neutral-muted fill-neutral-xstrong\",\n \"hover:bg-neutral-light\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:border-neutral-dimmed aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-strong\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n ghost: [\n \"bg-transparent text-neutral-strong fill-neutral-xstrong\",\n \"hover:bg-neutral-dimmed\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-strong\"\n ],\n \"ghost-negative\": [\n \"bg-transparent text-neutral-light fill-neutral-base\",\n \"hover:bg-neutral-base/20\",\n \"active:bg-neutral-base/30\",\n \"aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-base/50\",\n \"focus-visible:border-neutral-base!\"\n ]\n },\n size: {\n sm: [\n \"text-sm border-sm rounded-sm [&>svg]:size-md\",\n \"py-[calc(var(--padding-xs)-(var(--border-width-sm)))] px-[calc(var(--padding-sm)-(var(--border-width-sm)))]\"\n ],\n md: [\n \"text-md border-sm rounded-md [&>svg]:size-md\",\n \"py-[calc(var(--padding-xs-plus)-(var(--border-width-sm)))] px-[calc(var(--padding-sm-extra)-(var(--border-width-sm)))]\"\n ],\n lg: [\n \"text-md border-sm rounded-md [&>svg]:size-md-plus\",\n \"py-[calc(var(--padding-sm-plus)-(var(--border-width-sm)))] px-[calc(var(--padding-md)-(var(--border-width-sm)))]\"\n ],\n xl: [\n \"text-lg font-semibold border-lg rounded-md [&>svg]:size-lg\",\n \"py-[calc(theme(padding.md-plus)-(var(--border-width-md)))] px-[calc(var(--padding-md)-(var(--border-width-md)))]\"\n ]\n },\n contentLayout: {\n text: \"\",\n icon: \"\",\n \"text-icon-start\": \"\",\n \"text-icon-end\": \"\"\n }\n },\n compoundVariants: [\n {\n size: \"xl\",\n variant: \"ghost\",\n className: \"focus-visible:border-md\"\n },\n {\n size: \"sm\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-xs)-(var(--border-width-sm)))]\"\n },\n {\n size: \"sm\",\n contentLayout: \"text-icon-start\",\n className: \"pl-[calc(var(--padding-xs)-(var(--border-width-sm)))] [&>svg]:mr-xs\"\n },\n {\n size: \"sm\",\n contentLayout: \"text-icon-end\",\n className: \"pr-[calc(var(--padding-xs)-(var(--border-width-sm)))] [&>svg]:ml-xs\"\n },\n {\n size: \"md\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-sm)-(var(--border-width-sm)))]\"\n },\n {\n size: \"md\",\n contentLayout: \"text-icon-start\",\n className:\n \"pl-[calc(var(--padding-xs-plus)-(var(--border-width-sm)))] [&>svg]:mr-xs\"\n },\n {\n size: \"md\",\n contentLayout: \"text-icon-end\",\n className:\n \"pr-[calc(var(--padding-xs-plus)-(var(--border-width-sm)))] [&>svg]:ml-xs\"\n },\n {\n size: \"lg\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-sm-plus)-(var(--border-width-sm)))]\"\n },\n {\n size: \"lg\",\n contentLayout: \"text-icon-start\",\n className:\n \"pl-[calc(var(--padding-sm-extra)-(var(--border-width-sm)))] [&>svg]:mr-xs-plus\"\n },\n {\n size: \"lg\",\n contentLayout: \"text-icon-end\",\n className:\n \"pr-[calc(var(--padding-sm-extra)-(var(--border-width-sm)))] [&>svg]:ml-xs-plus\"\n },\n {\n size: \"xl\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-md)-(var(--border-width-md)))]\"\n },\n {\n size: \"xl\",\n contentLayout: \"text-icon-start\",\n className:\n \"pl-[calc(var(--padding-sm-extra)-(var(--border-width-md)))] [&>svg]:mr-sm\"\n },\n {\n size: \"xl\",\n contentLayout: \"text-icon-end\",\n className:\n \"pr-[calc(var(--padding-sm-extra)-(var(--border-width-md)))] [&>svg]:ml-sm\"\n }\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\"\n }\n }\n);\n\ninterface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof buttonVariants> {\n text?: React.ReactNode;\n children?: React.ReactNode;\n\n icon?: React.ReactNode;\n\n iconPosition?: \"start\" | \"end\";\n\n asChild?: boolean;\n\n containerClassName?: string;\n}\n\ntype ContentLayout = \"text\" | \"icon\" | \"text-icon-start\" | \"text-icon-end\";\n\nconst ButtonBase = ({\n className,\n variant,\n size,\n asChild = false,\n text,\n children,\n icon,\n iconPosition = \"start\",\n disabled,\n containerClassName,\n ...rest\n}: ButtonProps) => {\n const Comp = asChild ? Slot.Root : \"button\";\n\n const contentLayout = useMemo<ContentLayout>(() => {\n if (!text && !children) {\n return \"icon\";\n }\n\n if (!icon) {\n return \"text\";\n }\n\n return `text-icon-${iconPosition}` as ContentLayout;\n }, [text, children, icon, iconPosition]);\n\n const cssClasses = cn(\n buttonVariants({\n variant,\n size,\n contentLayout\n }),\n className\n );\n\n return (\n <span className={cn(buttonWrapperVariants({ disabled }), containerClassName)}>\n <Comp className={cssClasses} disabled={disabled} aria-disabled={disabled} {...rest}>\n {iconPosition !== \"end\" && icon}\n <Slot.Slottable>{text || children || null}</Slot.Slottable>\n {iconPosition === \"end\" && icon}\n </Comp>\n </span>\n );\n};\n\nconst Button = makeDecoratable(\"Button\", ButtonBase);\n\nexport { Button, type ButtonProps, buttonVariants };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Slot","cn","cva","makeDecoratable","buttonWrapperVariants","variants","disabled","true","buttonVariants","variant","primary","secondary","tertiary","ghost","size","sm","md","lg","xl","contentLayout","text","icon","compoundVariants","className","defaultVariants","ButtonBase","asChild","children","iconPosition","containerClassName","rest","Comp","Root","cssClasses","createElement","Object","assign","Slottable","Button"],"sources":["Button.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { Slot } from \"radix-ui\";\nimport { cn, cva, type VariantProps, makeDecoratable } from \"~/utils.js\";\n\nconst buttonWrapperVariants = cva(\"inline-block\", {\n variants: {\n disabled: {\n true: \"cursor-not-allowed\"\n }\n }\n});\n\nconst buttonVariants = cva(\n [\n \"border-transparent rounded font-sans inline-flex items-center justify-center whitespace-nowrap ring-offset-background transition-colors no-underline! cursor-pointer\",\n \"aria-disabled:pointer-events-none\",\n \"focus-visible:outline-none focus-visible:border-accent-default\"\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary text-neutral-light fill-neutral-base\",\n \"hover:bg-primary-strong\",\n \"active:bg-primary-xstrong\",\n \"aria-disabled:bg-primary-disabled\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n secondary: [\n \"bg-neutral-dimmed text-neutral-strong fill-neutral-xstrong\",\n \"hover:bg-neutral-muted\",\n \"active:bg-neutral-strong\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-strong\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n tertiary: [\n \"bg-neutral-base text-neutral-strong border-neutral-muted fill-neutral-xstrong\",\n \"hover:bg-neutral-light\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:border-neutral-dimmed aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-strong\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n ghost: [\n \"bg-transparent text-neutral-strong fill-neutral-xstrong\",\n \"hover:bg-neutral-dimmed\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-strong\"\n ],\n \"ghost-negative\": [\n \"bg-transparent text-neutral-light fill-neutral-base\",\n \"hover:bg-neutral-base/20\",\n \"active:bg-neutral-base/30\",\n \"aria-disabled:text-neutral-disabled aria-disabled:fill-neutral-base/50\",\n \"focus-visible:border-neutral-base!\"\n ]\n },\n size: {\n sm: [\n \"text-sm border-sm rounded-sm [&>svg]:size-md\",\n \"py-[calc(var(--padding-xs)-(var(--border-width-sm)))] px-[calc(var(--padding-sm)-(var(--border-width-sm)))]\"\n ],\n md: [\n \"text-md border-sm rounded-md [&>svg]:size-md\",\n \"py-[calc(var(--padding-xs-plus)-(var(--border-width-sm)))] px-[calc(var(--padding-sm-extra)-(var(--border-width-sm)))]\"\n ],\n lg: [\n \"text-md border-sm rounded-md [&>svg]:size-md-plus\",\n \"py-[calc(var(--padding-sm-plus)-(var(--border-width-sm)))] px-[calc(var(--padding-md)-(var(--border-width-sm)))]\"\n ],\n xl: [\n \"text-lg font-semibold border-lg rounded-md [&>svg]:size-lg\",\n \"py-[calc(theme(padding.md-plus)-(var(--border-width-md)))] px-[calc(var(--padding-md)-(var(--border-width-md)))]\"\n ]\n },\n contentLayout: {\n text: \"\",\n icon: \"\",\n \"text-icon-start\": \"\",\n \"text-icon-end\": \"\"\n }\n },\n compoundVariants: [\n {\n size: \"xl\",\n variant: \"ghost\",\n className: \"focus-visible:border-md\"\n },\n {\n size: \"sm\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-xs)-(var(--border-width-sm)))]\"\n },\n {\n size: \"sm\",\n contentLayout: \"text-icon-start\",\n className: \"pl-[calc(var(--padding-xs)-(var(--border-width-sm)))] [&>svg]:mr-xs\"\n },\n {\n size: \"sm\",\n contentLayout: \"text-icon-end\",\n className: \"pr-[calc(var(--padding-xs)-(var(--border-width-sm)))] [&>svg]:ml-xs\"\n },\n {\n size: \"md\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-sm)-(var(--border-width-sm)))]\"\n },\n {\n size: \"md\",\n contentLayout: \"text-icon-start\",\n className:\n \"pl-[calc(var(--padding-xs-plus)-(var(--border-width-sm)))] [&>svg]:mr-xs\"\n },\n {\n size: \"md\",\n contentLayout: \"text-icon-end\",\n className:\n \"pr-[calc(var(--padding-xs-plus)-(var(--border-width-sm)))] [&>svg]:ml-xs\"\n },\n {\n size: \"lg\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-sm-plus)-(var(--border-width-sm)))]\"\n },\n {\n size: \"lg\",\n contentLayout: \"text-icon-start\",\n className:\n \"pl-[calc(var(--padding-sm-extra)-(var(--border-width-sm)))] [&>svg]:mr-xs-plus\"\n },\n {\n size: \"lg\",\n contentLayout: \"text-icon-end\",\n className:\n \"pr-[calc(var(--padding-sm-extra)-(var(--border-width-sm)))] [&>svg]:ml-xs-plus\"\n },\n {\n size: \"xl\",\n contentLayout: \"icon\",\n className: \"p-[calc(var(--padding-md)-(var(--border-width-md)))]\"\n },\n {\n size: \"xl\",\n contentLayout: \"text-icon-start\",\n className:\n \"pl-[calc(var(--padding-sm-extra)-(var(--border-width-md)))] [&>svg]:mr-sm\"\n },\n {\n size: \"xl\",\n contentLayout: \"text-icon-end\",\n className:\n \"pr-[calc(var(--padding-sm-extra)-(var(--border-width-md)))] [&>svg]:ml-sm\"\n }\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\"\n }\n }\n);\n\ninterface ButtonProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof buttonVariants> {\n text?: React.ReactNode;\n children?: React.ReactNode;\n\n icon?: React.ReactNode;\n\n iconPosition?: \"start\" | \"end\";\n\n asChild?: boolean;\n\n containerClassName?: string;\n}\n\ntype ContentLayout = \"text\" | \"icon\" | \"text-icon-start\" | \"text-icon-end\";\n\nconst ButtonBase = ({\n className,\n variant,\n size,\n asChild = false,\n text,\n children,\n icon,\n iconPosition = \"start\",\n disabled,\n containerClassName,\n ...rest\n}: ButtonProps) => {\n const Comp = asChild ? Slot.Root : \"button\";\n\n const contentLayout = useMemo<ContentLayout>(() => {\n if (!text && !children) {\n return \"icon\";\n }\n\n if (!icon) {\n return \"text\";\n }\n\n return `text-icon-${iconPosition}` as ContentLayout;\n }, [text, children, icon, iconPosition]);\n\n const cssClasses = cn(\n buttonVariants({\n variant,\n size,\n contentLayout\n }),\n className\n );\n\n return (\n <span className={cn(buttonWrapperVariants({ disabled }), containerClassName)}>\n <Comp className={cssClasses} disabled={disabled} aria-disabled={disabled} {...rest}>\n {iconPosition !== \"end\" && icon}\n <Slot.Slottable>{text || children || null}</Slot.Slottable>\n {iconPosition === \"end\" && icon}\n </Comp>\n </span>\n );\n};\n\nconst Button = makeDecoratable(\"Button\", ButtonBase);\n\nexport { Button, type ButtonProps, buttonVariants };\n"],"mappings":"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","ignoreList":[]}
package/Button/Button.mdx CHANGED
@@ -1,6 +1,6 @@
1
- import { Canvas, Meta, Controls } from '@storybook/addon-docs/blocks';
1
+ import { Canvas, Meta, Controls } from "@storybook/addon-docs/blocks";
2
2
 
3
- import * as ButtonStories from './Button.stories';
3
+ import * as ButtonStories from "./Button.stories";
4
4
 
5
5
  <Meta of={ButtonStories} />
6
6
 
@@ -17,25 +17,25 @@ The Button component is a key UI element that enables users to trigger actions o
17
17
  \n <Button variant="primary" text={"Button"}></Button>
18
18
 
19
19
  ` } }
20
- additionalActions={[
21
- {
22
- title: 'Open in GitHub',
23
- onClick: () => {
24
- window.open(
25
- 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Button/Button.tsx',
26
- '_blank'
27
- );
28
- },
29
- }
30
- ]}
20
+ additionalActions={[
21
+ {
22
+ title: 'Open in GitHub',
23
+ onClick: () => {
24
+ window.open(
25
+ 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Button/Button.tsx',
26
+ '_blank'
27
+ );
28
+ },
29
+ }
30
+ ]}
31
31
  />
32
32
 
33
33
  <Controls of={ButtonStories.Documentation} exclude={"onClick"} />
34
34
 
35
35
  ```jsx
36
- import { Button } from '@webiny/admin-ui';
36
+ import { Button } from "@webiny/admin-ui";
37
37
 
38
- <Button variant="primary" text={"Button"}></Button>
38
+ <Button variant="primary" text={"Button"}></Button>;
39
39
  ```
40
40
 
41
41
  ## Examples
@@ -51,7 +51,6 @@ import { Button } from '@webiny/admin-ui';
51
51
  ` } }
52
52
  />
53
53
 
54
-
55
54
  ### Secondary
56
55
 
57
56
  <Canvas of={ButtonStories.Secondary}
@@ -105,11 +104,12 @@ import { Button } from '@webiny/admin-ui';
105
104
  import { Button } from '@webiny/admin-ui';
106
105
  import { ReactComponent as PencilIcon } from "@webiny/icons/edit.svg";
107
106
  \n<Button variant="primary" text={"Button"} size="md" icon={<PencilIcon />} iconPosition="start"></Button>
107
+
108
108
  ` } }
109
109
  />
110
110
 
111
-
112
111
  ### As Child
112
+
113
113
  The Button component can be used as a wrapper for other elements, allowing flexible composition. This is particularly useful when integrating custom text elements, or any other components inside a button.
114
114
 
115
115
  <Canvas of={ButtonStories.WithAsChild} story={ {inline: false}}
@@ -125,19 +125,20 @@ The Button component can be used as a wrapper for other elements, allowing flexi
125
125
  />
126
126
 
127
127
  ### Icon Only Button
128
- import * as IconButtonStories from './IconButton.stories';
128
+
129
+ import * as IconButtonStories from "./IconButton.stories";
129
130
 
130
131
  **We have a dedicated `IconButton` component for the Icon-only button. Please check the code below for more details.**
131
132
 
132
133
  #### Usage
133
134
 
134
135
  ```jsx
135
- import { IconButton } from '@webiny/admin-ui';
136
+ import { IconButton } from "@webiny/admin-ui";
136
137
  ```
137
138
 
138
139
  ```jsx
139
- import { ReactComponent as AddIcon } from "@webiny/icons/add.svg"
140
- <IconButton icon={<AddIcon />} size={"md"}/>
140
+ import { ReactComponent as AddIcon } from "@webiny/icons/add.svg";
141
+ <IconButton icon={<AddIcon />} size={"md"} />;
141
142
  ```
142
143
 
143
144
  <Canvas of={IconButtonStories.Documentation}
@@ -148,17 +149,17 @@ import { ReactComponent as AddIcon } from "@webiny/icons/add.svg"
148
149
  \n <IconButton icon={<AddIcon />} size={"md"}/>
149
150
 
150
151
  ` } }
151
- additionalActions={[
152
- {
153
- title: 'Open in GitHub',
154
- onClick: () => {
155
- window.open(
156
- 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Button/Button.tsx',
157
- '_blank'
158
- );
159
- },
160
- }
161
- ]}
152
+ additionalActions={[
153
+ {
154
+ title: 'Open in GitHub',
155
+ onClick: () => {
156
+ window.open(
157
+ 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Button/Button.tsx',
158
+ '_blank'
159
+ );
160
+ },
161
+ }
162
+ ]}
162
163
  />
163
164
 
164
165
  #### Props
@@ -168,40 +169,47 @@ import { ReactComponent as AddIcon } from "@webiny/icons/add.svg"
168
169
  ## Anatomy
169
170
 
170
171
  ### Construction
171
- <img src="/images/storybook/button/contruction.png" alt="Construction"/>
172
+
173
+ <img src="/images/storybook/button/contruction.png" alt="Construction" />
172
174
 
173
175
  ### Options
174
- <img src="/images/storybook/button/options.png" alt="Options"/>
176
+
177
+ <img src="/images/storybook/button/options.png" alt="Options" />
175
178
 
176
179
  ### Variants
177
- <img src="/images/storybook/button/type.png" alt="Variants"/>
180
+
181
+ <img src="/images/storybook/button/type.png" alt="Variants" />
178
182
 
179
183
  ### Size
184
+
180
185
  Regular buttons come in four different sizes: small, medium, large, and xl. The medium size is the default and most frequently used option. Use the other sizes sparingly; they should be used to create a hierarchy of importance within the page.
181
186
 
182
- <img src="/images/storybook/button/size.png" alt="Size"/>
187
+ <img src="/images/storybook/button/size.png" alt="Size" />
183
188
 
184
189
  **Icon-only button** come in six different sizes to accommodate for various component needs.
185
190
 
186
- <img src="/images/storybook/button/size-icon-only.png" alt="Size - Icon Only"/>
187
-
191
+ <img src="/images/storybook/button/size-icon-only.png" alt="Size - Icon Only" />
188
192
 
189
193
  ### States
190
- <img src="/images/storybook/button/states.png" alt="States"/>
194
+
195
+ <img src="/images/storybook/button/states.png" alt="States" />
191
196
 
192
197
  ## Usage
193
198
 
194
199
  ### Icon Usage
200
+
195
201
  An icon should only be used in a button when it's benefitial and when it has a meaningful association with the label.
196
202
 
197
- <img src="/images/storybook/button/icon-usage.png" alt="Icon Usage"/>
203
+ <img src="/images/storybook/button/icon-usage.png" alt="Icon Usage" />
198
204
 
199
205
  ### Use primary buttons sparingly
206
+
200
207
  Use primary buttons as the desired action for users. Competing primary buttons may leave the user unsure of next steps in their user journey. As a rule of thumb limit primary buttons to 1 in contained UIs and 3 in full page UIs.
201
208
 
202
- <img src="/images/storybook/button/primary-button-usage.png" alt="Primary Button Usage"/>
209
+ <img src="/images/storybook/button/primary-button-usage.png" alt="Primary Button Usage" />
203
210
 
204
211
  ### Button Group
212
+
205
213
  When used in groups, buttons should support only maximum of two type variants, with an exception of third variant being ghost extension button (eg. ellipsis). Avoid using random type and icon options within the button groups. Avoid using different sizes within the same group.
206
214
 
207
- <img src="/images/storybook/button/button-group.png" alt="Button Group"/>
215
+ <img src="/images/storybook/button/button-group.png" alt="Button Group" />
@@ -4,7 +4,7 @@ declare const iconButtonVariants: (props?: ({
4
4
  variant?: "primary" | "secondary" | "tertiary" | "ghost" | "ghost-negative" | null | undefined;
5
5
  size?: "sm" | "md" | "lg" | "xl" | "xs" | "xxs" | null | undefined;
6
6
  iconSize?: "lg" | "default" | null | undefined;
7
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "children">, VariantProps<typeof iconButtonVariants> {
9
9
  icon?: React.ReactNode;
10
10
  asChild?: boolean;
@@ -1 +1 @@
1
- {"version":3,"names":["React","Slot","cn","cva","makeDecoratable","iconButtonWrapperVariants","variants","disabled","true","iconButtonVariants","variant","primary","secondary","tertiary","ghost","size","xxs","xs","sm","md","lg","xl","iconSize","default","compoundVariants","className","defaultVariants","DecoratableIconButton","icon","asChild","props","Comp","Root","createElement","Object","assign","IconButton"],"sources":["IconButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Slot } from \"radix-ui\";\nimport { cn, cva, type VariantProps, makeDecoratable } from \"~/utils.js\";\n\nconst iconButtonWrapperVariants = cva(\"inline-block\", {\n variants: {\n disabled: {\n true: \"cursor-not-allowed\"\n }\n }\n});\n\nconst iconButtonVariants = cva(\n [\n \"border-transparent rounded flex shrink-0 items-center justify-center ring-offset-background transition-colors cursor-pointer\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"[&_img]:pointer-events-none [&_img]:shrink-0\",\n \"aria-disabled:pointer-events-none\",\n \"focus-visible:outline-none focus-visible:border-accent-default\"\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary fill-neutral-base\",\n \"hover:bg-primary-strong\",\n \"active:bg-primary-xstrong\",\n \"aria-disabled:bg-primary-disabled\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n secondary: [\n \"bg-neutral-dimmed fill-neutral-xstrong\",\n \"hover:bg-neutral-muted\",\n \"active:bg-neutral-strong\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:fill-neutral-strong\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n tertiary: [\n \"bg-neutral-base border-neutral-muted fill-neutral-xstrong\",\n \"hover:bg-neutral-light\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:fill-neutral-strong aria-disabled:border-neutral-dimmed\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n ghost: [\n \"bg-transparent fill-neutral-xstrong\",\n \"hover:bg-neutral-dark/5\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:fill-neutral-strong hover:aria-disabled:bg-transparent active:aria-disabled:bg-transparent\"\n ],\n \"ghost-negative\": [\n \"bg-transparent fill-neutral-base\",\n \"hover:bg-neutral-base/20\",\n \"active:bg-neutral-base/30\",\n \"focus-visible:border-neutral-base!\",\n \"aria-disabled:fill-neutral-base aria-disabled:opacity-50 hover:aria-disabled:bg-transparent active:aria-disabled:bg-transparent\"\n ]\n },\n size: {\n xxs: \"border-sm rounded-xs size-sm-extra [&_svg]:size-md [&_img]:size-md\",\n xs: \"border-sm rounded-xs size-md [&_svg]:size-md [&_img]:size-md\",\n sm: \"border-sm rounded-sm\",\n md: \"border-sm rounded-md\",\n lg: \"border-sm rounded-md\",\n xl: \"border-md rounded-lg p-[calc(var(--padding-md)-(var(--border-width-md)))] [&_svg]:size-lg [&_img]:size-lg\"\n },\n iconSize: {\n default: \"\",\n lg: \"\"\n }\n },\n compoundVariants: [\n {\n size: \"xl\",\n variant: \"ghost\",\n className: \"focus-visible:border-md\"\n },\n {\n size: \"sm\",\n iconSize: \"default\",\n className:\n \"p-[calc(var(--padding-xs)-var(--border-width-sm))] [&_svg]:size-md [&_img]:size-md\"\n },\n {\n size: \"sm\",\n iconSize: \"lg\",\n className:\n \"p-[calc(var(--padding-xxs)-var(--border-width-sm))] [&_svg]:size-md-plus [&_img]:size-md-plus\"\n },\n {\n size: \"md\",\n iconSize: \"default\",\n className:\n \"p-[calc(var(--padding-sm)-var(--border-width-sm))] [&_svg]:size-md [&_img]:size-md\"\n },\n {\n size: \"md\",\n iconSize: \"lg\",\n className:\n \"p-[calc(var(--padding-xs)-var(--border-width-sm))] [&_svg]:size-lg [&_img]:size-lg\"\n },\n {\n size: \"lg\",\n iconSize: \"default\",\n className:\n \"p-[calc(var(--padding-sm-plus)-var(--border-width-sm))] [&_svg]:size-md-plus [&_img]:size-md-plus\"\n },\n {\n size: \"lg\",\n iconSize: \"lg\",\n className:\n \"p-[calc(var(--padding-sm)-var(--border-width-sm))] [&_svg]:size-lg [&_img]:size-lg\"\n }\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n iconSize: \"default\"\n }\n }\n);\n\ninterface IconButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof iconButtonVariants> {\n icon?: React.ReactNode;\n asChild?: boolean;\n}\n\nconst DecoratableIconButton = ({\n className,\n variant,\n size,\n icon,\n iconSize,\n asChild = false,\n disabled,\n ...props\n}: IconButtonProps) => {\n const Comp = asChild ? Slot.Root : \"button\";\n return (\n <span className={cn(iconButtonWrapperVariants({ disabled }))}>\n <Comp\n {...props}\n className={cn(iconButtonVariants({ variant, size, iconSize }), className)}\n disabled={disabled}\n aria-disabled={disabled}\n >\n {icon}\n </Comp>\n </span>\n );\n};\n\nconst IconButton = makeDecoratable(\"IconButton\", DecoratableIconButton);\n\nexport { IconButton, type IconButtonProps, iconButtonVariants };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Slot","cn","cva","makeDecoratable","iconButtonWrapperVariants","variants","disabled","true","iconButtonVariants","variant","primary","secondary","tertiary","ghost","size","xxs","xs","sm","md","lg","xl","iconSize","default","compoundVariants","className","defaultVariants","DecoratableIconButton","icon","asChild","props","Comp","Root","createElement","Object","assign","IconButton"],"sources":["IconButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { Slot } from \"radix-ui\";\nimport { cn, cva, type VariantProps, makeDecoratable } from \"~/utils.js\";\n\nconst iconButtonWrapperVariants = cva(\"inline-block\", {\n variants: {\n disabled: {\n true: \"cursor-not-allowed\"\n }\n }\n});\n\nconst iconButtonVariants = cva(\n [\n \"border-transparent rounded flex shrink-0 items-center justify-center ring-offset-background transition-colors cursor-pointer\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n \"[&_img]:pointer-events-none [&_img]:shrink-0\",\n \"aria-disabled:pointer-events-none\",\n \"focus-visible:outline-none focus-visible:border-accent-default\"\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-primary fill-neutral-base\",\n \"hover:bg-primary-strong\",\n \"active:bg-primary-xstrong\",\n \"aria-disabled:bg-primary-disabled\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n secondary: [\n \"bg-neutral-dimmed fill-neutral-xstrong\",\n \"hover:bg-neutral-muted\",\n \"active:bg-neutral-strong\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:fill-neutral-strong\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n tertiary: [\n \"bg-neutral-base border-neutral-muted fill-neutral-xstrong\",\n \"hover:bg-neutral-light\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:bg-neutral-disabled aria-disabled:fill-neutral-strong aria-disabled:border-neutral-dimmed\",\n \"focus-visible:ring-lg focus-visible:ring-primary-dimmed\"\n ],\n ghost: [\n \"bg-transparent fill-neutral-xstrong\",\n \"hover:bg-neutral-dark/5\",\n \"active:bg-neutral-muted\",\n \"aria-disabled:fill-neutral-strong hover:aria-disabled:bg-transparent active:aria-disabled:bg-transparent\"\n ],\n \"ghost-negative\": [\n \"bg-transparent fill-neutral-base\",\n \"hover:bg-neutral-base/20\",\n \"active:bg-neutral-base/30\",\n \"focus-visible:border-neutral-base!\",\n \"aria-disabled:fill-neutral-base aria-disabled:opacity-50 hover:aria-disabled:bg-transparent active:aria-disabled:bg-transparent\"\n ]\n },\n size: {\n xxs: \"border-sm rounded-xs size-sm-extra [&_svg]:size-md [&_img]:size-md\",\n xs: \"border-sm rounded-xs size-md [&_svg]:size-md [&_img]:size-md\",\n sm: \"border-sm rounded-sm\",\n md: \"border-sm rounded-md\",\n lg: \"border-sm rounded-md\",\n xl: \"border-md rounded-lg p-[calc(var(--padding-md)-(var(--border-width-md)))] [&_svg]:size-lg [&_img]:size-lg\"\n },\n iconSize: {\n default: \"\",\n lg: \"\"\n }\n },\n compoundVariants: [\n {\n size: \"xl\",\n variant: \"ghost\",\n className: \"focus-visible:border-md\"\n },\n {\n size: \"sm\",\n iconSize: \"default\",\n className:\n \"p-[calc(var(--padding-xs)-var(--border-width-sm))] [&_svg]:size-md [&_img]:size-md\"\n },\n {\n size: \"sm\",\n iconSize: \"lg\",\n className:\n \"p-[calc(var(--padding-xxs)-var(--border-width-sm))] [&_svg]:size-md-plus [&_img]:size-md-plus\"\n },\n {\n size: \"md\",\n iconSize: \"default\",\n className:\n \"p-[calc(var(--padding-sm)-var(--border-width-sm))] [&_svg]:size-md [&_img]:size-md\"\n },\n {\n size: \"md\",\n iconSize: \"lg\",\n className:\n \"p-[calc(var(--padding-xs)-var(--border-width-sm))] [&_svg]:size-lg [&_img]:size-lg\"\n },\n {\n size: \"lg\",\n iconSize: \"default\",\n className:\n \"p-[calc(var(--padding-sm-plus)-var(--border-width-sm))] [&_svg]:size-md-plus [&_img]:size-md-plus\"\n },\n {\n size: \"lg\",\n iconSize: \"lg\",\n className:\n \"p-[calc(var(--padding-sm)-var(--border-width-sm))] [&_svg]:size-lg [&_img]:size-lg\"\n }\n ],\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n iconSize: \"default\"\n }\n }\n);\n\ninterface IconButtonProps\n extends\n Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\">,\n VariantProps<typeof iconButtonVariants> {\n icon?: React.ReactNode;\n asChild?: boolean;\n}\n\nconst DecoratableIconButton = ({\n className,\n variant,\n size,\n icon,\n iconSize,\n asChild = false,\n disabled,\n ...props\n}: IconButtonProps) => {\n const Comp = asChild ? Slot.Root : \"button\";\n return (\n <span className={cn(iconButtonWrapperVariants({ disabled }))}>\n <Comp\n {...props}\n className={cn(iconButtonVariants({ variant, size, iconSize }), className)}\n disabled={disabled}\n aria-disabled={disabled}\n >\n {icon}\n </Comp>\n </span>\n );\n};\n\nconst IconButton = makeDecoratable(\"IconButton\", DecoratableIconButton);\n\nexport { IconButton, type IconButtonProps, iconButtonVariants };\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@ declare const cardContentVariants: (props?: ({
4
4
  cornerSize?: "md" | "lg" | null | undefined;
5
5
  variant?: "accent" | "default" | null | undefined;
6
6
  elevation?: "none" | "small" | "medium" | "large" | null | undefined;
7
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  export interface CardContentProps extends VariantProps<typeof cardContentVariants> {
9
9
  className?: string;
10
10
  children: React.ReactNode;
@@ -4,7 +4,7 @@ declare const cardTitleVariants: (props?: ({
4
4
  padding?: "sm" | "md" | "lg" | null | undefined;
5
5
  size?: "sm" | "md" | null | undefined;
6
6
  variant?: "accent" | "default" | null | undefined;
7
- } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
8
  export type CardTitleProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardTitleVariants>;
9
9
  export declare const CardTitle: ({ className, padding, size, variant, ...props }: CardTitleProps) => React.JSX.Element;
10
10
  export {};
@@ -1,6 +1,6 @@
1
- import { Canvas, Meta, Controls } from '@storybook/addon-docs/blocks';
1
+ import { Canvas, Meta, Controls } from "@storybook/addon-docs/blocks";
2
2
 
3
- import * as CheckboxStories from './Checkbox.stories';
3
+ import * as CheckboxStories from "./Checkbox.stories";
4
4
 
5
5
  <Meta of={CheckboxStories} />
6
6
 
@@ -17,8 +17,8 @@ import React, { useState } from "react";
17
17
  import { Checkbox } from "@webiny/admin-ui";
18
18
 
19
19
  const CheckboxExample = () => {
20
- const [isChecked, setIsChecked] = useState(false);
21
- const [validation, setValidation] = useState({ isValid: true, message: "" });
20
+ const [isChecked, setIsChecked] = useState(false);
21
+ const [validation, setValidation] = useState({ isValid: true, message: "" });
22
22
 
23
23
  const handleChange = (checked: boolean) => {
24
24
  setIsChecked(checked);
@@ -43,57 +43,58 @@ const CheckboxExample = () => {
43
43
  />
44
44
  </div>
45
45
  );
46
+
46
47
  };
47
48
 
48
49
  export default CheckboxExample;
49
50
 
50
51
  ` } }
51
- additionalActions={[
52
- {
53
- title: 'Open in GitHub',
54
- onClick: () => {
55
- window.open(
56
- 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Checkbox/Checkbox.tsx',
57
- '_blank'
58
- );
59
- },
60
- }
61
- ]}
52
+ additionalActions={[
53
+ {
54
+ title: 'Open in GitHub',
55
+ onClick: () => {
56
+ window.open(
57
+ 'https://github.com/webiny/webiny-js/blob/feat/new-admin-ui/packages/admin-ui/src/Checkbox/Checkbox.tsx',
58
+ '_blank'
59
+ );
60
+ },
61
+ }
62
+ ]}
62
63
  />
63
64
 
64
- <Controls of={CheckboxStories.Documentation} exclude={"onChange"}/>
65
+ <Controls of={CheckboxStories.Documentation} exclude={"onChange"} />
65
66
 
66
67
  ```tsx
67
68
  import React, { useState } from "react";
68
69
  import { Checkbox } from "@webiny/admin-ui";
69
70
 
70
71
  const CheckboxExample = () => {
71
- const [isChecked, setIsChecked] = useState(false);
72
- const [validation, setValidation] = useState({ isValid: true, message: "" });
73
-
74
- const handleChange = (checked: boolean) => {
75
- setIsChecked(checked);
76
-
77
- if (!checked) {
78
- setValidation({ isValid: false, message: "This field is required" });
79
- } else {
80
- setValidation({ isValid: true, message: "" });
81
- }
82
- };
83
-
84
- return (
85
- <div>
86
- <Checkbox
87
- label="Any field label"
88
- description="Provide the required information for processing your request."
89
- note="Note: Ensure your selection or input is accurate before proceeding."
90
- checked={isChecked}
91
- required={true}
92
- onChange={handleChange}
93
- validation={validation}
94
- />
95
- </div>
96
- );
72
+ const [isChecked, setIsChecked] = useState(false);
73
+ const [validation, setValidation] = useState({ isValid: true, message: "" });
74
+
75
+ const handleChange = (checked: boolean) => {
76
+ setIsChecked(checked);
77
+
78
+ if (!checked) {
79
+ setValidation({ isValid: false, message: "This field is required" });
80
+ } else {
81
+ setValidation({ isValid: true, message: "" });
82
+ }
83
+ };
84
+
85
+ return (
86
+ <div>
87
+ <Checkbox
88
+ label="Any field label"
89
+ description="Provide the required information for processing your request."
90
+ note="Note: Ensure your selection or input is accurate before proceeding."
91
+ checked={isChecked}
92
+ required={true}
93
+ onChange={handleChange}
94
+ validation={validation}
95
+ />
96
+ </div>
97
+ );
97
98
  };
98
99
 
99
100
  export default CheckboxExample;
@@ -102,24 +103,25 @@ export default CheckboxExample;
102
103
  ## Anatomy
103
104
 
104
105
  ### General
106
+
105
107
  Checkbox input enable users to select a single or multiple items from a list of offered choices. A checkbox input group organizes related checkbox input options together for better clarity and functionality.
106
108
 
107
- <img src="/images/storybook/checkbox/general.png" alt="General"/>
109
+ <img src="/images/storybook/checkbox/general.png" alt="General" />
108
110
 
109
111
  ### Checkbox input options
112
+
110
113
  Checkbox inputs can exist in two different states: Selected and Not Selected.
111
114
 
112
- <img src="/images/storybook/checkbox/checkbox-input-options.png" alt="Checkbox input options"/>
115
+ <img src="/images/storybook/checkbox/checkbox-input-options.png" alt="Checkbox input options" />
113
116
 
114
117
  ### States
115
- <img src="/images/storybook/checkbox/states.png" alt="States"/>
118
+
119
+ <img src="/images/storybook/checkbox/states.png" alt="States" />
116
120
 
117
121
  ## Usage
118
122
 
119
123
  ### Text overflow
120
- When the checkbox text content is too long for the horizontal space available, the content should wrap to form another line aligning the text and checkbox on top.
121
-
122
- <img src="/images/storybook/checkbox/text-overflow.png" alt="Text overflow"/>
123
-
124
124
 
125
+ When the checkbox text content is too long for the horizontal space available, the content should wrap to form another line aligning the text and checkbox on top.
125
126
 
127
+ <img src="/images/storybook/checkbox/text-overflow.png" alt="Text overflow" />
@@ -8,7 +8,7 @@ import type { CheckboxItemDto, CheckboxItemFormatted } from "../../Checkbox/inde
8
8
  declare const checkboxVariants: (props?: ({
9
9
  indeterminate?: boolean | null | undefined;
10
10
  hasLabel?: boolean | null | undefined;
11
- } & import("class-variance-authority/dist/types.js").ClassProp) | undefined) => string;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
12
  type CheckboxPrimitiveProps = Omit<CheckboxPrimitives.CheckboxProps, "defaultChecked" | "onCheckedChange" | "onChange"> & VariantProps<typeof checkboxVariants> & CheckboxItemDto & {
13
13
  onChange: (checked: boolean) => void;
14
14
  };