tuix-webcomponents 0.0.22 → 0.0.25

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 (133) hide show
  1. package/README.md +110 -21
  2. package/dist/assets/tuix-styles.css +72 -0
  3. package/dist/src/index.d.ts +27 -1
  4. package/dist/src/index.js +19 -16
  5. package/dist/src/react/index.d.ts +42 -0
  6. package/dist/src/react/index.js +114 -0
  7. package/dist/src/tuix-button/TuixBaseButton.d.ts +17 -0
  8. package/dist/src/tuix-button/TuixBaseButton.js +60 -0
  9. package/dist/src/tuix-button/TuixButton.d.ts +6 -12
  10. package/dist/src/tuix-button/TuixButton.js +35 -59
  11. package/dist/src/tuix-button/TuixButton.styles.d.ts +1 -0
  12. package/dist/src/tuix-button/TuixButton.styles.js +77 -44
  13. package/dist/src/tuix-button/enums/tuix-button.enums.js +3 -4
  14. package/dist/src/tuix-button/interfaces/tuix-button.interface.d.ts +1 -0
  15. package/dist/src/tuix-button/interfaces/tuix-button.interface.js +1 -0
  16. package/dist/src/tuix-checkbox/TuixCheckbox.d.ts +17 -0
  17. package/dist/src/tuix-checkbox/TuixCheckbox.js +108 -0
  18. package/dist/src/tuix-checkbox/TuixCheckbox.styles.d.ts +4 -0
  19. package/dist/src/tuix-checkbox/TuixCheckbox.styles.js +132 -0
  20. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.d.ts +21 -0
  21. package/dist/src/tuix-checkbox/enums/tuix-checkbox.enums.js +23 -0
  22. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.d.ts +5 -0
  23. package/dist/src/tuix-checkbox/interfaces/tuix-checkbox.interface.js +1 -0
  24. package/dist/src/tuix-dropdown/TuixDropdown.d.ts +13 -3
  25. package/dist/src/tuix-dropdown/TuixDropdown.js +125 -39
  26. package/dist/src/tuix-dropdown/TuixDropdown.styles.js +59 -19
  27. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.d.ts +0 -6
  28. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.js +0 -8
  29. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.d.ts +15 -1
  30. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.js +0 -1
  31. package/dist/src/tuix-icon/TuixIcon.d.ts +5 -1
  32. package/dist/src/tuix-icon/TuixIcon.icons.d.ts +2 -2
  33. package/dist/src/tuix-icon/TuixIcon.icons.js +299 -7
  34. package/dist/src/tuix-icon/TuixIcon.js +37 -23
  35. package/dist/src/tuix-icon/enums/tuix-icon.enums.d.ts +67 -21
  36. package/dist/src/tuix-icon/enums/tuix-icon.enums.js +66 -22
  37. package/dist/src/tuix-icon-button/TuixIconButton.d.ts +6 -11
  38. package/dist/src/tuix-icon-button/TuixIconButton.js +20 -49
  39. package/dist/src/tuix-input/TuixInput.d.ts +12 -6
  40. package/dist/src/tuix-input/TuixInput.js +97 -50
  41. package/dist/src/tuix-input/TuixInput.styles.js +99 -110
  42. package/dist/src/tuix-input/enums/tuix-input.enums.d.ts +10 -8
  43. package/dist/src/tuix-input/enums/tuix-input.enums.js +10 -11
  44. package/dist/src/tuix-input/interfaces/tuix-input.interface.d.ts +11 -6
  45. package/dist/src/tuix-input/interfaces/tuix-input.interface.js +5 -2
  46. package/dist/src/tuix-link/TuixLink.d.ts +8 -4
  47. package/dist/src/tuix-link/TuixLink.js +37 -38
  48. package/dist/src/tuix-link/TuixLink.styles.d.ts +2 -0
  49. package/dist/src/tuix-link/TuixLink.styles.js +55 -0
  50. package/dist/src/tuix-link/enums/linkTarget.enum.d.ts +4 -4
  51. package/dist/src/tuix-link/enums/linkTarget.enum.js +4 -5
  52. package/dist/src/tuix-modal/TuixModal.d.ts +11 -0
  53. package/dist/src/tuix-modal/TuixModal.js +65 -0
  54. package/dist/src/tuix-modal/TuixModal.styles.d.ts +2 -0
  55. package/dist/src/tuix-modal/TuixModal.styles.js +55 -0
  56. package/dist/src/tuix-paper/TuixPaper.d.ts +7 -4
  57. package/dist/src/tuix-paper/TuixPaper.js +29 -23
  58. package/dist/src/tuix-paper/TuixPaper.styles.d.ts +1 -0
  59. package/dist/src/tuix-paper/TuixPaper.styles.js +30 -0
  60. package/dist/src/tuix-paper/enums/tuix-paper.enum.d.ts +12 -6
  61. package/dist/src/tuix-paper/enums/tuix-paper.enum.js +15 -9
  62. package/dist/src/tuix-radio-button/TuixRadioButton.d.ts +17 -0
  63. package/dist/src/tuix-radio-button/TuixRadioButton.js +96 -0
  64. package/dist/src/tuix-radio-button/TuixRadioButton.styles.d.ts +5 -0
  65. package/dist/src/tuix-radio-button/TuixRadioButton.styles.js +135 -0
  66. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.d.ts +3 -0
  67. package/dist/src/tuix-radio-button/interfaces/tuix-radio-button.interface.js +1 -0
  68. package/dist/src/tuix-table/TuixTable.d.ts +48 -0
  69. package/dist/src/tuix-table/TuixTable.js +369 -0
  70. package/dist/src/tuix-table/TuixTable.styles.d.ts +2 -0
  71. package/dist/src/tuix-table/TuixTable.styles.js +197 -0
  72. package/dist/src/tuix-table/interfaces/tuix-table.interface.d.ts +45 -0
  73. package/dist/src/tuix-table/interfaces/tuix-table.interface.js +1 -0
  74. package/dist/src/tuix-text/TuixText.d.ts +7 -4
  75. package/dist/src/tuix-text/TuixText.js +44 -18
  76. package/dist/src/tuix-text/TuixText.styles.d.ts +1 -0
  77. package/dist/src/tuix-text/TuixText.styles.js +145 -64
  78. package/dist/src/tuix-text/enums/tuix-text.enums.d.ts +25 -11
  79. package/dist/src/tuix-text/enums/tuix-text.enums.js +61 -14
  80. package/dist/src/tuix-toast/TuixToast.d.ts +18 -0
  81. package/dist/src/tuix-toast/TuixToast.js +103 -0
  82. package/dist/src/tuix-toast/TuixToast.styles.d.ts +3 -0
  83. package/dist/src/tuix-toast/TuixToast.styles.js +43 -0
  84. package/dist/src/tuix-toast/enums/tuix-toast.enums.d.ts +20 -0
  85. package/dist/src/tuix-toast/enums/tuix-toast.enums.js +59 -0
  86. package/dist/src/tuix-toggle-button/TuixToggleButton.d.ts +14 -0
  87. package/dist/src/tuix-toggle-button/TuixToggleButton.js +86 -0
  88. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.d.ts +5 -0
  89. package/dist/src/tuix-toggle-button/TuixToggleButton.styles.js +134 -0
  90. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.d.ts +2 -0
  91. package/dist/src/tuix-toggle-button/interfaces/tuix-toggle.interface.js +1 -0
  92. package/dist/src/utils/colors.d.ts +29 -11
  93. package/dist/src/utils/colors.js +31 -46
  94. package/dist/src/utils/darkColors.d.ts +32 -1
  95. package/dist/src/utils/darkColors.js +33 -11
  96. package/dist/src/utils/hex-rgb.js +0 -1
  97. package/dist/src/utils/interfaces/detail-value.interface.d.ts +3 -0
  98. package/dist/src/utils/interfaces/detail-value.interface.js +1 -0
  99. package/dist/src/utils/mainVariant.enum.js +0 -1
  100. package/dist/src/utils/screenSizes.enum.d.ts +2 -2
  101. package/dist/src/utils/screenSizes.enum.js +2 -4
  102. package/dist/src/utils/slottedClassName.d.ts +2 -0
  103. package/dist/src/utils/slottedClassName.js +1 -0
  104. package/package.json +113 -68
  105. package/dist/src/index.js.map +0 -1
  106. package/dist/src/tuix-button/TuixButton.js.map +0 -1
  107. package/dist/src/tuix-button/TuixButton.styles.js.map +0 -1
  108. package/dist/src/tuix-button/enums/tuix-button.enums.js.map +0 -1
  109. package/dist/src/tuix-dropdown/TuixDropdown.js.map +0 -1
  110. package/dist/src/tuix-dropdown/TuixDropdown.styles.js.map +0 -1
  111. package/dist/src/tuix-dropdown/enums/tuix-dropdown.enums.js.map +0 -1
  112. package/dist/src/tuix-dropdown/interfaces/tuix-dropdown.interface.js.map +0 -1
  113. package/dist/src/tuix-icon/TuixIcon.icons.js.map +0 -1
  114. package/dist/src/tuix-icon/TuixIcon.js.map +0 -1
  115. package/dist/src/tuix-icon/enums/tuix-icon.enums.js.map +0 -1
  116. package/dist/src/tuix-icon-button/TuixIconButton.js.map +0 -1
  117. package/dist/src/tuix-input/TuixInput.js.map +0 -1
  118. package/dist/src/tuix-input/TuixInput.styles.js.map +0 -1
  119. package/dist/src/tuix-input/enums/tuix-input.enums.js.map +0 -1
  120. package/dist/src/tuix-input/interfaces/tuix-input.interface.js.map +0 -1
  121. package/dist/src/tuix-link/TuixLink.js.map +0 -1
  122. package/dist/src/tuix-link/enums/linkTarget.enum.js.map +0 -1
  123. package/dist/src/tuix-paper/TuixPaper.js.map +0 -1
  124. package/dist/src/tuix-paper/enums/tuix-paper.enum.js.map +0 -1
  125. package/dist/src/tuix-text/TuixText.js.map +0 -1
  126. package/dist/src/tuix-text/TuixText.styles.js.map +0 -1
  127. package/dist/src/tuix-text/enums/tuix-text.enums.js.map +0 -1
  128. package/dist/src/utils/colors.js.map +0 -1
  129. package/dist/src/utils/darkColors.js.map +0 -1
  130. package/dist/src/utils/hex-rgb.js.map +0 -1
  131. package/dist/src/utils/mainVariant.enum.js.map +0 -1
  132. package/dist/src/utils/screenSizes.enum.js.map +0 -1
  133. package/dist/tsconfig.publish.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -10,38 +10,116 @@ npm i tuix-webcomponents
10
10
 
11
11
  ## Usage
12
12
 
13
- ### React .tsx with SSR
13
+ ### Webbundle version
14
14
 
15
- ```typescript jsx
16
- import { loadFonts } from 'tuix-webcomponents';
15
+ Webbundle Link: https://tuix-webcomponents.s3.eu-central-1.amazonaws.com/build-bf814e0@0.89.0.js
16
+ Styles Link: https://tuix-webcomponents.s3.eu-central-1.amazonaws.com/build-bf814e0@0.89.0.css
17
+
18
+ ### React
19
+
20
+ The package ships generated [@lit/react](https://lit.dev/docs/frameworks/react/)
21
+ wrappers, one per element, so nothing has to be wrapped by hand. `@lit/react` is
22
+ a peer dependency:
23
+
24
+ ```bash
25
+ npm i tuix-webcomponents @lit/react
26
+ ```
27
+
28
+ ```tsx
29
+ import 'tuix-webcomponents/dist/assets/tuix-styles.css';
30
+ import { TuixButton, TuixText } from 'tuix-webcomponents/react';
31
+ import { IconName, MainVariant, TextSize } from 'tuix-webcomponents';
17
32
 
18
33
  function App() {
19
-
20
- // load fonts for SSR and CSR
21
- useEffect(() => {
22
- loadFonts()
23
- }, [])
24
-
25
34
  return (
26
- <tuix-text size="xl" type="headline" color="primary"></tuix-text>
27
- )
35
+ <>
36
+ <TuixText size={TextSize.XL}>Test text</TuixText>
37
+ <TuixButton
38
+ variant={MainVariant.PRIMARY}
39
+ iconLeft={IconName.SAVE}
40
+ onCustomClick={() => console.log('clicked')}
41
+ >
42
+ Save
43
+ </TuixButton>
44
+ </>
45
+ );
28
46
  }
29
47
  ```
30
48
 
31
- ### React .tsx without SSR
49
+ The props are the element's own properties, so objects and arrays pass through
50
+ untouched, and each custom event arrives as an `on*` prop. Because those
51
+ properties are typed with the exported enums, pass `MainVariant.PRIMARY` rather
52
+ than the string `'primary'`.
32
53
 
33
- ```typescript jsx
34
- import { loadFonts } from 'tuix-webcomponents';
35
- loadFonts()
54
+ The wrappers are generated by `scripts/build-react.ts` during `npm run build`
55
+ and land in `package-build/src/react`; `src/react/` is gitignored. Nothing
56
+ about them is hand-kept: the generator reads `src/`, so every element with a
57
+ `@customElement` decorator gets a wrapper, and every event it dispatches gets
58
+ its `on*` prop, typed with the detail type written at the dispatch site.
36
59
 
37
- function App() {
38
-
39
- return (
40
- <tuix-text size="xl" type="headline" color="primary"></tuix-text>
41
- )
42
- }
60
+ ### Fonts
61
+
62
+ The components render in Rubik, served from the Tuix CDN. The design tokens
63
+ stylesheet imports it, so `import 'tuix-webcomponents/dist/assets/tuix-styles.css'`
64
+ is enough. To start the request earlier, add the link to the document head:
65
+
66
+ ```html
67
+ <link rel="preconnect" href="https://hccdn.tuix.ch" />
68
+ <link rel="stylesheet" href="https://hccdn.tuix.ch/rubik_d444e2375d.css" />
43
69
  ```
44
70
 
71
+ There is no `loadFonts()` helper any more: injecting the stylesheet from
72
+ JavaScript reflowed the page once the face arrived.
73
+
74
+ ## Documentation
75
+
76
+ The developer documentation site (Fumadocs, statically exported) lives in
77
+ `docs/` as its own npm project:
78
+
79
+ ```bash
80
+ cd docs
81
+ npm install
82
+ npm run dev # http://localhost:3000/en/developers
83
+ npm run build # static export into docs/dist
84
+ ```
85
+
86
+ It carries step-by-step integration guides for React/Next.js, Vue and Angular,
87
+ and a page per component with live previews of every variant, in English and
88
+ German. Pages are MDX files in `docs/content/docs/` (`*.mdx` English,
89
+ `*.de.mdx` German), ordered by `meta.json` and `meta.de.json`.
90
+
91
+ See `docs/src/modules/docs/README.md` for how the site is put together, and
92
+ [the contributing page](docs/content/docs/contributing.mdx) for the workflow.
93
+
94
+ ## Building the package
95
+
96
+ ```bash
97
+ npm run build
98
+ ```
99
+
100
+ writes `package-build/`, and `npm run stage:package` copies that into `dist/`,
101
+ which is what `npm publish` ships (`files: ["dist"]`):
102
+
103
+ | Path | Entry point |
104
+ | -------------------------------- | -------------------------------------------- |
105
+ | `dist/src/index.js` + `.d.ts` | `tuix-webcomponents` — the custom elements |
106
+ | `dist/src/react/index.js` | `tuix-webcomponents/react` — the wrappers |
107
+ | `dist/assets/tuix-styles.css` | `tuix-webcomponents/dist/assets/tuix-styles.css` — the design tokens |
108
+
109
+ The two steps are separate on purpose: `dist/` is also where the site is
110
+ assembled, so the package build never writes it. Only the staging step does,
111
+ and that runs inside `prepublishOnly` and `bin/publish.sh` — i.e. in the
112
+ publish job, after the site has already been uploaded from its own job.
113
+
114
+ The steps behind it: `cem analyze` refreshes `custom-elements.json`,
115
+ `scripts/build-react.ts` regenerates `src/react/`, `tsc -p tsconfig.publish.json`
116
+ compiles both entry points with their declarations, `build:css` renders the
117
+ tokens, and `tsc-esm-fix` adds the `.js` extensions Node's ESM resolver needs.
118
+
119
+ `npm publish` re-runs build and staging through `prepublishOnly`, so a release
120
+ cannot ship a stale `dist/`. `npm run publish:local` packs the same output into
121
+ a linkable `local/` folder for trying it in another project.
122
+
45
123
  ## Linting and formatting
46
124
 
47
125
  To scan the project for linting and formatting errors, run
@@ -70,6 +148,16 @@ To build a production version of Storybook, run
70
148
  npm run storybook:build
71
149
  ```
72
150
 
151
+ That writes `dist/storybook`, which is where the deployed site serves it from.
152
+ The site root is the documentation, and the Storybook sidebar brand links back
153
+ to it. `scripts/build.sh` is what assembles both into `dist/` for CI.
154
+
155
+ Three builds, three folders, so none of them clears another: the site into
156
+ `dist/` (`scripts/build.sh` — Storybook under `dist/storybook`, the docs export
157
+ at the root), the npm package into `package-build/` (`npm run build`), and the
158
+ dev compile into `build/` (`npm start`). `dist/` is reused for the package only
159
+ by `npm run stage:package`, which runs in the publish job.
160
+
73
161
 
74
162
  ## Tooling configs
75
163
 
@@ -84,3 +172,4 @@ npm start
84
172
  ```
85
173
 
86
174
  To run a local development server that serves the basic demo located in `demo/index.html`
175
+
@@ -0,0 +1,72 @@
1
+ @import url('https://hccdn.tuix.ch/rubik_d444e2375d.css');
2
+
3
+ :root {
4
+ --tuix-light-color-primary-50: #F2F3FA;
5
+ --tuix-light-color-primary-100: #E3E5F4;
6
+ --tuix-light-color-primary-200: #C7CAE8;
7
+ --tuix-light-color-primary-300: #AAAFE0;
8
+ --tuix-light-color-primary-400: #8B90D2;
9
+ --tuix-light-color-main: #585A9D;
10
+ --tuix-light-color-dark-main: #6F73B8;
11
+ --tuix-light-color-primary-600: #4E508E;
12
+ --tuix-light-color-primary-700: #404277;
13
+ --tuix-light-color-primary-800: #32345F;
14
+ --tuix-light-color-primary-900: #22233F;
15
+ --tuix-light-color-primary-950: #1F1E33;
16
+ --tuix-light-color-secondary: #BBADFF;
17
+ --tuix-light-color-white: #FFFFFF;
18
+ --tuix-light-color-black: #121212;
19
+ --tuix-light-color-neutral-200: #FAFAFA;
20
+ --tuix-light-color-neutral-600: #b6b6b6;
21
+ --tuix-light-color-success: #439F6E;
22
+ --tuix-light-color-success-50: #F1F9F5;
23
+ --tuix-light-color-validation: #FFB82E;
24
+ --tuix-light-color-validation-50: #FFFBF4;
25
+ --tuix-light-color-validation-200: #FFEAC1;
26
+ --tuix-light-color-error: #F93232;
27
+ --tuix-light-color-error-50: #FFF5F5;
28
+ --tuix-light-color-error-200: #FFD8D8;
29
+ --tuix-light-color-section-bg: #FAFAFA;
30
+ --tuix-light-color-disabled-bg: #EBEAF4;
31
+ --tuix-light-color-shadow: rgba(66, 79, 101, 0.16);
32
+ --tuix-dark-color-primary-50: #F4F5FB;
33
+ --tuix-dark-color-primary-100: #E3E5F4;
34
+ --tuix-dark-color-#e3e5f4: PRIMARY_100;
35
+ --tuix-dark-color-primary-200: #C7CAE8;
36
+ --tuix-dark-color-#c7cae8: PRIMARY_200;
37
+ --tuix-dark-color-primary-300: #AAAFE0;
38
+ --tuix-dark-color-#aaafe0: PRIMARY_300;
39
+ --tuix-dark-color-primary-400: #8B90D2;
40
+ --tuix-dark-color-#8b90d2: PRIMARY_400;
41
+ --tuix-dark-color-main: #6F73B8;
42
+ --tuix-dark-color-dark-main: #6F73B8;
43
+ --tuix-dark-color-#6f73b8: DARK_MAIN;
44
+ --tuix-dark-color-primary-600: #5C60A4;
45
+ --tuix-dark-color-primary-700: #4A4E8E;
46
+ --tuix-dark-color-primary-800: #32355F;
47
+ --tuix-dark-color-primary-900: #181A32;
48
+ --tuix-dark-color-primary-950: #1F1E33;
49
+ --tuix-dark-color-#1f1e33: PRIMARY_950;
50
+ --tuix-dark-color-secondary: #BBADFF;
51
+ --tuix-dark-color-#bbadff: SECONDARY;
52
+ --tuix-dark-color-white: #FFFFFF;
53
+ --tuix-dark-color-black: #0F1117;
54
+ --tuix-dark-color-neutral-200: #C9C8D3;
55
+ --tuix-dark-color-neutral-600: #8A8894;
56
+ --tuix-dark-color-success: #439F6E;
57
+ --tuix-dark-color-#439f6e: SUCCESS;
58
+ --tuix-dark-color-success-50: rgba(241, 249, 245, 0.30);
59
+ --tuix-dark-color-validation: #FFD489;
60
+ --tuix-dark-color-validation-50: rgba(255, 212, 137, 0.20);
61
+ --tuix-dark-color-validation-200: #FFEAC1;
62
+ --tuix-dark-color-#ffeac1: VALIDATION_200;
63
+ --tuix-dark-color-error: #FF8486;
64
+ --tuix-dark-color-error-50: rgba(255, 132, 134, 0.20);
65
+ --tuix-dark-color-error-200: #FFD8D8;
66
+ --tuix-dark-color-#ffd8d8: ERROR_200;
67
+ --tuix-dark-color-section-bg: #0E0E0E;
68
+ --tuix-dark-color-elevation-1: #141722;
69
+ --tuix-dark-color-elevation-2: #181C29;
70
+ --tuix-dark-color-elevation-3: #1D2131;
71
+ --tuix-dark-color-elevation-4: #23273A;
72
+ }
@@ -1,3 +1,10 @@
1
+ export { type CustomEventTuixButton } from './tuix-button/interfaces/tuix-button.interface.js';
2
+ export type { CustomEventTuixCheckbox, DetailValueCheckbox, } from './tuix-checkbox/interfaces/tuix-checkbox.interface.js';
3
+ export type { CustomEventTuixDropdownInput, CustomEventTuixDropdownSelect, TuixDropdownOption, TuixDropdownObjectOption, TuixDropdownPlainOption, } from './tuix-dropdown/interfaces/tuix-dropdown.interface.js';
4
+ export type { CustomEventTuixInput } from './tuix-input/interfaces/tuix-input.interface.js';
5
+ export type { CustomEventTuixRadioButton, TuixRadioButtonOption, } from './tuix-radio-button/interfaces/tuix-radio-button.interface.js';
6
+ export type { CustomEventTuixToggle } from './tuix-toggle-button/interfaces/tuix-toggle.interface.js';
7
+ export type { DetailValue } from './utils/interfaces/detail-value.interface.js';
1
8
  export { TuixText } from './tuix-text/TuixText.js';
2
9
  export { TuixIcon } from './tuix-icon/TuixIcon.js';
3
10
  export { TuixButton } from './tuix-button/TuixButton.js';
@@ -6,4 +13,23 @@ export { TuixIconButton } from './tuix-icon-button/TuixIconButton.js';
6
13
  export { TuixLink } from './tuix-link/TuixLink.js';
7
14
  export { TuixInput } from './tuix-input/TuixInput.js';
8
15
  export { TuixDropdown } from './tuix-dropdown/TuixDropdown.js';
9
- export declare function loadFonts(): void;
16
+ export { TuixCheckbox } from './tuix-checkbox/TuixCheckbox.js';
17
+ export { TuixRadioButton } from './tuix-radio-button/TuixRadioButton.js';
18
+ export { TuixToggleButton } from './tuix-toggle-button/TuixToggleButton.js';
19
+ export { TuixTable } from './tuix-table/TuixTable.js';
20
+ export type { IDataTableHeader, PaginationEventDetail, ThreeDotsLoaderConfig, TuixPaginationEvent, TuixTableElement, } from './tuix-table/interfaces/tuix-table.interface.js';
21
+ export { TuixToast } from './tuix-toast/TuixToast.js';
22
+ export { TuixModal } from './tuix-modal/TuixModal.js';
23
+ export { ToastType } from './tuix-toast/enums/tuix-toast.enums.js';
24
+ export { TextSize, TextVariant } from './tuix-text/enums/tuix-text.enums.js';
25
+ export { MainVariant } from './utils/mainVariant.enum.js';
26
+ export { CheckboxLabelSide } from './tuix-checkbox/enums/tuix-checkbox.enums.js';
27
+ export { PaperElevation } from './tuix-paper/enums/tuix-paper.enum.js';
28
+ export { LinkTarget } from './tuix-link/enums/linkTarget.enum.js';
29
+ export { IconName, IconSizeVariant, } from './tuix-icon/enums/tuix-icon.enums.js';
30
+ export { DescriptionType, InputType, } from './tuix-input/enums/tuix-input.enums.js';
31
+ export { Palette } from './utils/colors.js';
32
+ export { DarkPalette } from './utils/darkColors.js';
33
+ export { DropdownType } from './tuix-dropdown/enums/tuix-dropdown.enums.js';
34
+ export { BorderRadiusPaper } from './tuix-paper/enums/tuix-paper.enum.js';
35
+ export { ScreenSizes } from './utils/screenSizes.enum.js';
package/dist/src/index.js CHANGED
@@ -6,19 +6,22 @@ export { TuixIconButton } from './tuix-icon-button/TuixIconButton.js';
6
6
  export { TuixLink } from './tuix-link/TuixLink.js';
7
7
  export { TuixInput } from './tuix-input/TuixInput.js';
8
8
  export { TuixDropdown } from './tuix-dropdown/TuixDropdown.js';
9
- export function loadFonts() {
10
- const link1 = document.createElement('link');
11
- link1.rel = 'preconnect';
12
- link1.href = 'https://fonts.googleapis.com';
13
- const link2 = document.createElement('link');
14
- link2.rel = 'preconnect';
15
- link2.href = 'https://fonts.gstatic.com';
16
- const link3 = document.createElement('link');
17
- link3.rel = 'stylesheet';
18
- link3.href =
19
- 'https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap';
20
- document.head.appendChild(link1);
21
- document.head.appendChild(link2);
22
- document.head.appendChild(link3);
23
- }
24
- //# sourceMappingURL=index.js.map
9
+ export { TuixCheckbox } from './tuix-checkbox/TuixCheckbox.js';
10
+ export { TuixRadioButton } from './tuix-radio-button/TuixRadioButton.js';
11
+ export { TuixToggleButton } from './tuix-toggle-button/TuixToggleButton.js';
12
+ export { TuixTable } from './tuix-table/TuixTable.js';
13
+ export { TuixToast } from './tuix-toast/TuixToast.js';
14
+ export { TuixModal } from './tuix-modal/TuixModal.js';
15
+ export { ToastType } from './tuix-toast/enums/tuix-toast.enums.js';
16
+ export { TextSize, TextVariant } from './tuix-text/enums/tuix-text.enums.js';
17
+ export { MainVariant } from './utils/mainVariant.enum.js';
18
+ export { CheckboxLabelSide } from './tuix-checkbox/enums/tuix-checkbox.enums.js';
19
+ export { PaperElevation } from './tuix-paper/enums/tuix-paper.enum.js';
20
+ export { LinkTarget } from './tuix-link/enums/linkTarget.enum.js';
21
+ export { IconName, IconSizeVariant, } from './tuix-icon/enums/tuix-icon.enums.js';
22
+ export { DescriptionType, InputType, } from './tuix-input/enums/tuix-input.enums.js';
23
+ export { Palette } from './utils/colors.js';
24
+ export { DarkPalette } from './utils/darkColors.js';
25
+ export { DropdownType } from './tuix-dropdown/enums/tuix-dropdown.enums.js';
26
+ export { BorderRadiusPaper } from './tuix-paper/enums/tuix-paper.enum.js';
27
+ export { ScreenSizes } from './utils/screenSizes.enum.js';
@@ -0,0 +1,42 @@
1
+ import { type EventName } from '@lit/react';
2
+ import { TuixText as WrappedTuixText, TuixIcon as WrappedTuixIcon, TuixButton as WrappedTuixButton, TuixPaper as WrappedTuixPaper, TuixIconButton as WrappedTuixIconButton, TuixLink as WrappedTuixLink, TuixInput as WrappedTuixInput, TuixDropdown as WrappedTuixDropdown, TuixCheckbox as WrappedTuixCheckbox, TuixRadioButton as WrappedTuixRadioButton, TuixToggleButton as WrappedTuixToggleButton, TuixTable as WrappedTuixTable, TuixToast as WrappedTuixToast, TuixModal as WrappedTuixModal } from '../index.js';
3
+ import type { DetailValue, DetailValueCheckbox, PaginationEventDetail, TuixDropdownPlainOption } from '../index.js';
4
+ export declare const TuixText: import("@lit/react").ReactWebComponent<WrappedTuixText, {}>;
5
+ export declare const TuixIcon: import("@lit/react").ReactWebComponent<WrappedTuixIcon, {}>;
6
+ export declare const TuixButton: import("@lit/react").ReactWebComponent<WrappedTuixButton, {
7
+ onCustomClick: EventName<CustomEvent<undefined>>;
8
+ }>;
9
+ export declare const TuixPaper: import("@lit/react").ReactWebComponent<WrappedTuixPaper, {}>;
10
+ export declare const TuixIconButton: import("@lit/react").ReactWebComponent<WrappedTuixIconButton, {
11
+ onCustomClick: EventName<CustomEvent<undefined>>;
12
+ }>;
13
+ export declare const TuixLink: import("@lit/react").ReactWebComponent<WrappedTuixLink, {}>;
14
+ export declare const TuixInput: import("@lit/react").ReactWebComponent<WrappedTuixInput, {
15
+ onChange: EventName<CustomEvent<DetailValue<string>>>;
16
+ onBlur: EventName<CustomEvent<DetailValue<string>>>;
17
+ onClick: EventName<CustomEvent<undefined>>;
18
+ }>;
19
+ export declare const TuixDropdown: import("@lit/react").ReactWebComponent<WrappedTuixDropdown, {
20
+ onSelect: EventName<CustomEvent<DetailValue<TuixDropdownPlainOption>>>;
21
+ onInputSingle: EventName<CustomEvent<DetailValue<string>>>;
22
+ }>;
23
+ export declare const TuixCheckbox: import("@lit/react").ReactWebComponent<WrappedTuixCheckbox, {
24
+ onChange: EventName<CustomEvent<DetailValueCheckbox>>;
25
+ }>;
26
+ export declare const TuixRadioButton: import("@lit/react").ReactWebComponent<WrappedTuixRadioButton, {
27
+ onChange: EventName<CustomEvent<DetailValue<string>>>;
28
+ }>;
29
+ export declare const TuixToggleButton: import("@lit/react").ReactWebComponent<WrappedTuixToggleButton, {
30
+ onChange: EventName<CustomEvent<DetailValueCheckbox>>;
31
+ }>;
32
+ export declare const TuixTable: import("@lit/react").ReactWebComponent<WrappedTuixTable, {
33
+ onNextPage: EventName<CustomEvent<PaginationEventDetail>>;
34
+ onPreviousPage: EventName<CustomEvent<PaginationEventDetail>>;
35
+ onPageSizeChange: EventName<CustomEvent<PaginationEventDetail>>;
36
+ }>;
37
+ export declare const TuixToast: import("@lit/react").ReactWebComponent<WrappedTuixToast, {
38
+ onClose: EventName<CustomEvent<undefined>>;
39
+ }>;
40
+ export declare const TuixModal: import("@lit/react").ReactWebComponent<WrappedTuixModal, {
41
+ onClose: EventName<CustomEvent<undefined>>;
42
+ }>;
@@ -0,0 +1,114 @@
1
+ // Generated by scripts/build-react.ts. Do not edit by hand.
2
+ //
3
+ // React wrappers for every element, built with @lit/react: the props are the
4
+ // element's own properties, so objects and arrays pass through untouched, and
5
+ // each custom event arrives as an `on*` prop instead of an addEventListener
6
+ // call. Importing from here registers the custom elements.
7
+ import { createComponent } from '@lit/react';
8
+ import * as React from 'react';
9
+ import { TuixText as WrappedTuixText, TuixIcon as WrappedTuixIcon, TuixButton as WrappedTuixButton, TuixPaper as WrappedTuixPaper, TuixIconButton as WrappedTuixIconButton, TuixLink as WrappedTuixLink, TuixInput as WrappedTuixInput, TuixDropdown as WrappedTuixDropdown, TuixCheckbox as WrappedTuixCheckbox, TuixRadioButton as WrappedTuixRadioButton, TuixToggleButton as WrappedTuixToggleButton, TuixTable as WrappedTuixTable, TuixToast as WrappedTuixToast, TuixModal as WrappedTuixModal, } from '../index.js';
10
+ export const TuixText = createComponent({
11
+ tagName: 'tuix-text',
12
+ elementClass: WrappedTuixText,
13
+ react: React,
14
+ });
15
+ export const TuixIcon = createComponent({
16
+ tagName: 'tuix-icon',
17
+ elementClass: WrappedTuixIcon,
18
+ react: React,
19
+ });
20
+ export const TuixButton = createComponent({
21
+ tagName: 'tuix-button',
22
+ elementClass: WrappedTuixButton,
23
+ react: React,
24
+ events: {
25
+ onCustomClick: 'customClick',
26
+ },
27
+ });
28
+ export const TuixPaper = createComponent({
29
+ tagName: 'tuix-paper',
30
+ elementClass: WrappedTuixPaper,
31
+ react: React,
32
+ });
33
+ export const TuixIconButton = createComponent({
34
+ tagName: 'tuix-icon-button',
35
+ elementClass: WrappedTuixIconButton,
36
+ react: React,
37
+ events: {
38
+ onCustomClick: 'customClick',
39
+ },
40
+ });
41
+ export const TuixLink = createComponent({
42
+ tagName: 'tuix-link',
43
+ elementClass: WrappedTuixLink,
44
+ react: React,
45
+ });
46
+ export const TuixInput = createComponent({
47
+ tagName: 'tuix-input',
48
+ elementClass: WrappedTuixInput,
49
+ react: React,
50
+ events: {
51
+ onChange: 'on-change',
52
+ onBlur: 'on-blur',
53
+ onClick: 'on-click',
54
+ },
55
+ });
56
+ export const TuixDropdown = createComponent({
57
+ tagName: 'tuix-dropdown',
58
+ elementClass: WrappedTuixDropdown,
59
+ react: React,
60
+ events: {
61
+ onSelect: 'select',
62
+ onInputSingle: 'input-single',
63
+ },
64
+ });
65
+ export const TuixCheckbox = createComponent({
66
+ tagName: 'tuix-checkbox',
67
+ elementClass: WrappedTuixCheckbox,
68
+ react: React,
69
+ events: {
70
+ onChange: 'change',
71
+ },
72
+ });
73
+ export const TuixRadioButton = createComponent({
74
+ tagName: 'tuix-radio-button',
75
+ elementClass: WrappedTuixRadioButton,
76
+ react: React,
77
+ events: {
78
+ onChange: 'change',
79
+ },
80
+ });
81
+ export const TuixToggleButton = createComponent({
82
+ tagName: 'tuix-toggle-button',
83
+ elementClass: WrappedTuixToggleButton,
84
+ react: React,
85
+ events: {
86
+ onChange: 'change',
87
+ },
88
+ });
89
+ export const TuixTable = createComponent({
90
+ tagName: 'tuix-table',
91
+ elementClass: WrappedTuixTable,
92
+ react: React,
93
+ events: {
94
+ onNextPage: 'next-page',
95
+ onPreviousPage: 'previous-page',
96
+ onPageSizeChange: 'page-size-change',
97
+ },
98
+ });
99
+ export const TuixToast = createComponent({
100
+ tagName: 'tuix-toast',
101
+ elementClass: WrappedTuixToast,
102
+ react: React,
103
+ events: {
104
+ onClose: 'on-close',
105
+ },
106
+ });
107
+ export const TuixModal = createComponent({
108
+ tagName: 'tuix-modal',
109
+ elementClass: WrappedTuixModal,
110
+ react: React,
111
+ events: {
112
+ onClose: 'on-close',
113
+ },
114
+ });
@@ -0,0 +1,17 @@
1
+ import { LitElement, type TemplateResult } from 'lit';
2
+ import { MainVariant } from '../utils/mainVariant.enum';
3
+ import { IconName, IconSizeVariant } from '../tuix-icon/enums/tuix-icon.enums';
4
+ import '../tuix-icon/TuixIcon.js';
5
+ export declare abstract class TuixBaseButton extends LitElement {
6
+ variant: MainVariant;
7
+ disabled: boolean;
8
+ dark: boolean;
9
+ protected iconColor: string;
10
+ updated(): void;
11
+ protected _getTextColor(): string;
12
+ protected abstract _updateIconColor(): void;
13
+ protected _handleClick(): void;
14
+ protected _iconTemplate(iconName: IconName, iconSize: IconSizeVariant): TemplateResult;
15
+ protected abstract _buttonContent(): TemplateResult;
16
+ protected render(): TemplateResult;
17
+ }
@@ -0,0 +1,60 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html } from 'lit';
3
+ import { MainVariant } from '../utils/mainVariant.enum';
4
+ import { property, state } from 'lit/decorators.js';
5
+ import { buttonTextColor } from './enums/tuix-button.enums';
6
+ import '../tuix-icon/TuixIcon.js';
7
+ export class TuixBaseButton extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.variant = MainVariant.PRIMARY;
11
+ this.disabled = false;
12
+ this.dark = false;
13
+ this.iconColor = '';
14
+ }
15
+ updated() {
16
+ this._updateIconColor();
17
+ }
18
+ _getTextColor() {
19
+ const element = this.shadowRoot?.querySelector('.button');
20
+ if (!element)
21
+ return buttonTextColor[this.variant];
22
+ const computedStyle = getComputedStyle(element);
23
+ return computedStyle.color;
24
+ }
25
+ _handleClick() {
26
+ this.dispatchEvent(new CustomEvent('customClick', { bubbles: true }));
27
+ }
28
+ _iconTemplate(iconName, iconSize) {
29
+ this._updateIconColor();
30
+ return html `<tuix-icon
31
+ size="${iconSize}"
32
+ name="${iconName}"
33
+ color="${this.iconColor}"
34
+ ></tuix-icon>`;
35
+ }
36
+ render() {
37
+ return html `<button
38
+ @click=${this._handleClick}
39
+ @mouseenter=${this._updateIconColor}
40
+ @mouseleave=${this._updateIconColor}
41
+ @blur=${this._updateIconColor}
42
+ ?disabled="${this.disabled}"
43
+ class="button"
44
+ >
45
+ ${this._buttonContent()}
46
+ </button>`;
47
+ }
48
+ }
49
+ __decorate([
50
+ property({ type: MainVariant, reflect: true })
51
+ ], TuixBaseButton.prototype, "variant", void 0);
52
+ __decorate([
53
+ property({ type: Boolean, reflect: true })
54
+ ], TuixBaseButton.prototype, "disabled", void 0);
55
+ __decorate([
56
+ property({ type: Boolean, reflect: true })
57
+ ], TuixBaseButton.prototype, "dark", void 0);
58
+ __decorate([
59
+ state()
60
+ ], TuixBaseButton.prototype, "iconColor", void 0);
@@ -1,17 +1,11 @@
1
- import { LitElement, TemplateResult } from 'lit';
1
+ import { type TemplateResult } from 'lit';
2
2
  import { IconName } from '../tuix-icon/enums/tuix-icon.enums';
3
- import '../tuix-icon/TuixIcon.js';
4
- import { MainVariant } from '../utils/mainVariant.enum';
5
- export declare class TuixButton extends LitElement {
3
+ import { TuixBaseButton } from './TuixBaseButton';
4
+ export declare class TuixButton extends TuixBaseButton {
6
5
  static styles: import("lit").CSSResult[];
7
- iconColor: string;
8
- variant: MainVariant;
9
- disabled: boolean;
6
+ full: boolean;
10
7
  iconRight?: IconName;
11
8
  iconLeft?: IconName;
12
- private _getIconColor;
13
- private _handleClick;
14
- private _iconTemplate;
15
- getButtonStyles(): string;
16
- protected render(): TemplateResult;
9
+ protected _updateIconColor(): void;
10
+ protected _buttonContent(): TemplateResult;
17
11
  }