@wallarm-org/design-system 4.3.3 → 4.4.0-rc-feat-claude-design.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -115,6 +115,19 @@ pnpm --filter @wallarm-org/design-system icons:sync --only Bell,BellOff # ref
115
115
 
116
116
  The command writes the component files, `src/icons/index.ts`, the gallery category (`module/const.ts`) and Code Connect (`module/Icons.figma.batch.json` + its `Icons.figma.batch.ts` template). `scripts/icons/manifest.json` maps Figma nodes to component names, and also holds excluded nodes and the `keep` list of hand-maintained icons. When a new layer's name collides with an existing icon, map it there. Brand icons without a Neutral variant in Figma get a generated `*Neutral` twin. Commit with `[update-screenshots]` so CI refreshes the icon gallery baselines.
117
117
 
118
+ ## Claude Design
119
+
120
+ Choose **Wallarm Design System** in Claude Design to prototype with the generated component
121
+ bundle, tokens, fonts and icons. See the [designer guide](../../apps/docs/docs/ai/claude-design.mdx).
122
+ Run `pnpm --filter @wallarm-org/design-system build:claude-design` to build the package and
123
+ generate the ignored `.claude-design/project/` folder. The bundle and story previews share
124
+ an Rslib IIFE configuration with the native SWC React Compiler targeting React 18.
125
+ Run `pnpm --filter @wallarm-org/design-system test:claude-design` for the React 18 harness and
126
+ producer checks, or `pnpm --filter @wallarm-org/design-system claude-design:verify` to compare
127
+ every output file across two consecutive builds. The repository's `/claude-design-sync`
128
+ skill previews and manually publishes release changes; the first sync and remote deletions
129
+ require confirmation. The npm package remains React 19; the separate canvas bundle uses React 18.
130
+
118
131
  ## 📖 Resources
119
132
 
120
133
  - [Docs site](https://wallarm.github.io/design-system/) - Guides and component docs
@@ -1,6 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { DatePicker, Portal } from "@ark-ui/react";
3
+ import { DatePicker } from "@ark-ui/react";
4
+ import { Portal } from "../../lib/portal/Portal.js";
4
5
  import { cn } from "../../utils/cn.js";
5
6
  import { useLayerZIndexRef } from "../../utils/syncLayerZIndex.js";
6
7
  const CalendarContent = (t0)=>{
@@ -1,5 +1,5 @@
1
1
  import type { FC, ReactNode } from 'react';
2
- import { type PortalProps } from '@ark-ui/react/portal';
2
+ import type { PortalProps } from '@ark-ui/react/portal';
3
3
  export interface DrawerPortalProps extends PortalProps {
4
4
  children: ReactNode;
5
5
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { Portal } from "@ark-ui/react/portal";
3
+ import { Portal } from "../../lib/portal/Portal.js";
4
4
  const DrawerPortal = (t0)=>{
5
5
  const $ = c(6);
6
6
  let children;
@@ -146,7 +146,7 @@ const DropdownMenu = (t0)=>{
146
146
  const root = t8;
147
147
  let t9;
148
148
  if ($[36] !== root || $[37] !== testId) {
149
- t9 = /*#__PURE__*/ jsx(DropdownMenuContext, {
149
+ t9 = /*#__PURE__*/ jsx(DropdownMenuContext.Provider, {
150
150
  value: ctx,
151
151
  children: /*#__PURE__*/ jsx(TestIdProvider, {
152
152
  value: testId,
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { Children, isValidElement } from "react";
4
4
  import { Menu } from "@ark-ui/react/menu";
5
- import { Portal } from "@ark-ui/react/portal";
5
+ import { Portal } from "../../lib/portal/Portal.js";
6
6
  import { cn } from "../../utils/cn.js";
7
7
  import { useLayerZIndexRef } from "../../utils/syncLayerZIndex.js";
8
8
  import { TestIdProvider, useTestId } from "../../utils/testId.js";
@@ -1,9 +1,9 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { useEffect, useLayoutEffect, useRef, useState } from "react";
4
- import { Portal } from "@ark-ui/react/portal";
5
4
  import { Presence } from "@ark-ui/react/presence";
6
5
  import { Check, X } from "../../icons/index.js";
6
+ import { Portal } from "../../lib/portal/Portal.js";
7
7
  import { cn } from "../../utils/cn.js";
8
8
  import { Button } from "../Button/index.js";
9
9
  import { Textarea } from "../Textarea/index.js";
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { Children, isValidElement, useLayoutEffect, useRef } from "react";
4
- import { Portal } from "@zag-js/react";
4
+ import { Portal } from "../../lib/portal/Portal.js";
5
5
  import { cn } from "../../utils/cn.js";
6
6
  import { useLayerZIndexRef } from "../../utils/syncLayerZIndex.js";
7
7
  import { useTestId } from "../../utils/testId.js";
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { Popover, usePopoverContext } from "@ark-ui/react";
4
- import { Portal } from "@ark-ui/react/portal";
4
+ import { Portal } from "../../lib/portal/Portal.js";
5
5
  import { cn } from "../../utils/cn.js";
6
6
  import { useLayerZIndexRef } from "../../utils/syncLayerZIndex.js";
7
7
  import { useTestId } from "../../utils/testId.js";
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { useEffect } from "react";
4
4
  import { Dialog } from "@ark-ui/react/dialog";
5
- import { Portal } from "@ark-ui/react/portal";
5
+ import { Portal } from "../../lib/portal/Portal.js";
6
6
  import { cn } from "../../utils/cn.js";
7
7
  import { useTestId } from "../../utils/testId.js";
8
8
  import { Overlay } from "../Overlay/index.js";
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { Portal } from "@ark-ui/react/portal";
4
3
  import { Select } from "@ark-ui/react/select";
4
+ import { Portal } from "../../lib/portal/Portal.js";
5
5
  import { cn } from "../../utils/cn.js";
6
6
  import { useLayerZIndexRef } from "../../utils/syncLayerZIndex.js";
7
7
  import { dropdownMenuClassNames } from "../DropdownMenu/index.js";
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { Children, isValidElement } from "react";
4
- import { Portal } from "@ark-ui/react/portal";
5
4
  import { Presence } from "@ark-ui/react/presence";
5
+ import { Portal } from "../../../lib/portal/Portal.js";
6
6
  import { useTestId } from "../../../utils/testId.js";
7
7
  import { BulkBarSummary, BulkBarSummaryClear, BulkBarSummaryCount, BulkBarSummarySelectAll, BulkBarSummarySeparator } from "../../BulkBar/index.js";
8
8
  import { HStack } from "../../Stack/index.js";
@@ -2,7 +2,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { Children, isValidElement } from "react";
4
4
  import { Popover } from "@ark-ui/react/popover";
5
- import { Portal } from "@ark-ui/react/portal";
5
+ import { Portal } from "../../../lib/portal/Portal.js";
6
6
  import { useTestId } from "../../../utils/testId.js";
7
7
  import { bulkBarSurfaceClasses } from "../../BulkBar/classes.js";
8
8
  import { HStack } from "../../Stack/index.js";
@@ -200,7 +200,7 @@ const TableInnerWindow = (t0)=>{
200
200
  } else t17 = $[45];
201
201
  let t18;
202
202
  if ($[46] !== isEmpty || $[47] !== scrollRoot) {
203
- t18 = !isEmpty && /*#__PURE__*/ jsx(WindowScrollRootContext, {
203
+ t18 = !isEmpty && /*#__PURE__*/ jsx(WindowScrollRootContext.Provider, {
204
204
  value: scrollRoot,
205
205
  children: /*#__PURE__*/ jsx(TableBody, {})
206
206
  });
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { Portal } from "@ark-ui/react/portal";
4
3
  import { Toaster, createToaster } from "@ark-ui/react/toast";
4
+ import { Portal } from "../../lib/portal/Portal.js";
5
5
  import { cn } from "../../utils/cn.js";
6
6
  import { EXTENDED_TOAST_DURATION_MS, SIMPLE_TOAST_DURATION_MS, Toast, resolveToastVariant } from "./Toast.js";
7
7
  const DEFAULT_TOAST_PRIORITY = {
@@ -1,8 +1,8 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { Portal } from "@ark-ui/react/portal";
4
3
  import { Tooltip } from "@ark-ui/react/tooltip";
5
4
  import { cva } from "class-variance-authority";
5
+ import { Portal } from "../../lib/portal/Portal.js";
6
6
  import { cn } from "../../utils/cn.js";
7
7
  import { hasNonTextEnd } from "../../utils/hasNonTextEnd.js";
8
8
  import { useTestId } from "../../utils/testId.js";
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { c } from "react/compiler-runtime";
3
- import { Portal, useTourContext } from "@ark-ui/react";
3
+ import { useTourContext } from "@ark-ui/react";
4
+ import { Portal } from "../../lib/portal/Portal.js";
4
5
  import { TestIdProvider } from "../../utils/testId.js";
5
6
  import { TourBody } from "./TourBody.js";
6
7
  import { TourClose } from "./TourClose.js";
@@ -487,7 +487,7 @@ const WallyAssistant = (t0)=>{
487
487
  onFeedback: onFeedback,
488
488
  onCopy: onCopy,
489
489
  onRetry: onRetry,
490
- children: /*#__PURE__*/ jsx(AdapterContext, {
490
+ children: /*#__PURE__*/ jsx(AdapterContext.Provider, {
491
491
  value: outerAdapter ?? LAZY_PRISM,
492
492
  children: /*#__PURE__*/ jsxs(Chat, {
493
493
  "aria-label": labels.region,
@@ -82,7 +82,7 @@ const ChatViewProvider = (t0)=>{
82
82
  const value = t11;
83
83
  let t12;
84
84
  if ($[22] !== children || $[23] !== value) {
85
- t12 = /*#__PURE__*/ jsx(ChatViewContext, {
85
+ t12 = /*#__PURE__*/ jsx(ChatViewContext.Provider, {
86
86
  value: value,
87
87
  children: children
88
88
  });
@@ -0,0 +1,3 @@
1
+ import { type PropsWithChildren } from 'react';
2
+ import { type PortalProps } from '@ark-ui/react/portal';
3
+ export declare const Portal: (props: PropsWithChildren<PortalProps>) => import("react").JSX.Element;
@@ -0,0 +1,22 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { c } from "react/compiler-runtime";
3
+ import { useContext } from "react";
4
+ import { Portal } from "@ark-ui/react/portal";
5
+ import { PortalContainerContext } from "./PortalContainerContext.js";
6
+ const Portal_Portal = (props)=>{
7
+ const $ = c(3);
8
+ const container = useContext(PortalContainerContext);
9
+ const t0 = props.container ?? container ?? void 0;
10
+ let t1;
11
+ if ($[0] !== props || $[1] !== t0) {
12
+ t1 = /*#__PURE__*/ jsx(Portal, {
13
+ ...props,
14
+ container: t0
15
+ });
16
+ $[0] = props;
17
+ $[1] = t0;
18
+ $[2] = t1;
19
+ } else t1 = $[2];
20
+ return t1;
21
+ };
22
+ export { Portal_Portal as Portal };
@@ -0,0 +1,3 @@
1
+ import { type RefObject } from 'react';
2
+ /** Internal canvas integration; without a provider Ark keeps its normal portal destination. */
3
+ export declare const PortalContainerContext: import("react").Context<RefObject<HTMLElement | null> | null>;
@@ -0,0 +1,3 @@
1
+ import { createContext } from "react";
2
+ const PortalContainerContext = createContext(null);
3
+ export { PortalContainerContext };
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "4.3.2",
3
- "generatedAt": "2026-10-28T09:23:13.943Z",
2
+ "version": "4.3.3",
3
+ "generatedAt": "2026-10-29T07:02:33.247Z",
4
4
  "components": [
5
5
  {
6
6
  "name": "Accordion",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wallarm-org/design-system",
3
- "version": "4.3.3",
3
+ "version": "4.4.0-rc-feat-claude-design.1",
4
4
  "description": "Core design system library with React components and Storybook documentation",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -70,7 +70,7 @@
70
70
  "publish:local": "pnpm build && yalc publish --push",
71
71
  "lint": "biome check",
72
72
  "lint:fix": "biome check --fix",
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",
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 && tsc -p tsconfig.claude-design.json --noEmit",
74
74
  "test": "rstest watch",
75
75
  "test:coverage": "rstest run --coverage",
76
76
  "test:run": "rstest run",
@@ -85,7 +85,11 @@
85
85
  "e2e:docker:report": "playwright show-report ./playwright-report --port=9323",
86
86
  "icons:sync": "tsx scripts/icons/sync.ts",
87
87
  "code-connect:preview": "node --env-file-if-exists=../../.env.local node_modules/@figma/code-connect/bin/figma connect preview",
88
- "code-connect:publish": "node --env-file-if-exists=../../.env.local node_modules/@figma/code-connect/bin/figma connect publish --exit-on-unreadable-files"
88
+ "code-connect:publish": "node --env-file-if-exists=../../.env.local node_modules/@figma/code-connect/bin/figma connect publish --exit-on-unreadable-files",
89
+ "claude-design:no-impact": "tsx claude-design/no-impact.ts",
90
+ "test:claude-design": "rstest run --config rstest.claude-design.config.ts",
91
+ "build:claude-design": "turbo run build --filter=@wallarm-org/design-system... && tsx claude-design/build.ts",
92
+ "claude-design:verify": "turbo run build --filter=@wallarm-org/design-system... && tsx claude-design/verify.ts"
89
93
  },
90
94
  "devDependencies": {
91
95
  "@babel/core": "7.29.7",
@@ -107,6 +111,7 @@
107
111
  "@testing-library/react": "catalog:",
108
112
  "@testing-library/user-event": "catalog:",
109
113
  "@types/babel__core": "7.20.5",
114
+ "@types/jsdom": "21.1.7",
110
115
  "@types/luaparse": "0.2.13",
111
116
  "@types/node": "catalog:",
112
117
  "@types/prismjs": "1.26.6",
@@ -120,11 +125,15 @@
120
125
  "@wallarm-org/tailwind-config": "workspace:*",
121
126
  "@wallarm-org/typescript-config": "workspace:*",
122
127
  "babel-plugin-react-compiler": "1.0.0",
128
+ "esbuild": "0.28.1",
123
129
  "glob": "13.0.6",
124
130
  "jsdom": "catalog:",
125
131
  "postcss": "8.5.28",
126
132
  "react": "catalog:",
133
+ "react-compiler-runtime": "1.0.0",
127
134
  "react-dom": "catalog:",
135
+ "react-dom18": "npm:react-dom@18.3.1",
136
+ "react18": "npm:react@18.3.1",
128
137
  "storybook": "catalog:",
129
138
  "storybook-react-rsbuild": "3.6.0",
130
139
  "tailwindcss": "catalog:",