@once-ui-system/core 2.0.0-alpha.0 → 2.0.0-alpha.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/AGENTS.md +1 -1
- package/LICENSE.md +21 -0
- package/ai/catalog.json +11 -4
- package/ai/components/Effect.json +1 -1
- package/ai/components/Feedback.json +1 -0
- package/ai/components/Form.json +15 -0
- package/ai/components/Input.json +3 -2
- package/ai/components/{Particle.json → ParticleFx.json} +1 -1
- package/ai/components/ScrollContainer.json +9 -1
- package/ai/components/Textarea.json +3 -2
- package/ai/components/ThemeSwitcher.json +2 -1
- package/ai/eval-tasks.md +2 -1
- package/ai/examples/auth.tsx +1 -2
- package/ai/examples/blocks/Dashboard1.tsx +8 -8
- package/ai/examples/blocks/Feed3.tsx +4 -4
- package/ai/examples/blocks/Footer4.tsx +2 -2
- package/ai/examples/blocks/Header2.tsx +1 -1
- package/ai/examples/blocks/Header4.tsx +1 -2
- package/ai/examples/blocks/Productivity1.tsx +1 -1
- package/ai/examples/blocks/Roadmap1.tsx +3 -3
- package/ai/examples/blocks/Sidebar1.tsx +1 -1
- package/ai/examples/blocks/Sidebar2.tsx +1 -1
- package/ai/examples/blocks/Table1.tsx +3 -3
- package/ai/examples/blocks/manifest.json +2 -2
- package/ai/examples/dashboard.tsx +5 -5
- package/ai/examples/marketing-hero.tsx +2 -2
- package/ai/examples/pricing.tsx +3 -3
- package/ai/examples/settings.tsx +4 -4
- package/ai/gotchas.json +26 -2
- package/ai/manifest.json +2 -2
- package/ai/recipes.md +1 -1
- package/ai/rules.compact.md +8 -2
- package/ai/rules.md +18 -6
- package/ai/spec.json +35 -10
- package/ai/tasks/settings.json +1 -1
- package/dist/AGENTS.md +1 -1
- package/dist/ai/catalog.json +11 -4
- package/dist/ai/components/Effect.json +1 -1
- package/dist/ai/components/Feedback.json +1 -0
- package/dist/ai/components/Form.json +15 -0
- package/dist/ai/components/Input.json +3 -2
- package/dist/ai/components/{Particle.json → ParticleFx.json} +1 -1
- package/dist/ai/components/ScrollContainer.json +9 -1
- package/dist/ai/components/Textarea.json +3 -2
- package/dist/ai/components/ThemeSwitcher.json +2 -1
- package/dist/ai/eval-tasks.md +2 -1
- package/dist/ai/examples/blocks/manifest.json +2 -2
- package/dist/ai/gotchas.json +26 -2
- package/dist/ai/manifest.json +2 -2
- package/dist/ai/recipes.md +1 -1
- package/dist/ai/rules.compact.md +8 -2
- package/dist/ai/rules.md +18 -6
- package/dist/ai/spec.json +35 -10
- package/dist/ai/tasks/settings.json +1 -1
- package/dist/components/Animation.d.ts +1 -2
- package/dist/components/Animation.d.ts.map +1 -1
- package/dist/components/Animation.js +1 -1
- package/dist/components/Animation.js.map +1 -1
- package/dist/components/ArrowNavigationContext.d.ts.map +1 -1
- package/dist/components/ArrowNavigationContext.js +12 -3
- package/dist/components/ArrowNavigationContext.js.map +1 -1
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar.js +1 -1
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Carousel.js +1 -1
- package/dist/components/Carousel.js.map +1 -1
- package/dist/components/ContextMenu.d.ts +1 -1
- package/dist/components/ContextMenu.d.ts.map +1 -1
- package/dist/components/CountFx.d.ts.map +1 -1
- package/dist/components/CountFx.js +19 -7
- package/dist/components/CountFx.js.map +1 -1
- package/dist/components/CursorCard.d.ts +1 -1
- package/dist/components/CursorCard.d.ts.map +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +9 -2
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/DropdownWrapper.d.ts +1 -1
- package/dist/components/DropdownWrapper.d.ts.map +1 -1
- package/dist/components/DropdownWrapper.js +178 -35
- package/dist/components/DropdownWrapper.js.map +1 -1
- package/dist/components/DropdownWrapper.module.scss +3 -1
- package/dist/components/Effect.d.ts +2 -2
- package/dist/components/Effect.d.ts.map +1 -1
- package/dist/components/Effect.js +2 -2
- package/dist/components/Effect.js.map +1 -1
- package/dist/components/EmojiPicker.js +1 -1
- package/dist/components/EmojiPicker.js.map +1 -1
- package/dist/components/Feedback.d.ts +4 -0
- package/dist/components/Feedback.d.ts.map +1 -1
- package/dist/components/Feedback.js +2 -2
- package/dist/components/Feedback.js.map +1 -1
- package/dist/components/FocusTrap.d.ts +3 -3
- package/dist/components/FocusTrap.d.ts.map +1 -1
- package/dist/components/FocusTrap.js +10 -0
- package/dist/components/FocusTrap.js.map +1 -1
- package/dist/components/Form.d.ts +48 -0
- package/dist/components/Form.d.ts.map +1 -0
- package/dist/components/Form.js +191 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Form.module.scss +160 -0
- package/dist/components/FormContext.d.ts +20 -0
- package/dist/components/FormContext.d.ts.map +1 -0
- package/dist/components/FormContext.js +12 -0
- package/dist/components/FormContext.js.map +1 -0
- package/dist/components/Input.d.ts +3 -0
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +13 -2
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Input.module.scss +27 -6
- package/dist/components/OgCard.d.ts.map +1 -1
- package/dist/components/OgCard.js +7 -4
- package/dist/components/OgCard.js.map +1 -1
- package/dist/components/{Particle.d.ts → ParticleFx.d.ts} +9 -4
- package/dist/components/ParticleFx.d.ts.map +1 -0
- package/dist/components/{Particle.js → ParticleFx.js} +9 -4
- package/dist/components/ParticleFx.js.map +1 -0
- package/dist/components/ScrollContainer.d.ts +69 -2
- package/dist/components/ScrollContainer.d.ts.map +1 -1
- package/dist/components/ScrollContainer.js +377 -46
- package/dist/components/ScrollContainer.js.map +1 -1
- package/dist/components/ScrollContainer.module.scss +131 -0
- package/dist/components/Select.d.ts +1 -1
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Select.js +1 -1
- package/dist/components/Select.js.map +1 -1
- package/dist/components/Setting.d.ts.map +1 -1
- package/dist/components/Setting.js +6 -1
- package/dist/components/Setting.js.map +1 -1
- package/dist/components/Table.js +2 -2
- package/dist/components/Table.js.map +1 -1
- package/dist/components/Textarea.d.ts +3 -0
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea.js +22 -6
- package/dist/components/Textarea.js.map +1 -1
- package/dist/components/ThemeSwitcher.d.ts +16 -0
- package/dist/components/ThemeSwitcher.d.ts.map +1 -1
- package/dist/components/ThemeSwitcher.js +48 -9
- package/dist/components/ThemeSwitcher.js.map +1 -1
- package/dist/components/ThemeSwitcher.module.scss +112 -0
- package/dist/components/User.js +1 -1
- package/dist/components/User.js.map +1 -1
- package/dist/components/UserMenu.d.ts +1 -1
- package/dist/components/UserMenu.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/data/emoji-data.json +10 -0
- package/dist/hooks/useArrowNavigation.d.ts.map +1 -1
- package/dist/hooks/useArrowNavigation.js +52 -7
- package/dist/hooks/useArrowNavigation.js.map +1 -1
- package/dist/modules/navigation/MegaMenu.d.ts.map +1 -1
- package/dist/modules/navigation/MegaMenu.js +76 -10
- package/dist/modules/navigation/MegaMenu.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/scripts/validate-ai-code.js +239 -21
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/validate-ai-code.js +239 -21
- package/dist/components/Particle.d.ts.map +0 -1
- package/dist/components/Particle.js.map +0 -1
|
@@ -171,7 +171,7 @@ const EmojiPicker = ({ onSelect, onClose, className, background, columns = "8",
|
|
|
171
171
|
}
|
|
172
172
|
setFocusedEmojiIndex(newIndex);
|
|
173
173
|
}, [filteredEmojis, focusedEmojiIndex, handleEmojiSelect, columns]);
|
|
174
|
-
return (_jsxs(Column, { gap: "16", background: background, className: className, style: style, "data-testid": "emoji-picker", height: 24, ...flex, children: [_jsx(Input, { id: `emoji-search-${searchInputId}`, placeholder: "Search emojis", value: inputValue,
|
|
174
|
+
return (_jsxs(Column, { gap: "16", background: background, className: className, style: style, "data-testid": "emoji-picker", height: 24, ...flex, children: [_jsx(Input, { id: `emoji-search-${searchInputId}`, placeholder: "Search emojis", value: inputValue, size: "s", onChange: (e) => setInputValue(e.target.value), prefix: _jsx(Icon, { size: "s", onBackground: "neutral-weak", name: "search" }), "aria-label": "Search emojis" }), _jsx(Column, { tabIndex: -1, fillHeight: true, overflowY: "auto", overflowX: "hidden", children: filteredEmojis.length > 0 ? (_jsx(Grid, { gap: "2", fillWidth: true, columns: columns, "aria-label": searchQuery ? "Search results" : `${activeCategory} emojis`, ref: gridRef, onKeyDown: handleKeyDown, tabIndex: -1, role: "grid", children: filteredEmojis.map((emoji, index) => (_jsx(EmojiButton, { emoji: emoji, index: index, isFocused: index === focusedEmojiIndex, onSelect: handleEmojiSelect, onFocus: handleFocus }, index))) })) : (_jsx(Row, { fill: true, center: true, align: "center", onBackground: "neutral-weak", children: "No results found" })) }), !searchQuery && (_jsx(SegmentedControl, { buttons: categoryButtons, onChange: handleCategoryChange, defaultValue: activeCategory, fillWidth: true }))] }));
|
|
175
175
|
};
|
|
176
176
|
EmojiPicker.displayName = "EmojiPicker";
|
|
177
177
|
export { EmojiPicker };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPicker.js","sourceRoot":"","sources":["../../src/components/EmojiPicker.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"EmojiPicker.js","sourceRoot":"","sources":["../../src/components/EmojiPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import React, { ReactNode } from "react";
|
|
2
2
|
import { Flex } from ".";
|
|
3
|
+
import type { IconName } from "../icons";
|
|
3
4
|
interface FeedbackProps extends Omit<React.ComponentProps<typeof Flex>, "title"> {
|
|
4
5
|
variant?: "info" | "danger" | "warning" | "success";
|
|
5
6
|
showIcon?: boolean;
|
|
7
|
+
/** Overrides the variant's icon. Custom names work once registered through
|
|
8
|
+
* the `IconLibraryOverrides` interface, which is what widens `IconName`. */
|
|
9
|
+
icon?: IconName;
|
|
6
10
|
title?: string;
|
|
7
11
|
description?: string;
|
|
8
12
|
showCloseButton?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Feedback.d.ts","sourceRoot":"","sources":["../../src/components/Feedback.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAoB,IAAI,EAAgB,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Feedback.d.ts","sourceRoot":"","sources":["../../src/components/Feedback.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAc,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAoB,IAAI,EAAgB,MAAM,GAAG,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,UAAU,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC;IAC9E,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;iFAC6E;IAC7E,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAWD,QAAA,MAAM,QAAQ,mGAsFb,CAAC;AAGF,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -8,8 +8,8 @@ const variantIconMap = {
|
|
|
8
8
|
warning: "warning",
|
|
9
9
|
success: "check",
|
|
10
10
|
};
|
|
11
|
-
const Feedback = forwardRef(({ variant = "info", showIcon = true, title, description, showCloseButton = false, onClose, className, style, children, ...rest }, ref) => {
|
|
12
|
-
return (_jsxs(Flex, { fillWidth: true, radius: "l", ref: ref, border: `${variant}-medium`, background: `${variant}-medium`, vertical: "start", role: "alert", "aria-live": "assertive", className: className, style: style, ...rest, children: [showIcon && (_jsx(Flex, { paddingY: "16", paddingLeft: "16", children: _jsx(Icon, { padding: "2", radius: "m", onBackground: `${variant}-medium`, name: variantIconMap[variant], "aria-hidden": "true" }) })), _jsxs(Column, { fillWidth: true, padding: "16", gap: "24", vertical: "center", children: [(title || description) && (_jsxs(Column, { fillWidth: true, gap: "2", children: [title && (_jsxs(Flex, { fillWidth: true, gap: "16", children: [_jsx(Flex, { fillWidth: true, paddingY: "4", children: _jsx(Text, { variant: "heading-strong-xs", onBackground: `${variant}-medium`, role: "heading", "aria-level": 2, children: title }) }), showCloseButton && (_jsx(IconButton, { onClick: onClose, icon: "close", size: "m", tooltip: "Hide", tooltipPosition: "top", variant: "ghost", "aria-label": "Close alert" }))] })), description && (_jsx(Text, { marginBottom: "2", variant: "body-default-s", onBackground: `${variant}-strong`, children: description }))] })), children] })] }));
|
|
11
|
+
const Feedback = forwardRef(({ variant = "info", showIcon = true, icon, title, description, showCloseButton = false, onClose, className, style, children, ...rest }, ref) => {
|
|
12
|
+
return (_jsxs(Flex, { fillWidth: true, radius: "l", ref: ref, border: `${variant}-medium`, background: `${variant}-medium`, vertical: title || children ? "start" : "center", role: "alert", "aria-live": "assertive", className: className, style: style, ...rest, children: [showIcon && (_jsx(Flex, { paddingY: "16", paddingLeft: "16", children: _jsx(Icon, { padding: "2", radius: "m", onBackground: `${variant}-medium`, name: icon ?? variantIconMap[variant], "aria-hidden": "true" }) })), _jsxs(Column, { fillWidth: true, padding: "16", gap: "24", vertical: "center", children: [(title || description) && (_jsxs(Column, { fillWidth: true, gap: "2", children: [title && (_jsxs(Flex, { fillWidth: true, gap: "16", children: [_jsx(Flex, { fillWidth: true, paddingY: "4", children: _jsx(Text, { variant: "heading-strong-xs", onBackground: `${variant}-medium`, role: "heading", "aria-level": 2, children: title }) }), showCloseButton && (_jsx(IconButton, { onClick: onClose, icon: "close", size: "m", tooltip: "Hide", tooltipPosition: "top", variant: "ghost", "aria-label": "Close alert" }))] })), description && (_jsx(Text, { marginBottom: "2", variant: "body-default-s", onBackground: `${variant}-strong`, children: description }))] })), children] })] }));
|
|
13
13
|
});
|
|
14
14
|
Feedback.displayName = "Feedback";
|
|
15
15
|
export { Feedback };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Feedback.js","sourceRoot":"","sources":["../../src/components/Feedback.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"Feedback.js","sourceRoot":"","sources":["../../src/components/Feedback.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,UAAU,EAAa,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAkBzD,MAAM,cAAc,GAEhB;IACF,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAG,UAAU,CACzB,CACE,EACE,OAAO,GAAG,MAAM,EAChB,QAAQ,GAAG,IAAI,EACf,IAAI,EACJ,KAAK,EACL,WAAW,EACX,eAAe,GAAG,KAAK,EACvB,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACR,EACD,GAAG,EACH,EAAE;IACF,OAAO,CACL,MAAC,IAAI,IACH,SAAS,QACT,MAAM,EAAC,GAAG,EACV,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,GAAG,OAAO,SAAS,EAC3B,UAAU,EAAE,GAAG,OAAO,SAAS,EAC/B,QAAQ,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAChD,IAAI,EAAC,OAAO,eACF,WAAW,EACrB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,KACR,IAAI,aAEP,QAAQ,IAAI,CACX,KAAC,IAAI,IAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,IAAI,YAClC,KAAC,IAAI,IACH,OAAO,EAAC,GAAG,EACX,MAAM,EAAC,GAAG,EACV,YAAY,EAAE,GAAG,OAAO,SAAS,EACjC,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,iBACzB,MAAM,GAClB,GACG,CACR,EACD,MAAC,MAAM,IAAC,SAAS,QAAC,OAAO,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,aACtD,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CACzB,MAAC,MAAM,IAAC,SAAS,QAAC,GAAG,EAAC,GAAG,aACtB,KAAK,IAAI,CACR,MAAC,IAAI,IAAC,SAAS,QAAC,GAAG,EAAC,IAAI,aACtB,KAAC,IAAI,IAAC,SAAS,QAAC,QAAQ,EAAC,GAAG,YAC1B,KAAC,IAAI,IACH,OAAO,EAAC,mBAAmB,EAC3B,YAAY,EAAE,GAAG,OAAO,SAAS,EACjC,IAAI,EAAC,SAAS,gBACF,CAAC,YAEZ,KAAK,GACD,GACF,EACN,eAAe,IAAI,CAClB,KAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,GAAG,EACR,OAAO,EAAC,MAAM,EACd,eAAe,EAAC,KAAK,EACrB,OAAO,EAAC,OAAO,gBACJ,aAAa,GACxB,CACH,IACI,CACR,EACA,WAAW,IAAI,CACd,KAAC,IAAI,IACH,YAAY,EAAC,GAAG,EAChB,OAAO,EAAC,gBAAgB,EACxB,YAAY,EAAE,GAAG,OAAO,SAAS,YAEhC,WAAW,GACP,CACR,IACM,CACV,EACA,QAAQ,IACF,IACJ,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -3,11 +3,11 @@ interface FocusTrapProps {
|
|
|
3
3
|
children: ReactNode;
|
|
4
4
|
active: boolean;
|
|
5
5
|
onEscape?: () => void;
|
|
6
|
-
containerRef?: RefObject<HTMLDivElement>;
|
|
6
|
+
containerRef?: RefObject<HTMLDivElement | null>;
|
|
7
7
|
className?: string;
|
|
8
8
|
style?: React.CSSProperties;
|
|
9
|
-
initialFocusRef?: RefObject<HTMLElement>;
|
|
10
|
-
returnFocusRef?: RefObject<HTMLElement>;
|
|
9
|
+
initialFocusRef?: RefObject<HTMLElement | null>;
|
|
10
|
+
returnFocusRef?: RefObject<HTMLElement | null>;
|
|
11
11
|
restoreFocus?: boolean;
|
|
12
12
|
autoFocus?: boolean;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../src/components/FocusTrap.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAqB,SAAS,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAElG,UAAU,cAAc;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../src/components/FocusTrap.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAqB,SAAS,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAElG,UAAU,cAAc;IACtB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,SAAS,uFA0Hb,CAAA;AAGF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -8,6 +8,16 @@ const FocusTrap = forwardRef(({ children, active, onEscape, containerRef: extern
|
|
|
8
8
|
// Store the previously focused element when the trap becomes active
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
if (active) {
|
|
11
|
+
// Focus already inside means someone placed it there deliberately and
|
|
12
|
+
// more precisely than "the first focusable element" — DropdownWrapper
|
|
13
|
+
// opens a list on its selected option, not its first. This effect can
|
|
14
|
+
// run before or after that, depending on when the panel finishes
|
|
15
|
+
// positioning, so it defers instead of racing: a trap's job is to keep
|
|
16
|
+
// focus in, not to reset where it sits. The element outside is likewise
|
|
17
|
+
// only worth remembering when focus is actually coming from out there.
|
|
18
|
+
const alreadyInside = containerRef.current?.contains(document.activeElement) ?? false;
|
|
19
|
+
if (alreadyInside)
|
|
20
|
+
return;
|
|
11
21
|
previouslyFocusedElement.current = document.activeElement;
|
|
12
22
|
if (autoFocus) {
|
|
13
23
|
// Focus the specified initial element or the first focusable element
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../src/components/FocusTrap.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FocusTrap.js","sourceRoot":"","sources":["../../src/components/FocusTrap.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { TShirtSizes } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Form — spacing density and grouping for a set of fields.
|
|
5
|
+
*
|
|
6
|
+
* `density` is one decision, not two: how much air sits between fields, and
|
|
7
|
+
* whether they read as separate controls or as a single one. `"stacked"` fuses
|
|
8
|
+
* them — adjacent borders collapse onto a shared hairline and only the outer
|
|
9
|
+
* corners of the group stay round. `"tight"` and `"spacious"` are ordinary
|
|
10
|
+
* gaps, where every field keeps its own border and its own radius.
|
|
11
|
+
*
|
|
12
|
+
* The corner assignment is the point of the component. Hand-writing
|
|
13
|
+
* `corners="top" | "none" | "bottom"` down a stack is positional bookkeeping
|
|
14
|
+
* that breaks silently the moment a field is conditionally rendered or
|
|
15
|
+
* reordered — hide the third of four and the group ends on a square edge.
|
|
16
|
+
* Form derives the corners instead, from the children that actually rendered,
|
|
17
|
+
* at every breakpoint.
|
|
18
|
+
*/
|
|
19
|
+
type Breakpoint = "xl" | "l" | "m" | "s" | "xs";
|
|
20
|
+
/** Columns, either flat or per breakpoint. Breakpoints cascade xl → xs, the
|
|
21
|
+
* same direction `Grid` cascades them. */
|
|
22
|
+
type FormColumns = number | Partial<Record<Breakpoint, number>>;
|
|
23
|
+
interface FormProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSubmit"> {
|
|
24
|
+
/**
|
|
25
|
+
* Gap and grouping as one decision. `"stacked"` collapses the gap to a
|
|
26
|
+
* shared hairline and rounds only the outside of the group; `"tight"` and
|
|
27
|
+
* `"spacious"` keep every field its own control.
|
|
28
|
+
*/
|
|
29
|
+
density?: "stacked" | "tight" | "spacious";
|
|
30
|
+
/** Grid columns. A number, or a per-breakpoint map like `{ xs: 1, m: 2 }`. */
|
|
31
|
+
columns?: FormColumns;
|
|
32
|
+
/**
|
|
33
|
+
* Size for every field in the form. A field that sets its own `size` keeps
|
|
34
|
+
* it. Passed down by context rather than cloned onto the children, so a
|
|
35
|
+
* child that is not a field does not pick up a stray attribute.
|
|
36
|
+
*/
|
|
37
|
+
size?: TShirtSizes;
|
|
38
|
+
/** Render a real `<form>` rather than a `<div>`. */
|
|
39
|
+
as?: "div" | "form";
|
|
40
|
+
onSubmit?: React.FormEventHandler<HTMLFormElement>;
|
|
41
|
+
className?: string;
|
|
42
|
+
style?: React.CSSProperties;
|
|
43
|
+
children?: React.ReactNode;
|
|
44
|
+
}
|
|
45
|
+
declare const Form: React.ForwardRefExoticComponent<FormProps & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
export type { FormColumns, FormProps };
|
|
47
|
+
export { Form };
|
|
48
|
+
//# sourceMappingURL=Form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/components/Form.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAA0B,WAAW,EAAE,MAAM,UAAU,CAAC;AAKpE;;;;;;;;;;;;;;;GAeG;AAEH,KAAK,UAAU,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;AAIhD;2CAC2C;AAC3C,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAEhE,UAAU,SAAU,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAChF;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IAC3C,8EAA8E;IAC9E,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,oDAAoD;IACpD,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AA+ID,QAAA,MAAM,IAAI,kFA+GT,CAAC;AAIF,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import classNames from "clsx";
|
|
4
|
+
import React, { forwardRef } from "react";
|
|
5
|
+
import styles from "./Form.module.scss";
|
|
6
|
+
import { FormFieldContext } from "./FormContext";
|
|
7
|
+
import { Grid } from "./Grid";
|
|
8
|
+
const BREAKPOINTS = ["xl", "l", "m", "s", "xs"];
|
|
9
|
+
const DENSITY_GAP = {
|
|
10
|
+
stacked: "0",
|
|
11
|
+
tight: "8",
|
|
12
|
+
spacious: "24",
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Simulate CSS grid's row-major auto-placement for items that declare only a
|
|
16
|
+
* span.
|
|
17
|
+
*
|
|
18
|
+
* This is why the corners are computed here rather than written as
|
|
19
|
+
* `:nth-child()` rules. An item with `span={2}` occupies two tracks but is
|
|
20
|
+
* still one child, so nth-child arithmetic counts the wrong thing as soon as
|
|
21
|
+
* anything spans: in a two-column grid holding four fields where the last two
|
|
22
|
+
* span both columns, the first cell of each row is child 1, 3 and 4 — a set
|
|
23
|
+
* no `an + b` can name. Running this per breakpoint covers the responsive
|
|
24
|
+
* case that defeats corners computed once; see `resolveColumns`.
|
|
25
|
+
*/
|
|
26
|
+
function place(spans, columns) {
|
|
27
|
+
const placements = [];
|
|
28
|
+
let row = 0;
|
|
29
|
+
let col = 0;
|
|
30
|
+
for (const raw of spans) {
|
|
31
|
+
const span = Math.min(Math.max(1, Math.floor(raw)), columns);
|
|
32
|
+
// A span that no longer fits the current row moves to the next one and
|
|
33
|
+
// leaves the tail of this row empty — what the browser does.
|
|
34
|
+
if (col + span > columns) {
|
|
35
|
+
row += 1;
|
|
36
|
+
col = 0;
|
|
37
|
+
}
|
|
38
|
+
placements.push({ row, col, span });
|
|
39
|
+
col += span;
|
|
40
|
+
if (col >= columns) {
|
|
41
|
+
row += 1;
|
|
42
|
+
col = 0;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return placements;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Which edges of a cell lie on the outside of the occupied region, and so
|
|
49
|
+
* which of its corners stay round.
|
|
50
|
+
*
|
|
51
|
+
* A corner is round only where both edges meeting at it are exposed. That is
|
|
52
|
+
* what makes a ragged last row come out right: three fields in two columns
|
|
53
|
+
* leave the second field's bottom-right on the outside of the group, so it
|
|
54
|
+
* keeps that corner even though it is not the last child.
|
|
55
|
+
*/
|
|
56
|
+
function geometry(placements, columns) {
|
|
57
|
+
const rows = placements.length ? Math.max(...placements.map((p) => p.row)) + 1 : 0;
|
|
58
|
+
// occupancy[row][col] — the index of the cell owning that track, if any.
|
|
59
|
+
const occupancy = Array.from({ length: rows }, () => Array.from({ length: columns }, () => undefined));
|
|
60
|
+
placements.forEach((p, index) => {
|
|
61
|
+
for (let c = p.col; c < p.col + p.span; c += 1) {
|
|
62
|
+
occupancy[p.row][c] = index;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const occupied = (row, col) => row >= 0 && row < rows && col >= 0 && col < columns && occupancy[row][col] !== undefined;
|
|
66
|
+
return placements.map((p) => {
|
|
67
|
+
const cols = Array.from({ length: p.span }, (_, i) => p.col + i);
|
|
68
|
+
const topExposed = cols.every((c) => !occupied(p.row - 1, c));
|
|
69
|
+
const bottomExposed = cols.every((c) => !occupied(p.row + 1, c));
|
|
70
|
+
const leftExposed = !occupied(p.row, p.col - 1);
|
|
71
|
+
const rightExposed = !occupied(p.row, p.col + p.span);
|
|
72
|
+
const corners = [];
|
|
73
|
+
if (topExposed && leftExposed)
|
|
74
|
+
corners.push("tl");
|
|
75
|
+
if (topExposed && rightExposed)
|
|
76
|
+
corners.push("tr");
|
|
77
|
+
if (bottomExposed && leftExposed)
|
|
78
|
+
corners.push("bl");
|
|
79
|
+
if (bottomExposed && rightExposed)
|
|
80
|
+
corners.push("br");
|
|
81
|
+
return {
|
|
82
|
+
// Only an interior edge collapses; a cell whose top edge is on the
|
|
83
|
+
// outside has nothing above it to collapse onto.
|
|
84
|
+
fuseTop: !topExposed,
|
|
85
|
+
fuseLeft: !leftExposed,
|
|
86
|
+
corners,
|
|
87
|
+
span: p.span,
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** Column count at each breakpoint, cascading xl → xs the way `Grid` does. */
|
|
92
|
+
function resolveColumns(columns) {
|
|
93
|
+
if (typeof columns === "number") {
|
|
94
|
+
return { base: Math.max(1, Math.floor(columns)), perBreakpoint: undefined };
|
|
95
|
+
}
|
|
96
|
+
if (!columns) {
|
|
97
|
+
return { base: 1, perBreakpoint: undefined };
|
|
98
|
+
}
|
|
99
|
+
// The widest value given becomes the base, so a map naming only `xs` and `m`
|
|
100
|
+
// still renders something sensible above `m`.
|
|
101
|
+
const widest = BREAKPOINTS.find((bp) => columns[bp] !== undefined);
|
|
102
|
+
const base = widest ? Math.max(1, Math.floor(columns[widest])) : 1;
|
|
103
|
+
const perBreakpoint = {};
|
|
104
|
+
let current = base;
|
|
105
|
+
for (const bp of BREAKPOINTS) {
|
|
106
|
+
const value = columns[bp];
|
|
107
|
+
if (value !== undefined)
|
|
108
|
+
current = Math.max(1, Math.floor(value));
|
|
109
|
+
perBreakpoint[bp] = current;
|
|
110
|
+
}
|
|
111
|
+
return { base, perBreakpoint };
|
|
112
|
+
}
|
|
113
|
+
/** `corner-tl` at the base, `m-corner-tl` inside the `m` media query. */
|
|
114
|
+
const scoped = (bp, name) => styles[bp ? `${bp}-${name}` : name];
|
|
115
|
+
const Form = forwardRef(({ density = "tight", columns, size, as = "div", onSubmit, className, style, children, ...rest }, ref) => {
|
|
116
|
+
// `toArray` drops the `null`, `undefined` and `false` a conditionally
|
|
117
|
+
// rendered field leaves behind, so everything below is computed over the
|
|
118
|
+
// fields that actually rendered — which is the whole point.
|
|
119
|
+
const items = React.Children.toArray(children).filter(React.isValidElement);
|
|
120
|
+
const spans = items.map((child) => {
|
|
121
|
+
const span = child.props.span;
|
|
122
|
+
return typeof span === "number" && Number.isFinite(span) ? span : 1;
|
|
123
|
+
});
|
|
124
|
+
const fieldDefaults = React.useMemo(() => ({ size }), [size]);
|
|
125
|
+
const { base, perBreakpoint } = resolveColumns(columns);
|
|
126
|
+
const stacked = density === "stacked";
|
|
127
|
+
const responsive = perBreakpoint !== undefined;
|
|
128
|
+
const baseGeometry = geometry(place(spans, base), base);
|
|
129
|
+
// Every breakpoint gets a full set of classes, not just the ones whose
|
|
130
|
+
// column count differs. A cell keeps its base classes at all widths, so a
|
|
131
|
+
// breakpoint that places it differently must be able to state the whole
|
|
132
|
+
// answer — reset included — rather than add to a stale one.
|
|
133
|
+
const breakpointGeometry = {};
|
|
134
|
+
if (perBreakpoint) {
|
|
135
|
+
for (const bp of BREAKPOINTS) {
|
|
136
|
+
const count = perBreakpoint[bp];
|
|
137
|
+
if (count === undefined)
|
|
138
|
+
continue;
|
|
139
|
+
breakpointGeometry[bp] = geometry(place(spans, count), count);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const cells = items.map((child, index) => {
|
|
143
|
+
const cellClasses = [styles.cell];
|
|
144
|
+
const apply = (bp, geo) => {
|
|
145
|
+
if (geo.span > 1)
|
|
146
|
+
cellClasses.push(scoped(bp, `span-${geo.span}`));
|
|
147
|
+
if (!stacked)
|
|
148
|
+
return;
|
|
149
|
+
if (geo.fuseTop)
|
|
150
|
+
cellClasses.push(scoped(bp, "fuse-top"));
|
|
151
|
+
if (geo.fuseLeft)
|
|
152
|
+
cellClasses.push(scoped(bp, "fuse-left"));
|
|
153
|
+
for (const corner of geo.corners) {
|
|
154
|
+
cellClasses.push(scoped(bp, `corner-${corner}`));
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
// With a responsive column map, every viewport is already covered by one
|
|
158
|
+
// of the five breakpoint queries — `xl` is a min-width, `l` a max-width,
|
|
159
|
+
// and the two meet — so base classes would only be a wider answer left
|
|
160
|
+
// lying around for a narrower one to undo.
|
|
161
|
+
if (responsive) {
|
|
162
|
+
for (const bp of BREAKPOINTS) {
|
|
163
|
+
const geo = breakpointGeometry[bp];
|
|
164
|
+
if (!geo)
|
|
165
|
+
continue;
|
|
166
|
+
cellClasses.push(scoped(bp, "reset"));
|
|
167
|
+
apply(bp, geo[index]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
apply(undefined, baseGeometry[index]);
|
|
172
|
+
}
|
|
173
|
+
return (_jsx("div", { className: classNames(cellClasses), "data-testid": `form-cell-${index}`, children: React.cloneElement(child, {
|
|
174
|
+
span: undefined,
|
|
175
|
+
}) }, child.key ?? index));
|
|
176
|
+
});
|
|
177
|
+
// `Grid`'s own `xl`/`l`/`m`/`s`/`xs` props would do this, but they switch it
|
|
178
|
+
// to `ClientGrid`, which reads `useLayout` and so requires a
|
|
179
|
+
// `LayoutProvider` above it. Nothing here is dynamic — foundations already
|
|
180
|
+
// ships `.m-columns-2` and friends — so the classes go on directly and
|
|
181
|
+
// Form keeps working anywhere.
|
|
182
|
+
const columnClasses = perBreakpoint
|
|
183
|
+
? BREAKPOINTS.filter((bp) => perBreakpoint[bp] !== undefined).map((bp) => `${bp}-columns-${perBreakpoint[bp]}`)
|
|
184
|
+
: [];
|
|
185
|
+
return (_jsx(Grid, { ref: ref, as: as, ...(as === "form" && onSubmit
|
|
186
|
+
? { onSubmit: onSubmit }
|
|
187
|
+
: {}), fillWidth: true, columns: String(base), gap: DENSITY_GAP[density], className: classNames(styles.form, stacked && styles.stacked, columnClasses, className), style: style, "data-density": density, ...rest, children: _jsx(FormFieldContext.Provider, { value: fieldDefaults, children: cells }) }));
|
|
188
|
+
});
|
|
189
|
+
Form.displayName = "Form";
|
|
190
|
+
export { Form };
|
|
191
|
+
//# sourceMappingURL=Form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Form.js","sourceRoot":"","sources":["../../src/components/Form.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
@use "../styles/breakpoints.scss" as breakpoints;
|
|
2
|
+
|
|
3
|
+
/* Form — density and grouping
|
|
4
|
+
----------------------------------------------------------------------------
|
|
5
|
+
Two things are worth knowing before editing this file.
|
|
6
|
+
|
|
7
|
+
1. The element that carries the border and the radius is not Form's child.
|
|
8
|
+
`Input` and `Textarea` render an outer `Column` — which also holds the
|
|
9
|
+
error and description rows — wrapping the bordered `Row`. So Form's cell
|
|
10
|
+
is the grandparent of the surface, and every rule here reaches it through
|
|
11
|
+
`[data-surface]`, a hook those components set on that `Row`, rather than
|
|
12
|
+
through `> *`. Bounded to two levels on purpose: a field nested deeper
|
|
13
|
+
inside a cell belongs to somebody else's group, not this one's.
|
|
14
|
+
|
|
15
|
+
2. Nothing here relies on source order to win. The utility already on the
|
|
16
|
+
surface is `.radius-l`, specificity (0,1,0); every rule below that has to
|
|
17
|
+
beat it is at least (0,3,0). Where a breakpoint has to undo what a wider
|
|
18
|
+
one set, it does so through a reset class that is strictly *less*
|
|
19
|
+
specific than the rules re-applying over it, so the cascade resolves the
|
|
20
|
+
same way whichever order a bundler emits them in. */
|
|
21
|
+
|
|
22
|
+
/* The two shapes a cell can hold: a surface that is the cell's own child, and
|
|
23
|
+
the field case, where an outer Column sits in between. */
|
|
24
|
+
@mixin surface {
|
|
25
|
+
> [data-surface],
|
|
26
|
+
> * > [data-surface] {
|
|
27
|
+
@content;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.form {
|
|
32
|
+
/* Corners travel as custom properties rather than going straight to
|
|
33
|
+
`border-radius`, so a breakpoint can move one corner without restating
|
|
34
|
+
the other three. */
|
|
35
|
+
--form-radius: var(--radius-l);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.cell {
|
|
39
|
+
position: relative;
|
|
40
|
+
/* A grid item's default `min-width: auto` refuses to shrink below its
|
|
41
|
+
content, so one long placeholder would widen the whole column. */
|
|
42
|
+
min-width: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.stacked {
|
|
46
|
+
.cell {
|
|
47
|
+
--form-tl: 0px;
|
|
48
|
+
--form-tr: 0px;
|
|
49
|
+
--form-bl: 0px;
|
|
50
|
+
--form-br: 0px;
|
|
51
|
+
|
|
52
|
+
@include surface {
|
|
53
|
+
border-radius: var(--form-tl) var(--form-tr) var(--form-br) var(--form-bl);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* A focused field has to paint over its neighbours — all four of them in two
|
|
58
|
+
dimensions. `SegmentedControl` omits this in compact mode, and its focused
|
|
59
|
+
button loses an edge to the next one; the fix belongs here, where the
|
|
60
|
+
overlap is created. Note there is no `overflow: hidden` anywhere in this
|
|
61
|
+
file, for the same reason: the focus ring is an `outline` with a 2px
|
|
62
|
+
offset, and clipping the cell would clip the ring. */
|
|
63
|
+
.cell:focus-within {
|
|
64
|
+
z-index: 1;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Placement rules, emitted once bare and once inside each breakpoint.
|
|
69
|
+
`$p` is the class prefix; the bare pass has none. */
|
|
70
|
+
@mixin placement($p: "") {
|
|
71
|
+
$sep: if($p == "", "", "-");
|
|
72
|
+
|
|
73
|
+
/* Every breakpoint clears the wider one's answer before giving its own,
|
|
74
|
+
because at 375px the `l`, `m`, `s` and `xs` queries all match at once and
|
|
75
|
+
only the narrowest should be heard.
|
|
76
|
+
|
|
77
|
+
Reset and rules sit at the same specificity, (0,3,0), with the reset
|
|
78
|
+
written first — the same way `grid.generated.scss` orders its own
|
|
79
|
+
breakpoint classes, and the reason `placement()` is invoked below in
|
|
80
|
+
cascade order. What is deliberately NOT left to order is the fight
|
|
81
|
+
against the surface's own `.radius-l` utility from another file: that is
|
|
82
|
+
(0,1,0), and everything here outranks it outright.
|
|
83
|
+
|
|
84
|
+
Split in two because a span has to reset at every density, while corners
|
|
85
|
+
and collapsed margins exist only when stacked. */
|
|
86
|
+
@if $p != "" {
|
|
87
|
+
.form .cell.#{$p}#{$sep}reset {
|
|
88
|
+
grid-column: auto;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.stacked .cell.#{$p}#{$sep}reset {
|
|
92
|
+
--form-tl: 0px;
|
|
93
|
+
--form-tr: 0px;
|
|
94
|
+
--form-bl: 0px;
|
|
95
|
+
--form-br: 0px;
|
|
96
|
+
margin-top: 0;
|
|
97
|
+
margin-left: 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.stacked .cell.#{$p}#{$sep}corner-tl {
|
|
102
|
+
--form-tl: var(--form-radius);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.stacked .cell.#{$p}#{$sep}corner-tr {
|
|
106
|
+
--form-tr: var(--form-radius);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.stacked .cell.#{$p}#{$sep}corner-bl {
|
|
110
|
+
--form-bl: var(--form-radius);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.stacked .cell.#{$p}#{$sep}corner-br {
|
|
114
|
+
--form-br: var(--form-radius);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Two adjacent 1px borders pulled together by -1px collapse onto exactly one
|
|
118
|
+
line — the trick `gap="-1"` plays for flex, which has no grid equivalent.
|
|
119
|
+
`g--1` does not exist, and the flex classes key off `:not(:first-child)`,
|
|
120
|
+
which in a grid would drag the first cell of every row after the first
|
|
121
|
+
sideways. Applied per cell, because Form knows the row and the column that
|
|
122
|
+
a utility class cannot. */
|
|
123
|
+
.stacked .cell.#{$p}#{$sep}fuse-top {
|
|
124
|
+
margin-top: -1px;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.stacked .cell.#{$p}#{$sep}fuse-left {
|
|
128
|
+
margin-left: -1px;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@for $n from 2 through 12 {
|
|
132
|
+
.form .cell.#{$p}#{$sep}span-#{$n} {
|
|
133
|
+
grid-column: span #{$n};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@include placement();
|
|
139
|
+
|
|
140
|
+
/* Order matches grid.generated.scss: xl leads, then the max-width queries from
|
|
141
|
+
widest to narrowest, so the narrowest one that matches wins. */
|
|
142
|
+
@include breakpoints.xl {
|
|
143
|
+
@include placement("xl");
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@include breakpoints.l {
|
|
147
|
+
@include placement("l");
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@include breakpoints.m {
|
|
151
|
+
@include placement("m");
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@include breakpoints.s {
|
|
155
|
+
@include placement("s");
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@include breakpoints.xs {
|
|
159
|
+
@include placement("xs");
|
|
160
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TShirtSizes } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* What a `Form` hands down to the fields inside it.
|
|
4
|
+
*
|
|
5
|
+
* Kept out of the package's exports on purpose: this is how `Form` and the
|
|
6
|
+
* field primitives agree on a default, not an API for callers to reach into.
|
|
7
|
+
* A context rather than a cloned prop because `Form` wraps arbitrary children
|
|
8
|
+
* — cloning `size` onto one that is not a field would put a stray attribute
|
|
9
|
+
* in the DOM.
|
|
10
|
+
*/
|
|
11
|
+
export interface FormFieldDefaults {
|
|
12
|
+
size?: TShirtSizes;
|
|
13
|
+
}
|
|
14
|
+
export declare const FormFieldContext: import("react").Context<FormFieldDefaults>;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve a field's size. The field's own prop always wins; a `Form` only
|
|
17
|
+
* supplies a default, and `"m"` remains the default outside one.
|
|
18
|
+
*/
|
|
19
|
+
export declare const useFieldSize: (own?: TShirtSizes) => TShirtSizes;
|
|
20
|
+
//# sourceMappingURL=FormContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormContext.d.ts","sourceRoot":"","sources":["../../src/components/FormContext.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,4CAAuC,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,WAAW,KAAG,WAGhD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
export const FormFieldContext = createContext({});
|
|
4
|
+
/**
|
|
5
|
+
* Resolve a field's size. The field's own prop always wins; a `Form` only
|
|
6
|
+
* supplies a default, and `"m"` remains the default outside one.
|
|
7
|
+
*/
|
|
8
|
+
export const useFieldSize = (own) => {
|
|
9
|
+
const inherited = useContext(FormFieldContext).size;
|
|
10
|
+
return own ?? inherited ?? "m";
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=FormContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormContext.js","sourceRoot":"","sources":["../../src/components/FormContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAgBlD,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAoB,EAAE,CAAC,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAiB,EAAe,EAAE;IAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;IACpD,OAAO,GAAG,IAAI,SAAS,IAAI,GAAG,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -24,6 +24,9 @@ interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size"
|
|
|
24
24
|
cursor?: undefined | "interactive";
|
|
25
25
|
validate?: (value: ReactNode) => ReactNode | null;
|
|
26
26
|
loading?: boolean;
|
|
27
|
+
/** How many columns to occupy inside a `Form` grid. `Form` reads this off
|
|
28
|
+
* the child and strips it; outside a `Form` it does nothing. */
|
|
29
|
+
span?: number;
|
|
27
30
|
}
|
|
28
31
|
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
29
32
|
export { Input };
|