@wallarm-org/design-system 3.4.0 → 3.4.1-rc-fix-data-display-category.2

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 (42) hide show
  1. package/README.md +6 -4
  2. package/dist/components/Calendar/CalendarApplyButton.d.ts +3 -1
  3. package/dist/components/Calendar/CalendarApplyButton.js +25 -23
  4. package/dist/components/Calendar/CalendarBody.d.ts +3 -2
  5. package/dist/components/Calendar/CalendarBody.js +3 -4
  6. package/dist/components/Calendar/CalendarContent.d.ts +3 -2
  7. package/dist/components/Calendar/CalendarContent.js +3 -4
  8. package/dist/components/Calendar/CalendarFooter.d.ts +3 -2
  9. package/dist/components/Calendar/CalendarFooter.js +3 -4
  10. package/dist/components/Calendar/CalendarFooterControls.d.ts +3 -2
  11. package/dist/components/Calendar/CalendarFooterControls.js +3 -4
  12. package/dist/components/Calendar/CalendarGrids.d.ts +3 -1
  13. package/dist/components/Calendar/CalendarGrids.js +3 -4
  14. package/dist/components/Calendar/CalendarKeyboardHints.d.ts +3 -1
  15. package/dist/components/Calendar/CalendarKeyboardHints.js +3 -4
  16. package/dist/components/Calendar/CalendarResetButton.d.ts +3 -1
  17. package/dist/components/Calendar/CalendarResetButton.js +25 -23
  18. package/dist/components/Table/primitives/TBody.d.ts +2 -1
  19. package/dist/components/Table/primitives/TBody.js +17 -15
  20. package/dist/components/Table/primitives/THead.d.ts +2 -1
  21. package/dist/components/Table/primitives/THead.js +17 -15
  22. package/dist/components/Table/primitives/Td.d.ts +2 -2
  23. package/dist/components/Table/primitives/Td.js +22 -20
  24. package/dist/components/Table/primitives/Th.d.ts +2 -2
  25. package/dist/components/Table/primitives/Th.js +25 -23
  26. package/dist/components/Table/primitives/Tr.d.ts +2 -1
  27. package/dist/components/Table/primitives/Tr.js +17 -15
  28. package/dist/components/Table/types.d.ts +3 -4
  29. package/dist/components/TemporalCore/TemporalSegmentGroup.d.ts +3 -1
  30. package/dist/components/TemporalCore/TemporalSegmentGroup.js +30 -28
  31. package/dist/components/TemporalCore/TimeDropdown.d.ts +4 -2
  32. package/dist/components/TemporalCore/TimeDropdown.js +4 -4
  33. package/dist/components/Toast/ToastDescription.d.ts +3 -2
  34. package/dist/components/Toast/ToastDescription.js +3 -4
  35. package/dist/components/Toast/ToastTitle.d.ts +3 -2
  36. package/dist/components/Toast/ToastTitle.js +3 -4
  37. package/dist/components/Tour/TourDescription.d.ts +5 -2
  38. package/dist/components/Tour/TourDescription.js +28 -25
  39. package/dist/components/Tour/TourTitle.d.ts +5 -2
  40. package/dist/components/Tour/TourTitle.js +27 -25
  41. package/dist/metadata/components.json +26 -20
  42. package/package.json +2 -6
@@ -1,37 +1,39 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { forwardRef } from "react";
4
3
  import { Tour } from "@ark-ui/react";
5
4
  import { useTestId } from "../../utils/testId.js";
6
5
  import { Heading } from "../Heading/index.js";
7
6
  import { OverflowTooltip, OverflowTooltipContent, OverflowTooltipTrigger } from "../OverflowTooltip/index.js";
8
- const TourTitle = /*#__PURE__*/ forwardRef((t0, ref)=>{
9
- const $ = c(15);
7
+ const TourTitle = (t0)=>{
8
+ const $ = c(16);
10
9
  let children;
11
10
  let props;
11
+ let ref;
12
12
  if ($[0] !== t0) {
13
- ({ children, ...props } = t0);
13
+ ({ ref, children, ...props } = t0);
14
14
  $[0] = t0;
15
15
  $[1] = children;
16
16
  $[2] = props;
17
+ $[3] = ref;
17
18
  } else {
18
19
  children = $[1];
19
20
  props = $[2];
21
+ ref = $[3];
20
22
  }
21
23
  const testId = useTestId("title");
22
24
  let t1;
23
- if ($[3] !== children) {
25
+ if ($[4] !== children) {
24
26
  t1 = /*#__PURE__*/ jsx(Heading, {
25
27
  size: "lg",
26
28
  weight: "medium",
27
29
  lineClamp: 2,
28
30
  children: children
29
31
  });
30
- $[3] = children;
31
- $[4] = t1;
32
- } else t1 = $[4];
32
+ $[4] = children;
33
+ $[5] = t1;
34
+ } else t1 = $[5];
33
35
  let t2;
34
- if ($[5] !== props || $[6] !== ref || $[7] !== t1 || $[8] !== testId) {
36
+ if ($[6] !== props || $[7] !== ref || $[8] !== t1 || $[9] !== testId) {
35
37
  t2 = /*#__PURE__*/ jsx(OverflowTooltipTrigger, {
36
38
  children: /*#__PURE__*/ jsx(Tour.Title, {
37
39
  ...props,
@@ -41,33 +43,33 @@ const TourTitle = /*#__PURE__*/ forwardRef((t0, ref)=>{
41
43
  children: t1
42
44
  })
43
45
  });
44
- $[5] = props;
45
- $[6] = ref;
46
- $[7] = t1;
47
- $[8] = testId;
48
- $[9] = t2;
49
- } else t2 = $[9];
46
+ $[6] = props;
47
+ $[7] = ref;
48
+ $[8] = t1;
49
+ $[9] = testId;
50
+ $[10] = t2;
51
+ } else t2 = $[10];
50
52
  let t3;
51
- if ($[10] !== children) {
53
+ if ($[11] !== children) {
52
54
  t3 = /*#__PURE__*/ jsx(OverflowTooltipContent, {
53
55
  children: children
54
56
  });
55
- $[10] = children;
56
- $[11] = t3;
57
- } else t3 = $[11];
57
+ $[11] = children;
58
+ $[12] = t3;
59
+ } else t3 = $[12];
58
60
  let t4;
59
- if ($[12] !== t2 || $[13] !== t3) {
61
+ if ($[13] !== t2 || $[14] !== t3) {
60
62
  t4 = /*#__PURE__*/ jsxs(OverflowTooltip, {
61
63
  children: [
62
64
  t2,
63
65
  t3
64
66
  ]
65
67
  });
66
- $[12] = t2;
67
- $[13] = t3;
68
- $[14] = t4;
69
- } else t4 = $[14];
68
+ $[13] = t2;
69
+ $[14] = t3;
70
+ $[15] = t4;
71
+ } else t4 = $[15];
70
72
  return t4;
71
- });
73
+ };
72
74
  TourTitle.displayName = "TourTitle";
73
75
  export { TourTitle };
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "3.3.0",
3
- "generatedAt": "2026-10-22T07:21:43.495Z",
2
+ "version": "3.4.0",
3
+ "generatedAt": "2026-10-22T11:04:59.997Z",
4
4
  "components": [
5
5
  {
6
6
  "name": "Accordion",
@@ -19315,7 +19315,8 @@
19315
19315
  {
19316
19316
  "name": "size",
19317
19317
  "type": "{ small: string; medium: string; large: string; 'inline-edit': string; }",
19318
- "required": false
19318
+ "required": false,
19319
+ "defaultValue": "small"
19319
19320
  },
19320
19321
  {
19321
19322
  "name": "loading",
@@ -19355,12 +19356,14 @@
19355
19356
  {
19356
19357
  "name": "variant",
19357
19358
  "type": "{ primary: string; outline: string; ghost: string; secondary: string; }",
19358
- "required": false
19359
+ "required": false,
19360
+ "defaultValue": "primary"
19359
19361
  },
19360
19362
  {
19361
19363
  "name": "color",
19362
19364
  "type": "string | undefined",
19363
- "required": false
19365
+ "required": false,
19366
+ "defaultValue": "brand"
19364
19367
  },
19365
19368
  {
19366
19369
  "name": "disabled",
@@ -20067,7 +20070,8 @@
20067
20070
  {
20068
20071
  "name": "size",
20069
20072
  "type": "{ small: string; medium: string; large: string; 'inline-edit': string; }",
20070
- "required": false
20073
+ "required": false,
20074
+ "defaultValue": "small"
20071
20075
  },
20072
20076
  {
20073
20077
  "name": "loading",
@@ -20107,12 +20111,14 @@
20107
20111
  {
20108
20112
  "name": "variant",
20109
20113
  "type": "{ primary: string; outline: string; ghost: string; secondary: string; }",
20110
- "required": false
20114
+ "required": false,
20115
+ "defaultValue": "ghost"
20111
20116
  },
20112
20117
  {
20113
20118
  "name": "color",
20114
20119
  "type": "string | undefined",
20115
- "required": false
20120
+ "required": false,
20121
+ "defaultValue": "neutral"
20116
20122
  },
20117
20123
  {
20118
20124
  "name": "disabled",
@@ -22234,7 +22240,7 @@
22234
22240
  "examples": [
22235
22241
  {
22236
22242
  "name": "Basic",
22237
- "code": "({ ...args }) => {\n // `data-last-click` records which target handled the click. It renders nothing,\n // and it is what the click-isolation e2e asserts on — the story used to prove\n // the same thing by writing to the console.\n const [lastClick, setLastClick] = useState<'card' | 'button' | 'none'>('none');\n\n return (\n <Card\n onClick={e => {\n onCardClick(e);\n setLastClick('card');\n }}\n data-last-click={lastClick}\n {...args}\n >\n <CardHeader>\n <CardTitle>Card title</CardTitle>\n <Badge size='medium' type='solid' color='slate'>\n Badge\n </Badge>\n </CardHeader>\n\n <CardContent>Card description</CardContent>\n\n <CardFooter>\n <Button\n variant='secondary'\n color='neutral'\n onClick={e => {\n onButtonClick(e);\n setLastClick('button');\n }}\n >\n Button\n </Button>\n </CardFooter>\n </Card>\n );\n}",
22243
+ "code": "({ ...args }) => {\n // `data-last-click` records which target handled the click. It renders nothing,\n // and it is what the click-isolation e2e asserts on — the story used to prove\n // the same thing by writing to the console.\n const [lastClick, setLastClick] = useState<'card' | 'button' | 'none'>('none');\n\n return (\n <Card\n onClick={e => {\n onCardClick(e);\n setLastClick('card');\n }}\n data-last-click={lastClick}\n {...args}\n >\n <CardHeader>\n <CardTitle>Card title</CardTitle>\n <Badge size='medium' type='solid' color='slate'>\n Badge\n </Badge>\n </CardHeader>\n\n <CardContent>Card description</CardContent>\n\n <CardFooter>\n <Button\n variant='secondary'\n color='neutral'\n onClick={(e: MouseEvent<HTMLButtonElement>) => {\n onButtonClick(e);\n setLastClick('button');\n }}\n >\n Button\n </Button>\n </CardFooter>\n </Card>\n );\n}",
22238
22244
  "description": "The full stack — `CardHeader` with a `CardTitle`, `CardContent`, and a `CardFooter`\nfor actions — carrying a handler, so the footer button and the card are two\nseparate targets."
22239
22245
  },
22240
22246
  {
@@ -52526,7 +52532,7 @@
52526
52532
  },
52527
52533
  {
52528
52534
  "name": "Picked",
52529
- "code": "() => (\n <FilterCascade\n label='Scope'\n collection={longCollection}\n loadChildren={async () => [{ kind: 'application', uid: 'checkout', name: 'checkout-api' }]}\n defaultValue={['eu1', 'checkout']}\n data-testid='filter-cascade-picked'\n >\n <FilterCascadeTrigger />\n <FilterCascadeContent />\n </FilterCascade>\n)",
52535
+ "code": "() => (\n <FilterCascade\n label='Scope'\n collection={longCollection}\n loadChildren={async (): Promise<Scope[]> => [\n { kind: 'application', uid: 'checkout', name: 'checkout-api' },\n ]}\n defaultValue={['eu1', 'checkout']}\n data-testid='filter-cascade-picked'\n >\n <FilterCascadeTrigger />\n <FilterCascadeContent />\n </FilterCascade>\n)",
52530
52536
  "description": "A picked application: the trigger reads the path; only the deployment segment truncates."
52531
52537
  },
52532
52538
  {
@@ -108618,7 +108624,7 @@
108618
108624
  {
108619
108625
  "name": "Basic",
108620
108626
  "code": "args => (\n <Slider {...args}>\n <SliderControl>\n <SliderThumb aria-label='Value' />\n </SliderControl>\n </Slider>\n)",
108621
- "description": "One handle on a track. Arrow keys move by `step`, Page keys jump further, and Home and End go\nto the bounds — worth knowing before reaching for a paired input."
108627
+ "description": "One handle on a track: arrow keys move by `step`, Page keys jump further, and Home and End go\nto the bounds. `SliderThumb` is the real interactive node, so `aria-label` and analytics\nattributes go on it, and its focus reuses the hover emphasis instead of drawing a ring."
108622
108628
  },
108623
108629
  {
108624
108630
  "name": "Range",
@@ -108638,12 +108644,12 @@
108638
108644
  {
108639
108645
  "name": "Labeled",
108640
108646
  "code": "args => (\n <Slider {...args} min={0} max={100} step={50} defaultValue={[50]}>\n <SliderControl>\n <SliderThumb aria-label='Risk level' />\n <SliderMarks\n marks={[\n { value: 0, label: 'Low' },\n { value: 50, label: 'Medium' },\n { value: 100, label: 'High' },\n ]}\n />\n </SliderControl>\n </Slider>\n)",
108641
- "description": "Marks carrying text, for a scale whose steps are named rather than numeric. The handle snaps\nto the labelled positions, so this is a choice among rungs rather than a magnitude."
108647
+ "description": "Marks carrying text, for a scale whose steps are named rather than numeric. The handle snaps\nto the labelled positions and announces the label rather than the number, so keep it to a\nhandful of rungs."
108642
108648
  },
108643
108649
  {
108644
108650
  "name": "WithTooltip",
108645
108651
  "code": "args => (\n <Slider {...args}>\n <SliderControl>\n <SliderThumb aria-label='Value' tooltip />\n </SliderControl>\n </Slider>\n)",
108646
- "description": "`tooltip` on a `SliderThumb` shows the value while dragging, then hides it. It suits a value\nonly checked mid-gesture; anything needed afterwards wants a persistent readout."
108652
+ "description": "`tooltip` on a `SliderThumb` shows the value while dragging, then hides it. It suits a value\nonly checked mid-gesture; anything needed afterwards wants a persistent readout instead,\nnever both."
108647
108653
  },
108648
108654
  {
108649
108655
  "name": "WithInput",
@@ -126173,37 +126179,37 @@
126173
126179
  },
126174
126180
  {
126175
126181
  "name": "UpdateLoadingToSuccess",
126176
- "code": "() => {\n const toast = useToast();\n const id = useRef<string | undefined>(undefined);\n\n const createToast = (duration?: number) => {\n id.current = toast.create({\n title: 'Loading',\n description: 'Loading ...',\n type: 'loading',\n variant: 'extended',\n duration,\n });\n };\n\n const updateToast = (duration?: number) => {\n if (!id.current) {\n return;\n }\n\n toast.update({\n id: id.current,\n title: 'Success',\n description: 'Success!',\n type: 'success',\n variant: 'extended',\n duration,\n });\n };\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => createToast()}>\n Create loading toast\n </Button>\n <Button variant='outline' color='neutral' onClick={() => updateToast()}>\n Update to success\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button variant='secondary' color='neutral' onClick={() => createToast(STATIC_DURATION)}>\n Create loading toast\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => updateToast(STATIC_DURATION)}>\n Update to success\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126182
+ "code": "() => {\n const toast = useToast();\n const id = useRef<string | undefined>(undefined);\n\n const createToast = (duration?: number) => {\n id.current = toast.create({\n title: 'Loading',\n description: 'Loading ...',\n type: 'loading',\n variant: 'extended',\n duration,\n });\n };\n\n const updateToast = (duration?: number) => {\n if (!id.current) {\n return;\n }\n\n toast.update({\n id: id.current,\n title: 'Success',\n description: 'Success!',\n type: 'success',\n variant: 'extended',\n duration,\n });\n };\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => createToast()}>\n Create loading toast\n </Button>\n <Button variant='outline' color='neutral' onClick={() => updateToast()}>\n Update to success\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='secondary' color='neutral' onClick={() => createToast(STATIC_DURATION)}>\n Create loading toast\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => updateToast(STATIC_DURATION)}>\n Update to success\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126177
126183
  "description": "A loading toast has no timer and no progress bar, so it will not clear itself: `update()` the same id to resolve it to success or error."
126178
126184
  },
126179
126185
  {
126180
126186
  "name": "DescriptionKeepsExtended",
126181
- "code": "() => {\n const toast = useToast();\n\n const withDescription = (duration?: number) =>\n toast.create({\n title: 'Failed to mark as True Positive',\n description: 'resolved vector count must not exceed 500000',\n type: 'error',\n variant: 'simple',\n duration,\n });\n\n const withoutDescription = (duration?: number) =>\n toast.create({ title: 'Marked 2 attacks', type: 'success', variant: 'simple', duration });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => withDescription()}>\n Simple with description\n </Button>\n <Button variant='outline' color='neutral' onClick={() => withoutDescription()}>\n Simple without description\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button\n variant='secondary'\n color='neutral'\n onClick={() => withDescription(STATIC_DURATION)}\n >\n Simple with description\n </Button>\n <Button\n variant='secondary'\n color='neutral'\n onClick={() => withoutDescription(STATIC_DURATION)}\n >\n Simple without description\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126187
+ "code": "() => {\n const toast = useToast();\n\n const withDescription = (duration?: number) =>\n toast.create({\n title: 'Failed to mark as True Positive',\n description: 'resolved vector count must not exceed 500000',\n type: 'error',\n variant: 'simple',\n duration,\n });\n\n const withoutDescription = (duration?: number) =>\n toast.create({ title: 'Marked 2 attacks', type: 'success', variant: 'simple', duration });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => withDescription()}>\n Simple with description\n </Button>\n <Button variant='outline' color='neutral' onClick={() => withoutDescription()}>\n Simple without description\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button\n variant='secondary'\n color='neutral'\n onClick={() => withDescription(STATIC_DURATION)}\n >\n Simple with description\n </Button>\n <Button\n variant='secondary'\n color='neutral'\n onClick={() => withoutDescription(STATIC_DURATION)}\n >\n Simple without description\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126182
126188
  "description": "A `description` is never dropped: ask for `simple` alongside one and the toast still reflows to `extended`, timer included. Passing no description keeps the one-line layout."
126183
126189
  },
126184
126190
  {
126185
126191
  "name": "SimpleWithActions",
126186
- "code": "() => {\n const toast = useToast();\n\n const single = (duration?: number) =>\n toast.create({\n title: 'Message sent',\n type: 'success',\n variant: 'simple',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Undo\n </Button>\n </ToastActions>\n ),\n });\n\n const double = (duration?: number) =>\n toast.create({\n title: 'Connection restored',\n type: 'info',\n variant: 'simple',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n View\n </Button>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Dismiss\n </Button>\n </ToastActions>\n ),\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => single()}>\n Simple Toast with Action\n </Button>\n <Button variant='outline' color='neutral' onClick={() => double()}>\n Simple Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button variant='secondary' color='neutral' onClick={() => single(STATIC_DURATION)}>\n Simple Toast with Action\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => double(STATIC_DURATION)}>\n Simple Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126192
+ "code": "() => {\n const toast = useToast();\n\n const single = (duration?: number) =>\n toast.create({\n title: 'Message sent',\n type: 'success',\n variant: 'simple',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Undo\n </Button>\n </ToastActions>\n ),\n });\n\n const double = (duration?: number) =>\n toast.create({\n title: 'Connection restored',\n type: 'info',\n variant: 'simple',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n View\n </Button>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Dismiss\n </Button>\n </ToastActions>\n ),\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => single()}>\n Simple Toast with Action\n </Button>\n <Button variant='outline' color='neutral' onClick={() => double()}>\n Simple Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='secondary' color='neutral' onClick={() => single(STATIC_DURATION)}>\n Simple Toast with Action\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => double(STATIC_DURATION)}>\n Simple Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126187
126193
  "description": "`simple` is a one-line title for about five seconds — as long as no `description` is passed with it. One action is the norm and two is the ceiling — they have to be optional, since the toast leaves on its own."
126188
126194
  },
126189
126195
  {
126190
126196
  "name": "ExtendedWithActions",
126191
- "code": "() => {\n const toast = useToast();\n\n const single = (duration?: number) =>\n toast.create({\n title: 'Extended Toast',\n description: 'This is an extended toast with default layout.',\n type: 'success',\n variant: 'extended',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Action\n </Button>\n </ToastActions>\n ),\n });\n\n const double = (duration?: number) =>\n toast.create({\n title: 'File processed',\n description: 'Your file has been processed successfully.',\n type: 'info',\n variant: 'extended',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n View\n </Button>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Download\n </Button>\n </ToastActions>\n ),\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => single()}>\n Extended Toast with Action\n </Button>\n <Button variant='outline' color='neutral' onClick={() => double()}>\n Extended Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button variant='secondary' color='neutral' onClick={() => single(STATIC_DURATION)}>\n Extended Toast with Action\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => double(STATIC_DURATION)}>\n Extended Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126197
+ "code": "() => {\n const toast = useToast();\n\n const single = (duration?: number) =>\n toast.create({\n title: 'Extended Toast',\n description: 'This is an extended toast with default layout.',\n type: 'success',\n variant: 'extended',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Action\n </Button>\n </ToastActions>\n ),\n });\n\n const double = (duration?: number) =>\n toast.create({\n title: 'File processed',\n description: 'Your file has been processed successfully.',\n type: 'info',\n variant: 'extended',\n duration,\n actions: (\n <ToastActions>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n View\n </Button>\n <Button variant='secondary' size='small' color='neutral-alt' onClick={onToastAction}>\n Download\n </Button>\n </ToastActions>\n ),\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => single()}>\n Extended Toast with Action\n </Button>\n <Button variant='outline' color='neutral' onClick={() => double()}>\n Extended Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='secondary' color='neutral' onClick={() => single(STATIC_DURATION)}>\n Extended Toast with Action\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => double(STATIC_DURATION)}>\n Extended Toast with Two Actions\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126192
126198
  "description": "`extended` adds a description and about ten seconds, for the cases where one sentence of context genuinely helps."
126193
126199
  },
126194
126200
  {
126195
126201
  "name": "LongText",
126196
- "code": "() => {\n const toast = useToast();\n\n const longTitle =\n 'This is a very very very long title that will be truncated after a certain number of lines';\n const veryLongTitle = longTitle.repeat(4);\n const longDescription =\n 'This is a very long description that will be truncated after a certain number of lines. ' +\n 'Hover over the description to see the full text in a tooltip. ' +\n 'This allows for better space management while still providing access to all the information.'.repeat(\n 2,\n );\n\n const simpleLong = (duration?: number) =>\n toast.create({ title: longTitle, variant: 'simple', type: 'info', duration });\n\n const extendedLong = (duration?: number) =>\n toast.create({\n title: veryLongTitle,\n variant: 'extended',\n description: longDescription,\n type: 'info',\n duration,\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => simpleLong()}>\n Simple with long title\n </Button>\n <Button variant='outline' color='neutral' onClick={() => extendedLong()}>\n Extended with long text\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button variant='secondary' color='neutral' onClick={() => simpleLong(STATIC_DURATION)}>\n Simple with long title\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => extendedLong(STATIC_DURATION)}>\n Extended with long text\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126202
+ "code": "() => {\n const toast = useToast();\n\n const longTitle =\n 'This is a very very very long title that will be truncated after a certain number of lines';\n const veryLongTitle = longTitle.repeat(4);\n const longDescription =\n 'This is a very long description that will be truncated after a certain number of lines. ' +\n 'Hover over the description to see the full text in a tooltip. ' +\n 'This allows for better space management while still providing access to all the information.'.repeat(\n 2,\n );\n\n const simpleLong = (duration?: number) =>\n toast.create({ title: longTitle, variant: 'simple', type: 'info', duration });\n\n const extendedLong = (duration?: number) =>\n toast.create({\n title: veryLongTitle,\n variant: 'extended',\n description: longDescription,\n type: 'info',\n duration,\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => simpleLong()}>\n Simple with long title\n </Button>\n <Button variant='outline' color='neutral' onClick={() => extendedLong()}>\n Extended with long text\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='secondary' color='neutral' onClick={() => simpleLong(STATIC_DURATION)}>\n Simple with long title\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => extendedLong(STATIC_DURATION)}>\n Extended with long text\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126197
126203
  "description": "The title clamps to one line simple, two extended, and the description to four, with the full text in a tooltip. Pre-truncating your own copy fights it."
126198
126204
  },
126199
126205
  {
126200
126206
  "name": "WithoutCloseButton",
126201
- "code": "() => {\n const toast = useToast();\n\n const create = (duration?: number) =>\n toast.create({\n title: 'Non-closable toast',\n variant: 'extended',\n description: 'This toast cannot be closed manually.',\n type: 'info',\n closable: false,\n duration,\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => create()}>\n Non-closable Toast\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button variant='secondary' color='neutral' onClick={() => create(STATIC_DURATION)}>\n Non-closable Toast\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126207
+ "code": "() => {\n const toast = useToast();\n\n const create = (duration?: number) =>\n toast.create({\n title: 'Non-closable toast',\n variant: 'extended',\n description: 'This toast cannot be closed manually.',\n type: 'info',\n closable: false,\n duration,\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => create()}>\n Non-closable Toast\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='secondary' color='neutral' onClick={() => create(STATIC_DURATION)}>\n Non-closable Toast\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126202
126208
  "description": "`closable: false` takes the X away, which is only right for an in-flight loading toast the reader must not lose."
126203
126209
  },
126204
126210
  {
126205
126211
  "name": "CustomIcon",
126206
- "code": "() => {\n const toast = useToast();\n\n const withColor = (duration?: number) =>\n toast.create({\n title: 'Custom icon toast',\n variant: 'extended',\n description: 'This toast uses a custom icon that overrides the type-based icon.',\n type: 'success',\n icon: <Activity size='lg' className='text-purple-500' />,\n duration,\n });\n\n const withoutColor = (duration?: number) =>\n toast.create({\n title: 'Custom icon with action',\n variant: 'extended',\n description: 'You can use any icon component as a custom icon.',\n type: 'info',\n icon: <Activity />,\n duration,\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap>\n <Button variant='outline' color='neutral' onClick={() => withColor()}>\n Custom Icon with own color\n </Button>\n <Button variant='outline' color='neutral' onClick={() => withoutColor()}>\n Custom Icon without color\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap>\n <Button variant='secondary' color='neutral' onClick={() => withColor(STATIC_DURATION)}>\n Custom Icon with own color\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => withoutColor(STATIC_DURATION)}>\n Custom Icon without color\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126212
+ "code": "() => {\n const toast = useToast();\n\n const withColor = (duration?: number) =>\n toast.create({\n title: 'Custom icon toast',\n variant: 'extended',\n description: 'This toast uses a custom icon that overrides the type-based icon.',\n type: 'success',\n icon: <Activity size='lg' className='text-purple-500' />,\n duration,\n });\n\n const withoutColor = (duration?: number) =>\n toast.create({\n title: 'Custom icon with action',\n variant: 'extended',\n description: 'You can use any icon component as a custom icon.',\n type: 'info',\n icon: <Activity />,\n duration,\n });\n\n return (\n <VStack gap={16} align='start'>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>timed</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='outline' color='neutral' onClick={() => withColor()}>\n Custom Icon with own color\n </Button>\n <Button variant='outline' color='neutral' onClick={() => withoutColor()}>\n Custom Icon without color\n </Button>\n </HStack>\n </VStack>\n <VStack gap={4} align='start'>\n <p className='sb-annotation'>static — no timer</p>\n <HStack gap={8} wrap='wrap'>\n <Button variant='secondary' color='neutral' onClick={() => withColor(STATIC_DURATION)}>\n Custom Icon with own color\n </Button>\n <Button variant='secondary' color='neutral' onClick={() => withoutColor(STATIC_DURATION)}>\n Custom Icon without color\n </Button>\n </HStack>\n </VStack>\n </VStack>\n );\n}",
126207
126213
  "description": "A custom `icon` replaces the type’s own. It inherits the type colour unless it sets one, so the first here is deliberately purple and the second is not."
126208
126214
  }
126209
126215
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wallarm-org/design-system",
3
- "version": "3.4.0",
3
+ "version": "3.4.1-rc-fix-data-display-category.2",
4
4
  "description": "Core design system library with React components and Storybook documentation",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -65,13 +65,12 @@
65
65
  "build:watch": "rslib build --watch",
66
66
  "prepublishOnly": "prepare-publish",
67
67
  "postpublish": "restore-package",
68
- "generate-exports": "tsx scripts/generate-exports.ts",
69
68
  "compiler:audit": "tsx scripts/compiler-audit.ts",
70
69
  "generate:grammars": "lezer-generator src/components/CodeEditor/engine/languages/http/http.grammar -o src/components/CodeEditor/engine/languages/http/parser.ts --typeScript",
71
70
  "publish:local": "pnpm build && yalc publish --push",
72
71
  "lint": "biome check",
73
72
  "lint:fix": "biome check --fix",
74
- "typecheck": "tsc --noEmit && tsc -p tsconfig.figma.json",
73
+ "typecheck": "tsc -p tsconfig.app.json --noEmit --composite false --incremental false && tsc -p tsconfig.storybook.json --noEmit --composite false --incremental false && tsc -p tsconfig.figma.json --noEmit --composite false --incremental false && tsc -p tsconfig.e2e.json --noEmit --composite false --incremental false",
75
74
  "test": "rstest watch",
76
75
  "test:coverage": "rstest run --coverage",
77
76
  "test:run": "rstest run",
@@ -83,9 +82,6 @@
83
82
  "e2e:failed": "playwright test --last-failed",
84
83
  "e2e:failed:headed": "playwright test --last-failed --headed",
85
84
  "e2e:report": "playwright show-report",
86
- "e2e:docker": "playwright test --config=playwright.config.docker.ts",
87
- "e2e:docker:ui": "playwright test --config=playwright.config.docker.ts --ui",
88
- "e2e:docker:failed": "playwright test --config=playwright.config.docker.ts --last-failed",
89
85
  "e2e:docker:report": "playwright show-report ./playwright-report --port=9323",
90
86
  "icons:sync": "tsx scripts/icons/sync.ts",
91
87
  "code-connect:preview": "node --env-file-if-exists=../../.env.local node_modules/@figma/code-connect/bin/figma connect preview",