@atelier-ui/react 0.1.11 → 0.2.0

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 (160) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +3 -3
  3. package/package.json +1 -1
  4. package/src/index.d.ts +29 -29
  5. package/src/index.js +29 -29
  6. package/src/index.js.map +1 -1
  7. package/src/lib/accordion/{llm-accordion.css → atl-accordion.css} +8 -8
  8. package/src/lib/accordion/{llm-accordion.d.ts → atl-accordion.d.ts} +13 -13
  9. package/src/lib/accordion/{llm-accordion.d.ts.map → atl-accordion.d.ts.map} +1 -1
  10. package/src/lib/accordion/{llm-accordion.js → atl-accordion.js} +9 -9
  11. package/src/lib/accordion/{llm-accordion.js.map → atl-accordion.js.map} +1 -1
  12. package/src/lib/alert/{llm-alert.css → atl-alert.css} +10 -10
  13. package/src/lib/alert/{llm-alert.d.ts → atl-alert.d.ts} +8 -8
  14. package/src/lib/alert/{llm-alert.d.ts.map → atl-alert.d.ts.map} +1 -1
  15. package/src/lib/alert/{llm-alert.js → atl-alert.js} +4 -4
  16. package/src/lib/alert/{llm-alert.js.map → atl-alert.js.map} +1 -1
  17. package/src/lib/avatar/{llm-avatar.css → atl-avatar.css} +20 -20
  18. package/src/lib/avatar/{llm-avatar.d.ts → atl-avatar.d.ts} +10 -10
  19. package/src/lib/avatar/{llm-avatar.d.ts.map → atl-avatar.d.ts.map} +1 -1
  20. package/src/lib/avatar/{llm-avatar.js → atl-avatar.js} +6 -6
  21. package/src/lib/avatar/{llm-avatar.js.map → atl-avatar.js.map} +1 -1
  22. package/src/lib/badge/{llm-badge.css → atl-badge.css} +9 -9
  23. package/src/lib/badge/atl-badge.d.ts +27 -0
  24. package/src/lib/badge/{llm-badge.d.ts.map → atl-badge.d.ts.map} +1 -1
  25. package/src/lib/badge/{llm-badge.js → atl-badge.js} +4 -4
  26. package/src/lib/badge/{llm-badge.js.map → atl-badge.js.map} +1 -1
  27. package/src/lib/breadcrumbs/{llm-breadcrumbs.css → atl-breadcrumbs.css} +11 -11
  28. package/src/lib/breadcrumbs/atl-breadcrumbs.d.ts +38 -0
  29. package/src/lib/breadcrumbs/{llm-breadcrumbs.d.ts.map → atl-breadcrumbs.d.ts.map} +1 -1
  30. package/src/lib/breadcrumbs/{llm-breadcrumbs.js → atl-breadcrumbs.js} +7 -7
  31. package/src/lib/breadcrumbs/{llm-breadcrumbs.js.map → atl-breadcrumbs.js.map} +1 -1
  32. package/src/lib/button/{llm-button.css → atl-button.css} +20 -20
  33. package/src/lib/button/{llm-button.d.ts → atl-button.d.ts} +7 -7
  34. package/src/lib/button/{llm-button.d.ts.map → atl-button.d.ts.map} +1 -1
  35. package/src/lib/button/{llm-button.js → atl-button.js} +4 -4
  36. package/src/lib/button/{llm-button.js.map → atl-button.js.map} +1 -1
  37. package/src/lib/card/{llm-card.css → atl-card.css} +20 -20
  38. package/src/lib/card/{llm-card.d.ts → atl-card.d.ts} +16 -16
  39. package/src/lib/card/{llm-card.d.ts.map → atl-card.d.ts.map} +1 -1
  40. package/src/lib/card/atl-card.js +30 -0
  41. package/src/lib/card/{llm-card.js.map → atl-card.js.map} +1 -1
  42. package/src/lib/chat/{llm-chat.css → atl-chat.css} +55 -55
  43. package/src/lib/chat/{llm-chat.d.ts → atl-chat.d.ts} +26 -26
  44. package/src/lib/chat/{llm-chat.d.ts.map → atl-chat.d.ts.map} +1 -1
  45. package/src/lib/chat/{llm-chat.js → atl-chat.js} +21 -21
  46. package/src/lib/chat/{llm-chat.js.map → atl-chat.js.map} +1 -1
  47. package/src/lib/checkbox/{llm-checkbox.css → atl-checkbox.css} +19 -19
  48. package/src/lib/checkbox/{llm-checkbox.d.ts → atl-checkbox.d.ts} +6 -6
  49. package/src/lib/checkbox/{llm-checkbox.d.ts.map → atl-checkbox.d.ts.map} +1 -1
  50. package/src/lib/checkbox/{llm-checkbox.js → atl-checkbox.js} +4 -4
  51. package/src/lib/checkbox/{llm-checkbox.js.map → atl-checkbox.js.map} +1 -1
  52. package/src/lib/code-block/{llm-code-block.css → atl-code-block.css} +2 -2
  53. package/src/lib/code-block/{llm-code-block.d.ts → atl-code-block.d.ts} +4 -4
  54. package/src/lib/code-block/{llm-code-block.d.ts.map → atl-code-block.d.ts.map} +1 -1
  55. package/src/lib/code-block/{llm-code-block.js → atl-code-block.js} +4 -4
  56. package/src/lib/code-block/{llm-code-block.js.map → atl-code-block.js.map} +1 -1
  57. package/src/lib/combobox/{llm-combobox.css → atl-combobox.css} +24 -24
  58. package/src/lib/combobox/{llm-combobox.d.ts → atl-combobox.d.ts} +7 -7
  59. package/src/lib/combobox/{llm-combobox.d.ts.map → atl-combobox.d.ts.map} +1 -1
  60. package/src/lib/combobox/{llm-combobox.js → atl-combobox.js} +8 -8
  61. package/src/lib/combobox/{llm-combobox.js.map → atl-combobox.js.map} +1 -1
  62. package/src/lib/dialog/{llm-dialog.css → atl-dialog.css} +18 -18
  63. package/src/lib/dialog/{llm-dialog.d.ts → atl-dialog.d.ts} +15 -15
  64. package/src/lib/dialog/{llm-dialog.d.ts.map → atl-dialog.d.ts.map} +1 -1
  65. package/src/lib/dialog/{llm-dialog.js → atl-dialog.js} +13 -13
  66. package/src/lib/dialog/{llm-dialog.js.map → atl-dialog.js.map} +1 -1
  67. package/src/lib/drawer/{llm-drawer.css → atl-drawer.css} +35 -35
  68. package/src/lib/drawer/{llm-drawer.d.ts → atl-drawer.d.ts} +15 -15
  69. package/src/lib/drawer/{llm-drawer.d.ts.map → atl-drawer.d.ts.map} +1 -1
  70. package/src/lib/drawer/{llm-drawer.js → atl-drawer.js} +13 -13
  71. package/src/lib/drawer/{llm-drawer.js.map → atl-drawer.js.map} +1 -1
  72. package/src/lib/icon/{llm-icon.css → atl-icon.css} +4 -4
  73. package/src/lib/icon/atl-icon.d.ts +24 -0
  74. package/src/lib/icon/{llm-icon.d.ts.map → atl-icon.d.ts.map} +1 -1
  75. package/src/lib/icon/{llm-icon.js → atl-icon.js} +5 -5
  76. package/src/lib/icon/{llm-icon.js.map → atl-icon.js.map} +1 -1
  77. package/src/lib/input/{llm-input.css → atl-input.css} +14 -14
  78. package/src/lib/input/{llm-input.d.ts → atl-input.d.ts} +6 -6
  79. package/src/lib/input/{llm-input.d.ts.map → atl-input.d.ts.map} +1 -1
  80. package/src/lib/input/{llm-input.js → atl-input.js} +4 -4
  81. package/src/lib/input/{llm-input.js.map → atl-input.js.map} +1 -1
  82. package/src/lib/menu/{llm-menu.css → atl-menu.css} +11 -11
  83. package/src/lib/menu/{llm-menu.d.ts → atl-menu.d.ts} +13 -13
  84. package/src/lib/menu/{llm-menu.d.ts.map → atl-menu.d.ts.map} +1 -1
  85. package/src/lib/menu/{llm-menu.js → atl-menu.js} +10 -10
  86. package/src/lib/menu/{llm-menu.js.map → atl-menu.js.map} +1 -1
  87. package/src/lib/pagination/{llm-pagination.css → atl-pagination.css} +1 -1
  88. package/src/lib/pagination/{llm-pagination.d.ts → atl-pagination.d.ts} +6 -6
  89. package/src/lib/pagination/{llm-pagination.d.ts.map → atl-pagination.d.ts.map} +1 -1
  90. package/src/lib/pagination/{llm-pagination.js → atl-pagination.js} +4 -4
  91. package/src/lib/pagination/{llm-pagination.js.map → atl-pagination.js.map} +1 -1
  92. package/src/lib/progress/{llm-progress.css → atl-progress.css} +9 -9
  93. package/src/lib/progress/{llm-progress.d.ts → atl-progress.d.ts} +6 -6
  94. package/src/lib/progress/{llm-progress.d.ts.map → atl-progress.d.ts.map} +1 -1
  95. package/src/lib/progress/{llm-progress.js → atl-progress.js} +4 -4
  96. package/src/lib/progress/{llm-progress.js.map → atl-progress.js.map} +1 -1
  97. package/src/lib/radio/{llm-radio.css → atl-radio.css} +11 -11
  98. package/src/lib/radio/{llm-radio.d.ts → atl-radio.d.ts} +7 -7
  99. package/src/lib/radio/{llm-radio.d.ts.map → atl-radio.d.ts.map} +1 -1
  100. package/src/lib/radio/{llm-radio.js → atl-radio.js} +6 -6
  101. package/src/lib/radio/{llm-radio.js.map → atl-radio.js.map} +1 -1
  102. package/src/lib/radio-group/{llm-radio-group.css → atl-radio-group.css} +6 -6
  103. package/src/lib/radio-group/{llm-radio-group.d.ts → atl-radio-group.d.ts} +6 -6
  104. package/src/lib/radio-group/{llm-radio-group.d.ts.map → atl-radio-group.d.ts.map} +1 -1
  105. package/src/lib/radio-group/{llm-radio-group.js → atl-radio-group.js} +4 -4
  106. package/src/lib/radio-group/{llm-radio-group.js.map → atl-radio-group.js.map} +1 -1
  107. package/src/lib/select/{llm-select.css → atl-select.css} +11 -11
  108. package/src/lib/select/{llm-select.d.ts → atl-select.d.ts} +10 -10
  109. package/src/lib/select/{llm-select.d.ts.map → atl-select.d.ts.map} +1 -1
  110. package/src/lib/select/{llm-select.js → atl-select.js} +6 -6
  111. package/src/lib/select/{llm-select.js.map → atl-select.js.map} +1 -1
  112. package/src/lib/skeleton/{llm-skeleton.css → atl-skeleton.css} +6 -6
  113. package/src/lib/skeleton/{llm-skeleton.d.ts → atl-skeleton.d.ts} +6 -6
  114. package/src/lib/skeleton/{llm-skeleton.d.ts.map → atl-skeleton.d.ts.map} +1 -1
  115. package/src/lib/skeleton/{llm-skeleton.js → atl-skeleton.js} +4 -4
  116. package/src/lib/skeleton/{llm-skeleton.js.map → atl-skeleton.js.map} +1 -1
  117. package/src/lib/spec.d.ts +120 -120
  118. package/src/lib/spec.js.map +1 -1
  119. package/src/lib/stepper/{llm-stepper.css → atl-stepper.css} +5 -5
  120. package/src/lib/stepper/{llm-stepper.d.ts → atl-stepper.d.ts} +9 -9
  121. package/src/lib/stepper/{llm-stepper.d.ts.map → atl-stepper.d.ts.map} +1 -1
  122. package/src/lib/stepper/{llm-stepper.js → atl-stepper.js} +11 -11
  123. package/src/lib/stepper/{llm-stepper.js.map → atl-stepper.js.map} +1 -1
  124. package/src/lib/table/{llm-table.css → atl-table.css} +30 -30
  125. package/src/lib/table/atl-table.d.ts +40 -0
  126. package/src/lib/table/{llm-table.d.ts.map → atl-table.d.ts.map} +1 -1
  127. package/src/lib/table/{llm-table.js → atl-table.js} +14 -14
  128. package/src/lib/table/{llm-table.js.map → atl-table.js.map} +1 -1
  129. package/src/lib/tabs/{llm-tabs.css → atl-tabs.css} +17 -17
  130. package/src/lib/tabs/{llm-tabs.d.ts → atl-tabs.d.ts} +12 -12
  131. package/src/lib/tabs/{llm-tabs.d.ts.map → atl-tabs.d.ts.map} +1 -1
  132. package/src/lib/tabs/{llm-tabs.js → atl-tabs.js} +11 -11
  133. package/src/lib/tabs/{llm-tabs.js.map → atl-tabs.js.map} +1 -1
  134. package/src/lib/textarea/{llm-textarea.css → atl-textarea.css} +15 -15
  135. package/src/lib/textarea/{llm-textarea.d.ts → atl-textarea.d.ts} +6 -6
  136. package/src/lib/textarea/{llm-textarea.d.ts.map → atl-textarea.d.ts.map} +1 -1
  137. package/src/lib/textarea/{llm-textarea.js → atl-textarea.js} +4 -4
  138. package/src/lib/textarea/{llm-textarea.js.map → atl-textarea.js.map} +1 -1
  139. package/src/lib/toast/{llm-toast.css → atl-toast.css} +16 -16
  140. package/src/lib/toast/atl-toast.d.ts +54 -0
  141. package/src/lib/toast/{llm-toast.d.ts.map → atl-toast.d.ts.map} +1 -1
  142. package/src/lib/toast/{llm-toast.js → atl-toast.js} +12 -12
  143. package/src/lib/toast/{llm-toast.js.map → atl-toast.js.map} +1 -1
  144. package/src/lib/toggle/{llm-toggle.css → atl-toggle.css} +16 -16
  145. package/src/lib/toggle/{llm-toggle.d.ts → atl-toggle.d.ts} +6 -6
  146. package/src/lib/toggle/{llm-toggle.d.ts.map → atl-toggle.d.ts.map} +1 -1
  147. package/src/lib/toggle/{llm-toggle.js → atl-toggle.js} +4 -4
  148. package/src/lib/toggle/{llm-toggle.js.map → atl-toggle.js.map} +1 -1
  149. package/src/lib/tooltip/{llm-tooltip.css → atl-tooltip.css} +12 -12
  150. package/src/lib/tooltip/atl-tooltip.d.ts +17 -0
  151. package/src/lib/tooltip/{llm-tooltip.d.ts.map → atl-tooltip.d.ts.map} +1 -1
  152. package/src/lib/tooltip/{llm-tooltip.js → atl-tooltip.js} +7 -7
  153. package/src/lib/tooltip/{llm-tooltip.js.map → atl-tooltip.js.map} +1 -1
  154. package/src/lib/badge/llm-badge.d.ts +0 -27
  155. package/src/lib/breadcrumbs/llm-breadcrumbs.d.ts +0 -38
  156. package/src/lib/card/llm-card.js +0 -30
  157. package/src/lib/icon/llm-icon.d.ts +0 -24
  158. package/src/lib/table/llm-table.d.ts +0 -40
  159. package/src/lib/toast/llm-toast.d.ts +0 -54
  160. package/src/lib/tooltip/llm-tooltip.d.ts +0 -17
@@ -1,10 +1,10 @@
1
1
  import { ReactNode, HTMLAttributes } from 'react';
2
- import type { LlmTabGroupSpec, LlmTabSpec } from '../spec';
3
- import './llm-tabs.css';
2
+ import type { AtlTabGroupSpec, AtlTabSpec } from '../spec';
3
+ import './atl-tabs.css';
4
4
  /**
5
- * Properties for the LlmTabGroup component.
5
+ * Properties for the AtlTabGroup component.
6
6
  */
7
- export interface LlmTabGroupProps extends HTMLAttributes<HTMLDivElement>, LlmTabGroupSpec {
7
+ export interface AtlTabGroupProps extends HTMLAttributes<HTMLDivElement>, AtlTabGroupSpec {
8
8
  /**
9
9
  * The index of the currently selected tab.
10
10
  */
@@ -18,18 +18,18 @@ export interface LlmTabGroupProps extends HTMLAttributes<HTMLDivElement>, LlmTab
18
18
  */
19
19
  variant?: 'default' | 'pills';
20
20
  /**
21
- * The LlmTab components to be rendered.
21
+ * The AtlTab components to be rendered.
22
22
  */
23
23
  children?: ReactNode;
24
24
  }
25
25
  /**
26
26
  * A component for organizing content into multiple tabs.
27
27
  */
28
- export declare function LlmTabGroup({ selectedIndex: externalIndex, onSelectedIndexChange, variant, children, className, ...rest }: LlmTabGroupProps): import("react/jsx-runtime").JSX.Element;
28
+ export declare function AtlTabGroup({ selectedIndex: externalIndex, onSelectedIndexChange, variant, children, className, ...rest }: AtlTabGroupProps): import("react").JSX.Element;
29
29
  /**
30
- * Properties for the LlmTab component.
30
+ * Properties for the AtlTab component.
31
31
  */
32
- export interface LlmTabProps extends LlmTabSpec {
32
+ export interface AtlTabProps extends AtlTabSpec {
33
33
  /**
34
34
  * The label to display on the tab button.
35
35
  */
@@ -44,10 +44,10 @@ export interface LlmTabProps extends LlmTabSpec {
44
44
  children?: ReactNode;
45
45
  }
46
46
  /**
47
- * An individual tab component for use within LlmTabGroup.
47
+ * An individual tab component for use within AtlTabGroup.
48
48
  */
49
- export declare function LlmTab({ children }: LlmTabProps): ReactNode;
50
- export declare namespace LlmTab {
49
+ export declare function AtlTab({ children }: AtlTabProps): ReactNode;
50
+ export declare namespace AtlTab {
51
51
  var displayName: string;
52
52
  }
53
- //# sourceMappingURL=llm-tabs.d.ts.map
53
+ //# sourceMappingURL=atl-tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-tabs.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/tabs/llm-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,cAAc,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AACjB,OAAO,gBAAgB,CAAC;AAqBxB;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,eAAe;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EACrB,OAAmB,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,gBAAgB,2CA4GlB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,aAE/C;yBAFe,MAAM"}
1
+ {"version":3,"file":"atl-tabs.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/tabs/atl-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,cAAc,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AACjB,OAAO,gBAAgB,CAAC;AAqBxB;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,cAAc,CAAC,cAAc,CAAC,EACpC,eAAe;IACjB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EACrB,OAAmB,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,gBAAgB,+BA4GlB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,aAE/C;yBAFe,MAAM"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createContext, useState, useRef, Children, isValidElement, } from 'react';
3
- import './llm-tabs.css';
3
+ import './atl-tabs.css';
4
4
  const TabGroupContext = createContext({
5
5
  selectedIndex: 0,
6
6
  setSelectedIndex: () => undefined,
@@ -10,7 +10,7 @@ const TabGroupContext = createContext({
10
10
  /**
11
11
  * A component for organizing content into multiple tabs.
12
12
  */
13
- export function LlmTabGroup({ selectedIndex: externalIndex, onSelectedIndexChange, variant = 'default', children, className, ...rest }) {
13
+ export function AtlTabGroup({ selectedIndex: externalIndex, onSelectedIndexChange, variant = 'default', children, className, ...rest }) {
14
14
  const [internalIndex, setInternalIndex] = useState(0);
15
15
  const isControlled = externalIndex !== undefined;
16
16
  const selectedIndex = isControlled ? externalIndex : internalIndex;
@@ -23,7 +23,7 @@ export function LlmTabGroup({ selectedIndex: externalIndex, onSelectedIndexChang
23
23
  const childArray = Children.toArray(children);
24
24
  const tabs = childArray
25
25
  .filter((child) => isValidElement(child) &&
26
- child.type.displayName === 'LlmTab')
26
+ child.type.displayName === 'AtlTab')
27
27
  .map((child) => {
28
28
  const element = child;
29
29
  return {
@@ -31,7 +31,7 @@ export function LlmTabGroup({ selectedIndex: externalIndex, onSelectedIndexChang
31
31
  disabled: element.props.disabled ?? false,
32
32
  };
33
33
  });
34
- const classes = ['llm-tab-group', `variant-${variant}`, className]
34
+ const classes = ['atl-tab-group', `variant-${variant}`, className]
35
35
  .filter(Boolean)
36
36
  .join(' ');
37
37
  const handleKeyDown = (e) => {
@@ -60,22 +60,22 @@ export function LlmTabGroup({ selectedIndex: externalIndex, onSelectedIndexChang
60
60
  buttons?.[nextIndex]?.focus();
61
61
  };
62
62
  const panels = childArray.filter((child) => isValidElement(child) &&
63
- child.type.displayName === 'LlmTab');
64
- return (_jsx(TabGroupContext.Provider, { value: { selectedIndex, setSelectedIndex: setIndex, variant, tabs }, children: _jsxs("div", { className: classes, ...rest, children: [_jsx("div", { className: "tablist", role: "tablist", ref: tabListRef, children: tabs.map((tab, i) => (_jsx("button", { type: "button", role: "tab", id: `llm-tab-${i}`, "aria-selected": i === selectedIndex, "aria-controls": `llm-tab-panel-${i}`, "aria-disabled": tab.disabled || undefined, tabIndex: i === selectedIndex ? 0 : -1, className: [
63
+ child.type.displayName === 'AtlTab');
64
+ return (_jsx(TabGroupContext.Provider, { value: { selectedIndex, setSelectedIndex: setIndex, variant, tabs }, children: _jsxs("div", { className: classes, ...rest, children: [_jsx("div", { className: "tablist", role: "tablist", ref: tabListRef, children: tabs.map((tab, i) => (_jsx("button", { type: "button", role: "tab", id: `atl-tab-${i}`, "aria-selected": i === selectedIndex, "aria-controls": `atl-tab-panel-${i}`, "aria-disabled": tab.disabled || undefined, tabIndex: i === selectedIndex ? 0 : -1, className: [
65
65
  i === selectedIndex && 'is-active',
66
66
  tab.disabled && 'is-disabled',
67
67
  ]
68
68
  .filter(Boolean)
69
69
  .join(' ') || undefined, disabled: tab.disabled, onClick: () => !tab.disabled && setIndex(i), onKeyDown: handleKeyDown, children: tab.label }, i))) }), panels.map((panel, i) => {
70
70
  const element = panel;
71
- return (_jsx("div", { id: `llm-tab-panel-${i}`, role: "tabpanel", "aria-labelledby": `llm-tab-${i}`, tabIndex: 0, hidden: i !== selectedIndex, children: element.props.children }, i));
71
+ return (_jsx("div", { id: `atl-tab-panel-${i}`, role: "tabpanel", "aria-labelledby": `atl-tab-${i}`, tabIndex: 0, hidden: i !== selectedIndex, children: element.props.children }, i));
72
72
  })] }) }));
73
73
  }
74
74
  /**
75
- * An individual tab component for use within LlmTabGroup.
75
+ * An individual tab component for use within AtlTabGroup.
76
76
  */
77
- export function LlmTab({ children }) {
77
+ export function AtlTab({ children }) {
78
78
  return children;
79
79
  }
80
- LlmTab.displayName = 'LlmTab';
81
- //# sourceMappingURL=llm-tabs.js.map
80
+ AtlTab.displayName = 'AtlTab';
81
+ //# sourceMappingURL=atl-tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-tabs.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/tabs/llm-tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useState,\n useRef,\n ReactNode,\n HTMLAttributes,\n KeyboardEvent,\n Children,\n isValidElement,\n ReactElement,\n} from 'react';\nimport type {\n LlmTabGroupSpec,\n LlmTabSpec,\n} from '../spec';\nimport './llm-tabs.css';\n\ninterface TabInfo {\n label: string;\n disabled: boolean;\n}\n\ninterface TabGroupContextValue {\n selectedIndex: number;\n setSelectedIndex: (index: number) => void;\n variant: 'default' | 'pills';\n tabs: TabInfo[];\n}\n\nconst TabGroupContext = createContext<TabGroupContextValue>({\n selectedIndex: 0,\n setSelectedIndex: () => undefined,\n variant: 'default',\n tabs: [],\n});\n\n/**\n * Properties for the LlmTabGroup component.\n */\nexport interface LlmTabGroupProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmTabGroupSpec {\n /**\n * The index of the currently selected tab.\n */\n selectedIndex?: number;\n /**\n * Callback triggered when the selected tab index changes.\n */\n onSelectedIndexChange?: (index: number) => void;\n /**\n * The visual style variant of the tabs.\n */\n variant?: 'default' | 'pills';\n /**\n * The LlmTab components to be rendered.\n */\n children?: ReactNode;\n}\n\n/**\n * A component for organizing content into multiple tabs.\n */\nexport function LlmTabGroup({\n selectedIndex: externalIndex,\n onSelectedIndexChange,\n variant = 'default',\n children,\n className,\n ...rest\n}: LlmTabGroupProps) {\n const [internalIndex, setInternalIndex] = useState(0);\n const isControlled = externalIndex !== undefined;\n const selectedIndex = isControlled ? externalIndex : internalIndex;\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const setIndex = (i: number) => {\n if (!isControlled) setInternalIndex(i);\n onSelectedIndexChange?.(i);\n };\n\n const childArray = Children.toArray(children);\n const tabs: TabInfo[] = childArray\n .filter(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName === 'LlmTab'\n )\n .map((child) => {\n const element = child as ReactElement<LlmTabProps>;\n return {\n label: element.props.label ?? '',\n disabled: element.props.disabled ?? false,\n };\n });\n\n const classes = ['llm-tab-group', `variant-${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n const enabledIndices = tabs\n .map((t, i) => (!t.disabled ? i : -1))\n .filter((i) => i >= 0);\n if (enabledIndices.length === 0) return;\n\n const currentEnabled = enabledIndices.indexOf(selectedIndex);\n let nextPos = currentEnabled;\n\n if (e.key === 'ArrowRight')\n nextPos = (currentEnabled + 1) % enabledIndices.length;\n else if (e.key === 'ArrowLeft')\n nextPos =\n (currentEnabled - 1 + enabledIndices.length) % enabledIndices.length;\n else if (e.key === 'Home') nextPos = 0;\n else if (e.key === 'End') nextPos = enabledIndices.length - 1;\n else return;\n\n e.preventDefault();\n const nextIndex = enabledIndices[nextPos];\n setIndex(nextIndex);\n const buttons =\n tabListRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]');\n buttons?.[nextIndex]?.focus();\n };\n\n const panels = childArray.filter(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName === 'LlmTab'\n );\n\n return (\n <TabGroupContext.Provider value={{ selectedIndex, setSelectedIndex: setIndex, variant, tabs }}>\n <div className={classes} {...rest}>\n <div className=\"tablist\" role=\"tablist\" ref={tabListRef}>\n {tabs.map((tab, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n id={`llm-tab-${i}`}\n aria-selected={i === selectedIndex}\n aria-controls={`llm-tab-panel-${i}`}\n aria-disabled={tab.disabled || undefined}\n tabIndex={i === selectedIndex ? 0 : -1}\n className={[\n i === selectedIndex && 'is-active',\n tab.disabled && 'is-disabled',\n ]\n .filter(Boolean)\n .join(' ') || undefined}\n disabled={tab.disabled}\n onClick={() => !tab.disabled && setIndex(i)}\n onKeyDown={handleKeyDown}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {panels.map((panel, i) => {\n const element = panel as ReactElement<LlmTabProps>;\n return (\n <div\n key={i}\n id={`llm-tab-panel-${i}`}\n role=\"tabpanel\"\n aria-labelledby={`llm-tab-${i}`}\n tabIndex={0}\n hidden={i !== selectedIndex}\n >\n {element.props.children}\n </div>\n );\n })}\n </div>\n </TabGroupContext.Provider>\n );\n}\n\n/**\n * Properties for the LlmTab component.\n */\nexport interface LlmTabProps extends LlmTabSpec {\n /**\n * The label to display on the tab button.\n */\n label: string;\n /**\n * Whether the tab is disabled.\n */\n disabled?: boolean;\n /**\n * The content to be rendered when the tab is selected.\n */\n children?: ReactNode;\n}\n\n/**\n * An individual tab component for use within LlmTabGroup.\n */\nexport function LlmTab({ children }: LlmTabProps) {\n return children;\n}\nLlmTab.displayName = 'LlmTab';\n"]}
1
+ {"version":3,"file":"atl-tabs.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/tabs/atl-tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useState,\n useRef,\n ReactNode,\n HTMLAttributes,\n KeyboardEvent,\n Children,\n isValidElement,\n ReactElement,\n} from 'react';\nimport type {\n AtlTabGroupSpec,\n AtlTabSpec,\n} from '../spec';\nimport './atl-tabs.css';\n\ninterface TabInfo {\n label: string;\n disabled: boolean;\n}\n\ninterface TabGroupContextValue {\n selectedIndex: number;\n setSelectedIndex: (index: number) => void;\n variant: 'default' | 'pills';\n tabs: TabInfo[];\n}\n\nconst TabGroupContext = createContext<TabGroupContextValue>({\n selectedIndex: 0,\n setSelectedIndex: () => undefined,\n variant: 'default',\n tabs: [],\n});\n\n/**\n * Properties for the AtlTabGroup component.\n */\nexport interface AtlTabGroupProps\n extends HTMLAttributes<HTMLDivElement>,\n AtlTabGroupSpec {\n /**\n * The index of the currently selected tab.\n */\n selectedIndex?: number;\n /**\n * Callback triggered when the selected tab index changes.\n */\n onSelectedIndexChange?: (index: number) => void;\n /**\n * The visual style variant of the tabs.\n */\n variant?: 'default' | 'pills';\n /**\n * The AtlTab components to be rendered.\n */\n children?: ReactNode;\n}\n\n/**\n * A component for organizing content into multiple tabs.\n */\nexport function AtlTabGroup({\n selectedIndex: externalIndex,\n onSelectedIndexChange,\n variant = 'default',\n children,\n className,\n ...rest\n}: AtlTabGroupProps) {\n const [internalIndex, setInternalIndex] = useState(0);\n const isControlled = externalIndex !== undefined;\n const selectedIndex = isControlled ? externalIndex : internalIndex;\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const setIndex = (i: number) => {\n if (!isControlled) setInternalIndex(i);\n onSelectedIndexChange?.(i);\n };\n\n const childArray = Children.toArray(children);\n const tabs: TabInfo[] = childArray\n .filter(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName === 'AtlTab'\n )\n .map((child) => {\n const element = child as ReactElement<AtlTabProps>;\n return {\n label: element.props.label ?? '',\n disabled: element.props.disabled ?? false,\n };\n });\n\n const classes = ['atl-tab-group', `variant-${variant}`, className]\n .filter(Boolean)\n .join(' ');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n const enabledIndices = tabs\n .map((t, i) => (!t.disabled ? i : -1))\n .filter((i) => i >= 0);\n if (enabledIndices.length === 0) return;\n\n const currentEnabled = enabledIndices.indexOf(selectedIndex);\n let nextPos = currentEnabled;\n\n if (e.key === 'ArrowRight')\n nextPos = (currentEnabled + 1) % enabledIndices.length;\n else if (e.key === 'ArrowLeft')\n nextPos =\n (currentEnabled - 1 + enabledIndices.length) % enabledIndices.length;\n else if (e.key === 'Home') nextPos = 0;\n else if (e.key === 'End') nextPos = enabledIndices.length - 1;\n else return;\n\n e.preventDefault();\n const nextIndex = enabledIndices[nextPos];\n setIndex(nextIndex);\n const buttons =\n tabListRef.current?.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]');\n buttons?.[nextIndex]?.focus();\n };\n\n const panels = childArray.filter(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName === 'AtlTab'\n );\n\n return (\n <TabGroupContext.Provider value={{ selectedIndex, setSelectedIndex: setIndex, variant, tabs }}>\n <div className={classes} {...rest}>\n <div className=\"tablist\" role=\"tablist\" ref={tabListRef}>\n {tabs.map((tab, i) => (\n <button\n key={i}\n type=\"button\"\n role=\"tab\"\n id={`atl-tab-${i}`}\n aria-selected={i === selectedIndex}\n aria-controls={`atl-tab-panel-${i}`}\n aria-disabled={tab.disabled || undefined}\n tabIndex={i === selectedIndex ? 0 : -1}\n className={[\n i === selectedIndex && 'is-active',\n tab.disabled && 'is-disabled',\n ]\n .filter(Boolean)\n .join(' ') || undefined}\n disabled={tab.disabled}\n onClick={() => !tab.disabled && setIndex(i)}\n onKeyDown={handleKeyDown}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {panels.map((panel, i) => {\n const element = panel as ReactElement<AtlTabProps>;\n return (\n <div\n key={i}\n id={`atl-tab-panel-${i}`}\n role=\"tabpanel\"\n aria-labelledby={`atl-tab-${i}`}\n tabIndex={0}\n hidden={i !== selectedIndex}\n >\n {element.props.children}\n </div>\n );\n })}\n </div>\n </TabGroupContext.Provider>\n );\n}\n\n/**\n * Properties for the AtlTab component.\n */\nexport interface AtlTabProps extends AtlTabSpec {\n /**\n * The label to display on the tab button.\n */\n label: string;\n /**\n * Whether the tab is disabled.\n */\n disabled?: boolean;\n /**\n * The content to be rendered when the tab is selected.\n */\n children?: ReactNode;\n}\n\n/**\n * An individual tab component for use within AtlTabGroup.\n */\nexport function AtlTab({ children }: AtlTabProps) {\n return children;\n}\nAtlTab.displayName = 'AtlTab';\n"]}
@@ -1,10 +1,10 @@
1
- .llm-textarea {
1
+ .atl-textarea {
2
2
  display: block;
3
3
  font-family: var(--ui-font-family);
4
4
  font-size: var(--ui-font-size-md);
5
5
  }
6
6
 
7
- .llm-textarea textarea {
7
+ .atl-textarea textarea {
8
8
  display: block;
9
9
  width: 100%;
10
10
  padding: 0.625rem var(--ui-spacing-4);
@@ -24,37 +24,37 @@
24
24
  min-height: 5rem;
25
25
  }
26
26
 
27
- .llm-textarea textarea::placeholder {
27
+ .atl-textarea textarea::placeholder {
28
28
  color: var(--ui-color-placeholder);
29
29
  }
30
30
 
31
- .llm-textarea textarea:hover:not(:disabled):not(:read-only) {
31
+ .atl-textarea textarea:hover:not(:disabled):not(:read-only) {
32
32
  border-color: var(--ui-color-input-border-hover);
33
33
  }
34
34
 
35
- .llm-textarea textarea:focus {
35
+ .atl-textarea textarea:focus {
36
36
  border-color: var(--ui-color-input-border-focus);
37
37
  background-color: var(--ui-color-input-bg-focus);
38
38
  box-shadow: var(--ui-focus-ring);
39
39
  }
40
40
 
41
- .llm-textarea .textarea-field {
41
+ .atl-textarea .textarea-field {
42
42
  position: relative;
43
43
  }
44
44
 
45
45
  /* Invalid state */
46
- .llm-textarea.is-invalid textarea {
46
+ .atl-textarea.is-invalid textarea {
47
47
  border-color: var(--ui-color-input-border-invalid);
48
48
  padding-right: 2.25rem;
49
49
  }
50
50
 
51
- .llm-textarea.is-invalid textarea:focus {
51
+ .atl-textarea.is-invalid textarea:focus {
52
52
  border-color: var(--ui-color-input-border-invalid);
53
53
  box-shadow: 0 0 0 2px var(--ui-color-surface), 0 0 0 4px var(--ui-color-danger);
54
54
  }
55
55
 
56
56
  /* Non-color invalid indicator (WCAG 1.4.1) */
57
- .llm-textarea.is-invalid .textarea-field::before {
57
+ .atl-textarea.is-invalid .textarea-field::before {
58
58
  content: '✕';
59
59
  position: absolute;
60
60
  top: 0.75rem;
@@ -66,33 +66,33 @@
66
66
  }
67
67
 
68
68
  /* Disabled state */
69
- .llm-textarea.is-disabled {
69
+ .atl-textarea.is-disabled {
70
70
  opacity: var(--ui-opacity-disabled);
71
71
  cursor: not-allowed;
72
72
  }
73
73
 
74
- .llm-textarea.is-disabled textarea {
74
+ .atl-textarea.is-disabled textarea {
75
75
  cursor: not-allowed;
76
76
  }
77
77
 
78
78
  /* Readonly state */
79
- .llm-textarea.is-readonly textarea {
79
+ .atl-textarea.is-readonly textarea {
80
80
  background-color: var(--ui-color-surface-sunken);
81
81
  cursor: default;
82
82
  }
83
83
 
84
84
  /* Auto-resize: hide manual resize handle when autoResize is active */
85
- .llm-textarea.is-auto-resize textarea {
85
+ .atl-textarea.is-auto-resize textarea {
86
86
  resize: none;
87
87
  overflow: hidden;
88
88
  }
89
89
 
90
90
  /* Error messages */
91
- .llm-textarea .errors {
91
+ .atl-textarea .errors {
92
92
  margin-top: var(--ui-spacing-2);
93
93
  }
94
94
 
95
- .llm-textarea .error-message {
95
+ .atl-textarea .error-message {
96
96
  margin: 0;
97
97
  font-size: var(--ui-font-size-sm);
98
98
  color: var(--ui-color-error-text);
@@ -1,10 +1,10 @@
1
1
  import { TextareaHTMLAttributes } from 'react';
2
- import type { LlmTextareaSpec } from '../spec';
3
- import './llm-textarea.css';
2
+ import type { AtlTextareaSpec } from '../spec';
3
+ import './atl-textarea.css';
4
4
  /**
5
- * Properties for the LlmTextarea component.
5
+ * Properties for the AtlTextarea component.
6
6
  */
7
- export interface LlmTextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'readOnly'>, LlmTextareaSpec {
7
+ export interface AtlTextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'readOnly'>, AtlTextareaSpec {
8
8
  /**
9
9
  * Current value of the textarea.
10
10
  */
@@ -29,5 +29,5 @@ export interface LlmTextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAr
29
29
  /**
30
30
  * A multi-line text input component that supports automatic resizing and validation states.
31
31
  */
32
- export declare function LlmTextarea({ value, onChange, onValueChange, invalid, errors, disabled, readOnly: reactReadOnly, readonly: specReadOnly, required, label, autoResize, rows, className, id, ...rest }: LlmTextareaProps): import("react/jsx-runtime").JSX.Element;
33
- //# sourceMappingURL=llm-textarea.d.ts.map
32
+ export declare function AtlTextarea({ value, onChange, onValueChange, invalid, errors, disabled, readOnly: reactReadOnly, readonly: specReadOnly, required, label, autoResize, rows, className, id, ...rest }: AtlTextareaProps): import("react").JSX.Element;
33
+ //# sourceMappingURL=atl-textarea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-textarea.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/textarea/llm-textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAqB,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,EACnE,eAAe;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAe,EACf,MAAW,EACX,QAAgB,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAgB,EAChB,KAAK,EACL,UAAkB,EAClB,IAAQ,EACR,SAAS,EACT,EAAE,EACF,GAAG,IAAI,EACR,EAAE,gBAAgB,2CAiElB"}
1
+ {"version":3,"file":"atl-textarea.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/textarea/atl-textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAqB,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,oBAAoB,CAAC;AAE5B;;GAEG;AACH,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,EACnE,eAAe;IACjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,aAAa,EACb,OAAe,EACf,MAAW,EACX,QAAgB,EAChB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,YAAY,EACtB,QAAgB,EAChB,KAAK,EACL,UAAkB,EAClB,IAAQ,EACR,SAAS,EACT,EAAE,EACF,GAAG,IAAI,EACR,EAAE,gBAAgB,+BAiElB"}
@@ -1,15 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRef, useEffect } from 'react';
3
- import './llm-textarea.css';
3
+ import './atl-textarea.css';
4
4
  /**
5
5
  * A multi-line text input component that supports automatic resizing and validation states.
6
6
  */
7
- export function LlmTextarea({ value, onChange, onValueChange, invalid = false, errors = [], disabled = false, readOnly: reactReadOnly, readonly: specReadOnly, required = false, label, autoResize = false, rows = 3, className, id, ...rest }) {
7
+ export function AtlTextarea({ value, onChange, onValueChange, invalid = false, errors = [], disabled = false, readOnly: reactReadOnly, readonly: specReadOnly, required = false, label, autoResize = false, rows = 3, className, id, ...rest }) {
8
8
  const readOnly = reactReadOnly ?? specReadOnly ?? false;
9
9
  const textareaRef = useRef(null);
10
10
  const inputId = id || (label ? `textarea-${label.toLowerCase().replace(/\s+/g, '-')}` : undefined);
11
11
  const classes = [
12
- 'llm-textarea',
12
+ 'atl-textarea',
13
13
  invalid && 'is-invalid',
14
14
  disabled && 'is-disabled',
15
15
  readOnly && 'is-readonly',
@@ -36,4 +36,4 @@ export function LlmTextarea({ value, onChange, onValueChange, invalid = false, e
36
36
  const errorId = inputId ? `${inputId}-errors` : undefined;
37
37
  return (_jsxs("div", { className: classes, children: [label && _jsx("label", { htmlFor: inputId, children: label }), _jsx("div", { className: "textarea-field", children: _jsx("textarea", { ref: textareaRef, id: inputId, value: value, onChange: handleChange, disabled: disabled, readOnly: readOnly, required: required, rows: rows, "aria-invalid": invalid || undefined, "aria-required": required || undefined, "aria-describedby": errors.length > 0 ? errorId : undefined, ...rest }) }), errors.length > 0 && (_jsx("div", { className: "errors", id: errorId, "aria-live": "polite", children: errors.map((err, i) => (_jsx("p", { className: "error-message", children: err }, i))) }))] }));
38
38
  }
39
- //# sourceMappingURL=llm-textarea.js.map
39
+ //# sourceMappingURL=atl-textarea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-textarea.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/textarea/llm-textarea.tsx"],"names":[],"mappings":"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","sourcesContent":["import { TextareaHTMLAttributes, useRef, useEffect } from 'react';\nimport type { LlmTextareaSpec } from '../spec';\nimport './llm-textarea.css';\n\n/**\n * Properties for the LlmTextarea component.\n */\nexport interface LlmTextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'readOnly'>,\n LlmTextareaSpec {\n /**\n * Current value of the textarea.\n */\n value?: string;\n /**\n * Whether the textarea is read-only.\n */\n readOnly?: boolean;\n /**\n * Callback fired when the value changes.\n */\n onValueChange?: (value: string) => void;\n /**\n * List of error messages to display.\n */\n errors?: string[];\n /**\n * Label text for the textarea.\n */\n label?: string;\n}\n\n/**\n * A multi-line text input component that supports automatic resizing and validation states.\n */\nexport function LlmTextarea({\n value,\n onChange,\n onValueChange,\n invalid = false,\n errors = [],\n disabled = false,\n readOnly: reactReadOnly,\n readonly: specReadOnly,\n required = false,\n label,\n autoResize = false,\n rows = 3,\n className,\n id,\n ...rest\n}: LlmTextareaProps) {\n const readOnly = reactReadOnly ?? specReadOnly ?? false;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const inputId =\n id || (label ? `textarea-${label.toLowerCase().replace(/\\s+/g, '-')}` : undefined);\n const classes = [\n 'llm-textarea',\n invalid && 'is-invalid',\n disabled && 'is-disabled',\n readOnly && 'is-readonly',\n autoResize && 'is-auto-resize',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n useEffect(() => {\n if (autoResize && textareaRef.current) {\n const el = textareaRef.current;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n }, [value, autoResize]);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n if (autoResize && textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }\n };\n\n const errorId = inputId ? `${inputId}-errors` : undefined;\n\n return (\n <div className={classes}>\n {label && <label htmlFor={inputId}>{label}</label>}\n <div className=\"textarea-field\">\n <textarea\n ref={textareaRef}\n id={inputId}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n rows={rows}\n aria-invalid={invalid || undefined}\n aria-required={required || undefined}\n aria-describedby={errors.length > 0 ? errorId : undefined}\n {...rest}\n />\n </div>\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":"atl-textarea.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/textarea/atl-textarea.tsx"],"names":[],"mappings":"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","sourcesContent":["import { TextareaHTMLAttributes, useRef, useEffect } from 'react';\nimport type { AtlTextareaSpec } from '../spec';\nimport './atl-textarea.css';\n\n/**\n * Properties for the AtlTextarea component.\n */\nexport interface AtlTextareaProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'readOnly'>,\n AtlTextareaSpec {\n /**\n * Current value of the textarea.\n */\n value?: string;\n /**\n * Whether the textarea is read-only.\n */\n readOnly?: boolean;\n /**\n * Callback fired when the value changes.\n */\n onValueChange?: (value: string) => void;\n /**\n * List of error messages to display.\n */\n errors?: string[];\n /**\n * Label text for the textarea.\n */\n label?: string;\n}\n\n/**\n * A multi-line text input component that supports automatic resizing and validation states.\n */\nexport function AtlTextarea({\n value,\n onChange,\n onValueChange,\n invalid = false,\n errors = [],\n disabled = false,\n readOnly: reactReadOnly,\n readonly: specReadOnly,\n required = false,\n label,\n autoResize = false,\n rows = 3,\n className,\n id,\n ...rest\n}: AtlTextareaProps) {\n const readOnly = reactReadOnly ?? specReadOnly ?? false;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const inputId =\n id || (label ? `textarea-${label.toLowerCase().replace(/\\s+/g, '-')}` : undefined);\n const classes = [\n 'atl-textarea',\n invalid && 'is-invalid',\n disabled && 'is-disabled',\n readOnly && 'is-readonly',\n autoResize && 'is-auto-resize',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n useEffect(() => {\n if (autoResize && textareaRef.current) {\n const el = textareaRef.current;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n }, [value, autoResize]);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n if (autoResize && textareaRef.current) {\n textareaRef.current.style.height = 'auto';\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }\n };\n\n const errorId = inputId ? `${inputId}-errors` : undefined;\n\n return (\n <div className={classes}>\n {label && <label htmlFor={inputId}>{label}</label>}\n <div className=\"textarea-field\">\n <textarea\n ref={textareaRef}\n id={inputId}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n rows={rows}\n aria-invalid={invalid || undefined}\n aria-required={required || undefined}\n aria-describedby={errors.length > 0 ? errorId : undefined}\n {...rest}\n />\n </div>\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,5 +1,5 @@
1
1
  /* ── Toast Container ── */
2
- .llm-toast-container {
2
+ .atl-toast-container {
3
3
  position: fixed;
4
4
  z-index: var(--ui-z-toast, 400);
5
5
  display: flex;
@@ -10,26 +10,26 @@
10
10
  box-sizing: border-box;
11
11
  }
12
12
 
13
- .llm-toast-container.position-bottom-right {
13
+ .atl-toast-container.position-bottom-right {
14
14
  bottom: var(--ui-spacing-4);
15
15
  right: var(--ui-spacing-4);
16
16
  align-items: flex-end;
17
17
  }
18
18
 
19
- .llm-toast-container.position-bottom-center {
19
+ .atl-toast-container.position-bottom-center {
20
20
  bottom: var(--ui-spacing-4);
21
21
  left: 50%;
22
22
  transform: translateX(-50%);
23
23
  align-items: center;
24
24
  }
25
25
 
26
- .llm-toast-container.position-top-right {
26
+ .atl-toast-container.position-top-right {
27
27
  top: var(--ui-spacing-4);
28
28
  right: var(--ui-spacing-4);
29
29
  align-items: flex-end;
30
30
  }
31
31
 
32
- .llm-toast-container.position-top-center {
32
+ .atl-toast-container.position-top-center {
33
33
  top: var(--ui-spacing-4);
34
34
  left: 50%;
35
35
  transform: translateX(-50%);
@@ -37,7 +37,7 @@
37
37
  }
38
38
 
39
39
  /* ── Individual Toast ── */
40
- .llm-toast {
40
+ .atl-toast {
41
41
  display: flex;
42
42
  align-items: center;
43
43
  gap: var(--ui-spacing-3);
@@ -58,37 +58,37 @@
58
58
  }
59
59
 
60
60
  /* ── Variant borders & tints ── */
61
- .llm-toast.variant-default {
61
+ .atl-toast.variant-default {
62
62
  border-left-color: var(--ui-color-border);
63
63
  }
64
64
 
65
- .llm-toast.variant-success {
65
+ .atl-toast.variant-success {
66
66
  border-left-color: var(--ui-color-success);
67
67
  background-color: color-mix(in srgb, var(--ui-color-success) 8%, var(--ui-color-surface-raised, var(--ui-color-surface)));
68
68
  }
69
69
 
70
- .llm-toast.variant-warning {
70
+ .atl-toast.variant-warning {
71
71
  border-left-color: var(--ui-color-warning);
72
72
  background-color: color-mix(in srgb, var(--ui-color-warning) 8%, var(--ui-color-surface-raised, var(--ui-color-surface)));
73
73
  }
74
74
 
75
- .llm-toast.variant-danger {
75
+ .atl-toast.variant-danger {
76
76
  border-left-color: var(--ui-color-danger);
77
77
  background-color: color-mix(in srgb, var(--ui-color-danger) 8%, var(--ui-color-surface-raised, var(--ui-color-surface)));
78
78
  }
79
79
 
80
- .llm-toast.variant-info {
80
+ .atl-toast.variant-info {
81
81
  border-left-color: var(--ui-color-info);
82
82
  background-color: color-mix(in srgb, var(--ui-color-info) 8%, var(--ui-color-surface-raised, var(--ui-color-surface)));
83
83
  }
84
84
 
85
85
  /* ── Message ── */
86
- .llm-toast .message {
86
+ .atl-toast .message {
87
87
  flex: 1;
88
88
  }
89
89
 
90
90
  /* ── Dismiss button ── */
91
- .llm-toast .dismiss {
91
+ .atl-toast .dismiss {
92
92
  display: inline-flex;
93
93
  align-items: center;
94
94
  justify-content: center;
@@ -106,12 +106,12 @@
106
106
  line-height: 1;
107
107
  }
108
108
 
109
- .llm-toast .dismiss:hover {
109
+ .atl-toast .dismiss:hover {
110
110
  opacity: 1;
111
111
  background-color: color-mix(in srgb, currentColor 10%, transparent);
112
112
  }
113
113
 
114
- .llm-toast .dismiss:focus-visible {
114
+ .atl-toast .dismiss:focus-visible {
115
115
  outline: none;
116
116
  box-shadow: var(--ui-focus-ring);
117
117
  opacity: 1;
@@ -131,7 +131,7 @@
131
131
 
132
132
  /* ── Reduced motion ── */
133
133
  @media (prefers-reduced-motion: reduce) {
134
- .llm-toast {
134
+ .atl-toast {
135
135
  animation: none;
136
136
  }
137
137
  }
@@ -0,0 +1,54 @@
1
+ import { ReactNode } from 'react';
2
+ import type { AtlToastOptions, AtlToastContainerPosition } from '../spec';
3
+ import './atl-toast.css';
4
+ /**
5
+ * Internal data structure for a toast message.
6
+ */
7
+ export interface ToastData extends Required<AtlToastOptions> {
8
+ id: string;
9
+ message: string;
10
+ }
11
+ /**
12
+ * Context provider that manages the toast state.
13
+ */
14
+ export declare function AtlToastProvider({ children }: {
15
+ children: ReactNode;
16
+ }): import("react").JSX.Element;
17
+ /** Access toast actions: show, dismiss, clear. Must be inside AtlToastProvider. */
18
+ export declare function useAtlToast(): {
19
+ show: (message: string, options?: AtlToastOptions) => string;
20
+ dismiss: (id: string) => void;
21
+ clear: () => void;
22
+ };
23
+ /**
24
+ * Properties for the AtlToastContainer component.
25
+ */
26
+ export interface AtlToastContainerProps {
27
+ /**
28
+ * Position of the toast container in the viewport.
29
+ */
30
+ position?: AtlToastContainerPosition;
31
+ }
32
+ /**
33
+ * Renders the toast stack at a fixed viewport position.
34
+ * Must be placed inside AtlToastProvider.
35
+ */
36
+ export declare function AtlToastContainer({ position }: AtlToastContainerProps): import("react").JSX.Element;
37
+ /**
38
+ * Properties for the AtlToastItem component.
39
+ */
40
+ export interface AtlToastItemProps {
41
+ /**
42
+ * The toast data to display.
43
+ */
44
+ data: ToastData;
45
+ /**
46
+ * Callback fired when the toast is dismissed.
47
+ */
48
+ onDismiss: (id: string) => void;
49
+ }
50
+ /**
51
+ * An individual toast notification item.
52
+ */
53
+ export declare function AtlToastItem({ data, onDismiss }: AtlToastItemProps): import("react").JSX.Element;
54
+ //# sourceMappingURL=atl-toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-toast.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/toast/llm-toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACV,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CA6CrE;AAED,mFAAmF;AACnF,wBAAgB,WAAW;oBAhET,MAAM,YAAY,eAAe,KAAK,MAAM;kBAC9C,MAAM,KAAK,IAAI;iBAChB,IAAI;EAiElB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAyB,EAAE,EAAE,sBAAsB,2CAWtF;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,iBAAiB,2CA+BlE"}
1
+ {"version":3,"file":"atl-toast.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/toast/atl-toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACV,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BA6CrE;AAED,mFAAmF;AACnF,wBAAgB,WAAW;oBAhET,MAAM,YAAY,eAAe,KAAK,MAAM;kBAC9C,MAAM,KAAK,IAAI;iBAChB,IAAI;EAiElB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAyB,EAAE,EAAE,sBAAsB,+BAWtF;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,SAAS,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,iBAAiB,+BA+BlE"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useState, useCallback, useRef, } from 'react';
3
- import './llm-toast.css';
3
+ import './atl-toast.css';
4
4
  const ToastContext = createContext({
5
5
  show: () => '',
6
6
  dismiss: () => undefined,
@@ -10,7 +10,7 @@ const ToastContext = createContext({
10
10
  /**
11
11
  * Context provider that manages the toast state.
12
12
  */
13
- export function LlmToastProvider({ children }) {
13
+ export function AtlToastProvider({ children }) {
14
14
  const [toasts, setToasts] = useState([]);
15
15
  const timersRef = useRef(new Map());
16
16
  const toastId = useRef(0);
@@ -23,7 +23,7 @@ export function LlmToastProvider({ children }) {
23
23
  setToasts((prev) => prev.filter((t) => t.id !== id));
24
24
  }, []);
25
25
  const show = useCallback((message, options = {}) => {
26
- const id = `llm-toast-${toastId.current++}`;
26
+ const id = `atl-toast-${toastId.current++}`;
27
27
  const toast = {
28
28
  id,
29
29
  message,
@@ -46,25 +46,25 @@ export function LlmToastProvider({ children }) {
46
46
  }, []);
47
47
  return (_jsx(ToastContext.Provider, { value: { show, dismiss, clear, toasts }, children: children }));
48
48
  }
49
- /** Access toast actions: show, dismiss, clear. Must be inside LlmToastProvider. */
50
- export function useLlmToast() {
49
+ /** Access toast actions: show, dismiss, clear. Must be inside AtlToastProvider. */
50
+ export function useAtlToast() {
51
51
  const ctx = useContext(ToastContext);
52
52
  return { show: ctx.show, dismiss: ctx.dismiss, clear: ctx.clear };
53
53
  }
54
54
  /**
55
55
  * Renders the toast stack at a fixed viewport position.
56
- * Must be placed inside LlmToastProvider.
56
+ * Must be placed inside AtlToastProvider.
57
57
  */
58
- export function LlmToastContainer({ position = 'bottom-right' }) {
58
+ export function AtlToastContainer({ position = 'bottom-right' }) {
59
59
  const { toasts, dismiss } = useContext(ToastContext);
60
- const classes = `llm-toast-container position-${position}`;
61
- return (_jsx("div", { className: classes, "aria-live": "polite", role: "status", children: toasts.map((toast) => (_jsx(LlmToastItem, { data: toast, onDismiss: dismiss }, toast.id))) }));
60
+ const classes = `atl-toast-container position-${position}`;
61
+ return (_jsx("div", { className: classes, "aria-live": "polite", role: "status", children: toasts.map((toast) => (_jsx(AtlToastItem, { data: toast, onDismiss: dismiss }, toast.id))) }));
62
62
  }
63
63
  /**
64
64
  * An individual toast notification item.
65
65
  */
66
- export function LlmToastItem({ data, onDismiss }) {
67
- const classes = `llm-toast variant-${data.variant}`;
66
+ export function AtlToastItem({ data, onDismiss }) {
67
+ const classes = `atl-toast variant-${data.variant}`;
68
68
  return (_jsxs("div", { className: classes, role: "status", children: [_jsx("span", { className: "message", children: data.message }), data.dismissible && (_jsx("button", { className: "dismiss", type: "button", "aria-label": "Dismiss", onClick: () => onDismiss(data.id), children: _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }), _jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })] }) }))] }));
69
69
  }
70
- //# sourceMappingURL=llm-toast.js.map
70
+ //# sourceMappingURL=atl-toast.js.map