@atelier-ui/react 0.2.16 → 0.2.18

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/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ ## 0.2.18 (2026-08-26)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **icons:** type the variant icon-name maps as partial records ([e59b45a](https://github.com/DominikPieper/atelier-ui/commit/e59b45a))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Claude Opus 5
10
+ - Dominik Pieper @DominikPieper
11
+
12
+ ## 0.2.17 (2026-08-26)
13
+
14
+ ### 🚀 Features
15
+
16
+ - **design:** batch E artboards; a reset was undoing the geometry contract ([6c3788d](https://github.com/DominikPieper/atelier-ui/commit/6c3788d))
17
+ - **icons:** AtlAlert and AtlBadge stop drawing glyphs; batch C artboards ([c16c5c5](https://github.com/DominikPieper/atelier-ui/commit/c16c5c5))
18
+ - **design:** bind the hand-written danger rings, batch A of the redesign artboards ([ffdf8f7](https://github.com/DominikPieper/atelier-ui/commit/ffdf8f7))
19
+
20
+ ### ❤️ Thank You
21
+
22
+ - Claude Opus 5
23
+ - Dominik Pieper @DominikPieper
24
+
1
25
  ## 0.2.16 (2026-08-26)
2
26
 
3
27
  ### 🩹 Fixes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/react",
3
- "version": "0.2.16",
3
+ "version": "0.2.18",
4
4
  "description": "Atelier component library for React — LLM-optimised, accessible, design-token-driven",
5
5
  "keywords": [
6
6
  "react",
@@ -62,6 +62,10 @@
62
62
  /* ── Heading reset ─────────────────────────────────────────────────────────── */
63
63
  .accordion-heading {
64
64
  all: unset;
65
+ /* Restated after `all: unset`, which resets the box model too — the component's
66
+ * geometry contract has the same specificity and loses on source order, so this
67
+ * element was content-box and 2px taller than its own CSS said (ADR-0051). */
68
+ box-sizing: border-box;
65
69
  display: block;
66
70
  }
67
71
 
@@ -1 +1 @@
1
- {"version":3,"file":"atl-alert.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/atl-alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,iBAAiB,CAAC;AAGzB,KAAK,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AASjE;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAgB,EAChB,WAAmB,EACnB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,+BAsBf"}
1
+ {"version":3,"file":"atl-alert.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/atl-alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,SAAS,CAAC;AACzD,OAAO,iBAAiB,CAAC;AAczB,KAAK,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAgB,EAChB,WAAmB,EACnB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,+BAwBf"}
@@ -1,11 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import './atl-alert.css';
3
3
  import { AtlIcon } from '../icon/atl-icon';
4
- const VARIANT_ICONS = {
5
- info: 'ℹ',
6
- success: '✓',
7
- warning: '⚠',
8
- danger: '',
4
+ /** Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map
5
+ * was the fifth way this library drew an icon, and the one check:iconography
6
+ * missed (ADR-0050). */
7
+ const VARIANT_ICON_NAMES = {
8
+ info: 'info',
9
+ success: 'success',
10
+ warning: 'warning',
11
+ danger: 'danger',
9
12
  };
10
13
  /**
11
14
  * An alert component for displaying important messages.
@@ -13,6 +16,6 @@ const VARIANT_ICONS = {
13
16
  export function AtlAlert({ variant = 'info', dismissible = false, onDismissed, children, className, ...rest }) {
14
17
  const classes = ['atl-alert', `variant-${variant}`, className].filter(Boolean).join(' ');
15
18
  const ariaLive = variant === 'danger' || variant === 'warning' ? 'assertive' : 'polite';
16
- return (_jsxs("div", { className: classes, role: "alert", "aria-live": ariaLive, ...rest, children: [_jsxs("span", { className: "content", children: [_jsx("span", { className: "variant-icon", "aria-hidden": "true", children: VARIANT_ICONS[variant] }), children] }), dismissible && (_jsx("button", { className: "dismiss", type: "button", "aria-label": "Dismiss", onClick: onDismissed, children: _jsx(AtlIcon, { name: "close", size: "sm" }) }))] }));
19
+ return (_jsxs("div", { className: classes, role: "alert", "aria-live": ariaLive, ...rest, children: [_jsxs("span", { className: "content", children: [VARIANT_ICON_NAMES[variant] && (_jsx(AtlIcon, { className: "variant-icon", name: VARIANT_ICON_NAMES[variant], size: "sm" })), children] }), dismissible && (_jsx("button", { className: "dismiss", type: "button", "aria-label": "Dismiss", onClick: onDismissed, children: _jsx(AtlIcon, { name: "close", size: "sm" }) }))] }));
17
20
  }
18
21
  //# sourceMappingURL=atl-alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"atl-alert.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/atl-alert.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,MAAM,aAAa,GAAoC;IACrD,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;CACZ,CAAC;AA0BF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,GAAG,MAAM,EAChB,WAAW,GAAG,KAAK,EACnB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACO;IACd,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAExF,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,eAAY,QAAQ,KAAM,IAAI,aACjE,gBAAM,SAAS,EAAC,SAAS,aACvB,eAAM,SAAS,EAAC,cAAc,iBAAa,MAAM,YAAE,aAAa,CAAC,OAAO,CAAC,GAAQ,EAChF,QAAQ,IACJ,EACN,WAAW,IAAI,CACd,iBACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,gBACF,SAAS,EACpB,OAAO,EAAE,WAAW,YAEpB,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,GAAG,GAC3B,CACV,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { AtlAlertSpec } from '../spec';\nimport './atl-alert.css';\nimport { AtlIcon } from '../icon/atl-icon';\n\ntype AtlAlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\nconst VARIANT_ICONS: Record<AtlAlertVariant, string> = {\n info: '',\n success: '',\n warning: '',\n danger: '',\n};\n\n/**\n * Properties for the AtlAlert component.\n */\nexport interface AtlAlertProps\n extends HTMLAttributes<HTMLDivElement>,\n AtlAlertSpec {\n /**\n * The visual style variant of the alert.\n */\n variant?: AtlAlertVariant;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback triggered when the alert is dismissed.\n */\n onDismissed?: () => void;\n /**\n * The content to be rendered inside the alert.\n */\n children?: ReactNode;\n}\n\n/**\n * An alert component for displaying important messages.\n */\nexport function AtlAlert({\n variant = 'info',\n dismissible = false,\n onDismissed,\n children,\n className,\n ...rest\n}: AtlAlertProps) {\n const classes = ['atl-alert', `variant-${variant}`, className].filter(Boolean).join(' ');\n const ariaLive = variant === 'danger' || variant === 'warning' ? 'assertive' : 'polite';\n\n return (\n <div className={classes} role=\"alert\" aria-live={ariaLive} {...rest}>\n <span className=\"content\">\n <span className=\"variant-icon\" aria-hidden=\"true\">{VARIANT_ICONS[variant]}</span>\n {children}\n </span>\n {dismissible && (\n <button\n className=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismissed}\n >\n <AtlIcon name=\"close\" size=\"sm\" />\n </button>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"atl-alert.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/atl-alert.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;wBAEwB;AACxB,MAAM,kBAAkB,GAAkD;IACxE,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC;AA6BF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,GAAG,MAAM,EAChB,WAAW,GAAG,KAAK,EACnB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACO;IACd,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzF,MAAM,QAAQ,GAAG,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;IAExF,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,OAAO,eAAY,QAAQ,KAAM,IAAI,aACjE,gBAAM,SAAS,EAAC,SAAS,aACtB,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAC9B,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAC,IAAI,GAAG,CAClF,EACA,QAAQ,IACJ,EACN,WAAW,IAAI,CACd,iBACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,gBACF,SAAS,EACpB,OAAO,EAAE,WAAW,YAEpB,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,GAAG,GAC3B,CACV,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { AtlAlertSpec, AtlIconName } from '../spec';\nimport './atl-alert.css';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/** Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map\n * was the fifth way this library drew an icon, and the one check:iconography\n * missed (ADR-0050). */\nconst VARIANT_ICON_NAMES: Partial<Record<AtlAlertVariant, AtlIconName>> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n};\n\n\ntype AtlAlertVariant = 'info' | 'success' | 'warning' | 'danger';\n\n/**\n * Properties for the AtlAlert component.\n */\nexport interface AtlAlertProps\n extends HTMLAttributes<HTMLDivElement>,\n AtlAlertSpec {\n /**\n * The visual style variant of the alert.\n */\n variant?: AtlAlertVariant;\n /**\n * Whether the alert can be dismissed by the user.\n */\n dismissible?: boolean;\n /**\n * Callback triggered when the alert is dismissed.\n */\n onDismissed?: () => void;\n /**\n * The content to be rendered inside the alert.\n */\n children?: ReactNode;\n}\n\n/**\n * An alert component for displaying important messages.\n */\nexport function AtlAlert({\n variant = 'info',\n dismissible = false,\n onDismissed,\n children,\n className,\n ...rest\n}: AtlAlertProps) {\n const classes = ['atl-alert', `variant-${variant}`, className].filter(Boolean).join(' ');\n const ariaLive = variant === 'danger' || variant === 'warning' ? 'assertive' : 'polite';\n\n return (\n <div className={classes} role=\"alert\" aria-live={ariaLive} {...rest}>\n <span className=\"content\">\n {VARIANT_ICON_NAMES[variant] && (\n <AtlIcon className=\"variant-icon\" name={VARIANT_ICON_NAMES[variant]} size=\"sm\" />\n )}\n {children}\n </span>\n {dismissible && (\n <button\n className=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismissed}\n >\n <AtlIcon name=\"close\" size=\"sm\" />\n </button>\n )}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"atl-badge.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/atl-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,iBAAiB,CAAC;AAEzB,KAAK,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAU7E;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,eAAe,CAAC,EACrC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAmB,EACnB,IAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,+BAUf"}
1
+ {"version":3,"file":"atl-badge.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/atl-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,SAAS,CAAC;AACzD,OAAO,iBAAiB,CAAC;AAczB,KAAK,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,eAAe,CAAC,EACrC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAmB,EACnB,IAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,+BAUf"}
@@ -1,11 +1,14 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import './atl-badge.css';
3
- const VARIANT_ICONS = {
4
- default: null,
5
- success: '✓',
6
- warning: '⚠',
7
- danger: '✕',
8
- info: '',
3
+ import { AtlIcon } from '../icon/atl-icon';
4
+ /** Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map
5
+ * was the fifth way this library drew an icon, and the one check:iconography
6
+ * missed (ADR-0050). */
7
+ const VARIANT_ICON_NAMES = {
8
+ info: 'info',
9
+ success: 'success',
10
+ warning: 'warning',
11
+ danger: 'danger',
9
12
  };
10
13
  /**
11
14
  * A badge component for displaying small amounts of information or status.
@@ -13,7 +16,7 @@ const VARIANT_ICONS = {
13
16
  export function AtlBadge({ variant = 'default', size = 'md', children, className, ...rest }) {
14
17
  const classes = ['atl-badge', `variant-${variant}`, `size-${size}`, className]
15
18
  .filter(Boolean).join(' ');
16
- const icon = VARIANT_ICONS[variant];
17
- return (_jsxs("span", { className: classes, role: "status", ...rest, children: [icon && _jsx("span", { className: "variant-icon", "aria-hidden": "true", children: icon }), children] }));
19
+ const iconName = VARIANT_ICON_NAMES[variant];
20
+ return (_jsxs("span", { className: classes, role: "status", ...rest, children: [iconName && _jsx(AtlIcon, { className: "variant-icon", name: iconName, size: "sm" }), children] }));
18
21
  }
19
22
  //# sourceMappingURL=atl-badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"atl-badge.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/atl-badge.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AAIzB,MAAM,aAAa,GAA2C;IAC5D,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;CACV,CAAC;AAsBF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACO;IACd,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,OAAO,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC;SAC3E,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,CACL,gBAAM,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,KAAK,IAAI,aAC7C,IAAI,IAAI,eAAM,SAAS,EAAC,cAAc,iBAAa,MAAM,YAAE,IAAI,GAAQ,EACvE,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { AtlBadgeSpec } from '../spec';\nimport './atl-badge.css';\n\ntype AtlBadgeVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\nconst VARIANT_ICONS: Record<AtlBadgeVariant, string | null> = {\n default: null,\n success: '',\n warning: '',\n danger: '',\n info: '',\n};\n\n/**\n * Properties for the AtlBadge component.\n */\nexport interface AtlBadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n AtlBadgeSpec {\n /**\n * The visual style variant of the badge.\n */\n variant?: AtlBadgeVariant;\n /**\n * The size of the badge.\n */\n size?: 'sm' | 'md';\n /**\n * The content to be rendered inside the badge.\n */\n children?: ReactNode;\n}\n\n/**\n * A badge component for displaying small amounts of information or status.\n */\nexport function AtlBadge({\n variant = 'default',\n size = 'md',\n children,\n className,\n ...rest\n}: AtlBadgeProps) {\n const classes = ['atl-badge', `variant-${variant}`, `size-${size}`, className]\n .filter(Boolean).join(' ');\n const icon = VARIANT_ICONS[variant];\n return (\n <span className={classes} role=\"status\" {...rest}>\n {icon && <span className=\"variant-icon\" aria-hidden=\"true\">{icon}</span>}\n {children}\n </span>\n );\n}\n"]}
1
+ {"version":3,"file":"atl-badge.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/atl-badge.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C;;wBAEwB;AACxB,MAAM,kBAAkB,GAAkD;IACxE,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAyBF;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACO;IACd,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,WAAW,OAAO,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC;SAC3E,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CACL,gBAAM,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,KAAK,IAAI,aAC7C,QAAQ,IAAI,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,IAAI,GAAG,EAC1E,QAAQ,IACJ,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { AtlBadgeSpec, AtlIconName } from '../spec';\nimport './atl-badge.css';\nimport { AtlIcon } from '../icon/atl-icon';\n\n/** Which AtlIcon each variant carries. Names, not glyphs: a glyph in a string map\n * was the fifth way this library drew an icon, and the one check:iconography\n * missed (ADR-0050). */\nconst VARIANT_ICON_NAMES: Partial<Record<AtlBadgeVariant, AtlIconName>> = {\n info: 'info',\n success: 'success',\n warning: 'warning',\n danger: 'danger',\n};\n\n\ntype AtlBadgeVariant = 'default' | 'success' | 'warning' | 'danger' | 'info';\n\n/**\n * Properties for the AtlBadge component.\n */\nexport interface AtlBadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n AtlBadgeSpec {\n /**\n * The visual style variant of the badge.\n */\n variant?: AtlBadgeVariant;\n /**\n * The size of the badge.\n */\n size?: 'sm' | 'md';\n /**\n * The content to be rendered inside the badge.\n */\n children?: ReactNode;\n}\n\n/**\n * A badge component for displaying small amounts of information or status.\n */\nexport function AtlBadge({\n variant = 'default',\n size = 'md',\n children,\n className,\n ...rest\n}: AtlBadgeProps) {\n const classes = ['atl-badge', `variant-${variant}`, `size-${size}`, className]\n .filter(Boolean).join(' ');\n const iconName = VARIANT_ICON_NAMES[variant];\n return (\n <span className={classes} role=\"status\" {...rest}>\n {iconName && <AtlIcon className=\"variant-icon\" name={iconName} size=\"sm\" />}\n {children}\n </span>\n );\n}\n"]}
@@ -48,6 +48,10 @@
48
48
  /* ═══════════════════════════════════════════════════════════════════════════ */
49
49
  .atl-chat.variant-drawer dialog {
50
50
  all: unset;
51
+ /* Restated after `all: unset`, which resets the box model too — the component's
52
+ * geometry contract has the same specificity and loses on source order, so this
53
+ * element was content-box and 2px taller than its own CSS said (ADR-0051). */
54
+ box-sizing: border-box;
51
55
  /* After `all: unset`, which would otherwise reset it (ADR-0049). */
52
56
  font-family: var(--ui-font-family);
53
57
  position: fixed;
@@ -96,7 +96,7 @@
96
96
 
97
97
  .atl-checkbox.is-invalid input[type='checkbox']:focus-visible {
98
98
  border-color: var(--ui-color-input-border-invalid);
99
- box-shadow: 0 0 0 2px var(--ui-color-surface), 0 0 0 4px var(--ui-color-danger);
99
+ box-shadow: var(--ui-focus-ring-danger);
100
100
  }
101
101
 
102
102
  /* Disabled state */
@@ -100,7 +100,7 @@
100
100
 
101
101
  .atl-combobox.is-invalid .atl-combobox-input:focus-visible {
102
102
  border-color: var(--ui-color-input-border-invalid);
103
- box-shadow: 0 0 0 2px var(--ui-color-surface), 0 0 0 4px var(--ui-color-danger);
103
+ box-shadow: var(--ui-focus-ring-danger);
104
104
  }
105
105
 
106
106
  .atl-combobox.is-disabled {
@@ -21,6 +21,10 @@
21
21
  /* ── Native <dialog> reset + base ──────────────────────────────────────────── */
22
22
  .atl-dialog {
23
23
  all: unset;
24
+ /* Restated after `all: unset`, which resets the box model too — the component's
25
+ * geometry contract has the same specificity and loses on source order, so this
26
+ * element was content-box and 2px taller than its own CSS said (ADR-0051). */
27
+ box-sizing: border-box;
24
28
  /* After `all: unset`, which would otherwise reset it. The library states its own
25
29
  * typeface (ADR-0035); without this the dialog renders in the consuming app's
26
30
  * font while its neighbours render Instrument Sans (ADR-0049). */
@@ -31,6 +31,10 @@
31
31
  /* ── Native <dialog> base ──────────────────────────────────────────────────── */
32
32
  .atl-drawer-host dialog {
33
33
  all: unset;
34
+ /* Restated after `all: unset`, which resets the box model too — the component's
35
+ * geometry contract has the same specificity and loses on source order, so this
36
+ * element was content-box and 2px taller than its own CSS said (ADR-0051). */
37
+ box-sizing: border-box;
34
38
  /* After `all: unset`, which would otherwise reset it (ADR-0049). */
35
39
  font-family: var(--ui-font-family);
36
40
  position: fixed;
@@ -26,6 +26,10 @@
26
26
  /* Page button */
27
27
  .page-btn {
28
28
  all: unset;
29
+ /* Restated after `all: unset`, which resets the box model too — the component's
30
+ * geometry contract has the same specificity and loses on source order, so this
31
+ * element was content-box and 2px taller than its own CSS said (ADR-0051). */
32
+ box-sizing: border-box;
29
33
  display: inline-flex;
30
34
  align-items: center;
31
35
  justify-content: center;
@@ -72,7 +72,7 @@
72
72
 
73
73
  .atl-radio.is-invalid input[type='radio']:focus-visible {
74
74
  border-color: var(--ui-color-input-border-invalid);
75
- box-shadow: 0 0 0 2px var(--ui-color-surface), 0 0 0 4px var(--ui-color-danger);
75
+ box-shadow: var(--ui-focus-ring-danger);
76
76
  }
77
77
 
78
78
  /* Disabled state */
@@ -60,7 +60,7 @@
60
60
 
61
61
  .atl-textarea.is-invalid textarea:focus {
62
62
  border-color: var(--ui-color-input-border-invalid);
63
- box-shadow: 0 0 0 2px var(--ui-color-surface), 0 0 0 4px var(--ui-color-danger);
63
+ box-shadow: var(--ui-focus-ring-danger);
64
64
  }
65
65
 
66
66
  /* Non-color invalid indicator (WCAG 1.4.1). A real AtlIcon rather than a CSS
@@ -98,7 +98,7 @@
98
98
 
99
99
  .atl-toggle.is-invalid input[type='checkbox']:focus-visible + .track {
100
100
  border-color: var(--ui-color-input-border-invalid);
101
- box-shadow: 0 0 0 2px var(--ui-color-surface), 0 0 0 4px var(--ui-color-danger);
101
+ box-shadow: var(--ui-focus-ring-danger);
102
102
  }
103
103
 
104
104
  /* Disabled state */