@blockle/blocks 0.7.0 → 0.7.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.
package/dist/index.cjs CHANGED
@@ -5,13 +5,15 @@ const styles_lib_theme_makeComponentTheme_cjs = require("./styles/lib/theme/make
5
5
  const styles_lib_theme_makeTheme_cjs = require("./styles/lib/theme/makeTheme.cjs");
6
6
  const styles_lib_theme_vars_css_cjs = require("./styles/lib/theme/vars.css.cjs");
7
7
  const styles_lib_css_atoms_sprinkles_css_cjs = require("./styles/lib/css/atoms/sprinkles.css.cjs");
8
- const react = require("react");
9
8
  const jsxRuntime = require("react/jsx-runtime");
9
+ const react = require("react");
10
10
  const styles_components_Button_Button_css_cjs = require("./styles/components/Button/Button.css.cjs");
11
+ const styles_components_Checkbox_checkbox_css_cjs = require("./styles/components/Checkbox/checkbox.css.cjs");
11
12
  const styles_components_Dialog_dialog_css_cjs = require("./styles/components/Dialog/dialog.css.cjs");
12
13
  const reactDom = require("react-dom");
13
14
  const styles_components_Divider_divider_css_cjs = require("./styles/components/Divider/divider.css.cjs");
14
15
  const styles_components_Input_input_css_cjs = require("./styles/components/Input/input.css.cjs");
16
+ const styles_components_Radio_radio_css_cjs = require("./styles/components/Radio/radio.css.cjs");
15
17
  const classnames = (...args) => {
16
18
  const className = args.filter((arg) => arg && typeof arg === "string").join(" ");
17
19
  return className || void 0;
@@ -172,6 +174,45 @@ const Button = react.forwardRef(function Button2({
172
174
  }
173
175
  );
174
176
  });
177
+ const Label = ({
178
+ visualOnly,
179
+ children,
180
+ className,
181
+ required,
182
+ size,
183
+ cursor,
184
+ ...restProps
185
+ }) => {
186
+ const Component = visualOnly ? "span" : "label";
187
+ const containerClassName = useComponentStyles("label", {
188
+ base: true,
189
+ variants: { required, size }
190
+ });
191
+ return /* @__PURE__ */ jsxRuntime.jsx(
192
+ Component,
193
+ {
194
+ className: classnames(containerClassName, className, styles_lib_css_atoms_sprinkles_css_cjs.atoms({ cursor })),
195
+ ...restProps,
196
+ children
197
+ }
198
+ );
199
+ };
200
+ const Checkbox = react.forwardRef(function Checkbox2({ name, label, required, className, ...restProps }, ref) {
201
+ const containerClassName = useComponentStyles("checkbox", { base: true }, false);
202
+ const iconClassName = useComponentStyles("checkbox", { icon: true }, false);
203
+ const labelClassName = useComponentStyles("checkbox", { label: true }, false);
204
+ const input = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classnames(styles_components_Checkbox_checkbox_css_cjs.container, containerClassName, className), children: [
205
+ /* @__PURE__ */ jsxRuntime.jsx("input", { ref, type: "checkbox", name, className: styles_components_Checkbox_checkbox_css_cjs.input, ...restProps }),
206
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: classnames(styles_components_Checkbox_checkbox_css_cjs.icon, iconClassName) })
207
+ ] });
208
+ if (!label) {
209
+ return input;
210
+ }
211
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: labelClassName, children: [
212
+ input,
213
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { visualOnly: true, required, children: label })
214
+ ] });
215
+ });
175
216
  const useLayer = () => {
176
217
  const layerRef = react.useRef();
177
218
  react.useEffect(
@@ -456,29 +497,6 @@ const Input = react.forwardRef(function Input2({ className, name, type = "text",
456
497
  endSlot
457
498
  ] }) });
458
499
  });
459
- const Label = ({
460
- visualOnly,
461
- children,
462
- className,
463
- required,
464
- size,
465
- cursor,
466
- ...restProps
467
- }) => {
468
- const Component = visualOnly ? "span" : "label";
469
- const containerClassName = useComponentStyles("label", {
470
- base: true,
471
- variants: { required, size }
472
- });
473
- return /* @__PURE__ */ jsxRuntime.jsx(
474
- Component,
475
- {
476
- className: classnames(containerClassName, className, styles_lib_css_atoms_sprinkles_css_cjs.atoms({ cursor })),
477
- ...restProps,
478
- children
479
- }
480
- );
481
- };
482
500
  const defaultElement = "a";
483
501
  const Link = react.forwardRef(function Link2({ as, className, variant, underline, ...restProps }, ref) {
484
502
  const Component = as || defaultElement;
@@ -488,6 +506,22 @@ const Link = react.forwardRef(function Link2({ as, className, variant, underline
488
506
  });
489
507
  return /* @__PURE__ */ jsxRuntime.jsx(Box, { ref, as: Component, className: classnames(className, linkClassName), ...restProps });
490
508
  });
509
+ const Radio = react.forwardRef(function Checkbox3({ name, label, className, ...restProps }, ref) {
510
+ const containerClassName = useComponentStyles("radio", { base: true }, false);
511
+ const iconClassName = useComponentStyles("radio", { icon: true }, false);
512
+ const labelClassName = useComponentStyles("checkbox", { label: true }, false);
513
+ const input = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classnames(styles_components_Radio_radio_css_cjs.container, containerClassName, className), children: [
514
+ /* @__PURE__ */ jsxRuntime.jsx("input", { ref, type: "radio", name, className: styles_components_Radio_radio_css_cjs.input, ...restProps }),
515
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: classnames(styles_components_Radio_radio_css_cjs.icon, iconClassName) })
516
+ ] });
517
+ if (!label) {
518
+ return input;
519
+ }
520
+ return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: labelClassName, children: [
521
+ input,
522
+ label && /* @__PURE__ */ jsxRuntime.jsx(Label, { visualOnly: true, children: label })
523
+ ] });
524
+ });
491
525
  const Stack = ({
492
526
  as = "div",
493
527
  display = "flex",
@@ -546,6 +580,7 @@ exports.atoms = styles_lib_css_atoms_sprinkles_css_cjs.atoms;
546
580
  exports.BlocksProvider = BlocksProvider;
547
581
  exports.Box = Box;
548
582
  exports.Button = Button;
583
+ exports.Checkbox = Checkbox;
549
584
  exports.Dialog = Dialog;
550
585
  exports.Divider = Divider;
551
586
  exports.Heading = Heading;
@@ -553,6 +588,8 @@ exports.Inline = Inline;
553
588
  exports.Input = Input;
554
589
  exports.Label = Label;
555
590
  exports.Link = Link;
591
+ exports.Portal = Portal;
592
+ exports.Radio = Radio;
556
593
  exports.Spinner = Spinner;
557
594
  exports.Stack = Stack;
558
595
  exports.Text = Text;
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { BlocksProvider, BlocksProviderProps, Box, BoxProps, Button, ButtonProps, Dialog, DialogProps, Divider, DividerProps, Heading, HeadingProps, Inline, InlineProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Spinner, SpinnerProps, Stack, StackProps, Text, TextProps, ThemeComponentsStyles, ThemeTokens, atoms, breakpointQuery, classnames, makeComponentTheme, makeTheme, useComponentStyleDefaultProps, useComponentStyles, vars } from './momotaro.chunk.js';
1
+ export { BlocksProvider, BlocksProviderProps, Box, BoxProps, Button, ButtonProps, Checkbox, CheckboxProps, Dialog, DialogProps, Divider, DividerProps, Heading, HeadingProps, Inline, InlineProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Portal, PortalProps, Radio, RadioProps, Spinner, SpinnerProps, Stack, StackProps, Text, TextProps, ThemeComponentsStyles, ThemeTokens, atoms, breakpointQuery, classnames, makeComponentTheme, makeTheme, useComponentStyleDefaultProps, useComponentStyles, vars } from './momotaro.chunk.js';
package/dist/index.mjs CHANGED
@@ -5,13 +5,15 @@ import { makeComponentTheme } from "./styles/lib/theme/makeComponentTheme.mjs";
5
5
  import { makeTheme } from "./styles/lib/theme/makeTheme.mjs";
6
6
  import { vars } from "./styles/lib/theme/vars.css.mjs";
7
7
  import { atoms } from "./styles/lib/css/atoms/sprinkles.css.mjs";
8
- import { createContext, forwardRef, useContext, useRef, useEffect, useState, useCallback, useLayoutEffect, useId } from "react";
9
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { createContext, forwardRef, useContext, useRef, useEffect, useState, useCallback, useLayoutEffect, useId } from "react";
10
10
  import { buttonReset } from "./styles/components/Button/Button.css.mjs";
11
+ import { container, input, icon } from "./styles/components/Checkbox/checkbox.css.mjs";
11
12
  import { backdropLeaveAnimation, backdropLeave, backdrop, dialogLeave, dialog } from "./styles/components/Dialog/dialog.css.mjs";
12
13
  import { createPortal } from "react-dom";
13
14
  import { divider } from "./styles/components/Divider/divider.css.mjs";
14
- import { input } from "./styles/components/Input/input.css.mjs";
15
+ import { input as input$1 } from "./styles/components/Input/input.css.mjs";
16
+ import { container as container$1, input as input$2, icon as icon$1 } from "./styles/components/Radio/radio.css.mjs";
15
17
  const classnames = (...args) => {
16
18
  const className = args.filter((arg) => arg && typeof arg === "string").join(" ");
17
19
  return className || void 0;
@@ -172,6 +174,45 @@ const Button = forwardRef(function Button2({
172
174
  }
173
175
  );
174
176
  });
177
+ const Label = ({
178
+ visualOnly,
179
+ children,
180
+ className,
181
+ required,
182
+ size,
183
+ cursor,
184
+ ...restProps
185
+ }) => {
186
+ const Component = visualOnly ? "span" : "label";
187
+ const containerClassName = useComponentStyles("label", {
188
+ base: true,
189
+ variants: { required, size }
190
+ });
191
+ return /* @__PURE__ */ jsx(
192
+ Component,
193
+ {
194
+ className: classnames(containerClassName, className, atoms({ cursor })),
195
+ ...restProps,
196
+ children
197
+ }
198
+ );
199
+ };
200
+ const Checkbox = forwardRef(function Checkbox2({ name, label, required, className, ...restProps }, ref) {
201
+ const containerClassName = useComponentStyles("checkbox", { base: true }, false);
202
+ const iconClassName = useComponentStyles("checkbox", { icon: true }, false);
203
+ const labelClassName = useComponentStyles("checkbox", { label: true }, false);
204
+ const input$12 = /* @__PURE__ */ jsxs("div", { className: classnames(container, containerClassName, className), children: [
205
+ /* @__PURE__ */ jsx("input", { ref, type: "checkbox", name, className: input, ...restProps }),
206
+ /* @__PURE__ */ jsx("div", { className: classnames(icon, iconClassName) })
207
+ ] });
208
+ if (!label) {
209
+ return input$12;
210
+ }
211
+ return /* @__PURE__ */ jsxs("label", { className: labelClassName, children: [
212
+ input$12,
213
+ label && /* @__PURE__ */ jsx(Label, { visualOnly: true, required, children: label })
214
+ ] });
215
+ });
175
216
  const useLayer = () => {
176
217
  const layerRef = useRef();
177
218
  useEffect(
@@ -205,12 +246,12 @@ const useVisibilityState = (open) => {
205
246
  return [visible, hide];
206
247
  };
207
248
  const focusableSelectors = 'button:not([disabled]), [href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
208
- const getFirstFocusableElement = (container) => {
209
- const focusable = container.querySelector(focusableSelectors);
249
+ const getFirstFocusableElement = (container2) => {
250
+ const focusable = container2.querySelector(focusableSelectors);
210
251
  return focusable || null;
211
252
  };
212
- const focusFirstElement = (container) => {
213
- const focusable = getFirstFocusableElement(container);
253
+ const focusFirstElement = (container2) => {
254
+ const focusable = getFirstFocusableElement(container2);
214
255
  if (focusable) {
215
256
  focusable.focus();
216
257
  }
@@ -270,11 +311,11 @@ const usePreventBodyScroll = (enabled = true) => {
270
311
  };
271
312
  }, [enabled]);
272
313
  };
273
- const Portal = ({ children, container }) => {
314
+ const Portal = ({ children, container: container2 }) => {
274
315
  const context = useTheme();
275
316
  return createPortal(
276
317
  /* @__PURE__ */ jsx(BlocksProvider, { theme: context, children }),
277
- container || document.body
318
+ container2 || document.body
278
319
  );
279
320
  };
280
321
  const Dialog = ({
@@ -449,36 +490,13 @@ const Input = forwardRef(function Input2({ className, name, type = "text", start
449
490
  placeholder: placeholder || label,
450
491
  width: "full",
451
492
  overflow: "hidden",
452
- className: classnames(input, inputClassName),
493
+ className: classnames(input$1, inputClassName),
453
494
  ...restProps
454
495
  }
455
496
  ),
456
497
  endSlot
457
498
  ] }) });
458
499
  });
459
- const Label = ({
460
- visualOnly,
461
- children,
462
- className,
463
- required,
464
- size,
465
- cursor,
466
- ...restProps
467
- }) => {
468
- const Component = visualOnly ? "span" : "label";
469
- const containerClassName = useComponentStyles("label", {
470
- base: true,
471
- variants: { required, size }
472
- });
473
- return /* @__PURE__ */ jsx(
474
- Component,
475
- {
476
- className: classnames(containerClassName, className, atoms({ cursor })),
477
- ...restProps,
478
- children
479
- }
480
- );
481
- };
482
500
  const defaultElement = "a";
483
501
  const Link = forwardRef(function Link2({ as, className, variant, underline, ...restProps }, ref) {
484
502
  const Component = as || defaultElement;
@@ -488,6 +506,22 @@ const Link = forwardRef(function Link2({ as, className, variant, underline, ...r
488
506
  });
489
507
  return /* @__PURE__ */ jsx(Box, { ref, as: Component, className: classnames(className, linkClassName), ...restProps });
490
508
  });
509
+ const Radio = forwardRef(function Checkbox3({ name, label, className, ...restProps }, ref) {
510
+ const containerClassName = useComponentStyles("radio", { base: true }, false);
511
+ const iconClassName = useComponentStyles("radio", { icon: true }, false);
512
+ const labelClassName = useComponentStyles("checkbox", { label: true }, false);
513
+ const input2 = /* @__PURE__ */ jsxs("div", { className: classnames(container$1, containerClassName, className), children: [
514
+ /* @__PURE__ */ jsx("input", { ref, type: "radio", name, className: input$2, ...restProps }),
515
+ /* @__PURE__ */ jsx("div", { className: classnames(icon$1, iconClassName) })
516
+ ] });
517
+ if (!label) {
518
+ return input2;
519
+ }
520
+ return /* @__PURE__ */ jsxs("label", { className: labelClassName, children: [
521
+ input2,
522
+ label && /* @__PURE__ */ jsx(Label, { visualOnly: true, children: label })
523
+ ] });
524
+ });
491
525
  const Stack = ({
492
526
  as = "div",
493
527
  display = "flex",
@@ -542,6 +576,7 @@ export {
542
576
  BlocksProvider,
543
577
  Box,
544
578
  Button,
579
+ Checkbox,
545
580
  Dialog,
546
581
  Divider,
547
582
  Heading,
@@ -549,6 +584,8 @@ export {
549
584
  Input,
550
585
  Label,
551
586
  Link,
587
+ Portal,
588
+ Radio,
552
589
  Spinner,
553
590
  Stack,
554
591
  Text,
@@ -1,6 +1,6 @@
1
1
  import { ForwardRefComponent } from '@radix-ui/react-polymorphic';
2
2
  import * as react from 'react';
3
- import { HTMLProps, ReactNode, FC } from 'react';
3
+ import react__default, { HTMLProps, ReactNode, FC } from 'react';
4
4
  import * as _vanilla_extract_sprinkles from '@vanilla-extract/sprinkles';
5
5
 
6
6
  declare const atoms: ((props: {
@@ -574,6 +574,17 @@ declare const Button: react.ForwardRefExoticComponent<{
574
574
  disabled?: boolean | undefined;
575
575
  } & Omit<HTMLElementProps<HTMLButtonElement>, "size"> & react.RefAttributes<HTMLButtonElement>>;
576
576
 
577
+ type CheckboxProps = {
578
+ name: string;
579
+ label?: react__default.ReactNode;
580
+ required?: boolean;
581
+ } & HTMLElementProps<HTMLInputElement>;
582
+ declare const Checkbox: react__default.ForwardRefExoticComponent<{
583
+ name: string;
584
+ label?: react__default.ReactNode;
585
+ required?: boolean | undefined;
586
+ } & HTMLElementProps<HTMLInputElement> & react__default.RefAttributes<HTMLInputElement>>;
587
+
577
588
  type DialogProps = {
578
589
  children?: ReactNode;
579
590
  open: boolean;
@@ -665,6 +676,23 @@ type LinkProps = {
665
676
  type PolymorphicLink = ForwardRefComponent<'a', LinkProps>;
666
677
  declare const Link: PolymorphicLink;
667
678
 
679
+ type PortalProps = {
680
+ children: ReactNode;
681
+ container?: HTMLElement;
682
+ };
683
+ declare const Portal: FC<PortalProps>;
684
+
685
+ type RadioProps = {
686
+ name: string;
687
+ value: string;
688
+ label?: React.ReactNode;
689
+ } & HTMLElementProps<HTMLInputElement>;
690
+ declare const Radio: react.ForwardRefExoticComponent<{
691
+ name: string;
692
+ value: string;
693
+ label?: React.ReactNode;
694
+ } & HTMLElementProps<HTMLInputElement> & react.RefAttributes<HTMLInputElement>>;
695
+
668
696
  type SpinnerProps = {
669
697
  className?: string;
670
698
  color?: SpinnerTheme['variants']['color'];
@@ -719,4 +747,4 @@ declare const classnames: (...args: Args[]) => string | undefined;
719
747
 
720
748
  declare const momotaro: Theme;
721
749
 
722
- export { BlocksProvider, BlocksProviderProps, Box, BoxProps, Button, ButtonProps, Dialog, DialogProps, Divider, DividerProps, Heading, HeadingProps, Inline, InlineProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Spinner, SpinnerProps, Stack, StackProps, Text, TextProps, ThemeComponentsStyles, ThemeTokens, atoms, breakpointQuery, classnames, makeComponentTheme, makeTheme, momotaro, useComponentStyleDefaultProps, useComponentStyles, vars };
750
+ export { BlocksProvider, BlocksProviderProps, Box, BoxProps, Button, ButtonProps, Checkbox, CheckboxProps, Dialog, DialogProps, Divider, DividerProps, Heading, HeadingProps, Inline, InlineProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Portal, PortalProps, Radio, RadioProps, Spinner, SpinnerProps, Stack, StackProps, Text, TextProps, ThemeComponentsStyles, ThemeTokens, atoms, breakpointQuery, classnames, makeComponentTheme, makeTheme, momotaro, useComponentStyleDefaultProps, useComponentStyles, vars };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ const fileScope = require("@vanilla-extract/css/fileScope");
3
+ const css = require("@vanilla-extract/css");
4
+ const styles_lib_css_layers_layers_css_cjs = require("../../lib/css/layers/layers.css.cjs");
5
+ fileScope.setFileScope("src/components/Checkbox/checkbox.css.ts?used", "blocks");
6
+ const container = css.style({
7
+ "@layer": {
8
+ [styles_lib_css_layers_layers_css_cjs.blocksLayer]: {
9
+ position: "relative",
10
+ cursor: "pointer",
11
+ overflow: "hidden"
12
+ }
13
+ }
14
+ }, "container");
15
+ const input = css.style({
16
+ position: "absolute",
17
+ inset: 0,
18
+ opacity: 0,
19
+ "@layer": {
20
+ [styles_lib_css_layers_layers_css_cjs.blocksLayer]: {
21
+ all: "unset"
22
+ }
23
+ }
24
+ }, "input");
25
+ const icon = css.style({
26
+ pointerEvents: "none"
27
+ }, "icon");
28
+ fileScope.endFileScope();
29
+ exports.container = container;
30
+ exports.icon = icon;
31
+ exports.input = input;
@@ -0,0 +1,32 @@
1
+ import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope";
2
+ import { style } from "@vanilla-extract/css";
3
+ import { blocksLayer } from "../../lib/css/layers/layers.css.mjs";
4
+ setFileScope("src/components/Checkbox/checkbox.css.ts?used", "blocks");
5
+ const container = style({
6
+ "@layer": {
7
+ [blocksLayer]: {
8
+ position: "relative",
9
+ cursor: "pointer",
10
+ overflow: "hidden"
11
+ }
12
+ }
13
+ }, "container");
14
+ const input = style({
15
+ position: "absolute",
16
+ inset: 0,
17
+ opacity: 0,
18
+ "@layer": {
19
+ [blocksLayer]: {
20
+ all: "unset"
21
+ }
22
+ }
23
+ }, "input");
24
+ const icon = style({
25
+ pointerEvents: "none"
26
+ }, "icon");
27
+ endFileScope();
28
+ export {
29
+ container,
30
+ icon,
31
+ input
32
+ };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ const fileScope = require("@vanilla-extract/css/fileScope");
3
+ const css = require("@vanilla-extract/css");
4
+ const styles_lib_css_layers_layers_css_cjs = require("../../lib/css/layers/layers.css.cjs");
5
+ fileScope.setFileScope("src/components/Radio/radio.css.ts?used", "blocks");
6
+ const container = css.style({
7
+ "@layer": {
8
+ [styles_lib_css_layers_layers_css_cjs.blocksLayer]: {
9
+ position: "relative",
10
+ cursor: "pointer",
11
+ overflow: "hidden"
12
+ }
13
+ }
14
+ }, "container");
15
+ const input = css.style({
16
+ position: "absolute",
17
+ inset: 0,
18
+ opacity: 0,
19
+ "@layer": {
20
+ [styles_lib_css_layers_layers_css_cjs.blocksLayer]: {
21
+ all: "unset"
22
+ }
23
+ }
24
+ }, "input");
25
+ const icon = css.style({
26
+ pointerEvents: "none"
27
+ }, "icon");
28
+ fileScope.endFileScope();
29
+ exports.container = container;
30
+ exports.icon = icon;
31
+ exports.input = input;
@@ -0,0 +1,32 @@
1
+ import { setFileScope, endFileScope } from "@vanilla-extract/css/fileScope";
2
+ import { style } from "@vanilla-extract/css";
3
+ import { blocksLayer } from "../../lib/css/layers/layers.css.mjs";
4
+ setFileScope("src/components/Radio/radio.css.ts?used", "blocks");
5
+ const container = style({
6
+ "@layer": {
7
+ [blocksLayer]: {
8
+ position: "relative",
9
+ cursor: "pointer",
10
+ overflow: "hidden"
11
+ }
12
+ }
13
+ }, "container");
14
+ const input = style({
15
+ position: "absolute",
16
+ inset: 0,
17
+ opacity: 0,
18
+ "@layer": {
19
+ [blocksLayer]: {
20
+ all: "unset"
21
+ }
22
+ }
23
+ }, "input");
24
+ const icon = style({
25
+ pointerEvents: "none"
26
+ }, "icon");
27
+ endFileScope();
28
+ export {
29
+ container,
30
+ icon,
31
+ input
32
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockle/blocks",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Blocks design system",
5
5
  "repository": "git@github.com:Blockle/blocks.git",
6
6
  "license": "MIT",