@ttoss/fsl-ui 0.2.4

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 (174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +30 -0
  4. package/dist/components/Breadcrumbs/Breadcrumbs.cjs +129 -0
  5. package/dist/components/Breadcrumbs/Breadcrumbs.d.cts +61 -0
  6. package/dist/components/Breadcrumbs/Breadcrumbs.d.mts +61 -0
  7. package/dist/components/Breadcrumbs/Breadcrumbs.mjs +126 -0
  8. package/dist/components/Button/Button.cjs +80 -0
  9. package/dist/components/Button/Button.d.cts +68 -0
  10. package/dist/components/Button/Button.d.mts +68 -0
  11. package/dist/components/Button/Button.mjs +79 -0
  12. package/dist/components/Checkbox/Checkbox.cjs +183 -0
  13. package/dist/components/Checkbox/Checkbox.d.cts +45 -0
  14. package/dist/components/Checkbox/Checkbox.d.mts +45 -0
  15. package/dist/components/Checkbox/Checkbox.mjs +182 -0
  16. package/dist/components/CheckboxGroup/CheckboxGroup.cjs +97 -0
  17. package/dist/components/CheckboxGroup/CheckboxGroup.d.cts +56 -0
  18. package/dist/components/CheckboxGroup/CheckboxGroup.d.mts +56 -0
  19. package/dist/components/CheckboxGroup/CheckboxGroup.mjs +96 -0
  20. package/dist/components/FileTrigger/FileTrigger.cjs +51 -0
  21. package/dist/components/FileTrigger/FileTrigger.d.cts +52 -0
  22. package/dist/components/FileTrigger/FileTrigger.d.mts +52 -0
  23. package/dist/components/FileTrigger/FileTrigger.mjs +50 -0
  24. package/dist/components/GridList/GridList.cjs +220 -0
  25. package/dist/components/GridList/GridList.d.cts +72 -0
  26. package/dist/components/GridList/GridList.d.mts +72 -0
  27. package/dist/components/GridList/GridList.mjs +217 -0
  28. package/dist/components/Group/Group.cjs +77 -0
  29. package/dist/components/Group/Group.d.cts +61 -0
  30. package/dist/components/Group/Group.d.mts +61 -0
  31. package/dist/components/Group/Group.mjs +74 -0
  32. package/dist/components/Icon/Icon.cjs +52 -0
  33. package/dist/components/Icon/Icon.mjs +52 -0
  34. package/dist/components/Icon/glyphs.cjs +72 -0
  35. package/dist/components/Icon/glyphs.mjs +63 -0
  36. package/dist/components/Link/Link.cjs +62 -0
  37. package/dist/components/Link/Link.d.cts +38 -0
  38. package/dist/components/Link/Link.d.mts +38 -0
  39. package/dist/components/Link/Link.mjs +61 -0
  40. package/dist/components/ListBox/ListBox.cjs +126 -0
  41. package/dist/components/ListBox/ListBox.d.cts +63 -0
  42. package/dist/components/ListBox/ListBox.d.mts +63 -0
  43. package/dist/components/ListBox/ListBox.mjs +123 -0
  44. package/dist/components/Meter/Meter.cjs +126 -0
  45. package/dist/components/Meter/Meter.d.cts +63 -0
  46. package/dist/components/Meter/Meter.d.mts +63 -0
  47. package/dist/components/Meter/Meter.mjs +125 -0
  48. package/dist/components/NumberField/NumberField.cjs +221 -0
  49. package/dist/components/NumberField/NumberField.d.cts +68 -0
  50. package/dist/components/NumberField/NumberField.d.mts +68 -0
  51. package/dist/components/NumberField/NumberField.mjs +220 -0
  52. package/dist/components/ProgressBar/ProgressBar.cjs +132 -0
  53. package/dist/components/ProgressBar/ProgressBar.d.cts +56 -0
  54. package/dist/components/ProgressBar/ProgressBar.d.mts +56 -0
  55. package/dist/components/ProgressBar/ProgressBar.mjs +129 -0
  56. package/dist/components/RadioGroup/RadioGroup.cjs +218 -0
  57. package/dist/components/RadioGroup/RadioGroup.d.cts +82 -0
  58. package/dist/components/RadioGroup/RadioGroup.d.mts +82 -0
  59. package/dist/components/RadioGroup/RadioGroup.mjs +215 -0
  60. package/dist/components/Select/Select.cjs +253 -0
  61. package/dist/components/Select/Select.d.cts +86 -0
  62. package/dist/components/Select/Select.d.mts +86 -0
  63. package/dist/components/Select/Select.mjs +250 -0
  64. package/dist/components/Separator/Separator.cjs +64 -0
  65. package/dist/components/Separator/Separator.d.cts +44 -0
  66. package/dist/components/Separator/Separator.d.mts +44 -0
  67. package/dist/components/Separator/Separator.mjs +63 -0
  68. package/dist/components/Slider/Slider.cjs +160 -0
  69. package/dist/components/Slider/Slider.d.cts +45 -0
  70. package/dist/components/Slider/Slider.d.mts +45 -0
  71. package/dist/components/Slider/Slider.mjs +159 -0
  72. package/dist/components/Switch/Switch.cjs +176 -0
  73. package/dist/components/Switch/Switch.d.cts +43 -0
  74. package/dist/components/Switch/Switch.d.mts +43 -0
  75. package/dist/components/Switch/Switch.mjs +175 -0
  76. package/dist/components/Tabs/Tabs.cjs +180 -0
  77. package/dist/components/Tabs/Tabs.d.cts +85 -0
  78. package/dist/components/Tabs/Tabs.d.mts +85 -0
  79. package/dist/components/Tabs/Tabs.mjs +173 -0
  80. package/dist/components/Toast/Toast.cjs +218 -0
  81. package/dist/components/Toast/Toast.d.cts +96 -0
  82. package/dist/components/Toast/Toast.d.mts +96 -0
  83. package/dist/components/Toast/Toast.mjs +214 -0
  84. package/dist/components/ToggleButton/ToggleButton.cjs +125 -0
  85. package/dist/components/ToggleButton/ToggleButton.d.cts +43 -0
  86. package/dist/components/ToggleButton/ToggleButton.d.mts +43 -0
  87. package/dist/components/ToggleButton/ToggleButton.mjs +124 -0
  88. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.cjs +48 -0
  89. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.d.cts +41 -0
  90. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.d.mts +41 -0
  91. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.mjs +47 -0
  92. package/dist/components/Toolbar/Toolbar.cjs +67 -0
  93. package/dist/components/Toolbar/Toolbar.d.cts +60 -0
  94. package/dist/components/Toolbar/Toolbar.d.mts +60 -0
  95. package/dist/components/Toolbar/Toolbar.mjs +66 -0
  96. package/dist/composites/Accordion/Accordion.cjs +279 -0
  97. package/dist/composites/Accordion/Accordion.d.cts +176 -0
  98. package/dist/composites/Accordion/Accordion.d.mts +176 -0
  99. package/dist/composites/Accordion/Accordion.mjs +270 -0
  100. package/dist/composites/ConfirmationDialog/ConfirmationDialog.cjs +206 -0
  101. package/dist/composites/ConfirmationDialog/ConfirmationDialog.d.cts +166 -0
  102. package/dist/composites/ConfirmationDialog/ConfirmationDialog.d.mts +166 -0
  103. package/dist/composites/ConfirmationDialog/ConfirmationDialog.mjs +203 -0
  104. package/dist/composites/Dialog/Dialog.cjs +372 -0
  105. package/dist/composites/Dialog/Dialog.d.cts +234 -0
  106. package/dist/composites/Dialog/Dialog.d.mts +234 -0
  107. package/dist/composites/Dialog/Dialog.mjs +360 -0
  108. package/dist/composites/Disclosure/Disclosure.cjs +214 -0
  109. package/dist/composites/Disclosure/Disclosure.d.cts +118 -0
  110. package/dist/composites/Disclosure/Disclosure.d.mts +118 -0
  111. package/dist/composites/Disclosure/Disclosure.mjs +207 -0
  112. package/dist/composites/Form/Form.cjs +161 -0
  113. package/dist/composites/Form/Form.d.cts +176 -0
  114. package/dist/composites/Form/Form.d.mts +176 -0
  115. package/dist/composites/Form/Form.mjs +156 -0
  116. package/dist/composites/Menu/Menu.cjs +190 -0
  117. package/dist/composites/Menu/Menu.d.cts +158 -0
  118. package/dist/composites/Menu/Menu.d.mts +158 -0
  119. package/dist/composites/Menu/Menu.mjs +186 -0
  120. package/dist/composites/Popover/Popover.cjs +80 -0
  121. package/dist/composites/Popover/Popover.d.cts +56 -0
  122. package/dist/composites/Popover/Popover.d.mts +56 -0
  123. package/dist/composites/Popover/Popover.mjs +78 -0
  124. package/dist/composites/SearchField/SearchField.cjs +194 -0
  125. package/dist/composites/SearchField/SearchField.d.cts +81 -0
  126. package/dist/composites/SearchField/SearchField.d.mts +81 -0
  127. package/dist/composites/SearchField/SearchField.mjs +189 -0
  128. package/dist/composites/TagGroup/TagGroup.cjs +212 -0
  129. package/dist/composites/TagGroup/TagGroup.d.cts +84 -0
  130. package/dist/composites/TagGroup/TagGroup.d.mts +84 -0
  131. package/dist/composites/TagGroup/TagGroup.mjs +209 -0
  132. package/dist/composites/TextArea/TextArea.cjs +190 -0
  133. package/dist/composites/TextArea/TextArea.d.cts +95 -0
  134. package/dist/composites/TextArea/TextArea.d.mts +95 -0
  135. package/dist/composites/TextArea/TextArea.mjs +181 -0
  136. package/dist/composites/TextField/TextField.cjs +200 -0
  137. package/dist/composites/TextField/TextField.d.cts +111 -0
  138. package/dist/composites/TextField/TextField.d.mts +111 -0
  139. package/dist/composites/TextField/TextField.mjs +191 -0
  140. package/dist/composites/Tooltip/Tooltip.cjs +79 -0
  141. package/dist/composites/Tooltip/Tooltip.d.cts +53 -0
  142. package/dist/composites/Tooltip/Tooltip.d.mts +53 -0
  143. package/dist/composites/Tooltip/Tooltip.mjs +77 -0
  144. package/dist/composites/Wizard/Wizard.cjs +333 -0
  145. package/dist/composites/Wizard/Wizard.d.cts +206 -0
  146. package/dist/composites/Wizard/Wizard.d.mts +206 -0
  147. package/dist/composites/Wizard/Wizard.mjs +324 -0
  148. package/dist/composites/scope.cjs +124 -0
  149. package/dist/composites/scope.mjs +121 -0
  150. package/dist/index.cjs +186 -0
  151. package/dist/index.d.cts +37 -0
  152. package/dist/index.d.mts +37 -0
  153. package/dist/index.mjs +39 -0
  154. package/dist/semantics/componentMeta.d.cts +37 -0
  155. package/dist/semantics/componentMeta.d.mts +37 -0
  156. package/dist/semantics/index.cjs +16 -0
  157. package/dist/semantics/index.d.cts +4 -0
  158. package/dist/semantics/index.d.mts +4 -0
  159. package/dist/semantics/index.mjs +3 -0
  160. package/dist/semantics/taxonomy.cjs +150 -0
  161. package/dist/semantics/taxonomy.d.cts +153 -0
  162. package/dist/semantics/taxonomy.d.mts +153 -0
  163. package/dist/semantics/taxonomy.mjs +140 -0
  164. package/dist/tokens/escapeHatch.cjs +13 -0
  165. package/dist/tokens/escapeHatch.mjs +13 -0
  166. package/dist/tokens/focusRing.cjs +28 -0
  167. package/dist/tokens/focusRing.mjs +28 -0
  168. package/dist/tokens/keyframes.cjs +76 -0
  169. package/dist/tokens/keyframes.mjs +75 -0
  170. package/dist/tokens/resolveInteractiveStyle.cjs +41 -0
  171. package/dist/tokens/resolveInteractiveStyle.mjs +41 -0
  172. package/llms.txt +142 -0
  173. package/package.json +70 -0
  174. package/src/tokens/CONTRACT.md +505 -0
@@ -0,0 +1,125 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ const require_focusRing = require('../../tokens/focusRing.cjs');
3
+ let _ttoss_fsl_theme_vars = require("@ttoss/fsl-theme/vars");
4
+ let react_aria_components = require("react-aria-components");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+
7
+ //#region src/components/ToggleButton/ToggleButton.tsx
8
+ /** Formal semantic identity — ToggleButton root (Action entity, toggle). */
9
+ var toggleButtonMeta = {
10
+ displayName: "ToggleButton",
11
+ entity: "Action",
12
+ structure: "root"
13
+ };
14
+ /**
15
+ * Background cascade: disabled ▸ transient press (`active`) ▸ persistent
16
+ * toggle (`pressed`) ▸ hover ▸ default. The `active` level dominates
17
+ * `pressed` so a click on an engaged toggle still gives press feedback.
18
+ */
19
+ var resolveToggleBackground = (bg, {
20
+ isDisabled,
21
+ isPressed,
22
+ isSelected,
23
+ isHovered
24
+ }) => {
25
+ if (isDisabled) return bg.disabled;
26
+ if (isPressed) return bg.active;
27
+ if (isSelected) return bg.pressed;
28
+ if (isHovered) return bg.hover;
29
+ return bg.default;
30
+ };
31
+ /** Text cascade — same order, with `?? default` since not every voice defines every state. */
32
+ var resolveToggleText = (text, {
33
+ isDisabled,
34
+ isPressed,
35
+ isSelected,
36
+ isHovered
37
+ }) => {
38
+ if (isDisabled) return text.disabled;
39
+ if (isPressed) return text.active ?? text.default;
40
+ if (isSelected) return text.pressed ?? text.default;
41
+ if (isHovered) return text.hover ?? text.default;
42
+ return text.default;
43
+ };
44
+ /** Border cascade: focus ring wins ▸ disabled ▸ toggle-on ▸ default. */
45
+ var resolveToggleBorder = (border, {
46
+ isFocusVisible,
47
+ isDisabled,
48
+ isSelected
49
+ }) => {
50
+ if (isFocusVisible) return border.focused;
51
+ if (isDisabled) return border.disabled;
52
+ if (isSelected) return border.pressed ?? border.default;
53
+ return border.default;
54
+ };
55
+ /**
56
+ * A two-state toggle button (Action entity). Unlike `Button`, its selection
57
+ * is persistent: the engaged state renders the `pressed` color (not the
58
+ * transient `active`), and React Aria exposes it via `aria-pressed`.
59
+ *
60
+ * Use for toolbar toggles ("Bold", "Italic") and single on/off controls that
61
+ * read as buttons. For a set of mutually-related toggles, wrap them in
62
+ * `ToggleButtonGroup`.
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * <ToggleButton>Bold</ToggleButton>
67
+ * <ToggleButton defaultSelected>Grid view</ToggleButton>
68
+ * ```
69
+ */
70
+ var ToggleButton = ({
71
+ evaluation = "primary",
72
+ ...props
73
+ }) => {
74
+ const colors = _ttoss_fsl_theme_vars.vars.colors.action[evaluation];
75
+ return /* @__PURE__ */(0, react_jsx_runtime.jsx)(react_aria_components.ToggleButton, {
76
+ ...props,
77
+ "data-scope": "toggle-button",
78
+ "data-part": "root",
79
+ "data-evaluation": evaluation,
80
+ style: ({
81
+ isHovered,
82
+ isPressed,
83
+ isSelected,
84
+ isDisabled,
85
+ isFocusVisible
86
+ }) => {
87
+ const flags = {
88
+ isHovered,
89
+ isPressed,
90
+ isSelected,
91
+ isDisabled
92
+ };
93
+ return {
94
+ boxSizing: "border-box",
95
+ display: "inline-flex",
96
+ alignItems: "center",
97
+ justifyContent: "center",
98
+ cursor: isDisabled ? "not-allowed" : "pointer",
99
+ borderRadius: _ttoss_fsl_theme_vars.vars.radii.control,
100
+ borderWidth: _ttoss_fsl_theme_vars.vars.border.outline.control.width,
101
+ borderStyle: _ttoss_fsl_theme_vars.vars.border.outline.control.style,
102
+ minHeight: _ttoss_fsl_theme_vars.vars.sizing.hit.base,
103
+ paddingBlock: _ttoss_fsl_theme_vars.vars.spacing.inset.control.sm,
104
+ paddingInline: _ttoss_fsl_theme_vars.vars.spacing.inset.control.lg,
105
+ ..._ttoss_fsl_theme_vars.vars.text.label.md,
106
+ transitionDuration: _ttoss_fsl_theme_vars.vars.motion.feedback.duration,
107
+ transitionTimingFunction: _ttoss_fsl_theme_vars.vars.motion.feedback.easing,
108
+ transitionProperty: "background-color, border-color, color",
109
+ backgroundColor: colors?.background ? resolveToggleBackground(colors.background, flags) : void 0,
110
+ borderColor: colors?.border ? resolveToggleBorder(colors.border, {
111
+ isFocusVisible,
112
+ isDisabled,
113
+ isSelected
114
+ }) : void 0,
115
+ color: colors?.text ? resolveToggleText(colors.text, flags) : void 0,
116
+ outline: require_focusRing.focusRingOutline(isFocusVisible)
117
+ };
118
+ }
119
+ });
120
+ };
121
+ ToggleButton.displayName = toggleButtonMeta.displayName;
122
+
123
+ //#endregion
124
+ exports.ToggleButton = ToggleButton;
125
+ exports.toggleButtonMeta = toggleButtonMeta;
@@ -0,0 +1,43 @@
1
+
2
+ import { EvaluationsFor } from "../../semantics/taxonomy.cjs";
3
+ import { ToggleButtonProps } from "react-aria-components";
4
+
5
+ //#region src/components/ToggleButton/ToggleButton.d.ts
6
+ /** Formal semantic identity — ToggleButton root (Action entity, toggle). */
7
+ declare const toggleButtonMeta: {
8
+ readonly displayName: "ToggleButton";
9
+ readonly entity: "Action";
10
+ readonly structure: "root";
11
+ };
12
+ /** Props for the ToggleButton component. */
13
+ interface ToggleButtonProps$1 extends Omit<ToggleButtonProps, 'style'> {
14
+ /**
15
+ * Semantic emphasis.
16
+ * @default 'primary'
17
+ */
18
+ evaluation?: EvaluationsFor<(typeof toggleButtonMeta)['entity']>;
19
+ }
20
+ /**
21
+ * A two-state toggle button (Action entity). Unlike `Button`, its selection
22
+ * is persistent: the engaged state renders the `pressed` color (not the
23
+ * transient `active`), and React Aria exposes it via `aria-pressed`.
24
+ *
25
+ * Use for toolbar toggles ("Bold", "Italic") and single on/off controls that
26
+ * read as buttons. For a set of mutually-related toggles, wrap them in
27
+ * `ToggleButtonGroup`.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * <ToggleButton>Bold</ToggleButton>
32
+ * <ToggleButton defaultSelected>Grid view</ToggleButton>
33
+ * ```
34
+ */
35
+ declare const ToggleButton: {
36
+ ({
37
+ evaluation,
38
+ ...props
39
+ }: ToggleButtonProps$1): import("react/jsx-runtime").JSX.Element;
40
+ displayName: "ToggleButton";
41
+ };
42
+ //#endregion
43
+ export { ToggleButton, ToggleButtonProps$1 as ToggleButtonProps, toggleButtonMeta };
@@ -0,0 +1,43 @@
1
+
2
+ import { EvaluationsFor } from "../../semantics/taxonomy.mjs";
3
+ import { ToggleButtonProps } from "react-aria-components";
4
+
5
+ //#region src/components/ToggleButton/ToggleButton.d.ts
6
+ /** Formal semantic identity — ToggleButton root (Action entity, toggle). */
7
+ declare const toggleButtonMeta: {
8
+ readonly displayName: "ToggleButton";
9
+ readonly entity: "Action";
10
+ readonly structure: "root";
11
+ };
12
+ /** Props for the ToggleButton component. */
13
+ interface ToggleButtonProps$1 extends Omit<ToggleButtonProps, 'style'> {
14
+ /**
15
+ * Semantic emphasis.
16
+ * @default 'primary'
17
+ */
18
+ evaluation?: EvaluationsFor<(typeof toggleButtonMeta)['entity']>;
19
+ }
20
+ /**
21
+ * A two-state toggle button (Action entity). Unlike `Button`, its selection
22
+ * is persistent: the engaged state renders the `pressed` color (not the
23
+ * transient `active`), and React Aria exposes it via `aria-pressed`.
24
+ *
25
+ * Use for toolbar toggles ("Bold", "Italic") and single on/off controls that
26
+ * read as buttons. For a set of mutually-related toggles, wrap them in
27
+ * `ToggleButtonGroup`.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * <ToggleButton>Bold</ToggleButton>
32
+ * <ToggleButton defaultSelected>Grid view</ToggleButton>
33
+ * ```
34
+ */
35
+ declare const ToggleButton$1: {
36
+ ({
37
+ evaluation,
38
+ ...props
39
+ }: ToggleButtonProps$1): import("react/jsx-runtime").JSX.Element;
40
+ displayName: "ToggleButton";
41
+ };
42
+ //#endregion
43
+ export { ToggleButton$1 as ToggleButton, ToggleButtonProps$1 as ToggleButtonProps, toggleButtonMeta };
@@ -0,0 +1,124 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ import { focusRingOutline } from "../../tokens/focusRing.mjs";
3
+ import { vars } from "@ttoss/fsl-theme/vars";
4
+ import { ToggleButton } from "react-aria-components";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/components/ToggleButton/ToggleButton.tsx
8
+ /** Formal semantic identity — ToggleButton root (Action entity, toggle). */
9
+ var toggleButtonMeta = {
10
+ displayName: "ToggleButton",
11
+ entity: "Action",
12
+ structure: "root"
13
+ };
14
+ /**
15
+ * Background cascade: disabled ▸ transient press (`active`) ▸ persistent
16
+ * toggle (`pressed`) ▸ hover ▸ default. The `active` level dominates
17
+ * `pressed` so a click on an engaged toggle still gives press feedback.
18
+ */
19
+ var resolveToggleBackground = (bg, {
20
+ isDisabled,
21
+ isPressed,
22
+ isSelected,
23
+ isHovered
24
+ }) => {
25
+ if (isDisabled) return bg.disabled;
26
+ if (isPressed) return bg.active;
27
+ if (isSelected) return bg.pressed;
28
+ if (isHovered) return bg.hover;
29
+ return bg.default;
30
+ };
31
+ /** Text cascade — same order, with `?? default` since not every voice defines every state. */
32
+ var resolveToggleText = (text, {
33
+ isDisabled,
34
+ isPressed,
35
+ isSelected,
36
+ isHovered
37
+ }) => {
38
+ if (isDisabled) return text.disabled;
39
+ if (isPressed) return text.active ?? text.default;
40
+ if (isSelected) return text.pressed ?? text.default;
41
+ if (isHovered) return text.hover ?? text.default;
42
+ return text.default;
43
+ };
44
+ /** Border cascade: focus ring wins ▸ disabled ▸ toggle-on ▸ default. */
45
+ var resolveToggleBorder = (border, {
46
+ isFocusVisible,
47
+ isDisabled,
48
+ isSelected
49
+ }) => {
50
+ if (isFocusVisible) return border.focused;
51
+ if (isDisabled) return border.disabled;
52
+ if (isSelected) return border.pressed ?? border.default;
53
+ return border.default;
54
+ };
55
+ /**
56
+ * A two-state toggle button (Action entity). Unlike `Button`, its selection
57
+ * is persistent: the engaged state renders the `pressed` color (not the
58
+ * transient `active`), and React Aria exposes it via `aria-pressed`.
59
+ *
60
+ * Use for toolbar toggles ("Bold", "Italic") and single on/off controls that
61
+ * read as buttons. For a set of mutually-related toggles, wrap them in
62
+ * `ToggleButtonGroup`.
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * <ToggleButton>Bold</ToggleButton>
67
+ * <ToggleButton defaultSelected>Grid view</ToggleButton>
68
+ * ```
69
+ */
70
+ var ToggleButton$1 = ({
71
+ evaluation = "primary",
72
+ ...props
73
+ }) => {
74
+ const colors = vars.colors.action[evaluation];
75
+ return /* @__PURE__ */jsx(ToggleButton, {
76
+ ...props,
77
+ "data-scope": "toggle-button",
78
+ "data-part": "root",
79
+ "data-evaluation": evaluation,
80
+ style: ({
81
+ isHovered,
82
+ isPressed,
83
+ isSelected,
84
+ isDisabled,
85
+ isFocusVisible
86
+ }) => {
87
+ const flags = {
88
+ isHovered,
89
+ isPressed,
90
+ isSelected,
91
+ isDisabled
92
+ };
93
+ return {
94
+ boxSizing: "border-box",
95
+ display: "inline-flex",
96
+ alignItems: "center",
97
+ justifyContent: "center",
98
+ cursor: isDisabled ? "not-allowed" : "pointer",
99
+ borderRadius: vars.radii.control,
100
+ borderWidth: vars.border.outline.control.width,
101
+ borderStyle: vars.border.outline.control.style,
102
+ minHeight: vars.sizing.hit.base,
103
+ paddingBlock: vars.spacing.inset.control.sm,
104
+ paddingInline: vars.spacing.inset.control.lg,
105
+ ...vars.text.label.md,
106
+ transitionDuration: vars.motion.feedback.duration,
107
+ transitionTimingFunction: vars.motion.feedback.easing,
108
+ transitionProperty: "background-color, border-color, color",
109
+ backgroundColor: colors?.background ? resolveToggleBackground(colors.background, flags) : void 0,
110
+ borderColor: colors?.border ? resolveToggleBorder(colors.border, {
111
+ isFocusVisible,
112
+ isDisabled,
113
+ isSelected
114
+ }) : void 0,
115
+ color: colors?.text ? resolveToggleText(colors.text, flags) : void 0,
116
+ outline: focusRingOutline(isFocusVisible)
117
+ };
118
+ }
119
+ });
120
+ };
121
+ ToggleButton$1.displayName = toggleButtonMeta.displayName;
122
+
123
+ //#endregion
124
+ export { ToggleButton$1 as ToggleButton, toggleButtonMeta };
@@ -0,0 +1,48 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ let _ttoss_fsl_theme_vars = require("@ttoss/fsl-theme/vars");
3
+ let react_aria_components = require("react-aria-components");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+
6
+ //#region src/components/ToggleButtonGroup/ToggleButtonGroup.tsx
7
+ /** Formal semantic identity — ToggleButtonGroup root (Selection entity). */
8
+ var toggleButtonGroupMeta = {
9
+ displayName: "ToggleButtonGroup",
10
+ entity: "Selection",
11
+ structure: "root"
12
+ };
13
+ /**
14
+ * Groups related `ToggleButton`s into a single selectable set (Selection
15
+ * entity). React Aria manages selection (`selectionMode` `single` | `multiple`)
16
+ * and arrow-key navigation between the toggles; each child is a `ToggleButton`
17
+ * with an `id`.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * <ToggleButtonGroup selectionMode="single" defaultSelectedKeys={['grid']}>
22
+ * <ToggleButton id="grid">Grid</ToggleButton>
23
+ * <ToggleButton id="list">List</ToggleButton>
24
+ * </ToggleButtonGroup>
25
+ * ```
26
+ */
27
+ var ToggleButtonGroup = ({
28
+ orientation = "horizontal",
29
+ ...props
30
+ }) => {
31
+ return /* @__PURE__ */(0, react_jsx_runtime.jsx)(react_aria_components.ToggleButtonGroup, {
32
+ ...props,
33
+ orientation,
34
+ "data-scope": "toggle-button-group",
35
+ "data-part": "root",
36
+ style: {
37
+ boxSizing: "border-box",
38
+ display: "inline-flex",
39
+ flexDirection: orientation === "vertical" ? "column" : "row",
40
+ gap: _ttoss_fsl_theme_vars.vars.spacing.gap.inline.sm
41
+ }
42
+ });
43
+ };
44
+ ToggleButtonGroup.displayName = toggleButtonGroupMeta.displayName;
45
+
46
+ //#endregion
47
+ exports.ToggleButtonGroup = ToggleButtonGroup;
48
+ exports.toggleButtonGroupMeta = toggleButtonGroupMeta;
@@ -0,0 +1,41 @@
1
+
2
+ import { ToggleButtonGroupProps } from "react-aria-components";
3
+
4
+ //#region src/components/ToggleButtonGroup/ToggleButtonGroup.d.ts
5
+ /** Formal semantic identity — ToggleButtonGroup root (Selection entity). */
6
+ declare const toggleButtonGroupMeta: {
7
+ readonly displayName: "ToggleButtonGroup";
8
+ readonly entity: "Selection";
9
+ readonly structure: "root";
10
+ };
11
+ /** Props for the ToggleButtonGroup component. */
12
+ interface ToggleButtonGroupProps$1 extends Omit<ToggleButtonGroupProps, 'style'> {
13
+ /**
14
+ * Layout direction of the toggles.
15
+ * @default 'horizontal'
16
+ */
17
+ orientation?: ToggleButtonGroupProps['orientation'];
18
+ }
19
+ /**
20
+ * Groups related `ToggleButton`s into a single selectable set (Selection
21
+ * entity). React Aria manages selection (`selectionMode` `single` | `multiple`)
22
+ * and arrow-key navigation between the toggles; each child is a `ToggleButton`
23
+ * with an `id`.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <ToggleButtonGroup selectionMode="single" defaultSelectedKeys={['grid']}>
28
+ * <ToggleButton id="grid">Grid</ToggleButton>
29
+ * <ToggleButton id="list">List</ToggleButton>
30
+ * </ToggleButtonGroup>
31
+ * ```
32
+ */
33
+ declare const ToggleButtonGroup: {
34
+ ({
35
+ orientation,
36
+ ...props
37
+ }: ToggleButtonGroupProps$1): import("react/jsx-runtime").JSX.Element;
38
+ displayName: "ToggleButtonGroup";
39
+ };
40
+ //#endregion
41
+ export { ToggleButtonGroup, ToggleButtonGroupProps$1 as ToggleButtonGroupProps, toggleButtonGroupMeta };
@@ -0,0 +1,41 @@
1
+
2
+ import { ToggleButtonGroupProps } from "react-aria-components";
3
+
4
+ //#region src/components/ToggleButtonGroup/ToggleButtonGroup.d.ts
5
+ /** Formal semantic identity — ToggleButtonGroup root (Selection entity). */
6
+ declare const toggleButtonGroupMeta: {
7
+ readonly displayName: "ToggleButtonGroup";
8
+ readonly entity: "Selection";
9
+ readonly structure: "root";
10
+ };
11
+ /** Props for the ToggleButtonGroup component. */
12
+ interface ToggleButtonGroupProps$1 extends Omit<ToggleButtonGroupProps, 'style'> {
13
+ /**
14
+ * Layout direction of the toggles.
15
+ * @default 'horizontal'
16
+ */
17
+ orientation?: ToggleButtonGroupProps['orientation'];
18
+ }
19
+ /**
20
+ * Groups related `ToggleButton`s into a single selectable set (Selection
21
+ * entity). React Aria manages selection (`selectionMode` `single` | `multiple`)
22
+ * and arrow-key navigation between the toggles; each child is a `ToggleButton`
23
+ * with an `id`.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <ToggleButtonGroup selectionMode="single" defaultSelectedKeys={['grid']}>
28
+ * <ToggleButton id="grid">Grid</ToggleButton>
29
+ * <ToggleButton id="list">List</ToggleButton>
30
+ * </ToggleButtonGroup>
31
+ * ```
32
+ */
33
+ declare const ToggleButtonGroup$1: {
34
+ ({
35
+ orientation,
36
+ ...props
37
+ }: ToggleButtonGroupProps$1): import("react/jsx-runtime").JSX.Element;
38
+ displayName: "ToggleButtonGroup";
39
+ };
40
+ //#endregion
41
+ export { ToggleButtonGroup$1 as ToggleButtonGroup, ToggleButtonGroupProps$1 as ToggleButtonGroupProps, toggleButtonGroupMeta };
@@ -0,0 +1,47 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ import { vars } from "@ttoss/fsl-theme/vars";
3
+ import { ToggleButtonGroup } from "react-aria-components";
4
+ import { jsx } from "react/jsx-runtime";
5
+
6
+ //#region src/components/ToggleButtonGroup/ToggleButtonGroup.tsx
7
+ /** Formal semantic identity — ToggleButtonGroup root (Selection entity). */
8
+ var toggleButtonGroupMeta = {
9
+ displayName: "ToggleButtonGroup",
10
+ entity: "Selection",
11
+ structure: "root"
12
+ };
13
+ /**
14
+ * Groups related `ToggleButton`s into a single selectable set (Selection
15
+ * entity). React Aria manages selection (`selectionMode` `single` | `multiple`)
16
+ * and arrow-key navigation between the toggles; each child is a `ToggleButton`
17
+ * with an `id`.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * <ToggleButtonGroup selectionMode="single" defaultSelectedKeys={['grid']}>
22
+ * <ToggleButton id="grid">Grid</ToggleButton>
23
+ * <ToggleButton id="list">List</ToggleButton>
24
+ * </ToggleButtonGroup>
25
+ * ```
26
+ */
27
+ var ToggleButtonGroup$1 = ({
28
+ orientation = "horizontal",
29
+ ...props
30
+ }) => {
31
+ return /* @__PURE__ */jsx(ToggleButtonGroup, {
32
+ ...props,
33
+ orientation,
34
+ "data-scope": "toggle-button-group",
35
+ "data-part": "root",
36
+ style: {
37
+ boxSizing: "border-box",
38
+ display: "inline-flex",
39
+ flexDirection: orientation === "vertical" ? "column" : "row",
40
+ gap: vars.spacing.gap.inline.sm
41
+ }
42
+ });
43
+ };
44
+ ToggleButtonGroup$1.displayName = toggleButtonGroupMeta.displayName;
45
+
46
+ //#endregion
47
+ export { ToggleButtonGroup$1 as ToggleButtonGroup, toggleButtonGroupMeta };
@@ -0,0 +1,67 @@
1
+ /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
+ let _ttoss_fsl_theme_vars = require("@ttoss/fsl-theme/vars");
3
+ let react_aria_components = require("react-aria-components");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+
6
+ //#region src/components/Toolbar/Toolbar.tsx
7
+ /** Formal semantic identity — Toolbar root (Structure entity, actions bar). */
8
+ var toolbarMeta = {
9
+ displayName: "Toolbar",
10
+ entity: "Structure",
11
+ structure: "root"
12
+ };
13
+ /**
14
+ * A semantic toolbar built on React Aria's `Toolbar` (`role="toolbar"`).
15
+ *
16
+ * Entity = Structure → reads `vars.colors.informational.{primary|muted}` for
17
+ * the bar surface and border, `vars.radii.surface` for the corner, and
18
+ * `vars.spacing.inset.surface` for padding. Groups related actions (a text
19
+ * formatting bar, a view-mode switch, a set of table controls) under one
20
+ * region with arrow-key navigation. Non-interactive itself — hover/press
21
+ * chrome belongs to the `Button` / `ToggleButton` children.
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * <Toolbar aria-label="Text formatting">
26
+ * <ToggleButton aria-label="Bold">B</ToggleButton>
27
+ * <ToggleButton aria-label="Italic">I</ToggleButton>
28
+ * <Separator orientation="vertical" />
29
+ * <Button aria-label="Link">Link</Button>
30
+ * </Toolbar>
31
+ * ```
32
+ */
33
+ var Toolbar = ({
34
+ orientation = "horizontal",
35
+ evaluation = "primary",
36
+ children,
37
+ ...props
38
+ }) => {
39
+ const c = _ttoss_fsl_theme_vars.vars.colors.informational[evaluation];
40
+ const isVertical = orientation === "vertical";
41
+ return /* @__PURE__ */(0, react_jsx_runtime.jsx)(react_aria_components.Toolbar, {
42
+ ...props,
43
+ orientation,
44
+ "data-scope": "toolbar",
45
+ "data-part": "root",
46
+ "data-evaluation": evaluation,
47
+ style: {
48
+ boxSizing: "border-box",
49
+ display: "inline-flex",
50
+ flexDirection: isVertical ? "column" : "row",
51
+ alignItems: "center",
52
+ gap: _ttoss_fsl_theme_vars.vars.spacing.gap.inline.sm,
53
+ padding: _ttoss_fsl_theme_vars.vars.spacing.inset.surface.sm,
54
+ borderRadius: _ttoss_fsl_theme_vars.vars.radii.surface,
55
+ borderWidth: _ttoss_fsl_theme_vars.vars.border.outline.surface.width,
56
+ borderStyle: _ttoss_fsl_theme_vars.vars.border.outline.surface.style,
57
+ borderColor: c?.border?.default ?? "transparent",
58
+ backgroundColor: c?.background?.default
59
+ },
60
+ children
61
+ });
62
+ };
63
+ Toolbar.displayName = toolbarMeta.displayName;
64
+
65
+ //#endregion
66
+ exports.Toolbar = Toolbar;
67
+ exports.toolbarMeta = toolbarMeta;
@@ -0,0 +1,60 @@
1
+
2
+ import { EvaluationsFor } from "../../semantics/taxonomy.cjs";
3
+ import * as React from "react";
4
+ import { ToolbarProps } from "react-aria-components";
5
+
6
+ //#region src/components/Toolbar/Toolbar.d.ts
7
+ /** Formal semantic identity — Toolbar root (Structure entity, actions bar). */
8
+ declare const toolbarMeta: {
9
+ readonly displayName: "Toolbar";
10
+ readonly entity: "Structure";
11
+ readonly structure: "root";
12
+ };
13
+ /** Props for the Toolbar component. */
14
+ interface ToolbarProps$1 extends Omit<ToolbarProps, 'style' | 'className' | 'children'> {
15
+ /**
16
+ * Layout + roving-focus axis. `horizontal` uses Left/Right arrows;
17
+ * `vertical` uses Up/Down.
18
+ * @default 'horizontal'
19
+ */
20
+ orientation?: ToolbarProps['orientation'];
21
+ /**
22
+ * Authorial emphasis of the bar surface. `primary` is the standard toolbar
23
+ * chrome; `muted` is a subdued variant for dense or secondary bars.
24
+ * @default 'primary'
25
+ */
26
+ evaluation?: EvaluationsFor<(typeof toolbarMeta)['entity']>;
27
+ /** The interactive controls to lay out in the bar. */
28
+ children?: React.ReactNode;
29
+ }
30
+ /**
31
+ * A semantic toolbar built on React Aria's `Toolbar` (`role="toolbar"`).
32
+ *
33
+ * Entity = Structure → reads `vars.colors.informational.{primary|muted}` for
34
+ * the bar surface and border, `vars.radii.surface` for the corner, and
35
+ * `vars.spacing.inset.surface` for padding. Groups related actions (a text
36
+ * formatting bar, a view-mode switch, a set of table controls) under one
37
+ * region with arrow-key navigation. Non-interactive itself — hover/press
38
+ * chrome belongs to the `Button` / `ToggleButton` children.
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * <Toolbar aria-label="Text formatting">
43
+ * <ToggleButton aria-label="Bold">B</ToggleButton>
44
+ * <ToggleButton aria-label="Italic">I</ToggleButton>
45
+ * <Separator orientation="vertical" />
46
+ * <Button aria-label="Link">Link</Button>
47
+ * </Toolbar>
48
+ * ```
49
+ */
50
+ declare const Toolbar: {
51
+ ({
52
+ orientation,
53
+ evaluation,
54
+ children,
55
+ ...props
56
+ }: ToolbarProps$1): import("react/jsx-runtime").JSX.Element;
57
+ displayName: "Toolbar";
58
+ };
59
+ //#endregion
60
+ export { Toolbar, ToolbarProps$1 as ToolbarProps, toolbarMeta };