@ttoss/ui 1.30.9 → 1.30.11

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.
package/dist/esm/index.js CHANGED
@@ -320,6 +320,15 @@ var BruttalTheme = {
320
320
  /**
321
321
  * Components
322
322
  */
323
+ badges: {
324
+ primary: {
325
+ color: "onPrimary",
326
+ bg: "primary",
327
+ fontSize: "sm",
328
+ paddingX: "sm",
329
+ borderRadius: "default"
330
+ }
331
+ },
323
332
  buttons: {
324
333
  accent: {
325
334
  backgroundColor: "accent",
@@ -417,10 +426,24 @@ var BruttalTheme = {
417
426
  },
418
427
  forms: {
419
428
  label: {
420
- "&:has(+ div > input:invalid)": {
429
+ "&:has(+ div > input.error)": {
421
430
  "span > iconify-icon": {
422
431
  color: "danger"
423
432
  }
433
+ },
434
+ '&:has(input[type="checkbox"]:disabled)': {
435
+ color: "onMuted"
436
+ }
437
+ },
438
+ checkbox: {
439
+ "input:not(:checked) ~ &": {
440
+ color: "primary"
441
+ },
442
+ "input:disabled ~ &": {
443
+ color: "muted"
444
+ },
445
+ "input:disabled ~ & path": {
446
+ backgroundColor: "onMuted"
424
447
  }
425
448
  },
426
449
  input: {
@@ -528,6 +551,10 @@ init_tsup_inject();
528
551
  import { useThemeUI } from "theme-ui";
529
552
  var useTheme = useThemeUI;
530
553
 
554
+ // src/components/Badge.tsx
555
+ init_tsup_inject();
556
+ import { Badge } from "theme-ui";
557
+
531
558
  // src/components/Box.tsx
532
559
  init_tsup_inject();
533
560
  import { Box } from "theme-ui";
@@ -576,7 +603,9 @@ var defaultIconSizeCustomisations = Object.freeze({
576
603
  height: null
577
604
  });
578
605
  var defaultIconCustomisations = Object.freeze({
606
+ // Dimensions
579
607
  ...defaultIconSizeCustomisations,
608
+ // Transformations
580
609
  ...defaultIconTransformations
581
610
  });
582
611
  function rotateFromString(value, defaultValue = 0) {
@@ -664,6 +693,7 @@ var stringToIcon = (value, validate, allowSimpleName, provider = "") => {
664
693
  const name2 = colonSeparated.pop();
665
694
  const prefix = colonSeparated.pop();
666
695
  const result = {
696
+ // Allow provider without '@': "provider:prefix:name"
667
697
  provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,
668
698
  prefix,
669
699
  name: name2
@@ -2187,7 +2217,7 @@ for (const prefix in propsToAddTo) {
2187
2217
  }
2188
2218
  }
2189
2219
  function fixSize(value) {
2190
- return value + (value.match(/^[-0-9.]+$/) ? "px" : "");
2220
+ return value ? value + (value.match(/^[-0-9.]+$/) ? "px" : "") : "inherit";
2191
2221
  }
2192
2222
  function renderSPAN(data, icon, useMask) {
2193
2223
  const node = document.createElement("span");
@@ -2216,7 +2246,18 @@ function renderSPAN(data, icon, useMask) {
2216
2246
  }
2217
2247
  function renderSVG(data) {
2218
2248
  const node = document.createElement("span");
2219
- node.innerHTML = iconToHTML(data.body, data.attributes);
2249
+ const attr = data.attributes;
2250
+ let style = "";
2251
+ if (!attr.width) {
2252
+ style = "width: inherit;";
2253
+ }
2254
+ if (!attr.height) {
2255
+ style += "height: inherit;";
2256
+ }
2257
+ if (style) {
2258
+ attr.style = style;
2259
+ }
2260
+ node.innerHTML = iconToHTML(data.body, attr);
2220
2261
  return node.firstChild;
2221
2262
  }
2222
2263
  function renderIcon(parent, state) {
@@ -2737,6 +2778,7 @@ import { Textarea } from "theme-ui";
2737
2778
  init_tsup_inject();
2738
2779
  import { Container } from "theme-ui";
2739
2780
  export {
2781
+ Badge,
2740
2782
  BaseStyles,
2741
2783
  Box,
2742
2784
  Button,
@@ -2777,6 +2819,6 @@ iconify-icon/dist/iconify-icon.mjs:
2777
2819
  * Licensed under MIT.
2778
2820
  *
2779
2821
  * @license MIT
2780
- * @version 1.0.5
2822
+ * @version 1.0.7
2781
2823
  *)
2782
2824
  */
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as theme_ui from 'theme-ui';
2
2
  import { Theme, ButtonProps as ButtonProps$1, InputProps as InputProps$1 } from 'theme-ui';
3
- export { BaseStyles, Box, BoxProps, Card, CardProps, Checkbox, CheckboxProps, Container, ContainerProps, Divider, DividerProps, Flex, FlexProps, Grid, GridProps, Heading, HeadingProps, Image, ImageProps, Label, LabelProps, Progress as LinearProgress, ProgressProps as LinearProgressProps, Link, LinkProps, Radio, RadioProps, Select, SelectProps, Slider, SliderProps, Spinner, SpinnerProps, Text, TextProps, Textarea, TextareaProps, Theme } from 'theme-ui';
3
+ export { Badge, BadgeProps, BaseStyles, Box, BoxProps, Card, CardProps, Checkbox, CheckboxProps, Container, ContainerProps, Divider, DividerProps, Flex, FlexProps, Grid, GridProps, Heading, HeadingProps, Image, ImageProps, Label, LabelProps, Progress as LinearProgress, ProgressProps as LinearProgressProps, Link, LinkProps, Radio, RadioProps, Select, SelectProps, Slider, SliderProps, Spinner, SpinnerProps, Text, TextProps, Textarea, TextareaProps, Theme } from 'theme-ui';
4
4
  export { useBreakpointIndex, useResponsiveValue } from '@theme-ui/match-media';
5
5
  import * as React from 'react';
6
6
  import React__default from 'react';
package/dist/index.js CHANGED
@@ -155,29 +155,30 @@ var require_cjs = __commonJS({
155
155
  // src/index.ts
156
156
  var src_exports = {};
157
157
  __export(src_exports, {
158
- BaseStyles: () => import_theme_ui23.BaseStyles,
159
- Box: () => import_theme_ui3.Box,
158
+ Badge: () => import_theme_ui3.Badge,
159
+ BaseStyles: () => import_theme_ui24.BaseStyles,
160
+ Box: () => import_theme_ui4.Box,
160
161
  Button: () => Button,
161
- Card: () => import_theme_ui5.Card,
162
- Checkbox: () => import_theme_ui20.Checkbox,
163
- Container: () => import_theme_ui22.Container,
164
- Divider: () => import_theme_ui6.Divider,
165
- Flex: () => import_theme_ui7.Flex,
166
- Grid: () => import_theme_ui8.Grid,
167
- Heading: () => import_theme_ui9.Heading,
162
+ Card: () => import_theme_ui6.Card,
163
+ Checkbox: () => import_theme_ui21.Checkbox,
164
+ Container: () => import_theme_ui23.Container,
165
+ Divider: () => import_theme_ui7.Divider,
166
+ Flex: () => import_theme_ui8.Flex,
167
+ Grid: () => import_theme_ui9.Grid,
168
+ Heading: () => import_theme_ui10.Heading,
168
169
  Icon: () => Icon2,
169
- Image: () => import_theme_ui10.Image,
170
+ Image: () => import_theme_ui11.Image,
170
171
  InfiniteLinearProgress: () => InfiniteLinearProgress,
171
172
  Input: () => Input,
172
- Label: () => import_theme_ui12.Label,
173
- LinearProgress: () => import_theme_ui14.Progress,
174
- Link: () => import_theme_ui13.Link,
175
- Radio: () => import_theme_ui18.Radio,
176
- Select: () => import_theme_ui16.Select,
177
- Slider: () => import_theme_ui19.Slider,
178
- Spinner: () => import_theme_ui17.Spinner,
179
- Text: () => import_theme_ui15.Text,
180
- Textarea: () => import_theme_ui21.Textarea,
173
+ Label: () => import_theme_ui13.Label,
174
+ LinearProgress: () => import_theme_ui15.Progress,
175
+ Link: () => import_theme_ui14.Link,
176
+ Radio: () => import_theme_ui19.Radio,
177
+ Select: () => import_theme_ui17.Select,
178
+ Slider: () => import_theme_ui20.Slider,
179
+ Spinner: () => import_theme_ui18.Spinner,
180
+ Text: () => import_theme_ui16.Text,
181
+ Textarea: () => import_theme_ui22.Textarea,
181
182
  ThemeProvider: () => ThemeProvider,
182
183
  useBreakpointIndex: () => import_match_media.useBreakpointIndex,
183
184
  useResponsiveValue: () => import_match_media.useResponsiveValue,
@@ -185,7 +186,7 @@ __export(src_exports, {
185
186
  });
186
187
  module.exports = __toCommonJS(src_exports);
187
188
  init_tsup_inject();
188
- var import_theme_ui23 = require("theme-ui");
189
+ var import_theme_ui24 = require("theme-ui");
189
190
  var import_match_media = require("@theme-ui/match-media");
190
191
 
191
192
  // src/theme/ThemeProvider.tsx
@@ -358,6 +359,15 @@ var BruttalTheme = {
358
359
  /**
359
360
  * Components
360
361
  */
362
+ badges: {
363
+ primary: {
364
+ color: "onPrimary",
365
+ bg: "primary",
366
+ fontSize: "sm",
367
+ paddingX: "sm",
368
+ borderRadius: "default"
369
+ }
370
+ },
361
371
  buttons: {
362
372
  accent: {
363
373
  backgroundColor: "accent",
@@ -455,10 +465,24 @@ var BruttalTheme = {
455
465
  },
456
466
  forms: {
457
467
  label: {
458
- "&:has(+ div > input:invalid)": {
468
+ "&:has(+ div > input.error)": {
459
469
  "span > iconify-icon": {
460
470
  color: "danger"
461
471
  }
472
+ },
473
+ '&:has(input[type="checkbox"]:disabled)': {
474
+ color: "onMuted"
475
+ }
476
+ },
477
+ checkbox: {
478
+ "input:not(:checked) ~ &": {
479
+ color: "primary"
480
+ },
481
+ "input:disabled ~ &": {
482
+ color: "muted"
483
+ },
484
+ "input:disabled ~ & path": {
485
+ backgroundColor: "onMuted"
462
486
  }
463
487
  },
464
488
  input: {
@@ -566,14 +590,18 @@ init_tsup_inject();
566
590
  var import_theme_ui2 = require("theme-ui");
567
591
  var useTheme = import_theme_ui2.useThemeUI;
568
592
 
569
- // src/components/Box.tsx
593
+ // src/components/Badge.tsx
570
594
  init_tsup_inject();
571
595
  var import_theme_ui3 = require("theme-ui");
572
596
 
597
+ // src/components/Box.tsx
598
+ init_tsup_inject();
599
+ var import_theme_ui4 = require("theme-ui");
600
+
573
601
  // src/components/Button.tsx
574
602
  init_tsup_inject();
575
603
  var React4 = __toESM(require("react"));
576
- var import_theme_ui4 = require("theme-ui");
604
+ var import_theme_ui5 = require("theme-ui");
577
605
 
578
606
  // src/components/Icon.tsx
579
607
  init_tsup_inject();
@@ -612,7 +640,9 @@ var defaultIconSizeCustomisations = Object.freeze({
612
640
  height: null
613
641
  });
614
642
  var defaultIconCustomisations = Object.freeze({
643
+ // Dimensions
615
644
  ...defaultIconSizeCustomisations,
645
+ // Transformations
616
646
  ...defaultIconTransformations
617
647
  });
618
648
  function rotateFromString(value, defaultValue = 0) {
@@ -700,6 +730,7 @@ var stringToIcon = (value, validate, allowSimpleName, provider = "") => {
700
730
  const name2 = colonSeparated.pop();
701
731
  const prefix = colonSeparated.pop();
702
732
  const result = {
733
+ // Allow provider without '@': "provider:prefix:name"
703
734
  provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,
704
735
  prefix,
705
736
  name: name2
@@ -2223,7 +2254,7 @@ for (const prefix in propsToAddTo) {
2223
2254
  }
2224
2255
  }
2225
2256
  function fixSize(value) {
2226
- return value + (value.match(/^[-0-9.]+$/) ? "px" : "");
2257
+ return value ? value + (value.match(/^[-0-9.]+$/) ? "px" : "") : "inherit";
2227
2258
  }
2228
2259
  function renderSPAN(data, icon, useMask) {
2229
2260
  const node = document.createElement("span");
@@ -2252,7 +2283,18 @@ function renderSPAN(data, icon, useMask) {
2252
2283
  }
2253
2284
  function renderSVG(data) {
2254
2285
  const node = document.createElement("span");
2255
- node.innerHTML = iconToHTML(data.body, data.attributes);
2286
+ const attr = data.attributes;
2287
+ let style = "";
2288
+ if (!attr.width) {
2289
+ style = "width: inherit;";
2290
+ }
2291
+ if (!attr.height) {
2292
+ style += "height: inherit;";
2293
+ }
2294
+ if (style) {
2295
+ attr.style = style;
2296
+ }
2297
+ node.innerHTML = iconToHTML(data.body, attr);
2256
2298
  return node.firstChild;
2257
2299
  }
2258
2300
  function renderIcon(parent, state) {
@@ -2595,7 +2637,7 @@ var Button = React4.forwardRef(
2595
2637
  (props, ref) => {
2596
2638
  const { children, leftIcon, rightIcon, ...restProps } = props;
2597
2639
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
2598
- import_theme_ui4.Button,
2640
+ import_theme_ui5.Button,
2599
2641
  {
2600
2642
  ref,
2601
2643
  ...restProps,
@@ -2621,38 +2663,38 @@ Button.displayName = "Button";
2621
2663
 
2622
2664
  // src/components/Card.tsx
2623
2665
  init_tsup_inject();
2624
- var import_theme_ui5 = require("theme-ui");
2666
+ var import_theme_ui6 = require("theme-ui");
2625
2667
 
2626
2668
  // src/components/Divider.tsx
2627
2669
  init_tsup_inject();
2628
- var import_theme_ui6 = require("theme-ui");
2670
+ var import_theme_ui7 = require("theme-ui");
2629
2671
 
2630
2672
  // src/components/Flex.tsx
2631
2673
  init_tsup_inject();
2632
- var import_theme_ui7 = require("theme-ui");
2674
+ var import_theme_ui8 = require("theme-ui");
2633
2675
 
2634
2676
  // src/components/Grid.tsx
2635
2677
  init_tsup_inject();
2636
- var import_theme_ui8 = require("theme-ui");
2678
+ var import_theme_ui9 = require("theme-ui");
2637
2679
 
2638
2680
  // src/components/Heading.tsx
2639
2681
  init_tsup_inject();
2640
- var import_theme_ui9 = require("theme-ui");
2682
+ var import_theme_ui10 = require("theme-ui");
2641
2683
 
2642
2684
  // src/components/Image.tsx
2643
2685
  init_tsup_inject();
2644
- var import_theme_ui10 = require("theme-ui");
2686
+ var import_theme_ui11 = require("theme-ui");
2645
2687
 
2646
2688
  // src/components/Input.tsx
2647
2689
  init_tsup_inject();
2648
2690
  var import_react4 = __toESM(require("react"));
2649
- var import_theme_ui11 = require("theme-ui");
2691
+ var import_theme_ui12 = require("theme-ui");
2650
2692
  var import_jsx_runtime4 = require("react/jsx-runtime");
2651
2693
  var Input = import_react4.default.forwardRef(
2652
2694
  ({ leadingIcon, trailingIcon, sx, ...inputProps }, ref) => {
2653
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_theme_ui7.Flex, { sx: { position: "relative" }, children: [
2695
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_theme_ui8.Flex, { sx: { position: "relative" }, children: [
2654
2696
  leadingIcon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2655
- import_theme_ui15.Text,
2697
+ import_theme_ui16.Text,
2656
2698
  {
2657
2699
  sx: {
2658
2700
  position: "absolute",
@@ -2666,7 +2708,7 @@ var Input = import_react4.default.forwardRef(
2666
2708
  }
2667
2709
  ),
2668
2710
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2669
- import_theme_ui11.Input,
2711
+ import_theme_ui12.Input,
2670
2712
  {
2671
2713
  ref,
2672
2714
  sx: {
@@ -2678,7 +2720,7 @@ var Input = import_react4.default.forwardRef(
2678
2720
  }
2679
2721
  ),
2680
2722
  trailingIcon && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
2681
- import_theme_ui15.Text,
2723
+ import_theme_ui16.Text,
2682
2724
  {
2683
2725
  sx: {
2684
2726
  position: "absolute",
@@ -2698,39 +2740,39 @@ Input.displayName = "Input";
2698
2740
 
2699
2741
  // src/components/Label.tsx
2700
2742
  init_tsup_inject();
2701
- var import_theme_ui12 = require("theme-ui");
2743
+ var import_theme_ui13 = require("theme-ui");
2702
2744
 
2703
2745
  // src/components/Link.tsx
2704
2746
  init_tsup_inject();
2705
- var import_theme_ui13 = require("theme-ui");
2747
+ var import_theme_ui14 = require("theme-ui");
2706
2748
 
2707
2749
  // src/components/LinearProgress.tsx
2708
2750
  init_tsup_inject();
2709
- var import_theme_ui14 = require("theme-ui");
2751
+ var import_theme_ui15 = require("theme-ui");
2710
2752
 
2711
2753
  // src/components/Text.tsx
2712
2754
  init_tsup_inject();
2713
- var import_theme_ui15 = require("theme-ui");
2755
+ var import_theme_ui16 = require("theme-ui");
2714
2756
 
2715
2757
  // src/components/Select.tsx
2716
2758
  init_tsup_inject();
2717
- var import_theme_ui16 = require("theme-ui");
2759
+ var import_theme_ui17 = require("theme-ui");
2718
2760
 
2719
2761
  // src/components/Spinner.tsx
2720
2762
  init_tsup_inject();
2721
- var import_theme_ui17 = require("theme-ui");
2763
+ var import_theme_ui18 = require("theme-ui");
2722
2764
 
2723
2765
  // src/components/Radio.tsx
2724
2766
  init_tsup_inject();
2725
- var import_theme_ui18 = require("theme-ui");
2767
+ var import_theme_ui19 = require("theme-ui");
2726
2768
 
2727
2769
  // src/components/Slider.tsx
2728
2770
  init_tsup_inject();
2729
- var import_theme_ui19 = require("theme-ui");
2771
+ var import_theme_ui20 = require("theme-ui");
2730
2772
 
2731
2773
  // src/components/Checkbox.tsx
2732
2774
  init_tsup_inject();
2733
- var import_theme_ui20 = require("theme-ui");
2775
+ var import_theme_ui21 = require("theme-ui");
2734
2776
 
2735
2777
  // src/components/InfiniteLinearProgress.tsx
2736
2778
  init_tsup_inject();
@@ -2760,18 +2802,19 @@ var InfiniteLinearProgress = () => {
2760
2802
  clearInterval(timer);
2761
2803
  };
2762
2804
  }, []);
2763
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_theme_ui14.Progress, { max: MAX_PROGRESS, value: progress, role: "progressbar" });
2805
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_theme_ui15.Progress, { max: MAX_PROGRESS, value: progress, role: "progressbar" });
2764
2806
  };
2765
2807
 
2766
2808
  // src/components/Textarea.tsx
2767
2809
  init_tsup_inject();
2768
- var import_theme_ui21 = require("theme-ui");
2810
+ var import_theme_ui22 = require("theme-ui");
2769
2811
 
2770
2812
  // src/components/Container.tsx
2771
2813
  init_tsup_inject();
2772
- var import_theme_ui22 = require("theme-ui");
2814
+ var import_theme_ui23 = require("theme-ui");
2773
2815
  // Annotate the CommonJS export names for ESM import in node:
2774
2816
  0 && (module.exports = {
2817
+ Badge,
2775
2818
  BaseStyles,
2776
2819
  Box,
2777
2820
  Button,
@@ -2812,6 +2855,6 @@ iconify-icon/dist/iconify-icon.mjs:
2812
2855
  * Licensed under MIT.
2813
2856
  *
2814
2857
  * @license MIT
2815
- * @version 1.0.5
2858
+ * @version 1.0.7
2816
2859
  *)
2817
2860
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ttoss/ui",
3
- "version": "1.30.9",
3
+ "version": "1.30.11",
4
4
  "description": "Primitive layout, typographic, and other components for styling applications.",
5
5
  "license": "UNLICENSED",
6
6
  "author": "ttoss",
@@ -21,7 +21,7 @@
21
21
  "sideEffects": false,
22
22
  "typings": "dist/index.d.ts",
23
23
  "dependencies": {
24
- "@emotion/react": "^11.10.5",
24
+ "@emotion/react": "^11.10.6",
25
25
  "@theme-ui/match-media": "^0.15.5",
26
26
  "theme-ui": "^0.15.5"
27
27
  },
@@ -29,11 +29,11 @@
29
29
  "react": ">=16.8.0"
30
30
  },
31
31
  "devDependencies": {
32
- "@iconify-icon/react": "^1.0.5",
33
- "@ttoss/config": "^1.28.3",
34
- "@ttoss/test-utils": "^1.20.5",
35
- "@ttoss/theme": "^1.2.8",
36
- "@types/jest": "^29.4.0",
32
+ "@iconify-icon/react": "^1.0.7",
33
+ "@ttoss/config": "^1.28.4",
34
+ "@ttoss/test-utils": "^1.20.6",
35
+ "@ttoss/theme": "^1.2.10",
36
+ "@types/jest": "^29.4.4",
37
37
  "jest": "^29.5.0",
38
38
  "tsup": "^6.6.3"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "publishConfig": {
46
46
  "access": "public"
47
47
  },
48
- "gitHead": "fb122458378a96e09d1da7fbad0bf12e72e8d04d"
48
+ "gitHead": "2f241b7126c460eeaea3eba6445aa139411d4b19"
49
49
  }
@@ -0,0 +1 @@
1
+ export { Badge, type BadgeProps } from 'theme-ui';
package/src/index.ts CHANGED
@@ -5,6 +5,7 @@ export { ThemeProvider, type ThemeProviderProps } from './theme/ThemeProvider';
5
5
 
6
6
  export { useTheme } from './theme/useTheme';
7
7
 
8
+ export { Badge, type BadgeProps } from './components/Badge';
8
9
  export { Box, type BoxProps } from './components/Box';
9
10
  export { Button, type ButtonProps } from './components/Button';
10
11
  export { Card, type CardProps } from './components/Card';