@agent-native/core 0.80.0 → 0.80.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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +28 -0
- package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +14 -1
- package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/de-DE/template-design.mdx +15 -1
- package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/es-ES/template-design.mdx +15 -1
- package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +15 -1
- package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +15 -1
- package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +16 -1
- package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +14 -1
- package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +14 -1
- package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +14 -1
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +14 -1
- package/corpus/core/docs/content/skills-guide.mdx +5 -0
- package/corpus/core/docs/content/template-design.mdx +14 -1
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/application-state/handlers.ts +1 -1
- package/corpus/core/src/brand-kit/index.ts +1 -1
- package/corpus/core/src/cli/skills.ts +18 -0
- package/corpus/core/src/client/AgentPanel.tsx +1 -1
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +1 -1
- package/corpus/core/src/client/extensions/portable-extension.ts +1 -1
- package/corpus/core/src/code-agents/transcript-normalizer.ts +1 -1
- package/corpus/core/src/extensions/path.ts +1 -4
- package/corpus/core/src/integrations/a2a-continuation-processor.ts +1 -1
- package/corpus/core/src/mcp/build-server.ts +2 -2
- package/corpus/core/src/mcp/embed-app.ts +35 -1
- package/corpus/core/src/org/handlers.ts +5 -5
- package/corpus/core/src/org/plugin.ts +2 -2
- package/corpus/core/src/scripts/call-agent.ts +1 -1
- package/corpus/core/src/scripts/db/safety.ts +1 -1
- package/corpus/core/src/server/auth.ts +3 -0
- package/corpus/core/src/server/builder-design-systems.ts +308 -0
- package/corpus/core/src/server/core-routes-plugin.ts +29 -3
- package/corpus/core/src/server/index.ts +8 -0
- package/corpus/core/src/styles/agent-native.css +14 -7
- package/corpus/core/src/usage/store.ts +2 -2
- package/corpus/templates/analytics/actions/dashboard-mutation-api.ts +298 -15
- package/corpus/templates/analytics/actions/get-sql-dashboard.ts +9 -4
- package/corpus/templates/analytics/actions/mutate-dashboard.ts +18 -2
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +12 -2
- package/corpus/templates/analytics/app/hooks/use-replay-storage-status.ts +66 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +37 -0
- package/corpus/templates/analytics/app/i18n-data.ts +404 -0
- package/corpus/templates/analytics/app/pages/Settings.tsx +333 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +2 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-layout.ts +121 -3
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +49 -26
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +137 -36
- package/corpus/templates/analytics/changelog/2026-06-29-analytics-agents-can-now-place-new-charts-into-requested-das.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-analytics-queries-now-report-failed-source-query-errors-inst.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-charts-can-now-be-dropped-between-full-dashboard-rows-to-cre.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-dashboard-email-reports-include-the-full-dashboard-image-wit.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-main-surface-border-reaches-the-top.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-session-replay-now-records-playable-sessions-in-production-a.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-29-set-up-session-replay-storage-from-settings-connect-builder-.md +6 -0
- package/corpus/templates/analytics/scripts/cleanup-empty-session-recordings.ts +102 -0
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +49 -26
- package/corpus/templates/analytics/server/lib/real-data-actions.ts +81 -20
- package/corpus/templates/analytics/server/lib/replay-storage.ts +79 -0
- package/corpus/templates/analytics/server/lib/s3-upload-provider.ts +255 -0
- package/corpus/templates/analytics/server/lib/session-replay.ts +29 -8
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +11 -2
- package/corpus/templates/analytics/server/plugins/onboarding.ts +97 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +24 -0
- package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +105 -5
- package/corpus/templates/content/actions/set-image-alt-text.ts +1 -1
- package/corpus/templates/content/shared/document-export.ts +1 -1
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +8 -18
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +17 -0
- package/corpus/templates/design/actions/add-localhost-screens.ts +32 -5
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +259 -0
- package/corpus/templates/design/actions/update-file.ts +9 -2
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +33 -75
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +72 -9
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +41 -39
- package/corpus/templates/design/app/components/design/EditPanel.tsx +1029 -249
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +450 -101
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +978 -154
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +7 -9
- package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +133 -66
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +1234 -344
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +144 -94
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +301 -72
- package/corpus/templates/design/app/components/design/inspector/FigmaColorPicker.tsx +876 -286
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +601 -0
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +242 -0
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +30 -7
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +212 -155
- package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +423 -0
- package/corpus/templates/design/app/components/design/inspector/figma-icons.tsx +487 -107
- package/corpus/templates/design/app/components/design/inspector/index.ts +27 -0
- package/corpus/templates/design/app/global.css +29 -3
- package/corpus/templates/design/app/i18n/zh-TW.ts +13 -0
- package/corpus/templates/design/app/i18n-data.ts +239 -1
- package/corpus/templates/design/app/pages/DesignEditor.tsx +1023 -353
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +57 -221
- package/corpus/templates/design/changelog/2026-06-29-canvas-selection-no-longer-flashes-broken-prototype-html-whe.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-command-menu-selections-are-clearer-in-dark-mode.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-mode-top-chrome-now-groups-collaborators-preview-shar.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-element-selection-now-stays-on-the-intended-layer-after-sele.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-full-view-controls-now-sit-above-frames-inst.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-screen-overview-tools-can-draw-shapes-create-screens-and-kee.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-the-pen-tool-now-creates-anchor-based-bezier-vectors-with-ha.md +6 -0
- package/corpus/templates/design/server/handlers/import-figma-system.ts +38 -85
- package/corpus/templates/design/server/lib/design-snapshot.ts +9 -1
- package/corpus/templates/design/shared/code-layer.ts +209 -9
- package/corpus/templates/design/shared/html-content.ts +21 -0
- package/corpus/templates/design/shared/pen-path.ts +207 -0
- package/corpus/templates/mail/app/lib/utils.ts +2 -2
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +9 -10
- package/corpus/templates/slides/AGENTS.md +3 -2
- package/corpus/templates/slides/actions/import-file.ts +26 -17
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +259 -0
- package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +35 -167
- package/corpus/templates/slides/app/components/design-system/fig-import-response.ts +9 -13
- package/corpus/templates/slides/app/context/DeckContext.tsx +1 -1
- package/corpus/templates/slides/app/i18n/ar-SA.ts +9 -37
- package/corpus/templates/slides/app/i18n/de-DE.ts +10 -25
- package/corpus/templates/slides/app/i18n/en-US.ts +9 -26
- package/corpus/templates/slides/app/i18n/es-ES.ts +10 -28
- package/corpus/templates/slides/app/i18n/fr-FR.ts +10 -28
- package/corpus/templates/slides/app/i18n/hi-IN.ts +9 -26
- package/corpus/templates/slides/app/i18n/ja-JP.ts +10 -22
- package/corpus/templates/slides/app/i18n/ko-KR.ts +9 -23
- package/corpus/templates/slides/app/i18n/pt-BR.ts +10 -28
- package/corpus/templates/slides/app/i18n/zh-CN.ts +9 -22
- package/corpus/templates/slides/app/i18n/zh-TW.ts +9 -22
- package/corpus/templates/slides/server/handlers/import-figma-system.ts +44 -12
- package/corpus/templates/slides/server/lib/chat-attachments.ts +1 -1
- package/corpus/templates/videos/app/components/NewCompositionPopover.tsx +1 -1
- package/dist/application-state/handlers.js +1 -1
- package/dist/application-state/handlers.js.map +1 -1
- package/dist/brand-kit/index.d.ts +1 -1
- package/dist/brand-kit/index.js +1 -1
- package/dist/brand-kit/index.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +18 -0
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.js +1 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +1 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/extensions/portable-extension.d.ts +1 -1
- package/dist/client/extensions/portable-extension.d.ts.map +1 -1
- package/dist/client/extensions/portable-extension.js.map +1 -1
- package/dist/code-agents/transcript-normalizer.js +1 -1
- package/dist/code-agents/transcript-normalizer.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/extensions/path.d.ts +1 -1
- package/dist/extensions/path.d.ts.map +1 -1
- package/dist/extensions/path.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/integrations/a2a-continuation-processor.js +1 -1
- package/dist/integrations/a2a-continuation-processor.js.map +1 -1
- package/dist/mcp/build-server.d.ts +1 -1
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +1 -1
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/embed-app.d.ts.map +1 -1
- package/dist/mcp/embed-app.js +35 -1
- package/dist/mcp/embed-app.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +8 -8
- package/dist/org/handlers.js +5 -5
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/plugin.js +2 -2
- package/dist/org/plugin.js.map +1 -1
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/call-agent.js +1 -1
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/db/safety.js +1 -1
- package/dist/scripts/db/safety.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +3 -0
- package/dist/server/auth.js.map +1 -1
- package/dist/server/builder-design-systems.d.ts +28 -0
- package/dist/server/builder-design-systems.d.ts.map +1 -0
- package/dist/server/builder-design-systems.js +217 -0
- package/dist/server/builder-design-systems.js.map +1 -0
- package/dist/server/core-routes-plugin.d.ts +1 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +20 -3
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/styles/agent-native.css +14 -7
- package/dist/usage/store.js +2 -2
- package/dist/usage/store.js.map +1 -1
- package/docs/content/locales/ar-SA/skills-guide.mdx +5 -0
- package/docs/content/locales/ar-SA/template-design.mdx +14 -1
- package/docs/content/locales/de-DE/skills-guide.mdx +5 -0
- package/docs/content/locales/de-DE/template-design.mdx +15 -1
- package/docs/content/locales/es-ES/skills-guide.mdx +5 -0
- package/docs/content/locales/es-ES/template-design.mdx +15 -1
- package/docs/content/locales/fr-FR/skills-guide.mdx +5 -0
- package/docs/content/locales/fr-FR/template-design.mdx +15 -1
- package/docs/content/locales/hi-IN/skills-guide.mdx +5 -0
- package/docs/content/locales/hi-IN/template-design.mdx +15 -1
- package/docs/content/locales/ja-JP/skills-guide.mdx +5 -0
- package/docs/content/locales/ja-JP/template-design.mdx +16 -1
- package/docs/content/locales/ko-KR/skills-guide.mdx +5 -0
- package/docs/content/locales/ko-KR/template-design.mdx +14 -1
- package/docs/content/locales/pt-BR/skills-guide.mdx +5 -0
- package/docs/content/locales/pt-BR/template-design.mdx +14 -1
- package/docs/content/locales/zh-CN/skills-guide.mdx +5 -0
- package/docs/content/locales/zh-CN/template-design.mdx +14 -1
- package/docs/content/locales/zh-TW/skills-guide.mdx +5 -0
- package/docs/content/locales/zh-TW/template-design.mdx +14 -1
- package/docs/content/skills-guide.mdx +5 -0
- package/docs/content/template-design.mdx +14 -1
- package/package.json +1 -1
- package/corpus/templates/design/actions/import-figma-file.ts +0 -166
- package/corpus/templates/slides/server/lib/fig-design-system.ts +0 -110
|
@@ -4,6 +4,7 @@ interface IconProps {
|
|
|
4
4
|
className?: string;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
// Gap icon: ]·[ — two inward-facing C-brackets with a center dot
|
|
7
8
|
export function IconGap({ className }: IconProps) {
|
|
8
9
|
return (
|
|
9
10
|
<svg
|
|
@@ -16,112 +17,119 @@ export function IconGap({ className }: IconProps) {
|
|
|
16
17
|
className={cn("size-4", className)}
|
|
17
18
|
aria-hidden="true"
|
|
18
19
|
>
|
|
19
|
-
{/* Left bracket ]
|
|
20
|
-
<line x1="
|
|
21
|
-
<line x1="
|
|
22
|
-
<line x1="
|
|
20
|
+
{/* Left bracket ] — vertical bar on right side, serifs pointing right */}
|
|
21
|
+
<line x1="9" y1="7" x2="6" y2="7" />
|
|
22
|
+
<line x1="6" y1="7" x2="6" y2="17" />
|
|
23
|
+
<line x1="6" y1="17" x2="9" y2="17" />
|
|
23
24
|
{/* Center dot */}
|
|
24
|
-
<circle cx="12" cy="12" r="1
|
|
25
|
-
{/* Right bracket [ */}
|
|
26
|
-
<line x1="
|
|
27
|
-
<line x1="
|
|
28
|
-
<line x1="
|
|
25
|
+
<circle cx="12" cy="12" r="1" fill="currentColor" stroke="none" />
|
|
26
|
+
{/* Right bracket [ — vertical bar on left side, serifs pointing left */}
|
|
27
|
+
<line x1="15" y1="7" x2="18" y2="7" />
|
|
28
|
+
<line x1="18" y1="7" x2="18" y2="17" />
|
|
29
|
+
<line x1="18" y1="17" x2="15" y2="17" />
|
|
29
30
|
</svg>
|
|
30
31
|
);
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
// Padding horizontal: square with thick left and right edges
|
|
33
35
|
export function IconPaddingHorizontal({ className }: IconProps) {
|
|
34
36
|
return (
|
|
35
37
|
<svg
|
|
36
38
|
viewBox="0 0 24 24"
|
|
37
39
|
fill="none"
|
|
38
40
|
stroke="currentColor"
|
|
39
|
-
strokeWidth={
|
|
41
|
+
strokeWidth={1.5}
|
|
40
42
|
strokeLinecap="round"
|
|
41
43
|
strokeLinejoin="round"
|
|
42
44
|
className={cn("size-4", className)}
|
|
43
45
|
aria-hidden="true"
|
|
44
46
|
>
|
|
45
47
|
{/* Outer frame */}
|
|
46
|
-
<rect x="3" y="
|
|
47
|
-
{/* Thick left
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
<rect x="3" y="4" width="18" height="16" rx="1.5" strokeWidth={1.5} />
|
|
49
|
+
{/* Thick left edge fill */}
|
|
50
|
+
<rect
|
|
51
|
+
x="3"
|
|
52
|
+
y="4"
|
|
53
|
+
width="4"
|
|
54
|
+
height="16"
|
|
55
|
+
rx="1.5"
|
|
56
|
+
fill="currentColor"
|
|
57
|
+
stroke="none"
|
|
55
58
|
/>
|
|
56
|
-
{/* Thick right
|
|
57
|
-
<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
{/* Thick right edge fill */}
|
|
60
|
+
<rect
|
|
61
|
+
x="17"
|
|
62
|
+
y="4"
|
|
63
|
+
width="4"
|
|
64
|
+
height="16"
|
|
65
|
+
rx="1.5"
|
|
66
|
+
fill="currentColor"
|
|
67
|
+
stroke="none"
|
|
64
68
|
/>
|
|
65
69
|
</svg>
|
|
66
70
|
);
|
|
67
71
|
}
|
|
68
72
|
|
|
73
|
+
// Padding vertical: square with thick top and bottom edges
|
|
69
74
|
export function IconPaddingVertical({ className }: IconProps) {
|
|
70
75
|
return (
|
|
71
76
|
<svg
|
|
72
77
|
viewBox="0 0 24 24"
|
|
73
78
|
fill="none"
|
|
74
79
|
stroke="currentColor"
|
|
75
|
-
strokeWidth={
|
|
80
|
+
strokeWidth={1.5}
|
|
76
81
|
strokeLinecap="round"
|
|
77
82
|
strokeLinejoin="round"
|
|
78
83
|
className={cn("size-4", className)}
|
|
79
84
|
aria-hidden="true"
|
|
80
85
|
>
|
|
81
86
|
{/* Outer frame */}
|
|
82
|
-
<rect x="
|
|
83
|
-
{/* Thick top
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
<rect x="4" y="3" width="16" height="18" rx="1.5" strokeWidth={1.5} />
|
|
88
|
+
{/* Thick top edge fill */}
|
|
89
|
+
<rect
|
|
90
|
+
x="4"
|
|
91
|
+
y="3"
|
|
92
|
+
width="16"
|
|
93
|
+
height="4"
|
|
94
|
+
rx="1.5"
|
|
95
|
+
fill="currentColor"
|
|
96
|
+
stroke="none"
|
|
91
97
|
/>
|
|
92
|
-
{/* Thick bottom
|
|
93
|
-
<
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
{/* Thick bottom edge fill */}
|
|
99
|
+
<rect
|
|
100
|
+
x="4"
|
|
101
|
+
y="17"
|
|
102
|
+
width="16"
|
|
103
|
+
height="4"
|
|
104
|
+
rx="1.5"
|
|
105
|
+
fill="currentColor"
|
|
106
|
+
stroke="none"
|
|
100
107
|
/>
|
|
101
108
|
</svg>
|
|
102
109
|
);
|
|
103
110
|
}
|
|
104
111
|
|
|
112
|
+
// Flow horizontal: two filled boxes side-by-side inside a wide frame
|
|
105
113
|
export function IconFlowHorizontal({ className }: IconProps) {
|
|
106
114
|
return (
|
|
107
115
|
<svg
|
|
108
116
|
viewBox="0 0 24 24"
|
|
109
117
|
fill="none"
|
|
110
118
|
stroke="currentColor"
|
|
111
|
-
strokeWidth={
|
|
119
|
+
strokeWidth={1.5}
|
|
112
120
|
strokeLinecap="round"
|
|
113
121
|
strokeLinejoin="round"
|
|
114
122
|
className={cn("size-4", className)}
|
|
115
123
|
aria-hidden="true"
|
|
116
124
|
>
|
|
117
|
-
{/*
|
|
118
|
-
<rect x="2" y="
|
|
125
|
+
{/* Outer container — wide landscape frame */}
|
|
126
|
+
<rect x="2" y="6" width="20" height="12" rx="2" strokeWidth={1.5} />
|
|
119
127
|
{/* Left item */}
|
|
120
128
|
<rect
|
|
121
129
|
x="5"
|
|
122
|
-
y="
|
|
130
|
+
y="9"
|
|
123
131
|
width="5"
|
|
124
|
-
height="
|
|
132
|
+
height="6"
|
|
125
133
|
rx="1"
|
|
126
134
|
fill="currentColor"
|
|
127
135
|
stroke="none"
|
|
@@ -129,9 +137,9 @@ export function IconFlowHorizontal({ className }: IconProps) {
|
|
|
129
137
|
{/* Right item */}
|
|
130
138
|
<rect
|
|
131
139
|
x="14"
|
|
132
|
-
y="
|
|
140
|
+
y="9"
|
|
133
141
|
width="5"
|
|
134
|
-
height="
|
|
142
|
+
height="6"
|
|
135
143
|
rx="1"
|
|
136
144
|
fill="currentColor"
|
|
137
145
|
stroke="none"
|
|
@@ -140,25 +148,26 @@ export function IconFlowHorizontal({ className }: IconProps) {
|
|
|
140
148
|
);
|
|
141
149
|
}
|
|
142
150
|
|
|
151
|
+
// Flow vertical: two filled boxes stacked inside a tall frame
|
|
143
152
|
export function IconFlowVertical({ className }: IconProps) {
|
|
144
153
|
return (
|
|
145
154
|
<svg
|
|
146
155
|
viewBox="0 0 24 24"
|
|
147
156
|
fill="none"
|
|
148
157
|
stroke="currentColor"
|
|
149
|
-
strokeWidth={
|
|
158
|
+
strokeWidth={1.5}
|
|
150
159
|
strokeLinecap="round"
|
|
151
160
|
strokeLinejoin="round"
|
|
152
161
|
className={cn("size-4", className)}
|
|
153
162
|
aria-hidden="true"
|
|
154
163
|
>
|
|
155
|
-
{/*
|
|
156
|
-
<rect x="
|
|
164
|
+
{/* Outer container — tall portrait frame */}
|
|
165
|
+
<rect x="6" y="2" width="12" height="20" rx="2" strokeWidth={1.5} />
|
|
157
166
|
{/* Top item */}
|
|
158
167
|
<rect
|
|
159
|
-
x="
|
|
168
|
+
x="9"
|
|
160
169
|
y="5"
|
|
161
|
-
width="
|
|
170
|
+
width="6"
|
|
162
171
|
height="5"
|
|
163
172
|
rx="1"
|
|
164
173
|
fill="currentColor"
|
|
@@ -166,9 +175,9 @@ export function IconFlowVertical({ className }: IconProps) {
|
|
|
166
175
|
/>
|
|
167
176
|
{/* Bottom item */}
|
|
168
177
|
<rect
|
|
169
|
-
x="
|
|
178
|
+
x="9"
|
|
170
179
|
y="14"
|
|
171
|
-
width="
|
|
180
|
+
width="6"
|
|
172
181
|
height="5"
|
|
173
182
|
rx="1"
|
|
174
183
|
fill="currentColor"
|
|
@@ -178,53 +187,57 @@ export function IconFlowVertical({ className }: IconProps) {
|
|
|
178
187
|
);
|
|
179
188
|
}
|
|
180
189
|
|
|
190
|
+
// Flow wrap: items wrap to a new row (first row: two boxes, second row: one + arrow)
|
|
181
191
|
export function IconFlowWrap({ className }: IconProps) {
|
|
182
192
|
return (
|
|
183
193
|
<svg
|
|
184
194
|
viewBox="0 0 24 24"
|
|
185
195
|
fill="none"
|
|
186
196
|
stroke="currentColor"
|
|
187
|
-
strokeWidth={
|
|
197
|
+
strokeWidth={1.5}
|
|
188
198
|
strokeLinecap="round"
|
|
189
199
|
strokeLinejoin="round"
|
|
190
200
|
className={cn("size-4", className)}
|
|
191
201
|
aria-hidden="true"
|
|
192
202
|
>
|
|
193
203
|
{/* First row: two items */}
|
|
194
|
-
<rect x="2" y="
|
|
195
|
-
<rect x="12" y="
|
|
196
|
-
{/* Second row: one item (
|
|
197
|
-
<rect x="2" y="
|
|
198
|
-
{/* Wrap arrow */}
|
|
199
|
-
<polyline points="
|
|
204
|
+
<rect x="2" y="3" width="8" height="7" rx="1.5" strokeWidth={1.5} />
|
|
205
|
+
<rect x="12" y="3" width="8" height="7" rx="1.5" strokeWidth={1.5} />
|
|
206
|
+
{/* Second row: one item (wrapped) */}
|
|
207
|
+
<rect x="2" y="12" width="8" height="7" rx="1.5" strokeWidth={1.5} />
|
|
208
|
+
{/* Wrap return arrow — corner turn from right → down → left */}
|
|
209
|
+
<polyline points="22,7 22,15 18,15" strokeWidth={1.5} />
|
|
210
|
+
<polyline points="20,13 18,15 20,17" strokeWidth={1.5} />
|
|
200
211
|
</svg>
|
|
201
212
|
);
|
|
202
213
|
}
|
|
203
214
|
|
|
215
|
+
// Flow grid: 2×2 equal grid of boxes
|
|
204
216
|
export function IconFlowGrid({ className }: IconProps) {
|
|
205
217
|
return (
|
|
206
218
|
<svg
|
|
207
219
|
viewBox="0 0 24 24"
|
|
208
220
|
fill="none"
|
|
209
221
|
stroke="currentColor"
|
|
210
|
-
strokeWidth={
|
|
222
|
+
strokeWidth={1.5}
|
|
211
223
|
strokeLinecap="round"
|
|
212
224
|
strokeLinejoin="round"
|
|
213
225
|
className={cn("size-4", className)}
|
|
214
226
|
aria-hidden="true"
|
|
215
227
|
>
|
|
216
228
|
{/* Top-left */}
|
|
217
|
-
<rect x="2" y="2" width="9" height="9" rx="1.5" strokeWidth=
|
|
229
|
+
<rect x="2" y="2" width="9" height="9" rx="1.5" strokeWidth={1.5} />
|
|
218
230
|
{/* Top-right */}
|
|
219
|
-
<rect x="13" y="2" width="9" height="9" rx="1.5" strokeWidth=
|
|
231
|
+
<rect x="13" y="2" width="9" height="9" rx="1.5" strokeWidth={1.5} />
|
|
220
232
|
{/* Bottom-left */}
|
|
221
|
-
<rect x="2" y="13" width="9" height="9" rx="1.5" strokeWidth=
|
|
233
|
+
<rect x="2" y="13" width="9" height="9" rx="1.5" strokeWidth={1.5} />
|
|
222
234
|
{/* Bottom-right */}
|
|
223
|
-
<rect x="13" y="13" width="9" height="9" rx="1.5" strokeWidth=
|
|
235
|
+
<rect x="13" y="13" width="9" height="9" rx="1.5" strokeWidth={1.5} />
|
|
224
236
|
</svg>
|
|
225
237
|
);
|
|
226
238
|
}
|
|
227
239
|
|
|
240
|
+
// Distribute horizontal: two vertical rail lines + center item + gap tick marks
|
|
228
241
|
export function IconDistributeHorizontal({ className }: IconProps) {
|
|
229
242
|
return (
|
|
230
243
|
<svg
|
|
@@ -241,23 +254,24 @@ export function IconDistributeHorizontal({ className }: IconProps) {
|
|
|
241
254
|
<line x1="3" y1="5" x2="3" y2="19" />
|
|
242
255
|
{/* Right rail */}
|
|
243
256
|
<line x1="21" y1="5" x2="21" y2="19" />
|
|
244
|
-
{/* Center item */}
|
|
257
|
+
{/* Center filled item */}
|
|
245
258
|
<rect
|
|
246
259
|
x="9"
|
|
247
|
-
y="
|
|
260
|
+
y="8"
|
|
248
261
|
width="6"
|
|
249
|
-
height="
|
|
262
|
+
height="8"
|
|
250
263
|
rx="1"
|
|
251
264
|
fill="currentColor"
|
|
252
265
|
stroke="none"
|
|
253
266
|
/>
|
|
254
|
-
{/*
|
|
255
|
-
<line x1="6" y1="10" x2="6" y2="14" strokeWidth=
|
|
256
|
-
<line x1="18" y1="10" x2="18" y2="14" strokeWidth=
|
|
267
|
+
{/* Gap tick marks — short vertical lines between rail and center */}
|
|
268
|
+
<line x1="6" y1="10" x2="6" y2="14" strokeWidth={1.5} />
|
|
269
|
+
<line x1="18" y1="10" x2="18" y2="14" strokeWidth={1.5} />
|
|
257
270
|
</svg>
|
|
258
271
|
);
|
|
259
272
|
}
|
|
260
273
|
|
|
274
|
+
// Distribute vertical: two horizontal rail lines + center item + gap tick marks
|
|
261
275
|
export function IconDistributeVertical({ className }: IconProps) {
|
|
262
276
|
return (
|
|
263
277
|
<svg
|
|
@@ -274,23 +288,24 @@ export function IconDistributeVertical({ className }: IconProps) {
|
|
|
274
288
|
<line x1="5" y1="3" x2="19" y2="3" />
|
|
275
289
|
{/* Bottom rail */}
|
|
276
290
|
<line x1="5" y1="21" x2="19" y2="21" />
|
|
277
|
-
{/* Center item */}
|
|
291
|
+
{/* Center filled item */}
|
|
278
292
|
<rect
|
|
279
|
-
x="
|
|
293
|
+
x="8"
|
|
280
294
|
y="9"
|
|
281
|
-
width="
|
|
295
|
+
width="8"
|
|
282
296
|
height="6"
|
|
283
297
|
rx="1"
|
|
284
298
|
fill="currentColor"
|
|
285
299
|
stroke="none"
|
|
286
300
|
/>
|
|
287
|
-
{/*
|
|
288
|
-
<line x1="10" y1="6" x2="14" y2="6" strokeWidth=
|
|
289
|
-
<line x1="10" y1="18" x2="14" y2="18" strokeWidth=
|
|
301
|
+
{/* Gap tick marks — short horizontal lines between rail and center */}
|
|
302
|
+
<line x1="10" y1="6" x2="14" y2="6" strokeWidth={1.5} />
|
|
303
|
+
<line x1="10" y1="18" x2="14" y2="18" strokeWidth={1.5} />
|
|
290
304
|
</svg>
|
|
291
305
|
);
|
|
292
306
|
}
|
|
293
307
|
|
|
308
|
+
// Layout settings / sliders: three horizontal tracks with thumb handles at different x positions
|
|
294
309
|
export function IconLayoutSettings({ className }: IconProps) {
|
|
295
310
|
return (
|
|
296
311
|
<svg
|
|
@@ -303,37 +318,41 @@ export function IconLayoutSettings({ className }: IconProps) {
|
|
|
303
318
|
className={cn("size-4", className)}
|
|
304
319
|
aria-hidden="true"
|
|
305
320
|
>
|
|
306
|
-
{/*
|
|
321
|
+
{/* Track 1 */}
|
|
307
322
|
<line x1="3" y1="7" x2="21" y2="7" />
|
|
323
|
+
{/* Handle 1 at ~x=8 */}
|
|
308
324
|
<circle
|
|
309
325
|
cx="8"
|
|
310
326
|
cy="7"
|
|
311
|
-
r="2"
|
|
312
|
-
fill="var(--background,
|
|
313
|
-
strokeWidth=
|
|
327
|
+
r="2.5"
|
|
328
|
+
fill="var(--background, #1e1e1e)"
|
|
329
|
+
strokeWidth={2}
|
|
314
330
|
/>
|
|
315
|
-
{/*
|
|
331
|
+
{/* Track 2 */}
|
|
316
332
|
<line x1="3" y1="12" x2="21" y2="12" />
|
|
333
|
+
{/* Handle 2 at ~x=16 */}
|
|
317
334
|
<circle
|
|
318
|
-
cx="
|
|
335
|
+
cx="16"
|
|
319
336
|
cy="12"
|
|
320
|
-
r="2"
|
|
321
|
-
fill="var(--background,
|
|
322
|
-
strokeWidth=
|
|
337
|
+
r="2.5"
|
|
338
|
+
fill="var(--background, #1e1e1e)"
|
|
339
|
+
strokeWidth={2}
|
|
323
340
|
/>
|
|
324
|
-
{/*
|
|
341
|
+
{/* Track 3 */}
|
|
325
342
|
<line x1="3" y1="17" x2="21" y2="17" />
|
|
343
|
+
{/* Handle 3 at ~x=11 */}
|
|
326
344
|
<circle
|
|
327
|
-
cx="
|
|
345
|
+
cx="11"
|
|
328
346
|
cy="17"
|
|
329
|
-
r="2"
|
|
330
|
-
fill="var(--background,
|
|
331
|
-
strokeWidth=
|
|
347
|
+
r="2.5"
|
|
348
|
+
fill="var(--background, #1e1e1e)"
|
|
349
|
+
strokeWidth={2}
|
|
332
350
|
/>
|
|
333
351
|
</svg>
|
|
334
352
|
);
|
|
335
353
|
}
|
|
336
354
|
|
|
355
|
+
// Resize to fit: four corner L-brackets pointing inward
|
|
337
356
|
export function IconResizeToFit({ className }: IconProps) {
|
|
338
357
|
return (
|
|
339
358
|
<svg
|
|
@@ -346,16 +365,377 @@ export function IconResizeToFit({ className }: IconProps) {
|
|
|
346
365
|
className={cn("size-4", className)}
|
|
347
366
|
aria-hidden="true"
|
|
348
367
|
>
|
|
349
|
-
{/*
|
|
350
|
-
<
|
|
351
|
-
{/* Top-
|
|
352
|
-
<polyline points="4
|
|
353
|
-
{/*
|
|
354
|
-
<polyline points="
|
|
355
|
-
{/* Bottom-
|
|
356
|
-
<polyline points="
|
|
357
|
-
|
|
358
|
-
|
|
368
|
+
{/* Top-left corner: L pointing inward (→ and ↓) */}
|
|
369
|
+
<polyline points="9,4 4,4 4,9" />
|
|
370
|
+
{/* Top-right corner */}
|
|
371
|
+
<polyline points="15,4 20,4 20,9" />
|
|
372
|
+
{/* Bottom-left corner */}
|
|
373
|
+
<polyline points="4,15 4,20 9,20" />
|
|
374
|
+
{/* Bottom-right corner */}
|
|
375
|
+
<polyline points="20,15 20,20 15,20" />
|
|
376
|
+
</svg>
|
|
377
|
+
);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// Auto-layout toggle "on" — rounded rectangle with two small boxes arranged in a row inside
|
|
381
|
+
// Matches Figma's blue auto-layout indicator glyph
|
|
382
|
+
export function IconAutoLayoutOn({ className }: IconProps) {
|
|
383
|
+
return (
|
|
384
|
+
<svg
|
|
385
|
+
viewBox="0 0 24 24"
|
|
386
|
+
fill="none"
|
|
387
|
+
stroke="currentColor"
|
|
388
|
+
strokeWidth={1.5}
|
|
389
|
+
strokeLinecap="round"
|
|
390
|
+
strokeLinejoin="round"
|
|
391
|
+
className={cn("size-4", className)}
|
|
392
|
+
aria-hidden="true"
|
|
393
|
+
>
|
|
394
|
+
{/* Outer rounded frame */}
|
|
395
|
+
<rect x="2" y="5" width="20" height="14" rx="3" strokeWidth={1.5} />
|
|
396
|
+
{/* Left inner item */}
|
|
397
|
+
<rect
|
|
398
|
+
x="5"
|
|
399
|
+
y="8"
|
|
400
|
+
width="5"
|
|
401
|
+
height="8"
|
|
402
|
+
rx="1"
|
|
403
|
+
fill="currentColor"
|
|
404
|
+
stroke="none"
|
|
405
|
+
/>
|
|
406
|
+
{/* Right inner item */}
|
|
407
|
+
<rect
|
|
408
|
+
x="12"
|
|
409
|
+
y="8"
|
|
410
|
+
width="7"
|
|
411
|
+
height="8"
|
|
412
|
+
rx="1"
|
|
413
|
+
fill="currentColor"
|
|
414
|
+
stroke="none"
|
|
415
|
+
/>
|
|
416
|
+
</svg>
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// Paint type: solid fill swatch (filled square)
|
|
421
|
+
export function IconPaintSolid({ className }: IconProps) {
|
|
422
|
+
return (
|
|
423
|
+
<svg
|
|
424
|
+
viewBox="0 0 24 24"
|
|
425
|
+
fill="none"
|
|
426
|
+
stroke="currentColor"
|
|
427
|
+
strokeWidth={1.5}
|
|
428
|
+
strokeLinecap="round"
|
|
429
|
+
strokeLinejoin="round"
|
|
430
|
+
className={cn("size-4", className)}
|
|
431
|
+
aria-hidden="true"
|
|
432
|
+
>
|
|
433
|
+
<rect
|
|
434
|
+
x="3"
|
|
435
|
+
y="3"
|
|
436
|
+
width="18"
|
|
437
|
+
height="18"
|
|
438
|
+
rx="2.5"
|
|
439
|
+
fill="currentColor"
|
|
440
|
+
stroke="none"
|
|
441
|
+
/>
|
|
442
|
+
</svg>
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// Paint type: linear gradient (left-dark to right-light)
|
|
447
|
+
export function IconPaintLinear({ className }: IconProps) {
|
|
448
|
+
return (
|
|
449
|
+
<svg
|
|
450
|
+
viewBox="0 0 24 24"
|
|
451
|
+
fill="none"
|
|
452
|
+
stroke="currentColor"
|
|
453
|
+
strokeWidth={1.5}
|
|
454
|
+
strokeLinecap="round"
|
|
455
|
+
strokeLinejoin="round"
|
|
456
|
+
className={cn("size-4", className)}
|
|
457
|
+
aria-hidden="true"
|
|
458
|
+
>
|
|
459
|
+
<defs>
|
|
460
|
+
<linearGradient id="lg-icon-grad" x1="0" y1="0" x2="1" y2="0">
|
|
461
|
+
<stop offset="0%" stopColor="currentColor" stopOpacity="1" />
|
|
462
|
+
<stop offset="100%" stopColor="currentColor" stopOpacity="0" />
|
|
463
|
+
</linearGradient>
|
|
464
|
+
</defs>
|
|
465
|
+
<rect
|
|
466
|
+
x="3"
|
|
467
|
+
y="3"
|
|
468
|
+
width="18"
|
|
469
|
+
height="18"
|
|
470
|
+
rx="2.5"
|
|
471
|
+
fill="url(#lg-icon-grad)"
|
|
472
|
+
strokeWidth={1.5}
|
|
473
|
+
/>
|
|
474
|
+
</svg>
|
|
475
|
+
);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
// Paint type: image fill (picture frame with mountain/sun)
|
|
479
|
+
export function IconPaintImage({ className }: IconProps) {
|
|
480
|
+
return (
|
|
481
|
+
<svg
|
|
482
|
+
viewBox="0 0 24 24"
|
|
483
|
+
fill="none"
|
|
484
|
+
stroke="currentColor"
|
|
485
|
+
strokeWidth={1.5}
|
|
486
|
+
strokeLinecap="round"
|
|
487
|
+
strokeLinejoin="round"
|
|
488
|
+
className={cn("size-4", className)}
|
|
489
|
+
aria-hidden="true"
|
|
490
|
+
>
|
|
491
|
+
{/* Frame */}
|
|
492
|
+
<rect x="3" y="3" width="18" height="18" rx="2.5" strokeWidth={1.5} />
|
|
493
|
+
{/* Mountain silhouette */}
|
|
494
|
+
<polyline points="3,17 8,12 12,15 16,10 21,17" strokeWidth={1.5} />
|
|
495
|
+
{/* Sun dot */}
|
|
496
|
+
<circle cx="17" cy="8" r="2" fill="currentColor" stroke="none" />
|
|
497
|
+
</svg>
|
|
498
|
+
);
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// Paint type: none / no fill (square with diagonal slash)
|
|
502
|
+
export function IconPaintNone({ className }: IconProps) {
|
|
503
|
+
return (
|
|
504
|
+
<svg
|
|
505
|
+
viewBox="0 0 24 24"
|
|
506
|
+
fill="none"
|
|
507
|
+
stroke="currentColor"
|
|
508
|
+
strokeWidth={1.5}
|
|
509
|
+
strokeLinecap="round"
|
|
510
|
+
strokeLinejoin="round"
|
|
511
|
+
className={cn("size-4", className)}
|
|
512
|
+
aria-hidden="true"
|
|
513
|
+
>
|
|
514
|
+
{/* Square frame */}
|
|
515
|
+
<rect x="3" y="3" width="18" height="18" rx="2.5" strokeWidth={1.5} />
|
|
516
|
+
{/* Diagonal slash */}
|
|
517
|
+
<line x1="5" y1="19" x2="19" y2="5" strokeWidth={1.5} />
|
|
518
|
+
</svg>
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// Align left — lines left-aligned against a left rail
|
|
523
|
+
export function IconAlignLeft({ className }: IconProps) {
|
|
524
|
+
return (
|
|
525
|
+
<svg
|
|
526
|
+
viewBox="0 0 24 24"
|
|
527
|
+
fill="none"
|
|
528
|
+
stroke="currentColor"
|
|
529
|
+
strokeWidth={2}
|
|
530
|
+
strokeLinecap="round"
|
|
531
|
+
strokeLinejoin="round"
|
|
532
|
+
className={cn("size-4", className)}
|
|
533
|
+
aria-hidden="true"
|
|
534
|
+
>
|
|
535
|
+
<line x1="3" y1="4" x2="3" y2="20" />
|
|
536
|
+
<line x1="6" y1="8" x2="18" y2="8" />
|
|
537
|
+
<line x1="6" y1="12" x2="14" y2="12" />
|
|
538
|
+
<line x1="6" y1="16" x2="16" y2="16" />
|
|
539
|
+
</svg>
|
|
540
|
+
);
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
// Align center horizontal
|
|
544
|
+
export function IconAlignCenterH({ className }: IconProps) {
|
|
545
|
+
return (
|
|
546
|
+
<svg
|
|
547
|
+
viewBox="0 0 24 24"
|
|
548
|
+
fill="none"
|
|
549
|
+
stroke="currentColor"
|
|
550
|
+
strokeWidth={2}
|
|
551
|
+
strokeLinecap="round"
|
|
552
|
+
strokeLinejoin="round"
|
|
553
|
+
className={cn("size-4", className)}
|
|
554
|
+
aria-hidden="true"
|
|
555
|
+
>
|
|
556
|
+
<line x1="12" y1="4" x2="12" y2="20" />
|
|
557
|
+
<line x1="5" y1="8" x2="19" y2="8" />
|
|
558
|
+
<line x1="7" y1="12" x2="17" y2="12" />
|
|
559
|
+
<line x1="6" y1="16" x2="18" y2="16" />
|
|
560
|
+
</svg>
|
|
561
|
+
);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
// Align right
|
|
565
|
+
export function IconAlignRight({ className }: IconProps) {
|
|
566
|
+
return (
|
|
567
|
+
<svg
|
|
568
|
+
viewBox="0 0 24 24"
|
|
569
|
+
fill="none"
|
|
570
|
+
stroke="currentColor"
|
|
571
|
+
strokeWidth={2}
|
|
572
|
+
strokeLinecap="round"
|
|
573
|
+
strokeLinejoin="round"
|
|
574
|
+
className={cn("size-4", className)}
|
|
575
|
+
aria-hidden="true"
|
|
576
|
+
>
|
|
577
|
+
<line x1="21" y1="4" x2="21" y2="20" />
|
|
578
|
+
<line x1="6" y1="8" x2="18" y2="8" />
|
|
579
|
+
<line x1="10" y1="12" x2="18" y2="12" />
|
|
580
|
+
<line x1="8" y1="16" x2="18" y2="16" />
|
|
581
|
+
</svg>
|
|
582
|
+
);
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
// ─────────────────────────────────────────────────
|
|
586
|
+
// W/H sizing-menu glyphs (Figma resizing dropdown rows)
|
|
587
|
+
// ─────────────────────────────────────────────────
|
|
588
|
+
|
|
589
|
+
// Sizing: Fixed — a bar bounded by two end-stops (⊢ / fixed dimension)
|
|
590
|
+
export function IconSizingFixed({ className }: IconProps) {
|
|
591
|
+
return (
|
|
592
|
+
<svg
|
|
593
|
+
viewBox="0 0 24 24"
|
|
594
|
+
fill="none"
|
|
595
|
+
stroke="currentColor"
|
|
596
|
+
strokeWidth={1.6}
|
|
597
|
+
strokeLinecap="round"
|
|
598
|
+
strokeLinejoin="round"
|
|
599
|
+
className={cn("size-3.5", className)}
|
|
600
|
+
aria-hidden="true"
|
|
601
|
+
>
|
|
602
|
+
{/* Left end-stop */}
|
|
603
|
+
<line x1="5" y1="6" x2="5" y2="18" />
|
|
604
|
+
{/* Right end-stop */}
|
|
605
|
+
<line x1="19" y1="6" x2="19" y2="18" />
|
|
606
|
+
{/* Fixed span */}
|
|
607
|
+
<line x1="5" y1="12" x2="19" y2="12" />
|
|
608
|
+
</svg>
|
|
609
|
+
);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
// Sizing: Hug contents — two arrows pointing inward toward content (>< )
|
|
613
|
+
export function IconSizingHug({ className }: IconProps) {
|
|
614
|
+
return (
|
|
615
|
+
<svg
|
|
616
|
+
viewBox="0 0 24 24"
|
|
617
|
+
fill="none"
|
|
618
|
+
stroke="currentColor"
|
|
619
|
+
strokeWidth={1.6}
|
|
620
|
+
strokeLinecap="round"
|
|
621
|
+
strokeLinejoin="round"
|
|
622
|
+
className={cn("size-3.5", className)}
|
|
623
|
+
aria-hidden="true"
|
|
624
|
+
>
|
|
625
|
+
{/* Left inward chevron > */}
|
|
626
|
+
<polyline points="5,7 10,12 5,17" />
|
|
627
|
+
{/* Right inward chevron < */}
|
|
628
|
+
<polyline points="19,7 14,12 19,17" />
|
|
629
|
+
</svg>
|
|
630
|
+
);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// Sizing: Fill container — two arrows pushing outward to the walls (↔)
|
|
634
|
+
export function IconSizingFill({ className }: IconProps) {
|
|
635
|
+
return (
|
|
636
|
+
<svg
|
|
637
|
+
viewBox="0 0 24 24"
|
|
638
|
+
fill="none"
|
|
639
|
+
stroke="currentColor"
|
|
640
|
+
strokeWidth={1.6}
|
|
641
|
+
strokeLinecap="round"
|
|
642
|
+
strokeLinejoin="round"
|
|
643
|
+
className={cn("size-3.5", className)}
|
|
644
|
+
aria-hidden="true"
|
|
645
|
+
>
|
|
646
|
+
{/* Left wall */}
|
|
647
|
+
<line x1="4" y1="6" x2="4" y2="18" />
|
|
648
|
+
{/* Right wall */}
|
|
649
|
+
<line x1="20" y1="6" x2="20" y2="18" />
|
|
650
|
+
{/* Outward double arrow */}
|
|
651
|
+
<line x1="8" y1="12" x2="16" y2="12" />
|
|
652
|
+
<polyline points="11,9 8,12 11,15" />
|
|
653
|
+
<polyline points="13,9 16,12 13,15" />
|
|
654
|
+
</svg>
|
|
655
|
+
);
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
// Sizing: Add min width — wall + arrow pushing toward a lower bound (→|←)
|
|
659
|
+
export function IconSizingMin({ className }: IconProps) {
|
|
660
|
+
return (
|
|
661
|
+
<svg
|
|
662
|
+
viewBox="0 0 24 24"
|
|
663
|
+
fill="none"
|
|
664
|
+
stroke="currentColor"
|
|
665
|
+
strokeWidth={1.6}
|
|
666
|
+
strokeLinecap="round"
|
|
667
|
+
strokeLinejoin="round"
|
|
668
|
+
className={cn("size-3.5", className)}
|
|
669
|
+
aria-hidden="true"
|
|
670
|
+
>
|
|
671
|
+
{/* Center constraint bar */}
|
|
672
|
+
<line x1="12" y1="5" x2="12" y2="19" />
|
|
673
|
+
{/* Arrows converging on the bar */}
|
|
674
|
+
<line x1="4" y1="12" x2="11" y2="12" />
|
|
675
|
+
<polyline points="8,9 11,12 8,15" />
|
|
676
|
+
<line x1="20" y1="12" x2="13" y2="12" />
|
|
677
|
+
<polyline points="16,9 13,12 16,15" />
|
|
678
|
+
</svg>
|
|
679
|
+
);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
// Sizing: Add max width — bar + arrows pushing outward to an upper bound (|↔)
|
|
683
|
+
export function IconSizingMax({ className }: IconProps) {
|
|
684
|
+
return (
|
|
685
|
+
<svg
|
|
686
|
+
viewBox="0 0 24 24"
|
|
687
|
+
fill="none"
|
|
688
|
+
stroke="currentColor"
|
|
689
|
+
strokeWidth={1.6}
|
|
690
|
+
strokeLinecap="round"
|
|
691
|
+
strokeLinejoin="round"
|
|
692
|
+
className={cn("size-3.5", className)}
|
|
693
|
+
aria-hidden="true"
|
|
694
|
+
>
|
|
695
|
+
{/* Center bar */}
|
|
696
|
+
<line x1="12" y1="5" x2="12" y2="19" />
|
|
697
|
+
{/* Arrows diverging from the bar */}
|
|
698
|
+
<line x1="13" y1="12" x2="20" y2="12" />
|
|
699
|
+
<polyline points="17,9 20,12 17,15" />
|
|
700
|
+
<line x1="11" y1="12" x2="4" y2="12" />
|
|
701
|
+
<polyline points="7,9 4,12 7,15" />
|
|
702
|
+
</svg>
|
|
703
|
+
);
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
// Sizing: Apply variable — hexagon token (⬡)
|
|
707
|
+
export function IconSizingVariable({ className }: IconProps) {
|
|
708
|
+
return (
|
|
709
|
+
<svg
|
|
710
|
+
viewBox="0 0 24 24"
|
|
711
|
+
fill="none"
|
|
712
|
+
stroke="currentColor"
|
|
713
|
+
strokeWidth={1.6}
|
|
714
|
+
strokeLinecap="round"
|
|
715
|
+
strokeLinejoin="round"
|
|
716
|
+
className={cn("size-3.5", className)}
|
|
717
|
+
aria-hidden="true"
|
|
718
|
+
>
|
|
719
|
+
<polygon points="12,3 20,7.5 20,16.5 12,21 4,16.5 4,7.5" />
|
|
720
|
+
</svg>
|
|
721
|
+
);
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
// Small remove / clear glyph for min-max sub-rows (×)
|
|
725
|
+
export function IconSizingRemove({ className }: IconProps) {
|
|
726
|
+
return (
|
|
727
|
+
<svg
|
|
728
|
+
viewBox="0 0 24 24"
|
|
729
|
+
fill="none"
|
|
730
|
+
stroke="currentColor"
|
|
731
|
+
strokeWidth={1.8}
|
|
732
|
+
strokeLinecap="round"
|
|
733
|
+
strokeLinejoin="round"
|
|
734
|
+
className={cn("size-3", className)}
|
|
735
|
+
aria-hidden="true"
|
|
736
|
+
>
|
|
737
|
+
<line x1="6" y1="6" x2="18" y2="18" />
|
|
738
|
+
<line x1="18" y1="6" x2="6" y2="18" />
|
|
359
739
|
</svg>
|
|
360
740
|
);
|
|
361
741
|
}
|