@atelier-ui/react 0.1.12 → 0.2.1

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} +12 -12
  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} +13 -13
  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} +12 -12
  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} +12 -12
  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,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { createContext, useContext, useState, Children, isValidElement, useMemo, } from 'react';
3
- import './llm-stepper.css';
3
+ import './atl-stepper.css';
4
4
  const StepperContext = createContext({
5
5
  activeStep: 0,
6
6
  setActiveStep: () => undefined,
@@ -11,10 +11,10 @@ const StepperContext = createContext({
11
11
  goTo: () => undefined,
12
12
  });
13
13
  /** Access stepper navigation from within step content. */
14
- export function useLlmStepper() {
14
+ export function useAtlStepper() {
15
15
  return useContext(StepperContext);
16
16
  }
17
- export function LlmStepper({ activeStep: externalStep, onActiveStepChange, orientation = 'horizontal', linear = false, children, className, ...rest }) {
17
+ export function AtlStepper({ activeStep: externalStep, onActiveStepChange, orientation = 'horizontal', linear = false, children, className, ...rest }) {
18
18
  const [internalStep, setInternalStep] = useState(externalStep ?? 0);
19
19
  const isControlled = externalStep !== undefined;
20
20
  const activeStep = isControlled ? externalStep : internalStep;
@@ -26,7 +26,7 @@ export function LlmStepper({ activeStep: externalStep, onActiveStepChange, orien
26
26
  const childArray = Children.toArray(children);
27
27
  const steps = useMemo(() => childArray
28
28
  .filter((c) => isValidElement(c) &&
29
- c.type.displayName === 'LlmStep')
29
+ c.type.displayName === 'AtlStep')
30
30
  .map((c) => {
31
31
  const element = c;
32
32
  return {
@@ -59,14 +59,14 @@ export function LlmStepper({ activeStep: externalStep, onActiveStepChange, orien
59
59
  setStep(p);
60
60
  };
61
61
  const classes = [
62
- 'llm-stepper',
62
+ 'atl-stepper',
63
63
  `orientation-${orientation}`,
64
64
  className,
65
65
  ]
66
66
  .filter(Boolean)
67
67
  .join(' ');
68
68
  const stepPanels = childArray.filter((c) => isValidElement(c) &&
69
- c.type.displayName === 'LlmStep');
69
+ c.type.displayName === 'AtlStep');
70
70
  return (_jsx(StepperContext.Provider, { value: { activeStep, setActiveStep: setStep, steps, linear, next, prev, goTo }, children: _jsxs("div", { className: classes, ...rest, children: [_jsx("div", { className: "stepper-header", role: "tablist", children: steps.map((step, i) => {
71
71
  const isActive = activeStep === i;
72
72
  const isCompleted = step.completed && !isActive;
@@ -79,16 +79,16 @@ export function LlmStepper({ activeStep: externalStep, onActiveStepChange, orien
79
79
  ]
80
80
  .filter(Boolean)
81
81
  .join(' ');
82
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: itemClass, children: [_jsx("button", { type: "button", role: "tab", id: `llm-step-${i}`, className: "step-circle", "aria-label": step.label, "aria-selected": isActive, "aria-controls": `llm-step-panel-${i}`, "aria-disabled": step.disabled || undefined, tabIndex: isActive ? 0 : -1, disabled: step.disabled, onClick: () => goTo(i), children: step.completed && !step.error ? (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M2 7L5.5 10.5L12 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })) : step.error ? (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 3L11 11M11 3L3 11", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })) : (i + 1) }), _jsxs("div", { className: "step-text", children: [_jsx("span", { className: "step-label", children: step.label }), step.description && (_jsx("span", { className: "step-description", children: step.description })), step.optional && !step.completed && (_jsx("span", { className: "step-optional", children: "Optional" }))] })] }, i), i < steps.length - 1 && (_jsx("div", { className: ['step-connector', (activeStep > i || step.completed) && 'is-active']
82
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: itemClass, children: [_jsx("button", { type: "button", role: "tab", id: `atl-step-${i}`, className: "step-circle", "aria-label": step.label, "aria-selected": isActive, "aria-controls": `atl-step-panel-${i}`, "aria-disabled": step.disabled || undefined, tabIndex: isActive ? 0 : -1, disabled: step.disabled, onClick: () => goTo(i), children: step.completed && !step.error ? (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M2 7L5.5 10.5L12 3.5", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })) : step.error ? (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", "aria-hidden": "true", children: _jsx("path", { d: "M3 3L11 11M11 3L3 11", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) })) : (i + 1) }), _jsxs("div", { className: "step-text", children: [_jsx("span", { className: "step-label", children: step.label }), step.description && (_jsx("span", { className: "step-description", children: step.description })), step.optional && !step.completed && (_jsx("span", { className: "step-optional", children: "Optional" }))] })] }, i), i < steps.length - 1 && (_jsx("div", { className: ['step-connector', (activeStep > i || step.completed) && 'is-active']
83
83
  .filter(Boolean)
84
84
  .join(' ') }, `connector-${i}`))] }));
85
85
  }) }), _jsx("div", { className: "stepper-content", children: stepPanels.map((panel, i) => {
86
86
  const element = panel;
87
- return (_jsx("div", { id: `llm-step-panel-${i}`, role: "tabpanel", "aria-labelledby": `llm-step-${i}`, tabIndex: 0, hidden: i !== activeStep, children: element.props.children }, i));
87
+ return (_jsx("div", { id: `atl-step-panel-${i}`, role: "tabpanel", "aria-labelledby": `atl-step-${i}`, tabIndex: 0, hidden: i !== activeStep, children: element.props.children }, i));
88
88
  }) })] }) }));
89
89
  }
90
- export function LlmStep({ children }) {
90
+ export function AtlStep({ children }) {
91
91
  return children;
92
92
  }
93
- LlmStep.displayName = 'LlmStep';
94
- //# sourceMappingURL=llm-stepper.js.map
93
+ AtlStep.displayName = 'AtlStep';
94
+ //# sourceMappingURL=atl-stepper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-stepper.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/stepper/llm-stepper.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,QAAQ,EAGR,QAAQ,EACR,cAAc,EACd,OAAO,GAER,MAAM,OAAO,CAAC;AAEf,OAAO,mBAAmB,CAAC;AAqB3B,MAAM,cAAc,GAAG,aAAa,CAAsB;IACxD,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;IAC9B,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;CACtB,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAgBD,MAAM,UAAU,UAAU,CAAC,EACzB,UAAU,EAAE,YAAY,EACxB,kBAAkB,EAClB,WAAW,GAAG,YAAY,EAC1B,MAAM,GAAG,KAAK,EACd,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACS;IAChB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,YAAY,KAAK,SAAS,CAAC;IAChD,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAE9D,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE;QAC5B,IAAI,CAAC,YAAY;YAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QACtC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAe,OAAO,CAC/B,GAAG,EAAE,CACH,UAAU;SACP,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,cAAc,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,IAAiC,CAAC,WAAW,KAAK,SAAS,CACjE;SACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,OAAO,GAAG,CAA+B,CAAC;QAChD,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YAChC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW;YACtC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK;YAC3C,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK;YACnC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK;YACzC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK;SAC1C,CAAC;IACJ,CAAC,CAAC;IACN,uDAAuD;IACvD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE;QACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ;YAAE,OAAO;QAC/B,IAAI,MAAM,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC7E,IAAI,CAAC,UAAU;gBAAE,OAAO;QAC1B,CAAC;QACD,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,aAAa;QACb,eAAe,WAAW,EAAE;QAC5B,SAAS;KACV;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,cAAc,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC,IAAiC,CAAC,WAAW,KAAK,SAAS,CACjE,CAAC;IAEF,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YACrG,eAAK,SAAS,EAAE,OAAO,KAAM,IAAI,aAC/B,cAAK,SAAS,EAAC,gBAAgB,EAAC,IAAI,EAAC,SAAS,YAC3C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACrB,MAAM,QAAQ,GAAG,UAAU,KAAK,CAAC,CAAC;wBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC;wBAChD,MAAM,SAAS,GAAG;4BAChB,WAAW;4BACX,QAAQ,IAAI,WAAW;4BACvB,WAAW,IAAI,cAAc;4BAC7B,IAAI,CAAC,KAAK,IAAI,UAAU;4BACxB,IAAI,CAAC,QAAQ,IAAI,aAAa;yBAC/B;6BACE,MAAM,CAAC,OAAO,CAAC;6BACf,IAAI,CAAC,GAAG,CAAC,CAAC;wBAEb,OAAO,CACL,8BACE,eAAa,SAAS,EAAE,SAAS,aAC/B,iBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,EAAE,EAAE,YAAY,CAAC,EAAE,EACnB,SAAS,EAAC,aAAa,gBACX,IAAI,CAAC,KAAK,mBACP,QAAQ,mBACR,kBAAkB,CAAC,EAAE,mBACrB,IAAI,CAAC,QAAQ,IAAI,SAAS,EACzC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,YAErB,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,YAC5E,eAAM,CAAC,EAAC,sBAAsB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,GAAG,GAChH,CACP,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACf,cAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,YAC5E,eAAM,CAAC,EAAC,sBAAsB,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,GAAG,EAAC,aAAa,EAAC,OAAO,GAAG,GACzF,CACP,CAAC,CAAC,CAAC,CACF,CAAC,GAAG,CAAC,CACN,GACM,EACT,eAAK,SAAS,EAAC,WAAW,aACxB,eAAM,SAAS,EAAC,YAAY,YAAE,IAAI,CAAC,KAAK,GAAQ,EAC/C,IAAI,CAAC,WAAW,IAAI,CACnB,eAAM,SAAS,EAAC,kBAAkB,YAAE,IAAI,CAAC,WAAW,GAAQ,CAC7D,EACA,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CACnC,eAAM,SAAS,EAAC,eAAe,yBAAgB,CAChD,IACG,KAlCE,CAAC,CAmCL,EACL,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,cAEE,SAAS,EAAE,CAAC,gBAAgB,EAAE,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC;yCAC7E,MAAM,CAAC,OAAO,CAAC;yCACf,IAAI,CAAC,GAAG,CAAC,IAHP,aAAa,CAAC,EAAE,CAIrB,CACH,IACA,CACJ,CAAC;oBACJ,CAAC,CAAC,GACE,EACN,cAAK,SAAS,EAAC,iBAAiB,YAC7B,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;wBAC3B,MAAM,OAAO,GAAG,KAAmC,CAAC;wBACpD,OAAO,CACL,cAEE,EAAE,EAAE,kBAAkB,CAAC,EAAE,EACzB,IAAI,EAAC,UAAU,qBACE,YAAY,CAAC,EAAE,EAChC,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,CAAC,KAAK,UAAU,YAEvB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAPlB,CAAC,CAQF,CACP,CAAC;oBACJ,CAAC,CAAC,GACE,IACF,GACkB,CAC3B,CAAC;AACJ,CAAC;AAkBD,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAgB;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC","sourcesContent":["import {\n createContext,\n useContext,\n useState,\n ReactNode,\n HTMLAttributes,\n Children,\n isValidElement,\n useMemo,\n ReactElement,\n} from 'react';\nimport type { LlmStepperSpec, LlmStepSpec } from '../spec';\nimport './llm-stepper.css';\n\ninterface StepInfo {\n label: string;\n description?: string;\n completed: boolean;\n error: boolean;\n optional: boolean;\n disabled: boolean;\n}\n\ninterface StepperContextValue {\n activeStep: number;\n setActiveStep: (i: number) => void;\n steps: StepInfo[];\n linear: boolean;\n next(): void;\n prev(): void;\n goTo(i: number): void;\n}\n\nconst StepperContext = createContext<StepperContextValue>({\n activeStep: 0,\n setActiveStep: () => undefined,\n steps: [],\n linear: false,\n next: () => undefined,\n prev: () => undefined,\n goTo: () => undefined,\n});\n\n/** Access stepper navigation from within step content. */\nexport function useLlmStepper() {\n return useContext(StepperContext);\n}\n\nexport interface LlmStepperProps\n extends HTMLAttributes<HTMLDivElement>,\n LlmStepperSpec {\n /** Currently active step index. */\n activeStep?: number;\n /** Callback when the active step changes. */\n onActiveStepChange?: (index: number) => void;\n /** Layout orientation. */\n orientation?: 'horizontal' | 'vertical';\n /** Restrict forward navigation until previous steps are completed. */\n linear?: boolean;\n children?: ReactNode;\n}\n\nexport function LlmStepper({\n activeStep: externalStep,\n onActiveStepChange,\n orientation = 'horizontal',\n linear = false,\n children,\n className,\n ...rest\n}: LlmStepperProps) {\n const [internalStep, setInternalStep] = useState(externalStep ?? 0);\n const isControlled = externalStep !== undefined;\n const activeStep = isControlled ? externalStep : internalStep;\n\n const setStep = (i: number) => {\n if (!isControlled) setInternalStep(i);\n onActiveStepChange?.(i);\n };\n\n const childArray = Children.toArray(children);\n const steps: StepInfo[] = useMemo(\n () =>\n childArray\n .filter(\n (c) =>\n isValidElement(c) &&\n (c.type as { displayName?: string }).displayName === 'LlmStep'\n )\n .map((c) => {\n const element = c as ReactElement<LlmStepProps>;\n return {\n label: element.props.label ?? '',\n description: element.props.description,\n completed: element.props.completed ?? false,\n error: element.props.error ?? false,\n optional: element.props.optional ?? false,\n disabled: element.props.disabled ?? false,\n };\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [children]\n );\n\n const goTo = (i: number) => {\n if (i < 0 || i >= steps.length) return;\n if (steps[i]?.disabled) return;\n if (linear && i > activeStep) {\n const canAdvance = steps.slice(0, i).every((s) => s.completed || s.optional);\n if (!canAdvance) return;\n }\n setStep(i);\n };\n\n const next = () => goTo(activeStep + 1);\n const prev = () => {\n const p = activeStep - 1;\n if (p >= 0 && !steps[p]?.disabled) setStep(p);\n };\n\n const classes = [\n 'llm-stepper',\n `orientation-${orientation}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const stepPanels = childArray.filter(\n (c) =>\n isValidElement(c) &&\n (c.type as { displayName?: string }).displayName === 'LlmStep'\n );\n\n return (\n <StepperContext.Provider value={{ activeStep, setActiveStep: setStep, steps, linear, next, prev, goTo }}>\n <div className={classes} {...rest}>\n <div className=\"stepper-header\" role=\"tablist\">\n {steps.map((step, i) => {\n const isActive = activeStep === i;\n const isCompleted = step.completed && !isActive;\n const itemClass = [\n 'step-item',\n isActive && 'is-active',\n isCompleted && 'is-completed',\n step.error && 'is-error',\n step.disabled && 'is-disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <div key={i} className={itemClass}>\n <button\n type=\"button\"\n role=\"tab\"\n id={`llm-step-${i}`}\n className=\"step-circle\"\n aria-label={step.label}\n aria-selected={isActive}\n aria-controls={`llm-step-panel-${i}`}\n aria-disabled={step.disabled || undefined}\n tabIndex={isActive ? 0 : -1}\n disabled={step.disabled}\n onClick={() => goTo(i)}\n >\n {step.completed && !step.error ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 7L5.5 10.5L12 3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : step.error ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 3L11 11M11 3L3 11\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n ) : (\n i + 1\n )}\n </button>\n <div className=\"step-text\">\n <span className=\"step-label\">{step.label}</span>\n {step.description && (\n <span className=\"step-description\">{step.description}</span>\n )}\n {step.optional && !step.completed && (\n <span className=\"step-optional\">Optional</span>\n )}\n </div>\n </div>\n {i < steps.length - 1 && (\n <div\n key={`connector-${i}`}\n className={['step-connector', (activeStep > i || step.completed) && 'is-active']\n .filter(Boolean)\n .join(' ')}\n />\n )}\n </>\n );\n })}\n </div>\n <div className=\"stepper-content\">\n {stepPanels.map((panel, i) => {\n const element = panel as ReactElement<LlmStepProps>;\n return (\n <div\n key={i}\n id={`llm-step-panel-${i}`}\n role=\"tabpanel\"\n aria-labelledby={`llm-step-${i}`}\n tabIndex={0}\n hidden={i !== activeStep}\n >\n {element.props.children}\n </div>\n );\n })}\n </div>\n </div>\n </StepperContext.Provider>\n );\n}\n\nexport interface LlmStepProps extends LlmStepSpec {\n /** Text displayed on the step indicator. Required. */\n label: string;\n /** Optional subtitle. */\n description?: string;\n /** Mark as completed (shows checkmark). */\n completed?: boolean;\n /** Mark as errored (shows X). */\n error?: boolean;\n /** Mark as optional. */\n optional?: boolean;\n /** Whether the step is disabled. */\n disabled?: boolean;\n children?: ReactNode;\n}\n\nexport function LlmStep({ children }: LlmStepProps) {\n return children;\n}\nLlmStep.displayName = 'LlmStep';\n"]}
1
+ {"version":3,"file":"atl-stepper.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/stepper/atl-stepper.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createContext,\n useContext,\n useState,\n ReactNode,\n HTMLAttributes,\n Children,\n isValidElement,\n useMemo,\n ReactElement,\n} from 'react';\nimport type { AtlStepperSpec, AtlStepSpec } from '../spec';\nimport './atl-stepper.css';\n\ninterface StepInfo {\n label: string;\n description?: string;\n completed: boolean;\n error: boolean;\n optional: boolean;\n disabled: boolean;\n}\n\ninterface StepperContextValue {\n activeStep: number;\n setActiveStep: (i: number) => void;\n steps: StepInfo[];\n linear: boolean;\n next(): void;\n prev(): void;\n goTo(i: number): void;\n}\n\nconst StepperContext = createContext<StepperContextValue>({\n activeStep: 0,\n setActiveStep: () => undefined,\n steps: [],\n linear: false,\n next: () => undefined,\n prev: () => undefined,\n goTo: () => undefined,\n});\n\n/** Access stepper navigation from within step content. */\nexport function useAtlStepper() {\n return useContext(StepperContext);\n}\n\nexport interface AtlStepperProps\n extends HTMLAttributes<HTMLDivElement>,\n AtlStepperSpec {\n /** Currently active step index. */\n activeStep?: number;\n /** Callback when the active step changes. */\n onActiveStepChange?: (index: number) => void;\n /** Layout orientation. */\n orientation?: 'horizontal' | 'vertical';\n /** Restrict forward navigation until previous steps are completed. */\n linear?: boolean;\n children?: ReactNode;\n}\n\nexport function AtlStepper({\n activeStep: externalStep,\n onActiveStepChange,\n orientation = 'horizontal',\n linear = false,\n children,\n className,\n ...rest\n}: AtlStepperProps) {\n const [internalStep, setInternalStep] = useState(externalStep ?? 0);\n const isControlled = externalStep !== undefined;\n const activeStep = isControlled ? externalStep : internalStep;\n\n const setStep = (i: number) => {\n if (!isControlled) setInternalStep(i);\n onActiveStepChange?.(i);\n };\n\n const childArray = Children.toArray(children);\n const steps: StepInfo[] = useMemo(\n () =>\n childArray\n .filter(\n (c) =>\n isValidElement(c) &&\n (c.type as { displayName?: string }).displayName === 'AtlStep'\n )\n .map((c) => {\n const element = c as ReactElement<AtlStepProps>;\n return {\n label: element.props.label ?? '',\n description: element.props.description,\n completed: element.props.completed ?? false,\n error: element.props.error ?? false,\n optional: element.props.optional ?? false,\n disabled: element.props.disabled ?? false,\n };\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [children]\n );\n\n const goTo = (i: number) => {\n if (i < 0 || i >= steps.length) return;\n if (steps[i]?.disabled) return;\n if (linear && i > activeStep) {\n const canAdvance = steps.slice(0, i).every((s) => s.completed || s.optional);\n if (!canAdvance) return;\n }\n setStep(i);\n };\n\n const next = () => goTo(activeStep + 1);\n const prev = () => {\n const p = activeStep - 1;\n if (p >= 0 && !steps[p]?.disabled) setStep(p);\n };\n\n const classes = [\n 'atl-stepper',\n `orientation-${orientation}`,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const stepPanels = childArray.filter(\n (c) =>\n isValidElement(c) &&\n (c.type as { displayName?: string }).displayName === 'AtlStep'\n );\n\n return (\n <StepperContext.Provider value={{ activeStep, setActiveStep: setStep, steps, linear, next, prev, goTo }}>\n <div className={classes} {...rest}>\n <div className=\"stepper-header\" role=\"tablist\">\n {steps.map((step, i) => {\n const isActive = activeStep === i;\n const isCompleted = step.completed && !isActive;\n const itemClass = [\n 'step-item',\n isActive && 'is-active',\n isCompleted && 'is-completed',\n step.error && 'is-error',\n step.disabled && 'is-disabled',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <>\n <div key={i} className={itemClass}>\n <button\n type=\"button\"\n role=\"tab\"\n id={`atl-step-${i}`}\n className=\"step-circle\"\n aria-label={step.label}\n aria-selected={isActive}\n aria-controls={`atl-step-panel-${i}`}\n aria-disabled={step.disabled || undefined}\n tabIndex={isActive ? 0 : -1}\n disabled={step.disabled}\n onClick={() => goTo(i)}\n >\n {step.completed && !step.error ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M2 7L5.5 10.5L12 3.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n ) : step.error ? (\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M3 3L11 11M11 3L3 11\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n ) : (\n i + 1\n )}\n </button>\n <div className=\"step-text\">\n <span className=\"step-label\">{step.label}</span>\n {step.description && (\n <span className=\"step-description\">{step.description}</span>\n )}\n {step.optional && !step.completed && (\n <span className=\"step-optional\">Optional</span>\n )}\n </div>\n </div>\n {i < steps.length - 1 && (\n <div\n key={`connector-${i}`}\n className={['step-connector', (activeStep > i || step.completed) && 'is-active']\n .filter(Boolean)\n .join(' ')}\n />\n )}\n </>\n );\n })}\n </div>\n <div className=\"stepper-content\">\n {stepPanels.map((panel, i) => {\n const element = panel as ReactElement<AtlStepProps>;\n return (\n <div\n key={i}\n id={`atl-step-panel-${i}`}\n role=\"tabpanel\"\n aria-labelledby={`atl-step-${i}`}\n tabIndex={0}\n hidden={i !== activeStep}\n >\n {element.props.children}\n </div>\n );\n })}\n </div>\n </div>\n </StepperContext.Provider>\n );\n}\n\nexport interface AtlStepProps extends AtlStepSpec {\n /** Text displayed on the step indicator. Required. */\n label: string;\n /** Optional subtitle. */\n description?: string;\n /** Mark as completed (shows checkmark). */\n completed?: boolean;\n /** Mark as errored (shows X). */\n error?: boolean;\n /** Mark as optional. */\n optional?: boolean;\n /** Whether the step is disabled. */\n disabled?: boolean;\n children?: ReactNode;\n}\n\nexport function AtlStep({ children }: AtlStepProps) {\n return children;\n}\nAtlStep.displayName = 'AtlStep';\n"]}
@@ -1,22 +1,22 @@
1
1
  /* ============================================================
2
- llm-table.css — Styles for the React table component
2
+ atl-table.css — Styles for the React table component
3
3
  ============================================================ */
4
4
 
5
5
  /* ---------------------------------------------------------------------------
6
6
  Table host container
7
7
  --------------------------------------------------------------------------- */
8
- .llm-table {
8
+ .atl-table {
9
9
  display: block;
10
10
  font-family: var(--ui-font-family);
11
11
  color: var(--ui-color-text);
12
12
  }
13
13
 
14
- .llm-table-wrapper {
14
+ .atl-table-wrapper {
15
15
  width: 100%;
16
16
  overflow-x: auto;
17
17
  }
18
18
 
19
- .llm-table table {
19
+ .atl-table table {
20
20
  width: 100%;
21
21
  border-collapse: collapse;
22
22
  }
@@ -24,7 +24,7 @@
24
24
  /* ---------------------------------------------------------------------------
25
25
  Header cells
26
26
  --------------------------------------------------------------------------- */
27
- .llm-table thead th {
27
+ .atl-table thead th {
28
28
  font-size: var(--ui-font-size-xs);
29
29
  font-weight: var(--ui-font-weight-semibold);
30
30
  color: var(--ui-color-text-muted);
@@ -40,7 +40,7 @@
40
40
  /* ---------------------------------------------------------------------------
41
41
  Body cells
42
42
  --------------------------------------------------------------------------- */
43
- .llm-table tbody td {
43
+ .atl-table tbody td {
44
44
  border-bottom: 1px solid var(--ui-color-border);
45
45
  padding: var(--ui-spacing-3) var(--ui-spacing-4);
46
46
  vertical-align: middle;
@@ -51,20 +51,20 @@
51
51
  /* ---------------------------------------------------------------------------
52
52
  Size variants
53
53
  --------------------------------------------------------------------------- */
54
- .llm-table.size-sm thead th,
55
- .llm-table.size-sm tbody td {
54
+ .atl-table.size-sm thead th,
55
+ .atl-table.size-sm tbody td {
56
56
  padding: var(--ui-spacing-2) var(--ui-spacing-3);
57
57
  font-size: var(--ui-font-size-xs);
58
58
  }
59
59
 
60
- .llm-table.size-md thead th,
61
- .llm-table.size-md tbody td {
60
+ .atl-table.size-md thead th,
61
+ .atl-table.size-md tbody td {
62
62
  padding: var(--ui-spacing-3) var(--ui-spacing-4);
63
63
  font-size: var(--ui-font-size-sm);
64
64
  }
65
65
 
66
- .llm-table.size-lg thead th,
67
- .llm-table.size-lg tbody td {
66
+ .atl-table.size-lg thead th,
67
+ .atl-table.size-lg tbody td {
68
68
  padding: var(--ui-spacing-4) var(--ui-spacing-6);
69
69
  font-size: var(--ui-font-size-md);
70
70
  }
@@ -74,13 +74,13 @@
74
74
  --------------------------------------------------------------------------- */
75
75
 
76
76
  /* Striped: alternate even row background */
77
- .llm-table.variant-striped tbody tr:nth-child(even) td {
77
+ .atl-table.variant-striped tbody tr:nth-child(even) td {
78
78
  background-color: var(--ui-color-surface-sunken);
79
79
  }
80
80
 
81
81
  /* Bordered: all cell borders */
82
- .llm-table.variant-bordered thead th,
83
- .llm-table.variant-bordered tbody td {
82
+ .atl-table.variant-bordered thead th,
83
+ .atl-table.variant-bordered tbody td {
84
84
  border: 1px solid var(--ui-color-border);
85
85
  }
86
86
 
@@ -105,27 +105,27 @@ td.align-end {
105
105
  /* ---------------------------------------------------------------------------
106
106
  Row hover and selection
107
107
  --------------------------------------------------------------------------- */
108
- .llm-table tbody tr:hover td {
108
+ .atl-table tbody tr:hover td {
109
109
  background-color: var(--ui-color-surface-sunken);
110
110
  }
111
111
 
112
- .llm-table tbody tr.is-selected td {
112
+ .atl-table tbody tr.is-selected td {
113
113
  background-color: var(--ui-color-primary-light);
114
114
  }
115
115
 
116
116
  /* Keep selected color on hover */
117
- .llm-table tbody tr.is-selected:hover td {
117
+ .atl-table tbody tr.is-selected:hover td {
118
118
  background-color: var(--ui-color-primary-light);
119
119
  }
120
120
 
121
121
  /* Selection checkbox cell — fixed narrow width */
122
- .llm-tr-select-cell {
122
+ .atl-tr-select-cell {
123
123
  width: 2.75rem;
124
124
  text-align: center;
125
125
  }
126
126
 
127
127
  /* Strip default checkbox layout to center it in the cell */
128
- .llm-tr-select-cell .llm-checkbox label {
128
+ .atl-tr-select-cell .atl-checkbox label {
129
129
  justify-content: center;
130
130
  }
131
131
 
@@ -133,7 +133,7 @@ td.align-end {
133
133
  Sticky header
134
134
  z-index:1 is intentional — above sibling rows but below dropdowns (z-index:100)
135
135
  --------------------------------------------------------------------------- */
136
- .llm-table.is-sticky-header thead th {
136
+ .atl-table.is-sticky-header thead th {
137
137
  position: sticky;
138
138
  top: 0;
139
139
  z-index: 1;
@@ -143,7 +143,7 @@ td.align-end {
143
143
  /* ---------------------------------------------------------------------------
144
144
  Sort button
145
145
  --------------------------------------------------------------------------- */
146
- .llm-th-sort-btn {
146
+ .atl-th-sort-btn {
147
147
  all: unset;
148
148
  box-sizing: border-box;
149
149
  display: inline-flex;
@@ -156,38 +156,38 @@ td.align-end {
156
156
  width: 100%;
157
157
  }
158
158
 
159
- .llm-th-sort-btn:focus-visible {
159
+ .atl-th-sort-btn:focus-visible {
160
160
  outline: none;
161
161
  box-shadow: var(--ui-focus-ring);
162
162
  border-radius: var(--ui-radius-sm);
163
163
  }
164
164
 
165
- .llm-th-sort-icon {
165
+ .atl-th-sort-icon {
166
166
  flex-shrink: 0;
167
167
  }
168
168
 
169
- .llm-th-sort-asc-arrow,
170
- .llm-th-sort-desc-arrow {
169
+ .atl-th-sort-asc-arrow,
170
+ .atl-th-sort-desc-arrow {
171
171
  opacity: 0.25;
172
172
  transition: opacity var(--ui-transition-fast);
173
173
  }
174
174
 
175
- th.is-sorted .llm-th-sort-icon {
175
+ th.is-sorted .atl-th-sort-icon {
176
176
  color: var(--ui-color-primary);
177
177
  }
178
178
 
179
- th.sort-asc .llm-th-sort-asc-arrow {
179
+ th.sort-asc .atl-th-sort-asc-arrow {
180
180
  opacity: 1;
181
181
  }
182
182
 
183
- th.sort-desc .llm-th-sort-desc-arrow {
183
+ th.sort-desc .atl-th-sort-desc-arrow {
184
184
  opacity: 1;
185
185
  }
186
186
 
187
187
  /* ---------------------------------------------------------------------------
188
188
  Empty state
189
189
  --------------------------------------------------------------------------- */
190
- .llm-tbody-empty-cell {
190
+ .atl-tbody-empty-cell {
191
191
  text-align: center;
192
192
  padding: var(--ui-spacing-12) var(--ui-spacing-4) !important;
193
193
  color: var(--ui-color-text-muted);
@@ -0,0 +1,40 @@
1
+ import { HTMLAttributes, ReactNode, TdHTMLAttributes, ThHTMLAttributes } from 'react';
2
+ import type { AtlTableSpec, AtlTbodySpec, AtlTrSpec, AtlThSpec, AtlTdSpec, AtlSortDirection } from '../spec';
3
+ import './atl-table.css';
4
+ export type { AtlSortDirection };
5
+ export interface AtlTableProps extends HTMLAttributes<HTMLDivElement>, AtlTableSpec {
6
+ children?: ReactNode;
7
+ /**
8
+ * Accessible name for the scrollable table region. Surfaces to
9
+ * screen readers as the region's label so keyboard users who
10
+ * scroll the wrapper know what they're scrolling. Defaults to
11
+ * `"Table"` if unset.
12
+ */
13
+ 'aria-label'?: string;
14
+ }
15
+ export declare function AtlTable({ variant, size, stickyHeader, children, className, 'aria-label': ariaLabel, ...rest }: AtlTableProps): import("react").JSX.Element;
16
+ export interface AtlTheadProps {
17
+ children?: ReactNode;
18
+ }
19
+ export declare function AtlThead({ children }: AtlTheadProps): import("react").JSX.Element;
20
+ export interface AtlTbodyProps extends AtlTbodySpec {
21
+ children?: ReactNode;
22
+ /** Content shown in place of rows when empty=true. */
23
+ emptyContent?: ReactNode;
24
+ }
25
+ export declare function AtlTbody({ empty, colSpan, children, emptyContent }: AtlTbodyProps): import("react").JSX.Element;
26
+ export interface AtlTrProps extends AtlTrSpec {
27
+ children?: ReactNode;
28
+ onSelectedChange?: (selected: boolean) => void;
29
+ }
30
+ export declare function AtlTr({ selected, selectable, children, onSelectedChange, }: AtlTrProps): import("react").JSX.Element;
31
+ export interface AtlThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'align'>, AtlThSpec {
32
+ children?: ReactNode;
33
+ onSort?: (direction: AtlSortDirection) => void;
34
+ }
35
+ export declare function AtlTh({ sortable, sortDirection, align, width, children, onSort, className, ...rest }: AtlThProps): import("react").JSX.Element;
36
+ export interface AtlTdProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'>, AtlTdSpec {
37
+ children?: ReactNode;
38
+ }
39
+ export declare function AtlTd({ align, children, className, ...rest }: AtlTdProps): import("react").JSX.Element;
40
+ //# sourceMappingURL=atl-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-table.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/table/llm-table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,iBAAiB,CAAC;AAEzB,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAMjC,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY;IACjF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAmB,EACnB,IAAW,EACX,YAAoB,EACpB,QAAQ,EACR,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,GAAG,IAAI,EACR,EAAE,aAAa,+BA2Bf;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,+BAEnD;AAMD,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAa,EAAE,OAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,+BAc7F;AAMD,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAgB,EAChB,UAAkB,EAClB,QAAQ,EACR,gBAAgB,GACjB,EAAE,UAAU,+BAWZ;AAMD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;IAClG,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAgB,EAChB,aAAoB,EACpB,KAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE,UAAU,+BAoDZ;AAMD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;IAClG,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,+BAOlF"}
1
+ {"version":3,"file":"atl-table.d.ts","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/table/atl-table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,iBAAiB,CAAC;AAEzB,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAMjC,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY;IACjF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAmB,EACnB,IAAW,EACX,YAAoB,EACpB,QAAQ,EACR,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,GAAG,IAAI,EACR,EAAE,aAAa,+BA2Bf;AAMD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,+BAEnD;AAMD,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAa,EAAE,OAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,aAAa,+BAc7F;AAMD,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAgB,EAChB,UAAkB,EAClB,QAAQ,EACR,gBAAgB,GACjB,EAAE,UAAU,+BAWZ;AAMD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;IAClG,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAChD;AAED,wBAAgB,KAAK,CAAC,EACpB,QAAgB,EAChB,aAAoB,EACpB,KAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,EACT,GAAG,IAAI,EACR,EAAE,UAAU,+BAoDZ;AAMD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS;IAClG,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,+BAOlF"}
@@ -1,9 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { LlmCheckbox } from '../checkbox/llm-checkbox';
3
- import './llm-table.css';
4
- export function LlmTable({ variant = 'default', size = 'md', stickyHeader = false, children, className, 'aria-label': ariaLabel, ...rest }) {
2
+ import { AtlCheckbox } from '../checkbox/atl-checkbox';
3
+ import './atl-table.css';
4
+ export function AtlTable({ variant = 'default', size = 'md', stickyHeader = false, children, className, 'aria-label': ariaLabel, ...rest }) {
5
5
  const classes = [
6
- 'llm-table',
6
+ 'atl-table',
7
7
  `variant-${variant}`,
8
8
  `size-${size}`,
9
9
  stickyHeader && 'is-sticky-header',
@@ -11,18 +11,18 @@ export function LlmTable({ variant = 'default', size = 'md', stickyHeader = fals
11
11
  ]
12
12
  .filter(Boolean)
13
13
  .join(' ');
14
- return (_jsx("div", { className: classes, ...rest, children: _jsx("div", { className: "llm-table-wrapper", tabIndex: 0, role: "region", "aria-label": ariaLabel ?? 'Table', children: _jsx("table", { children: children }) }) }));
14
+ return (_jsx("div", { className: classes, ...rest, children: _jsx("div", { className: "atl-table-wrapper", tabIndex: 0, role: "region", "aria-label": ariaLabel ?? 'Table', children: _jsx("table", { children: children }) }) }));
15
15
  }
16
- export function LlmThead({ children }) {
16
+ export function AtlThead({ children }) {
17
17
  return _jsx("thead", { children: children });
18
18
  }
19
- export function LlmTbody({ empty = false, colSpan = 1, children, emptyContent }) {
20
- return (_jsx("tbody", { children: !empty ? (children) : (_jsx("tr", { children: _jsx("td", { colSpan: colSpan, className: "llm-tbody-empty-cell", children: emptyContent }) })) }));
19
+ export function AtlTbody({ empty = false, colSpan = 1, children, emptyContent }) {
20
+ return (_jsx("tbody", { children: !empty ? (children) : (_jsx("tr", { children: _jsx("td", { colSpan: colSpan, className: "atl-tbody-empty-cell", children: emptyContent }) })) }));
21
21
  }
22
- export function LlmTr({ selected = false, selectable = false, children, onSelectedChange, }) {
23
- return (_jsxs("tr", { "aria-selected": selectable ? selected : undefined, className: selected ? 'is-selected' : undefined, children: [selectable && (_jsx("td", { className: "llm-tr-select-cell", children: _jsx(LlmCheckbox, { checked: selected, onCheckedChange: onSelectedChange }) })), children] }));
22
+ export function AtlTr({ selected = false, selectable = false, children, onSelectedChange, }) {
23
+ return (_jsxs("tr", { "aria-selected": selectable ? selected : undefined, className: selected ? 'is-selected' : undefined, children: [selectable && (_jsx("td", { className: "atl-tr-select-cell", children: _jsx(AtlCheckbox, { checked: selected, onCheckedChange: onSelectedChange }) })), children] }));
24
24
  }
25
- export function LlmTh({ sortable = false, sortDirection = null, align = 'start', width, children, onSort, className, ...rest }) {
25
+ export function AtlTh({ sortable = false, sortDirection = null, align = 'start', width, children, onSort, className, ...rest }) {
26
26
  const classes = [
27
27
  `align-${align}`,
28
28
  sortDirection && 'is-sorted',
@@ -43,10 +43,10 @@ export function LlmTh({ sortable = false, sortDirection = null, align = 'start',
43
43
  const next = sortDirection === null ? 'asc' : sortDirection === 'asc' ? 'desc' : null;
44
44
  onSort?.(next);
45
45
  }
46
- return (_jsx("th", { "aria-sort": ariaSort, style: width ? { width } : undefined, className: classes, ...rest, children: sortable ? (_jsxs("button", { type: "button", className: "llm-th-sort-btn", onClick: cycleSort, children: [children, _jsxs("svg", { className: "llm-th-sort-icon", "aria-hidden": "true", width: "12", height: "16", viewBox: "0 0 12 16", fill: "none", children: [_jsx("path", { className: "llm-th-sort-asc-arrow", d: "M6 2L11 8H1L6 2Z", fill: "currentColor" }), _jsx("path", { className: "llm-th-sort-desc-arrow", d: "M6 14L1 8H11L6 14Z", fill: "currentColor" })] })] })) : (children) }));
46
+ return (_jsx("th", { "aria-sort": ariaSort, style: width ? { width } : undefined, className: classes, ...rest, children: sortable ? (_jsxs("button", { type: "button", className: "atl-th-sort-btn", onClick: cycleSort, children: [children, _jsxs("svg", { className: "atl-th-sort-icon", "aria-hidden": "true", width: "12", height: "16", viewBox: "0 0 12 16", fill: "none", children: [_jsx("path", { className: "atl-th-sort-asc-arrow", d: "M6 2L11 8H1L6 2Z", fill: "currentColor" }), _jsx("path", { className: "atl-th-sort-desc-arrow", d: "M6 14L1 8H11L6 14Z", fill: "currentColor" })] })] })) : (children) }));
47
47
  }
48
- export function LlmTd({ align = 'start', children, className, ...rest }) {
48
+ export function AtlTd({ align = 'start', children, className, ...rest }) {
49
49
  const classes = [`align-${align}`, className].filter(Boolean).join(' ');
50
50
  return (_jsx("td", { className: classes, ...rest, children: children }));
51
51
  }
52
- //# sourceMappingURL=llm-table.js.map
52
+ //# sourceMappingURL=atl-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"llm-table.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/table/llm-table.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HTMLAttributes, ReactNode, TdHTMLAttributes, ThHTMLAttributes } from 'react';\nimport type {\n LlmTableSpec,\n LlmTbodySpec,\n LlmTrSpec,\n LlmThSpec,\n LlmTdSpec,\n LlmSortDirection,\n} from '../spec';\nimport { LlmCheckbox } from '../checkbox/llm-checkbox';\nimport './llm-table.css';\n\nexport type { LlmSortDirection };\n\n// ---------------------------------------------------------------------------\n// LlmTable\n// ---------------------------------------------------------------------------\n\nexport interface LlmTableProps extends HTMLAttributes<HTMLDivElement>, LlmTableSpec {\n children?: ReactNode;\n /**\n * Accessible name for the scrollable table region. Surfaces to\n * screen readers as the region's label so keyboard users who\n * scroll the wrapper know what they're scrolling. Defaults to\n * `\"Table\"` if unset.\n */\n 'aria-label'?: string;\n}\n\nexport function LlmTable({\n variant = 'default',\n size = 'md',\n stickyHeader = false,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}: LlmTableProps) {\n const classes = [\n 'llm-table',\n `variant-${variant}`,\n `size-${size}`,\n stickyHeader && 'is-sticky-header',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} {...rest}>\n {/* The wrapper is the scrollable region — give it tabindex=0 so\n * keyboard users can scroll horizontally through wide tables.\n * role=region + aria-label expose it as a labelled landmark for\n * screen readers (axe rule: scrollable-region-focusable). */}\n <div\n className=\"llm-table-wrapper\"\n tabIndex={0}\n role=\"region\"\n aria-label={ariaLabel ?? 'Table'}\n >\n <table>{children}</table>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmThead\n// ---------------------------------------------------------------------------\n\nexport interface LlmTheadProps {\n children?: ReactNode;\n}\n\nexport function LlmThead({ children }: LlmTheadProps) {\n return <thead>{children}</thead>;\n}\n\n// ---------------------------------------------------------------------------\n// LlmTbody\n// ---------------------------------------------------------------------------\n\nexport interface LlmTbodyProps extends LlmTbodySpec {\n children?: ReactNode;\n /** Content shown in place of rows when empty=true. */\n emptyContent?: ReactNode;\n}\n\nexport function LlmTbody({ empty = false, colSpan = 1, children, emptyContent }: LlmTbodyProps) {\n return (\n <tbody>\n {!empty ? (\n children\n ) : (\n <tr>\n <td colSpan={colSpan} className=\"llm-tbody-empty-cell\">\n {emptyContent}\n </td>\n </tr>\n )}\n </tbody>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmTr\n// ---------------------------------------------------------------------------\n\nexport interface LlmTrProps extends LlmTrSpec {\n children?: ReactNode;\n onSelectedChange?: (selected: boolean) => void;\n}\n\nexport function LlmTr({\n selected = false,\n selectable = false,\n children,\n onSelectedChange,\n}: LlmTrProps) {\n return (\n <tr aria-selected={selectable ? selected : undefined} className={selected ? 'is-selected' : undefined}>\n {selectable && (\n <td className=\"llm-tr-select-cell\">\n <LlmCheckbox checked={selected} onCheckedChange={onSelectedChange} />\n </td>\n )}\n {children}\n </tr>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmTh\n// ---------------------------------------------------------------------------\n\nexport interface LlmThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'align'>, LlmThSpec {\n children?: ReactNode;\n onSort?: (direction: LlmSortDirection) => void;\n}\n\nexport function LlmTh({\n sortable = false,\n sortDirection = null,\n align = 'start',\n width,\n children,\n onSort,\n className,\n ...rest\n}: LlmThProps) {\n const classes = [\n `align-${align}`,\n sortDirection && 'is-sorted',\n sortDirection === 'asc' && 'sort-asc',\n sortDirection === 'desc' && 'sort-desc',\n className,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const ariaSort = sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined;\n\n function cycleSort() {\n const next: LlmSortDirection =\n sortDirection === null ? 'asc' : sortDirection === 'asc' ? 'desc' : null;\n onSort?.(next);\n }\n\n return (\n <th\n aria-sort={ariaSort}\n style={width ? { width } : undefined}\n className={classes}\n {...rest}\n >\n {sortable ? (\n <button type=\"button\" className=\"llm-th-sort-btn\" onClick={cycleSort}>\n {children}\n <svg\n className=\"llm-th-sort-icon\"\n aria-hidden=\"true\"\n width=\"12\"\n height=\"16\"\n viewBox=\"0 0 12 16\"\n fill=\"none\"\n >\n <path className=\"llm-th-sort-asc-arrow\" d=\"M6 2L11 8H1L6 2Z\" fill=\"currentColor\" />\n <path className=\"llm-th-sort-desc-arrow\" d=\"M6 14L1 8H11L6 14Z\" fill=\"currentColor\" />\n </svg>\n </button>\n ) : (\n children\n )}\n </th>\n );\n}\n\n// ---------------------------------------------------------------------------\n// LlmTd\n// ---------------------------------------------------------------------------\n\nexport interface LlmTdProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'>, LlmTdSpec {\n children?: ReactNode;\n}\n\nexport function LlmTd({ align = 'start', children, className, ...rest }: LlmTdProps) {\n const classes = [`align-${align}`, className].filter(Boolean).join(' ');\n return (\n <td className={classes} {...rest}>\n {children}\n </td>\n );\n}\n"]}
1
+ {"version":3,"file":"atl-table.js","sourceRoot":"","sources":["../../../../../../libs/react/src/lib/table/atl-table.tsx"],"names":[],"mappings":"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","sourcesContent":["import { HTMLAttributes, ReactNode, TdHTMLAttributes, ThHTMLAttributes } from 'react';\nimport type {\n AtlTableSpec,\n AtlTbodySpec,\n AtlTrSpec,\n AtlThSpec,\n AtlTdSpec,\n AtlSortDirection,\n} from '../spec';\nimport { AtlCheckbox } from '../checkbox/atl-checkbox';\nimport './atl-table.css';\n\nexport type { AtlSortDirection };\n\n// ---------------------------------------------------------------------------\n// AtlTable\n// ---------------------------------------------------------------------------\n\nexport interface AtlTableProps extends HTMLAttributes<HTMLDivElement>, AtlTableSpec {\n children?: ReactNode;\n /**\n * Accessible name for the scrollable table region. Surfaces to\n * screen readers as the region's label so keyboard users who\n * scroll the wrapper know what they're scrolling. Defaults to\n * `\"Table\"` if unset.\n */\n 'aria-label'?: string;\n}\n\nexport function AtlTable({\n variant = 'default',\n size = 'md',\n stickyHeader = false,\n children,\n className,\n 'aria-label': ariaLabel,\n ...rest\n}: AtlTableProps) {\n const classes = [\n 'atl-table',\n `variant-${variant}`,\n `size-${size}`,\n stickyHeader && 'is-sticky-header',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={classes} {...rest}>\n {/* The wrapper is the scrollable region — give it tabindex=0 so\n * keyboard users can scroll horizontally through wide tables.\n * role=region + aria-label expose it as a labelled landmark for\n * screen readers (axe rule: scrollable-region-focusable). */}\n <div\n className=\"atl-table-wrapper\"\n tabIndex={0}\n role=\"region\"\n aria-label={ariaLabel ?? 'Table'}\n >\n <table>{children}</table>\n </div>\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// AtlThead\n// ---------------------------------------------------------------------------\n\nexport interface AtlTheadProps {\n children?: ReactNode;\n}\n\nexport function AtlThead({ children }: AtlTheadProps) {\n return <thead>{children}</thead>;\n}\n\n// ---------------------------------------------------------------------------\n// AtlTbody\n// ---------------------------------------------------------------------------\n\nexport interface AtlTbodyProps extends AtlTbodySpec {\n children?: ReactNode;\n /** Content shown in place of rows when empty=true. */\n emptyContent?: ReactNode;\n}\n\nexport function AtlTbody({ empty = false, colSpan = 1, children, emptyContent }: AtlTbodyProps) {\n return (\n <tbody>\n {!empty ? (\n children\n ) : (\n <tr>\n <td colSpan={colSpan} className=\"atl-tbody-empty-cell\">\n {emptyContent}\n </td>\n </tr>\n )}\n </tbody>\n );\n}\n\n// ---------------------------------------------------------------------------\n// AtlTr\n// ---------------------------------------------------------------------------\n\nexport interface AtlTrProps extends AtlTrSpec {\n children?: ReactNode;\n onSelectedChange?: (selected: boolean) => void;\n}\n\nexport function AtlTr({\n selected = false,\n selectable = false,\n children,\n onSelectedChange,\n}: AtlTrProps) {\n return (\n <tr aria-selected={selectable ? selected : undefined} className={selected ? 'is-selected' : undefined}>\n {selectable && (\n <td className=\"atl-tr-select-cell\">\n <AtlCheckbox checked={selected} onCheckedChange={onSelectedChange} />\n </td>\n )}\n {children}\n </tr>\n );\n}\n\n// ---------------------------------------------------------------------------\n// AtlTh\n// ---------------------------------------------------------------------------\n\nexport interface AtlThProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, 'align'>, AtlThSpec {\n children?: ReactNode;\n onSort?: (direction: AtlSortDirection) => void;\n}\n\nexport function AtlTh({\n sortable = false,\n sortDirection = null,\n align = 'start',\n width,\n children,\n onSort,\n className,\n ...rest\n}: AtlThProps) {\n const classes = [\n `align-${align}`,\n sortDirection && 'is-sorted',\n sortDirection === 'asc' && 'sort-asc',\n sortDirection === 'desc' && 'sort-desc',\n className,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const ariaSort = sortable\n ? sortDirection === 'asc'\n ? 'ascending'\n : sortDirection === 'desc'\n ? 'descending'\n : 'none'\n : undefined;\n\n function cycleSort() {\n const next: AtlSortDirection =\n sortDirection === null ? 'asc' : sortDirection === 'asc' ? 'desc' : null;\n onSort?.(next);\n }\n\n return (\n <th\n aria-sort={ariaSort}\n style={width ? { width } : undefined}\n className={classes}\n {...rest}\n >\n {sortable ? (\n <button type=\"button\" className=\"atl-th-sort-btn\" onClick={cycleSort}>\n {children}\n <svg\n className=\"atl-th-sort-icon\"\n aria-hidden=\"true\"\n width=\"12\"\n height=\"16\"\n viewBox=\"0 0 12 16\"\n fill=\"none\"\n >\n <path className=\"atl-th-sort-asc-arrow\" d=\"M6 2L11 8H1L6 2Z\" fill=\"currentColor\" />\n <path className=\"atl-th-sort-desc-arrow\" d=\"M6 14L1 8H11L6 14Z\" fill=\"currentColor\" />\n </svg>\n </button>\n ) : (\n children\n )}\n </th>\n );\n}\n\n// ---------------------------------------------------------------------------\n// AtlTd\n// ---------------------------------------------------------------------------\n\nexport interface AtlTdProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, 'align'>, AtlTdSpec {\n children?: ReactNode;\n}\n\nexport function AtlTd({ align = 'start', children, className, ...rest }: AtlTdProps) {\n const classes = [`align-${align}`, className].filter(Boolean).join(' ');\n return (\n <td className={classes} {...rest}>\n {children}\n </td>\n );\n}\n"]}
@@ -1,11 +1,11 @@
1
- .llm-tab-group {
1
+ .atl-tab-group {
2
2
  display: block;
3
3
  font-family: var(--ui-font-family);
4
4
  color: var(--ui-color-text);
5
5
  }
6
6
 
7
7
  /* ─── Tab list ─── */
8
- .llm-tab-group .tablist {
8
+ .atl-tab-group .tablist {
9
9
  display: flex;
10
10
  gap: var(--ui-spacing-2);
11
11
  border-bottom: 1px solid var(--ui-color-border);
@@ -13,12 +13,12 @@
13
13
  scrollbar-width: none;
14
14
  }
15
15
 
16
- .llm-tab-group .tablist::-webkit-scrollbar {
16
+ .atl-tab-group .tablist::-webkit-scrollbar {
17
17
  display: none;
18
18
  }
19
19
 
20
20
  /* ─── Tab button ─── */
21
- .llm-tab-group .tablist button {
21
+ .atl-tab-group .tablist button {
22
22
  all: unset;
23
23
  box-sizing: border-box;
24
24
  position: relative;
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  /* Active indicator (underline) — 3px for modern weight */
41
- .llm-tab-group .tablist button::after {
41
+ .atl-tab-group .tablist button::after {
42
42
  content: '';
43
43
  position: absolute;
44
44
  bottom: -1px;
@@ -50,46 +50,46 @@
50
50
  transition: background var(--ui-transition-fast);
51
51
  }
52
52
 
53
- .llm-tab-group .tablist button.is-active {
53
+ .atl-tab-group .tablist button.is-active {
54
54
  color: var(--ui-color-primary);
55
55
  }
56
56
 
57
- .llm-tab-group .tablist button.is-active::after {
57
+ .atl-tab-group .tablist button.is-active::after {
58
58
  background: var(--ui-color-primary);
59
59
  }
60
60
 
61
61
  /* Hover */
62
- .llm-tab-group .tablist button:hover:not(.is-disabled):not(.is-active) {
62
+ .atl-tab-group .tablist button:hover:not(.is-disabled):not(.is-active) {
63
63
  color: var(--ui-color-text);
64
64
  background: var(--ui-color-surface-sunken);
65
65
  }
66
66
 
67
67
  /* Focus */
68
- .llm-tab-group .tablist button:focus-visible {
68
+ .atl-tab-group .tablist button:focus-visible {
69
69
  outline: none;
70
70
  box-shadow: var(--ui-focus-ring);
71
71
  border-radius: var(--ui-radius-md);
72
72
  }
73
73
 
74
74
  /* Disabled */
75
- .llm-tab-group .tablist button.is-disabled {
75
+ .atl-tab-group .tablist button.is-disabled {
76
76
  opacity: var(--ui-opacity-disabled);
77
77
  cursor: not-allowed;
78
78
  }
79
79
 
80
80
  /* ─── Tab panel ─── */
81
- .llm-tab-group [role="tabpanel"] {
81
+ .atl-tab-group [role="tabpanel"] {
82
82
  padding: var(--ui-spacing-5) 0;
83
83
  }
84
84
 
85
- .llm-tab-group [role="tabpanel"]:focus-visible {
85
+ .atl-tab-group [role="tabpanel"]:focus-visible {
86
86
  outline: none;
87
87
  box-shadow: var(--ui-focus-ring);
88
88
  border-radius: var(--ui-radius-md);
89
89
  }
90
90
 
91
91
  /* ─── Pills variant ─── */
92
- .llm-tab-group.variant-pills .tablist {
92
+ .atl-tab-group.variant-pills .tablist {
93
93
  border-bottom: none;
94
94
  gap: var(--ui-spacing-2);
95
95
  padding: var(--ui-spacing-1);
@@ -97,24 +97,24 @@
97
97
  border-radius: var(--ui-radius-lg);
98
98
  }
99
99
 
100
- .llm-tab-group.variant-pills .tablist button {
100
+ .atl-tab-group.variant-pills .tablist button {
101
101
  border-radius: var(--ui-radius-md);
102
102
  min-height: 2rem;
103
103
  padding: var(--ui-spacing-2) var(--ui-spacing-4);
104
104
  font-size: var(--ui-font-size-sm);
105
105
  }
106
106
 
107
- .llm-tab-group.variant-pills .tablist button::after {
107
+ .atl-tab-group.variant-pills .tablist button::after {
108
108
  display: none;
109
109
  }
110
110
 
111
- .llm-tab-group.variant-pills .tablist button.is-active {
111
+ .atl-tab-group.variant-pills .tablist button.is-active {
112
112
  background: var(--ui-color-surface);
113
113
  color: var(--ui-color-text);
114
114
  box-shadow: var(--ui-shadow-sm);
115
115
  }
116
116
 
117
- .llm-tab-group.variant-pills .tablist button:hover:not(.is-disabled):not(.is-active) {
117
+ .atl-tab-group.variant-pills .tablist button:hover:not(.is-disabled):not(.is-active) {
118
118
  background: transparent;
119
119
  color: var(--ui-color-text);
120
120
  }