@atelier-ui/react 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/package.json +2 -5
  3. package/src/lib/accordion/llm-accordion.d.ts +1 -1
  4. package/src/lib/accordion/llm-accordion.d.ts.map +1 -1
  5. package/src/lib/accordion/llm-accordion.js.map +1 -1
  6. package/src/lib/alert/llm-alert.d.ts +1 -1
  7. package/src/lib/alert/llm-alert.d.ts.map +1 -1
  8. package/src/lib/alert/llm-alert.js.map +1 -1
  9. package/src/lib/avatar/llm-avatar.d.ts +1 -1
  10. package/src/lib/avatar/llm-avatar.d.ts.map +1 -1
  11. package/src/lib/avatar/llm-avatar.js.map +1 -1
  12. package/src/lib/badge/llm-badge.d.ts +1 -1
  13. package/src/lib/badge/llm-badge.d.ts.map +1 -1
  14. package/src/lib/badge/llm-badge.js.map +1 -1
  15. package/src/lib/breadcrumbs/llm-breadcrumbs.d.ts +1 -1
  16. package/src/lib/breadcrumbs/llm-breadcrumbs.d.ts.map +1 -1
  17. package/src/lib/breadcrumbs/llm-breadcrumbs.js.map +1 -1
  18. package/src/lib/button/llm-button.d.ts +1 -1
  19. package/src/lib/button/llm-button.d.ts.map +1 -1
  20. package/src/lib/button/llm-button.js.map +1 -1
  21. package/src/lib/card/llm-card.d.ts +1 -1
  22. package/src/lib/card/llm-card.d.ts.map +1 -1
  23. package/src/lib/card/llm-card.js.map +1 -1
  24. package/src/lib/checkbox/llm-checkbox.d.ts +1 -1
  25. package/src/lib/checkbox/llm-checkbox.d.ts.map +1 -1
  26. package/src/lib/checkbox/llm-checkbox.js.map +1 -1
  27. package/src/lib/combobox/llm-combobox.d.ts +1 -1
  28. package/src/lib/combobox/llm-combobox.d.ts.map +1 -1
  29. package/src/lib/combobox/llm-combobox.js.map +1 -1
  30. package/src/lib/dialog/llm-dialog.d.ts +1 -1
  31. package/src/lib/dialog/llm-dialog.d.ts.map +1 -1
  32. package/src/lib/dialog/llm-dialog.js.map +1 -1
  33. package/src/lib/drawer/llm-drawer.d.ts +1 -1
  34. package/src/lib/drawer/llm-drawer.d.ts.map +1 -1
  35. package/src/lib/drawer/llm-drawer.js.map +1 -1
  36. package/src/lib/input/llm-input.d.ts +1 -1
  37. package/src/lib/input/llm-input.d.ts.map +1 -1
  38. package/src/lib/input/llm-input.js.map +1 -1
  39. package/src/lib/menu/llm-menu.d.ts +1 -1
  40. package/src/lib/menu/llm-menu.d.ts.map +1 -1
  41. package/src/lib/menu/llm-menu.js.map +1 -1
  42. package/src/lib/pagination/llm-pagination.d.ts +1 -1
  43. package/src/lib/pagination/llm-pagination.d.ts.map +1 -1
  44. package/src/lib/pagination/llm-pagination.js.map +1 -1
  45. package/src/lib/progress/llm-progress.d.ts +1 -1
  46. package/src/lib/progress/llm-progress.d.ts.map +1 -1
  47. package/src/lib/progress/llm-progress.js.map +1 -1
  48. package/src/lib/radio/llm-radio.d.ts +1 -1
  49. package/src/lib/radio/llm-radio.d.ts.map +1 -1
  50. package/src/lib/radio/llm-radio.js.map +1 -1
  51. package/src/lib/radio-group/llm-radio-group.d.ts +1 -1
  52. package/src/lib/radio-group/llm-radio-group.d.ts.map +1 -1
  53. package/src/lib/radio-group/llm-radio-group.js.map +1 -1
  54. package/src/lib/select/llm-select.d.ts +1 -1
  55. package/src/lib/select/llm-select.d.ts.map +1 -1
  56. package/src/lib/select/llm-select.js.map +1 -1
  57. package/src/lib/skeleton/llm-skeleton.d.ts +1 -1
  58. package/src/lib/skeleton/llm-skeleton.d.ts.map +1 -1
  59. package/src/lib/skeleton/llm-skeleton.js.map +1 -1
  60. package/src/lib/spec.d.ts +228 -0
  61. package/src/lib/spec.d.ts.map +1 -0
  62. package/src/lib/spec.js +4 -0
  63. package/src/lib/spec.js.map +1 -0
  64. package/src/lib/stepper/llm-stepper.d.ts +1 -1
  65. package/src/lib/stepper/llm-stepper.d.ts.map +1 -1
  66. package/src/lib/stepper/llm-stepper.js.map +1 -1
  67. package/src/lib/table/llm-table.d.ts +1 -1
  68. package/src/lib/table/llm-table.d.ts.map +1 -1
  69. package/src/lib/table/llm-table.js.map +1 -1
  70. package/src/lib/tabs/llm-tabs.d.ts +1 -1
  71. package/src/lib/tabs/llm-tabs.d.ts.map +1 -1
  72. package/src/lib/tabs/llm-tabs.js.map +1 -1
  73. package/src/lib/textarea/llm-textarea.d.ts +1 -1
  74. package/src/lib/textarea/llm-textarea.d.ts.map +1 -1
  75. package/src/lib/textarea/llm-textarea.js.map +1 -1
  76. package/src/lib/toast/llm-toast.d.ts +1 -1
  77. package/src/lib/toast/llm-toast.d.ts.map +1 -1
  78. package/src/lib/toast/llm-toast.js.map +1 -1
  79. package/src/lib/toggle/llm-toggle.d.ts +1 -1
  80. package/src/lib/toggle/llm-toggle.d.ts.map +1 -1
  81. package/src/lib/toggle/llm-toggle.js.map +1 -1
  82. package/src/lib/tooltip/llm-tooltip.d.ts +1 -1
  83. package/src/lib/tooltip/llm-tooltip.d.ts.map +1 -1
  84. package/src/lib/tooltip/llm-tooltip.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## 0.0.15 (2026-04-22)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **tokens:** darken primary + placeholder for WCAG AA contrast ([#00](https://github.com/DominikPieper/atelier-ui/issues/00), [#9](https://github.com/DominikPieper/atelier-ui/issues/9), [#0](https://github.com/DominikPieper/atelier-ui/issues/0), [#007070](https://github.com/DominikPieper/atelier-ui/issues/007070), [#009696](https://github.com/DominikPieper/atelier-ui/issues/009696), [#005858](https://github.com/DominikPieper/atelier-ui/issues/005858), [#003](https://github.com/DominikPieper/atelier-ui/issues/003), [#6](https://github.com/DominikPieper/atelier-ui/issues/6))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Claude Opus 4.7 (1M context)
10
+ - Dominik Pieper @DominikPieper
11
+
12
+ ## 0.0.14 (2026-04-22)
13
+
14
+ ### 🩹 Fixes
15
+
16
+ - **release:** bump source package.json + refresh lockfile for CI ([fc4314f](https://github.com/DominikPieper/atelier-ui/commit/fc4314f))
17
+ - **create-workspace:** make CLI e2e green end-to-end ([f0e46c6](https://github.com/DominikPieper/atelier-ui/commit/f0e46c6))
18
+
19
+ ### ❤️ Thank You
20
+
21
+ - Claude Opus 4.7 (1M context)
22
+ - Dominik Pieper @DominikPieper
23
+
24
+ ## 0.0.13 (2026-04-22)
25
+
26
+ This was a version bump only for react to align it with other projects, there were no code changes.
27
+
1
28
  ## 0.0.12 (2026-04-22)
2
29
 
3
30
  This was a version bump only for react to align it with other projects, there were no code changes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atelier-ui/react",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "description": "Atelier UI component library for React — LLM-optimised, accessible, design-token-driven",
5
5
  "keywords": [
6
6
  "react",
@@ -21,10 +21,7 @@
21
21
  "react": "^18.0.0 || ^19.0.0",
22
22
  "react-dom": "^18.0.0 || ^19.0.0"
23
23
  },
24
- "dependencies": {
25
- "@atelier-ui/spec": "0.0.13"
26
- },
27
24
  "types": "./src/index.d.ts",
28
25
  "main": "./src/index.js",
29
26
  "type": "commonjs"
30
- }
27
+ }
@@ -1,5 +1,5 @@
1
1
  import { ReactNode, HTMLAttributes } from 'react';
2
- import type { LlmAccordionGroupSpec, LlmAccordionItemSpec } from '@atelier-ui/spec';
2
+ import type { LlmAccordionGroupSpec, LlmAccordionItemSpec } from '../spec';
3
3
  import './llm-accordion.css';
4
4
  /**
5
5
  * Properties for the LlmAccordionGroup component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-accordion.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/accordion/llm-accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,SAAS,EACT,cAAc,EAEf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,qBAAqB,CAAC;AAoB7B;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,qBAAqB;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAa,EACb,OAAmB,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,sBAAsB,2CA+DxB;AAED;;GAEG;AACH,MAAM,WAAW,qBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,oBAAoB;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,gBAAgB,EAChB,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,qBAAqB,2CAmGvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,eAAe,CAAC,GAAG;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA"}
1
+ {"version":3,"file":"llm-accordion.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/accordion/llm-accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,SAAS,EACT,cAAc,EAEf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AACjB,OAAO,qBAAqB,CAAC;AAoB7B;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,qBAAqB;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAa,EACb,OAAmB,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,sBAAsB,2CA+DxB;AAED;;GAEG;AACH,MAAM,WAAW,qBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,oBAAoB;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,gBAAgB,EAChB,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,qBAAqB,2CAmGvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,eAAe,CAAC,GAAG;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-accordion.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/accordion/llm-accordion.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,QAAQ,EACR,MAAM,EACN,KAAK,EACL,eAAe,EACf,WAAW,GAIZ,MAAM,OAAO,CAAC;AAKf,OAAO,qBAAqB,CAAC;AAW7B,MAAM,qBAAqB,GAAG,aAAa,CAA6B;IACtE,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,IAAI,GAAG,EAAE;IACpB,UAAU,EAAE,GAAG,EAAE,GAAc,CAAC;IAChC,YAAY,EAAE,GAAG,EAAE,GAAc,CAAC;IAClC,cAAc,EAAE,GAAG,EAAE,GAAc,CAAC;IACpC,aAAa,EAAE,GAAG,EAAE,GAAc,CAAC;CACpC,CAAC,CAAC;AAsBH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,SAAS,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACgB;IACvB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,MAAM,CAA6F,EAAE,CAAC,CAAC;IAExH,MAAM,OAAO,GAAG,CAAC,qBAAqB,EAAE,WAAW,OAAO,EAAE,EAAE,SAAS,CAAC;SACrE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE;QAC5C,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE;YACpB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,GAA8C,EAAE,QAAiB,EAAE,EAAE;QACjH,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,EAAU,EAAE,EAAE;QAChD,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAgB,EAAE,SAAiB,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzB,IAAI,MAAM,GAA+B,IAAI,CAAC;QAE9C,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC/B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,KAAC,qBAAqB,CAAC,QAAQ,IAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAEpF,cAAK,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,cAAc,KAAK,IAAI,YAClD,QAAQ,GACL,GACyB,CAClC,CAAC;AACJ,CAAC;AA0BD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,gBAAgB,EAChB,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACe;IACtB,MAAM,GAAG,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,SAAS,GAAG,GAAG,EAAE,UAAU,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,CAAC;IAC9B,MAAM,UAAU,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAEnD,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC;IAE7C,kCAAkC;IAClC,eAAe,CAAC,GAAG,EAAE;QACnB,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,OAAO,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,gBAAgB,KAAK,SAAS,CAAC;IACpD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,QAAQ;YAAE,OAAO;QACrB,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,YAAY;YAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,oBAAoB;QACpB,UAAU,IAAI,aAAa;QAC3B,QAAQ,IAAI,aAAa;QACzB,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,2CAA2C;IAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAChC,CAAC,CAAC,EAA2B,EAAE,CAC7B,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,MAAM,IAAK,CAAY;QACtB,CAAwB,CAAC,IAAI,KAAK,kBAAkB,CACxD,CAAC;IACF,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC;IAE7D,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,KAAM,IAAI,aAC/B,aAAI,SAAS,EAAC,mBAAmB,YAC/B,kBACE,GAAG,EAAE,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,EAAE,EAAE,SAAS,EACb,SAAS,EAAE,CAAC,mBAAmB,EAAE,QAAQ,IAAI,aAAa,CAAC;yBACxD,MAAM,CAAC,OAAO,CAAC;yBACf,IAAI,CAAC,GAAG,CAAC,mBACG,UAAU,mBACV,OAAO,mBACP,QAAQ,IAAI,SAAS,EACpC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC,aAEzC,UAAU,EACX,cACE,SAAS,EAAE,CAAC,SAAS,EAAE,UAAU,IAAI,aAAa,CAAC;iCAChD,MAAM,CAAC,OAAO,CAAC;iCACf,IAAI,CAAC,GAAG,CAAC,EACZ,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,iBACC,MAAM,YAElB,eACE,CAAC,EAAC,gBAAgB,EAClB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,GACtB,GACE,IACC,GACN,EACL,cACE,SAAS,EAAE,CAAC,yBAAyB,EAAE,UAAU,IAAI,aAAa,CAAC;qBAChE,MAAM,CAAC,OAAO,CAAC;qBACf,IAAI,CAAC,GAAG,CAAC,YAEZ,cACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,QAAQ,qBACI,SAAS,EAC1B,SAAS,EAAC,iBAAiB,YAE1B,SAAS,GACN,GACF,IACF,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,eACE,SAAS,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KACxE,IAAI,YAEP,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC","sourcesContent":["import {\n createContext,\n useContext,\n useState,\n useRef,\n useId,\n useLayoutEffect,\n useCallback,\n ReactNode,\n HTMLAttributes,\n KeyboardEvent,\n} from 'react';\nimport type {\n LlmAccordionGroupSpec,\n LlmAccordionItemSpec,\n} from '@atelier-ui/spec';\nimport './llm-accordion.css';\n\ninterface AccordionGroupContextValue {\n multi: boolean;\n openItems: Set<string>;\n toggleItem: (id: string) => void;\n registerItem: (id: string, ref: React.RefObject<HTMLButtonElement | null>, disabled: boolean) => void;\n unregisterItem: (id: string) => void;\n handleKeydown: (e: KeyboardEvent, id: string) => void;\n}\n\nconst AccordionGroupContext = createContext<AccordionGroupContextValue>({\n multi: false,\n openItems: new Set(),\n toggleItem: () => { /* noop */ },\n registerItem: () => { /* noop */ },\n unregisterItem: () => { /* noop */ },\n handleKeydown: () => { /* noop */ },\n});\n\n/**\n * Properties for the LlmAccordionGroup component.\n */\nexport interface LlmAccordionGroupProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAccordionGroupSpec {\n /**\n * Whether multiple items can be expanded simultaneously.\n */\n multi?: boolean;\n /**\n * The visual style variant of the accordion.\n */\n variant?: 'default' | 'bordered' | 'separated';\n /**\n * The accordion items to be rendered.\n */\n children?: ReactNode;\n}\n\n/**\n * A container component that manages a group of accordion items.\n */\nexport function LlmAccordionGroup({\n multi = false,\n variant = 'default',\n children,\n className,\n ...rest\n}: LlmAccordionGroupProps) {\n const [openItems, setOpenItems] = useState<Set<string>>(new Set());\n const itemsRef = useRef<{ id: string; triggerRef: React.RefObject<HTMLButtonElement | null>; disabled: boolean }[]>([]);\n\n const classes = ['llm-accordion-group', `variant-${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n const toggleItem = useCallback((id: string) => {\n setOpenItems((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n if (!multi) next.clear();\n next.add(id);\n }\n return next;\n });\n }, [multi]);\n\n const registerItem = useCallback((id: string, ref: React.RefObject<HTMLButtonElement | null>, disabled: boolean) => {\n itemsRef.current = [...itemsRef.current.filter((i) => i.id !== id), { id, triggerRef: ref, disabled }];\n }, []);\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n const handleKeydown = useCallback((e: KeyboardEvent, currentId: string) => {\n const enabled = itemsRef.current.filter((i) => !i.disabled);\n if (enabled.length === 0) return;\n\n const pos = enabled.findIndex((i) => i.id === currentId);\n const n = enabled.length;\n let target: (typeof enabled)[0] | null = null;\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n target = enabled[(pos + 1) % n];\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n target = enabled[(pos - 1 + n) % n];\n } else if (e.key === 'Home') {\n e.preventDefault();\n target = enabled[0];\n } else if (e.key === 'End') {\n e.preventDefault();\n target = enabled[n - 1];\n }\n\n target?.triggerRef.current?.focus();\n }, []);\n\n return (\n <AccordionGroupContext.Provider\n value={{ multi, openItems, toggleItem, registerItem, unregisterItem, handleKeydown }}\n >\n <div className={classes} role=\"presentation\" {...rest}>\n {children}\n </div>\n </AccordionGroupContext.Provider>\n );\n}\n\n/**\n * Properties for the LlmAccordionItem component.\n */\nexport interface LlmAccordionItemProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAccordionItemSpec {\n /**\n * Whether the item is currently expanded.\n */\n expanded?: boolean;\n /**\n * Callback triggered when the expanded state changes.\n */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Whether the accordion item is disabled.\n */\n disabled?: boolean;\n /**\n * The content of the accordion item, typically including an LlmAccordionHeader.\n */\n children?: ReactNode;\n}\n\n/**\n * An individual item within an accordion group.\n */\nexport function LlmAccordionItem({\n expanded: externalExpanded,\n onExpandedChange,\n disabled = false,\n children,\n className,\n ...rest\n}: LlmAccordionItemProps) {\n const ctx = useContext(AccordionGroupContext);\n const id = useId();\n const triggerId = `${id}-trigger`;\n const panelId = `${id}-panel`;\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const { registerItem, unregisterItem } = ctx;\n\n // Register/unregister with parent\n useLayoutEffect(() => {\n registerItem(id, triggerRef, disabled);\n return () => unregisterItem(id);\n }, [id, triggerRef, disabled, registerItem, unregisterItem]);\n\n const isControlled = externalExpanded !== undefined;\n const isExpanded = isControlled ? externalExpanded : ctx.openItems.has(id);\n\n const toggle = () => {\n if (disabled) return;\n const next = !isExpanded;\n if (!isControlled) ctx.toggleItem(id);\n onExpandedChange?.(next);\n };\n\n const classes = [\n 'llm-accordion-item',\n isExpanded && 'is-expanded',\n disabled && 'is-disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Separate header child from body children\n const childArray = Array.isArray(children) ? children : [children];\n const headerNode = childArray.find(\n (c): c is React.ReactElement =>\n typeof c === 'object' &&\n c !== null &&\n 'type' in (c as object) &&\n (c as React.ReactElement).type === LlmAccordionHeader\n );\n const bodyNodes = childArray.filter((c) => c !== headerNode);\n\n return (\n <div className={classes} {...rest}>\n <h3 className=\"accordion-heading\">\n <button\n ref={triggerRef}\n type=\"button\"\n id={triggerId}\n className={['accordion-trigger', disabled && 'is-disabled']\n .filter(Boolean)\n .join(' ')}\n aria-expanded={isExpanded}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={toggle}\n onKeyDown={(e) => ctx.handleKeydown(e, id)}\n >\n {headerNode}\n <svg\n className={['chevron', isExpanded && 'is-expanded']\n .filter(Boolean)\n .join(' ')}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </h3>\n <div\n className={['accordion-panel-wrapper', isExpanded && 'is-expanded']\n .filter(Boolean)\n .join(' ')}\n >\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={triggerId}\n className=\"accordion-panel\"\n >\n {bodyNodes}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * The header component for an LlmAccordionItem.\n */\nexport function LlmAccordionHeader({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLSpanElement> & {\n /**\n * The content to be rendered in the header.\n */\n children?: ReactNode;\n}) {\n return (\n <span\n className={['accordion-header-content', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </span>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-accordion.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/accordion/llm-accordion.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useContext,\n useState,\n useRef,\n useId,\n useLayoutEffect,\n useCallback,\n ReactNode,\n HTMLAttributes,\n KeyboardEvent,\n} from 'react';\nimport type {\n LlmAccordionGroupSpec,\n LlmAccordionItemSpec,\n} from '../spec';\nimport './llm-accordion.css';\n\ninterface AccordionGroupContextValue {\n multi: boolean;\n openItems: Set<string>;\n toggleItem: (id: string) => void;\n registerItem: (id: string, ref: React.RefObject<HTMLButtonElement | null>, disabled: boolean) => void;\n unregisterItem: (id: string) => void;\n handleKeydown: (e: KeyboardEvent, id: string) => void;\n}\n\nconst AccordionGroupContext = createContext<AccordionGroupContextValue>({\n multi: false,\n openItems: new Set(),\n toggleItem: () => { /* noop */ },\n registerItem: () => { /* noop */ },\n unregisterItem: () => { /* noop */ },\n handleKeydown: () => { /* noop */ },\n});\n\n/**\n * Properties for the LlmAccordionGroup component.\n */\nexport interface LlmAccordionGroupProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAccordionGroupSpec {\n /**\n * Whether multiple items can be expanded simultaneously.\n */\n multi?: boolean;\n /**\n * The visual style variant of the accordion.\n */\n variant?: 'default' | 'bordered' | 'separated';\n /**\n * The accordion items to be rendered.\n */\n children?: ReactNode;\n}\n\n/**\n * A container component that manages a group of accordion items.\n */\nexport function LlmAccordionGroup({\n multi = false,\n variant = 'default',\n children,\n className,\n ...rest\n}: LlmAccordionGroupProps) {\n const [openItems, setOpenItems] = useState<Set<string>>(new Set());\n const itemsRef = useRef<{ id: string; triggerRef: React.RefObject<HTMLButtonElement | null>; disabled: boolean }[]>([]);\n\n const classes = ['llm-accordion-group', `variant-${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n const toggleItem = useCallback((id: string) => {\n setOpenItems((prev) => {\n const next = new Set(prev);\n if (next.has(id)) {\n next.delete(id);\n } else {\n if (!multi) next.clear();\n next.add(id);\n }\n return next;\n });\n }, [multi]);\n\n const registerItem = useCallback((id: string, ref: React.RefObject<HTMLButtonElement | null>, disabled: boolean) => {\n itemsRef.current = [...itemsRef.current.filter((i) => i.id !== id), { id, triggerRef: ref, disabled }];\n }, []);\n\n const unregisterItem = useCallback((id: string) => {\n itemsRef.current = itemsRef.current.filter((i) => i.id !== id);\n }, []);\n\n const handleKeydown = useCallback((e: KeyboardEvent, currentId: string) => {\n const enabled = itemsRef.current.filter((i) => !i.disabled);\n if (enabled.length === 0) return;\n\n const pos = enabled.findIndex((i) => i.id === currentId);\n const n = enabled.length;\n let target: (typeof enabled)[0] | null = null;\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n target = enabled[(pos + 1) % n];\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n target = enabled[(pos - 1 + n) % n];\n } else if (e.key === 'Home') {\n e.preventDefault();\n target = enabled[0];\n } else if (e.key === 'End') {\n e.preventDefault();\n target = enabled[n - 1];\n }\n\n target?.triggerRef.current?.focus();\n }, []);\n\n return (\n <AccordionGroupContext.Provider\n value={{ multi, openItems, toggleItem, registerItem, unregisterItem, handleKeydown }}\n >\n <div className={classes} role=\"presentation\" {...rest}>\n {children}\n </div>\n </AccordionGroupContext.Provider>\n );\n}\n\n/**\n * Properties for the LlmAccordionItem component.\n */\nexport interface LlmAccordionItemProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAccordionItemSpec {\n /**\n * Whether the item is currently expanded.\n */\n expanded?: boolean;\n /**\n * Callback triggered when the expanded state changes.\n */\n onExpandedChange?: (expanded: boolean) => void;\n /**\n * Whether the accordion item is disabled.\n */\n disabled?: boolean;\n /**\n * The content of the accordion item, typically including an LlmAccordionHeader.\n */\n children?: ReactNode;\n}\n\n/**\n * An individual item within an accordion group.\n */\nexport function LlmAccordionItem({\n expanded: externalExpanded,\n onExpandedChange,\n disabled = false,\n children,\n className,\n ...rest\n}: LlmAccordionItemProps) {\n const ctx = useContext(AccordionGroupContext);\n const id = useId();\n const triggerId = `${id}-trigger`;\n const panelId = `${id}-panel`;\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const { registerItem, unregisterItem } = ctx;\n\n // Register/unregister with parent\n useLayoutEffect(() => {\n registerItem(id, triggerRef, disabled);\n return () => unregisterItem(id);\n }, [id, triggerRef, disabled, registerItem, unregisterItem]);\n\n const isControlled = externalExpanded !== undefined;\n const isExpanded = isControlled ? externalExpanded : ctx.openItems.has(id);\n\n const toggle = () => {\n if (disabled) return;\n const next = !isExpanded;\n if (!isControlled) ctx.toggleItem(id);\n onExpandedChange?.(next);\n };\n\n const classes = [\n 'llm-accordion-item',\n isExpanded && 'is-expanded',\n disabled && 'is-disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Separate header child from body children\n const childArray = Array.isArray(children) ? children : [children];\n const headerNode = childArray.find(\n (c): c is React.ReactElement =>\n typeof c === 'object' &&\n c !== null &&\n 'type' in (c as object) &&\n (c as React.ReactElement).type === LlmAccordionHeader\n );\n const bodyNodes = childArray.filter((c) => c !== headerNode);\n\n return (\n <div className={classes} {...rest}>\n <h3 className=\"accordion-heading\">\n <button\n ref={triggerRef}\n type=\"button\"\n id={triggerId}\n className={['accordion-trigger', disabled && 'is-disabled']\n .filter(Boolean)\n .join(' ')}\n aria-expanded={isExpanded}\n aria-controls={panelId}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={toggle}\n onKeyDown={(e) => ctx.handleKeydown(e, id)}\n >\n {headerNode}\n <svg\n className={['chevron', isExpanded && 'is-expanded']\n .filter(Boolean)\n .join(' ')}\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </h3>\n <div\n className={['accordion-panel-wrapper', isExpanded && 'is-expanded']\n .filter(Boolean)\n .join(' ')}\n >\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={triggerId}\n className=\"accordion-panel\"\n >\n {bodyNodes}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * The header component for an LlmAccordionItem.\n */\nexport function LlmAccordionHeader({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLSpanElement> & {\n /**\n * The content to be rendered in the header.\n */\n children?: ReactNode;\n}) {\n return (\n <span\n className={['accordion-header-content', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </span>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- import type { LlmAlertSpec } from '@atelier-ui/spec';
2
+ import type { LlmAlertSpec } from '../spec';
3
3
  import './llm-alert.css';
4
4
  /**
5
5
  * Properties for the LlmAlert component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-alert.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/llm-alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD;;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,2CAiCf"}
1
+ {"version":3,"file":"llm-alert.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/llm-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;AAEzB;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpD;;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,2CAiCf"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-alert.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/llm-alert.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AA0BzB;;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,eAAM,SAAS,EAAC,SAAS,YAAE,QAAQ,GAAQ,EAC1C,WAAW,IAAI,CACd,iBACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,gBACF,SAAS,EACpB,OAAO,EAAE,WAAW,YAEpB,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,aAElB,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,GAAG,EACtC,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IAClC,GACC,CACV,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { LlmAlertSpec } from '@atelier-ui/spec';\nimport './llm-alert.css';\n\n/**\n * Properties for the LlmAlert component.\n */\nexport interface LlmAlertProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAlertSpec {\n /**\n * The visual style variant of the alert.\n */\n variant?: 'info' | 'success' | 'warning' | 'danger';\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 LlmAlert({\n variant = 'info',\n dismissible = false,\n onDismissed,\n children,\n className,\n ...rest\n}: LlmAlertProps) {\n const classes = ['llm-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\">{children}</span>\n {dismissible && (\n <button\n className=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismissed}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-alert.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/alert/llm-alert.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AA0BzB;;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,eAAM,SAAS,EAAC,SAAS,YAAE,QAAQ,GAAQ,EAC1C,WAAW,IAAI,CACd,iBACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,QAAQ,gBACF,SAAS,EACpB,OAAO,EAAE,WAAW,YAEpB,eACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,aAElB,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,GAAG,EACtC,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,IAClC,GACC,CACV,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { LlmAlertSpec } from '../spec';\nimport './llm-alert.css';\n\n/**\n * Properties for the LlmAlert component.\n */\nexport interface LlmAlertProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAlertSpec {\n /**\n * The visual style variant of the alert.\n */\n variant?: 'info' | 'success' | 'warning' | 'danger';\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 LlmAlert({\n variant = 'info',\n dismissible = false,\n onDismissed,\n children,\n className,\n ...rest\n}: LlmAlertProps) {\n const classes = ['llm-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\">{children}</span>\n {dismissible && (\n <button\n className=\"dismiss\"\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismissed}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- import type { LlmAvatarSpec, LlmAvatarGroupSpec } from '@atelier-ui/spec';
2
+ import type { LlmAvatarSpec, LlmAvatarGroupSpec } from '../spec';
3
3
  import './llm-avatar.css';
4
4
  /**
5
5
  * Properties for the LlmAvatar component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-avatar.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/avatar/llm-avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAsB,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,cACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;CACtD;AAWD;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAQ,EACR,GAAQ,EACR,IAAS,EACT,IAAW,EACX,KAAgB,EAChB,MAAW,EACX,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,2CA8BhB;AAED;;GAEG;AACH,MAAM,WAAW,mBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,kBAAkB;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAO,EACP,IAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,mBAAmB,2CAoBrB"}
1
+ {"version":3,"file":"llm-avatar.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/avatar/llm-avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAsB,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,cACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,aAAa;IACf;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;CACtD;AAWD;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAQ,EACR,GAAQ,EACR,IAAS,EACT,IAAW,EACX,KAAgB,EAChB,MAAW,EACX,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,2CA8BhB;AAED;;GAEG;AACH,MAAM,WAAW,mBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,kBAAkB;IACpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAO,EACP,IAAW,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,mBAAmB,2CAoBrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-avatar.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/avatar/llm-avatar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA6B,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKtE,OAAO,kBAAkB,CAAC;AAkC1B,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,GAAG,GAAG,EAAE,EACR,GAAG,GAAG,EAAE,EACR,IAAI,GAAG,EAAE,EACT,IAAI,GAAG,IAAI,EACX,KAAK,GAAG,QAAQ,EAChB,MAAM,GAAG,EAAE,EACX,SAAS,EACT,GAAG,IAAI,EACQ;IACf,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE5C,kCAAkC;IAClC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,YAAY,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,CAAC;SACxE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,IAAI,QAAQ,CAAC;IAE1C,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,gBAAc,SAAS,EAAE,IAAI,EAAC,KAAK,KAAK,IAAI,aAChE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAClB,cAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAI,CACtE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACb,eAAM,SAAS,EAAC,UAAU,iBAAa,MAAM,YAAE,QAAQ,GAAQ,CAChE,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,MAAM,iBAAa,MAAM,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,YAC9E,eAAM,CAAC,EAAC,2HAA2H,GAAG,GAClI,CACP,EACA,MAAM,IAAI,eAAM,SAAS,EAAE,qBAAqB,MAAM,EAAE,iBAAc,MAAM,GAAG,IAC5E,CACP,CAAC;AACJ,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,GAAG,GAAG,CAAC,EACP,IAAI,GAAG,IAAI,EACX,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACa;IACpB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;IAEzC,MAAM,OAAO,GAAG,CAAC,kBAAkB,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1F,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,KAAM,IAAI,aAC9B,OAAO,EACP,QAAQ,GAAG,CAAC,IAAI,CACf,eACE,SAAS,EAAE,uBAAuB,IAAI,EAAE,gBAC5B,IAAI,QAAQ,OAAO,kBAE7B,QAAQ,IACN,CACP,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode, Children, useState } from 'react';\nimport type {\n LlmAvatarSpec,\n LlmAvatarGroupSpec,\n} from '@atelier-ui/spec';\nimport './llm-avatar.css';\n\n/**\n * Properties for the LlmAvatar component.\n */\nexport interface LlmAvatarProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAvatarSpec {\n /**\n * The URL of the image to display.\n */\n src?: string;\n /**\n * Accessible text for the avatar image.\n */\n alt?: string;\n /**\n * The name of the person/entity, used for initials if no image is provided.\n */\n name?: string;\n /**\n * The size of the avatar.\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /**\n * The shape of the avatar.\n */\n shape?: 'circle' | 'square';\n /**\n * The status indicator to display on the avatar.\n */\n status?: 'online' | 'offline' | 'away' | 'busy' | '';\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0].toUpperCase())\n .join('');\n}\n\n/**\n * An avatar component for displaying user profile pictures or initials.\n */\nexport function LlmAvatar({\n src = '',\n alt = '',\n name = '',\n size = 'md',\n shape = 'circle',\n status = '',\n className,\n ...rest\n}: LlmAvatarProps) {\n const [imgError, setImgError] = useState(false);\n const [prevSrc, setPrevSrc] = useState(src);\n\n // Reset imgError when src changes\n if (src !== prevSrc) {\n setPrevSrc(src);\n setImgError(false);\n }\n\n const classes = ['llm-avatar', `size-${size}`, `shape-${shape}`, className]\n .filter(Boolean).join(' ');\n\n const initials = name ? getInitials(name) : '';\n const ariaLabel = alt || name || 'Avatar';\n\n return (\n <div className={classes} aria-label={ariaLabel} role=\"img\" {...rest}>\n {src && !imgError ? (\n <img src={src} alt={alt || name} onError={() => setImgError(true)} />\n ) : initials ? (\n <span className=\"initials\" aria-hidden=\"true\">{initials}</span>\n ) : (\n <svg className=\"icon\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 12c2.761 0 5-2.239 5-5s-2.239-5-5-5-5 2.239-5 5 2.239 5 5 5zm0 2c-3.314 0-10 1.343-10 4v2h20v-2c0-2.657-6.686-4-10-4z\" />\n </svg>\n )}\n {status && <span className={`status-dot status-${status}`} aria-hidden=\"true\" />}\n </div>\n );\n}\n\n/**\n * Properties for the LlmAvatarGroup component.\n */\nexport interface LlmAvatarGroupProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAvatarGroupSpec {\n /**\n * The maximum number of avatars to show before displaying an overflow badge.\n */\n max?: number;\n /**\n * The size of the avatars in the group.\n */\n size?: LlmAvatarProps['size'];\n /**\n * The avatars to be rendered in the group.\n */\n children?: ReactNode;\n}\n\n/**\n * A container for grouping multiple avatars.\n */\nexport function LlmAvatarGroup({\n max = 5,\n size = 'md',\n children,\n className,\n ...rest\n}: LlmAvatarGroupProps) {\n const childArray = Children.toArray(children);\n const visible = childArray.slice(0, max);\n const overflow = childArray.length - max;\n\n const classes = ['llm-avatar-group', `size-${size}`, className].filter(Boolean).join(' ');\n\n return (\n <div className={classes} {...rest}>\n {visible}\n {overflow > 0 && (\n <div\n className={`overflow-badge size-${size}`}\n aria-label={`+${overflow} more`}\n >\n +{overflow}\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-avatar.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/avatar/llm-avatar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HTMLAttributes, ReactNode, Children, useState } from 'react';\nimport type {\n LlmAvatarSpec,\n LlmAvatarGroupSpec,\n} from '../spec';\nimport './llm-avatar.css';\n\n/**\n * Properties for the LlmAvatar component.\n */\nexport interface LlmAvatarProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAvatarSpec {\n /**\n * The URL of the image to display.\n */\n src?: string;\n /**\n * Accessible text for the avatar image.\n */\n alt?: string;\n /**\n * The name of the person/entity, used for initials if no image is provided.\n */\n name?: string;\n /**\n * The size of the avatar.\n */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /**\n * The shape of the avatar.\n */\n shape?: 'circle' | 'square';\n /**\n * The status indicator to display on the avatar.\n */\n status?: 'online' | 'offline' | 'away' | 'busy' | '';\n}\n\nfunction getInitials(name: string): string {\n return name\n .split(' ')\n .filter(Boolean)\n .slice(0, 2)\n .map((w) => w[0].toUpperCase())\n .join('');\n}\n\n/**\n * An avatar component for displaying user profile pictures or initials.\n */\nexport function LlmAvatar({\n src = '',\n alt = '',\n name = '',\n size = 'md',\n shape = 'circle',\n status = '',\n className,\n ...rest\n}: LlmAvatarProps) {\n const [imgError, setImgError] = useState(false);\n const [prevSrc, setPrevSrc] = useState(src);\n\n // Reset imgError when src changes\n if (src !== prevSrc) {\n setPrevSrc(src);\n setImgError(false);\n }\n\n const classes = ['llm-avatar', `size-${size}`, `shape-${shape}`, className]\n .filter(Boolean).join(' ');\n\n const initials = name ? getInitials(name) : '';\n const ariaLabel = alt || name || 'Avatar';\n\n return (\n <div className={classes} aria-label={ariaLabel} role=\"img\" {...rest}>\n {src && !imgError ? (\n <img src={src} alt={alt || name} onError={() => setImgError(true)} />\n ) : initials ? (\n <span className=\"initials\" aria-hidden=\"true\">{initials}</span>\n ) : (\n <svg className=\"icon\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12 12c2.761 0 5-2.239 5-5s-2.239-5-5-5-5 2.239-5 5 2.239 5 5 5zm0 2c-3.314 0-10 1.343-10 4v2h20v-2c0-2.657-6.686-4-10-4z\" />\n </svg>\n )}\n {status && <span className={`status-dot status-${status}`} aria-hidden=\"true\" />}\n </div>\n );\n}\n\n/**\n * Properties for the LlmAvatarGroup component.\n */\nexport interface LlmAvatarGroupProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmAvatarGroupSpec {\n /**\n * The maximum number of avatars to show before displaying an overflow badge.\n */\n max?: number;\n /**\n * The size of the avatars in the group.\n */\n size?: LlmAvatarProps['size'];\n /**\n * The avatars to be rendered in the group.\n */\n children?: ReactNode;\n}\n\n/**\n * A container for grouping multiple avatars.\n */\nexport function LlmAvatarGroup({\n max = 5,\n size = 'md',\n children,\n className,\n ...rest\n}: LlmAvatarGroupProps) {\n const childArray = Children.toArray(children);\n const visible = childArray.slice(0, max);\n const overflow = childArray.length - max;\n\n const classes = ['llm-avatar-group', `size-${size}`, className].filter(Boolean).join(' ');\n\n return (\n <div className={classes} {...rest}>\n {visible}\n {overflow > 0 && (\n <div\n className={`overflow-badge size-${size}`}\n aria-label={`+${overflow} more`}\n >\n +{overflow}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- import type { LlmBadgeSpec } from '@atelier-ui/spec';
2
+ import type { LlmBadgeSpec } from '../spec';
3
3
  import './llm-badge.css';
4
4
  /**
5
5
  * Properties for the LlmBadge component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-badge.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/llm-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,eAAe,CAAC,EACrC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChE;;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,2CAQf"}
1
+ {"version":3,"file":"llm-badge.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/llm-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;;GAEG;AACH,MAAM,WAAW,aACf,SAAQ,cAAc,CAAC,eAAe,CAAC,EACrC,YAAY;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChE;;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,2CAQf"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-badge.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/llm-badge.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AAsBzB;;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,OAAO,CACL,eAAM,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,KAAK,IAAI,YAC7C,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { LlmBadgeSpec } from '@atelier-ui/spec';\nimport './llm-badge.css';\n\n/**\n * Properties for the LlmBadge component.\n */\nexport interface LlmBadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n LlmBadgeSpec {\n /**\n * The visual style variant of the badge.\n */\n variant?: 'default' | 'success' | 'warning' | 'danger' | 'info';\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 LlmBadge({\n variant = 'default',\n size = 'md',\n children,\n className,\n ...rest\n}: LlmBadgeProps) {\n const classes = ['llm-badge', `variant-${variant}`, `size-${size}`, className]\n .filter(Boolean).join(' ');\n return (\n <span className={classes} role=\"status\" {...rest}>\n {children}\n </span>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-badge.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/badge/llm-badge.tsx"],"names":[],"mappings":";AAEA,OAAO,iBAAiB,CAAC;AAsBzB;;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,OAAO,CACL,eAAM,SAAS,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,KAAK,IAAI,YAC7C,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { LlmBadgeSpec } from '../spec';\nimport './llm-badge.css';\n\n/**\n * Properties for the LlmBadge component.\n */\nexport interface LlmBadgeProps\n extends HTMLAttributes<HTMLSpanElement>,\n LlmBadgeSpec {\n /**\n * The visual style variant of the badge.\n */\n variant?: 'default' | 'success' | 'warning' | 'danger' | 'info';\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 LlmBadge({\n variant = 'default',\n size = 'md',\n children,\n className,\n ...rest\n}: LlmBadgeProps) {\n const classes = ['llm-badge', `variant-${variant}`, `size-${size}`, className]\n .filter(Boolean).join(' ');\n return (\n <span className={classes} role=\"status\" {...rest}>\n {children}\n </span>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode, AnchorHTMLAttributes } from 'react';
2
- import type { LlmBreadcrumbsSpec, LlmBreadcrumbItemSpec } from '@atelier-ui/spec';
2
+ import type { LlmBreadcrumbsSpec, LlmBreadcrumbItemSpec } from '../spec';
3
3
  import './llm-breadcrumbs.css';
4
4
  /**
5
5
  * Properties for the LlmBreadcrumbs component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/breadcrumbs/llm-breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAA0C,MAAM,OAAO,CAAC;AAEhH,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,WAAW,CAAC,EAAE,kBAAkB;IAC1F;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAe,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,2CAwB3G;AAED;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,qBAAqB;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,sBAAsB,2CAqBxB"}
1
+ {"version":3,"file":"llm-breadcrumbs.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/breadcrumbs/llm-breadcrumbs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAA0C,MAAM,OAAO,CAAC;AAEhH,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,WAAW,CAAC,EAAE,kBAAkB;IAC1F;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAe,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,mBAAmB,2CAwB3G;AAED;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,qBAAqB;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAe,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,sBAAsB,2CAqBxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-breadcrumbs.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/breadcrumbs/llm-breadcrumbs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAmD,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGhH,OAAO,uBAAuB,CAAC;AAY/B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAuB;IAC1G,MAAM,OAAO,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzE,+CAA+C;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvD,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAY,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,cACE,SAAS,EAAE,OAAO,gBACP,YAAY,EACvB,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,SAAS,GAAG,EAAE,GAAG,KAAK,EAAmB,KACrE,IAAI,YAER,aAAI,SAAS,EAAC,kBAAkB,YAC7B,gBAAgB,GACd,GACD,CACP,CAAC;AACJ,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACgB;IACvB,MAAM,OAAO,GAAG,CAAC,qBAAqB,EAAE,OAAO,IAAI,YAAY,EAAE,SAAS,CAAC;SACxE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,aAAI,SAAS,EAAE,OAAO,YACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAClB,YAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,iBAAiB,KAAK,IAAI,YAChD,QAAQ,GACP,CACL,CAAC,CAAC,CAAC,CACF,eACE,SAAS,EAAC,oBAAoB,kBAChB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAEzC,QAAQ,GACJ,CACR,GACE,CACN,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode, AnchorHTMLAttributes, Children, isValidElement, cloneElement } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { LlmBreadcrumbsSpec, LlmBreadcrumbItemSpec } from '@atelier-ui/spec';\nimport './llm-breadcrumbs.css';\n\n/**\n * Properties for the LlmBreadcrumbs component.\n */\nexport interface LlmBreadcrumbsProps extends HTMLAttributes<HTMLElement>, LlmBreadcrumbsSpec {\n /**\n * The breadcrumb items to be rendered.\n */\n children?: ReactNode;\n}\n\n/**\n * A breadcrumbs component for displaying a navigation trail.\n */\nexport function LlmBreadcrumbs({ children, separator = '/', className, style, ...rest }: LlmBreadcrumbsProps) {\n const classes = ['llm-breadcrumbs', className].filter(Boolean).join(' ');\n\n // Automatically mark the last child as current\n const childArray = Children.toArray(children);\n const enhancedChildren = childArray.map((child, index) => {\n if (isValidElement(child) && index === childArray.length - 1) {\n return cloneElement(child, { current: true } as object);\n }\n return child;\n });\n\n return (\n <nav\n className={classes}\n aria-label=\"Breadcrumb\"\n style={{ '--llm-separator': `'${separator}'`, ...style } as CSSProperties}\n {...rest}\n >\n <ol className=\"breadcrumbs-list\">\n {enhancedChildren}\n </ol>\n </nav>\n );\n}\n\n/**\n * Properties for the LlmBreadcrumbItem component.\n */\nexport interface LlmBreadcrumbItemProps\n extends AnchorHTMLAttributes<HTMLAnchorElement>,\n LlmBreadcrumbItemSpec {\n /**\n * The URL the breadcrumb points to.\n */\n href?: string;\n /**\n * Whether this is the current page.\n */\n current?: boolean;\n /**\n * The content to be rendered inside the breadcrumb item.\n */\n children?: ReactNode;\n}\n\n/**\n * An individual breadcrumb item.\n */\nexport function LlmBreadcrumbItem({\n href,\n current = false,\n children,\n className,\n ...rest\n}: LlmBreadcrumbItemProps) {\n const classes = ['llm-breadcrumb-item', current && 'is-current', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <li className={classes}>\n {href && !current ? (\n <a href={href} className=\"breadcrumb-link\" {...rest}>\n {children}\n </a>\n ) : (\n <span\n className=\"breadcrumb-current\"\n aria-current={current ? 'page' : undefined}\n >\n {children}\n </span>\n )}\n </li>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-breadcrumbs.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/breadcrumbs/llm-breadcrumbs.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAmD,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAGhH,OAAO,uBAAuB,CAAC;AAY/B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,GAAG,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAuB;IAC1G,MAAM,OAAO,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzE,+CAA+C;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACvD,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAY,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,cACE,SAAS,EAAE,OAAO,gBACP,YAAY,EACvB,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,SAAS,GAAG,EAAE,GAAG,KAAK,EAAmB,KACrE,IAAI,YAER,aAAI,SAAS,EAAC,kBAAkB,YAC7B,gBAAgB,GACd,GACD,CACP,CAAC;AACJ,CAAC;AAsBD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACgB;IACvB,MAAM,OAAO,GAAG,CAAC,qBAAqB,EAAE,OAAO,IAAI,YAAY,EAAE,SAAS,CAAC;SACxE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,aAAI,SAAS,EAAE,OAAO,YACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAClB,YAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAC,iBAAiB,KAAK,IAAI,YAChD,QAAQ,GACP,CACL,CAAC,CAAC,CAAC,CACF,eACE,SAAS,EAAC,oBAAoB,kBAChB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAEzC,QAAQ,GACJ,CACR,GACE,CACN,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode, AnchorHTMLAttributes, Children, isValidElement, cloneElement } from 'react';\nimport type { CSSProperties } from 'react';\nimport type { LlmBreadcrumbsSpec, LlmBreadcrumbItemSpec } from '../spec';\nimport './llm-breadcrumbs.css';\n\n/**\n * Properties for the LlmBreadcrumbs component.\n */\nexport interface LlmBreadcrumbsProps extends HTMLAttributes<HTMLElement>, LlmBreadcrumbsSpec {\n /**\n * The breadcrumb items to be rendered.\n */\n children?: ReactNode;\n}\n\n/**\n * A breadcrumbs component for displaying a navigation trail.\n */\nexport function LlmBreadcrumbs({ children, separator = '/', className, style, ...rest }: LlmBreadcrumbsProps) {\n const classes = ['llm-breadcrumbs', className].filter(Boolean).join(' ');\n\n // Automatically mark the last child as current\n const childArray = Children.toArray(children);\n const enhancedChildren = childArray.map((child, index) => {\n if (isValidElement(child) && index === childArray.length - 1) {\n return cloneElement(child, { current: true } as object);\n }\n return child;\n });\n\n return (\n <nav\n className={classes}\n aria-label=\"Breadcrumb\"\n style={{ '--llm-separator': `'${separator}'`, ...style } as CSSProperties}\n {...rest}\n >\n <ol className=\"breadcrumbs-list\">\n {enhancedChildren}\n </ol>\n </nav>\n );\n}\n\n/**\n * Properties for the LlmBreadcrumbItem component.\n */\nexport interface LlmBreadcrumbItemProps\n extends AnchorHTMLAttributes<HTMLAnchorElement>,\n LlmBreadcrumbItemSpec {\n /**\n * The URL the breadcrumb points to.\n */\n href?: string;\n /**\n * Whether this is the current page.\n */\n current?: boolean;\n /**\n * The content to be rendered inside the breadcrumb item.\n */\n children?: ReactNode;\n}\n\n/**\n * An individual breadcrumb item.\n */\nexport function LlmBreadcrumbItem({\n href,\n current = false,\n children,\n className,\n ...rest\n}: LlmBreadcrumbItemProps) {\n const classes = ['llm-breadcrumb-item', current && 'is-current', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <li className={classes}>\n {href && !current ? (\n <a href={href} className=\"breadcrumb-link\" {...rest}>\n {children}\n </a>\n ) : (\n <span\n className=\"breadcrumb-current\"\n aria-current={current ? 'page' : undefined}\n >\n {children}\n </span>\n )}\n </li>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ButtonHTMLAttributes, ReactNode } from 'react';
2
- import type { LlmButtonSpec } from '@atelier-ui/spec';
2
+ import type { LlmButtonSpec } from '../spec';
3
3
  import './llm-button.css';
4
4
  /**
5
5
  * Properties for the LlmButton component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-button.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/button/llm-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAc,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,aAAa;IAC5F;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,8GAoCpB,CAAC"}
1
+ {"version":3,"file":"llm-button.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/button/llm-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAc,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,aAAa;IAC5F;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,8GAoCpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-button.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/button/llm-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAmC,UAAU,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAoC,SAAS,SAAS,CACvF,EACE,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EACD,GAAG;IAEH,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC;IACvC,MAAM,OAAO,GAAG;QACd,YAAY;QACZ,WAAW,OAAO,EAAE;QACpB,QAAQ,IAAI,EAAE;QACd,UAAU,IAAI,aAAa;QAC3B,OAAO,IAAI,YAAY;QACvB,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,kBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,UAAU,mBACL,UAAU,IAAI,SAAS,KAClC,IAAI,aAEP,OAAO,IAAI,eAAM,SAAS,EAAC,SAAS,iBAAa,MAAM,GAAG,EAC1D,QAAQ,IACF,CACV,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { ButtonHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport type { LlmButtonSpec } from '@atelier-ui/spec';\nimport './llm-button.css';\n\n/**\n * Properties for the LlmButton component.\n */\nexport interface LlmButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, LlmButtonSpec {\n /**\n * The content to be rendered inside the button.\n */\n children?: ReactNode;\n}\n\n/**\n * A versatile button component that supports various styles, sizes, and states.\n */\nexport const LlmButton = forwardRef<HTMLButtonElement, LlmButtonProps>(function LlmButton(\n {\n variant = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n children,\n className,\n ...rest\n },\n ref\n) {\n const isDisabled = disabled || loading;\n const classes = [\n 'llm-button',\n `variant-${variant}`,\n `size-${size}`,\n isDisabled && 'is-disabled',\n loading && 'is-loading',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={isDisabled}\n aria-disabled={isDisabled || undefined}\n {...rest}\n >\n {loading && <span className=\"spinner\" aria-hidden=\"true\" />}\n {children}\n </button>\n );\n});\n"]}
1
+ {"version":3,"file":"llm-button.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/button/llm-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAmC,UAAU,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAoC,SAAS,SAAS,CACvF,EACE,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EACD,GAAG;IAEH,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC;IACvC,MAAM,OAAO,GAAG;QACd,YAAY;QACZ,WAAW,OAAO,EAAE;QACpB,QAAQ,IAAI,EAAE;QACd,UAAU,IAAI,aAAa;QAC3B,OAAO,IAAI,YAAY;QACvB,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,CACL,kBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,UAAU,mBACL,UAAU,IAAI,SAAS,KAClC,IAAI,aAEP,OAAO,IAAI,eAAM,SAAS,EAAC,SAAS,iBAAa,MAAM,GAAG,EAC1D,QAAQ,IACF,CACV,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { ButtonHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport type { LlmButtonSpec } from '../spec';\nimport './llm-button.css';\n\n/**\n * Properties for the LlmButton component.\n */\nexport interface LlmButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, LlmButtonSpec {\n /**\n * The content to be rendered inside the button.\n */\n children?: ReactNode;\n}\n\n/**\n * A versatile button component that supports various styles, sizes, and states.\n */\nexport const LlmButton = forwardRef<HTMLButtonElement, LlmButtonProps>(function LlmButton(\n {\n variant = 'primary',\n size = 'md',\n disabled = false,\n loading = false,\n children,\n className,\n ...rest\n },\n ref\n) {\n const isDisabled = disabled || loading;\n const classes = [\n 'llm-button',\n `variant-${variant}`,\n `size-${size}`,\n isDisabled && 'is-disabled',\n loading && 'is-loading',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={isDisabled}\n aria-disabled={isDisabled || undefined}\n {...rest}\n >\n {loading && <span className=\"spinner\" aria-hidden=\"true\" />}\n {children}\n </button>\n );\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes, ReactNode } from 'react';
2
- import type { LlmCardSpec } from '@atelier-ui/spec';
2
+ import type { LlmCardSpec } from '../spec';
3
3
  import './llm-card.css';
4
4
  /**
5
5
  * Properties for the LlmCard component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-card.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/card/llm-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,YACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,WAAW;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAoB,EACpB,OAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,YAAY,2CASd;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAMA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAMA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAMA"}
1
+ {"version":3,"file":"llm-card.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/card/llm-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,YACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,WAAW;IACb;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAoB,EACpB,OAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,YAAY,2CASd;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAMA;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAMA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAMA"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-card.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/card/llm-card.tsx"],"names":[],"mappings":";AAEA,OAAO,gBAAgB,CAAC;AAsBxB;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EACtB,OAAO,GAAG,UAAU,EACpB,OAAO,GAAG,IAAI,EACd,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACM;IACb,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,WAAW,OAAO,EAAE,EAAE,WAAW,OAAO,EAAE,EAAE,SAAS,CAAC;SAChF,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,CACL,cAAK,SAAS,EAAE,OAAO,KAAM,IAAI,YAC9B,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,cAAK,SAAS,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAM,IAAI,YAC/E,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,cAAK,SAAS,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAM,IAAI,YAChF,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,cAAK,SAAS,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAM,IAAI,YAC/E,QAAQ,GACL,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { LlmCardSpec } from '@atelier-ui/spec';\nimport './llm-card.css';\n\n/**\n * Properties for the LlmCard component.\n */\nexport interface LlmCardProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmCardSpec {\n /**\n * The visual style variant of the card.\n */\n variant?: 'elevated' | 'outlined' | 'flat';\n /**\n * The padding size within the card.\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n /**\n * The content to be rendered inside the card.\n */\n children?: ReactNode;\n}\n\n/**\n * A card component for grouping related content.\n */\nexport function LlmCard({\n variant = 'elevated',\n padding = 'md',\n children,\n className,\n ...rest\n}: LlmCardProps) {\n const classes = ['llm-card', `variant-${variant}`, `padding-${padding}`, className]\n .filter(Boolean)\n .join(' ');\n return (\n <div className={classes} {...rest}>\n {children}\n </div>\n );\n}\n\n/**\n * The header component for an LlmCard.\n */\nexport function LlmCardHeader({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the card header.\n */\n children?: ReactNode;\n}) {\n return (\n <div className={['llm-card-header', className].filter(Boolean).join(' ')} {...rest}>\n {children}\n </div>\n );\n}\n\n/**\n * The main content component for an LlmCard.\n */\nexport function LlmCardContent({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The main content of the card.\n */\n children?: ReactNode;\n}) {\n return (\n <div className={['llm-card-content', className].filter(Boolean).join(' ')} {...rest}>\n {children}\n </div>\n );\n}\n\n/**\n * The footer component for an LlmCard.\n */\nexport function LlmCardFooter({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the card footer.\n */\n children?: ReactNode;\n}) {\n return (\n <div className={['llm-card-footer', className].filter(Boolean).join(' ')} {...rest}>\n {children}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-card.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/card/llm-card.tsx"],"names":[],"mappings":";AAEA,OAAO,gBAAgB,CAAC;AAsBxB;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,EACtB,OAAO,GAAG,UAAU,EACpB,OAAO,GAAG,IAAI,EACd,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACM;IACb,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,WAAW,OAAO,EAAE,EAAE,WAAW,OAAO,EAAE,EAAE,SAAS,CAAC;SAChF,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,CACL,cAAK,SAAS,EAAE,OAAO,KAAM,IAAI,YAC9B,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,cAAK,SAAS,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAM,IAAI,YAC/E,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,cAAK,SAAS,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAM,IAAI,YAChF,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EAMR;IACC,OAAO,CACL,cAAK,SAAS,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAM,IAAI,YAC/E,QAAQ,GACL,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { HTMLAttributes, ReactNode } from 'react';\nimport type { LlmCardSpec } from '../spec';\nimport './llm-card.css';\n\n/**\n * Properties for the LlmCard component.\n */\nexport interface LlmCardProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmCardSpec {\n /**\n * The visual style variant of the card.\n */\n variant?: 'elevated' | 'outlined' | 'flat';\n /**\n * The padding size within the card.\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n /**\n * The content to be rendered inside the card.\n */\n children?: ReactNode;\n}\n\n/**\n * A card component for grouping related content.\n */\nexport function LlmCard({\n variant = 'elevated',\n padding = 'md',\n children,\n className,\n ...rest\n}: LlmCardProps) {\n const classes = ['llm-card', `variant-${variant}`, `padding-${padding}`, className]\n .filter(Boolean)\n .join(' ');\n return (\n <div className={classes} {...rest}>\n {children}\n </div>\n );\n}\n\n/**\n * The header component for an LlmCard.\n */\nexport function LlmCardHeader({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the card header.\n */\n children?: ReactNode;\n}) {\n return (\n <div className={['llm-card-header', className].filter(Boolean).join(' ')} {...rest}>\n {children}\n </div>\n );\n}\n\n/**\n * The main content component for an LlmCard.\n */\nexport function LlmCardContent({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The main content of the card.\n */\n children?: ReactNode;\n}) {\n return (\n <div className={['llm-card-content', className].filter(Boolean).join(' ')} {...rest}>\n {children}\n </div>\n );\n}\n\n/**\n * The footer component for an LlmCard.\n */\nexport function LlmCardFooter({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the card footer.\n */\n children?: ReactNode;\n}) {\n return (\n <div className={['llm-card-footer', className].filter(Boolean).join(' ')} {...rest}>\n {children}\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { InputHTMLAttributes, ReactNode } from 'react';
2
- import type { LlmCheckboxSpec } from '@atelier-ui/spec';
2
+ import type { LlmCheckboxSpec } from '../spec';
3
3
  import './llm-checkbox.css';
4
4
  /**
5
5
  * Properties for the LlmCheckbox component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-checkbox.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/checkbox/llm-checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAA4B,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,IAAI,CACR,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CACvD,EACD,eAAe;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAe,EACf,eAAe,EACf,aAAqB,EACrB,OAAe,EACf,MAAW,EACX,QAAgB,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,EAAE,EACF,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,gBAAgB,2CAsDlB"}
1
+ {"version":3,"file":"llm-checkbox.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/checkbox/llm-checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAA4B,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,IAAI,CACR,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CACvD,EACD,eAAe;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAe,EACf,eAAe,EACf,aAAqB,EACrB,OAAe,EACf,MAAW,EACX,QAAgB,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAgB,EAChB,QAAQ,EACR,SAAS,EACT,EAAE,EACF,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,gBAAgB,2CAsDlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-checkbox.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/checkbox/llm-checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,oBAAoB,CAAC;AAyC5B;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,GAAG,KAAK,EACf,eAAe,EACf,aAAa,GAAG,KAAK,EACrB,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,EAAE,EACX,QAAQ,GAAG,KAAK,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,SAAS,EACT,EAAE,EACF,IAAI,EACJ,GAAG,IAAI,EACU;IACjB,MAAM,QAAQ,GAAG,aAAa,IAAI,YAAY,IAAI,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,EAAE,IAAI,YAAY,WAAW,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,OAAO,SAAS,CAAC;IAEpC,MAAM,OAAO,GAAG;QACd,cAAc;QACd,OAAO,IAAI,YAAY;QACvB,OAAO,IAAI,YAAY;QACvB,QAAQ,IAAI,aAAa;QACzB,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,aACrB,iBAAO,OAAO,EAAE,OAAO,aACrB,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACpD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,kBACJ,OAAO,IAAI,SAAS,mBACnB,QAAQ,IAAI,SAAS,sBAClB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACzD,IAAI,EAAE,IAAI,KACN,IAAI,GACR,EACD,QAAQ,IACH,EACP,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,cAAK,SAAS,EAAC,QAAQ,EAAC,EAAE,EAAE,OAAO,eAAY,QAAQ,YACpD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,YAAW,SAAS,EAAC,eAAe,YACjC,GAAG,IADE,CAAC,CAEL,CACL,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { InputHTMLAttributes, ReactNode, useRef, useEffect, useId } from 'react';\nimport type { LlmCheckboxSpec } from '@atelier-ui/spec';\nimport './llm-checkbox.css';\n\n/**\n * Properties for the LlmCheckbox component.\n */\nexport interface LlmCheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'checked' | 'onChange' | 'readOnly' | 'value'\n >,\n LlmCheckboxSpec {\n /**\n * Whether the checkbox is checked.\n */\n checked?: boolean;\n /**\n * Callback triggered when the checked state changes.\n */\n onCheckedChange?: (checked: boolean) => void;\n /**\n * Whether the checkbox is in an indeterminate state.\n */\n indeterminate?: boolean;\n /**\n * Whether the checkbox is in an invalid state.\n */\n invalid?: boolean;\n /**\n * Array of error messages to display.\n */\n errors?: string[];\n /**\n * Whether the checkbox is read-only.\n */\n readOnly?: boolean;\n /**\n * The content to be rendered as the label for the checkbox.\n */\n children?: ReactNode;\n}\n\n/**\n * A checkbox component for selecting one or more options.\n */\nexport function LlmCheckbox({\n checked = false,\n onCheckedChange,\n indeterminate = false,\n invalid = false,\n errors = [],\n disabled = false,\n readOnly: reactReadOnly,\n readonly: specReadOnly,\n required = false,\n children,\n className,\n id,\n name,\n ...rest\n}: LlmCheckboxProps) {\n const readOnly = reactReadOnly ?? specReadOnly ?? false;\n const inputRef = useRef<HTMLInputElement>(null);\n const generatedId = useId();\n const inputId = id || `checkbox-${generatedId}`;\n const errorId = `${inputId}-errors`;\n\n const classes = [\n 'llm-checkbox',\n checked && 'is-checked',\n invalid && 'is-invalid',\n disabled && 'is-disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <div className={classes}>\n <label htmlFor={inputId}>\n <input\n ref={inputRef}\n type=\"checkbox\"\n id={inputId}\n checked={checked}\n onChange={(e) => onCheckedChange?.(e.target.checked)}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={invalid || undefined}\n aria-required={required || undefined}\n aria-describedby={errors.length > 0 ? errorId : undefined}\n name={name}\n {...rest}\n />\n {children}\n </label>\n {errors.length > 0 && (\n <div className=\"errors\" id={errorId} aria-live=\"polite\">\n {errors.map((err, i) => (\n <p key={i} className=\"error-message\">\n {err}\n </p>\n ))}\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-checkbox.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/checkbox/llm-checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,oBAAoB,CAAC;AAyC5B;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,GAAG,KAAK,EACf,eAAe,EACf,aAAa,GAAG,KAAK,EACrB,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,EAAE,EACX,QAAQ,GAAG,KAAK,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAQ,GAAG,KAAK,EAChB,QAAQ,EACR,SAAS,EACT,EAAE,EACF,IAAI,EACJ,GAAG,IAAI,EACU;IACjB,MAAM,QAAQ,GAAG,aAAa,IAAI,YAAY,IAAI,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,EAAE,IAAI,YAAY,WAAW,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,GAAG,OAAO,SAAS,CAAC;IAEpC,MAAM,OAAO,GAAG;QACd,cAAc;QACd,OAAO,IAAI,YAAY;QACvB,OAAO,IAAI,YAAY;QACvB,QAAQ,IAAI,aAAa;QACzB,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;QACjD,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,CACL,eAAK,SAAS,EAAE,OAAO,aACrB,iBAAO,OAAO,EAAE,OAAO,aACrB,gBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,EACX,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EACpD,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,kBACJ,OAAO,IAAI,SAAS,mBACnB,QAAQ,IAAI,SAAS,sBAClB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EACzD,IAAI,EAAE,IAAI,KACN,IAAI,GACR,EACD,QAAQ,IACH,EACP,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,cAAK,SAAS,EAAC,QAAQ,EAAC,EAAE,EAAE,OAAO,eAAY,QAAQ,YACpD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,YAAW,SAAS,EAAC,eAAe,YACjC,GAAG,IADE,CAAC,CAEL,CACL,CAAC,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { InputHTMLAttributes, ReactNode, useRef, useEffect, useId } from 'react';\nimport type { LlmCheckboxSpec } from '../spec';\nimport './llm-checkbox.css';\n\n/**\n * Properties for the LlmCheckbox component.\n */\nexport interface LlmCheckboxProps\n extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'checked' | 'onChange' | 'readOnly' | 'value'\n >,\n LlmCheckboxSpec {\n /**\n * Whether the checkbox is checked.\n */\n checked?: boolean;\n /**\n * Callback triggered when the checked state changes.\n */\n onCheckedChange?: (checked: boolean) => void;\n /**\n * Whether the checkbox is in an indeterminate state.\n */\n indeterminate?: boolean;\n /**\n * Whether the checkbox is in an invalid state.\n */\n invalid?: boolean;\n /**\n * Array of error messages to display.\n */\n errors?: string[];\n /**\n * Whether the checkbox is read-only.\n */\n readOnly?: boolean;\n /**\n * The content to be rendered as the label for the checkbox.\n */\n children?: ReactNode;\n}\n\n/**\n * A checkbox component for selecting one or more options.\n */\nexport function LlmCheckbox({\n checked = false,\n onCheckedChange,\n indeterminate = false,\n invalid = false,\n errors = [],\n disabled = false,\n readOnly: reactReadOnly,\n readonly: specReadOnly,\n required = false,\n children,\n className,\n id,\n name,\n ...rest\n}: LlmCheckboxProps) {\n const readOnly = reactReadOnly ?? specReadOnly ?? false;\n const inputRef = useRef<HTMLInputElement>(null);\n const generatedId = useId();\n const inputId = id || `checkbox-${generatedId}`;\n const errorId = `${inputId}-errors`;\n\n const classes = [\n 'llm-checkbox',\n checked && 'is-checked',\n invalid && 'is-invalid',\n disabled && 'is-disabled',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n return (\n <div className={classes}>\n <label htmlFor={inputId}>\n <input\n ref={inputRef}\n type=\"checkbox\"\n id={inputId}\n checked={checked}\n onChange={(e) => onCheckedChange?.(e.target.checked)}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={invalid || undefined}\n aria-required={required || undefined}\n aria-describedby={errors.length > 0 ? errorId : undefined}\n name={name}\n {...rest}\n />\n {children}\n </label>\n {errors.length > 0 && (\n <div className=\"errors\" id={errorId} aria-live=\"polite\">\n {errors.map((err, i) => (\n <p key={i} className=\"error-message\">\n {err}\n </p>\n ))}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { LlmComboboxOption, LlmComboboxSpec } from '@atelier-ui/spec';
1
+ import type { LlmComboboxOption, LlmComboboxSpec } from '../spec';
2
2
  import './llm-combobox.css';
3
3
  export type { LlmComboboxOption };
4
4
  export interface LlmComboboxProps extends LlmComboboxSpec {
@@ -1 +1 @@
1
- {"version":3,"file":"llm-combobox.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/combobox/llm-combobox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,oBAAoB,CAAC;AAE5B,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAIlC,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAU,EACV,aAAa,EACb,OAAY,EACZ,WAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,IAAI,EACJ,MAAW,GACZ,EAAE,gBAAgB,2CA8MlB"}
1
+ {"version":3,"file":"llm-combobox.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/combobox/llm-combobox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,oBAAoB,CAAC;AAE5B,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAIlC,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAU,EACV,aAAa,EACb,OAAY,EACZ,WAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,IAAI,EACJ,MAAW,GACZ,EAAE,gBAAgB,2CA8MlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-combobox.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/combobox/llm-combobox.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { LlmComboboxOption, LlmComboboxSpec } from '@atelier-ui/spec';\nimport './llm-combobox.css';\n\nexport type { LlmComboboxOption };\n\nlet nextId = 0;\n\nexport interface LlmComboboxProps extends LlmComboboxSpec {\n value?: string;\n onValueChange?: (value: string) => void;\n errors?: string[];\n}\n\n/**\n * Filterable autocomplete combobox. Accepts an `options` array and emits the\n * selected option's `value`. The user types to narrow the list; selecting an\n * option commits the value and displays its label.\n *\n * Usage:\n * ```tsx\n * <LlmCombobox\n * value={country}\n * onValueChange={setCountry}\n * options={countryOptions}\n * placeholder=\"Search country…\"\n * />\n * ```\n */\nexport function LlmCombobox({\n value = '',\n onValueChange,\n options = [],\n placeholder = '',\n disabled = false,\n readonly = false,\n invalid = false,\n required = false,\n name,\n errors = [],\n}: LlmComboboxProps) {\n const [query, setQuery] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const ids = useRef({ input: `llm-combobox-input-${nextId}`, panel: `llm-combobox-panel-${nextId++}` });\n\n const selectedLabel = useMemo(\n () => options.find((o) => o.value === value)?.label ?? '',\n [options, value],\n );\n\n const filteredOptions = useMemo(() => {\n if (!query) return options;\n const q = query.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(q));\n }, [options, query]);\n\n // Sync display when value changes externally\n useEffect(() => {\n if (!isOpen) {\n setQuery(selectedLabel);\n }\n }, [selectedLabel, isOpen]);\n\n // Outside-click closes panel\n useEffect(() => {\n if (!isOpen) return;\n function handleClick(e: MouseEvent) {\n if (!containerRef.current?.contains(e.target as Node)) {\n setIsOpen(false);\n setQuery(selectedLabel);\n }\n }\n document.addEventListener('click', handleClick);\n return () => document.removeEventListener('click', handleClick);\n }, [isOpen, selectedLabel]);\n\n function open() {\n if (disabled || readonly) return;\n setIsOpen(true);\n setActiveIndex(-1);\n }\n\n function close() {\n setIsOpen(false);\n setActiveIndex(-1);\n }\n\n function selectOption(option: LlmComboboxOption) {\n if (option.disabled || disabled || readonly) return;\n onValueChange?.(option.value);\n setQuery(option.label);\n close();\n inputRef.current?.focus();\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const q = e.target.value;\n setQuery(q);\n setActiveIndex(-1);\n if (q === '') onValueChange?.('');\n if (!isOpen) open();\n }\n\n function handleFocus() {\n open();\n }\n\n function handleBlur() {\n setQuery(selectedLabel);\n }\n\n function handleKeydown(e: React.KeyboardEvent) {\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (!isOpen) { open(); return; }\n setActiveIndex((i) => (i + 1 >= filteredOptions.length ? 0 : i + 1));\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (!isOpen) { open(); return; }\n setActiveIndex((i) => (i - 1 < 0 ? filteredOptions.length - 1 : i - 1));\n break;\n }\n case 'Enter': {\n e.preventDefault();\n if (isOpen && activeIndex >= 0 && activeIndex < filteredOptions.length) {\n selectOption(filteredOptions[activeIndex]);\n }\n break;\n }\n case 'Escape': {\n e.preventDefault();\n setQuery(selectedLabel);\n close();\n break;\n }\n case 'Tab': {\n close();\n break;\n }\n }\n }\n\n const classes = [\n 'llm-combobox',\n isOpen && 'is-open',\n disabled && 'is-disabled',\n invalid && 'is-invalid',\n ]\n .filter(Boolean)\n .join(' ');\n\n const activeOptionId =\n activeIndex >= 0 ? `${ids.current.panel}-option-${activeIndex}` : undefined;\n\n return (\n <div className={classes} ref={containerRef}>\n <div className=\"llm-combobox-wrapper\">\n <input\n ref={inputRef}\n className=\"llm-combobox-input\"\n type=\"text\"\n autoComplete=\"off\"\n role=\"combobox\"\n id={ids.current.input}\n aria-expanded={isOpen}\n aria-controls={ids.current.panel}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeOptionId}\n aria-invalid={invalid || undefined}\n disabled={disabled}\n readOnly={readonly}\n required={required}\n name={name}\n placeholder={placeholder}\n value={query}\n onChange={handleInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeydown}\n />\n <span className=\"llm-combobox-icon\" aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M2 4l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n </div>\n\n {isOpen && (\n <ul\n id={ids.current.panel}\n className=\"llm-combobox-panel\"\n role=\"listbox\"\n aria-labelledby={ids.current.input}\n >\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option, i) => (\n <li\n key={option.value}\n id={`${ids.current.panel}-option-${i}`}\n role=\"option\"\n className={[\n 'llm-combobox-option',\n activeIndex === i && 'is-active',\n option.value === value && 'is-selected',\n option.disabled && 'is-disabled',\n ]\n .filter(Boolean)\n .join(' ')}\n aria-selected={option.value === value}\n aria-disabled={option.disabled || undefined}\n onMouseDown={() => selectOption(option)}\n onMouseEnter={() => setActiveIndex(i)}\n >\n <span>{option.label}</span>\n {option.value === value && (\n <svg className=\"llm-combobox-check\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 7l4 4 6-7\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </li>\n ))\n ) : (\n <li className=\"llm-combobox-no-results\" role=\"option\" aria-selected={false} aria-disabled=\"true\">\n No results found.\n </li>\n )}\n </ul>\n )}\n\n {invalid && errors.length > 0 && (\n <div className=\"llm-combobox-errors\" role=\"alert\" aria-live=\"polite\">\n {errors.map((e, i) => (\n <p key={i} className=\"llm-combobox-error-message\">{e}</p>\n ))}\n </div>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-combobox.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/combobox/llm-combobox.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { LlmComboboxOption, LlmComboboxSpec } from '../spec';\nimport './llm-combobox.css';\n\nexport type { LlmComboboxOption };\n\nlet nextId = 0;\n\nexport interface LlmComboboxProps extends LlmComboboxSpec {\n value?: string;\n onValueChange?: (value: string) => void;\n errors?: string[];\n}\n\n/**\n * Filterable autocomplete combobox. Accepts an `options` array and emits the\n * selected option's `value`. The user types to narrow the list; selecting an\n * option commits the value and displays its label.\n *\n * Usage:\n * ```tsx\n * <LlmCombobox\n * value={country}\n * onValueChange={setCountry}\n * options={countryOptions}\n * placeholder=\"Search country…\"\n * />\n * ```\n */\nexport function LlmCombobox({\n value = '',\n onValueChange,\n options = [],\n placeholder = '',\n disabled = false,\n readonly = false,\n invalid = false,\n required = false,\n name,\n errors = [],\n}: LlmComboboxProps) {\n const [query, setQuery] = useState('');\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const ids = useRef({ input: `llm-combobox-input-${nextId}`, panel: `llm-combobox-panel-${nextId++}` });\n\n const selectedLabel = useMemo(\n () => options.find((o) => o.value === value)?.label ?? '',\n [options, value],\n );\n\n const filteredOptions = useMemo(() => {\n if (!query) return options;\n const q = query.toLowerCase();\n return options.filter((o) => o.label.toLowerCase().includes(q));\n }, [options, query]);\n\n // Sync display when value changes externally\n useEffect(() => {\n if (!isOpen) {\n setQuery(selectedLabel);\n }\n }, [selectedLabel, isOpen]);\n\n // Outside-click closes panel\n useEffect(() => {\n if (!isOpen) return;\n function handleClick(e: MouseEvent) {\n if (!containerRef.current?.contains(e.target as Node)) {\n setIsOpen(false);\n setQuery(selectedLabel);\n }\n }\n document.addEventListener('click', handleClick);\n return () => document.removeEventListener('click', handleClick);\n }, [isOpen, selectedLabel]);\n\n function open() {\n if (disabled || readonly) return;\n setIsOpen(true);\n setActiveIndex(-1);\n }\n\n function close() {\n setIsOpen(false);\n setActiveIndex(-1);\n }\n\n function selectOption(option: LlmComboboxOption) {\n if (option.disabled || disabled || readonly) return;\n onValueChange?.(option.value);\n setQuery(option.label);\n close();\n inputRef.current?.focus();\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const q = e.target.value;\n setQuery(q);\n setActiveIndex(-1);\n if (q === '') onValueChange?.('');\n if (!isOpen) open();\n }\n\n function handleFocus() {\n open();\n }\n\n function handleBlur() {\n setQuery(selectedLabel);\n }\n\n function handleKeydown(e: React.KeyboardEvent) {\n switch (e.key) {\n case 'ArrowDown': {\n e.preventDefault();\n if (!isOpen) { open(); return; }\n setActiveIndex((i) => (i + 1 >= filteredOptions.length ? 0 : i + 1));\n break;\n }\n case 'ArrowUp': {\n e.preventDefault();\n if (!isOpen) { open(); return; }\n setActiveIndex((i) => (i - 1 < 0 ? filteredOptions.length - 1 : i - 1));\n break;\n }\n case 'Enter': {\n e.preventDefault();\n if (isOpen && activeIndex >= 0 && activeIndex < filteredOptions.length) {\n selectOption(filteredOptions[activeIndex]);\n }\n break;\n }\n case 'Escape': {\n e.preventDefault();\n setQuery(selectedLabel);\n close();\n break;\n }\n case 'Tab': {\n close();\n break;\n }\n }\n }\n\n const classes = [\n 'llm-combobox',\n isOpen && 'is-open',\n disabled && 'is-disabled',\n invalid && 'is-invalid',\n ]\n .filter(Boolean)\n .join(' ');\n\n const activeOptionId =\n activeIndex >= 0 ? `${ids.current.panel}-option-${activeIndex}` : undefined;\n\n return (\n <div className={classes} ref={containerRef}>\n <div className=\"llm-combobox-wrapper\">\n <input\n ref={inputRef}\n className=\"llm-combobox-input\"\n type=\"text\"\n autoComplete=\"off\"\n role=\"combobox\"\n id={ids.current.input}\n aria-expanded={isOpen}\n aria-controls={ids.current.panel}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeOptionId}\n aria-invalid={invalid || undefined}\n disabled={disabled}\n readOnly={readonly}\n required={required}\n name={name}\n placeholder={placeholder}\n value={query}\n onChange={handleInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeydown}\n />\n <span className=\"llm-combobox-icon\" aria-hidden=\"true\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n <path d=\"M2 4l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </span>\n </div>\n\n {isOpen && (\n <ul\n id={ids.current.panel}\n className=\"llm-combobox-panel\"\n role=\"listbox\"\n aria-labelledby={ids.current.input}\n >\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option, i) => (\n <li\n key={option.value}\n id={`${ids.current.panel}-option-${i}`}\n role=\"option\"\n className={[\n 'llm-combobox-option',\n activeIndex === i && 'is-active',\n option.value === value && 'is-selected',\n option.disabled && 'is-disabled',\n ]\n .filter(Boolean)\n .join(' ')}\n aria-selected={option.value === value}\n aria-disabled={option.disabled || undefined}\n onMouseDown={() => selectOption(option)}\n onMouseEnter={() => setActiveIndex(i)}\n >\n <span>{option.label}</span>\n {option.value === value && (\n <svg className=\"llm-combobox-check\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 7l4 4 6-7\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </li>\n ))\n ) : (\n <li className=\"llm-combobox-no-results\" role=\"option\" aria-selected={false} aria-disabled=\"true\">\n No results found.\n </li>\n )}\n </ul>\n )}\n\n {invalid && errors.length > 0 && (\n <div className=\"llm-combobox-errors\" role=\"alert\" aria-live=\"polite\">\n {errors.map((e, i) => (\n <p key={i} className=\"llm-combobox-error-message\">{e}</p>\n ))}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode, HTMLAttributes } from 'react';
2
- import type { LlmDialogSpec } from '@atelier-ui/spec';
2
+ import type { LlmDialogSpec } from '../spec';
3
3
  import './llm-dialog.css';
4
4
  /**
5
5
  * Properties for the LlmDialog component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-dialog.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/dialog/llm-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,cAAc,EAEf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAY,EACZ,YAAY,EACZ,eAAsB,EACtB,IAAW,EACX,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,QAAQ,GACT,EAAE,cAAc,2CA2DhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAiCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA"}
1
+ {"version":3,"file":"llm-dialog.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/dialog/llm-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,cAAc,EAEf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAY,EACZ,YAAY,EACZ,eAAsB,EACtB,IAAW,EACX,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,QAAQ,GACT,EAAE,cAAc,2CA2DhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAiCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA"}
@@ -1 +1 @@
1
- {"version":3,"file":"llm-dialog.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/dialog/llm-dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n useEffect,\n useRef,\n useId,\n createContext,\n useContext,\n ReactNode,\n HTMLAttributes,\n MouseEvent,\n} from 'react';\nimport type { LlmDialogSpec } from '@atelier-ui/spec';\nimport './llm-dialog.css';\n\ninterface DialogContextValue {\n headerId: string;\n close: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue>({\n headerId: '',\n close: () => undefined,\n});\n\n/**\n * Properties for the LlmDialog component.\n */\nexport interface LlmDialogProps extends LlmDialogSpec {\n /**\n * Whether the dialog is open.\n */\n open?: boolean;\n /**\n * Callback triggered when the open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Whether to close the dialog when clicking on the backdrop.\n */\n closeOnBackdrop?: boolean;\n /**\n * The size of the dialog.\n */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /**\n * Accessible label for the dialog.\n */\n 'aria-label'?: string;\n /**\n * Accessible label provided by another element.\n */\n 'aria-labelledby'?: string;\n /**\n * The content of the dialog.\n */\n children?: ReactNode;\n}\n\n/**\n * A dialog (modal) component for displaying content on top of the main UI.\n */\nexport function LlmDialog({\n open = false,\n onOpenChange,\n closeOnBackdrop = true,\n size = 'md',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n children,\n}: LlmDialogProps) {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const headerId = useId();\n const triggerElRef = useRef<Element | null>(null);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n if (open) {\n triggerElRef.current = document.activeElement;\n if (!dialog.open) dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n (triggerElRef.current as HTMLElement | null)?.focus();\n triggerElRef.current = null;\n }\n }, [open]);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n const onClose = () => onOpenChange?.(false);\n const onCancel = (e: Event) => {\n e.preventDefault();\n onOpenChange?.(false);\n };\n dialog.addEventListener('close', onClose);\n dialog.addEventListener('cancel', onCancel);\n return () => {\n dialog.removeEventListener('close', onClose);\n dialog.removeEventListener('cancel', onCancel);\n };\n }, [onOpenChange]);\n\n const handleBackdropClick = (e: MouseEvent<HTMLDialogElement>) => {\n if (!closeOnBackdrop) return;\n if (e.target === dialogRef.current) {\n onOpenChange?.(false);\n }\n };\n\n const effectiveAriaLabelledby = ariaLabel ? undefined : (ariaLabelledby ?? headerId);\n\n return (\n <DialogContext.Provider value={{ headerId, close: () => onOpenChange?.(false) }}>\n <dialog\n ref={dialogRef}\n className={`llm-dialog size-${size}${open ? ' is-open' : ''}`}\n aria-label={ariaLabel || undefined}\n aria-labelledby={effectiveAriaLabelledby}\n aria-modal=\"true\"\n onClick={handleBackdropClick}\n >\n <div className=\"panel\" onClick={(e) => e.stopPropagation()}>\n {children}\n </div>\n </dialog>\n </DialogContext.Provider>\n );\n}\n\n/**\n * The header component for an LlmDialog.\n */\nexport function LlmDialogHeader({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the dialog header.\n */\n children?: ReactNode;\n}) {\n const ctx = useContext(DialogContext);\n return (\n <div\n id={ctx.headerId}\n className={['llm-dialog-header', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n <button\n className=\"close-btn\"\n type=\"button\"\n aria-label=\"Close dialog\"\n onClick={ctx.close}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n );\n}\n\n/**\n * The main content component for an LlmDialog.\n */\nexport function LlmDialogContent({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The main content of the dialog.\n */\n children?: ReactNode;\n}) {\n return (\n <div\n className={['llm-dialog-content', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n/**\n * The footer component for an LlmDialog.\n */\nexport function LlmDialogFooter({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the dialog footer.\n */\n children?: ReactNode;\n}) {\n return (\n <div\n className={['llm-dialog-footer', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"llm-dialog.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/dialog/llm-dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n useEffect,\n useRef,\n useId,\n createContext,\n useContext,\n ReactNode,\n HTMLAttributes,\n MouseEvent,\n} from 'react';\nimport type { LlmDialogSpec } from '../spec';\nimport './llm-dialog.css';\n\ninterface DialogContextValue {\n headerId: string;\n close: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue>({\n headerId: '',\n close: () => undefined,\n});\n\n/**\n * Properties for the LlmDialog component.\n */\nexport interface LlmDialogProps extends LlmDialogSpec {\n /**\n * Whether the dialog is open.\n */\n open?: boolean;\n /**\n * Callback triggered when the open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Whether to close the dialog when clicking on the backdrop.\n */\n closeOnBackdrop?: boolean;\n /**\n * The size of the dialog.\n */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /**\n * Accessible label for the dialog.\n */\n 'aria-label'?: string;\n /**\n * Accessible label provided by another element.\n */\n 'aria-labelledby'?: string;\n /**\n * The content of the dialog.\n */\n children?: ReactNode;\n}\n\n/**\n * A dialog (modal) component for displaying content on top of the main UI.\n */\nexport function LlmDialog({\n open = false,\n onOpenChange,\n closeOnBackdrop = true,\n size = 'md',\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n children,\n}: LlmDialogProps) {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const headerId = useId();\n const triggerElRef = useRef<Element | null>(null);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n if (open) {\n triggerElRef.current = document.activeElement;\n if (!dialog.open) dialog.showModal();\n } else {\n if (dialog.open) dialog.close();\n (triggerElRef.current as HTMLElement | null)?.focus();\n triggerElRef.current = null;\n }\n }, [open]);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n const onClose = () => onOpenChange?.(false);\n const onCancel = (e: Event) => {\n e.preventDefault();\n onOpenChange?.(false);\n };\n dialog.addEventListener('close', onClose);\n dialog.addEventListener('cancel', onCancel);\n return () => {\n dialog.removeEventListener('close', onClose);\n dialog.removeEventListener('cancel', onCancel);\n };\n }, [onOpenChange]);\n\n const handleBackdropClick = (e: MouseEvent<HTMLDialogElement>) => {\n if (!closeOnBackdrop) return;\n if (e.target === dialogRef.current) {\n onOpenChange?.(false);\n }\n };\n\n const effectiveAriaLabelledby = ariaLabel ? undefined : (ariaLabelledby ?? headerId);\n\n return (\n <DialogContext.Provider value={{ headerId, close: () => onOpenChange?.(false) }}>\n <dialog\n ref={dialogRef}\n className={`llm-dialog size-${size}${open ? ' is-open' : ''}`}\n aria-label={ariaLabel || undefined}\n aria-labelledby={effectiveAriaLabelledby}\n aria-modal=\"true\"\n onClick={handleBackdropClick}\n >\n <div className=\"panel\" onClick={(e) => e.stopPropagation()}>\n {children}\n </div>\n </dialog>\n </DialogContext.Provider>\n );\n}\n\n/**\n * The header component for an LlmDialog.\n */\nexport function LlmDialogHeader({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the dialog header.\n */\n children?: ReactNode;\n}) {\n const ctx = useContext(DialogContext);\n return (\n <div\n id={ctx.headerId}\n className={['llm-dialog-header', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n <button\n className=\"close-btn\"\n type=\"button\"\n aria-label=\"Close dialog\"\n onClick={ctx.close}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n );\n}\n\n/**\n * The main content component for an LlmDialog.\n */\nexport function LlmDialogContent({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The main content of the dialog.\n */\n children?: ReactNode;\n}) {\n return (\n <div\n className={['llm-dialog-content', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </div>\n );\n}\n\n/**\n * The footer component for an LlmDialog.\n */\nexport function LlmDialogFooter({\n children,\n className,\n ...rest\n}: HTMLAttributes<HTMLDivElement> & {\n /**\n * The content of the dialog footer.\n */\n children?: ReactNode;\n}) {\n return (\n <div\n className={['llm-dialog-footer', className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode, HTMLAttributes } from 'react';
2
- import type { LlmDrawerSpec } from '@atelier-ui/spec';
2
+ import type { LlmDrawerSpec } from '../spec';
3
3
  import './llm-drawer.css';
4
4
  /**
5
5
  * Properties for the LlmDrawer component.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-drawer.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/drawer/llm-drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,cAAc,EAEf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC/C;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACnC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAY,EACZ,YAAY,EACZ,QAAkB,EAClB,IAAW,EACX,eAAsB,EACtB,QAAQ,GACT,EAAE,cAAc,2CAkEhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAiCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA"}
1
+ {"version":3,"file":"llm-drawer.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/drawer/llm-drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACT,cAAc,EAEf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,kBAAkB,CAAC;AAY1B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC/C;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACnC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAY,EACZ,YAAY,EACZ,QAAkB,EAClB,IAAW,EACX,eAAsB,EACtB,QAAQ,GACT,EAAE,cAAc,2CAkEhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CAiCA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,2CASA"}